/** If we're paused, reshade the sheet music and piano. */ private void ReShade(object sender, EventArgs args) { if (playstate == paused) { sheet.ShadeNotes((int)currentPulseTime, (int)-10, false); piano.ShadeNotes((int)currentPulseTime, (int)prevPulseTime); } Timer redrawTimer = (Timer)sender; redrawTimer.Stop(); redrawTimer.Dispose(); }
/** The MidiFile and/or SheetMusic has changed. Stop any playback sound, * and store the current midifile and sheet music. */ public void SetMidiFile(MidiFile file, MidiOptions opt, SheetMusic s) { /* If we're paused, and using the same midi file, redraw the * highlighted notes. */ if ((file == midifile && midifile != null && playstate == paused)) { options = opt; sheet = s; sheet.ShadeNotes((int)currentPulseTime, (int)-10, false); /* We have to wait some time (200 msec) for the sheet music * to scroll and redraw, before we can re-shade. */ Timer redrawTimer = new Timer(); redrawTimer.Interval = 200; redrawTimer.Tick += new EventHandler(ReShade); redrawTimer.Enabled = true; redrawTimer.Start(); } else { this.Stop(null, null); midifile = file; options = opt; sheet = s; } this.DeleteSoundFile(); }