Example #1
0
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)
Example #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')
Example #3
0
 def generate_base_container(self, key):
     return NoteContainer(Note(scales.diatonic(key)[0], 2))
Example #4
0
 def generate_triad_container(self, number, key):
     scale = scales.diatonic(key)
     pos = number % len(scale)
     triad = chords.triad(scale[pos], key)
     return NoteContainer(triad)
 def generate_base_container(self, key):
     return NoteContainer(Note(scales.diatonic(key)[0], 2))
 def generate_triad_container(self, number, key):
     scale = scales.diatonic(key)
     pos = number % len(scale)
     triad = chords.triad(scale[pos], key)
     return NoteContainer(triad)