Kautenja / PotatoChips

Eurorack modules based on programmable sound chip emulation.
Other
44 stars 4 forks source link

[BossFight,MiniBoss] Add Nuked-OPN2 Yamaha YM3438 Emulation Engine #83

Open rastertail opened 3 years ago

rastertail commented 3 years ago

Right now, the 2612 emulation in the Boss Fight and Mini Boss modules miss out on some subtle sound quirks like the ladder effect in the original 2612. Nuked-OPN2 is a highly accurate emulation core that accurately models such quirks. I'm not sure if its possible to integrate it into this codebase, but if possible, that would be really cool.

Kautenja commented 3 years ago

Hmm could you provide any more information about the ladder effect and any other quirks that might be missing? I've not come across this in my research of the 2612, but I am no expert. Also, if there are any Genesis emulators you know of that use Nuked-OPN2, I'd also be interested in checking them out to get a feel for the difference between the MAME implementation (that is currently used) and this one. As far as getting this implemented, it would be pretty cool I think to add a right-click context menu that allowed the user to select which emulator engine they prefer (MAME or Nuked or etc. in the future).

Kautenja commented 3 years ago

Oh nvm, it looks like Genesis Plus GX actually merged the Nuke emulation into master as their sound engine. Cool, I'll definitely be looking into this.

rastertail commented 3 years ago

Thanks for responding so quick! Having an option to select between the emulation cores would be cool. FYI Nuked OPN2 has an option to switch between 2612 and 3438 that is missing from the readme, where the default 3438 lacks some things, namely the ladder effect, so you might want 3 options in the emulation core selector. And since you asked, the ladder effect is a distortion effect caused by the truncation of the output to 9 bits, where a bug in the circuitry creates an offset on the negative side of the wave. It's a pretty subtle effect, but also pretty noticable on patches with long decay times.

Kautenja commented 3 years ago

Oh I see now, this is an emulation of the 9-bit DAC on the YM2612. It might be possible to just take the snippet that does the quantization and offset in Nuke-OPN2 and put it into the MAME core here, but I'm inclined to port the entire Nuke core still because I'm sure there will be other differences that result in a significantly different sound between the two.

EDIT: To clarify, the MAME core currently quantizes to 14-bit, which is the pre-DAC dynamic range of the YM2612. There is no DAC emulation in the MAME core at the moment.

rastertail commented 3 years ago

I see. Honestly, I'm not really a 2612 expert, so a lot of the little details are pretty vague to me. It would be nice to port over the entire Nuked core just for peace of mind, but all I really care about is the audio effects that I can hear, so if you just extract the 9 bit DAC and put the MAME core through it, I probably wouldn't mind as I expect that the difference between that and the full Nuked core would be more subtle.