improvisation template
sugizo opened this issue · 0 comments
Description
nice to have improvisation template to help guitarist play melody with more option they want
it's base on relationship between arpeggio and scale (semitone based relationship)
realize that fretboard.app already have this kind of feature but it's manual (guitarist must need know the music theory about the relationship) n sometime guitarist have no idea to improve melody without this knowledge
Implementation details
similar like 'Add new scale/arpeggio' on fretboard.app but this one 'Add from template' then can choose which template that will load
logically in pydal (web2py or py4web) can use contains e.g.
>>> db.define_table('scale',
... Field('name'),
... Field('semitones', 'list:string'))
<Table scale (id, name, semitones)>
>>> db.scale.semitones.requires = IS_IN_SET(('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'))
>>> db.scale.insert(name='Major Pentatonic', semitones=['0', '2', '4', '7', '9'])
1
>>> major_chords = db(db.scale.semitones.contains('0', '4', '7')).select()
>>> for item in major_chords:
... print item.name, item.semitones
...
Major Pentatonic ['0', '2', '4', '7', '9']
ref
http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#list-type-and-contains
Examples
with this info will give guitarist an idea how to improvise melody
case
song start in C Major (0, 4, 7), then base on this feature guitarist can load the scales, and remove some that they don't want
green indicate the improvised note (base on the chord or scale play in a song)
can provide another table if you interest, or can learn the logic behind contains in pydal to make computer do the 'grouping' job
thanks