If you need more bare bones there are some DSP only resources. Not sure if I saw there the RtAudio which is also very minimal -
https://www.music.mcgill.ca/~gary/rtaudio/
RTAudio isn't a DSP library, it's a thin wrapper around audio driver APIs on desktop operating systems (and maybe mobile? I haven't used it in years).
Elk is awesome but it's a proper linux distro, which may require more resources than the typical embedded audio device. But it's remarkable how much you can do these days.
I don't think JUCE belongs in the same conversation. It barely runs on Linux and the DSP library is not suitable for production applications (the IIR filter implementation requires allocation to set its parameters!)
> Elk is awesome but it's a proper linux distro, which may require more resources than the typical embedded audio device
In comparison to teensy above I’d say the term embedded is quite broad.
> I don't think JUCE belongs in the same conversation
JUCE is modular. And as I’ve wrote above the term embedded is very broad and many times consider general purpose cpus.
There are also chipsets/SoCs with separate DSP unit which requires its own toolchain and usually include basic building blocks. SOUL in the list aims in the future to abstract also for such chips similar to GPUs abstractions (eg opengl)
I wasn't familiar with the Teensy Audio Library, it looks really fun and well-featured.
Faust is also popular for this purpose (this is mentioned in the linked page). You write audio code in Faust and it gets compiled to tight C code, so that works well for embedding. It also has an impressive set of libraries. For a different approach, you could also try Soundpipe. It's a C library, not initially meant for embedding but it's small so it could work.
Thanks for upvoting my list. Originally it was quite focussed on C++/plugins but it has diverged a bit. I try not to just put random links to things I haven’t even tried, and instead give a bit of context about why I like the thing, or why I think that it’s worth including. Also shamelessly promote my project iPlug2 at the top!
It might be nice to add a section on audio (and MIDI?) I/O SDKs / APIs. Although large frameworks like JUCE take care of this for the developer, most of the other tools, libraries etc. that you've mentioned don't really tackle the question of how to get audio in and/or out of whatever computing device is being used.
Or maybe I missed it ... it wouldn't be the first time.
Hi Oli. Just wanted to use the opportunity to say thank you for all your contributions to the audio developer and DSP discussion over the years. I've learned a lot from reading your posts and articles on various sites :)
Hey, cool! I made something that might be a suitable addition here: https://wavtool.com/
It's an in-browser audio devtool for writing JS scripts that alter and generate sound in-place. Currently working on another more DAW-like version built around real-time processing.
I was in the same place a couple years ago. It's too bad DSP is not more well-known, as I definitely would have chosen to study DSP over Software Engineering in college (Having already known how to program)
For anyone interested in audio analysis/music information retrieval, I found the book Fundamentals of Music Processing (http://www.music-processing.de) to be an amazing resource.
It goes over the basics like FFTs, covers audio features used in analysis (e.g spectral, chroma, etc), and goes in-depth into advanced techniques such as audio fingerprinting, beat tracking, harmony analysis, etc (stuff that you would otherwise have to dig into research papers for!). The book is fairly readable as well so you don't need to have a strong engineering or music background to dig into it.
Really awesome. I’ve been thinking to start learning audio programming for quite a while now, but never really know where to start beyond just basic DSP. This list can serve as a prompt to pick something up and get practical.
This reminds me of how long and how badly I have wanted to acquire a Kyma Pacarana. The thing is a 4 thousand dollar box of wonderful sound design magic. Being a hobbyist that only sporadically dabbles in music production and sound design I just can't justify it (yet!).
Kyma is audio DSP software backed by dedicated DSP processors and something that is highly relevant to a discussion about audio DSP, but thanks for adding so much to the conversation with your pedantic nitpicking.
OIC... you were triggered by me dreaming about an expensive, professional, software/hardware platform because it’s too expensive to meet YOUR qualifications for someone else’s list?
No one is triggered by anything. Do you really not realize that what you said has nothing to do with anything in the link? If someone linked a hammer would you post about a house you want to buy?
They have an SDK from what a colleague tells me who uses it extensively and also sometimes have secondhand units available, ask their team or join the mailing list.
One thing especially for me that makes this list 'awesome' are the short descriptions along side the links. Often such lists only put a word or two with the link, Oli goes into more detail, making the list more informative.
41 comments
[ 0.22 ms ] story [ 121 ms ] threadIt expanded my world a bit. There are frameworks and libraries and programing languages here. It looks like a well compiled list.
I dabbled with Teensy boards for a while due to having a decent audio library that's pretty easy to use.
Overall there are JUCE embedded support.
If you need more bare bones there are some DSP only resources. Not sure if I saw there the RtAudio which is also very minimal - https://www.music.mcgill.ca/~gary/rtaudio/
Elk is awesome but it's a proper linux distro, which may require more resources than the typical embedded audio device. But it's remarkable how much you can do these days.
I don't think JUCE belongs in the same conversation. It barely runs on Linux and the DSP library is not suitable for production applications (the IIR filter implementation requires allocation to set its parameters!)
In the end I switched to PortAudio which works fine with low-latency backends.
You’re right I meant - https://ccrma.stanford.edu/software/stk/tutorial.html
> Elk is awesome but it's a proper linux distro, which may require more resources than the typical embedded audio device
In comparison to teensy above I’d say the term embedded is quite broad.
> I don't think JUCE belongs in the same conversation
JUCE is modular. And as I’ve wrote above the term embedded is very broad and many times consider general purpose cpus.
There are also chipsets/SoCs with separate DSP unit which requires its own toolchain and usually include basic building blocks. SOUL in the list aims in the future to abstract also for such chips similar to GPUs abstractions (eg opengl)
Faust is also popular for this purpose (this is mentioned in the linked page). You write audio code in Faust and it gets compiled to tight C code, so that works well for embedding. It also has an impressive set of libraries. For a different approach, you could also try Soundpipe. It's a C library, not initially meant for embedding but it's small so it could work.
Or maybe I missed it ... it wouldn't be the first time.
It's an in-browser audio devtool for writing JS scripts that alter and generate sound in-place. Currently working on another more DAW-like version built around real-time processing.
I had to google it. Despite being a musician and programmer for decades, I don't remember ever seeing that acronym before!
It goes over the basics like FFTs, covers audio features used in analysis (e.g spectral, chroma, etc), and goes in-depth into advanced techniques such as audio fingerprinting, beat tracking, harmony analysis, etc (stuff that you would otherwise have to dig into research papers for!). The book is fairly readable as well so you don't need to have a strong engineering or music background to dig into it.
Some more analysis/MIR links:
Great notebook to go alongside FMP: https://musicinformationretrieval.com/
One of the most widely used libraries for MIR in Python: https://librosa.org/doc/latest/index.html
A library for MIR in JS: https://github.com/meyda/meyda
That would be like someone linking electric motors and someone posting only "I can't wait to buy a tesla roadster".
- chuck
- snd
- stk
- common music
- processing