GENWAV is a program to generate .wav format sound files.

It is not yet written but is going to attempt to play synthetics
sounds consisting of a mix of simple simple wave forms whose
frequencies and amplitudes are controlled by othe simple waves.  The
wave generators will include, for instance, square wave, saw tooth,
sine wave, exponential decay and various splines generators. Each
generator will use wave inputs to control the pitch and other
properties of the generated signal.

c220 := genconst(220_000)
c440 := genconst(440_000)

t_25 := genconst(1_000/4)

// Sine wave from 220 to 440 period 4 seconds
f1 := gensawtooth(c220, c440, t_25)

// Sine wave from -100_000 to +100_000 with frequency varying from
// 220 to 440 with period 4 seconds.
w1 := gensine(-100_000, 100_000, f1)

// A 12 second volume envelope
v1 := genshape(12_000, 6, 0, 1_000, 0_800, 0_500, 0_200, 0)  

// Apply volume envelope to w1
w2 := mul(w1, v1, 1_000)

// Play w2 for 12 seconds
play(w2, 12_000) 



Other ideas

Note stream base somewhat on Lilypond notations, ie

c cis d dis e f fis g gis a ais b c
c b bes a aes g ges f e ees d des c

octave up by '
octave down by ,
relative pitching by default

length value  8=quaver 4=crotchet 2=minim 1=semibreve etc

note sequences are interpreted in a context which controls
tempo, tuning, volume, tone quality, attack envelope, etc.


