OPL3 rendering path: authentic Sound Blaster FM, no soundfont

- tools/opl/render_opl.cpp: libADLMIDI harness - renders MIDI through
  OPL3 emulation with game-driver volume models (DMX/Doom, Apogee/Duke,
  AIL, HMI), normalised output, WAV header patched to actual length
- tools/opl/build.sh: one-shot fetch+build of libADLMIDI
- tools/render_opl.sh: batch render + check_wav for all tunes
- README: OPL3 section
This commit is contained in:
Hermes Agent committed 2026-10-17 07:23:55 +00:00
1 parent 9b1e61b2ce
commit 72a337f50f
5 files changed
+152

No files matched your search

+15
View File
@@ -104,6 +104,21 @@ on a peak of 32767.
- A bar-length linter in the score parser catches more composition bugs
than any amount of staring at note lists.
## OPL3 rendering (the authentic one)
For real Sound Blaster flavour — FM synthesis, no soundfont, like the
actual YMF262 chip:
```bash
./tools/opl/build.sh # one-time: fetches + builds libADLMIDI
./tools/render_opl.sh # renders all midi/*.mid through OPL3
OPL_MODEL=4 ./tools/render_opl.sh midi/03_late_equaliser.mid
```
Volume models mimic real game sound drivers: `2` NativeOPL3 (id-style),
`3` DMX (Doom, default), `4` APOGEE (Duke Nukem 3D), `8` AIL, `10` HMI.
Output is normalised (OPL runs quiet). Needs `cmake` + `g++` to build.
## Licence & soundfonts
MIT — see [LICENSE](LICENSE). Rendering needs a General MIDI soundfont,