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; }