1 /*
2   ZynAddSubFX - a software synthesizer
3 
4   Presets.h - Presets and Clipboard management
5   Copyright (C) 2002-2005 Nasca Octavian Paul
6   Author: Nasca Octavian Paul
7 
8   This program is free software; you can redistribute it and/or
9   modify it under the terms of the GNU General Public License
10   as published by the Free Software Foundation; either version 2
11   of the License, or (at your option) any later version.
12 */
13 
14 #ifndef PRESETS_H
15 #define PRESETS_H
16 
17 #include "../globals.h"
18 
19 namespace zyn {
20 
21 class PresetsStore;
22 
23 /**Presets and Clipboard management*/
24 class Presets
25 {
26     friend class PresetsArray;
27     public:
28         Presets();
29         virtual ~Presets();
30 
31         virtual void copy(PresetsStore &ps, const char *name); /**<if name==NULL, the clipboard is used*/
32         //virtual void paste(PresetsStore &ps, int npreset); //npreset==0 for clipboard
33         virtual bool checkclipboardtype(PresetsStore &ps);
34         void deletepreset(PresetsStore &ps, int npreset);
35 
36         char type[MAX_PRESETTYPE_SIZE];
37         //void setelement(int n);
38     protected:
39         void setpresettype(const char *type);
40     private:
41         virtual void add2XML(XMLwrapper& xml)    = 0;
42         //virtual void getfromXML(XMLwrapper *xml) = 0;
43         //virtual void defaults() = 0;
44 };
45 
46 /*
47     Location where a "consumer" in zyn is located, where
48     consumers are envelopes, LFOs and filters.
49     Note that the AD synth global consumers correspond to those of PAD synth
50  */
51 //currently no enum, since this won't work with rPreset
52 //enum consumer_location_t
53 //{
54 
55 #define ad_global_amp 0
56 #define ad_global_freq 1
57 #define ad_global_filter 2
58 
59 #define ad_voice_amp 3
60 #define ad_voice_freq 4
61 #define ad_voice_filter 5
62 
63 #define ad_voice_fm_amp 6
64 #define ad_voice_fm_freq 7
65 
66 #define sub_freq 8
67 #define sub_filter 9
68 #define sub_bandwidth 10
69 
70 #define in_effect 11
71 #define loc_unspecified 12
72 
73 //};
74 using consumer_location_t = int;
75 
76 enum class consumer_location_type_t
77 {
78     freq, amp, filter, unspecified
79 };
80 
81 }
82 
83 #endif
84