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
Lesezeichen