From f9d64eb5a718944625b932d7ef3b3955771138ef Mon Sep 17 00:00:00 2001 From: ZILtoid1991 Date: Sun, 26 May 2024 23:17:07 +0200 Subject: [PATCH] Adding missing waveform builder sysex command --- .../pixelperfectengine/audio/modules/qm816.d | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pixelperfectengine/src/pixelperfectengine/audio/modules/qm816.d b/pixelperfectengine/src/pixelperfectengine/audio/modules/qm816.d index 48f8047..9688c81 100644 --- a/pixelperfectengine/src/pixelperfectengine/audio/modules/qm816.d +++ b/pixelperfectengine/src/pixelperfectengine/audio/modules/qm816.d @@ -1527,6 +1527,26 @@ public class QM816 : AudioModule { channels[ch].preset); } break; + case 0x20: //Waveform builder + const waveSel = msg[msgPos + 1]; + const waveformType = msg[msgPos + 2]; + switch (waveformType) { + case 0x50: //square waveform + wavetables[waveSel] = generatePulseWave((msg[msgPos + 2]<<3) | (msg[msgPos + 3]>>4)); + break; + case 0x54: //Triangular wave + wavetables[waveSel] = generateTriangularWave((msg[msgPos + 2]<<3) | (msg[msgPos + 3]>>4)); + break; + case 0x74: //Integrated triangular wave + wavetables[waveSel] = integrateTriangularWave(generateTriangularWave + ((msg[msgPos + 2]<<3) | (msg[msgPos + 3]>>4))); + break; + case 0x53: //Sine wave + wavetables[waveSel] = generateSinewave([msg[msgPos + 2], msg[msgPos + 3], msg[msgPos + 4], msg[msgPos + 5]]); + break; + default: break; + } + break; default: break; }