Effects
-
What do you have planned in the way of effects?
-
Well, the currently available effects are pretty basic, but until now they were sufficient for my sample based instruments. But yeah, it would be great to have some more. Is there anything in particular you are missing?
-
heres a list (some of which you might already have covered…):
- Reverb
- Convolution (yes I know these are both expensive on CPU...)
- Delay
- Chorus
- Phaser
- Flanger
- State variable versions of:
Hi-Pass, Lo-Pass, Band-Pass (4 pole would be nice but at least 2-pole I think) - Ladder Versions of:
Hi_pass, Lo-Pass, Band-Pass - Formant Filter
- Distortion
- Bit reduction
- Compressor
- Limiter
- Transient Manager
- Tape Sat
- Amp
- Cabinet
- Auto Pan
All this is a MASSIVE amount of work, so perhaps some way to build these as plug-able FX and others can build a market around selling us these "plug-ins". It shouldn't be too hard to define an interface, lets assume that NONE of these effects have their own UI, and their parameters would ONLY be accessible via scripting . So each plug-in would consume and return audio, and would present (in their documentation) an API to call their parameters: in some format like
set_param(fx_id,param_id,value)
Where fx_id could be either a unique ID for the FX/developer(but that limits you to one only of a given FX from a developer in an instrument) or a load sequence number. And param_id just a numeric for the relevant effect parameter..
The most important point, from an architectural point of view is that these should be load/unloadbale via the scripting interface, the way Kontakt effects are as of V5....
so we have (something like:):
load_fx(fx_file_name, position)
and:
unload_fx(fx_file_name, position)
-
Thanks for the input. I don't consider myself an expert when it comes to writing actual DSP algorithms, but I came pretty far by crawling the net for public domain DSP code.
Reverb, Convolution, Bitcrusher, Limiter, Chorus, Autopan and Filters are already implemented. Since the last version I also added a Saturator and some more filter types (State variable filters, 4-Pole Moog LP).
About the extensibility it would be great to see other devs write plugins for this platform and I do have some plans for a dynamically loading plugin system (although the thought of a plugin that loads other plugins is a bit weird)
Adding a custom interface with the generic controls should not be a problem for 3rd party developers. Also, the script methods are already there:
StereoFX = Synth.getEffect("Stereo FX"); StereoFX.setAttribute(StereoFX.Width, 150); StereoFX.setBypassed(true);
But I am not sure about the benefits of loading effects dynamically vs. having them in your preset but being able to enable / turn them off.
-
Yes clearly you are well along with a set of FX. Well done (again).
Having a dynamically changeable path of effects is quite useful, if nothing else to allow users to select which filter they want to use, and to set the order. Clearly Reverb ->Compressor has a very different sound to Compressor ->Reverb
The ROMpler I'm currently working on has 4 insert FX slots (where the user can choose from over 15 different FX) and 4 Send FX slots(where the user can choose from half a dozen different FX). The DrumROMpler is even more complex, with 4 channel(Bus) effects, 4 insert(Instrument wide) Fx and 4 send FX, so it can all get a bit fraught with complexity….but users seem to like it a lot...