Warning: This thing can be quite loud. Turn down your speakers or headphones before use!
- Click anywhere in waveform to create new nodes
- Once created nodes can be dragged to new locations
- Press delete key to remove selected node
- Pres space bar to toggle playback
- Filter is most effective with Resonance parameter set near max
I’ve always enjoyed working with automated effects in programs like Ableton Live or Pro-Tools. The new version of the MORT Synthesizer is going to feature something similar to this functionality so it seemed like a good idea to build a prototype before actual implementation. It was a good choice to explore this feature with a prototype because as it turned out, it was more complex than I imagined.
The approach I took involves caching vectors of values that represent the line data for each parameter ( cutoff, resonance, distortion & volume ). Each time a node is created or moved, the parameter values are updated. Then, when the audio data is processed the parameter values are mapped from their positions in the graph to their corresponding positions in an a much longer array of audio sample data. The mapped values are then used to inform the effects variables.
Performance is decent, though there is definitely room for optimizations. The distortion algorithm used includes expensive division operations. However, I’m pleased with the overall tone of the distortion. I found the basic code for it in a pseudo-code snippet from the musicdsp.com archives.
I’m not going to get to much more detailed in my explanation of this prototype. The source code is up on gist and, as always, if you have any questions feel free to ping me.