/[svn]/liblscp/trunk/lscp/client.h
ViewVC logotype

Contents of /liblscp/trunk/lscp/client.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1365 - (show annotations) (download) (as text)
Mon Oct 1 17:22:02 2007 UTC (11 years, 11 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 12260 byte(s)
* Added new client interface function, for editing instruments:
    lscp_edit_instrument();
* Fixed some minor bugs in:
    lscp_set_fxsend_midi_controller();
    lscp_set_fxsend_level();

1 // client.h
2 //
3 /****************************************************************************
4 liblscp - LinuxSampler Control Protocol API
5 Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved.
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU General Public License along
18 with this program; if not, write to the Free Software Foundation, Inc.,
19 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
21 *****************************************************************************/
22
23 #ifndef __LSCP_CLIENT_H
24 #define __LSCP_CLIENT_H
25
26 #include "lscp/socket.h"
27 #include "lscp/event.h"
28
29 #if defined(__cplusplus)
30 extern "C" {
31 #endif
32
33 //-------------------------------------------------------------------------
34 // MIDI channel omni mode.
35
36 #define LSCP_MIDI_CHANNEL_ALL 16
37
38
39 //-------------------------------------------------------------------------
40 // Client data structures.
41
42 /** Server info cache struct. */
43 typedef struct _lscp_server_info_t
44 {
45 char * description;
46 char * version;
47 char * protocol_version;
48
49 } lscp_server_info_t;
50
51
52 /** Engine info cache struct. */
53 typedef struct _lscp_engine_info_t
54 {
55 char * description;
56 char * version;
57
58 } lscp_engine_info_t;
59
60
61 /** Channel info cache struct. */
62 typedef struct _lscp_channel_info_t
63 {
64 char * engine_name;
65 int audio_device;
66 int audio_channels;
67 int * audio_routing;
68 char * instrument_file;
69 int instrument_nr;
70 char * instrument_name;
71 int instrument_status;
72 int midi_device;
73 int midi_port;
74 int midi_channel;
75 int midi_map;
76 float volume;
77 int mute;
78 int solo;
79
80 } lscp_channel_info_t;
81
82
83 /** Buffer fill cache struct. */
84 typedef struct _lscp_buffer_fill_t
85 {
86 unsigned int stream_id;
87 unsigned long stream_usage;
88
89 } lscp_buffer_fill_t;
90
91
92 /** Buffer fill stream usage types. */
93 typedef enum _lscp_usage_t
94 {
95 LSCP_USAGE_BYTES = 0,
96 LSCP_USAGE_PERCENTAGE
97
98 } lscp_usage_t;
99
100
101 /** Effect send info cache struct. */
102 typedef struct _lscp_fxsend_info_t
103 {
104 char * name;
105 int midi_controller;
106 int * audio_routing;
107 float level;
108
109 } lscp_fxsend_info_t;
110
111
112 /** MIDI instrument parameter struct. */
113 typedef struct _lscp_midi_instrument_t
114 {
115 int map;
116 int bank;
117 int prog;
118
119 } lscp_midi_instrument_t;
120
121
122 /** MIDI instrument load mode. */
123 typedef enum _lscp_load_mode_t
124 {
125 LSCP_LOAD_DEFAULT = 0,
126 LSCP_LOAD_ON_DEMAND,
127 LSCP_LOAD_ON_DEMAND_HOLD,
128 LSCP_LOAD_PERSISTENT
129
130 } lscp_load_mode_t;
131
132
133 /** MIDI instrument info cache struct. */
134 typedef struct _lscp_midi_instrument_info_t
135 {
136 char * name;
137 char * engine_name;
138 char * instrument_file;
139 int instrument_nr;
140 char * instrument_name;
141 lscp_load_mode_t load_mode;
142 float volume;
143
144 } lscp_midi_instrument_info_t;
145
146
147 /** MIDI instrument map mode. */
148 typedef enum _lscp_midi_map_mode_t
149 {
150 LSCP_MIDI_MAP_NONE = -1,
151 LSCP_MIDI_MAP_DEFAULT = -2,
152 LSCP_MIDI_MAP_ALL = -3
153
154 } lscp_midi_map_mode_t;
155
156
157 //-------------------------------------------------------------------------
158 // Client socket main structure.
159
160 /** Client opaque descriptor struct. */
161 typedef struct _lscp_client_t lscp_client_t;
162
163 /** Client event callback procedure prototype. */
164 typedef lscp_status_t (*lscp_client_proc_t)
165 (
166 struct _lscp_client_t *pClient,
167 lscp_event_t event,
168 const char *pchData,
169 int cchData,
170 void *pvData
171 );
172
173 //-------------------------------------------------------------------------
174 // Client versioning teller function.
175
176 const char * lscp_client_package (void);
177 const char * lscp_client_version (void);
178 const char * lscp_client_build (void);
179
180 //-------------------------------------------------------------------------
181 // Client socket functions.
182
183 lscp_client_t * lscp_client_create (const char *pszHost, int iPort, lscp_client_proc_t pfnCallback, void *pvData);
184 lscp_status_t lscp_client_join (lscp_client_t *pClient);
185 lscp_status_t lscp_client_destroy (lscp_client_t *pClient);
186
187 lscp_status_t lscp_client_set_timeout (lscp_client_t *pClient, int iTimeout);
188 int lscp_client_get_timeout (lscp_client_t *pClient);
189
190 //-------------------------------------------------------------------------
191 // Client common protocol functions.
192
193 lscp_status_t lscp_client_query (lscp_client_t *pClient, const char *pszQuery);
194 const char * lscp_client_get_result (lscp_client_t *pClient );
195 int lscp_client_get_errno (lscp_client_t *pClient );
196
197 //-------------------------------------------------------------------------
198 // Client registration protocol functions.
199
200 lscp_status_t lscp_client_subscribe (lscp_client_t *pClient, lscp_event_t events);
201 lscp_status_t lscp_client_unsubscribe (lscp_client_t *pClient, lscp_event_t events);
202
203 lscp_event_t lscp_client_get_events (lscp_client_t *pClient);
204
205 //-------------------------------------------------------------------------
206 // Client command protocol functions.
207
208 lscp_status_t lscp_load_instrument (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
209 lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
210 lscp_status_t lscp_load_engine (lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel);
211 int lscp_get_channels (lscp_client_t *pClient);
212 int * lscp_list_channels (lscp_client_t *pClient);
213 int lscp_add_channel (lscp_client_t *pClient);
214 lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel);
215
216 int lscp_get_available_engines (lscp_client_t *pClient);
217 const char ** lscp_list_available_engines (lscp_client_t *pClient);
218
219 lscp_engine_info_t * lscp_get_engine_info (lscp_client_t *pClient, const char *pszEngineName);
220 lscp_channel_info_t * lscp_get_channel_info (lscp_client_t *pClient, int iSamplerChannel);
221
222 int lscp_get_channel_voice_count (lscp_client_t *pClient, int iSamplerChannel);
223 int lscp_get_channel_stream_count (lscp_client_t *pClient, int iSamplerChannel);
224 int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel);
225
226 lscp_buffer_fill_t * lscp_get_channel_buffer_fill (lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel);
227
228 lscp_status_t lscp_set_channel_audio_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType);
229 lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice);
230 lscp_status_t lscp_set_channel_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn);
231
232 lscp_status_t lscp_set_channel_midi_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType);
233 lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice);
234 lscp_status_t lscp_set_channel_midi_port (lscp_client_t *pClient, int iSamplerChannel, int iMidiPort);
235 lscp_status_t lscp_set_channel_midi_channel (lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel);
236 lscp_status_t lscp_set_channel_midi_map (lscp_client_t *pClient, int iSamplerChannel, int iMidiMap);
237
238 lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume);
239
240 lscp_status_t lscp_set_channel_mute (lscp_client_t *pClient, int iSamplerChannel, int iMute);
241 lscp_status_t lscp_set_channel_solo (lscp_client_t *pClient, int iSamplerChannel, int iSolo);
242
243 lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel);
244
245 lscp_status_t lscp_reset_sampler (lscp_client_t *pClient);
246
247 lscp_server_info_t * lscp_get_server_info (lscp_client_t *pClient);
248
249 int lscp_get_total_voice_count (lscp_client_t *pClient);
250 int lscp_get_total_voice_count_max (lscp_client_t *pClient);
251
252 float lscp_get_volume (lscp_client_t *pClient );
253 lscp_status_t lscp_set_volume (lscp_client_t *pClient, float fVolume);
254
255 //-------------------------------------------------------------------------
256 // Effect sends control functions.
257
258 int lscp_create_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iMidiController, const char *pszFxName);
259 lscp_status_t lscp_destroy_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
260
261 int lscp_get_fxsends (lscp_client_t *pClient, int iSamplerChannel);
262 int * lscp_list_fxsends (lscp_client_t *pClient, int iSamplerChannel);
263
264 lscp_fxsend_info_t * lscp_get_fxsend_info (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
265
266 lscp_status_t lscp_set_fxsend_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iAudioSrc, int iAudioDst);
267 lscp_status_t lscp_set_fxsend_midi_controller (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iMidiController);
268 lscp_status_t lscp_set_fxsend_level (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, float fLevel);
269
270 //-------------------------------------------------------------------------
271 // MIDI instrument mapping control functions.
272
273 int lscp_add_midi_instrument_map (lscp_client_t *pClient, const char *pszMapName);
274 lscp_status_t lscp_remove_midi_instrument_map (lscp_client_t *pClient, int iMidiMap);
275
276 int lscp_get_midi_instrument_maps (lscp_client_t *pClient);
277 int * lscp_list_midi_instrument_maps (lscp_client_t *pClient);
278
279 const char * lscp_get_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap);
280 lscp_status_t lscp_set_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap, const char *pszMapName);
281
282 lscp_status_t lscp_map_midi_instrument (lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr, const char *pszEngineName, const char *pszFileName, int iInstrIndex, float fVolume, lscp_load_mode_t load_mode, const char *pszName);
283 lscp_status_t lscp_unmap_midi_instrument (lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
284
285 int lscp_get_midi_instruments (lscp_client_t *pClient, int iMidiMap);
286 lscp_midi_instrument_t *lscp_list_midi_instruments (lscp_client_t *pClient, int iMidiMap);
287
288 lscp_midi_instrument_info_t *lscp_get_midi_instrument_info(lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
289
290 lscp_status_t lscp_clear_midi_instruments (lscp_client_t *pClient, int iMidiMap);
291
292 //-------------------------------------------------------------------------
293 // Instrument editor functions.
294
295 lscp_status_t lscp_edit_instrument (lscp_client_t *pClient, int iSamplerChannel);
296
297 #if defined(__cplusplus)
298 }
299 #endif
300
301 #endif // __LSCP_CLIENT_H
302
303 // end of client.h

  ViewVC Help
Powered by ViewVC