ビート(タイム)テーブルを作ってみる
前回は、ピッチテーブルを作りましたが今回は音楽ソフトウエアに欠かせないテンポ値から計算するビート(1拍)テーブルです。つまり一拍ごとの時間値の配列(タイムテーブル)です。
■ 引数に必要な要素は:(下記サンプルコードの場合)
- tempo(テンポ)テンポ120なら、120.0
- beat(一小節の拍数)4拍子では、4
- bars(小節数)例えば8小節なら、8
- _offset(オフセット)音楽的な1小節1拍目が「0」のときは、0.0
offset値は、オーディオデータとシンク(同期)する場合などの時に音楽的な曲頭とオーディオデータの時間軸の頭が一致しない場合にオフセット値を設定します。
下記サンプルの場合、Math.round()で整数に丸めていますが小数点以下も欲しい場合は外してください。
function create_beat_array(tempo:Number, beat:int, bars:int, _offset:Number):Array {
var interval_time:Number = Math.round (60 * 1000 / tempo);
var total_beats:int = beat * bars;
var beat_array:Array = [];
for (var i:int= 0; i < total_beats; i ++) {
beat_array [i] = _offset + (interval_time * i);
}
return beat_array;
}