This is an old revision of the document!
Goal
To implement a consistent notification mechanism whereby Boundary (User Interface) objects make changes directly to Entity (Document) objects and use a notification (Observer) mechanism within the Entities to inform the rest of the system of changes.
Secondary Goal
To remove the call to TrackButtons::slotUpdateTracks() in TrackEditor::paintEvent(). At one point, this resulted in a substantial performance improvement when recording MIDI. However, this is no longer the case. So we are now pursuing this goal in the interests of code quality. We'll get back to MIDI record performance once this project is complete.
Scope
This project is limited to those areas of the system touched by TrackButtons.
Test Plans
Add a track.
Delete a track.
Rename a track.
Run the Mute Test Plan
Run the TrackLabel Test Plan
Arm/disarm tracks for record. Click on LED. Use “R” key.
Move track up/down. Menu. Keyboard: Shift-Up/Down.
Select next track via menu and down arrow.
Select previous track via menu and up arrow.
Contemporaneous segments on a track.
Right click and switch from MIDI to audio to synth plugin. The record LED color will change. Yellow for MIDI, red for audio, and orange for synth.
??? more…
TrackLabel Test Plan
Track Names
Make sure View > Show Track Labels is checked
Load a sequence
Note that the track names are displayed
Double-click on a track name
Change it
Note that the change takes
Instrument Program Change Names
Make sure View > Show Track Labels is unchecked
Load a sequence (if one isn't loaded already)
Note that the instrument names (e.g. Flute) are displayed
Select a track
Change the program in the Instrument Parameters box
Note that the change takes
Instrument Presentation Name
Make sure View > Show Track Labels is unchecked
Load a sequence (if one isn't loaded already)
Note that the instrument program change names (e.g. Flute) are displayed
Select a track
Uncheck the Program checkbox in the Instrument Parameters box
Note that the track label now shows the “Presentation Name” (“General MIDI Device #1”)
Check the Program checkbox.
Note that the track label now shows the program change name.
Context Menu and Instrument Presentation Name
Make sure View > Show Track Labels is checked
Right-click on a track label
Note that the label changes to the “Presentation Name” (“General MIDI Device #1”)
Dismiss the context menu and the original label returns
Make sure View > Show Track Labels is unchecked
Right-click on a track label
Note that the label changes to the “Presentation Name” (“General MIDI Device #1”)
Dismiss the context menu and the original label returns
Context menu
Make sure View > Show Track Labels is checked (probably not important)
Right-click on a track label
Change to “General MIDI Device #2” or something different.
Right-click on the same track label and note that it shows “General MIDI Device #2”
Repeat the above with the other kinds of devices: audio and synth plug-ins.
Note that since audio tracks and synth plug-in tracks have no program change name, the presentation name is displayed. (“Audio #1” or “Synth plugin #1”)
Edit Banks
Make sure View > Show Track Labels is unchecked
Studio > Manage MIDI Devices > Banks…
Import
Import the Casio MT-540 bank.
Complete the various dialogs and close them to get back to the tracks.
Note that the track labels are all now “Piano” (except for #10)
Right-click to make sure the Presentation Name is “Casio MT-540 #1”.
Remap Instruments
Tracks > Remap Instruments…
Click Ok.
Make sure track labels haven't been clobbered.
Mute Test Plan
Mute button on the track.
“U” hotkey
Menu: Tracks > Mute or Unmute Track
Mute/Unmute All via toolbar
Mute/Unmute All via menu
LIRC and Tranzport