Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
            }
        }