Hatena::ブログ(Diary)

ひだちのいろの日記 RSSフィード

2009/07/09

[]JFilter を使って Sonar和音の発音タイミングをずらす

拙作 JFilter を使って Sonar和音の発音タイミングをずらすサンプルです。

こういうサンプル集みたいのを作ったほうがいろんな人に使ってもらえるのかなぁ…

// ノート毎にいくらずらすか
var d=10;
// 全体にかけるオフセット
var offset=0;
// 逆
var reverse=false;

// events を同じ time 値を持つもの毎に配列にまとめる
function parTime(events) {
	if(events.length==0) return [[]];
	result = [[events[0]]];
    for(var i=1; i<events.length; i++) {
    	if(result[result.length-1][0].time != events[i].time) {
        	result.push([events[i]]);
        } else {
        	result[result.length-1].push(events[i]);
        }
    }
    return result;
}

function onEvents(from, to, events) {
	// events をタイム毎に割る
    par = parTime(events);
    // tone で sort
    for(var i=0; i<par.length; i++) {
    	par[i].sort(function(a,b) {
        	if(!reverse)
            	return a.key - b.key;
            else 
            	return b.key - a.key;
        });
       	for(var j=0; j<par[i].length; j++) {
        	par[i][j].time += j*d+offset;
        }
    }
    // 配列を結合する
    result = [];
    for(var i=0; i<par.length; i++) {
    	result = result.concat(par[i]);
    }
	return result;
}

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mugaki/20090709/1247151629