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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1031 - (hide annotations) (download) (as text)
Mon Jan 15 11:08:28 2007 UTC (17 years, 3 months ago) by capela
File MIME type: text/x-c++hdr
File size: 12048 byte(s)
* Added new client interface functions, for sampler
  channel effect sends control:
    lscp_set_fxsend_midi_controller();
    lscp_set_fxsend_level();

* Added new field member to lscp_fxsend_info_t (level).

1 capela 107 // client.h
2     //
3     /****************************************************************************
4     liblscp - LinuxSampler Control Protocol API
5 capela 1019 Copyright (C) 2004-2007, 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 capela 107
29     #if defined(__cplusplus)
30     extern "C" {
31     #endif
32    
33 capela 253 //-------------------------------------------------------------------------
34     // MIDI channel omni mode.
35 capela 107
36 capela 278 #define LSCP_MIDI_CHANNEL_ALL 16
37 capela 253
38    
39 capela 107 //-------------------------------------------------------------------------
40     // Client data structures.
41    
42 capela 564 /** Server info cache struct. */
43     typedef struct _lscp_server_info_t
44     {
45 capela 952 char * description;
46     char * version;
47 capela 977 char * protocol_version;
48 capela 564
49     } lscp_server_info_t;
50    
51    
52 capela 107 /** Engine info cache struct. */
53     typedef struct _lscp_engine_info_t
54     {
55 capela 952 char * description;
56     char * version;
57 capela 107
58     } lscp_engine_info_t;
59    
60    
61     /** Channel info cache struct. */
62     typedef struct _lscp_channel_info_t
63     {
64 capela 952 char * engine_name;
65     int audio_device;
66     int audio_channels;
67 capela 1020 int * audio_routing;
68 capela 952 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 capela 975 int midi_map;
76 capela 952 float volume;
77     int mute;
78     int solo;
79 capela 107
80     } lscp_channel_info_t;
81    
82    
83     /** Buffer fill cache struct. */
84     typedef struct _lscp_buffer_fill_t
85     {
86 capela 952 unsigned int stream_id;
87     unsigned long stream_usage;
88 capela 107
89     } lscp_buffer_fill_t;
90    
91    
92     /** Buffer fill stream usage types. */
93     typedef enum _lscp_usage_t
94     {
95 capela 952 LSCP_USAGE_BYTES = 0,
96     LSCP_USAGE_PERCENTAGE
97 capela 107
98     } lscp_usage_t;
99    
100    
101 capela 1019 /** Effect send info cache struct. */
102     typedef struct _lscp_fxsend_info_t
103     {
104 capela 1020 char * name;
105     int midi_controller;
106     int * audio_routing;
107 capela 1031 float level;
108 capela 1019
109     } lscp_fxsend_info_t;
110    
111    
112 capela 946 /** MIDI instrument parameter struct. */
113     typedef struct _lscp_midi_instrument_t
114     {
115 capela 1031 int map;
116     int bank;
117     int prog;
118 capela 946
119     } lscp_midi_instrument_t;
120    
121    
122     /** MIDI instrument load mode. */
123     typedef enum _lscp_load_mode_t
124     {
125 capela 952 LSCP_LOAD_DEFAULT = 0,
126     LSCP_LOAD_ON_DEMAND,
127     LSCP_LOAD_ON_DEMAND_HOLD,
128     LSCP_LOAD_PERSISTENT
129 capela 946
130     } lscp_load_mode_t;
131    
132    
133     /** MIDI instrument info cache struct. */
134     typedef struct _lscp_midi_instrument_info_t
135     {
136 capela 952 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 capela 946
144     } lscp_midi_instrument_info_t;
145    
146    
147 capela 975 /** 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 capela 107 //-------------------------------------------------------------------------
158     // Client socket main structure.
159    
160     /** Client opaque descriptor struct. */
161     typedef struct _lscp_client_t lscp_client_t;
162    
163 capela 144 /** Client event callback procedure prototype. */
164 capela 107 typedef lscp_status_t (*lscp_client_proc_t)
165     (
166 capela 952 struct _lscp_client_t *pClient,
167     lscp_event_t event,
168     const char *pchData,
169     int cchData,
170     void *pvData
171 capela 107 );
172    
173     //-------------------------------------------------------------------------
174 capela 977 // Client versioning teller function.
175 capela 107
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 capela 144 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 capela 107
203 capela 213 lscp_event_t lscp_client_get_events (lscp_client_t *pClient);
204 capela 144
205 capela 107 //-------------------------------------------------------------------------
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 capela 144 lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
210 capela 107 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 capela 125 int * lscp_list_channels (lscp_client_t *pClient);
213 capela 107 int lscp_add_channel (lscp_client_t *pClient);
214     lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel);
215    
216 capela 523 int lscp_get_available_engines (lscp_client_t *pClient);
217     const char ** lscp_list_available_engines (lscp_client_t *pClient);
218    
219 capela 107 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 capela 167 int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel);
225 capela 107
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 capela 144 lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice);
230 capela 107 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 capela 144 lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice);
234 capela 107 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 capela 975 lscp_status_t lscp_set_channel_midi_map (lscp_client_t *pClient, int iSamplerChannel, int iMidiMap);
237    
238 capela 107 lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume);
239    
240 capela 735 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 capela 107 lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel);
244    
245 capela 213 lscp_status_t lscp_reset_sampler (lscp_client_t *pClient);
246 capela 107
247 capela 564 lscp_server_info_t * lscp_get_server_info (lscp_client_t *pClient);
248    
249 capela 946 int lscp_get_total_voice_count (lscp_client_t *pClient);
250     int lscp_get_total_voice_count_max (lscp_client_t *pClient);
251    
252 capela 1019 float lscp_get_volume (lscp_client_t *pClient );
253     lscp_status_t lscp_set_volume (lscp_client_t *pClient, float fVolume);
254    
255 capela 946 //-------------------------------------------------------------------------
256 capela 1019 // 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 capela 1031 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 capela 1019
270     //-------------------------------------------------------------------------
271 capela 946 // MIDI instrument mapping control functions.
272    
273 capela 975 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 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);
283     lscp_status_t lscp_unmap_midi_instrument (lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
284    
285 capela 975 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 capela 946
288     lscp_midi_instrument_info_t *lscp_get_midi_instrument_info(lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
289    
290 capela 975 lscp_status_t lscp_clear_midi_instruments (lscp_client_t *pClient, int iMidiMap);
291 capela 946
292    
293 capela 107 #if defined(__cplusplus)
294     }
295     #endif
296    
297     #endif // __LSCP_CLIENT_H
298    
299     // end of client.h

  ViewVC Help
Powered by ViewVC