def generate_composition(pattern, progression_type, nb_bars, key="C", rythm=60): fluidsynth.init("198_u20_Electric_Grand.SF2") # permet d'initialiser l'instrument newComposition = Composition() progression_list = on_progression_type_change(progression_type, nb_bars) left_hand = generate_pattern(progression_list, key, pattern, nb_bars) newComposition.add_track(left_hand) MidiFileOut.write_Composition("myComposition.mid", newComposition, rythm, False)
def index(): if request.method == 'POST': keys = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"] meters = [(2,2), (2,4), (3,4), (4,4)] bars = int(request.form['bars']) key = keys[int(request.form['key'])] meter = meters[int(request.form['meter'])] scale = int(request.form['scale']) composition = Composition() composition.set_author("by givemeasheet.com", "*****@*****.**") composition.set_title("%d bars exercise in %s" % (bars, key)) track = Track(Guitar()) dificulty = 3 if scale == 0: scale = scales.diatonic(key) scale_name = "Natural Major" elif scale == 1: scale = scales.natural_minor(key) scale_name = "Natural Minor" elif scale == 2: scale = scales.harmonic_minor(key) scale_name = "Minor Harmonic" elif scale == 3: scale = scales.melodic_minor(key) scale_name = "Minor Melodic" composition.subtitle = scale_name for bar in range(0,bars): bar = Bar(key, meter) while not bar.is_full(): # Random note index = randrange(dificulty) note = Note(scale[index]) possibles = get_possibles(bar) bar.place_notes(note, possibles[randrange(len(possibles))]) track.add_bar(bar) composition.add_track(track) l = LilyPond.from_Composition(composition) u = uuid.uuid1() file_name = "/var/www/givemeasheet/givemeasheet/static/sheets/%s" % u.hex LilyPond.save_string_and_execute_LilyPond(l, file_name, "-fpng") sheet="/static/sheets/%s.png" % os.path.basename(file_name) midi="/static/sheets/%s.midi" % os.path.basename(file_name) MidiFileOut.write_Composition("%s.midi" % file_name, composition) return render_template('index.html', sheet=sheet, midi=midi) else: return render_template('index.html')
def output_midi(self): c = Composition() print print "Writing MIDI file %s..." % self.output_file for s in self.instruments: if hasattr(s, 'bar'): s.track + s.bar c.add_track(s.track) MidiFileOut.write_Composition(self.output_file, c, self.bpm , 0)
def save_midi( self ): '''Opens save dialog, converts progression list to chords in track, saves track midi. ''' file_name = tkFileDialog.asksaveasfilename() ch = progressions.to_chords(self.get_progression(self.progression), self.get_key()) nc = map(NoteContainer, ch) t = Track() for chord in nc: t.add_notes(chord) MidiFileOut.write_Track( file_name,t)
def main(args): if (len(args) == 0): print("Input followed by a list of chords seperated by spaces") else: b = "" for i in range(0, len(_flats)): newChords = transposeChords(args, i) a = " ".join(newChords) b += " " + a[0] print(a[0]) print("This is " + b) nc = NoteContainer([b]) MidiFileOut.write_NoteContainer("test.mid", nc)
def on_key_press(self, symbol, modifiers): if symbol == pyglet.window.key.M: bar = self.grid.grid_to_bar() MidiFileOut.write_Bar('life.mid', bar) lps = LilyPond.from_Bar(bar) print lps elif symbol == pyglet.window.key.R: self.grid.randomize() elif symbol == pyglet.window.key.P: self.paused = not self.paused self.p_label.text = 'P - play' if self.paused else 'P - pause' elif symbol == pyglet.window.key.C: self.grid.clear() elif symbol == pyglet.window.key.E: self.evolution_style += 1 if self.evolution_style >= 3: self.evolution_style = 0 self.e_label.text = 'E - evolution | ' + ['off', 'on', 'fast'][self.evolution_style]
def generate_composition(pattern_index, progression_type, nb_bars, mode='none', key="C", rythm=60): fluidsynth.init("198_u20_Electric_Grand.SF2") # permet d'initialiser l'instrument newComposition = Composition() progression_list = on_progression_type_change(progression_type, nb_bars) # truc pour la main droite if nb_bars == 1 : phrase_list = choose_phrases(key, mode, nb_bars) right_hand = use_phrase(phrase_list, progression_list, nb_bars, pattern_index, mode='none', key="C") else : chorus = generate_chorus(progression_list, pattern_index, mode, key) #chorus retourne : une phrase de debut, une phrase de fin, 3 bars fixes phrase_list = choose_first_phrases(nb_bars, key, mode, chorus[1], chorus[2], pattern_index) right_hand = generate_long_right_hand(phrase_list, progression_list, nb_bars, pattern_index, mode, key, chorus) newComposition.add_track(right_hand) left_hand = generate_pattern(progression_list, key, pattern_index, nb_bars) newComposition.add_track(left_hand) MidiFileOut.write_Composition("myCompo.mid", newComposition, rythm, False) return newComposition
c.augment() #升半音 c.diminish() #降半音 c.remove_redundant_accidentals() #清理多余升降号(只能成对清理,烂) #谱容器 from mingus.containers import NoteContainer #创建谱容器对象(继承列表,完全可以按列表操作,不用看下面的) n = NoteContainer(['A-3', 'C-5', 'B-4']) n.add_note('F-1') # 0位加音 n.remove_note('B', 4) #删音 n.empty() #清空 #乐器音色 from mingus.containers.instrument import Instrument, Piano, Guitar #创建乐器对象 i = Instrument() i.range #乐器音域 i.set_range((Note('C-2'), Note('E-4'))) #设定音域 i.note_in_range('F-4') #判断音是否在乐器音域内 #音轨 from mingus.containers import Track t = Track(i) #乐器放入音轨容器 #MIDI音乐播放(安装困难) #from mingus.midi import fluidsynth #fluidsynth.init("soundfont.SF2") #fluidsynth.play_Note( Note('C-5') ) from mingus.midi import MidiFileOut MidiFileOut.write_NoteContainer('test.mid', n)
major_scale[6], seventh] return blues_scale def down_octave(bar): for chord in [beat[2] for beat in bar]: for note in chord: note.octave_down() return bar if __name__ == '__main__': key = 'C' rhythm_track = Track() melody_track = Track() progression = standard_progression() for chord in progression: rhythm_track.add_bar(make_rhythm_bar(chord, key)) melody_track.add_bar(make_melody_bar(key)) composition = Composition() composition.add_track(melody_track) composition.add_track(rhythm_track) MidiFileOut.write_Composition('blues.mid', composition)
def save_as_midi(name, composition, rythm): MidiFileOut.write_Composition(name+".mid", composition, rythm, False)
def export_song(self, filename): MidiFileOut.write_Track(filename, self.song, self.bpm, 0)
def midi(Gnumeric, fn, range_string, key = "C", upper = 4, lower = 4, bpm = 120): 'Convert the cells to MIDI.' top, left, bottom, right = u.parse_range_string(range_string) MidiFileOut.write_Track(fn, to_track(u.rendered_text(Gnumeric, top, left, bottom, right), key, upper, lower), bpm = bpm)
chords_bars = [] for chord in chords_list: chord_nc = NoteContainer(chords.from_shorthand(chord)) bar = Bar() bar.place_notes(chord_nc, 1) chords_bars.append(bar) solo_track = Track() chords_track = Track() for _ in range(num_progressions): for bar in generate_solo(chords_list): solo_track.add_bar(bar) for bar in chords_bars: chords_track.add_bar(bar) guitar = MidiInstrument() guitar.instrument_nr = 26 solo_track.instrument = guitar piano = MidiInstrument() piano.instrument_nr = 0 chords_track.instrument = piano song = Composition() song.add_track(solo_track) song.add_track(chords_track) MidiFileOut.write_Composition("test.mid", song) filename = "test.mid" call("timidity -Ow {0}".format(filename), shell=True) # fluidsynth -F test.wav -i -n -T wav soundfont.sf2 test.mid
from improv import generate_solo from mingus.midi import MidiFileOut from mingus.containers import Bar bar = generate_solo(["Am7"])[0] MidiFileOut.write_Bar("test_bar.mid", bar)