W3C home > Mailing lists > Public > public-audio@w3.org > October to December 2012

Re: [Web MIDI API] send() timestamp

From: Marcos Caceres <marcos@marcosc.com>
Date: Sun, 16 Dec 2012 09:05:28 +0000
To: Jussi Kalliokoski <jussi.kalliokoski@gmail.com>, Chris Wilson <cwilso@google.com>
Cc: "public-audio@w3.org" <public-audio@w3.org>
Message-ID: <E633A4057A3246C8AD72B64D9FE5B433@marcosc.com>



On Saturday, 15 December 2012 at 15:04, Marcos Caceres wrote:

> Ok, I think I'm getting it now :) I'll try to set up a little experiment and see if I can replicate the above (though it won't really work in the reference implementation as we are still relying on setTimeout for scheduling... which only has a precision of 4ms)

Ok, got it all going :)   
http://marcoscaceres.github.com/WebMIDIAPIShim/

So, to replay a recording made locally, it's basically:
//pre-recorded data
var record=[{data:[...], stamp: 123113}, … ];  

//time playback relative to "now"
var start = window.performance.now() - record[0].stamp;  
record.forEach(function(packet){
output.send(packet.data, packet.stamp + start);
})



I also polyfilled performance.now() for various browsers. See bottom of:
http://marcoscaceres.github.com/WebMIDIAPIShim/WebMIDIAPI.js

Hopefully that all looks about right now (bar the changes I made to API to make it easier to use… which I hope you will consider).  

--  
Marcos Caceres
http://datadriven.com.au
Received on Sunday, 16 December 2012 09:06:00 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:50:04 UTC