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); }
private void nudNewLen_ValueChanged(object sender, EventArgs e) { clsMaxBBT maxbbt = new clsMaxBBT((int)nudNewLen.Value * P.F.MTime.TicksPerQNote * 4); lblNewBars.Text = (maxbbt.Bar + 1).ToString(); }