1 // interface for STK Effects
2
3 #include <stdlib.h>
4
5 #include "stkint.h"
6
7 #include "NRev.h"
8 #include "JCRev.h"
9 #include "PRCRev.h"
10
11 using namespace Nyq;
12
13 // Reverb Effects ==========================================================
14
15 struct stkEffect {
16 Effect * effectPtr;
17 };
18
initStkEffect(int eff_type,::StkFloat trev,int sample_rate)19 struct stkEffect *initStkEffect(int eff_type, ::StkFloat trev, int sample_rate) {
20 struct stkEffect * eff = (struct stkEffect *) malloc(sizeof(struct stkEffect));
21 Stk::setSampleRate(sample_rate);
22 switch(eff_type) {
23 case NREV:
24 eff->effectPtr = new NRev(trev);
25 break;
26 case JCREV:
27 eff->effectPtr = new JCRev(trev);
28 break;
29 case PRCREV:
30 eff->effectPtr = new PRCRev(trev);
31 break;
32 default:
33 return NULL;
34 }
35 return eff;
36 }
37
deleteStkEffect(struct stkEffect * eff)38 int deleteStkEffect(struct stkEffect * eff) {
39 delete(eff->effectPtr);
40 free(eff);
41 return 0;
42 }
43
stkEffectTick(struct stkEffect * eff,::StkFloat s)44 ::StkFloat stkEffectTick(struct stkEffect * eff, ::StkFloat s) {
45 return eff->effectPtr->tick(s);
46 }
47
stkEffectSetMix(struct stkEffect * eff,::StkFloat mix)48 void stkEffectSetMix (struct stkEffect * eff, ::StkFloat mix) {
49 eff->effectPtr->setEffectMix(mix);
50 }
51
52 // PitShift ===================================================
53
54 #include "PitShift.h"
55
initStkPitShift(::StkFloat shift,int sample_rate)56 struct stkEffect *initStkPitShift(::StkFloat shift, int sample_rate) {
57 PitShift * ps;
58 ps = new PitShift();
59 ps->setShift(shift);
60 struct stkEffect * eff = (struct stkEffect *) malloc(sizeof(struct stkEffect));
61 Stk::setSampleRate(sample_rate);
62 eff->effectPtr = ps;
63 return eff;
64 }
65
66 // Chorus =====================================================
67
68 #include "Chorus.h"
69
initStkChorus(::StkFloat baseDelay,::StkFloat depth,::StkFloat freq,int sample_rate)70 struct stkEffect *initStkChorus(::StkFloat baseDelay, ::StkFloat depth, ::StkFloat freq, int sample_rate) {
71 Chorus * ch;
72 ch = new Chorus(baseDelay);
73 ch->setModDepth(depth);
74 ch->setModFrequency(freq);
75 struct stkEffect * eff = (struct stkEffect *) malloc(sizeof(struct stkEffect));
76 Stk::setSampleRate(sample_rate);
77 eff->effectPtr = ch;
78 return eff;
79 }
80
81