def do_scale(options, scale): g = Guitar(frets=options.frets) scope = get_scope(options, g) if options.mode == "major": notes = scales.diatonic(scale) elif options.mode == "minor": notes = scales.harmonic_minor(scale) elif options.mode == "natural_minor": notes = scales.natural_minor(scale) elif options.mode == "harmonic_minor": notes = scales.harmonic_minor(scale) elif options.mode == "melodic_minor": notes = scales.melodic_minor(scale) elif options.mode == "ionian": notes = scales.ionian(scale) elif options.mode == "dorian": notes = scales.dorian(scale) elif options.mode == "phrygian": notes = scales.phrygian(scale) elif options.mode == "lydian": notes = scales.lydian(scale) elif options.mode == "mixolydian": notes = scales.mixolydian(scale) elif options.mode == "aeolian": notes = scales.aeolian(scale) elif options.mode == "locrian": notes = scales.locrian(scale) lines = g.get_notes(notes, scope) for line in lines: print(line)
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 test_determine(self): self.assertEqual(['C ionian'], scales.determine([ 'C', 'D', 'E', 'F', 'G', 'A', 'B', ])) self.assertEqual(['C aeolian', 'C natural minor'], scales.determine(scales.natural_minor('C')))
def Notes(self): """Returns a list of the notes in the scale""" return scales.natural_minor(self.root)
def test_determine(self): self.assertEqual(["C ionian"], scales.determine(["C", "D", "E", "F", "G", "A", "B"])) self.assertEqual(["C aeolian", "C natural minor"], scales.determine(scales.natural_minor("C")))