Hacker News new | past | comments | ask | show | jobs | submit login
A curated list of Music DSP and audio programming resources (github.com/olilarkin)
211 points by alexvoda on April 23, 2021 | hide | past | favorite | 39 comments



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.

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


Fundamentals is great. And the two Musimathics books neatly complement the DSP analysis of music, by approaching music generatively, as a product of math and physics: https://www.amazon.com/Musimathics-Mathematical-Foundations-...


I am also a fan of Gareth Loy's Musimathics Books, should add them to the list


My supervisor George Tzanetakis also recently put his MIR course up on Kadenze. Haven't taken it yet, but it's supposed to be good!


I have not done much MIR stuff in the past, but I recently found https://musicinformationretrieval.com/ and that does seem like a great resource


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!


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 :)


cheers!


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.


Oh! Thanks for introducing me to soul.dev. This web playground looks absolutely ripe for audio experimentation ;)


It's a great list, thanks!


I just discovered this list. It was also posted to hn 3 years ago but didn't receive any comments at that time.

It expanded my world a bit. There are frameworks and libraries and programing languages here. It looks like a well compiled list.


Oli himself did a great job with iPlug and provide many useful resources including guides, GitHub templates and live webinars.


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.


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.


This is really cool! I know nothing about programming audio but found your app really intuitive - great work!


Thank you! That really means a lot :)


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.


It's a nice list. It would be interesting to know what's usable for DSP on embedded systems.

I dabbled with Teensy boards for a while due to having a decent audio library that's pretty easy to use.


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.


There's https://elk.audio/

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/


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!)


> RTAudio isn't a DSP library

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)


An aside, but just recently I tried to get RTAudio off the ground for some low-latency hobby projects.

In the end I switched to PortAudio which works fine with low-latency backends.



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!).


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.


This is a list of software tools and libraries related to audio, it is not about hardware.


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.


I don't know why you would be so upset by this. This is a link to free software and you mentioned expensive hardware. It isn't the same thing at all.


There is literally a section of this list titled "Hardware/Embedded" https://github.com/olilarkin/awesome-musicdsp#hardwareembedd...


Those are small components, not four thousand dollar commercial products.

That would be like someone linking electric motors and someone posting only "I can't wait to buy a tesla roadster".


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?


DSP = digital signal processing?

I had to google it. Despite being a musician and programmer for decades, I don't remember ever seeing that acronym before!


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)


nice. random misc not on there for further curation if so inclined:

- chuck

- snd

- stk

- common music

- processing


for audio DSLs also check out intonal: https://www.elasticaudio.com/


Another useful resource not on the list: https://howlerjs.com/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: