Wiki

Clone wiki

OPL3 synth driver / Home

That cheesy OPL3 MIDI sound all over again!

This repository holds a fork of khokh2001 Nuke.YKT's OPL3 FM software synthesizer driver for Windows OS.

What to expect

The original driver lacks certain features present in many other MIDI synths. This fork intends to enhance some of these missing playback features which are now considered standard for many MIDI synths.

What's been implemented so far?

  • Expression (CC11)
  • Pitch bend range (CC100=0, CC101=0, CC6=n, where n=number of semitones +/-.
  • Pitch updates on current voices after range change (not often implemented)
  • Mono/legato and Poly mode switching (CC126/127)
  • 2x2op Patch bank support w/ dynamic voice allocation.
  • True 4-op patch support (preliminary)
  • Routing playback to a hardware OPL3 device (via inpout32.dll x86/64-compatible)
  • Portamento and Modulation LFO
  • [no binary] Coarse/Fine tuning
  • Per-patch simple pitch envelope (drums only for now)
  • Controller-togglable, real-time VGM Logging (v1.51 spec. Thanks ValleyBell for assistance)
  • [no binary] Sostenuto pedal (CC66)
  • [no binary] Partial System Exclusive support for compatibility with XG and GS MIDIs

What's left to implement?

  • More standard GM / GM-2 controller support (eg: CC75 decay)
  • Configuration utility to facilitate the following:
    • Switchable patch banks
    • Multi driver ports (think MIDI Yoke)
    • Flags for enabling/disabling particular features
    • Port-selection for OPL hardware passthrough support.

Kudos

  • ValleyBell, author of MidiPlay and current active maintainer of in_vgm, for his insight in handling MIDI and FM chip emulation in general.

  • DJBouche, for advice on MIDI protocol handling.

  • DOSBox Team, for making the excellent AdlibEmu LGPL OPL3 software emulation.

  • khokh2001 Nuke.YKT for creating the base source code this project was based on, as well as for providing an alternative OPL3 emulated core.

  • @jpcima for recent contributions / pull requests while this repo's gone stale!

Updated