/// <summary> /// Beatの検出位置をListで返す /// </summary> /// <returns>Beat検出位置群</returns> public List <stBeatPos> GetBeatPositions() { #region [ BeatPosition格納リストの初期化 ] if (this.listBeatPositions != null) { this.listBeatPositions.Clear(); } else { this.listBeatPositions = new List <stBeatPos>(); } #endregion BPMBEATPROC _beatProc = new BPMBEATPROC(GetBeat_ProgressCallback); bool ret = BassFx.BASS_FX_BPM_BeatDecodeGet( this.hBassStream, 0, nTotalSeconds, //0, BASSFXBpm.BASS_FX_BPM_DEFAULT, //BASSFXBpm.BASS_FX_BPM_MULT2, _beatProc, IntPtr.Zero); return(this.listBeatPositions); }
private void Scan() { long pos = Bass.BASS_ChannelGetLength(this.handle); this.len = Bass.BASS_ChannelBytes2Seconds(this.handle, pos); _beatProc = new BPMBEATPROC(MyBeatProc); BassFx.BASS_FX_BPM_BeatCallbackSet(this.handle, _beatProc, IntPtr.Zero); BassFx.BASS_FX_BPM_BeatSetParameters(this.handle, this.parameters.Width, this.parameters.Center, this.parameters.Release); BassFx.BASS_FX_BPM_BeatDecodeGet(this.handle, 0.0, this.len, BASSFXBpm.BASS_FX_BPM_BKGRND, _beatProc, IntPtr.Zero); Bass.BASS_StreamFree(this.handle); if (OnComplete != null) { OnComplete(this.parameters.Index); } }