public void SetController(int channel, int controller, int value) { if (batchMode) { ChannelBatchState channelState; if (!batchChannels.TryGetValue(channel, out channelState)) { channelState = new ChannelBatchState() { ControllersModified = new OrderedDictionary <int, int>() }; batchChannels.Add(channel, channelState); } // Remember the controller value: channelState.ControllersModified[controller] = value; return; } if (!Enabled || channels[channel].controllerValues[controller] != value) { midi.SetController(channel, controller, value); channels[channel].controllerValues[controller] = value; } }
public void SetProgram(int channel, int program) { if (batchMode) { ChannelBatchState controllerSet; if (!batchChannels.TryGetValue(channel, out controllerSet)) { controllerSet = new ChannelBatchState(); batchChannels.Add(channel, controllerSet); } // Clear the state and indicate program changed: controllerSet.ControllersModified = new OrderedDictionary <int, int>(); controllerSet.ProgramChanged = true; controllerSet.ProgramValue = program; return; } if (!Enabled || channels[channel].programValue != program) { // Forget all sent data now that we're switching programs: channels[channel].Reset(); midi.SetProgram(channel, program); channels[channel].programValue = program; } }