PaxPowerGloveMIDIKeyboard![はてなブックマーク はてなブックマーク](https://b.hatena.ne.jp/entry/image/http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/Arduino/PaxPowerGloveMIDIKeyboard/)
チップチューンなDJイベントで、 DJがパワーグローブを装着してプレイしていたら面白いかも。
ちょうどバーチャルリアリティ用改造PAXパワーグローブの保守部品として買ったパワーグローブが余っている。
せっかくなので、ただ装着するだけでなくグローブに何か機能が欲しい。
そう思い、PAXパワーグローブをMIDIキーボードにしてみた。
完成品の動画。マウスで動画右下のスピーカーアイコンを押すと音が出ます。
操作:
0〜9、ENTER、PROGでドレミファソラシの音を奏でる。
上下でオクターブを変更する。
ABで楽器を変更する。
指の曲げ伸ばしで各種エフェクト(モジュレーション)が掛かる。
必要なもの
ハードウェア
項目 | 説明 |
Arduino UNO | 比較的小型で安価で簡単に使えるマイコンボード。 |
USBケーブル(タイプAオス- タイプBオス) | 何でも良い。 |
パックスパワーグローブ | 通常はファミコンに接続して使う手袋型コントローラ。 |
プルアップ抵抗(100kΩ)* 4 | 何でも良い。今回は千石電子通商で購入。 |
ユニバーサル基板 | 何でも良い。今回は千石電子通商でサンハヤト ICB-504辺りを購入。 |
LED * 2 | 何でも良い。今回は千石電子通商で購入。パワーグローブに合わせて直径8mmの緑色を選んだ。 |
電流制限抵抗 * 3 | 何でも良い。今回は千石電子通商で購入。 |
プラスチックケース | 何でも良い。今回は千石電子通商でテイシン TB-59Bを購入。 |
コルゲートチューブ | 何でも良い。今回は千石電子通商で購入。 |
OTGアダプタ | 何でも良い。今回はドロイド君型OTGアダプタを使用。 |
Android端末 | 今回はUSB-MIDIに対応した簡易音源として使用。 最近のAndroidの入ったスマホやタブレットであれば概ね何でも良い。 今回はChuwi Vi8を使用。 |
ソフトウェア
項目 | 説明 |
Arduino Software IDE | Arduinoの統合開発環境。 |
dualMocoLUFA | USB-MIDI ファームウェア。 HEXファイルをGitHubからダウンロードしておく。 ("Raw"を右クリックして保存。) |
Atmel Flip | フラッシュ書き込みツール。 FLIP 3.4.7 for Windows (Java Runtime Environement included)をダウンロードしておく。 |
MIDILibrary | Arduino_MIDI_Library_v4.2.zipをダウンロードしておく。 |
![]() | 自作のプログラム。コンパイルするにはMIDILibraryが必要。 |
普通のアナログシンセサイザー(Common Analog Synthesizer) | USB-MIDIキーボードに対応したシンセサイザーアプリ。 今回はUSB-MIDIに対応した簡易音源として使用。 他の本格的な音源でも動作するはず。 |
手順
ハードウェア
- 手の甲の部分の基板のビニール線を除去する。
- パワーグローブのボックスの基板を取り外し、ビニール線を除去する。
- チップを除去する。除去する際に断線した箇所はジャンパで補修する。
- 写真のプルアップ抵抗の下側にArduinoの5Vに接続する。
- 写真のプルアップ抵抗の上側にそれぞれビニール線をはんだづけし、ArduinoのD2〜D9に接続する。(写真の抵抗の上側)
- 写真の(1)をArduinoのD10に接続する。
- 写真の(2)をArduinoのD11に接続する。
- 写真の(3)をArduinoのD12に接続する。
- 基板のLEDを電流制限抵抗と共にArduinoの5VとGNDに接続する。
- 手の甲の基板に合わせてユニバーサル基板を切断する。
- LEDを散光のためにヤスリがけした後、電流制限抵抗と共に基板に配置し、Arduinoの5VとGNDに接続する。
- 手の甲側の4本の赤い線をすべてArduinoのGNDに接続する。
- Arduinoの5V→抵抗→手の甲側のセンサ線と繋ぎ、抵抗とセンサの間にArduinoのアナログ入力を接続する。
後述のスケッチでのセンサ線とアナログ入力の関係は次の通り。このときパワーグローブと基板の接続にピンソケットを使うと、後日パワーグローブを交換するときに楽。指 センサ線 アナログ入力端子 親指 青 A0 人差し指 黒 A1 中指 白 A2 薬指 茶 A3 小指 センサなし - - 導通チェックをしたら、各種はんだづけ部分をホットボンドなどで固め外れづらくする。
- コルゲートチューブでビニール線を覆い、Arduinoをプラスチックケースに格納する。
ソフトウェア
- ピンヘッダ(ICSP端子)の5ピンと6ピンをショートさせたまま、ArduinoをUSBケーブルでPCに接続し、電源LEDが点灯したら、ショートさせるのを止める。
- デバイスマネージャを開く。
- "不明なデバイス"を右クリックし、[ドライバーソフトウェアの更新]をクリックする。
- [コンピューターを参照してドライバーソフトウェアを検索します]をクリックする。
- "次の場所で〜"に"C:\Program Files (x86)\Atmel\Flip 3.4.7"を入力する。(バージョンは適宜変更する)
- デバイスマネージャのAtmel USB DevicesにATmega16U2が表示されていることを確認する。
- Atmel Flipを起動する。
- [Device]>[Select]をクリックする。
- ATmega16U2を選択する。
- [Settings]>[Communication]>[USB]をクリックする。
- Openをクリックする。
- [File]>[Load HEX File]をクリックする。
- dualMoco.hexを選択する。
- "Run"をクリックする。
- 書き込み終わったことを確認する。
- USBケーブルを挿し直す。
- Arduino Software IDEを起動する。
- [スケッチ]>[Include Library]>[Add .ZIP Library...]
- Arduino_MIDI_Library_v4.2.zipを選択して開く。
- ピンヘッダ(ICSP端子)の5ピンと6ピンをショートさせる。
- Arduino IDEで
パワーグローブMIDIキーボード用Arduinoスケッチを書き込む。
完成!
なお、dualMocoLUFAから元に戻したいときは、FlipでC:\Program Files (x86)\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2\UNO-dfu_and_usbserial_combined.hexを焼く…はず。
使い方
- パワーグローブのUSBケーブルをOTGアダプタでAndroid端末に接続する。
- 普通のアナログシンセサイザーを起動する。
- 右下の設定ボタンをタップする。
- [SELECT MIDI DEVICE]をタップする。
- 表示された機器をタップする。
- 自由に弾く。
0〜9、ENTER、PROGでドレミファソラシの音を奏でる。
上下でオクターブを変更する。
ABで楽器を変更する。
指の曲げ伸ばしで各種エフェクト(モジュレーション)が掛かる。