1 /*----------------------------------------------------------------------------
2 ChucK Concurrent, On-the-fly Audio Programming Language
3 Compiler and Virtual Machine
5 Copyright (c) 2004 Ge Wang and Perry R. Cook. All rights reserved.
6 http://chuck.cs.princeton.edu/
7 http://soundlab.cs.princeton.edu/
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
23 -----------------------------------------------------------------------------*/
25 //-----------------------------------------------------------------------------
26 // file: ugen_filter.h
29 // author: Ge Wang (gewang@cs.princeton.edu)
30 // Perry R. Cook (prc@cs.princeton.edu)
32 //-----------------------------------------------------------------------------
33 #ifndef __UGEN_FILTER_H__
34 #define __UGEN_FILTER_H__
40 DLL_QUERY
filter_query( Chuck_DL_Query
* query
);
43 UGEN_CTOR
filter_ctor( t_CKTIME now
);
44 UGEN_DTOR
filter_dtor( t_CKTIME now
, void * data
);
45 UGEN_TICK
filter_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
46 UGEN_CTRL
filter_ctrl_coefs( t_CKTIME now
, void * data
, void * value
);
47 UGEN_CGET
filter_cget_coefs( t_CKTIME now
, void * data
, void * out
);
48 UGEN_PMSG
filter_pmsg( t_CKTIME now
, void * data
, const char * msg
, void * value
);
51 UGEN_CTOR
biquad_ctor( t_CKTIME now
);
52 UGEN_DTOR
biquad_dtor( t_CKTIME now
, void * data
);
53 UGEN_TICK
biquad_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
55 UGEN_CTRL
biquad_ctrl_pfreq( t_CKTIME now
, void * data
, void * value
);
56 UGEN_CGET
biquad_cget_pfreq( t_CKTIME now
, void * data
, void * value
);
57 UGEN_CTRL
biquad_ctrl_prad( t_CKTIME now
, void * data
, void * value
);
58 UGEN_CGET
biquad_cget_prad( t_CKTIME now
, void * data
, void * value
);
59 UGEN_CTRL
biquad_ctrl_zfreq( t_CKTIME now
, void * data
, void * value
);
60 UGEN_CGET
biquad_cget_zfreq( t_CKTIME now
, void * data
, void * value
);
61 UGEN_CTRL
biquad_ctrl_zrad( t_CKTIME now
, void * data
, void * value
);
62 UGEN_CGET
biquad_cget_zrad( t_CKTIME now
, void * data
, void * value
);
63 UGEN_CTRL
biquad_ctrl_norm( t_CKTIME now
, void * data
, void * value
);
64 UGEN_CGET
biquad_cget_norm( t_CKTIME now
, void * data
, void * value
);
65 UGEN_CTRL
biquad_ctrl_pregain( t_CKTIME now
, void * data
, void * value
);
66 UGEN_CGET
biquad_cget_pregain( t_CKTIME now
, void * data
, void * value
);
67 UGEN_CTRL
biquad_ctrl_eqzs( t_CKTIME now
, void * data
, void * value
);
68 UGEN_CGET
biquad_cget_eqzs( t_CKTIME now
, void * data
, void * value
);
69 UGEN_CTRL
biquad_ctrl_b0( t_CKTIME now
, void * data
, void * value
);
70 UGEN_CGET
biquad_cget_b0( t_CKTIME now
, void * data
, void * value
);
71 UGEN_CTRL
biquad_ctrl_b1( t_CKTIME now
, void * data
, void * value
);
72 UGEN_CGET
biquad_cget_b1( t_CKTIME now
, void * data
, void * value
);
73 UGEN_CTRL
biquad_ctrl_b2( t_CKTIME now
, void * data
, void * value
);
74 UGEN_CGET
biquad_cget_b2( t_CKTIME now
, void * data
, void * value
);
75 UGEN_CTRL
biquad_ctrl_a0( t_CKTIME now
, void * data
, void * value
);
76 UGEN_CGET
biquad_cget_a0( t_CKTIME now
, void * data
, void * value
);
77 UGEN_CTRL
biquad_ctrl_a1( t_CKTIME now
, void * data
, void * value
);
78 UGEN_CGET
biquad_cget_a1( t_CKTIME now
, void * data
, void * value
);
79 UGEN_CTRL
biquad_ctrl_a2( t_CKTIME now
, void * data
, void * value
);
80 UGEN_CGET
biquad_cget_a2( t_CKTIME now
, void * data
, void * value
);
83 UGEN_CTOR
onepole_ctor( t_CKTIME now
);
84 UGEN_DTOR
onepole_dtor( t_CKTIME now
, void * data
);
85 UGEN_TICK
onepole_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
86 UGEN_CTRL
onepole_ctrl_pole( t_CKTIME now
, void * data
, void * value
);
89 UGEN_CTOR
onezero_ctor( t_CKTIME now
);
90 UGEN_DTOR
onezero_dtor( t_CKTIME now
, void * data
);
91 UGEN_TICK
onezero_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
92 UGEN_CTRL
onezero_ctrl_zero( t_CKTIME now
, void * data
, void * value
);
95 UGEN_CTOR
twopole_ctor( t_CKTIME now
);
96 UGEN_DTOR
twopole_dtor( t_CKTIME now
, void * data
);
97 UGEN_TICK
twopole_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
98 UGEN_CTRL
twopole_ctrl_freq( t_CKTIME now
, void * data
, void * value
);
99 UGEN_CTRL
twopole_ctrl_rad( t_CKTIME now
, void * data
, void * value
);
100 UGEN_CTRL
twopole_ctrl_norm( t_CKTIME now
, void * data
, void * value
);
103 UGEN_CTOR
twozero_ctor( t_CKTIME now
);
104 UGEN_DTOR
twozero_dtor( t_CKTIME now
, void * data
);
105 UGEN_TICK
twozero_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
106 UGEN_CTRL
twozero_ctrl_freq( t_CKTIME now
, void * data
, void * value
);
107 UGEN_CTRL
twozero_ctrl_rad( t_CKTIME now
, void * data
, void * value
);
110 UGEN_CTOR
gQ_ctor( t_CKTIME now
);
111 UGEN_DTOR
gQ_dtor( t_CKTIME now
, void * data
);
112 UGEN_TICK
gQ_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
113 UGEN_CTRL
gQ_ctrl_freq( t_CKTIME now
, void * data
, void * value
);
114 UGEN_CTRL
gQ_ctrl_rad( t_CKTIME now
, void * data
, void * value
);
117 UGEN_CTOR
allpass_ctor( t_CKTIME now
);
118 UGEN_DTOR
allpass_dtor( t_CKTIME now
, void * data
);
119 UGEN_TICK
allpass_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
120 UGEN_PMSG
allpass_pmsg( t_CKTIME now
, void * data
, const char * msg
, void * value
);
123 UGEN_CTOR
delay_ctor( t_CKTIME now
);
124 UGEN_DTOR
delay_dtor( t_CKTIME now
, void * data
);
125 UGEN_TICK
delay_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
126 UGEN_CTRL
delay_ctrl_delay( t_CKTIME now
, void * data
, void * value
);
127 UGEN_CTRL
delay_ctrl_max( t_CKTIME now
, void * data
, void * value
);
128 UGEN_CTRL
delay_ctrl_tap( t_CKTIME now
, void * data
, void * value
);
129 UGEN_CTRL
delay_ctrl_energy( t_CKTIME now
, void * data
, void * value
);
132 UGEN_CTOR
delayA_ctor( t_CKTIME now
);
133 UGEN_DTOR
delayA_dtor( t_CKTIME now
, void * data
);
134 UGEN_TICK
delayA_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
135 UGEN_CTRL
delayA_ctrl_delay( t_CKTIME now
, void * data
, void * value
);
136 UGEN_CTRL
delayA_ctrl_max( t_CKTIME now
, void * data
, void * value
);
139 UGEN_CTOR
delayL_ctor( t_CKTIME now
);
140 UGEN_DTOR
delayL_dtor( t_CKTIME now
, void * data
);
141 UGEN_TICK
delayL_tick( t_CKTIME now
, void * data
, SAMPLE in
, SAMPLE
* out
);
142 UGEN_CTRL
delayL_ctrl_delay( t_CKTIME now
, void * data
, void * value
);
143 UGEN_CTRL
delayL_ctrl_max( t_CKTIME now
, void * data
, void * value
);