Psgino
Psgino(PSG用のMMLデコーダー)というArduinoライブラリを作成しました。
MMLの文法は下記のリンク先にまとめています。MSX BASICのPlay文をベースに、ノイズ発生やソフトウェアエンベロープ、LFOなどのコマンドを追加しています。
Psgino/MML.md at main · nyannkov/Psgino · GitHub
また、小規模なゲーム作成で使用できるようにBGMとSEを同時に鳴らす機能や無限ループ処理なども対応いたしました。
Psinoでの演奏例をYouTubeにアップロードしました。音楽のみだと少し寂しかったので、昨年度のMakers Faire Tokyo 2023で衝動買いしたビッグクラッピーナノ?を使用して、めざまし時計をつくりました。アラーム音(桃太郎)とビッグクラッピーナノ?の拍手のタイミングを Psginoで演奏・制御しています。
動画で使用したソースコードは下記のリポジトリに置きました。 実装した機能は、RTCの時刻表示とハードコーディングした時刻にアラームを発生させる動作くらいですので、 改造・カスタマイズをしてご利用いただければと思います。 音色を変えて誕生会やクリスマスで使用してもよいかもしれません。 今年三歳になったうちの子はクラッピーと一緒に楽しそうに拍手をしていました。
桃太郎の歌詞の表示ではTamakichiさんのArduino用美咲フォントライブラリを使用させていただきました。
また、動画で使用したPSGはICではなくdigital-sound-antiquesさんのPSGエミュレータ(emu2149)を使用させていただきました。
動画のPSG音声はArduino Uno R4 WiFiのPWMピンから出力しています。秋月電子のYMZ294が販売終了してしまったため、 最近はこのエミュレーターを使用しています。PSG演算分だけ処理時間はかかりますが、 LEDマトリックスを使用したゲームであれば問題ない気がしています。Arduinoとの配線もGNDと音声出力ピンのみですので大変便利です。