2014-02-19 77 views
0

我正在嘗試開發一個程序,可以通過單擊或點擊按鈕來幫助我找到歌曲的每分鐘節拍。在處理中點按BPM代碼

  • 我曾指出,我需要一個動態陣列,其保存每個抽頭的時間(毫秒),在到ArrayList的每次末尾添加一個新元素。

  • 添加了一定數量的元素後,通過查找所有元素的總和並將其除以列表中元素的數量來計算出BPM。

我對Arraylists不是很熟悉,想知道是否有人可以幫我實施這些步驟。

我將使用此程序的處理。

+0

歡迎的StackOverflow!請參閱[問]頁面以提出更好的問題。試着說出你的實際問題 – Llopis

+0

不要忘記標記答案是正確的,如果它解決了你的問題 –

回答

1

這樣的事情?

ArrayList <Integer> diffs = new ArrayList<Integer>(); 
int last, now, diff; 

void setup() { 
    last = millis(); 
} 

void draw() { 
} 

void mouseClicked() { 
    now = millis(); 
    diff = now - last; 
    last = now; 
    diffs.add(diff); 

    int sum = 0; 
    for (Integer i : diffs) { 
    sum = sum + i; 
    } 

    int average = diffs.size() > 0 ? sum/diffs.size() : 0; 

    println ("average = " + average); 
} 

其實,如果你不需要訪問每個entrie,你甚至不需要一個ArrayList ...

int last, now, diff, entries, sum; 

void setup() { 
    last = millis(); 
} 

void draw() { 
} 

void mouseClicked() { 
    now = millis(); 
    diff = now - last; 
    last = now; 
    sum = sum + diff; 
    entries++; 

    int average = sum/entries ; 

    println ("average = " + average); 

} 
+0

輝煌! 非常感謝,這是一個很好的開始。 我一定能夠完成這一點 – JackG