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); }
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; }