RECOP WindowsXP版への道

最終更新 2003年12月27日
■ RECOP Ver1.0 (NEC PC-98およびIBM-PCのDOS向け)
最初のRECOP Ver1.0はDOS上で作られた。2トラック同時表示およびMIDIデータ の詳細表示がリアルタイムでできるのが最大のポイント。
 2003年春のある日、ひょんなことからRECOPをWindowsXPに移植することを思 い立った。RECOPとはRCPファイルを演奏しつつMIDIデータを閲覧するためのツー ルで、1996年にDOS版として作ったものだ。
 1996年といえば一般にはWindows95が既に普及していた時期であるが、MIDI プレーヤに限ってみればまだまだDOS版が主流であり、MIMPI、DECOP、NPLAY、 MIYAPLAYをはじめとするフリーのプレーヤがまだ現役で使用されていた時期で あったように思う。その中にあって、RECOPはレコンポーザ風の画面表示、2ト ラック同時表示、といった機能により、演奏中にMIDIデータの詳細閲覧ができ ることを売りにしたプレーヤであった。
 移植するのには、当時のドキュメントやプログラムソースがまずは必要だ。 VECTORに登録してあるアーカイブにはソースは含まれていないが、説明書の文 章を読み返しているうちに当時やっていたことがだんだんと頭の中に蘇ってき た。
 幸いプログラムソースは手元のメディアに残っていた。プログラムはほとん どがC言語で一部インラインアセンブラが使用されている。当時の開発環境を 探ってみると、CコンパイラはQuick-Cで、グラフィック処理等にマスターLIB が利用されていることがわかった。それらをWindowsXPマシンに移し入れ、コ マンドプロンプト上でコンパイルとリンクを実行してみると、果たして1996年 当時と寸分の違いのない実行ファイルが生成されたではないか。移植への第一 歩としては上出来である。

■ RECOP Ver1.1 (WindowsXP向け)
RECOP Ver1.1はVer1.0を忠実にWindows上に移植したもの。ほぼ完成している ものの、一部動作に難点があり公開していない。
 RECOPのWindowsへの移植は、次のような考えで行った。まず、ユーザーイン ターフェースは極力DOS版と変えないこと。具体的にはマウス操作は排除し、 使用中に新しい画面がどんどん開いていくような状況は避ける、といったこと だ。使用する画面は初めに開いた640×400ドットのグラフィック画面1つで十 分だ。ただ、ユーザーインターフェースに関しては、プログラム起動方法に DOSとWindowsとでは絶対的な違いがある。DOSではコマンドラインでファイル 名を指定して起動していたが、Windowsではプログラムのアイコンをダブルク リックして起動するのが普通である。RECOPにおいても起動に関してはWindows を踏襲し、RCPファイルをRECOPのアイコンにドロップして演奏開始するように した。
 次に、Windowsへの移植はなるべく基本的なWin32 APIのみを用いること。画 面表示は単にBitBlt()を用いるだけで十分MIDI出力情報に追従できる表示速度 が得られている。MIDI演奏のテンポの源となるタイマはマルチメディアタイマ を用いた(このため、Windows95/98/Me系では場合によってテンポがよれる場 合がある)。
 最後に、開発はフリーでリリースされている開発ツールBorland C++ Compiler 5.5の使用を前提にすること。これは、究極にはR-AID(レコンポー ザお助けツール)で実現していたマクロ機能を、Windows版RECOPにおいても実 現することを意図してのことである。どいうことかというと、R-AIDではマク ロはC言語ライクな言語で書かれていてR-AID内蔵の処理系が解釈していたが、 RECOPではユーザが直にC言語でマクロ機能を記述し、BorlandのCコンパイラで コンパイルし、RECOP本体とリンクするような仕組みにしておけば、もはや内 蔵の処理系を作る必要がなくなる。また、パワーユーザに対してRECOPの大掛 かりな拡張手段を提供することにも繋がる。なお、RECOP本体としてはCソース 全体を公開する予定である。
 以上の考えのもと、Windows版RECOP Ver1.1は作成され、概ね完成している。 一部動作に難点がある(曲の途中から演奏を始めるポイントプレイが一部正常 動作しない)こと、および、ソースファイルの体裁が公開できるレベルに至っ ていないことより、実行ファイルおよびソースの公開は現在見合わせている。

■ RECOP Ver1.2 (WindowsXP向け)
RECOP Ver1.2の編集画面。リスト表示、譜面表示、グラフィック表示の3ペイ ン(?)方式を踏襲している。
 移植はひとまず終わった。だが元のDOS版に編集機能がなかった以上編集機 能は新たに作る必要がある。しかし、当時演奏のことしか考えずに2トラック 同時表示させてしまったのがあだとなって、このまま編集画面を作るにはかな り複雑なプログラム構造になってしまっているのが分かった。先に進むには構 造をシンプルにする、つまり1トラック表示にせざるを得なかった。編集機能 をある程度完成させるにはかなり時間がかかることは必至であるため、ここで 一旦バージョンを切り、2トラックで演奏機能のみのものをVer1.1として残し、 編集機能の付いたものをVer1.2として開発していくこととした。
 現在、編集機能にはまだ取り掛かったばかりである。作ってあるのは、編集 時に必須となるカーソル点滅の機構くらいである。今は編集機能、および演奏 機能の全体を通して、画面としてはどれくらいのモードを用意しておくべきか の見積もり等行っている状態。演奏画面にしてもまだ十分網羅されておらず、 全トラックビューに至っては、MIDI信号の変化にキチンと合わせてと表示させ るため最悪1ステップ毎に画面書き換えを行わなければならず、CPUに無駄な負 荷をかけないような工夫も必要となりそうな雰囲気である。
RECOP Ver1.2の演奏中の全トラックビュー。現在実装されているのはベロシティ モニターの部分(最下行)だけである。
 現状、編集機能に関しては、RCPファイルへの書き出しはおろか、メモリ上 のデータへの値更新さえも実装されていない。ただ、今のところ技術的に行き 詰っている所が全くないのは幸いだ。
 将来的には、標準MIDIファイルの入出力、R-AIDの諸々の機能の取り込み、 ギター演奏情報の何らかの入力支援、等を考えている。

Dr.Kのページへ戻る