Paso 5: El código:
El código:
El bosquejo que utilicé para este proyecto vino de Audrey Obscura y fue modificado para caber el Arduino Uno desde que la ONU sólo ofrece 6 pines analógicos en lugar de los 16 en el Arduino Mega.
Baquetas de xilófono
Adaptado para un ArduinoUno
originario de Jenna deBoisblanc y código inicial Spiekenzie Labs
//*******************************************************************************************************************
// User settable variables //*******************************************************************************************************************
int pinRead; char pinAssignments [6] =
{'A0', 'A1', 'A2', 'A3', 'A4', 'A5'};
byte PadNote [6] =
{57,58,59,60,61,62}; MIDI las notas de 0 a 127 (media C = 60)
int PadCutOff [6] =
{400,400,200,800,400,400}; Mínimo valor analógico para causar un golpe de tambor
int MaxPlayTime [6] =
{90,90,90,90,90,90}; Ciclos antes de permite un hit 2
#define midichannel 1; Canal MIDI de 0 a 15 (+ 1 en el "mundo real")
Boolean VelocityFlag = true; Velocidad ON (true) o desactivado (false)
//******************************************************************************************************************* // Internal Use Variables //*******************************************************************************************************************
Boolean activePad [6] =
{0,0,0,0,0,0}; Conjunto de banderas de cojín está reproduciendo
int PinPlayTime [6] =
{0,0,0,0,0,0}; Contador desde pad jugar status1 bytes;
pin int = 0;
int hitavg = 0; //*******************************************************************************************************************
Programa de instalación
//*******************************************************************************************************************
void setup()
{Serial.begin(57600); / / conectar al puerto serie 115200
}
//*******************************************************************************************************************
// Main Program //*******************************************************************************************************************
void loop() {para (pin int = 0; pin < 6; pin ++) / /
{
int pin = 3;
para (pinRead = 0; pinRead < 16, pin ++) {}
hitavg = analogRead(pinAssignments[pin]);
Serial.println(hitavg);
leer la entrada de pin
Si ((hitavg > PadCutOff[pin]))
{Si ((activePad [pin] == false))
{if(VelocityFlag == true)
{
hitavg = 127 / ((1023 - PadCutOff[pin]) / (hitavg - PadCutOff[pin])); Con la gama completa (demasiado sensible?)
hitavg = (hitavg / 8) -1; Gama superior
}
otra cosa
{
hitavg = 127;
}
MIDI_TX(144,PadNote[PIN],hitavg); Nota sobre
PinPlayTime [pin] = 0;
activePad [pin] = true;
}
otra cosa
{
PinPlayTime [pin] = PinPlayTime [pin] + 1;
}
}
else if ((activePad [pin] == true))
{
PinPlayTime [pin] = PinPlayTime [pin] + 1;
Si (PinPlayTime [pin] > MaxPlayTime[pin])
{activePad [pin] = false;
MIDI_TX(144,PadNote[PIN],0);
}
}
}
}
//*******************************************************************************************************************
// Transmit MIDI Message //*******************************************************************************************************************
void MIDI_TX (byte mensaje, byte bytes velocidad de la echada)
{status1 = mensaje + midichannel;
Serial.Write(status1);
Serial.Write(pitch);
Serial.Write(Velocity);
}