| 格納場所 | /cri/cocos2dx/samples/criatom/AtomSamples/ |
| 主なソースコード | Scenes/AtomBasicScene.cpp AtomUtil.cpp |
criErr_SetCallback(&errorCallback); criAtomEx_SetUserAllocator(&allocCallback, &freeCallback, NULL); /* ADX2 初期化 */ CriFsConfig fs_config; criFs_SetDefaultConfig(&fs_config); fs_config.num_loaders = 32; /* ざっくり多め。ストリーミング最大数+ACB等の読み込みが使用 */ #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) /* PC用 */ CriAtomExConfig_WASAPI atom_wasapi_config; criAtomEx_SetDefaultConfig_WASAPI(&atom_wasapi_config); atom_wasapi_config.atom_ex.fs_config = &fs_config; atom_wasapi_config.hca_mx.output_sampling_rate = sampling_rate_hcamx; criAtomEx_Initialize_WASAPI(&atom_wasapi_config, NULL, 0); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) /* Mac用 */ CriAtomExConfig_MACOSX atom_macosx_config; criAtomEx_SetDefaultConfig_MACOSX(&atom_macosx_config); atom_macosx_config.atom_ex.fs_config = &fs_config; atom_macosx_config.hca_mx.output_sampling_rate = sampling_rate_hcamx; criAtomEx_Initialize_MACOSX(&atom_macosx_config, NULL, 0); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) /* iOS用 */ CriAtomExConfig_IOS atom_ios_config; criAtomEx_SetDefaultConfig_IOS(&atom_ios_config); atom_ios_config.atom_ex.fs_config = &fs_config; atom_ios_config.hca_mx.output_sampling_rate = sampling_rate_hcamx; criAtomEx_Initialize_IOS(&atom_ios_config, NULL, 0); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) /* Android用 */ CriAtomExConfig_ANDROID atom_android_config; criAtomEx_SetDefaultConfig_ANDROID(&atom_android_config); atom_android_config.atom_ex.fs_config = &fs_config; atom_android_config.hca_mx.output_sampling_rate = sampling_rate_hcamx; criAtomEx_Initialize_ANDROID(&atom_android_config, NULL, 0); #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) /* ANDROIDの場合で必要な一手間。assetsフォルダへのアクセスを可能にする */ /* まずはJniHelperでActivityのContextを取得 */ cocos2d::JniMethodInfo methodInfo; cocos2d::JniHelper::getStaticMethodInfo(methodInfo, "org/cocos2dx/lib/Cocos2dxActivity", "getContext", "()Landroid/content/Context;"); auto android_context_object = (jobject)methodInfo.env->CallStaticObjectMethod( methodInfo.classID, methodInfo.methodID ); /* 有効化。assetsフォルダはCocosプロジェクトのResource相当なので、ほぼ必須と言って良い手順 */ criFs_EnableAssetsAccess_ANDROID(cocos2d::JniHelper::getJavaVM(), android_context_object); #endif /* 全体設定(ACF)の登録 */ CriChar8 acf_path[256]; getResourcePath(acf_path, acf_file_name); criAtomEx_RegisterAcfFile(NULL, acf_path, NULL, 0); /* DSPバス設定の登録 */ /* MEMO: これをやらないとDSPバスエフェクト(リバーブ等)が効きません。 */ criAtomEx_AttachDspBusSetting(dsp_bus_setting_name, NULL, 0); /* ボイスプール作成 */ CriAtomExStandardVoicePoolConfig vp_config; /* ボイスプールの設定。まずはデフォルト設定にして、その上で必要な値へ書き換えていく */ criAtomExVoicePool_SetDefaultConfigForStandardVoicePool(&vp_config); vp_config.num_voices = max_voice; vp_config.player_config.streaming_flag = CRI_TRUE; vp_config.player_config.max_sampling_rate = max_sampling_rate; /* 上で作った設定オブジェクトを渡して、ボイスプールを作成 */ g_standard_voice_pool = criAtomExVoicePool_AllocateStandardVoicePool(&vp_config, NULL, 0); /* HCA-MX再生用のボイスプール作成 */ CriAtomExHcaMxVoicePoolConfig hcamx_config; criAtomExVoicePool_SetDefaultConfigForHcaMxVoicePool(&hcamx_config); hcamx_config.num_voices = max_voice; /* 一応ストリーミング再生可能で初期化しておく。メモリ再生のみなら不要。 */ hcamx_config.player_config.streaming_flag = CRI_TRUE; hcamx_config.player_config.max_sampling_rate = sampling_rate_hcamx; g_hcamx_voice_pool = criAtomExVoicePool_AllocateHcaMxVoicePool(&hcamx_config, NULL, 0); /* DBASの作成(ストリーミング再生に必要) */ g_dbas_id = criAtomDbas_Create(NULL, NULL, 0); /* インゲームプレビュー機能の初期化 */ CriAtomExAsrBusAnalyzerConfig analyze_config; CriSint32 bus_no; criAtomExMonitor_Initialize(NULL, NULL, 0); /* レベル測定機能を追加 */ criAtomExAsr_SetDefaultConfigForBusAnalyzer(&analyze_config); for ( bus_no=0;bus_no<8;bus_no++) { criAtomExAsr_AttachBusAnalyzer(bus_no, &analyze_config); }
CriAtomExPlaybackId plyaback_id; /* 再生開始&プレイバックIDの取得 */ playback_id = criAtomExPlayer_Start(player); .... /* キューの再生状態取得 */ CriAtomExPlaybackStatus playback_state; playback_state = criAtomExPlayback_GetStatus(playback_id); /* キューの再生時刻の取得 */ CriSint64 playback_time; playback_time = criAtomExPlayback_GetTime(playback_id); .... /* キュー指定の再生停止 */ criAtomExPlayback_Stop(playback_id);
/* パラメータ設定 */ criAtomExPlayer_SetPitch(player, 0.5f); /* 再生開始 */ criAtomExPlayer_Start(player); /* このプレーヤで他のキューも再生する可能性がある場合は、パラメータをもとに戻す */ criAtomExPlayer_SetPitch(player, 0.0f);
再生開始した後にパラメータを変更する場合は、プレイバックIDを使用します。
パラメータを設定したあと、プレイバックIDを指定してパラメータ更新関数 criAtomExPlayer_Update() を呼び出してください。
/* 再生開始 */ playback_id = criAtomExPlayer_Start(player); .... /* 再生中に音量変更 */ criAtomExPlayer_SetVolume(player, 0.2f); /* 変更した音量を適用 */ criAtomExPlayer_Update(player, playback_id);