Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 //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);
        }
Exemplo n.º 4
0
        public bool IsMicMuted()
        {
            bool isMicMuted = true;

            VmClient.Poll();
            float mute = VmClient.GetParam("Strip(0).Mute");

            if (mute == 0)
            {
                isMicMuted = false;
            }

            return(isMicMuted);
        }
Exemplo n.º 5
0
 public bool GetParamBool(string paramName)
 {
     return(Convert.ToBoolean(client.GetParam(paramName)));
 }
Exemplo n.º 6
0
        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();
        }