9c4f491ec42bbabc065ed2998c151a584bd40999
[terminatorX.git] / src / tX_vttfx.h
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999-2002  Alexander K├Ânig
4  
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9  
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14  
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  
19     File: tX_vttfx.h
20  
21     Description: Header to tX_vttfx.cc - see there for more info
22 */
23
24 #ifndef _h_tx_vttfx
25 #define _h_tx_vttfx 1
26
27
28 //#include "tX_vtt.h"
29 #include "tX_seqpar.h"
30 #include "tX_ladspa.h"
31 #include <stdio.h>
32 #include <list>
33 #include <gtk/gtk.h>
34 #include "tX_panel.h"
35
36 /* Ids to guarantee positioning of builtin */
37 #define TX_FX_BUILTINCUTOFF 1
38 #define TX_FX_BUILTINECHO 2
39 #define TX_FX_LADSPA 3
40
41 /* abstract super class vtt_fx */
42
43 class vtt_fx
44 {
45         protected:
46         void *vtt;
47         GtkWidget *panel_widget;
48         tX_panel *panel;
49
50         public: 
51         vtt_fx() { vtt=NULL; }
52         virtual ~vtt_fx();
53         void set_vtt(void *v) { vtt=v;}
54         void *get_vtt() { return vtt; }
55         
56         virtual void activate();
57         virtual void deactivate();
58         virtual void run();     
59         virtual int isEnabled();
60         virtual void reconnect_buffer();
61         
62         virtual const char *get_info_string();
63         
64         virtual void save(FILE *output);
65         
66         GtkWidget* get_panel_widget() { return panel_widget; }
67         void set_panel_widget(GtkWidget *widget) { panel_widget=widget; }
68         
69         void set_panel(tX_panel *p) { panel = p; }
70         tX_panel* get_panel() { return panel; }
71 };
72
73 /*********************************/
74 /* builtin fx */
75
76 /* lowpass */
77 class vtt_fx_lp : public vtt_fx
78 {
79         public: 
80         virtual void activate();
81         virtual void deactivate();
82         virtual void run();     
83         virtual int isEnabled();
84
85         virtual void save(FILE *output);
86         virtual const char *get_info_string();
87 };
88
89 /* echo */
90 class vtt_fx_ec : public vtt_fx
91 {
92         public: 
93         virtual void activate();
94         virtual void deactivate();
95         virtual void run();     
96         virtual int isEnabled();
97
98         virtual void save(FILE *output);
99         virtual const char *get_info_string();  
100 };
101
102 /********************************/
103 /* LADSPA plugin fx */
104
105 class vtt_fx_ladspa : public vtt_fx
106 {
107         public:
108         list <tX_seqpar_vttfx *> controls;
109         private:
110         tX_seqpar_vttfx *sp_enable;
111         int input_port, output_port;
112         LADSPA_Handle *instance;
113         LADSPA_Plugin *plugin;
114
115         public:
116         vtt_fx_ladspa(LADSPA_Plugin *, void *);
117         virtual ~vtt_fx_ladspa();
118         
119         public: 
120         virtual void activate();
121         virtual void deactivate();
122         virtual void run();             
123         virtual int isEnabled();
124         virtual void reconnect_buffer();
125         virtual const char *get_info_string();  
126         virtual void save(FILE *output);
127         virtual void load(FILE *input);
128 };
129
130 #endif