MIDI音源のプリセットリストを抽出してみた
MIDI音源 E-mu PROTEUS/1 Plus ORCHESTRAL の中にある音色の名前をひっぱりだすことに成功した。
まずはマニュアルを発掘。実家のどこかにはあるけれども。
E-MU Proteus 1 Plus Orchestral Operation Manual
EMU PROTEUS 1 owner's manual - Polynominalwww.polynominal.com/emu-proteus/emu-proteus-manual.pdf
116ページあたりに記載がある。
PRESET LIST
A new MIDI command has been added to allow external software to upload all preset names as an array of ascii strings. The preset list request command is:
F0 18 04 dd 12 F7
Proteus will respond to this command with the preset list message:F0 18 04 dd 13 (13 bytes per preset) ... ... F7
Each preset name is 12 ascii characters, plus a zero terminator, for a total of 13 (decimal) bytes. The first preset is #0. The total number of preset names is equal to pp in the configuration message above. Proteus firm- ware earlier than version 2.10 will not respond to this command.
F0 18 04 dd 12 F7を送り込めば良い。
dd はMIDI機器に設定している IDなので 00とする。
システム エクスクルーシブで F0 18 04 00 12 F7 を送り込めばよい。
応答データは F0 18 04 dd 13 で始まり、12バイトのアスキー文字なデータと00で区切られる。トータル13バイト。最初の音は0番から。出力の最後はF7で終わる。
さて、では実際の作業を説明。
今回は MacBook Proとやりとりします。
今回の音源は E-mu PROTEUS/1 Plus ORCHESTRALという定価が20〜17万もしたやつです。
背面にある一番端のOUTPUTはヘッドホン用にステレオ出力ができるので、SONY MDR-CD900STを接続してみました。
RAMの音色データは電池切れで飛んでいるので、書き戻しをトライするつもり。
まずはエクスクルーシブのやりとりで音色の一覧を入手してみたいと思います。
モアソンジャパン様の Pocket MIDIで MIDIデータの出力や入力ができる。
https://itunes.apple.com/jp/app/pocket-midi/id1260936756?mt=12
MIDI楽器側には YAMAHAさんの MD-BT01を取り付ける。
https://jp.yamaha.com/products/music_production/accessories/md-bt01/index.html
ふつーのMIDIケーブルで、こんな感じに物理接続することはない。
LANのSW-HUBでは、スパニングツリーが無い限りはやっちゃだめなアレ。
MIDI楽器の電源を入れたら Mac側と接続する。
mac側のMIDI接続には、KORGの Bluetooth MIDI Connectで接続する。
https://itunes.apple.com/jp/app/bluetooth-midi-connect/id1074606480?mt=12
なんと奇遇な! ワイヤレスで30年前の音源とMIDIでプロテウスと接続できちゃった!
さきほどのエクスクルーシブを送り込んで、出力されたデータをテキストで保存。16進数のテキスト文字列が空白区切りで保存されている。
出力データの最初と最後にある不要なデータを除去(最初の5バイト分と最後の1バイト)しやすくするために、空白を除去して文字数をカウント。
$ sed 's/ //g' 1.txt | wc
1 1 13325
13325文字ある。最初の5バイト分(10文字)をとばして11文字目から表示させて、最後の1バイト分(2文字)の手前の13322文字まで出力すれば良い。
xxdで16進数ダンプを元に戻す。区切り文字の00は出力されないので、fold で12文字ずつ折りたたむ。
$ sed 's/ //g' 1.txt | cut -c 11-13322 | xxd -r -plain | fold -12 | head
Stereo Piano
Hall Strings
InChoirIrie
BigCityBrass
Stereo Sax
Acoustic Gtr
Modern Gtr
Thunder Bass
MiniMoogBass
B3 Mod->Lesl
音色の数をカウントする。
$ sed 's/ //g' 1.txt | cut -c 11-13322 | xxd -r -plain | fold -12 | cat -n | tail
503 Square One
504 Square Link
505 Nice Night
506 Prophet Lead
507 Prophet Link
508 MysteryScene
509 ElectricLady
510 AnalogueMood
511 Kosmos Keys
512 Piano Pizz
問題なさそうなので音色名を保存
$ sed 's/ //g' 1.txt | cut -c 11-13322 | xxd -r -plain | fold -12 > 2.txt
音色番号は0から始まるので、左側に添える数字の連番なテキストを作る
$ for i in $(seq 0 511); do echo $i; done > 0-511.txt
2つのファイルを横並びで結合する。
$ paste 0-511.txt 2.txt | head -5
$ paste 0-511.txt 2.txt | tail -5
0 Stereo Piano
1 Hall Strings
2 InChoirIrie
3 BigCityBrass
4 Stereo Sax507 MysteryScene
508 ElectricLady
509 AnalogueMood
510 Kosmos Keys
511 Piano Pizz
問題なさそうなので保存
$ paste 0-511.txt 2.txt > E-mu_PROTEUS1PlusOrch.txt
さきほどのテキストから左の数字を取り除くには awkだよねーとおもっていたらハマッた。
macの場合バックスラッシュがどーしても入力できないことがある。
0x5Cが期待値なのに 0xA5で入力されてしまう。
システム環境設定から、キーボードの入力ソースで調整すれば良い。
コンソールでの見た目は変わらないけれど、中身はバックスラッシュになる。
参考 http://minto.tech/mac-backslash/ で紹介されている方法で調整すると大丈夫
$ awk -F "\t" '{print $2}' E-mu_PROTEUS1PlusOrch.txt | head -5
Stereo Piano
Hall Strings
InChoirIrie
BigCityBrass
Stereo Sax
久しぶりに書いてみた。
« PBの自転車工具 | トップページ | 湘南シクロクロス 湘南国際村 »
この記事へのコメントは終了しました。
コメント