private void DebugBarScores(ref int hbindex, ref int beatindex, int bar)
        {
            clsChordInfo ci = ListCIArr[0][bar];

            Debug.Write("Bar " + new clsMTime.clsBBT(ci.Segment.SegQILo * P.F.TicksPerQI).Bar);
            if (ci.Score == null)
            {
                Debug.WriteLine(": ***No Notes***");
            }
            else
            {
                Debug.Write(": " + ci.ScoreToString() + " ( ");

                while (hbindex < ListCIArr[1].Count && ListCIArr[1][hbindex].Segment.SegQIHi <= ci.Segment.SegQIHi)
                {
                    Debug.Write(ListCIArr[1][hbindex++].ScoreToString() + " ");
                }
                Debug.Write(") [ ");

                while (beatindex < ListCIArr[2].Count && ListCIArr[2][beatindex].Segment.SegQIHi <= ci.Segment.SegQIHi)
                {
                    Debug.Write(ListCIArr[2][beatindex++].ScoreToString() + " ");
                }
                Debug.WriteLine("]");
            }
        }
 internal bool Equiv(clsChordInfo ci)
 {
     if (ci == null)
     {
         return(false);
     }
     if (ChNotes == null)
     {
         return(ci.ChNotes == null);
     }
     if (ci.ChNotes == null)
     {
         return(ChNotes == null);
     }
     return(ChordName == ci.ChordName && ChNotes.SequenceEqual(ci.ChNotes));
 }
 internal List <clsChordInfo> CIBeats; //beats
 internal clsHBSubBeat(clsChordInfo ci)
 {
     CIHalfBar = ci;
     CIBeats   = new List <clsChordInfo>(4);
 }
 internal clsBarSubHB(clsChordInfo ci)
 {
     CIBar      = ci;
     CIHalfBars = new List <clsHBSubBeat>(4);
 }