Пример #1
0
        protected override bool BeginRecording(RecordingSession session)
        {
            if (!base.BeginRecording(session))
            {
                return(false);
            }

            try
            {
                Settings.FileNameGenerator.CreateDirectory(session);
            }
            catch (Exception)
            {
                Debug.LogError(string.Format("Atom recorder output directory \"{0}\" could not be created.", Settings.FileNameGenerator.BuildAbsolutePath(session)));
                return(false);
            }

            var initializer  = FindObjectOfType <CriWareInitializer>();
            int samplingRate = initializer.atomConfig.outputSamplingRate;

            if (samplingRate == 0)
            {
                samplingRate = 48000;
            }

            try
            {
                var path = Settings.FileNameGenerator.BuildAbsolutePath(session);

                waveFileCreator = new WaveFileCreator(
                    path,
                    numChannels: 2,
                    samplingRate,
                    numbites: 16
                    );

                CriAtomExOutputAnalyzer.Config config = new CriAtomExOutputAnalyzer.Config
                {
                    enablePcmCapture         = true,
                    enablePcmCaptureCallback = true,
                    numCapturedPcmSamples    = Settings.NumSamples
                };

                analyzer = new CriAtomExOutputAnalyzer(config);
                analyzer.SetPcmCaptureCallback(PcmCapture);

                analyzer.AttachDspBus("MasterOut");

                return(true);
            }
            catch
            {
                if (RecorderOptions.VerboseMode)
                {
                    Debug.LogError("AudioRecorder unable to create MovieEncoder.");
                }
            }

            return(false);
        }
    /**
     * <summary>音声出力データ解析モジュールの作成</summary>
     * <returns>音声出力データ解析モジュール</returns>
     * \par 説明:
     * CriAtomSource/CriAtomExPlayerの出力音声データの解析モジュールを作成します。<br/>
     * 作成した解析モジュールは、CriAtomSourceまたはCriAtomExPlayerにアタッチして使用します。<br/>
     * アタッチしている音声出力に対し、レベルメータなどの解析を行います。<br/>
     * \par 備考:
     * 解析モジュールにアタッチ可能なCriAtomSource/CriAtomExPlayerは一つのみです。<br/>
     * 解析モジュールを使いまわす場合は、デタッチを行ってください。<br/>
     * \attention 注意:
     * 将来的に本クラスは廃止される予定です。CriAtomExOutputAnalyzerをご利用ください。<br/>
     * 音声出力データ解析モジュールの作成時には、アンマネージドなリソースが確保されます。<br/>
     * 解析モジュールが不要になった際は、必ず CriAtomExPlayerOutputAnalyzer.Dispose メソッドを呼んでください。
     */
    public CriAtomExPlayerOutputAnalyzer(Type[] types, Config[] configs = null)
        : base()
    {
        CriAtomExOutputAnalyzer.Config config = new CriAtomExOutputAnalyzer.Config();
        for (int i = 0; i < types.Length; i++)
        {
            switch (types[i])
            {
            case Type.LevelMeter:
            {
                config.enableLevelmeter = true;
                break;
            }

            case Type.SpectrumAnalyzer:
            {
                config.enableSpectrumAnalyzer = true;
                if (configs != null && configs.Length > i)
                {
                    config.numSpectrumAnalyzerBands = configs[i].num_spectrum_analyzer_bands;
                }
                else
                {
                    config.numSpectrumAnalyzerBands = 8;
                }
                break;
            }

            case Type.PcmCapture:
            {
                config.enablePcmCapture = true;
                if (configs != null && configs.Length > i)
                {
                    config.numCapturedPcmSamples = configs[i].num_stored_output_data;
                }
                else
                {
                    config.numCapturedPcmSamples = 4096;
                }
                break;
            }
            }
        }
        this.InitializeWithConfig(config);
    }
Пример #3
0
    IEnumerator RecordCoroutine()
    {
        while (CriAtom.CueSheetsAreLoading)
        {
            yield return(null);
        }

        /* Initialize CriAtomExOutputAnalyzer for PCM capture. */
        CriAtomExOutputAnalyzer.Config config = new CriAtomExOutputAnalyzer.Config
        {
            enablePcmCapture         = true,
            enablePcmCaptureCallback = true,
            numCapturedPcmSamples    = numSamples
        };

        analyzer = new CriAtomExOutputAnalyzer(config);
        analyzer.SetPcmCaptureCallback(PcmCapture);

        analyzer.AttachDspBus("MasterOut");

        IsRecording = true;
    }