NKIDO is an open live-coding music system. Featuring a friendly syntax, comprehensive documentation and a portable runtime.
Runs in your browser, your favorite game engine, microcontrollers (e.g. a $10 ESP32) or anywhere else your imagination takes you.
C++ 20 • MIT licensed • AI friendly
Akkado + Strudel-style mini-notation for rapid musical exploration.
Oscillators, filters, reverbs, granular, vocoder, Karplus-Strong, and more.
Load WAVs from GitHub or HTTP, play SF2/SF3 soundfonts straight from code.
Change code while it plays, no glitches or dropped notes.
Native, web, and ESP32. One codebase, any platform.
Syntax highlighting, autocomplete, live diagnostics, and hot-swap from your editor.
Embed Nkido in Godot 4 for adaptive game audio with parameter binding and inspector UI.
Cedar is a standalone C++ library, easy to embed anywhere.
Define sliders, toggles, buttons, and dropdowns in code, rendered as interactive UI controls in the web app.
7 preset themes, custom theme editor, and CSS variable-based theming for personalized workflows.
Press F1 to search a pre-built keyword index with links to docs for builtins, mini-notation, and concepts.
Permissive open source, embed in closed-source projects.
Every instrument, effect, and tool — straight to its docs.
82 sub-features across 6 groups
Resonant low-pass with q control.
lp(in, 800)Resonant high-pass.
hp(in, 200)Bandpass with peak control.
bp(in, 1000, 4)Four-pole ladder, classic warmth.
moog(in, 400, 2)12 dB SVF with morphing modes.
sallenkey(in, 600, 3)Attack, decay, sustain, release.
sine(440) * adsr(trigger(2), 0.01, 0.2)Compact attack/release.
sine(55) * ar(trigger(4), 0.001, 0.2)Beat-synced feedback delay.
saw(220) |> delay(@, 0.5, 0.4)Time-domain delay with millisecond control.
saw(220) |> delay_ms(@, 300, 0.4)Multi-tap with feedback processor.
saw(110) |> tap_delay(@, 0.375, 0.7, (x) -> lp(x, 1500))Schroeder-style room reverb.
saw(220) * ar(trigger(2)) |> freeverb(@, 0.5, 0.5)Plate reverb, lush mid-decay.
saw(220) * ar(trigger(2)) |> dattorro(@, 0.8, 30)Feedback delay network, deep tails.
saw(55) * ar(trigger(0.5)) |> fdn(@, 0.9, 0.4)Stereo chorus, lush detune.
saw(220) |> chorus(@, 0.5, 0.5)Swept short delay with feedback.
saw(110) |> flanger(@, 0.5, 0.7)All-pass cascade phaser.
saw(110) |> phaser(@, 0.3, 0.8)Comb filter modulation.
noise() |> comb(@, 1/220, 0.95)Tape-style tanh saturation.
saw(110) |> saturate(@, 3)Cubic soft clipper.
saw(220) |> softclip(@, 0.7)8-bit lo-fi color.
saw(220) |> bitcrush(@, 8, 0.5)Wavefolder for harmonic chaos.
sine(110) * 2 |> fold(@, 0.5)Asymmetric valve warmth.
saw(110) |> tube(@, 5, 0.1)Anti-aliased smooth distortion.
saw(220) |> smooth(@, 3)Tape compression and saturation.
saw(110) |> tape(@, 4, 0.4)Transformer-style coloration.
saw(55) |> xfmr(@, 4, 8)Harmonic exciter.
saw(220) |> excite(@, 0.5, 3000)Bracketed step sequences.
n"c4 e4 g4 c5" |> ((f) -> sine(f) * ar(trigger(4)))Stacked patterns at different lengths.
n"c4 e4 g4, c3 g3 c3 g3"Round-robin and probabilistic choice.
n"<c4 e4 g4>"Speed, repeat, and chance operators.
n"c4*4 e4"EDO tunings and per-note micro-step adjustments.
Major, minor, dim, aug, sus.
c"C Am F G"Maj7, m7, dom7, dim7, mM7, m7b5.
c"Cmaj7 Am7 Dm7 G7"9ths, 11ths, 13ths, adds.
c"Cmaj9 Am11 D13"Inversions and spread voicings.
.voicing("open")Chord notes as a dynamic array.
e.notes.step(trigger(8))Master tempo source.
saw(110) |> delay(@, clock() / 4, 0.4)Bipolar low-frequency oscillator.
sine(220 + lfo(5) * 10)Edge-triggered gate generator.
sine(55) * ar(trigger(1), 0.01, 0.2)Euclidean rhythm generator.
sine(55) * ar(euclid(3, 8), 0.01, 0.15)early, late, swing, palindrome, ply.
n"c4 e4 g4 b4".early(0.25)binary, run, iter, iterBack.
run(8) |> mtof(@ + 60) |> saw(@)Sample-accurate parameter automation.
osc("saw", 220) * timeline("__/''")Linear and curved segments.
Curve interpolation between values.
Synced parameter automation.
Forward composition with -> and |>; the @ hole.
Bind values and signal nodes to identifiers.
Arithmetic, comparison, logic, and pipe operators with precedence.
Anonymous functions and partial application.
select, comparison, and boolean primitives.
Group named fields, destructure, spread, and use as builtin options.
Add, subtract, multiply, divide, power.
add(sine(220), sine(330)) * 0.5abs, sqrt, log, exp, floor, ceil, sign.
neg(sine(220))min, max, mod, pow.
min(sine(220), 0.5)clamp, wrap.
clamp(saw(110), -0.5, 0.5)sin, cos, tan, asin, acos, atan, atan2.
sin(phasor(440) * 2 * 3.14159)sinh, cosh, tanh.
saw(110) * 3 |> tanh(@)