diff --git a/src/AMY-Arduino.cpp b/src/AMY-Arduino.cpp index 6e7b34a..1c58e09 100644 --- a/src/AMY-Arduino.cpp +++ b/src/AMY-Arduino.cpp @@ -69,7 +69,7 @@ void AMY::send_message(char * message) { amy_add_event(amy_parse_message(message)); } -void AMY::drums(int32_t start, uint16_t loops) { +void AMY::drums(uint32_t start, uint16_t loops) { example_drums(start, loops); } @@ -77,6 +77,10 @@ void AMY::voice_chord(uint32_t start, uint16_t patch) { example_voice_chord(start, patch); } +void AMY::fm(uint32_t start) { + example_fm(start); +} + diff --git a/src/AMY-Arduino.h b/src/AMY-Arduino.h index 27ce3ac..f5ed369 100644 --- a/src/AMY-Arduino.h +++ b/src/AMY-Arduino.h @@ -29,9 +29,9 @@ class AMY void begin(uint8_t cores, uint8_t reverb, uint8_t chorus); int32_t sysclock(); - void fm(int32_t start); - void drums(int32_t start, uint16_t loops); + void drums(uint32_t start, uint16_t loops); void voice_chord(uint32_t start, uint16_t patch); + void fm(uint32_t start); void reset(); struct event default_event(); void add_event(struct event e); diff --git a/src/amy.c b/src/amy.c index c2edfc8..05b25dc 100644 --- a/src/amy.c +++ b/src/amy.c @@ -912,8 +912,9 @@ void play_event(struct delta d) { if(d.param >= ALGO_SOURCE_START && d.param < ALGO_SOURCE_END) { uint16_t which_source = d.param - ALGO_SOURCE_START; - synth[d.osc].algo_source[which_source] = *(int16_t *)&d.data; - if(synth[d.osc].algo_source[which_source] >= 0) synth[*(int16_t*)&d.data].status=IS_ALGO_SOURCE; + synth[d.osc].algo_source[which_source] = d.data; + if(AMY_IS_SET(synth[d.osc].algo_source[which_source])) + synth[synth[d.osc].algo_source[which_source]].status = IS_ALGO_SOURCE; } // for global changes, just make the change, no need to update the per-osc synth