Hi, Daniel !
Zweierlei:
Freut mich, daß wir einen Anfang gefunden haben
Du solltest Dich registrieren lassen, könnt' ja sein, daß Du noch öfters kommst.
So:
Du brauchst (dzt) für jedes 1/16 einen Schalter, also 16 Stücker für jeden Takt (4/4)
Da bieten sich natürlich die Bits von zwei Bytes an. Diese zwei Bytes sind also ein Pattern
Code:
 
PATTERN
Pattern_a     Bits  0 - 7  --->    1/16   1 - 8
Pattern_b     Bits  0 - 7  --->    1/16   9 - 16
Bei jedem neuen 1/16 (ACTION_16) müssen wir also das aktuelle Bit abfragen (ob BUMM oder NICHT BUMM) und auf's nächste 1/16 stellen.
Wir nehmen also zwei andere Bytes "shift", durch die wir EINEN 1'er durchschieben.
Beispiel-Pattern: einmal kurz BUMM bei jedem 1/4 ( a la kick-drum)
Folgende Situation beim ersten 1/16
Code:
      Pattern_b         Pattern_a
     76543210          76543210
     00010001          00010001
     Shift_b              Shift_a
     00000000          00000001
Jedesmal müssen wir sehen, ob dort, wo im "shift" gerade der 1-er ist, im "Pattern" gerade 1 oder 0 ist. bei "1" machern wir BUMM, bei 0 nicht.
Code:
Pattern b/a      
                      00010001          00010001          
shift b/a
                      00000000          00000001          1     -->  BUMM
                      00000000          00000010          2     -->  nix
                      00000000          00000100          3     -->  nix
                      00000000          00001000          4     -->  nix
                      00000000          00010000          5     -->  BUMM
                               ...............
                      01000000          00000000          15    --> nix
                      10000000          00000000          16    -->  nix
Das ist der Grund, warum der 1-er durch die zwei Bytes geshifted wird.
Natürlich kann man das auch anders machen, aber du schreibst dir die Finger krumm, wenn die Sache dann komplizierter wird, mit mehreren Pattern und anderen Taktarten. fürs erste mfg robert