Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Edit
diff options
context:
space:
mode:
authorOli <olivier.belanger@umontreal.ca>2007-08-24 09:01:41 (GMT)
committer Oli <olivier.belanger@umontreal.ca>2007-08-24 09:01:41 (GMT)
commit23166ec5ffeb26d0a4467e72a9f4dabea67b0133 (patch)
treec6e64209aa2816afb8a86c52ab1412dc5e451b98 /Edit
parente90310bd612fc920ffb2121b05b69342edc6e270 (diff)
META ALGO: tune form structure
Diffstat (limited to 'Edit')
-rw-r--r--Edit/MainWindow.py76
1 files changed, 70 insertions, 6 deletions
diff --git a/Edit/MainWindow.py b/Edit/MainWindow.py
index 2d0db40..8779f8d 100644
--- a/Edit/MainWindow.py
+++ b/Edit/MainWindow.py
@@ -56,6 +56,9 @@ class MainWindow( SubActivity ):
self.scale = GenerationConstants.DEFAULT_SCALE
+ # META ALGO: [section, variation or not, nPages] A B A C
+ self.tuneForm = [[0, False, 4], [1, False, 4], [0, True, 4], [2, False, 2]]
+
def init_data( ):
TP.ProfileBegin("init_data")
self._data = {}
@@ -401,9 +404,9 @@ class MainWindow( SubActivity ):
def createNewTune( self, widget, data=None ):
if random.choice([0,1]):
- self.createNewTune1()
+ self.createNewTune3()
else:
- self.createNewTune2()
+ self.createNewTune3()
def createNewTune1( self ):
@@ -559,6 +562,67 @@ class MainWindow( SubActivity ):
self.tuneInterface.selectPages( self.noteDB.getTune() )
self.displayPage( self.noteDB.getTune()[0] )
+ def createNewTune3( self ):
+
+ if self.playing == True:
+ self.handleStop()
+
+ self.tuneInterface.selectPages( self.noteDB.getTune() )
+
+ beats = random.randint(3,8)
+ stream = []
+ for page in self.noteDB.getTune():
+ stream += [ page, beats ]
+ if len(stream):
+ self.noteDB.updatePages( [ PARAMETER.PAGE_BEATS, len(stream)//2 ] + stream )
+
+ orch = self.newOrchestra()
+
+ instrumentsIds = []
+ for inst in orch:
+ instrumentsIds.append(inst.instrumentId)
+
+ self.pageDelete( -1, instruments = instrumentsIds )
+
+ initTempo = random.randint(60, 132)
+ self._data['tempo'] = initTempo
+
+ formsUsed = []
+ for section in self.tuneForm:
+ if section[0] not in formsUsed:
+ param = self.chooseGenParams()
+ self.tuneInterface.selectPages( self.noteDB.getTune() )
+ if not formsUsed:
+ for i in range(section[2]-1):
+ self.pageAdd(instruments = instrumentsIds)
+ else:
+ for i in range(section[2]):
+ self.pageAdd(instruments = instrumentsIds)
+ formsUsed.append(section[0])
+
+ self.tuneInterface.selectPages( self.noteDB.getTune()[-section[2]:] )
+ self.generateMode = 'page'
+ self.generate( GenerationParameters( density = param[0], rythmRegularity = param[1], step = param[2], pitchRegularity = param[3], articule = param[4], silence = param[5], pattern = param[6], scale = param[7]), section[2] )
+ else:
+ pageOffset = 0
+ pageIds = []
+ firstPos = [i[0] for i in self.tuneForm].index(section[0])
+ if firstPos == 0:
+ pageOffset = 0
+ else:
+ for i in range(firstPos):
+ pageOffset += self.tuneForm[i][2]
+ for i in range(section[2]):
+ pageIds.append(self.noteDB.getTune()[pageOffset + i])
+ after = self.noteDB.getTune()[-1]
+ self.displayPage( self.noteDB.getTune()[pageOffset] )
+ self.tuneInterface.selectPages(self.noteDB.getTune())
+ self.pageDuplicate(-1, pageIds)
+
+ self.tuneInterface.selectPages( self.noteDB.getTune() )
+ self.displayPage( self.noteDB.getTune()[0] )
+
+
def newOrchestra(self):
stringsPickup = []
windsPickup = []
@@ -1047,7 +1111,7 @@ class MainWindow( SubActivity ):
# generation functions
#-----------------------------------
- def recompose( self, algo, params):
+ def recompose( self, algo, params, nPagesCycle = 4):
if self.generateMode == "track":
if self.trackSelected == [ 0 for i in range(Config.NUMBER_OF_TRACKS) ]:
newtracks = set(range(Config.NUMBER_OF_TRACKS))
@@ -1079,7 +1143,7 @@ class MainWindow( SubActivity ):
beatsOfPages,
newtracks,
newpages,
- dict)
+ dict, nPagesCycle)
# filter & fix input ...WTF!?
for track in dict:
@@ -1107,8 +1171,8 @@ class MainWindow( SubActivity ):
stream += [-1]
self.noteDB.addNotes( stream )
- def generate( self, params ):
- self.recompose( generator1, params)
+ def generate( self, params, nPagesCycle = 4 ):
+ self.recompose( generator1, params, nPagesCycle)
#=======================================================
# Clipboard Functions