« 2013年11月 | トップページ

2019.04.13

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を接続してみました。

Img_9321 

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では、スパニングツリーが無い限りはやっちゃだめなアレ。
51639_12_1

MIDI楽器の電源を入れたら Mac側と接続する。

Img_9322

mac側のMIDI接続には、KORGの Bluetooth MIDI Connectで接続する。
https://itunes.apple.com/jp/app/bluetooth-midi-connect/id1074606480?mt=12

20190413-141422

なんと奇遇な! ワイヤレスで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 Sax  

507 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  

久しぶりに書いてみた。

| | コメント (0)

« 2013年11月 | トップページ