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