Random Smooth Signal

ZynAddSubFX free software-synthesizer by paulnasca 2

Random Smooth Signal is a free oscillator VST plugin for Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Random Smooth Signal is a JSFX script that generates a continuous random smooth signal. It basically generates a “control” signal as an audio signal (or random LFO), so it is definitely not meant to be listened to (directly)! The signal generated is random, however, it will be smooth between the random points generated. The smoothing method used is a quadratic function, based on the moving average of linear-interpolated randomly-generated points. Basically, think of it as generating a specific amount of random points for a given time frame, and drawing lines between these points: that’s your linear interpolation. Now, do the moving average on this whole thing (with the period or length set to the distance between points) — and you got the smooth random signal…

You can fully adjust the range that the signal can vary between (randomly), as well as the distance or duration of one random value until it changes to another, but it will always be smooth regardless of this setting, this just tells it how slow it should be with changes. Please note that the output is a mono signal, so if you use it in a stereo configuration, it will probably be the left channel. It continuously generates such a signal, there is no input to it. It is not triggered by any MIDI or audio.

The purpose of this script, much like a LFO, is to be used as a control signal to randomize other things. For example, you could use it to multiply another signal and randomly vary its volume, subtle or not (that’s up to your range, if you make it close to the value 1, then it will be subtle). Another use for it would be to automate a parameter of a synth, effect, or script. In this case, you can vary that parameter randomly for small amounts to have a less sterile and static sound. If you apply it to parameters that have subtle effects, the result can be much more dynamic than a boring static sound.

For more information and an example signal diagram visit its dedicated page here.

https://sites.google.com/site/octarone

Pitchbend Scaler

ZynAddSubFX free software-synthesizer by paulnasca 2

Pitchbend Scaler is a free studio tools VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Pitchbend Scaler is a very simple MIDI-only JSFX script that scales incoming Pitchbend messages by a specific factor, each channel has a different factor so it can be customized per-channel. This scaling is useful if the incoming pitchbend range is different than the range expected by the receiving synth after this script, and you can do it per-channel as well. For example a factor of 0.5 on Channel 1 will multiply all pitchbends on that channel by half, which means that the incoming pitchbend range is twice as small as the expected range (let’s say incoming pitchbend range is supposed to be ±1 semitone, while the next synth expects ±2 semitones, for example).

Despite the fact that the scale factor sliders are between 0…2, you can actually use any value outside this range, even negative values (which inverts the pitchbend but not as proper as the Pitchbend Inverter); you just have to type them manually instead of moving the slider. (which I recommend anyway for surgical precision to properly compensate for range differences)

https://sites.google.com/site/octarone

Pitchbend Smoother

ZynAddSubFX free software-synthesizer by paulnasca 2

Pitchbend Smoother is a free studio tools VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Pitchbend Smoother is a MIDI-only JSFX script that smooths incoming Pitchbend events by slowly going from the previous value to the new value just received, with adjustable randomization and curve shape. Both the shape and the interval can be randomized as well, but only within the range you specify. When using this script, remember that it will introduce lag in the actual pitchbend effects, by its nature. That is in fact very normal for smoothing and is the whole point of it.

For instance, if you have a smooth interval of 500ms, that means it takes half a second to go from current pitchbend to the new pitchbend that was just received. Thus, the “new” pitchbend value will be in effect after half a second, and that’s the job of this script: when it sees a pitchbend event, it will smoothly go from the current value to that new one, in the interval specified. If another event happens while it is already in one interval (in other words, for that example, you send another pitchbend event before the 500ms are finished), it will instead go from whatever value it reached towards the new value, in another interval. Without this script, the “new” pitchbend value would be in effect instantly.

For more information and a diagram explaining the curve shape values, visit its dedicated page here.

https://sites.google.com/site/octarone

Pitchbend Randomizer

ZynAddSubFX free software-synthesizer by paulnasca 2

Pitchbend Randomizer is a free randomizer VST plugin for Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Pitchbend Randomizer is a MIDI-only JSFX script that generates smooth random signals to manipulate pitchbends directly with them. The generated internal signals are calculated in the same way as the Random Smooth Signal script, but only done for pitchbends. Then, it adds them to the input pitchbend (or zero, if none). This allows you to change the incoming pitchbend and vary it randomly, but smoothly, in time. The other difference is that it also generates a different signal for each channel — they will not be the same, and each channel will have a different variation.

The purpose of this script is to add some subtle (or not so subtle) variations to pitchbends, or use them as a control signal for some other parameter by linking them. You can even go crazy with it, to simulate some insane pitch effects.

Please see Random Smooth Signal for more information on how the randomized signal is generated and how it looks like. Even though it is similar to it, this script operates fully in the MIDI domain, no audio signals are present whatsoever, not even internally. You don’t have to worry about it, but the code can be quite messy because of this fact.

Lastly, please remember that the generated random smooth curve is randomly reset whenever there is a new note from an inactive channel, so there will be a discontinuity there. This is to give each brand new note that activates a given channel a different random variation and not carry over from a former note that already ended. Keeps it more natural and randomized. If you don’t want this behavior, filter the notes before sending MIDI to this script, and merge them later with the pitchbends on the MIDI bus (after the script).

https://sites.google.com/site/octarone

Pitchbend Filter by Note Channel

ZynAddSubFX free software-synthesizer by paulnasca 2

Pitchbend Filter by Note Channel is a free studio tools VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Pitchbend Filter by Note Channel is a simple MIDI-only JSFX script that filters the Pitchbend messages by the last Note On’s channel, while leaving all other messages intact. That is, if a Note On is encountered, it will filter out any pitchbends with a channel that does not match the channel of the note, until the next Note On is received which may change this channel. Keep in mind that even if these pitchbends may be filtered out, their values are still remembered, so that if a new Note On happens that uses another channel’s pitchbend, its value will be restored to the exact last value it had (even though it wasn’t sent before).

The main purpose of this script arised from the Key Tuner. This is because the Key Tuner splits notes on different channels with different pitchbends, so we want a way to filter out the respective pitchbends for a given note’s channel. If you have a note splitter available but cannot split the Pitchbends properly to different paths/synths, then just send the entire pitchbend bus to the different destinations, and use this script as the first thing in each of them to filter out pitchbends that are unwanted, by using the notes and their channels (that were split).

You’ll probably not find a use for this script unless you’re doing weird stuff like me, but I released it anyway, who knows maybe it is useful to you. Slightly more information on its dedicated page here.

https://sites.google.com/site/octarone

Pitchbend Inverter

ZynAddSubFX free software-synthesizer by paulnasca 2

Pitchbend Inverter is a free studio tools VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Pitchbend Inverter is a very simple MIDI-only JSFX script that inverts the Pitchbend’s effective value: up-shifts become down-shifts of equal amount, as long as the receiving synth has an equal up/down range on both sides (which should be the most common case). It also handles the fact that negative (down) pitchbends are slightly more precise than positive (up) pitchbends (8192 values instead of 8191, because of zero), so it does the proper conversion. Please note that it inverts all pitchbend messages, on any channel. If you want only a specific channel inverted, then please route it accordingly in the host.

One use of this script would be to link the inverted result to a synth parameter that should go the opposite way of the pitchbend. For example, let’s say you have a simple sampler that does basic pitchbending by slowing down or speeding up the samples. You want to time-stretch the sample itself, without affecting its pitch, but only its speed. To do that, send the pitchbend to the sampler to have the samples play faster or slower (which also modifies their pitch), and then use a pitch shifter effect, with the amount of shift equal to the inverted pitchbend. Basically, you play the sample faster and then down-pitch it back, or play it slower and then up-pitch it back. So, you just achieved crude (and manual) time-stretching. This is just one example, feel free to use it for anything else.

https://sites.google.com/site/octarone

Pitchbend Adder

ZynAddSubFX free software-synthesizer by paulnasca 2

Pitchbend Adder is a free studio tools VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Pitchbend Adder is a simple JSFX script used to add an audio signal to Pitchbend events on the channels specified. The audio signal should be “normalized” between -1 and 1, representing the pitchbend range, which gets added to the pitchbend messages already present in the MIDI bus (but also creating new pitchbend messages if needed). So be careful! You can actually get out of range quite easily (it will get capped to max/min values in such a case). Other MIDI events are passed through. The input audio signal that gets added to the Pitchbend is mono, and it is added to all the channels specified. If you use it in a stereo configuration, it will probably be the left channel, so keep it in mind.

As you can imagine, the purpose of this little script is to be able to manipulate Pitchbend from audio, while adding it on top of other Pitchbend messages already present. If there are no such messages, then it will simply create Pitchbend messages out of the audio signal (because it is added to zero), while its precision is not limited to buffer chunks (unlike ReaControlMIDI), so it is superior even if you use it only to create pitchbends out of audio signals.

https://sites.google.com/site/octarone

Key Tuner

Key Tuner free tuner by octarone

Key Tuner is a free tuner VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Key Tuner is a little MIDI-only JSFX that allows you to play any scale you want with standard MIDI, with any tuning you choose, and it works on any synth as long as it supports pitchbending (or the VST2 per-note detune, but very few do, and even so you will need special conversions). Microtonal scales? Scales with more than 12 notes per octave? No problem. You can define any kind of relationship between the notes that you want, AND tune a specific base note to whatever frequency you want.

The way it works is pretty simple even though slightly more complex under the hood. It maps each input note based on a scale formula to a specific output note with Pitchbend. So basically, input note → output note + pitchbend (on a specific channel). Furthermore, for each scale, you can change the root dynamically to a note on the scale relative to the base (or key), so it still falls on the scale relative to the base, but the relationship between the notes is now around the new root. This allows you to use ONE scale even for different chord roots (but on the same scale) by just supplying a MIDI note on Channel 16 corresponding to the new root. So, you can have one Just Intonation scale for example, but be able to play chords with any root and proper relationships. What’s more, it can actually store up to 128 Scales which you can change with a Program Change as desired, the scales can be completely different this time (and arbitrary tunings for each), no need to have several instances of this script for the same instrument.

Features:

  • Play any scale with normal MIDI notes, and tune it to any base frequency you want.
  • Scales can have arbitrary relationships between their notes, and any number of notes (per octave).
  • Works with any synth as long as it accepts Pitchbend events by sending it (and the respective notes) on different channels for polyphony.
  • Pitchbend range (of the receiving synth) is adjustable per instance, and goes down to half a semitone.
  • Tries to make best use of all the available channels (max specified by user); the iteration favors notes that were released for a longer time.
  • The root can be changed relative to the base (key) of the scale as you play! Notes/Chords will then play relative to the new root, so they will have proper relationships for chords.
  • You can individually fine-tune (detune) notes, even in chords, using special Note After-Touch events on Channel 16. This is on a note-by-note basis.
  • Pitchbend input is accepted as well and simply added on top of the detune pitchbend. (please make sure it doesn’t get clipped, though).
  • It can store up to 128 Scales for each instance, which can be changed with Program Change messages.
  • Scales and their tunings use a custom text format in an external tool (and imported into this), but it is pretty close to the popular Scala .scl format, notes can be copy/pasted.
  • Master and Slave versions are available and bundled, to share scales per process and control them from one place (the Master).

PLEASE NOTE: Key Tuner cannot edit the scales itself, it has to load them. I’ve bundled a simple AutoHotkey script that reads the custom Scale format specific to this script and then dumps the preset or bank which can be loaded into ReaJS (which hosts this JSFX). Unfortunately, the import won’t work if hosted natively into Reaper without ReaJS (i.e using the built-in JSFX hoster); this is because native JSFX cannot load fxp or fxb files, and as far as I know, they do not allow loading of a preset, only importing one to the preset library (which is not what is needed). So, you’ll have to use ReaJS as a VST plugin even if you use Reaper.

You may find it a bit lame to have this restriction (and with AutoHotkey) but it is all pretty readable and open source so feel free to change it if you have different requirements and needs. That said, I personally use it mainly on Linux with Wine and it works just fine so I’ve no problems with it (could work also on Mac OS X if you aren’t bothered by it being non-native).

For more information and a tutorial visit its dedicated page here.

https://sites.google.com/site/octarone

Combiner (Pitchbend)

ZynAddSubFX free software-synthesizer by paulnasca 2

Combiner (Pitchbend) is a free studio tools VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Combiner (Pitchbend) is a very simple MIDI-only JSFX script that just combines pitchbends from two different channels into one, by summing them up. Channels 1-8 are the main channels, while 9-16 are the channels that get summed up (combined) with the main channels, but in regards to Pitchbend only — other messages are passed through unchanged. For example, channels 1 and 9 will combine into output channel 1 (that contains the sum of their pitchbends), channels 2 and 10 will combine to output channel 2, and so on. (so only the first 8 channels will have pitchbend outputs)

This can be useful if you already have pitchbend messages but want to fine-tune it manually by combining them into one, if the synth does not support multiple ways to control that behavior.

https://sites.google.com/site/octarone

Channel Randomizer

ZynAddSubFX free software-synthesizer by paulnasca 2

Channel Randomizer is a free studio tools VST plugin Reajs and Reaper developed by octarone. Compatible OS(s): anyos.

Channel Randomizer is a simple MIDI-only JSFX script that randomizes the channel of incoming MIDI events. It keeps track of what channel it randomized for Note On events so that the same channel is used for a Note Off event for the same note, but otherwise it completely randomizes the channel. Yes it will randomize the channel of any other events other than notes as well, with no relationship between one another. If you don’t want that, have the other events filtered out and join them later after this script (so they will be passed through), but that depends on your DAW’s routing.

https://sites.google.com/site/octarone