-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathSequencer.h
41 lines (31 loc) · 925 Bytes
/
Sequencer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef SEQUENCER_H
#define SEQUENCER_H
#define CHANNEL_COUNT 4
#define SEQUENCE_LENGTH_MAX 128
#define STEP_PER_BAR_MAX 16
#include "Track.h"
class Sequencer {
Track tracks[CHANNEL_COUNT] = {Track(0), Track(1), Track(2), Track(3)};
public:
byte currentBarCount = 1;
byte currentStepCount = STEP_PER_BAR_MAX;
Track& operator [] (int i) {return tracks[i];}
int currentSeqLength() {
return currentBarCount * currentStepCount;
}
void eraseAll() {
for (byte channel = 0; channel < CHANNEL_COUNT; channel++) {
tracks[channel].eraseAll();
}
}
void fill() {
byte seqLen = currentSeqLength();
for (int i = seqLen; i < SEQUENCE_LENGTH_MAX; i++) {
for (byte channel = 0; channel < CHANNEL_COUNT; channel++) {
tracks[channel].sequence[i] = tracks[channel].sequence[i % seqLen];
}
}
}
byte maxBarCount = SEQUENCE_LENGTH_MAX/STEP_PER_BAR_MAX;
};
#endif