It's 2020...
[terminatorX.git] / src / tX_ladspa.h
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999-2020  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, see <http://www.gnu.org/licenses/>.
17  
18     File: tX_ladspa.h
19  
20     Description: Header to ladspa.cc - see there for more info
21 */
22
23 #ifndef _h_tx_ladspa
24 #define _h_tx_ladspa 1
25
26 #include <list>
27 #include <ladspa.h>
28
29 using namespace std;
30
31 class LADSPA_Plugin
32 {
33         protected:
34         const LADSPA_Descriptor *ladspa_descriptor;
35         LADSPA_Plugin(const LADSPA_Descriptor *ld, char *filename);
36         LADSPA_Plugin() {}
37         char info_string[4096];
38         char file[1024];
39         
40         private:
41         static list <LADSPA_Plugin *> plugin_list;
42         static void scandir(char *dir);
43         static void handlelib(void *lib, LADSPA_Descriptor_Function desc_func, char* filename);
44         
45         public:
46         static void init();
47         static void status();
48         static void debug_display();
49         virtual bool is_stereo();
50         char *get_info_string() { return info_string; }
51         char *get_file_name() { return file; }
52         
53         long getUniqueID() { return ladspa_descriptor->UniqueID; }
54         const char * getName() { return ladspa_descriptor->Name; }
55         const char * getLabel() { return ladspa_descriptor->Label; }
56         long getPortCount() { return ladspa_descriptor->PortCount; }
57         
58         static int getPluginCount() { return plugin_list.size(); }
59         static LADSPA_Plugin * getPluginByIndex(int i);
60         static LADSPA_Plugin * getPluginByUniqueID(long ID);
61         const LADSPA_Descriptor *getDescriptor() { return ladspa_descriptor; }
62         virtual ~LADSPA_Plugin() {};
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