From ee84a7883a8e479c3e0ed80beb5b5a5fcdc7b2eb Mon Sep 17 00:00:00 2001 From: JailDoctor Date: Mon, 11 Jul 2022 20:03:12 +0200 Subject: [PATCH] mute bug solved. Noe plays while being modified --- main.cpp | 105 ++++++++++++++++++++++++++++------------------------ tonegen.cpp | 2 +- 2 files changed, 57 insertions(+), 50 deletions(-) diff --git a/main.cpp b/main.cpp index be4da3a..a8095f2 100755 --- a/main.cpp +++ b/main.cpp @@ -80,6 +80,13 @@ const char* get_zero_padded(const uint8_t num) { return zero_padded; } +void playNote(Note ¬e) { + channel[0].setup(note.Get()); + channel[1].setup(0); + channel[2].setup(0); + channel[3].setup(0); + SDL_PauseAudioDevice(sdlAudioDevice, 0); +} int main(int argc, char* argv[]) { for (int i=0; i<4; ++i) channel[i].setNoteLength(SOUND_NUM_SAMPLES); song.SetCurrentNote(0, 0, (34<<10) + (2<<8) + (7<<4) + 5); @@ -202,11 +209,12 @@ int main(int argc, char* argv[]) { if (key == SDL_SCANCODE_RETURN) copied_note = note.Get(); if (key == SDL_SCANCODE_SPACE) { note.Set(copied_note); - channel[0].setup(note.Get()); + playNote(note); + /*channel[0].setup(note.Get()); channel[1].setup(0); channel[2].setup(0); channel[3].setup(0); - SDL_PauseAudioDevice(sdlAudioDevice, 0); + SDL_PauseAudioDevice(sdlAudioDevice, 0);*/ } if (key == SDL_SCANCODE_F4) { for (int i=0;i<4;++i) { @@ -240,78 +248,77 @@ int main(int argc, char* argv[]) { case SDL_SCANCODE_H: note.SetFirstNote(8, base_octave, current_instrument, current_volume, current_effect); break; case SDL_SCANCODE_N: note.SetFirstNote(9, base_octave, current_instrument, current_volume, current_effect); break; case SDL_SCANCODE_J: note.SetFirstNote(10, base_octave, current_instrument, current_volume, current_effect); break; - case SDL_SCANCODE_M: - note.SetFirstNote(11, base_octave, current_instrument, current_volume, current_effect); break; - case SDL_SCANCODE_A: - note.SetSilence(); break; + case SDL_SCANCODE_M: note.SetFirstNote(11, base_octave, current_instrument, current_volume, current_effect); break; + case SDL_SCANCODE_A: note.SetSilence(); break; default: m = false; break; }; if (m) { - channel[0].setup(note.Get()); + playNote(note); + /*channel[0].setup(note.Get()); channel[1].setup(0); channel[2].setup(0); channel[3].setup(0); - SDL_PauseAudioDevice(sdlAudioDevice, 0); + SDL_PauseAudioDevice(sdlAudioDevice, 0);*/ } } if (selected_part==1) { switch(key) { - case SDL_SCANCODE_2: note.SetOctave(2); break; - case SDL_SCANCODE_3: note.SetOctave(3); break; - case SDL_SCANCODE_4: note.SetOctave(4); break; - case SDL_SCANCODE_5: note.SetOctave(5); break; - case SDL_SCANCODE_6: note.SetOctave(6); break; + case SDL_SCANCODE_2: note.SetOctave(2); playNote(note); break; + case SDL_SCANCODE_3: note.SetOctave(3); playNote(note); break; + case SDL_SCANCODE_4: note.SetOctave(4); playNote(note); break; + case SDL_SCANCODE_5: note.SetOctave(5); playNote(note); break; + case SDL_SCANCODE_6: note.SetOctave(6); playNote(note); break; default: break; }; } if (selected_part==2) { switch(key) { - case SDL_SCANCODE_0: note.SetInstrument(0); break; - case SDL_SCANCODE_1: note.SetInstrument(1); break; - case SDL_SCANCODE_2: note.SetInstrument(2); break; - case SDL_SCANCODE_3: note.SetInstrument(3); break; + case SDL_SCANCODE_0: note.SetInstrument(0); playNote(note); break; + case SDL_SCANCODE_1: note.SetInstrument(1); playNote(note); break; + case SDL_SCANCODE_2: note.SetInstrument(2); playNote(note); break; + case SDL_SCANCODE_3: note.SetInstrument(3); playNote(note); break; default: break; }; } if (selected_part==3) { switch(key) { - case SDL_SCANCODE_0: note.SetVolume(0); break; - case SDL_SCANCODE_1: note.SetVolume(1); break; - case SDL_SCANCODE_2: note.SetVolume(2); break; - case SDL_SCANCODE_3: note.SetVolume(3); break; - case SDL_SCANCODE_4: note.SetVolume(4); break; - case SDL_SCANCODE_5: note.SetVolume(5); break; - case SDL_SCANCODE_6: note.SetVolume(6); break; - case SDL_SCANCODE_7: note.SetVolume(7); break; - case SDL_SCANCODE_8: note.SetVolume(8); break; - case SDL_SCANCODE_9: note.SetVolume(9); break; - case SDL_SCANCODE_A: note.SetVolume(10); break; - case SDL_SCANCODE_B: note.SetVolume(11); break; - case SDL_SCANCODE_C: note.SetVolume(12); break; - case SDL_SCANCODE_D: note.SetVolume(13); break; - case SDL_SCANCODE_E: note.SetVolume(14); break; - case SDL_SCANCODE_F: note.SetVolume(15); break; + case SDL_SCANCODE_0: note.SetVolume(0); playNote(note); break; + case SDL_SCANCODE_1: note.SetVolume(1); playNote(note); break; + case SDL_SCANCODE_2: note.SetVolume(2); playNote(note); break; + case SDL_SCANCODE_3: note.SetVolume(3); playNote(note); break; + case SDL_SCANCODE_4: note.SetVolume(4); playNote(note); break; + case SDL_SCANCODE_5: note.SetVolume(5); playNote(note); break; + case SDL_SCANCODE_6: note.SetVolume(6); playNote(note); break; + case SDL_SCANCODE_7: note.SetVolume(7); playNote(note); break; + case SDL_SCANCODE_8: note.SetVolume(8); playNote(note); break; + case SDL_SCANCODE_9: note.SetVolume(9); playNote(note); break; + case SDL_SCANCODE_A: note.SetVolume(10); playNote(note); break; + case SDL_SCANCODE_B: note.SetVolume(11); playNote(note); break; + case SDL_SCANCODE_C: note.SetVolume(12); playNote(note); break; + case SDL_SCANCODE_D: note.SetVolume(13);playNote(note); break; + case SDL_SCANCODE_E: note.SetVolume(14); playNote(note); break; + case SDL_SCANCODE_F: note.SetVolume(15); playNote(note); break; default: break; }; } if (selected_part==4) { switch(key) { - case SDL_SCANCODE_0: note.SetEffect(0); break; - case SDL_SCANCODE_1: note.SetEffect(1); break; - case SDL_SCANCODE_2: note.SetEffect(2); break; - case SDL_SCANCODE_3: note.SetEffect(3); break; - case SDL_SCANCODE_4: note.SetEffect(4); break; - case SDL_SCANCODE_5: note.SetEffect(5); break; - case SDL_SCANCODE_6: note.SetEffect(6); break; - case SDL_SCANCODE_7: note.SetEffect(7); break; - case SDL_SCANCODE_8: note.SetEffect(8); break; - case SDL_SCANCODE_9: note.SetEffect(9); break; - case SDL_SCANCODE_A: note.SetEffect(10); break; - case SDL_SCANCODE_B: note.SetEffect(11); break; - case SDL_SCANCODE_C: note.SetEffect(12); break; - case SDL_SCANCODE_D: note.SetEffect(13); break; - case SDL_SCANCODE_E: note.SetEffect(14); break; - case SDL_SCANCODE_F: note.SetEffect(15); break; + case SDL_SCANCODE_0: note.SetEffect(0); playNote(note); break; + case SDL_SCANCODE_1: note.SetEffect(1); playNote(note); break; + case SDL_SCANCODE_2: note.SetEffect(2); playNote(note); break; + case SDL_SCANCODE_3: note.SetEffect(3); playNote(note); break; + case SDL_SCANCODE_4: note.SetEffect(4); playNote(note); break; + case SDL_SCANCODE_5: note.SetEffect(5); playNote(note); break; + case SDL_SCANCODE_6: note.SetEffect(6); playNote(note); break; + case SDL_SCANCODE_7: note.SetEffect(7); playNote(note); break; + case SDL_SCANCODE_8: note.SetEffect(8); playNote(note); break; + case SDL_SCANCODE_9: note.SetEffect(9); playNote(note); break; + case SDL_SCANCODE_A: note.SetEffect(10); playNote(note); break; + case SDL_SCANCODE_B: note.SetEffect(11); playNote(note); break; + case SDL_SCANCODE_C: note.SetEffect(12); playNote(note); break; + case SDL_SCANCODE_D: note.SetEffect(13); playNote(note); break; + case SDL_SCANCODE_E: note.SetEffect(14); playNote(note); break; + case SDL_SCANCODE_F: note.SetEffect(15); playNote(note); break; default: break; }; } diff --git a/tonegen.cpp b/tonegen.cpp index a80c434..7f2c55d 100755 --- a/tonegen.cpp +++ b/tonegen.cpp @@ -38,7 +38,7 @@ void toneGen::setup(const uint8_t note, const uint8_t instrument, const uint8_t this->instrument = instrument; this->volume = volume; this->effect = effect; - this->muted = false; + //this->muted = false; this->nominal_volume = float(volume) / 15.0f; this->current_volume = this->effect == CHIPTUNE_EFFECT_FADEIN ? 0.0f : this->nominal_volume;