internal static void ResetAllCtlrsStatic(iBassMidiOut bassout)
 {
     //* used by clsPlay or clsBASSOut
     //Debug.WriteLine("Reset All Controllers at " + DateTime.Now);  //tmp debugging
     //* don't send if recording (should only be at start)
     //if (P.F != null && P.F.FileStreamMM != null && P.F.FileStreamMM.indRec) return;
     if (bassout == null)
     {
         return;
     }
     for (byte ch = 0; ch < 16; ch++)
     {
         byte status = (byte)(0xb0 | ch);
         OutShortMsg(bassout, status, 0x79, 0);   //reset all controllers
         //* pan, vol (& others?) appear not to be reset with resetallcontrollers in sonar/cubase
         OutShortMsg(bassout, status, 0x0a, 64);  //pan centre
         OutShortMsg(bassout, status, 0x07, 100); //vol 100
         OutShortMsg(bassout, status, 0x40, 0);   //sustain off
         OutShortMsg(bassout, status, 101, 0);    //set pitchbend range MSB
         OutShortMsg(bassout, status, 100, 0);    //set pitchbend range LSB
         OutShortMsg(bassout, status, 6, 2);      //data entry MSB +-2 semitones
         OutShortMsg(bassout, status, 38, 0);     //data entry LSB 0
         OutShortMsg(bassout, status, 100, 127);  //reset RPN LSB
         OutShortMsg(bassout, status, 101, 127);  //reset RPN MSB
         OutShortMsg(bassout, status, 98, 127);   //reset NRPN LSB
         OutShortMsg(bassout, status, 99, 127);   //reset NRPN MSB
         OutShortMsg(bassout, status, 0x7b, 0);   //all notes off
     }
 }
 private static void OutShortMsg(iBassMidiOut bassout, byte status, byte msg, byte data)
 {
     if (bassout == null)
     {
         return;
     }
     bassout.SendShortMsg(status, msg, data);
 }
 internal static void AllNotesOffStatic(iBassMidiOut bassout)
 {
     if (bassout == null)
     {
         return;
     }
     for (byte ch = 0; ch < 16; ch++)
     {
         byte status = (byte)(0xb0 | ch);
         OutShortMsg(bassout, status, 0x7b, 0); //all notes off
         OutShortMsg(bassout, status, 0x40, 0); //sustain off
     }
 }
 internal clsWaitPlay(clsFileStream filestream, iBassMidiOut bassout, clsMute mute)
 {
     Resolution          = (int)P.frmStart.nudPlayResolution.Value;
     HalfResolution      = Resolution / 2;
     dStartPlay          = new delStartPlay(StartPlay);
     PlayThread          = new Thread(new ThreadStart(StartPlay));
     PlayThread.Priority = ThreadPriority.AboveNormal;
     PlayThread.Name     = "Play Thread";
     //Debug.WriteLine("clsWaitPlay: ThreadId = " + PlayThread.ManagedThreadId);
     FileStream   = filestream;
     BASSOut      = bassout;
     Mute         = mute;
     dUpdateTempo = new delegUpdateTempo(P.frmStart.UpdateLblTempo);
     ResetAllCtlrsTimer.AutoReset = false;
     ResetAllCtlrsTimer.Elapsed  += ResetAllCtlrsTimer_Elapsed;
 }