KORG microPianoのMIDI改造

 前々から気になっていたKORGのmicroPiano*1をついに買いました。

 改めて調べてみると2010年11月発売で、既に10年以上のロングセラーモデルとなっていますが、MIDI改造の話は検索しても日本語でも英語圏でも見つかりません。

 というわけで、自力で調べました。結論を先に書いておくと、microPianoにMIDI IN/OUTを追加する改造は、比較的簡単にできます*2

Digest for english users: My microPiano (Japanese domestic model, manufactured in 2010) has internal 4pin PH connector (CN2) on KLM-3048C board. The connector has VCC(5V), MIDI OUT(3.3V), MIDI IN(3.3V) and GND pins. So, it's easy to add legacy DIN 5pin or TRS MIDI connector via 3.3V interfacing circuit. USB MIDI is also easy to implement with Atmega 32u4 and BLE-MIDI is also easy with ESP32. USE THIS INFORMATION AT YOUR OWN RISK.

<<警告>>
分解すると、メーカー保証は失効します。また、有償修理も断られる可能性があります。
本投稿を参考に改造を試みて、機器を壊したり、ケガをしたり、火災等が発生しても、あらゆる損害・損失等に著者は一切責任を負いません。自己責任の意味が解る方のみお試しください。

 

microPiano

 木製の屋根(天板)が付いていたりとグランドピアノをモチーフにした形状をしていますが、中身は電子ピアノそのものです。(ピアノにしては)小さいのに意外と音が良く、音源システムは一般的なPCMベースのサンプルプレイバック方式のはずですが、弾いていて気持ちのいい楽器です。

 そんなわけでピアノ音源として使いたいと思う人も少なくないようで、私もそう思いましたが、残念ながらmicroPianoにはUSBやMIDI入力はありません。
 近年のKORGのことだから内部にテスト端子とかあるんじゃないの?と、思うのですが、そんな情報は日本語でも英語でも見つからず。それどころか分解した状態の画像や、基板の画像も検索しても全く見当たらず、現物見ないと何も判らなそうです。
 参考情報も無く分解して壊すリスクを考えると新品は恐れ多いので、適当な中古品を探し続けていたところ、訳アリな個体がお手頃価格で見つかりましたので、早速分解してみました。
 

分解

 アコースティックピアノではないので、分解してもチューニングが狂うとかそんなことはありません。単純にひっくり返してネジを外して底板を外すだけですが、これが一番大変です。使う道具は普通の(精密ドライバーではない)プラスドライバーだけで大丈夫ですが、外すネジは36本と数が多いうえにストロークも長いため手が疲れます*3。できれば電動ドライバーを用意した方が良いと思います。
 底面に見えている全部のネジ*4を外します(脚は外す必要はありません)。
 

調査

 メインボードと思われるのがKLM-3048Cと記された基板です。音源もアンプもこの基板です。他にはキーボード基板、乾電池ボックス基板、スイッチ基板がありますが全てこのKLM-3048Cに繋がります。面倒なので筐体から取り外していないので裏側(というか表側)に何が載っているのかは確認していませんが、位置関係から察するに背面の端子類もこの基板に実装されているのだと思います。

f:id:kachine:20210809180614j:plain
KORG microPiano internal overview

 KLM-3048Cにあるコネクタの内、CN2の表示がある4ピンコネクタだけ何も接続されていません。基板上にある4ピンの未使用端子ってシリアルコンソールっぽくてわくわくしませんか?特にピンアサインが判るシルク印刷は無いのですが、VCC、TX、RX、GNDみたいなものを期待しました。
 とりあえず、電源を外してこの4ピンにGNDがあるかテスタで探ってみたところ、一番右側がGNDでした。また、一番左側が5V電源ラインでした(基板上にはGNDや5Vのシルク印刷は見当たらないのですが、キーボード基板にマルチプレクサの74HC138Nが使われているので、このピン配置からVCCとGNDを特定することができます)。
 また、通電状態でテスタで電圧を測ってみると左から5V, 3.3V, 3.3V, 0Vとなりました。両端のピンの隣にはチップコンデンサが、中央の2ピンの隣にはチップ抵抗が見えるので、3.3Vに見えているのはプルアップされている信号線かなと雑な予想をして、適当なマイコン(ここではESP32を使用)のUARTに繋いでみました。microPianoの電源投入しても起動メッセージのようなものは流れてきません。RX, TXが逆かと思って接続を変えても同様です。ならばシリアルコンソールではなくてMIDIそのものなのかと思い、MIDIと同じ31250bpsでNote-Onメッセージ(0x90 notenumber velocity)を流してみたところ、あっけなく鳴りました。
 というわけで、KLM-3048C基板の未使用のCN2端子を利用するとMIDI入力ができるようになります。(全ての製造ロットで共通なのかは不明ですが、)ご丁寧にPHコネクタまで実装されているので本体無改造でCN2にコネクタ差し込むだけでOKです!
 GNDの隣がMIDI INに相当し、その隣のピンがMIDI OUTに相当するようで、常時0xFE(Active Sensing)が送信されています。
 つまり、CN2のピンアサインは(KLM-3048Cの文字が正しく読める方向から見て)左から順に5V, MIDI OUT(3.3V), MIDI IN(3.3V), GNDとなっています。

f:id:kachine:20210809180802j:plain
The pin assignment of CN2 connector at KLM-3048C (mainboard of KORG microPiano)

 

MIDI IN詳細
  • 対応しているMIDIメッセージはNote-On/Offだけではなく、Pitch Bend、ProgramChange、一部のControlChangeにも反応します。
  • 網羅的に調べたわけではありませんが、CC#7 Volume, CC#11 Expression, CC#10 Panpot, CC#74 Filter Cutoff, CC#91 Reverb send level*5, CC#93 Chorus send level辺りにも反応しています。
  • すなわち本体パネルから操作できないコントロールまで音源部は対応しているわけで、察するに音源チップはKORGの他のデジタルピアノと同じなのかもしれません。*6
  • OMNI-ONで受信しているのかと思いきや、実はマルチティンバー音源のようでMIDI CH別に違うProgram#を指定したりできます。なおProgram#は番号順に並んでいるわけではなく、歯抜けで鳴らないProgram#もあります。
  • 本体鍵盤が繋がっているPart(或いはTimber)はMIDI CHが割り当てられていないようで、MIDI INから操作可能な1-16CHのいずれでもありません。
  • 但しMIDI CH1でLocal Control(CC#122)でOff(0)を送信した場合のみ、本体鍵盤は無効化され音は鳴らなくなります(Local Control On(127)を送信すると鍵盤は有効状態に戻ります)。
    • この挙動からGlobal channel(というかControl channel)的なものは1CHのようです。

 

MIDI OUT詳細
  • 常時0xFE(Active Sensing)が約1秒間隔で送信されています。
  • Note-On*7/Off*8も鍵盤のタッチに合わせて送信されます(MIDI CH 1固定)。
  • 本体で音色を切り替えると、BankSelect MSB/LSBとProgramChangeとCC#7 Volumeの4点セットが何故か2回送信されます*9
  • 本体でソングを再生しても、MIDI OUTからはソングの演奏情報は出力されません(ソング再生中も鍵盤操作に応じたMIDIメッセージが送信されます)。
  • ショートフレーズ音色(黒鍵にアサインされた音色)を演奏しても、普通に1音分のNoteOn/Off情報しか送信されません(個々のショートフレーズのメロディに応じたNoteOn/Offは送信されません)

 

作るもの

 3.3VのMIDI信号を送受信するインタフェース用の回路を作ればよいです。

 例えば、MIDI IN端子を増設するなら、3.3VのMIDI受信回路のリファレンス通りにMIDI INのカレントループをフォトカプラでアイソレートして3.3VのMIDI信号生成する回路を組めばよいでしょう。端子は筐体を穴あけ加工して設置するか、見た目を犠牲にして底板の隙間からケーブルを通してコネクタをぶら下げるかでしょうか。

 USB-MIDIに対応させるならAtmega 32U4を使ったArduino互換のProMicroでインタフェースを作るのが簡単でしょう。この場合もUSB端子をどうやって露出させるかが課題になりますが。
 
 せっかく本体無改造でMIDI入出力できるので、美しい筐体を損ないたくありません。そんなわけで、今回はESP32を使ってBLE-MIDIに対応させることにします。基本的にはBLE-MIDIメッセージを受け取ったらUARTに垂れ流す処理と、UARTからMIDIデータを受け取ったらBLE-MIDIメッセージを送信する処理を書けば良いだけです。
 

ESP32絡みの注意事項
  • microPianoのCN2から5V電源を取ると動作しない(ESP32が起動しない)事象に見舞われた
    • はんだ付けに失敗して壊したかと思いましたが、違いました(USB端子からPCやモバイルバッテリで給電した場合には正常に動くので)
      • 所謂ESP32 Devboardには種類が複数ありますが、microPianoの5V電源で動くものと動かないものがあるようです。Devboardの何らかの仕様差異(回路そのもの、搭載パーツ、消費電力…等々の何某か)によると思われますが、詳細は未調査
  • microPianoのCN2から取れる5V電源は、ACアダプタが接続されていると本体の電源状態にかかわらず常時5Vが供給されている(本体とESP32の電源連動しない)
    • ActiveSensingを監視してESP32をDeepSleep状態に落とすことはできますが、起こす手段が無さそうなので。
      • やろうと思えばスイッチ基板から電源ボタンの信号線を引っ張ってくれば起こせそうですが、本体無改造ではできないのでやってません。
  • ESP32で実装したBLE-MIDIは一度BLE切断すると、ESP32の電源を再投入しないと再接続できない模様
    • disconnect後にadvertisingできてないのが原因のような。
    • 数年前に自力で書いたコードでも、今回使ったBLE-MIDIライブラリでも同様なので、たぶんそういう制約なのかと。
  • ESP32のBLE-MIDIiOSでは普通に使用できるが、Androidはまちまち*10、Windows10も多分使えません。UbuntuはビルドオプションでBLE-MIDIを有効化して自前でビルドしたBlueZを使えばALSA sequencerポートとして普通にアクセスできました*11ALSA RawMIDIポートとしては見えませんので、RawMIDIで使いたければsnd_virmidiモジュールでルーティングするなどの工夫が必要です。

 

できあがったもの

 BLE-MIDI対応microPiano。当然ながら外観は無改造状態とまったく違いが判りません。
 microPianoでiOSの各種ソフトシンセを演奏することもできますし、KORG GadgetのTaipei(MIDI出力ガジェット)からmicroPianoを演奏することもできます。
 

その他

プリセット音色のPC#, BankSelect MSB/LSB一覧

 microPiano本体で選択可能な61音色それぞれを選択した際に送信されるBankSelectMSB/LSBとProgram#の組み合わせを全て調べてみたところ以下の通りでした。
 同じ値のBankSelectとProgramChangeをMIDI INに送り込むと、当該MIDI CHで当該音色が概ね使えます。

# KeyName Note# Sound IsShortPhrase PC# CC#0 CC#32
1 C2 36 Grand Piano 0 121 0
2 C#2 37 Piano Phr.1 o 0 121 5
3 D2 38 OctDown Piano 0 121 1
4 D#2 39 Piano Phr.2 o 0 121 6
5 E2 40 OctUp Piano 0 121 2
6 F2 41 Jazz Piano 1 121 0
7 F#2 42 Jazz Piano Phr. o 1 121 1
8 G2 43 Morning OrchPiano 0 121 4
9 G#2 44 Latin Piano o 0 121 7
10 A2 45 Honky Tonk 3 121 0
11 A#2 46 Honky Tonk Phr. o 3 121 2
12 B3 47 Piano&Strings 0 121 3
13 C3 48 Club E.Piano 4 121 1
14 C#3 49 E.Piano.Phr.1 o 4 121 4
15 D3 50 Tine E.Piano 4 121 0
16 D#3 51 E.Piano Phr.2 o 4 121 3
17 E3 52 Trem.E.Piano 4 121 2
18 F3 53 Clav. 7 121 0
19 F#3 54 Clav. Phr. o 7 121 1
20 G3 55 Harpsichord 6 121 0
21 G#3 56 Baroque Phr. o 6 121 2
22 A3 57 Harpsi&Strings 6 121 1
23 A#3 58 Toy's Kingdom o 3 121 3
24 B4 59 Toy Piano 3 121 1
25 C4 60 Vibraphone 11 121 0
26 C#4 61 Vibe Phr. o 11 121 1
27 D4 62 Marimba 12 121 0
28 D#4 63 Marimba Phr. o 12 121 1
29 E4 64 Celesta 8 121 0
30 F4 65 Karimba 108 121 0
31 F#4 66 Karimba Phr. o 108 121 1
32 G4 67 Steel Drum 114 121 0
33 G#4 68 Steel Drum Phr. o 114 121 1
34 A4 69 Music Box 1 10 121 0
35 A#4 70 M.Box Phr. o 10 121 3
36 B5 71 Music Box 2 10 121 1
37 C5 72 Pipe Organ 19 121 0
38 C#5 73 Pipe Organ Phr. o 19 121 2
39 D5 74 Electric Organ 16 121 0
40 D#5 75 E.Organ Phr. o 16 121 1
41 E5 76 Reed Organ 20 121 0
42 F5 77 Street Organ 20 121 1
43 F#5 78 Merry Organ o 20 121 3
44 G5 79 Theatre Organ 20 121 2
45 G#5 80 Opera Organ o 20 121 4
46 A5 81 Flute 73 121 0
47 A#5 82 Flute Mirror o 73 121 1
48 B6 83 Accordion 21 121 0
49 C6 84 Strings 48 121 0
50 C#6 85 StringsHarpGls o 46 121 2
51 D6 86 Silky Strings 48 121 1
52 D#6 87 Cinematic Phr. o 48 121 3
53 E6 88 Cinema Strings 48 121 2
54 F6 89 Harp 46 121 0
55 F#6 90 Harp Dream o 46 121 1
56 G6 91 Tublar Bell 14 121 0
57 G#6 92 Church Bell o 14 121 1
58 A6 93 WeddingOrch.Bell 19 121 1
59 A#6 94 Xmas Bells o 14 121 3
60 B7 95 Merry Xmas 14 121 2
61 C7 96 Snow Crystal 10 121 2

 

BankSelectMSB=121とは

 あまり目にしないBank番号ですが、これはTRITON系のHI Synthesis SystemでGM音色を選択する場合に使われています(AI Squaredまでとは違います)。
 よく見るとProgram#もGM音色のそれに近い音色と同様の組み合わせになっています。
 蛇足ながらもし内部的にHI Synthesis Systemであるならば、ショートフレーズ音色と言っているのはArpeggiatorで実現しているのでは?と推測したのですが、違ったようです。HI Synthesis SystemならNRPN MSB/LSB=00/02でアルペジェーターのOn/Offができますが、microPianoは無反応でした。
 

Program#総当たりで調べた内蔵音色

 上記の通り内蔵音色はBankSelectを併用した音色指定が為されています。
 BankSelect MSB/LSB共に0を指定して、ProgramChange#0-127で総当たりしてみた結果が下表の通りです*12

PC# Tone
0 A.Piano
1 A.Piano
2 SynthFlute? Sinewave
3 HonkyTonk
4 E.Piano
5 Marimba?
6 Harpsichord w/key off noise
7 Clavi
8 Celesta
10 MusicBox
11 Vibraphone
12 Marimba
13 CONFIRMATION SOUND
14 Bell
16 Organ
19 Organ
20 Reed Organ
21 Accordion
46 低音はPluckedな弦楽器風、Harp or MusicBox?
48 Strings
73 Flute
108 Karimba
114 SteelDrum

 上表で省いたPC#はBankSelectMSB/LSB=0/0では音は鳴りません。
 PC#13は機能確認音(本体で音色変更などの操作をした際になる確認音)のようで、真ん中のA(Note#57)のみ発音されます。
 PC#2, #5はプリセット61音色で使用されていないProgramNoのため、隠し音色と言えるでしょう。BankSelectも含めれば他にも隠し音色はあるかもしれませんが、BankSelectMSB/LSB全てを含めて探すと128×128×128=2097152通りにもなるので、調べる予定はありません。
 PC#2はアタック成分だけが独特ですがサスティン以降は単なるサイン波で、特筆すべき優れた音色ではありません。PC#5もよくあるChromaticPercussionな音色の1つといった感じでごく普通の音です。隠し音色のためだけにmicroPianoを購入するような暴挙に出る価値はありません。



以上。

*1:以下、単にmicroPianoと表記。KurzweilにもMicroPiano MP-1というピアノモジュールがありましたけど、本投稿はKORGのmicroPianoの話です。

*2:日本国内向けモデルと海外モデルの差異や、製造ロットの違いによる内部仕様の差異によってはできないかもしれません。私のmicroPianoは2010年製と量産初期の個体のためテスト端子が残されているだけで、より新しい製造ロットでは省かれている可能性もあります。

*3:変な筋肉痛になりました。

*4:背面側に黒の11本のネジ、手前(鍵盤)側が銀色の25本のネジと2種類だけなので容易に識別できます。

*5:小さいのに音が良く聞こえる原因は内部のスピーカーボックスの構造や天板の反響で実現しているのではなく、実はデジタルリバーブの恩恵が大きいことが判ってしまいました。内部構造はスピーカーボックスというかエンクロージャの概念すらなく、単にスピーカーユニットが天板方向に向けて取り付けられてるだけでした…。

*6:というか、フィルタまで弄れるのでAI Squared辺りの音源システムだったりするんでしょうかね?

*7:ベロシティ対応

*8:当然ながらベロシティ非対応: 64固定

*9:1回の事もあるようです

*10:アプリ依存だけなのか端末依存もあるのか良く判りません。その名も"MIDI Controller"というアプリだけは昔から使えましたが、最近になってFL Studio MobileのBLEも機能するようになったようです。

*11:現時点でパッケージマネージャから導入できるBlueZではUbuntu18.04, 20.04共にBLE-MIDIは使えませんでした

*12:下表の音の名前は自分の耳で聞こえた音を基に推測して表記しており、KORG公式の名称ではありません