Parent/Child Relationships (Set Window)
Parent/Child Relationships is a term used to describe the relationship between different types of SysEx in a MIDI device. Most frequently, it applies to workstations where the instrument will frequently have two or more distinct modes: a Sound generating mode (known by a range of terms such as: Patch, Program, Sound, Tone, etc) where individual sounds are designed and a multi-timbral mode where two or more sounds can be played siimulataneously. This mode has also been given a range of different names by manufacturers such as Combi, Performance, and Multi to name three.
What is important to understand here is the relationship between the types of SysEx. In multi-timbral mode, the instrument will reference the sounds by their location in the sound bank. The multi does not actually store the sound definition but just its location. In fact some instruments contain extensive references. A Korg Kronos uses the following:
A Set List can reference Combis, Programs and Songs
Combis reference Programs and GEs
Songs reference Programs and GEs
Programs can reference Drum Kits, Wavesequences, and GEs
As you can see, this can be a complex set of relationships and keeping track of these is very important when moving items. If you don't allow the program to maintain these relationships for you, you must do so yourself.
To continue with the Kronos as an example, if parent/child relationships is turned off and you were to move a Program within a bank or to another bank, any Combi, Song, or Set List that used the Program would no longer sound correctly be cause they would continue to reference the previous location of the Program instead of its current location. With parent/child enabled, when a Program is moved Midi Quest automatically finds all of the "parents" (the SysEx that references the Programs) and updates them so that they continue to reference the correct Program location.
Maintaining parent/child relationships is even more important when copying items from one Set to another in Midi Quest. Just consider what needs to happen when copying a single Combi from one Set to another. Not only do you need to copy the Combi itself, you also need to copy the Programs and custom GEs that the Combi references and you need to copy the Drum Kits, Wavesequences, and custom GEs that the Programs use. Not only do all of these items need to be copied over but they must be copied into locations that are currently not in use. This requires that all modified parent references must be updated to the correct new locations. Of course, you can do all of this yourself or you can leave the details to Midi Quest.
Enabling Parent Child Relationships
Parent/Child Relationships are enabled in the Bank page of Preferences.
The feature is enabled program wide but maintained on a per Set basis. If a Set is created or loaded when Parent/Child relationships are turned off, the feature will not be available until the Set is saved to disk and re-opened. Conversely, a Set created or opened from disk while Parent/Child is enabled will operate in this mode until the window is closed, regardless of changes made in Preferences.
What Does Parent/Child Relations Actually Do
Here is a list of the functions that parent/child relations actually performs within Midi Quest.
1. Display of Child Status
In bank editors, any entry which is referenced by SysEx in another bank or editor is displayed with a small yellow link icon in the upper right corner. Placing the mouse over any of these entries will display a list of the items that use the entry either within the editor windows itself or on the message line at the bottom of the program window as can be seen here:
In this case, the mouse is pointing to German Dark Grand which shows that it is being used by the Combi G.Piano-Stack 1.
2. Display of Parent Status
In bank editors, any entry which is a parent (references SysEx contained in other banks in the Set), placing the mouse over that entry will display a list of items that the SysEx references. In this case:
the mouse is pointing to Organic Niacinism and it shows that this Combi uses the programs in the list displayed above.
3. SysEx updates during swap operations
When Patches are swapped within a bank or with another bank in a Set, Midi Quest will update parents so that they correctly reference the SysEx in its new location.
4. SysEx updates during copy operations
When Patches are copied from a bank in Set A to a bank in Set B, Midi Quest automatically copies all child SysEx and child of the child SysEx (for the Kronos this could include Combis, Programs, GEs, Wavesequences, and Drumkits) to the destination Set as well. During this process Midi Quest ensures the child Patches are copied to unused locations and updates the parents with the new location information.
note: if there are no unused locations in the destination child bank, SysEx will not be copied and parents will not be updated.