Skip to main content

Validation & Warnings

The compiler runs semantic analysis after parsing and reports errors and warnings.

Errors (compilation stops)

CheckDescription
Undefined instrumentPLAY / BEAT references an instrument not defined
Undefined sequencePLAY_SEQUENCE references a sequence not defined
Undefined patternPLAY_PATTERN references a pattern not defined
Invalid note nameNote doesn't match the expected pattern
Negative durationBeat duration <= 0
Volume out of rangeVolume not 0–255
Velocity out of rangeVelocity not 0–255
Negative ADSRAny ADSR parameter < 0
LOOP count <= 0Loop must repeat at least once
Cutoff out of rangeCUTOFF not 20–20000
Resonance out of rangeRESONANCE not 0–255
Reverb out of rangeREVERB not 0–255
Delay time out of rangeDELAY time not 0–2000
Delay feedback out of rangeDELAY feedback not 0–255
Pan out of rangePAN not 0–255
BPM change out of rangeDynamic BPM not 1–300
SWING out of rangeSWING not 0–100
HUMANIZE out of rangeHUMANIZE not 0–50
FADE duration invalidFADE_IN / FADE_OUT not 1–64 beats
PLUCK on DRUMPLUCK wave cannot be used with DRUM instruments
LFO rate out of rangeLFO rate not 0.1–20.0
LFO depth out of rangeLFO depth not 0–255
VOICES out of rangeVOICES not 1–4
DETUNE out of rangeDETUNE not 0–100
CHORUS out of rangeCHORUS not 0–255
DETUNE without VOICESDETUNE > 0 requires VOICES > 1
Per-note REVERB out of rangeREVERB override not 0–255
Per-note DELAY time out of rangeDELAY time override not 0–2000
Per-note DELAY feedback out of rangeDELAY feedback override not 0–255
Per-note CUTOFF out of rangeCUTOFF override not 20–20000
VELOCITY_CURVE velocity out of rangeStart or end velocity not 0–255
VELOCITY_CURVE note_count out of rangeNote count not 1–128
TIME_SIGNATURE beats out of rangeBeats not 1–16
TIME_SIGNATURE division invalidDivision not one of 1, 2, 4, 8, 16
BEAT exceeds bar lengthBEAT position exceeds the declared TIME_SIGNATURE bar length
REVERB DECAY out of rangeREVERB DECAY not 100–10000
REVERB ROOM out of rangeREVERB ROOM not 0.0–1.0
POLYPHONY out of rangePOLYPHONY not 1–8
BELL on DRUMBELL wave cannot be used with DRUM instruments
BPM OVER target out of rangeTarget BPM not 1–300
BPM OVER beats out of rangeRamp beats not 1–64

Warnings (compilation continues)

CheckDescription
Very short ADSRADSR < 5 ms (control rate is ~16 ms/step)
Note outside piano rangeMIDI < 21 or > 108
Too many synths> 4 synths (ATmega328 has 2 KB RAM)
Fast BPMBPM > 300 may exceed AVR timing
Non-standard audio rateNot 16384 or 32768
Beat outside barBeat position > bar length
PLAY_TOGETHER < 2 itemsUse PLAY_SEQUENCE / PLAY_PATTERN directly
GLIDE on DRUMPortamento has no effect on drum instruments
GLIDE > 1000Very long glide may sound unnatural
GLIDE on PLUCKPortamento doesn't apply well to plucked strings
LFO rate > 10LFO rate approaches audio range
LFO VOLUME on DRUMVolume LFO on drum has limited effect
LFO PITCH on DRUMPitch LFO has no effect on drums
LFO CUTOFF on DRUMCutoff LFO on drum has limited effect
LFO PAN on DRUMPan LFO on drum has limited effect
LFO PAN (AVR target)LFO PAN requires ESP32 with I2S DAC — won't compile on AVR
Per-note CUTOFF without instrument CUTOFFOverride has no effect if instrument lacks CUTOFF
VELOCITY_CURVE extends beyond sequenceNote count exceeds remaining PLAY events in sequence
>2 CUTOFF LFOs (AVR)Multiple filter LFOs may exceed AVR RAM budget
VOICES > 2Uses significant RAM on AVR targets
VOICES on DRUMUnison voices have no effect on drums
DETUNE > 50Large detune may sound out of tune
Note outside KEYNote pitch class not in declared scale
High SWINGSWING > 75 is extreme, may sound unmusical
High HUMANIZEHUMANIZE > 30 creates very loose timing
No TIME_SIGNATURE with high BEATBEAT position > 4 used without explicit TIME_SIGNATURE — assumes 4/4
LEGATO on DRUMLEGATO has no effect on drum instruments
High total polyphonyTotal POLYPHONY across all instruments exceeds 8 (AVR RAM)
BPM OVER short rampBPM ramp < 2 beats may sound like a glitch