Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    wa-metropublic

    wa-metro

    Simple event scheduler for Web Audio API.

    This library is based on Chris Wilson's scheduling method used in his metronome example.

    Installation

    You can install wa-metro from npm.

    npm install wa-metro
    

    Or grab the latest version from build folder and include it in your html.

     
    <script src='wa-metro.min.js'></script>

    Example Usage

    var context = new AudioContext();
    var callback = function (time, step) {
        //schedule audio events with time and step number
    };
    var metro = new Metro(context, callback);
    metro.start();

    Callback

    The callback function will have time, step and timeFromScheduled parameters. You can use these values to create dynamic loops and animations.

    Callback Parameters

    • time - the audio time for the step which can be used to schedule audio events.
    • step - the number of the scheduled step.
    • timeFromScheduled - the time (in seconds) that the event will be triggered from the schedule event (time - context.currentTime). This time can be used to schedule animations and other events as shown in the example below.
    var metro = new Metro(context, callback);
    function callback(time, step, timeFromScheduled) {
        var osc = context.createOscillator();
        osc.connect(context.destination);
        if(step === 1) {
            osc.frequency.value = 880;
        }
        osc.start(time);
        osc.stop(time + 0.1);
     
      setTimeout(function(){
        // trigger some js event
      }, timeFromScheduled * 1000);
    }

    Methods

    var metro = new Metro(context, callback);
    metro.start(); // starts the clock and schedules events
    metro.stop(); // stops the clock and resets the step to 1
    metro.pause(); // pauses the clock and keeps the current step number

    Configuration

    var metro = new Metro(context, callback);
    metro.tempo = 100; // in BPM, defaults to 120
    metro.steps = 8; // number of steps in a bar. defaults to 16
    metro.look_ahead = 0.5; // look ahead time in Seconds. defaults to 1.0
    metro.callback = function(time, step){}; // change the callback

    install

    npm i wa-metro

    Downloadsweekly downloads

    12

    version

    1.1.2

    license

    none

    last publish

    collaborators

    • avatar