VGM演奏プログラム群をArduino C++からmicroPythonに移植させてみた 2月 03, 2026 リンクを取得 Facebook × Pinterest メール 他のアプリ 以前から細々と取り組んでいる、レトロ音源ICをRaspberry pi picoで制御しVGM演奏させるプログラムとシールド群ですが、処理速度などを考慮して、ということと参考にさせていただいていたアプリがArduino版だったということもあり、中の人も制御のためのコードはMicroPythonではなく、Arduino C++で作っていました。 ですが、Arduionoでどうしても煩わしさを感じてしまうのが、MCUに格納されているプログラムのコードが直接は見られないということです。 自分がレトロPCとかポケコンとかを普段いじっているせいなのかもしれませんが、本体に入っているコードを直接見れないというのが、どうもストレスがあるんですよね。 自分の管理もズボラなので、ちょっと間が空いたときにアプリをメンテしようと思ったときに、はて?どこにあるどのコードがMCUに入っているプログラムなのか?が良くわからなくなてしまうんですね。あと、相性の問題なのか何なのか、手元にあるpicoはArduinoIDEからだとどうもシリアルポートをうまく認識しなくて、シリアルモニタが表示できないことが多いので、デバッグもしにくくてさらにストレスがあります。 MicroPythonであれば、Thonnyなどを使えばMCUの中のコードを直接見ることもできますし、なんならMCUにプログラムをい入れない状態でもPC上にあるPythonコードを実行させることもできるので、動作確認などもしやすく、便利です。 ということで、処理速度に一抹の不安はありつつ、Arduinoのコード群をMicroPythonに移植してみました。というか、主な作業はAIにやらせたので、「移植させてみた」というのが正確でしょうか。 最近、GoogleのAIであるGeminiが性能が良いと評判らしく、さらにそれに対応したIDEとしてAntigravityというのがあるらしいということをネット情報で見つけ、今ならプレビュー版で無料で使えるらしいというのもあって、Antigravityにやらせてみました。 結果としては、まだ現時点では手元にあるすべての音源チップには対応させてはいないのですが、SN76489、YMZ285、YM2149あたりは音を鳴らせるところまでいけました。 YMZ285とYM2149は、まだ音程が微妙だったり音割れっぽいものがあったり、かなり不安定ではあるのですが、どうにか音は出せています。 やはり、C++と比較すると、micoPythonはインタプリタ実行ということで処理速度が若干落ちますので、信号を送る際のウェイトなどは、YMZ285やYM2149では入れると逆に認識しなかったりもして、ウェイト処理を完全に省くと鳴ったり、などがありました。 気長に他のチップにも対応させて、ある程度まとまったらGitHubにでも上げようと思います。 コメント
コメント
コメントを投稿