Exemple #1
0
 def make_lily_scale(self, root='A'):
     lilypond_music = """<lilypond relative=1 verbatim>
         \clef bass \key %s \major %s
     </lilypond>
     """ % (root,
            str(' '.join(["%s," % root] + scales.ionian(root)[1:] + [root])))
     return lilypond_music.replace('#', 'is').lower()
Exemple #2
0
def blues_scale(key):
    """Return a blues scale in a given key"""
    major_scale = list(scales.ionian(key))

    #Use mingus.containers.Note to represent notes so we have octave info
    for i, note in enumerate(major_scale):
        major_scale[i] = Note(note)
        if i>0 and major_scale[i]<major_scale[i-1]:
            major_scale[i].octave_up()

    # mingus.Scales is dumb, this is a workaround =/
    fifth = Note(major_scale[4])
    major_scale[2].diminish()
    major_scale[4].diminish()
    major_scale[6].diminish()
    seventh = Note(major_scale[0])
    seventh.octave_up()

    #assemble the blues scale
    blues_scale = [major_scale[0],
                   major_scale[2],
                   major_scale[3],
                   major_scale[4],
                   fifth,
                   major_scale[6],
                   seventh]

    return blues_scale
Exemple #3
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)
Exemple #4
0
def get_scale(basetone, mode):	
	scale = []
	
	if mode == "major":
		scale = scales.major(basetone)
	if mode == "minor":
		scale =scales.minor(basetone)
	if mode == "ionian":
		scale = scales.ionian(basetone)
	if mode == "dorian":
		scale = scales.dorian(basetone)
	if mode == "phrygian":
		scale = scales.phrygian(basetone)
	if mode == "lydian":
		scale = scales.lydian(basetone)
	if mode == "mixolydian":
		scale = scales.mixolydian(basetone)
	if mode == "aeolian":
		scale = scales.aeolian(basetone)
	if mode == "locrian":
		scale = scales.locrian(basetone)
	# TODO implement chromatic scales
	
	return scale
 def Notes(self):
     """Returns a list of the notes in the scale"""
     return scales.ionian(self.root)