For the past few months I was working on an open-source program called Flanger, a sound effects creation (and editing) program, in a non linear nodes GUI - each node takes input (or create it), manipulate and send it through it’s output port.
Sound creation and manipulation is done by creating and connecting various nodes of different types, each takes it’s input stream, and output a modified audio stream to the connected nodes, allows the creation of complex effects in an intuitive way.
Flanger also support “Expressions” (as in After Effects), which let the user use scripting in node properties. For example, the node “Wave” (creates a waveform) has a property called “Hz” which is the “cycle” length. Instead of a constant value, by using expression the Hz can be set to a variable number depends on time which would cause a change in pitch over time (as can be seen here, each wave’s Hz is changed over time according to the wave output of another node).
The platform is at a pretty advanced state, allowing the user to manage nodes and connections, play the result and save the project. Main feature still missing is loops (for example, ‘input file → [delay → add → loop 5 times] → output’ would create an echo).
Flanger is using QT for GUI, synchronization, scripting and more. Also uses PortAudio for playing, libsndfile for reading and writing files and libsamplerate (Secret Rabbit Code ) for samplerate conversion.
The sourcecode is hosted on Sourceforge: http://sourceforge.net/p/flanger/
Note: There is NO binary in Sourceforge, but if you download the source you can run ‘qmake && make’.
Why am I posting it here?
I think Flanger has a lot of potential, but currently, there are very few sound filters/effects (it even lacks some basic ones as low/high/band filters). I’m a C++ developer, not a DSP specialist. I need the help of you, people who knows some sound processing, to help me write more plugins (e.g. node types).
If you have a pseudo-code or an algorithm in your mind of a sound filter or effect, please send me it (here, or to my mail: vbCrLf at GMail). Please devote a few minutes to write the algorithm and I’ll do the rest of the plugin coding (interface, etc). Will appreciate any help!