オレンジ方式のBPM検出のアルゴリズムをシンプルに書くと><(超長文)
・まずとりあえず120BPM(500ms 間隔)を初期値(=現在のBPM)にする><
・移動平均と見比べて音が急に大きくなる瞬間を検出する><(上昇よりも下降が緩やかな平均にしてる><)
・検出した間隔が1000ms(60BPM相当)以上なら無視><
・検出した間隔が現在のBPMの値(初期は500ms)の70%以下の数値も無視><
・そうじゃない数値は『たぶん偶然にも運良くちょうどBPMの間隔を検出したっぽい!?><;』ので、間隔のリストに追記する
・間隔のリストの真ん中辺のサンプルの平均値を元に現在のBPMとする!><
つまり、『BPM60以下とか、いきなりBPM170以上の曲ってあんまりない気がする・・・><』というかなり酷い解決法><;