This Sound Driver Runs on the ESP32’s ULP Coprocessor から発見。画像もここから転載。
ESP32はパワフルで便利ですが、音を鳴らしながら何かする、ということを実現するためには、貴重なCPUコアの1つを消費してしまうことになります。ESP32はCPUが2コアあるものの、なるべくそれらを音の再生のために使いたくないでしょう。
そこでこの記事ではESP32についている省電力プロセッサ通称ULPを使って音を鳴らす方法を紹介しています。ULPはEspressif独自の機械語でプログラミングをする必要があるため、活用している事例はとても珍しいです。
ソースコードは公開されているので、気になる人は手元で実行してみると良いでしょう。
追記: 少しソースコードを読んでみたところ、メインCPUでオーディオのストリームをバッファに詰め込みULPがそれを読み込んで音を鳴らすようです。タイマ割り込みに比べてメインCPUの処理時間が少なくなる、ということのようです。ソースコードのこのへんを見ると、泥臭くULPの機械語を書いているのがわかります。これはデバッグが大変そう・・
実際にM5Stackで動作を確認した方もいるようです↓
おお…メインの処理とは別で音を鳴らすサンプル…参考になる…https://t.co/I9xQCVGCuJ pic.twitter.com/MLNvRwVZ1X
— らびやん (@lovyan03) 2019年4月13日
← 前の記事 - 効率の良いLiPo充電モジュール「PGCPSU」
次の記事 - 3Dプリンタでゼロから作る「スピーカー」 →