public CarrierFrequencyApplier(
     IWaveFileMetadata metadata,
     CarrierFrequencyModel carrierFrequency,
     FeatureProvider featureProvider,
     ISamplingFrequencyProvider samplingFrequencyProvider) :
     base(numberOfChannels: metadata.NumberOfChannels, phaseShiftChannels: metadata.PhaseShiftCarrier, samplingFrequencyProvider.SamplingFrequency)
 {
     this.metadata         = metadata;
     this.carrierFrequency = carrierFrequency;
     this.featureProvider  = featureProvider;
 }
예제 #2
0
 public WaveStreamBase(SettingsCommon settings, ISamplingFrequencyProvider samplingFrequencyProvider, IProgressReporter progressReporter)
 {
     Channels = settings.GetNumberOfChannels();
     if (Channels < 1 || Channels > 2)
     {
         throw new InvalidOperationException("Channels must be either 1 or 2.");
     }
     LengthSeconds   = settings.TrackLength.TotalSeconds;
     N               = (int)(LengthSeconds * samplingFrequencyProvider.SamplingFrequency);
     overallDataSize = N * Channels * BytesPerSample;
     overallFileSize = overallDataSize + 44;
     this.samplingFrequencyProvider = samplingFrequencyProvider;
     this.progressReporter          = progressReporter;
 }
예제 #3
0
        public PulseV2WaveFile(ISamplingFrequencyProvider samplingFrequencyProvider,
                               int numberOfChannels,
                               FrequencyPulse component,
                               Constant[] constants,
                               Function[] functions)
            : base(numberOfChannels: numberOfChannels, phaseShiftChannels: false, samplingFrequencyProvider.SamplingFrequency)
        {
            this.frequencyExpression = new Expression(component.Frequency);
            this.frequencyExpression.addConstants(constants);
            this.frequencyExpression.addFunctions(functions);
            this.frequencyExpression.addArguments(new Argument("t"), new Argument("n"), new Argument("channel"));
            this.frequencyExpression.verifySyntax();

            this.pulseExpression = new Expression(component.Pulse);
            this.pulseExpression.addConstants(constants);
            this.pulseExpression.addFunctions(functions);
            this.pulseExpression.addArguments(new Argument("x"), new Argument("t"), new Argument("n"), new Argument("channel"));
            this.pulseExpression.verifySyntax();
        }
예제 #4
0
        public PulseGenerator(
            PulseFrequencyModel pulseFrequency,
            IWaveformExpressionProvider waveformExpressionProvider,
            IWaveFileMetadata waveFileMetadata,
            Randomizer randomizer,
            FeatureProvider featureProvider,
            IFeatureChooser featureChooser,
            ISectionsProvider sectionsProvider,
            ISamplingFrequencyProvider samplingFrequencyProvider) :
            base(waveFileMetadata.NumberOfChannels, waveFileMetadata.PhaseShiftPulses, samplingFrequencyProvider.SamplingFrequency)
        {
            this.pulseFrequency   = pulseFrequency;
            this.randomizer       = randomizer;
            this.featureProvider  = featureProvider;
            this.featureChooser   = featureChooser;
            this.sectionsProvider = sectionsProvider;

            var waveformExpression = waveformExpressionProvider.WaveformExpression;

            if (waveformExpression != null)
            {
                waveformScript = WaveformExpression.Parse(waveformExpression);
            }
        }
예제 #5
0
 public WaveStreamV1(Settings settings, ChannelSplitter channelSplitter, ISamplingFrequencyProvider samplingFrequencyProvider,
                     IProgressReporter progressReporter) : base(settings, samplingFrequencyProvider, progressReporter)
 {
     this.channelSplitter = channelSplitter;
 }
 public SectionsProvider(IWaveFileMetadata settings, SectionsModel sections, ISamplingFrequencyProvider samplingFrequencyProvider)
 {
     this.settings = settings;
     this.sections = sections;
     this.samplingFrequencyProvider = samplingFrequencyProvider;
 }