Early Preview · Kiwisonic, Kiwisynth and Kiwipulse are free during early preview. The shape of all three is still being figured out, and feedback is what drives them forward.

Sample — recorded one-shots & loops

All docs / Kiwipulse / Sample — recorded one-shots & loops

Kiwipulse manual

Sample — recorded one-shots & loops

A pitched sample player: picks a clip from the project sample pool, plays a window of it with linear interpolation, optional loop/reverse, and an attack/decay amp envelope. Use it for any recorded drum, vocal chop, found sound or loop.

How it works

  • slot selects a clip from the project-level sample pool. Because slot is a normal param it is p-lockable — you can play a different sample per step from one track.
  • Playback rate combines tune (semitones) with the clip's source samplerate. Because tune is a normal param it is p-lockable, so you can shift the pitch per hit.
  • start/end define the window (as fractions of the clip); reverse plays it backwards; loop repeats the window instead of stopping at the end.
  • A linear attack ramp then exponential decay shapes the level. The default decay (8 s) is long enough to play most one-shots to their natural end.
  • Non-destructive edits reshape the clip without touching the stored audio, and being normal params they are p-lockable like everything else: normalize applies a make-up gain so the clip peaks at full scale; gain is a manual trim in dB; fadeIn/fadeOut ramp the level over a fraction of the playback window. The fades follow the sample content, not the timeline — so a reversed hit still fades in at the clip's start, and a looped window fades cleanly on every lap.
  • crush and srr degrade the sample source — bit-depth reduction and sample-rate reduction applied to the raw clip before the amp envelope. Because they sit before the envelope, the quantization grit is shaped by the hit's own decay, which is the classic "lo-fi sampler" sound. This is distinct from the shared voice chain's fx_crush/fx_srr, which degrade the finished voice output after the envelope — reach for the chain ones for a more uniform, sustained crush.

Pitched: tune sets the playback pitch, and is p-lockable per hit like any parameter.

The decoded audio lives in the app/render layer and is surfaced to the core via `SampleStore`; the model only stores the file name per pool slot (the WAV bytes travel with the project's `.kpp` package). This engine just plays what the pool holds — getting a WAV *into* the pool is the UI workflow below.

Loading a WAV & assigning it to a track

A sample lives in the project sample pool (64 slots), and a track's Sample machine plays whichever slot its slot param points at. So importing a drum is two moves: get the WAV into a pool slot, then point a track at that slot. There are two entry points.

From the SAMPLES page (manage the pool)

  1. Open the SAMPLES page — an 8×8 grid of pool slots over a waveform strip.
  2. Click Load WAV… (or click any empty slot) and pick e.g. kick.wav. It decodes into the next free slot, which is then tinted and labelled with the file name. Only decodable .wav files are accepted.
  3. Click a loaded slot to select it and preview its waveform.
  4. Click Assign to track… and choose a track. This switches that track's machine to Sample and sets its slot param to the slot you picked — the track now plays your sample.

From the SOUND context (per track)

  1. Select the track and set its machine to Sample in the machine picker.
  2. A Load Sample button appears (it shows only for the Sample machine). Click it to import a WAV straight into the selected sound's slot in one step — no separate assign.

Either way you land in the same place: a track on the Sample machine with slot resolved to your clip. From there, customise it with the parameters below.

Velocity layers & round-robin

The sampling machines (Sample and Granular) can pick which pool slot to play per trig from a small layer map, so one track can swap samples by how hard a step hits or cycle through variations. You draw it on the VELOCITY strip under the drum — velocity runs left (soft) to right (hard), and the layers appear as zones split by draggable dividers.

  • Add / remove a split — right-click the strip; a new split re-spreads the boundaries evenly. Drag a divider to move a zone's upper velocity bound; bounds ascend and the top zone catches everything above the previous divider.
  • Pick a zone's sample — click the zone and choose a pool slot.
  • Mode — the chip on the strip cycles Velocity (loudness picks a zone), Round-robin (each hit advances to the next zone), or Velocity + RR (velocity picks a starting zone, then it rotates).

A per-step slot p-lock always overrides the layer map, so you can still force a specific sample on a given step. The map is saved with the kit and is per-Sound, so it travels with presets.

Slicing a break

A Sample reads its playback window from one of two places, and the WINDOW / SLICES pill in the corner of the sample card says which:

  • WINDOW (default) — a free window between start and end, dragged as the two handles on the waveform.
  • SLICES — the clip is chopped by a marker table, and slice picks which chop plays. The lit band is the slice you are on.

Click the pill to switch. In SLICES mode the markers are the control: double-click the wave to add one, drag it to move it, right-click it to delete it. The first marker is the fixed start and cannot be moved or removed. With no markers at all the whole clip is one slice.

For a whole break, the CHOP menu beside the pill does the table in one go:

  • Detect transients — chops on the clip's own hits. Best on a break with clear attacks; on a smeared or heavily compressed loop it over- or under-chops, and you tune the result by dragging.
  • Divide into 4 / 8 / 16 / 32 / 64 — equal chops, ignoring the audio. What you want for a loop that is already on the grid.
  • Clear chops — back to one slice, the whole clip.

Both chop tools replace the table rather than adding to it, and each is a single undo.

The point of the mode is the p-lock. slice is an ordinary parameter, so p-lock it per step to walk a break — step 1 plays chop 3, step 2 plays chop 7. window_mode is p-lockable too, so a single step can drop back to the whole break while its neighbours play individual chops.

The marker table belongs to the pool slot, not the sound: chop a break once and every sound pointing at that slot sees the same chops.

Parameters

Param Range Default What it does
`slot` 0 … (pool size − 1) 0 Which sample to play (p-lockable; or chosen by velocity layers)
`tune` −24 … +24 semitones 0 Pitch offset in semitones (p-lockable per hit)
`start` 0 … 1 0 Window start (fraction of the clip)
`end` 0 … 1 1 Window end (fraction of the clip)
`loop` 0 … 1 0 ≥ 0.5 loops start…end, else one-shot
`reverse` 0 … 1 0 ≥ 0.5 plays backwards
`attack` 0 … 0.5 s 0.001 Amp-envelope attack
`decay` 0.01 … 8 s 8 Amp-envelope decay (long = play to natural end)
`level` 0 … 1 0.9 Output gain
`crush` 1 … 16 bits 16 Source bit-depth reduction (16 = off)
`srr` 0 … 1 0 Source sample-rate reduction (sample-and-hold; 0 = off)
`normalize` 0 … 1 0 ≥ 0.5 scales the clip to full scale (make-up = 1/peak)
`gain` −24 … +24 dB 0 Manual gain trim (0 = unity)
`fadeIn` 0 … 1 0 Fade-in length, as a fraction of the window (0 = none)
`fadeOut` 0 … 1 0 Fade-out length, as a fraction of the window (0 = none)
`lp` 200 … 20000 Hz 20000 Tone: one-pole low-pass (≈20 k = off)
`slice` 0 … 63 0 Which chop plays in SLICES mode (p-lockable — this is how you walk a break)
`window_mode` 0 … 1 0 ≥ 0.5 reads the slice table; below, the `start`/`end` window. Set by the WINDOW/SLICES pill

Plus the shared voice chain — handy for filtering or re-shaping the transient of a recorded hit.

Design recipes

  • Plain one-shot — defaults; just set slot.
  • Chopped break — switch the pill to SLICES, chop the break with markers, then p-lock slice per step to walk through the loop. Often pair with loop off.
  • Retuned bass/stab from a sample — set tune for the octave you want, and p-lock tune per hit for a moving line.
  • Reverse cymbal / riserreverse on, long clip, attack up for a swell.
  • Gated stab — short decay to chop a long sample into a tight hit.
  • Tonal looploop on with a tight start/end window for a sustained texture.
  • Lo-fi / crunchy break — drop crush to ~6–8 bits and add a little srr for a dusty, down-sampled character baked into the hit; layer the chain flt_cutoff to roll off the top.
  • Clean up a raw recording — turn normalize on to lift a quiet clip to full scale, trim with gain, and dial a short fadeIn/fadeOut to kill clicks at the window edges.

Notes & limits

  • Stereo playback with linear interpolation: a stereo clip keeps its left/right image, and a mono clip plays centred. The track pan then acts as a balance across that image.
  • The window is resolved on the first render after a trigger, so per-step start/end/ slot/reverse p-locks take effect from that hit.