# piezo to midi

Hi,

Why is there too many initializers in this code? I’m learning arduino and try to understand…

Arduino : 1.8.5 (Mac OS X), Carte : “Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)”

TEST_03_XYLOPHONE_FOR_TABLE:11: error: too many initializers for ‘char [6]’
‘A0’,‘A1’,‘A2’,‘A3’,‘A4’,‘A5’,‘A6’,‘A7’,‘A8’,‘A9’,‘A10’,‘A11’};
^
exit status 1
too many initializers for ‘char [6]’

here is the complete code:

//Xylophone
//from Jenna deBoisblanc and Spiekenzie Labs initial code

//*******************************************************************************************************************
// User settable variables
//*******************************************************************************************************************

char pinAssignments[6] ={
‘A0’,‘A1’,‘A2’,‘A3’,‘A4’,‘A5’,‘A6’,‘A7’,‘A8’,‘A9’,‘A10’,‘A11’};
57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72}; // MIDI notes from 0 to 127 (Mid C = 60)
{
400,400,200,800,400,400,400,400,400,400,400,400,400,400,400,400}; // Minimum Analog value to cause a drum hit
int MaxPlayTime[16] = {
90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90}; // Cycles before a 2nd hit is allowed
#define midichannel 1; // MIDI channel from 0 to 15 (+1 in “real world”)
boolean VelocityFlag = true; // Velocity ON (true) or OFF (false)

//*******************************************************************************************************************
// Internal Use Variables
//*******************************************************************************************************************
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // Array of flags of pad currently playing
int PinPlayTime[16] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // Counter since pad started to play
byte status1;

int pin = 0;
int hitavg = 0;
//*******************************************************************************************************************
// Setup
//*******************************************************************************************************************
void setup()
{
Serial.begin(57600); // connect to the serial port 115200

}
//*******************************************************************************************************************
// Main Program
//*******************************************************************************************************************
void loop()
{
for(int pin=0; pin < 16; pin++) //
{
//int pin = 3;
//Serial.println(hitavg);

{
{
if(VelocityFlag == true)
{
// hitavg = 127 / ((1023 - PadCutOff[pin]) / (hitavg - PadCutOff[pin])); // With full range (Too sensitive ?)
hitavg = (hitavg / 8) -1 ; // Upper range
}
else
{
hitavg = 127;
}

PinPlayTime[pin] = 0;
}
else
{
PinPlayTime[pin] = PinPlayTime[pin] + 1;
}
}
{
PinPlayTime[pin] = PinPlayTime[pin] + 1;
if(PinPlayTime[pin] > MaxPlayTime[pin])
{
}
}
}
}

//*******************************************************************************************************************
// Transmit MIDI Message
//*******************************************************************************************************************
void MIDI_TX(byte MESSAGE, byte PITCH, byte VELOCITY)
{
status1 = MESSAGE + midichannel;
Serial.write(status1);
Serial.write(PITCH);
Serial.write(VELOCITY);

}

It seems pretty clear to me. If you say there are 6 elements in an array [6] then you can't put 12 things into those 6 elements to initialise them. And anyway you shouldn't be putting 'A1' into a char, which takes a single character.

Steve

Note that 'A1' (a string literal with the wrong type of quotes) is completely from A1 (a variable name used to refer to the A1 pin on your Mega). You'll have a very bad time if you attempt to define pin assignments as you are doing now.