Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #36108 > unrolled thread
| Started by | Jonas Thörnvall <jonas.thornvall@gmail.com> |
|---|---|
| First post | 2019-03-12 18:05 -0700 |
| Last post | 2019-03-14 10:49 -0700 |
| Articles | 6 — 1 participant |
Back to article view | Back to comp.lang.javascript
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
| From | Jonas Thörnvall <jonas.thornvall@gmail.com> |
|---|---|
| Date | 2019-03-12 18:05 -0700 |
| Subject | My 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]
| From | Jonas Thörnvall <jonas.thornvall@gmail.com> |
|---|---|
| Date | 2019-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]
| From | Jonas Thörnvall <jonas.thornvall@gmail.com> |
|---|---|
| Date | 2019-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]
| From | Jonas Thörnvall <jonas.thornvall@gmail.com> |
|---|---|
| Date | 2019-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]
| From | Jonas Thörnvall <jonas.thornvall@gmail.com> |
|---|---|
| Date | 2019-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]
| From | Jonas Thörnvall <jonas.thornvall@gmail.com> |
|---|---|
| Date | 2019-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