Designing a signal processing environment (RFC) - part 2
In these posts I’m thinking out loud how a software signal processing environment I’m developing should look like and behave. Check out part 1 if you haven’t seen it yet.
More on Signal Loops
There already exist open source modular audio processors, but none of them fulfils my requirements.
Most of them (e.g. BespokeSynth, Pure Data, JACK) have a restriction of processing audio in blocks of tens to thousands of samples (depending on how much overhead your system can tolerate and still work real-time). As long as you have evident dependency order in the graph, it is not a problem - you can run modules in that order and there will be no apparent delay other than the obvious block size delay present in all general-purpose-computer-based DSP systems.
However, if you have a signal loop, there’s no dependency order. You just have to feed some modules later. It’s equal to inserting a delay line with length of the block size, in the loop. So it will influence the sound! I’ve written about it in part 1.
VCV Rack/Cardinal works differently, sacrificing performance. It processes one sample at a time. Meaning that signal loops cause much shorter delays. They can be made even shorter when oversampling is enabled. But they still exist and still influence the sound.
Going down to zero latency in loops. New plugin API
I’ve came across description of this technique on Urs Heckmann’s (u-he) blog and haven’t tested it yet, but it looks promising. We can process the loop multiple times without advancing the clock, until the signals converge.
Time-aligning audio signals using free software
How to time-align (phase-align) audio tracks using free as in freedom, open source DAW and plugins.
It improves the sound quality and makes mixing & mastering easier if you have the same sound source recorded from different distances, or mixer’s line-out and room sound (captured onto a single multitrack recorder). I’ll assume that these are two separate tracks in your DAW.
I’m using the following software:
- DAW - Ardour (any DAW with flexible routing and sample-accurate playback will work)
Imperfect source codes: faders
I have written many programs to accomplish a specific task. I haven’t published them before because I thought they’re too specific and I should make them more generic… which isn’t going to happen soon because that’s a lot of work to polish a quick hack into a framework. However, the beauty of open source is that you can quickly hack my quick hack and make it useful in your use case, or clean it up and actually make it a serious thing (or I’ll do it when I retire). Whatever you do, it’s better than my work being wasted because of perfectionism.
faders-midi-osc-router
started as x18faders
when I wanted to control Behringer
XR18 using a MIDI controller. I also wanted the controller’s motorized
fader to move on scene load or when mixer setting was changed from
another device (tablet with X Air app). It was used during one concert
of the band I play in - Maha Fixum (after which I
understood that using a digital mixer doesn’t give me enough freedom in
making experimental music - i.e. I needed to change source code each
time we were repatching our studio signal flow)
Designing a signal processing environment (RFC) - part 1
This is the first post of the thinking out loud series about the signal processing framework and modular environment I’m developing - SignalDub.
Dubbing the Signals
What’s the functionality I need most when processing audio signals in-the-box (i.e. using a computer)? Dubbing. It has multiple meaning and all those are valid in this context:
- recording
- adding effects in creative way, using them as an instrument (delay and reverb in particular)
- experimenting, using devices not-always-the-way-they-were-designed
I feel that not only music producers and sound engineers, but also visual artists, broadcast engineers… anyone working with multimedia, deserves such system allowing experimentation.
Free as in Freedom
That’s a pretty obvious requirement. You can’t have a hackable system if its core can’t be changed. Also, if the source code is kept secret, the knowledge used to develop it is wasted.
Extreme Modularity and Signal Loops
Most audio software today is modular. You can use whatever DAW you want with your soundcard, insert whatever plugin you want on the track in the DAW. But have you ever tried to insert an EQ on delay’s feedback path? Or distort it?