Exemplo n.º 1
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.º 2
0
 private void TmrCheckDirty_Elapsed(object sender, ElapsedEventArgs e)
 {
     IsConnected = (client.Poll() >= 0);
 }
Exemplo n.º 3
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);
                            }
                        }
                    }
        }
Exemplo n.º 4
0
 private void OnTime(object sender, ElapsedEventArgs e)
 {
     _ = vm.Poll();
 }
Exemplo n.º 5
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //defaulting to Banana
            setStrings(isPotato);
            DialogResult r;

VMInit:

            while (true)
            {
                try
                {
                    vm = new VmClient();
                    Thread.Sleep(100);
                    if (!vm.Poll())
                    {
                        throw new Exception();
                    }
                    break;
                }
                catch (Exception ex)
                {
                    r = MessageBox.Show("Couldn't connect to VoiceMeeter!\nIs it running?", "Error", MessageBoxButtons.RetryCancel);
                    if (r == DialogResult.Cancel)
                    {
                        start = StartResult.VM;
                        this.Close();
                        return;
                    }
                }
            }


            while (true)
            {
                try
                {
                    ti = new TelnetConnection("localhost", 25639);
                    //hardcoding for now

                    string fileName = String.Format(@"{0}\TS_API_key", Application.StartupPath);
                    if (!File.Exists(fileName) || new FileInfo(fileName).Length == 0)
                    {
                        //this.Hide();
                        InputAuthKey inputAuthKey = new InputAuthKey();
                        inputAuthKey.ShowDialog();
                        inputAuthKey.VisibleChanged += InputAuthKey_VisibleChanged;
                    }

                    if (File.Exists(fileName))
                    {
                        TS_API_KEY = File.ReadAllText(fileName);
                    }
                    else
                    {
                        TS_API_KEY = "ERROR";
                    }


                    //TS_API_KEY = "TJP8-5MKV-B1DG-HWM2-3X6Z-Q99B";
                    ti.WriteLine("auth apikey=" + TS_API_KEY);
                    //Console.WriteLine(ti.Read());
                    break;
                }
                catch (Exception ex)
                {
                    r = MessageBox.Show("Couldn't connect to TeamSpeak!\nIs it running?", "Error", MessageBoxButtons.RetryCancel);
                    if (r == DialogResult.Cancel)
                    {
                        start = StartResult.TS;
                        this.Close();
                        return;
                    }
                }
            }



            if (!(ti.Read().Contains("error id=0 msg=ok")))
            {
                r = MessageBox.Show("Couldn't connect to TeamSpeak!\nThe API key was not accepted. Do you want to reenter it?", "Error", MessageBoxButtons.OKCancel);
                if (r == DialogResult.Cancel)
                {
                    start = StartResult.Success;
                    this.Close();
                    return;
                }
                else
                {
                    InputAuthKey inputAuthKey = new InputAuthKey();
                    inputAuthKey.ShowDialog();
                    inputAuthKey.VisibleChanged += InputAuthKey_VisibleChanged;
                }
            }
            else
            {
                Console.WriteLine("Successfully connected to TeamSpeak!");
            }

            //Get all active TeamSpeak sessions. We'll only be using the first two, but we'll query anyway in case the user has closed tabs before.

            while (true)
            {
                try
                {
                    ti.WriteLine("serverconnectionhandlerlist");
                    string     serverconnectionhandler_result = ti.Read();
                    List <int> conn = new List <int>();
                    foreach (char c in serverconnectionhandler_result)
                    {
                        if (Char.GetNumericValue(c) > 0.0)
                        {
                            conn.Add((int)Char.GetNumericValue(c));
                        }
                    }
                    TSConnection1 = conn[0];
                    TSConnection2 = conn[1];
                    break;
                }
                catch
                {
                    r = MessageBox.Show("Please confirm that you have two open TeamSpeak tabs.", "Error", MessageBoxButtons.RetryCancel);
                    if (r == DialogResult.Cancel)
                    {
                        start = StartResult.Success;
                        this.Close();
                        return;
                    }
                }
            }


            //conn.ForEach(Console.WriteLine);


            getDefaultVoiceMeeter();
        }
        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();
        }