m5stack-avatar で色々試してみた~audio編~

工作

前回に続いて、 m5stack-avatar で遊んでみました。今度は、内部メモリに音声データを保存して、それに合わせて口が動くというスケッチ例のaudioも試してみました。スケッチに書いてあるように色々インクルードしてコンパイルしようとしたものの、またしてもコンパイルエラー祭りにwwなんとか動かせるまでなかなか苦労しました。

アバター

まず準備としてESP8266Audio、ESP8266_Spiramをインクルードします。そして次に、m5stackのSPIFFSにデータを転送できるようにする必要があります。arduino-esp32fs-pluginのページのInstallation内の「releases page.」というリンクが張ってある所へ移動して、ESP32FSの.zipファイルをダウンロードします。そしてzipファイルを解凍後、中にある「ESP32FS」フォルダーを/Arduino/tools/のディレクトリに移動させると、Installation内で指示された/Arduino/tools/ESP32FS/tool/esp32fs.jarというディレクトリにファイルが収まることになります。これでIDEを再起動すると、「ツール」のところに「esp32 sketch data upload」というファイル転送メニューが現れます。データの転送はaudioスケッチを開いた状態で、m5stackをつないでそのまま「esp32 sketch data upload」を実行するだけでオッケーです。

しかし、このままではコンパイルすることができませんでした。連鎖的に色々なエラーが出ますが、私の場合、一番問題なのは「levelIdx」が定義されてない、「getLevel」が定義されてないの二つのエラーでした。ちなみに~.hが複数ありますみたいなエラーは、メインのエラーが修正されれば出て来なくなりますので、基本的に放置で大丈夫です。

まずは「levelIdx」ですが、これは33行目の「int levelsIdx = 0;」を「int levelIdx = 0;」に変えちゃいました(素人判断ですw)。

二つ目の「getLevel」エラーが深刻で、色々探したらrobo8080/M5Stack_WebRadio_Avatarのところで紹介されているように、ESP8266Audioライブラリに入っているAudioOutputI2S.hとAudioOutputI2S.cppに変更が必要だということが分かりました。ただrobo8080様のページとAudioOutputI2Sの中身が少し違う部分もありましたので、自分で変更した部分をのせておきます。

まずはAudioOutputI2S.hに1か所。

AudioOutputI2S.h

次にAudioOutputI2S.cppに3か所。

AudioOutputI2S.cppその1
AudioOutputI2S.cppその2、その3

これでようやくコンパイル出来るようになりました!!

なかなか良いんじゃないでしょうかwしかし話には聞いてましたけど、やっぱりノイズが大きいですね。歌に合わせてってのは難しいのかもしれないですね~、ノイズ的にw

工作室

いいね! (3 いいね!)

読み込み中...

コメント

タイトルとURLをコピーしました