//
// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Last Modified: Sat Jan 16 10:03:46 PST 1999
// Last Modified: Sat Jan 16 11:03:46 PST 1999
// Filename: ...improv/doc/examples/batonImprov/batcont/batcont.cpp
// Syntax: C++; batonImprov
//
// Description: Program for Jun and DMP11
// x- and y-axes of two batons are mapped to arbitrary controllers.
//
#include "batonImprov.h"
/*----------------- beginning of improvization algorithms ---------------*/
int cont1x = 10; // stick 1 x-axis controller number
int cont1y = 11; // stick 1 y-axis controller number
int cont2x = 12; // stick 2 x-axis controller number
int cont2y = 13; // stick 2 y-axis controller number
#define CONTROLTIME 50
int nextcontroltime = 0;
int control1 = 0;
int control2 = 0;
/*----------------- FUNCTIONS -------------------------------------------*/
void contup(int& controller) {
controller++;
if (controller > 127) {
controller = 127;
}
}
void contdown(int& controller) {
controller--;
if (controller < 0) {
controller = 0;
}
}
/*--------------------- maintenance algorithms --------------------------*/
void description(void) {
cout
<< "\nThis program demonstrates how to play notes with baton triggers.\n"
<< "Only one pitch is played at a time.\n"
<< "\nThe b14+ and b15+ buttons control the instrument being played.\n"
<< "\nPress the key \"X\" to turn on the MIDI out trace and see what\n"
<< "MIDI commands are being sent to the synthesizer.\n"
<< endl;
}
void initialization(void) { }
void finishup(void) { }
/*-------------------- main loop algorithms -----------------------------*/
void mainloopalgorithms(void) {
if (nextcontroltime <= t_time) {
if (control1) {
synth.cont(0, cont1x, baton.x1p);
synth.cont(0, cont1y, baton.y1p);
}
if (control2) {
synth.cont(0, cont2x, baton.x2p);
synth.cont(0, cont2y, baton.y2p);
}
nextcontroltime = t_time + CONTROLTIME;
}
}
/*-------------------- triggered algorithms -----------------------------*/
void stick1trig(void) { }
void stick2trig(void) { }
void b14plustrig(void) { }
void b15plustrig(void) { }
void b14minusuptrig(void) { }
void b14minusdowntrig(void) { }
void b15minusuptrig(void) { }
void b15minusdowntrig(void) { }
void keyboardchar(int key) {
switch (key) {
case '1': contup(cont1x); cout << "cont1x = " << cont1x << endl;
break;
case 'q': contdown(cont1x); cout << "cont1x = " << cont1x << endl;
break;
case '2': contup(cont1y); cout << "cont1y = " << cont1y << endl;
break;
case 'w': contdown(cont1y); cout << "cont1y = " << cont1y << endl;
break;
case '3': contup(cont2x); cout << "cont2x = " << cont2x << endl;
break;
case 'e': contdown(cont2x); cout << "cont2x = " << cont2x << endl;
break;
case '4': contup(cont2y); cout << "cont2y = " << cont2y << endl;
break;
case 'r': contdown(cont2y); cout << "cont2y = " << cont2y << endl;
break;
case 'z': control1 = !control1; cout << "control1 = " << control1 << endl;
break;
case 'x': control2 = !control2; cout << "control2 = " << control2 << endl;
break;
}
}
/*------------------ end improvization algorithms -----------------------*/
// md5sum: 3bdfae0f93133305440a599df0418ef5 batcont.cpp [20050403]