DSP prototyping in Faust for VCV Rack
These are the instructions for Linux, but it should be relatively simple to modify them for use on Windows or MacOS:
- clone this repository:
git clone https://github.com/mzuther/ProtoFaust.git
- download and install the latest VCV Rack SDK – the
Makefile defaults to
../Rack-SDK
but respects theRACK_DIR
shell variable - install Faust (I recommend using a recent version)
make run
will compile and install your module; Rack is run if it is found in your path
The default Faust process is a simple three-oscillator synth with
resonant filter. Simply edit src/faust/main.dsp
to change this.
The main process is
process(in1 , in2 , in3 , in4 , in5 , in6 , in7 , in8) = internal_processor
with
{
internal_processor = ... ;
};
You can simply put your mono DSP process in there:
internal_processor = (in1 : gui_attacher) :
your_mono_process :
_ , in2 , in3 , in4 , in5 , in6 , in7 , in8 :
si.bus(8);
Or in stereo:
internal_processor = (in1 : gui_attacher) , in2 :
your_stereo_process :
_ , _ , in3 , in4 , in5 , in6 , in7 , in8 :
si.bus(8);
Just make sure that you add gui_attacher
somewhere -- this will
attach the GUI parameters and simply copy any mono input signal to its
output. If you fail to do so, the ProtoFaust
module will not find
any of the knobs, buttons and LEDs (they will be thought as
superfluous and optimized out) and probably crash.
Enjoy!
Input signals from VCV Rack are divided by 5.0
. Conversely, output
signals are multiplied by 5.0
to bring them back in range. This
keeps values in the usual range of DSP processing (-1.0 .. +1.0
) and
should help when porting algorithms to VCV Rack. All signals are
full-range, so you have to apply any input or output saturation
yourself.
Knobs have a range of 0.0 .. 1.0
; the center position is located at
0.5
. Toggle switches take on values of 0.0
and 1.0
, whereas
three-way switches add a third state of 0.5
.
This module is very new and experimental. So please send problems, bug reports, fixes and any ideas that come to your mind. Thanks!
-
Martin Zuther: maintainer; code and GUI design
-
Stéphane Letz: improved readability of Faust code (
src/faust/rack.dsp
)
Please read the code of conduct before asking for help, filing bug reports or contributing to this project. Thanks!
Copyright (c) 2019-2020 Martin Zuther and contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
Thank you for using free software!