diff --git a/Source/io/midi.c b/Source/io/midi.c index b9f3bbe..1d55d53 100644 --- a/Source/io/midi.c +++ b/Source/io/midi.c @@ -56,6 +56,10 @@ void updateMidiBuffer(void) { asmEventMidiPB(); break; case MIDI_STATUS_CC: + // ignore WAV channel CC02 + if (statusByte == 0xB2 && addressByte == 0x02) { + break; + } asmEventMidiCC(); break; case MIDI_STATUS_NOTE_ON: diff --git a/Source/screen/main.c b/Source/screen/main.c index 28669f6..e8ca305 100644 --- a/Source/screen/main.c +++ b/Source/screen/main.c @@ -9,7 +9,7 @@ #include "../synth/wav.h" #include "screen.h" -static const uint8_t VERSION_NUMBER[] = "v.1.4.1 sysex"; +static const uint8_t VERSION_NUMBER[] = "v.1.4.h-HustlaSyx"; static const uint8_t HELP_DATA[10][18] = { "octave ", @@ -20,7 +20,7 @@ static const uint8_t HELP_DATA[10][18] = { "sustain cc64", "pan cc10", "preset cc05", - "wav offset cc02", + "wav offset nocc", // " ", }; diff --git a/Source/synth/wav.c b/Source/synth/wav.c index 9c2db17..ea87359 100644 --- a/Source/synth/wav.c +++ b/Source/synth/wav.c @@ -151,21 +151,21 @@ void playNoteWav(void) { // Note on noteStatus[WAV].note = noteIndex; - // channel volume louder = smaller value: - const uint8_t noteVelocity = valueByte & AUD3LEVEL_MASK; - if (noteVelocity == 0x60) { - rAUD3LEVEL = AUD3LEVEL_100; - } else if (noteVelocity == 0x40) { - rAUD3LEVEL = AUD3LEVEL_50; - } else { - rAUD3LEVEL = AUD3LEVEL_25; - } - - // rAUD3HIGH = 0x00; // was in ASM, probably not needed? + rAUD3HIGH = AUDHIGH_RESTART; // retrigger rAUD3LOW = wavCurrentFreq; rAUD3HIGH = wavCurrentFreq >> 8U; + // channel volume louder = smaller value: + // const uint8_t noteVelocity = valueByte & AUD3LEVEL_MASK; + // if (noteVelocity == 0x60) { + rAUD3LEVEL = AUD3LEVEL_100; // fixed max vol + // } else if (noteVelocity == 0x40) { + // rAUD3LEVEL = AUD3LEVEL_50; + // } else { + // rAUD3LEVEL = AUD3LEVEL_25; + // } + // Reset various counters and flags vibratoPosition[WAV] = 0; wavStepCounter = 0;