日記(846)

<前 次>

無題

ツールのことはひとまず置いといて、項目の前後入れ替えを作り始めたのですが、単に項目の内容を入れ替えるという実装ではうまく動いてくれないようです。

無題

さて、肝心のツールの使い方を忘れていたのであります。
単純な実装をしようにも、そうするとグラフやらパフォーマンスやらの生のポインタがDirectMusic側から送られてくるわけで、それをどう扱うかがまた問題となるわけです。

無題

とりあえずツールを使う準備段階までできました。
アンマネージドなクラスはマネージドクラスのハンドルを持つことができないのですが、実は静的関数を呼び出すことはできるのです。
なので、マネージドなツールへのハンドルの代わりにそれらを識別するための数値を使って、マネージドな静的関数を使って間接的にマネージドなツールの関数を呼び出すのです。

無題

う~ん、やっぱりリセットを入れても鳴らないときは鳴らないようです。
それはそうと、以前無理だといっていたツールの件、もしかしたらうまくいくかもしれない方法を思いつきました。
もしこれがうまくいけばC#からいろいろいじれそう…といいたいところなのですが、ツールはDirectMusicの挙動をプログラミングできる一方で、その分いろいろな部分に影響を与え、受けるので、単純にツールひとつが実装できたからといってすぐツールが使えるようになるとは限らないようです。

無題

とりあえず、MIDIリセットを入れたらおおむねよさそうな感じです。
欲を言えば項目ごとにリセットの種類を変えられたらいいのですが、UIとかセーブデータの設計が面倒なんですよね…。

無題

というわけで、とりあえずDLL上でだけは実装していたMIDIリセットを、NeoMuplでも使うようにしてみました。
今回はとりあえずということでGMリセットのみ。
リセットの種類を選べるようにしたら最新版として公開したいと思っています。

無題

相変わらずMIDIの再生は不安定です。
あるときは普通に再生されたMIDIが、あるときはソフトごと落ちたり。
このためにデバッグ関連機能を強化してみたりMIDIリセットを入れてみたり…しようと思います。

<前 次>