Esempio n. 1
0
        public GlobalEngine()
        {
            Engine = AudioService.Engine;

            var inputDevice = AsioInputDeviceDefinition.Instance;

            if (inputDevice.Entries.Count > 1) //"Default" entry is always there!
            {
                //define some absolut baseline defaults for when there is no settings file yet
                var selectedDriver      = defaultEntry;
                var selectedSamplerate  = 48000;
                var selectedInputCount  = 2;
                var selectedOutputCount = 2;

                //check settings file for selected driver and settings
                var settingspath = Path.Combine(VLSession.Instance.UserAppDataFolder, settingsFile);
                if (File.Exists(settingspath))
                {
                    var doc = new XmlDocument();
                    doc.Load(settingspath);

                    var node = doc.DocumentElement.SelectSingleNode("/Settings/Driver");
                    if (node != null)
                    {
                        selectedDriver = node.InnerText;
                    }

                    node = doc.DocumentElement.SelectSingleNode("/Settings/SampleRate");
                    if (node != null)
                    {
                        int.TryParse(node.InnerText, out selectedSamplerate);
                    }

                    node = doc.DocumentElement.SelectSingleNode("/Settings/Inputs");
                    if (node != null)
                    {
                        int.TryParse(node.InnerText, out selectedInputCount);
                    }

                    node = doc.DocumentElement.SelectSingleNode("/Settings/Outputs");
                    if (node != null)
                    {
                        int.TryParse(node.InnerText, out selectedOutputCount);
                    }
                }

                //make sure selected driver is currently available
                if (!inputDevice.Entries.Contains(selectedDriver))
                {
                    selectedDriver = defaultEntry;
                }

                //if "Default" is selected, make an actual choice
                if (selectedDriver == defaultEntry)
                {
                    selectedDriver = inputDevice.GetDefaultDriver();
                }

                try
                {
                    Engine.ChangeDriver(selectedDriver, 0, 0);

                    var sampleRates = AudioSampleRateDefinition.Instance.Entries.ToList();
                    if (sampleRates.Contains(selectedSamplerate.ToString()))
                    {
                        Engine.ChangeDriverSettings(selectedDriver, selectedSamplerate, selectedInputCount, 0, selectedOutputCount, 0);
                        Engine.Play = true;
                    }
                }
                finally
                { }
            }
        }