OSCtoCV Library
Embed:
(wiki syntax)
Show/hide line numbers
OSCtoCV_LFO.h
00001 /* 00002 OSCtoCV Shift Sequencer & M185 Sequencer 00003 */ 00004 00005 #pragma O3 00006 #pragma Otime 00007 00008 #ifndef OSCtoCV_LFO_h 00009 #define OSCtoCV_LFO_h 00010 00011 #include "mbed.h" 00012 00013 #define TRIANGLE_WAVE 0 00014 #define SQUARE_WAVE 1 00015 #define SAW_WAVE 2 00016 #define SINE_WAVE 3 00017 #define EXP_WAVE 4 00018 #define LOG_WAVE 5 00019 #define SYNTH_WAVE 6 00020 #define NOISE 7 00021 00022 #define WAVEFORM_TOTAL 8 00023 00024 // LFO Quantize Map 00025 const float quantizedMap[1024] = { 00026 0.000000, 31.500000, 63.000000, 94.500000, 126.000000, 157.500000, 189.000000, 220.500000, 252.000000, 00027 283.500000, 315.000000, 346.500000, 378.000000, 409.500000, 441.000000, 472.500000, 504.000000, 00028 535.500000, 567.000000, 598.500000, 630.000000, 661.500000, 693.000000, 724.500000, 756.000000, 00029 787.500000, 819.000000, 850.500000, 882.000000, 913.500000, 945.000000, 976.500000, 1008.000000, 00030 1039.500000, 1071.000000, 1102.500000, 1134.000000, 1165.500000, 1197.000000, 1228.500000, 1260.000000, 00031 1291.500000, 1323.000000, 1354.500000, 1386.000000, 1417.500000, 1449.000000, 1480.500000, 1512.000000, 00032 1543.500000, 1575.000000, 1606.500000, 1638.000000, 1669.500000, 1701.000000, 1732.500000, 1764.000000, 00033 1795.500000, 1827.000000, 1858.500000, 1890.000000, 1921.500000, 1953.000000, 1984.500000, 2016.000000, 00034 2047.500000, 2079.000000, 2110.500000, 2142.000000, 2173.500000, 2205.000000, 2236.500000, 2268.000000, 00035 2299.500000, 2331.000000, 2362.500000, 2394.000000, 2425.500000, 2457.000000, 2488.500000, 2520.000000, 00036 2551.500000, 2583.000000, 2614.500000, 2646.000000, 2677.500000, 2709.000000, 2740.500000, 2772.000000, 00037 2803.500000, 2835.000000, 2866.500000, 2898.000000, 2929.500000, 2961.000000, 2992.500000, 3024.000000, 00038 3055.500000, 3087.000000, 3118.500000, 3150.000000, 3181.500000, 3213.000000, 3244.500000, 3276.000000, 00039 3307.500000, 3339.000000, 3370.500000, 3402.000000, 3433.500000, 3465.000000, 3496.500000, 3528.000000, 00040 3559.500000, 3591.000000, 3622.500000, 3654.000000, 3685.500000, 3717.000000, 3748.500000, 3780.000000, 00041 3811.500000, 3843.000000, 3874.500000, 3906.000000, 3937.500000, 3969.000000, 4000.500000, 4032.000000, 00042 4063.500000, 4095.000000, 4126.500000, 4158.000000, 4189.500000, 4221.000000, 4252.500000, 4284.000000, 00043 4315.500000, 4347.000000, 4378.500000, 4410.000000, 4441.500000, 4473.000000, 4504.500000, 4536.000000, 00044 4567.500000, 4599.000000, 4630.500000, 4662.000000, 4693.500000, 4725.000000, 4756.500000, 4788.000000, 00045 4819.500000, 4851.000000, 4882.500000, 4914.000000, 4945.500000, 4977.000000, 5008.500000, 5040.000000, 00046 5071.500000, 5103.000000, 5134.500000, 5166.000000, 5197.500000, 5229.000000, 5260.500000, 5292.000000, 00047 5323.500000, 5355.000000, 5386.500000, 5418.000000, 5449.500000, 5481.000000, 5512.500000, 5544.000000, 00048 5575.500000, 5607.000000, 5638.500000, 5670.000000, 5701.500000, 5733.000000, 5764.500000, 5796.000000, 00049 5827.500000, 5859.000000, 5890.500000, 5922.000000, 5953.500000, 5985.000000, 6016.500000, 6048.000000, 00050 6079.500000, 6111.000000, 6142.500000, 6174.000000, 6205.500000, 6237.000000, 6268.500000, 6300.000000, 00051 6331.500000, 6363.000000, 6394.500000, 6426.000000, 6457.500000, 6489.000000, 6520.500000, 6552.000000, 00052 6583.500000, 6615.000000, 6646.500000, 6678.000000, 6709.500000, 6741.000000, 6772.500000, 6804.000000, 00053 6835.500000, 6867.000000, 6898.500000, 6930.000000, 6961.500000, 6993.000000, 7024.500000, 7056.000000, 00054 7087.500000, 7119.000000, 7150.500000, 7182.000000, 7213.500000, 7245.000000, 7276.500000, 7308.000000, 00055 7339.500000, 7371.000000, 7402.500000, 7434.000000, 7465.500000, 7497.000000, 7528.500000, 7560.000000, 00056 7591.500000, 7623.000000, 7654.500000, 7686.000000, 7717.500000, 7749.000000, 7780.500000, 7812.000000, 00057 7843.500000, 7875.000000, 7906.500000, 7938.000000, 7969.500000, 8001.000000, 8032.500000, 8064.000000, 00058 8095.500000, 8127.000000, 8158.500000, 8190.000000, 8221.500000, 8253.000000, 8284.500000, 8316.000000, 00059 8347.500000, 8379.000000, 8410.500000, 8442.000000, 8473.500000, 8505.000000, 8536.500000, 8568.000000, 00060 8599.500000, 8631.000000, 8662.500000, 8694.000000, 8725.500000, 8757.000000, 8788.500000, 8820.000000, 00061 8851.500000, 8883.000000, 8914.500000, 8946.000000, 8977.500000, 9009.000000, 9040.500000, 9072.000000, 00062 9103.500000, 9135.000000, 9166.500000, 9198.000000, 9229.500000, 9261.000000, 9292.500000, 9324.000000, 00063 9355.500000, 9387.000000, 9418.500000, 9450.000000, 9481.500000, 9513.000000, 9544.500000, 9576.000000, 00064 9607.500000, 9639.000000, 9670.500000, 9702.000000, 9733.500000, 9765.000000, 9796.500000, 9828.000000, 00065 9859.500000, 9891.000000, 9922.500000, 9954.000000, 9985.500000, 10017.000000, 10048.500000, 00066 10080.000000, 10111.500000, 10143.000000, 10174.500000, 10206.000000, 10237.500000, 10269.000000, 00067 10300.500000, 10332.000000, 10363.500000, 10395.000000, 10426.500000, 10458.000000, 10489.500000, 00068 10521.000000, 10552.500000, 10584.000000, 10615.500000, 10647.000000, 10678.500000, 10710.000000, 00069 10741.500000, 10773.000000, 10804.500000, 10836.000000, 10867.500000, 10899.000000, 10930.500000, 00070 10962.000000, 10993.500000, 11025.000000, 11056.500000, 11088.000000, 11119.500000, 11151.000000, 00071 11182.500000, 11214.000000, 11245.500000, 11277.000000, 11308.500000, 11340.000000, 11371.500000, 00072 11403.000000, 11434.500000, 11466.000000, 11497.500000, 11529.000000, 11560.500000, 11592.000000, 00073 11623.500000, 11655.000000, 11686.500000, 11718.000000, 11749.500000, 11781.000000, 11812.500000, 00074 11844.000000, 11875.500000, 11907.000000, 11938.500000, 11970.000000, 12001.500000, 12033.000000, 00075 12064.500000, 12096.000000, 12127.500000, 12159.000000, 12190.500000, 12222.000000, 12253.500000, 00076 12285.000000, 12316.500000, 12348.000000, 12379.500000, 12411.000000, 12442.500000, 12474.000000, 00077 12505.500000, 12537.000000, 12568.500000, 12600.000000, 12631.500000, 12663.000000, 12694.500000, 00078 12726.000000, 12757.500000, 12789.000000, 12820.500000, 12852.000000, 12883.500000, 12915.000000, 00079 12946.500000, 12978.000000, 13009.500000, 13041.000000, 13072.500000, 13104.000000, 13135.500000, 00080 13167.000000, 13198.500000, 13230.000000, 13261.500000, 13293.000000, 13324.500000, 13356.000000, 00081 13387.500000, 13419.000000, 13450.500000, 13482.000000, 13513.500000, 13545.000000, 13576.500000, 00082 13608.000000, 13639.500000, 13671.000000, 13702.500000, 13734.000000, 13765.500000, 13797.000000, 00083 13828.500000, 13860.000000, 13891.500000, 13923.000000, 13954.500000, 13986.000000, 14017.500000, 00084 14049.000000, 14080.500000, 14112.000000, 14143.500000, 14175.000000, 14206.500000, 14238.000000, 00085 14269.500000, 14301.000000, 14332.500000, 14364.000000, 14395.500000, 14427.000000, 14458.500000, 00086 14490.000000, 14521.500000, 14553.000000, 14584.500000, 14616.000000, 14647.500000, 14679.000000, 00087 14710.500000, 14742.000000, 14773.500000, 14805.000000, 14836.500000, 14868.000000, 14899.500000, 00088 14931.000000, 14962.500000, 14994.000000, 15025.500000, 15057.000000, 15088.500000, 15120.000000, 00089 15151.500000, 15183.000000, 15214.500000, 15246.000000, 15277.500000, 15309.000000, 15340.500000, 00090 15372.000000, 15403.500000, 15435.000000, 15466.500000, 15498.000000, 15529.500000, 15561.000000, 00091 15592.500000, 15624.000000, 15655.500000, 15687.000000, 15718.500000, 15750.000000, 15781.500000, 00092 15813.000000, 15844.500000, 15876.000000, 15907.500000, 15939.000000, 15970.500000, 16002.000000, 00093 16033.500000, 16065.000000, 16096.500000, 16128.000000, 16159.500000, 16191.000000, 16222.500000, 00094 16254.000000, 16285.500000, 16317.000000, 16348.500000, 16380.000000, 16411.500000, 16443.000000, 00095 16474.500000, 16506.000000, 16537.500000, 16569.000000, 16600.500000, 16632.000000, 16663.500000, 00096 16695.000000, 16726.500000, 16758.000000, 16789.500000, 16821.000000, 16852.500000, 16884.000000, 00097 16915.500000, 16947.000000, 16978.500000, 17010.000000, 17041.500000, 17073.000000, 17104.500000, 00098 17136.000000, 17167.500000, 17199.000000, 17230.500000, 17262.000000, 17293.500000, 17325.000000, 00099 17356.500000, 17388.000000, 17419.500000, 17451.000000, 17482.500000, 17514.000000, 17545.500000, 00100 17577.000000, 17608.500000, 17640.000000, 17671.500000, 17703.000000, 17734.500000, 17766.000000, 00101 17797.500000, 17829.000000, 17860.500000, 17892.000000, 17923.500000, 17955.000000, 17986.500000, 00102 18018.000000, 18049.500000, 18081.000000, 18112.500000, 18144.000000, 18175.500000, 18207.000000, 00103 18238.500000, 18270.000000, 18301.500000, 18333.000000, 18364.500000, 18396.000000, 18427.500000, 00104 18459.000000, 18490.500000, 18522.000000, 18553.500000, 18585.000000, 18616.500000, 18648.000000, 00105 18679.500000, 18711.000000, 18742.500000, 18774.000000, 18805.500000, 18837.000000, 18868.500000, 00106 18900.000000, 18931.500000, 18963.000000, 18994.500000, 19026.000000, 19057.500000, 19089.000000, 00107 19120.500000, 19152.000000, 19183.500000, 19215.000000, 19246.500000, 19278.000000, 19309.500000, 00108 19341.000000, 19372.500000, 19404.000000, 19435.500000, 19467.000000, 19498.500000, 19530.000000, 00109 19561.500000, 19593.000000, 19624.500000, 19656.000000, 19687.500000, 19719.000000, 19750.500000, 00110 19782.000000, 19813.500000, 19845.000000, 19876.500000, 19908.000000, 19939.500000, 19971.000000, 00111 20002.500000, 20034.000000, 20065.500000, 20097.000000, 20128.500000, 20160.000000, 20191.500000, 00112 20223.000000, 20254.500000, 20286.000000, 20317.500000, 20349.000000, 20380.500000, 20412.000000, 00113 20443.500000, 20475.000000, 20506.500000, 20538.000000, 20569.500000, 20601.000000, 20632.500000, 00114 20664.000000, 20695.500000, 20727.000000, 20758.500000, 20790.000000, 20821.500000, 20853.000000, 00115 20884.500000, 20916.000000, 20947.500000, 20979.000000, 21010.500000, 21042.000000, 21073.500000, 00116 21105.000000, 21136.500000, 21168.000000, 21199.500000, 21231.000000, 21262.500000, 21294.000000, 00117 21325.500000, 21357.000000, 21388.500000, 21420.000000, 21451.500000, 21483.000000, 21514.500000, 00118 21546.000000, 21577.500000, 21609.000000, 21640.500000, 21672.000000, 21703.500000, 21735.000000, 00119 21766.500000, 21798.000000, 21829.500000, 21861.000000, 21892.500000, 21924.000000, 21955.500000, 00120 21987.000000, 22018.500000, 22050.000000, 22081.500000, 22113.000000, 22144.500000, 22176.000000, 00121 22207.500000, 22239.000000, 22270.500000, 22302.000000, 22333.500000, 22365.000000, 22396.500000, 00122 22428.000000, 22459.500000, 22491.000000, 22522.500000, 22554.000000, 22585.500000, 22617.000000, 00123 22648.500000, 22680.000000, 22711.500000, 22743.000000, 22774.500000, 22806.000000, 22837.500000, 00124 22869.000000, 22900.500000, 22932.000000, 22963.500000, 22995.000000, 23026.500000, 23058.000000, 00125 23089.500000, 23121.000000, 23152.500000, 23184.000000, 23215.500000, 23247.000000, 23278.500000, 00126 23310.000000, 23341.500000, 23373.000000, 23404.500000, 23436.000000, 23467.500000, 23499.000000, 00127 23530.500000, 23562.000000, 23593.500000, 23625.000000, 23656.500000, 23688.000000, 23719.500000, 00128 23751.000000, 23782.500000, 23814.000000, 23845.500000, 23877.000000, 23908.500000, 23940.000000, 00129 23971.500000, 24003.000000, 24034.500000, 24066.000000, 24097.500000, 24129.000000, 24160.500000, 00130 24192.000000, 24223.500000, 24255.000000, 24286.500000, 24318.000000, 24349.500000, 24381.000000, 00131 24412.500000, 24444.000000, 24475.500000, 24507.000000, 24538.500000, 24570.000000, 24601.500000, 00132 24633.000000, 24664.500000, 24696.000000, 24727.500000, 24759.000000, 24790.500000, 24822.000000, 00133 24853.500000, 24885.000000, 24916.500000, 24948.000000, 24979.500000, 25011.000000, 25042.500000, 00134 25074.000000, 25105.500000, 25137.000000, 25168.500000, 25200.000000, 25231.500000, 25263.000000, 00135 25294.500000, 25326.000000, 25357.500000, 25389.000000, 25420.500000, 25452.000000, 25483.500000, 00136 25515.000000, 25546.500000, 25578.000000, 25609.500000, 25641.000000, 25672.500000, 25704.000000, 00137 25735.500000, 25767.000000, 25798.500000, 25830.000000, 25861.500000, 25893.000000, 25924.500000, 00138 25956.000000, 25987.500000, 26019.000000, 26050.500000, 26082.000000, 26113.500000, 26145.000000, 00139 26176.500000, 26208.000000, 26239.500000, 26271.000000, 26302.500000, 26334.000000, 26365.500000, 00140 26397.000000, 26428.500000, 26460.000000, 26491.500000, 26523.000000, 26554.500000, 26586.000000, 00141 26617.500000, 26649.000000, 26680.500000, 26712.000000, 26743.500000, 26775.000000, 26806.500000, 00142 26838.000000, 26869.500000, 26901.000000, 26932.500000, 26964.000000, 26995.500000, 27027.000000, 00143 27058.500000, 27090.000000, 27121.500000, 27153.000000, 27184.500000, 27216.000000, 27247.500000, 00144 27279.000000, 27310.500000, 27342.000000, 27373.500000, 27405.000000, 27436.500000, 27468.000000, 00145 27499.500000, 27531.000000, 27562.500000, 27594.000000, 27625.500000, 27657.000000, 27688.500000, 00146 27720.000000, 27751.500000, 27783.000000, 27814.500000, 27846.000000, 27877.500000, 27909.000000, 00147 27940.500000, 27972.000000, 28003.500000, 28035.000000, 28066.500000, 28098.000000, 28129.500000, 00148 28161.000000, 28192.500000, 28224.000000, 28255.500000, 28287.000000, 28318.500000, 28350.000000, 00149 28381.500000, 28413.000000, 28444.500000, 28476.000000, 28507.500000, 28539.000000, 28570.500000, 00150 28602.000000, 28633.500000, 28665.000000, 28696.500000, 28728.000000, 28759.500000, 28791.000000, 00151 28822.500000, 28854.000000, 28885.500000, 28917.000000, 28948.500000, 28980.000000, 29011.500000, 00152 29043.000000, 29074.500000, 29106.000000, 29137.500000, 29169.000000, 29200.500000, 29232.000000, 00153 29263.500000, 29295.000000, 29326.500000, 29358.000000, 29389.500000, 29421.000000, 29452.500000, 00154 29484.000000, 29515.500000, 29547.000000, 29578.500000, 29610.000000, 29641.500000, 29673.000000, 00155 29704.500000, 29736.000000, 29767.500000, 29799.000000, 29830.500000, 29862.000000, 29893.500000, 00156 29925.000000, 29956.500000, 29988.000000, 30019.500000, 30051.000000, 30082.500000, 30114.000000, 00157 30145.500000, 30177.000000, 30208.500000, 30240.000000, 30271.500000, 30303.000000, 30334.500000, 00158 30366.000000, 30397.500000, 30429.000000, 30460.500000, 30492.000000, 30523.500000, 30555.000000, 00159 30586.500000, 30618.000000, 30649.500000, 30681.000000, 30712.500000, 30744.000000, 30775.500000, 00160 30807.000000, 30838.500000, 30870.000000, 30901.500000, 30933.000000, 30964.500000, 30996.000000, 00161 31027.500000, 31059.000000, 31090.500000, 31122.000000, 31153.500000, 31185.000000, 31216.500000, 00162 31248.000000, 31279.500000, 31311.000000, 31342.500000, 31374.000000, 31405.500000, 31437.000000, 00163 31468.500000, 31500.000000, 31531.500000, 31563.000000, 31594.500000, 31626.000000, 31657.500000, 00164 31689.000000, 31720.500000, 31752.000000, 31783.500000, 31815.000000, 31846.500000, 31878.000000, 00165 31909.500000, 31941.000000, 31972.500000, 32004.000000, 32035.500000, 32067.000000, 32098.500000, 00166 32130.000000, 32161.500000, 32193.000000, 32224.500000 00167 }; 00168 00169 //------------------------------------------------------------- 00170 // LFO Functions 00171 00172 // update LFO 00173 float UpdateLFO(float freq); 00174 00175 // triangle wave calc 00176 float TriWave(float pos); 00177 00178 // square wave calc 00179 float SqrWave(float pos); 00180 00181 // saw(samp) wave calc 00182 float SawWave(float pos); 00183 00184 // sine wave calc 00185 float SinWave(float pos); 00186 00187 // exponential wave calc 00188 float ExpWave(float pos); 00189 00190 // logarithmic wave calc 00191 float LogWave(float pos); 00192 00193 // synthesis wave calc1 00194 float SynthWave1(float pos); 00195 00196 // synthesis wave calc2 00197 float SynthWave2(float pos); 00198 00199 // invert float value 00200 float Invert(float x); 00201 00202 // LFO cv generator output LFO channelOffset ~ ch8 00203 void SteppedLFO(uint8_t channelOffset, bool quantizeOff); 00204 00205 #endif
Generated on Tue Jul 12 2022 22:47:49 by 1.7.2