internal void CreateEvs() { //* create evs from notemapcf Evs = new List <clsEv>(); //for (int q = 0; q < P.F.CF.NoteMap.GetLengthQTime(); q++) { for (int q = 0; q < P.F.MaxBBT.QI; q++) { if (q > 0 && NoteMap.GetMap(q) == NoteMap.GetMap(q - 1) && //null != unrecognised chord NoteMap.GetChordAtt(q).ChordEquals(NoteMap.GetChordAtt(q - 1))) { continue; } clsMTime.clsBBT bbt = new clsMTime.clsBBT(q * P.F.TicksPerQI); clsNoteMapCF ncf = (clsNoteMapCF)NoteMap; clsEv ev = new clsEvPC(this, bbt, ncf[q], ncf.GetChordAtt(q).Root); ev.ChordQualifier = clsNoteMap.PtrToDesc(ncf.GetChordAtt(q).Qualifier); if (ev.Notes.Length == 0 && P.frmStart.chkIgnoreNullChords.Checked) { continue; //null chord } //if (ncf.ChordAtt[q].Marked > 0) ev.Mark = true; if (Evs.Count > 0 && Evs[Evs.Count - 1].Notes.Length == 0) //previous ev was null { if (bbt.Ticks - Evs[Evs.Count - 1].OnTime <= Forms.frmSC.SyncopationDefault.Ticks) { Evs.RemoveAt(Evs.Count - 1); } } if (Evs.Count > 0) { Evs[Evs.Count - 1].OffBBT = bbt; //set offtime for previous line } Evs.Add(ev); } if (Evs.Count > 0) { SetLastEv(); } SyncEvsToKeys(); //if (P.frmSC != null && P.F.AutoSync == null) P.frmSC.mnuCreateSyncFile.Enabled = true; }