Overview
Comment: | Program now generates a single voice with a I IV V pattern and spits out (among other things) the csound-ified score |
---|---|
Timelines: | family | ancestors | descendants | both | ply |
Files: | files | file ages | folders |
SHA1: |
338933c1a80fab31753af65cc5208065 |
User & Date: | spiffytech@gmail.com on 2010-11-12 20:00:57 |
Other Links: | branch diff | manifest | tags |
Context
2010-11-12
| ||
20:12 | Moved all logic into neat, orderly functions. Now prints only the csound score portion. check-in: 6a17d4d36a user: spiffytech@gmail.com tags: ply | |
20:00 | Program now generates a single voice with a I IV V pattern and spits out (among other things) the csound-ified score check-in: 338933c1a8 user: spiffytech@gmail.com tags: ply | |
2010-11-04
| ||
20:07 | Generates a score randomly. Too little guarantee of program length (lots of empty or single-phrase strings) check-in: 6bfc2449ff user: spiffytech@gmail.com tags: ply, trunk | |
Changes
Modified cfg.py from [8ccb7c15cb] to [73244ab69d].
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/usr/bin/env python import os import random import sys import time random.seed(time.time()) grammars = { "u": ["I V I IV u", "e"], "e": [""], } | > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > < < | > > > > > | > > > > > > | 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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #!/usr/bin/env python import os import random import sys import time random.seed(time.time()) grammars = { "u": ["I V I IV u", "e"], "e": [""], } # Generate the scale for the key we're in comp_key = "C" notes = ["A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"] scale = [comp_key] pos = notes.index(comp_key) progression = [2,2,1,2,2,2,1] for p in progression: pos = (pos + p) % 12 scale.append(notes[pos]) scale_conversion = { "I": 1, "II": 2, "III": 3, "IV": 4, "V": 5, "VI": 6, "VII": 7, "VIII": 8, } csound_note_values = { "C": "00", "C#": "01", "D": "02", "D#": "03", "E": "04", "F": "05", "F#": "06", "G": "07", "F#": "08", "A": "09", "A#": "10", "B": "11", } score = "u u u" print score while 1: found_substitution = False for key,value in grammars.iteritems(): if score.find(key) != -1: found_substitution = True while score.find(key) != -1: score = score.replace(key, random.choice(grammars[key]), 1) print score # time.sleep(.25) if found_substitution is False: break csound_score = [] for token in score.split(): csound_score.append(scale[scale_conversion[token]-1]) print csound_score t = 0 for token in csound_score: note = csound_note_values[token] print "i2 %f 2 7000 %d.%s %d.%s 0 6" % (t, random.choice([8,9]), note, random.choice([8,9]), note) t += .25 |
Added test.orc version [a26a1f1a08].
> > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | sr=44100 ksmps=20 nchnls=1 instr 1 asound oscili p4, cpspch(p5), p6 out asound endin instr 2 asound pluck p4, cpspch(p5), cpspch(p6), p7, p8 p9 p10 out asound endin instr 3 asound pluck p4, cpspch(p5), cpspch(p6), p7, p8 p9 p10 out asound endin |
Added test.sco version [24ff5724a8].
> > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 | f1 0 256 10 1 0 3 ; sine wave function table i2 0.000000 2 7000 9.00 8.00 0 6 i2 0.250000 2 7000 9.07 9.07 0 6 i2 0.500000 2 7000 8.00 9.00 0 6 i2 0.750000 2 7000 9.05 8.05 0 6 i2 1.000000 2 7000 9.00 8.00 0 6 i2 1.250000 2 7000 9.07 9.07 0 6 i2 1.500000 2 7000 9.00 9.00 0 6 i2 1.750000 2 7000 9.05 8.05 0 6 |