Songs and bouncing
Three apps make a track together, on one clock. The Sequencer records the pads as patterns, in scenes. Song arranges those scenes as blocks with repeats. Arrange lays audio clips on four tracks and plays them as a song. Pad Mixer sets each pad’s level and pan for all of them.
On the SD card
Section titled “On the SD card”- The Sequencer’s scenes and the Song arrangement are in one file for every kit,
crosspad/sequences.json. Changing kits keeps the groove: it plays on the new kit’s pads, at the same tempo. - Each Arrange song is a folder in
SONGS/:song.jsonand aclips/folder with its audio. - A song is saved to a new file first and then swapped in, with the previous version kept as a backup, so a song file is never half-written. A song saved by newer firmware opens as Unreadable, and the CrossPad leaves it as it is.
- Changes in Arrange are saved 400 ms after the last one. Changes made while a song plays are saved when it stops.
Bouncing a scene
Section titled “Bouncing a scene”Bounce turns a Sequencer scene into an audio clip. The CrossPad plays the scene once, from its first beat, and records exactly the scene’s length. The recording is the pads as the Mixer plays them, with their faders, pan, mute and solo, and never the inputs. The clip lands after the last block on the track you chose. An empty song takes the scene’s tempo; a clip recorded at another tempo keeps its own.
Editing in Arrange
Section titled “Editing in Arrange”- Loop region: with LOOP on, the song plays round the region, and PLAY starts there.
- Copy, paste, duplicate: by bars, everything that sounds inside the region on every track. Paste and duplicate insert time, so nothing is written over.
- Cut: splits a track’s block at the playhead.
- Merge: mixes the chosen tracks, at their volumes, into one new clip.
- Import: puts a Recorder loop into the song. See Recorder and Slicer.
One tempo, one metronome
Section titled “One tempo, one metronome”- The tempo is one value: the top bar’s BPM, the Sequencer’s BPM field and Arrange’s tempo dial all show and change it. A playing song sets its own tempo. When a DAW sends a clock, the CrossPad follows it (see MIDI clock).
- The metronome key on the top bar and the Sequencer’s M are one switch. REC and STOP leave it as it is. A count-in is heard either way.
- A recorded press keeps its length: playback holds the note as long as you held the pad. This matters for a sample in Hold mode and for chords.
For app authors
Section titled “For app authors”The song engine is PlatformServices::songEngine (ISongEngine) in crosspad-core.
- A call that needs the card (open, list, save, bounce, merge, import) is a request. It returns at once; read the
answer from
openState(),projects(),clips()withlistGeneration(),playing()andbounceStatus()in your UI timer. - Edit the song model through
song()while you holdsongMutex(), then callcommit(). Playback picks the change up at once. - The sequencer presses pads as its own event source. Pad logic that has to tell a finger from a take reads
PadManager::pressSource(pad).