Exemple #1
0
        private static PcmFormat FilterSetup(AudioData from, List <FilterBase> filters)
        {
            var fmt = new PcmFormat(from.meta.channels, from.meta.sampleRate, from.meta.totalSamples);

            foreach (var f in filters)
            {
                fmt = f.Setup(fmt);
            }
            return(fmt);
        }
Exemple #2
0
        public override PcmFormat Setup(PcmFormat inputFormat)
        {
            if (Int32.MaxValue <= inputFormat.NumSamples)
            {
                MessageBox.Show("Input PCM data is too long");
                return(null);
            }

            /*
             *  ジッター発生の原理
             *  ①ジッターによって揺さぶられたクロックで時を刻む。
             *  ②①の各時刻について、音声信号の波高値をSincリサンプラーにより算出する。
             *
             *  sampleRate        == 96000 Hz
             *  jitterFrequency   == 50 Hz
             *  jitterPicoseconds == 1 ps の場合
             *
             *  サンプル位置posのθ= 2 * PI * pos * 50 / 96000 (ラジアン)
             *
             *  サンプル間隔= 1/96000秒 = 10.4 μs
             *
             *  1ms = 10^-3秒
             *  1μs= 10^-6秒
             *  1ns = 10^-9秒
             *  1ps = 10^-12秒
             *
             *  1psのずれ                     A サンプルのずれ
             *  ───────────── = ─────────
             *  10.4 μs(1/96000)sのずれ      1 サンプルのずれ
             *
             *  1psのサンプルずれA = 10^-12 ÷ (1/96000) = 10^-12 * 96000 (サンプルのずれ)
             *
             *  サンプルを採取する位置= pos + Asin(θ)
             */

            mTotalSamples  = inputFormat.NumSamples;
            mSampleRate    = inputFormat.SampleRate;
            mSineJitterAmp = 1.0e-9 * SineJitterNanosec * inputFormat.SampleRate * Math.Sqrt(2);
            mTpdfJitterAmp = 1.0e-9 * TpdfJitterNanosec * inputFormat.SampleRate * 2;
            mRpdfJitterAmp = 1.0e-9 * RpdfJitterNanosec * inputFormat.SampleRate;

            PrepareResamplePosArray(inputFormat.SampleRate, (int)inputFormat.NumSamples);
            return(new PcmFormat(inputFormat));
        }
 private static PcmFormat FilterSetup(AudioData from, List<FilterBase> filters)
 {
     var fmt = new PcmFormat(from.meta.channels, from.meta.sampleRate, from.meta.totalSamples);
     foreach (var f in filters) {
         fmt = f.Setup(fmt);
     }
     return fmt;
 }
        public override PcmFormat Setup(PcmFormat inputFormat)
        {
            if (Int32.MaxValue <= inputFormat.NumSamples) {
                MessageBox.Show("Input PCM data is too long");
                return null;
            }
            /*
                ジッター発生の原理
                ①ジッターによって揺さぶられたクロックで時を刻む。
                ②①の各時刻について、音声信号の波高値をSincリサンプラーにより算出する。

                sampleRate        == 96000 Hz
                jitterFrequency   == 50 Hz
                jitterPicoseconds == 1 ps の場合

                サンプル位置posのθ= 2 * PI * pos * 50 / 96000 (ラジアン)

                サンプル間隔= 1/96000秒 = 10.4 μs

                1ms = 10^-3秒
                1μs= 10^-6秒
                1ns = 10^-9秒
                1ps = 10^-12秒

                1psのずれ                     A サンプルのずれ
                ───────────── = ─────────
                10.4 μs(1/96000)sのずれ      1 サンプルのずれ

                1psのサンプルずれA = 10^-12 ÷ (1/96000) = 10^-12 * 96000 (サンプルのずれ)

                サンプルを採取する位置= pos + Asin(θ)
            */

            mTotalSamples = inputFormat.NumSamples;
            mSampleRate    = inputFormat.SampleRate;
            mSineJitterAmp = 1.0e-9 * SineJitterNanosec * inputFormat.SampleRate * Math.Sqrt(2);
            mTpdfJitterAmp = 1.0e-9 * TpdfJitterNanosec * inputFormat.SampleRate * 2;
            mRpdfJitterAmp = 1.0e-9 * RpdfJitterNanosec * inputFormat.SampleRate;

            PrepareResamplePosArray(inputFormat.SampleRate, (int)inputFormat.NumSamples);
            return new PcmFormat(inputFormat);
        }
 public PcmFormat(PcmFormat rhs)
 {
     Channels = rhs.Channels;
     SampleRate = rhs.SampleRate;
     NumSamples = rhs.NumSamples;
 }
 /// <summary>
 /// perform setup task, set pcm format and returns output format
 /// </summary>
 /// <param name="inputFormat">input pcm format</param>
 /// <returns>output pcm format</returns>
 public virtual PcmFormat Setup(PcmFormat inputFormat)
 {
     return new PcmFormat(inputFormat);
 }
Exemple #7
0
 /// <summary>
 /// perform setup task, set pcm format and returns output format
 /// </summary>
 /// <param name="inputFormat">input pcm format</param>
 /// <returns>output pcm format</returns>
 public virtual PcmFormat Setup(PcmFormat inputFormat)
 {
     return(new PcmFormat(inputFormat));
 }
Exemple #8
0
 public PcmFormat(PcmFormat rhs)
 {
     Channels   = rhs.Channels;
     SampleRate = rhs.SampleRate;
     NumSamples = rhs.NumSamples;
 }