Example #1
0
 public static bool ToggleMuteWindowsAudioDevices(bool muted = false)
 {
     //Instantiate an Enumerator to find audio devices
     NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
     //Get all the devices, no matter what condition or status
     NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.All);
     //Loop through all devices
     foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol)
     {
         try
         {
             //Show us the human understandable name of the device
             //System.Diagnostics.Debug.Print(dev.FriendlyName);
             if (dev.State == DeviceState.Active)
             {
                 //[Un]Mute it
                 dev.AudioEndpointVolume.Mute = muted;
             }
         }
         catch (Exception ex)
         {
             //Do something with exception when an audio endpoint could not be muted
             return(false);
         }
     }
     return(true);
 }
Example #2
0
 private static MMDevice GetAudioMultiMediaEndpoint(DataFlow dataFlow, Role role)
 {
     using (var enumerator = new MMDeviceEnumerator())
     {
         return(enumerator.GetDefaultAudioEndpoint(dataFlow, role));
     }
 }
        /// <summary>
        /// Gets all system sound devices
        /// </summary>
        /// <returns></returns>
        public static string[] GetOutputDevices()
        {
            var enumerator = new MMDeviceEnumerator();

            return enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active).
                Select(endpoint => endpoint.FriendlyName).ToArray();
        }
        private void LoadAudioDevices()
        {
            try
            {
                //Instantiate an Enumerator to find audio devices
                NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
                //Get all the devices, no matter what condition or status
                NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.All);
                //Loop through all devices
                foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol)
                {
                    try
                    {
                        //Get its audio volume
                        System.Diagnostics.Debug.Print("Volume of " + dev.FriendlyName + " is " + dev.AudioEndpointVolume.MasterVolumeLevel.ToString());

                        //Get its audio volume
                        System.Diagnostics.Debug.Print(dev.AudioEndpointVolume.MasterVolumeLevel.ToString());
                        cmbDeviceList.Items.Add(dev.FriendlyName);
                        devices.Add(dev);
                    }
                    catch (Exception ex)
                    {
                        //Do something with exception when an audio endpoint could not be muted
                        System.Diagnostics.Debug.Print(dev.FriendlyName + " could not be loaded");
                    }
                }
                cmbDeviceList.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                //When something happend that prevent us to iterate through the devices
                System.Diagnostics.Debug.Print("Could not enumerate devices due to an exception: " + ex.Message);
            }
        }
Example #5
0
 /// <summary>
 /// Create an input
 /// </summary>
 /// <param name="ID">The ID of the input to be created</param>
 public Input(string ID)
 {
     // Set the device ID
     deviceID = ID;
     // Get Device from specified ID
     MMDeviceEnumerator devices = new MMDeviceEnumerator();
     device = devices.GetDevice(ID);
     // Set wave in to WASAPI capture of the specified device
     waveIn = new WasapiCapture(device);
     // Set the number of bytes used by each sample
     sampleByteSize = waveIn.WaveFormat.BitsPerSample / 8;
     // Add event handler to retrieve samples from the device
     waveIn.DataAvailable += waveIn_DataAvailable;
     // Create buffered wave provider
     bufferedWaveProvider = new BufferedWaveProvider(waveIn.WaveFormat);
     bufferedWaveProvider.DiscardOnBufferOverflow = true;
     // Create sample channel
     sampleChannel = new SampleChannel(bufferedWaveProvider);
     // Create sample provider
     sampleChannel.PreVolumeMeter += sampleProvider_StreamVolume;
     // Start recording
     try
     {
         waveIn.StartRecording();
     }
     catch
     {
         throw new ArgumentException("This input device is not supported.");
     }
 }
Example #6
0
        static void trayMenu_Popup(object sender, EventArgs e)
        {
            AudioDevice[] deviceList = GetDevices();
            MMDevice defaultDevice = new MMDeviceEnumerator().GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);

            trayMenu.MenuItems.Clear();

            for (int i = 0; i < deviceList.Length; i++)
            {
                MenuItem mItem;
                int localI = i; //We create a local int so that we don't have problems with the delegate inside the for loop.

                mItem = new MenuItem(deviceList[i].DeviceName, (f, g) => deviceList[localI].SetDefault());
                if (deviceList[i].DeviceID.GetHashCode() == defaultDevice.ID.GetHashCode())
                {
                    mItem.RadioCheck = true;
                    mItem.Checked = true;
                }

                trayMenu.MenuItems.Add(mItem);
            }

            trayMenu.MenuItems.Add("-");
            trayMenu.MenuItems.Add("Exit", (f, g) => Application.Exit());
        }
Example #7
0
        public Form1()
        {
            InitializeComponent();

            MMDeviceEnumerator deviceEnumerator = new MMDeviceEnumerator();
            var devices = deviceEnumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active);
            comboBox1.Items.AddRange(devices.ToArray());

            BPPL1167 radio = new BPPL1167();

            radio.Initialize("COM3");

            PL1167Status currentState = radio.ReadStatusReg();

            bool set = radio.SetRadioChannel(33);
            int channel = radio.GetRadioChannel();

            int syncword0 = radio.GetSyncWord0();

            LyteController controller = new LyteController(radio);
            lyte = new Lyte(0, TransmissionMode.Multicast);

            controller.Add((short)0, lyte);

            lyte.TurnOn();

            timer1.Interval= 10;
            timer1.Enabled = true;
        }
        static void Main(string[] args)
        {
            string   driverName = "Stereo Mix";           // any device name you want to enable
            MMDevice mMDevice;

            using (var enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator())
            {
                mMDevice = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Disabled).ToList().Where(d => d.FriendlyName.ToLower().Contains(driverName.ToLower())).FirstOrDefault();
            }
            if (mMDevice != null)
            {
                driverName = mMDevice.FriendlyName;
                int charLocation = driverName.IndexOf("(", StringComparison.Ordinal);
                if (charLocation > 0)
                {
                    driverName = driverName.Substring(0, charLocation);
                    driverName = driverName.Trim();
                }
            }
            else
            {
                MessageBox.Show($"{driverName} Coudn't Found as Disabled Device.");
                return;
            }
            TryEnable(driverName, mMDevice);
        }
 public void CanGetDefaultAudioEndpoint()
 {
     OSUtils.RequireVista();
     MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
     MMDevice defaultAudioEndpoint = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
     Assert.IsNotNull(defaultAudioEndpoint);
 }
Example #10
0
        public override void Update()
        {
            // TODO: Get from settings
            var fps = 25;

            if (VolumeDisplay == null)
                return;
            if (VolumeDisplay.Ttl < 1)
                return;

            var decreaseAmount = 500/fps;
            VolumeDisplay.Ttl = VolumeDisplay.Ttl - decreaseAmount;
            if (VolumeDisplay.Ttl < 128)
                VolumeDisplay.Transparancy = (byte) (VolumeDisplay.Transparancy - 20);

            try
            {
                var enumerator = new MMDeviceEnumerator();
                var volumeFloat =
                    enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console)
                        .AudioEndpointVolume.MasterVolumeLevelScalar;
                VolumeDisplay.Volume = (int) (volumeFloat*100);
            }
            catch (COMException)
            {
            }
        }
Example #11
0
 private void initAudioDev()
 { 
         NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
         //Get all the devices, no matter what condition or status
         NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.Active);
         //Loop through all devices
         foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol)
         {
             try
             {
                 if (dev.FriendlyName.Contains("Headphone") || dev.FriendlyName.Contains("Speakers"))
                 {
                     //Get its audio volume
                     System.Diagnostics.Debug.Print("Volume of " + dev.FriendlyName + " is " + dev.AudioEndpointVolume.MasterVolumeLevel.ToString());
                     audioDev = dev;
                     return;
                 }
             }
             catch (Exception ex)
             {
                 //Do something with exception when an audio endpoint could not be muted
                 System.Diagnostics.Debug.Print(dev.FriendlyName + " could not be muted" + ex.Message);
             }
         }
 }
 public void CanCreateMMDeviceEnumeratorInVista()
 {
     if (Environment.OSVersion.Version.Major >= 6)
     {
         MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
     }
 }
Example #13
0
        public void LoadWasapiDevices()
        {
            var deviceEnum = new MMDeviceEnumerator();
            var devices = deviceEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToList();

            audioDeviceComboBox.DataSource = devices.Count == 0 ? null : devices;
            audioDeviceComboBox.DisplayMember = "FriendlyName";
        }
 public MainWindowViewModel()
 {
     synchronizationContext = SynchronizationContext.Current;
     var enumerator = new MMDeviceEnumerator();
     CaptureDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToArray();
     var defaultDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Console);
     SelectedDevice = CaptureDevices.FirstOrDefault(c => c.ID == defaultDevice.ID);
 }
    public static void SwitchMute()
    {
        NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
        //Get all the devices, no matter what condition or status
        NAudio.CoreAudioApi.MMDevice dev = MMDE.GetDefaultAudioEndpoint(NAudio.CoreAudioApi.DataFlow.Render, NAudio.CoreAudioApi.Role.Communications);

        dev.AudioEndpointVolume.Mute = !dev.AudioEndpointVolume.Mute;
    }
Example #16
0
        /// <summary>
        /// Constructor for device panel creation.
        /// </summary>
        public VolumePanel()
        {
            this.devicePanel = true;
            var deviceEnumerator = new MMDeviceEnumerator();
            device = deviceEnumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);

            InitializeComponent();
        }
Example #17
0
        private void LoadWasapiDevicesCombo()
        {
            var deviceEnum = new MMDeviceEnumerator();
            var devices = deviceEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToList();

            comboWasapiDevices.DataSource = devices;
            comboWasapiDevices.DisplayMember = "FriendlyName";
        }
    public static void VolumeDown(int parDownPercent)
    {
        NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
        //Get all the devices, no matter what condition or status
        NAudio.CoreAudioApi.MMDevice dev = MMDE.GetDefaultAudioEndpoint(NAudio.CoreAudioApi.DataFlow.Render, NAudio.CoreAudioApi.Role.Communications);

        dev.AudioEndpointVolume.VolumeStepDown();
    }
        public Array GetSourcesArray()
        {
            NAudio.CoreAudioApi.MMDeviceEnumerator enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();

            var devices = enumerator.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.Capture, DeviceState.Active);

            return(devices.ToArray());
        }
Example #20
0
 static MMDevice GetDefaultAudioEndpoint()
 {
     if (Environment.OSVersion.Version.Major < 6)
     {
         throw new NotSupportedException("WASAPI supported only on Windows Vista and above");
     }
     var enumerator = new MMDeviceEnumerator();
     return enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
 }
 public void CanEnumerateCaptureDevices()
 {
     OSUtils.RequireVista();
     MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
     foreach (MMDevice device in enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All))
     {
         Debug.WriteLine(String.Format("{0}, {1}", device.FriendlyName, device.State));
     }
 }
 public void CanEnumerateDevicesInVista()
 {
     OSUtils.RequireVista();
     MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
     foreach (MMDevice devices in enumerator.EnumerateAudioEndPoints(DataFlow.All,DeviceState.All))
     {
         Debug.WriteLine(devices);
     }
 }
 public void CanGetDefaultAudioEndpoint()
 {
     if (Environment.OSVersion.Version.Major >= 6)
     {
         MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
         MMDevice defaultAudioEndpoint = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
         Assert.IsNotNull(defaultAudioEndpoint);
     }            
 }
 public void SetAudioVolume(float volume)
 {
     // Instantiate an Enumerator to find audio devices
     MMDE = new MMDeviceEnumerator();
     // Get all the devices, no matter what condition or status
     device = MMDE.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
     previousVolume = device.AudioEndpointVolume.MasterVolumeLevelScalar;
     device.AudioEndpointVolume.Mute = false;
     device.AudioEndpointVolume.MasterVolumeLevelScalar = volume;
 }
Example #25
0
 public Recorder()
 {
     wavein = new WaveIn();
     wavein.DeviceNumber = 0;
     wavein.WaveFormat = new WaveFormat();
     devEnum = new MMDeviceEnumerator();
     defaultDevice = devEnum.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Multimedia);
     wavein.DataAvailable += Wavein_DataAvailable;
     checkFolders();
 }
    public RealTimeSoundData() {

      var enumerator = new MMDeviceEnumerator();
      var captureDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToArray();
      var defaultDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Console);
      device = captureDevices.FirstOrDefault(c => c.ID == defaultDevice.ID);
      capture = new WasapiCapture(device);
      context = SynchronizationContext.Current;
      capture.DataAvailable += Capture_DataAvailable;
    }
Example #27
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //Check windows
            if (Environment.OSVersion.Version.Major < 6)
            {
                MessageBox.Show("You are using an unsupported version of Windows.\n\n" +
                                "audio-output-recorder requires Windows Vista or newer (which supports WASAPI).",
                                "Unsupported version of Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            //Check for ffmpeg.exe
            if (System.IO.File.Exists(Environment.CurrentDirectory + "\\ffmpeg.exe") == false)
            {
                if (MessageBox.Show("No ffmpeg.exe could not be found in the current directory." +
                                    "\n\nWould you like to open up a web browser window with a website where you can download ffmpeg? " +
                                    "Choose 32-bit static if you're unsure and put ffmpeg.exe in the same folder as audio-output-recorder.",
                                    "Error", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                {
                    System.Diagnostics.Process.Start("http://ffmpeg.zeranoe.com/builds/");
                    Environment.Exit(0);
                }
                else
                {
                    chkDownsample.Checked = false;
                    chkDownsample.Enabled = false;
                    chkEncode.Checked     = false;
                    chkEncode.Enabled     = false;
                }
            }

            if (System.IO.Directory.Exists(Properties.Settings.Default.recordingPath))
            {
                txtOutput.Text = Properties.Settings.Default.recordingPath;
            }
            else
            {
                txtOutput.Text = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
            }

            NAudio.CoreAudioApi.MMDeviceEnumerator devEnum = new NAudio.CoreAudioApi.MMDeviceEnumerator();
            NAudio.CoreAudioApi.MMDeviceCollection devColl = devEnum.EnumerateAudioEndPoints(
                NAudio.CoreAudioApi.DataFlow.Render, NAudio.CoreAudioApi.DeviceState.Active);

            foreach (NAudio.CoreAudioApi.MMDevice d in devColl)
            {
                cDevice.Items.Add(d.FriendlyName);
            }

            if (cDevice.Items.Count > 0)
            {
                cDevice.Text = cDevice.Items[0].ToString();
            }

            cBitrate.Text = "192k";
        }
 public WasapiCaptureViewModel()
 {
     synchronizationContext = SynchronizationContext.Current;
     var enumerator = new MMDeviceEnumerator();
     CaptureDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToArray();
     var defaultDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Console);
     SelectedDevice = CaptureDevices.FirstOrDefault(c => c.ID == defaultDevice.ID);
     RecordCommand = new DelegateCommand(Record);
     StopCommand = new DelegateCommand(Stop) { IsEnabled = false };
     RecordingsViewModel = new RecordingsViewModel();
 }
 public void CanEnumerateCaptureDevices()
 {
     if (Environment.OSVersion.Version.Major >= 6)
     {
         MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
         foreach (MMDevice device in enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All))
         {
             Console.WriteLine("{0}, {1}", device.FriendlyName, device.State);
         }
     }
 }
 public void CanEnumerateDevicesInVista()
 {
     if (Environment.OSVersion.Version.Major >= 6)
     {
         MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
         foreach (MMDevice devices in enumerator.EnumerateAudioEndPoints(DataFlow.All,DeviceState.All))
         {
             Console.WriteLine(devices);
         }
     }
 }
 /// <summary>
 ///     Инициализация основного аудио устройства
 /// </summary>
 private void InitDevice()
 {
     try
     {
         var devEnum = new MMDeviceEnumerator();
         _audioDevice = devEnum.GetDefaultAudioEndpoint(0, (Role) 1);
     }
     catch (Exception e)
     {
         MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Example #32
0
        public VolumeControl()
        {
            InitializeComponent();
            MMDeviceEnumerator deviceEnumerator = new MMDeviceEnumerator();
            device = deviceEnumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
            tbVolume.Value = (int)(Math.Round(device.AudioEndpointVolume.MasterVolumeLevelScalar * 100));

            if (device.AudioEndpointVolume.Mute)
            {
                btnMuteUnmute.Image = Properties.Resources.Mute;
            }
        }
Example #33
0
        private NAudioEngine()
        {
            sampleAggregator = new SampleAggregator(fftDataSize);

            var deviceEnumerator = new MMDeviceEnumerator();
            var defaultDevice = deviceEnumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
            this.capture = new WasapiLoopbackCapture(defaultDevice);
            capture.ShareMode = AudioClientShareMode.Shared;

            capture.DataAvailable += CaptureOnDataAvailable;

            capture.StartRecording();
        }
Example #34
0
        void UI_Load(object sender, EventArgs e)
        {
            var deviceEnum = new MMDeviceEnumerator();
            var deviceCol = deviceEnum.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active);

            var deviceList = deviceCol.ToList();

            AudioDeviceList.DataSource = deviceList;
            AudioDeviceList.DisplayMember = "FriendlyName";

            CodecListBox.DataSource = Codec.List;
            CodecListBox.DisplayMember = "DisplayName";
        }
Example #35
0
        public void MonitorDeviceChanges()
        {
            var enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();
            // Allows you to enumerate rendering devices in certain states
            var endpoints = enumerator.EnumerateAudioEndPoints(
                DataFlow.Render,
                DeviceState.Unplugged | DeviceState.Active);

            // Aswell as hook to the actual event
            this.nt = new NotificationClient(this);
            enumerator.RegisterEndpointNotificationCallback(nt);
            // MessageBox.Show("Monitoring Devices");
        }
Example #36
0
        private void LoadWasapiDevicesCombo()
        {
            var deviceEnum = new MMDeviceEnumerator();
            var devices = deviceEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToList();

            comboWasapiDevices.DataSource = devices;
            comboWasapiDevices.DisplayMember = "FriendlyName";
            if (devices.Count == 0)
            { 
                MessageBox.Show("Can't find any input devices!  Recording won't work...");
                btnStart.Enabled = false;
                btnNext.Enabled = false;
            }
        }
Example #37
0
        private static void LogAudioDevices()
        {
            Console.Out.WriteLine("Looking for audio capture devices:");
              for (int n = 0; n < WaveIn.DeviceCount; n++)
              {
            var dev = WaveIn.GetCapabilities(n);
            Console.Out.WriteLine("  Device: {0}, channels={1}", dev.ProductName, dev.Channels);
              }

              Console.Out.WriteLine("Looking for audio MMD:");
              var mmd = new MMDeviceEnumerator();
              var mddDev = mmd.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
              Console.Out.WriteLine("  [default] {0} {1}", mddDev.ID, mddDev.FriendlyName);
        }
Example #38
0
 public static bool IsMuted()
 {
     bool isMuted = false;
     try
     {
         MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
         MMDevice device = DevEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
         isMuted = device.AudioEndpointVolume.Mute;                
     }
     catch (Exception)
     {
     }
     return isMuted;
 }
Example #39
0
        protected override void OnInitialized(EventArgs e)
        {
            base.OnInitialized(e);

            ico_trayIcon.TrayMouseDoubleClick += Ico_trayIcon_TrayMouseDoubleClick;

            NAudio.CoreAudioApi.MMDeviceEnumerator enumer = new NAudio.CoreAudioApi.MMDeviceEnumerator();
            dev = enumer.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
            dev.AudioEndpointVolume.OnVolumeNotification += AudioEndpointVolume_OnVolumeNotification;

            VolumeActual = (int)(dev.AudioEndpointVolume.MasterVolumeLevelScalar * 100);
            VolumeMax    = DEFAULT_MAX_VOL;

            slider_maxVol.Value = VolumeMax;
        }
Example #40
0
        public ToolsAudioGrab()
        {
            DeviceEnumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();
            var devices = DeviceEnumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToList();

            // instantiate the sound recorder once in an attempt to reduce lag the first time used
            try
            {
                SoundCardRecorder = new SoundCardRecorder((MMDevice)devices[0]);
                SoundCardRecorder.Dispose();
                SoundCardRecorder = null;
            }
            catch (Exception)
            {
            }
        }
Example #41
0
        public FrmMain()
        {
            InitializeComponent();

            //For USB devices and so on
            HardwareNotification.RegisterUsbDeviceNotification(this.Handle);

            //For MM EndPoints (not only USB)
            var enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();

            enumerator.RegisterEndpointNotificationCallback(this);

            //Initial fill lists
            updateMMList();
            updateUSBList();
        }
Example #42
0
        public static List <ZJAudioModel> getAudioDevice()
        {
            List <ZJAudioModel> audioList = new List <ZJAudioModel>();
            var enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();

            //允许你在某些状态下枚举渲染设备
            var endpoints = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active);

            foreach (var endpoint in endpoints)
            {
                ZJAudioModel audioModel = new ZJAudioModel();
                audioModel.name = endpoint.FriendlyName;
                audioModel.id   = endpoint.ID;
                audioList.Add(audioModel);
            }
            return(audioList);
        }
Example #43
0
        public void wasapiPlay()
        {
            ISampleProvider                sampleProvider1;
            VolumeSampleProvider           volumeSampleProv1;
            SmbPitchShiftingSampleProvider smbPitchSampleProv1;
            OffsetSampleProvider           offsetSampleProv1;
            PanningSampleProvider          panSampleProv1;

            void funcForBuff(object sender, WaveInEventArgs waveInEventArgs)
            {
                buffWaveProv.AddSamples(waveInEventArgs.Buffer, 0, waveInEventArgs.BytesRecorded);
            }

            var enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();

            wInput  = enumerator.GetDevice(strInputDeviceID);
            wOutput = enumerator.GetDevice(strOutputDeviceID);

            wOut     = new WasapiOut(wOutput, AudioClientShareMode.Shared, true, 10);
            wCapture = new WasapiCapture(wInput, true, 10);

            buffWaveProv = new BufferedWaveProvider(wCapture.WaveFormat);

            wCapture.DataAvailable += funcForBuff;

            sampleProvider1                 = buffWaveProv.ToSampleProvider();
            smbPitchSampleProv1             = new SmbPitchShiftingSampleProvider(sampleProvider1);
            smbPitchSampleProv1.PitchFactor = fPitch;

            offsetSampleProv1         = new OffsetSampleProvider(smbPitchSampleProv1);
            offsetSampleProv1.DelayBy = new TimeSpan(0, 0, 0, 0, iLatency);

            panSampleProv1     = new PanningSampleProvider(offsetSampleProv1.ToMono(1f, 1f));
            panSampleProv1.Pan = fPanning;

            volumeSampleProv1        = new VolumeSampleProvider(panSampleProv1);
            volumeSampleProv1.Volume = fVolume;

            wOut.Init(volumeSampleProv1);
            wCapture.StartRecording();
            wOut.Play();
        }
Example #44
0
 void waveIn_DataAvailable(object sender, WaveInEventArgs e)
 {
     float[] volume = new float[8];
     for (int i = 0; i < 8; i++)
     {
         volume[i] = 0f;
         for (int index = e.BytesRecorded * i / 8; index < e.BytesRecorded * (i + 1) / 8; index += 2)
         {
             short sample = (short)((e.Buffer[index + 1] << 8) | e.Buffer[index + 0]);
             float val    = Math.Abs(sample / 32768f);
             if (val > volume[i])
             {
                 volume[i] = val;
             }
         }
     }
     NAudio.CoreAudioApi.MMDeviceEnumerator devEnum       = new NAudio.CoreAudioApi.MMDeviceEnumerator();
     NAudio.CoreAudioApi.MMDevice           defaultDevice = devEnum.GetDefaultAudioEndpoint(NAudio.CoreAudioApi.DataFlow.Render, NAudio.CoreAudioApi.Role.Multimedia);
     VolumeBar.Value = (100 - (defaultDevice.AudioMeterInformation.MasterPeakValue * 100f));
     VolumeBar.Value = (100 - (volume[3] * 100));
     Provider.AddSamples(e.Buffer, 0, e.BytesRecorded);
 }
Example #45
0
 public Audio(bool muteIfZero = true)
 {
     _muteIfZero = muteIfZero;
     NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
     activeDevices = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.Render, NAudio.CoreAudioApi.DeviceState.Active);
 }
Example #46
0
        /// <summary>
        /// Gets the default audio capture device
        /// </summary>
        /// <returns>The default audio capture device</returns>
        public static MMDevice GetDefaultCaptureDevice()
        {
            var devices = new MMDeviceEnumerator();

            return(devices.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Console));
        }
Example #47
0
        /// <summary>
        /// Gets the default audio capture device
        /// </summary>
        /// <returns>The default audio capture device</returns>
        public static MMDevice GetDefaultCaptureDevice()
        {
            MMDeviceEnumerator devices = new MMDeviceEnumerator();

            return(devices.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia));
        }