First post, by Tiido
CleanWave32 is Dream's sample set found on some waveblaster modules like MIDITEMP DS48, but it seems to have a bug that causes digital overflow effect resulting in awful cracking noises when sound gets loud enough.
Here's the distortion :
FLAC : http://www.tmeeco.eu/BitShit/PCschit/ElkmoonBad.flac
OGG : http://www.tmeeco.eu/BitShit/PCschit/ElkmoonBad.ogg
SAM9733 chip has its audio output format in software control, and software lives in the sample ROM so I hooked up an oscilloscope to the DAC to see maybe it is outputting wrong format to the DAC and I found that there actually is a problem. Namely BCLK polarity is wrong, new samples are output on rising edge instead of falling edge, no DAC out there can accept this format and the result is that data changes while DAC latches it. Due to delays stemming from analog factors it essentially means the data the DAC sees is shifted left by 1 bit position, losing its MSB and that results in the cracking sounds as sort of digital overflow happens.
A fix is to add an inverter to the BCLK line, it will cure the distortion and will also reduce the loudness of the output by half, massively reducing clipping that happens in the analog stage after DAC on the WB card. Here's the fix :
And the result :
MIDI file used as a test : http://www.tmeeco.eu/BitShit/PCschit/ELKMOON.MID
CleanWave8 and GS sets do not suffer from this bug, it is strange such a thing went unnoticed or at least didn't get fixed...
Bonus fix on the MIDITEMP board is to change R11 and R21 to 4.7kohm, it reduces gain, clipping and also noise. I don't know why all these WB cards have so cranked up volume levels, there's almost nothing out there than won't clip with the insane levels used by most of these things...