Stap 5: De Code:
De Code:
De schets die ik voor dit project gebruikte kwam van Audrey Obscura en aanpassen aan de Arduino Uno aangezien de Uno alleen 6 analoge pinnen in plaats van de 16 op de Arduino Mega biedt is bewerkt.
Xylofoon
Aangepast voor een ArduinoUno
oorspronkelijk uit Jenna deBoisblanc en Spiekenzie Labs eerste code
//*******************************************************************************************************************
// User settable variables //*******************************************************************************************************************
int pinRead; char pinAssignments [6] =
{'A0', 'A1', 'A2', 'A3', 'A4', 'A5'};
byte PadNote [6] =
{57,58,59,60,61,62}; MIDI nota's van 0 tot 127 (medio C = 60)
int PadCutOff [6] =
{400,400,200,800,400,400}; Analoge minimumwaarde te veroorzaken van een trommel-hit
int MaxPlayTime [6] =
{90,90,90,90,90,90}; Cycli voordat een 2e hit is toegestaan
#define midichannel 1; Het kanaal van de MIDI van 0 tot en met 15 (+ 1 in "echte wereld")
Boole VelocityFlag = waar; Snelheid op (true) of uitgeschakeld (false)
//******************************************************************************************************************* // Internal Use Variables //*******************************************************************************************************************
Booleaanse activePad [6] =
{0,0,0,0,0,0}; Matrix van vlaggen van pad eersteklasser
int PinPlayTime [6] =
{0,0,0,0,0,0}; Teller aangezien pad begon te spelen byte status1;
int pin = 0;
int hitavg = 0; //*******************************************************************************************************************
Setup
//*******************************************************************************************************************
VOID Setup
{Serial.begin(57600); / / sluit aan op de seriële poort 115200
}
//*******************************************************************************************************************
// Main Program //*******************************************************************************************************************
void loop {voor (int pin = 0; pin < 6; pin ++) / /
{
int pin = 3;
voor (pinRead = 0; pinRead < 16, pin ++) {}
hitavg = analogRead(pinAssignments[pin]);
Serial.println(hitavg);
Lees de invoer pin
Als ((hitavg > PadCutOff[pin]))
{Als ((activePad [pin] == false))
{if(VelocityFlag == true)
{
hitavg = 127 / ((1023 - PadCutOff[pin]) / (hitavg - PadCutOff[pin])); Met volledige reeks (Too gevoelige?)
hitavg = (hitavg / 8) -1; Bovenste bereik
}
anders
{
hitavg = 127;
}
MIDI_TX(144,PadNote[PIN],hitavg); toelichting op de
PinPlayTime [pin] = 0;
activePad [pin] = true;
}
anders
{
PinPlayTime [pin] = PinPlayTime [pin] + 1;
}
}
anders als ((activePad [pin] == true))
{
PinPlayTime [pin] = PinPlayTime [pin] + 1;
Als (PinPlayTime [pin] > MaxPlayTime[pin])
{activePad [pin] = false;
MIDI_TX(144,PadNote[PIN],0);
}
}
}
}
//*******************************************************************************************************************
// Transmit MIDI Message //*******************************************************************************************************************
VOID MIDI_TX (byte bericht, byte WORP, byte VELOCITY)
{status1 = bericht + midichannel;
Serial.write(status1);
Serial.write(pitch);
Serial.write(Velocity);
}