def make_song(self, p_nothing=0.6): for i in range(self.beats - 100): if i > self.chord_done: self.is_playing_chord = False self.is_playing_arp = False volume = random.randrange(70, 100) duration = random.randrange(1, 16) randchoice = random.random() if randchoice <= self.p_chord and not (self.one_handed and self.is_playing_chord): self.is_playing_chord = True self.chord_done = i + duration chord = self.note.make_chord() if random.random() < 0.7: duration = random.randrange(2, 6) self.chord_done = i + duration self.is_playing_arp = True for j, note in enumerate(chord): d = j * duration / len(chord) self.midi.addNote(self.track, 1, note, i + d, 2, volume + random.randrange(-20, 20)) else: for note in chord: self.midi.addNote(self.track, 0, note, i, duration, volume + random.randrange(-20, 20)) elif randchoice <= p_nothing: self.midi.addNote(self.track, 0, self.note.make_note(), i, duration, volume) self.writeMidi()
def make_song(self, p_nothing=0.6): for i in range(self.beats - 100): volume = random.randrange(70, 100) duration = random.randrange(1, 16) randchoice = random.random() if randchoice <= self.p_chord: for note in self.note.make_chord(): self.midi.addNote(self.track, 0, note, i, duration, volume + random.randrange(-20, 20)) elif randchoice <= p_nothing: self.midi.addNote(self.track, 0, self.note.make_note(), i, duration, volume) self.writeMidi()
def add_note(self, note, time, duration, volume=random.randint(85, 100), channel=0): self.midi.addNote(self.track, channel, note, time, duration, volume + random.randrange(-20, 20))
def add_chord(self, chord, time, duration, volume=random.randint(85, 100), channel=1): for j, note in enumerate(chord): self.midi.addNote(self.track, j % 12, note % 127, time, duration, volume + random.randrange(-20, 20))
def add_arpeggio(self, chord, time, duration, volume=random.randint(85, 100), channel=2): for j, note in enumerate(chord): d = j * duration / len(chord) print('note', note, 'dur', d) self.midi.addNote(self.track, j % 12, note % 127, time + d, duration / len(chord), volume + random.randrange(-20, 20))
def add_notes(self, notes, time, volume=random.randint(85, 100), channel=2): d = 0 j = 0 for note, dur in notes: d += dur j += 1 print(f"Note {note} dur {dur}") self.midi.addNote(self.track, j % 12, note % 127, time + d, dur, volume + random.randrange(-20, 20))