synthio
CircuitPythonの標準で組み込まれている音源ライブラリ
リファレンス
synthio – Support for multi-channel audio synthesis — Adafruit CircuitPython 9.0.0-alpha.1 documentation
チュートリアル
GitHub - todbot/circuitpython-synthio-tricks: tips, tricks, and examples of using CircuitPython synthio
Mixerを利用する話は重要
I2Sの利用例
PCM5102が例として挙げられているが、MAX98357でも同じように動いたinajob.icon
inajob.icon
楽器とか作曲装置を作るために利用したいので、予めTrackを指定して再生する仕組みより、リアルタイムに打鍵されたキーに連動して音がなる機能を中心に遊んでみる
Play a chord
GitHub - todbot/circuitpython-synthio-tricks: tips, tricks, and examples of using CircuitPython synthio
音名を引数にpressとreleaseを呼ぶことで音が鳴らせる、簡単!
ただしノイズが乗る
Using AudioMixer for adjustable volume & fewer glitches
このノイズはバッファオーバーランによるもの
Mixerを間に入れてバッファリングすることでノイズを低減できる
当然バッファリングすると再生が少し遅れる
ここまでの所感
楽器のようにリアルタイムに音を鳴らす用途では、少しパフォーマンスに難がある
オルゴールのように決められた音楽を奏でるなら、まだやりようが有りそう
CircuitPythonがタイマー割り込みをサポートしていないので(おそらく)、画面更新と平行して音を鳴らす処理を動かすのが難しい
思い直し、意外と楽器としても使えそう
画面更新も部分更新にすれば両立できそう