Effects Reference
Named effect presets and inline modifiers (e.g. C4<wobble>, C4<arp:4,7>) shape notes during playback and export. Availability can vary by chip — see Sound Chip Plugins.
For a Game Boy walkthrough of vibrato, arpeggio, and portamento, see Tutorial — Effects.
Effect statement
effect wobble = vib:8,4
effect arpMajor = arp:4,7
pat melody = C5<wobble> E4 G4<arpMajor> C5
# or as a sequence/pattern modifier:
# seq lead = melody:wobble
Catalog
| Effect | Syntax sketch | Behaviour | Notes |
|---|---|---|---|
| Arpeggio | <arp:a,b,…> | Cycle semitone offsets (omit leading 0) | UGE: first two offsets → 0xy |
| Pan | <pan:n> / <gb:pan:L|R|C> | Stereo position | Numeric or GB NR51 |
| Portamento | <port:speed> | Pitch slide from previous note (legato) | UGE 3xx |
| Vibrato | <vib:depth,rate[,wave[,rows]]> | Periodic pitch modulation | UGE 4xy |
| Volume slide | <volSlide:±delta[,steps]> | Fade in/out | Smooth or stepped |
| Tremolo | <trem:depth,rate[,wave[,rows]]> | Periodic amplitude modulation | Preview/WAV; meta in UGE |
| Note cut | <cut:ticks> | Gate / staccato after N ticks | UGE E0x |
| Retrigger | <retrig:interval[,volDelta]> | Restart note on interval | WebAudio only |
| Echo | <echo:delay[,fb[,mix]]> | Delay with feedback | WebAudio only |
| Pitch bend | <bend:semitones[,curve[,delay[,time]]]> | Musical semitone bend | WebAudio / WAV; UGE approx. |
| Sweep | <sweep:time,dir,shift> | Hardware-style frequency sweep | Pulse 1 / NR10-style |
Parameters are comma-separated; empty slots keep defaults (e.g. vib:6,5,,2).
Named presets
Define once, reuse inline or as a sequence modifier:
Interactive playback loads in the browser.
…effect wobble = vib:6,4 # reusable vibrato preseteffect spark = arp:4,7 # reusable arpeggio preseteffect slide = port:16 # reusable portamento preset
inst lead type=pulse1 duty=50 env=gb:15,down,0inst bass type=wave volume=100 wave=[0,2,4,6,8,10,12,14,15,14,12,10,8,6,4,2]
pat lead_line = C5:4 E5<wobble>:8 G5<spark>:4pat bass_line = C3:4 E3<slide>:4 G3<slide>:4 C4<slide>:4…Arpeggio (arp)
Cycles semitone offsets at chip frame rate. List only steps above the root — do not include 0.
| Param | Required | Meaning |
|---|---|---|
| offsets | yes | Semitone steps (e.g. 4,7 major) |
Export: UGE maps the first two offsets to hUGE 0xy.
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:15,down,0pat major = C4<arp:4,7>:15 . # major triad offsets (omit leading 0)pat minor = C4<arp:3,7>:16 # minor triad offsets…Panning (pan)
| Form | Meaning |
|---|---|
gb:pan=<L|R|C> | Game Boy NR51 terminals |
pan=<num> / <pan:num> | Numeric pan in [-1.0, 1.0] |
seq:pan(value) | Apply to a whole sequence occurrence |
Export: UGE maps gb:pan to NR51 bits; numeric pan snaps to L/C/R unless --strict-gb rejects it.
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:12,down,0# Numeric pan [-1..1], then Game Boy NR51 terminalpat stereo = C5<pan:-1.0>:4 E5<pan:0.0>:4 G5<pan:1.0>:4 C6<gb:pan:L>:4…Portamento (port)
Smooth pitch glide from the previous note. Notes with portamento do not retrigger the envelope (legato). First note in a pattern never receives portamento.
| Param | Required | Meaning |
|---|---|---|
speed | yes | 0–255 (higher = faster) |
Export: UGE 3xx; WAV uses smoothstep pitch curves.
Interactive playback loads in the browser.
…inst bass type=wave volume=100 wave=[0,2,4,6,8,10,12,14,15,14,12,10,8,6,4,2]pat stepped = C3:4 E3:4 G3:4 C4:4 # discrete pitchespat slides = C3:4 E3<port:16>:4 G3<port:12>:4 C4<port:8>:4 # slide into each target…Vibrato (vib)
| Param | Required | Meaning |
|---|---|---|
depth | yes | Amplitude 0–15 |
rate | yes | Modulation speed |
waveform | no | sine / triangle / square / saw (default none) |
durationRows | no | Length in pattern rows (default: full note) |
Waveform aliases: sin→triangle (smoothest available in hUGE), sqr/pulse→square, tri→triangle, sawtooth→saw.
Export: UGE 4xy (waveform + depth).
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:15,down,0pat plain = C5:8 E5:8 # no vibratopat vib = C5<vib:6,4>:8 E5<vib:8,6>:8 # depth, rate…Volume slide (volSlide)
| Param | Required | Meaning |
|---|---|---|
delta | yes | Positive = fade in; negative = fade out |
steps | no | Discrete steps (omit for smooth ramp) |
Tips: start near-silent instruments at env=1 (not 0); insert . between identical pitches to re-trigger on monophonic channels.
Export: UGE volume-slide opcode; MIDI CC #7.
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:8,flat,0pat fade = C5<volSlide:+6>:8 . E5<volSlide:-6>:8 . # fade in, then fade out…Tremolo (trem)
| Param | Required | Meaning |
|---|---|---|
depth | yes | 0–15 (maps to ~0–50% amplitude) |
rate | yes | Pulsation speed |
waveform | no | sine (default), triangle, square, saw |
durationRows | no | Length in pattern rows |
Export: Full in WebAudio/WAV; UGE/MIDI as meta only (no native tremolo).
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:12,flat,0pat shimmer = C5<trem:8,6>:8 E5<trem:10,8,square>:8 # depth, rate [,waveform]…Note cut (cut)
Terminates a note after N ticks (staccato / gate). Works well with flat envelopes.
| Param | Required | Meaning |
|---|---|---|
ticks | yes | 0–255 delay before cut |
Export: UGE E0x.
Interactive playback loads in the browser.
…inst stab type=pulse1 duty=50 env=gb:12,flat,1pat staccato = C5<cut:2> . E5<cut:2> . G5<cut:3> . C6<cut:2> . # gate after N ticks…Retrigger (retrig)
WebAudio only — not supported in UGE export (warning + omitted). PCM/CLI may require --browser.
| Param | Required | Meaning |
|---|---|---|
interval | yes | Ticks between restarts |
volumeDelta | no | Envelope units per retrig (-15–+15) |
For UGE-compatible stuttering, expand to explicit notes instead (e.g. C4:4 C4:4 C4:4 C4:4).
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:12,down,1pat stutter = C5<retrig:4>:16 E5<retrig:2>:16 # restart every N ticks…Echo / delay (echo)
WebAudio only — not in PCM/CLI or UGE (warnings). Delay time < 10 = beat fractions; ≥ 10 = absolute seconds.
| Param | Required | Meaning |
|---|---|---|
delayTime | yes | Beat fraction or seconds |
feedback | no | 0–100 (default 50) |
mix | no | Wet/dry 0–100 (default 30) |
Slapback (feedback 0, high mix) on a busy melody makes the delayed copy obvious — each note is followed by a quieter ghost. Leave trailing rests so playback does not stop before the last repeats finish.
Interactive playback loads in the browser.
…# delay (beat fraction), feedback %, wet mix %# Short delay + high mix = clear trailing copy of each noteeffect slap = echo:0.2,0,85
inst lead type=pulse1 duty=50 env=gb:15,down,1
# Busy melody so you hear the delayed ghost behind every hitpat melody = C5 E5 G5 A5 C6 A5 G5 E5 C5 E5 G5 C6 G5 E5 C5 G5 E5 C5 . . . . . . . . . . . . . . . .seq lead = melody:slap…Pitch bend (bend)
Smoothly bends pitch by a number of semitones (positive = up, negative = down). Unlike portamento (which glides between discrete notes), bend can target any interval from the base pitch.
| Param | Required | Meaning |
|---|---|---|
semitones | yes | Semitone offset (e.g. +2, -12) |
curve | no | linear (default), exp / exponential, log / logarithmic, sine / sin |
delay | no | Seconds before the bend starts (default: 50% of note duration) |
time | no | Bend duration in seconds (default: remaining note duration after delay) |
Musical default: hold the base pitch for half the note, then bend. Use delay=0 for an immediate bend (C4<bend:+2,linear,0>).
Export: UGE approximates with tone portamento / steps; MIDI uses pitch-wheel events.
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:15,down,0# Hold, then bend +2 semitones (guitar-style)pat phrase = C5<bend:+2>:8 E5<bend:+2,linear,0>:8…Frequency sweep (sweep)
Hardware-style frequency sweep (Game Boy NR10 model). Prefer Pulse 1; other channels may warn.
| Param | Required | Meaning |
|---|---|---|
time | yes | Sweep step period 0–7 (0 = off; higher = slower steps, units of 1/128 Hz) |
direction | no | up / + / 1 or down / - / 0 (default down) |
shift | yes | Shift amount 0–7 (how dramatic each step is) |
Examples: <sweep:2,down,5> (classic “pew”), <sweep:4,down,7> (fast dive), <sweep:6,up,4> (riser).
Instrument-level sweep= on inst … type=pulse1 is separate hardware config — see Game Boy.
Export: UGE maps to NR10 on Pulse 1.
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:15,down,1# Classic GB "pew": time, direction, shiftpat pew = C5<sweep:2,down,5>:8 . . . C6<sweep:4,up,3>:8 . . .…Tempo and per-channel speed
Master tempo is the top-level bpm directive (see Metadata Directives).
Channels can also take a speed= multiplier (speed=2 or speed=2x) so that channel runs at bpm × speed. The parser and WebAudio player support this; there are almost no published example songs using it — relative pacing is more often done with sequence modifiers like :fast / :slow (see Sequence modifiers).
| Form | Meaning |
|---|---|
| (omit) | Channel uses master bpm |
speed=2 / speed=2x | Twice master tempo |
speed=0.5 | Half master tempo |
Interactive playback loads in the browser.
…# Same phrase: channel 1 at master bpm, channel 2 at 2× (finishes sooner)channel 1 => inst lead seq phrasechannel 2 => inst harm seq phrase speed=2x…See also
- Tutorial — Effects
- Tutorial — Final song
- Sequence modifiers
- Patterns
- Game Boy wave
volume=(instrument hardware, not an effect preset)