投稿

1月, 2023の投稿を表示しています

ArduinoでFM音源 (YMF825)

イメージ
以前から気になっていた,ウダデンシの YAMAHA YMF825搭載FM音源ボード を試してみました。Arduino Unoと一緒に秋月電子で購入。 「ヤマハ製YMF825使用FM音源LSIモジュール」にピンヘッダをつけたもの ボードにはピンがついていないので,ピンヘッダを一緒に買ってはんだ付け。斜めについてしまったのはご愛嬌。ただ,年のせいか,細かいところが見えにくくて,はんだ付けがちょっと厳しい。😓 Arduinoのプログラムは,以前M5 Stackをちょっと試した程度だけど,まあ,ほぼC言語なので,プログラム言語自体はあまり問題なく書けます。ただ,Arduino Unoは,SRAM 2KBとFlashメモリ32KBなので,メモリのことをちゃんと意識しないといけない。(あふれます)特に,プログラム内で変数などで使用するのがSRAM 2KBの方なので,大きいデータをメモリ中におくのは難しい。 YMF825についての資料は,もともとヤマハからGitHubで公開されていたようなのだけど,どうも閉鎖されてしまったよう。ただ,もともとMITライセンスで公開されていたもののようで,有志の方が公開されています。 https://github.com/hasebems/YMF825_sample ここにサンプルプログラムがあるので,これを参考に。 あとは,いろいろな方が解説を書かれているのを参考に。その中でも,下記の2点がありがたかったです。 YMF825アンオフィシャルガイド YMF825(SD-1)ざっくりまとめ シリーズ 最初は,Arduino上で動くMMLパーサ A tiny MML parser  を使ってみたのですが,複数チャンネルをやろうとすると難しそうだったので諦めて, PCでMMLで演奏データを書く それをrubyのプログラムでコンパイルして,独自形式のバイト列にパックしてCのヘッダファイルとして書き出す バイト列はFlashに配置できるようPROGMEMとして宣言する MIDIのSMFを使えという話もあるけど,結局バイト列にしないといけないので,独自形式 それをArduinoのプログラムから#includeする プログラムからは,loop()内で1パケット(8バイト)ずつ読み込んで,タイミングを合わせて再生する。 という方法をとってみました。また,せっかく