Skip to content

ycollet/infamousPlugins

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to the INFAMOUS Plugins README

These are audio plugins in the LV2 format, developed for linux. Most are suitable for live use. Installation is discussed first here then the plugins below.

To install, fulfill the dependencies (below), then run the commands:
    mkdir build
    cd build 
    cmake ..
    make
    sudo make install

To install the package under a specific library path, use LIBDIR cmake variabe:
    mkdir build
    cd build
    cmake -DLIBDIR=lib64 ..
    make
    sudo make install

Once this is complete you can already start using the plugins in your favorite LV2 host

Dependencies:
    cmake
    ntk
    ntk-fluid
    cairo
    lv2-dev
    zita-resampler
    fftw3


If you do not have ntk and ntk-fluid already installed use the commands:
    git clone git://git.tuxfamily.org/gitroot/non/fltk.git ntk
    cd ntk
    ./waf configure
    ./waf
    sudo ./waf install

A NOTE ABOUT CV PORTS!:
I have commented out all the cv ports (envfollower, stuck, and the powercut/up plugins) because almost no lv2 hosts are implementing that at this time. At one time I made them audio ports so they were still accessible, but then they were frequently interpreted as second port of a stereo pair.
If you want to re-enable the ports, in envfollower.c and stuck.c uncomment the line "//#define CV_PORTS" (remove the "//") and in the respective .ttl files, uncomment the blocks at the bottom. If you wish to use the CV ports as audio ports (required for any host but ingen at the time of writing), open the *.ttl file for that plugin and find the line with "lv2:AudioPort ; #CvPort ;" and remove "AudioPort ; #" which will cause the port to be declared as Cv rather than audio.

A NOTE TO PACKAGERS:
Each plugin can be built individually by navigating to the directory src/$pluginName. If you are using guis you can do an out of source build by performing:
    mkdir build
    cd build
    cmake ..
    make
    cp $plugin.so ../$plugin.lv2/
    cp $plugin_ui.so ../$plugin_ui.lv2/
    cd ..

The plugin bundle to be packaged is the $plugin.lv2 directory. Each plugin is in a separate folder; repeat this in every plugin's subdirectory.


Now lets talk about what you're installing:

==========================================
1. Cellular Automaton Synth

This synthesizer plugin is an additive synthesizer, where 16 harmonics are added according to rules of elementary cellular automata. A rule is created and determines whether a cell will survive, die, or be created based on its previous state and its neighbors. Thus a harmonic will either play or be silent according to its associated cell's state. The 16 cells are on a torus where the ends wrap around to meet, therefore the highest harmonic influences the state of the first harmonic. This synth has no filter, so harmonics must be controlled through the rule and initial condition. To assist in your sound design there is a command line utility included called rule that will print out the cell states in sequence (see rule on line 53). For more information regarding Cellular Automaton in general read wikipedia under Elementary Cellular Automaton.

It is unlimitedly polyphonic and has 2 LFOs. It also features an ADBSSR envelope generator for the amplitude envelope. Using the GUI you get to select each bit of the rule and initial condition. You can also click to the right of the row of buttons to set the value directly. Also if you click on HAL 9000 it will randomize all the parameters (except master gain and channel).

Parameter Description:
    CHANNEL - Midi channel, set to 0 for all channels
    MASTER_GAIN - total volume
    RULE - rule for determining next state in cellular automaton
    CELL_LIFE - length between cell states measured in beats (most hosts default to 120bpm)
    INIT_CELLS - initial condition of cells when a note is played
    NHARMONICS - number of harmonics added in
    HARM_MODE - determines gains of the harmonics 
    HARM_WIDTH - std. deviation of random detuning of harmonics in cents
    WAVE - basic Waveform of the harmonics
    ENV_A - attack time
    ENV_D - decay time
    ENV_B - break point gain (to switch between decay and swell)
    ENV_SWL - swell time
    ENV_SUS - sustain gain
    ENV_R - release time
    AMOD_WAV - amplitude modulation waveform
    AMOD_FREQ - amplitude modulation frequency
    AMOD_GAIN - amplitude modulation gain
    FMOD_WAV - frequency modulation waveform
    FMOD_FREQ - frequency modulation frequency
    FMOD_GAIN - frequency modulation gain




==========================================
1b. infamous-rule

This program is less necessary as the new GUI shows the first 20 states of the cells. The source is still there and you can still install it with the legacy install.sh script.
This visualizes cell automata on a torus. Run it by opening a terminal run 

    infamous-rule <rule number> <initial condition>
    
The least significant digit corresponds to the first harmonic


==========================================
2. Envelope Follower

This is a fully featured envelope follower plugin. It can be used for pumping the gain with the bass or all sorts of other things that I don't really know about. Someone just wanted it so I made it. It sends a midi control value according to the amplitude of the input audio.
Because CV ports are not supported in hosts the parameters effecting CVs are not on the GUI. If you enable the port when you build you will need to use the host generated GUI to adjust them.

Parameter Description: 
    PEAKRMS - blend of peak and/or rms value for amplitude
    THRESHOLD - audio low value mapped MINV
    SATURATION - audio high value mapped to MAXV (anything greater still outputs MAXV)
    ATIME - rise time of the output
    DTIME - fall time of the output
    CHANNEL - Midi channel to send output over
    CONTROL_NO - Midi control # to change
    MINV - minimum midi value to send
    MAXV - maximum midi value to send
    REVERSE - switches direction of the midi output (larger input amplitude -> smaller midi value)
    CMINV - minimum CV to send
    CMAXV - maximum CV to send
    CREVERSE - switches direction of the CV output

===========================================
3. Hip2B

This is a distortion plugin that is even more fun than I imagined. Inspired by effect pedals by dwarfcraft, this takes your analog signal and turns it into a square wave. It gives you a glitchy type effect. It was originally meant to be pretty minimal, but I decided there wasn't a good reason to be so a simple amplifier was added to turn it down, and some basic DC offset removal was added. Its not limited in polyphony or anything, it is simply distorting your signal to be a bandlimited square wave. Basically its a switching function with hysteresis. Play with the up and down threshold parameters to change the square wave pulse width and have some fun. You'll find lower values give more sustain, but stay away from 0.0 on those two, it gets really loud and noisy. Unless thats what you want. Be my guest. Depending on your noise floor, other low values may be problematic in the same light.

Parameter Description: 
    UP - threshold that the input must cross for the square wave to rise
    DOWN - threshold that the input must cross for the square wave to fall
    OCTAVE - change the octave of the square wave output (down to -2)
    INGAIN - input gain, also affects the output signal in the mix, use to get your signal passing the thresholds
    WETDRY - mix of the original signal with the square signal
    OUTGAIN - output gain

===========================================
4. cheap distortion

Another distortion plugin, but this one I wanted to getit as light as possible. I haven't benchmarked it, but using some hackery on the bits I accomplished a pretty nice saturation function waveshaper using only a bitshift and an integer add. Thats right not a single floating point operation! However this cheapness and hackery comes at a cost that its using undefined behavior and breaks some rules or at least is highly not reccommended. It works when compiled with GCC on x86 systems. Go ahead and try it, the worst that happens is that it sounds awful. On machines with different endianness it will fail for sure. If you experience this I can easily make one for the other endian machines. Just let me know. Becuase the goal was super cheap computation, there is no input or output gains, so make use of your simple amplifier plugins. All in all though it worked out better than I dreamed. It even has 3 different waveshapes of increasing "aggression". On 2 & 3 settings, you'll probably want a gate, because it has really high gain for values near zero.

Parameter Description:
    AGGRESSION - wave shape, higher basically means more gain

=============================================
5. stuck

This is a clone of the electro-harmonix freeze. It drones the note being played when the "Stick It!" port is set to 1 (or the CV port input goes above 1), causing the note to be "stuck". Once the port falls below 1 the drone is released with a decay set in seconds. The drone is added to the dry signal (so original signal is passed through at all times un-processed). This plugin is pretty useless except in live situations, though I'd love someone to creatively prove me wrong.

    STICKIT - control the drone being on (>=1) or off (<1)
    DRONEGAIN - gain of drone
    RELEASE - time of drone decay in seconds

=============================================
6. power cut

This effect is commonly called tape stop. Another one I might not actually use, but the DSP was fun anyway. It just copies the audio through until the "Pull the Plug!" port is toggled to 1 (or the CV trigger port goes above 1). Then it slows the audio down gradually to a complete stop and outputs silence until the trigger is released, much like unplugging the power chord of a record player or maybe tape player. I've never heard this happen to a tape player. A turntable actually has enough inertia. Anyway, you can adjust the length of the decay and the curve. Its pretty fun. With some automation this can make some crazy glitch type effects.

    PULL THE PLUG - start the decay (>=1) or turn it off/reset it(<1)
    DECAY TIME - length of decay in seconds
    DECAY CURVE - the shape of the decay, concave (logarithmic) slows more and more with time, convex (exponential) slows less and less with time

=============================================
7. power up

This is the opposite of the power cut. It "winds up" rather than down, or goes from silence when off, to slowly speeding up to full speed in the amount of time set by the control. NOTE THIS PLUGIN IS ABSOLUTELY NOT USEABLE LIVE! It introduces nearly 10 seconds of latency. But in a recording context your mmodern DAW will compensate. I wasn't even going to do this because of the non-causal DSP but then the math was challenging and I couldn't back down. The latency could be dynamic but I have no idea how well hosts would cope with that, so I chose to leave it static.

    FIRE IT UP - start the startup (>=1) or turn it off/reset it(<1)
    STARTUP TIME - length of startup in seconds
    STARTUP CURVE - the shape of the startup, concave (logarithmic) starts quickly then changes less and less with time, convex (exponential) takes a while to get started then quickly approaches normal speed. 

=============================================
8. ewham

I wanted a whammy style pitchshifter and found folks weren't quite satisfied with the alternatives. This one is based on the algorithm in Fons Adriaensen's AT1 pitch corrector. I haven't benchmarked mine to see if its better than others but considering its sitting around 4% DSP load I think its not too shabby. It does incur 128 samples of latency. It could do better but the sound quality might suffer some. Its geared mostly toward voice but works quite well for guitar too. It will struggle with polyphonic sounds, but works great for leads.

    EXPRESSION - This would be what you tie your midi expression pedal to. It blends the pitch shift from the start to the finish value
    START - Pitch shift amount (in semitones) when the expression is at 0
    FINISH - Pitch shift amount (in semitones) when the expression is at 1
    MODE - determines if dry signal is mixed in (harmonizer) or not (classic shifter). Chorus mode makes the detune more fine grained (cents instead of semitones) so you can use the expression to dial in more or less chorus effect
    LOCK MODE - this can allow the pitch shift to go smoothly to any value, slide to the nearest semitone when expression stops changing, or to jump directly from semitone to semitone

=================================
9. duffer

This is a duffing oscillator driven by the input. The duffing oscillator is interesting because it exhibits chaos. The system is simulated by a standard RK4 algorithm, but with each input sample treated as a full second to get more movement from the model. If none of that makes sense just know its not the most musical thing, but you can have a bit of fun making weird noises with it. It can be thought of a bit like a speaker but instead of moving a paper cone, the coil drives a spring side to side that has 2 magnets pulling it in opposite directions all the time (creating non-linear and chaotic behavior). This plugin has a check; if the output begins to grow too large it will reset the state to zero and resume, to allow unstable settings. There is an output to indicate if this condition is being triggered. Its not a big deal when this is triggered, but know that you're more hearing that artificial nonlinearity of the reset than the dynamics of the actual system, and that's not as scientifically intriguing. One tip: when using negative spring nonlinearities keep the spring stiffness very large if you want to avoid triggering the instability reset.

    DAMPING - damps the "spring"
    SPRING NONLINEARITY - changes the nature of the "spring"
    INPUT GAIN - adjust how hard the "spring" is driven
    UNSTABLE! - output to tell if the system is diverging (and artificially reset)

=================================
10. lushlife

coming soon...

About

LV2 Audio Plugins for Linux

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 88.8%
  • C++ 10.1%
  • CMake 0.5%
  • MATLAB 0.5%
  • Shell 0.1%
  • QMake 0.0%