MIDI -> WAV は気軽にはいかんよね

わかってはいたさ…。

FFT なスペクトラム可視化に音階をくっつけて(5)」では「とある方法で荒城の月を打ち込んだ」と言うた。要するに「信号処理(であれなんであれデータ処理)」を実装したり勉強したりする際は、「サンプルデータ」を色んなバリエーションで欲しくなるわけであろう? 確かに「Python の wave モジュール例の殴り書き」みたいな、自力シンセもどきでも多少はまかなえるけれど、「あれこれ色んなもの」を気軽に作る目的にはやはりそぐわない、つーか猛烈にダルい。

日本が誇る(?)MML 言語でもって量産する手もないでもないけれど、これはこれで「MML を駆使して作曲」するか「既に出来上がっている大作」の二択になりがちで、結構これはこれでダルい(ことが想像できる)。

となればやはりそれなりのシーケンサを使うと良いであろうさ、と見つけたわけだ、オンラインのシーケンサ:

えーっ? これで作ったのにこれ?:

オレ的には「同じもの」である。だって「オレが作った」んだから。そして当然これは「違うもの」だ。聴いただけでオクターブが下がってしまってることがわかると思うけれど、シーケンサの映像をよーく見て欲しいんだけど、確かに出だしを「F4」で打ち込んでるのである。けどこれは「F2」で鳴っちゃってる。

何が起こっているのかについて、察しが付く人は MIDI 関係のなんらか経験者に違いない。

結局上記で使ったシーケンサは、(当然かもしれないが) MIDI 形式のファイルとしてしかエクスポート出来ない。ゆえに、

  1. 作った MID ファイルを聴きたいだけだとしても、環境を持たない場合は、なんらか変換ツールに頼ってでも WAV なりにしないといけない
  2. 今のワタシの目的は、「PCMデータの「作為的な」バリエーションを量産したい」であるからして、やはりどうにかして WAV にしたい

MIDI については、少しでも触れたことがある人とそうでない人で、感覚にかなりズレがあると思うので、非常に基礎的な話だけおさらい:

  1. MIDI 「ファイル」はいわば「楽譜」
  2. しかるに「音」は記録されてない
  3. 機器がこの楽譜に基づいて「演奏」する

言ってしまえばこれだけのこと。だから手持ちの機器に大層依存するわけだ。

ワタシも経験あるんだけど、出来合いのパソコンを購入すると、誰かの好意によって「MIDI 環境それなりバッチリ」だったりすることがあったりする。よくある「いらんもんいっぱいプリインストールしやがって」の一貫で、偶然そんなパソコンを手にしてたりすること、ある。けど「素のままの Windows」は多分そうじゃない。少なくとも今アタシが日常使いの Windows 7 機はそのままでは MID ファイルを「演奏」出来ない。

そういうわけで、「えーっ?」の方は、てきとーに探してみつけた Bear File Converter – Online & Free で「変換」したもの。

上の説明からわかるであろう。「変換」言うておるけれど、実際はそのコンバータ(といってるもの)には「演奏能力」が必要だ。そして演奏者によって、出来上がるものは全然違ったりする。ここらは MIDI に詳しい人なら「あったりめーだ」て話だろうと思うが、最低でも「サウンドフォント」が必要だ。

まぁここいらまでの話はさ、やる前から想像出来てたわけね。けどさ…、オクターブまで変わっちゃうわけ? サウンドフォントの違いから来るものなんだろうなぁ、とは想像は付くんだけれど(楽器指定ごとに音域が変わる、のかなぁと思う)、いまひとつ釈然としないところもある。

そもそもワタシの「FFT 解析」自体が疑わしいのではないのか、という恐れは無論常に抱いていて、だからこそ「検証用データが欲しいぞ」てことで先のシーケンサに辿りついたわけさ。だから余計やらしいことになっておる、ワタシのケースの場合。「ワタシの「FFT 解析」自体が疑わしい?」についてはやはり他人が作った同種のもの、にかけてみるのがいい:

ワタシのは音階で、こちらは素直に周波数なので対応がこのままでは取れないが、対応表によれば、352Hz はだいたい F#/Gb 3 ~ F3 くらいなので、ワタシのほうと合ってそうだ。つまり「やはり Bear File Converter – Online & Free が下げちゃった」のは間違いなさそう。(てか聴けばわかるが。)

なんつーかシーケンサ側にも問題があるような気もするんだよなぁ。フォントの問題なのだとしたら、あまり一般的でないフォントに依存しているとか、そんな可能性もある。アタシ自身が全然詳しくないんで、よくわからないんだよねぇ。

ちなみに ffmpeg でも MID から wav に変換出来ます。そして「もっとヒドいことになる」、普通は。これも環境依存なんじゃないかなという気もしないでもない(つまり ffmpeg を拡張出来るかも、て話)んだけど、ffmpeg の MID 対応は、timidity によるもの。ワタシの「バイナリで持ってきたまんまの ffmpeg Windows 版」だと、どうやらただのサインウェーブになっちまった。うひゃぁ、これじゃアタシのシーケンサもどきでも作れるレベルだわい。(ただしこちらはオクターブは維持されたっぽい。)

まぁ…「作為的なバリエーション増やし」というだけのレベルなら ffmpeg がかえって良い気もするわね…。