自動演奏、良いですよね。速い曲や複雑な曲をすらすら演奏しているのを見てるのはとても面白いです。ということでトイピアノで実際に作ってみました。
<投稿者:ゆー (@YoutechA320U)>
Python初心者。Pythonを使ってRaspberryPiでMIDI音源を作っていますが、MicroPythonを通してESP32にも手を出しました。
実際に動作している様子
遂に自動演奏トイピアノ完成しました!
— ゆー@NT京都3/24 (@YoutechA320U) November 30, 2018
当初はラズパイ3で作りましたが、明らかにオーバースペックだったのでESP32マイコンで作り直しました。 pic.twitter.com/D0OKjfaoSz
ノートON、OFFのみでベロシティはありません。
制作の様子
全てはここから始まりました。この時(11/1)は来年とか言っていたのですが…
ソレノイドでトイピアノの制御が出来たら楽しそう https://t.co/zxrJ9oe9nX pic.twitter.com/MYXd9rUn9C
— ゆー@NT京都3/24 (@YoutechA320U) November 1, 2018
UART-MIDI-Pi_INの仕組みを使ってRaspberryPiのUARTからMIDIを入力
— ゆー@NT京都3/24 (@YoutechA320U) November 1, 2018
↓
トイピアノの音域のノート情報のみを取得してMCP23017(マトリクスなら1つ、そうでないなら2つ)のGPIOに渡す
↓
ソレノイドx25を制御する
みたいな。まあコスト、手間がかなり掛かるのでやるなら来年か
回路図を書いた後、勢いで一気にパーツを注文してしまったのでそのまま制作開始です。
ダイソーの木材にソレノイドを並べて接着していき、それをトイピアノの鍵盤の上に置きます。
が、RaspberryPiで自動演奏はオーバースペック気味だったので、ESP32のMicroPythonに移植して今度こそ完成。構想からちょうど1か月でした。
仕組み
MIDI回路を介したUARTから受信したMIDIノートON、OFFに対応したソレノイドを動かしています。MIDIやI/Oエキスパンダのライブラリは使わず基本のUARTとI2Cのライブラリのみで作ったのでRaspberryPiからESP32の移植が容易でした。
HiLetgo® ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード
- 出版社/メーカー: HiLetgo
- メディア: オフィス用品
- この商品を含むブログを見る
回路図及びPi版、ESP32版のソースコードをGitHubで公開しています。Pi版はUART周りの設定とPySerialのインストールが必要です。
ソースコード
最後に
同じパーツが多く配線も複雑に見えますが基本はLチカの応用なのでMIDIでコントロールするイルミネーションなども作れそうです。パーツが揃えられる方は是非挑戦してみてください。
<投稿者:ゆー (@YoutechA320U)>