self.scale=scaleifscaleelse(72,71,69,67,65,64,62,60)#Scale needs to be set first because on init/load data already depends on it, at least the default scale. The scale is part of the track meta callback.
self.data=dataifdataelselist()#For content see docstring. this cannot be the default parameter because we would set the same list for all instances.
self.simpleNoteNames=simpleNoteNamesifsimpleNoteNameselseself.parentTrack.parentScore.lastUsedNotenames#This is mostly for the GUI or other kinds of representation instead midi notes
self.simpleNoteNames=simpleNoteNamesifsimpleNoteNameselseself.parentTrack.parentData.lastUsedNotenames#This is mostly for the GUI or other kinds of representation instead midi notes
self._processAfterInit()
def_prepareBeforeInit(self):
@ -87,14 +87,14 @@ class Pattern(object):
@simpleNoteNames.setter
defsimpleNoteNames(self,value):
self._simpleNoteNames=tuple(value)#we keep it immutable, this is safer to avoid accidental linked structures when creating a clone.
self.parentTrack.parentScore.lastUsedNotenames=self._simpleNoteNames#new default for new tracks
self.parentTrack.parentData.lastUsedNotenames=self._simpleNoteNames#new default for new tracks
forpatternin(pforpinself.dataifp["index"]<self.parentTrack.parentScore.howManyUnits):# < and not <= because index counts from 0 but howManyUnits counts from 1
forpatternin(pforpinself.dataifp["index"]<self.parentTrack.parentData.howManyUnits):# < and not <= because index counts from 0 but howManyUnits counts from 1
self.structure=structureifstructureelseset()#see buildTrack(). This is the main track data structure besides the pattern. Just integers (starts at 0) as switches which are positions where to play the patterns. In between are automatic rests.
@ -66,10 +66,10 @@ class Track(object): #injection at the bottom of this file!
oneMeasureInTicks=(self.parentScore.howManyUnits*self.parentScore.whatTypeOfUnit)/self.parentScore.subdivisions#subdivisions is 1 by default. bigger values mean shorter values, which is compensated by the user setting bigger howManyUnits manually.
oneMeasureInTicks=(self.parentData.howManyUnits*self.parentData.whatTypeOfUnit)/self.parentData.subdivisions#subdivisions is 1 by default. bigger values mean shorter values, which is compensated by the user setting bigger howManyUnits manually.
oneMeasureInTicks=int(oneMeasureInTicks)
filteredStructure=[indexforindexinsorted(self.structure)ifindex<self.parentScore.numberOfMeasures]#not <= because we compare count with range
filteredStructure=[indexforindexinsorted(self.structure)ifindex<self.parentData.numberOfMeasures]#not <= because we compare count with range