Browse Source

load pattern globally

develop
Carmine De Rosa 5 years ago
parent
commit
5ace442363
  1. 25
      C/loaders.cpp
  2. 14
      C/main.cpp
  3. 6
      C/players.cpp
  4. BIN
      C/sonquencer

25
C/loaders.cpp

@ -31,8 +31,8 @@ int loadBank(int bank) {
}
void loadPattern(int pattern) {
printf("\nLoading pattern %d ...\n", pattern);
void loadPattern(int patternNum) {
printf("\nLoading pattern %d ...\n", patternNum);
FILE *fp;
char *line = NULL;
@ -45,15 +45,12 @@ void loadPattern(int pattern) {
int cols = 0;
int rows = 0;
int patternArray[10][32];
sprintf(patternFile, "patterns/pattern%d", pattern);
sprintf(patternFile, "patterns/pattern%d", patternNum);
fp = fopen(patternFile, "r");
if(fp == NULL) {exit(EXIT_FAILURE);}
while ((read = getline(&line, &len, fp)) != -1) {
//printf("Retrieved line of length %zu:\n", read);
if(lineCount == 0) { bank = line[10]-'0'; }
if(lineCount == 1) { rows = line[10]-'0'; }
@ -61,30 +58,26 @@ void loadPattern(int pattern) {
if(lineCount == 2) {
cols = read-1;
}
for(int i=0; i<cols; i++) {
patternArray[lineCount-2][i] = line[i];
pattern[lineCount-2][i] = line[i];
}
}
lineCount++;
}
printf("Pattern: %d\nBank: %d\nColumns: %d\nRows: %d\n", pattern, bank, cols, rows);
printf("Pattern: %d\nBank: %d\nColumns: %d\nRows: %d\n", patternNum, bank, cols, rows);
matrix[0] = rows;
matrix[1] = cols;
for(int i=0; i<rows; i++) {
//printf("\nCol %d: ", i);
for(int y=0; y<cols; y++) {
printf("%d ", patternArray[i][y]-'0');
printf("%d ", pattern[i][y]-'0');
}
printf("\n");
}
printf("\n");
fclose(fp);
if(line) {free(line);}
loadBank(bank);
}

14
C/main.cpp

@ -9,8 +9,12 @@
#include "SDL_image.h"
#define NUM_WAVEFORMS 4
#define PATTERN_ROWS 10
#define PATTERN_COLS 32
Mix_Chunk* samples[NUM_WAVEFORMS];
int pattern[PATTERN_ROWS][PATTERN_COLS];
int matrix[] = {PATTERN_ROWS, PATTERN_COLS};
#include "players.cpp"
#include "loaders.cpp"
@ -20,7 +24,8 @@ int main(int argc, char** argv) {
bool done = false;
bool play = true;
int timer = 0;
int step = 500;
int step = 0;
int stepDuration = 500;
SDL_Window* window;
SDL_Renderer* renderer;
@ -41,7 +46,6 @@ int main(int argc, char** argv) {
if(loadBank(1) == false) {return -1;}
loadPattern(2);
/*
while (!done) {
bool gotEvent = SDL_PollEvent(&event);
@ -91,9 +95,11 @@ int main(int argc, char** argv) {
}
playStep(play, &timer, &step);
if(play) {
playPattern(&timer, stepDuration, &step);
}
}
*/
for( int i = 0; i < NUM_WAVEFORMS; i++ ) {
Mix_FreeChunk(samples[i]);

6
C/players.cpp

@ -1,10 +1,10 @@
void playStep(bool play, int *timer, int *step) {
*timer = *timer >= *step ? 0 : *timer+1;
void playPattern(int *timer, int duration, int *step) {
*timer = *timer >= duration ? 0 : *timer+1;
usleep(1000);
if(*timer == 0) {
printf("%d\n", *timer);
//printf("%d\n", *timer);
Mix_PlayChannel(-1, samples[1], 0);
}

BIN
C/sonquencer

Binary file not shown.
Loading…
Cancel
Save