M5StickC + Speaker Hat で音声や音楽を再生しようと思ったら 意外と情報が見つからなかったので再生方法をメモしておきます。

音声データの変換

まずは WAV や MP3 など再生したい音声データを 【Arduino】WAVまたはMP3ファイルを再生する - おもちゃラボ に書かれている方法で以下の形式へ変換します。

  • モノラル
  • サンプリング周波数8000Hz
  • Unsigned 8-bit PCM
  • ヘッダなし

配列化

その後C言語の配列に変換する必要がありますが、 Windows 環境では xxd コマンドがないため バイナリファイルをC言語のデータ配列に変換する:放課後マイコンクラブ:SSブログ の「PROGMEM作蔵さん」を使用して変換しました。

スケッチへ貼り付けて書き込み

配列ができたら以下のスケッチの SOUND_DATA 部分に貼り付け、M5StickC へ書き込みます。 Aボタン(正面の「M5」ボタン)を押すと音声データが再生されます。

playMusic 関数は公式の サンプルスケッチ のものですが、 そのままでは音声が正常に再生されなかったため ledcWriteTone から ledcWrite へ変更しています。 (公式のサンプルスケッチが間違ってるとは思わなかったのでここでハマった。)

今回は短い音声の再生だったためスケッチにそのまま配列として書きましたが、 音声データ部分だけで500行を超えましたし、 配列への変換も面倒なのでファイルから読み込むようにしたいですね。 SPIFFS を使えば実現できそう。

参考サイト