diff options
-rw-r--r-- | Edit/MainWindow.py | 32 | ||||
-rwxr-xr-x | Generation/GenerationConstants.py | 15 | ||||
-rwxr-xr-x | Generation/GenerationParametersWindow.py | 27 | ||||
-rw-r--r-- | Resources/univorc.csd | 2 |
4 files changed, 52 insertions, 24 deletions
diff --git a/Edit/MainWindow.py b/Edit/MainWindow.py index 1f8f1d6..915236f 100644 --- a/Edit/MainWindow.py +++ b/Edit/MainWindow.py @@ -44,10 +44,10 @@ class MainWindow( gtk.EventBox ): #[ instrument index, ... ] track_inst = [ - Config.FLUTE, - Config.KOTO, - Config.GAM, - Config.GUIT, + Config.KALIMBA, + Config.KALIMBA, + Config.KALIMBA, + Config.KALIMBA, Config.DRUM1KIT ] if len(track_inst) != Config.NUMBER_OF_TRACKS: raise 'error' @@ -679,7 +679,7 @@ class MainWindow( gtk.EventBox ): self.generationParametersWindow.hide_all() #self.generateButton.set_active( False ) - def recompose( self, algo, params): + def recompose( self, algo, params, genOrVar): if self.generateMode == "track": if self.trackSelected == [ 0 for i in range(Config.NUMBER_OF_TRACKS) ]: newtracks = set(range(Config.NUMBER_OF_TRACKS)) @@ -690,11 +690,17 @@ class MainWindow( gtk.EventBox ): newtracks = set(range(Config.NUMBER_OF_TRACKS)) newpages = self.tuneInterface.getSelectedIds() - dict = {} - for t in newtracks: - dict[t] = {} - for p in newpages: - dict[t][p] = self.noteDB.getCSNotesByTrack( p, t ) + if genOrVar == 0: + dict = {} + for t in newtracks: + dict[t] = {} + for p in newpages: + dict[t][p] = self.noteDB.getCSNotesByTrack( p, t ) + else: + dict = {} + for t in newtracks: + dict[t] = {} + dict[t][1] = self.noteDB.getCSNotesByTrack( 1, t ) algo( params, @@ -739,10 +745,10 @@ class MainWindow( gtk.EventBox ): self.handleCloseGenerationParametersWindow( None, None ) def generate( self, params ): - self.recompose( generator1, params) + self.recompose( generator1, params, 0) def variate( self, params ): - self.recompose( variate, params) + self.recompose( variate, params, 1) #======================================================= # Clipboard Functions @@ -874,6 +880,7 @@ class MainWindow( gtk.EventBox ): def trackGenerate( self ): self.generateMode = "track" + self.generationParametersWindow.move(300, 20) self.generationParametersWindow.show_all() def trackProperties( self, trackIds = -1 ): @@ -944,6 +951,7 @@ class MainWindow( gtk.EventBox ): def pageGenerate( self ): self.generateMode = "page" + self.generationParametersWindow.move(300, 20) self.generationParametersWindow.show_all() def pageProperties( self, pageIds = -1 ): diff --git a/Generation/GenerationConstants.py b/Generation/GenerationConstants.py index dbcff25..56e815b 100755 --- a/Generation/GenerationConstants.py +++ b/Generation/GenerationConstants.py @@ -28,16 +28,17 @@ class GenerationConstants: HARMONIC_MINOR_SCALE = 1 NATURAL_MINOR_SCALE =2 PHRYGIEN_SCALE = 3 - PENTATONIC_SCALE = 4 - BLUES_SCALE = 5 - - + DORIEN_SCALE = 4 + LYDIEN_SCALE = 5 + MYXOLYDIEN_SCALE = 6 + SCALES = { MAJOR_SCALE : [ -12, -10, -8, -7, -5, -3, -1, 0, 2, 4, 5, 7, 9, 11, 12 ], HARMONIC_MINOR_SCALE : [ -12, -10, -9, -7, -5, -4, -1, 0, 2, 3, 5, 7, 8, 11, 12 ], NATURAL_MINOR_SCALE : [ -12, -10, -9, -7, -5, -4, -2, 0, 2, 3, 5, 7, 8, 10, 12 ], - PENTATONIC_SCALE : [ -12, -10, -7, -5, -3, 0, 2, 5, 7, 9, 12 ], - BLUES_SCALE : [ -12, -10, -9, -8, -7, -5, -3, -2, 0, 2, 3, 4, 5, 7, 9, 10, 12 ], - PHRYGIEN_SCALE : [ -12, -11, -9, -7, -5, -4, -2, 0, 1, 3, 5, 7, 8, 10, 12 ] } + PHRYGIEN_SCALE : [ -12, -11, -9, -7, -5, -4, -2, 0, 1, 3, 5, 7, 8, 10, 12 ], + DORIEN_SCALE : [ -12, -10, -9, -7, -5, -3, -2, 0, 2, 3, 5, 7, 9, 10, 12 ], + LYDIEN_SCALE : [ -12, -10, -8, -6, -5, -3, -1, 0, 2, 4, 6, 7, 9, 11, 12 ], + MYXOLYDIEN_SCALE : [ -12, -10, -8, -7, -5, -3, -2, 0, 2, 4, 5, 7, 9, 10, 12 ]} DEFAULT_SCALE = MAJOR_SCALE diff --git a/Generation/GenerationParametersWindow.py b/Generation/GenerationParametersWindow.py index e5c0f37..d2cae6c 100755 --- a/Generation/GenerationParametersWindow.py +++ b/Generation/GenerationParametersWindow.py @@ -14,6 +14,7 @@ class GenerationParametersWindow( gtk.Window ): self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.set_position( gtk.WIN_POS_CENTER ) self.set_default_size(30, 300) + self.move(300, 20) self.set_border_width(0) self.set_decorated(False) self.mainBox = RoundVBox(fillcolor="#FFF", bordercolor="#FFF") @@ -26,7 +27,7 @@ class GenerationParametersWindow( gtk.Window ): self.pitchMethod = GenerationConstants.DEFAULT_PITCH_METHOD self.pattern = GenerationConstants.DEFAULT_PATTERN self.scale = GenerationConstants.DEFAULT_SCALE - self.sourceVariation = 0 + self.sourceVariation = 1 self.generateFunction = generateFunction self.variateFunction = variateFunction self.setupWindow() @@ -167,7 +168,7 @@ class GenerationParametersWindow( gtk.Window ): arrowImg.set_from_file(Config.IMAGE_ROOT + 'flecheAlgo.png') varPitchBox.pack_start(arrowImg, False, False) - listOfPitchVar = ['copy', 'reverse', 'shuffle', 'sort', 'invert', 'markov'] + listOfPitchVar = ['copy', 'markov', 'reverse', 'sort', 'shuffle', 'invert'] for var in listOfPitchVar: button = ImageButton(Config.IMAGE_ROOT + var + '.png', Config.IMAGE_ROOT + var + 'Down.png', Config.IMAGE_ROOT + var + 'Over.png') button.connect('pressed', self.handlePitchVariationButton, listOfPitchVar.index(var)) @@ -219,6 +220,19 @@ class GenerationParametersWindow( gtk.Window ): methodBox.pack_start(iButton, False, False) metaAlgoBox.pack_start(methodBox, False, False, 5) + scaleBox = gtk.HBox() + self.firstButton = None + scaleNames = ['majorKey', 'minorHarmKey', 'minorKey', 'phrygienKey', 'dorienKey', 'lydienKey', 'myxoKey'] + for scale in scaleNames: + iButton = ImageRadioButton(self.firstButton, Config.IMAGE_ROOT + scale + '.png', Config.IMAGE_ROOT + scale + 'Down.png', Config.IMAGE_ROOT + scale + 'Over.png') + if self.firstButton == None: + self.firstButton = iButton + iButton.connect('clicked' , self.handleScale , scaleNames.index(scale)) + scaleBox.pack_start(iButton, False, False) + metaAlgoBox.pack_start(scaleBox, False, False) + + + self.mainBox.pack_start(metaAlgoBox) # Create melodic rythm methods box @@ -418,6 +432,10 @@ class GenerationParametersWindow( gtk.Window ): if widget.get_active(): self.pattern = method + def handleScale( self, widget, scale ): + if widget.get_active(): + self.scale = scale + def rythmMethodCallback( self, widget, rythmMethod ): if widget.get_active(): self.rythmMethod = rythmMethod @@ -427,8 +445,9 @@ class GenerationParametersWindow( gtk.Window ): self.pitchMethod = pitchMethod def scaleCallback( self, widget, scale ): - if widget.get_active(): - self.scale = scale + pass +# if widget.get_active(): +# self.scale = scale def patternCallback( self, widget, data ): pass diff --git a/Resources/univorc.csd b/Resources/univorc.csd index dc3f2a4..9a55dc4 100644 --- a/Resources/univorc.csd +++ b/Resources/univorc.csd @@ -1,6 +1,6 @@ <CsoundSynthesizer> <CsOptions> --+rtaudio=alsa -idevaudio -odevaudio -m0 -W -s -d -b128 -B512 +-+rtaudio=alsa -idevaudio -odevaudio -m0 -W -s -d -b512 -B1024 </CsOptions> <CsInstruments> sr=16000 |