Hi I could use some help.
I have simple MIDI drums based on piezo sensors. I use this code:
int piezo1 = A0;
int piezo2 = A2;
int piezo3 = A4;
int piezo4 = A6;
int piezo5 = A8;
int threshold = 500;
int sensorReading = 0;
int val,oldcas;
void setup() {
pinMode(piezo1, INPUT);
pinMode(piezo2, INPUT);
pinMode(piezo3, INPUT);
pinMode(piezo4, INPUT);
pinMode(piezo5, INPUT);
Serial.begin(57600);
}
void loop() {
//////////////////CRASH////////////////
sensorReading = analogRead(piezo5);
if( sensorReading > threshold ) {
oldcas = millis()+5;
while(analogRead(piezo5) > threshold)
{
if(millis()==oldcas)
{
val = analogRead(piezo5) / 8;
}
}
MidiTX(144, 1, val);
MidiTX(128, 1, val);
}
//////////R-TOM////////////////////
sensorReading = analogRead(piezo4);
if( sensorReading > threshold ) {
oldcas = millis()+5;
while(analogRead(piezo4) > threshold)
{
if(millis()==oldcas)
{
val = analogRead(piezo4) / 8;
}
}
MidiTX(144, 2, val);
MidiTX(128, 2, val);
}
///////////////SNARE////////////////
sensorReading = analogRead(piezo3);
if( sensorReading > threshold ) {
oldcas = millis()+5;
while(analogRead(piezo3) > threshold)
{
if(millis()==oldcas)
{
val = analogRead(piezo3) / 8;
}
}
MidiTX(144, 3, val);
MidiTX(128, 3, val);
}
///////////////L-TOM/////////////
sensorReading = analogRead(piezo2);
if( sensorReading > threshold ) {
oldcas = millis()+5;
while(analogRead(piezo2) > threshold)
{
if(millis()==oldcas)
{
val = analogRead(piezo2) / 8;
}
}
MidiTX(144, 4, val);
MidiTX(128, 4, val);
}
//////////////HI-HIT/////////////////
sensorReading = analogRead(piezo1);
if( sensorReading > threshold ) {
oldcas = millis()+5;
while(analogRead(piezo1) > threshold)
{
if(millis()==oldcas)
{
val = analogRead(piezo1) / 8;
}
}
MidiTX(144, 5, val);
MidiTX(128, 5, val);
}
}
void MidiTX(unsigned char StatusByte, unsigned char Note, unsigned char Val)
{
Serial.write(StatusByte);
Serial.write(Note);
Serial.write(Val);
}
with virtual MIDI port loopbe1 , Serial - MIDI converter V2D (by Mark Demers - Spikenzielab.com) and Battery 3 as sample player. but audio from battery is delayed. I tryed another SW with Battery 3 ( Maple Virtual Midi Cable as virtual midi port and Hairless MIDI<->Serial Bridge as converter ) but ther is still delay.
where is problem??