pschatzmann / arduino-audio-tools

Arduino Audio Tools (a powerful Audio library not only for Arduino)
GNU General Public License v3.0
1.49k stars 233 forks source link

I2s recorder . . . file recorded distortion . #688

Closed aqildad-create closed 1 year ago

aqildad-create commented 1 year ago

Mic - INMP441 .. file is recorded success , but when I play the recorded file in audacity it is very distorted .

Below test successfully work . I2s -plotter I2s web server

Attached here is recorded file and its image from audacity . .

include

include "Arduino.h"

include "AudioTools.h"

include "SD.h"

define PIN_AUDIO_KIT_SD_CARD_CS 5

define PIN_AUDIO_KIT_SD_CARD_MISO 19

define PIN_AUDIO_KIT_SD_CARD_MOSI 23

define PIN_AUDIO_KIT_SD_CARD_CLK 18

const uint16_t sample_rate = 44100;

bool recording = false; unsigned long runtime;

I2SStream in; // Access I2S as a stream //AnalogAudioStream in; File audioFile; //empty audio file object

// Arduino Setup void setup(void) {
Serial.begin(115200);

AudioLogger::instance().begin(Serial, AudioLogger::Debug); // AudioLogger set to Debug mode

Serial.println("SERIAL STARTED"); SPI.begin(PIN_AUDIO_KIT_SD_CARD_CLK, PIN_AUDIO_KIT_SD_CARD_MISO, PIN_AUDIO_KIT_SD_CARD_MOSI, PIN_AUDIO_KIT_SD_CARD_CS);

if (!SD.begin(PIN_AUDIO_KIT_SD_CARD_CS)) {

Serial.println("SPI FAILED");

}

// configure I2S stream Serial.println("starting I2S...");

EncodedAudioStream out(&audioFile, new WAVEncoder()); // Access audioFile as a stream StreamCopy copier(out, in); // copies sound from i2s to audio file stream

// RX automatically uses port 0 with pin GPIO34 // auto cfgRx = in.defaultConfig(RX_MODE); // cfgRx.sample_rate = sample_rate; // in.begin(cfgRx);

Serial.println("starting I2S..."); auto config = in.defaultConfig(RX_MODE); config.i2s_format = I2S_STD_FORMAT; // if quality is bad change to I2S_LSB_FORMAT https://github.com/pschatzmann/arduino-audio-tools/issues/23 config.sample_rate = 44100; config.channels = 1; config.bits_per_sample = 32; in.begin(config); Serial.println("I2S started");

// Configure out stream auto cfg_out = out.defaultConfig(); cfg_out.bits_per_sample = 32; cfg_out.channels = 1; cfg_out.sample_rate = 44100; out.begin(cfg_out); //copier.setCheckAvailableForWrite(false);

SD.remove("/AudioFile01.wav"); Serial.println("FILE open"); File file = SD.open("/AudioFile01.wav" , FILE_READ); size_t fileSize = file.size(); Serial.println("FILE SZE:"+String(fileSize)); file.close(); audioFile = SD.open("/AudioFile01.wav", FILE_WRITE); // Open a new file on the SD card for writing to copier.begin(out, in); // Configure copier input and output Serial.println("RECORDING"); while(runtime<30000) // loop end after 30 sec
{runtime = millis(); copier.copy(); // Copy sound from I2S to the audio file } audioFile.close(); // Closes the file after 5 seconds Serial.println("FILE CLOSED"); audioFile = SD.open("/AudioFile01.wav" , FILE_READ); size_t fileSize1 = audioFile.size(); Serial.println("FILE SZE:"+String(fileSize1)); audioFile.close(); Serial.println("FILE END"); delay(5000); } void loop() {

}

13:18:46.711 -> SERIAL STARTED 13:18:46.711 -> starting I2S... 13:18:46.711 -> [D] AudioEncoded.h : 229 - audio_tools::EncodedAudioPrint::EncodedAudioPrint(Print, audio_tools::AudioEncoder) 13:18:46.757 -> [D] AudioCopy.h : 26 - audio_tools::StreamCopyT::StreamCopyT(Print&, audio_tools::AudioStream&, int) [with T = unsigned char] 13:18:46.757 -> [I] AudioCopy.h : 79 - buffer_size=-1515870811 13:18:46.757 -> [D] AudioCopy.h : 333 - audio_tools::StreamCopy::StreamCopy(Print&, audio_tools::AudioStream&, int) 13:18:46.757 -> starting I2S... 13:18:46.757 -> [D] I2SStream.h : 53 - bool audio_tools::I2SStream::begin(audio_tools::I2SConfig) 13:18:46.757 -> [D] I2SESP32.h : 44 - bool audio_tools::I2SDriverESP32::begin(audio_tools::I2SConfig) 13:18:46.757 -> [D] I2SESP32.h : 140 - bool audio_tools::I2SDriverESP32::begin(audio_tools::I2SConfig, int, int) 13:18:46.804 -> [I] I2SConfig.h : 104 - rx/tx mode: RX_MODE 13:18:46.804 -> [I] I2SConfig.h : 105 - port_no: 0 13:18:46.804 -> [I] I2SConfig.h : 106 - is_master: Master 13:18:46.804 -> [I] I2SConfig.h : 107 - sample rate: 44100 13:18:46.804 -> [I] I2SConfig.h : 108 - bits per sample: 32 13:18:46.804 -> [I] I2SConfig.h : 109 - number of channels: 1 13:18:46.804 -> [I] I2SConfig.h : 110 - i2s_format: I2S_STD_FORMAT 13:18:46.804 -> [I] I2SConfig.h : 112 - auto_clear:0 13:18:46.804 -> [I] I2SConfig.h : 119 - buffer_count:10 13:18:46.804 -> [I] I2SConfig.h : 120 - buffer_size:512 13:18:46.804 -> [I] I2SConfig.h : 124 - pin_bck: 14 13:18:46.804 -> [I] I2SConfig.h : 126 - pin_ws: 15 13:18:46.851 -> [I] I2SConfig.h : 128 - pin_data: 32 13:18:46.851 -> [D] I2SESP32.h : 172 - i2s_driver_install 13:18:46.851 -> [D] I2SESP32.h : 189 - i2s_set_pin 13:18:46.851 -> [D] I2SESP32.h : 200 - i2s_zero_dma_buffer 13:18:46.851 -> [D] I2SESP32.h : 204 - begin - started 13:18:46.851 -> I2S started 13:18:46.851 -> [D] AudioEncoded.h : 310 - bool audio_tools::EncodedAudioPrint::begin(audio_tools::AudioBaseInfo) 13:18:46.851 -> [I] CodecWAV.h : 452 - sample_rate: 44100 13:18:46.851 -> [I] CodecWAV.h : 453 - channels: 1 13:18:46.851 -> [I] CodecWAV.h : 457 - is_streamed! because length is 2147418112 13:18:46.899 -> FILE open 13:18:46.899 -> FILE SZE:0 13:18:46.947 -> [I] AudioCopy.h : 79 - buffer_size=1024 13:18:46.947 -> RECORDING 13:18:46.947 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:46.947 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:46.947 -> [I] CodecWAV.h : 501 - Writing Header 13:18:46.947 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:46.994 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:46.994 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:46.994 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:46.994 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:46.994 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.040 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.040 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.040 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.040 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.086 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.086 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.086 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.086 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.086 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.132 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.132 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.132 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.132 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.132 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.132 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.179 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.179 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.179 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.179 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.224 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.224 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.224 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.224 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.224 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.272 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.272 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.272 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.272 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.272 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.319 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.319 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.319 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.319 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.319 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.364 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.364 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.364 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.364 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.364 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.410 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.410 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.410 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.410 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.458 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.458 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.458 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.458 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.458 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.504 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.504 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.504 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.504 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.504 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.551 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.551 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.551 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.551 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.551 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.597 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.597 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.597 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.597 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.597 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.644 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.644 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.644 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.644 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.644 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.691 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.691 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.691 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.691 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.691 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.738 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.738 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.738 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.738 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.784 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.784 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.784 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.784 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.784 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.830 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.830 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.830 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.830 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.830 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.876 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.876 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.876 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.876 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.876 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.924 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.924 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.924 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.924 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.924 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.971 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.971 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:47.971 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:47.971 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:47.971 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.018 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:48.018 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:48.018 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.018 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:48.018 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:48.065 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.065 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:48.065 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:48.065 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.112 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:48.112 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:48.112 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.112 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:48.112 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:48.158 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.158 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:48.158 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:48.158 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.158 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:18:48.158 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:18:48.205 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:18:48.205 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops . . . .

13:19:16.587 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:19:16.587 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:19:16.587 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:19:16.634 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:19:16.634 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:19:16.634 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:19:16.634 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:19:16.682 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:19:16.682 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:19:16.682 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:19:16.682 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:19:16.682 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:19:16.682 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:19:16.729 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:19:16.729 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 13:19:16.729 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 13:19:16.729 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 13:19:16.776 -> FILE CLOSED AudioFile01.zip

13:19:16.776 -> FILE SZE:1060908 13:19:16.776 -> FILE END

image

pschatzmann commented 1 year ago

Did you set the logger to warning ?

aqildad-create commented 1 year ago

No , but if you see the recorded wav the distortion is not at that time when silent , the time when i speak that is very distorted , https://user-images.githubusercontent.com/65456998/225852589-dc5345e3-f51d-4e2a-837d-09f2463f1845.png

pschatzmann commented 1 year ago

You talk nonsense: silence can't be distorted!

aqildad-create commented 1 year ago

yes sir , after logger to warning its working now . thank you

aqildad-create commented 1 year ago

For Mp3 recordng change EncodedAudioStream out(&audioFile, new WAVEncoder()); to EncodedAudioStream out(&audioFile, new MP3DecoderHelix()); and add #include "AudioCodecs/CodecMP3Helix.h"

but file size is not recorded and i got file size 0 ..

include

include "Arduino.h"

include "AudioTools.h"

include "SD.h"

include "AudioCodecs/CodecMP3Helix.h"

define PIN_AUDIO_KIT_SD_CARD_CS 5

define PIN_AUDIO_KIT_SD_CARD_MISO 19

define PIN_AUDIO_KIT_SD_CARD_MOSI 23

define PIN_AUDIO_KIT_SD_CARD_CLK 18

const uint16_t sample_rate = 44100;

bool recording = false; unsigned long runtime;

I2SStream in; // Access I2S as a stream //AnalogAudioStream in; File audioFile; //empty audio file object

// Arduino Setup void setup(void) {
Serial.begin(115200);

AudioLogger::instance().begin(Serial, AudioLogger::Debug); // AudioLogger set to Debug mode //AudioLogger::instance().begin(Serial, AudioLogger::Warning);

Serial.println("SERIAL STARTED"); SPI.begin(PIN_AUDIO_KIT_SD_CARD_CLK, PIN_AUDIO_KIT_SD_CARD_MISO, PIN_AUDIO_KIT_SD_CARD_MOSI, PIN_AUDIO_KIT_SD_CARD_CS);

if (!SD.begin(PIN_AUDIO_KIT_SD_CARD_CS)) {

Serial.println("SPI FAILED");

}

// configure I2S stream Serial.println("starting I2S...");

//EncodedAudioStream out(&audioFile, new WAVEncoder()); // Access audioFile as a stream EncodedAudioStream out(&audioFile, new MP3DecoderHelix()); // Access audioFile as a stream StreamCopy copier(out, in); // copies sound from i2s to audio file stream

// RX automatically uses port 0 with pin GPIO34 // auto cfgRx = in.defaultConfig(RX_MODE); // cfgRx.sample_rate = sample_rate; // in.begin(cfgRx);

Serial.println("starting I2S..."); auto config = in.defaultConfig(RX_MODE); config.i2s_format = I2S_STD_FORMAT; // if quality is bad change to I2S_LSB_FORMAT https://github.com/pschatzmann/arduino-audio-tools/issues/23 config.sample_rate = 44100; config.channels = 1; config.bits_per_sample = 32; in.begin(config); Serial.println("I2S started");

// Configure out stream auto cfg_out = out.defaultConfig(); cfg_out.bits_per_sample = 32; cfg_out.channels = 1; cfg_out.sample_rate = 44100; out.begin(cfg_out); copier.setCheckAvailableForWrite(false);

SD.remove("/AudioFile01.mp3"); Serial.println("FILE open"); File file = SD.open("/AudioFile01.mp3" , FILE_READ); size_t fileSize = file.size(); Serial.println("FILE SZE:"+String(fileSize)); file.close();

audioFile = SD.open("/AudioFile01.mp3", FILE_WRITE);  // Open a new file on the SD card for writing to
copier.begin(out, in);  // Configure copier input and output
Serial.println("RECORDING");

while(runtime<30000) // loop end after 30 sec
{runtime = millis(); copier.copy(); // Copy sound from I2S to the audio file }

audioFile.close(); // Closes the file after 5 seconds Serial.println("FILE CLOSED"); audioFile = SD.open("/AudioFile01.mp3" , FILE_READ); size_t fileSize1 = audioFile.size(); Serial.println("FILE SZE:"+String(fileSize1)); audioFile.close(); Serial.println("FILE END"); delay(5000);

} void loop() {

}

22:17:36.584 -> SERIAL STARTED 22:17:36.584 -> starting I2S... 22:17:36.584 -> [D] CodecMP3Helix.h : 24 - audio_tools::MP3DecoderHelix::MP3DecoderHelix() 22:17:36.584 -> [D] AudioEncoded.h : 199 - audio_tools::EncodedAudioPrint::EncodedAudioPrint(Print, audio_tools::AudioDecoder) 22:17:36.584 -> [D] AudioEncoded.h : 444 - void audio_tools::EncodedAudioStream::setStream(Stream) 22:17:36.584 -> [D] AudioCopy.h : 26 - audio_tools::StreamCopyT::StreamCopyT(Print&, audio_tools::AudioStream&, int) [with T = unsigned char] 22:17:36.630 -> [I] AudioCopy.h : 79 - buffer_size=-1515870811 22:17:36.630 -> [D] AudioCopy.h : 333 - audio_tools::StreamCopy::StreamCopy(Print&, audio_tools::AudioStream&, int) 22:17:36.630 -> starting I2S... 22:17:36.630 -> [D] I2SStream.h : 53 - bool audio_tools::I2SStream::begin(audio_tools::I2SConfig) 22:17:36.630 -> [D] I2SESP32.h : 44 - bool audio_tools::I2SDriverESP32::begin(audio_tools::I2SConfig) 22:17:36.630 -> [D] I2SESP32.h : 140 - bool audio_tools::I2SDriverESP32::begin(audio_tools::I2SConfig, int, int) 22:17:36.630 -> [I] I2SConfig.h : 104 - rx/tx mode: RX_MODE 22:17:36.630 -> [I] I2SConfig.h : 105 - port_no: 0 22:17:36.677 -> [I] I2SConfig.h : 106 - is_master: Master 22:17:36.677 -> [I] I2SConfig.h : 107 - sample rate: 44100 22:17:36.677 -> [I] I2SConfig.h : 108 - bits per sample: 32 22:17:36.677 -> [I] I2SConfig.h : 109 - number of channels: 1 22:17:36.677 -> [I] I2SConfig.h : 110 - i2s_format: I2S_STD_FORMAT 22:17:36.677 -> [I] I2SConfig.h : 112 - auto_clear:0 22:17:36.677 -> [I] I2SConfig.h : 119 - buffer_count:10 22:17:36.677 -> [I] I2SConfig.h : 120 - buffer_size:512 22:17:36.677 -> [I] I2SConfig.h : 124 - pin_bck: 14 22:17:36.677 -> [I] I2SConfig.h : 126 - pin_ws: 15 22:17:36.677 -> [I] I2SConfig.h : 128 - pin_data: 32 22:17:36.677 -> [D] I2SESP32.h : 172 - i2s_driver_install 22:17:36.677 -> [D] I2SESP32.h : 189 - i2s_set_pin 22:17:36.724 -> [D] I2SESP32.h : 200 - i2s_zero_dma_buffer 22:17:36.724 -> [D] I2SESP32.h : 204 - begin - started 22:17:36.724 -> I2S started 22:17:36.724 -> [D] AudioEncoded.h : 310 - bool audio_tools::EncodedAudioPrint::begin(audio_tools::AudioBaseInfo) 22:17:36.724 -> [D] CodecMP3Helix.h : 79 - virtual void audio_tools::MP3DecoderHelix::begin() 22:17:36.724 -> [D] MetaDataFilter.h : 30 - void audio_tools::MetaDataFilter::begin() [with Decoder = libhelix::MP3DecoderHelix] 22:17:36.770 -> FILE open 22:17:36.770 -> FILE SZE:0 22:17:36.816 -> [I] AudioCopy.h : 79 - buffer_size=1024 22:17:36.816 -> RECORDING 22:17:36.816 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:36.816 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:36.816 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:36.863 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:36.863 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:36.863 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:36.863 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:36.910 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:36.910 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:36.910 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:36.910 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:37.282 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:37.282 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:37.282 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:37.282 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:37.378 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:37.378 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:37.378 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:37.421 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:37.700 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:37.700 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:37.700 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:37.700 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:37.888 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:37.934 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:37.934 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:37.934 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:38.167 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:38.167 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:38.167 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:38.167 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void*, size_t): 1024 22:17:38.353 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:38.353 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:38.400 -> [D] AudioEncoded.h : 336 . . .

22:17:59.281 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:59.281 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:59.281 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:59.281 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:17:59.830 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:17:59.830 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:17:59.877 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:17:59.877 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:00.574 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:00.574 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:00.574 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:00.574 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:00.855 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:00.855 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:00.855 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:00.855 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:01.139 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:01.139 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:01.139 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:01.139 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:01.511 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:01.511 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:01.557 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:01.557 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:02.137 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:02.137 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:02.137 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:02.137 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:02.863 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:02.863 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:02.863 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:02.863 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:03.004 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:03.004 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:03.004 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:03.004 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:03.562 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:03.562 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:03.562 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:03.562 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:03.979 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:03.979 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:03.979 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:03.979 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:04.166 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:04.166 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:04.215 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:04.215 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:04.351 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:04.351 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:04.351 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:04.397 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:04.865 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:04.865 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:04.865 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:04.865 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:05.695 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:05.695 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:05.695 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:05.695 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:06.577 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:06.577 -> [D] AudioCopy.h : 92 - size_t audio_tools::StreamCopyT::copy() [with T = unsigned char; size_t = unsigned int] 22:18:06.577 -> [D] AudioEncoded.h : 336 - virtual size_t audio_tools::EncodedAudioPrint::write(const uint8_t, size_t): 1024 22:18:06.577 -> [D] CodecMP3Helix.h : 108 - virtual size_t audio_tools::MP3DecoderHelix::write(const void, size_t): 1024 22:18:07.411 -> [I] AudioCopy.h : 136 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops 22:18:07.411 -> FILE CLOSED 22:18:07.411 -> FILE SZE:0 22:18:07.411 -> FILE END

ksaye commented 1 year ago

@aqildad-create or @pschatzmann , do you have a working sample code?

I tried the following:

#include "Arduino.h"
#include "AudioTools.h"
#include "SD.h"

#define MicPIN_WS GPIO_NUM_32
#define MicPIN_SCK GPIO_NUM_33
#define MicPIN_SD GPIO_NUM_35

bool recording = false;
unsigned long runtime;

I2SStream in; // Access I2S as a stream
File audioFile; //empty audio file object

// Arduino Setup
void setup(void) {
  Serial.begin(115200);

  //AudioLogger::instance().begin(Serial, AudioLogger::Debug); // AudioLogger set to Debug mode

  Serial.println("SERIAL STARTED");

  if (!SD.begin()) {

  Serial.println("SPI FAILED");
  }

  // configure I2S stream
  Serial.println("starting I2S...");

  EncodedAudioStream out(&audioFile, new WAVEncoder()); // Access audioFile as a stream
  StreamCopy copier(out, in); // copies sound from i2s to audio file stream

  Serial.println("starting I2S...");
  auto config = in.defaultConfig(RX_MODE);
  config.i2s_format = I2S_STD_FORMAT; // if quality is bad change to I2S_LSB_FORMAT #23
  config.sample_rate = 16000;
  config.channels = 2;
  config.bits_per_sample = 16;
  config.pin_ws = MicPIN_WS;       //WS
  config.pin_bck = MicPIN_SCK;     //SCK
  config.pin_data = MicPIN_SD;     //SD
  in.begin(config);
  Serial.println("I2S started");

  // Configure out stream
  auto cfg_out = out.defaultConfig();
  cfg_out.bits_per_sample = 16;
  cfg_out.channels = 2;
  cfg_out.sample_rate = 16000;
  out.begin(cfg_out);
  copier.setCheckAvailableForWrite(false);

  SD.remove("/AudioFile01.wav");
  audioFile = SD.open("/AudioFile01.wav", FILE_WRITE); // Open a new file on the SD card for writing to
  copier.begin(out, in); // Configure copier input and output
  Serial.println("RECORDING");

  while(runtime<30000) // loop end after 30 sec
    {
      runtime = millis();
      copier.copy(); // Copy sound from I2S to the audio file
    }

  audioFile.close(); // Closes the file after 5 seconds
  Serial.println("FILE CLOSED");

  Serial.println("FILE END");
  delay(30000);
  Serial.println("End of delay");
}

void loop()
{
  delay(1000);
}

Which produced the following wav file, which is clearly not 30 seconds:

AudioFile01 (1).zip

The properties of the file are: image

I am using an ESP32, a SD Card reader and a simple INMP441 Mems Microphone.

pschatzmann commented 1 year ago

Your logic around the runtime is completely wrong: you will need to record the start time and add the timeout to it to determine the end time!

ksaye commented 1 year ago

Your logic around the runtime is completely wrong: you will need to record the start time and add the timeout to it to determine the end time!

is there a sample showing the timeout that I could follow?

pschatzmann commented 1 year ago

This has nothing to do with my library! Google is your friend: e.g. https://forum.arduino.cc/t/run-the-loop-for-a-specified-amount-of-time/45928/3