Thanks after reading your replies in here I upgraded to the latest ESP board software v2.02 like you suggested and now everything compiles. Absolutely brilliant, thank you.
@@na5y the audio quality of your videos is phenominal. Perhaps someday you will show us how you record such great quality audio. Anyway, hoping to go through your channel in time to come little by little. There is a lot of hard work that has gone into it. Thanks for sharing knowledge. Bye.
Very kind comments indeed - although I just see this as a video log of what interests me rather than hard work ;) I Hope you enjoy the other videos and please let me know if you have any questions. 73s ian
Thanks, very useful video! What is approximate latency of the audio filters? Is the processing near-realtime? I'm looking to build guitar effects using ESP32 and this library, so I need to keep the latency to a minimum.
Thats a good question - I have never measured the end-end latency. It was imperceptible (to me) just doing a pass through. I'll have to measure it properly one day. Thank you for the comment.
Nice video, I don't like Arduino libraries as they often change enough between revisions that they are not backwards compatible. I try and understand what a site is doing so i can try and create a program that does it for me, just in case you find they either remove it or put on a charge to use it. Plus it gives the old (very old in my case) gray cells a workout. :-)
I know what you mean - I do wish the ESP-IDF and ADF were a little easier to use though. I spent the whole of last weekend upgrading some code to ESP4.4 (from 3.2.1) and then I found the latest version of ESP-ADF didn't work with it! Thank you for the comment!
@@na5y I'm currently trying to get my head around ESP8266 FreeRTOS. I could do the task in a few lines with the Arduino, but what will I learn, plus which one will give me more satisfaction?
@@TheEmbeddedHobbyist ESP-ADF uses the FreeRTOS tasks very well in the audio pipeline. There's some great examples of RTOS use in that codebase (tasks, threads, eventing, multicore, synchronization etc) if you are interested.
If you use portable mode for your Arduino environment then you can keep as many snapshots of a working build as you like. I find this invaluable when going back to old builds and is the reason I won't use IDE 2.x until this feature has been added. If you like to use IDF code in the Arduino IDE then this is a useful version control approach - arguably inefficient and 'manual' but very safe. I find portable mode particularly useful if I need to tweak libs for a particular project and don't want those tweaks to propagate to all other projects.
Thanks for this video. Do you think that the internal esp32 adc should be enough for implementing a dsp noise reduction for ham radio. Target bandwidth are around 5khz. I guess that could be a great project in order to improve the quality of old radio station 😁
Interestingly I just had a similar question on that topic. I did try using the internal ADC for audio processing a long while back and I was not successful. You have to end up controlling all aspects of audio synchronization if you just use the ADC to make sure you are sampling on a precise frequency. You get that out of the box with an external codec and I2S. I am sure you could do it - but again IMO you are better off with I2S. Thank you for the question Hugues
I just recently used the ESP32 internal ADC to make an LED audio spectrum display. It was very tricky to set up and get the timing right. The internal ADCs have linearity issues, but for this application that was not a concern. But, for only 5kHz, they just might work. You need to DC bias the analog input to Vcc/2 since the ADC only read 0-Vcc.
@@lmstrutt I guess I am so used to I2S now that I kind of prefer its "simplicity". It was a bit of a bear for me to learn originally though. Thank you for the comment
Great Video - thanks for the heads up ... is it possible to implement Mixer , multiply and FFT to a display ? like with the Teensy audio design tool - as you mentioned for a SDR.
Its all in there Alan - I have just scratched the surface of this toolkit. There's even some compression libraries included. I do intend to play around some more. Only potential challenge I see is that as it is platform neutral it doesn't allow ESP32 specific multi-core, threads, etc.
Hi , sounds like there’s a lot of functionality with the DSP library - interesting to look into implementing an ESP32 SDR USB/LSB/CW etc with the PMOD board for RX and TX
@@alanclarksonm6agc806 Definitely Alan. Something I plan on doing. One note though is the FIR filter in the arduino library isn't optimized for the ESP32 - and so quite underperforms the FIR algorithm in the ESP-ADF. Hopefully next video (if I ever get there) is going to be on this docs.ai-thinker.com/en/esp32-a1s - It has a built in ES8388 on board. Looks very interesting
Hi I would like to use this library to record sound captured by an I2C mic in mp3 format to an uSD card. The creator of the library said it is possible but did not want to give an example how to do it. Could you help maybe? Thanks in advance.
I haven't tried that myself. Are you using an ESP32 board or something else? Just a note I do plan on a pile more experimentation with this toolkit so stay tuned. In the midst of a house move right now ;)
@@na5y I have normal wroom and wrover ESP32 modules and I2C mic and different I2C DAC boards. I hope you finish moving soon :-) looking forward to more good examples with more explanation then what is given in the library.
@@SA-oj3bo Thank you SA. The usual configuration is Mic -> ADC -> ESP32 -> SD card. The ESP32 would have to do the MP3 conversion which the libLAME part of the arduino audio tools would do. The reason I asked what board you are using is that Espressif have the audio toolkit github.com/espressif/esp-adf which is a bit of a chore to set up but also has the functionality you are looking for. Setting up IDF and ADF is a bit of a pain though...
Just reconfirmed with a pull from latest that you can still specify the MCLK. You do need to have the latest ESP32 Arduino environment - 2.0.2 from Espressif
Hi, I Just tested the sketches but there are a lot of errors during compilation due for sure to the libraries, I Just installed the audiotools as always I do with the other libraries, but for sure something Is missing in my setup. Any spuggestion? Thanks
Edit: just checking - it looks like some of the library code has changed and I need to update my code. Let me get back to you... I am always up for some remote debugging. Some baseline questions: 1) What uController are you using 2) If its ESP32 do you have a simple "blink" example compiling (ESP32 is a bit of a pain to set up - and I'd like to make sure that is set up correctly) 3) Have you done a recent pull from the arduino-audio-tools github repo - I know there were some compile errors in AudioStreams.h > GeneratedSoundStream (which have been fixed now) 4) Could you send a snippet of some of the errors (you can use the email address in the "about"
OK - it is now compiling OK for me. There are warnings coming from some of the IDF code which you can ignore - like this: Edit: Assuming you were using ESP32.... /home/xenir/Arduino/libraries/arduino-audio-tools/src/AudioAnalog/AnalogAudioESP32.h:208:39: warning: 'I2S_COMM_FORMAT_I2S_MSB' is deprecated [-Wdeprecated-declarations] .communication_format = I2S_COMM_FORMAT_I2S_MSB, ^~~~~~~~~~~~~~~~~~~~~~~ I did have to reinstall my ESP32 arduino board software though through boards manager. I am doing this on a different computer than the one I was using earlier. Make sure you set raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json in the Preference>Additional Boards Manager URLs - and pick version 2.0.2 in boards manager. Let me know how you get on
@@na5y Thanks a lot, I just changed the setting for the board manager and reloaded the boards, and it is working now. I was using a more than one years old setting for my DOIT ESP32 DEVKIT V1, some warnings are still present, but the compilation ends and data are correctly transfered to the module. I'll send you the snap shot. Thanks again. Antonio
Thanks after reading your replies in here I upgraded to the latest ESP board software v2.02 like you suggested and now everything compiles.
Absolutely brilliant, thank you.
Glad the video was of help Gary. Thank you for the comment
I found you hidden jam channel thru a guy with a swiss accent. Your channel is so beautiful. Just like w2aews.
Thank you very much Maximus for the kind words (and thanks to Andreas too of course ;) )
@@na5y the audio quality of your videos is phenominal. Perhaps someday you will show us how you record such great quality audio. Anyway, hoping to go through your channel in time to come little by little. There is a lot of hard work that has gone into it. Thanks for sharing knowledge. Bye.
Very kind comments indeed - although I just see this as a video log of what interests me rather than hard work ;)
I Hope you enjoy the other videos and please let me know if you have any questions. 73s ian
I can't find anything about using the I2S2 for Audi Reactive thing for WLED... How should I wire it, What do I need to consider?
Thanks, very useful video! What is approximate latency of the audio filters? Is the processing near-realtime? I'm looking to build guitar effects using ESP32 and this library, so I need to keep the latency to a minimum.
Thats a good question - I have never measured the end-end latency. It was imperceptible (to me) just doing a pass through. I'll have to measure it properly one day. Thank you for the comment.
Really cool project 😊
Thank you!
Nice video, I don't like Arduino libraries as they often change enough between revisions that they are not backwards compatible. I try and understand what a site is doing so i can try and create a program that does it for me, just in case you find they either remove it or put on a charge to use it.
Plus it gives the old (very old in my case) gray cells a workout. :-)
I know what you mean - I do wish the ESP-IDF and ADF were a little easier to use though. I spent the whole of last weekend upgrading some code to ESP4.4 (from 3.2.1) and then I found the latest version of ESP-ADF didn't work with it! Thank you for the comment!
@@na5y I'm currently trying to get my head around ESP8266 FreeRTOS. I could do the task in a few lines with the Arduino, but what will I learn, plus which one will give me more satisfaction?
@@TheEmbeddedHobbyist ESP-ADF uses the FreeRTOS tasks very well in the audio pipeline. There's some great examples of RTOS use in that codebase (tasks, threads, eventing, multicore, synchronization etc) if you are interested.
@@na5y Thanks i'll have a look.
If you use portable mode for your Arduino environment then you can keep as many snapshots of a working build as you like. I find this invaluable when going back to old builds and is the reason I won't use IDE 2.x until this feature has been added. If you like to use IDF code in the Arduino IDE then this is a useful version control approach - arguably inefficient and 'manual' but very safe. I find portable mode particularly useful if I need to tweak libs for a particular project and don't want those tweaks to propagate to all other projects.
I want to receive audio from my web server to esp32 output using webrtc ?
Thanks for this video. Do you think that the internal esp32 adc should be enough for implementing a dsp noise reduction for ham radio. Target bandwidth are around 5khz. I guess that could be a great project in order to improve the quality of old radio station 😁
Interestingly I just had a similar question on that topic. I did try using the internal ADC for audio processing a long while back and I was not successful. You have to end up controlling all aspects of audio synchronization if you just use the ADC to make sure you are sampling on a precise frequency. You get that out of the box with an external codec and I2S. I am sure you could do it - but again IMO you are better off with I2S.
Thank you for the question Hugues
I just recently used the ESP32 internal ADC to make an LED audio spectrum display. It was very tricky to set up and get the timing right. The internal ADCs have linearity issues, but for this application that was not a concern. But, for only 5kHz, they just might work. You need to DC bias the analog input to Vcc/2 since the ADC only read 0-Vcc.
@@lmstrutt I guess I am so used to I2S now that I kind of prefer its "simplicity". It was a bit of a bear for me to learn originally though. Thank you for the comment
@@na5y I just say à project like yours called GI1MIC $19 DSP Filter. Intestins, the used board is strong enough to include all needed stuffs.
@@huguesmassart4483 Interesting project. A little plugin board for shaping the output audio. Thank you for the comment
Many thanks for the video, great tutorial.
Glad you enjoyed!
I am using PCM1802 ADC and cs4344 DAC. I don't know why DAC 4344 doesn't work when using .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT.
Thats the same DAC the pMod uses so it definitely will work. What MCLK frequency are you using? Are you driving the SCLK externally?
Great Video - thanks for the heads up ... is it possible to implement Mixer , multiply and FFT to a display ? like with the Teensy audio design tool - as you mentioned for a SDR.
Its all in there Alan - I have just scratched the surface of this toolkit. There's even some compression libraries included. I do intend to play around some more. Only potential challenge I see is that as it is platform neutral it doesn't allow ESP32 specific multi-core, threads, etc.
Hi , sounds like there’s a lot of functionality with the DSP library - interesting to look into implementing an ESP32 SDR USB/LSB/CW etc with the PMOD board for RX and TX
@@alanclarksonm6agc806 Definitely Alan. Something I plan on doing. One note though is the FIR filter in the arduino library isn't optimized for the ESP32 - and so quite underperforms the FIR algorithm in the ESP-ADF. Hopefully next video (if I ever get there) is going to be on this docs.ai-thinker.com/en/esp32-a1s - It has a built in ES8388 on board. Looks very interesting
Hi I would like to use this library to record sound captured by an I2C mic in mp3 format to an uSD card. The creator of the library said it is possible but did not want to give an example how to do it. Could you help maybe? Thanks in advance.
I haven't tried that myself. Are you using an ESP32 board or something else? Just a note I do plan on a pile more experimentation with this toolkit so stay tuned. In the midst of a house move right now ;)
@@na5y I have normal wroom and wrover ESP32 modules and I2C mic and different I2C DAC boards. I hope you finish moving soon :-) looking forward to more good examples with more explanation then what is given in the library.
@@SA-oj3bo Thank you SA. The usual configuration is Mic -> ADC -> ESP32 -> SD card. The ESP32 would have to do the MP3 conversion which the libLAME part of the arduino audio tools would do. The reason I asked what board you are using is that Espressif have the audio toolkit github.com/espressif/esp-adf which is a bit of a chore to set up but also has the functionality you are looking for.
Setting up IDF and ADF is a bit of a pain though...
unfortunately the new Library update does not support the option to specify Mclk
I am away from my computer right now but try updating your esp32 arduino to 2.0.2.
Just reconfirmed with a pull from latest that you can still specify the MCLK. You do need to have the latest ESP32 Arduino environment - 2.0.2 from Espressif
@@na5y ok thanks for the information you provided, I'll try it
I think there is a Hilbert function in octave. I'll look later
Sorry Anthony I am not familiar with octave. Is it a DSP library?
Hi, I Just tested the sketches but there are a lot of errors during compilation due for sure to the libraries, I Just installed the audiotools as always I do with the other libraries, but for sure something Is missing in my setup. Any spuggestion? Thanks
Edit: just checking - it looks like some of the library code has changed and I need to update my code. Let me get back to you...
I am always up for some remote debugging. Some baseline questions:
1) What uController are you using
2) If its ESP32 do you have a simple "blink" example compiling (ESP32 is a bit of a pain to set up - and I'd like to make sure that is set up correctly)
3) Have you done a recent pull from the arduino-audio-tools github repo - I know there were some compile errors in AudioStreams.h > GeneratedSoundStream (which have been fixed now)
4) Could you send a snippet of some of the errors (you can use the email address in the "about"
OK - it is now compiling OK for me. There are warnings coming from some of the IDF code which you can ignore - like this:
Edit: Assuming you were using ESP32....
/home/xenir/Arduino/libraries/arduino-audio-tools/src/AudioAnalog/AnalogAudioESP32.h:208:39: warning: 'I2S_COMM_FORMAT_I2S_MSB' is deprecated [-Wdeprecated-declarations]
.communication_format = I2S_COMM_FORMAT_I2S_MSB,
^~~~~~~~~~~~~~~~~~~~~~~
I did have to reinstall my ESP32 arduino board software though through boards manager. I am doing this on a different computer than the one I was using earlier.
Make sure you set
raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
in the Preference>Additional Boards Manager URLs - and pick version 2.0.2 in boards manager.
Let me know how you get on
@@na5y Thanks a lot, I just changed the setting for the board manager and reloaded the boards, and it is working now. I was using a more than one years old setting for my DOIT ESP32 DEVKIT V1, some warnings are still present, but the compilation ends and data are correctly transfered to the module. I'll send you the snap shot. Thanks again. Antonio
@@antaf56 Thats great news Antonio - glad you were able to get it working. What audio codec board are you using? The pMod or something else?
@@na5y I am using the Digilent Pmod I2S2 but I have not yet connected it to the ESP, I'll do it just now.....i'll make you know!
Super
Thank you Doc!