Adding stereo plugins, fixed LADSPA menus, ignoring NON-RT plugins - Alex
[terminatorX.git] / src / tX_ladspa.h
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999-2003  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_ladspa.h
20  
21     Description: Header to ladspa.cc - see there for more info
22 */
23
24 #ifndef _h_tx_ladspa
25 #define _h_tx_ladspa 1
26
27 #include <list>
28 #include <ladspa.h>
29
30 using namespace std;
31
32 class LADSPA_Plugin
33 {
34         protected:
35         const LADSPA_Descriptor *ladspa_descriptor;
36         LADSPA_Plugin(const LADSPA_Descriptor *ld, char *filename);
37         LADSPA_Plugin() {}
38         char info_string[4096];
39         char file[1024];
40         
41         private:
42         static list <LADSPA_Plugin *> plugin_list;
43         static void scandir(char *dir);
44         static void handlelib(void *lib, LADSPA_Descriptor_Function desc_func, char* filename);
45         
46         public:
47         static void init();
48         static void status();
49         static void debug_display();
50         virtual bool is_stereo();
51         char *get_info_string() { return info_string; }
52         char *get_file_name() { return file; }
53         
54         long getUniqueID() { return ladspa_descriptor->UniqueID; }
55         const char * getName() { return ladspa_descriptor->Name; }
56         const char * getLabel() { return ladspa_descriptor->Label; }
57         long getPortCount() { return ladspa_descriptor->PortCount; }
58         
59         static int getPluginCount() { return plugin_list.size(); }
60         static LADSPA_Plugin * getPluginByIndex(int i);
61         static LADSPA_Plugin * getPluginByUniqueID(long ID);
62         const LADSPA_Descriptor *getDescriptor() { return ladspa_descriptor; }
63 };
64
65 class LADSPA_Stereo_Plugin : public LADSPA_Plugin
66 {
67         private:
68         static list <LADSPA_Stereo_Plugin *> stereo_plugin_list;
69         
70         public:
71         LADSPA_Stereo_Plugin(const LADSPA_Descriptor *ld, char *filename);
72
73         public:
74         virtual bool is_stereo();
75         static LADSPA_Stereo_Plugin * getPluginByIndex(int i);
76         static LADSPA_Stereo_Plugin * getPluginByUniqueID(long ID);     
77 };
78
79 #endif