def compose(self, mood): self.tonality = {'key': 0, 'mode': 'Major'} melody_param = self.generate_melody_parameter(mood) melody_track = Generator.generate_track([], melody_param['tempo'] * self.tempo_multiplier) harmony_param = self.generate_harmony_parameter(mood) # self.adjusted_progressions = Composer.adjust_progression(self.progression_notations, self.annotated_important_notes, harmony_param) harmony_annotated_notes = self.generate_harmony(harmony_param) harmony_track = Generator.generate_track( harmony_annotated_notes, harmony_param['tempo'] * self.tempo_multiplier) harmony_track_split = MIDI.separate_track(harmony_track, num_track=2) pattern = MIDI.new_pattern() pattern.append(melody_track) for track in harmony_track_split: pattern.append(track) # set tonality if melody_param['mode'][0] > 0: tonality = {'mode': 'Major', 'key': self.tonality['key']} elif melody_param['mode'][0] < 0: tonality = {'mode': 'Minor', 'key': self.tonality['key']} else: tonality = { 'mode': self.tonality['mode'], 'key': self.tonality['key'] } (instruments, seed_change) = Instrument.get_instruments(mood, Generator.seed) Generator.seed_change_tmp = seed_change tonality_name_major = [ 'C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B' ] tonality_name_minor = [ 'C', 'C#', 'D', 'Eb', 'E', 'F', 'F#', 'G', 'G#', 'A', 'Bb', 'B' ] if tonality['mode'] == 'Major': print tonality_name_major[tonality['key']], 'Major' else: print tonality_name_minor[tonality['key']], 'Minor' return (pattern, tonality, instruments)