
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