Timbre.js

JavaScript Library for Objective Sound Programming
system requirements: Chrome 14- or Firefox 4-

Schedule

Schedule

Constructor

schedule = T("schedule", mode="msec", [/* timetable */], loop=false);

// mode = "msec"
// timetable
[[   0, function() { console.log("  0msec"); } ],
 [ 500, function() { console.log("500msec"); } ],
 [ 750, function() { console.log("750msec"); } ],
 [1000,]];


// mode = "bpm(142,16)"
// timetable
[[   0, function() { console.log("X..."); } ],
 [   2, function() { console.log("..X."); } ],
 [   3, function() { console.log("...X"); } ],
 [   4,]];
        

Properties

schedule.bpm // [Number]

schedule.mode        // [Readonly]
schedule.currentTime // [Readonly]
        

Methods

// append a schedule to the timetable
schedule.append();

// remove a schedule from the timetable
schedule.remove();
        

Events

schedule.onlooped = function(count) {};

schedule.onended = function() {};
        

Example: Pattern sequence

timbre.utils.exports("atof");

var array = T([[0, 0, -1], 0, 2, 0, -1]);
array.value[0].repeat = 3;

var scale = T("minor", atof("E2"), array);

var synth = T("*", T("oscx", T("+", T("phasor", scale),
                                    T("osc", T("*", 0.5, scale)))),
                   T("perc", 300).set({mul:0.8}));

array.onbang = function() {
    synth.args[1].bang();
};

var schedule = T("schedule", "bpm(134, 16)", [
    [ 0, array], [ 2, array], [ 3, array],
    [ 4, array], [ 6, array], [ 7, array],
    [ 8, array], [10, array], [11, array],
    [12, array], [13, array], [14, array], [15, array], [16]
], true);

synth.onbang = function() {
    schedule.bpm += 5;
};
schedule.onlooped = function(count) {
    switch (count % 12) {
    case 0:
        array.add = 0;
        break;
    case 4:
        array.add = +3;
        break;
    case 6:
        array.add = 0;
        break;
    case 8:
        array.add = 4;
        break;
    case 9:
        array.add = 3;
        break;
    case 10:
        array.add = 0;
        break;
    }
};

synth.onplay = function() {
    schedule.on();
};
synth.onpause = function() {
    schedule.off();
};
synth.onon = function() {
    schedule.on();
};
synth.onoff = function() {
    schedule.off();
};
synth.play();    
        

See Also:

T("array")