The Produce workspace is Studio's DAW workflow, Volta-flavoured: the only thing you type is the pattern each track plays. Everything else is a one-to-one surface that writes the same source you would have typed — instruments, effects, levels and sends are knobs in the Rack's song case, placement is regions in Arrange, the mix is the Mixer. Source is one tab away and always holds the whole song, so nothing is hidden or locked.
Open it#
Open Display, expand Workspace and pick Produce. The window divides into:
- Pool down the left: the song's patterns as cards (Arrange — write and arrange with the agent § The Pool).
- Timeline, Rack, Sounds and Source as tabs in the middle, with Patterns (one row per track) below them.
- Pattern on the right: the focused pattern's editor — a step grid, the piano roll and its text line (Arrange — write and arrange with the agent § The Pattern pane).
- Mixer along the bottom.
Produce opens on the song's first pattern, so the Pattern pane is never empty, and its Timeline opens on the song map with each clip in its pattern's colour. You can move or resize any pane as in Workspace layouts; the Patterns pane can also be added to any other layout. A Produce layout saved before the Pool joined it is brought up to date when Studio starts, unless you had changed it.
Patterns in focus#
One pattern is in focus at a time, and every pane follows it: its Pool card is highlighted, its clips on the Timeline are outlined while the others fade back, its rows in the sheet are tinted, and the Pattern pane edits it. Focus a pattern by clicking its Pool card (or ↑ / ↓), a clip on the Timeline, or a row of the sheet — the row's ground or an idea's name, not its field or chips — and typing in a row's field focuses its pattern too. A focus moved elsewhere scrolls the sheet to the pattern's row. + pattern and + track › Drums focus what they add.
Each row of the sheet wears its pattern's colour — the same colour as its Pool card and its clips — so a track that plays several patterns shows one band per pattern. The Timeline's COLOUR · TRACK puts track colours back everywhere.
The pattern sheet#
Each row shows a colour (its pattern's, wherever the Pool is docked, as in Produce; otherwise the track's), the track's name and what it plays (voice, samples), then its pattern as one line of text:
tempo = 112bpm
keys = patch { source = saw (freq pitch) |> lpf 1800Hz 0.4,
ampEnv = adsr 5ms 180ms 0.6 250ms, gain = vel * 0.25 }
riff = !"<[c3 e3 g3 e3] [a2 c3 e3 c3]>"
lead = play keys riff
kit = sound !"bd ~ sn ~, hh*8"
Listen for: the two-bar arpeggio over a plain backbeat.
Make it yours: in the kit row, type !"bd*2 [~ bd] sn ~, hh*8" and press Enter. Only that pattern changes in the song, and you hear it straight away.
- Enter writes the pattern and runs the song (⌘Enter in a field of several lines). The write is checked by the compiler first and is one Undo step. Turn off Run on Enter in the header to leave it pending until you press Run.
- Escape puts the field back to what is written. Clicking elsewhere keeps what you typed as a draft: the row says so, and nothing is written until you come back and press Enter.
- 🔊 appears beside a draft that compiles: it renders the song with the draft for the track's passage, offline, and plays it, so you can hear a change before you write it. Nothing is written or installed; click it again to stop.
- While you type, the draft is compiled once you pause. If it would not compile, the compiler's sentence appears under the row in the alert colour, and Enter leaves the song unchanged.
- A pattern is any pattern expression, not only mini-notation:
!"c3 e3" |> fast 2orriff |> every 4 revwork. Parentheses are added when the pattern is an argument and needs them. - A track that plays a named pattern (
lead = play keys riff) edits that name's definition. When several tracks play it, the caption sayswith echo, because the edit changes all of them. - While the song plays, the steps that sound light up in the field in the track's colour, like they do in Source. They do not light while you are editing the field.
The row's controls:
- ▶ / ■ at the left launches or stops the track, like a clip slot. In a written timeline, starting a placed track plays its row from where the song is, and Resume arrangement hands every launched track back to the song (Write a song as a timeline § Live launch and the written row).
- S and M solo and mute the track, the same switches as the Mixer strip and the Cycles lane.
- ▦ (drum and sampled tracks) unfolds the track's step rows: one row of sixteen steps per sample (
BD,HH,SN), the playing step outlined. Click a step to add or remove a hit. The pattern is rewritten as sixteen steps per layer (bd ~ ~ ~ …), checked against the compiled events, and run. A pattern that changes from cycle to cycle (<bd sn>) has no step rows. Edit those as text. The rows appear once the song on screen is the one that is playing; run it first. - ♪ opens the track in the piano roll to draw notes.
- ◫ opens the track's case in the Rack — sequencer, voice, effects and channel strip — the same for every track, the track's own patch in the picker; ‹ back opens that patch's case, knobs and all, an inline
patch { … }too (Patch Bay and Rack). - ⟲ opens the row's versions across the song's history — hear, A/B, diff, use here (Save ideas, compare versions and record takes § Find a remembered change); it lights when the part differs from your last idea or this session's first version.
- ⋯ offers Rename (every place the compiler resolves to that name, but not a same-spelled local), Duplicate (a copy beside the original, added to every scene, timeline and group that lists it) and Remove (its declaration, its places in those lists and its mixer entry). Each one is checked by the compiler and is one Undo step. A track that another track still listens to (a sidechain or a tap) cannot be removed, and the compiler's sentence says where it is used.
A track built some other way — a stack of patterns or a function's result — says composed in Source and offers {} to open its definition.
The header#
- Tempo: drag or type the bpm. The song's
tempoline is written when you let go, or added if the song has none. - + track: Drums adds a
soundtrack on the bundled kit; Synth (new patch) adds a track namedsynthwith its own saw voice (its row reads own patch); Play ‹patch› adds a track on one of the song's patches, named after it (pluckTrack); Browse sounds… opens Sounds for samples and library instruments. In a song with scenes, the new track joins the current scene. Each new track starts with a pattern for you to type over, and runs at once while Run on Enter is on. - Arrange · 8 bars (a loop song with no form yet): turns the loop into a written timeline. Each track's pattern becomes a named idea, placed once for that many bars, and a looping
songlists the tracks. Arrange then moves, trims, splits and copies the regions (Write a song as a timeline § In Studio). Set the bars with the field beside it. - + pattern (a song with a form): a new named pattern to place on the timeline.
Once a track is placed in regions, its row says placed on the timeline, and its ideas are listed under IDEAS, each with the tracks that use it. Editing an idea changes every region that plays it.
An idea works like a clip:
- 🔊 on an idea renders it looping on the first track that plays it, offline, so you hear it alone in its part before placing it anywhere.
- Drag an idea's name onto a track's row in Arrange to place it there. A ghost shows where it will land while you drag. On release, a region of that idea is written at the bar under the pointer. It is whole passes of the idea, at least four bars, and stops at the song's end. It is the same checked edit as Arrange's own
+, and one Undo step. Drag its edges in Arrange to change its length. Dropped over bars the row already plays, it replaces them there (@overlap "replace", Write a song as a timeline).
Notes and limits#
- In the browser, Arrange's own region edits are written to the source and heard on the next Run. An idea dropped from the sheet runs straight away while Run on Enter is on.
- The sheet edits the live song. While Source shows a parked song (a song File → New just made, say), the pane says so and offers Make ‹song› live ⌘↵ and Back to the live song; while it shows an imported module, it asks you to select the live song's tab.
- Run on Enter runs the whole buffer, so any other edits pending in Source are heard as well.
- Rename does not rewrite names inside strings, such as an automation address (
"kit.reverb.mix"). If a string still uses the old name, the compiler refuses the rename and says where. - Arrange refuses a song that already has scenes or a timeline, and a track it cannot carry (a composed one), rather than leave it out. To arrange a scene song, use convert to timeline… under the Map.
- These checks prove what each gesture writes. They do not prove how the result sounds; listen to it.
Next steps#
- Build sounds as knobs: Patch Bay and Rack.
- Arrange and automate: Write a song as a timeline.
- The pattern language itself: Patterns: events over time.
- The track home for notes, instruments and recording: The Studio workspace.