Beispiel #1
0
 public void UpdateNoiseFloor(Common.NoiseFloor noisefloor, int customNoiseFloor)
 {
     if (_silenceHelper != null)
     {
         _silenceHelper.UpdateNoiseFloor(noisefloor, customNoiseFloor);
     }
 }
 public void UpdateNoiseFloor(Common.NoiseFloor noiseFloor, int customNoiseFloor)
 {
     if (processorWaveProvider != null)
     {
         processorWaveProvider.UpdateNoiseFloor(noiseFloor, customNoiseFloor);
     }
 }
 public WaveStreamProcessor(string streamURL, string streamName, 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;
     _streamURL             = streamURL;
     _streamName            = streamName;
     _sigDelegate           = sigDelegate;
     _propertyChangedAction = propertyChangedAction;
     playbackState          = StreamingPlaybackState.Stopped;
     _initialVolume         = Math.Max(initialVolume, 0.1f);
     _recordingEnabled      = recordingEnabled;
     _recordingType         = recordingType;
     _recordingKickTime     = recordingKickTime;
     _noiseFloor            = noiseFloor;
     _customNoiseFloor      = customNoiseFloor;
     _removeNoise           = removeNoise;
     _decodeMDC1200         = decodeMDC1200;
     _decodeGEStar          = decodeGEStar;
     _decodeFleetSync       = decodeFleetSync;
     _decodeP25             = decodeP25;
     _waveOutDevName        = waveOutDevName;
     System.Threading.Thread tWave = new Thread(WaveStreamProc);
     tWave.Name         = streamName;
     tWave.IsBackground = true;
     tWave.Start();
 }
Beispiel #4
0
 public SilenceHelper(int samplesPerSecond, Common.NoiseFloor noiseFloor, bool removeNoise, int customNoiseFloor)
 {
     _soundPackets = new bool[samplesPerSecond];
     _soundPacketPointer = 0;
     for (int i = 0; i < _soundPackets.Length; i++)
         _soundPackets[i] = true;
     _noiseFloor = noiseFloor;
     _removeNoise = removeNoise;
     _customNoiseFloor = CalculateCustomNoiseFloor(customNoiseFloor);
     ClearSilenceStats();
 }
Beispiel #5
0
 public SilenceHelper(int samplesPerSecond, Common.NoiseFloor noiseFloor, bool removeNoise, int customNoiseFloor)
 {
     _soundPackets       = new bool[samplesPerSecond];
     _soundPacketPointer = 0;
     for (int i = 0; i < _soundPackets.Length; i++)
     {
         _soundPackets[i] = true;
     }
     _noiseFloor       = noiseFloor;
     _removeNoise      = removeNoise;
     _customNoiseFloor = CalculateCustomNoiseFloor(customNoiseFloor);
     ClearSilenceStats();
 }
        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();
        }
        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();
        }
Beispiel #8
0
 public void UpdateNoiseFloor(Common.NoiseFloor noiseFloor, int customNoiseFloor)
 {
     _noiseFloor = noiseFloor;
     _customNoiseFloor = CalculateCustomNoiseFloor(customNoiseFloor);
 }
 public WaveStreamProcessor(string streamURL, string streamName, 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;
     _streamURL = streamURL;
     _streamName = streamName;
     _sigDelegate = sigDelegate;
     _propertyChangedAction = propertyChangedAction;
     playbackState = StreamingPlaybackState.Stopped;
     _initialVolume = Math.Max(initialVolume, 0.1f);
     _recordingEnabled = recordingEnabled;
     _recordingType = recordingType;
     _recordingKickTime = recordingKickTime;
     _noiseFloor = noiseFloor;
     _customNoiseFloor = customNoiseFloor;
     _removeNoise = removeNoise;
     _decodeMDC1200 = decodeMDC1200;
     _decodeGEStar = decodeGEStar;
     _decodeFleetSync = decodeFleetSync;
     _decodeP25 = decodeP25;
     _waveOutDevName = waveOutDevName;
     System.Threading.Thread tWave = new Thread(WaveStreamProc);
     tWave.Name = streamName;
     tWave.IsBackground = true;
     tWave.Start();
 }
Beispiel #10
0
        public ProcessorWaveProvider(string sourceName, IWaveProvider sourceWaveProvider, string waveFilePath, WaveFormat outFormat, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action <bool> hasPropertyChanged, bool recordEnabled, Common.SignalRecordingType recordType, int recordKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25)
            : base(sourceWaveProvider, waveFilePath)
        {
            LastValidStreamTitle = string.Empty;
            _sourceName          = sourceName;
            _sourceFormat        = sourceWaveProvider.WaveFormat;
            _outFormat           = outFormat;
            _hasPropertyChanged  = hasPropertyChanged;

            _silenceHelper = new SilenceHelper(outFormat.AverageBytesPerSecond / (outFormat.BitsPerSample / 8), noiseFloor, removeNoise, customNoiseFloor);

            if (outFormat.Equals(sourceWaveProvider.WaveFormat))
            {
                _resampleStream = null;
                _useResampler   = false;
            }
            else
            {
                if (Common.AppSettings.Instance.DiagnosticMode)
                {
                    Common.ConsoleHelper.ColorWriteLine(ConsoleColor.Magenta, "{0}: Source Format <> Out Format [{1}] <> [{2}]", sourceName, sourceWaveProvider.WaveFormat, outFormat);
                }
                _resampleStream = new NAudio.Wave.Compression.AcmStream(sourceWaveProvider.WaveFormat, outFormat);
                _useResampler   = true;
            }
            if (decodeMDC1200)
            {
                _mdc = new Decoders.MDC1200(outFormat.SampleRate, ProcessMDC1200, sourceName);
            }
            else
            {
                _mdc = null;
            }
            if (decodeGEStar)
            {
                _star = new Decoders.STAR(outFormat.SampleRate, ProcessSTAR, Decoders.STAR.star_format.star_format_1_16383, sourceName);
            }
            else
            {
                _star = null;
            }
            _rootDecoder = new Decoders.RootDecoder(outFormat.SampleRate, decodeFleetSync, decodeP25, ProcessRootDecoder);

            _recorder       = new AudioRecorder(sourceName, recordType, recordKickTime, outFormat, AudioProcessingGlobals.DefaultSaveFileWaveFormat, recordEnabled);
            _bytesPerSample = outFormat.BitsPerSample / 8;
            _encoding       = outFormat.Encoding;
            _sigDelegate    = sigDelegate;
        }
Beispiel #11
0
 public ProcessorWaveProvider(string sourceName, IWaveProvider sourceWaveProvider, Common.ProcessRadioSignalingItemDelegate sigDelegate, Action <bool> hasPropertyChanged, bool recordEnabled, Common.SignalRecordingType recordType, int recordKickTime, Common.NoiseFloor noiseFloor, int customNoiseFloor, bool removeNoise, bool decodeMDC1200, bool decodeGEStar, bool decodeFleetSync, bool decodeP25) : this(sourceName, sourceWaveProvider, string.Empty, AudioProcessingGlobals.DefaultProcessingWaveFormat, sigDelegate, hasPropertyChanged, recordEnabled, recordType, recordKickTime, noiseFloor, customNoiseFloor, removeNoise, decodeMDC1200, decodeGEStar, decodeFleetSync, decodeP25)
 {
 }
Beispiel #12
0
 public void UpdateNoiseFloor(Common.NoiseFloor noiseFloor, int customNoiseFloor)
 {
     _noiseFloor       = noiseFloor;
     _customNoiseFloor = CalculateCustomNoiseFloor(customNoiseFloor);
 }