前回に続いて、 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.cppに3か所。


これでようやくコンパイル出来るようになりました!!
なかなか良いんじゃないでしょうかwしかし話には聞いてましたけど、やっぱりノイズが大きいですね。歌に合わせてってのは難しいのかもしれないですね~、ノイズ的にw
>工作室へ
コメント