         }
       }
 
+      // Send midi control change all notes off because we might have scrolled off playing notes
+      usbMIDI.sendControlChange(0x7b, 0, channels[layer]);
+synth.allNotesOff(channels[layer]);
+
       // shift all notes and redraw columns
       for(uint8_t row_index=0; row_index < grid_width[visible_grid_set]; row_index++) 
       {
-        #if 0 //decided I don't like this
+#if 0 //decided I don't like this
         if (((temp + row_index) % 7) == 0) //todo this needs to actually point to the C's in a scale (%7 for the moment), scales can have different sizes but Middle C is always placed in the center of the note scale. 
         {
           line_horz(row_index, true);
           //todo need to adjust encoder value back a notch when at limit so that we can detect when it moves further at the end of travel by looking at the undivided by 4 value
         }
         else
-        #endif
+#endif
         {
           line_horz(row_index, false);
         }

                temp = MAX_SCALES - 1;  
              }
              scale_notes[layer] = temp;
              
              // flip the long note setting
              if (long_notes[layer] == 0)
              {

              {
                long_notes[layer] = 0;           
              }

              // Send midi control change all notes off for that channel because new scale might not contain any of the old notes that are currently playing
              usbMIDI.sendControlChange(0x7b, 0, channels[layer]);
              synth.allNotesOff(channels[layer]);

              force_first_note = true;

