Browse Source

load patterns

develop
Carmine De Rosa 5 years ago
parent
commit
08af78419e
  1. 1
      Processing/Sampler/Sampler.pde
  2. 18
      Processing/Sampler/SetBeat.pde
  3. 1
      Processing/Sampler/controllerStatus.pde
  4. 22
      Processing/Sampler/data/data.json
  5. 52
      Processing/Sampler/loadData.pde
  6. 16
      Processing/Sampler/setData.pde

1
Processing/Sampler/Sampler.pde

@ -7,6 +7,7 @@ int numSounds = 0;
int numTracks = 0; int numTracks = 0;
int bpm = 0; int bpm = 0;
int pattern = 0; int pattern = 0;
int bank = 0;
int swing = 0; int swing = 0;
int divider = 0; int divider = 0;
int duration = 0; int duration = 0;

18
Processing/Sampler/SetBeat.pde

@ -9,6 +9,8 @@ void setBeat(int index, int sample) {
samples[sample][index] = true; samples[sample][index] = true;
} }
void keyPressed() { void keyPressed() {
//println(keyCode); //println(keyCode);
if(keyCode >= 64 && keyCode <= 88) { // From A to Z if(keyCode >= 64 && keyCode <= 88) { // From A to Z
@ -42,16 +44,26 @@ void keyPressed() {
ereaseRow = controller[1] == "EREASE" ? keyCode-48 : 0; ereaseRow = controller[1] == "EREASE" ? keyCode-48 : 0;
doErease = ereaseRow>0; doErease = ereaseRow>0;
if(code >= 0 && code < numSounds && !doErease) {
//&& code < numSounds
if(code >= 0 && !doErease) {
if(chooseBank) { if(chooseBank) {
controller[2] = "BANK" + (code+1); controller[2] = "BANK" + (code+1);
setData(); setData();
chooseBank = false; chooseBank = false;
} else if(choosePattern) { } else if(choosePattern) {
pattern = (code+1);
pattern = code;
patternLabel = "PATTERN" + (code+1); patternLabel = "PATTERN" + (code+1);
setData();
choosePattern = false; choosePattern = false;
samples = patternsArray[code];
numSounds = soundNumbersArray[code];
divider = dividersArray[code];
bank = banksArray[code];
numTracks = numSounds;
controller[2] = "BANK" + banksArray[code];
setData();
} else if(controller[1] != "EREASE" && controller[1] != "UNSET") { } else if(controller[1] != "EREASE" && controller[1] != "UNSET") {
setBeat(beat, code); setBeat(beat, code);
} }

1
Processing/Sampler/controllerStatus.pde

@ -25,4 +25,5 @@ void printControllerStatus() {
stroke(200); stroke(200);
line(width/2, height-85, width/2, height-15); line(width/2, height-85, width/2, height-15);
} }

22
Processing/Sampler/data/data.json

@ -2,22 +2,26 @@
"patterns": [ "patterns": [
{ {
"name": "Pattern 1", "name": "Pattern 1",
"numSounds": 5,
"divider": 8,
"bank": 1,
"pattern": [ "pattern": [
[false, false, false, false, false, false, false, false],
[false, false, false, false, false, false, false, false],
[false, false, false, false, false, false, false, false],
[false, false, false, false, false, false, false, false],
[false, false, false, false, false, false, false, false]
[true, false, true, false, true, false, true, false],
[true, false, false, true, false, true, false, false],
[false, true, false, false, false, false, false, false],
[false, false, true, false, false, false, true, false],
[false, false, false, false, true, false, false, false]
] ]
}, },
{ {
"name": "Pattern 2", "name": "Pattern 2",
"numSounds": 3,
"divider": 6,
"bank": 2,
"pattern": [ "pattern": [
[false, true, false, false, false, false],
[false, true, false, true, false, true],
[false, false, true, false, false, true], [false, false, true, false, false, true],
[false, false, false, true, false, false],
[false, false, true, false, false, false],
[true, false, false, false, true, false]
[false, false, false, true, false, false]
] ]
} }
] ]

52
Processing/Sampler/loadData.pde

@ -1,50 +1,48 @@
String[] patternLabels = {}; String[] patternLabels = {};
boolean[][][] samplesArray = {};
int[] soundNumbersArray = {};
int[] dividersArray = {};
int[] banksArray = {};
boolean[][][] patternsArray = {};
void loadData() { void loadData() {
JSONObject json; JSONObject json;
json = loadJSONObject("data.json"); json = loadJSONObject("data.json");
JSONArray patternsArray = json.getJSONArray("patterns");
JSONArray pattsArray = json.getJSONArray("patterns");
for(int pat=0; pat<patternsArray.size(); pat++) {
JSONObject single = patternsArray.getJSONObject(pat);
for(int pat=0; pat<pattsArray.size(); pat++) {
JSONObject single = pattsArray.getJSONObject(pat);
patternLabels = append(patternLabels, single.getString("name")); patternLabels = append(patternLabels, single.getString("name"));
soundNumbersArray = append(soundNumbersArray, single.getInt("numSounds"));
dividersArray = append(dividersArray, single.getInt("divider"));
banksArray = append(banksArray, single.getInt("bank"));
boolean[][] tmpPat = {}; boolean[][] tmpPat = {};
JSONArray singlePattsArray = single.getJSONArray("pattern");
for(int x=0; x<single.getJSONArray("pattern").size(); x++) {
for(int x=0; x<singlePattsArray.size(); x++) {
boolean[] tmpRow = {}; boolean[] tmpRow = {};
//println("######");
//println(single.getJSONArray("pattern").getJSONArray(x));
for(int y=0; y<single.getJSONArray("pattern").getJSONArray(x).size(); y++) {
boolean boolVal = single.getJSONArray("pattern").getJSONArray(x).getBoolean(y);
JSONArray rowsArray = singlePattsArray.getJSONArray(x);
for(int y=0; y<rowsArray.size(); y++) {
boolean boolVal = rowsArray.getBoolean(y);
tmpRow = (boolean[]) append(tmpRow, boolVal); tmpRow = (boolean[]) append(tmpRow, boolVal);
//println(boolVal);
} }
tmpPat[x] = (boolean[]) append(tmpPat, tmpRow);
printArray(tmpPat);
tmpPat = (boolean[][]) append(tmpPat, tmpRow);
} }
//samplesArray = append(samplesArray, single.getJSONArray("pattern"));
/*
for(int s=0; s<samplesArray[pat].length; s++) {
samplesArray[pat][s] =
} */
patternsArray = (boolean[][][]) append(patternsArray, tmpPat);
} }
/* /*
for(int i=0; i<patternLabels.length; i++) {
println("Patterns: " + patternLabels[i]);
for(int i=0; i<patternsArray.length; i++) {
println("######"+i);
for(int x=0; x<patternsArray[i].length; x++) {
println("######"+x);
printArray(patternsArray[i][x]);
}
} }
*/ */
} }

16
Processing/Sampler/setData.pde

@ -1,33 +1,27 @@
void setData() { void setData() {
numSounds = 5;
numTracks = numSounds;
bpm = 280; bpm = 280;
pattern = 1;
swing = 50; swing = 50;
divider = 16;
duration = int((60/float(bpm))*1000); duration = int((60/float(bpm))*1000);
beat = 0; beat = 0;
String bank = controller[2];
println(bank);
println(patternLabel);
//println(bank);
//println(patternLabel);
/*
samples = new boolean[numTracks][divider]; samples = new boolean[numTracks][divider];
for(int i=0; i<numTracks; i++) { for(int i=0; i<numTracks; i++) {
boolean[] tmp = new boolean[divider]; boolean[] tmp = new boolean[divider];
for(int x=0; x<divider; x++) { for(int x=0; x<divider; x++) {
tmp[x] = false; tmp[x] = false;
} }
samples[i] = tmp; samples[i] = tmp;
}
}*/
// Load sound files // Load sound files
file = new SoundFile[numSounds]; file = new SoundFile[numSounds];
for (int i = 0; i < numSounds; i++) { for (int i = 0; i < numSounds; i++) {
file[i] = new SoundFile(this, bank + "/" + (i+1) + ".wav");
file[i] = new SoundFile(this, "BANK" + bank + "/" + (i+1) + ".wav");
} }
} }

Loading…
Cancel
Save