2017-01-20 10 views
0

기본 재생 장치를 분석하고 비트를 감지하고 싶습니다. 나는 함께 선택한 장치의 FFT 데이터를 얻기 위해 BASS WASAPI를 사용하고있다 : BASS WASAPI BPMCounter

int ret = BassWasapi.BASS_WASAPI_GetData(_fft, (int)BASSData.BASS_DATA_FFT2048); 

가 지금은 스펙트럼 데이터를 생성하고 사용자에게이를 표시 할 데이터를 사용했다. 또한 BASS의 BPMCounter Class를 사용하여 Beats를 감지하려고합니다. 그러나 내가 말할 수있는 한, BPMCounter.ProcessAudio() 함수는 스트림 (WASAPI와 함께 사용하지 않음)을 필요로합니다. WASAPI에서 BPMCounter를 사용할 수있는 방법이 있습니까? 누군가가 나를 올바른 방향으로 인도 할 수 있다면 좋을 것입니다. 감사 편집

: 는이 스트림에 데이터를 변환하려고했으나 성공하지 :

int ret = BassWasapi.BASS_WASAPI_GetData(_fft, (int)BASSData.BASS_DATA_FFT2048); //get channel fft data 
var chan = Bass.BASS_StreamCreate(0, 44100, BASSFlag.BASS_DEFAULT, BASSStreamProc.STREAMPROC_PUSH); 
Bass.BASS_ChannelPlay(chan, false); 
Bass.BASS_StreamPutData(chan, _fft, _fft.Length); 
bool beat = _count.ProcessAudio(chan, true); 
Debug.Write(beat); 

beat 항상 False이다, 그러나 나는 스펙트럼에서 볼 수있는 FFT 데이터의 캡처가 corrent입니다 .

답변

1

저는 몇 시간 전에이 라이브러리를 가지고 놀기 시작했습니다. 예제를 계속 진행하고 있습니다. 그래서 내 대답은 당신이 원하는 것이 아닐 수도 있습니다. 내 프로젝트를 위해 나는 또한 WASAPI를 스트림으로 변환하여 스펙트럼을 표시하는 데 사용하고자한다. 내가 한 것은 BASS_WASAPI 초기화 직후에 StreamPush를 만드는 것이 었습니다. 이것은 작동하지만, 난 여전히 실험하고 있습니다 :

private InitWasapi() 
{ 
    WASAPIPROC _process = new WASAPIPROC(Process); // Delegate 
    bool res = BassWasapi.BASS_WASAPI_Init(_YourDeviceNumber, 0, 0, BASSWASAPIInit.BASS_WASAPI_BUFFER, 1f, 0f, _process, IntPtr.Zero); 
    if (!res) 
    { 
    // Do error checking 
    }  

    // This is the part you are looking for (maybe!) 
    // Use these flags because Wasapi needs 32-bit sample data 
    var info = BassWasapi.BASS_WASAPI_GetInfo(); 
    _stream = Bass.BASS_StreamCreatePush(info.freq, info.chans, BASSFlag.BASS_STREAM_DECODE | BASSFlag.BASS_SAMPLE_FLOAT, IntPtr.Zero); 

    BassWasapi.BASS_WASAPI_Start(); 
} 

private int Process(IntPtr buffer, int length, IntPtr user) 
{ 
    Bass.BASS_StreamPutData(_stream, buffer, length); 
    return length; 
} 

을 참고 :

은 WASAPI이 호출이 대리자를 사용 초기화하기 위해서. 예를 들어 나는 음악 파일 자체에서 스트림을 만들 때와 같은 스펙트럼 출력을 얻지 못합니다. 약간의 차이가 있습니다. 어쩌면 그것은 동일한 .mp3를 재생하기 위해 윈앰프에서 커스텀 EQ를 사용하기 때문입니다. 그래서 누군가이 주제에 관해 더 많이 알고 있다면, 나는 또한 그것을 듣고 싶습니다!