Effects
In this section we will add musical effects to notes — vibrato, arpeggio, and portamento — first as short demos you can hear clearly, then as the named presets Tutorial Groove will use in Final Song.
By the end of this page you will know how to write:
effect wobble = vib:6,4
effect spark = arp:4,7
effect slide = port:16
and apply them on the lead, harmony, and bass the same way the finished song does.
Note: effects available can vary by chip — see Sound Chip Plugins. The demos below use Game Boy voices so each effect is easy to hear in isolation.
Using effects
Attach an effect to a note with angle brackets after the pitch. Parameters follow a colon. If the note has a length, put :N after the effect brackets:
C6<vib:6,4>:2 # pitch, then effect, then length
E3<port:16> # length defaults to 1 step when omitted
| Effect | Example | What it does | In the final song |
|---|---|---|---|
vib | C6<vib:6,4> | Vibrato — rate, then depth | Lead high note (wobble) |
arp | C4<arp:4,7> | Arpeggio — semitone steps above the root | Harmony chords (spark) |
port | E3<port:16> | Portamento — slide into this note from the previous pitch | Wave bass (slide) |
Vibrato (vib)
Vibrato gently rocks the pitch up and down. The first parameter is rate (how fast), the second is depth (how wide). Hold notes long enough to hear it — short one-step hits barely show the motion.
Press Play to hear two plain held notes, then the same pitches with vibrato (deeper on the second note):
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:15,down,0
# Plain held notes, then the same pitches with vibratopat plain = C5:8 E5:8pat vib = C5<vib:6,4>:8 E5<vib:8,6>:8…In Tutorial Groove we will use a modest vib:6,4 as the wobble preset on the lead’s held high note in lead_c (C6<wobble>:2) so the phrase peaks with a little motion instead of a static pitch.
Arpeggio (arp)
Arpeggio rapidly cycles the root note plus semitone offsets at the chip frame rate (~60 Hz on Game Boy). List only steps above the root — do not include 0. The root is always played first.
For example, C4<arp:4,7> cycles three pitches:
C4— the root (0 semitones)E4— root + 4 (major third)G4— root + 7 (perfect fifth)
Together those offsets outline a C major chord. arp:3,7 gives C minor (C4, Eb4, G4).
Major vs minor differs by only one semitone on the third (E vs Eb). At frame-rate speed that is easy to miss if the root also changes. The demo below keeps a single root (C4) and holds each chord for a full bar — listen for the middle pitch of the cycle:
Interactive playback loads in the browser.
…inst lead type=pulse1 duty=50 env=gb:15,down,0
# Same root (C4) — listen for E (major) vs Eb (minor) in the cycle# Trailing rest so the next C4 retriggers instead of blendingpat major = C4<arp:4,7>:15 .pat minor = C4<arp:3,7>:16…In the final song, harmony patterns use major-triad arps (arp:4,7) as the spark preset on held chord tones — for example C4<spark>:4 and G4<spark>:4 in harmony_a — so the pulse2 part shimmers instead of sitting as flat pads.
Portamento (port)
Portamento slides into the current note from the previous pitch (legato — the target note does not retrigger from silence). Higher speed values reach the target faster. The first note in a phrase has nothing to slide from, so portamento usually starts on the second note. Previous pitch is remembered across rests, but the slide still needs enough duration on the target note to hear it.
Listen to stepped bass notes, then the same targets with slides:
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]
# First bar: stepped notes. Second: slide into each target with portamentopat stepped = C3:4 E3:4 G3:4 C4:4pat slides = C3:4 E3<port:16>:4 G3<port:12>:4 C4<port:8>:4…In Tutorial Groove, bass_b keeps the same rhythm as before but slides into the E3 with E3<slide> (port:16) so the wave bass connects pitches instead of hopping.
Named effect presets
Writing <vib:6,4> inline is fine for one-offs. For the finished song we name the three settings once and reuse them in patterns:
effect wobble = vib:6,4
effect spark = arp:4,7
effect slide = port:16
Apply a preset by putting its name in the brackets:
# Same idea as the final song (simplified to two channels here)
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
Interactive playback loads in the browser.
…effect wobble = vib:6,4effect spark = arp:4,7effect slide = port:16
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]
# Presets need enough duration to hear — hold the effected notespat lead_line = C5:4 E5<wobble>:8 G5<spark>:4pat bass_line = C3:4 E3<slide>:4 G3<slide>:4 C4<slide>:4…Clear names keep patterns readable: wobble is easier to scan than raw vib:6,4 everywhere.
Note: you can also attach a named preset as a sequence modifier so every note in a phrase gets it:
seq lead = melody:wobble.
More effects
Panning, tremolo, note cut, retrigger, echo, volume slide, and export behaviour are covered in the Effects reference.
Next
Continue with Final Song — hear the complete Tutorial Groove with modifiers and wobble / spark / slide together.