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 | CK_DLL_MFUN(spectacle_setMaxFreq); | 58 | CK_DLL_MFUN(spectacle_setMaxFreq); |
| 59 | CK_DLL_MFUN(spectacle_getMaxFreq); | 59 | CK_DLL_MFUN(spectacle_getMaxFreq); |
| 60 | 60 | ||
| 61 | CK_DLL_MFUN(spectacle_setMix); | ||
| 62 | CK_DLL_MFUN(spectacle_getMix); | ||
| 63 | |||
| 61 | CK_DLL_MFUN(spectacle_setFreqRange); | 64 | CK_DLL_MFUN(spectacle_setFreqRange); |
| 62 | 65 | ||
| 63 | CK_DLL_MFUN(spectacle_setTable); | 66 | CK_DLL_MFUN(spectacle_setTable); |
| @@ -103,6 +106,7 @@ public: · 39 unmodified lines | |||
| 103 | maxdeltime = CLIP(maxdeltime, kMinMaxDelTime, kMaxMaxDelTime); | 106 | maxdeltime = CLIP(maxdeltime, kMinMaxDelTime, kMaxMaxDelTime); |
| 104 | mindeltime = 0.0; | 107 | mindeltime = 0.0; |
| 105 | srate = fs; | 108 | srate = fs; |
| 109 | mix = 1.0; | ||
| 106 | spectdelay = NULL; | 110 | spectdelay = NULL; |
| 107 | float *del = dttable; | 111 | float *del = dttable; |
| 108 | float *eq = eqtable; | 112 | float *eq = eqtable; |
| @@ -137,6 +141,8 @@ public: · 28 unmodified lines | |||
| 137 | { | 141 | { |
| 138 | spectdelay->run(in+i, out+i, 1); | 142 | spectdelay->run(in+i, out+i, 1); |
| 139 | spectdelay->run(in+i, out+i+1, 1); | 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 | // process a block of samples | 147 | // process a block of samples |
| 142 | //spectdelay->run(in, out, nframes); | 148 | //spectdelay->run(in, out, nframes); |
| @@ -270,6 +276,14 @@ public: · 127 unmodified lines | |||
| 270 | 276 | ||
| 271 | float getMaxFreq () { return maxfreq; } | 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 | void setFreqRange ( t_CKFLOAT q, t_CKFLOAT p ) | 287 | void setFreqRange ( t_CKFLOAT q, t_CKFLOAT p ) |
| 274 | { | 288 | { |
| 275 | const float nyquist = srate / 2; | 289 | const float nyquist = srate / 2; |
| @@ -396,6 +410,7 @@ private: · 120 unmodified lines | |||
| 396 | int eqtablen, dttablen, fbtablen; | 410 | int eqtablen, dttablen, fbtablen; |
| 397 | float minfreq, maxfreq; | 411 | float minfreq, maxfreq; |
| 398 | bool hold, posteq; | 412 | bool hold, posteq; |
| 413 | float mix; | ||
| 399 | 414 | ||
| 400 | void setDelayTable (int type) | 415 | void setDelayTable (int type) |
| 401 | { | 416 | { |
| @@ -554,6 +569,14 @@ CK_DLL_QUERY( Spectacle ) · 152 unmodified lines | |||
| 554 | // example of adding getter method | 569 | // example of adding getter method |
| 555 | QUERY->add_mfun(QUERY, spectacle_getMaxFreq, "float", "freqMax"); | 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 | // example of adding setter method | 580 | // example of adding setter method |
| 558 | QUERY->add_mfun(QUERY, spectacle_setFreqRange, "void", "range"); | 581 | QUERY->add_mfun(QUERY, spectacle_setFreqRange, "void", "range"); |
| 559 | // example of adding argument to the above method | 582 | // example of adding argument to the above method |
| @@ -800,6 +823,25 @@ CK_DLL_MFUN(spectacle_getMaxFreq) · 240 unmodified lines | |||
| 800 | RETURN->v_float = bcdata->getMaxFreq(); | 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 | // example implementation for setter | 845 | // example implementation for setter |
| 804 | CK_DLL_MFUN(spectacle_setFreqRange) | 846 | CK_DLL_MFUN(spectacle_setFreqRange) |
| 805 | { | 847 | { |