def test_from_Bar(self): self.assertEqual(LilyPond.from_Bar(self.commonbar), "{ \\time 4/4 \\key c \\major c'4 e'4 g'4 b'4 }") self.assertEqual(LilyPond.from_Bar(self.ebar), "{ \\time 4/4 \\key e \\major c'4 e'4 g'4 b'4 }") self.assertEqual(LilyPond.from_Bar(self.fbar), "{ \\time 6/8 \\key f \\major c'8 e'8 g'8 b'8 }")
def test_from_Composition(self): self.assertEqual(LilyPond.from_Composition(self.composition1), '\\header { title = "Untitled" composer = "" opus = "" } { { c\'4 e\'4 g\'4 b\'4 } }' ) self.assertEqual(LilyPond.from_Composition(self.composition2), '\\header { title = "Untitled" composer = "" opus = "" } { { c\'4 e\'4 g\'4 b\'4 } } { { c\'4 e\'4 g\'4 b\'4 } { \\key e \\major c\'4 e\'4 g\'4 b\'4 } }' )
def to_png(self): c = Composition() c.set_author(self.author) c.set_title(self.title) c.add_track(self.track) ly_string = LilyPond.from_Composition(c) #print ly_string LilyPond.to_png(ly_string, self.title)
def test_dotted_notes(self): self.assertEqual( LilyPond.from_NoteContainer(NoteContainer('C'), value.dots(8), standalone=False), "c'8.") self.assertEqual( LilyPond.from_NoteContainer(NoteContainer('C'), value.dots(4, 2), standalone=False), "c'4..")
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 sheetmusic(Gnumeric, range_ref, key = "C", upper = 4, lower = 4): ''' Convert the cells to sheet music. ''' left, top, right, bottom = u.parse_range_ref(Gnumeric, range_ref) values = u.range_rendered_text(Gnumeric, left, top, right, bottom, sheet = 1) #Gnumeric.functions['sheet'](range_ref)) t = to_track(values, key, upper, lower) lp = LilyPond.from_Track(t) return LilyPond.to_png(lp, '/tmp/track')
def test_from_NoteContainer(self): self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C")), "c'") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), 4), "c'4") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer(["C", "E"])), "<c' e'>") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer(["C", "E"]), 4), "<c' e'>4") # issue #37 self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), 16), "c'16") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), 16.0), "c'16") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), value.dots(16)), "c'16.") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), 0.25), "c'\\longa") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), 0.5), "c'\\breve")
def saveLily(self): docMingus = self._createMingus() filename = tkutil.ask_savefile(title='Save Lilypond', types=['.ly|LilyPond']) if not filename: return s = LilyPond.from_Composition(docMingus) f = open(filename, 'w') f.write(s) f.close()
def generate_picture(self, k): ''' Generates picture of the lines k ''' img_path = os.path.join(self.path, 'media', 'images') if not os.path.exists(img_path): os.makedirs(img_path) import tempfile tmp_dir = tempfile.mkdtemp() track = self.composition.tracks[k] ltrack = LilyPond.from_Track(track) tmp_file = os.path.join(tmp_dir, 'tmp_file') lily_str = li_header + ltrack LilyPond.save_string_and_execute_LilyPond(lily_str, tmp_file, '-fps') img_file = os.path.join(img_path, self.song_name + str(k) + '.png') gs_cmd = 'gs -dBATCH -dNOPAUSE -g2048x256 -q -r273.5 ' \ +'-sDEVICE=pngalpha -sOutputFile="%s" "%s"' \ % (img_file, tmp_file + '.ps') from subprocess import Popen p = Popen(gs_cmd, shell=True) sts = os.waitpid(p.pid, 0) os.unlink(tmp_file + '.ps') os.rmdir(tmp_dir)
def test_to_pdf(self): self.assert_( LilyPond.to_pdf( '{ %s }' % LilyPond.from_NoteContainer(NoteContainer('C'), value.dots(8)), 'pdftest first test')) self.assert_(LilyPond.to_pdf(LilyPond.from_Bar(self.tbar), 'pdftest2')) self.assert_(LilyPond.to_pdf(LilyPond.from_Bar(self.mbar), 'pdftest3'))
def test_from_NoteContainer(self): self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), standalone=False), "c'") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), 4, standalone=False), "c'4") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer(['C', 'E']), standalone=False), "<c' e'>") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer(['C', 'E']), 4, standalone=False), "<c' e'>4") # issue #37 self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), 16, standalone=False), "c'16") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), 16.0, standalone=False), "c'16") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), value.dots(16), standalone=False), "c'16.") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), 0.25, standalone=False), "c'\\longa") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), 0.5, standalone=False), "c'\\breve")
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 test_dotted_notes(self): self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), value.dots(8)), "c'8.") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer("C"), value.dots(4, 2)), "c'4..")
def test_from_Note(self): self.assertEqual(LilyPond.from_Note(Note('C'), standalone=False), "c'") self.assertEqual(LilyPond.from_Note(Note('C#'), standalone=False), "cis'") self.assertEqual(LilyPond.from_Note(Note('C##'), standalone=False), "cisis'") self.assertEqual(LilyPond.from_Note(Note('Cb'), standalone=False), "ces'") self.assertEqual(LilyPond.from_Note(Note('Cbb'), standalone=False), "ceses'") self.assertEqual(LilyPond.from_Note(Note('C', 0), standalone=False), 'c,,,') self.assertEqual(LilyPond.from_Note(Note('C', 1), standalone=False), 'c,,') self.assertEqual(LilyPond.from_Note(Note('C', 2), standalone=False), 'c,') self.assertEqual(LilyPond.from_Note(Note('C', 3), standalone=False), 'c' ) self.assertEqual(LilyPond.from_Note(Note('C', 4), standalone=False), "c'") self.assertEqual(LilyPond.from_Note(Note('C', 5), standalone=False), "c''") self.assertEqual(LilyPond.from_Note(Note('C', 6), standalone=False), "c'''") self.assertEqual(LilyPond.from_Note(Note('C', 7), standalone=False), "c''''")
def test_to_pdf(self): self.assert_(LilyPond.to_pdf('{ %s }' % LilyPond.from_NoteContainer(NoteContainer('C'), value.dots(8)), 'pdftest first test')) self.assert_(LilyPond.to_pdf(LilyPond.from_Bar(self.tbar), 'pdftest2')) self.assert_(LilyPond.to_pdf(LilyPond.from_Bar(self.mbar), 'pdftest3'))
def test_dotted_notes(self): self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), value.dots(8), standalone=False), "c'8.") self.assertEqual(LilyPond.from_NoteContainer(NoteContainer('C'), value.dots(4, 2), standalone=False), "c'4..")
def test_from_Track(self): self.assertEqual(LilyPond.from_Track(self.track1), "{ { c'4 e'4 g'4 b'4 } }") self.assertEqual( LilyPond.from_Track(self.track2), "{ { c'4 e'4 g'4 b'4 } { \\key e \\major c'4 e'4 g'4 b'4 } }")
def test_from_Composition(self): self.assertEqual(LilyPond.from_Composition(self.composition1),\ "\\header { title = \"Untitled\" composer = \"\" opus = \"\" } { { c'4 e'4 g'4 b'4 } }") self.assertEqual(LilyPond.from_Composition(self.composition2),\ "\\header { title = \"Untitled\" composer = \"\" opus = \"\" } { { c'4 e'4 g'4 b'4 } } { { c'4 e'4 g'4 b'4 } { \\key e \\major c'4 e'4 g'4 b'4 } }")
def test_from_Track(self): self.assertEqual(LilyPond.from_Track(self.track1), "{ { c'4 e'4 g'4 b'4 } }") self.assertEqual(LilyPond.from_Track(self.track2), "{ { c'4 e'4 g'4 b'4 } { \\key e \\major c'4 e'4 g'4 b'4 } }" )
def testWriteToLilypond(docMingus): s = LilyPond.from_Composition(docMingus) f = open('out.ly', 'w') f.write(s) f.close()
def test_from_Note(self): self.assertEqual(LilyPond.from_Note(Note('C'), standalone=False), "c'") self.assertEqual(LilyPond.from_Note(Note('C#'), standalone=False), "cis'") self.assertEqual(LilyPond.from_Note(Note('C##'), standalone=False), "cisis'") self.assertEqual(LilyPond.from_Note(Note('Cb'), standalone=False), "ces'") self.assertEqual(LilyPond.from_Note(Note('Cbb'), standalone=False), "ceses'") self.assertEqual(LilyPond.from_Note(Note('C', 0), standalone=False), 'c,,,') self.assertEqual(LilyPond.from_Note(Note('C', 1), standalone=False), 'c,,') self.assertEqual(LilyPond.from_Note(Note('C', 2), standalone=False), 'c,') self.assertEqual(LilyPond.from_Note(Note('C', 3), standalone=False), 'c') self.assertEqual(LilyPond.from_Note(Note('C', 4), standalone=False), "c'") self.assertEqual(LilyPond.from_Note(Note('C', 5), standalone=False), "c''") self.assertEqual(LilyPond.from_Note(Note('C', 6), standalone=False), "c'''") self.assertEqual(LilyPond.from_Note(Note('C', 7), standalone=False), "c''''")
def test_to_pdf(self): self.assert_(LilyPond.to_pdf("{ %s }" % LilyPond.from_NoteContainer(NoteContainer("C"), value.dots(8)), "pdftest first test")) self.assert_(LilyPond.to_pdf(LilyPond.from_Bar(self.tbar), "pdftest2")) self.assert_(LilyPond.to_pdf(LilyPond.from_Bar(self.mbar), "pdftest3"))
firstbar = Bar(meter=(3,4)) track.add_bar(firstbar) print track.add_notes(['C-5'], 4.0) print track.add_notes(['E-5'], 2.0) print track.add_notes(['C-4','D-4'], 8.0) print track.add_notes(['C-4','D-4','F-4'], 8.0) print track.add_notes([], 8.0) #treated as rest? print track.add_notes(['C-4','D-4'], 8.0) print track.add_notes(['C-4','D-4'], 8.0) print track.add_notes(['C-4','D-4'], 8.0) print track.add_notes(['C-4','D-4'], 24.0) print track.add_notes(['C-4','D-4'], 24.0) print track.add_notes(['C-4','D-4'], 24.0) print track.add_notes(['C-4','D-4'], 8.0) s = MusicXML.from_Composition(comp) f=open('out.xml','w') f.write(s) f.close() s=LilyPond.from_Composition(comp) f=open('out.ly','w') f.write(s) f.close() #4.0 qtr #2.0 half #1.0 whole
def test_from_Suite(self): LilyPond.from_Suite(None)
def test_from_Note(self): self.assertEqual(LilyPond.from_Note(Note('C')), "c'") self.assertEqual(LilyPond.from_Note(Note('C#')),"cis'") self.assertEqual(LilyPond.from_Note(Note('C##')),"cisis'") self.assertEqual(LilyPond.from_Note(Note('Cb')),"ces'") self.assertEqual(LilyPond.from_Note(Note('Cbb')),"ceses'") self.assertEqual(LilyPond.from_Note(Note('C', 0)),"c,,,") self.assertEqual(LilyPond.from_Note(Note('C', 1)),"c,,") self.assertEqual(LilyPond.from_Note(Note('C', 2)),"c,") self.assertEqual(LilyPond.from_Note(Note('C', 3)),"c") self.assertEqual(LilyPond.from_Note(Note('C', 4)),"c'") self.assertEqual(LilyPond.from_Note(Note('C', 5)),"c''") self.assertEqual(LilyPond.from_Note(Note('C', 6)), "c'''") self.assertEqual(LilyPond.from_Note(Note('C', 7)), "c''''")