1 #ifndef VOICE_H_INCLUDED
2 #define VOICE_H_INCLUDED 1
7 #define UNIT 0x100000000LL
10 #define BIGGER ((uint64_t) (1.5819767 * UNIT))
22 if (a < 0.01) a = 0.01;
25 attack = (uint32_t) (
DT *
UNIT / a);
28 if (d < 0.01) d = 0.01;
29 decay = (uint32_t)(
UNIT * exp(-
DT / d));
32 sustain = (uint32_t) (
UNIT * s);
35 if (r < 0.01) r = 0.01;
36 release = (uint32_t)(
UNIT * exp(-
DT / r));
56 x = ((uint64_t) _value) +
attack;
65 else if (_state == 2) {
69 gap = (x *
decay) >> 32;
71 else if (_state == 0) {
74 if (_value < (1 << 18))
109 return x - 0x80000000;
113 if (phase >= 0x80000000) {
118 return (x << 1) - 0x80000000;
122 if (phase >= 0x80000000) {
168 #endif // VOICE_H_INCLUDED
void keydown(uint32_t down)
void setwaveform(int32_t x)
int32_t mult_unsigned_signed(uint32_t x, int32_t y)
void keydown(uint32_t down)