3.1 KiB
Soundfonts
General MIDI playback via SF2 soundfont files. Native only -- not available in the WASM build.
Setup
Drop an .sf2 file into one of your samples directories. The engine finds and loads it automatically when Cagire starts. Only one soundfont is active at a time.
Playing
Use gm as the sound source. The n parameter selects a program by name or number (0-127):
gm snd piano n . ;; acoustic piano
gm snd strings n c4 note . ;; strings playing middle C
gm snd 0 n e4 note . ;; program 0 (piano) playing E4
Drums
Drums live on a separate bank. Use drums or percussion as the n value. Each MIDI note triggers a different instrument:
gm snd drums n 36 note . ;; kick
gm snd drums n 38 note . ;; snare
gm snd drums n 42 note . ;; closed hi-hat
gm snd percussion n 49 note . ;; crash cymbal
Envelope
The soundfont embeds ADSR envelope data per preset. The engine applies it automatically. Override any parameter explicitly:
gm snd piano n 0.01 attack 0.3 decay .
gm snd strings n 0.5 attack 2.0 release .
If you set attack, decay, sustain, or release, your value wins. Unspecified parameters keep the soundfont default.
Effects
All standard engine parameters work on GM voices. Filter, distort, spatialize:
gm snd bass n 800 lpf 0.3 verb .
gm snd epiano n 0.5 delay 1.5 distort .
gm snd choir n 0.8 pan 2000 hpf .
Preset Names
| # | Name | # | Name | # | Name | # | Name |
|---|---|---|---|---|---|---|---|
| 0 | piano | 24 | guitar | 48 | strings | 72 | piccolo |
| 1 | brightpiano | 25 | steelguitar | 49 | slowstrings | 73 | flute |
| 4 | epiano | 26 | jazzguitar | 52 | choir | 74 | recorder |
| 6 | harpsichord | 27 | cleangt | 56 | trumpet | 75 | panflute |
| 7 | clavinet | 29 | overdrive | 57 | trombone | 79 | whistle |
| 8 | celesta | 30 | distgt | 58 | tuba | 80 | ocarina |
| 9 | glockenspiel | 33 | bass | 60 | horn | 81 | lead |
| 10 | musicbox | 34 | pickbass | 61 | brass | 82 | sawlead |
| 11 | vibraphone | 35 | fretless | 64 | sopranosax | 89 | pad |
| 12 | marimba | 36 | slapbass | 65 | altosax | 90 | warmpad |
| 13 | xylophone | 38 | synthbass | 66 | tenorsax | 91 | polysynth |
| 14 | bells | 40 | violin | 67 | barisax | 104 | sitar |
| 16 | organ | 41 | viola | 68 | oboe | 105 | banjo |
| 19 | churchorgan | 42 | cello | 70 | bassoon | 108 | kalimba |
| 21 | accordion | 43 | contrabass | 71 | clarinet | 114 | steeldrum |
| 22 | harmonica | 45 | pizzicato | ||||
| 46 | harp | ||||||
| 47 | timpani |
Drums are on a separate bank: use drums or percussion as the n value.
Examples
A simple GM drum pattern across four steps:
;; step 1: kick
gm snd drums n 36 note .
;; step 2: closed hat
gm snd drums n 42 note 0.6 gain .
;; step 3: snare
gm snd drums n 38 note .
;; step 4: closed hat
gm snd drums n 42 note 0.6 gain .
Layer piano chords with randomness:
gm snd piano n
c4 e4 g4 3 choose note
0.3 0.8 rand gain
0.1 0.4 rand verb
.
A bass line with envelope override:
gm snd bass n
c2 e2 g2 a2 4 cycle note
0.01 attack 0.2 decay 0.0 sustain
.