What it does
Six groups, and what is in each of them.
Sound
Three oscillators on every channel, and everything that drives them.
Oscillators
Three slots on every channel, each running a band-limited sine, saw, square or triangle with its own octave, detune, gain and on/off switch. Sixteen voices deep, on up to sixty-four channels.
Wavetables
Any slot can run a wavetable instead: five factory tables of sixteen morph frames each, band-limited and built at load rather than shipped as files, with up to seven detuned unison voices. The morph position is a knob, and the envelope or an LFO can move it.
FM matrix
A fourth segment on the oscillator selector: a full three-by-three matrix routing each oscillator into the others, its own diagonal included, with a per-slot output column. The default is the identity, so the three simply sum until you say otherwise.
SoundFonts
A channel can play an SF2 file instead of its oscillators — key and velocity zones, root keys, tuning, pan, loop modes and the font’s own volume and modulation envelopes. Six offsets sit on top, so nothing overwrites what the font’s author decided.
Envelope and LFOs
One ADSR behind the three slots, and an LFO on each of them. A shape, a rate in hertz or locked to the tempo, and three independent depths — to pitch, to level and to pan — so any combination of the three moves and the ones left at zero do not.
Presets
Forty factory sounds in seven categories: three for each effect type, six for the synth, two for an audio channel and two for a soundfont. A preset carries the sound, and not a channel’s name, colour, routing, level or effect chain, so loading one mid-mix cannot move a fader or retune a part you have already written.
Writing notes
Two views of the same notes, and the metre they sit in.
Channel rack
A step grid, one row per channel. Click or drag to write steps. Volume, pan and an on/off indicator sit on the row itself, so a pattern is balanced where it is written.
Piano roll
The same notes as the step grid, in a second view. Rubber-band select, move a chord without losing its shape, drag velocity bars in the lane below, click the keys to hear them. Select, paint and slice tools, a snap grid from 1/16 to a bar, and quantize, transpose and randomize over the selection or the whole channel.
Time signature
3/4, 5/4, 6/8, 7/8 and the rest, driving bar lines, beat shading, the bars:beats:ticks readout, what “Bar” snaps to and exported MIDI. A step is the same length in 3/4 as in 4/4.
Arranging
Patterns as clips on a timeline, and curves that move things while it plays.
Playlist
Pattern clips on lanes along a bar timeline; a clip longer than its pattern repeats it. Drag clips between lanes, double-click to open a pattern, switch a lane off. Lanes stretch, for a curve that needs the height.
Automation
Clips on the playlist driving nine scopes: channel and track volume and pan, master gain, the tempo, and any parameter of any oscillator, envelope, soundfont or effect. Reached from the right-click menu of the knob itself. Drag points, bend the segment between two of them, or make it a step.
Loop and transport
Play, stop, tempo, metre, a pattern-or-song switch, and pattern add, duplicate and delete with an editable length. A span selected on any ruler is the span that plays, and a loop drawn ahead of the playhead is played into rather than jumped to.
Mixing
Inserts, effect chains, and what you can see of the signal.
Mixer
A fader, pan, an on/off indicator and a peak meter per insert, plus master — twenty inserts in a new project and up to thirty-two. Each strip lists the channels routed into it, and clicking one goes there.
Effects
Ten of them — filter, reverb, delay, drive, distortion, chorus, phaser, a 3-band EQ, a compressor and a limiter — chained up to nine deep on any channel, mixer insert or the master, each with its own dry/wet. Drag a card by its grip to reorder: the whole drag is one undo step, and Escape abandons it.
Metering
A peak meter on every strip, and an oscilloscope and spectrum of the master output on the transport bar, triggered on a rising zero crossing so the trace stands still.
Working with it
Getting audio in, getting a file out, and coming back to where you were.
Recording
An audio channel plays a recording instead of its oscillators. Arm with R, press record, and the take lands on the playlist at the bar the playhead was on, with a count-in that starts the file on the downbeat. The microphone is asked for when you arm a channel, never at startup.
Render and export
The song, one pattern or a span of bars, as WAV, FLAC, MP3 or MIDI, with sample rate, bit depth, release tail, normalize, fades, dither and stems. A bar range renders from the start and throws the head away, so reverb tails and automation arrive at the in-point in the state playing there would leave them.
Audio and MIDI devices
Driver, output, input, input channels, sample rate and buffer size, with the resulting latency, an input meter and a test tone. MIDI in carries velocity, pitch bend, the mod wheel and the sustain pedal, and a controller survives being unplugged and put back.
Files and undo
New, open, save, save as, dirty tracking and a save-before-closing prompt, with undo and redo over every edit — a whole drag, a preset load and a batch written by an agent each being one step.
Session state
Window geometry, interface scale, active tab, selections, the piano roll’s zoom, scroll, row height and snap, the playlist’s lane height and the score’s text size all come back as you left them. The piano roll’s tool does not.
Two other ways to write a song
The score language, and the MCP server an agent connects to.
Score
A fifth tab holding the whole song as text: key, metre, chord progression, sections, and per channel a voicing, a melody or a counterpoint answering another voice. Checked as you type and compiled to real patterns and clips on demand. The text lives in the project, so recompiling leaves anything you have edited by hand alone.
Agent control
dew runs a Model Context Protocol server inside the application, so a coding agent can read and change the project you have open. It is off until you turn it on, listens on the loopback interface only, and names each client and asks before letting it in. Every call that changes the project is exactly one undo step.