midi error syntax issues


hello
i struggling trying finalise code working on. using ping sensor trigger different midi notes depending on proximity (3 notes in total) , although method using seems work in other midi enabled arduino code have used reason 1 keep getting following error message:


in function 'void loop()':
error: 'midiout' not declared in scope

i have used method of midiout , stuck doing wrong time around. suggestions?


code: [select]
/* new variables */
int delay_time = 30; // delay amount each write cycle.
byte channel = 1;

byte printing_byte = 0;

/* ultrasound sensor
*------------------
*
* reads values (00014-01199) ultrasound sensor (3m sensor)
* , writes values serialport.
*
* http://www.xlab.se | http://www.0j0.org
* copyleft 2005 mackie xlab | dojodave dojocorp
*
*/

// code edited sebastian tomczak 23 april 2008
const int pingpin = 12;
int val = 0;
int ultrasoundvalue = 0;
int timecount = 0;
int brightness = 0;// echo counter
int ledpin1 =  8;
int ledpin2 =  9;
int ledpin3 =  10;
int ledpin4 =  11;
int ledpin5 = 13;
int whitepin = 2;
const int fan =  7;
int light1 = 6;
int light2 = 5;
int light3 = 4;
int light4 = 3;

int fanstate = low;             // ledstate used set led
long previousmillis = 0;  

long interval = 5000;

int ledpin1state = low;             // ledstate used set led
long previousmillis1 = 10;  

long interval1 = 60;

int ledpin2state = low;             // ledstate used set led
long previousmillis2 = 20;  

long interval2 = 60;

int ledpin3state = low;             // ledstate used set led
long previousmillis3 = 30;  

long interval3 = 80;

int ledpin4state = low;             // ledstate used set led
long previousmillis4 = 10;  

long interval4 = 80;// led connected digital pin 13

void setup() {
 serial.begin(31250);
 pinmode(ledpin1, output);
 pinmode(ledpin2, output);  
 pinmode(ledpin3, output);  
 pinmode(ledpin4, output);
 pinmode(ledpin5, output);
 pinmode(fan, output);
 pinmode(light1, output);
 pinmode(light2, output);
 pinmode(light4, output);
 pinmode(light3, output);
 pinmode(whitepin, output);            // sets digital pin output

}

void loop() {
 // establish variables duration of ping,
 // , distance result in inches , centimeters:
 long duration, inches, cm;

 // ping))) triggered high pulse of 2 or more microseconds.
 // give short low pulse beforehand ensure clean high pulse:
 pinmode(pingpin, output);
 digitalwrite(pingpin, low);
 delaymicroseconds(2);
 digitalwrite(pingpin, high);
 delaymicroseconds(5);
 digitalwrite(pingpin, low);

 // same pin used read signal ping))): high
 // pulse duration time (in microseconds) sending
 // of ping reception of echo off of object.
 pinmode(pingpin, input);
 duration = pulsein(pingpin, high);

 // convert time distance
 inches = microsecondstoinches(duration);
 cm = microsecondstocentimeters(duration);

 /* writing out values serial port
  * -------------------------------------------------------------------
  */

 
// append echo pulse time ultrasoundvalue
 if((inches >= 15) && (inches < 20)){
    midiout(0x90, 85, 127);
   
   digitalwrite(light3, high);
   delay(1000);
   digitalwrite(light3, low);
   digitalwrite(light4, high);
   delay(3000);
   digitalwrite(light4, low);
}

else{
 digitalwrite(light3, low);
 digitalwrite(light4, low);
}


if((inches >= 60) && (inches < 66)){
   midiout(0x90, 85, 127);
   digitalwrite(light2, high);
   delay(1000);
   digitalwrite(light2, low);
}

else{
 digitalwrite(light2, low);
}

 if((inches >= 93) && (inches < 128)){
   midiout(0x90, 85, 127);
   digitalwrite(light1, high);
   delay(1000);
   digitalwrite(light1, low);
}

else{
 digitalwrite(light1, low);
}

              // wait second;

if (millis() - previousmillis > interval) {
   // save last time blinked led
   previousmillis = millis();  

   // if led off turn on , vice-versa:
   if (fanstate == low)
     fanstate = high;
   else
     fanstate = low;
     
   // set led ledstate of variable:
   digitalwrite(fan, fanstate);
 }
 
 if (millis() - previousmillis1 > interval1) {
   // save last time blinked led
   previousmillis1 = millis();  

   // if led off turn on , vice-versa:
   if (ledpin1state == low)
     ledpin1state = high;
   else
     ledpin1state = low;
     
   // set led ledstate of variable:
   digitalwrite(ledpin1, ledpin1state);
 }
 
 if (millis() - previousmillis2 - 20 > interval2) {
   // save last time blinked led
   previousmillis2 = millis();  

   // if led off turn on , vice-versa:
   if (ledpin2state == low)
     ledpin2state = high;
   else
     ledpin2state = low;
     
   // set led ledstate of variable:
   digitalwrite(ledpin2, ledpin2state);
 }
 
 if (millis() - previousmillis3 - 30 > interval3) {
   // save last time blinked led
   previousmillis3 = millis();  

   // if led off turn on , vice-versa:
   if (ledpin3state == low)
     ledpin3state = high;
   else
     ledpin3state = low;
     
   // set led ledstate of variable:
   digitalwrite(ledpin3, ledpin3state);
 }

if (millis() - previousmillis4 - 10 > interval4) {
   // save last time blinked led
   previousmillis4 = millis();  

   // if led off turn on , vice-versa:
   if (ledpin4state == low)
     ledpin4state = high;
   else
     ledpin4state = low;
     
   // set led ledstate of variable:
   digitalwrite(ledpin4, ledpin4state);
 }

 /* begin edited code */

void midiout(char command, char value1, char value2) {
 serial.print(command, byte);
 serial.print(value1, byte);
 serial.print(value2, byte);}


 /* end edited code */

 /* lite led if value passed echo pulse
  * -------------------------------------------------------------------
  */

 /* delay of program
  * -------------------------------------------------------------------
  */

 delay(delay_time);
}

long microsecondstoinches(long microseconds)
{
 // according parallax's datasheet ping))), there are
 // 73.746 microseconds per inch (i.e. sound travels @ 1130 feet per
 // second).  this gives distance travelled ping, outbound
 // , return, divide 2 distance of obstacle.
 // see: http://www.parallax.com/dl/docs/prod/acc/28015-ping-v1.3.pdf
 return microseconds / 74 / 2;
}

long microsecondstocentimeters(long microseconds)
{
 // speed of sound 340 m/s or 29 microseconds per centimeter.
 // ping travels out , back, find distance of the
 // object take half of distance travelled.
 return microseconds / 29 / 2;
}


and here example of same midiout method working on code:
code: [select]
 /*
* optical tachometer
*
* uses ir led , ir phototransistor implement optical tachometer.
* ir led connected pin 13 , ran continually. status led connected
* pin 12. pin 2 (interrupt 0) connected across ir detector.
*
*
*/
//#define debug      

int ledpin = 13;                // ir led connected digital pin 13
int statuspin = 12;  // led connected digital pin 12
int lightpin1 = 6;
int lightpin2 = 9;
int lightpin3 = 10;
int lightpin4 = 11;
int brightness = 0;
int delay_time = 40; // delay amount each write cycle.
int notedown = low;
byte midi_channel = 0;
byte cc_number = 0;
byte incomingbyte;
byte button;
byte note;
byte printing_byte = 0;
int value = 0;
int midi_pitch = 0;
int mappedrpm = 0;
int state=0;
#ifdef debug
const int debug_rate = 9600;        // serial debugging communicates @ 9600 baud
const int serial_port_rate = debug_rate;
#else
const int midi_baud_rate = 31250;   // midi communicates @ 31250 baud
const int serial_port_rate = midi_baud_rate;
#endif



volatile byte rpmcount;
volatile int status;

unsigned int rpm;

unsigned long timeold;

// flag switching stuff
boolean top_speed_reached = false;
int on_threshold = 120;
int off_threshold = 90;

void rpm_fun()
{
 //each rotation, interrupt function run twice, take consideration
 //calculating rpm
 //update count
 rpmcount++;

 //toggle status led  
 if (status == low) {
   status = high;
 }
 else {
   status = low;
 }
 digitalwrite(statuspin, status);
}

void setup()
{
 state = 0;

 serial.begin(serial_port_rate);
 //interrupt 0 digital pin 2, ir detector connected
 //triggers on falling (change high low)
 attachinterrupt(0, rpm_fun, falling);

 //turn on ir led
 pinmode(ledpin, output);
 digitalwrite(ledpin, high);

 //use statuspin flash along interrupts
 pinmode(statuspin, output);

 rpmcount = 0;
 rpm = 0;
 timeold = 0;
 status = low;


}

void loop()
{
 //update rpm every second
 delay(800);
 //don't process interrupts during calculations
 detachinterrupt(0);
 //note 60*1000/(millis() - timeold)*rpmcount if interrupt
 //happened once per revolution instead of twice. other multiples used
 //for multi-bladed propellers or fans
 rpm = 3*1000/(millis() - timeold)*rpmcount;
 timeold = millis();
 rpmcount = 0;
 attachinterrupt(0, rpm_fun, falling);
 brightness = map(rpm, 0, 50, 0, 255);
 analogwrite(lightpin1, brightness);
 printing_byte = map(rpm, 0, 50, 0, 127);{
 midiout(0xb0, 7, printing_byte);
 }

 if (!top_speed_reached) {
   if (printing_byte >= on_threshold) {
     top_speed_reached = true;
     midiout(0x90, 65, 127);
   }
 } else {
   if (printing_byte <= off_threshold) {
     top_speed_reached = false;
     midiout(0x90, 45, 127);
   }
 }
 
}




 //write out serial port
 //restart interrupt processing
 


void midiout(char command, char value1, char value2) {
 serial.print(command, byte);
 serial.print(value1, byte);
 serial.print(value2, byte);

}







Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > midi error syntax issues


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums