ADLplug icon indicating copy to clipboard operation
ADLplug copied to clipboard

Request: YM2151 (OPM)

Open bryc opened this issue 6 years ago • 3 comments

While OPN2 is nice, it lacks some features that the original OPM had:

  • Noise
  • Coarse detune (Detune 2)
  • Multiple LFO waveforms, higher fidelity LFO speed etc.
  • Amplitude/Pitch modulation depth

So some sounds on arcade games, or FB-01/DX21 sounds do not translate 1:1. So it would be great if those features were also supported. Perhaps as an OPMMIDI version I suppose. Otherwise great software!

bryc avatar Mar 04 '19 06:03 bryc

Hi @bryc. There has been some discussion on idea of adding other chips with libOPNMIDI's author, among which is OPM. notify @Wohlstand

No work has been made about this chip currently, and I have researched nowhere enough to tell if it the driver must be integrated in libOPNMIDI or remade from scratch.

things I know

  • the YM2151 has emulators in Neko Project fmgen and MAME
  • the *.opm file format has loading ability in the OPN2BankEditor, suggesting some functionality overlap between OPM & OPN families

jpcima avatar Mar 04 '19 11:03 jpcima

It's also dependent how big difference between OPN and OPM, so, bank editor can be based on OPN2-BE and can be used for both OPN and OPM (for case of OPM, show extra controls are absence on OPN2 or opposite). For case of playback, looks like OPN2-BE will need to have second chipset and second generator (or same, but with subclassing) which will pass instrument data to the necessary chip emulator. What about playback, maybe same. Anyway, for a first thing I will need the complete OPM specification to be able tweak around the chip and features.

Anyway, I have this: ym2151datasheet.pdf

It contains registers map but doesn't contains complete explanation of their sense... Otherwise, guess them and probe.

Wohlstand avatar Mar 04 '19 11:03 Wohlstand

@jpcima Okay did not realize that - moving that issue to https://github.com/Wohlstand/libOPNMIDI/issues/87. I suppose this issue can be closed or repurposed for implementing any changes downstream ?

the *.opm file format has loading ability in the OPN2BankEditor, suggesting some functionality overlap between OPM & OPN families

Yes, there is much overlap between the two chips. I made a script that converts raw YM2151 registers to bank formats like OPM. Then I loaded them in VOPMex and GENNY (click to hear .opus). They're almost identical. ~There is some distortion in GENNY but that's probably a bug in that plugin (it has been abandoned)~ That's actually 'ladder effect'. Even VOPMex is kinda buggy/incorrect. Which is why we need solutions like ADLplug and libOPNMIDI. ;)

bryc avatar Mar 05 '19 08:03 bryc