From 23166ec5ffeb26d0a4467e72a9f4dabea67b0133 Mon Sep 17 00:00:00 2001 From: Oli Date: Fri, 24 Aug 2007 09:01:41 +0000 Subject: META ALGO: tune form structure --- (limited to 'Edit') 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 -- cgit v0.9.1