Arduino: Indexera en samling arrays hur?
Postat: 1 januari 2015, 16:35:29
Jag har ett litet projekt jag jobbar på att bygga en enkel digital synth av en arduino som skall kunna spela moll och durskalorna och har sött på ett problem.
Jag har alla tonarters frekvenser som arrays enligt följande:
Sedan kommer en meny som räknar upp en int (key_par) och beroende på vilken som väljs tilldelas en en ny array Key frekvenserna från valda tonarten.
Som ni ser blir tilldelningen av den valda tonarten extremt mycket kod då det krävs ett case för varje tonart och det hade varit mycket smidigare om man hade kunnat indexera tonarterna på något slags matrisvis så jag kunnat lösa tilldelningen av den valda tonart med hjälp av ett heltal. Finns det något enkelt sett att göra en array av arrays eller rent av en vektor av arrays som i c++? så att jag kunnat indexera tonart och frekvens med hjälp av två heltal?
Tack på förhand
Jag har alla tonarters frekvenser som arrays enligt följande:
Kod: Markera allt
const double aMajor[16] =
{220.00, 246.94, 277.18, 293.66, 329.63, 369.99, 415.30, 440.00, 440.00, 493.88, 554.37, 587.33, 659.25, 739.99, 830.61, 880.00};
const double bMajor[16] =
{246.94, 277.18, 311.13, 329.63, 369.99, 415.30, 466.16, 493.88, 493.88, 554.37, 622.25, 659.25, 739.99, 830.61, 932.33, 987.77};
... osv
Kod: Markera allt
void assign_key(int key_par, int major_minor)
{
if (major_minor == 0)
{
switch(key_par) //assigns chosen key to the key-variable
{
case 0:
memcpy(key,aMajor,64);
tone(3,aMajor[0]);
Serial.println("A-dur");
break;
case 1:
memcpy(key,bMajor,64);
tone(3,bMajor[0]);
Serial.println("b-dur");
break;
case 2:
memcpy(key,cMajor,64);
tone(3,cMajor[0]);
Serial.println("c-dur");
break;
... osv
Tack på förhand