7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

M5Stackでwav,mp3サウンド再生

Last updated at Posted at 2021-03-02

概要

M5Stackで音声ファイルwav,mp3を再生する手順です。

環境

M1 Macbook Air
M5Stack Gray
microSD 16GB(16GB以下がいいと思う)

※M1 MacでM5Stack使う準備は、下記参照。
https://qiita.com/hextomino/items/69f9804038041618b243

サンプルの実行(wavファイルの再生)

ファイル>スケッチ例>M5Stack>Advanced>Audio>PlayWAVFromSDToDACを試す。
コンパイルとするとAudioFileSourceSD.h No such file or directoryと言われ、失敗する。

サンプルソースの冒頭に、追加すべきライブラリについて記載があるので、従う。
https://github.com/earlephilhower/ESP8266Audio
から、「↓code」を押して、download zipを選択。
Arduino>スケッチ>ライブラリをインクルード>ZIP形式〜で、このzipファイルを指定し、インストール。
(このままで、コンパイルはできるが、音が出ない)
同様に、
https://github.com/Gianbacchio/ESP8266_Spiram
から、「↓code」を押して、download zipを選択し、インストール。

このライブラリは、そこそこ容量を食う。
M1ではROSETTA2変換のため、初回ビルド時間が結構かかる。
最大1310720バイトのフラッシュメモリのうち、スケッチが893514バイト(68%)を使っています。
と表示されます。ちょっと大きすぎな気がする。

▼再生ファイルの準備
記載の
https://ccrma.stanford.edu/~jos/pasp/Sound_Examples.html
の上から5つ目のPianoからpno-cs.wav(16bit,48kHz,20sec)をDL
カードリーダを使ってmicroSDにpno-cs.wavファイルをコピーする。

他の試したいwavファイルもコピーしておき、聞き比べるといい。ファイル名は控えておいたほうが便利。

サンプルコード

付属のままです。
噂の通り、最初と最後に、ブチっとノイズがのり、ザーとノイズがのります。

PlayWAVFromSDToDAC.ino
# pragma mark - Depend ESP8266Audio and ESP8266_Spiram libraries
/* 
cd ~/Arduino/libraries
git clone https://github.com/earlephilhower/ESP8266Audio
git clone https://github.com/Gianbacchio/ESP8266_Spiram

Use the "Tools->ESP32 Sketch Data Upload" menu to write the MP3 to SPIFFS
Then upload the sketch normally.  
https://github.com/me-no-dev/arduino-esp32fs-plugin
*/

# include <M5Stack.h>
# include <WiFi.h>
# include "AudioFileSourceSD.h"
# include "AudioGeneratorWAV.h"
# include "AudioOutputI2S.h"


AudioGeneratorWAV *wav;
AudioFileSourceSD *file;
AudioOutputI2S *out;

void setup()
{
  M5.begin();
  M5.Power.begin();
  WiFi.mode(WIFI_OFF); 
  delay(500);
  
  M5.Lcd.setTextFont(2);
  M5.Lcd.printf("Sample WAV playback begins...\n");
  Serial.printf("Sample WAV playback begins...\n");
  
  // pno_cs from https://ccrma.stanford.edu/~jos/pasp/Sound_Examples.html
  file = new AudioFileSourceSD("/pno-cs.wav");
  out = new AudioOutputI2S(0, 1); // Output to builtInDAC
  out->SetOutputModeMono(true);
  wav = new AudioGeneratorWAV();
  wav->begin(file, out);
}

void loop()
{
  if (wav->isRunning()) {
    if (!wav->loop()) wav->stop();
  } else {
    Serial.printf("WAV done\n");
    delay(1000);
  }
}

サンプルの実行(mp3ファイルの再生)

ファイル>スケッチ例>M5Stack>Advanced>Audio>PlayMP3FromSDToDACを試す。
同様にmp3ファイルを用意する。

サンプルコード

付属のままです。
相変わらず、ブチっとノイズがのり、ザーとノイズがのります。

PlayMP3FromSDToDAC.ino
# pragma mark - Depend ESP8266Audio and ESP8266_Spiram libraries
/* 
cd ~/Arduino/libraries
git clone https://github.com/earlephilhower/ESP8266Audio
git clone https://github.com/Gianbacchio/ESP8266_Spiram
*/


# include <M5Stack.h>
# include <WiFi.h>
# include "AudioFileSourceSD.h"
# include "AudioFileSourceID3.h"
# include "AudioGeneratorMP3.h"
# include "AudioOutputI2S.h"


AudioGeneratorMP3 *mp3;
AudioFileSourceSD *file;
AudioOutputI2S *out;
AudioFileSourceID3 *id3;

void setup()
{
  M5.begin();
  M5.Power.begin();
  WiFi.mode(WIFI_OFF); 
  delay(500);
  
  M5.Lcd.setTextFont(2);
  M5.Lcd.printf("Sample MP3 playback begins...\n");
  Serial.printf("Sample MP3 playback begins...\n");

  // pno_cs from https://ccrma.stanford.edu/~jos/pasp/Sound_Examples.html
  file = new AudioFileSourceSD("/pno-cs.mp3");
  id3 = new AudioFileSourceID3(file);
  out = new AudioOutputI2S(0, 1); // Output to builtInDAC
  out->SetOutputModeMono(true);
  mp3 = new AudioGeneratorMP3();
  mp3->begin(id3, out);
}

void loop()
{
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } else {
    Serial.printf("MP3 done\n");
    delay(1000);
  }
}
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?