#What you'll learn
- Every effect command, with the exact parameter rules.
- How ticks, rows, speed and tempo relate, and how that affects effects and sequences.
- How Pixxune renders a loop that is truly seamless, and how to keep it that way.
- What is inside each export: WAV loop points, the stems loop.json, MIDI and the song file.
- How to play Pixxune music in a game engine with adaptive layers.
#Before you start
- Read Pixxune — Intermediate first: patterns, order list, channels, instruments and the mixer are assumed.
- Know hexadecimal digits (0–9, A–F): effect parameters are typed in hex, like in classic trackers.
#How-tos
#How to use every effect command
Move the cursor to one of a channel's two effect columns, type the letter, then two hex digits.
| Command | What it does |
|---|---|
| 0xy | Arpeggio: cycles base note, +x and +y semitones every tick |
| 1xx / 2xx | Slide up / down by xx per tick |
| 3xx | Portamento: glide to the row's note at speed xx |
| 4xy | Vibrato: speed x, depth y |
| Axy | Volume slide: up by x or down by y per tick |
| Rxx | Retrigger the note every xx ticks |
| Vxx | Duty 0–3 (pulse width) |
| Sxx | Cut the note after xx ticks |
| Gxx | Delay the note by xx ticks |
| Pxx | Pan: 00 left, 80 centre, FF right |
| Fxx | Set the tempo in BPM (hex) |
- Use both effect columns at once, for example 047 (a major chord arpeggio) plus S03 (cut it short) for a stab.
- Gxx and Rxx count ticks, so their timing depends on Speed (ticks per row).
- Fxx changes tempo from that row on. Put it on the first row of the loop if the loop should always restart at that tempo.
#How to reason about ticks, rows and tempo
- BPM sets beats per minute. Speed sets how many ticks fit in one row.
- Effects and per-tick sequences advance once per tick. Raising Speed gives effects more steps per row (smoother slides, longer arpeggio cycles); lowering it makes them faster and choppier.
- A generated song uses patterns of 2 bars × 16 rows, so one row is a 1/8 of a beat at the default settings. Plan Step and drum spacing around that.
- Swing pushes off-beat rows later without changing the tempo.
#How to design a wavetable or FM sound
- Set the instrument's wave to Wave. Draw in the 32 × 16 grid (32 steps, 16 levels). The preview plays when you let go.
- Few, large steps sound like early consoles; smooth curves sound like flutes and organs.
- Set the wave to FM for bells and electric pianos. FM ratio picks the overtone, FM depth how bright it is, FM decay how fast the brightness fades.
- Combine either with a Volume 0–15 sequence for plucked or swelling notes.
#How to keep a loop seamless
Pixxune renders the loop after warming it up with about 10 seconds of loop history, so reverb, echo and release tails sound exactly as they will on the second, third and hundredth pass. Oscillators, vibrato and the noise generator restart on every note, so each pass is identical.
- Click Check the loop seam after any change to the last rows of the loop.
- If it reports a jump, shorten Echo feedback, lower Reverb size, or end the loop's last notes earlier with Sxx.
- Avoid notes that ring across the loop point on the Ambience channel; beds are generated to loop, but a long release on top can still smear.
#How to export loop points your engine can read
- Export → WAV: a looping song is written as the intro plus one loop. The loop start and end are stored in the WAV's sampler chunk (smpl), which many engines and audio tools read automatically.
- Stems (per channel or Calm / alert / combat) is a ZIP with the full mix, one WAV per part and loop.json:
- name, rate, bpm
- loopStart / loopEnd in samples, and loopStartSec / loopEndSec in seconds
- stems: the file names in the ZIP
- If your engine ignores smpl, set its loop region from loop.json (start at loopStartSec, end at loopEndSec).
- OGG / WebM are smaller but carry no loop points. Use them for one-shot music, or loop them with the numbers from loop.json.
#How to move songs between Pixxune and other tools
- MIDI exports notes, tempo and channels for other music software. Open also imports .mid files as a new song.
- Song .json (Save song (.json)) is the complete editable song: channels, instruments, patterns, order, mixer and master settings.
- Sending a track to your Pixx library writes a sound asset with meta.loop, meta.bpm, meta.stems and the whole song inside meta.pixxune, so opening it in Pixxune again restores the editable song.
- Open accepts .json, .mid, .wav (becomes an instrument) and .pxasset.
#Workflows
#Adaptive music in an engine
- Generate with Intensity layers, then adjust each channel's Layer in Mixer.
- Export → Calm / alert / combat. All three stems have the same length and loop points.
- In your engine, start all three at once on the same clock, loop them with the points from loop.json, and set the alert and combat volumes to zero.
- Fade the alert and combat stems up and down with the game's danger level. Because they start together, they stay in sync forever.
#Hand-tuned chip lead from a generated sketch
- Generate a track and Clone the main pattern.
- Replace the generated arpeggio chords (0xy) with a per-tick Arpeggio (semitones) sequence on the instrument, so every note gets the same chord shape.
- Add 4xy vibrato only on long notes, and Vxx duty changes on the downbeats for movement.
#Music through a game pipeline with Flow
- In Flow, map Pixxune → Pixxizi.
- Send the loop WAV from Pixxune with Send result to Flow; Pixxizi's step opens with the sound, loop points and tempo intact.
- When the composer re-exports, the Pixxizi step shows Needs re-run, so the build always uses the newest track.
#Tips and shortcuts
- Up to 16 channels, 128 rows per pattern and 256 order rows per song.
- Playback renders the whole song offline with the same renderer as export, so what you hear is exactly the file you download. Long songs take a moment to re-render after big edits.
- The noise wave is a classic shift-register noise; Short (metallic) noise switches to the short, tonal mode.
- Typing in an effect column only accepts the valid effect letters (0 1 2 3 4 A R V S G P F).
- Ctrl+S opens Export; Ctrl+Z / Ctrl+Y undo and redo one keystroke at a time.
#Troubleshooting
- An effect does nothing. Check the letter is one of the commands above, the two digits are hex, and that Speed gives the effect enough ticks to be heard.
- The game loops with a gap. The engine is looping the whole file. Use the smpl loop points or the times in loop.json.
- The stems drift apart in the game. Start them on the same frame and don't stream them with different buffer sizes.
- An imported MIDI file sounds thin. MIDI carries notes, not sounds. Assign Pixxune instruments to each channel after import.
- OGG / WebM is not offered. Those formats need browser recording support; use WAV instead.