Gotanda Onpa Giken

雑記

blog

Raspberry Pi PicoでMIDIを読む

手軽なマイコンであるRaspberry Pi Pico WでMIDI入力を読む実験。

Date:2026/07/23

マイクロコントローラRaspberry Pi Pico WでMIDI入力を読む実験をしてみました。これ単体では特に役に立ちませんが、将来的にはエフェクターに仕込んでMIDI対応にしたり、MIDI対応のプログラマブルスイッチャーに発展させる第一歩になります。


使用したもの

  • Raspberry Pi Pico W(無印のPicoでも可)
  • フォトカプラ H11L1M
  • セラミックコンデンサ 0.1uF
  • 抵抗 2.2kΩ, 220Ω
  • シリコンダイオード 1N4148
  • 5ピンDIN端子

回路

回路図はこちらです。

Pico WにMIDI INを追加した回路図

MIDIケーブルからの信号をフォトカプラに入力し、フォトカプラからの出力をRaspberry Pi PicoのGPIO1に繋ぎます。電源はUSBからの供給なので省略しています。他の部品の役割は、

  • 220Ω フォトカプラの内部LED用電流制限
  • 1N4148 フォトカプラのLEDを逆電圧から保護
  • セラミックコンデンサ 電源デカップリング
  • 2.2kΩ プルアップ抵抗

です。フォトカプラはエフェクターではコンプに使われることが多いですが、MIDI入力ではグラウンドループ防止のために機器同士を絶縁するために使われています。

この回路を組むときの注意点はDIN端子の4番と5番が逆になりやすいことです。私も逆に接続してしまって悩みました。2番端子はMIDIケーブルのシールドにつながりますが、GNDには送信側のみで接続するため今回は未接続で大丈夫です。(高周波ノイズ対策などで受信側でもGNDに落としたい場合は、0.1uF程度のコンデンサを通して接続するそうです)

Raspberry Pi Pico用MIDI入力をブレッドボードに組んだもの。
ブレッドボードに組んだもの。

コード

Pi Picoに書き込むプログラムはこちらです。AIに生成してもらいました。UARTをMIDI用に設定し、入力があったらそれをprintするというシンプルなものです。あくまで受信できているかの確認用なので、変化の早いCCを送ると表示が間に合わなくなったりします。


from machine import UART, Pin
from time import sleep_ms


uart = UART(
    0,
    baudrate=31250,
    bits=8,
    parity=None,
    stop=1,
    rx=Pin(1),
    rxbuf=256,
)

print("UART0 RX test")
print("RX pin: GP1")
print("Waiting for MIDI data...")

while True:
    if uart.any():
        data = uart.read()

        if data:
            hex_data = " ".join(f"{byte:02X}" for byte in data)
            print("RX:", hex_data)

    sleep_ms(1)

書き込み・テスト

ThonnyでPico Wにコードを書き込み、他の機器からMIDIを送ってみます。今回はBOSSのFC50を使います。以前ハードオフで2000円くらいで手に入れました。DAWのコントロールに使えるかなと思って買ったのですが、送れるMIDIメッセージがPCのみ(外部スイッチ・ペダルはCCも可)だったので仕舞い込んでいたものです。

コードとPicoからターミナルに送られてきたMIDIメッセージ

ちゃんと送られてきたメッセージが表示されました。C0 00というのはProgram Change, MIDIチャンネル0, 値0という意味です。

FC50のEXP端子にペダルを接続して、今度はCCを送ってみます。

MIDI CCのメッセージ

一行に複数回メッセージが入ってしまっていたりしますが、メッセージ自体は受け取れました。こちらは先頭のBがControl Changeの意味で次の数字がチャンネル、07はCCナンバー、最後の二桁が値です。


Raspberry Pi Pico WとフォトカプラH11L1Mを使ってMIDI入力を読んでみました。これを発展させていけばMIDIコントロールのスイッチャーや、MIDIプリセット機能付きのエフェクターに繋がりそうです。

五反田音波技研所長R