Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #34702

Howto achieve best possible playback timing

Newsgroups comp.lang.javascript
Date 2018-02-05 01:13 -0800
Message-ID <edcfe79b-323f-485f-ba02-7bd7c50a4938@googlegroups.com> (permalink)
Subject Howto achieve best possible playback timing
From Jonas Thörnvall <jonas.thornvall@gmail.com>

Show all headers | View raw


I must stop poll and do some more serious playback, but i am not sure how.

function play(){
  var lastelement=track[0].midiMess.length;
  var x=0;var time=0; var starttime=0; var clock=0;
  time=performance.now();
  starttime=time;
  while(x<lastelement){
    var time=performance.now();
    clock=time-starttime; 
    if(track[0].midiMess[x].time<=clock){
        var noteOnMessage = [track[0].midiMess[x].data0,track[0].midiMess[x].data1,track[0].midiMess[x].data2];
     output.send(noteOnMessage);  
     x++;
    }
  }
}

Well this is probably not ideal either, but better? If someone show me away to get the playup of events as accurate as possible i would be thankful.

function diffPlay(){
  var lastelement=track[0].midiMess.length;
  var x=0; 
  var waitEv=new Array();
  noteOnMessage=new Array();
  
  //INIT FIRST EVENT
  waitEv[x]=track[0].midiMess[x].time;
  var noteOnMessage[x] = [track[0].midiMess[x].data0,track[0].midiMess[x].data1,
  track[0].midiMess[x].data2];
  x++;
  
  //LOOP THRU ALL EVENTS CALCULATE TIMEDIFFERENCES
  while(x<lastelement){
    waitEv[x]=track[0].midiMess[x].time-track[0].midiMess[x-1].time;
    x++;
    var noteOnMessage[x] [track[0].midiMess[x].data0,track[0].midiMess[x].data1,
    track[0].midiMess[x].data2];
  }
  y=0;
  while(y<lastelement){
    setTimeout(playEvent,waitEv[y]);
    y++;
  }
}

function playEvent(){
  output.send(noteOnMessage[y]); 
}
  

Back to comp.lang.javascript | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Howto achieve best possible playback timing Jonas Thörnvall <jonas.thornvall@gmail.com> - 2018-02-05 01:13 -0800
  Re: Howto achieve best possible playback timing Jonas Thörnvall <jonas.thornvall@gmail.com> - 2018-02-05 02:37 -0800
    Re: Howto achieve best possible playback timing Jonas Thörnvall <jonas.thornvall@gmail.com> - 2018-02-05 02:38 -0800
      Re: Howto achieve best possible playback timing Jonas Thörnvall <jonas.thornvall@gmail.com> - 2018-02-05 02:54 -0800
      Re: Howto achieve best possible playback timing Jonas Thörnvall <jonas.thornvall@gmail.com> - 2018-02-05 06:09 -0800

csiph-web