diff options
Diffstat (limited to 'src/channelmixer.cc')
-rw-r--r-- | src/channelmixer.cc | 95 |
1 files changed, 50 insertions, 45 deletions
diff --git a/src/channelmixer.cc b/src/channelmixer.cc index 76a25a6..510d9a8 100644 --- a/src/channelmixer.cc +++ b/src/channelmixer.cc @@ -26,40 +26,46 @@ */ #include "channelmixer.h" -ChannelMixer::ChannelMixer(Channels &c, Channel *defc, float defg) - : channels(c) +ChannelMixer::ChannelMixer(const Channels& c, const Channel* defc, float defg) + : mix{} + , defaultchannel{nullptr} + , defaultgain{1.f} + , channels(c) { - setDefaults(defc, defg); + setDefaults(defc, defg); } -void ChannelMixer::setDefaults(Channel *defc, float defg) +void ChannelMixer::setDefaults(const Channel* defc, float defg) { - defaultchannel = defc; - if(defc == NULL && channels.size() > 0) defaultchannel = &channels[0]; + defaultchannel = defc; + if(defc == nullptr && channels.size() > 0) + { + defaultchannel = &channels[0]; + } - defaultgain = defg; + defaultgain = defg; } -MixerSettings &ChannelMixer::lookup(InstrumentChannel *c) +MixerSettings& ChannelMixer::lookup(const InstrumentChannel& c) { - std::map<InstrumentChannel *, MixerSettings>::iterator mi = mix.find(c); - - if(mi == mix.end()) { - MixerSettings m; - m.gain = defaultgain; - m.output = defaultchannel; - mix[c] = m; - return mix[c]; - } - - return mi->second; + auto mi = mix.find(&c); + + if(mi == mix.end()) + { + MixerSettings m; + m.gain = defaultgain; + m.output = defaultchannel; + mix[&c] = m; + return mix[&c]; + } + + return mi->second; } - #ifdef TEST_CHANNELMIXER -//deps: channel.cc -//cflags: -//libs: +// deps: channel.cc +// cflags: +// libs: #include "test.h" TEST_BEGIN; @@ -71,40 +77,39 @@ channels.push_back(ch1); channels.push_back(ch2); { - ChannelMixer mixer(channels, NULL, 1.0); + ChannelMixer mixer(channels, nullptr, 1.0); - InstrumentChannel ich; - MixerSettings &m = mixer.lookup(&ich); - TEST_EQUAL(m.output, &channels[0], "Default channel?"); - TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); + InstrumentChannel ich; + MixerSettings& m = mixer.lookup(&ich); + TEST_EQUAL(m.output, &channels[0], "Default channel?"); + TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); } { - ChannelMixer mixer(channels, &channels[1]); + ChannelMixer mixer(channels, &channels[1]); - InstrumentChannel ich; - MixerSettings &m = mixer.lookup(&ich); - TEST_EQUAL(m.output, &channels[1], "Default channel?"); - TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); + InstrumentChannel ich; + MixerSettings& m = mixer.lookup(&ich); + TEST_EQUAL(m.output, &channels[1], "Default channel?"); + TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); } { - ChannelMixer mixer(channels, &channels[1]); + ChannelMixer mixer(channels, &channels[1]); - InstrumentChannel ich; - MixerSettings &m = mixer.lookup(&ich); - TEST_EQUAL(m.output, &channels[1], "Default channel?"); - TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); + InstrumentChannel ich; + MixerSettings& m = mixer.lookup(&ich); + TEST_EQUAL(m.output, &channels[1], "Default channel?"); + TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?"); - m.output = &channels[0]; - m.gain = 0.5; + m.output = &channels[0]; + m.gain = 0.5; - MixerSettings &m2 = mixer.lookup(&ich); - TEST_EQUAL(m2.output, &channels[0], "Changed channel?"); - TEST_EQUAL_FLOAT(m2.gain, 0.5, "Changed gain?"); + MixerSettings& m2 = mixer.lookup(&ich); + TEST_EQUAL(m2.output, &channels[0], "Changed channel?"); + TEST_EQUAL_FLOAT(m2.gain, 0.5, "Changed gain?"); } - TEST_END; -#endif/*TEST_CHANNELMIXER*/ +#endif /*TEST_CHANNELMIXER*/ |