OSCtoCV Library

Dependents:   OSCtoCVConverter

Committer:
casiotone401
Date:
Thu Feb 25 11:21:37 2016 +0000
Revision:
6:7fb15b1b5459
Parent:
4:fe335dc8d53d
minor change

Who changed what in which revision?

UserRevisionLine numberNew contents of line
casiotone401 0:cd43a974c54c 1 /*
casiotone401 0:cd43a974c54c 2 OSCtoCV.cpp
casiotone401 0:cd43a974c54c 3 */
casiotone401 0:cd43a974c54c 4
casiotone401 0:cd43a974c54c 5 #include "mbed.h"
casiotone401 0:cd43a974c54c 6 #include "OSCtoCV.h"
casiotone401 0:cd43a974c54c 7
casiotone401 0:cd43a974c54c 8 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 9 // Global Variables
casiotone401 0:cd43a974c54c 10
casiotone401 0:cd43a974c54c 11 // Silentway Calibration Data Mapping
casiotone401 0:cd43a974c54c 12 // http://www.expert-sleepers.co.uk/silentway.html
casiotone401 0:cd43a974c54c 13
casiotone401 0:cd43a974c54c 14 // Chromatic Scale
casiotone401 0:cd43a974c54c 15 const float calibMap1[QUAN_RES1] = {
casiotone401 6:7fb15b1b5459 16 0.00076928f, 0.00900736f, 0.01724544f, 0.02548352f, 0.03372160f,
casiotone401 6:7fb15b1b5459 17 0.04195968f, 0.05019776f, 0.05843584f, 0.06667392f, 0.07491200f,
casiotone401 6:7fb15b1b5459 18 0.08315008f, 0.09138816f, 0.09962624f, 0.10786432f, 0.11610240f,
casiotone401 6:7fb15b1b5459 19 0.12434047f, 0.13258974f, 0.14083999f, 0.14909023f, 0.15734047f,
casiotone401 6:7fb15b1b5459 20 0.16559070f, 0.17384095f, 0.18209119f, 0.19034143f, 0.19859168f,
casiotone401 6:7fb15b1b5459 21 0.20684192f, 0.21509215f, 0.22334240f, 0.23159264f, 0.23984288f,
casiotone401 6:7fb15b1b5459 22 0.24809311f, 0.25634655f, 0.26460093f, 0.27285531f, 0.28110969f,
casiotone401 6:7fb15b1b5459 23 0.28936407f, 0.29761845f, 0.30587283f, 0.31412721f, 0.32238159f,
casiotone401 6:7fb15b1b5459 24 0.33063596f, 0.33889034f, 0.34714472f, 0.35539910f, 0.36365348f,
casiotone401 6:7fb15b1b5459 25 0.37190786f, 0.38017464f, 0.38844886f, 0.39672306f, 0.40499726f,
casiotone401 6:7fb15b1b5459 26 0.41327149f, 0.42154568f, 0.42981988f, 0.43809411f, 0.44636831f,
casiotone401 6:7fb15b1b5459 27 0.45464250f, 0.46291673f, 0.47119093f, 0.47946513f, 0.48773935f,
casiotone401 6:7fb15b1b5459 28 0.49601355f, 0.50430328f, 0.51260746f, 0.52091163f, 0.52921581f,
casiotone401 6:7fb15b1b5459 29 0.53751999f, 0.54582411f, 0.55412829f, 0.56243247f, 0.57073665f,
casiotone401 6:7fb15b1b5459 30 0.57904083f, 0.58734500f, 0.59564912f, 0.60395330f, 0.61225748f,
casiotone401 6:7fb15b1b5459 31 0.62056166f, 0.62890279f, 0.63728637f, 0.64566994f, 0.65405351f,
casiotone401 6:7fb15b1b5459 32 0.66243708f, 0.67082065f, 0.67920423f, 0.68758780f, 0.69597137f,
casiotone401 6:7fb15b1b5459 33 0.70435494f, 0.71273851f, 0.72112209f, 0.72950566f, 0.73788923f,
casiotone401 6:7fb15b1b5459 34 0.74627280f, 0.75476575f, 0.76334614f, 0.77192658f, 0.78050703f,
casiotone401 6:7fb15b1b5459 35 0.78908741f, 0.79766786f, 0.80624831f, 0.81482869f, 0.82340914f,
casiotone401 6:7fb15b1b5459 36 0.83198959f, 0.84056997f, 0.84915042f, 0.85773087f, 0.86631125f,
casiotone401 6:7fb15b1b5459 37 0.87489170f, 0.88425636f, 0.89363104f, 0.90300572f, 0.91238040f,
casiotone401 6:7fb15b1b5459 38 0.92175508f, 0.93112975f, 0.94050443f, 0.94987911f, 0.95925385f,
casiotone401 6:7fb15b1b5459 39 0.96862853f
casiotone401 0:cd43a974c54c 40 };
casiotone401 0:cd43a974c54c 41
casiotone401 0:cd43a974c54c 42 // Major Scale
casiotone401 0:cd43a974c54c 43 const float calibMap2[QUAN_RES2] = {
casiotone401 0:cd43a974c54c 44 calibMap1[0], calibMap1[2], calibMap1[4], calibMap1[5], calibMap1[7],
casiotone401 0:cd43a974c54c 45 calibMap1[9], calibMap1[11], calibMap1[12], calibMap1[14], calibMap1[16],
casiotone401 0:cd43a974c54c 46 calibMap1[17], calibMap1[19], calibMap1[21], calibMap1[23], calibMap1[24],
casiotone401 0:cd43a974c54c 47 calibMap1[26], calibMap1[28], calibMap1[29], calibMap1[31], calibMap1[33],
casiotone401 0:cd43a974c54c 48 calibMap1[35], calibMap1[36], calibMap1[38], calibMap1[40], calibMap1[41],
casiotone401 0:cd43a974c54c 49 calibMap1[43], calibMap1[45], calibMap1[47], calibMap1[48], calibMap1[50],
casiotone401 0:cd43a974c54c 50 calibMap1[52], calibMap1[53], calibMap1[55], calibMap1[57], calibMap1[59],
casiotone401 0:cd43a974c54c 51 calibMap1[60], calibMap1[62], calibMap1[64], calibMap1[65], calibMap1[67],
casiotone401 0:cd43a974c54c 52 calibMap1[69], calibMap1[71], calibMap1[72], calibMap1[74], calibMap1[76],
casiotone401 0:cd43a974c54c 53 calibMap1[77], calibMap1[79], calibMap1[81], calibMap1[83], calibMap1[84],
casiotone401 0:cd43a974c54c 54 calibMap1[86], calibMap1[88], calibMap1[89], calibMap1[91], calibMap1[93],
casiotone401 0:cd43a974c54c 55 calibMap1[95], calibMap1[96], calibMap1[98], calibMap1[100], calibMap1[101],
casiotone401 0:cd43a974c54c 56 calibMap1[103], calibMap1[105], calibMap1[107], calibMap1[108], calibMap1[110],
casiotone401 0:cd43a974c54c 57 calibMap1[112], calibMap1[113], calibMap1[115]
casiotone401 0:cd43a974c54c 58 };
casiotone401 0:cd43a974c54c 59
casiotone401 0:cd43a974c54c 60 // M7(9)
casiotone401 0:cd43a974c54c 61 const float calibMap3[QUAN_RES3] = {
casiotone401 0:cd43a974c54c 62 calibMap1[0], calibMap1[4], calibMap1[7], calibMap1[11], calibMap1[12],
casiotone401 0:cd43a974c54c 63 calibMap1[14], calibMap1[16], calibMap1[19], calibMap1[23], calibMap1[24],
casiotone401 0:cd43a974c54c 64 calibMap1[26], calibMap1[28], calibMap1[31], calibMap1[35], calibMap1[36],
casiotone401 0:cd43a974c54c 65 calibMap1[38], calibMap1[40], calibMap1[43], calibMap1[47], calibMap1[48],
casiotone401 0:cd43a974c54c 66 calibMap1[50], calibMap1[52], calibMap1[55], calibMap1[59], calibMap1[60],
casiotone401 0:cd43a974c54c 67 calibMap1[62], calibMap1[64], calibMap1[67], calibMap1[71], calibMap1[72],
casiotone401 0:cd43a974c54c 68 calibMap1[76], calibMap1[79], calibMap1[83], calibMap1[84], calibMap1[86],
casiotone401 0:cd43a974c54c 69 calibMap1[88], calibMap1[91], calibMap1[95], calibMap1[96], calibMap1[100],
casiotone401 0:cd43a974c54c 70 calibMap1[103], calibMap1[107], calibMap1[108], calibMap1[110], calibMap1[112],
casiotone401 0:cd43a974c54c 71 calibMap1[115]
casiotone401 0:cd43a974c54c 72 };
casiotone401 0:cd43a974c54c 73
casiotone401 0:cd43a974c54c 74 // m7(9)
casiotone401 0:cd43a974c54c 75 const float calibMap4[QUAN_RES4] = {
casiotone401 0:cd43a974c54c 76 calibMap1[0], calibMap1[3], calibMap1[7], calibMap1[10], calibMap1[12],
casiotone401 0:cd43a974c54c 77 calibMap1[15], calibMap1[19], calibMap1[22], calibMap1[26], calibMap1[27],
casiotone401 0:cd43a974c54c 78 calibMap1[31], calibMap1[34], calibMap1[36], calibMap1[38], calibMap1[39],
casiotone401 0:cd43a974c54c 79 calibMap1[43], calibMap1[46], calibMap1[50], calibMap1[53], calibMap1[55],
casiotone401 0:cd43a974c54c 80 calibMap1[58], calibMap1[60], calibMap1[63], calibMap1[67], calibMap1[70],
casiotone401 0:cd43a974c54c 81 calibMap1[72], calibMap1[74], calibMap1[75], calibMap1[79], calibMap1[82],
casiotone401 0:cd43a974c54c 82 calibMap1[86], calibMap1[89], calibMap1[91], calibMap1[94], calibMap1[96],
casiotone401 0:cd43a974c54c 83 calibMap1[99], calibMap1[103], calibMap1[106], calibMap1[110], calibMap1[113]
casiotone401 0:cd43a974c54c 84 };
casiotone401 0:cd43a974c54c 85
casiotone401 0:cd43a974c54c 86 // Dorian Scale
casiotone401 0:cd43a974c54c 87 const float calibMap5[QUAN_RES5] = {
casiotone401 0:cd43a974c54c 88 calibMap1[0], calibMap1[2], calibMap1[3], calibMap1[5], calibMap1[7],
casiotone401 0:cd43a974c54c 89 calibMap1[9], calibMap1[10], calibMap1[12], calibMap1[14], calibMap1[15],
casiotone401 0:cd43a974c54c 90 calibMap1[17], calibMap1[19], calibMap1[20], calibMap1[21], calibMap1[24],
casiotone401 0:cd43a974c54c 91 calibMap1[26], calibMap1[27], calibMap1[29], calibMap1[31], calibMap1[33],
casiotone401 0:cd43a974c54c 92 calibMap1[34], calibMap1[36], calibMap1[38], calibMap1[39], calibMap1[41],
casiotone401 0:cd43a974c54c 93 calibMap1[43], calibMap1[45], calibMap1[46], calibMap1[48], calibMap1[50],
casiotone401 0:cd43a974c54c 94 calibMap1[51], calibMap1[53], calibMap1[55], calibMap1[57], calibMap1[58],
casiotone401 0:cd43a974c54c 95 calibMap1[60], calibMap1[62], calibMap1[63], calibMap1[65], calibMap1[67],
casiotone401 0:cd43a974c54c 96 calibMap1[69], calibMap1[70], calibMap1[72], calibMap1[74], calibMap1[75],
casiotone401 0:cd43a974c54c 97 calibMap1[77], calibMap1[79], calibMap1[81], calibMap1[82], calibMap1[84],
casiotone401 0:cd43a974c54c 98 calibMap1[86], calibMap1[87], calibMap1[89], calibMap1[91], calibMap1[93],
casiotone401 0:cd43a974c54c 99 calibMap1[94], calibMap1[96], calibMap1[98], calibMap1[99], calibMap1[101],
casiotone401 0:cd43a974c54c 100 calibMap1[103], calibMap1[105], calibMap1[106], calibMap1[108], calibMap1[110],
casiotone401 0:cd43a974c54c 101 calibMap1[111], calibMap1[113], calibMap1[115]
casiotone401 0:cd43a974c54c 102 };
casiotone401 0:cd43a974c54c 103
casiotone401 0:cd43a974c54c 104 // Minor Scale
casiotone401 0:cd43a974c54c 105 const float calibMap6[QUAN_RES6] = {
casiotone401 0:cd43a974c54c 106 calibMap1[0], calibMap1[2], calibMap1[3], calibMap1[5], calibMap1[7],
casiotone401 0:cd43a974c54c 107 calibMap1[8], calibMap1[10], calibMap1[12], calibMap1[14], calibMap1[15],
casiotone401 0:cd43a974c54c 108 calibMap1[17], calibMap1[19], calibMap1[20], calibMap1[22], calibMap1[24],
casiotone401 0:cd43a974c54c 109 calibMap1[26], calibMap1[27], calibMap1[29], calibMap1[31], calibMap1[32],
casiotone401 0:cd43a974c54c 110 calibMap1[34], calibMap1[36], calibMap1[38], calibMap1[39], calibMap1[41],
casiotone401 0:cd43a974c54c 111 calibMap1[43], calibMap1[44], calibMap1[46], calibMap1[48], calibMap1[50],
casiotone401 0:cd43a974c54c 112 calibMap1[51], calibMap1[53], calibMap1[55], calibMap1[56], calibMap1[58],
casiotone401 0:cd43a974c54c 113 calibMap1[60], calibMap1[62], calibMap1[63], calibMap1[65], calibMap1[67],
casiotone401 0:cd43a974c54c 114 calibMap1[68], calibMap1[70], calibMap1[72], calibMap1[74], calibMap1[75],
casiotone401 0:cd43a974c54c 115 calibMap1[77], calibMap1[79], calibMap1[80], calibMap1[82], calibMap1[84],
casiotone401 0:cd43a974c54c 116 calibMap1[86], calibMap1[87], calibMap1[89], calibMap1[91], calibMap1[92],
casiotone401 0:cd43a974c54c 117 calibMap1[94], calibMap1[96], calibMap1[98], calibMap1[99], calibMap1[101],
casiotone401 0:cd43a974c54c 118 calibMap1[103], calibMap1[104], calibMap1[106], calibMap1[108], calibMap1[110],
casiotone401 0:cd43a974c54c 119 calibMap1[111], calibMap1[113], calibMap1[115]
casiotone401 0:cd43a974c54c 120 };
casiotone401 0:cd43a974c54c 121
casiotone401 0:cd43a974c54c 122 // 5th
casiotone401 0:cd43a974c54c 123 const float calibMap7[QUAN_RES7] = {
casiotone401 0:cd43a974c54c 124 calibMap1[0], calibMap1[7], calibMap1[14], calibMap1[21], calibMap1[28],
casiotone401 0:cd43a974c54c 125 calibMap1[35], calibMap1[42], calibMap1[49], calibMap1[56], calibMap1[63],
casiotone401 0:cd43a974c54c 126 calibMap1[70], calibMap1[77], calibMap1[84], calibMap1[91], calibMap1[98],
casiotone401 0:cd43a974c54c 127 calibMap1[105]
casiotone401 0:cd43a974c54c 128 };
casiotone401 0:cd43a974c54c 129
casiotone401 0:cd43a974c54c 130 // Whole tone
casiotone401 0:cd43a974c54c 131 const float calibMap8[QUAN_RES8] = {
casiotone401 0:cd43a974c54c 132 calibMap1[0], calibMap1[1], calibMap1[2], calibMap1[6], calibMap1[8],
casiotone401 0:cd43a974c54c 133 calibMap1[10], calibMap1[12], calibMap1[14], calibMap1[16], calibMap1[18],
casiotone401 0:cd43a974c54c 134 calibMap1[20], calibMap1[22], calibMap1[24], calibMap1[26], calibMap1[28],
casiotone401 0:cd43a974c54c 135 calibMap1[30], calibMap1[32], calibMap1[34], calibMap1[36], calibMap1[38],
casiotone401 0:cd43a974c54c 136 calibMap1[40], calibMap1[42], calibMap1[44], calibMap1[46], calibMap1[48],
casiotone401 0:cd43a974c54c 137 calibMap1[50], calibMap1[52], calibMap1[54], calibMap1[56], calibMap1[58],
casiotone401 0:cd43a974c54c 138 calibMap1[60], calibMap1[62], calibMap1[64], calibMap1[66], calibMap1[68],
casiotone401 0:cd43a974c54c 139 calibMap1[70], calibMap1[72], calibMap1[74], calibMap1[76], calibMap1[78],
casiotone401 0:cd43a974c54c 140 calibMap1[80], calibMap1[82], calibMap1[84], calibMap1[86], calibMap1[88],
casiotone401 0:cd43a974c54c 141 calibMap1[90], calibMap1[92], calibMap1[94], calibMap1[96], calibMap1[98],
casiotone401 0:cd43a974c54c 142 calibMap1[100], calibMap1[102], calibMap1[104], calibMap1[106], calibMap1[108],
casiotone401 0:cd43a974c54c 143 calibMap1[110], calibMap1[112], calibMap1[114]
casiotone401 0:cd43a974c54c 144 };
casiotone401 0:cd43a974c54c 145
casiotone401 0:cd43a974c54c 146 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 147 // Global Variables
casiotone401 0:cd43a974c54c 148
casiotone401 1:981b62bb5c87 149 float gOSC_cv[8];
casiotone401 1:981b62bb5c87 150 float gSeq_cv[16];
casiotone401 1:981b62bb5c87 151 float g185_cv[8];
casiotone401 1:981b62bb5c87 152 float gGlide;
casiotone401 0:cd43a974c54c 153
casiotone401 0:cd43a974c54c 154 // Sub Mode Status
casiotone401 0:cd43a974c54c 155 int gSubModeCount1 = -1;
casiotone401 0:cd43a974c54c 156 int gSubModeCount2 = -1;
casiotone401 0:cd43a974c54c 157
casiotone401 0:cd43a974c54c 158 // Variables for Sequencer
casiotone401 0:cd43a974c54c 159 float gPulseCount[8] = {0};
casiotone401 0:cd43a974c54c 160 float gGateMode[16] = {0};
casiotone401 1:981b62bb5c87 161 float gGateMode185[8] = {0};
casiotone401 0:cd43a974c54c 162 float gSlide[16];
casiotone401 1:981b62bb5c87 163 float gSlide185[8];
casiotone401 0:cd43a974c54c 164 float gAccent[16] = {0};
casiotone401 1:981b62bb5c87 165 float gAccent185[8] = {0};
casiotone401 1:981b62bb5c87 166
casiotone401 1:981b62bb5c87 167 float gPulseCountBeats[16] = {0};
casiotone401 6:7fb15b1b5459 168 float gBeatsLevel[8];
casiotone401 6:7fb15b1b5459 169 float gBeatsDecay[8];
casiotone401 1:981b62bb5c87 170 unsigned int gBeatsMatrix[8][16] = {{0}};
casiotone401 0:cd43a974c54c 171
casiotone401 0:cd43a974c54c 172 // Euclidean SEQ Variables
casiotone401 0:cd43a974c54c 173 float gEucA[6], gEucB[6];
casiotone401 0:cd43a974c54c 174
casiotone401 0:cd43a974c54c 175 // Variables for Control
casiotone401 0:cd43a974c54c 176 /*
casiotone401 0:cd43a974c54c 177 gCtrl[0] /ctrl1 BPM
casiotone401 0:cd43a974c54c 178 gCtrl[1] /ctrl2 Quantize mode
casiotone401 0:cd43a974c54c 179 gCtrl[3] /ctrl4 Glide
casiotone401 1:981b62bb5c87 180 gCtrl[4] /ctrl5 Shift CV Seq Reset Count
casiotone401 1:981b62bb5c87 181 gCtrl[5] /ctrl6 M185 Seq Reset Count
casiotone401 1:981b62bb5c87 182 gCtrl[6] /ctrl7 Gate Length
casiotone401 1:981b62bb5c87 183 gCtrl[7] /ctrl8 Beats Seq Reset Count
casiotone401 0:cd43a974c54c 184
casiotone401 0:cd43a974c54c 185 gCtrlSW[0] /ctrlsw1 Sequencer STOP
casiotone401 0:cd43a974c54c 186 gCtrlSW[1] /ctrlsw2 Euclidean Sequencer reset
casiotone401 0:cd43a974c54c 187 gCtrlSW[2] /ctrlsw3 Sequencer Loop
casiotone401 0:cd43a974c54c 188 gCtrlSW[3] /ctrlsw4 Euclid Seq ON
casiotone401 0:cd43a974c54c 189 gCtrlSW[4] /ctrlsw5 ASR Analog Mode
casiotone401 1:981b62bb5c87 190 gCtrlSW[5] /ctrlsw6 Beats Sequencer Random Vel
casiotone401 0:cd43a974c54c 191
casiotone401 0:cd43a974c54c 192 gArdPot[0] /pot1 Arduino pot1
casiotone401 0:cd43a974c54c 193 gArdPot[1] /pot2 Arduino pot2
casiotone401 0:cd43a974c54c 194 gArdSW[0] /sw1 Arduino sw1
casiotone401 0:cd43a974c54c 195 gArdSW[1] /sw2 Arduino sw2
casiotone401 0:cd43a974c54c 196 */
casiotone401 0:cd43a974c54c 197
casiotone401 6:7fb15b1b5459 198 float gCtrl[8] = {0.398f, 0, 0, 0, 1.0f, 1.0f, 1.0f, 1.0f};
casiotone401 0:cd43a974c54c 199 bool gCtrlSW[8] = {false};
casiotone401 0:cd43a974c54c 200
casiotone401 0:cd43a974c54c 201 // Variables for Arduino
casiotone401 6:7fb15b1b5459 202 uint16_t gArdCV[4] = {0};
casiotone401 6:7fb15b1b5459 203 float gArdPot[2] = {408.0f, 350};
casiotone401 0:cd43a974c54c 204 bool gArdSW[2] = {false};
casiotone401 0:cd43a974c54c 205
casiotone401 0:cd43a974c54c 206 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 207 // mbed Functions
casiotone401 0:cd43a974c54c 208
casiotone401 0:cd43a974c54c 209 TextLCD gLCD(p9, p10, p11, p12, p13, p14); // rs, e, d4-d7
casiotone401 0:cd43a974c54c 210
casiotone401 0:cd43a974c54c 211 BurstSPI gSPI(p5,p6,p7); // SPI (p6 unconnected)
casiotone401 0:cd43a974c54c 212
casiotone401 0:cd43a974c54c 213 FastOut<p15> gSYNCMODE; // SYNC DAC8568
casiotone401 0:cd43a974c54c 214 FastOut<p16> gLDAC; // LDAC DAC8568
casiotone401 0:cd43a974c54c 215
casiotone401 0:cd43a974c54c 216 DigitalOut gGATES[4] = {p21, p22, p23, p24}; // GateOut
casiotone401 0:cd43a974c54c 217 FastOut<p19> gSUBGATE; // SubGateOut
casiotone401 0:cd43a974c54c 218 FastOut<p25> gCLOCKOUT; // ClockOut
casiotone401 0:cd43a974c54c 219
casiotone401 0:cd43a974c54c 220 AnalogOut gAOUT(p18);
casiotone401 0:cd43a974c54c 221
casiotone401 0:cd43a974c54c 222 AnalogIn gAIN(p17);
casiotone401 0:cd43a974c54c 223 DebouncedInterrupt gSW(p30); // Mode SW
casiotone401 0:cd43a974c54c 224
casiotone401 0:cd43a974c54c 225 // MIDI OUT
casiotone401 0:cd43a974c54c 226 MIDI midi(p28, p27);
casiotone401 0:cd43a974c54c 227
casiotone401 0:cd43a974c54c 228 Timer gTimer; // Timer
casiotone401 0:cd43a974c54c 229 Ticker gPoller; // Ticker for Polling
casiotone401 0:cd43a974c54c 230
casiotone401 0:cd43a974c54c 231 // Ethernet
casiotone401 0:cd43a974c54c 232 #ifdef DHCP
casiotone401 0:cd43a974c54c 233 EthernetNetIf gEth;
casiotone401 0:cd43a974c54c 234 #else
casiotone401 0:cd43a974c54c 235 EthernetNetIf gEth(
casiotone401 0:cd43a974c54c 236 IpAddr(192,168,1,6),
casiotone401 0:cd43a974c54c 237 IpAddr(255,255,255,0),
casiotone401 0:cd43a974c54c 238 IpAddr(192,168,1,1),
casiotone401 0:cd43a974c54c 239 IpAddr(192,168,1,1)
casiotone401 0:cd43a974c54c 240 );
casiotone401 0:cd43a974c54c 241 #endif
casiotone401 0:cd43a974c54c 242
casiotone401 0:cd43a974c54c 243 // touchOSC Address
casiotone401 0:cd43a974c54c 244 uint8_t touchOSCAddress[] = {192, 168, 1, 7};
casiotone401 0:cd43a974c54c 245 int touchOSCPort = TOSC_PORT;
casiotone401 0:cd43a974c54c 246
casiotone401 0:cd43a974c54c 247 // Set OSC message for sending
casiotone401 0:cd43a974c54c 248 OSCClass osc;
casiotone401 0:cd43a974c54c 249 OSCMessage sendMes;
casiotone401 0:cd43a974c54c 250
casiotone401 0:cd43a974c54c 251 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 252 // SPI Transfer
casiotone401 0:cd43a974c54c 253 // DAC8568 data word length 32bit (8bit shift out)
casiotone401 0:cd43a974c54c 254
casiotone401 1:981b62bb5c87 255 void UpdateCV(unsigned int control, unsigned int ch, const unsigned int *data)
casiotone401 0:cd43a974c54c 256 {
casiotone401 0:cd43a974c54c 257
casiotone401 0:cd43a974c54c 258 switch (control)
casiotone401 0:cd43a974c54c 259 {
casiotone401 0:cd43a974c54c 260 case WRITE_UPDATE_N:
casiotone401 0:cd43a974c54c 261
casiotone401 0:cd43a974c54c 262 gSYNCMODE = _DISABLE;
casiotone401 0:cd43a974c54c 263 gSPI.write(00000000|control); // padding at beginning of byte and control bits
casiotone401 1:981b62bb5c87 264 gSPI.write(ch << 4 | *data >> 12); // address(ch) bits
casiotone401 0:cd43a974c54c 265 gSPI.write((*data << 4) >> 8); // middle 8 bits of data
casiotone401 0:cd43a974c54c 266 gSPI.write((*data << 12) >> 8 | 00001111);
casiotone401 0:cd43a974c54c 267 gSYNCMODE = _ENABLE;
casiotone401 0:cd43a974c54c 268 gLDAC = _DISABLE;
casiotone401 0:cd43a974c54c 269 gLDAC = _ENABLE;
casiotone401 0:cd43a974c54c 270
casiotone401 0:cd43a974c54c 271 break;
casiotone401 0:cd43a974c54c 272
casiotone401 0:cd43a974c54c 273 case RESET:
casiotone401 0:cd43a974c54c 274
casiotone401 0:cd43a974c54c 275 gSYNCMODE = _DISABLE;
casiotone401 0:cd43a974c54c 276 gSPI.write(00000111); // Software RESET
casiotone401 0:cd43a974c54c 277 gSPI.write(00000000);
casiotone401 0:cd43a974c54c 278 gSPI.write(00000000);
casiotone401 0:cd43a974c54c 279 gSPI.write(00000000);
casiotone401 0:cd43a974c54c 280 gSYNCMODE = _ENABLE;
casiotone401 0:cd43a974c54c 281
casiotone401 0:cd43a974c54c 282 break;
casiotone401 0:cd43a974c54c 283
casiotone401 0:cd43a974c54c 284 case CLR:
casiotone401 0:cd43a974c54c 285
casiotone401 0:cd43a974c54c 286 gSYNCMODE = _DISABLE;
casiotone401 0:cd43a974c54c 287 gSPI.write(00000101); // CLR Register
casiotone401 0:cd43a974c54c 288 gSPI.write(00000000);
casiotone401 0:cd43a974c54c 289 gSPI.write(00000000);
casiotone401 0:cd43a974c54c 290 gSPI.write(00000011); // Ignore CLR Pin
casiotone401 0:cd43a974c54c 291 gSYNCMODE = _ENABLE;
casiotone401 0:cd43a974c54c 292
casiotone401 0:cd43a974c54c 293 break;
casiotone401 0:cd43a974c54c 294 }
casiotone401 0:cd43a974c54c 295 }
casiotone401 0:cd43a974c54c 296
casiotone401 0:cd43a974c54c 297 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 298 // CV Meter TextLCD bar meter
casiotone401 0:cd43a974c54c 299
casiotone401 1:981b62bb5c87 300 void UpdateCVMeter(unsigned int ch, const unsigned int *level)
casiotone401 0:cd43a974c54c 301 {
casiotone401 0:cd43a974c54c 302 gLCD.locate ( ch, 0 );
casiotone401 0:cd43a974c54c 303 gLCD.putc(*level * 0.0002192f); // put custom char
casiotone401 0:cd43a974c54c 304 }
casiotone401 0:cd43a974c54c 305
casiotone401 0:cd43a974c54c 306 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 307 // Check subMode1(gArdSW[0]) (subMode Status & Text LCD Update)
casiotone401 0:cd43a974c54c 308
casiotone401 0:cd43a974c54c 309 int CheckSubMode1(void)
casiotone401 0:cd43a974c54c 310 {
casiotone401 0:cd43a974c54c 311 static int lastSWState = -1;
casiotone401 0:cd43a974c54c 312
casiotone401 0:cd43a974c54c 313 if (gArdSW[0] != lastSWState)
casiotone401 0:cd43a974c54c 314 {
casiotone401 0:cd43a974c54c 315 lastSWState = gArdSW[0];
casiotone401 0:cd43a974c54c 316
casiotone401 0:cd43a974c54c 317 if (gSubModeCount1 < SUBMODE1_TOTAL - 1)
casiotone401 0:cd43a974c54c 318 {
casiotone401 0:cd43a974c54c 319 ++gSubModeCount1;
casiotone401 0:cd43a974c54c 320
casiotone401 0:cd43a974c54c 321 } else {
casiotone401 0:cd43a974c54c 322
casiotone401 0:cd43a974c54c 323 gSubModeCount1 = 0;
casiotone401 0:cd43a974c54c 324 }
casiotone401 0:cd43a974c54c 325
casiotone401 0:cd43a974c54c 326 }
casiotone401 0:cd43a974c54c 327
casiotone401 0:cd43a974c54c 328 return gSubModeCount1;
casiotone401 0:cd43a974c54c 329 }
casiotone401 0:cd43a974c54c 330
casiotone401 0:cd43a974c54c 331 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 332 // Check subMode2(gArdSW[1]) (subMode Status & Text LCD Update)
casiotone401 0:cd43a974c54c 333
casiotone401 0:cd43a974c54c 334 int CheckSubMode2(void)
casiotone401 0:cd43a974c54c 335 {
casiotone401 0:cd43a974c54c 336 static int lastSWState = -1;
casiotone401 0:cd43a974c54c 337
casiotone401 4:fe335dc8d53d 338 if (gArdSW[1] != lastSWState)
casiotone401 0:cd43a974c54c 339 {
casiotone401 4:fe335dc8d53d 340 lastSWState = gArdSW[1];
casiotone401 0:cd43a974c54c 341
casiotone401 0:cd43a974c54c 342 if (gSubModeCount2 < SUBMODE2_TOTAL - 1)
casiotone401 0:cd43a974c54c 343 {
casiotone401 0:cd43a974c54c 344 ++gSubModeCount2;
casiotone401 0:cd43a974c54c 345
casiotone401 0:cd43a974c54c 346 } else {
casiotone401 0:cd43a974c54c 347
casiotone401 0:cd43a974c54c 348 gSubModeCount2 = 0;
casiotone401 0:cd43a974c54c 349 }
casiotone401 0:cd43a974c54c 350
casiotone401 0:cd43a974c54c 351 }
casiotone401 0:cd43a974c54c 352
casiotone401 0:cd43a974c54c 353 return gSubModeCount2;
casiotone401 0:cd43a974c54c 354 }
casiotone401 0:cd43a974c54c 355
casiotone401 0:cd43a974c54c 356 //-------------------------------------------------------------
casiotone401 0:cd43a974c54c 357 // Update subMode Text LCD
casiotone401 0:cd43a974c54c 358 void UpdateSubModeLCD(const char * subModeName)
casiotone401 0:cd43a974c54c 359 {
casiotone401 0:cd43a974c54c 360 gLCD.locate( 0, 1 );
casiotone401 0:cd43a974c54c 361 gLCD.printf(" ");
casiotone401 0:cd43a974c54c 362
casiotone401 0:cd43a974c54c 363 gLCD.locate( 0, 1 );
casiotone401 0:cd43a974c54c 364 gLCD.printf("%s", subModeName);
casiotone401 0:cd43a974c54c 365
casiotone401 0:cd43a974c54c 366 sendMes.setTopAddress("/submode");
casiotone401 0:cd43a974c54c 367 sendMes.setArgs("s", subModeName);
casiotone401 0:cd43a974c54c 368
casiotone401 0:cd43a974c54c 369 osc.sendOsc(&sendMes);
casiotone401 0:cd43a974c54c 370 }