MIDIキーボードをArduino・LED・MuseScoreでスマートピアノチューターに変身
概要
MIDI対応キーボード/デジタルピアノを、オープンソース楽譜エディタ MuseScore と Arduino + NeoPixel LEDストリップで、インタラクティブな光る鍵盤ガイドシステムに変える週末プロジェクトです。楽譜が読めなくても、MuseScoreでMIDIファイルを読み込み「ピアノチューター」機能をONにすると、演奏すべき鍵盤位置に対応したLEDが光り、リアルタイムで練習できます。
システム構成
- MuseScore(PC側): MIDI/MusicXML読み込み → 再生時、ノートオン/オフイベントをシリアル(USB-MIDIまたは仮想MIDIポート)経由で送信
- Arduino UNO: シリアル受信 → ノート番号(MIDIノート番号 21-108)をLEDインデックスにマッピング → NeoPixel制御
- NeoPixel LEDストリップ(144 LED/m): キーボード上部に配置、各鍵盤に対応するLEDを点灯(色で左右手・和音構成音等を表現可能)
必要なハードウェア
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | シリアル通信・LED制御 |
| Adafruit NeoPixel 144 RGB LEDストリップ | 1 | 88鍵盤対応なら約1.5m(144×1.5≈216個)。5V電源別途必要 |
| MIDIキーボード/デジタルピアノ | 1 | USB-MIDIまたは5ピンMIDI OUT搭載機種 |
| Linuxラップトップ(またはWin/Mac) | 1 | MuseScore実行用。USB-MIDI認識必須 |
| 外部5V電源(2A以上推奨) | 1 | NeoPixel駆動用。Arduino 5Vピンからは給電不可 |
ソフトウェアセットアップ
1. MuseScore カスタムビルド
標準版にはピアノチューター機能がないため、フォーク版をビルドします:
git clone https://github.com/tomcucinotta/MuseScore
cd MuseScore
# ビルド手順はリポジトリのREADME参照(Qt, CMake, Ninja等必要)
ビルド後、メニュー「表示」→「ピアノチューター」を有効化。MIDI出力ポートをArduino接続の仮想ポート(Linuxなら aconnect、Windowsなら loopMIDI 等)に設定。
2. Arduinoスケッチ
Adafruit_NeoPixel ライブラリ使用。MIDIメッセージ(Note On: 0x90, Note Off: 0x80)をパースし、ノート番号をLEDインデックスに変換(オフセット調整可)。Note Onで点灯(ベロシティに応じた輝度/色)、Note Offで消灯。複数同時押し対応で和音表示可能。
3. MIDIルーティング
- Linux:
aconnectで MuseScoreのMIDI出力 → Arduinoシリアルポート(ttyACM0等)を接続。またはttymidiでシリアル⇔ALSA MIDI変換。 - Windows:
loopMIDI仮想ポート作成 → MuseScore出力先に指定 →Hairless MIDI to Serial Bridgeでシリアル接続。 - Mac:
Audio MIDI 設定でIACドライバー有効化 → 同様にブリッジ。
LEDマッピング・カスタマイズ
- MIDIノート番号 21 (A0) 〜 108 (C8) を LED 0 〜 N-1 に線形マッピング
- 白鍵・黒鍵で色分け(白=白色、黒=青色 等)
- 左右手パート別色(右手=緑、左手=赤 等)— MuseScore側でチャンネル分け必要
- 和音の構成音をグラデーション表示
- テンポ同期で先読みハイライト(次に弾く鍵を薄く点灯)
製作のポイント
- NeoPixelデータ線はArduino D6等に、レベルシフタ(74AHCT125等)経由推奨(5Vロジック対策)
- 電源ラインに大容量コンデンサ(1000µF)とデータ線に抵抗(330-470Ω)を追加
- LEDストリップ裏面に両面テープでキーボード譜面台裏や鍵盤上部レールに固定
- 配線は取り回ししやすいようコネクタ化(JST-SM等)
発展アイデア
- Web MIDI API対応でブラウザだけで完結(Chrome/Edge)
- Bluetooth MIDI対応(ESP32使用)でワイヤレス化
- 練習モード:正誤判定・スコアリング・ミス箇所リピート
- 指番号表示(小型OLEDやプロジェクションマッピング)
- 対応楽譜フォーマット拡大(MusicXML, ABC, GPX等)
リポジトリ
tomcucinotta/MuseScore - ピアノチューター機能実装済みフォーク
ライセンス
MuseScoreはGPL v3。ArduinoコードはMIT等で公開推奨。ハードウェア設計はCC-BY-SA等で共有可能。
製造プロセス
- ピアノ:古代のルーツから現代の極みへ
- プレーヤーピアノ:音響伝統と自動演奏精密技術の融合
- USB HID 攻撃の防止:Arduino Leonardo キーボードエクスプロイト実演
- DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
- Arduinoで携帯型静電容量タッチピアノを自作:MPR121シールド活用・ステップバイステップ
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- Unopad: Ableton Live連携シームレスなArduino MIDIコントローラー
- ラズベリーパイとNode-REDでAlexaからLEDを制御する - 簡単ステップバイステップガイド