#include "AudioTools.h" #include "AudioTools/AudioLibs/MaximilianDSP.h" #include #include // Arduino output I2SStream out; Maximilian maximilian(out); // Maximilian maxiSample beats; //We give our sample a name. It's called beats this time. We could have loads of them, but they have to have different names. maxiDyn compressor; //this is a compressor float fout; void setup() {//some inits // setup logging Serial.begin(115200); AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info); // setup audio output auto cfg = out.defaultConfig(TX_MODE); out.begin(cfg); maximilian.begin(cfg); // setup SD to allow file operations if(!SD_MMC.begin()){ Serial.println("Card Mount Failed"); return; } //load in your samples. Provide the full path to a wav file: beat2 is too big //beats.load("/sdcard/Maximilian/beat2.wav"); beats.load("/sdcard/Maximilian/snare.wav"); Serial.println(beats.getSummary().c_str());//get info on samples if you like. compressor.setAttack(100); compressor.setRelease(300); compressor.setThreshold(0.25); compressor.setRatio(5); //you can set these any time you like. } void play(float *output) {//this is where the magic happens. Very slow magic. //here, we're just compressing the file in real-time //arguments are input,ratio,threshold,attack,release fout=compressor.compress(beats.play()); output[0]=fout; output[1]=fout; } // Arduino loop void loop() { maximilian.copy(); }