2011-02-17 128 views
2

我理解這個的一般概念,但我對java圖形編程非常新穎。簡單的音樂可視化器

這個想法是:
1.從一首歌中獲取字節數據並存儲在一個字節數組中。
2.獲取一小塊字節數據,執行FFT,並獲得某種有用的數據(一旦執行FFT後您可以​​執行不同的操作)。
3.將處理過的數據饋送到圖形函數,該圖形函數將以某種方式將其用於任何可視化處於活動狀態的圖形函數。

我很難搞清楚如何實時做2和3。我想要處理的數據,播放的歌曲以及處理的數據影響當前正在同時繪製的圖形功能。我明白如何分開做這些事情,但我無法弄清楚如何把它們放在一起。

回答

0

..我明白如何分開做這些事情,但我不知道如何把它放在一起。

線程。

2

傅立葉變換不能實時進行(甚至不是快速傅立葉變換)。您必須能夠通過預讀來「領導」音樂源以生成頻率直方圖。您還需要一些非零長度的樣本進行分析。爲了使其看起來是實時的,您的分析儀可能會抓住例如半秒,每秒十次(因此有重疊)的樣本,計算每個樣本的FFT,然後顯示從當前點開始的樣本之間的差異音樂和下一個音樂(它將顯示僅在十秒內發生的頻率強度,同時仍然具有足夠的信號來執行有意義的分析)。

是的,你需要線程。很少幾個。

+0

我不太明白你爲什麼需要預讀。如果以44.1kHz採樣率計算2048點FFT,則中心將僅延遲23毫秒,這在30fps時小於1幀。或者它是一個計算時間問題而不是理論問題? – Justin 2011-02-17 18:28:22