Just UI stuff, really.
Probably won't have time for real hacking until christmas break.
Specifications:
Basic generators:
0 Sine
1 Saw
2 Square
3 Noise
Amplitude control is linear over notes.
The user can turn sequences into
'synthetic instruments', sort of.
Names are like the usual [a-zA-z_]+.
Note specifications are [A-G](b|#)(\++|-+)?
Store synthetic instrument as name:note.
If name:C exists, you can play it on any note;
the default is to just transpose. Otherwise it works
like table lookup. Amplitude changes apply in the
obvious way; though noticably a linear application
to the whole sequence can be broken up into linear
application to each note in it, so that all the
perl really needs to feed to the C is individual
notes. I think if you play a synthetic instrument
'as' a square wave, say, it just adds 2 modulo 4
to all the instrument settings in the sequence.
Oh, also if the duration of the 'note' is different
than the sequence, either clipping or repetition
(or both) takes place, *not scaling*. This preserves
note-time atomicity.