ワイヤレス・エクスプレッション・ペダルHAT for M5StickC

未分類

DAWでワウ・ペダルを物理的なデバイスでコントロールしたくて作った電子工作。 M5StickCというマイコンを使用した、ワイヤレスなMIDIコントローラーです。 M5Stack Innovation Contest に向けて作成したプロジェクトの記録です。

Hacksterに投稿した記事はこれ。
Wireless Expression Pedal HAT for M5StickC
以下は投稿内容の日本語版です。

個人的に「樹脂粘土を使ってHATを作る」というのが一番のポイントなんですが、あまり訴求できなかった気もします。あっちもこっちも推したいというのがだめなのかも。

Story

DAWでギターエフェクトプラグインのワウ(wah)をリアルタイムで操作したいと思ったことはありませんか? 多くのギタリストは、そのためだけに高価なMIDIキーボードや専用のフットコントローラーを用意する必要があります。

もし、お気に入りのエクスプレッション・ペダルを直接PCやスマートフォンに接続できたら、もっと手軽にDAWを楽しめるはずです。

このプロジェクトは、その願いを叶えるために生まれました。

エクスプレッション・ペダルからの信号を読み取り、Bluetooth MIDIに変換するデバイスを、M5StickC用のHATとして設計しました。これにより、わずかなコストで、あなたのペダルをDAWコントローラーとして活用できるようになります。

ユニークな点

M5StickCをBluetooth MIDIコントローラーにするプロジェクトや、マイコンでペダルの傾きを検出するプロジェクトは、コミュニティに多数存在します。しかし、このプロジェクトのユニークな点は、100均で買える樹脂粘土を使ってHATを自作したことにあります。今回使用したのはダイソーで100円で購入した製品です。

3Dプリンタを持っていなくても、そして、市販のProto HATが手に入らない場合でも、この方法を使えばすぐに自分だけのHATを作ることができます。これは、初心者でも手軽にM5StickCの拡張デバイスを作成できる、実用的かつ安価な解決策です。

制作上の注意点

配線したコネクタをポリマー粘土で覆う際には、事前にコネクタを絶縁してください。絶縁しないと、意図しない値が検出される可能性があります。絶縁には、ビニールテープのような手軽な素材で十分です。

ペダルとM5StickCの配線は以下のとおりです。

  • Tip: 信号線 → G25 または G36
  • Ring: 電源 → 3.3V
  • Sleeve: GND → GND
材料

使用した素材: 樹脂粘土(ダイソーで購入)、TRSフォーンジャック、3芯コード、2.54mmピッチのピンヘッダー、M5StickC(M5stickC Plusでも可)。

プログラムの工夫

一般的なエクスプレッション・ペダルは、ポテンショメーターの特性から、最小値と最大値が0から4095のフルレンジにならないことがよくあります(0から4095をMIDIの0から127にマッピングします)。そこで、このプロジェクトにはキャリブレーションモードを設け、ペダルごとの特性に合わせられるようにしました。

Bボタンを押すと数秒間キャリブレーションモードに入ります。その間にペダルを上下に動かすことで、最小値と最大値を自動的に検出し、フルレンジで使えるようになります。ESP32の特性から完全な精度は保証できませんが、ペダルのおおまかな動きを捉えるには十分です。

ぜひ、このアイデアをベースに、あなた独自の工夫を加えてみてください。

応募完了

以上がHackster.ioの記事の日本語版。最初に日本語で書いた文章をGooogle Geminiに添削してもらい英訳もしてもらいました。便利ですね、AIって。

8月18日にHackster.ioに投稿、応募フォームからコンテストに申請。20日に応募が完了したとメールが来ました。このメールはHackster.ioからじゃなくて、M5Stackの担当者(?)からの個人名で届きました。

応募完了後もプログラムのブラッシュアップを続けてて、そのへんはあとで書きます。

プログラムは、GitHubで公開しています。

GitHub - linclip/M5StickC_EXPRESSIONPEDAL_MIDI
Contribute to linclip/M5StickC_EXPRESSIONPEDAL_MIDI development by creating an account on GitHub.

最後に、プロジェクトの概要や仕様もまとめておきます。以下の内容は、プログラミングの時に手伝ってもらったClaudeに作ってもらったものです。

プロジェクトの概要

プログラムの目的

  • M5StickCを使用したワイヤレス(Bluetooth MIDI)エクスプレッションペダルコントローラーの実現
  • 楽器用エクスプレッションペダルの信号を読み取り、リアルタイムでMIDI CC信号として送信

ハードウェア構成

  • マイコン: M5StickC (ESP32ベース) ※プログラムはM5StickC Plusでも同様に動きます。
  • 通信方式: Bluetooth MIDI (NimBLEライブラリ使用)
  • 入力: アナログ信号 (G36ピン) – エクスプレッションペダル接続
  • 出力: MIDI CC#1 (モジュレーションホイール)、MIDIチャンネル1

主要機能

1. MIDI制御機能

  • エクスプレッションペダルのアナログ値 (0-4095) をMIDI CC値 (0-127) に変換
  • ノイズフィルタリング機能 (閾値: 5)
  • 100Hz更新レート (10ms間隔)
  • ボタンAでのノートオン/オフ機能 (C4, Note 60)

2. ペダル校正機能

  • ボタンBによる手動校正開始
  • 5秒間の校正期間中にペダルの最小・最大値を自動検出
  • 校正値の不揮発性メモリ保存 (ESP32 Preferences)
  • 校正中の進捗表示とリアルタイム値更新

3. バッテリー監視機能

  • 測定方式: 非同期測定 (MIDI処理を妨げない設計)
  • 更新間隔: 1分間隔
  • 測定精度: 3回平均による精度向上
  • 電圧範囲: 3.3V-4.1V (mV単位で処理)
  • 表示方式: アイコン + パーセンテージ + 実際の電圧値
  • 警告機能: 20%未満で赤、40%未満で黄色、15%未満で点滅

4. ユーザーインターフェース

  • 液晶明度: 調整可能 (デフォルト: 64/255で節電)
  • 接続状態表示: Connected時は水色背景、Waiting時は黒背景
  • リアルタイム値表示: ADC値、MIDI CC値、バーグラフ表示
  • デバッグ情報: 電圧値、M5ライブラリ値の併記

5. 電力管理

  • 液晶明度調整による節電機能
  • 非同期処理によるCPU効率化
  • バッテリー残量の正確な監視とアラート

技術仕様

  • ADC設定: 12bit解像度、3.9V範囲 (11dB減衰)
  • BLEライブラリ: NimBLE-Arduino使用
  • 更新性能: リアルタイム性を重視したdelay()フリー設計
  • データ保存: 校正値の永続化対応

このプログラムは、プロの音楽制作・演奏環境で使用できる高精度かつ実用的なワイヤレスMIDIコントローラーを実現しています。

コメント

タイトルとURLをコピーしました