News
Midi Events
Main Panel
String Synth
Flute Synth
Audio Effects
Goal of the software is to reproduce sounds of strings, organs, flutes
and drums in real time. The sound generation is based on the physics of
the instruments. That means all sounds created by this software are the
result of a mathematical model based on some physics about how the sounds
shape varies in time. You have access to most of the models parameters
through a graphical interface. Further more most of the parameters can
be controlled by MIDI controllers.
The intro of version 1.6.2 is some years old and CPU performance has
increased alot. RTSynth is now developed on an AMD Athlon XP1700+ based
PC. Here are some benchmarks for the effects measured on my machine:
RTSynth v1.9.0 benchmarks on Athlon XP 1700+ with frame
buffer size of 128:
off
: 8.6 mS, NURT 3365
All together : 2359 mS, NURT 12 NURT: number of units playable in realtime at 44100Hz, stereo. |
And yes i tried the above number. My machine can play even more than
the given 12 complete effect panels;)
Anyway from the numbers above RTSynth should still be usable on a Pentium
200 like system.
To perform well, RTSynth should be set to userid root with `chown root
RTSynth; chmod +s RTSynth`. This will allow RTSynth to use the real
time scheduler for best run time behaviour. After getting the scheduler
RTSynth is setting back its root priority to the normal users one.
To make the choice of the MIDI input source as flexible as possible, RTSynth can read midi events from a input stream. This can be a device, a pipe (stdin) or a named pipe (fifo).
Possible command line invocations:
RTSynth normal execution. Reading midi events from /dev/midi00.
output options:
RTSynth --output=/dev/mydev
or
RTSynth -o /dev/mydev
use the given audio output device (must be a OSS /dev/dsp compatible device).
input source:
RTSynth --input=/dev/midi
RTSynth -i /dev/mido
or
RTSynth </dev/mymidi
to read from a given midi device
RTSynth <fifo
cat foo | RTSynth
to read midi events form a fifo or pipe.
I have tried to use EsounD as an alternative audio output destination, but the current version of esound does not support real time audio. To be more detailed, the audio stream esound opens for RTSynth to write to does not offer a constant rate of samples per second like the /dev/dsp device. Maybe ALSA will become the future of audio and midi subsystems for Linux, but I did not take a closer look on it so far, maybe when upgrading to linux 2.2 ...
If you don´t have a midi keyboard (like I am) or any other external midi equipment, you can use clavier to put you computer keyboard into a midi one. The necessary command lines to connect clavier with RTSynth would look like:
mkfifo /tmp/midififo
RTSynth </tmp/midififo
clavier -o /tmp/midififo
or you can use SoftWerk
a cool software "analogue" sequencer to trigger RTSynth.
Known bugs: Overdriving the PM-resonator effect to hard may crash
the effect. You have to restart RTSynth to get it work again. The flute
synth may also crash when using some extreme settings. Loading of corrupt
patch files may break down RTSynth completely.
The blue edition reached another milestone on its way to version 2 -> version 1.9.0.
Version 1.8.0
New release version 1.8.0 (code name "blue") is available for download.
"Renovated" the quite old DSP core a little bit to fit to modern CPUs by removing lookup-tables and replacing approximations by their exact formulas.
Benefits.
Version 1.6.8
Version 1.6.2
BugFix: eliminated problems with reading from /dev/midi on linux 2.2.x based systems.
Version 1.6.2
BugFix: eliminated problems with reading from /dev/midi on linux 2.2.x based systems.
Version 1.6.2
BugFix: eliminated problems with reading from /dev/midi on linux 2.2.x based systems.
Changed handling of midi NoteOff events -> eliminating possible multiple playing of the same note.
Added new main-panel. You can now run several synth-/effect-modules and connect them together.
Improved and scale-able reverb effect.
Some
minor bug fixes and runtime optimizations.
Version 1.6.0 is the first glibc based version. Advantages over the older 1.5.x versions are:
With in the main panel you can:
Every Synth- and Effect-modul is represented by a tile:
You can set the
midi channel and switch on/off a audio module directly from the tile by
using the control elements shown in the picture.
Pressing the left mouse button on the audio output symbol and dropping
it over the target tile will build a connection. Doing the same process
between already connected modules removes the connection.
Left/right mouse button over the midi channel field decrements/increments
the channel value.
Circular connections between modules are not allowed and will be rejected
by the program.
Pressing the right mouse button opens a context menu.
Any module with a output that is not explicitly connected to another
one is connected to the main output by default.
(back)
as the name suggests this synth is mainly designed to produce string
like sounds. But it is not limited to that. You can also use the string
synth for example to produce a sinus wave sound or together with the resonance
able low pass filter some cool synthetic sounds. It is a polyphonic synthesizer
with up to 24 independent voices based on the so called `physical modelling
synthesis´. Because the base algorithm does not have much to do with
the physics of a real string instrument (the interaction between the string,
the instrument corpus and the players fingers are much to complex to be
calculated on a PC in real time), I call it the `energy dissipation model´.
The maximum number of playable voices of course depends on the speed of
your machine, synthesizer settings like filters and the number and type
of activated audio effects.
To become familiar with the synthesizer settings you may try out some of the synth voices included in the archive. A small example starting with a synth produing a sine wave, as mentioned above, and then modifing it to went into a "SynthBass" sound is given here:
1. We want a clean sinus wave -> Wave ampl. = 1, Wave type
= sin.
2. The sine wave should have a constant amplitude. This is meet
by setting all damping parameters in the Energy
dissipation panel to "no damping" -> frequency = 1, freq max
= 1, filter follows note = no, feedback = 1, filter attack = 0, off-delay
= 0. It is a little bit hard to set the feedback
to a value of exact 1.00, soft damp. can help in do it for
you by setting it to a value greater zero.
3. Normally a sinus sound needs no output filter but as you
can hear on some notes there is some noticeable distortion. To reduce it
we use the
Output filter with filter
follows note = lin, frequency = 1 (filter any frequency higher
than the base octave), bessel, 12 dB. You may
also use a small resonance value (0.1) to get a even sharper
filtering.
4. Now, we want to apply a conventional amplitude envelope to
the sinus wave to get a short percussive sound. The Output
filter envelope can be used for that -> env mode = normal, env
ampl. = 0 (we don't want a filter sweep), env speed = 1
(fastest attack), env sustain = 0 (no sustain at all),
env release = 0.2 (short sound). And last but not
least in the Output and note controlpanel
the ampl-env must be activated.
5. We modify the sound now a little bit. For the wave
type we choose an unfiltered rectangular wave (crect)
an apply an output filter envelope by setting
env ampl. to
1.4 and to make the sound a bit more interesting we apply a value of 0.3
to the output filter resonance. To apply note velocity to
the filter sweep amplitude we switch the
env mode to accent.,
to ampl. if we want the note volume to be independent from
the note velocity, and to speed if our intention is to modulate
the envelope speed by the note velocity. To have a sustained sound again
we can switch the ampl-env off.
6. to produce a more string like sound we switch the output
filter to off, the ampl-env to off. Set the Wave ampl. to 0.5, the Random
filter frequency to 0.53, its filter follows note mode to "cool" and let
Energy
dissipation do the decay stuff by setting: frequency = 0.68,
freq
max = 0.89,
filter order = 1, filter follows
note = "cool". To have a slowly decayed sound off delay =
30, off-feedb. = 0.998 for example can be set.
7. now we switch the Output filter on again to
have a some what different "SynthBass" sound than in Step 5.
The String Synth panels:
The string synth panel is subdivided into smaller panels sorted by
functionality.
This together with Random Filter and Additional wave is the "heart" of the synthesizer. Here you can set the parameters for the time dependent behaviour of the oscillator like frequency dependent damping, cut off frequency ...
The random filter is used to filter the noise source output and may also be used to filter the output of the additional wave. The filtered random noise together with an additional wave are used to initialize the oscillators starting wave form. The usage of a random noise amount to produce a wave form makes the sounds generated by the string synth quite different form the static sounds generated by sample based synthesizers. Like for a real string instrument the produced sound will never be exact the same even when playing the same note.
In addition to the noise source the output of the additional wave unit can be used to build the starting wave form. This panel includes a mixer for the balance between the random noise and the additional wave amplitude.
Here the generated wave can be filtered by a resonance able low pass filter.
Settings for an output filter and/or amplitude envelope can be done here. Each String Synth voice has only one envelope generator but it can be used for output filter and amplitude modulation.
Sound volume, amplitude attack, decay, amplitude envelope and more can be set here.
(back)
frequency | Cut off frequency used for frequency dependent energy dissipation (damping by successive low pass filtering). This one together with `feedback` give you basic control over the time dependent character of the generated sound. (short, sustained, ...) | |
freq. max | Highest cut off frequency. A value of 1 is equal to infinite. | |
filter order | Setting the damping rate of the energy dissipation
low pass filter.
order : 1 <=> 6 dB, 2 <=> 12 dB, ... |
|
filter follows note | no | fixed filter frequency. |
yes | filter frequency follows note value. Higher note gives higher cut off frequency. | |
cool,usr1,usr2 | filter follows note value non linear. | |
feedback | Frequency independent energy loss. ( 1 = no damping ) | |
soft damp | Starting with the value given by `feedback`. Reduce damping until a feedback value of 1 is reached. If ´off delay´ is in use the ´off-feedb.´ value will be used after the ´off delay´ time has been reached. A value of zero means, disable "soft damping". | |
filter attack | Attack time is given in number of periods. (´fixed time´ off). A value of zero means disable ´filter attack´. At the end of ´filter attack´ time the filter frequency value given by ´frequency´ is reached. | |
fixed time | Interpret the number given in ´filter attack´ as a fixed length time, independent of the note value. | |
start freq | The frequency of the energy dissipation filter used by the ´filter attack´ as the starting value. | |
off delay | Time in periods until the ´feedback´ value is replaced by the ´off-feedb.´ value. A value of zero means, disable ´off-feedb.´. | |
off-feedb. | Damping value used after the time given by ´off delay´ has been exceeded. |
frequency | Cut off filter frequency used for the noise source and wave given by the Additional wave panel. |
filter follows note | For description take a look at Energy dissipation panel. |
Wave ampl | Mixer for the amplitudes of the wave given by ´Wave type´ and the filtered noise source. A value of zero means only noise and a value of 1 only wave as source. |
Wave type | The wave type. The choices "crect", "csaw" and "ctri" are the same
as their counterparts without the leading "c" but will not go through the
Random
filter.
"piano", "piano2", "metal" and "sawres" are a little bit more complex wave types and functions. |
cont level | Amount of continous energie that flows into the system. |
cont flow | Enable continous energie flow. |
clean flow | When enabled the amount of energie has the "clean" time shape of the selected ´Wave type´. |
frequency | Cut off frequency of the low pass filter. This value can be altered in real time by the midi pitch bend. | |||
resonance | Amount of filter resonance. | |||
filter type | critical | critical filter characteristics. | ||
bessel | filter with Bessel characteristics. | |||
butterw | " " Butterworth " | |||
tscheby | " " Tschebyscheff " | |||
tscheb3 | ditto with 3 dB cut off resonance. | |||
NOTE: The filter types are only correct for filters without resonance. | ||||
filter order | off | filter off. | ||
6, 12 , 24 dB | Low pass filter with the given damping. | |||
+12, +24 dB | Mix of filtered and unfiltered output. | |||
filter follows note | no | filter frequency is fixed. | ||
lin | filter frequency follows note. A value of 1 means same octave as the played note, value = 2 one octave higher ... NOTE: This values are only approximate. | |||
usr | filter frequency follows note value non linear. | |||
env mode | off | no filler/amplitude envelope. (saves lots of CPU time) |
normal | envelope speed and amplitude are independent from note velocity. | |
accent | envelope amplitude depends on note velocity. | |
acc.inv | ditto but with inverse dependency. | |
ampl. | like accent but the note velocity only affects the envelope not the volume of the played note itself. | |
a. inv | ditto but with inverse dependency. | |
speed | like ampl. but now the envelope speed depends on the note velocity, note volume is constant. | |
s. inv | ditto but with inverse dependency. | |
env ampl | The amplitude of the envelope. Setting this value to zero will disable the filter envelope but has no influence to the amplitude envelope behaviour. | |
env speed | The attack speed of the envelope. A value of 1 means no attack phase. | |
env sustain | The sustain time of the envelope. | |
env release | The release speed of the envelope. |
volume | The amplitude of the played sound. |
mute | |
attack | The attack time of the amplitude envelope. A value of zero means no amplitude attack. |
release | The release time of the sound after receiving the `midi note off` event. |
silence | The number of "silence" played periods of the sound. Will normally give a more soft attack sound. |
LFO freq. | The frequency of the amplitude envelope LFO. |
LFO ampl. | The amplitude of the LFO. A value of zero disables the LFO. |
dc-filter | A filter to reduce the DC part of the generated sound. Normally not needed. |
ampl-env | When set, the "Output filter envelope" can also be used as a input for the amplitude envelope. |
modulation | Some kind of modulation applied to the sound. |
bass boost | This will boost the amplitude of low frequency notes. |
auto pan | Adds a stereo placement to the sounds. |
lin velocity | Selects a linear MIDI velocity to amplitude mapping. |
(back)
This is a monophonic synth. It implements the ´base clarinet´
and the ´base flute´ algorithms with some small extensions
and modifications. Since version 1.8.0 the flute synth has become really
usable. The tuning is now fine and instabilities as found in older versions
have gone away ;)
Oscillator settings
Breath
Pressure - tremolo
Output filter
Output control
(back)
RTSynth has seven hard wired audio effect units.
Effects in order of their connection:
Distortion
The distortion effect has a soft mode, emulation of a tube like distortion, and a normal mode for a transistor like distortion.
Universal filter
This universal filter can be used as a LP, HP or BP filter. The filter order can be set from 6 dB to 24 dB. It also supports a simple filter sweep function.
PM resonator
The PM resonator gives you the possibility to add a "body" to your sounds.
It is a multi resonator with a non linearity on higher input levels. As
you can see from the "PM resonator" panel/table, this effect has alot of
settings to play with ;) Just as in real life you can tune the PM resonator
in such a way that some notes will sound "dead", so be careful ... but
usually the PM resonator is a good friend in making your sounds more reach
and full.
Please use one of the settings from the presets as an starting point
to get somewhat familiar with this effect.
PM resonator
feed | Amount of feed back. The resonator will start to oszillate when set to high values. (good values are around 0.5) High values may be useful in finding a resonance mode setting. |
feedfreq | Controlls decay of high frequencies and therefor the sound characteristics of the effect. Real physical resonators like a guitar body have a fast decay of high frequencys. Anyway a very low value will supress any resonance on higher notes. |
Intensity | Here the amount of the continous "energie flow" through the resonator, which is necessary to get some resonance, can be set. Good values are 0.6-0.8. Other values may give higher non linear effects. |
Input gain | This effect has a limit for the maximum input value. Before this limit is hit the effect becomes more and more non linear. The input gain control allows you to down/up scale the input value. Be careful at very low gain values the movement of other sliders can generate quite loud noises as in this case the output gain is set automatically to very high values. |
efx vol. | The volume of the effect. |
efx only | When switched on only the effects signal will pass through but not the original one. Properly interesting when cascading several resonators. |
reso. mode | A value of 1.0, 0.5, 0.25, ... will result in a resonator which most likely will resonate at its base frequency and all otcaves where smaller values will prefer the use of higher octaves... but thats not what we normaly want to have. We can achieve to have a resonator with much more resonance modes by choosing any other values. Good starting points are to move the mode value slightly out of tune :) |
mode fine | Fine tune of current reso. mode value (+/- 15%). |
scale x20 | Multiplies reso. mode by value of 20. |
frequency | The base resonance frequency of the resonator in Hz. |
freq. fine | Fine tune base resonance frequency (+/- 10%). |
Resonator
This is an equalizer with a bank of five band pass filters. Setting a filter to a value of zero disables this filter and therefor saves CPU time.
Chorus
The well known chorus effect.
Reverb
A simple reverb effect. In stereo mode two reverbs, one for each channel, can be mixed to give a more complex effect.
Delay
The delay effect can operate in stereo mode to give a ping-pong like
effect.
(back)