Opinionated, feature-incomplete audio engine, DSP library, and live synthesizers.
This project is set up as a Cargo Workspace containing:
aillen-core: A modular DSP library hosting mathematical primitives, oscillators, filters (including Biquad, DJ performance, Formant, Comb, and Elektron Base & Width serial filters), ADSR envelopes, sidechainable dynamic effects (Compressor, AM/Ring Modulator), wavefolding saturators, bitcrushing degraders, a stereo delay (Tape and Granular modes), an Elektron-style stereo reverb, a sequential trackFxChain, and instrument implementations (including a 2-operator FM synth, a sampler, a 303 bass synth, a rave hubass synth, a modal resonator synth, a Monomachine-inspired SuperWave synth, and a sample bank).aillen-cli: A standalone performance synthesizer that wrapsaillen-corewith real-time stereo audio (cpal) and an asynchronous UDP OSC server mapped via lock-free channels (crossbeam-channel).
The following ASCII diagram illustrates the audio signal path from the instruments to the final stereo hardware output, highlighting the track-level FxChain inserts, the send/return routing, and the master bus:
+---------------------------------------+
| TRACK |
| +---------------+ L |
| | Instrument |---------------+--->|
| +---------------+ | R |
| v |
| +---------+|
| | FxChain ||
| +---------+|
| / | |
| (Sends: Dly/Rev) v |
| | | +---------+|
| | | | Panner ||
| | | +---------+|
| | | | |
+----------------|-----|----------|-----+
| | |
v v v
[Sends] [Sends] [Sum Dry]
| | |
v v |
+---------+ +---------+ |
| Return | | Return | |
| Delay | | Reverb | |
+---------+ +---------+ |
| | |
| v |
| +---------+ |
| | HighPass| |
| | (120 Hz)| |
| +---------+ |
| | |
v v v
+-----------+---> [Mixer Summing]
|
v
+-----------------+
| Master Volume |
+-----------------+
| Master DJFilter |
+-----------------+
| Master WaveLoss |
+-----------------+
| Master Limiter |
+-----------------+
|
v
Stereo Output (DAC)
Each track owns an independent FxChain containing a sequential arrangement of stereo processors:
FxChain (Stereo)
L Input R Input
| |
v v
+---------+ +---------+
|AmRingMod| |AmRingMod| <--- Sidechain (optional)
+---------+ +---------+
| |
v v
+---------+ +---------+
|WaveFoldr| |WaveFoldr|
+---------+ +---------+
| |
v v
+---------+ +---------+
|Distortn | |Distortn |
+---------+ +---------+
| |
v v
+---------+ +---------+
|Bitcrshr | |Bitcrshr |
+---------+ +---------+
| |
v v
+---------+ +---------+
|CombFiltr| |CombFiltr|
+---------+ +---------+
| |
v v
+---------+ +---------+
|DjFilter | |DjFilter |
+---------+ +---------+
| |
v v
+---------+ +---------+
|Compressr| |Compressr| <--- Sidechain (optional)
+---------+ +---------+
| |
v v
L Output R Output
To build the entire workspace optimally, use the --release flag:
cargo build --workspace --release# Start with default settings (8 voices, port 8000, and scanning ~/Desktop/KairosSamples)
cargo run -p aillen-cli --release
# Start with a custom sample directory
cargo run -p aillen-cli --release -- --samples-dir "/path/to/my/breaks"
# Start with specific options
cargo run -p aillen-cli --release -- --port 9000 --voices 4The standalone executable accepts the following arguments:
-p,--port <PORT>: UDP port to listen for incoming OSC packets (default:8000).-v,--voices <VOICES>: Number of polyphonic synth voices to allocate (default:8).-d,--device-index <DEVICE_INDEX>: Optional index of the host audio output device to use.-l,--list-devices: Flags to list all available host output devices and exit.-s,--samples-dir <SAMPLES_DIR>: Path to a directory containing audio samples to load on startup.
If you have multiple audio interfaces, use these flags to select the correct one:
# List all available output devices and their indices
cargo run -p aillen-cli -- --list-devices
# Start using a specific device by index (e.g., index 2)
cargo run -p aillen-cli -- --device-index 2The CLI launches an interactive ASCII Terminal User Interface (TUI) designed for standard terminals (configured for exactly 80 columns x 43 rows).
-
Layout Grid:
- Top (Rows 0-30): Displays active track waveforms (up to 4 track slots in a 2x2 grid) with vertical left/right channel oscilloscope scopes and real-time track OSC command logs.
- Bottom-Left (Rows 31-42): Displays the master output volume horizontal oscilloscope scope and master-level OSC logs.
-
Bottom-Right (Rows 31-42): Plots a real-time 45° Goniometer / Stereo Vectorscope (
$Y = \text{Mid} = L + R$ ,$X = \text{Side} = L - R$ ) displaying phase correlation, stereo field width, and alignment.
- LRU Dynamic Display: Out of the 8 available tracks, only the 4 most recently active tracks (based on audio activity or incoming OSC messages) are displayed. When a track goes inactive for 15 seconds, it is swapped out for a more recently active track.
-
Sticky Slots: Tracks remember their last preferred slot index (
preferred_slot) to prevent disorienting jumps when tracks are dynamic swapped.
The engine supports a stereo Mixer with 9 instrument tracks and one delay return track:
- Track 0:
TwoOp(FM Synth) - Track 1:
Sampler(Sample playback engine with multi-format support via Symphonia) - Track 2:
Sampler - Track 3:
Sampler - Track 4:
SynthResonator(Circuit-Bent Karplus-Strong & Modal Resonator Synthesizer) - Track 5:
Sampler - Track 6:
Synth303(Roland 303-like monophonic/legato bass synth) - Track 7:
SynthHubass(Versatile Rave & Bass Synthesizer with detuned unison, filter-bypassed sub-bass, multi-mode filters, drive, LFO, and stereo chorus) - Track 8:
SwaveSynth(Monomachine SuperWave 5-saw detuned cluster & 4-voice chord ensemble synth) - Return Track (Delay): A stereo delay return track (100% wet by default).
- Return Track (Reverb): A stereo reverb return track (100% wet by default).
All OSC messages must target the appropriate track path (/track/<id>/) or mixer path (/mixer/).
| Address | Arguments | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/panic / /mixer/panic |
None | - | - | Panic command. Immediately silences all active notes on all tracks. |
/mixer/master/volume |
f |
f32 |
1.0 |
Master output volume gain factor (0.0 to 2.0+). |
/mixer/master/filter |
f |
f32 |
0.0 |
Master output DJ filter position. Low-Pass sweep: -1.0 to 0.0 (20000 Hz down to 20 Hz). High-Pass sweep: 0.0 to 1.0 (20 Hz up to 20000 Hz). Center 0.0 is bypass. |
/mixer/master/waveloss/drop |
i |
i32 / usize |
0 |
Master WaveLoss drop segments count. Range: 0 (bypass) to outof value. |
/mixer/master/waveloss/outof |
i |
i32 / usize |
40 |
Master WaveLoss total segments per cycle. Range: 1 to 1000. |
/mixer/master/waveloss/mode |
i |
i32 / usize |
1 |
Master WaveLoss mode. 1 = deterministic, 2 = random. |
/mixer/master/limiter/gain |
f |
f32 |
1.0 |
Pre-limiter gain boost multiplier. Range: 1.0 to 10.0+. |
/mixer/master/limiter/release |
f |
f32 |
0.05 |
Limiter release time in seconds. Range: 0.01 to 1.0. |
/mixer/master/limiter/ceiling |
f |
f32 |
0.99 |
Brickwall output ceiling amplitude limit. Range: 0.01 to 1.0 (e.g. 0.99 for -0.1 dBFS). |
/track/<id>/volume |
f |
f32 |
0.8 |
Individual track volume gain factor. Range: 0.0 to 2.0+. |
/track/<id>/pan |
f |
f32 |
0.0 |
Track panning position. Range: -1.0 (Hard Left) to 1.0 (Hard Right). |
/track/<id>/mute |
i/b |
i32 / bool |
0 (false) |
Mute (1 / true) or unmute (0 / false) the track. |
/track/<id>/send/delay |
f |
f32 |
0.0 |
Send level to the delay return track. Range: 0.0 (dry) to 1.0 (maximum send). |
/track/<id>/send/reverb |
f |
f32 |
0.0 |
Send level to the reverb return track. Range: 0.0 (dry) to 1.0 (maximum send). |
/track/<id>/sidechain/source |
i |
i32 |
-1 |
Set sidechain source track index. Range: 0 to 8. Negative value (e.g., -1) disables it. |
These parameters control the stereo delay return track:
| Address | Arguments | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/mixer/return/delay/time |
f |
f32 |
0.3 |
Delay time in seconds. Range: 0.01 to 3.0 (Tape) or 4.0 (Granular). |
/mixer/return/delay/feedback |
f |
f32 |
0.5 (Tape) / 0.4 (Gran) |
Delay feedback volume factor. Range: 0.0 to 1.0 (avoid values >= 1.0 to prevent feedback loops). |
/mixer/return/delay/mode |
i |
i32 / usize |
0 |
Delay engine mode. 0 = Tape Delay, 1 = Granular Delay. |
/mixer/return/delay/pingpong |
i/b/f |
bool / i32 / f32 |
false |
Enable/disable ping-pong channel routing (feedback crosses left/right channels). |
/mixer/return/delay/drive |
f |
f32 |
0.2 |
Tape saturation input drive factor (Tape mode only). Range: 0.0 (clean) to 1.0 (heavy saturation). |
/mixer/return/delay/grain_size |
f |
f32 |
0.1 |
Granular delay grain duration size in seconds. Range: 0.01 to 0.5 (10ms to 500ms). |
/mixer/return/delay/density |
i |
i32 / usize |
4 |
Granular delay active grain density count. Range: 1 to 8. |
/mixer/return/delay/spray |
f |
f32 |
0.02 |
Granular delay randomized spray/jitter start offset in seconds. Range: 0.0 to 0.5 (0ms to 500ms). |
/mixer/return/delay/pitch |
f |
f32 |
1.0 |
Granular delay pitch scaling factor ratio. Range: 0.5 (one octave down) to 2.0 (one octave up). |
These parameters control the stereo reverb return track:
| Address | Arguments | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/mixer/return/reverb/decay or /mixer/return/reverb/time or /mixer/return/reverb/size |
f |
f32 |
0.5 |
Reverb size/decay time multiplier. Range: 0.0 (small room, fast decay) to 1.0 (infinite freeze sustain). |
/mixer/return/reverb/tone |
f |
f32 |
0.0 |
Reverb tone damping. Range: -1.0 (dark room, damped LP) to 1.0 (bright room, high-cut HP). |
Each track features an independent effects chain that can be modulated in real-time via OSC:
| Address | Arguments | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/track/<id>/fx/filter/position |
f |
f32 |
0.0 |
DJ filter position. Low-Pass sweep: -1.0 to 0.0 (20000 Hz down to 20 Hz). High-Pass sweep: 0.0 to 1.0 (20 Hz up to 20000 Hz). Center 0.0 is bypass. |
/track/<id>/fx/ring_mod/mode |
i/b |
i32 / bool |
0 (false) |
Enable/disable Ring Modulation (0: Off, 1: On). |
/track/<id>/fx/ring_mod/source |
i |
i32 |
0 |
Carrier source. 0 = Sine oscillator, 1 = Self-modulation, 2 = Sidechain input. |
/track/<id>/fx/ring_mod/depth |
f |
f32 |
0.0 |
Wet/dry modulation mix. Range: 0.0 (bypassed) to 1.0 (fully modulated). |
/track/<id>/fx/ring_mod/freq |
f |
f32 |
440.0 |
Carrier oscillator frequency in Hz. Range: 0.1 to 20000.0. |
/track/<id>/fx/distortion/mode |
i |
i32 |
0 |
Saturation mode. 0 = Bypass, 1 = Tanh, 2 = HardClip, 3 = Wavefold. |
/track/<id>/fx/distortion/drive |
f |
f32 |
1.0 |
Distortion input gain/drive factor. Range: 0.0 to 10.0 (values > 1.0 increase saturation). |
/track/<id>/fx/distortion/mix |
f |
f32 |
0.0 |
Wet/dry distortion mix. Range: 0.0 (dry) to 1.0 (wet). |
/track/<id>/fx/wavefolder/drive |
f |
f32 |
1.0 |
Wavefolder input drive gain multiplier. Range: >= 1.0. |
/track/<id>/fx/wavefolder/folds |
f |
f32 |
0.0 |
Wavefolder folding intensity. Range: 0.0 (bypass) to 1.0+ (active folding). |
/track/<id>/fx/wavefolder/symmetry |
f |
f32 |
0.0 |
Wavefolder symmetry/DC offset shift before folding. Range: -1.0 to 1.0. |
/track/<id>/fx/bitcrusher/bits |
f |
f32 |
16.0 |
Bitcrusher quantization bit depth. Range: 1.0 to 16.0 (16.0 is bypass). |
/track/<id>/fx/bitcrusher/downsample |
i |
i32 |
1 |
Bitcrusher sample rate divider. Range: 1 (bypass) to 64 (hold samples for N steps). |
/track/<id>/fx/comb/freq |
f |
f32 |
440.0 |
Comb filter pitch tracking resonance frequency in Hz. Range: 20.0 to 10000.0. |
/track/<id>/fx/comb/feedback |
f |
f32 |
0.0 |
Comb filter feedback ratio. Range: -0.99 to 0.99 (0.0 is bypass). |
/track/<id>/fx/comb/damp |
f |
f32 |
8000.0 |
Comb filter feedback low-pass dampening cutoff frequency in Hz. |
/track/<id>/fx/compressor/ratio |
f |
f32 |
1.0 |
Compression ratio. Range: 1.0 (no compression) to 20.0 (heavy compression). |
/track/<id>/fx/compressor/threshold |
f |
f32 |
-24.0 |
Threshold in dB, below which compression is applied. Range: -60.0 to 0.0. |
/track/<id>/fx/compressor/attack |
f |
f32 |
0.01 |
Attack time in seconds. Range: 0.0 (instant) to 1.0. |
/track/<id>/fx/compressor/release |
f |
f32 |
0.1 |
Release time in seconds. Range: 0.01 to 5.0. |
/track/<id>/fx/compressor/makeup |
f |
f32 |
0.0 |
Makeup gain in dB. Range: -20.0 to 30.0. |
/track/<id>/fx/compressor/sidechain |
i/b |
i32 / bool |
0 (false) |
Enable/disable sidechain compression modulated by external source. |
| Address | Arguments | Argument Types | Description |
|---|---|---|---|
/track/<id>/note/on |
ff |
[f32, f32] |
[freq, velocity] Triggers a note. Frequency range: 20.0 to 20000.0 Hz. Velocity range: 0.0 to 1.0. |
/track/<id>/note/off |
f |
[f32] |
[freq] Releases a specific frequency, or all notes if no argument is provided. |
/track/<id>/note |
fff |
[f32, f32, f32] |
[freq, duration_ms, velocity] Plays a timed note (Track 0, 4, 6, 7, and 8 only). Duration range: 1.0 to 10000.0 ms. |
The core DSP library offers several high-quality effects modules:
A sidechainable peak-detecting dynamics processor.
- Bypassed by default (Ratio = 1.0).
- Parameters:
threshold:f32(dB). Default:-24.0. Range:-60.0to0.0.ratio:f32(ratio multiplier). Default:1.0(transparent). Range:1.0to20.0. Clamped.max(1.0).attack:f32(seconds). Default:0.01(10ms). Range:0.0to1.0.release:f32(seconds). Default:0.1(100ms). Range:0.01to5.0.makeup_gain:f32(dB). Default:0.0. Range:-20.0to30.0.
- Sidechaining: Can compress the signal based on a secondary input channel.
A modulation processor supporting multiple carriers.
- Bypassed by default (Depth = 0.0).
- Source selection:
Sine(0): Internal sine wave oscillator.SelfMod(1): Modulates input with itself.Sidechain(2): Modulates input with an external sidechain signal.
- Parameters:
depth:f32(modulation wet/dry mix). Default:0.0(bypassed). Range:0.0to1.0.frequency:f32(Hz carrier frequency). Default:440.0. Range:0.1to20000.0.ring_mod:bool(true for Ring Modulation, false for Amplitude Modulation). Default:true.
A dual-mode stereo processor containing:
- Tape Delay: Simulated tape-loop delay. Featuring linear fractional-delay interpolation (for pitch glide sweeps), adjustable feedback, warm drive/saturation, and ping-pong routing.
- Parameters:
delay_time:f32(seconds). Default:0.3. Range:0.01to3.0(max capacity 3 seconds).feedback:f32(feedback ratio). Default:0.5. Range:0.0to1.0.ping_pong:bool(cross-channel routing). Default:false.drive:f32(soft-clipping distortion). Default:0.2. Range:0.0to1.0.
- Parameters:
- Granular Delay: Slices incoming audio into overlapping windowed grains.
- Parameters:
delay_time:f32(seconds). Default:0.3. Range:0.0to4.0(max capacity 4 seconds).grain_size:f32(seconds). Default:0.1(100ms). Range:0.01to0.5.density:usize(active overlapping grains). Default:4. Range:1to8.spray:f32(jitter offset in seconds). Default:0.02. Range:0.0to0.5.pitch:f32(playback ratio / pitch factor). Default:1.0. Range:0.5to2.0.feedback:f32. Default:0.4. Range:0.0to1.0.
- Parameters:
A zero-crossing wave-dropping distortion processor applied globally at the master output.
- Bypassed by default (
drop = 0). - Parameters:
drop:usize(zero-crossing segments to drop per cycle). Default:0. Range:0tooutof.outof:usize(total zero-crossing segments per cycle). Default:40. Range:1to1000.mode:usize(1= deterministic,2= random). Default:1.
A waveshaping distortion processor with configurable drive, wet/dry mix, and multiple modes:
- Modes:
Bypass(0)Tanh(1): Soft-clipping hyperbolic tangent saturation.HardClip(2): Hard clipping at threshold boundaries.Wavefold(3): Sinusoidal wavefolding distortion.
- Parameters:
drive:f32(input gain factor). Default:1.0. Range:0.0to10.0.mix:f32(wet/dry mix). Default:0.0. Range:0.0to1.0.
A modular Low Frequency Oscillator supporting:
- Waveforms: Sine (0), Triangle (1), Saw (2), Square (3), and Random Sample & Hold (4).
- Parameters:
frequency:f32(Hz). Default:2.0. Range:0.001to100.0. Clamped.max(0.001).waveform:LfoWaveform. Default:Sine.
A parallel multi-peak bandpass filter modeling human vocal tract resonances. Supports smooth vocal sweeps by morphing a single vowel parameter from 0.0 to 1.0 spanning the phonetic vowels [A, E, I, O, U].
- Parameters:
vowel:f32(morph position). Default:0.0. Range:0.0to1.0.
A stable, Zero-Delay Feedback (ZDF) 4-pole resonant ladder filter mimicking transistor/diode ladder designs. Features resonance gain compensation and a high-pass feedback filter to prevent low-end bass cancellation.
- Parameters:
cutoff:f32(cutoff frequency in Hz). Default:1000.0. Range:20.0tosample_rate * 0.49.resonance:f32(feedback amount). Default:0.5. Range:0.0to0.99.
A standard 2-pole Biquad IIR Filter implemented using Normalized Transposed Direct Form II to prevent internal clipping errors. Supports LowPass, HighPass, BandPass, and Notch configurations.
- Parameters:
cutoff:f32(cutoff frequency in Hz). Default:1000.0. Range:20.0tosample_rate / 2.0 - 1.0.q_factor:f32(filter resonance Q). Default:0.707(flat response). Range:0.1to10.0+. Clamped.max(0.1).filter_type:FilterType(LowPass = 0, HighPass = 1, BandPass = 2, Notch = 3).
A performance-oriented filter combining a Low-Pass and High-Pass filter on a single position coordinate parameter:
- Parameters:
position:f32(position sweep). Default:0.0(bypass). Range:-1.0(LP sweep) to1.0(HP sweep).- Position < 0.0: Low-Pass mode (exponentially sweeps cutoff frequency from 20000 Hz down to 20 Hz).
- Position > 0.0: High-Pass mode (exponentially sweeps cutoff frequency from 20 Hz up to 20000 Hz).
A stereo look-ahead peak limiter used to maximize volume level while preventing digital output clipping:
- Parameters:
threshold_gain:f32(pre-limiter gain boost multiplier). Default:1.0. Range:1.0to10.0+.ceiling:f32(output ceiling limit amplitude). Default:0.99. Range:0.01to1.0.release_s:f32(release time in seconds). Default:0.05(50ms). Range:0.01to1.0.
A stereo positioning node for panning signals across a stereo field. Supports three pan laws:
- Modes:
ConstantPowerSin(0): Keeps acoustic output power identical across all pan positions.ConstantPowerSqrt(1): Alternative constant power panning curve.MidSide(2): Constant amplitude-based panning.
- Parameters:
pan:f32(position). Default:0.0(center). Range:-1.0(Hard Left) to1.0(Hard Right).
A simple, single-channel ring-buffered delay line supporting linear fractional-delay interpolation. It is designed to be a lightweight building block for delay-based effects (such as Chorus, Flanger, and Vibrato).
- Parameters:
delay_sec:f32(interpolated delay duration in seconds). Range:0.0to maximum buffer capacity.
A multi-stage Feedback Delay Network (FDN) / Plate Reverb featuring Elektron-style controls:
- Parameters:
size_time:f32(room size and decay factor). Default:0.5. Range:0.0(small room, fast decay) to1.0(infinite sustain / freeze).tone:f32(color damping). Default:0.0. Range:-1.0(dark room, damped LP) to1.0(bright room, high-cut HP).
A non-linear wavefolder effect that folds waveforms exceeding a threshold back on themselves to generate rich, glassy, bright harmonics.
- Parameters:
drive:f32(input gain multiplier). Default:1.0. Range:>= 1.0.folds:f32(folding intensity/mix). Default:0.0(bypass). Range:0.0to1.0+.symmetry:f32(symmetry / DC offset shift before folding). Default:0.0. Range:-1.0to1.0.
A digital audio degrader applying bit-depth quantization reduction and sample-and-hold downsampling.
- Parameters:
bits:f32(quantization bit depth). Default:16.0(bypass). Range:1.0to16.0.downsample:usize(sample rate divider / sample hold steps). Default:1(bypass). Range:>= 1.
A pitch-tracked, feedback-damped Comb Filter for physical acoustic/metallic resonance.
- Parameters:
frequency:f32(resonance pitch frequency in Hz). Default:440.0. Range:20.0to10000.0.feedback:f32(feedback ratio). Default:0.0(bypass). Range:-0.99to0.99.dampening_cutoff:f32(cutoff frequency of the low-pass dampening filter in the feedback loop). Default:8000.0Hz.
A versatile attack-decay-sustain-release envelope generator supporting both clean linear sweeps and snappy analog-modeled exponential curves:
- Curve Modes (
EnvelopeCurve):Linear: Constant rate-of-change segments, ideal for precise modulation and general synth patches.Exponential: Analog 1-pole RC charge/discharge curve using a virtual sub-zero target for snappy decays and punchy transient response (used inSynth303).
- Parameters:
attack:f32(seconds).decay:f32(seconds).sustain:f32(amplitude level,0.0to1.0).release:f32(seconds).curve:EnvelopeCurve(LinearorExponential).
An Elektron Monomachine-inspired serial dual filter consisting of a High-Pass filter cascaded into a Low-Pass filter. The Low-Pass cutoff frequency tracks the High-Pass cutoff via the formula LP_cutoff = Base + Width. Modulating or sweeping base shifts both cutoffs simultaneously across the spectrum while preserving bandwidth.
- Parameters:
base:f32(High-Pass cutoff frequency in Hz). Default:20.0. Range:10.0to20000.0.width:f32(Bandwidth span added to base for Low-Pass cutoff in Hz). Default:20000.0. Range:10.0to20000.0.hp_q:f32(High-Pass resonance Q). Default:0.707. Range:0.1to10.0.lp_q:f32(Low-Pass resonance Q). Default:0.707. Range:0.1to10.0.
Pitch Sweep Env ----+
Pitch LFO ----------+---> Base Pitch (Hz)
|
+-------------------+--------------------+
| |
v (x Ratio + Detune) v
+--------------------------------+ +--------------------------------+
| Operator 2 (Modulator) | | Operator 1 (Carrier) |
| - Waveform (Sine/Saw/Sq/Tri) | | - Waveform (Sine/Saw/Sq/Tri) |
| - Self Feedback (osc2_fb) | | - Self Feedback (osc1_fb) |
| - Modulator Phase Noise | | - Carrier Phase Noise |
+--------------------------------+ +--------------------------------+
| |
v |
[x Op2 ADSR Env] |
| |
v |
+--------------------+ |
| Wavefolder | |
| (Diode Reflection) | |
+--------------------+ |
| |
v |
[x Mod Index (LFO)] |
| |
+-------------------+ |
| |
v v
+---------------------------------------+
| Synthesis Mode Interaction: |
| - 0: Additive: (Op1*Env1 + Op2)/2 |
| - 1: AM: Op1 * (1 + Op2) * Env1|
| - 2: RM: Op1 * Op2 * Env1 |
| - 3: FM (PM): Op1(Phase + Op2)*Env1 |
+---------------------------------------+
|
v
+---------------------------------------+
| Filter Stage (Selected via Switch): |
| Mode A: Standard Biquad Filter |
| (LP, HP, BP, Notch) |
| Mode B: Monomachine Base & Width |
| (Serial Dual HP -> LP) |
| Modulation: Filter ADSR + Cutoff LFO |
+---------------------------------------+
|
v
Output -> Track FxChain
| Address | Argument | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/track/<id>/realtime |
i |
i32 |
0 |
Monotimbral mode toggle. 0 = Polytimbral (default), 1 = Monotimbral. |
/track/<id>/legato |
i |
i32 |
1 (true) |
Legato mode toggle (mono mode only) to skip envelope re-triggering. 0 = Off, 1 = On. |
/track/<id>/mode |
i |
i32 |
0 |
Synthesis Mode. 0 = Additive, 1 = AM, 2 = RM, 3 = FM (Phase Modulation). |
/track/<id>/osc1/waveform |
i |
i32 |
1 (Saw) |
Operator 1 (Carrier) waveform. 0 = Sine, 1 = Saw, 2 = Square, 3 = Triangle. |
/track/<id>/osc2/waveform |
i |
i32 |
1 (Saw) |
Operator 2 (Modulator) waveform. 0 = Sine, 1 = Saw, 2 = Square, 3 = Triangle. |
/track/<id>/mod/params |
fff |
[f32, f32, f32] |
[1.0, 1.0, 0.0] |
Modulator parameters [index, ratio, detune]. Index (depth): 0.0 to 20.0. Ratio (frequency multiplier): 0.1 to 32.0. Detune: -10.0 to 10.0 Hz. |
/track/<id>/osc1/adsr |
ffff |
[f32, f32, f32, f32] |
[0.01, 0.2, 0.5, 0.5] |
Operator 1 Amplitude ADSR envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/<id>/osc2/adsr |
ffff |
[f32, f32, f32, f32] |
[0.01, 0.2, 0.5, 0.5] |
Operator 2 Modulator ADSR envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/<id>/filter/adsr |
ffff |
[f32, f32, f32, f32] |
[0.05, 0.3, 0.2, 0.5] |
Filter Cutoff modulation envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/<id>/filter/params |
ffi |
[f32, f32, i32] |
[1000.0, 0.707, 0] |
Filter parameters [cutoff, Q, type]. Cutoff: 20.0 to 20000.0 Hz. Q (resonance): 0.1 to 10.0+. Type: 0 = LP, 1 = HP, 2 = BP, 3 = Notch. |
/track/<id>/filter/mod |
bf |
[bool, f32] |
[true, 5000.0] |
Cutoff modulation parameters [enabled, amount]. Amount (envelope depth): -20000.0 to 20000.0 Hz. |
/track/<id>/feedbackor /track/<id>/twoop/feedback |
f |
f32 |
0.0 |
Modulator (Operator 2) phase self-feedback intensity. Range: 0.0 to 1.0 (morphs sine to saw/noise). |
/track/<id>/feedback1or /track/<id>/twoop/feedback1 |
f |
f32 |
0.0 |
Carrier (Operator 1) phase self-feedback intensity. Range: 0.0 to 1.0. |
/track/<id>/ratio/quantizeor /track/<id>/twoop/ratio/quantize |
bi |
[bool, i32] |
[false, 4] |
Monomachine FM+STATIC style quantized harmonic ratio mode [enabled, ratio_index]. Indices 0..16: 1/8, 1/4, 1/2, 3/4, 1, 5/4, 3/2, 2, 5/2, 3, 7/2, 4, 5, 6, 7, 8, 12. |
/track/<id>/filter/basewidthor /track/<id>/twoop/filter/basewidth |
bfff |
[bool, f32, f32, f32] |
[false, 20.0, 20000.0, 0.707] |
Monomachine-inspired serial Base & Width dual HP/LP filter [enabled, base_hz, width_hz, hp_q]. Sweeping Base moves both HP and LP together. |
/track/<id>/wavefoldor /track/<id>/twoop/wavefold |
ff |
[f32, f32] |
[1.0, 0.0] |
Modulator wavefolder configuration [gain, mix]. Gain: 1.0 to 10.0. Mix (dry/wet): 0.0 to 1.0. |
/track/<id>/noiseor /track/<id>/twoop/noise |
ff |
[f32, f32] |
[0.0, 0.0] |
Phase noise injection levels [carrier_noise, modulator_noise]. Range: 0.0 to 1.0. |
/track/<id>/pitch/sweepor /track/<id>/twoop/pitch/sweep |
ff |
[f32, f32] |
[0.0, 0.1] |
Pitch sweep range and decay [depth_semitones, decay_sec]. Depth: -48.0 to 48.0 semitones. Decay: 0.001 to 5.0 seconds. |
/track/<id>/lfoor /track/<id>/twoop/lfo |
ifff |
[i32, f32, f32, f32] |
[0, 2.0, 0.0, 0.0] |
Voice LFO config [waveform, speed_hz, mod_index_depth, cutoff_depth]. Waveform: 0 = Sine, 1 = Tri, 2 = Saw, 3 = Square, 4 = S&H. Speed: 0.001 to 100.0 Hz. Mod Index Depth: 0.0 to 10.0. Cutoff Depth: 0.0 to 10000.0 Hz. |
Loads audio files (WAV, MP3, FLAC, etc.) and plays them back polyphonically.
+---------------------------------------------------------------------------------+
| Audio Sample Buffer |
+---------------------------------------------------------------------------------+
|
v
+---------------------------------------------------------------------------------+
| Playback Engine: |
| - Mode: OneShot / Loop |
| - Time-Stretch: Resample (pitch+speed coupled) OR Granular Time-Stretch |
| [Granular: grain_size_ms (10..150ms), overlap count (2..8)] |
| - Slice Engine: num_slices (2..64), selected_slice (0..N-1), stutter_count |
+---------------------------------------------------------------------------------+
|
Polyphonic Sum
|
v
+-------------------------+
| Headroom Gain Normalizer|
+-------------------------+
|
v
+-------------------------+
| Stereo DJ Filter (L/R) |
| (-1.0 LP <-> +1.0 HP) |
+-------------------------+
|
v
Stereo Output -> Track FxChain
| Address | Argument | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/track/<id>/sample/load |
s |
string |
- | Absolute or relative path to load an audio file from disk in real-time. |
/track/<id>/sample/select |
s |
string |
- | Selects a preloaded sample by its path relative to the SampleBank root. |
/track/<id>/sample/mode |
i |
i32 |
0 |
Playback mode. 0 = OneShot (default), 1 = Loop. |
/track/<id>/sample/pitch |
f |
f32 |
1.0 |
Base pitch shifting factor ratio. Range: 0.1 to 10.0. |
/track/<id>/sample/speed |
f |
f32 |
1.0 |
Base playback speed factor ratio. Range: 0.1 to 10.0. |
/track/<id>/sample/mode/stretch |
i |
i32 |
0 |
Time stretching mode. 0 = Resample (pitch/speed linked), 1 = Granular (independent pitch/time). |
/track/<id>/sample/grain_size |
f |
f32 |
40.0 |
Granular grain size duration in milliseconds. Range: 5.0 to 500.0 ms. |
/track/<id>/sample/overlap |
i |
i32 |
4 |
Overlapping grain count. Range: 1 to 16. |
/track/<id>/filter |
f |
f32 |
0.0 |
Sampler output channel DJ filter position. Low-Pass sweep: -1.0 to 0.0 (20000 Hz down to 20 Hz). High-Pass sweep: 0.0 to 1.0 (20 Hz up to 20000 Hz). Center 0.0 is bypass. |
/track/<id>/sample/slice/mode |
i/b |
i32 / bool |
0 (false) |
Enable/disable sample slice playback mode. |
/track/<id>/sample/slice/count |
i |
i32 |
1 |
Total number of slices to segment the sample buffer into. Range: 1 to 128. |
/track/<id>/sample/slice/select |
i |
i32 |
0 |
Active slice index selector. Range: 0 to count - 1. |
/track/<id>/sample/slice/stutter |
i |
i32 |
1 |
Stutter repetition count for slice re-triggering. Range: 1 to 64. |
A physical modeling string and modal synthesizer with a noise exciter, fractional delay line, parallel modal resonator, and internal circuit-bent wavefolding/bitcrushing distortion inside the feedback loop.
+-------------------------------------------------------+
| Noise Generator PRNG |
+-------------------------------------------------------+
|
v
+-----------------------------+
| Exciter LowPass Filter | <--- exciter_cutoff (Hz)
+-----------------------------+
|
v
[x Exciter ADSR Env]
|
Exciter Impulse Burst
|
v
+-----------------+-----------------------+
| |
v |
+-----------------------------+ |
| Karplus-Strong Delay Line | <--- Pitch Hz |
| (Fractional Linear Interp) | |
+-----------------------------+ |
| |
v |
+-----------------------------+ |
| Wavefolder (bend_drive/fold)| |
+-----------------------------+ |
| |
v |
+-----------------------------+ |
| Bitcrusher (bend_bits) | |
+-----------------------------+ |
| |
v |
+-----------------------------+ |
| Loop Dampening LowPass | <--- dampening (Hz)|
+-----------------------------+ |
| |
v |
[x Feedback Gain] |
| |
v |
( + Sum ) <------------------------------+
|
v
[Soft Clip Tanh()]
|
+-------------------+ (Loop Feedback to Delay Line)
|
+-----------------------------------+
| |
v v
(1.0 - modal_mix) [modal_mix]
| |
| v
| +-------------------------------+
| | Parallel Modal Resonator |
| | (BPF at Pitch * modal_ratio) |
| +-------------------------------+
| |
+-----------------+-----------------+
|
v
Output -> Track FxChain
| Address | Argument | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/track/4/exciter/adsr |
ffff |
[f32, f32, f32, f32] |
[0.001, 0.03, 0.0, 0.01] |
Exciter noise burst ADSR parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/4/exciter/cutoff |
f |
f32 |
4000.0 |
Exciter noise burst lowpass cutoff frequency in Hz. Range: 20.0 to 20000.0 Hz. |
/track/4/feedback |
f |
f32 |
0.95 |
Delay line decay feedback ratio. Range: 0.0 to 0.999. |
/track/4/dampening |
f |
f32 |
8000.0 |
Internal feedback loop lowpass dampening cutoff frequency in Hz. Range: 200.0 to 20000.0 Hz. |
/track/4/bend/drive |
f |
f32 |
1.0 |
Circuit-bent wavefolder input drive multiplier inside feedback loop. Range: 1.0 to 10.0. |
/track/4/bend/folds |
f |
f32 |
0.0 |
Circuit-bent wavefolder intensity inside feedback loop. Range: 0.0 (clean/bypass) to 5.0. |
/track/4/bend/bits |
f |
f32 |
16.0 |
Circuit-bent bitcrusher quantization bits inside feedback loop. Range: 1.0 to 16.0 (16.0 is bypass). |
/track/4/modal/ratio |
f |
f32 |
1.5 |
Inharmonic detune ratio multiplier for parallel modal resonator filter. Range: 0.5 to 8.0. |
/track/4/modal/mix |
f |
f32 |
0.2 |
Mix level ratio for parallel modal resonator output. Range: 0.0 (pure string) to 1.0 (pure modal). |
A monophonic, legato-enabled synthesizer mimicking the Roland TB-303. Features band-limited PolyBLEP oscillators (Saw/Square/PWM), exponential analog RC envelopes, and authentic velocity-sensitive accent dynamics (triggering at velocity > 0.7 to boost cutoff envelope, resonance, output volume, and non-linear liquid saturation).
Pitch Envelope (Exponential RC) ----+
Portamento Glide (glide_time) ------+---> Final Oscillator Pitch (Hz)
|
+------------------+
|
v
+-------------------------------------------------------+
| Band-Limited PolyBLEP Oscillator |
| - Waveform: Saw / Square / Sine / Tri |
| - PWM: Pulse-Width LFO (pwm_rate, pwm_depth) |
+-------------------------------------------------------+
|
v
+-------------------------------------------------------+
| 4-Pole 24dB Resonant Diode/Ladder Filter (ZDF) |
| - Cutoff: base_cutoff + (filter_env * depth) |
| + [Accent Boost: +2500 Hz * filter_env] |
| - Resonance: base_res + [Accent Boost: +0.15] |
+-------------------------------------------------------+
|
v
+-------------------------------------------------------+
| Amplitude Stage (Exponential RC Amp ADSR) |
| - Signal * amp_env * [Accent Gain: 1.0 + acc*0.35] |
+-------------------------------------------------------+
|
v
+-------------------------------------------------------+
| Asymmetric Liquid Saturation |
| - Drive = Signal * (3.5 + accent * 1.5) |
| - Non-linear Warm Shaping: tanh(drive) * 0.85 |
+-------------------------------------------------------+
|
v
Output -> Track FxChain
| Address | Argument | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/track/6/303/waveform |
i |
i32 |
1 (Saw) |
Oscillator waveform. 0 = Sine, 1 = Saw, 2 = Square, 3 = Triangle. |
/track/6/303/amp/adsr |
ffff |
[f32, f32, f32, f32] |
[0.002, 0.3, 0.1, 0.2] |
Amplitude ADSR envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/6/303/filter/adsr |
ffff |
[f32, f32, f32, f32] |
[0.002, 0.25, 0.05, 0.2] |
Filter Cutoff ADSR envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/6/303/pitch/adsr |
ffff |
[f32, f32, f32, f32] |
[0.002, 0.1, 0.0, 0.1] |
Pitch ADSR envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/6/303/filter/params |
ff |
[f32, f32] |
[300.0, 0.75] |
Filter params [cutoff, resonance]. Cutoff: 20.0 to 20000.0 Hz. Resonance (feedback): 0.0 to 0.99 (0.75+ for squelchy self-oscillation). |
/track/6/303/filter/mod |
f |
f32 |
3000.0 |
Cutoff envelope modulation depth. Range: -20000.0 to 20000.0 Hz. |
/track/6/303/pitch/mod |
f |
f32 |
0.0 |
Pitch envelope modulation depth. Range: -10000.0 to 10000.0 Hz. |
/track/6/303/pwm/params |
fff |
[f32, f32, f32] |
[0.5, 1.0, 0.0] |
Pulse width modulation params [pw, rate, depth]. PW: 0.05 to 0.95. Rate: 0.001 to 50.0 Hz. Depth: 0.0 to 1.0. |
/track/6/303/glide |
f |
f32 |
0.1 |
Glide/Portamento time in seconds. Range: 0.0 (no glide) to 2.0 seconds. |
/track/6/303/legato |
i/b |
i32 / bool |
1 (true) |
Legato slide toggle (does not re-trigger envelopes on overlapping notes). 0 = Off, 1 = On. |
A massive, versatile synthesizer designed for heavy basslines and rave textures. It features a configurable detuned unison generator, a dedicated filter-bypassed sub oscillator, parallel stereo multi-mode filters (ZDF Ladder, ZDF Biquad, and Formant vowel filter), modular LFO modulation, waveshaping saturation/drive, and a stereo chorus unit.
Portamento Glide (0.05s) ---+
LFO 1 Pitch Mod ------------+---> Oscillator Pitch (Hz)
|
+--------------------------------+--------------------------------+
| |
v v
+--------------------------------+ +--------------------+
| Stereo Unison Engine | | Mono Sub-Oscillator|
| - Voices (1..7) | | - Waveform (0..2) |
| - Detune (0.0..0.2) | | - Octave (-1 / -2)|
| - Stereo Spread (0.0..1.0) | | - Gain (0.0..2.0) |
| - Waveform (Saw/Square/Tri) | +--------------------+
+--------------------------------+ |
| L | R |
v v |
( + ) ( + ) <--- White Noise Generator |
| | |
+-------+------+ |
| |
v Stereo |
+-------------------------------------------------------+ |
| Multi-Mode Stereo Filter: | |
| - Mode 0: ZDF Ladder LowPass (24 dB) | |
| - Mode 1: ZDF Ladder BandPass | |
| - Mode 2: Formant Vowel Morph Filter | |
| - Modulation: Filter Cutoff Decay Env + LFO 1 Cutoff | |
+-------------------------------------------------------+ |
| Stereo |
v |
+-------------------------------------------------------+ |
| Stereo Drive / Saturation: | |
| - Mode: Bypass / Tanh / HardClip / Wavefold | |
| - Drive Gain (0.0..10.0), Mix (0.0..1.0) | |
+-------------------------------------------------------+ |
| Stereo |
v |
[x Amp ADSR Envelope] |
[x Master Output Gain] |
| |
v Mid/High Stereo |
+-------------------------------------------------------+ |
| Stereo Chorus Delay: | |
| - Variable Delay Lines L & R with Jitter LFOs | |
| - Chorus Mix & Modulation Depth | |
+-------------------------------------------------------+ |
| L | R |
v v |
( + ) ( + ) <---------------------------------------+ (Clean Sub Sum)
| |
+-------+------+
|
v
Stereo Output -> Track FxChain
| Address | Argument | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/track/7/hubass/amp/adsr |
ffff |
[f32, f32, f32, f32] |
[0.05, 0.2, 0.7, 0.3] |
Amplitude ADSR envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/7/hubass/filter/params |
ffff |
[f32, f32, f32, f32] |
[1.333, 800.0, 1.0, 0.4] |
Cutoff envelope params [start_mult, end_cf, decay, resonance]. start_mult (multiplier): 0.1 to 10.0. end_cf (target cutoff frequency): 20.0 to 20000.0 Hz. decay (seconds): 0.001 to 10.0 seconds. Resonance (feedback): 0.0 to 0.99. |
/track/7/hubass/osc/unison |
fffi |
[f32, f32, f32, i32] |
[0.0, 0.035, 0.8, 5] |
Detuned unison config [waveform, detune, spread, voices]. Waveform: 0.0 = Saw, 1.0 = Square, 2.0 = Triangle. Detune: 0.0 to 0.2 (depth). Spread (stereo width): 0.0 to 1.0. Voices: 1 to 7. |
/track/7/hubass/osc/sub |
iif |
[i32, i32, f32] |
[0, -1, 0.7] |
Mono sub-bass oscillator config [waveform, octave, gain]. Waveform: 0 = Sine, 1 = Triangle, 2 = Square. Octave offset: -1 or -2. Gain: 0.0 to 2.0. |
/track/7/hubass/osc/noise |
f |
f32 |
0.05 |
Noise generator gain level. Range: 0.0 to 1.0. |
/track/7/hubass/filter/mode |
i |
i32 |
0 |
Filter Mode. 0 = ZDF LowPass, 1 = ZDF BandPass, 2 = Formant vowel morph filter. |
/track/7/hubass/drive/mode |
iff |
[i32, f32, f32] |
[1, 2.0, 0.5] |
Saturation/distortion config [mode, gain, mix]. Mode: 0 = Bypass, 1 = Tanh, 2 = HardClip, 3 = Wavefold. Gain (drive boost): 0.0 to 10.0. Mix (dry/wet): 0.0 to 1.0. |
/track/7/hubass/lfo/1 |
ifff |
[i32, f32, f32, f32] |
[0, 1.5, 0.0, 0.0] |
Modular LFO 1 config [waveform, speed, cutoff_depth, pitch_depth]. Waveform: 0 = Sine, 1 = Tri, 2 = Saw, 3 = Square, 4 = S&H. Speed: 0.001 to 100.0 Hz. Cutoff Depth (mod depth in Hz): 0.0 to 10000.0 Hz. Pitch Depth: 0.0 to 12.0 semitones. |
/track/7/hubass/chorus/params |
ff |
[f32, f32] |
[0.5, 0.5] |
Stereo chorus parameters [mix, depth]. Mix: 0.0 (dry) to 1.0 (wet). Depth: 0.0 to 1.0. |
/track/7/hubass/legato |
i/b |
i32 / bool |
1 (true) |
Legato slide toggle. 0 = Off, 1 = On. |
/track/7/hubass/gain |
f |
f32 |
1.0 |
Output channel gain volume multiplier. Range: 0.0 to 5.0. |
Inspired by the Elektron Monomachine SuperWave architecture (SWAVE-SAW and SWAVE-ENS), featuring a 5-oscillator PolyBLEP anti-aliased detuned saw cluster with configurable inner & outer unison pairs, a dedicated sub-oscillator, chord ensemble interval modes, Monomachine Base & Width dual HP/LP serial filtering, and integrated saturation drive.
Fundamental Note Frequency (Hz)
|
+--------+-------------------------------------------------+
| |
| Mode 0: SWAVE-SAW (5-Saw Cluster) | Mode 1: SWAVE-ENS (Ensemble Chords)
v v
+---------------------------------------+ +---------------------------------------+
| Osc 0: Center Base Freq (Pan: Center) | | Osc 0: Root Pitch (Pan: Center) |
| Osc 1: +1x Detune UNID (Pan: -0.5*Spr)| | Osc 1: Root + Interval 1 (Pan: -0.8) |
| Osc 2: -1x Detune UNID (Pan: +0.5*Spr)| | Osc 2: Root + Interval 2 (Pan: +0.8) |
| Osc 3: +2x Detune UNIX (Pan: -1.0*Spr)| | Osc 3: Root + Interval 3 (Pan: Center)|
| Osc 4: -2x Detune UNIX (Pan: +1.0*Spr)| | (PolyBLEP Oscillators) |
+---------------------------------------+ +---------------------------------------+
| L | R | L | R
+------+------+ +------+------+
| |
+--------------------------+---------------------------+
|
v Stereo
+---------------------------------------+
| Stereo Oscillator Cluster Sum |
+---------------------------------------+
| L | R
v v
( + ) ( + )
^ ^
| |
+---------------------------------------+
| Sub-Oscillator (Square/Sine/Saw/Tri) |
| - Octave: -1 or -2, Level: SUBD |
| - Solid Center Mono Punch (both L & R)|
+---------------------------------------+
|
v Stereo
[x Amp ADSR Envelope]
|
v Stereo
+---------------------------------------+
| Monomachine Base & Width Filter: |
| - High-Pass Filter (Base Hz) |
| - Low-Pass Filter (Base + Width Hz) |
| - Modulation: Filter ADSR onto Base |
+---------------------------------------+
|
v Stereo
+---------------------------------------+
| Stereo Saturation Drive: |
| - Mode: Bypass/Tanh/HardClip/Wavefold|
| - Gain (1..10x), Mix (0.0..1.0) |
+---------------------------------------+
|
v
Stereo Output -> Track FxChain
| Address | Argument | Argument Types | Default Value | Reasonable Range / Description |
|---|---|---|---|---|
/track/<id>/swave/mode |
i |
i32 |
0 |
Synthesis Mode. 0 = SuperWave Saw (5-saw cluster + sub), 1 = SuperWave Ensemble (4-voice chord / intervals + sub). |
/track/<id>/swave/waveform |
i |
i32 |
1 (Saw) |
Base oscillator waveform. 0 = Sine, 1 = Saw, 2 = Square, 3 = Triangle. |
/track/<id>/swave/unison |
ffff |
[f32, f32, f32, f32] |
[0.025, 0.75, 0.5, 0.8] |
Unison stack parameters [detune, inner_level, outer_level, stereo_spread]. Detune: 0.0 to 0.1. Inner level (UNID): 0.0 to 1.0. Outer level (UNIX): 0.0 to 1.0. Stereo spread: 0.0 (mono) to 1.0 (wide stereo). |
/track/<id>/swave/ensemble |
ffff |
[f32, f32, f32, f32] |
[4.0, 7.0, 11.0, 0.7] |
Ensemble mode chord voicings [semitone2, semitone3, semitone4, level]. Offsets relative to root note (e.g. [3.0, 7.0, 10.0] for minor 7th). |
/track/<id>/swave/sub |
iif |
[i32, i32, f32] |
[0, -1, 0.4] |
Sub-oscillator config [waveform, octave, gain]. Waveform: 0 = Square, 1 = Sine, 2 = Saw, 3 = Triangle. Octave offset: -1 or -2. Gain (SUBD): 0.0 to 1.0. |
/track/<id>/swave/filter |
fffff |
[f32, f32, f32, f32, f32] |
[20.0, 16000.0, 0.707, 1.2, 4000.0] |
Monomachine Base & Width filter [base_hz, width_hz, hp_q, lp_q, env_amount]. Base: 10.0 to 20000.0 Hz. Width: 10.0 to 20000.0 Hz. |
/track/<id>/swave/amp/adsr |
ffff |
[f32, f32, f32, f32] |
[0.005, 0.2, 0.7, 0.3] |
Amplitude ADSR envelope parameters [A, D, S, R]. A/D/R (seconds): 0.001 to 10.0. S (level): 0.0 to 1.0. |
/track/<id>/swave/filter/adsr |
ffff |
[f32, f32, f32, f32] |
[0.01, 0.3, 0.2, 0.4] |
Filter Cutoff modulation ADSR envelope [A, D, S, R]. |
/track/<id>/swave/drive |
iff |
[i32, f32, f32] |
[1, 1.5, 0.3] |
Saturation drive config [mode, gain, mix]. Mode: 0 = Bypass, 1 = Tanh, 2 = HardClip, 3 = Foldback. Gain: 1.0 to 10.0. Mix: 0.0 to 1.0. |
Aillen can automatically scan a directory on startup (defaulting to ~/Desktop/KairosSamples if not specified) and preload all found .wav, .flac, .mp3, .aif, and .aiff files.
You can trigger these preloaded buffers instantly via OSC using /track/1/sample/select "subfolder/myloop.wav".
To update multiple parameters and trigger notes simultaneously without artifacts, use OSC Bundles.
Python (python-osc) Example:
from pythonosc import udp_client, osc_bundle_builder, osc_message_builder
client = udp_client.SimpleUDPClient("127.0.0.1", 8000)
bundle = osc_bundle_builder.OscBundleBuilder(osc_bundle_builder.IMMEDIATELY)
# Switch Track 0 to FM mode (index 3)
msg = osc_message_builder.OscMessageBuilder(address="/track/0/mode")
msg.add_arg(3)
bundle.add_content(msg.build())
# Play note on Track 0
msg = osc_message_builder.OscMessageBuilder(address="/track/0/note/on")
msg.add_arg(220.0) # Hz
msg.add_arg(0.7) # velocity
bundle.add_content(msg.build())
client.send(bundle.build())