summaryrefslogtreecommitdiff
path: root/libs/dolphin/src/axart/axartenv.c
blob: 278bfb5dfb691a1ad177cd3cb692a4a05fa86171 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <dolphin/axart.h>
#include <dolphin/os.h>
#include <dolphin/mix.h>

void AXARTPitchEnv(AXART_PITCH_ENV* articulator) {
    if (articulator->cents != articulator->target) {
        articulator->cents += articulator->delta;
        if (articulator->delta > 0) {
            if (articulator->cents > articulator->target) {
                articulator->cents = articulator->target;
            }
        } else if (articulator->delta < 0) {
            if (articulator->cents < articulator->target) {
                articulator->cents = articulator->target;
            }
        }
    }
}

void AXARTVolumeEnv(AXART_VOLUME_ENV* articulator) {
    if (articulator->attenuation != articulator->target) {
        articulator->attenuation += articulator->delta;
        if (articulator->delta > 0) {
            if (articulator->attenuation > articulator->target) {
                articulator->attenuation = articulator->target;
            }
        } else if (articulator->delta < 0) {
            if (articulator->attenuation < articulator->target) {
                articulator->attenuation = articulator->target;
            }
        }
    }
}