This is TouchCreek

A sample-free procedural creek for the Synthux Touch synthesizer and Daisy Seed, from a quiet trickle to a lively shallow stream. Nothing is recorded: hundreds of tiny bubbles per second, slow eddies, small splashes, fine surface ticks and the low rumble of dense bubbling, all driven by one slowly changing creek state. Switch to Notes and play it: tap a pad for a tuned drop, hold it and the water pours onto the note.

Each bubble is a short decaying tone whose pitch comes from its size, f₀ ≈ 3 / r (Kees van den Doel, Physically-based Models for Liquid Sounds, 2005): small bubbles are high, big ones low.

Synthux Touch board with pad, knob, fader and switch labels

Quick Install

Download the newest file from the latest release or releases/ (its README lists what each version changes) and flash it with the Daisy web programmer in Chrome or Edge:

  • Unplugged: hold BOOT while plugging in USB
  • Already powered: hold BOOT, tap RESET, release BOOT

Then Connect → DFU in FS Mode → choose the file → Program. To go back, flash any Synthux firmware the same way.

USB is MIDI. For measuring CPU there's a separate monitor build (see Emulator & Monitor); it isn't part of the releases.

Every version is kept in releases/ with a name saying what changed, so you can always flash an older one. build/CreekTouch.bin is a working build and may be newer than any release.

Controls

At power-up the creek plays whatever the knobs and faders are set to; the second-layer controls start at their defaults (natural width, default tone, attack and release, filter open, delay off). The left switch decides what the pads do.

Pads

PadPresets (left switch up)Notes (left switch centre)Diagnostics (left switch down)
P00—Octave down (to −1; in Chromatic −7 semitones, to −14)—
P01Throw a stone (every mode): a deep falling plop, a burst of 10–24 larger bubbles spreading from the centre, and a disturbance (extra air, more bubbling, splashes and ripples) that settles over 2–3 s. Hit harder for a bigger stone. Works in still water too: the stone stirs it up, then it goes still again
P02—Octave up (to +2; in Chromatic +7 semitones, to +28)—
P03Quiet trickleNotes of the scale, from C5 in C major pentatonic by default.
  • Tap: a tuned drop, a bubble at that note with a short bubbly tail. Hit harder for a louder drop
  • Hold: the water pours onto the note while held (up to 4 pads = a chord)
See Playing Notes.
—
P04Rocky creekBubbles on/off
P05Small cascadeEddies on/off
P06Deeper runSmall waterfalls on/off
P07—Surface detail on/off
P08—All layers on
P09—Bubble cloud on/off (monitor build: stress test instead)
P10Modifier:
  • Hold P10 + S30: Width (see Knobs)
  • Notes: hold P10 + P03…P09: set the root key to that pad's current note (the scale type stays)
P11Modifier:
  • Hold P11 + S30: Delay time: 30 ms–2.4 s (default 0.375 s); changes glide, like tape
  • Hold P11 + S31: Tone: dark ↔ bright (noon = default)
  • Hold P11 + S32: Delay amount (as TouchPulsar): 0 = off; more = more and longer echoes, bouncing left ↔ right and getting darker
  • Hold P11 + S33: Attack: how quickly a held note's pour swells in, 4 ms–3 s (default 0.25 s).
  • Hold P11 + S34: Release: how long the pour keeps going after you let go, 20 ms–4 s (default 0.6 s)
  • Hold P11 + right fader (S37): Filter cutoff (30 Hz–18 kHz; fully up = open)
  • Hold P11 + left fader (S36): Filter resonance
  • Notes: P11 + P00 / P02: previous / next scale (cycles through all 7)
  • Notes: P11 + P03…P09: direct scale select (P03 Chromatic, P04 Major, P05 Natural Minor, P06 Minor Pentatonic, P07 Major Pentatonic, P08 Dorian, P09 Harmonic Minor)

Presets glide over 250 ms. Diagnostic mutes are smooth (20 ms), don't change what the other layers do, and are remembered; in Presets and Notes all layers always play.

Knobs (clockwise)

KnobMainHold P10 / Hold P11
S30Free flow (Notes): how much the creek plays by itself. Fully left = still water, only your notes sound. Presets and Diagnostics always flowWidth: mono fully left, natural at noon, wider fully right (as TouchPulsar). The low body of the creek stays centred
P11: Delay time, 30 ms–2.4 s
S31Scale: fine shallow trickle → larger stream body. Bubbles get 0.6× to 1.8× bigger over most of the knob, so the typical pitch falls (about 3 kHz → 1.3 kHz); the last quarter bends up to 8× for bass, the deepest bubbles around 60 Hz ringing longer. Splashes get lower, eddies get slowerHold P11: Tone: dark ↔ bright, wide. Noon = default mix; turning left brings in more and more of the big, low bubbles and, near the end, makes them all up to an octave lower; right does the same towards small, high ones (at mid Scale the average pitch goes from about 350 Hz to 7.5 kHz)
S32Aeration: sparse bubbling → bubbly white water. Fully left = no bubbles at allP11: Delay amount, 0 = off
S33Flow: still → trickle → lively creek. More bubbles and more splashes at the drop (0.2 → 4 per second). Fully left: the creek fades to silence within about 1.5 sHold P11: Attack: 4 ms–3 s, how quickly a held note's pour swells in (default 0.25 s)
S34Decay: how long every bubble, drop, splash and tick rings. Noon = default; left shorter (down to ¼), right longer (up to 4×)Hold P11: Release: 20 ms–4 s, how long the pour keeps going and settles after you let go (default 0.6 s); the tail stays on the notes you played
S35Variety (Notes): how the tuned bubbles spread. Noon = default (the held note, in the octave nearest each bubble's own size). Left: more and more exactly the held note (fully left = one note). Right: more and more other notes of the active scale, up to an octave around the held note

Faders

FaderMainHold P11
S36 (left)Level: output volume. Silent at the bottom, 0 dB at about 70 %, +6 dB at the topResonance: Q 0.7–20
S37 (right)Roughness: smooth channel → rocky interruptions. More turbulence, so more bubbling, deeper eddies, more uneven splashes and more surface ticksCutoff: 30 Hz–18 kHz, fully up = open

Switches

Left Switch — Mode
  • Up: PRESETS (P03–P06 recall the four presets)
  • Center: NOTES (P03–P09 play the scale; Free flow and Variety apply)
  • Down: DIAGNOSTICS (P04–P07 and P09 mute layers, P08 all on)
Right Switch — Latch / Hold
  • Up / Center: live
  • Down in Notes: Latch. Notes you touch keep pouring after you let go (up to 4); tap a latched note again to release it; switching Latch off releases everything you're not touching
  • Down in Presets / Diagnostics: Hold the slow creek state. Flow, turbulence and air stop changing so you can compare settings; bubbles keep happening

Creek Synthesis & Expression

Everything you hear is made of short decaying tones; there is no noise in the sound.

Playing Notes

Scales

In Notes, hold P11 and tap a note pad to jump directly to a scale, or use P00 / P02 to cycle. Hold P10 and tap a note pad to move the root (shown here in C). The same seven scales as TouchPulsar; Variety spreads notes within the active scale and root.

PadScaleNotes (root C, octave 0)
P03Chromatic: all semitones; P00/P02 shift by 7 so you can reach every noteC5 C#5 D5 D#5 E5 F5 F#5
P04Major: diatonic majorC5 D5 E5 F5 G5 A5 B5
P05Natural Minor: diatonic minorC5 D5 Eb5 F5 G5 Ab5 Bb5
P06Minor Pentatonic: blues & folkC5 Eb5 F5 G5 Bb5 C6 Eb6
P07Major Pentatonic (default): bright & openC5 D5 E5 G5 A5 C6 D6
P08Dorian: minor with a raised sixthC5 D5 Eb5 F5 G5 A5 Bb5
P09Harmonic Minor: minor with a raised seventhC5 D5 Eb5 F5 G5 Ab5 B5

Presets

PadPresetFlowRoughnessScaleAeration
P03Quiet trickle0.200.250.200.30
P04Rocky creek0.500.600.450.55
P05Small cascade0.750.800.500.85
P06Deeper run0.650.350.800.40

Presets set the four sound knobs (Flow, Roughness, Scale, Aeration); everything else (Level, Width, Tone, Decay, Attack, Release, Free flow, Variety, filter, delay) stays where it is. Also on MIDI Program Change 1–4.

LED Indicator

The onboard LED provides visual feedback:

MIDI

TouchCreek appears as a USB MIDI device (listed as Creek) when connected via the Daisy Seed's USB port to a computer, DAW, iPad or USB-MIDI host. A keyboard plugged straight into the Touch won't work: both are USB devices, so route it through the computer or a host box. It listens on all MIDI channels.

CC Map

CCControlCCControl
1Mod wheel → Surge24S30 Free flow
7S36 Level25S35 Variety
14Scale select (0–127 across the 7 scales)26S34 Decay
15Root (0–127 across C … B)27Width (P10 + S30)
28Tone (P11 + S31)72Release (P11 + S34)
107Attack (P11 + S33)108Delay time (P11 + S30)
109Delay amount (P11 + S32)
20S33 Flow64Sustain
21S37 Roughness102Filter Cutoff (P11 + S37)
22S31 Scale (bubble size)103Filter Resonance (P11 + S36)
23S32 Aeration120, 123All Notes Off
29Throw a stone (P01; value = size, 0 = nothing)

Soft Takeover: a value set via MIDI CC is kept until the corresponding knob or fader is moved; from then on the physical control takes over again.

Emulator & Monitor

Project Structure

creek/
├── daisy/
│   ├── CreekTouch.cpp   # Main application entry point
│   ├── Makefile         # Build configuration (make monitor = monitor build)
│   ├── creek/           # Instrument core: creek engine + controls (platform-free)
│   ├── touch/           # Touch wrapper (pads, knobs, switches) from TouchString
│   ├── ui/              # UI connecting instrument core with touch wrapper, MIDI, LED
│   ├── test/            # Host tests, soak test, offline renderer, C++ vs browser comparison
│   └── releases/        # Firmware to flash
├── web/                 # Browser emulator and monitor; engine/ = the JavaScript twin
├── scenarios/           # Seeds and automation for the reference renders
└── tools/               # gen-config.js: one config file for both engines

Project Setup

Needs the Daisy toolchain. libDaisy is a git submodule in daisy/lib/libDaisy (Synthux's fork, pinned); DaisySP isn't needed. Clone with submodules, then build from daisy/:

$ git clone --recurse-submodules <repository URL> creek
$ cd creek/daisy
$ make libs -j8
$ make clean; make -j8
$ make program-dfu

Credits