LLM任せでマイコンを使ったシンセサイザーを作る

以下は、コンパイルが通るまでの過程で、実行して期待通りの動作になるかは、別の問題です。
LLMに対する最初の問いかけ:マイコン、小型LCD、USB 接続のMIDIキーボーを使ってアナログシンセサイザーを作るには?

LLMの回答#1

LLMの回答コード#1

実行結果#1

実行結果をLLMへ報告して得た回答

修正版回答のコード

MIDI接続の問題解決
Gemini の回答

コンパイル時の undefined reference(リンクエラー)が発生したことで、鍵盤が全く反応しなかった本当の理由が完全に判明しました。

エラーの真因は、新しいRP2040コア(5.5.0)に同梱されているAdafruit TinyUSBライブラリの初期設定において、「MIDIホスト機能(CFG_TUH_MIDI)」自体がデフォルトで無効化され、コンパイル対象から完全に除外されていたためです。 前回、ポーリング方式で tuh_midi_stream_read 関数を無理やり直接呼び出したことで、「実体が存在しない」という事実がリンクエラーとして表面化しました(コールバック方式の際は、使用されないコードとしてコンパイラに自動消去されていたため、エラーが隠蔽されていました)。

根本的に解決するには、Arduino側のコア設定ファイルを1箇所だけ書き換える必要があります。スケッチ内の #define ではすでにコンパイル済みのライブラリに反映されないため、直接ファイルを編集します。

手順1:TinyUSBライブラリの設定変更

テキストエディタ(メモ帳など)で以下のファイルを開いてください。 C:\Users\mars\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\5.5.0\libraries\Adafruit_TinyUSB_Arduino\src\arduino\ports\rp2040\tusb_config_rp2040.h

138行目付近に #define CFG_TUH_DEVICE_MAX ... のような記述があります。その直下(またはファイル内の適当な空き行)に、以下の3行を追記して上書き保存してください。

C

#ifndef CFG_TUH_MIDI #define CFG_TUH_MIDI 1 #endif

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です