"cboxMidiOutUuid":trackState.track.sequencerInterface.cboxMidiOutUuid,#used for midi throught. Step midi shall produce sound through the current track.
"midiChannel":trackState.midiChannel(),#zero based
@ -60,6 +60,7 @@ class Data(template.engine.sequencer.Score):
self.copyObjectsBuffer=[]#for copy and paste. obviously empty after load file. Also not saved.
self.cachedTrackDurations={}#updated after every track export
#track.asMetronomeData is a generated value from staticExport. Not available yet. needs to be done in api.startEngine #self.metronome.generate(data=self.currentMetronomeTrack.asMetronomeData, label=self.currentMetronomeTrack.name)
self.calculateAudibleSoloForCbox()
defduration(self):
@ -1050,6 +1051,34 @@ class Data(template.engine.sequencer.Score):
"sequencerInterface":self.sequencerInterface.serialize(),#this saves the actual cbox.enabled value. But that is harmless, first because the state is actually valid, second because we recalculate mute/solo after load anyway.
self.sequencerInterface=template.engine.sequencer.SequencerInterface.instanceFromSerializedData(self,serializedData["sequencerInterface"])#this loads the actual cbox.enabled value. But that is harmless, first because the state is actually valid, second because we recalculate mute/solo after load anyway.
self.soloPlaybackCheckbox.blockSignals(True)#we don't want to trigger reactToggleSolo. Even if that is not recursive (qt prevents signals when nothing actually changed), it is a double call to the api with the same value