今回の話は自分のためのツール(ソフトウェア)を開発したという話なのですが、僕と似た境遇の人がいるのではと思い、記事にまとめることにしました。
前回、ここのところ立て込んでいて、メインの宅録の時間がなかなか取れなかった、という趣旨の書き込みをしました。今回もすでに5日経過してしまっており、そういう意味での報告も兼ねています。
宅録を始めて約5年経ち、機材の老朽化も心配しないといけないのですが、新しい機材での環境に移行したら、これまでの音色データが全部無駄になってしまうのだろうか? できれば完全互換で移行したい、ということなのです。
なんせ、500曲あるので・・・。これがゴミになったら泣いても泣ききれません。
僕の今の宅録環境でのメイン音源がハードウェア = YAMAHA MOX6です。改めて、操作環境を超簡単に書いたのがこの図です。
半年ほど前にカミさんがMONTAGEを購入し、僕と似たような環境を構築した話を紹介しました。ギター弾きの僕としてはMONTAGEは分不相応ということで、MOXFグレードの新機種が出たら移行を考えようかと思っていました。
そうしたら出ましたね、MODXが。MONTAGEの廉価版です。
調べると、スペック的に本当にMONTAGEの廉価版ということが分かります。そもそもYAMAHAのシンセサイザーの系譜として、MOTIF → 廉価版たるMOX → 改良版たるMOXF → 新規開発のフラッグシップMONTAGE → 廉価版たるMODXとつながっている訳ですが、音色データとして、必ず前の音色をすべて搭載してきているという事実があります。
つまり、音色データとして継承を保証しているということです。
これなら上手く移行できるかもしれない、と思いました。
しかし、大きなハードルが2つありました。
1)DAW環境における移行手段が用意されていない
楽器はプリセットを「選ぶ」ことによってその音が出ます。MOXにもMODXにも「GM Drum Set」や「Big Comp」というような音色プリセットがあるので、そのプリセット名を頼りに、新しい楽器にて手動で選び直せば90%はうまく行きます。
しかし、そのプリセットをそのまま使用せず、その曲その曲に応じてパラメータを触っていたらどうなるでしょう??
例を挙げれば・・・
ある曲で、プリセットのドラムではシンバルがうるさすぎるので、少し音量を下げた、とか、スネアの音色が気に入らなかったので別のWaveformに差し替えたとか。
元々ポリフォニックだったが、激しいポルタメントをかけたかったので、モノフォニックに変更し、ポルタメントタイムを長くした、とか。
ベースの低音が出過ぎているので、音色付属のイコライザで調整した、とか。
例を挙げればきりがありませんね。こういった場合、楽器単体で行う場合は、自分なりにカスタマイズした音色を、新しい名前で楽器のUserエリアに新規登録するところですが、DAW環境だとそのカスタマイズされた音色データはMIDI演奏データと混然遺体となりDAWにSAVEされます。Cubaseの場合、.CPR(プロジェクト)ファイルにSAVEされ、次にプロジェクトを再開した段階でMOXにローディングされ、そのまま作業続行できるのです。
非常に便利ですね。しかしそれ故の功罪で、外部シンセがたとえ上位機種に変更されても、DAWのプロジェクトファイルの移行ツールが用意されない限り、その音色データはゴミと化してしまうのです。
取り扱い説明書を読むと、MOXFのUserエリアにSaveされた音色などはUSBメモリ経由で読み込めるようですが、DAWが相手にするカレントのEditバッファは移行対象外です。そもそも2世代前のMOXははなっから相手にされていません(涙)
2)MONTAGEもMODXもPCでの音色エディタが提供されていない。
MOXやMOXFは非常に操作性のよいPCでの音色データ編集ツールが提供されています。この理由としては、MOX上の小さなモノクロ液晶ディスプレイでは細かな編集が困難であるとYAMAHAも認識していたからではないか、と。そしてそのエディタがCubase上ではVSTにて動作しているので、僕としては申し分ない環境でした。
しかし、MONTAGEが発売されると、そこの考え方が変更されていました。楽器本体上に大きなカラー液晶を配され、そこに音色編集機能があるのだから、PC上でのエディタは不要と判断された? そのかわり、本体での編集結果をDAWで保持のみするという最低限の機能を持つMONTAGE_Connectなるソフトを付属しました。
ちょっと横道にそれますが、MONTAGEで楽器本体でエディット機能があるとは言っても、お世辞にもその操作性がよいとは言えません。MONTAGEは「スーパーノブによっておびただしい音色パラメータをリアルタイムで操作できる」というのがウリであり、その仕込みがとても重要だとおもうのですが、肝心な「コントロールアサイン」という画面の操作性、視認性がとても悪いのです。
複数のパートから成る音色を選択したら、なぜか特定パートの音が出ていない。なんでだと思って小一時間悩んで調べたら、そのパートはアルペジオの時しか音が出ない設定になっていたとか、音量がアサイナブルノブに紐づけ設定されていて、DAWで音量を上げても音がでなかったとか、MONTAGEを使っている人ならば経験があると思います。
これらは音色エディタの操作性以前に「視認性が悪い」ことに他ならないのではないでしょうか。
2つの図を見比べればわかるように、「.X4E」(MOXFなら.X6E)ファイルを「.X7B」(MODXなら.X8B)に変換できれば、多少の手間はかかるものの、僕の最低限のニーズを満たすことになります。しかし、2018年10月現在、そのようなツールは提供されていません。
※)ちょっと注釈を加えますと、.X4の後のEはEditorの意味だと思われます。このファイルは編集用の様々なデータ、おそらくプリセットの音色データをすべて保持しているためか、とても大きく、1MByte以上あります。それに対し、.X7BのBはバルクデータと呼ばれる音色データの本体のみのため、100KByteほどしかありません。
ということで、これらの問題を解決すべく、自分用に「2つのツール」を作ってみようじゃないかということに思い至りました。
1)MOX音色データからMONTAGE音色データへの移行ツール
前述のように、.X4Eから.X7Bへの変換ツールがあればよいのですが、残念ながら.X4Eのデータフォーマットは公開されていません。ちょいと覗いてみましたが、1MByteのデータ解析は困難で諦めました。
そこで、仕様が公開されている.X4Bから.X7Bへの変換ツールを考えます。しかし、どうやって.X4Bデータを得ればよいの?
それは実際にMIDI通信して流れて来るバルクデータをキャプチャーすればよいのです。
2)MONTAGE目的別設定エディタ
すべてを網羅するMONTAGE音色エディタを開発するのはとても大変だと思います。実際に海外で開発されている例もあるようです。それを購入することも検討したのですが、上記移行ツール開発と併せて自分向けのツールを自己開発したほうが良いと考えました。
僕としては、MONTAGE_Connectを自分用エディタに全面的に置き換えようとする気はありません。DAWの.CPRに.X7B相当のデータを含ませることはMONTAGE_Connectで出来ているので、そこはそのままにしておきます。
例えば、上記のコントロールアサインに関連する情報のみを表示し、弄りたい部分をMONTAGEに反映させるのみでよいと考えます。弄った結果はMONTAGE_ConnectがDAW動作と連想して勝手に吸い上げてSAVEしてくれます。だから「自分用目的別エディタ」と称するのです。
(目的別MONTAGE設定エディタはまだ開発途上なので、今回は取り上げません)
MODXへの移行を目的に考え始めたはずなのに、いつのまにかMONTAGEが対象になっているかのような書き方になってますね。
実は、ヤマハが公開している資料を見比べるにMOX、MOXFという古い世代のシンセのデータフォーマットは全くと言っていいほど同じ、新しいほうのMONTAGEとMODXも同じでした。違いはMIDIで音色データの通信を行う際のヘッダに含まれる固定文字と、出力するバルクデータファイルの拡張子(.X7B or .X8B)のみです。
よって、手元に実機のあるMOX→MONTAGE変換ツールやMONTAGEエディタを開発することにより
・MOX→MONTAGE変換
のみならず
・MOXF→MONTAGE変換
・MOX→MODX変換
・MOXF→MODX変換
また
・MONTAGEエディタ と MODXエディタ
が同じツールで簡単に実現可能という事です。
ということで、いつもながら前置きが長すぎましたが(すいません)、ここからが今回の本題。プログラミングを開始すべくインターネットを漁ってMIDI入出力ライブラリ(おーぷんMIDIプロジェクトのMIDIIO.dll)を入手させていただきました。
プログラミング環境ですが、以前使った経験のあるMicrosoftのVisual Studio 2017としました。これ無料なんですね、すごい世の中になったものです。
言語はVisual BASIC、.Net FrameworkのFormベースのプラットフォームです。より新しいプラットフォームもあるみたいですが、プログラミングは久しぶりなので、インターネット上の情報が多い方が楽だと考えます。
さっそく作ったツールの外観をお見せしましょう。
そっけないですね・・・ツールなのでこんなものです。
使い方はシンプル。
立ち上げてMOXのポートを選び(というか、最初に見つかったポートがデフォルトでセットされる)、GETボタンを押すとMOXにSongEditバッファのダンプをリクエストし、約80KByte程度のファイルに落とします。
次にConvertボタンを押すと、それを.X7Bに変換します。
注意)MOXにSong/Patternモードにて音色がローディングされていないとデータが降ってきません。よって、Cubaseを立ち上げ、各曲のプロジェクトをオープンしてから使わないと動作しません。
以上。
操作はシンプルですが、中で行っている変換作業は超複雑。
というのも、両データフォーマットを見比べればわかりますが、データ構造のコンセプトが違うので、そこも併せて考えなければなりません。
MOXには、単独Vioce(1パート)、4パートから成るPerformance、16パートから成るSong/Patternと3つの異なるモードがあるのですが、MONTAGEは最大16パートから成るPerformanceのみです。
DAW目線で楽器を16Chのマルチティンバー音源と考えると、MOXのSong/PatternモードをMONTAGEのPerformanceへ変換すると考えるのが最も自然なので、その仕様でデータを再構成しています。
全体を司るCommonデータと各Partのデータ、そして各パート配下にElementデータかDrumキーデータがぶら下がるという構造になっています。
しかし、最大の難関はそこではありませんでした。
音源は最終的にドラムに各キーやAWM音源エレメントそれぞれに何という波形(Waveform)を割り当てているか、という所に行きつくのですが、MOXにおける波形の番号とMONTAGEにおける波形の番号には何ら関連がないということです。
本当に何の法則もありません。新規に収録された波形を後ろの方につけ足しの形にすればよいのに、ジャンルごとに整理整頓しなおされたようで、番号がバン、バンと飛びます。50個ぐらい連続して同じ順番になっているところもあれば、打楽器やエスニック系のWaveformはジャンル変更などもあったようで、あっちこっちに行きつ戻りつしています。
なので、両データリストにあるWaveform名をもとに、地道に変換テーブルを作るしかありませんでした。
こういうデータはWaveformの他にアルペジオパターンデータもあるのですが、これはサボりました。僕がアルペジオ機能を一切使っていないからです。
—————————————-
作りながら、随時テストして、最初はエラーでまくりだったのが少しづつまともになっていったので、「変換して音が出て泣きそうになった」というような体験ではありませんでしたが、同じ音がMONTAGEのD/Aコンバータから聴こえて来た時はそれなりに感動しました。これで一安心かな。
しかし、まだ本格的な移行作業は行っていません。MODXも当分買うつもりないし・・・
あ~、でも、移行はMOXが健全なうちにやらないといけないんだった。生前じゃないと相続できないのです。
で、肝心の作成したモノはどこにあるの? ダウンロードできないの?
いや、実はまだ公開していません。なぜか? MOXFとMODXの実機でテストしていないから。非常に細かい話なんですが、.X7B or .X8Bファイルにはバルク本体以外にちょっとしたヘッダとフッタがあって、そこの固有値がMONTAGEとMODXでは違うのではないかと予想しています。
公開するのは、やぶさかではないので、テストに協力してもいいよという人がいれば連絡をください。待っています。
個人でサポート体制を維持するのも無理だと思うので、多分無償/無保証になるでしょう。
それから、Mac版を開発してくれる人がいらっしゃるなら、参考までにVisual BASICのソース(130KByte程度)を提供できますので、これも連絡ください。
近いうちに、MONTAGE目的別設定エディタについても、何か記事を書きたいと思います。
11/4 追記
MOXFのWaveform Listを確認したら、MOXとはまた違いますね。MOXFに対応するには変換テーブルを別に作らなきゃいけませんねぇ。こりゃ大変だ。
ちなみにMONTAGEとMODXは同一のようです(今のところ)。