Skip to main content

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​

EffectSyntax sketchBehaviourNotes
Arpeggio<arp:a,b,…>Cycle semitone offsets (omit leading 0)UGE: first two offsets → 0xy
Pan<pan:n> / <gb:pan:L|R|C>Stereo positionNumeric or GB NR51
Portamento<port:speed>Pitch slide from previous note (legato)UGE 3xx
Vibrato<vib:depth,rate[,wave[,rows]]>Periodic pitch modulationUGE 4xy
Volume slide<volSlide:±delta[,steps]>Fade in/outSmooth or stepped
Tremolo<trem:depth,rate[,wave[,rows]]>Periodic amplitude modulationPreview/WAV; meta in UGE
Note cut<cut:ticks>Gate / staccato after N ticksUGE E0x
Retrigger<retrig:interval[,volDelta]>Restart note on intervalWebAudio only
Echo<echo:delay[,fb[,mix]]>Delay with feedbackWebAudio only
Pitch bend<bend:semitones[,curve[,delay[,time]]]>Musical semitone bendWebAudio / WAV; UGE approx.
Sweep<sweep:time,dir,shift>Hardware-style frequency sweepPulse 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:

Named effect presets

Interactive playback loads in the browser.

…
effect wobble = vib:6,4 # reusable vibrato preset
effect spark = arp:4,7 # reusable arpeggio preset
effect slide = port:16 # reusable portamento preset
inst lead type=pulse1 duty=50 env=gb:15,down,0
inst 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>:4
pat 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.

ParamRequiredMeaning
offsetsyesSemitone steps (e.g. 4,7 major)

Export: UGE maps the first two offsets to hUGE 0xy.

Arpeggio major vs minor

Interactive playback loads in the browser.

…
inst lead type=pulse1 duty=50 env=gb:15,down,0
pat major = C4<arp:4,7>:15 . # major triad offsets (omit leading 0)
pat minor = C4<arp:3,7>:16 # minor triad offsets
…

Panning (pan)​

FormMeaning
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.

Stereo pan

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 terminal
pat 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.

ParamRequiredMeaning
speedyes0–255 (higher = faster)

Export: UGE 3xx; WAV uses smoothstep pitch curves.

Portamento

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 pitches
pat slides = C3:4 E3<port:16>:4 G3<port:12>:4 C4<port:8>:4 # slide into each target
…

Vibrato (vib)​

ParamRequiredMeaning
depthyesAmplitude 0–15
rateyesModulation speed
waveformnosine / triangle / square / saw (default none)
durationRowsnoLength 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).

Vibrato

Interactive playback loads in the browser.

…
inst lead type=pulse1 duty=50 env=gb:15,down,0
pat plain = C5:8 E5:8 # no vibrato
pat vib = C5<vib:6,4>:8 E5<vib:8,6>:8 # depth, rate
…

Volume slide (volSlide)​

ParamRequiredMeaning
deltayesPositive = fade in; negative = fade out
stepsnoDiscrete 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.

Volume slide

Interactive playback loads in the browser.

…
inst lead type=pulse1 duty=50 env=gb:8,flat,0
pat fade = C5<volSlide:+6>:8 . E5<volSlide:-6>:8 . # fade in, then fade out
…

Tremolo (trem)​

ParamRequiredMeaning
depthyes0–15 (maps to ~0–50% amplitude)
rateyesPulsation speed
waveformnosine (default), triangle, square, saw
durationRowsnoLength in pattern rows

Export: Full in WebAudio/WAV; UGE/MIDI as meta only (no native tremolo).

Tremolo

Interactive playback loads in the browser.

…
inst lead type=pulse1 duty=50 env=gb:12,flat,0
pat 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.

ParamRequiredMeaning
ticksyes0–255 delay before cut

Export: UGE E0x.

Note cut

Interactive playback loads in the browser.

…
inst stab type=pulse1 duty=50 env=gb:12,flat,1
pat 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.

ParamRequiredMeaning
intervalyesTicks between restarts
volumeDeltanoEnvelope units per retrig (-15–+15)

For UGE-compatible stuttering, expand to explicit notes instead (e.g. C4:4 C4:4 C4:4 C4:4).

Retrigger

Interactive playback loads in the browser.

…
inst lead type=pulse1 duty=50 env=gb:12,down,1
pat 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.

ParamRequiredMeaning
delayTimeyesBeat fraction or seconds
feedbackno0–100 (default 50)
mixnoWet/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.

Echo (slapback)

Interactive playback loads in the browser.

…
# delay (beat fraction), feedback %, wet mix %
# Short delay + high mix = clear trailing copy of each note
effect 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 hit
pat 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.

ParamRequiredMeaning
semitonesyesSemitone offset (e.g. +2, -12)
curvenolinear (default), exp / exponential, log / logarithmic, sine / sin
delaynoSeconds before the bend starts (default: 50% of note duration)
timenoBend 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.

Pitch bend

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.

ParamRequiredMeaning
timeyesSweep step period 0–7 (0 = off; higher = slower steps, units of 1/128 Hz)
directionnoup / + / 1 or down / - / 0 (default down)
shiftyesShift 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.

Hardware-style sweep

Interactive playback loads in the browser.

…
inst lead type=pulse1 duty=50 env=gb:15,down,1
# Classic GB "pew": time, direction, shift
pat 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).

FormMeaning
(omit)Channel uses master bpm
speed=2 / speed=2xTwice master tempo
speed=0.5Half master tempo
Per-channel speed=2x

Interactive playback loads in the browser.

…
# Same phrase: channel 1 at master bpm, channel 2 at 2× (finishes sooner)
channel 1 => inst lead seq phrase
channel 2 => inst harm seq phrase speed=2x
…

See also​