Songs
Status: draft. Concrete reference content + structural placeholders; flesh out the prose + screenshots when ready.
Purpose
A Song in VL Studio is a timeline of cues — ordered checkpoints, each linked to a preset and optionally carrying automation (effect toggles, key/scale changes, tempo changes, TALK presets, HardTune key-source overrides) plus lyrics and performance notes. Songs are what Performer Mode walks through during a live performance, advancing cue-by-cue under your foot or alongside a backing-track timeline.
VL Studio difference — songs vs on-device sequence recording
The closest thing the VL3X has to a "song" is Sequence Recording on the Backing Track tab — you press Record, the device captures every effect change you make while the track plays, then plays it back next time. It's tied to a single preset, and editing it means re-recording over the parts you want to change (overdub mode).
VL Studio songs are a different model entirely: an ordered list of cues with timestamps. Each cue can switch to a different preset, change key/scale, set tempo, fire a TALK preset, or override the HardTune key source — without re-recording anything. Reorder cues, edit a single cue's automation, add lyrics and performance notes, share the song across machines as a .jsong file. The whole timeline is structured data you can edit, not a captured performance you have to redo.
Walk-through
- Open the Songs page from the top nav.
- Left sidebar — your song library:
- Search box — typeahead matching name or artist.
- Genre tabs — quick filter by genre (All / Custom / individual genres). Each genre has its own color accent that shows as a left-border tag on song rows.
- Song list — one row per song. Each row has Dup (duplicate), Exp (export to
.jsong), and Del (delete) per-row actions. - + New Song at the top creates an empty song; you give it a name, optional artist / genre / default tempo / notes.
- Click a song to open its editor in the main area.
- Cue editor appears in the main area when a song is open. From here you build the timeline cue by cue.
The cue editor
Each cue is a row in the timeline. Build a song by adding cues, setting their fields, and arranging them.
Adding cues
- Quick-add labels — buttons for the common section names: Intro, Verse, Pre-Chorus, Chorus, Bridge, Solo, Breakdown, Outro. Click any to insert a new cue with that label pre-filled.
- + Cue — adds a blank cue.
- The first cue is conventionally an "Intro" or "Verse 1" — Performer Mode arms it on song entry but doesn't fire it until your first NEXT, so you have time to get to the instrument before the backing track starts.
Reordering cues
Each cue row has ^ (up) and v (down) buttons that swap that cue with its neighbour. You can also drag a cue block left or right on the timeline view to set its timestamp; reorder happens implicitly when one cue's timestamp moves past another's.
Per-cue fields
| Field | What it does |
|---|---|
| Label | Short section name shown on the cue progress bar and in the side panel. |
| Timestamp | For backing-track-driven auto-advance, the time within the track where this cue should fire. Leave blank if you're advancing by foot only. See Editing the timestamp. |
| Preset | Picker from your library — see Preset picker. |
| Backing track | Optional per-cue audio file. When set, the file auto-plays in Performer Mode when the cue fires. See Backing track. |
| Lyrics | Brief on-screen hint shown in Performer Mode. See Lyrics: brief hint vs lyric_lines. |
| Notes | Performance directions (dynamics, transitions, audience cues). Free-form, multi-line. |
| Actions | Automation that fires when the cue is entered. See Cue actions below. |
Editing the timestamp
Two equivalent ways:
- Drag the cue block left or right on the timeline view. Useful for "roughly here" placement.
- Numeric m:ss.ms input appears below the timeline when a cue is selected, with nudge buttons (±5 s, ±1 s, ±0.1 s). Accepts
m:ss,m:ss.s,m:ss.ss, orm:ss.sssformats.
Preset picker
A typeahead field that matches against preset name, description, and slot number simultaneously — type "127" and you'll get the preset in slot 127; type "warm" and you'll get every preset with "warm" in its name or description. Selected entries show the preset's slot, name, and the first sentence of its description.
If the chosen preset isn't currently loaded in the device's slot map (e.g., it's a library-only preset that's never been pushed), the cue still fires when reached — the cue's CC actions still run, but the Program Change is silently skipped. Push the preset to the device first, or change the cue to a preset that's on the device.
Backing track
Per-cue file picker:
- Browse opens the system file picker. Supported formats: WAV, FLAC, MP3, OGG, M4A, AAC, OPUS — the same set the Audio deck reads.
- Clear removes the path.
- The path is shown as text; there's no inline waveform or preview — pre-listen using the Audio page's deck if you need to verify the file.
- Backing-track paths are stored as absolute paths, which means they don't port cleanly across machines without either matching folder structures or a manual relink. See the Songs (.jsong) format.
Undo
Editing or deleting a cue creates an undo snapshot. An Undo button appears in the editor header when an undo state is available; click to restore the cue to its previous state including any structured lyrics.
Duplicating a song
The song list's Dup action clones a song — all its cues, fields, and metadata — under a new name (with " (copy)" appended). Useful for building variations from a master version.
Cue actions
Each cue can carry up to five types of automation. Actions on a cue fire in the order they appear when the cue is entered — there's no drag-reorder for actions, so add them in the order you want them to run. Click the × on an action row to delete; edit values inline.
CC
Sends a MIDI CC to the device. Use to toggle individual effect blocks at the cue boundary.
- Effect dropdown — 15 baked-in shortcuts to the effect-block CCs: Harmony · Double · Reverb (V) · HardTune · Delay (V) · Choir · Synth · MicroMod (V) · Transducer · Amp · Delay (G) · Reverb (G) · Comp · Boost · Wah. Selecting one populates the CC number for you.
- Value selector — ON (127) or OFF (0). The underlying value field accepts 0–127 if you edit the raw JSON, but the UI exposes only the two endpoints (the device's effect-block CCs are pure on/off in practice).
Key / Scale
Sets the device's global key and scale at the cue boundary.
- Key dropdown — 12 values: C, C♯, D, D♯, E, F, F♯, G, G♯, A, A♯, B.
- Scale dropdown — 7 values: MAJ1, MAJ2, MAJ3, MIN1, MIN2, MIN3, CUST.
Same key/scale values as on the Device page's Key & Scale grid.
Tempo
Writes the master Delay.Tempo for the cue's duration.
- Range: 45 to 300 BPM (enforced).
This is the same master tempo as the Mixer's metronome — shared with vocal delay, vocal rhythmic, stutter, guitar delay, and the looper's Quantize Mode. (GuitarShaper's Rhythmic block has its own independent tempo — see GuitarShaper → Tempo clocks.)
TALK
Switches the device to a TALK preset.
- Slot — numeric input. Default 490 on a newly added action (TC-Helicon's factory blank slot).
- Fallback — clear the slot field and the action falls back to the global TALK preset configured at Settings → TALK Preset. If both per-cue and global are unset, the action logs a warning and skips.
The same precedence applies to setlist talk-break entries — see Setlists → Talk-break preset precedence.
HardTune Key Source
Overrides HardTune's per-preset Key Source for this cue.
- Value dropdown — 4 options:
| Value | Behavior |
|---|---|
| 0 — Chromatic | Snap to the nearest chromatic note (12-tone). |
| 1 — Key + Scale | Snap to the current global key/scale (most musical default). |
| 2 — MIDI | Snap to whatever notes are coming in over MIDI. |
| 3 — Guitar | Snap to whatever notes are being played on the connected guitar. |
Default for a freshly added action: 1 (Key + Scale) — matches whatever the device's current key/scale is.
Lyrics: brief hint vs lyric_lines
The cue's Lyrics field is a brief on-screen hint shown in Performer Mode — typically a few words ("Verse 1: It's gettin' kind of late"). It's not a full lyric sheet, and it's what the performer reads at a glance during the cue.
Internally, the format also defines a lyric_lines field — a structured array of {t_ms, text} objects, intended for line-by-line timing and karaoke-style use. lyric_lines is not currently editable in the cue editor's UI. It's populated only by:
- Importing a
.jsongfile that already contains structuredlyric_lines. - AI Lyrics Enrichment (see below) — though current enrichment populates the brief
lyricsfield, not the structured timing.
If you import a .jsong with lyric_lines, they're preserved in your library and travel along with the cue on re-export. Performer Mode shows the brief lyrics text; full karaoke-style line-by-line display is a future capability.
Treat lyrics as performer memory aids
The lyrics field is intentionally brief because full song lyrics are copyrighted. Distributing .jsong files containing full copyrighted lyrics is distributing copyrighted material. Treat what you type here as a performer memory aid — the same role a few words on a setlist play — not a reproduction.
AI Lyrics Enrichment
The song header has an Enrich Lyrics action that asks the AI to fill in or refine the brief lyrics on cues that are missing them. The AI uses the cue label, the song's artist/genre, and surrounding context to propose appropriate brief hints.
After enrichment, the editor reports how many cues were updated. You can edit any of the AI-generated lyrics afterward.
Reference
Action ordering
Actions on a cue fire in array order. There's no drag-reorder; add them in the order you want them to execute, or delete and re-add to change the order.
In practice the order rarely matters — CC toggles, key/scale, tempo, TALK, and HardTune key-source writes all reach the device independently. The main exception is when two actions target the same parameter (e.g., two CCs on the same effect block) — the later one wins.
Demo songs on a fresh install
VL Studio ships 5 bundled demo songs that auto-seed your library on first launch when the songs table is empty:
| Demo song | Cues | Purpose |
|---|---|---|
| Here Comes the Sun (The Beatles) | 9 | Full-feature reference: presets, key/scale, tempo, backing track, lyrics, notes |
| Black (Pearl Jam) | 8 | Emotional dynamics — intimate verses building to powerful chorus |
| Songwriter Template | 6 | Blank canvas — clone and customize. 120 BPM, C major, public-domain. |
| Worship Set Opener | 5 | Worship-style preset chain, G major, church-set flow |
| Guitar Effects Showcase | 10 | Stress test — rapid amp/effect switching across 10 guitar presets |
The demos are regular songs in your library — no special badge, no deletion lock. Delete or edit them like any other.
Demo songs reference factory preset names
On a truly fresh install (no Library → Pull All yet), the demo cues reference presets that aren't in your library — they import with cues that have no preset attached. After your first Library → Pull All, either manually re-link the demo cues to your real presets or just delete the demos.
Sharing songs across machines (.jsong)
Exported songs use the .jsong extension — an open JSON format designed for sharing. Songs round-trip between machines via this format. Backing-track paths are absolute, so moving a song to another machine requires either the backing-track files at the same path, a shared folder structure, or a manual relink after importing.
For the format spec, license/attribution metadata, and round-trip caveats (including a notable round-trip limitation around preset linkage), see Songs (.jsong).
Genre tagging and color coding
Each song's Genre field drives the left-sidebar filter tabs and a color-coded left-border accent on song rows. The Genre field is free-form, but VL Studio ships with color accents for common genres (Rock, Pop, Jazz, Worship, Country, Folk, R&B, Electronic, Hip-Hop, Reggae, Custom, etc.). Songs with no genre get a neutral color.
Troubleshooting
| Symptom | Fix |
|---|---|
| Demo song cues have no preset attached after first launch | Run Library → Pull All from your VL3X, then re-link the demo cue preset references manually, or just delete the demos. |
| TALK action fires the wrong slot | A per-cue TALK action's slot overrides your global TALK preset for that cue only. Clear the per-cue slot to fall back to the global setting. |
| Backing track doesn't auto-play in Performer Mode | The cue's backing-track path is absolute and the file isn't at that path on this machine. Re-set the cue's Backing Track via Browse. |
| Cue at timestamp X never fires automatically | Backing-track-driven advance only fires when the audio player is playing. For solo or no-backing-track performance, use the Performance Clock instead. See Performer Mode → Performance Clock. |
| Cue fires but the preset doesn't change on the device | The chosen preset isn't on the device. Push the preset (Library row → Push) or change the cue to a preset that exists on the device. |
| The Up/Down arrow buttons on a cue do nothing | The cue may already be at the start or end of the song — the buttons are clamped at the boundaries. Use the timeline drag to move it past another cue, or delete and re-add. |
| I want full lyrics, not three-word hints | Treat the lyrics field as a memory aid, not a reproduction. Full song lyrics are copyrighted and the format isn't designed to carry them. For line-by-line displays, structured lyric_lines from a .jsong import is preserved but not currently editable; that capability is planned. |
| AI Lyrics Enrichment didn't update one of my cues | The AI skips cues where the lyrics field is already populated (so it doesn't overwrite your work). Clear the lyrics field on the cue and re-run enrichment. |
| Duplicated song's backing tracks don't play | Duplicate copies the backing-track path references, not the audio files themselves. If you move the duplicate to another machine, you'll need the files at the same path. |
| Genre filter doesn't show my custom genre | Custom genres show under the Custom filter tab. Songs are sorted by genre alphabetically within their tab. |
| Cue timestamp keeps jumping when I drag it | Drag uses pointer movement; the timeline may snap to nearby cue boundaries. Use the numeric m:ss.ms input for precise placement. |
See also
- Setlists — combine songs + standalone presets + talk-breaks into a performable sequence.
- Performer Mode — the live-performance surface that walks through cues.
- Songs (.jsong) — the export format, with full round-trip caveats.
- Sharing & Files — overview of all interchange formats.
- Device — TALK button, effect toggles, the underlying MIDI surface.
- AI Chat — AI can build songs from natural-language descriptions and enrich existing lyrics.
