コード例 #1
0
    /**
     * <summary>RawPCM ボイスプールの作成</summary>
     * <param name="numVoices">ボイス数</param>
     * <param name="maxChannels">最大チャンネル数</param>
     * <param name="maxSamplingRate">最大サンプリングレート</param>
     * <param name="format">RawPCM フォーマット</param>
     * <param name="identifier">ボイスプール識別子</param>
     * <returns>RawPCM ボイスプール</returns>
     * 本関数を実行することで、RawPCM 再生が可能なボイスがプールされます。<br>
     * AtomEx プレーヤで RawPCM データ(もしくは RawPCM データを含むキュー)の再生を行うと、
     * AtomEx プレーヤは作成された RawPCM ボイスプールからボイスを取得し、再生を行います。<br>
     * 再生終了後は、必ず、Dispose 関数でオブジェクトを破棄してください。<br>
     * 特定の CriAtomExPlayer に対して、作成したボイスプールからボイスを取得するように明示的に設定したい場合は、
     * identifier としてデフォルトの 0 以外の値を指定して作成し、 CriAtomExPlayer::SetVoicePoolIdentifier 関数を
     * 呼び出してください。
     * \attention
     * 現状、一度作成した RawPCM ボイスプールのフォーマットを後から変更することはできません。<br>
     * 再生するデータに合わせたフォーマットを指定して作成を行うようにしてください。<br>
     * また、 ::CriAtomExPlayer に対してチャンネル数やサンプリングレートを指定しても、
     * ボイスプールに対して設定したフォーマットに基づいて再生が行われます。
     * \sa CriAtomExPlayer::SetVoicePoolIdentifier
     */
    public CriAtomExRawPcmVoicePool(int numVoices, int maxChannels, int maxSamplingRate, RawPcmFormat format, uint identifier = 0)
    {
        this._identifier      = identifier;
        this._numVoices       = numVoices;
        this._maxChannels     = maxChannels;
        this._maxSamplingRate = maxSamplingRate;

        RawPcmVoicePoolConfig config = new RawPcmVoicePoolConfig();

        config.identifier = identifier;
        config.numVoices  = numVoices;
        config.playerConfig.maxChannels       = maxChannels;
        config.playerConfig.maxSamplingRate   = maxSamplingRate;
        config.playerConfig.format            = format;
        config.playerConfig.soundRendererType = (int)CriAtomEx.SoundRendererType.Asr;
        config.playerConfig.decodeLatency     = 0;
        this._handle = criAtomExVoicePool_AllocateRawPcmVoicePool(ref config, IntPtr.Zero, 0);
        if (this._handle == IntPtr.Zero)
        {
            throw new Exception("CriAtomExRawPcmVoicePool() failed.");
        }

        CriDisposableObjectManager.Register(this, CriDisposableObjectManager.ModuleType.Atom);
    }
コード例 #2
0
 private static IntPtr criAtomExVoicePool_AllocateRawPcmVoicePool(ref RawPcmVoicePoolConfig config, IntPtr work, int work_size)
 {
     return(new IntPtr(1));
 }
コード例 #3
0
 private static extern IntPtr criAtomExVoicePool_AllocateRawPcmVoicePool(ref RawPcmVoicePoolConfig config, IntPtr work, int work_size);