インサーションDSP(タイムストレッチ)

サンプルのディレクトリ

/cri/pc/samples/criatomex/insertion_dsp_time_stretch

サンプルの解説

音高を変えずに再生速度を変化させるタイムストレッチ機能のサンプルです。
タイムストレッチは時間の長さが変化するため、DSPバスエフェクトとして設定することができません。
使用するためにはボイスにアタッチする必要があります。

タイムストレッチ機能を使用する手順は以下の通りです。
  1. ボイスプールにcriAtomExVoicePool_AttachDspTimeStretch関数でタイムストレッチ機能を追加
  2. プレーヤーにcriAtomExPlayer_SetVoicePoolIdentifier関数でタイムストレッチが付いたボイスプール識別子をセット
  3. プレーヤーにcriAtomExPlayer_SetDspParamteter関数でタイムストレッチのパラメーターをセット。
  4. プレーヤーで再生を行う。
タイムストレッチのパラメーターは以下の通りです。
タイムストレッチ機能を使用するためのサンプルコードを以下に示します。
    #define TIME_STRETCH_VOICEPOOL  0x02
/* ボイスプールのコンフィグ設定 */
    CriAtomExStandardVoicePoolConfig voice_pool_config;
    criAtomExVoicePool_SetDefaultConfigForStandardVoicePool(&voice_pool_config);
    voice_pool_config.identifier = TIME_STRETCH_VOICEPOOL;
    /* ボイスプールの作成 */
    app_obj->voice_pool = criAtomExVoicePool_AllocateStandardVoicePool(&voice_pool_config, NULL, 0);

    /* タイムストレッチのコンフィグ設定 */
    CriAtomExDspTimeStretchConfig time_stretch_config;
    criAtomExVoicePool_SetDefaultConfigForDspTimeStretch(&time_stretch_config);
    time_stretch_config.num_dsp = voice_pool_config.num_voices;
    time_stretch_config.max_channels = voice_pool_config.player_config.max_channels;
    time_stretch_config.max_sampling_rate = voice_pool_config.player_config.max_sampling_rate;
    /* タイムストレッチを追加 */
    criAtomExVoicePool_AttachDspTimeStretch(&app_obj->voice_pool, &time_stretch_config, NULL, 0);
        :
    /* ボイスプール識別子をセット */
    criAtomExPlayer_SetVoicePoolIdentifier(app_obj->player, TIME_STRETCH_VOICEPOOL);
    /* 時間を1.2倍に伸ばす(遅くする) */
    criAtomExPlayer_SetDspParameter(app_obj->player, CRIATOMDSP_TIMESTRETCH_PARAM_RATIO, 1.2f);
    /* 再生開始 */
    criAtomExPlayer_Start(app_obj->player);
注意:
HCA-MXの音声にはタイムストレッチを適用することができません。
タイムストレッチ機能を使用する際はADXかHCAをご利用ください。

CRI Middleware logo Copyright (c) 2006-2018 CRI Middleware Co., Ltd.