             for (byte d=0; d<rDurlength; d++) {
                 newSustainDuration[d] = serialIncoming[++i];
             }
-            sustainDuration = atoi(newSustainDuration);
+            sustainDuration = atol(newSustainDuration);
         } else if (data < 21) {
         } else if (data < 40) {
             halfTurns = data - 20;

char newDuration[rDurlength];
char newSustainDuration[rDurlength];
int halfTurns;
unsigned int Duration;
unsigned int midDuration;
unsigned int sustainDuration;
float startPitch;
float midPitch;
float endPitch;

    return glissTime;
}

void durationturn(unsigned long duration, float pitch, bool dir, bool recentre) {
    _durationgliss(duration, pitch, pitch, 0, 0, dir, recentre);
}

long durationgliss(unsigned long duration, float startpitch, float endpitch,
        bool dir, bool recentre, int sustain) {
    return _durationgliss(duration, startpitch, endpitch, sustain, sustain, dir, recentre);
}
