private void SwitchMute() { if (vm.GetParam("Bus(4).Mute") == 1.0f) { vm.SetParam("Bus(4).Mute", 0.0f); } else { vm.SetParam("Bus(4).Mute", 1.0f); } Thread.Sleep(20); }
//This will only backup Banana values, for now. private void getDefaultVoiceMeeter() { this.defaults = new List <float>(); for (int faders = 0; faders < 5; faders++) { defaults.Add(vm.GetParam("Strip[" + faders + "].A1")); defaults.Add(vm.GetParam("Strip[" + faders + "].A2")); defaults.Add(vm.GetParam("Strip[" + faders + "].A3")); defaults.Add(vm.GetParam("Strip[" + faders + "].B1")); defaults.Add(vm.GetParam("Strip[" + faders + "].B2")); } }
private static void ToggleVoiceMeeter(VmClient client, string paramCommand) { var vmVal = client.GetParam(paramCommand); var currentFlag = vmVal == 1; client.SetParam(paramCommand, currentFlag ? 0 : 1); }
public bool IsMicMuted() { bool isMicMuted = true; VmClient.Poll(); float mute = VmClient.GetParam("Strip(0).Mute"); if (mute == 0) { isMicMuted = false; } return(isMicMuted); }
public bool GetParamBool(string paramName) { return(Convert.ToBoolean(client.GetParam(paramName))); }
static void Main(string[] args) { _handler += new ConsoleCtrlHandlerDelegate(Handler); SetConsoleCtrlHandler(_handler, true); var internalConfig = args.Length > 0 && args[0] == "internal-config"; var confTxt = internalConfig ? LoadInternalConfig() : LoadConfig(); var config = ConfigParsing.ParseConfig(confTxt); var inputMap = config.Bindings.Where(x => (x.Dir & BindingDir.FromBoard) != 0).ToDictionary(x => x.ControlId); using (var od = new OutputDevice(GetMidiOutputDevice(config.DeviceName))) using (var id = new InputDevice(GetMidiInputDevice(config.DeviceName))) using (var vb = new VmClient()) { disps.Add(vb); disps.Add(id); disps.Add(od); //voicemeeter doesn't have midi bindings for arm/disarm recording. We'll do it ourselves. //Note that the voicemeeter UI doesn't update until you start recording something. Console.WriteLine("All initialised"); id.ChannelMessageReceived += (ob, e) => { var m = e.Message; if (m.MessageType == MessageType.Channel && m.Command == ChannelCommand.Controller) { if (inputMap.ContainsKey(m.Data1)) { var v = inputMap[m.Data1]; if (v.ControlToggle && m.Data2 == v.ControlTo) { var current = vb.GetParam(v.VoicemeeterParam); vb.SetParam(v.VoicemeeterParam, v.VmTo - current); } else if (!v.ControlToggle) { var scaledVal = Scale(m.Data2, v.ControlFrom, v.ControlTo, v.VmFrom, v.VmTo); vb.SetParam(v.VoicemeeterParam, scaledVal); } } } }; id.StartRecording(); vb.OnClose(() => { foreach (var x in config.Bindings.Where(x => (x.Dir & BindingDir.ToBoard) != 0)) { od.Send(new ChannelMessage(ChannelCommand.Controller, 0, x.ControlId, (int)x.ControlFrom)); } }); while (!shouldStop) { if (vb.Poll()) { foreach (var x in config.Bindings.Where(x => (x.Dir & BindingDir.ToBoard) != 0)) { var vmVal = vb.GetParam(x.VoicemeeterParam); var scaled = Scale(vmVal, x.VmFrom, x.VmTo, x.ControlFrom, x.ControlTo); od.Send(new ChannelMessage(ChannelCommand.Controller, 0, x.ControlId, (int)scaled)); } } else { Thread.Sleep(20); } } } }
static void Main(string[] args) { var isCanceled = false; Console.CancelKeyPress += (sender, eventArgs) => { Console.WriteLine("Got the Ctrl-C"); isCanceled = true; eventArgs.Cancel = true; }; var deviceName = "X"; var vb = new VmClient(); var od = new OutputDevice(GetMidiOutputDevice(deviceName)); var id = new InputDevice(GetMidiInputDevice(deviceName)); for (int channel = 1; channel <= 8; channel++) { od.Send(new ChannelMessage(ChannelCommand.Controller, 0, channel, 0)); } //UpdateCCVoiceMeter(vb, "Bus[0].Gain", 116); //UpdateCCVoiceMeter(vb, "Bus[1].Gain", 89); //UpdateCCVoiceMeter(vb, "Bus[2].Gain", 0); //UpdateCCVoiceMeter(vb, "Bus[3].Gain", 127, 12.0f); //UpdateCCVoiceMeter(vb, "Bus[4].Gain", 127, 12.0f); //UpdateCCVoiceMeter(vb, "Strip[0].Gain", 102); //UpdateCCVoiceMeter(vb, "Strip[1].Gain", 102); //UpdateCCVoiceMeter(vb, "Strip[2].Gain", 127, 12.0f); //UpdateCCVoiceMeter(vb, "Strip[3].Gain", 102); //UpdateCCVoiceMeter(vb, "Strip[4].Gain", 102); id.ChannelMessageReceived += (ob, e) => { var m = e.Message; if (m.MessageType == MessageType.Channel && m.Command == ChannelCommand.NoteOff) { float vmVal; switch (m.Data1) { case 8: ToggleVoiceMeeter(vb, "Strip[0].B1"); break; case 16: ToggleVoiceMeeter(vb, "Strip[0].B2"); break; case 9: ToggleVoiceMeeter(vb, "Strip[1].B1"); break; case 17: ToggleVoiceMeeter(vb, "Strip[1].B2"); break; case 10: ToggleVoiceMeeter(vb, "Strip[2].B1"); break; case 18: ToggleVoiceMeeter(vb, "Strip[2].B2"); break; case 12: ToggleVoiceMeeter(vb, "Strip[3].A1"); break; case 20: ToggleVoiceMeeter(vb, "Strip[3].A2"); break; case 13: ToggleVoiceMeeter(vb, "Strip[4].A1"); break; case 21: ToggleVoiceMeeter(vb, "Strip[4].A2"); break; case 14: ToggleVoiceMeeter(vb, "Bus[0].Mute"); break; case 15: ToggleVoiceMeeter(vb, "Bus[1].Mute"); break; case 23: ToggleVoiceMeeter(vb, "Bus[2].Mute"); break; } } else if (m.MessageType == MessageType.Channel && m.Command == ChannelCommand.Controller) { switch (m.Data1) { case 1: // CC1 UpdateCCVoiceMeter(vb, "Strip[0].Gain", m.Data2); break; case 2: // CC2 UpdateCCVoiceMeter(vb, "Strip[1].Gain", m.Data2); break; case 3: UpdateCCVoiceMeter(vb, "Strip[2].Gain", m.Data2); //UpdateCCVoiceMeter(vb, "Strip[2].Gain", m.Data2, 12.0f); break; case 5: UpdateCCVoiceMeter(vb, "Strip[3].Gain", m.Data2); break; case 6: UpdateCCVoiceMeter(vb, "Strip[4].Gain", m.Data2); break; case 7: UpdateCCVoiceMeter(vb, "Bus[0].Gain", m.Data2); break; case 8: UpdateCCVoiceMeter(vb, "Bus[1].Gain", m.Data2); break; case 9: UpdateCCVoiceMeter(vb, "Bus[2].Gain", m.Data2); break; } } }; id.StartRecording(); while (!isCanceled) { if (vb.Poll()) { //strip 0 var vmVal = vb.GetParam($"Strip[0].B1"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 0, (int)vmVal)); vmVal = vb.GetParam($"Strip[0].B2"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 8, (int)vmVal)); //strip 1 vmVal = vb.GetParam($"Strip[1].B1"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 1, (int)vmVal)); vmVal = vb.GetParam($"Strip[1].B2"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 9, vmVal == 1 ? 2 : 0)); //strip 2 vmVal = vb.GetParam($"Strip[2].B1"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 2, (int)vmVal)); vmVal = vb.GetParam($"Strip[2].B2"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 10, vmVal == 1 ? 2 : 0)); //strip 3 vmVal = vb.GetParam($"Strip[3].A1"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 4, (int)vmVal)); vmVal = vb.GetParam($"Strip[3].A2"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 12, (int)vmVal)); //strip 4 vmVal = vb.GetParam($"Strip[4].A1"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 5, (int)vmVal)); vmVal = vb.GetParam($"Strip[4].A2"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 13, (int)vmVal)); //Bus 0 vmVal = vb.GetParam($"Bus[0].Mute"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 6, vmVal == 1 ? 2 : 0)); vmVal = vb.GetParam($"Bus[1].Mute"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 7, vmVal == 1 ? 2 : 0)); vmVal = vb.GetParam($"Bus[2].Mute"); od.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, 15, vmVal == 1 ? 2 : 0)); } Thread.Sleep(20); } id.Dispose(); od.Dispose(); vb.Dispose(); }