home *** CD-ROM | disk | FTP | other *** search
- /* moxctest.c -- a test program illustrating moxc */
- /*
- * this program plays a short figure on every keydown
- */
-
- #include "cmtprog.h"
-
- mainscore()
- begin
- int r;
-
- /*
- * turning on continuous controller messages (DX7 aftertouch messages)
- * will REALLY load the cpu, so only use this if you need it!
- */
- /* midi_cont(true); */
-
- /*
- * play a note with a random pitch:
- */
- note(r = random(0, 100), 20);
-
- /*
- * cause mainscore to run every 2 seconds
- */
- cause(200, mainscore);
-
- printf("random(0, 100) = %d\n", r);
- end
-
-
- keyup(c, k) /* this gets called whenever a key goes up */
- begin /* turn off all the notes turned on by keydown */
- cause(40, midi_note, c, k+1, 0);
- cause(70, midi_note, c, k-1, 0);
- cause(95, midi_note, c, k+2, 0);
- cause(115, midi_note, c, k-2, 0);
- cause(130, midi_note, c, k+3, 0);
- cause(140, midi_note, c, k-3, 0);
- cause(145, midi_note, c, k+4, 0);
- end
-
- keydown(c, k, v) /* this is called when a keyboard note is pressed */
- begin /* schedule a short phrase transposed by k */
- cause(40, midi_note, c, k+1, v);
- cause(70, midi_note, c, k-1, v);
- cause(95, midi_note, c, k+2, v);
- cause(115, midi_note, c, k-2, v);
- cause(130, midi_note, c, k+3, v);
- cause(140, midi_note, c, k-3, v);
- cause(145, midi_note, c, k+4, v);
- end
-
- ctrlchange(chan, ctrl, value)
- begin
- printf("ctrlchange: chan %d, ctrl %d, value %d\n", chan, ctrl, value);
- end
-
- bendchange(chan, value)
- begin
- printf("bendchange: chan %d, value %d\n", chan, value);
- end
-
- peddown(c)
- begin
- printf("peddown, chan %d\n", c);
- end
-
- pedup(c)
- begin
- printf("pedup, chan %d\n", c);
- end
-
- asciievent(c)
- {
- if (c == 'q') quit();
- else if (c == 'n') midi_thru(true);
- else if (c == 'f') midi_thru(false);
- else printf("Type q to quit.\n");
- }
-