OSCtoCV Library
OSCtoCV.cpp@1:981b62bb5c87, 2016-01-28 (annotated)
- Committer:
- casiotone401
- Date:
- Thu Jan 28 11:39:47 2016 +0000
- Revision:
- 1:981b62bb5c87
- Parent:
- 0:cd43a974c54c
- Child:
- 4:fe335dc8d53d
added Beats Seq
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:cd43a974c54c | 16 | 0.00076928, 0.00900736, 0.01724544, 0.02548352, 0.03372160, |
casiotone401 | 0:cd43a974c54c | 17 | 0.04195968, 0.05019776, 0.05843584, 0.06667392, 0.07491200, |
casiotone401 | 0:cd43a974c54c | 18 | 0.08315008, 0.09138816, 0.09962624, 0.10786432, 0.11610240, |
casiotone401 | 0:cd43a974c54c | 19 | 0.12434047, 0.13258974, 0.14083999, 0.14909023, 0.15734047, |
casiotone401 | 0:cd43a974c54c | 20 | 0.16559070, 0.17384095, 0.18209119, 0.19034143, 0.19859168, |
casiotone401 | 0:cd43a974c54c | 21 | 0.20684192, 0.21509215, 0.22334240, 0.23159264, 0.23984288, |
casiotone401 | 0:cd43a974c54c | 22 | 0.24809311, 0.25634655, 0.26460093, 0.27285531, 0.28110969, |
casiotone401 | 0:cd43a974c54c | 23 | 0.28936407, 0.29761845, 0.30587283, 0.31412721, 0.32238159, |
casiotone401 | 0:cd43a974c54c | 24 | 0.33063596, 0.33889034, 0.34714472, 0.35539910, 0.36365348, |
casiotone401 | 0:cd43a974c54c | 25 | 0.37190786, 0.38017464, 0.38844886, 0.39672306, 0.40499726, |
casiotone401 | 0:cd43a974c54c | 26 | 0.41327149, 0.42154568, 0.42981988, 0.43809411, 0.44636831, |
casiotone401 | 0:cd43a974c54c | 27 | 0.45464250, 0.46291673, 0.47119093, 0.47946513, 0.48773935, |
casiotone401 | 0:cd43a974c54c | 28 | 0.49601355, 0.50430328, 0.51260746, 0.52091163, 0.52921581, |
casiotone401 | 0:cd43a974c54c | 29 | 0.53751999, 0.54582411, 0.55412829, 0.56243247, 0.57073665, |
casiotone401 | 0:cd43a974c54c | 30 | 0.57904083, 0.58734500, 0.59564912, 0.60395330, 0.61225748, |
casiotone401 | 0:cd43a974c54c | 31 | 0.62056166, 0.62890279, 0.63728637, 0.64566994, 0.65405351, |
casiotone401 | 0:cd43a974c54c | 32 | 0.66243708, 0.67082065, 0.67920423, 0.68758780, 0.69597137, |
casiotone401 | 0:cd43a974c54c | 33 | 0.70435494, 0.71273851, 0.72112209, 0.72950566, 0.73788923, |
casiotone401 | 0:cd43a974c54c | 34 | 0.74627280, 0.75476575, 0.76334614, 0.77192658, 0.78050703, |
casiotone401 | 0:cd43a974c54c | 35 | 0.78908741, 0.79766786, 0.80624831, 0.81482869, 0.82340914, |
casiotone401 | 0:cd43a974c54c | 36 | 0.83198959, 0.84056997, 0.84915042, 0.85773087, 0.86631125, |
casiotone401 | 0:cd43a974c54c | 37 | 0.87489170, 0.88425636, 0.89363104, 0.90300572, 0.91238040, |
casiotone401 | 0:cd43a974c54c | 38 | 0.92175508, 0.93112975, 0.94050443, 0.94987911, 0.95925385, |
casiotone401 | 0:cd43a974c54c | 39 | 0.96862853 |
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 | 1:981b62bb5c87 | 168 | float gBeatsLevel[8] = {1}; |
casiotone401 | 1:981b62bb5c87 | 169 | float gBeatsDecay[8] = {1}; |
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 | 0:cd43a974c54c | 198 | float gCtrl[8]; |
casiotone401 | 0:cd43a974c54c | 199 | bool gCtrlSW[8] = {false}; |
casiotone401 | 0:cd43a974c54c | 200 | |
casiotone401 | 0:cd43a974c54c | 201 | // Variables for Arduino |
casiotone401 | 0:cd43a974c54c | 202 | uint16_t gArdCV[4]; |
casiotone401 | 0:cd43a974c54c | 203 | float gArdPot[2] = {408.0f, 350.0f}; |
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 | |
casiotone401 | 0:cd43a974c54c | 244 | // touchOSC Address |
casiotone401 | 0:cd43a974c54c | 245 | uint8_t touchOSCAddress[] = {192, 168, 1, 7}; |
casiotone401 | 0:cd43a974c54c | 246 | int touchOSCPort = TOSC_PORT; |
casiotone401 | 0:cd43a974c54c | 247 | |
casiotone401 | 0:cd43a974c54c | 248 | // Set OSC message for sending |
casiotone401 | 0:cd43a974c54c | 249 | OSCClass osc; |
casiotone401 | 0:cd43a974c54c | 250 | OSCMessage sendMes; |
casiotone401 | 0:cd43a974c54c | 251 | |
casiotone401 | 0:cd43a974c54c | 252 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 253 | // SPI Transfer |
casiotone401 | 0:cd43a974c54c | 254 | // DAC8568 data word length 32bit (8bit shift out) |
casiotone401 | 0:cd43a974c54c | 255 | |
casiotone401 | 1:981b62bb5c87 | 256 | void UpdateCV(unsigned int control, unsigned int ch, const unsigned int *data) |
casiotone401 | 0:cd43a974c54c | 257 | { |
casiotone401 | 0:cd43a974c54c | 258 | |
casiotone401 | 0:cd43a974c54c | 259 | switch (control) |
casiotone401 | 0:cd43a974c54c | 260 | { |
casiotone401 | 0:cd43a974c54c | 261 | case WRITE_UPDATE_N: |
casiotone401 | 0:cd43a974c54c | 262 | |
casiotone401 | 0:cd43a974c54c | 263 | gSYNCMODE = _DISABLE; |
casiotone401 | 0:cd43a974c54c | 264 | gSPI.write(00000000|control); // padding at beginning of byte and control bits |
casiotone401 | 1:981b62bb5c87 | 265 | gSPI.write(ch << 4 | *data >> 12); // address(ch) bits |
casiotone401 | 0:cd43a974c54c | 266 | gSPI.write((*data << 4) >> 8); // middle 8 bits of data |
casiotone401 | 0:cd43a974c54c | 267 | gSPI.write((*data << 12) >> 8 | 00001111); |
casiotone401 | 0:cd43a974c54c | 268 | gSYNCMODE = _ENABLE; |
casiotone401 | 0:cd43a974c54c | 269 | gLDAC = _DISABLE; |
casiotone401 | 0:cd43a974c54c | 270 | gLDAC = _ENABLE; |
casiotone401 | 0:cd43a974c54c | 271 | |
casiotone401 | 0:cd43a974c54c | 272 | break; |
casiotone401 | 0:cd43a974c54c | 273 | |
casiotone401 | 0:cd43a974c54c | 274 | case RESET: |
casiotone401 | 0:cd43a974c54c | 275 | |
casiotone401 | 0:cd43a974c54c | 276 | gSYNCMODE = _DISABLE; |
casiotone401 | 0:cd43a974c54c | 277 | gSPI.write(00000111); // Software RESET |
casiotone401 | 0:cd43a974c54c | 278 | gSPI.write(00000000); |
casiotone401 | 0:cd43a974c54c | 279 | gSPI.write(00000000); |
casiotone401 | 0:cd43a974c54c | 280 | gSPI.write(00000000); |
casiotone401 | 0:cd43a974c54c | 281 | gSYNCMODE = _ENABLE; |
casiotone401 | 0:cd43a974c54c | 282 | |
casiotone401 | 0:cd43a974c54c | 283 | break; |
casiotone401 | 0:cd43a974c54c | 284 | |
casiotone401 | 0:cd43a974c54c | 285 | case CLR: |
casiotone401 | 0:cd43a974c54c | 286 | |
casiotone401 | 0:cd43a974c54c | 287 | gSYNCMODE = _DISABLE; |
casiotone401 | 0:cd43a974c54c | 288 | gSPI.write(00000101); // CLR Register |
casiotone401 | 0:cd43a974c54c | 289 | gSPI.write(00000000); |
casiotone401 | 0:cd43a974c54c | 290 | gSPI.write(00000000); |
casiotone401 | 0:cd43a974c54c | 291 | gSPI.write(00000011); // Ignore CLR Pin |
casiotone401 | 0:cd43a974c54c | 292 | gSYNCMODE = _ENABLE; |
casiotone401 | 0:cd43a974c54c | 293 | |
casiotone401 | 0:cd43a974c54c | 294 | break; |
casiotone401 | 0:cd43a974c54c | 295 | } |
casiotone401 | 0:cd43a974c54c | 296 | } |
casiotone401 | 0:cd43a974c54c | 297 | |
casiotone401 | 0:cd43a974c54c | 298 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 299 | // CV Meter TextLCD bar meter |
casiotone401 | 0:cd43a974c54c | 300 | |
casiotone401 | 1:981b62bb5c87 | 301 | void UpdateCVMeter(unsigned int ch, const unsigned int *level) |
casiotone401 | 0:cd43a974c54c | 302 | { |
casiotone401 | 0:cd43a974c54c | 303 | gLCD.locate ( ch, 0 ); |
casiotone401 | 0:cd43a974c54c | 304 | gLCD.putc(*level * 0.0002192f); // put custom char |
casiotone401 | 0:cd43a974c54c | 305 | } |
casiotone401 | 0:cd43a974c54c | 306 | |
casiotone401 | 0:cd43a974c54c | 307 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 308 | // Check subMode1(gArdSW[0]) (subMode Status & Text LCD Update) |
casiotone401 | 0:cd43a974c54c | 309 | |
casiotone401 | 0:cd43a974c54c | 310 | int CheckSubMode1(void) |
casiotone401 | 0:cd43a974c54c | 311 | { |
casiotone401 | 0:cd43a974c54c | 312 | static int lastSWState = -1; |
casiotone401 | 0:cd43a974c54c | 313 | |
casiotone401 | 0:cd43a974c54c | 314 | if (gArdSW[0] != lastSWState) |
casiotone401 | 0:cd43a974c54c | 315 | { |
casiotone401 | 0:cd43a974c54c | 316 | lastSWState = gArdSW[0]; |
casiotone401 | 0:cd43a974c54c | 317 | |
casiotone401 | 0:cd43a974c54c | 318 | if (gSubModeCount1 < SUBMODE1_TOTAL - 1) |
casiotone401 | 0:cd43a974c54c | 319 | { |
casiotone401 | 0:cd43a974c54c | 320 | ++gSubModeCount1; |
casiotone401 | 0:cd43a974c54c | 321 | |
casiotone401 | 0:cd43a974c54c | 322 | } else { |
casiotone401 | 0:cd43a974c54c | 323 | |
casiotone401 | 0:cd43a974c54c | 324 | gSubModeCount1 = 0; |
casiotone401 | 0:cd43a974c54c | 325 | } |
casiotone401 | 0:cd43a974c54c | 326 | |
casiotone401 | 0:cd43a974c54c | 327 | } |
casiotone401 | 0:cd43a974c54c | 328 | |
casiotone401 | 0:cd43a974c54c | 329 | return gSubModeCount1; |
casiotone401 | 0:cd43a974c54c | 330 | } |
casiotone401 | 0:cd43a974c54c | 331 | |
casiotone401 | 0:cd43a974c54c | 332 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 333 | // Check subMode2(gArdSW[1]) (subMode Status & Text LCD Update) |
casiotone401 | 0:cd43a974c54c | 334 | |
casiotone401 | 0:cd43a974c54c | 335 | int CheckSubMode2(void) |
casiotone401 | 0:cd43a974c54c | 336 | { |
casiotone401 | 0:cd43a974c54c | 337 | static int lastSWState = -1; |
casiotone401 | 0:cd43a974c54c | 338 | |
casiotone401 | 0:cd43a974c54c | 339 | if (gArdSW[0] != lastSWState) |
casiotone401 | 0:cd43a974c54c | 340 | { |
casiotone401 | 0:cd43a974c54c | 341 | lastSWState = gArdSW[0]; |
casiotone401 | 0:cd43a974c54c | 342 | |
casiotone401 | 0:cd43a974c54c | 343 | if (gSubModeCount2 < SUBMODE2_TOTAL - 1) |
casiotone401 | 0:cd43a974c54c | 344 | { |
casiotone401 | 0:cd43a974c54c | 345 | ++gSubModeCount2; |
casiotone401 | 0:cd43a974c54c | 346 | |
casiotone401 | 0:cd43a974c54c | 347 | } else { |
casiotone401 | 0:cd43a974c54c | 348 | |
casiotone401 | 0:cd43a974c54c | 349 | gSubModeCount2 = 0; |
casiotone401 | 0:cd43a974c54c | 350 | } |
casiotone401 | 0:cd43a974c54c | 351 | |
casiotone401 | 0:cd43a974c54c | 352 | } |
casiotone401 | 0:cd43a974c54c | 353 | |
casiotone401 | 0:cd43a974c54c | 354 | return gSubModeCount2; |
casiotone401 | 0:cd43a974c54c | 355 | } |
casiotone401 | 0:cd43a974c54c | 356 | |
casiotone401 | 0:cd43a974c54c | 357 | //------------------------------------------------------------- |
casiotone401 | 0:cd43a974c54c | 358 | // Update subMode Text LCD |
casiotone401 | 0:cd43a974c54c | 359 | void UpdateSubModeLCD(const char * subModeName) |
casiotone401 | 0:cd43a974c54c | 360 | { |
casiotone401 | 0:cd43a974c54c | 361 | gLCD.locate( 0, 1 ); |
casiotone401 | 0:cd43a974c54c | 362 | gLCD.printf(" "); |
casiotone401 | 0:cd43a974c54c | 363 | |
casiotone401 | 0:cd43a974c54c | 364 | gLCD.locate( 0, 1 ); |
casiotone401 | 0:cd43a974c54c | 365 | gLCD.printf("%s", subModeName); |
casiotone401 | 0:cd43a974c54c | 366 | |
casiotone401 | 0:cd43a974c54c | 367 | sendMes.setTopAddress("/submode"); |
casiotone401 | 0:cd43a974c54c | 368 | sendMes.setArgs("s", subModeName); |
casiotone401 | 0:cd43a974c54c | 369 | |
casiotone401 | 0:cd43a974c54c | 370 | osc.sendOsc(&sendMes); |
casiotone401 | 0:cd43a974c54c | 371 | } |