#include "common.h" #include #include #include "m_pd.h" // to post errors and debug messages t_duration int2duration(int n) { t_duration dur; int curr, i, j, ok, currden; curr=0; ok=0; for (i=0; iprevious = 0; newElement->next = 0; newElement->voice=voice; newElement->duration.numerator = res.numerator; newElement->duration.denominator = res.denominator; *firstEvent = newElement; } void concatenateBeat(t_rhythm_event *currentEvent, unsigned short int voice, float fduration) { t_duration res; t_rhythm_event *newElement, *lastElement; lastElement = currentEvent; while(lastElement->next) lastElement = lastElement->next; // convert from float to duration res = float2duration(fduration); // allocate a new element of the list newElement = (t_rhythm_event *) malloc(sizeof(t_rhythm_event)); // set the pointers newElement->previous = lastElement; newElement->next = 0; lastElement->next = newElement; newElement->voice=voice; newElement->duration.numerator = res.numerator; newElement->duration.denominator = res.denominator; } void freeBeats(t_rhythm_event *currentEvent) { t_rhythm_event *prev; t_rhythm_event *next; // go to the first element of the list while(currentEvent->previous) currentEvent = currentEvent->previous; // now free each element next=currentEvent->next; do { prev = currentEvent; next = currentEvent->next; free(currentEvent); } while(next); }