All Projects → olilarkin → Awesome Musicdsp

olilarkin / Awesome Musicdsp

Licence: cc-by-4.0
A curated list of my favourite music DSP and audio programming resources

Projects that are alternatives of or similar to Awesome Musicdsp

Audio Plugin Development Resources
Various resources related to developing plugins for audio production.
Stars: ✭ 136 (-84.39%)
Mutual labels:  plugin, audio, dsp, vst, vst3
Baseplug
MVC audio plugin framework for rust
Stars: ✭ 44 (-94.95%)
Mutual labels:  plugin, audio, dsp, vst
Node Audio
Graph-based audio api for Node.js based on LabSound and JUCE
Stars: ✭ 67 (-92.31%)
Mutual labels:  plugin, audio, vst, vst3
Wdl Ol
Enhanced version of Cockos' iPlug - A simple-to-use C++ framework for developing cross platform audio plugins and targeting multiple plugin APIs with the same code. VST / VST3 / Audiounit / RTAS / AAX (Native) formats supported. NOTE: THIS IS OBSOLETE, PLEASE SEE IPLUG2:
Stars: ✭ 906 (+4.02%)
Mutual labels:  plugin, audio, vst, vst3
Juce
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.
Stars: ✭ 3,841 (+340.99%)
Mutual labels:  plugin, audio, vst, vst3
Camomile
An audio plugin with Pure Data embedded that allows to load and to control patches
Stars: ✭ 527 (-39.49%)
Mutual labels:  plugin, audio, vst, vst3
Guitard
Node based multi effects audio processor
Stars: ✭ 31 (-96.44%)
Mutual labels:  plugin, audio, dsp
Regrader
VST delay plugin where the repeats degrade in resolution
Stars: ✭ 44 (-94.95%)
Mutual labels:  dsp, vst, vst3
Audiogridder
DSP servers using general purpose networks and computers - https://audiogridder.com
Stars: ✭ 423 (-51.44%)
Mutual labels:  audio, dsp, vst3
Frequalizer
Equalizer using JUCE new dsp module
Stars: ✭ 130 (-85.07%)
Mutual labels:  plugin, dsp, vst
Sonobus
Source code for SonoBus, a real-time network audio streaming collaboration tool.
Stars: ✭ 586 (-32.72%)
Mutual labels:  plugin, audio, vst
Renderman
Command line C++ and Python VSTi Host library with MFCC, FFT, RMS and audio extraction and .wav writing.
Stars: ✭ 225 (-74.17%)
Mutual labels:  audio, dsp, vst
Iplug2
C++ Audio Plug-in Framework for desktop, mobile and web [PRE-RELEASE]
Stars: ✭ 875 (+0.46%)
Mutual labels:  audio, vst, vst3
Melodrumatic
Audio plugin that lets you use MIDI to pitch-shift via delay to turn unpitched audio into melodies
Stars: ✭ 26 (-97.01%)
Mutual labels:  dsp, vst, vst3
juceSynths
Collection of JUCE synthesisers utilising the Maximilian library.
Stars: ✭ 78 (-91.04%)
Mutual labels:  dsp, vst, vst3
fogpad
A VST reverb effect in which the reflections can be frozen, filtered, pitch shifted and ultimately disintegrated.
Stars: ✭ 61 (-93%)
Mutual labels:  dsp, vst, vst3
Dplug
Audio plugin framework. VST2/VST3/AU/AAX/LV2 for Linux/macOS/Windows.
Stars: ✭ 341 (-60.85%)
Mutual labels:  dsp, vst, vst3
Matchering
🎚️ Open Source Audio Matching and Mastering
Stars: ✭ 398 (-54.31%)
Mutual labels:  audio, dsp, vst
Librosa
Python library for audio and music analysis
Stars: ✭ 4,901 (+462.69%)
Mutual labels:  audio, dsp
Audiomentations
A Python library for audio data augmentation. Inspired by albumentations. Useful for machine learning.
Stars: ✭ 439 (-49.6%)
Mutual labels:  audio, dsp

More Awesome Music DSP*

This is a curated list of my favourite music DSP and audio programming resources. This was originally meant to be an official "Awesome list", but apparently you are not meant to write in the first person, so this is now a "more awesome" list.

Oli Larkin

Frameworks

  • iPlug2 - iPlug (originally created by Cockos) is an awesome plug-in framework. I was maintaining a fork of it since ~2011 called WDL-OL which is now superseeded by iPlug2. In 2018 Alex Harker and I made a big effort to update it and continue to work on it. iPlug's syntax is super simple, for example, creating a parameter or a control in the UI is only a single line of C++ code.
  • JUCE - JUCE is an undeniably awesome C++ application/plug-in framework with audio roots. It boasts a vast amount of functionality for the development of music software, including support for almost all plug-in formats and platforms. JUCE is used widely in the music technology industry and it has excellent documentation, code standards, features and support. The JUCE team organise the Audio Developer's Conference (ADC) which is the most awesome conference around if you like audio programming. What's more all the videos from all the ADCs so far are available on youtube.
  • VSTGUI - VSTGUI is Steinberg's cross-platform UI toolkit for audio plug-ins. It is released under a BSD licence, it's an impressive piece of work and many plug-in developers use it for their products.
  • AudioKit - Well, i'm going to break the rules and include AudioKit here which uses the Swift programming language, because if you want to make apps for Apple's devices this is a great option, although if you want to do low level stuff, you will still have to delve into C/C++. It's a DSP and UI toolkit for audio things, so going in this category. The AudioKit team have also published a nice AUv3 template project.
  • WDL - WDL is Cockos' library of reusable C++ code, that is used to power the DAW Reaper, amongst other things. Whilst not traditionally a framework, there is so much good stuff in here, it is highly recommended - although there is next to no documentation, so it's not for the faint hearted. For more info about the various parts of WDL (which can be used independently), check the Cockos site
  • ASPiK - This is a new framework from Will Pirkle (to accompany his books) which is based on the VST3 SDK and it's AU/AAX wrappers, along with VST GUI and its runtime UI editor. It includes a project creator and a lot of extra "nuts and bolts" code for plug-in development.
  • DPF - Distrho Plug-in Framework is a nice C++ plug-in framework by falkTX, supporting lots of Linux formats.
  • Jamba - A new framework built on top of the VST3SDK & VSTGUI, with some useful extra widgets and good CMake support
  • DPlug - A plug-in framework using the D programming language, that has had a huge amount of work over many years. I haven't tried it myself, but I've decided to include it here in solidarity with the authors. As a fellow open-source framework Dev, it's nice if people know about your work!

DSP Libraries

  • Gamma - Gamma is a very awesome C++ DSP framework by Lance Putnam - a developer whose name I've known since the synthedit days. The beauty of Gamma is the conciseness of the implementation of certain techniques. The STFT is a bit of a pain to code yourself, involving overlapping FFT windows etc - how about this for a concise end user implementation.

  • Q - A very nice looking modern C++ DSP library with concise examples

  • HIIR - HIIR is a seriously cool oversampling library by Laurent de Soras. Oversampling is something we often need in audio DSP, and this library handles it elegantly - providing a variety of classes for low latency IIR half band filtering (including SIMD optimizations). Originally this had a LGPL licence but now it's available under the WTFPL - my favourite licence.

  • HOALibrary - A flexible DSP library for high order ambisonics (HOA) - a spatial audio platform that is becoming more and more relevant thanks to VR (GPL Licence).

  • HISSTools Library - a nice BSD licensed library by Alex Harker, including FFT abstractions and multi-channel convolution, amongst other things

  • Spatial Audio Framework - Another excellent library for ambisonics and other spatial audio related processing

  • MadronaLib - Randy Jones' DSP library, which is awesome because it is all designed for SIMD processing.

Domain Specific Languages (DSLs)

  • FAUST - FAUST is a powerful functional DSL for audio DSP with many options for quickly compiling to different “architectures” including audio plug-ins and embedded devices. FAUST is not interpreted like programming languages such as Puredata/Max/Supercollider/javascript, it is compiled to C++ and various other programming languages or bytecode formats such as Web Assembly (WASM). This functionality is suited to rapid prototyping but can also produce robust and performant binaries. Whilst the rapid prototyping possibilities of FAUST are appealing to me, what I like most about it is the extensive library of high quality DSP, particularly for physical modelling synthesis and the way in which you can compose algorithms using the consise syntax. FAUST includes a JIT compiler "libfaust" based on LLVM, which I integrated into a JUCE module. I've also integrated FAUST support into iPlug2 and used it to make a physical model of the Indian Tambura.
  • SOUL - Is an exciting new DSL created by Jules Storer and Cesare Ferrari at Roli, which also uses the LLVM compiler technology (see ADC18 Keynote). It has a JIT compiler for a fast workflow and can spit out C++ and WASM and ready-to-go JUCE projects. The language has been designed with the goal of allowing the audio DSP to run "closer to the metal" in a similar way that GPU shader languages such as GLSL can run securely on graphics hardware. SOUL is an imperative language much more similar to C/C++/Javascript than FAUST. It has several advantages, for example multi-rate processing and in my opinion it is more suited for code that mixes event-handling with DSP, where as FAUST is good for discreet blocks of DSP processing. Since FAUST can output SOUL code via faust2soul, you can use them together! Here is a SOUL thing I did.

DSP Filters

Reading

This is a small selection of books that have been helpful to me. There are many others that look absolutely great but I have not used them in anger (yet).

  • Will Pirkle - Will Pirkle has written two books that will be invaluable the aspiring audio plug-in developer - "Designing Audio Effect Plug-Ins in C++" and "Designing Software Synthesizer Plug-Ins in C++". The books contain detailed information about important audio DSP, including modern virtual analogue techniques, and sample code for complete sythesizers that sound good. My only criticism is that a large part of the books relates to a bespoke plugin framework and providing information for multiple formats, AU, VST3 can be a bit overwhelming, and clutters the content. Nevertheless I highly recommend these books. For more info see here
  • Dodge and Jerse - Computer Music: Synthesis, Composition and Performance, 2nd Edition - This is my absolute favourite book to recommend to students studying computer music/audio synthesis. I find the book does not date like some other computer music texts. The MUSIC-N style block diagrams are charming and the techniques are discussed very well.
  • Udo Zölzer (Ed) - DAFX: Digital Audio Effects - This is a great book on audio DSP, written by a variety of domain experts, and it includes Matlab code examples.
  • JOS - Julius Smith's site and his four books are an amazing resource. Matlab and FAUST code examples included!
  • DAFX Conference Archive - All the papers from the DAFX conference are available online. Another great resource.
  • EarLevel Engineering - Nigel Redmond's DSP blog contains some very nicely written explanations of a variety of topics.
  • Michael Tyson blog - In depth article about Four common mistakes in audio development
  • Ross Bencina's blog/site - Another Australian who writes a lot of interesting software and articles about lock free programming

Tools

Slightly veering off topic, these are the software tools that I find useful in my audio programming. Xcode and Visual Studio Community are the free IDEs that I use, and both are very powerful these days.

  • Cycling '74 Max - Max is a great environment to use for prototyping audio plug-ins. There are just so many options for integrating different technologies, I highly recommend it - even if nowadays most of the max patches I make only include a few objects!
  • Desmos - This is an awesome online graphing calculator. Check out some interactive Casio CZ waveforms that I made saw square reso1
  • Coliru - This is an online interactive C++ compiler, which can be a very nice and quick way to test out a particular feature of the language, without having to build a binary.
  • Compiler Explorer - Compiler explorer is a great tool for checking the assembly code that different compilers will produce.
  • FAUST Web IDE - This is an online FAUST IDE and compiler, that lets you test FAUST code with webaudio. You can then tell it to output a zip file with a binary for your preferred platform. This saves you all the trouble of installing FAUST and its dependencies on your local machine.
  • SOUL Web IDE - Compile and run SOUL code in the browser
  • Matplotlib-cpp - A C++ interface to the matplotlib python plotting tool. Allows you to visualize algorithms using the same code that you can use in production.
  • xeus-cling - This is a really cool project allowing you to use JIT compiled C++ in jupyter notebooks - which, like Matplotlib-cpp above is great for visualizing algorithms using the same code that you can use in production, inside the popular jupyter notebook format. Here is an example of how you can use those things together, easily via a ready made docker image.
  • StudioRack plugin manager - Open-source audio plugin manager tool and Github plugin templates to automatically build cross-platform audio plugins.

Misc open source audio code/projects

I got into programming in C/C++ by making objects for Max and Synthedit. Learning how to use the SDKs for one of those or for one of the following open source packages is a nice way to start in my opinion, since you don't need to think about too many things. What's more - these great projects all show you how you can go about certain tasks... the code is there for you to look at. It might take you a while to find it, and sometimes the code might be hard to understand, but they all have oscillators, filters etc. There are many third party objects as well, that are also open source.

  • puredata - I don't think pd needs an introduction! Also check out libpd, which you can use as an embeddable DSP runtime in your C++ audio plug-in etc.
  • supercollider - Likewise, but make sure you look at the scsynth part for DSP stuff.
  • csound - CSound has seen a renaisannce of late and can be used as an embedable DSP library
  • vcvrack - Whilst the other items in this list have been around a while and have somewhat arcane code-bases, this is pretty new and the API is very clean and simple. I think making a VCVRack module it is a great way to get into audio programming.
  • tracktion engine - Source code for an entire DAW engine, using modern C++. An amazing resource for learning all sorts of things including how to structure and architect large audio projects. GPL/Commercial license.
  • musicdsp.org - "A collection of algorithms, thoughts and snippets, gathered for the music dsp community". A long serving site that has recently been revamped. Beware: most of the code there was written a very long time ago, and optimization tricks etc, may not be relevant on modern machines. Also there are lots of code snippets programming languages other than C++ (delphi, java, C# etc). Could do with some curation.
  • Webkit's Web Audio API - This is the C++ code for WebKit's implementation of the Web Audio API, as used in Safari.
  • Blink's Web Audio API - The same thing in Blink (Google chromium).
  • Firefox's Web Audio API - And for Mozilla Firefox!

Open source instruments/effects

Here are some quality open source instruments/effects plug-in projects.

Working with hardware

Most of the audio programming that I do has to do with plug-ins, but I found a couple of hardware platforms that I really like developing for (mainly because writing code for these devices is not so different to making a plug-in).

  • the owl pedal/module - This is a programmable stomp box and eurorack module that I've been working with since the kick starter campaign to launch it. It's a really nice little unit, which you can program in C++, FAUST, Pd or with Max gen~. I find the limited interface with 4 controls makes me think quite carefully about what's important about my DSP algorithm. You can find some patches I made for it (using a mixture of c++ and FAUST) in the user library, and the original code here.
  • bela - Bela is a wonderful little SoC + Audio Interface which is pretty revolutionary, allowing super low latency audio and sensor I/O all clocked together, in a tiny package. I wrote the FAUST support class for bela. You can also program it with C++ or libpd, and even supercollider.
  • ELK Audio OS - A new embedded linux OS & dev kit that runs VST2 & VST3 plugins.

Youtubers / Stuff to watch

Places

Here are a few links to the various corners of the internet and real-world where you might like to hang out if you like this kind of stuff...

  • musicdsp mailing list - The music DSP mailing list is pretty quiet these days, but it still worth signing up, despite the web 0-1 front page. Every now and again a music DSP legend posts something interesting.
  • KvR Audio DSP and Plug-in Development Forum - This is probably the most active forum for audio DSP that is not aligned with a particular plug-in framework. There are some very smart people, some mavericks and some plain weirdos who hang out here.
  • JUCE Forums - This is a collection of forums centred around the variety of things that JUCE does. Since there is such a huge amount of people using JUCE to make audio software, there is a lot of good info here.
  • Cockos Forums - Another collection of forums centred around Cockos' tools including one for WDL/iPlug and one for Reaper JS.
  • The audio developer conference (ADC) - Whilst the other places mentioned here are all virtual, this is a real conference where you can go and meet real people face-to-face who do audio programming - highly recommended!
  • TheAudioProgrammer Discord server - A popular community for discussing audio programming.
  • iPlug2 Forum - new forum for iPlug2 discussions

Oli Larkin 2018-2020 www.olilarkin.co.uk

License

CC0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].