/// <summary> /// Initializes a new instance of the <see cref="Mono"/> class. /// </summary> /// <param name="samples">Input samples.</param> /// <param name="settings">Settings associated with this audio data.</param> public Mono(ImmutableArray <double> samples, IAudioProcessingSettings settings) { if (settings is null) { throw new ArgumentNullException(nameof(settings)); } this.Settings = settings; this.monoChannel = new Channel(samples, settings); }
/// <summary> /// Initializes a new instance of the <see cref="Channel"/> class. /// </summary> /// <param name="inputSamples">Input audio samples.</param> /// <param name="settings">Audio setting.</param> public Channel(double[] inputSamples, IAudioProcessingSettings settings) { if (inputSamples is null) { throw new ArgumentNullException(nameof(inputSamples)); } var inputImmutable = ImmutableArray.Create(inputSamples); this.scannerTools = new ScannerTools(inputImmutable, settings); }
/// <summary> /// Initializes a new instance of the <see cref="Stereo"/> class. /// </summary> /// <param name="leftChannelSamples">Input samples (left channel).</param> /// <param name="rightChannelSamples">Input samples (right channel.</param> /// <param name="settings">Settings associated with this audio data.</param> public Stereo( ImmutableArray <double> leftChannelSamples, ImmutableArray <double> rightChannelSamples, IAudioProcessingSettings settings) { if (settings is null) { throw new ArgumentNullException(nameof(settings)); } this.Settings = settings; this.leftChannel = new Channel(leftChannelSamples, settings); this.rightChannel = new Channel(rightChannelSamples, settings); }
/// <summary> /// Initializes a new instance of the <see cref="ScannerTools"/> class. /// </summary> /// <param name="inputSamples">Input audio samples.</param> /// <param name="settings">Settings for processing audio.</param> public ScannerTools(ImmutableArray <double> inputSamples, IAudioProcessingSettings settings) { this.PatchCollection = new PatchCollection(); this.Input = inputSamples; this.Settings = settings; this.InputPatcher = new Patcher( this.Input, this.PatchCollection, (patch, position) => patch.GetValue(position)); this.Predictor = new FastBurgPredictor( settings.CoefficientsNumber, settings.HistoryLengthSamples); this.NormCalculator = new AveragedMaxErrorAnalyzer(); }
/// <summary> /// Initializes a new instance of the <see cref="Channel"/> class. /// </summary> /// <param name="inputSamples">Input audio samples.</param> /// <param name="settings">Audio setting.</param> public Channel(ImmutableArray <double> inputSamples, IAudioProcessingSettings settings) { this.scannerTools = new ScannerTools(inputSamples, settings); }