Overview
Comment: | Now supports minor chords |
---|---|
Timelines: | family | ancestors | descendants | both | tld |
Files: | files | file ages | folders |
SHA1: |
f02f66468f3954b37cc4ffd28fce21ea |
User & Date: | spiffytech@gmail.com on 2010-11-17 05:32:12 |
Other Links: | branch diff | manifest | tags |
Context
2010-11-17
| ||
06:27 | TLD now accepts ordering of movements. Also, fixed bug that caused all movements and instruments to play simultaneously. check-in: db1df2f460 user: spiffytech@gmail.com tags: tld | |
05:32 | Now supports minor chords check-in: f02f66468f user: spiffytech@gmail.com tags: tld | |
00:07 | Added support for top-down composition check-in: 7c7ce6adb8 user: spiffytech@gmail.com tags: tld | |
Changes
Modified cfg.py from [f6edc4689f] to [79cec58b40].
︙ | ︙ | |||
8 9 10 11 12 13 14 | import parse def main(): key = "A" composition = { "a": { # Movement block 'a' for reuse throughout the piece | | | | | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import parse def main(): key = "A" composition = { "a": { # Movement block 'a' for reuse throughout the piece # "melody": { # Instrument 'melody' # "csound_parameters": { # "instrument": 1, # }, # "grammars": { # Notes for this instrument to use in this piece # "u": ["I V V V I I IV u u", "I IV u u", "I VII IV u u" , "e"], # "e": [""], # }, # "score": "u u u", # }, "rhythm": { "csound_parameters": { "instrument": 1, }, "grammars": { # "u": ['"I" "ii"/4 "ii"/4 "IV"/2 "V"2 "IV" "I" u u', '"I" "vii" "IV" u u', '"I" "v" "IV" u u', "e"], "u": ['"i" "I" "ii" "II" "v" "V" u', "e"], "e": [""] }, "score": "u u u", }, }, # "b": { # "melody": { # Instrument 'melody' # "csound_parameters": { # "instrument": 1, # }, # "grammars": { # Notes for this instrument to use in this piece # "u": ["I V I I/2 IV/2 u u", "I4 IV u u", "I IV IV VI V u u" , "e"], # "e": [""], # }, # "score": "u u u", # }, # "rhythm": { # "csound_parameters": { # "instrument": 1, # }, # "grammars": { # "u": ['"I" "IV"/2 "V"2 "IV" "I" u u', '"I" "VII" "IV" u u', '"I" "V" "IV" u u', "e"], # "e": [""] # }, # "score": "u u u", # }, # }, } for comp_name, comp in composition.iteritems(): for instr_name, instr in comp.iteritems(): generated_score = generate_score(instr["score"], instr["grammars"]) # Fill in the scores by generating them based on the grammars # composition[comp_name][instr_name][grammar]["score"] = parse.parse(generate_score) # Return Node/Chord objects score = parse.parse(generated_score) # Return Node/Chord objects |
︙ | ︙ | |||
125 126 127 128 129 130 131 | for i in range(len(score)): if isinstance(score[i], parse.Note): score[i].value = scale[scale_conversion[score[i].value]-1] else: chord = [] root_note_index = scale.index(key) + scale_conversion[score[i].value] chord.append(scale[root_note_index]) | > > > | | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | for i in range(len(score)): if isinstance(score[i], parse.Note): score[i].value = scale[scale_conversion[score[i].value]-1] else: chord = [] root_note_index = scale.index(key) + scale_conversion[score[i].value] chord.append(scale[root_note_index]) if score[i].chord_type == "m": # Minor chords, flat the 3rd chord.append(scale[(root_note_index+2) % 8]) else: chord.append(scale[(root_note_index+3) % 8]) chord.append(scale[(root_note_index+5) % 8]) score[i].chord = chord return score def generate_csound_score(score): csound_note_values = { |
︙ | ︙ |
Modified parse.py from [503badc6f2] to [b7fd05b171].
︙ | ︙ | |||
100 101 102 103 104 105 106 | p[0] = new_note def p_chord(p): '''chord : QUOTE pitch QUOTE | QUOTE pitch CHORD_TYPE QUOTE ''' | > > | | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | p[0] = new_note def p_chord(p): '''chord : QUOTE pitch QUOTE | QUOTE pitch CHORD_TYPE QUOTE ''' pitch = p[2].value pitch = pitch.upper() p[0] = Chord(value=pitch) if len(p) > 3: p[0].chord_type = p[3] def p_accidental(p): '''pitch : ACCIDENTAL pitch ''' |
︙ | ︙ |
Modified test.sco from [da39a3ee5e] to [7126d43817].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | f1 0 256 10 1 0 3 ; sine wave function table i2 0.000000 1 7000 7.11 7.11 0 6 i2 0.000000 1 7000 7.04 7.04 0 6 i2 0.000000 1 7000 8.08 8.08 0 6 i2 1.000000 1 7000 8.11 8.11 0 6 i2 1.000000 1 7000 8.04 8.04 0 6 i2 1.000000 1 7000 8.08 8.08 0 6 i2 2.000000 1 7000 8.01 8.01 0 6 i2 2.000000 1 7000 8.06 8.06 0 6 i2 2.000000 1 7000 8.09 8.09 0 6 i2 3.000000 1 7000 7.01 7.01 0 6 i2 3.000000 1 7000 7.06 7.06 0 6 i2 3.000000 1 7000 8.09 8.09 0 6 i2 4.000000 1 7000 7.06 7.06 0 6 i2 4.000000 1 7000 7.09 7.09 0 6 i2 4.000000 1 7000 7.01 7.01 0 6 i2 5.000000 1 7000 8.06 8.06 0 6 i2 5.000000 1 7000 7.09 7.09 0 6 i2 5.000000 1 7000 7.01 7.01 0 6 i2 6.000000 1 7000 7.11 7.11 0 6 i2 6.000000 1 7000 7.04 7.04 0 6 i2 6.000000 1 7000 8.08 8.08 0 6 i2 7.000000 1 7000 8.11 8.11 0 6 i2 7.000000 1 7000 7.04 7.04 0 6 i2 7.000000 1 7000 7.08 7.08 0 6 i2 8.000000 1 7000 8.01 8.01 0 6 i2 8.000000 1 7000 8.06 8.06 0 6 i2 8.000000 1 7000 7.09 7.09 0 6 i2 9.000000 1 7000 8.01 8.01 0 6 i2 9.000000 1 7000 7.06 7.06 0 6 i2 9.000000 1 7000 8.09 8.09 0 6 i2 10.000000 1 7000 8.06 8.06 0 6 i2 10.000000 1 7000 7.09 7.09 0 6 i2 10.000000 1 7000 8.01 8.01 0 6 i2 11.000000 1 7000 8.06 8.06 0 6 i2 11.000000 1 7000 8.09 8.09 0 6 i2 11.000000 1 7000 8.01 8.01 0 6 i2 12.000000 1 7000 7.11 7.11 0 6 i2 12.000000 1 7000 7.04 7.04 0 6 i2 12.000000 1 7000 8.08 8.08 0 6 i2 13.000000 1 7000 7.11 7.11 0 6 i2 13.000000 1 7000 8.04 8.04 0 6 i2 13.000000 1 7000 7.08 7.08 0 6 i2 14.000000 1 7000 7.01 7.01 0 6 i2 14.000000 1 7000 7.06 7.06 0 6 i2 14.000000 1 7000 7.09 7.09 0 6 i2 15.000000 1 7000 8.01 8.01 0 6 i2 15.000000 1 7000 8.06 8.06 0 6 i2 15.000000 1 7000 7.09 7.09 0 6 i2 16.000000 1 7000 8.06 8.06 0 6 i2 16.000000 1 7000 8.09 8.09 0 6 i2 16.000000 1 7000 7.01 7.01 0 6 i2 17.000000 1 7000 7.06 7.06 0 6 i2 17.000000 1 7000 7.09 7.09 0 6 i2 17.000000 1 7000 7.01 7.01 0 6 |
Modified todo.org from [9bec386f24] to [0747c315e6].
|
| | | > | > > | > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | * Features [1/4] - [X] Top-down composition - [ ] Transition the melody between chords appropriately - [ ] Set maximum song length - [ ] Need to support all chord types * Bugs [1/5] - [ ] TLD resets clock for each movement - [ ] TLD doesn't accept an ordering for the movements - [X] Doesn't handle minor chords - [ ] Duration syntax is absolute, not relative to BPM - [ ] Chords don't respect octaves * Structure [0/2] - [ ] Chords should be composed of Notes, not ordinary arrays - [ ] Generate score with proper generation tools |