iPhone/iPad用ドット絵エディタ「EDGE touch」

最近のエントリー

Sound Cloudうろついてたら見つけたんですが、好きですこれ。
(直接YouTubeのサイトで見た方が高音質かも)

ようやく完成しました。
椎名へきるさんの「風が吹く丘」を耳コピして初音ミクさんに歌ってもらいました。
まずはお聞きくださいませ。

イラストは雨音くるみ様のものをお借りいたしました。
動画はBlockworksさんに制作していただきました。
ありがとうございました。

原曲はこちらになります。
http://www.youtube.com/watch?v=AENQWpThpGg

ちなみに、この曲を打ち込むのは人生で二度目です。
たしか高1ぐらいの時にSC-88Proで耳コピしています。
当時のデータをニコニコへアップしてくださっている方がいらっしゃいますので、ご紹介します。
http://www.nicovideo.jp/watch/sm5568537

「風が吹く丘」はへきるさんの曲の中でも一番好きな曲で、15年ぐらい経った今でも、落ち込んだ時などにはこの曲を聞いて癒されております。

以下、大して面白くもない制作苦労話が延々と続きます。
続きを読む…

久々にSC-88Proを繋げていろいろデータを聴いていたのですが、中でも「あのまりあ」さんは打ち込み技術もセンスもずば抜けてますね。

私は高校の頃、ニフティサーブ会員だった友人からあのまりあさんのMIDIデータを貰ったのですが、衝撃を受けたのを覚えています。

いろいろ好きな曲はあるのですが、今日はMega-Pulseをご紹介します。

SC-55で、しかも4トラックでやっちゃうという変態さ(褒め言葉)を差し引いたとしても、とても好きな曲です。

うまく曲が作れない事に対して、未熟な打ち込み技術やセンスを棚にあげて、音源やソフトのせいにしていた頃の自分にとっては良いお灸になりましたよ(笑)

何故かDebug.WriteLineで出力ペインに出力されなくなりました。
当然デバッグ実行ですし、プロジェクトの設定でDEBUG定数の定義にチェックは入っています。
イミディエイトウィンドウへのリダイレクト機能もオフにしてあります。

一応いろいろやってみたのですが

Debug.WriteLine("Debug.WriteLine");
Trace.WriteLine("Trace.WriteLine");
Console.WriteLine("Console.WriteLine");

Console.WriteLineは動作するので今はこれで代用しています。
ただ、気持ちが悪いので解決策をご存知の方がいらっしゃいましたらご教授ください。
(VS2010再インストールしかないかな・・・。いろいろアンインストールした時期があるので、間違って何か消しちゃったのかも。)

解決しました。

出力ペインの右クリックメニューで、プログラム出力がオフになってました・・・。
何かの拍子に触ってしまったようです。

  • ある画像をマルチスレッド(分割統治法など)で事前にレンダリングしておき、キャッシュする。
  • OnPaintでそのキャッシュを使う。

なんて事をしようと思いまして、スレッドプールを使って処理をさせ、レンダリングが終わったらワーカースレッド側でManualResetEventのSet()を呼び出し、メインスレッド側ではWaitOneで各ワーカースレッドが終わるのを待つ・・・・というような処理を書きました。

で、たまに描画結果が期待したものにならない事がありまして調べてみると、
どうやらWaitOneで待っている間にOnPaintが呼ばれてしまう事があるようなのです。
(当然その段階ではキャッシュは作り終わっていないので、描画がおかしくなるというわけです。)

このような挙動は過去にMFCなどでネイティブアプリを作っている時には起こり得なかったため、特定に時間がかかりました。

WinFormsはそういう作りになっているそうです。
参考:
http://stackoverflow.com/questions/4540244/how-is-this-possible-onpaint-processed-while-in-waitone

ただ、WaitOneだけならともかく、他にもメインスレッドを待つ処理だったり、.NETのフレームワークの一部の機能を使ったとき(例えばクリップボードに格納されているデータを確認するとき)のような意図しない時にもOnPaintが呼ばれるのが厄介です。
(ツールバーの「貼り付け」ボタンの状態を更新しようとしたらOnPaintが呼ばれる、なんて事もありえます。)

こうした場合、

  • マルチスレッドで画像をレンダリングするのを止める(^^;
  • キャッシュを使わないようにする
  • OnPaintの中でキャッシュを作るようにする
  • フラグでなんとか回避する

などなど、注意してプログラムする必要がありそうです。

何か良いアイディアをご存知の方がいらっしゃいましたら、ご連絡くださいm(_ _)m
(先の参考サイトだとMutexなら起こらないとか書かれていますが、今回のケースだと使えないような?)

記事検索

コミュニティ

Banner designed by でゅぽる様
ドット絵掲示板
ドット絵掲示板
自作の「ドット絵」を投稿することができます。ドッターさん同士の交流の場としてご利用ください。
TakaboSoft Wiki
TakaboSoft Wiki
ソフトウェアに関する質問・不具合報告・要望などを書き込むことができます。