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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3866 - (hide annotations) (download) (as text)
Sat Mar 27 12:17:51 2021 UTC (3 years ago) by capela
File MIME type: text/x-c++hdr
File size: 12864 byte(s)
* Switching to CMake build system as for packaging default.
1 capela 107 // client.h
2     //
3     /****************************************************************************
4     liblscp - LinuxSampler Control Protocol API
5 capela 3866 Copyright (C) 2004-2021, rncbc aka Rui Nuno Capela. All rights reserved.
6 capela 107
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 capela 921 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 capela 107
21     *****************************************************************************/
22    
23     #ifndef __LSCP_CLIENT_H
24     #define __LSCP_CLIENT_H
25    
26     #include "lscp/socket.h"
27 capela 146 #include "lscp/event.h"
28 schoenebeck 3664 #include <stdbool.h>
29 capela 107
30     #if defined(__cplusplus)
31     extern "C" {
32     #endif
33    
34 capela 253 //-------------------------------------------------------------------------
35     // MIDI channel omni mode.
36 capela 107
37 capela 278 #define LSCP_MIDI_CHANNEL_ALL 16
38 capela 253
39    
40 capela 107 //-------------------------------------------------------------------------
41     // Client data structures.
42    
43 capela 564 /** Server info cache struct. */
44     typedef struct _lscp_server_info_t
45     {
46 capela 952 char * description;
47     char * version;
48 capela 977 char * protocol_version;
49 capela 564
50     } lscp_server_info_t;
51    
52    
53 capela 107 /** Engine info cache struct. */
54     typedef struct _lscp_engine_info_t
55     {
56 capela 952 char * description;
57     char * version;
58 capela 107
59     } lscp_engine_info_t;
60    
61    
62     /** Channel info cache struct. */
63     typedef struct _lscp_channel_info_t
64     {
65 capela 952 char * engine_name;
66     int audio_device;
67     int audio_channels;
68 capela 1020 int * audio_routing;
69 capela 952 char * instrument_file;
70     int instrument_nr;
71     char * instrument_name;
72     int instrument_status;
73     int midi_device;
74     int midi_port;
75     int midi_channel;
76 capela 975 int midi_map;
77 capela 952 float volume;
78     int mute;
79     int solo;
80 capela 107
81     } lscp_channel_info_t;
82    
83    
84     /** Buffer fill cache struct. */
85     typedef struct _lscp_buffer_fill_t
86     {
87 capela 952 unsigned int stream_id;
88     unsigned long stream_usage;
89 capela 107
90     } lscp_buffer_fill_t;
91    
92    
93     /** Buffer fill stream usage types. */
94     typedef enum _lscp_usage_t
95     {
96 capela 952 LSCP_USAGE_BYTES = 0,
97     LSCP_USAGE_PERCENTAGE
98 capela 107
99     } lscp_usage_t;
100    
101    
102 capela 1019 /** Effect send info cache struct. */
103     typedef struct _lscp_fxsend_info_t
104     {
105 capela 1020 char * name;
106     int midi_controller;
107     int * audio_routing;
108 capela 1031 float level;
109 capela 1019
110     } lscp_fxsend_info_t;
111    
112    
113 capela 946 /** MIDI instrument parameter struct. */
114     typedef struct _lscp_midi_instrument_t
115     {
116 capela 1031 int map;
117     int bank;
118     int prog;
119 capela 946
120     } lscp_midi_instrument_t;
121    
122    
123     /** MIDI instrument load mode. */
124     typedef enum _lscp_load_mode_t
125     {
126 capela 952 LSCP_LOAD_DEFAULT = 0,
127     LSCP_LOAD_ON_DEMAND,
128     LSCP_LOAD_ON_DEMAND_HOLD,
129     LSCP_LOAD_PERSISTENT
130 capela 946
131     } lscp_load_mode_t;
132    
133    
134     /** MIDI instrument info cache struct. */
135     typedef struct _lscp_midi_instrument_info_t
136     {
137 capela 952 char * name;
138     char * engine_name;
139     char * instrument_file;
140     int instrument_nr;
141     char * instrument_name;
142     lscp_load_mode_t load_mode;
143     float volume;
144 capela 946
145     } lscp_midi_instrument_info_t;
146    
147    
148 capela 975 /** MIDI instrument map mode. */
149     typedef enum _lscp_midi_map_mode_t
150     {
151     LSCP_MIDI_MAP_NONE = -1,
152     LSCP_MIDI_MAP_DEFAULT = -2,
153     LSCP_MIDI_MAP_ALL = -3
154    
155     } lscp_midi_map_mode_t;
156    
157    
158 capela 107 //-------------------------------------------------------------------------
159     // Client socket main structure.
160    
161     /** Client opaque descriptor struct. */
162     typedef struct _lscp_client_t lscp_client_t;
163    
164 capela 144 /** Client event callback procedure prototype. */
165 capela 107 typedef lscp_status_t (*lscp_client_proc_t)
166     (
167 capela 952 struct _lscp_client_t *pClient,
168     lscp_event_t event,
169     const char *pchData,
170     int cchData,
171     void *pvData
172 capela 107 );
173    
174     //-------------------------------------------------------------------------
175 capela 977 // Client versioning teller function.
176 capela 107
177     const char * lscp_client_package (void);
178     const char * lscp_client_version (void);
179     const char * lscp_client_build (void);
180    
181     //-------------------------------------------------------------------------
182     // Client socket functions.
183    
184     lscp_client_t * lscp_client_create (const char *pszHost, int iPort, lscp_client_proc_t pfnCallback, void *pvData);
185     lscp_status_t lscp_client_join (lscp_client_t *pClient);
186     lscp_status_t lscp_client_destroy (lscp_client_t *pClient);
187    
188     lscp_status_t lscp_client_set_timeout (lscp_client_t *pClient, int iTimeout);
189     int lscp_client_get_timeout (lscp_client_t *pClient);
190 schoenebeck 3664 bool lscp_client_connection_lost (lscp_client_t *pClient);
191 capela 107
192     //-------------------------------------------------------------------------
193     // Client common protocol functions.
194    
195     lscp_status_t lscp_client_query (lscp_client_t *pClient, const char *pszQuery);
196     const char * lscp_client_get_result (lscp_client_t *pClient );
197     int lscp_client_get_errno (lscp_client_t *pClient );
198    
199     //-------------------------------------------------------------------------
200     // Client registration protocol functions.
201    
202 capela 144 lscp_status_t lscp_client_subscribe (lscp_client_t *pClient, lscp_event_t events);
203     lscp_status_t lscp_client_unsubscribe (lscp_client_t *pClient, lscp_event_t events);
204 capela 107
205 capela 213 lscp_event_t lscp_client_get_events (lscp_client_t *pClient);
206 capela 144
207 capela 107 //-------------------------------------------------------------------------
208     // Client command protocol functions.
209    
210     lscp_status_t lscp_load_instrument (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
211 capela 144 lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
212 capela 107 lscp_status_t lscp_load_engine (lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel);
213     int lscp_get_channels (lscp_client_t *pClient);
214 capela 125 int * lscp_list_channels (lscp_client_t *pClient);
215 capela 107 int lscp_add_channel (lscp_client_t *pClient);
216     lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel);
217    
218 capela 523 int lscp_get_available_engines (lscp_client_t *pClient);
219     const char ** lscp_list_available_engines (lscp_client_t *pClient);
220    
221 capela 107 lscp_engine_info_t * lscp_get_engine_info (lscp_client_t *pClient, const char *pszEngineName);
222     lscp_channel_info_t * lscp_get_channel_info (lscp_client_t *pClient, int iSamplerChannel);
223    
224     int lscp_get_channel_voice_count (lscp_client_t *pClient, int iSamplerChannel);
225     int lscp_get_channel_stream_count (lscp_client_t *pClient, int iSamplerChannel);
226 capela 167 int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel);
227 capela 107
228     lscp_buffer_fill_t * lscp_get_channel_buffer_fill (lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel);
229    
230     lscp_status_t lscp_set_channel_audio_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType);
231 capela 144 lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice);
232 capela 107 lscp_status_t lscp_set_channel_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn);
233    
234     lscp_status_t lscp_set_channel_midi_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType);
235 capela 144 lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice);
236 capela 107 lscp_status_t lscp_set_channel_midi_port (lscp_client_t *pClient, int iSamplerChannel, int iMidiPort);
237     lscp_status_t lscp_set_channel_midi_channel (lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel);
238 capela 975 lscp_status_t lscp_set_channel_midi_map (lscp_client_t *pClient, int iSamplerChannel, int iMidiMap);
239    
240 capela 107 lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume);
241    
242 capela 735 lscp_status_t lscp_set_channel_mute (lscp_client_t *pClient, int iSamplerChannel, int iMute);
243     lscp_status_t lscp_set_channel_solo (lscp_client_t *pClient, int iSamplerChannel, int iSolo);
244    
245 capela 107 lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel);
246    
247 capela 213 lscp_status_t lscp_reset_sampler (lscp_client_t *pClient);
248 capela 107
249 capela 564 lscp_server_info_t * lscp_get_server_info (lscp_client_t *pClient);
250    
251 capela 946 int lscp_get_total_voice_count (lscp_client_t *pClient);
252     int lscp_get_total_voice_count_max (lscp_client_t *pClient);
253    
254 schoenebeck 1802 float lscp_get_volume (lscp_client_t *pClient);
255 capela 1019 lscp_status_t lscp_set_volume (lscp_client_t *pClient, float fVolume);
256    
257 schoenebeck 1802 int lscp_get_voices (lscp_client_t *pClient);
258     lscp_status_t lscp_set_voices (lscp_client_t *pClient, int iMaxVoices);
259    
260     int lscp_get_streams (lscp_client_t *pClient);
261     lscp_status_t lscp_set_streams (lscp_client_t *pClient, int iMaxStreams);
262    
263 capela 946 //-------------------------------------------------------------------------
264 capela 1019 // Effect sends control functions.
265    
266     int lscp_create_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iMidiController, const char *pszFxName);
267     lscp_status_t lscp_destroy_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
268    
269     int lscp_get_fxsends (lscp_client_t *pClient, int iSamplerChannel);
270     int * lscp_list_fxsends (lscp_client_t *pClient, int iSamplerChannel);
271    
272     lscp_fxsend_info_t * lscp_get_fxsend_info (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
273    
274 schoenebeck 1665 lscp_status_t lscp_set_fxsend_name (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, const char *pszFxName);
275 capela 1019 lscp_status_t lscp_set_fxsend_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iAudioSrc, int iAudioDst);
276 capela 1031 lscp_status_t lscp_set_fxsend_midi_controller (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iMidiController);
277     lscp_status_t lscp_set_fxsend_level (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, float fLevel);
278 capela 1019
279     //-------------------------------------------------------------------------
280 capela 946 // MIDI instrument mapping control functions.
281    
282 capela 975 int lscp_add_midi_instrument_map (lscp_client_t *pClient, const char *pszMapName);
283     lscp_status_t lscp_remove_midi_instrument_map (lscp_client_t *pClient, int iMidiMap);
284    
285     int lscp_get_midi_instrument_maps (lscp_client_t *pClient);
286     int * lscp_list_midi_instrument_maps (lscp_client_t *pClient);
287    
288     const char * lscp_get_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap);
289     lscp_status_t lscp_set_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap, const char *pszMapName);
290    
291 capela 946 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);
292     lscp_status_t lscp_unmap_midi_instrument (lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
293    
294 capela 975 int lscp_get_midi_instruments (lscp_client_t *pClient, int iMidiMap);
295     lscp_midi_instrument_t *lscp_list_midi_instruments (lscp_client_t *pClient, int iMidiMap);
296 capela 946
297     lscp_midi_instrument_info_t *lscp_get_midi_instrument_info(lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
298    
299 capela 975 lscp_status_t lscp_clear_midi_instruments (lscp_client_t *pClient, int iMidiMap);
300 capela 946
301 schoenebeck 1365 //-------------------------------------------------------------------------
302     // Instrument editor functions.
303 capela 946
304 capela 1412 lscp_status_t lscp_edit_channel_instrument (lscp_client_t *pClient, int iSamplerChannel);
305 schoenebeck 1365
306 capela 107 #if defined(__cplusplus)
307     }
308     #endif
309    
310     #endif // __LSCP_CLIENT_H
311    
312     // end of client.h

  ViewVC Help
Powered by ViewVC