2014-04-01 3 views
1

Spotify에서 C# 래퍼 ohLibSpotify로 음악을 스트리밍하고 NAudio로 재생하고 있습니다. 이제 내가받는 데이터에 대한 스펙트럼 시각화를 만들려고합니다.Spotify에서 스트리밍 음악의 시각화

내가 libspotify에서 데이터를 얻을, 다음 콜백이 호출됩니다 :

public void MusicDeliveryCallback(SpotifySession session, AudioFormat format, IntPtr frames, int num_frames) 
{ 
    //handle received music data from spotify for streaming 
    //format: audio format for streaming 
    //frames: pointer to the byte-data in storage 

    var size = num_frames * format.channels * 2; 
    if (size != 0) 
    { 
     _copiedFrames = new byte[size]; 
     Marshal.Copy(frames, _copiedFrames, 0, size); //Copy Pointer Bytes to _copiedFrames 
     _bufferedWaveProvider.AddSamples(_copiedFrames, 0, size); //adding bytes from _copiedFrames as samples 
    } 
} 

은 내가 실시간 시각화를 만들 수있는 BufferedWaveProvider에 전달할 데이터를 분석 할 수 있습니까? 그리고 어떻게 설명 할 수 있습니까?

답변

1

오디오 샘플과 같은 시간 영역 신호를 주파수 도메인 정보로 변환하는 표준 도구는 푸리에 변환입니다.

원하는 고속 푸리에 변환 라이브러리를 잡고 데이터에 던집니다. 신호를 구성 주파수로 분해합니다. 그런 다음 데이터를 가져 와서 원하는대로 시각화 할 수 있습니다. 스펙트로 그램은 특히 쉽습니다. 당신은 주파수와 시간 대 각 주파수 성분의 크기를 그릴 필요가 있습니다.

+0

저는 FFT를 관리하고 -1에서 1까지의 값을 포함하는 double []을 받았습니다. "각 주파수 구성 요소의 크기와 빈도 및 시간의 비교"와 의미에 대해 더 자세히 설명 할 수 있습니까? 그 부분? – freakimkaefig

+1

이 답변에는 푸리에 변환 결과를 해석하는 데 필요한 팁이 있습니다. http://stackoverflow.com/questions/604453/analyze-audio-using-fast-fourier-transform – nimish

관련 문제