--- linuxsampler/trunk/src/drivers/audio/AudioOutputDevicePlugin.cpp 2012/07/05 15:04:25 2353 +++ linuxsampler/trunk/src/drivers/audio/AudioOutputDevicePlugin.cpp 2012/07/08 10:29:07 2354 @@ -19,6 +19,8 @@ ***************************************************************************/ #include "AudioOutputDevicePlugin.h" +#include "../../common/global_private.h" +#include namespace LinuxSampler { @@ -30,6 +32,15 @@ } +// *************** ParameterChannelsPlugin *************** +// * + + void AudioOutputDevicePlugin::ParameterChannelsPlugin::ForceSetValue(int channels) { + OnSetValue(channels); + iVal = channels; + } + + // *************** ParameterFragmentSize *************** // * @@ -142,4 +153,24 @@ bool AudioOutputDevicePlugin::isAutonomousDriver() { return false; } + + + void AudioOutputDevicePlugin::AddChannels(int newChannels) { + static_cast( + Parameters["CHANNELS"])->ForceSetValue(Channels.size() + newChannels); + } + + void AudioOutputDevicePlugin::RemoveChannel(AudioChannel* pChannel) { + std::vector::iterator i = find(Channels.begin(), Channels.end(), pChannel); + int channelNumber = i - Channels.begin(); + delete *i; + Channels.erase(i); + + for ( ; channelNumber < Channels.size() ; channelNumber++) { + static_cast(Channels[channelNumber])->ChannelNr = channelNumber; + Channels[channelNumber]->ChannelParameters()["NAME"]->SetValue("Channel " + ToString(channelNumber)); + } + static_cast( + Parameters["CHANNELS"])->ForceSetValue(Channels.size()); + } }