From 42ea9d0138d27636ec07594945605656f95c93f8 Mon Sep 17 00:00:00 2001 From: Leandro Nini Date: Sun, 15 Sep 2024 11:21:37 +0200 Subject: [PATCH] Refactor voice muting using a bitset --- src/args.cpp | 9 +++------ src/player.cpp | 54 +++++++++++++++++++++++++------------------------- src/player.h | 7 ++++--- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/src/args.cpp b/src/args.cpp index 9358345..fe2d3ae 100644 --- a/src/args.cpp +++ b/src/args.cpp @@ -168,10 +168,7 @@ int ConsolePlayer::args(int argc, const char *argv[]) m_driver.file = false; m_driver.info = false; - for (int i=0; i<9; i++) - { - vMute[i] = false; - } + m_mute_channel.reset(); int infile = 0; int i = 0; @@ -257,8 +254,8 @@ int ConsolePlayer::args(int argc, const char *argv[]) else { const int voice = atoi(&argv[i][2]); - if (voice > 0 && voice <= 9) - vMute[voice-1] = true; + if (voice > 0 && voice <= m_mute_channel.size()) + m_mute_channel[voice-1] = true; } } diff --git a/src/player.cpp b/src/player.cpp index 96549ce..3cae8b0 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -816,15 +816,15 @@ bool ConsolePlayer::open (void) m_speed.current = m_speed.max; m_engine.fastForward (100 * m_speed.current); - m_engine.mute(0, 0, vMute[0]); - m_engine.mute(0, 1, vMute[1]); - m_engine.mute(0, 2, vMute[2]); - m_engine.mute(1, 0, vMute[3]); - m_engine.mute(1, 1, vMute[4]); - m_engine.mute(1, 2, vMute[5]); - m_engine.mute(2, 0, vMute[6]); - m_engine.mute(2, 1, vMute[7]); - m_engine.mute(2, 2, vMute[8]); + m_engine.mute(0, 0, m_mute_channel[0]); + m_engine.mute(0, 1, m_mute_channel[1]); + m_engine.mute(0, 2, m_mute_channel[2]); + m_engine.mute(1, 0, m_mute_channel[3]); + m_engine.mute(1, 1, m_mute_channel[4]); + m_engine.mute(1, 2, m_mute_channel[5]); + m_engine.mute(2, 0, m_mute_channel[6]); + m_engine.mute(2, 1, m_mute_channel[7]); + m_engine.mute(2, 2, m_mute_channel[8]); // As yet we don't have a required songlength // so try the songlength database or keep the default @@ -1149,48 +1149,48 @@ void ConsolePlayer::decodeKeys () break; case A_TOGGLE_VOICE1: - vMute[0] = !vMute[0]; - m_engine.mute(0, 0, vMute[0]); + m_mute_channel.flip(0); + m_engine.mute(0, 0, m_mute_channel[0]); break; case A_TOGGLE_VOICE2: - vMute[1] = !vMute[1]; - m_engine.mute(0, 1, vMute[1]); + m_mute_channel.flip(1); + m_engine.mute(0, 1, m_mute_channel[1]); break; case A_TOGGLE_VOICE3: - vMute[2] = !vMute[2]; - m_engine.mute(0, 2, vMute[2]); + m_mute_channel.flip(2); + m_engine.mute(0, 2, m_mute_channel[2]); break; case A_TOGGLE_VOICE4: - vMute[3] = !vMute[3]; - m_engine.mute(1, 0, vMute[3]); + m_mute_channel.flip(3); + m_engine.mute(1, 0, m_mute_channel[3]); break; case A_TOGGLE_VOICE5: - vMute[4] = !vMute[4]; - m_engine.mute(1, 1, vMute[4]); + m_mute_channel.flip(4); + m_engine.mute(1, 1, m_mute_channel[4]); break; case A_TOGGLE_VOICE6: - vMute[5] = !vMute[5]; - m_engine.mute(1, 2, vMute[5]); + m_mute_channel.flip(5); + m_engine.mute(1, 2, m_mute_channel[5]); break; case A_TOGGLE_VOICE7: - vMute[6] = !vMute[6]; - m_engine.mute(2, 0, vMute[6]); + m_mute_channel.flip(6); + m_engine.mute(2, 0, m_mute_channel[6]); break; case A_TOGGLE_VOICE8: - vMute[7] = !vMute[7]; - m_engine.mute(2, 1, vMute[7]); + m_mute_channel.flip(7); + m_engine.mute(2, 1, m_mute_channel[7]); break; case A_TOGGLE_VOICE9: - vMute[8] = !vMute[8]; - m_engine.mute(2, 2, vMute[8]); + m_mute_channel.flip(8); + m_engine.mute(2, 2, m_mute_channel[8]); break; case A_TOGGLE_FILTER: diff --git a/src/player.h b/src/player.h index 46b82a5..94bca66 100644 --- a/src/player.h +++ b/src/player.h @@ -26,8 +26,6 @@ # include "config.h" #endif -#include - #include #include #include @@ -41,6 +39,9 @@ #include "sidlib_features.h" +#include +#include + #ifdef HAVE_TSID # if HAVE_TSID > 1 # include @@ -171,7 +172,7 @@ class ConsolePlayer bool m_autofilter; - bool vMute[9]; + std::bitset<9> m_mute_channel; int m_channels; int m_precision;