private void ShowChords() { //* show thischord and next chord //* newchord showed in MouseDown event if (P.F.CF?.Evs == null || P.F.CF.Evs.Count == 0) { lblThisChord.Text = "null"; lblNextChord.Text = "null"; return; } int index = P.F.CF.FindCFEv(P.F.CurrentBBT); //this or prev clsCF.clsEv ev = P.F.CF.Evs[index]; lblThisChord.Text = (P.frmSC.chkShowChordsRel.Checked) ? ev.ChordNameRoman(Key, eKBTrans.None) : ev.ChordName(eKBTrans.Add, kbtranskey: true); index--; if (index >= 0) { ev = P.F.CF.Evs[index]; lblNextChord.Text = (P.frmSC.chkShowChordsRel.Checked) ? ev.ChordNameRoman(Key, eKBTrans.None) : ev.ChordName(eKBTrans.Add, kbtranskey: true); } lblKey.Text = Key.ToString(); }
private void frmChangeSongLength_Load(object sender, EventArgs e) { //* get current length lblCurrentLen.Text = P.F.MaxBBT.MidiWholeNotes.ToString(); lblCurrentBars.Text = (P.F.MaxBBT.Bar + 1).ToString(); //* get last ev ticks/wholenotes int minlen = 10; clsCF.clsEv ev = null; for (int i = P.F.CF.Evs.Count - 1; i >= 0; i--) { ev = P.F.CF.Evs[i]; if (ev != null) { break; } } if (ev == null) { return; } int rem; int wholenotes = Math.DivRem(ev.OffTime, P.F.MTime.TicksPerQNote * 4, out rem); if (rem > 0) { wholenotes++; } ////* find lowest wholenotes that fits //clsMaxBBT maxbbt = null; //while (maxbbt == null || maxbbt.Ticks > ev.OffTime) { // maxbbt = new clsMaxBBT(wholenotes * P.F.MTime.TicksPerQNote * 4); // wholenotes--; //} wholenotes = Math.Max(minlen, ++wholenotes); clsMaxBBT maxbbt = new clsMaxBBT(wholenotes * P.F.MTime.TicksPerQNote * 4); //* update controls lblMinLen.Text = wholenotes.ToString(); lblMinBars.Text = (maxbbt.Bar + 1).ToString(); nudNewLen.Minimum = wholenotes; nudNewLen.Value = Math.Max(wholenotes, P.F.MaxBBT.MidiWholeNotes); }