「NeoMupl」に関する日記(4)

<前 次>

NeoMuplとドラクエ10

NeoMupl

しばらく再生していたら落ちる問題は当分解決しそうにないし、新機能とかはまだ公開できてないし、今自分で使ってるのほぼそのままでいったん最新版として公開することにします。
正直、今更何の需要もないとは思いますが、一応成果が出るには出ているので成果物は出しておきたいところです。
INIファイルがない初回起動時にエラーが出ていたのですが、これも解消する見込みです。
とりあえず、今日は準備だけで、実際の公開は改めてテストしてから、明日以降ということで。

ドラクエ10

きゅっぴりーんの全体報酬獲得。ダサい服と福引券250枚。福引券の報酬倍率って一番支援した人の金額で決まるってことだったみたいですね。参加者本人の支援額だと思っていました。「全体報酬」だから全員同じってことですね。

しろいコキンの姿を元に戻しました。いつまでもコスプレ系というのも自分らしくなかったのでね。まあ、しろいコキンの時点である種のコスプレ的なものですが。
ミフミンとァォィョッュはまだ戻していません。

NeoMupl

DirectMusicが動いていない問題のほうも調査していたのですが、そもそもDirectMusicの再生に使っていたDLLが自作で、しかも開発環境が失われていることが判明。
そもそも今どきMIDIなんて制作現場で使われる程度で、好き好んで聞く人は少なくて、他のライブラリに切り替えようにも、MIDI再生のライブラリ自体がなかなか見つからない状況です。
だったらNeoMuplもMIDI捨てればいいじゃないかという話なのですが、好き好んで聞く人っていうのが、他でもない、私なんですよね…。

NeoMupl

結構いろんなシチュエーションでエラーが起きています。
共通点はウィンドウハンドルの作成に失敗しているということ。
何かがウィンドウハンドルを浪費して使いきっているのだとは思いますが、どこで浪費してどうやって開放するのかどうにも見当がつきません。

NeoMupl

タイマーのON/OFFでエラーが起こっていたのでタイマーの実験中。
しかし何万回やってもエラーは起きませんね。
別の可能性を探る必要がありそうです。

NeoMupl

NAudioでもエラーで落ちました。
ということは、DirectShowがエラーの原因ではなかったということ?
それとも、NAudioも同じ問題を抱えている?
どちらにせよ、別のライブラリに逃げるのではなく、根本的な原因を探る必要がありそうです。

NeoMuplとTGWSAdmin

NeoMupl。
Ogg Vorbisを再生したくて、あと、DirectShowを使っているとしばらくしたら落ちるのを解消したくて、NAudioとNVorbisを使ってみました。
負荷がかかるとぶつぶつ音が切れるのと、連続再生しようとしたら前の音楽が重なることがあるという点が今のところは問題かな。
前者は再生しながらNeoMupl本体を操作したら起きるので、あまり操作しなければ一応何とかなりそうです。
後者はかなり致命的ですね。
後者を優先的に直していくか、あるいはNAudio自体を捨てるか…。

TGWSAdmin。
旧サイトのアクセス解析を、ログ取得も含めて完全自動化しました。
もう古いサイトなので手間をかけてもいられないのですが、だからこそ、手動でログを収集する手間は省きたかったんですね。
管理画面に入ってメールを送らせてそのメールを受信するというやたら回りくどいやり方だったのですが、何とかプログラムで全部書けました。

NeoMupl

起動時にリストファイルが見つからないとエラーで落ちるバグがありました。
これ、初歩的かつ重大なバグで、直さないでいるのは恥ずかしいレベルのことなのですが、果たしてこの古すぎるソフトにわざわざ直す価値があるのかどうか…。

無題

NeoMupl:エラーの原因それとなくわかった。たぶんCOMオブジェクトのRelease忘れかなにか。
モンハン3G:ロアルドロス捕獲。いい感じ。次はボルボロス。
アンパンマンDB3:おまかせ表示を実装。アンパンマンDB1にあって2で廃止された機能。似た機能は検索の並び替えで実現できたがおまかせ表示の気軽さは実現できていなかった。アンパンマンDB1にあった初登場キャラの強調表示も復活させたい。

無題

結論から言うと、ダメでした。
NeoMuplを32bitでコンパイルしなおしても、DirectMusicは使えませんでした。
やっぱりDirectMusicそのものがなくなっているようですね。

FNチェンジャーを.NETで書き直してみました。
VB6は新しい環境にインストールしていないし、ランタイムも将来ない環境が増えていくんだろうなと思ったもので。
あと、TableLayoutPanelを使って、ウィンドウサイズに入力フォームの大きさを追随させるようにしました。
それからエラー処理とかログ表示なども。

無題

もしかしたらNeoMuplは32bitでリビルドしたらDirectMusicも使えるようになるんじゃないかと思い、早速プロジェクトを開いていろいろしてみたのですが、どうにもこうにもあれやこれやとトラブルが多く…。

それはそうと、今度のアンパンマンの映画に出てくるココリンを描いてみました。
実際のココリンはもっとにこやかな顔です。

1304780316.png

無題

浮き沈みランチャーが64bit環境でも問題なく動くことを確認しました。
一方NeoMuplは、DirectMusicが使えませんでした。それ以外は32bit版とまったく同じです。…時々エラーで落ちるところまで含めて。

無題

NeoMuplの再生DLLをいじっていました。
DirectShowの実装なんですが、バッファの設定をどうすればいいのかよくわからんです。
そもそも今時DirectMusicとDirectShowの組み合わせってどうなんだろう。

無題

NeoMuplのDLL、DirectMusicの基本的な再生と状態取得は出来上がりました。
テンポ変更なども作ったほうがよさそうな気がしますが、最近は私自身テンポ変更を使っていないので優先順位は低めです。
マスターテンポを使ってDirectMusicに丸投げするかツールを使ってテンポ変更イベントを自前で差し替えるかという選択肢もありますし。
ちょっとデバッグ用のプログラムとリンクするための設定がいろいろ食い違っていたのでそのあたりも直しました。
さて、DirectShowのプログラミングを忘れてしまいました。
現在はDirectShowでの再生の方が重要なのでこちらも急いで実装したいものです。

無題

NeoMuplDLL作成中。
とりあえずまずは再生状態を取得できるようにしています。

無題

なんだかNeoMuplを再生状態のまま終了するとかなり長い間曲が再生されっぱなしになるという問題がありまして。
久々にプログラムいじったら、開発環境でのNeoMuplは新DLLがまだ作りかけの状態で、停止どころか再生すらできない状態でした。
リリース版は現状動いているとはいえ、このままじゃいけませんね。

無題

NeoMuplのDLL作ってました。
DirectMusicはとりあえず再生はできるようになりました。再生状態の取得がまだできない状態ですが。
まあ、再生状態の取得は以前にもやっていたことなのでたいした負担ではなかろうと思います。
で、NeoMuplの本体を使ってテストするのはやっぱりテストの自由度に制約が出るので、テスト専用のプログラムを作成しました。
DLLに渡すパラメータを設定するだけの簡素なもので、テストプログラムのほうでは例外処理なんかは一切行っていません。
そして、DirectShowとストリーミング再生の仕組みもだんだん分かってきたので、そろそろDirectShowの再生にも着手できそうです。
多分DirectMusicとDirectShowの間でDirectSoundを共有すればエラーで落ちるなんてことはなくなくはず…。確証はないけど。
あと、従来のNeoMuplはDirectShowでの再生ではループ位置の設定が非常にいい加減でまともなループ再生ができなかったので、今度はサンプル単位で精密なループ処理ができるようにしようと考えています。実現可能かはまだ未知数ですが。

無題

NeoMuplDLLの再生機能を作っています。
DirectShowはマルチスレッドで大変なので、まずはDirectMusicの実装から…。

無題

NeoMuplのDLLのテストをするにはNeoMupl本体を使う必要があるのですが、テストしてないときは旧来の方法を使いたい、ということで、NeoMuplに、新式のDLLを使うかどうかの隠しオプションを付けてみました。
公開版では最終的に新式のみにする方針ですが。

<前 次>