PgrAm
Experienced Member
Hey all,
While Ive been working on polishing up Adlib-Host V1.2, I've been noticing an annoying issue with my Adlib(OPL) music player, it seems that whenever I trigger a note immediately after releasing a previous note I get an audible clicking noise. Doing more testing I was able to determine that this happened any time two writes were done the the 0xB0 register on any given channel within a short period of time, such as when doing a pitch bend.
I know that OPL chips require delays between any register writes, which I have included, but I haven't read anything about requiring extra delay for writes to the same register. Stranger still is that this seems to affect both geniune chips (OPL3 tested) and DOSBox, which normally isn't affected by delays. I was even able to find this "bug" in commercial software from the 90s such as Voyetra sequencer.
Has anyone noticed this issue before, know why it happens? Maybe writing to the register resets the phase of the wave? I wasn't able to reproduce it in "tracker" style software (Adlib Tracker 2) however so maybe there is a way around it?
At this point I haven't yet determined how long the gap between writes needs to be but I'm hoping there is a way around this that doesn't involve delays. I also haven't tested this on an OPL2 (I don't have one) but I suspect the issue will still exist.
While Ive been working on polishing up Adlib-Host V1.2, I've been noticing an annoying issue with my Adlib(OPL) music player, it seems that whenever I trigger a note immediately after releasing a previous note I get an audible clicking noise. Doing more testing I was able to determine that this happened any time two writes were done the the 0xB0 register on any given channel within a short period of time, such as when doing a pitch bend.
I know that OPL chips require delays between any register writes, which I have included, but I haven't read anything about requiring extra delay for writes to the same register. Stranger still is that this seems to affect both geniune chips (OPL3 tested) and DOSBox, which normally isn't affected by delays. I was even able to find this "bug" in commercial software from the 90s such as Voyetra sequencer.
Has anyone noticed this issue before, know why it happens? Maybe writing to the register resets the phase of the wave? I wasn't able to reproduce it in "tracker" style software (Adlib Tracker 2) however so maybe there is a way around it?
At this point I haven't yet determined how long the gap between writes needs to be but I'm hoping there is a way around this that doesn't involve delays. I also haven't tested this on an OPL2 (I don't have one) but I suspect the issue will still exist.