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)
示例#2
0
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')
示例#3
0
	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)
示例#4
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)
示例#5
0
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)
示例#6
0
 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
示例#8
0
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)
示例#9
0
文件: blues.py 项目: pmallory/Blues
                   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)
示例#12
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)
示例#13
0
文件: to_midi.py 项目: djfoote/atunal
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
示例#14
0
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)