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


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

Advanced logic "measure a bar"

Started byJonas Thörnvall <jonas.thornvall@gmail.com>
First post2019-09-18 18:14 -0700
Last post2019-09-30 02:05 -0700
Articles 20 on this page of 31 — 4 participants

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


Contents

  Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 18:14 -0700
    Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 18:17 -0700
    Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 18:28 -0700
      Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 18:36 -0700
        Re: Advanced logic "measure a bar" "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2019-09-18 19:38 -0700
          Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 19:59 -0700
          Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 20:11 -0700
          Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 20:42 -0700
          Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 21:00 -0700
            Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-18 21:02 -0700
              Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-19 08:18 -0700
                Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-19 08:19 -0700
                  Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-19 08:23 -0700
                    Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-20 14:38 -0700
                      Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-21 02:14 -0700
                      Re: Advanced logic "measure a bar" John G Harris <niam@jghnorth.org.uk.invalid> - 2019-09-21 10:35 +0100
                        Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-21 05:17 -0700
                          Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-21 05:29 -0700
                            Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-22 04:52 -0700
                              Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-22 12:32 -0700
                                Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-23 00:38 -0700
                                  Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-24 05:17 -0700
                                    Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-24 05:18 -0700
                                      Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-24 05:21 -0700
                                    Re: Advanced logic "measure a bar" Martin Leese <please@see.Web.for.e-mail.INVALID> - 2019-09-24 13:14 -0600
                                      Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-24 12:30 -0700
                                        Re: Advanced logic "measure a bar" Martin Leese <please@see.Web.for.e-mail.INVALID> - 2019-09-24 13:53 -0600
                                          Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-24 22:13 -0700
                                            Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-25 02:54 -0700
                                              Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-25 22:32 -0700
                                                Re: Advanced logic "measure a bar" Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-09-30 02:05 -0700

Page 1 of 2  [1] 2  Next page →


#37295 — Advanced logic "measure a bar"

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 18:14 -0700
SubjectAdvanced logic "measure a bar"
Message-ID<d9319dae-f5c1-4023-9d26-a240dbfe8251@googlegroups.com>
You probably need a midiinterface.
https://midisequenser.000webhostapp.com/

1. Check RT NOTE RENDER
2. Press "REC"
3. USE VIRTUAL PIANO / OR MIDI PIANO "PRESS NOTE"
4. "RELEASE NOTE" watch what happen
5. Read the values of canvas rectangles in console log


This logic escape me.

Now i blank out full key after each render which of course not right, but beyond point about what goes wrong. In console log i can clearly see that rightSide and leftSide keep paste "move parallell" that is not howerver what is going on at the screen. A hint please....


var midiEv=0;
var rightSide=[];
var FRONTOFFSET=[];
var barLength=[];
var keyreleased=[]; 
leftSide=50;
for (var p=0;p<3000;p++) {rightSide[p]=0;FRONTOFFSET[p]=0;keyreleased[p]=false;}

function pianoSCROLL(){
nbrOfEv = track[rectrack].midiMess.length;
 while (nbrOfEv>0){
    midiEv=nbrOfEv-1;
   //INSIDE WHEN KEY PRESSED
   if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
      console.log("Pressed Key");
      ctm.fillStyle = "magenta";
      ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight-2);
      //When ***A NEW*** key pressed a startpoint relative the scrollbar created ***FRONTOFFSET***
      if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
      rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
	  barLength[midiEv]=rightSide[midiEv]-leftSide;
	  console.log("INSIDE HOLDKEY Barlength "+barLength[midiEv]+" =right  "+rightSide[midiEv]+" - left "+leftSide);
   } 
   //INSIDE KEY RELEADED
   else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
     for(var q=0;q<midiEv;q++){ 
       if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
	     console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
	     ctm.fillStyle = "red";
	     ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[q],keyHeight-2);
	     keyreleased[q]=true;
	     
	  }
	  
	  console.log("INSIDE RELEASE Barlength "+barLength[q]+" =right  "+rightSide[q]+" - left "+leftSide);
      keyreleased[midiEv]=true;
    }
   } 
   //INSIDE  FULL BAR MOVING
   
   else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==true) {
      ctm.fillStyle = "black";
	  ctm.fillRect(keylength+1,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), Mwidth,keyHeight);
	  for(var q=0;q<midiEv;q++){ 
        if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
		  //rightSide[q]=scrollBarPos-FRONTOFFSET[q];	
		  rightSide=scrollBarPos-FRONTOFFSET[q];
          leftSide=rightSide-barLength[q];
	      ctm.fillStyle = "white";
		  console.log("INSIDE FULL BAR MOVING  Leftside "+leftSide+" =Rightside  "+rightSide+" - Barlength "+barLength[q]);
	      ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide,keyHeight-2);
	    }
      } 
   }
   nbrOfEv--; 
 }
}

[toc] | [next] | [standalone]


#37296

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 18:17 -0700
Message-ID<910a51bb-98a4-44b3-bd72-9ea40bcbfdeb@googlegroups.com>
In reply to#37295
Den torsdag 19 september 2019 kl. 03:15:02 UTC+2 skrev Jonas Thörnvall:
> You probably need a midiinterface.
> https://midisequenser.000webhostapp.com/
> 
> 1. Check RT NOTE RENDER
> 2. Press "REC"
> 3. USE VIRTUAL PIANO / OR MIDI PIANO "PRESS NOTE"
> 4. "RELEASE NOTE" watch what happen
> 5. Read the values of canvas rectangles in console log
> 
> 
> This logic escape me.
> 
> Now i blank out full key after each render which of course not right, but beyond point about what goes wrong. In console log i can clearly see that rightSide and leftSide keep paste "move parallell" that is not howerver what is going on at the screen. A hint please....
> 
> 
> var midiEv=0;
> var rightSide=[];
> var FRONTOFFSET=[];
> var barLength=[];
> var keyreleased=[]; 
> leftSide=50;
> for (var p=0;p<3000;p++) {rightSide[p]=0;FRONTOFFSET[p]=0;keyreleased[p]=false;}
> 
> function pianoSCROLL(){
> nbrOfEv = track[rectrack].midiMess.length;
>  while (nbrOfEv>0){
>     midiEv=nbrOfEv-1;
>    //INSIDE WHEN KEY PRESSED
>    if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
>       console.log("Pressed Key");
>       ctm.fillStyle = "magenta";
>       ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight-2);
>       //When ***A NEW*** key pressed a startpoint relative the scrollbar created ***FRONTOFFSET***
>       if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
>       rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
> 	  barLength[midiEv]=rightSide[midiEv]-leftSide;
> 	  console.log("INSIDE HOLDKEY Barlength "+barLength[midiEv]+" =right  "+rightSide[midiEv]+" - left "+leftSide);
>    } 
>    //INSIDE KEY RELEADED
>    else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
>      for(var q=0;q<midiEv;q++){ 
>        if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> 	     console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
> 	     ctm.fillStyle = "red";
> 	     ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[q],keyHeight-2);
> 	     keyreleased[q]=true;
> 	     
> 	  }
> 	  
> 	  console.log("INSIDE RELEASE Barlength "+barLength[q]+" =right  "+rightSide[q]+" - left "+leftSide);
>       keyreleased[midiEv]=true;
>     }
>    } 
>    //INSIDE  FULL BAR MOVING
>    
>    else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==true) {
>       ctm.fillStyle = "black";
> 	  ctm.fillRect(keylength+1,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), Mwidth,keyHeight);
> 	  for(var q=0;q<midiEv;q++){ 
>         if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> 		  //rightSide[q]=scrollBarPos-FRONTOFFSET[q];	
> 		  rightSide=scrollBarPos-FRONTOFFSET[q];
>           leftSide=rightSide-barLength[q];
> 	      ctm.fillStyle = "white";
> 		  console.log("INSIDE FULL BAR MOVING  Leftside "+leftSide+" =Rightside  "+rightSide+" - Barlength "+barLength[q]);
> 	      ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide,keyHeight-2);
> 	    }
>       } 
>    }
>    nbrOfEv--; 
>  }
> }

This problem seems old like real oldschool.

https://www.youtube.com/watch?v=mnTX2p22CWs

I don't think i ever solved it.

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


#37297

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 18:28 -0700
Message-ID<eb397018-f901-432a-bb1b-ba72ccc31b41@googlegroups.com>
In reply to#37295
Den torsdag 19 september 2019 kl. 03:15:02 UTC+2 skrev Jonas Thörnvall:
> You probably need a midiinterface.
> https://midisequenser.000webhostapp.com/
> 
> 1. Check RT NOTE RENDER
> 2. Press "REC"
> 3. USE VIRTUAL PIANO / OR MIDI PIANO "PRESS NOTE"
> 4. "RELEASE NOTE" watch what happen
> 5. Read the values of canvas rectangles in console log
> 
> 
> This logic escape me.
> 
> Now i blank out full key after each render which of course not right, but beyond point about what goes wrong. In console log i can clearly see that rightSide and leftSide keep paste "move parallell" that is not howerver what is going on at the screen. A hint please....
> 
> 
> var midiEv=0;
> var rightSide=[];
> var FRONTOFFSET=[];
> var barLength=[];
> var keyreleased=[]; 
> leftSide=50;
> for (var p=0;p<3000;p++) {rightSide[p]=0;FRONTOFFSET[p]=0;keyreleased[p]=false;}
> 
> function pianoSCROLL(){
> nbrOfEv = track[rectrack].midiMess.length;
>  while (nbrOfEv>0){
>     midiEv=nbrOfEv-1;
>    //INSIDE WHEN KEY PRESSED
>    if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
>       console.log("Pressed Key");
>       ctm.fillStyle = "magenta";
>       ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight-2);
>       //When ***A NEW*** key pressed a startpoint relative the scrollbar created ***FRONTOFFSET***
>       if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
>       rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
> 	  barLength[midiEv]=rightSide[midiEv]-leftSide;
> 	  console.log("INSIDE HOLDKEY Barlength "+barLength[midiEv]+" =right  "+rightSide[midiEv]+" - left "+leftSide);
>    } 
>    //INSIDE KEY RELEADED
>    else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
>      for(var q=0;q<midiEv;q++){ 
>        if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> 	     console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
> 	     ctm.fillStyle = "red";
> 	     ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[q],keyHeight-2);
> 	     keyreleased[q]=true;
> 	     
> 	  }
> 	  
> 	  console.log("INSIDE RELEASE Barlength "+barLength[q]+" =right  "+rightSide[q]+" - left "+leftSide);
>       keyreleased[midiEv]=true;
>     }
>    } 
>    //INSIDE  FULL BAR MOVING
>    
>    else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==true) {
>       ctm.fillStyle = "black";
> 	  ctm.fillRect(keylength+1,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), Mwidth,keyHeight);
> 	  for(var q=0;q<midiEv;q++){ 
>         if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> 		  //rightSide[q]=scrollBarPos-FRONTOFFSET[q];	
> 		  rightSide=scrollBarPos-FRONTOFFSET[q];
>           leftSide=rightSide-barLength[q];
> 	      ctm.fillStyle = "white";
> 		  console.log("INSIDE FULL BAR MOVING  Leftside "+leftSide+" =Rightside  "+rightSide+" - Barlength "+barLength[q]);
> 	      ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide,keyHeight-2);
> 	    }
>       } 
>    }
>    nbrOfEv--; 
>  }
> }

This is a problem that seem out of reach for me because i can't see and can't uderstand what actually goes wrong. Is it bad logic or something weird going on under the hood?

But maybe it is within reach for some other, or maybe even obvious. Yeah i do those kind of errors. If so a hint would be nice, because that wavefront when key released totally elusive to me.

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


#37298

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 18:36 -0700
Message-ID<3fae1b71-a7a2-48b7-86af-f47b6ca1215c@googlegroups.com>
In reply to#37297
Den torsdag 19 september 2019 kl. 03:29:03 UTC+2 skrev Jonas Thörnvall:
> Den torsdag 19 september 2019 kl. 03:15:02 UTC+2 skrev Jonas Thörnvall:
> > You probably need a midiinterface.
> > https://midisequenser.000webhostapp.com/
> > 
> > 1. Check RT NOTE RENDER
> > 2. Press "REC"
> > 3. USE VIRTUAL PIANO / OR MIDI PIANO "PRESS NOTE"
> > 4. "RELEASE NOTE" watch what happen
> > 5. Read the values of canvas rectangles in console log
> > 
> > 
> > This logic escape me.
> > 
> > Now i blank out full key after each render which of course not right, but beyond point about what goes wrong. In console log i can clearly see that rightSide and leftSide keep paste "move parallell" that is not howerver what is going on at the screen. A hint please....
> > 
> > 
> > var midiEv=0;
> > var rightSide=[];
> > var FRONTOFFSET=[];
> > var barLength=[];
> > var keyreleased=[]; 
> > leftSide=50;
> > for (var p=0;p<3000;p++) {rightSide[p]=0;FRONTOFFSET[p]=0;keyreleased[p]=false;}
> > 
> > function pianoSCROLL(){
> > nbrOfEv = track[rectrack].midiMess.length;
> >  while (nbrOfEv>0){
> >     midiEv=nbrOfEv-1;
> >    //INSIDE WHEN KEY PRESSED
> >    if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
> >       console.log("Pressed Key");
> >       ctm.fillStyle = "magenta";
> >       ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight-2);
> >       //When ***A NEW*** key pressed a startpoint relative the scrollbar created ***FRONTOFFSET***
> >       if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
> >       rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
> > 	  barLength[midiEv]=rightSide[midiEv]-leftSide;
> > 	  console.log("INSIDE HOLDKEY Barlength "+barLength[midiEv]+" =right  "+rightSide[midiEv]+" - left "+leftSide);
> >    } 
> >    //INSIDE KEY RELEADED
> >    else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
> >      for(var q=0;q<midiEv;q++){ 
> >        if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> > 	     console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
> > 	     ctm.fillStyle = "red";
> > 	     ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[q],keyHeight-2);
> > 	     keyreleased[q]=true;
> > 	     
> > 	  }
> > 	  
> > 	  console.log("INSIDE RELEASE Barlength "+barLength[q]+" =right  "+rightSide[q]+" - left "+leftSide);
> >       keyreleased[midiEv]=true;
> >     }
> >    } 
> >    //INSIDE  FULL BAR MOVING
> >    
> >    else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==true) {
> >       ctm.fillStyle = "black";
> > 	  ctm.fillRect(keylength+1,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), Mwidth,keyHeight);
> > 	  for(var q=0;q<midiEv;q++){ 
> >         if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> > 		  //rightSide[q]=scrollBarPos-FRONTOFFSET[q];	
> > 		  rightSide=scrollBarPos-FRONTOFFSET[q];
> >           leftSide=rightSide-barLength[q];
> > 	      ctm.fillStyle = "white";
> > 		  console.log("INSIDE FULL BAR MOVING  Leftside "+leftSide+" =Rightside  "+rightSide+" - Barlength "+barLength[q]);
> > 	      ctm.fillRect(leftSide,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide,keyHeight-2);
> > 	    }
> >       } 
> >    }
> >    nbrOfEv--; 
> >  }
> > }
> 
> This is a problem that seem out of reach for me because i can't see and can't uderstand what actually goes wrong. Is it bad logic or something weird going on under the hood?
> 
> But maybe it is within reach for some other, or maybe even obvious. Yeah i do those kind of errors. If so a hint would be nice, because that wavefront when key released totally elusive to me.

Any comment????????????????

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


#37299

From"Michael Haufe (TNO)" <tno@thenewobjective.com>
Date2019-09-18 19:38 -0700
Message-ID<6f85b662-9411-4230-98c4-2eaf5fc2ba97@googlegroups.com>
In reply to#37298
On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> [...]
> 
> Any comment????????????????

"""
Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
"""

http://wiki.c2.com/?WouldntStartFromHere

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


#37300

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 19:59 -0700
Message-ID<fd3c9b39-83f2-4860-9e63-8ca83dc732d1@googlegroups.com>
In reply to#37299
Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > [...]
> > 
> > Any comment????????????????
> 
> """
> Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> """
> 
> http://wiki.c2.com/?WouldntStartFromHere

Well i think i broke down the problem into suitable logical stepe, i am more curious how a constant length of a rectangle can differ on canvas?

Because that is the case or?
I have the "wavefront" rightside of rectangle, i have the constant length "was calculated when key released. Now the wavefront is moving and each time it moves, i calculate the leftside of rectangle. Basicly leftside X=rightdide X - constant Length.

Now that make me curious how length of rectangle for each iteration of drawing on canvas can differ. I mean the calculation in console shows that the relation is fixed or?

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


#37301

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 20:11 -0700
Message-ID<fd5f01ea-a455-44cc-9fd0-3a8d77aed698@googlegroups.com>
In reply to#37299
Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > [...]
> > 
> > Any comment????????????????
> 
> """
> Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> """
> 
> http://wiki.c2.com/?WouldntStartFromHere

That was a very vague hint Michael.

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


#37302

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 20:42 -0700
Message-ID<e575d528-be7a-46db-adce-117365b072f8@googlegroups.com>
In reply to#37299
Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > [...]
> > 
> > Any comment????????????????
> 
> """
> Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> """
> 
> http://wiki.c2.com/?WouldntStartFromHere

Or are you saying the whole approach is wrong?

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


#37303

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 21:00 -0700
Message-ID<95392c1e-40d1-49d7-9f38-3b38024cfdb2@googlegroups.com>
In reply to#37299
Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > [...]
> > 
> > Any comment????????????????
> 
> """
> Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> """
> 
> http://wiki.c2.com/?WouldntStartFromHere

The idea behind the logic seem sound to me. Get scrollbar position get NOTE ON offset "distance" relative scrollbar, get NOTE OFF distance relative NOTE OFF "rectangle length"

Iterate and calculate NOTE ON and NOTE OFF relative the moving scrollbar again and again...

And the console log seems to indicate that the logic is correct?
"THAT IS HOWEVER NOT WHAT IS GOING ON AT THE SCREEN??????"

So where does the flaw reside?

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


#37304

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-18 21:02 -0700
Message-ID<61344e74-c5a6-4856-8c25-3a0fe910f5c1@googlegroups.com>
In reply to#37303
Den torsdag 19 september 2019 kl. 06:00:45 UTC+2 skrev Jonas Thörnvall:
> Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> > On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > > [...]
> > > 
> > > Any comment????????????????
> > 
> > """
> > Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> > Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> > """
> > 
> > http://wiki.c2.com/?WouldntStartFromHere
> 
> The idea behind the logic seem sound to me. Get scrollbar position get NOTE ON offset "distance" relative scrollbar, get NOTE OFF distance relative NOTE OFF "rectangle length"
> 
> Iterate and calculate NOTE ON and NOTE OFF relative the moving scrollbar again and again...
> 
> And the console log seems to indicate that the logic is correct?
> "THAT IS HOWEVER NOT WHAT IS GOING ON AT THE SCREEN??????"
> 
> So where does the flaw reside?

Ooops "distance relative NOTE ON"

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


#37305

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-19 08:18 -0700
Message-ID<e8a307f6-4a90-4870-9856-3892e69efceb@googlegroups.com>
In reply to#37304
Den torsdag 19 september 2019 kl. 06:02:11 UTC+2 skrev Jonas Thörnvall:
> Den torsdag 19 september 2019 kl. 06:00:45 UTC+2 skrev Jonas Thörnvall:
> > Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> > > On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > > > [...]
> > > > 
> > > > Any comment????????????????
> > > 
> > > """
> > > Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> > > Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> > > """
> > > 
> > > http://wiki.c2.com/?WouldntStartFromHere
> > 
> > The idea behind the logic seem sound to me. Get scrollbar position get NOTE ON offset "distance" relative scrollbar, get NOTE OFF distance relative NOTE OFF "rectangle length"
> > 
> > Iterate and calculate NOTE ON and NOTE OFF relative the moving scrollbar again and again...
> > 
> > And the console log seems to indicate that the logic is correct?
> > "THAT IS HOWEVER NOT WHAT IS GOING ON AT THE SCREEN??????"
> > 
> > So where does the flaw reside?
> 
> Ooops "distance relative NOTE ON"

I think i did throw this out before with out result. Maybe i simply move the keys that released into a new array. So new keypresses do not interfere, well that is my idea for now. Because when they are in that array new keypresses can't affect the ones in the saved and they only have a relation to scrollbar "and canvas end, i think that is it".

But then again how realtime rendering do effect the recording latency is a real problem, but you do not have to use it, since it starts unchecked.

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


#37306

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-19 08:19 -0700
Message-ID<eb778827-b283-4615-a4ae-d01064d3d424@googlegroups.com>
In reply to#37305
Den torsdag 19 september 2019 kl. 17:18:55 UTC+2 skrev Jonas Thörnvall:
> Den torsdag 19 september 2019 kl. 06:02:11 UTC+2 skrev Jonas Thörnvall:
> > Den torsdag 19 september 2019 kl. 06:00:45 UTC+2 skrev Jonas Thörnvall:
> > > Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> > > > On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > > > > [...]
> > > > > 
> > > > > Any comment????????????????
> > > > 
> > > > """
> > > > Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> > > > Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> > > > """
> > > > 
> > > > http://wiki.c2.com/?WouldntStartFromHere
> > > 
> > > The idea behind the logic seem sound to me. Get scrollbar position get NOTE ON offset "distance" relative scrollbar, get NOTE OFF distance relative NOTE OFF "rectangle length"
> > > 
> > > Iterate and calculate NOTE ON and NOTE OFF relative the moving scrollbar again and again...
> > > 
> > > And the console log seems to indicate that the logic is correct?
> > > "THAT IS HOWEVER NOT WHAT IS GOING ON AT THE SCREEN??????"
> > > 
> > > So where does the flaw reside?
> > 
> > Ooops "distance relative NOTE ON"
> 
> I think i did throw this out before with out result. Maybe i simply move the keys that released into a new array. So new keypresses do not interfere, well that is my idea for now. Because when they are in that array new keypresses can't affect the ones in the saved and they only have a relation to scrollbar "and canvas end, i think that is it".
> 
> But then again how realtime rendering do effect the recording latency is a real problem, but you do not have to use it, since it starts unchecked.

A good rule if you can't solve the problem sidestep them.

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


#37308

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-19 08:23 -0700
Message-ID<0c72bb0f-e6a2-4abe-b7c4-b2206b11cfa3@googlegroups.com>
In reply to#37306
Den torsdag 19 september 2019 kl. 17:19:34 UTC+2 skrev Jonas Thörnvall:
> Den torsdag 19 september 2019 kl. 17:18:55 UTC+2 skrev Jonas Thörnvall:
> > Den torsdag 19 september 2019 kl. 06:02:11 UTC+2 skrev Jonas Thörnvall:
> > > Den torsdag 19 september 2019 kl. 06:00:45 UTC+2 skrev Jonas Thörnvall:
> > > > Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> > > > > On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > > > > > [...]
> > > > > > 
> > > > > > Any comment????????????????
> > > > > 
> > > > > """
> > > > > Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> > > > > Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> > > > > """
> > > > > 
> > > > > http://wiki.c2.com/?WouldntStartFromHere
> > > > 
> > > > The idea behind the logic seem sound to me. Get scrollbar position get NOTE ON offset "distance" relative scrollbar, get NOTE OFF distance relative NOTE OFF "rectangle length"
> > > > 
> > > > Iterate and calculate NOTE ON and NOTE OFF relative the moving scrollbar again and again...
> > > > 
> > > > And the console log seems to indicate that the logic is correct?
> > > > "THAT IS HOWEVER NOT WHAT IS GOING ON AT THE SCREEN??????"
> > > > 
> > > > So where does the flaw reside?
> > > 
> > > Ooops "distance relative NOTE ON"
> > 
> > I think i did throw this out before with out result. Maybe i simply move the keys that released into a new array. So new keypresses do not interfere, well that is my idea for now. Because when they are in that array new keypresses can't affect the ones in the saved and they only have a relation to scrollbar "and canvas end, i think that is it".
> > 
> > But then again how realtime rendering do effect the recording latency is a real problem, but you do not have to use it, since it starts unchecked.
> 
> A good rule if you can't solve the problem sidestep them.
Baslcly i get a new array with start end values "a length" that only have a relation to the scrollbar. If that doesn't solve it, it must be something inherently wrong with the language.

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


#37310

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-20 14:38 -0700
Message-ID<e478f1a0-5df5-483d-b2b7-e65939ba72b0@googlegroups.com>
In reply to#37308
Den torsdag 19 september 2019 kl. 17:23:32 UTC+2 skrev Jonas Thörnvall:
> Den torsdag 19 september 2019 kl. 17:19:34 UTC+2 skrev Jonas Thörnvall:
> > Den torsdag 19 september 2019 kl. 17:18:55 UTC+2 skrev Jonas Thörnvall:
> > > Den torsdag 19 september 2019 kl. 06:02:11 UTC+2 skrev Jonas Thörnvall:
> > > > Den torsdag 19 september 2019 kl. 06:00:45 UTC+2 skrev Jonas Thörnvall:
> > > > > Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> > > > > > On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > > > > > > [...]
> > > > > > > 
> > > > > > > Any comment????????????????
> > > > > > 
> > > > > > """
> > > > > > Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> > > > > > Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> > > > > > """
> > > > > > 
> > > > > > http://wiki.c2.com/?WouldntStartFromHere
> > > > > 
> > > > > The idea behind the logic seem sound to me. Get scrollbar position get NOTE ON offset "distance" relative scrollbar, get NOTE OFF distance relative NOTE OFF "rectangle length"
> > > > > 
> > > > > Iterate and calculate NOTE ON and NOTE OFF relative the moving scrollbar again and again...
> > > > > 
> > > > > And the console log seems to indicate that the logic is correct?
> > > > > "THAT IS HOWEVER NOT WHAT IS GOING ON AT THE SCREEN??????"
> > > > > 
> > > > > So where does the flaw reside?
> > > > 
> > > > Ooops "distance relative NOTE ON"
> > > 
> > > I think i did throw this out before with out result. Maybe i simply move the keys that released into a new array. So new keypresses do not interfere, well that is my idea for now. Because when they are in that array new keypresses can't affect the ones in the saved and they only have a relation to scrollbar "and canvas end, i think that is it".
> > > 
> > > But then again how realtime rendering do effect the recording latency is a real problem, but you do not have to use it, since it starts unchecked.
> > 
> > A good rule if you can't solve the problem sidestep them.
> Baslcly i get a new array with start end values "a length" that only have a relation to the scrollbar. If that doesn't solve it, it must be something inherently wrong with the language.

Nah there is definitly a bug in javascript, probably same in other languages because i remember the quirk.

This is how far i got, i could added the limits for only paint the bar within canvas timeslot, but since it not working there is no point to it.

I think this is basicly the code i started with a year back or so, back at square one.

var midiEv=0;
var rightSide=[];
var FRONTOFFSET=[];
var barLength=[];
var keyreleased=[]; 

for (var p=0;p<3000;p++) {rightSide[p]=0;FRONTOFFSET[p]=0;keyreleased[p]=false;}

function pianoSCROLL(){
nbrOfEV = track[rectrack].midiMess.length;
var x=0;
 while (x<nbrOfEV){
   midiEv=x;
   //INSIDE KEY PRESSED
   if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
      console.log("Pressed Key");
      ctm.fillStyle = "magenta";
	  ctm.fillRect(50,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight);
	  //When ***A NEW*** key pressed a startvoint relative the scrollbar created ***FRONTOFFSET***
      if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
	  rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
	  barLength[midiEv]=rightSide[midiEv]-50;      
   } 
   //INSIDE KEY RELEASED
   else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
     for(var q=0;q<midiEv;q++){ 
       if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
	     console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
	     ctm.fillStyle = "#000a4d";
	     ctm.fillRect(50,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)),rightSide[q],keyHeight);
		 keyreleased[q]=true;
	   }
	 keyreleased[midiEv]=true;
    }
   } 
   //INSIDE MOVE BAR
   else if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==true){
	  z=midiEv+1;
      while(z<nbrOfEV){
		//console.log("z= "+z+" midiEv= "+midiEv+" Avar "+ track[rectrack].midiMess[z].data1+" Bvar "+track[rectrack].midiMess[midiEv].data1);	  
      	if(track[rectrack].midiMess[z].data1==track[rectrack].midiMess[midiEv].data1){
	    ctm.fillStyle = "#000a4d";
		ctm.fillRect(scrollBarPos-FRONTOFFSET[midiEv]-barLength[midiEv]-6,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)),scrollBarPos-FRONTOFFSET[midiEv]+6 ,keyHeight+1);
	 	ctm.fillStyle = "white";
	    ctm.fillRect(scrollBarPos-FRONTOFFSET[midiEv]-barLength[midiEv],(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), scrollBarPos-FRONTOFFSET[midiEv],keyHeight);
        }
	   z++;
     }
   } 
  x++;
 }
}

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


#37311

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-21 02:14 -0700
Message-ID<37a7a72b-48a3-49b1-a173-b4a7b648831a@googlegroups.com>
In reply to#37310
Den fredag 20 september 2019 kl. 23:38:36 UTC+2 skrev Jonas Thörnvall:
> Den torsdag 19 september 2019 kl. 17:23:32 UTC+2 skrev Jonas Thörnvall:
> > Den torsdag 19 september 2019 kl. 17:19:34 UTC+2 skrev Jonas Thörnvall:
> > > Den torsdag 19 september 2019 kl. 17:18:55 UTC+2 skrev Jonas Thörnvall:
> > > > Den torsdag 19 september 2019 kl. 06:02:11 UTC+2 skrev Jonas Thörnvall:
> > > > > Den torsdag 19 september 2019 kl. 06:00:45 UTC+2 skrev Jonas Thörnvall:
> > > > > > Den torsdag 19 september 2019 kl. 04:38:38 UTC+2 skrev Michael Haufe (TNO):
> > > > > > > On Wednesday, September 18, 2019 at 8:36:22 PM UTC-5, Jonas Thörnvall wrote:
> > > > > > > > [...]
> > > > > > > > 
> > > > > > > > Any comment????????????????
> > > > > > > 
> > > > > > > """
> > > > > > > Visitor to a village stops a local and asks, "How do I get to Aberdeen from here?"
> > > > > > > Local answers, "Och, if I were going to Aberdeen, I wouldn't start from here!"
> > > > > > > """
> > > > > > > 
> > > > > > > http://wiki.c2.com/?WouldntStartFromHere
> > > > > > 
> > > > > > The idea behind the logic seem sound to me. Get scrollbar position get NOTE ON offset "distance" relative scrollbar, get NOTE OFF distance relative NOTE OFF "rectangle length"
> > > > > > 
> > > > > > Iterate and calculate NOTE ON and NOTE OFF relative the moving scrollbar again and again...
> > > > > > 
> > > > > > And the console log seems to indicate that the logic is correct?
> > > > > > "THAT IS HOWEVER NOT WHAT IS GOING ON AT THE SCREEN??????"
> > > > > > 
> > > > > > So where does the flaw reside?
> > > > > 
> > > > > Ooops "distance relative NOTE ON"
> > > > 
> > > > I think i did throw this out before with out result. Maybe i simply move the keys that released into a new array. So new keypresses do not interfere, well that is my idea for now. Because when they are in that array new keypresses can't affect the ones in the saved and they only have a relation to scrollbar "and canvas end, i think that is it".
> > > > 
> > > > But then again how realtime rendering do effect the recording latency is a real problem, but you do not have to use it, since it starts unchecked.
> > > 
> > > A good rule if you can't solve the problem sidestep them.
> > Baslcly i get a new array with start end values "a length" that only have a relation to the scrollbar. If that doesn't solve it, it must be something inherently wrong with the language.
> 
> Nah there is definitly a bug in javascript, probably same in other languages because i remember the quirk.
> 
> This is how far i got, i could added the limits for only paint the bar within canvas timeslot, but since it not working there is no point to it.
> 
> I think this is basicly the code i started with a year back or so, back at square one.
> 
> var midiEv=0;
> var rightSide=[];
> var FRONTOFFSET=[];
> var barLength=[];
> var keyreleased=[]; 
> 
> for (var p=0;p<3000;p++) {rightSide[p]=0;FRONTOFFSET[p]=0;keyreleased[p]=false;}
> 
> function pianoSCROLL(){
> nbrOfEV = track[rectrack].midiMess.length;
> var x=0;
>  while (x<nbrOfEV){
>    midiEv=x;
>    //INSIDE KEY PRESSED
>    if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
>       console.log("Pressed Key");
>       ctm.fillStyle = "magenta";
> 	  ctm.fillRect(50,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight);
> 	  //When ***A NEW*** key pressed a startvoint relative the scrollbar created ***FRONTOFFSET***
>       if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
> 	  rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
> 	  barLength[midiEv]=rightSide[midiEv]-50;      
>    } 
>    //INSIDE KEY RELEASED
>    else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
>      for(var q=0;q<midiEv;q++){ 
>        if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
> 	     console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
> 	     ctm.fillStyle = "#000a4d";
> 	     ctm.fillRect(50,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)),rightSide[q],keyHeight);
> 		 keyreleased[q]=true;
> 	   }
> 	 keyreleased[midiEv]=true;
>     }
>    } 
>    //INSIDE MOVE BAR
>    else if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==true){
> 	  z=midiEv+1;
>       while(z<nbrOfEV){
> 		//console.log("z= "+z+" midiEv= "+midiEv+" Avar "+ track[rectrack].midiMess[z].data1+" Bvar "+track[rectrack].midiMess[midiEv].data1);	  
>       	if(track[rectrack].midiMess[z].data1==track[rectrack].midiMess[midiEv].data1){
> 	    ctm.fillStyle = "#000a4d";
> 		ctm.fillRect(scrollBarPos-FRONTOFFSET[midiEv]-barLength[midiEv]-6,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)),scrollBarPos-FRONTOFFSET[midiEv]+6 ,keyHeight+1);
> 	 	ctm.fillStyle = "white";
> 	    ctm.fillRect(scrollBarPos-FRONTOFFSET[midiEv]-barLength[midiEv],(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), scrollBarPos-FRONTOFFSET[midiEv],keyHeight);
>         }
> 	   z++;
>      }
>    } 
>   x++;
>  }
> }

It seems like the rectangle first x argument somehow get added to the x argument right, at some basice level. It is strange how it hang together because if you try to subtract the length to the second rectangle right x argument. It will affect the first x argument of rectangle and it will not move and stay still. 

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


#37312

FromJohn G Harris <niam@jghnorth.org.uk.invalid>
Date2019-09-21 10:35 +0100
Message-ID<6nrboed16kqcvkvefiuknrdfsebthd0puo@4ax.com>
In reply to#37310
On Fri, 20 Sep 2019 14:38:30 -0700 (PDT), Jonas Thörnvall
<jonas.thornvall@gmail.com> wrote:

  <snip>
>Nah there is definitly a bug in javascript, probably same in other languages because i remember the quirk.
  <snip>

Please tell us what the problem is. Avoid talking about MIDI as most
of us know nothing about MIDI access.

  John

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


#37314

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-21 05:17 -0700
Message-ID<806e9233-216d-4012-9a60-db4c93e45134@googlegroups.com>
In reply to#37312
Den lördag 21 september 2019 kl. 11:35:59 UTC+2 skrev John G Harris:
> On Fri, 20 Sep 2019 14:38:30 -0700 (PDT), Jonas Thörnvall
> <jonas.thornvall@gmail.com> wrote:
> 
>   <snip>
> >Nah there is definitly a bug in javascript, probably same in other languages because i remember the quirk.
>   <snip>
> 
> Please tell us what the problem is. Avoid talking about MIDI as most
> of us know nothing about MIDI access.
> 
>   John

Well there is really no midi to the problem but i am not sure the script start without a midi device.

1.So scrollbarPos is just a moving target using the **clock** "main reference point".
2. FRONTOFFSET when you press a key it has a distance to scrollbar "the front".
3. When you release **same key** that is also a distance vs scroolbar thus you get a notelength "barLength" for note.

As you can see they are save in arrays.
So....

The cases starting with.
Pressed/Note On | Released/Note Off
      *
      *                   *

But we have to keep track if the note released, because if not the backend still stuck to the painted keyboard "bar expanding with stuck backend" Ok?

Or same note could have been released, so we must have a boolean for each pair that is released right. keyReleased[midiEv]

Then at each clocking "depending on FPS" the function called.
The problem is that internally in "some assembler code" or "machine code" something goes wrong, this is not just Javascript because i remember same problem from probably turbo pascal, some 30 years ago.

So it is some reference close to hardware that goes wrong "or my logic".
What basicly happen is that the wavefront of released note "rightside rectangle", moving twice the speed of backend "leftside rectangle". And if you try compensate by subtract also the backend, from the front "half speed", it affacts the leftside x of rectangle the first argument. So the backend to not move at all.

The values are linked at some fundamental level, but if you write out in console before write the rectangle the values come out correct.

That is it.


      *                 
      *

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


#37315

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-21 05:29 -0700
Message-ID<53958aed-d2d4-41f7-b238-1c91dbe7959f@googlegroups.com>
In reply to#37314
Den lördag 21 september 2019 kl. 14:17:14 UTC+2 skrev Jonas Thörnvall:
> Den lördag 21 september 2019 kl. 11:35:59 UTC+2 skrev John G Harris:
> > On Fri, 20 Sep 2019 14:38:30 -0700 (PDT), Jonas Thörnvall
> > <jonas.thornvall@gmail.com> wrote:
> > 
> >   <snip>
> > >Nah there is definitly a bug in javascript, probably same in other languages because i remember the quirk.
> >   <snip>
> > 
> > Please tell us what the problem is. Avoid talking about MIDI as most
> > of us know nothing about MIDI access.
> > 
> >   John
> 
> Well there is really no midi to the problem but i am not sure the script start without a midi device.
> 
> 1.So scrollbarPos is just a moving target using the **clock** "main reference point".
> 2. FRONTOFFSET when you press a key it has a distance to scrollbar "the front".
> 3. When you release **same key** that is also a distance vs scroolbar thus you get a notelength "barLength" for note.
> 
> As you can see they are save in arrays.
> So....
> 
> The cases starting with.
> Pressed/Note On | Released/Note Off
>       *
>       *                   *
> 
> But we have to keep track if the note released, because if not the backend still stuck to the painted keyboard "bar expanding with stuck backend" Ok?
> 
> Or same note could have been released, so we must have a boolean for each pair that is released right. keyReleased[midiEv]
> 
> Then at each clocking "depending on FPS" the function called.
> The problem is that internally in "some assembler code" or "machine code" something goes wrong, this is not just Javascript because i remember same problem from probably turbo pascal, some 30 years ago.
> 
> So it is some reference close to hardware that goes wrong "or my logic".
> What basicly happen is that the wavefront of released note "rightside rectangle", moving twice the speed of backend "leftside rectangle". And if you try compensate by subtract also the backend, from the front "half speed", it affacts the leftside x of rectangle the first argument. So the backend to not move at all.
> 
> The values are linked at some fundamental level, but if you write out in console before write the rectangle the values come out correct.
> 
> That is it.
> 
> 
>       *                 
>       *

If you just want to try you probably do not need a midi interface cable, you could install a virtual midicable i use Tobias Erichsens loopMIDI, and then you use the virual keyboard.

You have to check RT render note, and press record. Press note on and release and watch what happens.

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


#37324

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-22 04:52 -0700
Message-ID<bc761f80-bd32-42ac-8bc5-dd2fd86b3526@googlegroups.com>
In reply to#37315
Den lördag 21 september 2019 kl. 14:29:28 UTC+2 skrev Jonas Thörnvall:
> Den lördag 21 september 2019 kl. 14:17:14 UTC+2 skrev Jonas Thörnvall:
> > Den lördag 21 september 2019 kl. 11:35:59 UTC+2 skrev John G Harris:
> > > On Fri, 20 Sep 2019 14:38:30 -0700 (PDT), Jonas Thörnvall
> > > <jonas.thornvall@gmail.com> wrote:
> > > 
> > >   <snip>
> > > >Nah there is definitly a bug in javascript, probably same in other languages because i remember the quirk.
> > >   <snip>
> > > 
> > > Please tell us what the problem is. Avoid talking about MIDI as most
> > > of us know nothing about MIDI access.
> > > 
> > >   John
> > 
> > Well there is really no midi to the problem but i am not sure the script start without a midi device.
> > 
> > 1.So scrollbarPos is just a moving target using the **clock** "main reference point".
> > 2. FRONTOFFSET when you press a key it has a distance to scrollbar "the front".
> > 3. When you release **same key** that is also a distance vs scroolbar thus you get a notelength "barLength" for note.
> > 
> > As you can see they are save in arrays.
> > So....
> > 
> > The cases starting with.
> > Pressed/Note On | Released/Note Off
> >       *
> >       *                   *
> > 
> > But we have to keep track if the note released, because if not the backend still stuck to the painted keyboard "bar expanding with stuck backend" Ok?
> > 
> > Or same note could have been released, so we must have a boolean for each pair that is released right. keyReleased[midiEv]
> > 
> > Then at each clocking "depending on FPS" the function called.
> > The problem is that internally in "some assembler code" or "machine code" something goes wrong, this is not just Javascript because i remember same problem from probably turbo pascal, some 30 years ago.
> > 
> > So it is some reference close to hardware that goes wrong "or my logic".
> > What basicly happen is that the wavefront of released note "rightside rectangle", moving twice the speed of backend "leftside rectangle". And if you try compensate by subtract also the backend, from the front "half speed", it affacts the leftside x of rectangle the first argument. So the backend to not move at all.
> > 
> > The values are linked at some fundamental level, but if you write out in console before write the rectangle the values come out correct.
> > 
> > That is it.
> > 
> > 
> >       *                 
> >       *
> 
> If you just want to try you probably do not need a midi interface cable, you could install a virtual midicable i use Tobias Erichsens loopMIDI, and then you use the virual keyboard.
> 
> You have to check RT render note, and press record. Press note on and release and watch what happens.

Well i added a break statement to the while z look, so if same keys pressed twice it do not step on to next keyrelease event 

But that is not the problem because the fault is there with just a single press and release of note, when only 2 events recorded.

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


#37334

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2019-09-22 12:32 -0700
Message-ID<92d2618e-f44e-41ac-a086-3a3ccdb315f5@googlegroups.com>
In reply to#37324
Den söndag 22 september 2019 kl. 13:52:44 UTC+2 skrev Jonas Thörnvall:
> Den lördag 21 september 2019 kl. 14:29:28 UTC+2 skrev Jonas Thörnvall:
> > Den lördag 21 september 2019 kl. 14:17:14 UTC+2 skrev Jonas Thörnvall:
> > > Den lördag 21 september 2019 kl. 11:35:59 UTC+2 skrev John G Harris:
> > > > On Fri, 20 Sep 2019 14:38:30 -0700 (PDT), Jonas Thörnvall
> > > > <jonas.thornvall@gmail.com> wrote:
> > > > 
> > > >   <snip>
> > > > >Nah there is definitly a bug in javascript, probably same in other languages because i remember the quirk.
> > > >   <snip>
> > > > 
> > > > Please tell us what the problem is. Avoid talking about MIDI as most
> > > > of us know nothing about MIDI access.
> > > > 
> > > >   John
> > > 
> > > Well there is really no midi to the problem but i am not sure the script start without a midi device.
> > > 
> > > 1.So scrollbarPos is just a moving target using the **clock** "main reference point".
> > > 2. FRONTOFFSET when you press a key it has a distance to scrollbar "the front".
> > > 3. When you release **same key** that is also a distance vs scroolbar thus you get a notelength "barLength" for note.
> > > 
> > > As you can see they are save in arrays.
> > > So....
> > > 
> > > The cases starting with.
> > > Pressed/Note On | Released/Note Off
> > >       *
> > >       *                   *
> > > 
> > > But we have to keep track if the note released, because if not the backend still stuck to the painted keyboard "bar expanding with stuck backend" Ok?
> > > 
> > > Or same note could have been released, so we must have a boolean for each pair that is released right. keyReleased[midiEv]
> > > 
> > > Then at each clocking "depending on FPS" the function called.
> > > The problem is that internally in "some assembler code" or "machine code" something goes wrong, this is not just Javascript because i remember same problem from probably turbo pascal, some 30 years ago.
> > > 
> > > So it is some reference close to hardware that goes wrong "or my logic".
> > > What basicly happen is that the wavefront of released note "rightside rectangle", moving twice the speed of backend "leftside rectangle". And if you try compensate by subtract also the backend, from the front "half speed", it affacts the leftside x of rectangle the first argument. So the backend to not move at all.
> > > 
> > > The values are linked at some fundamental level, but if you write out in console before write the rectangle the values come out correct.
> > > 
> > > That is it.
> > > 
> > > 
> > >       *                 
> > >       *
> > 
> > If you just want to try you probably do not need a midi interface cable, you could install a virtual midicable i use Tobias Erichsens loopMIDI, and then you use the virual keyboard.
> > 
> > You have to check RT render note, and press record. Press note on and release and watch what happens.
> 
> Well i added a break statement to the while z look, so if same keys pressed twice it do not step on to next keyrelease event 
> 
> But that is not the problem because the fault is there with just a single press and release of note, when only 2 events recorded.

Well this is the fastest variant i can do, anyone can to the looping and condition faster?
But the reference bug in canvas still there.

	var midiEv=0;
	var rightSide=[];
	var FRONTOFFSET=[];
	var barLength=[];
	var keyreleased=[]; 
    
	function initPianoScroll(){
	for (var p=0;p<20000;p++) {rightSide[p]=0;FRONTOFFSET[p]=0;keyreleased[p]=false;}
	}

	function pianoSCROLL(){
	nbrOfEV = track[rectrack].midiMess.length;
	var x=0;
	 while (x<nbrOfEV){
	   midiEv=x;
	   //INSIDE KEY PRESSED
	   if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==false){
		  console.log("Pressed Key");
		  ctm.fillStyle = "magenta";
		  ctm.fillRect(50,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), rightSide[midiEv],keyHeight);
		  //When ***A NEW*** key pressed a startvoint relative the scrollbar created ***FRONTOFFSET***
		  if(FRONTOFFSET[midiEv]==0) {FRONTOFFSET[midiEv]=scrollBarPos;}
		  rightSide[midiEv]=scrollBarPos-FRONTOFFSET[midiEv];
		  barLength[midiEv]=rightSide[midiEv]-50;      
	   } 
	   //INSIDE KEY RELEASED
	   
	   else if(track[rectrack].midiMess[midiEv].data0==NOTE_OFF && keyreleased[midiEv]==false){
		keyreleased[midiEv]=true;	
		for (var q=midiEv-1;q>=0;q--){
			
			if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
			 console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
			 ctm.fillStyle = "#000a4d";
			 ctm.fillRect(50,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)),rightSide[q],keyHeight);
			 keyreleased[q]=true;
		    break;
    		}
		}
        /*
		for(var q=0;q<midiEv;q++){ 
		  if(track[rectrack].midiMess[q].data1==track[rectrack].midiMess[midiEv].data1) { 
			 console.log("midiEV data1"+track[rectrack].midiMess[midiEv].data1);
			 ctm.fillStyle = "#000a4d";
			 ctm.fillRect(50,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)),rightSide[q],keyHeight);
			 keyreleased[q]=true;
		  }
		  keyreleased[midiEv]=true;
		}
	   */
	   } 
	   //INSIDE MOVE BAR
	   else if(track[rectrack].midiMess[midiEv].data0==NOTE_ON && keyreleased[midiEv]==true){
		  z=midiEv+1;
		  while(z<nbrOfEV){
			//console.log("z= "+z+" midiEv= "+midiEv+" Avar "+ track[rectrack].midiMess[z].data1+" Bvar "+track[rectrack].midiMess[midiEv].data1);	  
			if(track[rectrack].midiMess[z].data1==track[rectrack].midiMess[midiEv].data1){
			ctm.fillStyle = "#000a4d";
			ctm.fillRect(scrollBarPos-FRONTOFFSET[midiEv]-barLength[midiEv]-6,(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)),scrollBarPos-FRONTOFFSET[midiEv]+6 ,keyHeight+1);
			ctm.fillStyle = "white";
			ctm.fillRect(scrollBarPos-FRONTOFFSET[midiEv]-barLength[midiEv],(PistartX+keyHeight*88)-(keyHeight*(track[rectrack].midiMess[midiEv].data1-8)), scrollBarPos-FRONTOFFSET[midiEv],keyHeight);
			break;
			}
		   z++;
		 }
	   } 
	  x++;
	 }
	}

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


Page 1 of 2  [1] 2  Next page →

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


csiph-web