Melodie & Beat in Zweidimiensionales Array

Janiiix3

Aktives Mitglied
28. Sep. 2013
1.333
10
38
Hannover
Sprachen
  1. ANSI C
  2. C#
Abend Gemeinde,

gibt es eine Möglichkeit diese beiden Arrays :



CodeBox C
// MELODY and TIMING  =======================================
//  melody[] is an array of notes, accompanied by beats[],
//  which sets each note's relative length (higher #, longer note)
const uint16_t melody_1[] PROGMEM = {  e_4,  b_3,  c_4,  d_4,  c_4,  b_3,  a_3,  a_3,  c_4,  e_4,  d_4,  c_4,  b_3,  c_4,  d_4,  e_4,  c_4,  a_3,  a_3, R,  d_4,  f_4,  a_4,  g_4, f_4, e_4,  c_4,  e_4,  d_4, c_4, b_3, b_3,c_4,d_4,e_4,c_4,a_3,a_3,e_4,a_3,e_4,a_3,c_4,a_3,c_4,a_3,d_4,b_3,d_4,b_3,b_3,gis_3,b_3,gis_3,c_4,e_3,c_4,e_3,a_3,e_3,a_3,e_3,gis_3,e_3,gis_3,e_3,b_3,e_4,a_3,e_4,a_3,c_4,a_3,c_4,a_3,d_4,b_3,d_4,b_3,b_3,gis_3,b_3,gis_3,c_4,e_4,a_4,gis_4};

const uint16_t beats[]  PROGMEM = {  16,  8,    8,    16,  8,  8,  16,  8,  8,  16,  8,  8,  24,  8,  16,  16,  16,  16,  32,  32, 16,  8,  16,  8,  8,  24,  8,  16,  8,  8,  16,  8,  8,16,16,16,16,32,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,32,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,32,64};



in ein Zweidimensionales Array zu stopfen und auszulesen?

So lese ich es aktuell aus:



CodeBox C
    tone_ = pgm_read_dword(&melody_1 [i]);
     beat  = pgm_read_dword(&beats [i]);


Wollte es ein wenig übersichtlicher machen:



CodeBox C
                                          Note | Beat
uint16_t melody_1 [][] = {{ e_4 , 16}};


Ich hoffe ihr versteht mich :)
 
Wenn du beide Werte in ein zweidimensionales Array packen möchtest, wird es nach meiner Meinung nicht viel übersichtlicher. Du benötigst für "beat" eigentlich auch nur uint8_t (bei "tone" eventuell auch?!), so wäre es besser, wenn du mit zwei eindimensionalen Arrays arbeitest, das spart etwas Speicherplatz.

So könntest du es mit einem zweidimensionalen Array machen:

Dirk :ciao:



CodeBox C
const uint16_t MeinArray[87][2] PROGMEM =
{
  {e_4, 16},
  {b_3, 8},

  ...

  {gis_4, 64}
};


//...


tone_ = pgm_read_dword(&MeinArray[I][0]);
beat  = pgm_read_dword(&MeinArray[I][1]);

 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)