#include #include #include #include "abuf.h" #include "guic.h" enum{ Gfreq, Gpwm, Gtype, Gexit, }; char *keywords[] = { "speed", "bang", "loop", "exit", 0, }; void threadmain(int argc, char *argv[]) { Abuf ab; guistart(argv[1]); ainit(&ab, 1); for(t=0;;t++){ while(nbrecv(guichan, &ev) == 1){ switch(ev.k){ case Gtype: osc.type = ev.n; break; case Gfreq: osc.f = miditofreq(ev.n); break; case Gpwm: osc.pw = ev.n / 128.0; break; case Gexit: threadexitsall(0); } osc.reset = 1; } s = osc.next(&osc); aputd(&ab, s / 2); } }