Showing the changes to Spectacle/Spectacle.cpp (1 of 5 files). Show all
Unified · Split
| @@ -58,6 +58,9 @@ CK_DLL_MFUN(spectacle_getMinFreq); · 57 unmodified lines | ||
| 58 | 58 | CK_DLL_MFUN(spectacle_setMaxFreq); |
| 59 | 59 | CK_DLL_MFUN(spectacle_getMaxFreq); |
| 60 | 60 | |
| 61 | +CK_DLL_MFUN(spectacle_setMix); | |
| 62 | +CK_DLL_MFUN(spectacle_getMix); | |
| 63 | + | |
| 61 | 64 | CK_DLL_MFUN(spectacle_setFreqRange); |
| 62 | 65 | |
| 63 | 66 | CK_DLL_MFUN(spectacle_setTable); |
| @@ -103,6 +106,7 @@ public: · 39 unmodified lines | ||
| 103 | 106 | maxdeltime = CLIP(maxdeltime, kMinMaxDelTime, kMaxMaxDelTime); |
| 104 | 107 | mindeltime = 0.0; |
| 105 | 108 | srate = fs; |
| 109 | + mix = 1.0; | |
| 106 | 110 | spectdelay = NULL; |
| 107 | 111 | float *del = dttable; |
| 108 | 112 | float *eq = eqtable; |
| @@ -137,6 +141,8 @@ public: · 28 unmodified lines | ||
| 137 | 141 | { |
| 138 | 142 | spectdelay->run(in+i, out+i, 1); |
| 139 | 143 | spectdelay->run(in+i, out+i+1, 1); |
| 144 | + out[i] = out[i] * mix + in[i] * (1-mix); | |
| 145 | + out[i+1] = out[i+1] * mix + in[i+1] * (1-mix); | |
| 140 | 146 | } |
| 141 | 147 | // process a block of samples |
| 142 | 148 | //spectdelay->run(in, out, nframes); |
| @@ -270,6 +276,14 @@ public: · 127 unmodified lines | ||
| 270 | 276 | |
| 271 | 277 | float getMaxFreq () { return maxfreq; } |
| 272 | 278 | |
| 279 | + float setMix ( t_CKFLOAT p ) | |
| 280 | + { | |
| 281 | + mix = CLIP(p,0,1); | |
| 282 | + return mix; | |
| 283 | + } | |
| 284 | + | |
| 285 | + float getMix () { return mix; } | |
| 286 | + | |
| 273 | 287 | void setFreqRange ( t_CKFLOAT q, t_CKFLOAT p ) |
| 274 | 288 | { |
| 275 | 289 | const float nyquist = srate / 2; |
| @@ -396,6 +410,7 @@ private: · 120 unmodified lines | ||
| 396 | 410 | int eqtablen, dttablen, fbtablen; |
| 397 | 411 | float minfreq, maxfreq; |
| 398 | 412 | bool hold, posteq; |
| 413 | + float mix; | |
| 399 | 414 | |
| 400 | 415 | void setDelayTable (int type) |
| 401 | 416 | { |
| @@ -554,6 +569,14 @@ CK_DLL_QUERY( Spectacle ) · 152 unmodified lines | ||
| 554 | 569 | // example of adding getter method |
| 555 | 570 | QUERY->add_mfun(QUERY, spectacle_getMaxFreq, "float", "freqMax"); |
| 556 | 571 | |
| 572 | + // example of adding setter method | |
| 573 | + QUERY->add_mfun(QUERY, spectacle_setMix, "float", "mix"); | |
| 574 | + // example of adding argument to the above method | |
| 575 | + QUERY->add_arg(QUERY, "float", "mix"); | |
| 576 | + | |
| 577 | + // example of adding getter method | |
| 578 | + QUERY->add_mfun(QUERY, spectacle_getMix, "float", "mix"); | |
| 579 | + | |
| 557 | 580 | // example of adding setter method |
| 558 | 581 | QUERY->add_mfun(QUERY, spectacle_setFreqRange, "void", "range"); |
| 559 | 582 | // example of adding argument to the above method |
| @@ -800,6 +823,25 @@ CK_DLL_MFUN(spectacle_getMaxFreq) · 240 unmodified lines | ||
| 800 | 823 | RETURN->v_float = bcdata->getMaxFreq(); |
| 801 | 824 | } |
| 802 | 825 | |
| 826 | +// example implementation for setter | |
| 827 | +CK_DLL_MFUN(spectacle_setMix) | |
| 828 | +{ | |
| 829 | + // get our c++ class pointer | |
| 830 | + Spectacle * bcdata = (Spectacle *) OBJ_MEMBER_INT(SELF, spectacle_data_offset); | |
| 831 | + // set the return value | |
| 832 | + RETURN->v_float = bcdata->setMix(GET_NEXT_FLOAT(ARGS)); | |
| 833 | +} | |
| 834 | + | |
| 835 | + | |
| 836 | +// example implementation for getter | |
| 837 | +CK_DLL_MFUN(spectacle_getMix) | |
| 838 | +{ | |
| 839 | + // get our c++ class pointer | |
| 840 | + Spectacle * bcdata = (Spectacle *) OBJ_MEMBER_INT(SELF, spectacle_data_offset); | |
| 841 | + // set the return value | |
| 842 | + RETURN->v_float = bcdata->getMix(); | |
| 843 | +} | |
| 844 | + | |
| 803 | 845 | // example implementation for setter |
| 804 | 846 | CK_DLL_MFUN(spectacle_setFreqRange) |
| 805 | 847 | { |