Effects
In this section we will finish Tutorial Groove by adding musical effects such as vibrato, arpeggio, and portamento, first inline on notes, then as reusable named presets.
Note: that effects available can vary by chip — see Sound Chip Plugins.
Using effects
Attach an effect to a note with angle brackets after the pitch. The effect name and parameters use a colon to separate them. If the note has a length this should come after the effect angled brackets. An example of using effects is as follows:
pat lead_c = G5 . A5 C6<vib:6,4>:2 A5 G5 E5 .
pat bass_b = C3 . E3<port:16> . G2 . . G2
| Effect | Example | What it does |
|---|---|---|
vib | C6<vib:6,4> | Vibrato — rate and depth |
arp | C4<arp:4,7> | Arpeggio — semitone steps above the root |
port | E3<port:16> | Portamento — slide into this note from the previous pitch |
The arpeggio steps are offsets from the note itself, and the root is always played first — so you do not include 0. For example, C4<arp:4,7> rapidly cycles three pitches:
C4— the root (0 semitones)E4— root + 4 semitonesG4— root + 7 semitones
Together those offsets (4, 7) outline a C major chord. Change the offsets to change the chord — e.g. arp:3,7 gives C minor (C4, Eb4, G4).
Writing effects this way is fine for one-off use. When you reuse the same settings in several places, name them instead.
Named effect presets
Define a reusable preset with effect <name> = <effect>. The right-hand side is the same effect body you would write inline, for example:
effect wobble = vib:6,4
effect spark = arp:4,7
effect slide = port:16
Give presets clear names so patterns stay readable, for example wobble, is easier to read than raw vib:6,4 everywhere.
Inline use of named presets
Once defined, apply a preset on a note the same way as a built-in effect by putting the preset name in the brackets:
pat lead_c = G5 . A5 C6<wobble>:2 A5 G5 E5 .
pat harmony_a = C4<spark>:4 E4:4 G4<spark>:4 E4:4
pat bass_b = C3 . E3<slide> . G2 . . G2
Note: you can also attach a named preset as a sequence modifier so every note in a phrase gets it:
seq lead = melody:wobble.
Tutorial Groove — finished
Tutorial Groove now uses the three presets above: vibrato on the lead’s high note, arpeggios on the pulse2 harmony, and portamento on the wave bass. Press Play for the complete song:
Interactive playback loads in the browser.
…
effect wobble = vib:6,4
effect spark = arp:4,7
effect slide = port:16
pat lead_a = E5 . G5 C6 . G5 E5 . D5 . F5 A5 . G5 . .
pat lead_b = C5 . E5 G5 . E5 C5 . A4 . C5 E5 . D5 C5 .
pat lead_c = G5 . A5 C6<wobble>:2 A5 G5 E5 . F5 G5 A5 G5 E5 D5 C5
pat harmony_a = C4<spark>:4 E4:4 G4<spark>:4 E4:4
pat harmony_b = A3<spark>:4 C4:4 F4<spark>:4 G4:4
pat bass_a = C3 . . C3 G2 . . G2 A2 . . A2 F2 . G2 .
pat bass_b = C3 . E3<slide> . G2 . . G2 A2 . C3 . F2 . G2 .
pat drums_a = kick . hat . snare . hat hat kick . hat . snare hat hat .
pat drums_b = kick . hat hat snare . hat . kick kick hat . snare . snare .
seq lead_seq = lead_a lead_b lead_a lead_c
seq harmony_seq = harmony_a harmony_b harmony_a harmony_b
seq bass_seq = bass_a bass_b bass_a bass_b
seq drums_seq = drums_a drums_b drums_a drums_b
…Our Tutorial Groove song is now complete — feel free to Copy it into a .bax file and experiment further. Some ideas:
- Change
bpm 140to something slower or faster and hear how the drums and lead sit - Swap duty cycles on the pulse instruments (
12.5,25,50,75) or try a different wave table for the bass - Add another lead phrase (
lead_d) and extendlead_seq, or reorder A/B patterns so the form feels less regular - Tweak effect presets — deepen vibrato (
vib:8,6), try a minor arpeggio (arp:3,7), or slow the portamento (port:8) - Apply a modifier from the previous section, e.g.
lead_b:oct(+1)ordrums_b:rev, on one occurrence in a sequence - Pan a phrase or add another effect from the Effects reference (tremolo, note cut, …)
Other sound chips
The notes, patterns, sequences, and most effects in Tutorial Groove are chip-agnostic — the same musical material can
target another backend by changing chip and rewriting the instruments (and channel map) for that hardware.
For example, on the NES you might keep lead_a / bass_seq as-is but define type=pulse1, type=triangle, and
type=noise voices with NES fields instead of Game Boy duty / wave= / uge_note. Channel counts differ too
(NES has five voices including DMC; SMS has three tones plus noise). Start from the Game Boy song, then follow the
guide for your target chip under Sound Chip Plugins.
More effects
Deep reference for panning, tremolo, note cut, retrigger, echo, volume slide, and export behaviour: Effects reference.