Changes In Branch develop Through [0c3fb3e27f] Excluding Merge-Ins
This is equivalent to a diff from 689adc054e to 0c3fb3e27f
|
2011-11-15
| ||
| 22:12 | Removed useless samples and test csound files now that we're no longer using csound check-in: 680f187463 user: brian tags: develop | |
| 22:09 | Replaced csound support with midi support check-in: 0c3fb3e27f user: brian tags: develop | |
| 22:08 | Successfully got the program to output a MIDI file instead of a csound score Closed-Leaf check-in: befd61cab9 user: brian tags: feature/midi | |
|
2011-11-07
| ||
| 01:39 | Altered the sample-based instruments to ine Csound string formatting instead of a billion if clauses to choose what file to play check-in: 4f872339ff user: brian tags: develop | |
|
2011-06-12
| ||
| 20:32 | Made some changes to the parser. Don't remember what. Leaf check-in: 87435601e4 user: brian tags: master | |
| 20:31 | Create new branch named "develop" check-in: 9f4c4666c5 user: brian tags: develop | |
|
2011-02-10
| ||
| 23:50 | Program generates a render order for the instruments based on their sync order check-in: 689adc054e user: brian@linux-85dd.site tags: master | |
| 22:34 | Added lexical support for parens instead of quotes for chords, cleaned up the yacc parser, added lex tokens for syncopation check-in: 702d933446 user: brian@linux-85dd.site tags: master | |
Modified cfg.orc
from [9f49be1cae]
to [db9c923851].
1 2 | sr=44100 ksmps=20 | | > > > > > > > > > > > > > > | | | > > > > > > > > > > | > | > > > > > > > > > > > > > > > > > > > > > | 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 |
sr=44100
ksmps=20
nchnls=2
;isf sfload "samples/acoustic_grand_piano_ydp.sf2"
isf sfload "samples/default.sf2"
sfplist isf
sfpassign 0, isf
;gipre sfpreset 0, 0, isf, 0
;gienginenum1 fluidEngine
;isfnum1 fluidLoad "samples/default.sf2"
instr 1
; kcps = 220
; icps = 220
; ifn = 0
; imeth = p4
;; asig pluck 0.7, cpspch(p5), cpspch(p6), ifn, imeth, .1, 10
asig pluck p4, cpspch(p5), cpspch(p6), p7, p8 p9 p10
outs asig,asig
endin
instr 2
kenv linen p4, .1, p3, .2; envelope
asound oscili kenv, cpspch(p5), p6; oscillator
outs asound,asound
endin
instr 3
; pylassigni "note", p5
; pylruni "sample_file = 'samples/bass/%.2f.wav' % note"
; Ssample_file pylevali "sample_file"
Ssample_file sprintf "samples/bass/%.2f.wav", p5
asig diskin2 Ssample_file, 1
outs asig,asig
endin
instr 4
aFMinst foscili p4, cpspch(p5), p6, p7, p8, p9
endin
;instr 5
; Ssample_file sprintf "samples/violin/%.2f.wav", p5
; asig mp3in Ssample_file, 1
; outs asig,asig
;endin
instr 6
mididefault 60, p3
midinoteonkey p4, p5
inum init p4
ivel init p5
ivel init ivel/127
kamp linsegr 1, 1, 1, .1, 0
kamp = kamp/1000
kfreq init 1
a1,a2 sfplay3 ivel, inum, kamp*ivel, kfreq, 0
outs a1,a2
endin
;instr 7
;
;endin
|
Deleted cfg.py version [e9b556b4f3].
Modified parse.py
from [3ec57c3fbe]
to [bcac1af73f].
1 2 3 4 | #!/usr/bin/env python from ply import lex, yacc class Note(): | > > | < | | > | | | > | 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 |
#!/usr/bin/env python
import tree
from ply import lex, yacc
class Note():
def __init__(self, value, duration=1, octave=8):
self.value = value
self.duration = duration
self.octave = octave
def __repr__(self):
return "Note %s %s %s" % (self.value, self.duration, self.octave)
class Chord():
def __init__(self, value, duration=1, chord_type="major", octave=5):
self.value = value
self.duration = duration
self.chord_type = chord_type
self.octave = octave
def __repr__(self):
return "Chord %s %s %s" % (self.value, self.duration, self.chord_type, self.octave)
class Rest():
def __init__(self, duration=1):
self.duration = duration
def __repr__(self):
return "Rest node %s" % self.duration
def parse(score, default_octave=8):
# Tokenize (lex)
tokens = (
"NOTE_LENGTH",
"BASENOTE",
"ACCIDENTAL",
"REST",
"OCTAVE",
"CHORD_TYPE",
"PAREN",
"SYNCOPATE",
"NODE",
)
t_ignore = " |"
t_BASENOTE = r"[A-Ga-g]"
# t_BASENOTE = r"I+V?|VI*|i+v?|vi*"
t_ACCIDENTAL = r"\^{1}|_{1}|="
t_REST = r"z"
t_OCTAVE = r"'+|,+"
t_CHORD_TYPE = r"m|7|m7|0|o|\+|mb5|sus|sus4|maj7|mmaj7|7sus4|dim|dim7|7b5|m7b5|6|b6|m6|mb6|46|maj9|9|add9|7b9|m9"
t_PAREN = "\(|\)"
t_SYNCOPATE = "\+|-"
t_NODE = r"\([a-zA-Z0-9_-]+\)"
def t_NOTE_LENGTH(t):
r"/?\d+"
multiplier = float(t.value.strip("/"))
if t.value.startswith("/"):
multiplier = 1/multiplier
t.value = multiplier
|
| ︙ | ︙ | |||
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# Parse (yacc)
def p_note_list(p):
'''score : score note
| score chord
| score rest
'''
p[0] = p[1] + [p[2]]
def p_score(p):
'''score : note
| chord
| rest
'''
p[0] = [p[1]]
def p_chord_length(p):
''' chord : chord NOTE_LENGTH
'''
| > > | 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# Parse (yacc)
def p_note_list(p):
'''score : score note
| score chord
| score rest
| score node
'''
p[0] = p[1] + [p[2]]
def p_score(p):
'''score : note
| chord
| rest
| node
'''
p[0] = [p[1]]
def p_chord_length(p):
''' chord : chord NOTE_LENGTH
'''
|
| ︙ | ︙ | |||
114 115 116 117 118 119 120 |
'''
note.syncopate = p[2]
def p_accidental(p):
'''note : ACCIDENTAL note
'''
| | | > > > > > > > > > > > > | > > > > > > > > > | 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
'''
note.syncopate = p[2]
def p_accidental(p):
'''note : ACCIDENTAL note
'''
if p[1] == "^":
p[0] = p[2].value + 1
else:
p[0] = p[2].value - 1
def p_octave(p):
'''note : note OCTAVE
'''
count = len(p[2])
increment_or_decrement = 1 if p[2].startswith("'") else -1
p[1].octave += (count * increment_or_decrement)
p[0] = p[1]
def p_note(p):
'''note : BASENOTE
'''
notes = {
"C": 0,
"D": 2,
"E": 4,
"F": 5,
"G": 7,
"A": 9,
"B": 11
}
n = notes[p[1]]
p[0] = Note(n, octave=default_octave)
def p_rest(p):
''' rest : REST
| REST NOTE_LENGTH
'''
p[0] = Rest()
if len(p) > 2:
p[0].duration = p[2]
def p_node(p):
'''node : NODE
'''
p[0] = tree.Tree(p[1].strip("(").strip(")"))
def p_error(p):
# import ipdb
# ipdb.set_trace()
print p
raise Exception("Syntax error at '%s' of element type %s" % (p.value, p.type))
yacc.yacc()
return yacc.parse(score)
|
Added samples/bass/1.05.wav version [e6f01c2d0c].
Added samples/bass/1.06.wav version [589b4c9c16].
Added samples/bass/1.07.wav version [b5bd0e0b28].
Added samples/bass/1.08.wav version [4e22c8e289].
Added samples/bass/1.09.wav version [8eafba8350].
Added samples/bass/1.10.wav version [6c9d557273].
Added samples/bass/1.11.wav version [d210644e57].
Added samples/bass/2.00.wav version [df0ad67bd3].
Added samples/bass/2.01.wav version [5e4bdb6301].
Added samples/bass/2.02.wav version [2787d975d6].
Added samples/bass/2.03.wav version [6ce7982e46].
Added samples/bass/2.04.wav version [3c3feb5b24].
Added samples/bass/2.05.wav version [569b7181fc].
Added samples/bass/2.06.wav version [297d4f860f].
Added samples/bass/2.07.wav version [1ac14e3cd2].
Added samples/bass/2.08.wav version [b92037909c].
Added samples/bass/2.09.wav version [760599b161].
Added samples/bass/2.10.wav version [3b900ab89f].
Added samples/bass/2.11.wav version [bcaf91186d].
Added samples/bass/3.00.wav version [5d028b32a1].
Added samples/bass/3.01.wav version [9d6dded4d3].
Added samples/bass/3.02.wav version [78dab72fb7].
Added samples/bass/3.03.wav version [9476ff14fb].
Added samples/bass/3.04.wav version [0822a77edf].
Added samples/bass/3.05.wav version [dc233966b5].
Added samples/bass/3.06.wav version [c254ae3482].
Added samples/bass/3.07-old1.wav version [7e77a9e339].
Added samples/bass/3.07.wav version [23ec2fdb73].
Added samples/bass/3.08.wav version [c799d64faf].
Added samples/bass/3.09.wav version [cedce4e5ea].
Added samples/bass/3.10.wav version [bbc1ef4a09].
Added samples/bass/3.11.wav version [f679f5a61b].
Added samples/bass/Bass.arco.mf.sulE.C2B2.aiff version [b705aee00e].
Added samples/bass/Bass.arco.mf.sulE.C3D3.aiff version [17eacace3a].
Added samples/bass/Bass.arco.mf.sulG.C3B3.aiff version [8b429011eb].
Added samples/bass/Bass.arco.mf.sulG.G2B2.aiff version [8c3a1d88c6].
Added samples/bass/test.orc version [2795c8cc70].
Added samples/bass/test.sco version [f5f91e8863].
Added samples/bass/test.wav version [550291acb7].
Added samples/violin/3.07.wav version [91dadc3e2c].
Added samples/violin/3.08.wav version [be7c18dc74].
Added samples/violin/3.09.wav version [a329787b04].
Added samples/violin/3.10.wav version [9ec0cf45e5].
Added samples/violin/3.11.wav version [febad8547c].
Added samples/violin/4.00.wav version [99a0049e7f].
Added samples/violin/4.01.wav version [c6f6725f8f].
Added samples/violin/4.02.wav version [8facf1aa8c].
Added samples/violin/4.03.wav version [4a79f04135].
Added samples/violin/4.04.wav version [3784e3b4fd].
Added samples/violin/4.05.wav version [426e685d09].
Added samples/violin/4.06.wav version [4508912bc2].
Added samples/violin/4.07.wav version [a1545e9d26].
Added samples/violin/4.08.wav version [a9461ed31b].
Added samples/violin/4.09.wav version [82320d5d1a].
Added samples/violin/4.10.wav version [13c837dfa4].
Added samples/violin/4.11.wav version [cf5017f10d].
Added samples/violin/5.00.wav version [77cf68a157].
Added samples/violin/5.01.wav version [e062aa503b].
Added samples/violin/5.02.wav version [a2c349d8e6].
Added samples/violin/5.03.wav version [00a8ef8b10].
Added samples/violin/5.04.wav version [77dc78528a].
Added samples/violin/5.05.wav version [f392909f77].
Added samples/violin/5.06.wav version [bc6dc8f0c4].
Added samples/violin/5.07.wav version [9a3c68e5f3].
Added samples/violin/5.08.wav version [61c81ce45f].
Added samples/violin/5.09.wav version [9014c1e21a].
Added samples/violin/5.10.wav version [f1fa1241d2].
Added samples/violin/5.11.wav version [d4ed637350].
Added score.yaml version [29fd4ba47c].
Added spiffyscore.py version [caa7e9ffa7].
Deleted test.sco version [c92bf3908c].
Deleted todo.org version [510751b73f].
Added tree.py version [29c78902c8].