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


Groups > comp.lang.javascript > #36108 > unrolled thread

My logic faile me.

Started byJonas Thörnvall <jonas.thornvall@gmail.com>
First post2019-03-12 18:05 -0700
Last post2019-03-14 10:49 -0700
Articles 6 — 1 participant

Back to article view | Back to comp.lang.javascript


Contents

  My logic faile me. Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-12 18:05 -0700
    Re: My logic faile me. Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-12 18:09 -0700
      Re: My logic faile me. Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-13 10:32 -0700
    Re: My logic faile me. Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-13 10:38 -0700
      Re: My logic faile me. Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-14 00:20 -0700
        Re: My logic faile me. Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-14 10:49 -0700

#36108 — My logic faile me.

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-03-12 18:05 -0700
SubjectMy logic faile me.
Message-ID<f5576c4a-e163-4fbe-9d23-58a2e214fab6@googlegroups.com>
Using the metronome. 

https://midisequenser.000webhostapp.com 

I've tried to understand how following code can lead to that after the keyreleased the front of the keyed scrollbar raise/extend faster while the backend stay correct "in sync". One could think/imagine xFrontStart=scrollBarPos-FRONTOFFSET; done more then once, but how could it, the keyrelease is true only in that part of code??? 

var FRONTOFFSET=0; 
var xKeylength=0; 
var xFrontStart=0; 
var xBackEnd=0; 
var keyreleased=false; 
function pianoSCROLL(){ 

     if(mess.data[0]==NOTE_ON && keyreleased==false){ 
        xBackEnd=keylength; 
        ctm.fillStyle = "magenta"; 
        ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight); 
        if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;} 
        xFrontStart=scrollBarPos-FRONTOFFSET; 
     } else if(mess.data[0]==NOTE_OFF && keyreleased==false){ 
       console.log("keyreleased!"); 
       keyreleased=true; 
       xBarLength=Math.round(xFrontStart-xBackEnd); 
       ctm.fillStyle = "black"; 
       ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
    } 
    if (keyreleased) { 
    //console.log("timebar backend moving"); 
    ctm.fillStyle = "black"; 
    ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
    ctm.fillStyle = "orange"; 
    ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight); 
    xFrontStart=scrollBarPos-FRONTOFFSET; 
    xBackEnd=Math.round(xFrontStart-xBarLength); 
    console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart); 
    } 
}

[toc] | [next] | [standalone]


#36109

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-03-12 18:09 -0700
Message-ID<8031b3ff-a51e-4a17-b7b1-f537c48fb6cc@googlegroups.com>
In reply to#36108
Den onsdag 13 mars 2019 kl. 02:05:14 UTC+1 skrev Jonas Thörnvall:
> Using the metronome. 
> 
> https://midisequenser.000webhostapp.com 
> 
> I've tried to understand how following code can lead to that after the keyreleased the front of the keyed scrollbar raise/extend faster while the backend stay correct "in sync". One could think/imagine xFrontStart=scrollBarPos-FRONTOFFSET; done more then once, but how could it, the keyrelease is true only in that part of code??? 
> 
> var FRONTOFFSET=0; 
> var xKeylength=0; 
> var xFrontStart=0; 
> var xBackEnd=0; 
> var keyreleased=false; 
> function pianoSCROLL(){ 
> 
>      if(mess.data[0]==NOTE_ON && keyreleased==false){ 
>         xBackEnd=keylength; 
>         ctm.fillStyle = "magenta"; 
>         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight); 
>         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;} 
>         xFrontStart=scrollBarPos-FRONTOFFSET; 
>      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){ 
>        console.log("keyreleased!"); 
>        keyreleased=true; 
>        xBarLength=Math.round(xFrontStart-xBackEnd); 
>        ctm.fillStyle = "black"; 
>        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
>     } 
>     if (keyreleased) { 
>     //console.log("timebar backend moving"); 
>     ctm.fillStyle = "black"; 
>     ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
>     ctm.fillStyle = "orange"; 
>     ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight); 
>     xFrontStart=scrollBarPos-FRONTOFFSET; 
>     xBackEnd=Math.round(xFrontStart-xBarLength); 
>     console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart); 
>     } 
> }

Will be nice with a hint, because i would like to start buffer the keystrokes, and this problem just look silly. But i don't get it.

[toc] | [prev] | [next] | [standalone]


#36114

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-03-13 10:32 -0700
Message-ID<5dc1cb6b-b81e-4140-ac1a-4d381e9ffddd@googlegroups.com>
In reply to#36109
Den onsdag 13 mars 2019 kl. 02:09:36 UTC+1 skrev Jonas Thörnvall:
> Den onsdag 13 mars 2019 kl. 02:05:14 UTC+1 skrev Jonas Thörnvall:
> > Using the metronome. 
> > 
> > https://midisequenser.000webhostapp.com 
> > 
> > I've tried to understand how following code can lead to that after the keyreleased the front of the keyed scrollbar raise/extend faster while the backend stay correct "in sync". One could think/imagine xFrontStart=scrollBarPos-FRONTOFFSET; done more then once, but how could it, the keyrelease is true only in that part of code??? 
> > 
> > var FRONTOFFSET=0; 
> > var xKeylength=0; 
> > var xFrontStart=0; 
> > var xBackEnd=0; 
> > var keyreleased=false; 
> > function pianoSCROLL(){ 
> > 
> >      if(mess.data[0]==NOTE_ON && keyreleased==false){ 
> >         xBackEnd=keylength; 
> >         ctm.fillStyle = "magenta"; 
> >         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight); 
> >         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;} 
> >         xFrontStart=scrollBarPos-FRONTOFFSET; 
> >      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){ 
> >        console.log("keyreleased!"); 
> >        keyreleased=true; 
> >        xBarLength=Math.round(xFrontStart-xBackEnd); 
> >        ctm.fillStyle = "black"; 
> >        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
> >     } 
> >     if (keyreleased) { 
> >     //console.log("timebar backend moving"); 
> >     ctm.fillStyle = "black"; 
> >     ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
> >     ctm.fillStyle = "orange"; 
> >     ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight); 
> >     xFrontStart=scrollBarPos-FRONTOFFSET; 
> >     xBackEnd=Math.round(xFrontStart-xBarLength); 
> >     console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart); 
> >     } 
> > }
> 
> Will be nice with a hint, because i would like to start buffer the keystrokes, and this problem just look silly. But i don't get it.

Just as a precaution i made the last IF to another ELSE IF, and of course that was not it. I think someone hinted me that there may be weird things happened with the floating point precision, so i tried us Math.round 

This is the only two active lines of codes in the last IF / ELSE IF branch
 xFrontStart=scrollBarPos-FRONTOFFSET; 
 xBackEnd=Math.round(xFrontStart-xBarLength); 

I mean scrollBarPos is calculated outside, it can't start to differ dependent upon else if branch. And the really weird part the xBackend of progressing keybar is calculated correct using xFrontStart that apparently becomes totally obfuscated.

But if i do not care about calculating xBackEnd and have it locked at zero "keylength", suddenly xFrontStart calculated correct LoL

Which in itself maybe not surprising because that is what is done in else if above. Maybe there is something going on with my global variables and i should change name of xBackEnd, but i do not think it is used elsewhere.

Yeah it is somekind of magic going on.

[toc] | [prev] | [next] | [standalone]


#36115

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-03-13 10:38 -0700
Message-ID<cc98a504-046c-44a9-a90e-909eac871704@googlegroups.com>
In reply to#36108
Den onsdag 13 mars 2019 kl. 02:05:14 UTC+1 skrev Jonas Thörnvall:
> Using the metronome. 
> 
> https://midisequenser.000webhostapp.com 
> 
> I've tried to understand how following code can lead to that after the keyreleased the front of the keyed scrollbar raise/extend faster while the backend stay correct "in sync". One could think/imagine xFrontStart=scrollBarPos-FRONTOFFSET; done more then once, but how could it, the keyrelease is true only in that part of code??? 
> 
> var FRONTOFFSET=0; 
> var xKeylength=0; 
> var xFrontStart=0; 
> var xBackEnd=0; 
> var keyreleased=false; 
> function pianoSCROLL(){ 
> 
>      if(mess.data[0]==NOTE_ON && keyreleased==false){ 
>         xBackEnd=keylength; 
>         ctm.fillStyle = "magenta"; 
>         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight); 
>         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;} 
>         xFrontStart=scrollBarPos-FRONTOFFSET; 
>      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){ 
>        console.log("keyreleased!"); 
>        keyreleased=true; 
>        xBarLength=Math.round(xFrontStart-xBackEnd); 
>        ctm.fillStyle = "black"; 
>        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
>     } 
>     if (keyreleased) { 
>     //console.log("timebar backend moving"); 
>     ctm.fillStyle = "black"; 
>     ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
>     ctm.fillStyle = "orange"; 
>     ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight); 
>     xFrontStart=scrollBarPos-FRONTOFFSET; 
>     xBackEnd=Math.round(xFrontStart-xBarLength); 
>     console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart); 
>     } 
> }

Pretty please, this going nowhere.

var FRONTOFFSET=0;
var xKeylength=0;
var xFrontStart=0;
var xBackEnd=0;
var keyreleased=false;
function pianoSCROLL(){
     if(mess.data[0]==NOTE_ON && keyreleased==false){
        xBackEnd=keylength;
        ctm.fillStyle = "magenta";
        ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight);
        if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;}
        xFrontStart=scrollBarPos-FRONTOFFSET;
     } else if(mess.data[0]==NOTE_OFF && keyreleased==false){
       console.log("keyreleased!");
       keyreleased=true;
       xBarLength=Math.round(xFrontStart-xBackEnd);
       ctm.fillStyle = "black";
       ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
    } else if (keyreleased) {
    //console.log("timebar backend moving");
    ctm.fillStyle = "black";
    ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
    ctm.fillStyle = "orange";
    ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight);
    scrollBarPos=Math.round(scrollBarPos);
    FRONTOFFSET=Math.round(FRONTOFFSET);
    xFrontStart=scrollBarPos-FRONTOFFSET;
    xBackEnd=Math.round(xFrontStart-xBarLength);
    console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart);
    }
}

[toc] | [prev] | [next] | [standalone]


#36117

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-03-14 00:20 -0700
Message-ID<1ec17acd-fc02-4833-b103-0c7bfdcc1ae1@googlegroups.com>
In reply to#36115
Den onsdag 13 mars 2019 kl. 18:39:02 UTC+1 skrev Jonas Thörnvall:
> Den onsdag 13 mars 2019 kl. 02:05:14 UTC+1 skrev Jonas Thörnvall:
> > Using the metronome. 
> > 
> > https://midisequenser.000webhostapp.com 
> > 
> > I've tried to understand how following code can lead to that after the keyreleased the front of the keyed scrollbar raise/extend faster while the backend stay correct "in sync". One could think/imagine xFrontStart=scrollBarPos-FRONTOFFSET; done more then once, but how could it, the keyrelease is true only in that part of code??? 
> > 
> > var FRONTOFFSET=0; 
> > var xKeylength=0; 
> > var xFrontStart=0; 
> > var xBackEnd=0; 
> > var keyreleased=false; 
> > function pianoSCROLL(){ 
> > 
> >      if(mess.data[0]==NOTE_ON && keyreleased==false){ 
> >         xBackEnd=keylength; 
> >         ctm.fillStyle = "magenta"; 
> >         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight); 
> >         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;} 
> >         xFrontStart=scrollBarPos-FRONTOFFSET; 
> >      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){ 
> >        console.log("keyreleased!"); 
> >        keyreleased=true; 
> >        xBarLength=Math.round(xFrontStart-xBackEnd); 
> >        ctm.fillStyle = "black"; 
> >        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
> >     } 
> >     if (keyreleased) { 
> >     //console.log("timebar backend moving"); 
> >     ctm.fillStyle = "black"; 
> >     ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
> >     ctm.fillStyle = "orange"; 
> >     ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight); 
> >     xFrontStart=scrollBarPos-FRONTOFFSET; 
> >     xBackEnd=Math.round(xFrontStart-xBarLength); 
> >     console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart); 
> >     } 
> > }
> 
> Pretty please, this going nowhere.
> 
> var FRONTOFFSET=0;
> var xKeylength=0;
> var xFrontStart=0;
> var xBackEnd=0;
> var keyreleased=false;
> function pianoSCROLL(){
>      if(mess.data[0]==NOTE_ON && keyreleased==false){
>         xBackEnd=keylength;
>         ctm.fillStyle = "magenta";
>         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight);
>         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;}
>         xFrontStart=scrollBarPos-FRONTOFFSET;
>      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){
>        console.log("keyreleased!");
>        keyreleased=true;
>        xBarLength=Math.round(xFrontStart-xBackEnd);
>        ctm.fillStyle = "black";
>        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
>     } else if (keyreleased) {
>     //console.log("timebar backend moving");
>     ctm.fillStyle = "black";
>     ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
>     ctm.fillStyle = "orange";
>     ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight);
>     scrollBarPos=Math.round(scrollBarPos);
>     FRONTOFFSET=Math.round(FRONTOFFSET);
>     xFrontStart=scrollBarPos-FRONTOFFSET;
>     xBackEnd=Math.round(xFrontStart-xBarLength);
>     console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart);
>     }
> }

I thought i first should take care of that annoying  mess.data[0] undefined message. But easier said then done, i use the typof to find out if undefined but still get undefined message at line.

function pianoSCROLL(){
     if (typeof mess.data[0] === undefined){}
     else if(mess.data[0]==NOTE_ON && keyreleased==false){
        xBackEnd=keylength;
        ctm.fillStyle = "magenta";
        ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight);
        if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;}
        Math.round(scrollBarPos);
        Math.round(FRONTOFFSET);
        xFrontStart=scrollBarPos-FRONTOFFSET;
     } else if(mess.data[0]==NOTE_OFF && keyreleased==false){
       console.log("keyreleased!");
       keyreleased=true;
       xBarLength=Math.round(xFrontStart-xBackEnd);
       Math.round(scrollBarPos);
       Math.round(FRONTOFFSET);
       Math.round(xBarLength);
       ctm.fillStyle = "black";
       ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
    } else if (keyreleased) {
      ctm.fillStyle = "black";
      ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
      scrollBarPos=Math.round(scrollBarPos);
      FRONTOFFSET=Math.round(FRONTOFFSET);
      xBarLength=Math.round(xBarLength);
      xFrontStart=scrollBarPos-FRONTOFFSET;
      xBackEnd=xFrontStart-xBarLength;
      console.log("scrollbarpos="+scrollBarPos+" xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart);
      testx=xFrontStart-xBackEnd;
      console.log("xfrontStart-xBackEnd="+testx);
      ctm.fillStyle = "orange";
      ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight);
    }
}

[toc] | [prev] | [next] | [standalone]


#36120

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-03-14 10:49 -0700
Message-ID<3ffbabac-1482-4d0c-9f0c-7d45af5d4247@googlegroups.com>
In reply to#36117
Den torsdag 14 mars 2019 kl. 08:20:33 UTC+1 skrev Jonas Thörnvall:
> Den onsdag 13 mars 2019 kl. 18:39:02 UTC+1 skrev Jonas Thörnvall:
> > Den onsdag 13 mars 2019 kl. 02:05:14 UTC+1 skrev Jonas Thörnvall:
> > > Using the metronome. 
> > > 
> > > https://midisequenser.000webhostapp.com 
> > > 
> > > I've tried to understand how following code can lead to that after the keyreleased the front of the keyed scrollbar raise/extend faster while the backend stay correct "in sync". One could think/imagine xFrontStart=scrollBarPos-FRONTOFFSET; done more then once, but how could it, the keyrelease is true only in that part of code??? 
> > > 
> > > var FRONTOFFSET=0; 
> > > var xKeylength=0; 
> > > var xFrontStart=0; 
> > > var xBackEnd=0; 
> > > var keyreleased=false; 
> > > function pianoSCROLL(){ 
> > > 
> > >      if(mess.data[0]==NOTE_ON && keyreleased==false){ 
> > >         xBackEnd=keylength; 
> > >         ctm.fillStyle = "magenta"; 
> > >         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight); 
> > >         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;} 
> > >         xFrontStart=scrollBarPos-FRONTOFFSET; 
> > >      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){ 
> > >        console.log("keyreleased!"); 
> > >        keyreleased=true; 
> > >        xBarLength=Math.round(xFrontStart-xBackEnd); 
> > >        ctm.fillStyle = "black"; 
> > >        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
> > >     } 
> > >     if (keyreleased) { 
> > >     //console.log("timebar backend moving"); 
> > >     ctm.fillStyle = "black"; 
> > >     ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2); 
> > >     ctm.fillStyle = "orange"; 
> > >     ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight); 
> > >     xFrontStart=scrollBarPos-FRONTOFFSET; 
> > >     xBackEnd=Math.round(xFrontStart-xBarLength); 
> > >     console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart); 
> > >     } 
> > > }
> > 
> > Pretty please, this going nowhere.
> > 
> > var FRONTOFFSET=0;
> > var xKeylength=0;
> > var xFrontStart=0;
> > var xBackEnd=0;
> > var keyreleased=false;
> > function pianoSCROLL(){
> >      if(mess.data[0]==NOTE_ON && keyreleased==false){
> >         xBackEnd=keylength;
> >         ctm.fillStyle = "magenta";
> >         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight);
> >         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;}
> >         xFrontStart=scrollBarPos-FRONTOFFSET;
> >      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){
> >        console.log("keyreleased!");
> >        keyreleased=true;
> >        xBarLength=Math.round(xFrontStart-xBackEnd);
> >        ctm.fillStyle = "black";
> >        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
> >     } else if (keyreleased) {
> >     //console.log("timebar backend moving");
> >     ctm.fillStyle = "black";
> >     ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
> >     ctm.fillStyle = "orange";
> >     ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight);
> >     scrollBarPos=Math.round(scrollBarPos);
> >     FRONTOFFSET=Math.round(FRONTOFFSET);
> >     xFrontStart=scrollBarPos-FRONTOFFSET;
> >     xBackEnd=Math.round(xFrontStart-xBarLength);
> >     console.log("xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart);
> >     }
> > }
> 
> I thought i first should take care of that annoying  mess.data[0] undefined message. But easier said then done, i use the typof to find out if undefined but still get undefined message at line.
> 
> function pianoSCROLL(){
>      if (typeof mess.data[0] === undefined){}
>      else if(mess.data[0]==NOTE_ON && keyreleased==false){
>         xBackEnd=keylength;
>         ctm.fillStyle = "magenta";
>         ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), xFrontStart, keyHeight);
>         if(FRONTOFFSET==0) {FRONTOFFSET=scrollBarPos;}
>         Math.round(scrollBarPos);
>         Math.round(FRONTOFFSET);
>         xFrontStart=scrollBarPos-FRONTOFFSET;
>      } else if(mess.data[0]==NOTE_OFF && keyreleased==false){
>        console.log("keyreleased!");
>        keyreleased=true;
>        xBarLength=Math.round(xFrontStart-xBackEnd);
>        Math.round(scrollBarPos);
>        Math.round(FRONTOFFSET);
>        Math.round(xBarLength);
>        ctm.fillStyle = "black";
>        ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
>     } else if (keyreleased) {
>       ctm.fillStyle = "black";
>       ctm.fillRect(keylength, (PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)), Mwidth, keyHeight+2);
>       scrollBarPos=Math.round(scrollBarPos);
>       FRONTOFFSET=Math.round(FRONTOFFSET);
>       xBarLength=Math.round(xBarLength);
>       xFrontStart=scrollBarPos-FRONTOFFSET;
>       xBackEnd=xFrontStart-xBarLength;
>       console.log("scrollbarpos="+scrollBarPos+" xBackEnd="+xBackEnd+" xBarLength="+xBarLength+" xFrontStart="+xFrontStart);
>       testx=xFrontStart-xBackEnd;
>       console.log("xfrontStart-xBackEnd="+testx);
>       ctm.fillStyle = "orange";
>       ctm.fillRect(xBackEnd,(PistartX+keyHeight*88)-(keyHeight*(mess.data[1]-8)),xFrontStart, keyHeight);
>     }
> }

Sometimes the approach get in the way from achieving ones goals, i start read out from the record buffer instead, and generate position relative current time. But i guess i have to read out the recorded  array backward, see if i can find any informaton on that.

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.javascript


csiph-web