Poly mode
This commit is contained in:
+13
-13
@@ -6,7 +6,7 @@
|
||||
|
||||
class EuclideanStrategy : public MelodyStrategy {
|
||||
public:
|
||||
void generate(Step* sequence, int numSteps, int* scaleNotes, int numScaleNotes, int seed) override {
|
||||
void generate(Step (*sequence)[NUM_STEPS], int track, int numSteps, int* scaleNotes, int numScaleNotes, int seed) override {
|
||||
randomSeed(seed);
|
||||
if (numScaleNotes == 0) return;
|
||||
|
||||
@@ -34,13 +34,13 @@ public:
|
||||
|
||||
if (pattern[i]) {
|
||||
int octave = random(3) + 3; // 3, 4, 5
|
||||
sequence[stepIndex].note = 12 * octave + scaleNotes[random(numScaleNotes)];
|
||||
sequence[stepIndex].accent = (random(100) < 30);
|
||||
sequence[stepIndex].tie = (random(100) < 10);
|
||||
sequence[track][stepIndex].note = 12 * octave + scaleNotes[random(numScaleNotes)];
|
||||
sequence[track][stepIndex].accent = (random(100) < 30);
|
||||
sequence[track][stepIndex].tie = (random(100) < 10);
|
||||
} else {
|
||||
sequence[stepIndex].note = -1;
|
||||
sequence[stepIndex].accent = false;
|
||||
sequence[stepIndex].tie = false;
|
||||
sequence[track][stepIndex].note = -1;
|
||||
sequence[track][stepIndex].accent = false;
|
||||
sequence[track][stepIndex].tie = false;
|
||||
}
|
||||
}
|
||||
randomSeed(micros());
|
||||
@@ -61,20 +61,20 @@ public:
|
||||
sortArray(scaleNotes, numScaleNotes);
|
||||
}
|
||||
|
||||
void mutate(Step* sequence, int numSteps, int* scaleNotes, int numScaleNotes) override {
|
||||
void mutate(Step (*sequence)[NUM_STEPS], int track, int numSteps, int* scaleNotes, int numScaleNotes) override {
|
||||
// Rotate sequence
|
||||
if (random(2) == 0) {
|
||||
Step last = sequence[numSteps - 1];
|
||||
Step last = sequence[track][numSteps - 1];
|
||||
for (int i = numSteps - 1; i > 0; i--) {
|
||||
sequence[i] = sequence[i - 1];
|
||||
sequence[track][i] = sequence[track][i - 1];
|
||||
}
|
||||
sequence[0] = last;
|
||||
sequence[track][0] = last;
|
||||
} else {
|
||||
// Randomize a note
|
||||
int s = random(numSteps);
|
||||
if (sequence[s].note != -1) {
|
||||
if (sequence[track][s].note != -1) {
|
||||
int octave = random(3) + 3;
|
||||
sequence[s].note = 12 * octave + scaleNotes[random(numScaleNotes)];
|
||||
sequence[track][s].note = 12 * octave + scaleNotes[random(numScaleNotes)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user