エクスプレッションペダルを改造しMIDIデバイスとして直接PCに接続する方法
きっかけ
私は普段オーディオインターフェースを使用しエレキギターをPCに接続して演奏しています。PCにはGuitar Rig 7というアンプシミュレーターがインストールされており、これを使用し様々なエフェクターを通して演奏しているわけです。このアンプシミュレーターの中にはワウのエフェクターもあるのですが、やっぱりこれを使うのにはペダルは必須ですよね。そこでペダルをPCに接続する方法を検索してみました。
フットコントローラーを使ったりMIDIコントローラーを使ったりMIDIキーボードを使ったり…
どの商品も1万円以上します。私はペダルをPCに繋ぎたいだけでそれ以外の機能は必要ありません。ペダルを繋ぐだけの機器に1万円以上も使わなくてはならないのかと半分諦めていたのですが、たまたまこちらの記事を発見しました。
https://note.com/hatoribe_pn/n/n0edbc0eaf45f
ArduinoでMIDIデバイスを作れるっぽい
Arduinoを使用すればMIDIデバイスを作れることを知りました。こちらの記事の製品では可変抵抗器が使われていますね。
ワウペダルも踏み込んだ量によって音が変わるわけですから同じ要領でPCとペダルを接続出来るのではないかと考えました。更に折角ならペダルとPCを直接接続出来るようにArduinoをペダルの中に埋め込むことにしました。
材料
エクスプレッションペダル
M-Audioのエクスプレッションペダルを使用します。エクスプレッションペダルはワウペダルとは異なり、中に入っているのは可変抵抗器だけです。
今回は最安の物を選択を選択しました。単純に安く作りたいというのもありますが、筐体がプラスチック製なので加工しやすいというメリットもあります。
RP2040-Zero(マイコン)
結局マイコンはArduinoではなくラズパイにしました。私は電子工作初心者で、よく分かっていないのですが多分これでも動きます(というか動きました)。これを選んだ理由としてはとにかく小さいことと比較的安価であること、あと端子がUSB-Cであるためです。ピンヘッダと呼ばれる足が付属しているものを買いましょう。私はメルカリでピンヘッダ付属のものを2個1200円くらいで買いました。
その他
他に必要なものは以下の通りです。Amazonでも買えますし、近所のホームセンターでも売っていると思います。
ユニバーサル基板
導線(30cmもあれば十分)
M2x15のねじ4本と座金、ナット
必要な工具は半田ごて、ドライバー、カッター、キリ、棒ヤスリ、紙やすりです。材料費は4000円以内でしょうか。もし既製品を買ってエクスプレッションペダルをPCに接続しようものならペダル代プラス1万円~ですので大幅なコスト削減です。
RP2040-Zeroへ書き込み
Arduino IDEの設定
RP2040-Zeroへプログラムを書き込みます。Arduino IDEというソフトを使用します。OSはWindows10です。
こちらのサイトへ移動し、Arduino IDE 1.8.19のWindows ZIP fileをインストールします。
私の場合インストーラーでインストールし、ライブラリを追加する時にエラーが出てしまいました。(Windowsのユーザー名に日本語を使用していたためPath値でエラーが出てしまったようです)。そのためあえてZIP fileの方を選択しています。
ダウンロードしたZIPファイルを解凍するとarduino-1.8.19というファイルが出てくると思います。今回はファイル名をArduinoに変更してCドライブ直下においたとします。
そしてこの作業が重要なのですが、Arduinoファイルの中にportableという名前のフォルダを作成しておきます。
それではArduino.exeを起動してみましょう。
起動後は先程まで空だったportableファイルの中にファイルが作成されていると思います。その中の1つにpreferences.txtがあると思います。存在を確認できたら一旦Arduino IDEは閉じます。
preferences.txtをメモ帳で開き、build.path=C:\Arduino\ArduinoTempの一文を追加し保存します。その後Arduinoフォルダの中にArduinoTempという名前のフォルダを作成します。
RP2040-Zeroのボードパッケージをインストール
Arduinoを起動し、ファイル→環境設定→追加のボードマネージャーのURLに以下を追加してOKします。
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
次に ツール→ボード→ボードマネージャーを開いて「rp2040」で検索し、「Raspberry Pi Pico/RP2040/RP2350」をインストールします。
インストールが完了したらボードマネージャーは閉じ、ツール→ボード→Rasberry Pi RP2040からWaveshare RP 2040 Zeroを選択します。結構下の方にあります。
RP 2040 Zeroを選択したらツール内が増えていると思います。
ツール→USB StackからAdafruit Tiny USBを選択してください。
それ以外の設定はデフォルトで問題ないと思います。
ライブラリのインストール
次に今回使用するライブラリをダウンロードしてきます。
スケッチ→ライブラリをインクルード→ライブラリを管理を押してライブラリマネージャーを開きます。検索バーがありますのでそこでAdafruit_TinyUSBと検索します。Adafruit TinyUSB Libraryが見つかるのでそれをインストールします。
Installを押すとウィンドウが出てくると思います。Install allで問題ありません。
コンパイルしてみる
これでArduino IDEの設定は全て出来ました。それでは書き込んでいきましょう。Arduino IDEに以下のプログラムをコピペして保存してください。
#include <Adafruit_TinyUSB.h>
Adafruit_USBD_MIDI usb_midi;
// アナログ入力ピンの定義
const int expressionPedalPin = A0;
// MIDIチャンネルの定義(1-16の範囲)
const byte midiChannel = 1;
void setup() {
// 初期化
Serial.begin(115200);
pinMode(expressionPedalPin, INPUT_PULLUP);
// USB MIDIの初期化
TinyUSB_Device_Init(0);
usb_midi.begin();
}
void loop() {
// エクスプレッションペダルの値を読み取る(0から1023の範囲)
int pedalValue = analogRead(expressionPedalPin);
// 読み取った値をMIDIコントロールチェンジの範囲にマッピング(0から127の範囲)
byte midiValue = map(pedalValue, 0, 1023, 0, 127);
// MIDIコントロールチェンジメッセージの送信
sendControlChange(11, midiValue, midiChannel); // コントロールチェンジ11はエクスプレッションペダル用
// 少し待つ(デバウンス用)
delay(10);
}
void sendControlChange(byte control, byte value, byte channel) {
uint8_t controlChangePacket[3] = {static_cast<uint8_t>(0xB0 | (channel - 1)), control, value};
usb_midi.write(controlChangePacket, 3);
}
保存したら左上のチェックマークをクリックします。これでコンパイルが始まります。コンパイルがうまくいくと画像のような文が出力されます。
いよいよ書き込み
コンパイルの成功を確認できたらこのプログラムを実際に書き込んでみましょう。まずはRP2040-ZeroをUSB-Cケーブルで接続します。Bootボタンを押しながらResetボタンを押しましょう。これでRP2040-Zeroは書き込みモードになります。
このモードになればエクスプローラーでRPI-RP2を確認できると思います。
ツール→シリアルポート→UF2 Boardを選択します。UF2 Boardがない場合はArduino IDEを再起動しましょう。UF2 Boardを選択したら左上のチェックマークの隣にある矢印ボタンを押します。これで書き込みが始まります。
デフォルト設定であれば書き込みボタンを押した際にもコンパイルがされます。赤文字でいろいろ書かれていてちょっとびっくりしてしまいますがこれで書き込みもうまくいってるようです。
マイコンの書き込みの過程で何かしらのエラーが出るかもしれません。詰まったらChatGPTに聞きましょう。今回の環境構築もプログラムもChatGPTに考えてもらいました。便利な時代になったものです。
書き込みが出来たらマイコンはPCから外しても問題ありません。残る作業は配線と筐体の加工です。
配線作業
配線の確認
ここでエクスプレッションペダルの仕組みを軽く説明します。これが理解できれば今回使用するペダル以外でも応用できると思います。
エクスプレッションペダルの端子にはTRSケーブルと呼ばれるものが使われています。このケーブルの中には3つの細い導線が入っていてそれぞれが独立しています。TRSケーブルを見てみると金属部分が3ヶ所に分かれていますね。ここから1本ずつ導線が出ているわけです。このTRS端子は先端から順番にTip、Ring、Sleeveと名前が付いています。
そしてエクスプレッションペダルの場合、TRSの役目は決まっていて、
Tip → 可変電圧
Ring → 5V
Sleeve → GND
となっています。RingからSleeveへ電圧を印加し、エクスプレッションペダルの踏み込み量でTipに流れる電圧が変化します。マイコンはこの電圧を読み取り、それに応じたMIDI信号を出力できるようにしています。
つまりエクスプレッションペダル内の配線がTip、Ring、Sleeveのどれに接続されているのかが分かればいいわけです。
改造前のM-Audio EX-Pの写真を撮っていないので他サイトから画像をお借りします。
画像を見てみると赤・黒・白の線がありますね。M-Audio EX-Pの場合、赤がTip、黒がRing、白がSleeveです。つまりこういうことです。
赤 Tip → 可変電圧
黒 Ring → 5V
白 Sleeve → GND
他のエクスプレッションペダルの場合、配線の色は違うと思います。その場合には配線を切り、TRS端子にテスターを当ててどの線がどの接点に対応しているか確認してください。(テスターがない人へ→切ったTRSケーブルは再利用することも無いでしょうし乾電池を2つ直列で繋いでショートするかどうかで確認してもいいでしょう。)
マイコンへ配線
導線の対応が分かったらいよいよマイコンに配線します。その前にピンヘッダをマイコンにはんだ付けしてしまいます。その際にはピンヘッダとユニバーサル基板とマイコンを合体させてはんだ付けすることをお勧めします。こうすることで「マイコンが基板に刺さらない!」というトラブルを回避できます。(画像参照)
ピンヘッダをはんだ付けしたらエクスプレッションペダルの導線をマイコンに配線します。
まずはTRSケーブルから出ている赤・黒・白のケーブルを全て切り、被膜を剥いておいてください。白の線は短いので10cmほど導線を足して延長しておきましょう。そうしたら以下のように配線します。
Tip(赤) → ADC0
Ring(黒) → 3V3
Sleeve(白) → GND
ADC0は左側の下から3番目です。場所を間違えないように注意してください。ここには電圧を読み取る機能があります(Analog-to-Digital Converter)。
RP2040-Zeroで読み取れる電圧の最大値は3.3Vです。左側の1番上に5V出力もありますが、今回これを使ってもADC0で正しい電圧を読み取ることができません。注意してください。
配線するとこんな感じです。私は白い導線を持っておらず、白の導線を赤い導線で延長しています。分かりずらくてすみません。一番上の赤い導線は白い導線を延長したものです。
動作確認
ここで一旦動作確認してみましょう。RP2040-ZeroをPCに接続します。この時点でPCはRP2040-ZeroをMIDIデバイスとして認識してくれるはずです。
スタートボタンを右クリックしデバイスマネージャーを起動します。サウンド、ビデオ、およびゲームコントローラーのところにRP2040 Zeroがあります。マイコンがMIDIデバイスとして認識されていることを確認できます。
M-Audio EX-Pの裏側にはM-AUDIO⇔OTHERと書かれたスイッチがありますが、これはM-AUDIO側に設定してください。それではMIDI入力に対応したソフトウェアでMIDIデバイスを確認してみます。
私が使用しているGuitar Rig 7ではRP2040 Zeroという名前で認識されました。MIDIデバイスの登録方法などはソフトによって異なります。各自調べてください。
ソフトウェアにペダルを登録したら動かしてみましょう。ペダルの動きに追従して設定したパラメータが0-100で動けば成功です。0-100で動かせない場合M-Audio EX-Pの裏側にあるスイッチがM-Audio側になっているか、側面のポテンショメータが0になっているかを確認してください(側面のポテンショメータはパラメータの最小値を決めるようです)。
無事に動作するのを確認できたらマイコンを筐体の中に設置します。なんだかんだこれが一番大変でした。
マイコンの設置
マイコンを設置し、USB-C端子に筐体の外からアクセスできるようにします。方法は様々でしょうが私はこのようにしてみました。
マイコン等を外すとこうなっています。元々あった剛性を高めるための壁の一部を切除し、ねじ穴とUSB-Cを取り付けるための穴を開け、配線を通すための溝を掘っています(左側)。
ユニバーサル基板にマイコンをはんだ付けしています。筐体の加工にはカッター・キリ・棒ヤスリ・紙やすりを使用しました。プラスチックは柔らかいので時間をかければ簡単な道具だけで十分加工できます。ミニルーターやハンドドリルがあれば簡単に加工できると思います。
ユニバーサル基板はカッターで溝を掘り、キットカットを割る要領で小さく加工しました。ねじ穴は既に空いている穴を丸い棒ヤスリで広げました。
基板を固定する際、高さを稼ぐためのスペーサーを取り付けましょう。私はM3のナットや座金で代用しています。
USB-C端子の周りはこのようなザグリ加工が必要です。これがないと奥までケーブルが刺さらないためUSB-Cの接続が不安定になる場合があります。結構大変でした。カッターと棒ヤスリで地道に削ります。筐体の加工が終わったら組み立てて完成です。お疲れ様でした。
作業量を減らすための提案
Amazonで探すとこのようなUSB-Cマウントが売られています。価格も高くはありませんし、作業量が著しく減ると思いますので使ってもいいかもしれませんね。これを使用すればマイコンの設置の自由度も上がります。マイコンの固定さえできていればねじ止めする必要もありませんし、大幅に作業量を減らせるかと思います
マイコンを外付けしてMIDIコンバーターを製作する場合
マイコンを筐体内に設置しないのであれば更に楽になります。#112BXと呼ばれるTRSジャックがAmazonで500円程度で売られています。これとRP2040を配線し、100均等で売られているプラスチックの箱に詰めればMIDIコンバーターを作ることもできます。金属筐体のエクスプレッションペダルを加工するのは非常に難しいと思います。その場合はこの方法で妥協したほうが良いかと思います。
TRSジャックはスイッチ付きのものを買いましょう。スイッチ付きはジャックにTRS端子が刺さっているかを検知することができます。エクスプレッションペダルが接続されていない状態では回路は非常に不安定で、小刻みに変動するMIDI信号が出力されることになります。そこでTRSケーブルが挿入されていない場合はTipをGNDに接続するようにします。
これが#112BXの仕様です。TIP SPRINGとRING SPRINGがそれぞれTRS端子のTipとRingに接続されます。TRSケーブルが刺さっていない場合はRING SPRINGとRING SHUNTが、 TIP SPRINGとTIP SHUNTが接続されます。
ここでエクスプレッションペダルのTRS端子の使用を再確認しましょう。
Tip → 可変電圧
Ring → 5V
Sleeve → GND
こうなっていますのでプログラムを書き込んだRP2040-Zeroとの接続はこうなります。
TIP SPRING→ADC0
TIP SHUNT→SLEEVE TERMINAL
RING SPRING→3V3
SLEEVE TERMINAL→ GND
これでMIDIコンバーターを作成することができるはずです。
※RP2040-ZeroをUSB-Cで接続した後、ペダルを抜き差しするとペダルが認識されない問題に直面しています。解決方法が分かっていません。ペダルをPCに接続する場合は一度MIDIコンバーターをPCから外し、先にペダルとコンバーターを接続してからPCに接続してください。
まとめ
今回はPCとエクスプレッションペダルを安価に接続する方法について解説していきました。できる限りおま環が起こらないように考えてみましたがうまく作成できるでしょうか…?需要が少ないのかこの方法について詳しく解説する記事が見つからなかったため書いてみました。
筐体加工の説明の雑さから察せるとは思いますが私はゴリゴリの機械系の人間でマイコンを利用した電子工作は初めてでした。プログラムも理解できていない所が数か所あります。それでも大きなトラブルなく十分満足できるものが作れました。やはりChatGPTは偉大です。
この記事が誰かの参考になれば幸いです。それでは良い宅録ライフを。