OSCtoCV Library
OSCtoCV_LFO.cpp@0:cd43a974c54c, 2016-01-17 (annotated)
- Committer:
- casiotone401
- Date:
- Sun Jan 17 09:30:32 2016 +0000
- Revision:
- 0:cd43a974c54c
- Child:
- 1:981b62bb5c87
added random, lfo mode
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
casiotone401 | 0:cd43a974c54c | 1 | /* |
casiotone401 | 0:cd43a974c54c | 2 | OSCtoCV_Sequencer.cpp |
casiotone401 | 0:cd43a974c54c | 3 | */ |
casiotone401 | 0:cd43a974c54c | 4 | |
casiotone401 | 0:cd43a974c54c | 5 | #include <math.h> |
casiotone401 | 0:cd43a974c54c | 6 | #include <limits.h> |
casiotone401 | 0:cd43a974c54c | 7 | |
casiotone401 | 0:cd43a974c54c | 8 | #include "OSCtoCV_LFO.h" |
casiotone401 | 0:cd43a974c54c | 9 | #include "OSCtoCV_Random.h" |
casiotone401 | 0:cd43a974c54c | 10 | #include "OSCtoCV.h" |
casiotone401 | 0:cd43a974c54c | 11 | |
casiotone401 | 0:cd43a974c54c | 12 | #define M_PI 3.1415926535897932384626433832795 |
casiotone401 | 0:cd43a974c54c | 13 | |
casiotone401 | 0:cd43a974c54c | 14 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 15 | // update LFO |
casiotone401 | 0:cd43a974c54c | 16 | |
casiotone401 | 0:cd43a974c54c | 17 | float UpdateLFO(float freq) |
casiotone401 | 0:cd43a974c54c | 18 | { |
casiotone401 | 0:cd43a974c54c | 19 | static float pos; |
casiotone401 | 0:cd43a974c54c | 20 | |
casiotone401 | 0:cd43a974c54c | 21 | pos += 0.000015259 * freq; |
casiotone401 | 0:cd43a974c54c | 22 | |
casiotone401 | 0:cd43a974c54c | 23 | if (pos > 1.0f) |
casiotone401 | 0:cd43a974c54c | 24 | { |
casiotone401 | 0:cd43a974c54c | 25 | pos = 0; |
casiotone401 | 0:cd43a974c54c | 26 | } |
casiotone401 | 0:cd43a974c54c | 27 | |
casiotone401 | 0:cd43a974c54c | 28 | return pos; |
casiotone401 | 0:cd43a974c54c | 29 | } |
casiotone401 | 0:cd43a974c54c | 30 | |
casiotone401 | 0:cd43a974c54c | 31 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 32 | // triangle wave calc |
casiotone401 | 0:cd43a974c54c | 33 | |
casiotone401 | 0:cd43a974c54c | 34 | float TriWave(float pos) |
casiotone401 | 0:cd43a974c54c | 35 | { |
casiotone401 | 0:cd43a974c54c | 36 | return 1.0f - fabs(pos - 0.5f) * 2.0f; |
casiotone401 | 0:cd43a974c54c | 37 | } |
casiotone401 | 0:cd43a974c54c | 38 | |
casiotone401 | 0:cd43a974c54c | 39 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 40 | // saw(ramp) wave calc |
casiotone401 | 0:cd43a974c54c | 41 | |
casiotone401 | 0:cd43a974c54c | 42 | float SawWave(float pos) |
casiotone401 | 0:cd43a974c54c | 43 | { |
casiotone401 | 0:cd43a974c54c | 44 | return 1.0f - pos; |
casiotone401 | 0:cd43a974c54c | 45 | } |
casiotone401 | 0:cd43a974c54c | 46 | |
casiotone401 | 0:cd43a974c54c | 47 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 48 | // square wave calc |
casiotone401 | 0:cd43a974c54c | 49 | |
casiotone401 | 0:cd43a974c54c | 50 | float SqrWave(float pos) |
casiotone401 | 0:cd43a974c54c | 51 | { |
casiotone401 | 0:cd43a974c54c | 52 | return pos < 0.8f ? 1.0f : 0.0f; |
casiotone401 | 0:cd43a974c54c | 53 | } |
casiotone401 | 0:cd43a974c54c | 54 | |
casiotone401 | 0:cd43a974c54c | 55 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 56 | // sine wave calc |
casiotone401 | 0:cd43a974c54c | 57 | |
casiotone401 | 0:cd43a974c54c | 58 | float SinWave(float pos) |
casiotone401 | 0:cd43a974c54c | 59 | { |
casiotone401 | 0:cd43a974c54c | 60 | return (sin(pos*2 * M_PI) + 1.0f) * 0.5f; |
casiotone401 | 0:cd43a974c54c | 61 | } |
casiotone401 | 0:cd43a974c54c | 62 | |
casiotone401 | 0:cd43a974c54c | 63 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 64 | // exponential wave calc |
casiotone401 | 0:cd43a974c54c | 65 | |
casiotone401 | 0:cd43a974c54c | 66 | float ExpWave(float pos) |
casiotone401 | 0:cd43a974c54c | 67 | { |
casiotone401 | 0:cd43a974c54c | 68 | return powf((1.0f - fabs(pos - 0.5f) * 2.0f), 2.0); |
casiotone401 | 0:cd43a974c54c | 69 | } |
casiotone401 | 0:cd43a974c54c | 70 | |
casiotone401 | 0:cd43a974c54c | 71 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 72 | // exp wave calc |
casiotone401 | 0:cd43a974c54c | 73 | |
casiotone401 | 0:cd43a974c54c | 74 | float LogWave(float pos) |
casiotone401 | 0:cd43a974c54c | 75 | { |
casiotone401 | 0:cd43a974c54c | 76 | return powf((1.0f - fabs(pos - 0.5f) * 2.0f), 0.5); |
casiotone401 | 0:cd43a974c54c | 77 | } |
casiotone401 | 0:cd43a974c54c | 78 | |
casiotone401 | 0:cd43a974c54c | 79 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 80 | // synthesis wave calc sin |
casiotone401 | 0:cd43a974c54c | 81 | |
casiotone401 | 0:cd43a974c54c | 82 | float SynthWave1(float pos) |
casiotone401 | 0:cd43a974c54c | 83 | { |
casiotone401 | 0:cd43a974c54c | 84 | return (SinWave(pos) + SinWave(3 * pos) - SinWave(2 * pos)) * 0.5; |
casiotone401 | 0:cd43a974c54c | 85 | } |
casiotone401 | 0:cd43a974c54c | 86 | |
casiotone401 | 0:cd43a974c54c | 87 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 88 | // synthesis wave calc sin |
casiotone401 | 0:cd43a974c54c | 89 | |
casiotone401 | 0:cd43a974c54c | 90 | float SynthWave2(float pos) |
casiotone401 | 0:cd43a974c54c | 91 | { |
casiotone401 | 0:cd43a974c54c | 92 | return (SinWave(pos) + SinWave(1 / 3 * pos) - SinWave(2 * pos)) * 0.3; |
casiotone401 | 0:cd43a974c54c | 93 | } |
casiotone401 | 0:cd43a974c54c | 94 | |
casiotone401 | 0:cd43a974c54c | 95 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 96 | // invert float value |
casiotone401 | 0:cd43a974c54c | 97 | |
casiotone401 | 0:cd43a974c54c | 98 | float Invert(float x) |
casiotone401 | 0:cd43a974c54c | 99 | { |
casiotone401 | 0:cd43a974c54c | 100 | return SCALING_N - x; |
casiotone401 | 0:cd43a974c54c | 101 | } |
casiotone401 | 0:cd43a974c54c | 102 | |
casiotone401 | 0:cd43a974c54c | 103 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 104 | // LFO cv generator |
casiotone401 | 0:cd43a974c54c | 105 | |
casiotone401 | 0:cd43a974c54c | 106 | void SteppedLFO(void) |
casiotone401 | 0:cd43a974c54c | 107 | { |
casiotone401 | 0:cd43a974c54c | 108 | static uint8_t ch, mcount, qmode, amode; |
casiotone401 | 0:cd43a974c54c | 109 | int waveform; |
casiotone401 | 0:cd43a974c54c | 110 | static int _waveform = -1; |
casiotone401 | 0:cd43a974c54c | 111 | static int steps; |
casiotone401 | 0:cd43a974c54c | 112 | static float lfocv[8], glidecv[8]; |
casiotone401 | 0:cd43a974c54c | 113 | unsigned int cv; |
casiotone401 | 0:cd43a974c54c | 114 | static float qcv; |
casiotone401 | 0:cd43a974c54c | 115 | float freq; |
casiotone401 | 0:cd43a974c54c | 116 | |
casiotone401 | 0:cd43a974c54c | 117 | qmode = (gCtrl[1] * (SCALE_NUM - 1.0f)); // Sequencer Quantize Mode (gCtrl[1]) |
casiotone401 | 0:cd43a974c54c | 118 | amode = SCALE_AOUT * qmode; |
casiotone401 | 0:cd43a974c54c | 119 | |
casiotone401 | 0:cd43a974c54c | 120 | gAOUT.write_u16(amode); |
casiotone401 | 0:cd43a974c54c | 121 | |
casiotone401 | 0:cd43a974c54c | 122 | // select waveform ArdSW1(gArdSW[0]) |
casiotone401 | 0:cd43a974c54c | 123 | waveform = CheckSubMode1(); |
casiotone401 | 0:cd43a974c54c | 124 | |
casiotone401 | 0:cd43a974c54c | 125 | if (_waveform != waveform) // update LCD |
casiotone401 | 0:cd43a974c54c | 126 | { |
casiotone401 | 0:cd43a974c54c | 127 | switch (waveform) |
casiotone401 | 0:cd43a974c54c | 128 | { |
casiotone401 | 0:cd43a974c54c | 129 | case TRIANGLE_WAVE: |
casiotone401 | 0:cd43a974c54c | 130 | |
casiotone401 | 0:cd43a974c54c | 131 | UpdateSubModeLCD("Tr:::::"); |
casiotone401 | 0:cd43a974c54c | 132 | break; |
casiotone401 | 0:cd43a974c54c | 133 | |
casiotone401 | 0:cd43a974c54c | 134 | case SAW_WAVE: |
casiotone401 | 0:cd43a974c54c | 135 | |
casiotone401 | 0:cd43a974c54c | 136 | UpdateSubModeLCD("Saw:::::"); |
casiotone401 | 0:cd43a974c54c | 137 | break; |
casiotone401 | 0:cd43a974c54c | 138 | |
casiotone401 | 0:cd43a974c54c | 139 | case SQUARE_WAVE: |
casiotone401 | 0:cd43a974c54c | 140 | |
casiotone401 | 0:cd43a974c54c | 141 | UpdateSubModeLCD("Sqr:::::"); |
casiotone401 | 0:cd43a974c54c | 142 | break; |
casiotone401 | 0:cd43a974c54c | 143 | |
casiotone401 | 0:cd43a974c54c | 144 | case SINE_WAVE: |
casiotone401 | 0:cd43a974c54c | 145 | |
casiotone401 | 0:cd43a974c54c | 146 | UpdateSubModeLCD("Sine::::"); |
casiotone401 | 0:cd43a974c54c | 147 | break; |
casiotone401 | 0:cd43a974c54c | 148 | |
casiotone401 | 0:cd43a974c54c | 149 | case EXP_WAVE: |
casiotone401 | 0:cd43a974c54c | 150 | |
casiotone401 | 0:cd43a974c54c | 151 | UpdateSubModeLCD("Exp:::::"); |
casiotone401 | 0:cd43a974c54c | 152 | break; |
casiotone401 | 0:cd43a974c54c | 153 | |
casiotone401 | 0:cd43a974c54c | 154 | case LOG_WAVE: |
casiotone401 | 0:cd43a974c54c | 155 | |
casiotone401 | 0:cd43a974c54c | 156 | UpdateSubModeLCD("Log:::::"); |
casiotone401 | 0:cd43a974c54c | 157 | break; |
casiotone401 | 0:cd43a974c54c | 158 | |
casiotone401 | 0:cd43a974c54c | 159 | case SYNTH_WAVE: |
casiotone401 | 0:cd43a974c54c | 160 | |
casiotone401 | 0:cd43a974c54c | 161 | UpdateSubModeLCD("Syn:::::"); |
casiotone401 | 0:cd43a974c54c | 162 | break; |
casiotone401 | 0:cd43a974c54c | 163 | |
casiotone401 | 0:cd43a974c54c | 164 | case NOISE: |
casiotone401 | 0:cd43a974c54c | 165 | |
casiotone401 | 0:cd43a974c54c | 166 | UpdateSubModeLCD("Noise:::"); |
casiotone401 | 0:cd43a974c54c | 167 | break; |
casiotone401 | 0:cd43a974c54c | 168 | |
casiotone401 | 0:cd43a974c54c | 169 | default: |
casiotone401 | 0:cd43a974c54c | 170 | break; |
casiotone401 | 0:cd43a974c54c | 171 | } |
casiotone401 | 0:cd43a974c54c | 172 | |
casiotone401 | 0:cd43a974c54c | 173 | _waveform = waveform; |
casiotone401 | 0:cd43a974c54c | 174 | } |
casiotone401 | 0:cd43a974c54c | 175 | |
casiotone401 | 0:cd43a974c54c | 176 | // frequency control ArdPot1(gArdPot[0]) |
casiotone401 | 0:cd43a974c54c | 177 | freq = gArdPot[0] * 0.10f + 0.001f; |
casiotone401 | 0:cd43a974c54c | 178 | |
casiotone401 | 0:cd43a974c54c | 179 | switch (waveform) |
casiotone401 | 0:cd43a974c54c | 180 | { |
casiotone401 | 0:cd43a974c54c | 181 | case TRIANGLE_WAVE: |
casiotone401 | 0:cd43a974c54c | 182 | |
casiotone401 | 0:cd43a974c54c | 183 | lfocv[0] = TriWave(UpdateLFO(freq)) * SCALING_N; |
casiotone401 | 0:cd43a974c54c | 184 | break; |
casiotone401 | 0:cd43a974c54c | 185 | |
casiotone401 | 0:cd43a974c54c | 186 | case SAW_WAVE: |
casiotone401 | 0:cd43a974c54c | 187 | |
casiotone401 | 0:cd43a974c54c | 188 | lfocv[0] = SawWave(UpdateLFO(freq)) * SCALING_N; |
casiotone401 | 0:cd43a974c54c | 189 | break; |
casiotone401 | 0:cd43a974c54c | 190 | |
casiotone401 | 0:cd43a974c54c | 191 | case SQUARE_WAVE: |
casiotone401 | 0:cd43a974c54c | 192 | |
casiotone401 | 0:cd43a974c54c | 193 | lfocv[0] = SqrWave(UpdateLFO(freq)) * SCALING_N; |
casiotone401 | 0:cd43a974c54c | 194 | break; |
casiotone401 | 0:cd43a974c54c | 195 | |
casiotone401 | 0:cd43a974c54c | 196 | case SINE_WAVE: |
casiotone401 | 0:cd43a974c54c | 197 | |
casiotone401 | 0:cd43a974c54c | 198 | lfocv[0] = SinWave(UpdateLFO(freq)) * SCALING_N; |
casiotone401 | 0:cd43a974c54c | 199 | break; |
casiotone401 | 0:cd43a974c54c | 200 | |
casiotone401 | 0:cd43a974c54c | 201 | case EXP_WAVE: |
casiotone401 | 0:cd43a974c54c | 202 | |
casiotone401 | 0:cd43a974c54c | 203 | lfocv[0] = ExpWave(UpdateLFO(freq)) * SCALING_N; |
casiotone401 | 0:cd43a974c54c | 204 | break; |
casiotone401 | 0:cd43a974c54c | 205 | |
casiotone401 | 0:cd43a974c54c | 206 | case LOG_WAVE: |
casiotone401 | 0:cd43a974c54c | 207 | |
casiotone401 | 0:cd43a974c54c | 208 | lfocv[0] = LogWave(UpdateLFO(freq)) * SCALING_N; |
casiotone401 | 0:cd43a974c54c | 209 | break; |
casiotone401 | 0:cd43a974c54c | 210 | |
casiotone401 | 0:cd43a974c54c | 211 | case SYNTH_WAVE: |
casiotone401 | 0:cd43a974c54c | 212 | |
casiotone401 | 0:cd43a974c54c | 213 | lfocv[0] = SynthWave1(UpdateLFO(freq)) * SCALING_N; |
casiotone401 | 0:cd43a974c54c | 214 | break; |
casiotone401 | 0:cd43a974c54c | 215 | |
casiotone401 | 0:cd43a974c54c | 216 | case NOISE: |
casiotone401 | 0:cd43a974c54c | 217 | |
casiotone401 | 0:cd43a974c54c | 218 | lfocv[0] = fmodf(Xorshift_32(), SCALING_N); |
casiotone401 | 0:cd43a974c54c | 219 | break; |
casiotone401 | 0:cd43a974c54c | 220 | |
casiotone401 | 0:cd43a974c54c | 221 | default: |
casiotone401 | 0:cd43a974c54c | 222 | break; |
casiotone401 | 0:cd43a974c54c | 223 | } |
casiotone401 | 0:cd43a974c54c | 224 | |
casiotone401 | 0:cd43a974c54c | 225 | //lfocv[i + 4] = Invert(lfocv[i]); // ch4 ~ ch8 invert waveform |
casiotone401 | 0:cd43a974c54c | 226 | |
casiotone401 | 0:cd43a974c54c | 227 | switch (qmode) |
casiotone401 | 0:cd43a974c54c | 228 | { |
casiotone401 | 0:cd43a974c54c | 229 | case Lin: |
casiotone401 | 0:cd43a974c54c | 230 | |
casiotone401 | 0:cd43a974c54c | 231 | if (gArdPot[1] > 10) |
casiotone401 | 0:cd43a974c54c | 232 | { |
casiotone401 | 0:cd43a974c54c | 233 | steps = (unsigned int)gArdPot[1] * 0.1; // check LFO Steps(Quantize Resolustion)ArdPot2gArdPot[1] |
casiotone401 | 0:cd43a974c54c | 234 | |
casiotone401 | 0:cd43a974c54c | 235 | lfocv[0] = quantizedMap[(unsigned int)(MapFloat(lfocv[0], 0, SCALING_N, 0, steps)) * (1024 / steps)]; |
casiotone401 | 0:cd43a974c54c | 236 | } |
casiotone401 | 0:cd43a974c54c | 237 | |
casiotone401 | 0:cd43a974c54c | 238 | glidecv[0] = glidecv[0] * gGlide + lfocv[0] * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 239 | break; |
casiotone401 | 0:cd43a974c54c | 240 | |
casiotone401 | 0:cd43a974c54c | 241 | case Chr: |
casiotone401 | 0:cd43a974c54c | 242 | |
casiotone401 | 0:cd43a974c54c | 243 | qcv = calibMap1[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES1 - 1))]; |
casiotone401 | 0:cd43a974c54c | 244 | |
casiotone401 | 0:cd43a974c54c | 245 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 246 | |
casiotone401 | 0:cd43a974c54c | 247 | break; |
casiotone401 | 0:cd43a974c54c | 248 | |
casiotone401 | 0:cd43a974c54c | 249 | case Maj: |
casiotone401 | 0:cd43a974c54c | 250 | |
casiotone401 | 0:cd43a974c54c | 251 | qcv = calibMap2[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES2 - 1))]; |
casiotone401 | 0:cd43a974c54c | 252 | |
casiotone401 | 0:cd43a974c54c | 253 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 254 | |
casiotone401 | 0:cd43a974c54c | 255 | break; |
casiotone401 | 0:cd43a974c54c | 256 | |
casiotone401 | 0:cd43a974c54c | 257 | case M7: |
casiotone401 | 0:cd43a974c54c | 258 | |
casiotone401 | 0:cd43a974c54c | 259 | qcv = calibMap3[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES3 - 1))]; |
casiotone401 | 0:cd43a974c54c | 260 | |
casiotone401 | 0:cd43a974c54c | 261 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 262 | |
casiotone401 | 0:cd43a974c54c | 263 | break; |
casiotone401 | 0:cd43a974c54c | 264 | |
casiotone401 | 0:cd43a974c54c | 265 | case Min7: |
casiotone401 | 0:cd43a974c54c | 266 | |
casiotone401 | 0:cd43a974c54c | 267 | qcv = calibMap4[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES4 - 1))]; |
casiotone401 | 0:cd43a974c54c | 268 | |
casiotone401 | 0:cd43a974c54c | 269 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 270 | |
casiotone401 | 0:cd43a974c54c | 271 | break; |
casiotone401 | 0:cd43a974c54c | 272 | |
casiotone401 | 0:cd43a974c54c | 273 | case Dor: |
casiotone401 | 0:cd43a974c54c | 274 | |
casiotone401 | 0:cd43a974c54c | 275 | qcv = calibMap5[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES5 - 1))]; |
casiotone401 | 0:cd43a974c54c | 276 | |
casiotone401 | 0:cd43a974c54c | 277 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 278 | |
casiotone401 | 0:cd43a974c54c | 279 | break; |
casiotone401 | 0:cd43a974c54c | 280 | |
casiotone401 | 0:cd43a974c54c | 281 | case Min: |
casiotone401 | 0:cd43a974c54c | 282 | |
casiotone401 | 0:cd43a974c54c | 283 | qcv = calibMap6[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES6 - 1))]; |
casiotone401 | 0:cd43a974c54c | 284 | |
casiotone401 | 0:cd43a974c54c | 285 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 286 | |
casiotone401 | 0:cd43a974c54c | 287 | break; |
casiotone401 | 0:cd43a974c54c | 288 | |
casiotone401 | 0:cd43a974c54c | 289 | case S5th: |
casiotone401 | 0:cd43a974c54c | 290 | |
casiotone401 | 0:cd43a974c54c | 291 | qcv = calibMap7[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES7 - 1))]; |
casiotone401 | 0:cd43a974c54c | 292 | |
casiotone401 | 0:cd43a974c54c | 293 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 294 | |
casiotone401 | 0:cd43a974c54c | 295 | break; |
casiotone401 | 0:cd43a974c54c | 296 | |
casiotone401 | 0:cd43a974c54c | 297 | case Wht: |
casiotone401 | 0:cd43a974c54c | 298 | |
casiotone401 | 0:cd43a974c54c | 299 | qcv = calibMap8[(unsigned int)MapFloat(lfocv[0], 0, SCALING_N, 0, (QUAN_RES8 - 1))]; |
casiotone401 | 0:cd43a974c54c | 300 | |
casiotone401 | 0:cd43a974c54c | 301 | glidecv[0] = glidecv[0] * gGlide + (qcv * SCALING_N) * (1.0f - gGlide); |
casiotone401 | 0:cd43a974c54c | 302 | |
casiotone401 | 0:cd43a974c54c | 303 | break; |
casiotone401 | 0:cd43a974c54c | 304 | } |
casiotone401 | 0:cd43a974c54c | 305 | |
casiotone401 | 0:cd43a974c54c | 306 | cv = (unsigned int)(glidecv[0]); |
casiotone401 | 0:cd43a974c54c | 307 | |
casiotone401 | 0:cd43a974c54c | 308 | UpdateCV(WRITE_UPDATE_N, ch, &cv); |
casiotone401 | 0:cd43a974c54c | 309 | |
casiotone401 | 0:cd43a974c54c | 310 | if (mcount == 0x1F) |
casiotone401 | 0:cd43a974c54c | 311 | { |
casiotone401 | 0:cd43a974c54c | 312 | UpdateCVMeter(ch, &cv); |
casiotone401 | 0:cd43a974c54c | 313 | } |
casiotone401 | 0:cd43a974c54c | 314 | |
casiotone401 | 0:cd43a974c54c | 315 | ++ch; |
casiotone401 | 0:cd43a974c54c | 316 | |
casiotone401 | 0:cd43a974c54c | 317 | if (ch &= 0x07) |
casiotone401 | 0:cd43a974c54c | 318 | { |
casiotone401 | 0:cd43a974c54c | 319 | ++mcount; |
casiotone401 | 0:cd43a974c54c | 320 | mcount &= 0x3F; |
casiotone401 | 0:cd43a974c54c | 321 | } |
casiotone401 | 0:cd43a974c54c | 322 | |
casiotone401 | 0:cd43a974c54c | 323 | } |
casiotone401 | 0:cd43a974c54c | 324 | |
casiotone401 | 0:cd43a974c54c | 325 | |
casiotone401 | 0:cd43a974c54c | 326 |