Arduino Audio Tools (Music Player, Music Recorder supporting I2S, Microphones, DAC, ADC, A2DP, Url)

Arduino Audio Tools

Some basic header-only C++ classes that can be used for Audio Processing provided as Arduino Library:

  • a simple I2S class (to read and write to the internal I2S)
  • a simple ADC class (to read analog data with the help of I2S)
  • a simple PWM class (to write audio data with the help of PWM)
  • Additional Stream implementations: MemoryStream, URLStream, I2SStream, A2DPStream, PrintStream,
  • Converters
  • Musical Notes (with frequencies of notes)
  • SineWaveGenerator (to generate a sine tone) and Mozzi for more complex scenario
  • NBuffer (Multi buffer for writing and reading of (audio) data)
  • TimerAlarmRepeating (e.g. for sampling audio data using exact times) [ESP32 only]
  • A Wav Encoder and Decoder
  • AudioOutputWithCallback class to provide callback integration e.g. with ESP8266Audio

This functionality provides the glue which makes different audio processing components and libraries work together. We also provide plenty of examples that demonstrate how to implement the different scenarios. The design philosophy is based on the Arduino conventions: we use the begin() and end() methods to start and stop the processing and we propagate the use of Streams. We all know the Arduino Streams: We usually use them to write out print messages and sometimes we use them to read the output from Serial devices. The same thing applies to “Audio Streams”: You can read audio data from “Audio Sources” and you write them to “Audio Sinks”.

As “Audio Sources” we will have e.g.:

As “Audio Sinks” we will have e.g:

Here is an simple example which streams a file from the Flash Memory and writes it to I2S:

copier(i2s, music); // copies sound into i2s void setup(){ Serial.begin(115200); I2SConfig config = i2s.defaultConfig(TX_MODE); config.sample_rate = sample_rate; config.channels = channels; config.bits_per_sample = 16; i2s.begin(config); } void loop(){ if (!copier.copy2()){ i2s.end(); stop(); } } ">
#include "AudioTools.h"
#include "StarWars30.h"

using namespace audio_tools;  

uint8_t channels = 2;
uint16_t sample_rate = 22050;

MemoryStream music(StarWars30_raw, StarWars30_raw_len);
I2SStream i2s;  // Output to I2S
StreamCopyT copier(i2s, music); // copies sound into i2s

void setup(){
    Serial.begin(115200);

    I2SConfig config = i2s.defaultConfig(TX_MODE);
    config.sample_rate = sample_rate;
    config.channels = channels;
    config.bits_per_sample = 16;
    i2s.begin(config);
}

void loop(){
    if (!copier.copy2()){
      i2s.end();
      stop();
    }
}

A complete list of the supported Audio Stream classes and scenarios can be found in the Scenarios Document

Sound Output

  • I2SStream: The best quality can be achieved with the help of I2S and an external DAC. I2S is supporting 2 channels only.
  • AnalogAudioStream: Some processors are providing an analog output, this is usually an easy and good approach: The number of pins (and herewith output channels) however is usually very limited.
  • PWMAudioStream: The last possibility is to simulate an analog output with the help of PWM by using a frequency which is beyond the audible range of 20 KHz. This method is supported by all processor and usually supports a bigger number of output pins. In terms of audio quality this is usually the worst option.

Examples

The examples follow the following naming convention: "scenario type"-"source"-"destination". For the scenario types we might have base (using basic api functionality), stream for examples using Streams and test for the test cases.

For the source we currently have adc for analog input devices like analog microphones, i2s for digital input devices (e.g. digital microphones), file for SD files and a2dp for input from Bluetooth A2DP (e.g. from a Mobile Phone).

For the destination we use dac for analog output (e.g. to an amplifier), i2s for digital output devices (e.g. an external DAC), file for SD files and a2dp for output to Bluetooth A2DP (e.g. a Bluetooth Speaker).

Here is the list of examples:

Stream API

Here are a couple of simple test sketches to demo different output destinations:

And some more useful examples:

... these are just a few examples, but you can combine any Input Stream with any Output Stream as you like...

Basic API

Listening to the Result with a Webbrowser

I am also providing a simple webserver which can render the audio data as wav result. Here are some examples:

Logging

The application uses a built in logger (see AudioLogger.h and AudioConfig.h). You can e.g. deactivate the logging by changing USE_AUDIO_LOGGING to false in the AudioConfig.h:

#define USE_AUDIO_LOGGING false
#define LOG_LEVEL AudioLogger::Warning
#define LOG_STREAM Serial

Per default we use the log level warning and the logging output is going to Serial. You can also change this in your sketch by calling AudioLogger begin with the output stream and the log level e.g:

AudioLogger::instance().begin(Serial, AudioLogger::Debug);

Optional Libraries

Dependent on the example you might need to install some of the following libraries:

Installation

You can download the library as zip and call include Library -> zip library. Or you can git clone this project into the Arduino libraries folder e.g. with

cd  ~/Documents/Arduino/libraries
git clone pschatzmann/arduino-audio-tools.git

Documentation

Here is the generated Class documentation.

You also might find further information in one of my blogs

Project Status

This is currently work in progress:

Functionality Status
Analog input - ADC tested
I2S tested
Files (RAW, MP3...) tested
Streams tested
WAV encoding/deconding tested
AAC encoding/deconding open
int24_t tested
Comments
  • using FIR filter and volume control for a2dp_source

    using FIR filter and volume control for a2dp_source

    Hi again, I was wondering if using features such as FIR filter and controlling volume is available for a2dp_source mode? Is it possible to control the volume with the BT headset? I am using this example and it works fine. base-adc-a2dp can I add streams-audiokit-filter-audiokit.ino to previous code I mentioned ? I'm also wondering if it is possible to save data on sd card or no ? Thanks in advance!

  • Bugfix go to previousStream: avoid negative index position

    Bugfix go to previousStream: avoid negative index position

    Hello Mr. Schatzmann, thanks a lot for this amazing audio tools! When creating a small SD player, I keep getting trouble when the title jumps back at the first position. This error occurs: AudioSourceSdFat.h - Filename is null. After that, the player can no longer be used. This small change fixed the issue and everything works as it should.

  • stack collision/corruption when trying to read sample mp3 with URLStream

    stack collision/corruption when trying to read sample mp3 with URLStream

    So, while experimenting with the multioutput on the sdfat-ffti2s example (modified to play an UrlStream) i face a stack corruption / stack smashing protection which is not random as it occurs everytime (in loop). The file is this one, 1.61MB and the stack corruption occurs after about 5 or 6 seconds https://filesamples.com/samples/audio/mp3/sample3.mp3 In the code below i commented the FFT display since it is not useful to show the bug and it fills the debug output. What i notice is that after few second streamcopy::copy get messed up and it crashes right after that. StreamCopy::copy 1024 -> 4294967295 -> 0 bytes What could be the cause of this issue? The platform is ESP32S3 and it plays on an external DAC.

    #include "AudioTools.h"
    #include "AudioLibs/AudioSourceSD.h"
    #include "AudioCodecs/CodecMP3Helix.h"
    #include "AudioLibs/AudioRealFFT.h" // or AudioKissFFT or others
    const char *urls[] = {
      "https://filesamples.com/samples/audio/mp3/sample3.mp3",
      "https://ice6.somafm.com/groovesalad-128-mp3",
      "http://stream.srg-ssr.ch/m/rsj/mp3_128",
    };
    const char *startFilePath="/";
    const char* ext="mp3";
    const char *wifi = "SSID";
    const char *password = "PASS";
    //AudioSourceSD source(startFilePath, ext);
    URLStream urlStream(wifi, password);
    AudioSourceURL source(urlStream, urls, "audio/mp3");
    MultiOutput multi_output;
    MP3DecoderHelix decoder;
    AudioPlayer player(source, multi_output, decoder);
    I2SStream i2s; // output to i2s
    AudioRealFFT fft; // or AudioKissFFT or others
    
    #define MCK             17
    #define WS              18
    #define BCK             21
    #define DAT             4
    #define MUTE            3
    
    // display fft result
    void fftResult(AudioFFTBase &fft){
    //    int diff;
    //    auto result = fft.result();
    //    if (result.magnitude>100){
    //        Serial.print(result.frequency);
    //        Serial.print(" ");
    //        Serial.print(result.magnitude);  
    //        Serial.print(" => ");
    //        Serial.print(result.frequencyAsNote(diff));
    //        Serial.print( " diff: ");
    //        Serial.println(diff);
    //    }
    }
    
    void setup() {
      
      Serial.begin(115200);
      AudioLogger::instance().begin(Serial, AudioLogger::Info);
    
      // setup I2S
      auto cfg = i2s.defaultConfig(TX_MODE);
      cfg.pin_mck = MCK;
      cfg.pin_bck = BCK;
      cfg.pin_ws = WS;
      cfg.pin_data = DAT;    
      i2s.begin(cfg);
    
      // Setup FFT
      auto tcfg = fft.defaultConfig();
      tcfg.copyFrom(cfg);
      tcfg.length = 1024;
      tcfg.callback = &fftResult;
      fft.begin(tcfg);
    
      multi_output.add(fft);
      multi_output.add(i2s);
      printf("length %d\n",urlStream.httpRequest().getReceivedContentLength()); //reads 0 at this point
      player.begin();
      player.setVolume(0.3);
    }
    
    void loop() {
      player.copy();
    }
    
    [I] I2SConfig.h : 98 - rx/tx mode: TX_MODE
    [I] I2SConfig.h : 99 - port_no: 0
    [I] I2SConfig.h : 100 - is_master: Master
    [I] I2SConfig.h : 101 - sample rate: 44100
    [I] I2SConfig.h : 102 - bits per sample: 16
    [I] I2SConfig.h : 103 - number of channels: 2
    [I] I2SConfig.h : 104 - i2s_format: I2S_STD_FORMAT
    [I] I2SConfig.h : 106 - auto_clear:1
    [I] I2SConfig.h : 113 - buffer_count:10
    [I] I2SConfig.h : 114 - buffer_size:512
    [I] I2SConfig.h : 118 - pin_bck: 21
    [I] I2SConfig.h : 119 - pin_ws: 18
    [I] I2SConfig.h : 120 - pin_data: 4
    [W] HttpRequest.h : 153 - no CONTENT_LENGTH found in reply
    length 0
    [I] AudioPlayer.h : 279 - setVolume(1.000000)
    [I] AudioStreams.h : 1113 - setVolume: 1.000000
    [I] AudioStreams.h : 1113 - setVolume: 1.000000
    [I] MetaDataID3.h : 544 - virtual void audio_tools::MetaDataID3::begin()
    [I] AudioSource.h : 172 - selectStream: 0/2 -> https://filesamples.com/samples/audio/mp3/sample3.mp3
    [I] URLStream.h : 73 - virtual bool audio_tools::URLStreamDefault::begin(const char*, const char*, MethodID, const char*, const char*): https://filesamples.com/samples/audio/mp3/sample3.mp3
    [I] Url.h : 73 - Url::parse
    [I] Url.h : 109 - url->https://filesamples.com/samples/audio/mp3/sample3.mp3
    [I] Url.h : 110 - host->filesamples.com
    [I] Url.h : 111 - protocol->https
    [I] Url.h : 112 - path->/samples/audio/mp3/sample3.mp3
    [I] Url.h : 113 - port->443
    .
    [I] URLStream.h : 247 - WiFiClientSecure
    [I] URLStream.h : 247 - WiFiClientSecure
    [I] HttpRequest.h : 193 - process connecting to host filesamples.com port 443
    [I] HttpRequest.h : 181 - connected 1 timeout 60000
    [I] HttpRequest.h : 204 - Free heap: 163196
    [I] HttpHeader.h : 358 - HttpRequestHeader::setValues - path: /samples/audio/mp3/sample3.mp3
    [I] HttpHeader.h : 255 - HttpHeader::write
    [I] HttpHeader.h : 367 - HttpRequestHeader::write1stLine
    [I] HttpHeader.h : 382 - -> GET /samples/audio/mp3/sample3.mp3 HTTP/1.1
    [I] HttpHeader.h : 192 -  -> Host: filesamples.com 
    [I] HttpHeader.h : 192 -  -> Connection: close 
    [I] HttpHeader.h : 192 -  -> Accept: audio/mp3 
    [I] HttpHeader.h : 298 -  -> <CR LF> 
    [I] HttpRequest.h : 227 - Request written ... waiting for reply
    [I] HttpHeader.h : 225 - HttpHeader::read
    [W] HttpHeader.h : 232 - Waiting for data...
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> HTTP/1.1 200 OK
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Date: Thu, 15 Dec 2022 21:31:59 GMT
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Content-Type: audio/mpeg
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Transfer-Encoding: chunked
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Connection: close
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Cache-Control: public, max-age=2592000
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> display: staticcontent_sol
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> etag: W/"5def04f1-19d6dd-gzip"
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> last-modified: Thu, 01 Dec 2022 00:14:50 GMT
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> response: 200
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> vary: Accept-Encoding,User-Agent,Origin
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> x-ezoic-cdn: Hit ds;ds;5036ac3a7393bb4f2defc33dddfed0df;2-176527-2;b684dc05-1033-441b-54fd-8e10e46faf63
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> x-middleton-display: staticcontent_sol
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> x-middleton-response: 200
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> x-origin-cache-control: 
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> CF-Cache-Status: HIT
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Age: 8367
    [E] HttpLineReader.h : 73 - Line cut off: Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=GmSUJowMKRzRfNNH9STPbiNJB9ycV2A0Ho0yuzlryl5DggBzXFOaTbZO3%2B4oP73CC1xWPSepfQykhfZipXA70INaVIIwJmW9KB3fIr9LrmItSeGpHug2VgbxFxeXQT%2BQ89M%3D"}],"group":"cf-nel","m
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=GmSUJowMKRzRfNNH9STPbiNJB9ycV2A0Ho0yuzlryl5DggBzXFOaTbZO3%2B4oP73CC1xWPSepfQykhfZipXA70INaVIIwJmW9KB3fIr9LrmItSeGpHug2VgbxFxeXQT%2BQ89M%3D"}],"group":"cf
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Server: cloudflare
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> CF-RAY: 77a24a101d500db2-MRS
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 
    [W] HttpRequest.h : 153 - no CONTENT_LENGTH found in reply
    [I] URLStream.h : 88 - size: 0
    [I] AudioCopy.h : 68 - buffer_size=1024
    [I] AudioPlayer.h : 279 - setVolume(0.300000)
    [I] AudioStreams.h : 1113 - setVolume: 0.300000
    [I] AudioStreams.h : 1113 - setVolume: 0.300000
    [I] AudioPlayer.h : 193 - sample_rate: 44100
    [I] AudioPlayer.h : 194 - bits_per_sample: 16
    [I] AudioPlayer.h : 195 - channels: 2
    [I] AudioStreams.h : 1113 - setVolume: 0.300000
    [I] AudioStreams.h : 1113 - setVolume: 0.300000
    [I] I2SStream.h : 65 - virtual void audio_tools::I2SStream::setAudioInfo(audio_tools::AudioBaseInfo)
    [I] AudioTypes.h : 55 - sample_rate: 44100
    [I] AudioTypes.h : 56 - channels: 2
    [I] AudioTypes.h : 57 - bits_per_sample: 16
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 374 -> 374 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 960 -> 960 -> 960 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 339 -> 339 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 345 -> 345 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 13 -> 13 -> 13 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 127 -> 127 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 91 -> 91 -> 91 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 127 -> 127 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 91 -> 91 -> 91 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 685 -> 685 -> 685 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 127 -> 127 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 93 -> 93 -> 93 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 127 -> 127 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 91 -> 91 -> 91 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 127 -> 127 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 133 -> 133 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 1024 -> 1024 -> 1024 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 514 -> 492 -> 492 bytes - in 1 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 22 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 23 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 24 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 25 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 26 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 27 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 28 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 29 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 30 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 31 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 32 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 33 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 34 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 35 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 36 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 37 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 38 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 39 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 40 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 41 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 42 -> 4294967295 -> 0 bytes - in 0 hops
    [I] AudioCopy.h : 133 - StreamCopy::copy 43 -> 4294967295 -> 0 bytes - in 0 hops
    [E] HttpLineReader.h : 73 - Line cut off: ⸮⸮Ѳm⸮⸮<⸮⸮q⸮⸮⸮쨔\⸮ mH⸮l⸮.1W⸮⸮>⸮ʔ?r7s|ݖS⸮ѷ⸮
    [I] HttpHeader.h : 424 - HttpReplyHeader::readExt
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Ѯ⸮⸮4⸮⸮Xr⸮⸮	⸮⸮=?⸮⸮⸮%⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> A⸮⸮`
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> J⸮⸮⸮b⸮#
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> "⸮ ⸮H=⸮)D⸮U⸮bQ⸮⸮#FA⸮O
    ⸮p⸮Xl6¿⸮⸮⸮7⸮q⸮⸮⸮ƍ⸮7⸮⸮⸮⸮⸮⸮ބ⸮k⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮۾⸮`2TL⸮@@⸮"R–⸮[email protected]⸮e⸮,⸮W⸮⸮ @⸮⸮d⸮5⸮⸮⸮⸮L⸮j,⸮J⸮⸮⸮Yj_?⸮⸮˳T⸮⸮⸮,⸮Uev\$⸮⸮⸮&⸮`a9⸮`⸮sTz⸮T⸮⸮⸮⸮4⸮z¦⸮G⸮"!)µ|C⸮⸮⸮⸮⸮C⸮⸮⸮ ,,⸮px4⸮⸮⸮7D,[⸮⸮⸮>⸮⸮=⸮⸮×⸮⸮⸮⸮$
    [E] HttpLineReader.h : 73 - Line cut off: ⸮N⸮1⸮i⸮⸮⸮⸮⸮⸮⸮8⸮?t⸮⸮Z⸮⸮j⸮_⸮⸮;⸮߷-⸮⸮⸮⸮⸮d⸮370[#H⸮R⸮4=⸮>
    ⸮⸮mlQ⸮i⸮- ⸮	8ހ#)U⸮(G⸮⸮>3ND%⸮++⸮!x⸮~|x⸮⸮⸮&⸮>'@⸮8⸮dz⸮+;⸮33⸮⸮⸮23⸮⸮6⸮fٴO⸮⸮⸮⸮⸮⸮⸮⸮umkhZBlH⸮⸮⸮⸮(-)⸮⸮⸮&⸮⸮Ր⸮'⸮⸮⸮ P⸮⸮a⸮⸮⸮⸮v⸮W⸮)⸮⸮⸮Dz⸮⸮ʡP16
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮N⸮1⸮i⸮⸮⸮⸮⸮⸮⸮8⸮?t⸮⸮Z⸮⸮j⸮_⸮⸮;⸮߷-⸮⸮⸮⸮⸮d⸮370[#H⸮R⸮4=⸮>
    ⸮⸮mlQ⸮i⸮- ⸮	8ހ#)U⸮(G⸮⸮>3ND%⸮++⸮!x⸮~|x⸮⸮⸮&⸮>'@⸮8⸮dz⸮+;⸮33⸮⸮⸮23⸮⸮6⸮fٴO⸮⸮⸮⸮⸮⸮⸮⸮umkhZBlH⸮⸮⸮⸮(-)⸮⸮⸮&⸮⸮Ր⸮'⸮⸮⸮ P⸮⸮a⸮⸮⸮⸮v⸮W⸮)⸮⸮⸮Dz⸮⸮ʡP16
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮w$⸮0⸮&⸮Y$F⸮⸮⸮⸮>⸮⸮8⸮ޚhQ⸮)wt⸮⸮`⸮ࣂ0⸮⸮⸮⸮UXea⸮⸮⸮=J|!8⸮⸮⸮L]⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 4⸮og⸮⸮pmy⸮
    x<<N⸮K⸮(s⸮⸮i0⸮t⸮⸮go⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> g⸮*⸮⸮⸮!,P⸮B⸮⸮O⸮⸮H⸮k⸮SV2⸮yw|_Zg܁⸮ئ⸮⸮⸮jS⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮⸮⸮⸮4hSs⸮⸮⸮⸮1⸮`⸮⸮⸮⸮⸮⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Z⸮hZti⸮⸮⸮J⸮⸮⸮⸮⸮⸮⸮#'⸮7F⸮⸮⸮	⸮J⸮⸮C^*Ϧ⸮⸮⸮{⸮Y}S⸮⸮C	+s⸮⸮>⸮nM!t⸮⸮8⸮⸮ǂ⸮⸮⸮⸮⸮⸮~=⸮⸮⸮⸮[V⸮⸮GW⸮2⸮⸮⸮⸮⸮0⸮⸮
    & 
    [E] HttpLineReader.h : 73 - Line cut off: ⸮⸮ݜ$⸮⸮⸮'⸮⸮⸮Ɖ⸮s=<⸮⸮]_⸮}7⸮Z⸮⸮⸮|⸮p
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮ݜ$⸮⸮⸮'⸮⸮⸮Ɖ⸮s=<⸮⸮]_⸮}7⸮Z⸮⸮⸮|⸮p
    [E] HttpLineReader.h : 73 - Line cut off: ⸮⸮*⸮⸮⸮⸮,⸮K⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮*⸮⸮⸮⸮,⸮K⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮L⸮8ߜe⸮_⸮2⸮,⸮e⸮⸮⸮⸮X⸮HxM:⸮⸮I⸮⸮ye(Z)@⸮JX(I"$K$⸮2c⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 0,⸮⸮⸮k뿥*⸮⸮⸮"D'⸮⸮⸮⸮X⸮}4⸮!⸮2⸮8](⸮ߖ[k5⸮⸮⸮⸮⸮⸮\Tt⸮'%>⸮o$⸮⸮zHޚ7⸮⸮⸮⸮⸮O-⸮⸮⸮⸮#⸮?ɕ⸮_ֳ0⸮gE⸮}⸮>⸮E⸮={⸮Q?⸮⸮A⸮Tȱ%	A⸮⸮'J⸮⸮:⸮T(p⸮⸮VE⸮⸮/⸮⸮ͬ.m
    ⸮3BZč⸮⸮r3⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮b⸮^⸮2⸮⸮丸xa⸮⸮⸮W⸮⸮Z⸮|߻⸮U*⸮
    [E] HttpLineReader.h : 73 - Line cut off: P⸮⸮⸮⸮⸮⸮⸮d⸮3N8YC/pb⸮⸮(<²⸮⸮gl⸮qAAm ⸮
    ⸮⸮x⸮2.e⸮Ņ⸮uCײ⸮,⸮⸮iI⸮R⸮	⸮⸮L⸮ye⸮⸮Y]p`⸮⸮⸮⸮pq⸮⸮⸮-⸮⸮_⸮/⸮⸮f⸮O⸮⸮^⸮S⸮*J⸮⸮Pf⸮⸮Q⸮⸮]⸮⸮⸮@3⸮⸮2⸮f⸮⸮V⸮⸮⸮?⸮⸮4⸮⸮⸮⸮@⸮⸮⸮⸮⸮c蚺?⸮⸮Bj~!D⸮⸮WwJ⸮⸮?⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> P⸮⸮⸮⸮⸮⸮⸮d⸮3N8YC/pb⸮⸮(<²⸮⸮gl⸮qAAm ⸮
    ⸮⸮x⸮2.e⸮Ņ⸮uCײ⸮,⸮⸮iI⸮R⸮	⸮⸮L⸮ye⸮⸮Y]p`⸮⸮⸮⸮pq⸮⸮⸮-⸮⸮_⸮/⸮⸮f⸮O⸮⸮^⸮S⸮*J⸮⸮Pf⸮⸮Q⸮⸮]⸮⸮⸮@3⸮⸮2⸮f⸮⸮V⸮⸮⸮?⸮⸮4⸮⸮⸮⸮@⸮⸮⸮⸮⸮c蚺?⸮⸮Bj~!D⸮⸮WwJ⸮⸮?⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮|⸮⸮⸮"⸮⸮⸮⸮⸮"-⸮⸮⸮
    [E] HttpLineReader.h : 73 - Line cut off: ⸮ӂ⸮Q⸮⸮G;⸮⸮⸮B⸮s⸮⸮⸮pX(⸮⸮⸮JP,⸮⸮Fx⸮⸮v⸮QG,⸮:,f⸮Cb⸮h⸮%⸮j⸮⸮ZN߼=⸮⸮d⸮⸮⸮o⸮W⸮⸮⸮	⸮@?⸮!⸮⸮⸮>VPd⸮⸮7⸮⸮⸮L⸮1⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮ӂ⸮Q⸮⸮G;⸮⸮⸮B⸮s⸮⸮⸮pX(⸮⸮⸮JP,⸮⸮Fx⸮⸮v⸮QG,⸮:,f⸮Cb⸮h⸮%⸮j⸮⸮ZN߼=⸮⸮d⸮⸮⸮o⸮W⸮⸮⸮	⸮@?⸮!⸮⸮⸮>VPd⸮⸮7⸮⸮⸮L⸮1⸮
    [E] HttpLineReader.h : 73 - Line cut off: ⸮:⸮⸮⸮"⸮⸮⸮⸮;]⸮v⸮⸮=E߄L⸮$,⸮⸮⸮@f(
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮:⸮⸮⸮"⸮⸮⸮⸮;]⸮v⸮⸮=E߄L⸮$,⸮⸮⸮@f(
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮Q⸮6Rm⸮⸮⸮⸮|o⸮s⸮)CRŧ޿Tӡ}⸮7⸮ο⸮g}⸮=⸮⸮9⸮⸮"
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮⸮⸮D⸮#'Z⸮⸮⸮d#⸮m=&`
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮uk⸮⸮z⸮,⸮⸮⸮([k⸮⸮⸮U⸮⸮I⸮ 
    [E] HttpLineReader.h : 73 - Line cut off: J⸮e⸮⸮%⸮⸮ט⸮ ⸮⸮⸮*⸮Ϥ⸮⸮i_⸮⸮⸮⸮۷⸮⸮⸮^⸮ ⸮⸮'O⸮Я⸮⸮@⸮⸮⸮&3⸮⸮⸮0K⸮N⸮⸮⸮W⸮⸮+ęC⸮⸮]55+MÉ⸮]⸮ñr⸮೿⸮I⸮⸮ѹ4⸮[⸮⸮⸮5i⸮e⸮ܯU⸮$
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> J⸮e⸮⸮%⸮⸮ט⸮ ⸮⸮⸮*⸮Ϥ⸮⸮i_⸮⸮⸮⸮۷⸮⸮⸮^⸮ ⸮⸮'O⸮Я⸮⸮@⸮⸮⸮&3⸮⸮⸮0K⸮N⸮⸮⸮W⸮⸮+ęC⸮⸮]55+MÉ⸮]⸮ñr⸮೿⸮I⸮⸮ѹ4⸮[⸮⸮⸮5i⸮e⸮ܯU⸮$
    [E] HttpLineReader.h : 73 - Line cut off: ⸮yz⸮g*yx⸮"Ս@⸮l⸮⸮X3⸮&⸮}p
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮yz⸮g*yx⸮"Ս@⸮l⸮⸮X3⸮&⸮}p
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Β⸮⸮w⸮⸮^⸮{⸮⸮y7⸮<⸮Bv⸮Z[-6~z⸮9&B
    ⸮0⸮O,⸮A@⸮⸮X
    [E] HttpLineReader.h : 73 - Line cut off: ⸮K(⸮⸮24~?⸮⸮⸮
    ⸮㱿⸮U⸮⸮⸮Z⸮f⸮⸮⸮%h}⸮⸮⸮u⸮Z⸮) ⸮Qix⸮⸮\⸮8⸮<c⸮.⸮)=⸮⸮iv\;{:y⸮⸮⸮⸮⸮_n⸮I⸮k⸮IM⸮y⸮⸮_⸮
    ⸮⸮0>0⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮K(⸮⸮24~?⸮⸮⸮
    ⸮㱿⸮U⸮⸮⸮Z⸮f⸮⸮⸮%h}⸮⸮⸮u⸮Z⸮) ⸮Qix⸮⸮\⸮8⸮<c⸮.⸮)=⸮⸮iv\;{:y⸮⸮⸮⸮⸮_n⸮I⸮k⸮IM⸮y⸮⸮_⸮
    ⸮⸮0>0⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 1⸮`c 
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮⸮⸮⸮⸮⸮⸮^
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> <h/⸮⸮⸮⸮⸮q⸮⸮⸮]⸮(⸮'⸮5⸮⸮⸮⸮*Ò⸮?⸮DA⸮⸮O=#⸮⸮⸮⸮[[z⸮-DMm⸮Sc~M⸮3V⸮⸮u%⸮⸮⸮&m⸮⸮f⸮ZDN,[(⸮U⸮⸮⸮⸮&ڛֽ,⸮⸮⸮⸮פ⸮⸮D⸮⸮⸮u⸮⸮⸮⸮⸮⸮⸮⸮L⸮⸮^Yq`⸮"'i⸮vEF
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> t⸮⸮⸮⸮7⸮gRgYQ8⸮⸮I⸮⸮Wc⸮⸮.LV⸮ξ⸮D⸮⸮5⸮⸮bȩ(⸮fB 2⸮t!⸮⸮⸮eh⸮⸮⸮FA$)⸮B⸮⸮⸮f⸮bw⸮{⸮⸮⸮Dс3>\YA⸮pdk⸮="n
    [E] HttpLineReader.h : 73 - Line cut off: ⸮⸮ig⸮⸮X⸮,⸮⸮⸮⸮⸮?⸮o⸮⸮}/⸮⸮ >⸮⸮>⸮)wxÀp1⸮X1⸮⸮⸮⸮708/⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮/I⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮ig⸮⸮X⸮,⸮⸮⸮⸮⸮?⸮o⸮⸮}/⸮⸮ >⸮⸮>⸮)wxÀp1⸮X1⸮⸮⸮⸮708/⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮/I⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ̑
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮Lձ[⸮ؘ`3⸮⸮⸮⸮⸮1⸮⸮u
    C⸮"⸮⸮t⸮⸮⸮i⸮⸮:⸮)⸮ˑ
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> X⸮⸮]C⸮H⸮r⸮#⸮⸮"⸮⸮+⸮⸮7⸮Wm⸮:j9⸮⸮	.⸮0-⸮Zb⸮O⸮j⸮C	⸮⸮⸮M⸮⸮Np⸮⸮⸮s⸮⸮Η⸮?⸮O⸮⸮⸮4⸮⸮⸮(!⸮⸮⸮Dԃ3.[Y!⸮⸮\*⸮.<⸮t9EiǠQ⸮I⸮,x⸮⸮⸮o⸮0⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮(
    [E] HttpLineReader.h : 73 - Line cut off: ⸮⸮K⸮){S
    3nvS⸮⸮⸮⸮D⸮⸮⸮⸮⸮Yk&YdkIx63⸮⸮ВB⸮d⸮炌⸮⸮⸮?ǃ⸮⸮⸮ฤ⸮⸮c⸮}c8⸮⸮5⸮⸮⸮⸮zp⸮⸮ѽB⸮Vu\⸮t⸮3⸮!⸮⸮⸮Å⸮⸮⸮;⸮/⸮⸮[InV⸮*⸮⸮⸮⸮⸮Z0⸮Y'⸮⸮W⸮R](d⸮⸮!LԮ	⸮^f⸮Nfd&⸮⸮\⸮⸮⸮⸮⸮$⸮⸮6⸮S⸮.J⸮ ⸮⸮}W⸮\⸮С⸮]I⸮⸮⸮⸮7⸮Ě⸮⸮U⸮⸮M⸮⸮`⸮(^j⸮⸮⸮⸮f⸮⸮G⸮⸮iu⸮B⸮l
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮K⸮){S
    3nvS⸮⸮⸮⸮D⸮⸮⸮⸮⸮Yk&YdkIx63⸮⸮ВB⸮d⸮炌⸮⸮⸮?ǃ⸮⸮⸮ฤ⸮⸮c⸮}c8⸮⸮5⸮⸮⸮⸮zp⸮⸮ѽB⸮Vu\⸮t⸮3⸮!⸮⸮⸮Å⸮⸮⸮;⸮/⸮⸮[InV⸮*⸮⸮⸮⸮⸮Z0⸮Y'⸮⸮W⸮R](d⸮⸮!LԮ	⸮^f⸮Nfd&⸮⸮\⸮⸮⸮⸮⸮$⸮⸮6⸮S⸮.J⸮ ⸮⸮}W⸮\⸮С⸮]I⸮⸮⸮⸮7⸮Ě⸮⸮U⸮⸮M⸮⸮`⸮(^j⸮⸮⸮⸮f⸮⸮G⸮⸮i
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮⸮⸮6⸮⸮8⸮&d⸮⸮⸮D⸮3(\X⸮⸮⸮[J[<⸮|
    [E] HttpLineReader.h : 73 - Line cut off: ԗkg⸮p⸮5⸮8⸮P⸮>⸮⸮8⸮<⸮⸮⸮⸮⸮H⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ԗkg⸮p⸮5⸮8⸮P⸮>⸮⸮8⸮<⸮⸮⸮⸮⸮H⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> a⸮⸮⸮M&⸮F⸮⸮⸮]⸮ѻ⸮َ⸮}iM⸮::⸮⸮⸮⸮К⸮⸮@
    [E] HttpLineReader.h : 73 - Line cut off: Pmgg⸮⸮⸮g+ll⸮⸮⸮x⸮⸮⸮~a⸮⸮⸮⸮h⸮<l⸮⸮⸮⸮⸮⸮⸮0⸮O⸮⸮⸮⸮⸮ƛ⸮rz⸮⸮⸮<⸮K⸮y⸮⸮⸮⸮%⸮⸮⸮ ^⸮WLO⸮⸮⸮(⸮2⸮W,⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> Pmgg⸮⸮⸮g+ll⸮⸮⸮x⸮⸮⸮~a⸮⸮⸮⸮h⸮<l⸮⸮⸮⸮⸮⸮⸮0⸮O⸮⸮⸮⸮⸮ƛ⸮rz⸮⸮⸮<⸮K⸮y⸮⸮⸮⸮%⸮⸮⸮ ^⸮WLO⸮⸮⸮(⸮2⸮W,⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮f⸮⸮⸮⸮⸮+⸮⸮⸮[email protected]⸮⸮⸮j⸮*⸮[email protected]⸮j⸮0Y4ܸ⸮⸮c⸮a⸮⸮@H4D⸮⸮^⸮}H⸮Lp⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> @⸮⸮⸮s⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮x⸮Rw⸮P⸮ѥ⸮⸮C⸮⸮E⸮F⸮⸮;M	@⸮⸮`tӜm⸮s⸮⸮$#⸮⸮p⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮	⸮c⸮
    ⸮JtB|"h2⸮⸮(P⸮⸮⸮(⸮⸮⸮⸮⸮!
    [E] HttpLineReader.h : 73 - Line cut off: 668yՍ⸮?⸮⸮{⸮_⸮W⸮X⸮⸮⸮*a"⸮r⸮⸮⸮7⸮S6⸮X⸮j⸮~W⸮?⸮⸮⸮<\&+#i4B⸮9?~/r}ߤ⸮⸮zh⸮I$	н⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 668yՍ⸮?⸮⸮{⸮_⸮W⸮X⸮⸮⸮*a"⸮r⸮⸮⸮7⸮S6⸮X⸮j⸮~W⸮?⸮⸮⸮<\&+#i4B⸮9?~/r}ߤ⸮⸮zh⸮I$	н⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> P!
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮٢Ei⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮⸮⸮\⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 8,⸮X⸮⸮⸮⸮⸮[email protected]```C⸮?⸮0?⸮8/⸮⸮
    ⸮࿍⸮⸮⸮ID
    [E] HttpLineReader.h : 73 - Line cut off: ⸮e"|⸮_l$⸮⸮,ꁧ⸮⸮3⸮⸮⸮⸮⸮⸮$g>-⸮"l*⸮u⸮⸮ 
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮e"|⸮_l$⸮⸮,ꁧ⸮⸮3⸮⸮⸮⸮⸮⸮$g>-⸮"l*⸮u⸮⸮ 
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮B⸮⸮6?⸮>we⸮⸮⸮⸮⸮q⸮⸮⸮$⸮M⸮v⸮*#	A
    [E] HttpLineReader.h : 73 - Line cut off: =MC;⸮<0⸮⸮wC⸮F⸮⸮b⸮".3⸮⸮⸮⸮1g"{⸮⸮d܈[email protected]⸮⸮⸮⸮ޚ!⸮D⸮⸮~⸮4⸮t_⸮⸮⸮⸮zi⸮s⸮⸮F⸮	d⸮⸮⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> =MC;⸮<0⸮⸮wC⸮F⸮⸮b⸮".3⸮⸮⸮⸮1g"{⸮⸮d܈[email protected]⸮⸮⸮⸮ޚ!⸮D⸮⸮~⸮4⸮t_⸮⸮⸮⸮zi⸮s⸮⸮F⸮	d⸮⸮⸮⸮⸮
    [E] HttpLineReader.h : 73 - Line cut off: j⸮<⸮x⸮⸮\⸮<c⸮+⸮+⸮⸮⸮4P⸮@8b⸮-ۂ⸮O⸮⸮⸮⸮⸮⸮4⸮H⸮⸮ۋ⸮lH⸮D⸮-⸮⸮⸮⸮6⸮؆T⸮z*⸮Cv⸮&⸮⸮⸮/⸮ȣ⸮#i⸮⸮sܭ⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> j⸮<⸮x⸮⸮\⸮<c⸮+⸮+⸮⸮⸮4P⸮@8b⸮-ۂ⸮O⸮⸮⸮⸮⸮⸮4⸮H⸮⸮ۋ⸮lH⸮D⸮-⸮⸮⸮⸮6⸮؆T⸮z*⸮Cv⸮&⸮⸮⸮/⸮ȣ⸮#i⸮⸮sܭ⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> [email protected]⸮⸮C:4l⸮⸮cm⸮Q⸮⸮⸮⸮⸮X
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮}\s⸮c$u⸮⸮Яq/⸮Y|BR⸮`b!⸮^⸮.⸮)⸮b[h⸮;⸮Z⸮V⸮0]X⸮x⸮Y⸮˵7⸮kM⸮N⸮Պ⸮ݪ⸮⸮'⸮N⸮0⸮o⸮⸮w
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> +ګ⸮⸮ޝ⸮d⸮⸮⸮o⸮S⸮$E⸮⸮5⸮⸮⸮⸮i3ā"Lј	⸮⸮⸮_⸮⸮4
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> :⸮=Bv)Z
    ⸮⸮⸮⸮,@É⸮$⸮B⸮[email protected]⸮⸮&{⸮C⸮K⸮⸮⸮⸮⸮wrhL⸮5⸮"⸮⸮	⸮⸮⸮⸮YD/⸮2-⸮⸮֤as.⸮hV7\
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮tkL⸮z⸮⸮⸮⸮⸮U⸮F⸮⸮[email protected]⸮8⸮_⸮⸮@
    ZT/Xl⸮⸮
    [E] HttpLineReader.h : 73 - Line cut off: ؎G⸮*⸮/⸮⸮2⸮)J⸮.7⸮⸮@⸮⸮+⸮SO⸮⸮⸮ӗ⸮⸮⸮⸮be(⸮⸮j⸮⸮(⸮⸮⸮e⸮D `
    ⸮3⸮ ⸮⸮>⸮⸮⸮	⸮rÎYT⸮kW⸮⸮ ⸮zʺT⸮⸮G ⸮}i9$⸮I⸮4⸮⸮⸮`⸮>4`U:؉⸮8 x((⸮⸮l⸮⸮⸮⸮⸮⸮
    \
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ؎G⸮*⸮/⸮⸮2⸮)J⸮.7⸮⸮@⸮⸮+⸮SO⸮⸮⸮ӗ⸮⸮⸮⸮be(⸮⸮j⸮⸮(⸮⸮⸮e⸮D `
    ⸮3⸮ ⸮⸮>⸮⸮⸮	⸮rÎYT⸮kW⸮⸮ ⸮zʺT⸮⸮G ⸮}i9$⸮I⸮4⸮⸮⸮`⸮>4`U:؉⸮8 x((⸮⸮l⸮⸮⸮⸮⸮⸮
    \
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 
    ⸮⸮⸮⸮⸮B⧥⸮⸮⸮⸮+⸮w⸮@⸮9餒}⸮⸮⸮⸮⸮⸮?⸮r⸮'&⸮7 IM}'⸮⸮$⸮⸮⸮⸮⸮⸮C⸮ 5Z⸮e⸮̲⸮⸮0⸮\A⸮@=⸮)⸮囥⸮ 2%Gw⸮*⸮⸮e⸮_&ϡ⸮`8 /⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 8⸮8ౠ
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮'⸮	⸮=%⸮⸮⸮@@⸮b⸮
    [E] HttpLineReader.h : 73 - Line cut off: ⸮⸮s⸮釄⸮D⸮⸮⸮ror]H⸮@⸮$⸮⸮=⸮!⸮⸮4⸮$⸮@⸮⸮⸮x⸮I⸮⸮⸮"⸮⸮⸮P[email protected]⸮⸮⸮⸮⸮d⸮3⸮<Z⸮I⸮Jț=%⸮
    ⸮⸮g1'⸮l⸮⸮	Л⸮eK$⸮⸮⸮⸮a⸮⸮⸮q9⸮h
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮⸮s⸮釄⸮D⸮⸮⸮ror]H⸮@⸮$⸮⸮=⸮!⸮⸮4⸮$⸮@⸮⸮⸮x⸮I⸮⸮⸮"⸮⸮⸮P[email protected]⸮⸮⸮⸮⸮d⸮3⸮<Z⸮I⸮Jț=%⸮
    ⸮⸮g1'⸮l⸮⸮	Л⸮eK$⸮⸮⸮⸮a⸮⸮⸮q9⸮h
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> w⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> ⸮9e⸮N⸮⸮⸮⸮ߡ
    [E] HttpLineReader.h : 73 - Line cut off: W⸮⸮⸮⸮@⸮͒%⸮⸮*⸮⸮⸮⸮
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> W⸮⸮⸮⸮@⸮͒%⸮⸮*⸮⸮⸮⸮
    [E] HttpLineReader.h : 73 - Line cut off: "
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> "
    [I] HttpHeader.h : 162 - HttpHeader::readLine -> 
    
    Stack smashing protect failure!
    
    abort() was called at PC 0x4201f8d3 on core 1
    
    Backtrace:0x4037791e:0x3fce2c900x4037cc1d:0x3fce2cb0 0x40382691:0x3fce2cd0 0x4201f8d3:0x3fce2d50 0x420096fe:0x3fce2d70 0x42007259:0x3fce00f0 0x4200727f:0x3fce0014  |<-CORRUPTED
    
  • Mp3 stream to I2S Stutter, pauses, noises etc.

    Mp3 stream to I2S Stutter, pauses, noises etc.

    Hello!

    I have played a bit with the provided example (streams-url_mp3-i2s.ino) but the audio output suffer from stutters, noises, pauses etc.. randomly: it may play perfectly for 1 or 2 minutes, then started to make some noise or stops for a second...restart to play ok for 30" then noise ...etc. No warning seen on serial output AudioLogger::instance().begin(Serial, AudioLogger::Warning); changed also buffer size without any effect on the issue URLStream url("xxx","xxxxxx",4048); also changed the source stream url.begin("http://direct.fipradio.fr/live/fip-midfi.mp3","audio/mp3"); Also changed some different power sources (USB powerbank, PC USB..).

    Any hint?

    May be it is some chip issues (ESP32 or I2S MAX98357A)?

    Below the full code.

    Thanks!

    `/**
     * @file streams-url_mp3-i2s.ino
     * @author Phil Schatzmann
     * @brief decode MP3 stream from url and output it on I2S
     * @version 0.1
     * @date 2021-96-25
     * 
     * @copyright Copyright (c) 2021
     */
    
    // install https://github.com/pschatzmann/arduino-libhelix.git
    
    #include "AudioTools.h"
    #include "AudioCodecs/CodecMP3Helix.h"
    
    
    URLStream url("xxx","xxxxx",4048);
    I2SStream i2s; // final output of decoded stream
    EncodedAudioStream dec(&i2s, new MP3DecoderHelix()); // Decoding stream
    StreamCopy copier(dec, url); // copy url to decoder
    
    
    void setup(){
      Serial.begin(115200);
      AudioLogger::instance().begin(Serial, AudioLogger::Warning);  
    
    
      // setup i2s
      auto config = i2s.defaultConfig(TX_MODE);
      // you could define e.g your pins and change other settings
      config.pin_ws=13;
      config.pin_bck=12;
      config.pin_data=15;
    
      LogarithmicVolumeControl lvc(0.5);
    
    
      //config.mode = I2S_STD_FORMAT;
      i2s.begin(config);
    
      // setup I2S based on sampling rate provided by decoder
      dec.setNotifyAudioChange(i2s);
      dec.begin();
    
    // mp3 radio
      url.begin("http://stream.srg-ssr.ch/m/rsj/mp3_128","audio/mp3");
      //url.begin("http://direct.fipradio.fr/live/fip-midfi.mp3","audio/mp3");
      
    
    }
    
    void loop(){
      copier.copy();
    }`
  • Example sketch streams-url_aac-audiokit.ino not working

    Example sketch streams-url_aac-audiokit.ino not working

    I am using ESP32 Audio Kit v2.2 2957 board purchased from Aliexpress, and cannot get the sketch streams-url_aac-audiokit to work. This board has the AC101 codec, and I have changed the board to type 6 in the file AudioKitSettings.h

    The only change to the sketch is for the ssid and password to suit my wifi network. I compile the sketch with ESP32 Dev Module and with all other settings set to their defaults. There are three warnings: D:\software\Arduino\libraries\arduino-audiokit-main\src/AudioKitHAL.h:129:34: warning: narrowing conversion of 'AudioKitConfig::sampleRate()' from 'uint32_t {aka unsigned int}' to 'int' inside { } [-Wnarrowing] .sample_rate = sampleRate(), ^ C:\Users\neil\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32\esp32-hal-spi.c: In function 'spiTransferBytesNL': C:\Users\neil\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32\esp32-hal-spi.c:922:39: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] uint8_t * last_out8 = &result[c_longs-1]; ^ C:\Users\neil\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32\esp32-hal-spi.c:923:40: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] uint8_t * last_data8 = &last_data;

    When the sketch runs, the serial monitor shows: rst:0x1 (POWERON_RESET),boot:0x1f (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:1216 ho 0 tail 12 room 4 load:0x40078000,len:10944 load:0x40080400,len:6388 entry 0x400806b4 [W] AudioKit.h : 51 - sd_active = true [W] AudioKit.h : 602 - Mode Button ignored because of conflict: 13 [W] AudioKit.h : 610 - Headphone detection ignored because of conflict: 5 ..... [W] HttpHeader.h : 231 - Waiting for data... [W] HttpRequest.h : 153 - no CONTENT_LENGTH found in reply

    Changing the URL to http://peacefulpiano.stream.publicradio.org/peacefulpiano.aac causes the ESP32 to continually reboot.

    As a comparison, the sketch streams-url_mp3-audiokit compiles with only one warning: D:\software\Arduino\libraries\arduino-audiokit-main\src/AudioKitHAL.h:129:34: warning: narrowing conversion of 'AudioKitConfig::sampleRate()' from 'uint32_t {aka unsigned int}' to 'int' inside { } [-Wnarrowing] .sample_rate = sampleRate(), With the only changes being the ssid and password, the sketch runs correctly with the default URL.

    I would like to make a simple internet radio using the ESP32 Audio Kit, which can play both mp3 and AAC streams. Any suggestion as to why the streams-url_aac-audiokit.ino example sketch does not work would be appreciated

  • [I2S] No output produced in Slave mode

    [I2S] No output produced in Slave mode

    Hello,

    I'm trying out the I2S sine wave example and I can't get the slave mode to work. I'm debugging the output with a logic analyzer and this is what I get:

    Master mode

    image

    Slave Mode (BCLK and LRCLK are external)

    image

    The only thing I changed between the two is going from master -> slave, and connecting BCLK and LRCLK.

    Any idea what could be going on ?

Strawberry is a music player and music collection organizer.
Strawberry is a music player and music collection organizer.

Strawberry is a music player and music collection organizer. It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles. It's written in C++ using the Qt toolkit.

Jan 5, 2023
Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems
Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems

Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Audacity is open source software licensed under GPL, version 2 or later.

Dec 31, 2022
Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems.
Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems.

Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Sneedacity is open source software licensed under GPL, version 2 or later.

Dec 30, 2022
Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux

Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux and other operating systems and is developed by a group of volunteers as open source software.

Jan 1, 2023
Standalone player of Monkey Island PC-Speaker music
Standalone player of Monkey Island PC-Speaker music

Standalone player of Monkey Island PC-Speaker music

Oct 7, 2022
A music player based on RT-thread and AB32VG1.
A music player based on RT-thread and AB32VG1.

A music player based on RT-thread and AB32VG1.

May 16, 2022
Implement a universal audio player

qiaopcmusic 实现一个万能音频播放器 添加依赖方式: To get a Git project into your build: Step 1. Add the JitPack repository to your build file Add it in your root build.

Oct 15, 2021
The latest and greatest version of my Gameboy Audio Player program!

GBAudioPlayerV3 Version 3.0 of the incredible Gameboy Audio Player, rebuilt from the ground up in C as a command line program, along with heavily impr

Oct 2, 2022
C++ Audio and Music DSP Library

_____ _____ ___ __ _ _____ __ __ __ ____ ____ / \\_ \\ \/ / |/ \| | | | \_ \/ \ | Y Y \/ /_ \> <| | Y Y \ | |_|

Jan 7, 2023
A simple CLI to extract & save artwork of a 🎵 music/audio file.
A simple CLI to extract & save artwork of a 🎵 music/audio file.

artwork-extractor A simple CLI to extract & save artwork of a ?? music/audio file. Usage Dependencies MediaInfoLib On Debian based distros, one may in

Aug 4, 2021
a library for audio and music analysis
a library for audio and music analysis

aubio is a library to label music and sounds. It listens to audio signals and attempts to detect events. For instance, when a drum is hit, at which frequency is a note, or at what tempo is a rhythmic melody.

Jan 2, 2023
C++ library for audio and music analysis, description and synthesis, including Python bindings

Essentia Essentia is an open-source C++ library for audio analysis and audio-based music information retrieval released under the Affero GPL license.

Jan 7, 2023
Collection of tools useful for audio production

Cadence is a set of tools useful for audio production. It's being developed by falkTX, using Python3 and Qt5 (and some C++

Jan 1, 2023
PortAudio is a portable audio I/O library designed for cross-platform support of audio

PortAudio is a cross-platform, open-source C language library for real-time audio input and output.

Jan 1, 2023
PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music composition and musical performance.
PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music composition and musical performance.

PendulumSynth PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music

Oct 7, 2022
A ROS robot supporting voice control, autonomous navigation and robot arm motion.
A ROS robot supporting voice control, autonomous navigation and robot arm motion.

ROS Service Robot Project Due to the GitLab restrictions, only screenshot is displayed here. Warehouse Overview robot: The development source code is

Dec 12, 2022
A next generation media player, with vim-like bindings

MusicKid A next generation media player, with vim-like bindings Installation Clone the repo git clone <git-url> cd MusicKid/Final Install dependencies

Jan 10, 2022
Library and command line backend for the Raspberry Pi OPL3 emulator and midi player

About this repository This repository holds the source code for the pioplemidi backend. You can compile it if you only want to use the library or the

Dec 2, 2021