protected virtual bool StartWASAPI() { for (var a = 1; a <= START_ATTEMPTS; a++) { Logger.Write(this, LogLevel.Debug, "Starting WASAPI, attempt: {0}", a); try { var success = BassWasapi.Start(); if (success) { Logger.Write(this, LogLevel.Debug, "Successfully started WASAPI."); return(true); } else { Logger.Write(this, LogLevel.Warn, "Failed to start WASAPI: {0}", Enum.GetName(typeof(Errors), Bass.LastError)); } } catch (Exception e) { //Nothing can be done. Logger.Write(this, LogLevel.Warn, "Failed to start WASAPI: {0}", e.Message); } Thread.Sleep(START_ATTEMPT_INTERVAL); } Logger.Write(this, LogLevel.Warn, "Failed to start WASAPI after {0} attempts.", START_ATTEMPTS); return(false); }
/// <summary> /// Start Recording. /// </summary> public void Start() { _silencePlayer?.Play(); BassWasapi.CurrentDevice = _deviceIndex; if (!BassWasapi.Start()) { _silencePlayer?.Stop(); } }
protected virtual bool StartWASAPI() { if (BassWasapi.IsStarted) { Logger.Write(this, LogLevel.Debug, "WASAPI has already been started."); return(false); } Logger.Write(this, LogLevel.Debug, "Starting WASAPI."); BassUtils.OK(BassWasapi.Start()); return(true); }
/// <summary> /// If device is null we will attempt default input index /// </summary> public static void StartInputCapture(WasapiInputDevice device) { int inputDeviceIndex = BassWasapi.DefaultInputDevice; AudioAnalysis.InputMode = AudioAnalysis.InputModes.WasapiDevice; if (device == null) { if (_inputDevices.Count == 0) { Log.Error("No wasapi input devices found"); return; } Log.Error($"Attempting default input {BassWasapi.DefaultInputDevice}."); device = _inputDevices[0]; } else { Log.Debug($"Initializing WASAPI audio input for {device.DeviceInfo.Name}... "); inputDeviceIndex = device.WasapiDeviceIndex; } Bass.Configure(Configuration.UpdateThreads, false); // Bass.Configure(Configuration.DeviceBufferLength, 1024); BassWasapi.Stop(); BassWasapi.Free(); if (!BassWasapi.Init(inputDeviceIndex, Frequency: 0, Channels: 0, //Flags: WasapiInitFlags.Buffer | WasapiInitFlags.Exclusive, Flags: WasapiInitFlags.Buffer, Buffer: (float)device.DeviceInfo.DefaultUpdatePeriod, Period: (float)device.DeviceInfo.DefaultUpdatePeriod, Procedure: _wasapiProcedure, User: IntPtr.Zero)) { Log.Error("Can't initialize WASAPI:" + Bass.LastError); return; } BassWasapi.Start(); AudioAnalysis.InputMode = AudioAnalysis.InputModes.WasapiDevice; }
private void SetEnableWasapi(bool enable) { if (!enable) { BassWasapi.Stop(); //BassWasapi.Free(); _timer.Stop(); _timer.IsEnabled = false; return; } if (!_initialized) { var str = _deviceList[_deviceIndex % _deviceList.Count]; var array = str.Split(' '); _wasapiDeviceIndex = Convert.ToInt32(array[0]); Log.Debug($"Initializing WASAPI for {str}... #{_wasapiDeviceIndex}"); if (!BassWasapi.Init(_wasapiDeviceIndex, Frequency: 0, Channels: 0, //Flags: WasapiInitFlags.Buffer | WasapiInitFlags.Exclusive, Flags: WasapiInitFlags.Buffer, Buffer: 1, //0.0041f/2, // was 1 Period: 1, //0.0041f/2, Procedure: _wasapiProcedure, User: IntPtr.Zero)) { Log.Error("Can't initialize WASAPI:" + Bass.LastError); return; } _initialized = true; } BassWasapi.Start(); System.Threading.Thread.Sleep(100); _timer.IsEnabled = true; _timer.Start(); }
public bool Start() { BassWasapi.CurrentDevice = DeviceIndex; return(BassWasapi.Start()); }