Example #1
0
        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;
            }
        }
Example #2
0
 void waveIn_DataAvailable(object sender, WaveInEventArgs e)
 {
     if (processors == null || processors.Count <= 0)
     {
         return;
     }
     byte[][] sampleBytes = AudioProcessingGlobals.BytesToSampleBytes(e.Buffer, e.BytesRecorded, AudioProcessingGlobals.DEFAULT_BYTES_PER_SAMPLE, AudioProcessingGlobals.DEFAULT_ENCODING, _numberOfChannels);
     if (sampleBytes == null)
     {
         return;
     }
     for (int i = 0; i < processors.Count; i++)
     {
         IWaveInManagerProcessor proc = processors[i];
         proc.ProcessSamples(sampleBytes[proc.WaveInChannelIndex]);
     }
 }
        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();
        }