/* メソッド ****************************************************************/
        /// <summary>
        /// コンストラクタ生成時に渡された情報に従って特徴ベクトル生成器を構成します
        /// </summary>
        /// <param name="reader">音源ファイルを開いた状態のWaveReaderオブジェクト<para>情報取得に利用します。</para></param>
        private void SetGenerator(WaveReader reader)
        {
            IFeatureGenerator generator = null;
            var startupDir = System.Windows.Forms.Application.StartupPath;
            var fname = startupDir + @"\" + "filter.txt";

            switch (this.id)
            {
                case UnitMember.KMCustomUnit1c1d:
                    MinimumCondition condition1 = new MinimumCondition(50);
                    generator = new FeatureGenerator<KMCustomUnit1c1d>(condition1, reader.SamplingRate, reader.SamplingRate / (double)this.ReadAmount, fname); // 特徴ベクトル生成器のインスタンスを作る
                    break;
                case UnitMember.KMCustomUnit2c1d:
                    MinimumCondition condition2 = new MinimumCondition(50);
                    generator = new FeatureGenerator<KMCustomUnit2c1d>(condition2, reader.SamplingRate, reader.SamplingRate / (double)this.ReadAmount, fname); // 特徴ベクトル生成器のインスタンスを作る
                    break;
                case UnitMember.KMCustomUnit2c1dver2:
                    MinimumCondition condition3 = new MinimumCondition(50);
                    generator = new FeatureGenerator<KMCustomUnit2c1dver2>(condition3, reader.SamplingRate, reader.SamplingRate / (double)this.ReadAmount, fname); // 特徴ベクトル生成器のインスタンスを作る
                    break;
                case UnitMember.KMCustomUnit3c1d:
                    MinimumCondition condition4 = new MinimumCondition(5);
                    generator = new FeatureGenerator<KMCustomUnit3c1d>(condition4, reader.SamplingRate, reader.SamplingRate / (double)this.ReadAmount, fname); // 特徴ベクトル生成器のインスタンスを作る
                    break;
            }
            this._generator = generator;

            return;
        }
 // ---- メソッド -------------------------------------------------------
 /// <summary>
 /// 計算条件を生成する
 /// <para>FeatureGeneratorCoreUnitクラスの変更に伴い、この呼び出し部も変更する必要があります。</para>
 /// </summary>
 /// <param name="minimumCondition">最小の計算条件</param>
 /// <param name="frequencyOfFFT">渡されるFFTの頻度[Hz]<para>例えば、WAVEファイルから0.1秒ずつ読み込んでFFTをしているのであれば、1/0.1=10Hzです。</para></param>
 /// <param name="minTimeWidth">最低の時間幅<para>鳴き声がこの時間幅以上に追加された場合に特徴ベクトルの出力準備が整ったと判断します。</para></param>
 public Condition(MinimumCondition minimumCondition, double frequencyOfFFT, double minTimeWidth)
 {
     this._maxModulationSpectrumFrequency = minimumCondition.MaxModulationSpectrumFrequency; // 特徴としたい、変調スペクトルの最大周波数[Hz]
     this._frequencyOfFFT = frequencyOfFFT;
     this._minTimeWidth   = minTimeWidth;
 }
 // ---- メソッド -------------------------------------------------------
 /// <summary>
 /// 計算条件を生成する
 /// <para>FeatureGeneratorCoreUnitクラスの変更に伴い、この呼び出し部も変更する必要があります。</para>
 /// </summary>
 /// <param name="minimumCondition">最小の計算条件</param>
 /// <param name="frequencyOfFFT">渡されるFFTの頻度[Hz]<para>例えば、WAVEファイルから0.1秒ずつ読み込んでFFTをしているのであれば、1/0.1=10Hzです。</para></param>
 /// <param name="minTimeWidth">最低の時間幅<para>鳴き声がこの時間幅以上に追加された場合に特徴ベクトルの出力準備が整ったと判断します。</para></param>
 public Condition(MinimumCondition minimumCondition, double frequencyOfFFT, double minTimeWidth)
 {
     this._maxModulationSpectrumFrequency = minimumCondition.MaxModulationSpectrumFrequency; // 特徴としたい、変調スペクトルの最大周波数[Hz]
     this._frequencyOfFFT = frequencyOfFFT;
     this._minTimeWidth = minTimeWidth;
 }