1 /*
2  * Author: Harry van Haaren 2014
3  *         harryhaaren@gmail.com
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., 51 Franklin Street, Fifth Floor, Boston,
18  * MA 02110-1301, USA.
19  */
20 
21 #ifndef OPENAV_FABLA2_SHARED_HXX
22 #define OPENAV_FABLA2_SHARED_HXX
23 
24 // for FABLA2_PORT_COUNT
25 #include "dsp/ports.hxx"
26 
27 #include "lv2/lv2plug.in/ns/lv2core/lv2.h"
28 
29 #include "lv2/lv2plug.in/ns/ext/atom/atom.h"
30 #include "lv2/lv2plug.in/ns/ext/atom/util.h"
31 #include "lv2/lv2plug.in/ns/ext/midi/midi.h"
32 #include "lv2/lv2plug.in/ns/ext/urid/urid.h"
33 #include "lv2/lv2plug.in/ns/ext/atom/forge.h"
34 #include "lv2/lv2plug.in/ns/ext/patch/patch.h"
35 #include "lv2/lv2plug.in/ns/ext/log/log.h"
36 #include "lv2/lv2plug.in/ns/ext/log/logger.h"
37 #include "lv2/lv2plug.in/ns/ext/worker/worker.h"
38 
39 #define FABLA2_URI    "http://www.openavproductions.com/fabla2"
40 #define FABLA2_UI_URI "http://www.openavproductions.com/fabla2#gui"
41 
42 #define FABLA2_UI_WAVEFORM_PX 422
43 
44 /// Atom Event types
45 #define FABLA2_StateStringJSON      FABLA2_URI "#StateStringJSON"
46 
47 #define FABLA2_Panic                FABLA2_URI "#Panic"
48 
49 #define FABLA2_requestUiSampleState FABLA2_URI "#RequestUiSampleState"
50 #define FABLA2_replyUiSampleState   FABLA2_URI "#ReplyUiSampleState"
51 
52 #define FABLA2_UiLiveState          FABLA2_URI "#UiLiveState"
53 #define FABLA2_UiPadsState          FABLA2_URI "#UiPadsState"
54 
55 #define FABLA2_DBMeter              FABLA2_URI "#DBMeter"
56 
57 #define FABLA2_AuxBus               FABLA2_URI "#AuxBus"
58 #define FABLA2_auxBusNumber         FABLA2_URI "#auxBusNumber"
59 
60 #define FABLA2_SeqStepState         FABLA2_URI "#SeqStepState"
61 
62 #define FABLA2_PadSwitchType        FABLA2_URI "#PadSwitchType"
63 #define FABLA2_PadMuteGroup         FABLA2_URI "#PadMuteGroup"
64 #define FABLA2_PadOffGroup          FABLA2_URI "#PadOffByGroup"
65 #define FABLA2_PadTriggerMode       FABLA2_URI "#PadTriggerMode"
66 #define FABLA2_PadRefreshLayers     FABLA2_URI "#PadRefreshLayers"
67 #define FABLA2_PadPlay              FABLA2_URI "#PadPlay"
68 #define FABLA2_PadStop              FABLA2_URI "#PadStop"
69 #define FABLA2_PadVolume            FABLA2_URI "#PadVolume"
70 #define FABLA2_PadHasSample         FABLA2_URI "#PadHasSample"
71 
72 #define FABLA2_PadAuxBus1           FABLA2_URI "#PadAuxBus1"
73 #define FABLA2_PadAuxBus2           FABLA2_URI "#PadAuxBus2"
74 #define FABLA2_PadAuxBus3           FABLA2_URI "#PadAuxBus3"
75 #define FABLA2_PadAuxBus4           FABLA2_URI "#PadAuxBus4"
76 
77 #define FABLA2_SampleAudition       FABLA2_URI "#SampleAudition"
78 #define FABLA2_SampleFilterType     FABLA2_URI "#SampleFilterType"
79 #define FABLA2_SampleFilterFrequency FABLA2_URI"#SampleFilterFrequency"
80 #define FABLA2_SampleFilterResonance FABLA2_URI"#SampleFilterResonance"
81 #define FABLA2_SampleAdsrAttack     FABLA2_URI "#SampleAdsrAttack"
82 #define FABLA2_SampleAdsrDecay      FABLA2_URI "#SampleAdsrDecay"
83 #define FABLA2_SampleAdsrSustain    FABLA2_URI "#SampleAdsrSustain"
84 #define FABLA2_SampleAdsrRelease    FABLA2_URI "#SampleAdsrRelease"
85 #define FABLA2_SampleGain           FABLA2_URI "#SampleGain"
86 #define FABLA2_SamplePan            FABLA2_URI "#SamplePan"
87 #define FABLA2_SamplePitch          FABLA2_URI "#SamplePitch"
88 #define FABLA2_SampleTime           FABLA2_URI "#SampleTime"
89 #define FABLA2_SampleStartPoint     FABLA2_URI "#SampleStartPoint"
90 #define FABLA2_SampleEndPoint       FABLA2_URI "#SampleEndPoint"
91 #define FABLA2_SampleVelStartPnt    FABLA2_URI "#SampleVelStartPnt"
92 #define FABLA2_SampleVelEndPnt      FABLA2_URI "#SampleVelEndPnt"
93 #define FABLA2_SampleLoad           FABLA2_URI "#SampleLoad"
94 #define FABLA2_SampleUnload         FABLA2_URI "#SampleUnload"
95 #define FABLA2_SampleAudioData      FABLA2_URI "#SampleAudioData"
96 
97 /// "Inside Atoms" data types
98 #define FABLA2_name                 FABLA2_URI "#name"
99 #define FABLA2_sample               FABLA2_URI "#sample"
100 #define FABLA2_bank                 FABLA2_URI "#bank"
101 #define FABLA2_pad                  FABLA2_URI "#pad"
102 #define FABLA2_step                 FABLA2_URI "#step"
103 #define FABLA2_layer                FABLA2_URI "#layer"
104 #define FABLA2_velocity             FABLA2_URI "#velocity"
105 #define FABLA2_value                FABLA2_URI "#value"
106 #define FABLA2_audioData            FABLA2_URI "#audioData"
107 
108 
109 typedef struct {
110 	LV2_URID atom_Blank;
111 	LV2_URID atom_Path;
112 	LV2_URID atom_Int;
113 	LV2_URID atom_Float;
114 	LV2_URID atom_String;
115 	LV2_URID atom_Vector;
116 	LV2_URID atom_Resource;
117 	LV2_URID atom_Sequence;
118 	LV2_URID atom_URID;
119 	LV2_URID atom_eventTransfer;
120 
121 	LV2_URID midi_MidiEvent;
122 
123 	LV2_URID patch_Set;
124 	LV2_URID patch_property;
125 	LV2_URID patch_value;
126 
127 	LV2_URID fabla2_StateStringJSON;
128 
129 	LV2_URID fabla2_Panic;
130 
131 	LV2_URID fabla2_RequestUiSampleState;
132 	LV2_URID fabla2_ReplyUiSampleState;
133 	LV2_URID fabla2_UiLiveState;
134 	LV2_URID fabla2_UiPadsState;
135 
136 	LV2_URID fabla2_dbMeter;
137 
138 	LV2_URID fabla2_SeqStepState;
139 
140 	LV2_URID fabla2_PadSwitchType;
141 	LV2_URID fabla2_PadMuteGroup;
142 	LV2_URID fabla2_PadOffGroup;
143 	LV2_URID fabla2_PadTriggerMode;
144 	LV2_URID fabla2_PadRefreshLayers;
145 	LV2_URID fabla2_PadPlay;
146 	LV2_URID fabla2_PadStop;
147 	LV2_URID fabla2_PadVolume;
148 	LV2_URID fabla2_PadHasSample;
149 
150 	LV2_URID fabla2_AuxBus;
151 	LV2_URID fabla2_auxBusNumber;
152 
153 	LV2_URID fabla2_PadAuxBus1;
154 	LV2_URID fabla2_PadAuxBus2;
155 	LV2_URID fabla2_PadAuxBus3;
156 	LV2_URID fabla2_PadAuxBus4;
157 
158 	LV2_URID fabla2_SampleAudition;
159 	LV2_URID fabla2_SampleFilterType;
160 	LV2_URID fabla2_SampleFilterFrequency;
161 	LV2_URID fabla2_SampleFilterResonance;
162 
163 	LV2_URID fabla2_SampleAdsrAttack;
164 	LV2_URID fabla2_SampleAdsrDecay;
165 	LV2_URID fabla2_SampleAdsrSustain;
166 	LV2_URID fabla2_SampleAdsrRelease;
167 
168 	LV2_URID fabla2_SampleGain;
169 	LV2_URID fabla2_SamplePan;
170 	LV2_URID fabla2_SamplePitch;
171 	LV2_URID fabla2_SampleTime;
172 	LV2_URID fabla2_SampleStartPoint;
173 	LV2_URID fabla2_SampleEndPoint;
174 	LV2_URID fabla2_SampleVelStartPnt;
175 	LV2_URID fabla2_SampleVelEndPnt;
176 	LV2_URID fabla2_SampleLoad;
177 	LV2_URID fabla2_SampleUnload;
178 	LV2_URID fabla2_SampleAudioData;
179 
180 	LV2_URID fabla2_name;
181 	LV2_URID fabla2_sample;
182 	LV2_URID fabla2_velocity;
183 	LV2_URID fabla2_bank;
184 	LV2_URID fabla2_pad;
185 	LV2_URID fabla2_step;
186 	LV2_URID fabla2_layer;
187 	LV2_URID fabla2_value;
188 	LV2_URID fabla2_audioData;
189 } URIs;
190 
mapUri(URIs * uris,LV2_URID_Map * map)191 static void mapUri( URIs* uris, LV2_URID_Map* map )
192 {
193 	uris->atom_Blank                  = map->map(map->handle, LV2_ATOM__Blank);
194 	uris->atom_Path                   = map->map(map->handle, LV2_ATOM__Path);
195 	uris->atom_Int                    = map->map(map->handle, LV2_ATOM__Int);
196 	uris->atom_Float                  = map->map(map->handle, LV2_ATOM__Float);
197 	uris->atom_String                 = map->map(map->handle, LV2_ATOM__String);
198 	uris->atom_Vector                 = map->map(map->handle, LV2_ATOM__Vector);
199 	uris->atom_Resource               = map->map(map->handle, LV2_ATOM__Resource);
200 	uris->atom_Sequence               = map->map(map->handle, LV2_ATOM__Sequence);
201 	uris->atom_URID                   = map->map(map->handle, LV2_ATOM__URID);
202 	uris->atom_eventTransfer          = map->map(map->handle, LV2_ATOM__eventTransfer);
203 
204 	uris->midi_MidiEvent              = map->map(map->handle, LV2_MIDI__MidiEvent);
205 
206 	uris->patch_Set                   = map->map(map->handle, LV2_PATCH__Set);
207 	uris->patch_property              = map->map(map->handle, LV2_PATCH__property);
208 	uris->patch_value                 = map->map(map->handle, LV2_PATCH__value);
209 
210 	uris->fabla2_StateStringJSON      = map->map(map->handle, FABLA2_StateStringJSON);
211 
212 	uris->fabla2_Panic                = map->map(map->handle, FABLA2_Panic);
213 
214 	uris->fabla2_RequestUiSampleState = map->map(map->handle, FABLA2_requestUiSampleState);
215 	uris->fabla2_ReplyUiSampleState   = map->map(map->handle, FABLA2_replyUiSampleState);
216 	uris->fabla2_UiLiveState          = map->map(map->handle, FABLA2_UiLiveState );
217 	uris->fabla2_UiPadsState          = map->map(map->handle, FABLA2_UiPadsState );
218 
219 	uris->fabla2_dbMeter              = map->map(map->handle, FABLA2_DBMeter );
220 
221 	uris->fabla2_SeqStepState         = map->map(map->handle, FABLA2_SeqStepState);
222 
223 	uris->fabla2_PadSwitchType        = map->map(map->handle, FABLA2_PadSwitchType);
224 	uris->fabla2_PadTriggerMode       = map->map(map->handle, FABLA2_PadTriggerMode);
225 	uris->fabla2_PadMuteGroup         = map->map(map->handle, FABLA2_PadMuteGroup);
226 	uris->fabla2_PadOffGroup          = map->map(map->handle, FABLA2_PadOffGroup);
227 	uris->fabla2_PadRefreshLayers     = map->map(map->handle, FABLA2_PadRefreshLayers);
228 	uris->fabla2_PadPlay              = map->map(map->handle, FABLA2_PadPlay);
229 	uris->fabla2_PadStop              = map->map(map->handle, FABLA2_PadStop);
230 	uris->fabla2_PadVolume            = map->map(map->handle, FABLA2_PadVolume);
231 	uris->fabla2_PadHasSample         = map->map(map->handle, FABLA2_PadHasSample);
232 
233 	uris->fabla2_AuxBus               = map->map(map->handle, FABLA2_AuxBus);
234 	uris->fabla2_auxBusNumber         = map->map(map->handle, FABLA2_auxBusNumber);
235 
236 	uris->fabla2_PadAuxBus1           = map->map(map->handle, FABLA2_PadAuxBus1);
237 	uris->fabla2_PadAuxBus2           = map->map(map->handle, FABLA2_PadAuxBus2);
238 	uris->fabla2_PadAuxBus3           = map->map(map->handle, FABLA2_PadAuxBus3);
239 	uris->fabla2_PadAuxBus4           = map->map(map->handle, FABLA2_PadAuxBus4);
240 
241 	uris->fabla2_SampleAudition       = map->map(map->handle, FABLA2_SampleAudition);
242 	uris->fabla2_SampleFilterType     = map->map(map->handle, FABLA2_SampleFilterType);
243 	uris->fabla2_SampleFilterFrequency= map->map(map->handle, FABLA2_SampleFilterFrequency);
244 	uris->fabla2_SampleFilterResonance= map->map(map->handle, FABLA2_SampleFilterResonance);
245 
246 	uris->fabla2_SampleAdsrAttack     = map->map(map->handle, FABLA2_SampleAdsrAttack);
247 	uris->fabla2_SampleAdsrDecay      = map->map(map->handle, FABLA2_SampleAdsrDecay);
248 	uris->fabla2_SampleAdsrSustain    = map->map(map->handle, FABLA2_SampleAdsrSustain);
249 	uris->fabla2_SampleAdsrRelease    = map->map(map->handle, FABLA2_SampleAdsrRelease);
250 
251 	uris->fabla2_SampleGain           = map->map(map->handle, FABLA2_SampleGain);
252 	uris->fabla2_SamplePan            = map->map(map->handle, FABLA2_SamplePan );
253 	uris->fabla2_SamplePitch          = map->map(map->handle, FABLA2_SamplePitch);
254 	uris->fabla2_SampleTime           = map->map(map->handle, FABLA2_SampleTime);
255 	uris->fabla2_SampleStartPoint     = map->map(map->handle, FABLA2_SampleStartPoint);
256 	uris->fabla2_SampleEndPoint       = map->map(map->handle, FABLA2_SampleEndPoint);
257 	uris->fabla2_SampleVelStartPnt    = map->map(map->handle, FABLA2_SampleVelStartPnt);
258 	uris->fabla2_SampleVelEndPnt      = map->map(map->handle, FABLA2_SampleVelEndPnt);
259 	uris->fabla2_SampleLoad           = map->map(map->handle, FABLA2_SampleLoad);
260 	uris->fabla2_SampleUnload         = map->map(map->handle, FABLA2_SampleUnload);
261 	uris->fabla2_SampleAudioData      = map->map(map->handle, FABLA2_SampleAudioData);
262 
263 	uris->fabla2_sample               = map->map(map->handle, FABLA2_sample);
264 	uris->fabla2_name                 = map->map(map->handle, FABLA2_name);
265 	uris->fabla2_velocity             = map->map(map->handle, FABLA2_velocity);
266 	uris->fabla2_bank                 = map->map(map->handle, FABLA2_bank);
267 	uris->fabla2_pad                  = map->map(map->handle, FABLA2_pad);
268 	uris->fabla2_step                 = map->map(map->handle, FABLA2_step);
269 	uris->fabla2_layer                = map->map(map->handle, FABLA2_layer);
270 	uris->fabla2_value                = map->map(map->handle, FABLA2_value);
271 	uris->fabla2_audioData            = map->map(map->handle, FABLA2_audioData);
272 }
273 
274 #endif // OPENAV_FABLA2_SHARED_HXX
275