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.
We are now moving toward an even simpler approach where a single notification mechanism (documentModified()) is used across all of rg for most things. See Update Notifications for more.
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
See bug #1625 for another test case that is missing here. Add it.
Run the Add Track Test Plan (below)
Run the Delete Track Test Plan (below)
Run the TrackLabel Test Plan (below)
Run the Mute Test Plan (below)
Run the Arm (Record) Test Plan (below)
Run the Change Track Name Test Plan (below)
Move Track Up/Down Test Plan (below)
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…
Add Track Test Plan
Add and use.
Set up track names that will make it easier to see a track has been inserted. (e.g. Track 1, Track 2, …)
Add a track.
Verify that the track was added.
Do some recording and playback on the new track to make sure it works.
Add, undo, redo, use.
Add a new track.
Undo the add track.
Verify it is gone.
Redo the add track.
Verify that it is back.
Do some recording and playback on the track to make sure it works.
Load a .rg sequence and play it.
Import a MIDI file and play it.
Delete Track Test Plan
Delete a track.
Set up track names that will make it easier to see that a track has been deleted. (e.g. Track 1, Track 2, …)
Delete a track.
Verify it is gone.
Undo the delete.
Verify it is back.
Record and play on this track to make sure it works.
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
Load/Save Sequence with Mute Pattern
Create a sequence with a pattern of muted/unmuted tracks. (Set up an arm pattern too.)
Save the sequence. “LED Pattern.rg”
Bring down rg.
Bring up rg.
Open the sequence (Ctrl+R should do it)
Verify the correct pattern
LIRC and Tranzport
Arm (Record) Test Plan
Record button on the track.
Arm and disarm a track. Make sure the LED goes on and off.
Arm a track. Hit record. Make sure that track records. Stop.
Disarm all tracks. Arm a different track. Hit record. Make sure that track records. Stop.
“R” hotkey
Menu: Tracks > Arm/Disarm?
Arm an audio track when the audio path is broken.
Bring up rg
chmod -w ~/rosegarden
Try to arm an audio track by clicking on the LED.
Note the dialog
Try to arm an audio track using the “R” hotkey.
Note the dialog
chmod u+w ~/rosegarden
Try to arm more than one track with the same instrument.
Set track 1 to General MIDI Device #1
Set track 2 to General MIDI Device #1
Try to arm track 1 and track 2. They will not both arm.
Arm rule.
Set track 1 to General MIDI Device #1
Set track 2 to General MIDI Device #2
Arm track 1 and track 2 for record
Set track 2 to General MIDI Device #1
Note that track 1 becomes unarmed.
Load/Save Sequence with Arm Pattern
Create a sequence with a pattern of armed/unarmed tracks. (Set up a mute pattern too.)
Save the sequence. “LED Pattern.rg”
Bring down rg.
Bring up rg.
Open the sequence (Ctrl+R should do it)
Verify the correct pattern
Hit record and make sure the armed tracks are recording.
LIRC
Tranzport
Change Track Name Test Plan
Change Track Name Basic
Bring up rg
Change a track's name by double-clicking on the label and entering a new name.
Note that the name has changed on the track.
Note that the name has changed in the Track Parameters box.
Undo the name change.
Note that the name has changed on the track.
Note that the name has changed in the Track Parameters box.
Notation View
Bring up rg. Drop a segment on the canvas.
Select the segment and bring up the notation view (press “N”).
Change the track name and switch back to the notation view.
The name should have changed to the left of the staff.
Matrix View
Bring up rg. Drop a segment on the canvas.
Select the segment and bring up the matrix view (press “M”).
Change the track name and switch back to the matrix view.
The name should have changed in the titlebar.
Percussion Matrix View
Bring up rg. Drop a segment on the canvas.
Select the segment and bring up the percussion matrix view (press “D”).
Change the track name and switch back to the percussion matrix view.
The name should have changed in the titlebar.
Pitch Tracker View (PitchTrackerView)
Load .rg File
Load a .rg file
Make sure the track names are correct.
Load MIDI File
Load a standard MIDI file.
Make sure the track names are correct.
Load Music XML
Import a Music XML file.
Make sure the track names are correct.
Tranzport (TranzportClient::trackChanged())
Select a track.
Note that the track's name shows up on the Tranzport
Change the track's name
Note that the name changes on the Tranzport
Move Track Up/Down Test Plan
Move Track Up Via Menu
Set up track names that will make it easier to see tracks moving (e.g. “Track 1”, “Track 2”, etc…)
Select “Track 2”
Tracks > Move Track Up
Note that Track 1 and Track 2 have traded places.
Try selecting Tracks 1 and 2. Note proper behavior.
Try right-clicking Tracks 1 and 2. Note proper behavior.
Undo
Note that Track 1 and Track 2 are back to where they were.
Try selecting Tracks 1 and 2. Note proper behavior.
Try right-clicking Tracks 1 and 2. Note proper behavior.
Move Track Down Via Menu
Set up track names that will make it easier to see tracks moving (e.g. “Track 1”, “Track 2”, etc…)
Select “Track 2”
Tracks > Move Track Down
Note that Track 2 and Track 3 have traded places.
Try selecting Tracks 2 and 3. Note proper behavior.
Try right-clicking Tracks 2 and 3. Note proper behavior.
Undo
Note that Track 2 and Track 3 are back to where they were.
Try selecting Tracks 2 and 3. Note proper behavior.
Try right-clicking Tracks 2 and 3. Note proper behavior.
Move Track Up Via Keyboard
Set up track names that will make it easier to see tracks moving (e.g. “Track 1”, “Track 2”, etc…)
Select “Track 2”
Press Shift + Up Arrow
Note that Track 1 and Track 2 have traded places.
Try selecting Tracks 1 and 2. Note proper behavior.
Try right-clicking Tracks 1 and 2. Note proper behavior.
Undo
Note that Track 1 and Track 2 are back to where they were.
Try selecting Tracks 1 and 2. Note proper behavior.
Try right-clicking Tracks 1 and 2. Note proper behavior.
Move Track Down Via Keyboard
Set up track names that will make it easier to see tracks moving (e.g. “Track 1”, “Track 2”, etc…)
Select “Track 2”
Press Shift + Down Arrow
Note that Track 2 and Track 3 have traded places.
Try selecting Tracks 2 and 3. Note proper behavior.
Try right-clicking Tracks 2 and 3. Note proper behavior.
Undo
Note that Track 2 and Track 3 are back to where they were.
Try selecting Tracks 2 and 3. Note proper behavior.
Try right-clicking Tracks 2 and 3. Note proper behavior.