
4 changed files with 173 additions and 0 deletions
@ -0,0 +1,25 @@ |
|||
TARGET=synth_shed |
|||
|
|||
SRCS+=$(wildcard *.c) |
|||
CFLAGS+=-std=c99 -g |
|||
INCLUDES+= |
|||
LIB_DIRS+= |
|||
LIBS+= |
|||
LDFLAGS+= |
|||
|
|||
|
|||
CXXFLAGS+=$(INCLUDES) |
|||
LDFLAGS+=$(LIB_DIRS+) |
|||
LDFLAGS+=$(LIBS) |
|||
OBJS+=$(SRCS:.c=.o) |
|||
|
|||
.PHONY: all, clean |
|||
|
|||
all: $(TARGET) |
|||
|
|||
$(TARGET) : $(OBJS) |
|||
$(CC) $(LDFLAGS) -o $@ $^ |
|||
|
|||
clean: |
|||
rm -f $(TARGET) |
|||
rm -f $(OBJS) |
@ -0,0 +1,14 @@ |
|||
#include "synth_shed.h" |
|||
#include <stdio.h> |
|||
|
|||
|
|||
|
|||
int main() { |
|||
init_synth_shed(); |
|||
|
|||
synth_t* my_synth = synth_create("UltraBoog"); |
|||
|
|||
printf("%s", play_synth(my_synth)); |
|||
|
|||
return 0; |
|||
} |
@ -0,0 +1,76 @@ |
|||
#include "synth_shed.h" |
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <assert.h> |
|||
#include <string.h> |
|||
|
|||
void init_synth_shed() { |
|||
printf("init_synth_shed() - called\n"); |
|||
} |
|||
|
|||
synth_t* synth_create(const char* name) { |
|||
synth_t* new = (synth_t*) malloc(sizeof(synth_t)); |
|||
if (new != NULL) { |
|||
new->model_name = name; |
|||
new->osc_count = 1; |
|||
new->technolgy = ANALOG; |
|||
new->filter.technology = ANALOG; |
|||
new->filter->type = LPF; |
|||
} |
|||
return new; |
|||
} |
|||
|
|||
//SYNTH_STATUS synth_set_osc_count(synth_t* synth,
|
|||
// int osc_count);
|
|||
//
|
|||
//SYNTH_STATUS synth_set_filter(synth_t* synth,
|
|||
// filter_t* filt);
|
|||
//
|
|||
//SYNTH_STATUS synth_set_tech(synth_t* synth,
|
|||
// tech_t tech);
|
|||
|
|||
const char* tech_to_string(const tech_t* const tech) { |
|||
assert(tech); |
|||
const char* ret = "unknown tech"; |
|||
if (*tech == ANALOG) { |
|||
return "ANALOG"; |
|||
} |
|||
if (*tech == DIGITAL) { |
|||
return "DIGITAL"; |
|||
} |
|||
return ret; |
|||
} |
|||
|
|||
|
|||
const char* filtertype_to_string(const filtertype_t* const filt) { |
|||
assert(filt); |
|||
const char* ret = "unknown filtertype"; |
|||
if (*filt == LPF) { |
|||
ret = "LPF"; |
|||
} |
|||
if (*filt == HPF) { |
|||
ret = "HPF"; |
|||
} |
|||
if (*filt == BPF) { |
|||
ret = "BPF"; |
|||
} |
|||
return ret; |
|||
} |
|||
|
|||
|
|||
const char* play_synth(synth_t* synth) { |
|||
assert(synth); |
|||
char ret[9999]; |
|||
const char* greet = "Playing synth:"; |
|||
const char* model = synth->model_name; |
|||
|
|||
char osc[4]; |
|||
sprintf(osc, "%i", synth->osc_count); |
|||
|
|||
const char* tech = tech_to_string(&synth->technolgy); |
|||
const char* filt_tech = tech_to_string(&synth->filter.technology); |
|||
const char* filt_type = filtertype_to_string(synth->filter->type); |
|||
|
|||
sprintf(ret, "%s\nnamed: %s\nosc: %s\ntech:%s\nfilt:%s / %s\n", greet, model, osc, tech, filt_tech, filt_type); |
|||
return strdup(ret); |
|||
} |
@ -0,0 +1,58 @@ |
|||
#ifndef SYNTH_SHED_H |
|||
#define SYNTH_SHED_H |
|||
|
|||
// Types
|
|||
// != 0 means ERR
|
|||
typedef int SYNTH_STATUS; |
|||
typedef enum _filtertype filtertype_t; |
|||
typedef struct _synth synth_t; |
|||
|
|||
// Enums
|
|||
enum _filtertype { |
|||
HPF, |
|||
LPF, |
|||
BPF |
|||
}; |
|||
|
|||
typedef enum _tech { |
|||
ANALOG, |
|||
DIGITAL |
|||
} tech_t; |
|||
|
|||
// Structs
|
|||
typedef struct _filter { |
|||
tech_t technology; |
|||
filtertype_t *type; |
|||
} filter_t; |
|||
|
|||
|
|||
struct _synth { |
|||
const char* model_name; |
|||
int osc_count; |
|||
tech_t technolgy; |
|||
filter_t filter; |
|||
}; |
|||
|
|||
|
|||
// Functions
|
|||
void init_synth_shed(); |
|||
|
|||
synth_t* synth_create(const char* name); |
|||
|
|||
//SYNTH_STATUS synth_set_osc_count(synth_t* synth,
|
|||
// int osc_count);
|
|||
//
|
|||
//SYNTH_STATUS synth_set_filter(synth_t* synth,
|
|||
// filter_t* filt);
|
|||
//
|
|||
//SYNTH_STATUS synth_set_tech(synth_t* synth,
|
|||
// tech_t tech);
|
|||
|
|||
const char* tech_to_string(const tech_t* tech); |
|||
|
|||
const char* filtertype_to_string(const filtertype_t *filt); |
|||
|
|||
|
|||
const char* play_synth(synth_t *synth); |
|||
|
|||
#endif //SYNTH_SHED_H
|
Loading…
Reference in new issue