Overview
Comment: | WIP on tld: 4b95fed Added support for rest notes |
---|---|
Timelines: | family | ancestors | stash |
Files: | files | file ages | folders |
SHA1: |
ec61af8387630ac120865f5e7a342c37 |
User & Date: | spiffytech@gmail.com on 2010-11-17 07:34:19 |
Other Links: | branch diff | manifest | tags |
Context
2010-11-17
| ||
07:34 | WIP on tld: 4b95fed Added support for rest notes Leaf check-in: ec61af8387 user: spiffytech@gmail.com tags: stash | |
07:34 | index on tld: 4b95fed Added support for rest notes check-in: ef35a8e9e0 user: spiffytech@gmail.com tags: stash | |
07:30 | Added support for rest notes Closed-Leaf check-in: aa88358397 user: spiffytech@gmail.com tags: tld | |
Changes
Modified cfg.py from [08a2f25157] to [91366ef5db].
︙ | ︙ | |||
42 43 44 45 46 47 48 | "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", "I2 IV u u", "I IV IV VI V u u" , "e"], | < | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | "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", "I2 IV u u", "I IV IV VI V u u" , "e"], "e": [""], }, "score": "u u u", }, "rhythm": { "csound_parameters": { "instrument": 1, |
︙ | ︙ | |||
72 73 74 75 76 77 78 | generated_score = generate_score(instr["score"], instr["grammars"]) # Fill in the scores by generating them based on the grammars score = parse.parse(generated_score) # Return Node/Chord objects # Generate timestamps for the notes t = instr_start_time for note in range(len(score)): score[note].time = t | < < < | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | generated_score = generate_score(instr["score"], instr["grammars"]) # Fill in the scores by generating them based on the grammars score = parse.parse(generated_score) # Return Node/Chord objects # Generate timestamps for the notes t = instr_start_time for note in range(len(score)): score[note].time = t score[note].duration *= tempo t += score[note].duration max_t = t if t > max_t else max_t composition[comp_name][instr_name]["score"] = score # Must be done after all note times keyed in, else you can't coordinate melodies with the rhythm chords for comp_name in progression.split(): for instr_name, instr in composition[comp_name].iteritems(): composition[comp_name][instr_name]["score"] = transliterate_score(composition[comp_name][instr_name]["score"], key) |
︙ | ︙ |
Modified todo.org from [109f37c970] to [8a5fa1e81b].
|
| | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | * Features [2/7] - [X] Top-down composition - [ ] Coordinate the melody and rhythm - [ ] Set maximum song length of movement - [ ] Set minimum song length of movement - [ ] Need to support all chord types - [X] Doesn't handle rest notes - [ ] Handle full ABC BNF (yeah, right...) * Bugs [4/5] - [X] TLD resets clock for each movement - [X] TLD doesn't accept an ordering for the movements - [X] Doesn't handle minor chords - [X] Calculated duration is absolute, not relative to BPM |
︙ | ︙ |