忍者ブログ

[PR][]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

KBGMを使ってみた[ソフトウェア開発]

Visual Drumsで、C++Builder 4のMediaPlayerコンポーネントを使うのは、もうやめることにした。これにこだわっていると先に進めない。MIDIデータの演奏をしてくれるコンポーネントかDLLを使うことにする。演奏中に、演奏位置が取得できるものならたぶんいける。

MIDIデータ演奏用のライブラリで、KBGMというものがある。前から存在は知っていたものの、いざ組み込むとなると、それなりに修正が発生するので保留にしていた。今回は、もうやるしかないということで作業を始めた。DLLの使い方は、RCPCV.DLLのときに一度調べたので、似たようにやればいい。あとは、MediaPlayerコンポーネントを使っていた部分をKBGMの関数に置き換える作業となる。

思ったよりすんなり移行できた。こんなことなら、もっと早くやればよかった。そういえば、演奏位置を表す赤い線の動きが、明らかにスムーズになった。今までのテストでは、Windows NT系は表示がぎこちなかったのだ。で、表示と演奏がぴったり一致した。今まであれこれやっていたのがアホらしくなってきた。KBGMが返す演奏位置の値は、ミリ秒の時間ではなく、MIDIデータに埋め込まれているデルタタイムと同じ単位なので、ややこしい計算をしなくて済むのもありがたい。

これで解決と思ったら、そうはいかなかった。演奏中に、演奏位置の情報がリセットされてしまうことがある。どうもこれは、フォーマット1のデータばかりで起こるようだ。使い方を誤っているわけではなさそうなので、MIDIデータの中身を見て原因を調べた。あ、わかった気がする。各トラックの長さに違いがあるデータの場合、短いトラックが終わった時点で演奏位置が0になっているようだ。この情報を頼りに表示を更新しているVisual Drumsは、まともにその影響を受けてしまう。

KBGMのバージョンは0.08で、1999年に公開されて以来、バージョンアップはされていない。まだ開発を続けているのかどうかわからないけれど、いちおう報告しておこう。

PR
コメント
コメントの投稿
未記入の場合は「ななし」になります

任意

任意



未記入の場合は、投稿後に修正ができません

トラックバック
トラックバックURL

< 新しい記事 | ホーム | 古い記事 >