# The stems view

> The track as a mixer and a timeline. Mute, solo, pan and level every part, watch the faders follow the mix through the song, add stems, regenerate one, and change tempo, key and length.

**stems** on the view switch shows the track as parts. Each stem in the code gets a track with its own mute, solo, pan and level, a lane that shows what it plays, and an editor underneath.

![The stems view with the bass selected. The numbers match the list below.](https://docs.songco.de/img/stems-tour.webp)

1. **The song bar.** The position, the tempo, the key and the length, with undo, redo and the song menu at the right.
2. **The timeline.** A ruler with bar numbers, and the playhead. Click or drag to move through the song.
3. **A track header.** The stem's colour and name, what kind of stem it is, its meter, mute, solo, pan and level.
4. **A lane.** Every note the stem plays across the song.
5. **+ stem.** Adds a new part.
6. **The editor tools.** The selected stem's name, whether it is code or notes, the snap, and the zoom.
7. **The note grid.** A piano roll for pitched stems, a drum grid for drums.
8. **The velocity lane.** How hard each note is hit.
9. **The inspector.** Rename the stem, change its role, regenerate it, read its rows of the mix, edit its code.

This page covers the top half: the song bar, the timeline and the tracks. [Edit a stem](https://docs.songco.de/app/stem-editor/) covers the bottom half.

The stems view and the [code view](https://docs.songco.de/app/code/) show the same track. Anything you do here rewrites the code, and the app remembers which view you were in.

A full-length track is thousands of notes, and reading them all takes a few seconds the first time the stems view opens on it. The status line says `reading the song…` while that happens. A track that is already playing keeps playing, and the lanes appear when the read is done. After that, an edit reads only the stem it changed.

## Start from nothing

With no track loaded, the stems view offers two ways in.

![The stems view with no track.](https://docs.songco.de/img/stems-empty.webp)

- **generate all** writes a whole track from the composer's prompt, genre and length, the same as the **generate** button.
- **or start with one** opens the **+ stem** panel so you can build the track a part at a time.

While stems are being written, placeholder rows stand where they will land and fill in as each stem arrives. The status line counts the stems that are done.

![A track being written in the stems view. The kick has arrived; the grey rows are still to come.](https://docs.songco.de/img/stems-generating.webp)

## The song bar

![The song bar.](https://docs.songco.de/img/stems-song-bar.webp)

- **Position.** `1.1` is bar 1, beat 1. It follows the playhead.
- **bpm.** The tempo, from 40 to 300. Type a number and press `↵`. It rewrites the tempo line in the code.
- **key.** The root note and the scale: minor, major, dorian, phrygian, lydian, mixolydian, locrian, harmonic minor, melodic minor, minor pentatonic, major pentatonic, blues, whole tone, chromatic. A track that does not state its key shows the key Songcode worked out from its notes and its bass line, in a dimmer colour; pick a value to pin it. While a whole track is being written it reads **auto**, and the key is worked out once every stem is in. After that the reading stays put through edits unless the notes clearly move to another key. New and regenerated stems follow the key. Stems that already exist keep their notes.
- **bars.** The loop's length, from 1 to 32. For a full track this is fixed, because the sections decide the length.
- **Undo and redo.** Every change made in the stems view can be undone: `⌘Z`, and `⇧⌘Z` or `ctrl` `Y` to redo. The shortcuts work anywhere in the window except inside a text field, which keeps its own undo.
- **…** is the song menu.

### The song menu

![The song menu.](https://docs.songco.de/img/stems-song-menu.webp)

- **download stems (.wav)** renders every stem to its own WAV file, so you can mix the track in other software.
- **download mix (.wav)** renders the whole track to one WAV, with your levels, pans and mutes applied.
- **convert all to notes** writes every stem out as notes you can move by hand. See [code and notes](https://docs.songco.de/app/stem-editor/#code-and-notes).
- **clear song** removes every stem. Undo brings them back.

Both downloads are rendered in your browser. [Download and export](https://docs.songco.de/app/export/#stems-and-mix-from-the-stems-view) has the details.

## The timeline

The ruler above the lanes shows bar numbers. For a full track it also shows the section names along the top, and the lines between sections run down through the lanes.

![A full track zoomed in. Section names sit above the bar numbers, the grey bar under the ruler shows which part of the song is in view, and the faint line is where a click would put the playhead.](https://docs.songco.de/img/stems-timeline.webp)

### Move through the song

- **Click the ruler** to put the playhead there. **Drag** to scrub; while the track plays, the sound follows.
- The playhead snaps to bars, or to beats when you are zoomed in far enough. Hold `alt` to place it freely.
- `←` and `→` step one bar. With `shift` they step one beat. `home` goes back to the start.
- The playhead is always shown, playing or not. Stopped, it marks where the next play starts.

The arrow keys move the playhead only when the note grid, a slider or a menu does not have the focus; those keep the arrows for themselves.

### Zoom and scroll

- **− and +** at the left of the ruler zoom out and in. So does `⌘` with the scroll wheel, or a pinch on a trackpad, centred on the pointer.
- **Scroll sideways**, or hold `shift` and scroll, to move along a zoomed song. Or drag the lanes left and right.
- When zoomed in, a bar under the ruler shows which part of the song is in view. Drag it to look somewhere else.
- While the track plays, the lanes turn the page to keep up with the playhead. Scroll away by hand and they stay where you put them until the playhead comes back into view.

Opening a different track always starts zoomed all the way out.

![A full track at full width, with its sections along the ruler.](https://docs.songco.de/img/stems-full.webp)

## Tracks

![Track headers. The hats are muted and the bass is soloed.](https://docs.songco.de/img/stems-track-head.webp)

Each header has, from left to right:

- **The colour dot and the name.** The colour comes from the stem's role. Under the name is the role and whether the stem is `code` or `notes`.
- **…** on the selected or hovered track opens the stem menu.
- **The meter.** That stem's level while the track plays.
- **m** mutes the stem. **s** solos it: only soloed stems are heard. Several stems can be soloed at once. The lane of a stem you cannot hear, muted or left out by a solo, is dimmed.
- **The pan knob** places the stem between the left and right speakers. Drag it sideways, or up and down. Hold `shift` for finer steps. Double-click it to return to the centre. With the keyboard on it, the arrow keys move it by 1 and `shift` with an arrow by 10.
- **The level slider**, in decibels from -36 to +6. Double-click it to go back to 0db.

Click a track to select it. The editor below then shows that stem.

![The stems view while playing. The meters move and the playhead crosses the lanes.](https://docs.songco.de/img/stems-playing.webp)

Level, pan and mute are written into the track's `mix` table, so the controls and the code always agree. Change a row in the [code view](https://docs.songco.de/app/code/) and the fader stands there when you come back. Solo is for listening and is not saved. The **download** button's WAV and MP3, and **download mix**, include your levels, pans and mutes.

### A mix that moves

A track's `mix` table can [change through the song](https://docs.songco.de/ode/language/#a-mix-that-changes): a pad that rises through the break, a lead that sweeps from left to right, a fade at the end. The controls show it. As the playhead moves, each fader, pan knob and mute button stands where the song has it at that bar, while the track plays and while you drag through it stopped.

![The pad's fader held in the break. The line of the mix it writes shows beside it.](https://docs.songco.de/img/stems-mix-moves.webp)

- **A ring on a fader** means a block of the mix, or a fade, is moving that stem at the playhead. Hover it to read which one.
- **A line across a lane** is the fader's path over those bars: up is louder.
- **A hand on a control writes the row in force at the playhead.** In the break, where `in break { pad ramp(-17db, -11db) }` sets the pad, dragging the pad's fader moves both ends of that ramp and keeps its shape. Outside any block it writes the stem's own row at the top of the table. To change another part of the song, move the playhead there first.
- **The line being written shows beside the track** while you hold the control, as it will read in the code.
- **m** on a stem a block has muted takes that mute out of the block. Muting a stem always mutes it for the whole track.

### Groups and master

A track that names a group in its code, `group drums: kick, clap, hats`, gets a strip for it under the stems, with a meter, **m** and a level that act on every stem in the group. Its row in the `mix` table is written the same way as a stem's.

When a block of the mix moves the whole track, as in `last 4bars into end { master fade out }`, a **master** strip stays in view above **+ stem**. Its fader follows the fade, and can be moved inside the bars that block covers. Elsewhere it is dimmed: master moves only inside a block.

### The stem menu

![The stem menu.](https://docs.songco.de/img/stems-stem-menu.webp)

- **regenerate** asks the model to rewrite this one stem so that it fits the others, straight away and with no direction. To say what should change, use **regenerate** in the [inspector](https://docs.songco.de/app/stem-editor/#regenerate-a-stem).
- **duplicate** copies the stem under a new name.
- **convert to notes** writes the stem out as notes you can edit by hand.
- **delete** removes the stem. Undo brings it back.

## Add a stem

**+ stem** sits at the bottom of the tracks and stays in view however many stems the track has. It opens a panel.

![The add a stem panel, with chords picked and a direction typed.](https://docs.songco.de/img/stems-add.webp)

1. Pick a **role**. There are 15: kick, snare, clap, hats, perc, bass, sub, chords, stab, lead, arp, pad, vocal, texture, fx. The role decides the colour, the kind of editor, and what the model is asked to write.
2. Optionally type a direction, such as "offbeat, dark, sparse".
3. Press **generate** to have the model write the stem to fit the track, or **empty** to get a blank one to draw into.

A generated stem uses your key and the model selected in the composer. It is given the rest of the track, so it fits the key, the tempo and what is already playing. An empty stem needs no key.

The new stem is selected, and the track list scrolls to it if it lands out of view.

The roles, and the sound an empty stem of each starts with, are listed on [edit a stem](https://docs.songco.de/app/stem-editor/#roles).

## Play

The transport in the top bar plays the stems view too. `space` plays and pauses. Changes you make while it plays are heard at once: there is no update button to press here.

## Drafts and publishing from the stems view

Changes here are kept in the draft the same way as in the code view: a new stem, a regenerated stem, a level, pan or mute. **publish** works the same too. A track last worked on in the stems view opens in the stems view, with its levels, pans and mutes as you left them.

---

This page on the web: https://docs.songco.de/app/stems/
Every page of the Songcode docs, for agents: https://docs.songco.de/llms.txt (index) and https://docs.songco.de/llms-full.txt (all of it in one file).
