### First post, by Electronic Genets

I found differences in many emulators of OPL2/OPL3 drums.

wrote:## […]

`//Snare Drum`

`Bit32u sdVol = Op(3)->ForwardVolume(); // it is operator 16`

`if ( !ENV_SILENT( sdVol ) ) {`

`Bit32u sdIndex = ( 0x100 + (c2 & 0x100) ) ^ ( noiseBit << 8 );`

`sample += Op(3)->GetWave( sdIndex, sdVol ); // it is also operator 16`

`}`

wrote:## […]

`/* Snare Drum (verified on real YM3812) */`

`env = volume_calc(SLOT7_2); // it is operator 16`

`if( env < ENV_QUIET )`

`{`

`/* base frequency derived from operator 1 in channel 7 */`

`unsigned char bit8 = ((SLOT7_1->Cnt>>FREQ_SH)>>8)&1; // it is operator 13`

`/* when bit8 = 0 phase = 0x100; */`

`/* when bit8 = 1 phase = 0x200; */`

`UINT32 phase = bit8 ? 0x200 : 0x100;`

`/* Noise bit XOR'es phase by 0x100 */`

`/* when noisebit = 0 pass the phase from calculation above */`

`/* when noisebit = 1 phase ^= 0x100; */`

`/* in other words: phase ^= (noisebit<<8); */`

`if (noise)`

`phase ^= 0x100;`

`output[0] += op_calc(phase<<FREQ_SH, env, 0, SLOT7_2->wavetable) * 2;`

`}`

Where is the truth? Does the Dosbox emulator wrongly emulates the Snare Drum or the code marked as "verified on real YM3812"? I know that the multiplier of 13 and 16 operator will be set both to 1 these two codes will generate the same effect... Can anyone please check Snare Drum with different multipliers for operator 13 and 16 on real OPL2/OPL3? There is used operator 13 or 16 for Phase Generator of Snare Drum?

I have no sound card with OPL to check it.

Author of the DINO-2e OPL2-like emulator.

__D__INO-2e __i__s __n__ot __O__PL__2__ __e__mulator.