diff options
Diffstat (limited to 'Generation/GenerationPitch.py')
-rw-r--r-- | Generation/GenerationPitch.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/Generation/GenerationPitch.py b/Generation/GenerationPitch.py new file mode 100644 index 0000000..bc38ee1 --- /dev/null +++ b/Generation/GenerationPitch.py @@ -0,0 +1,58 @@ +import random +import Drunk + +import Config +from Generation.GenerationConstants import GenerationConstants + +class GenerationPitch: + def __init__( self ): + fakeMaximum = 4 + self.drunk = Drunk.Drunk( fakeMaximum ) + self.droneAndJump = Drunk.DroneAndJump( fakeMaximum ) + self.repeter = Drunk.Repeter( fakeMaximum ) + self.loopseg = Drunk.Loopseg( fakeMaximum ) + + self.harmonicDrunk = Drunk.Drunk( fakeMaximum ) + self.harmonicDroneAndJump = Drunk.DroneAndJump( fakeMaximum ) + self.harmonicRepeter = Drunk.Repeter( fakeMaximum ) + self.harmonicLoopseg = Drunk.Loopseg( fakeMaximum ) + + def chooseMethod( self, pattern ): + if pattern == 0: return self.drunk + elif pattern == 1: return self.droneAndJump + elif pattern == 2: return self.repeter + elif pattern == 3: return self.loopseg + + def harmonicChooseMethod( self, pattern ): + if pattern == 0: return self.harmonicDrunk + elif pattern == 1: return self.harmonicDroneAndJump + elif pattern == 2: return self.harmonicRepeter + elif pattern == 3: return self.harmonicLoopseg + + def drunkPitchSequence(self, length, parameters, table_pitch): + pitchMethod = self.chooseMethod( parameters.pattern ) + pitchSequence = [] + numberOfPitch = int( ( 1 - parameters.pitchRegularity ) * 10 + 1 ) + for i in range(numberOfPitch): + pitchSequence.append((table_pitch[pitchMethod.getNextValue(parameters.step, (len(table_pitch)-1))]) + GenerationConstants.DEFAULT_TONIQUE) + for i in range( length - numberOfPitch ): + position = i % numberOfPitch + pitchSequence.append( pitchSequence[ position ] ) + return pitchSequence + + def drumPitchSequence(self, length, parameters, drumPitch, table_pitch=None): + pitchSequence = [] + for i in range(length): + pitchSequence.append(drumPitch[ random.randint( 0, ( len( drumPitch ) - 1 ) ) ] ) + return pitchSequence + + def harmonicPitchSequence( self, rythmSequence, parameters, table_pitch, harmonicSequence ): + pitchSequence = [] + pitchMethod = self.harmonicChooseMethod( parameters.pattern ) + for onset in rythmSequence: + beat = int( onset / Config.TICKS_PER_BEAT ) + pitchSequence.append( ( table_pitch[ harmonicSequence[ beat ] [ pitchMethod.getNextValue(3, ( len( harmonicSequence[ beat ]) - 1) ) ]] ) + GenerationConstants.DEFAULT_TONIQUE ) + # pitchSequence.append( ( table_pitch[ random.choice( harmonicSequence[ beat ] ) ] ) + GenerationConstants.DEFAULT_TONIQUE ) + return pitchSequence + + |