January 3rd, 2021

Bespoke Synth

updated my sampleplayer's youtube downloading capability to give a list of search results to select from, and download/read the audio asynchronously without stalling the app so you can grab samples on the fly. flipping youtube samples on a whim via text search is a good time!

— Ryan Challinor (@awwbees) January 3, 2021

Came across this on Twitter and thought it was pretty cool. Awesome that the code is up on GitHub so that I can have a read through.

Interesting to see that Ryan has worked on this code since 2011. It's easy to forget how long it takes to develop software.

JUCE is used for the audio backend. ModularSynth.h is the main synth. The support for Python scripting is cool, and something to learn from.

The main audio render happens in ModularSynth::AudioOut One neat feature is the audio graph can be changed on the fly. This can be complicated as the audio runs on a separate thread, and is real time constrained. Bespoke supports live updates to the audio graph by using a Mutex. Ideally a mutex on the audio thread would be avoided, but in this case it's working well enough by the looks of it.

The audio graph is sorted in ModularSynth::ArrangeAudioSourceDependencies()