public WaveInManagerDevice(string deviceName) { _running = false; _waveInDeviceName = deviceName; int iDeviceNum = 0; for (int i = 0; i < WaveInEvent.DeviceCount; i++) { WaveInCapabilities capabilities = WaveInEvent.GetCapabilities(i); if (capabilities.ProductName == _waveInDeviceName) { iDeviceNum = i; _numberOfChannels = capabilities.Channels; break; } } waveIn = new WaveInEvent(); waveIn.DeviceNumber = iDeviceNum; waveIn.DataAvailable += waveIn_DataAvailable; waveIn.RecordingStopped += waveIn_RecordingStopped; waveIn.WaveFormat = AudioProcessingGlobals.GetWaveFormatForChannels(_numberOfChannels); try { StartIfNeeded(); } catch (Exception ex) { Common.DebugHelper.WriteExceptionToLog("MultiWaveInProcessor", ex, false, "waveIn.StartRecording();"); waveIn = null; } }
public WaveInChannelProcessor(string streamName, string waveInSourceName, int waveInChannel, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action <bool> propertyChangedAction, float initialVolume, bool recordingEnabled, Common.SignalRecordingType recordingType, int recordingKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25, string waveOutDevName) { _streamShouldPlay = true; _streamName = streamName; _waveInSourceName = waveInSourceName; _waveInChannel = waveInChannel; _sigDelegate = sigDelegate; _propertyChangedAction = propertyChangedAction; sourceActive = false; _recordingEnabled = recordingEnabled; _recordingType = recordingType; _recordingKickTime = recordingKickTime; _noiseFloor = noiseFloor; _customNoiseFloor = customNoiseFloor; _removeNoise = removeNoise; _decodeMDC1200 = decodeMDC1200; _decodeGEStar = decodeGEStar; _decodeFleetSync = decodeFleetSync; _decodeP25 = decodeP25; _waveOutDevName = waveOutDevName; bufferedWaveProvider = new BufferedWaveProvider(AudioProcessingGlobals.GetWaveFormatForChannels(1)); bufferedWaveProvider.BufferDuration = TimeSpan.FromSeconds(3); processorWaveProvider = new ProcessorWaveProvider(streamName, bufferedWaveProvider, ProcessRadioSignalingItem, propertyChangedAction, recordingEnabled, recordingType, recordingKickTime, noiseFloor, customNoiseFloor, removeNoise, decodeMDC1200, decodeGEStar, decodeFleetSync, decodeP25); volumeProvider = new VolumeWaveProvider16(processorWaveProvider); volumeProvider.Volume = initialVolume; FirePropertyChangedAction(true); WaveInManager.Instance.SetupForProcessor(this); sourceActive = true; waveOut = CreateWaveOut(); waveOut.Init(volumeProvider); waveOut.Play(); }