14歳のブラジル人が作ったESP32向け350音シンセ「ESP32Synth」

ESP32で本格的なポリフォニックシンセサイザーを動かすのは難しい。標準の音声ライブラリは数音重ねただけで音切れし、内蔵DACのノイズも目立つ。GitHubで公開された「ESP32Synth」は、14歳のブラジル人開発者Danilo Gabriel氏がbare-metalで書き上げたMITライセンスのシンセエンジンで、デフォルト80音、最大350音同時発音までを謳う。

対応ハードウェアはデュアルコア240MHzのESP32とESP32-S3。実機検証はESP32 DevKit V1(ESP32-D0WD-V3)とWaveshareのESP32-S3 Zeroで行われた。出力は48kHz・32bitのI2Sで、外付けDACにはPCM5102AやUDA1334Aを推奨する。標準設定の80音は「Core 0をWi-FiやLVGLに開放しても余裕でこなせるスイートスポット」と位置づけられ、140音はRAM安定限界、350音を超えるとFreeRTOSのタスクが餓死してウォッチドッグが落ちると、開発者自身がREADMEで明言する。

性能の核は徹底した最適化だ。オーディオパスから float と double、除算演算子、複雑な分岐をすべて排除し、16.16固定小数点と32bit位相アキュムレータで音程を扱う。レンダーループはCore 1にピン留めしたFreeRTOSタスクで、重要な関数は IRAM_ATTR で内部SRAMに固定してフラッシュアクセスを避ける。エンベロープやLFOは48kHzではなく100Hzの「コントロールレート」で更新し、計算を分離する設計だ。setCustomDSP フックを通せば、リバーブやディレイのコードをミキサーバッファに直接注入できる。

開発者は5歳から電子工作とプログラミングに親しみ、13歳で初めてESP32-S3 Zeroを手にしたと明かしている。ArduinoのAsmSynthから着想を得つつ、コードはGoogleのGemini 3.1 Proを補助に使いながら書いたが、最終的な動作確認は自分で行ったとし、Reddit上のコードレビュー指摘にもひとつずつ応答している。

関連情報

Dark tech banner featuring circuit patterns with the text 'ESP32Synth' and 'danilogcrf2-oss' in white.

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!

最新記事

YouTube / PodCast

【PR】読んで役立つ注目記事

目次