I’ve encountered a situation where C4 (v4062) is re-loading the same Linked Rack between two songs. The state of the Linked Rack is re-initialized and the Rack->[On Load] bindings in the rack are re-triggered. This might need @brad attention.
As I understand it, a given Linked Rack should stay loaded between songs … as long as it is the same Rack that is loaded. On a switch from song S1 to song S2, if the same rack R1 is in both songs, the state of R1 should remain intact and the Rack->[On Load] bindings in R1 should not be triggered.
The issue, I think, is how C4 determines if two rack references in two different song files are determined to refer to “the same rack”.
After a lot of sleuthing, it appears to be the way the two songs refer to the rack. From the “RackHost” entries in two .cantabileSong files:
S1:
"RackFile": "C:\\SoundLib\\Cantabile\\Racks\\Rig\\Rig.cantabileRack",
"RackFileRelative": "..\\..\\Racks\\Rig\\Rig.cantabileRack",
S2:
"RackFile": "C:\\SoundLib\\Cantabile\\Racks\\Rig\\Rig.cantabileRack",
"RackFileRelative": "C:\\SoundLib\\Cantabile\\Racks\\Rig\\Rig.cantabileRack",
It appears that C4 compares the “RackFileRelative” values to determine if the two racks are “the same”. Both “RackFileRelative” values shown above do resolve to the same file. However, the way it appears above, C4 will (incorrectly) re-load the Rack and re-trigger Rack->[On Load]. If I change either of the “RackFileRelative” to match the other file, the rack is (correctly) not re-loaded and the [On Load] events are not retriggered.
I’m not entirely sure how one “RackFileRelative” came to be relative and the other a full path specification. It may have to do with the Junctions I was formerly using, and it may be that this situation would never arise for other folks, but I’m thinking that …
Maybe C4 could be smarter about resolving “RackFileRelative” path names?