22/10/11追記
ひまわりで作ったサーバーがエラー吐きまくって直すのが面倒くさくなっちゃったので秒でサービス終了しました。意思が弱くてすみません・・・。
YAMAHAのMU128を使ってMIDI->WAVへコンバートしてくれるサービスを作りました!
ここから見られます: m128conv
DEMO
なんでこんなのつくったの?
理由は2つあります。
ハードウェアMIDI音源を布教したい
ハードウェア音源が好きなのでみんなにも使ってほしいんです。見た目やサウンドが好きなんです。
みんながハードウェア音源を使うようになってネット上でのファイルのやり取りがMP3からSMF(.mid)になってくれるのを心から願っています。
そんな世界を作るために、まずはハードウェア音源のサウンドを体感してもらおうと思ったのがまず一つの理由です。

衝動買いしたPCの使い道を作りたかった

先日Amazonで12,800円とかいう意味わからない価格のノートパソコンが売っていたので買ってしまいました。mem4g, emmc64g, ips液晶, celeronN4000, しかも耐水・防塵&Win10Proということでありえんほど破格だったので、ついつい買ってしまう人がいても仕方ないですね。
買ったはいいのですが使い道がなかったので、こいつを使った何かを作ろうということで、m128convを作ることになりました。今回はMIDIデータを受け取ってWAVファイルに変換する処理に使っています。
↓ちなみに今もここからかえます(AdBlockが有効な場合は見えないかも)。使い道がなくても買った後に考えればいいと思います。みなさんも買いましょう
動作の仕組み

このサービスは表示ページ(フロントエンド)、サーバー、変換サーバーの3つで構成されています。
サーバーと変換サーバーを分けているのは、家の回線がポート開放に対応していないからです・・・。
以下が動作の流れです。
1.まず、ユーザーがアップロードしたファイルはサーバー上のデータベースに登録されます。
2.変換サーバーは10秒おきに変換待ちのファイルがないかサーバーに問い合わせて、もし存在した場合はMIDIをダウンロードしてWAVに変換、アップロードします。(挙動的にはクライアントと表現したが正確かもしれない)
3.フロントエンドはページが更新されるたびに変換状況を問い合わせ、変換が終わっている場合はダウンロードリンクを表示します。
こうやって並べてみるととても単純だな・・
変換サーバーは、サーバーとやりとりするプログラム(ひまわり製)とMIDI->WAVに変換するプログラム(C#製)の2つに分かれています。
変換に使ったプログラム
MIDI->WAVに変換する際、コマンドライン上でMIDIファイルを再生し、再生している間入力デバイスから録音するという処理が必要だったのですが、そんなニッチな用途に対応した録音ソフトは(自分が探した限り)見当たらなかったので、作りました。
簡単に使える上にわりと便利なので、みなさんもどうぞ使ってください。
https://github.com/avaice/ConsoleMidiRecorder
感想
これを機にハードウェア音源デビューしてくれるDTMerがいたらとてもうれしいなあ