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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 952 - (hide annotations) (download) (as text)
Tue Nov 28 22:46:32 2006 UTC (17 years, 4 months ago) by capela
File MIME type: text/x-c++hdr
File size: 9548 byte(s)
Code cleanup; preparations for 0.4.1 release (hopefully).

1 capela 107 // client.h
2     //
3     /****************************************************************************
4     liblscp - LinuxSampler Control Protocol API
5 capela 869 Copyright (C) 2004-2006, 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 564
48     } lscp_server_info_t;
49    
50    
51 capela 107 /** Engine info cache struct. */
52     typedef struct _lscp_engine_info_t
53     {
54 capela 952 char * description;
55     char * version;
56 capela 107
57     } lscp_engine_info_t;
58    
59    
60     /** Channel info cache struct. */
61     typedef struct _lscp_channel_info_t
62     {
63 capela 952 char * engine_name;
64     int audio_device;
65     int audio_channels;
66     char ** audio_routing;
67     char * instrument_file;
68     int instrument_nr;
69     char * instrument_name;
70     int instrument_status;
71     int midi_device;
72     int midi_port;
73     int midi_channel;
74     float volume;
75     int mute;
76     int solo;
77 capela 107
78     } lscp_channel_info_t;
79    
80    
81     /** Buffer fill cache struct. */
82     typedef struct _lscp_buffer_fill_t
83     {
84 capela 952 unsigned int stream_id;
85     unsigned long stream_usage;
86 capela 107
87     } lscp_buffer_fill_t;
88    
89    
90     /** Buffer fill stream usage types. */
91     typedef enum _lscp_usage_t
92     {
93 capela 952 LSCP_USAGE_BYTES = 0,
94     LSCP_USAGE_PERCENTAGE
95 capela 107
96     } lscp_usage_t;
97    
98    
99 capela 946 /** MIDI instrument parameter struct. */
100     typedef struct _lscp_midi_instrument_t
101     {
102 capela 952 int bank_msb;
103     int bank_lsb;
104     int program;
105 capela 946
106     } lscp_midi_instrument_t;
107    
108    
109     /** MIDI instrument load mode. */
110     typedef enum _lscp_load_mode_t
111     {
112 capela 952 LSCP_LOAD_DEFAULT = 0,
113     LSCP_LOAD_ON_DEMAND,
114     LSCP_LOAD_ON_DEMAND_HOLD,
115     LSCP_LOAD_PERSISTENT
116 capela 946
117     } lscp_load_mode_t;
118    
119    
120     /** MIDI instrument info cache struct. */
121     typedef struct _lscp_midi_instrument_info_t
122     {
123 capela 952 char * name;
124     char * engine_name;
125     char * instrument_file;
126     int instrument_nr;
127     char * instrument_name;
128     lscp_load_mode_t load_mode;
129     float volume;
130 capela 946
131     } lscp_midi_instrument_info_t;
132    
133    
134 capela 107 //-------------------------------------------------------------------------
135     // Client socket main structure.
136    
137     /** Client opaque descriptor struct. */
138     typedef struct _lscp_client_t lscp_client_t;
139    
140 capela 144 /** Client event callback procedure prototype. */
141 capela 107 typedef lscp_status_t (*lscp_client_proc_t)
142     (
143 capela 952 struct _lscp_client_t *pClient,
144     lscp_event_t event,
145     const char *pchData,
146     int cchData,
147     void *pvData
148 capela 107 );
149    
150     //-------------------------------------------------------------------------
151     // Client versioning teller fuunction.
152    
153     const char * lscp_client_package (void);
154     const char * lscp_client_version (void);
155     const char * lscp_client_build (void);
156    
157     //-------------------------------------------------------------------------
158     // Client socket functions.
159    
160     lscp_client_t * lscp_client_create (const char *pszHost, int iPort, lscp_client_proc_t pfnCallback, void *pvData);
161     lscp_status_t lscp_client_join (lscp_client_t *pClient);
162     lscp_status_t lscp_client_destroy (lscp_client_t *pClient);
163    
164     lscp_status_t lscp_client_set_timeout (lscp_client_t *pClient, int iTimeout);
165     int lscp_client_get_timeout (lscp_client_t *pClient);
166    
167     //-------------------------------------------------------------------------
168     // Client common protocol functions.
169    
170     lscp_status_t lscp_client_query (lscp_client_t *pClient, const char *pszQuery);
171     const char * lscp_client_get_result (lscp_client_t *pClient );
172     int lscp_client_get_errno (lscp_client_t *pClient );
173    
174     //-------------------------------------------------------------------------
175     // Client registration protocol functions.
176    
177 capela 144 lscp_status_t lscp_client_subscribe (lscp_client_t *pClient, lscp_event_t events);
178     lscp_status_t lscp_client_unsubscribe (lscp_client_t *pClient, lscp_event_t events);
179 capela 107
180 capela 213 lscp_event_t lscp_client_get_events (lscp_client_t *pClient);
181 capela 144
182 capela 107 //-------------------------------------------------------------------------
183     // Client command protocol functions.
184    
185     lscp_status_t lscp_load_instrument (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
186 capela 144 lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
187 capela 107 lscp_status_t lscp_load_engine (lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel);
188     int lscp_get_channels (lscp_client_t *pClient);
189 capela 125 int * lscp_list_channels (lscp_client_t *pClient);
190 capela 107 int lscp_add_channel (lscp_client_t *pClient);
191     lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel);
192    
193 capela 523 int lscp_get_available_engines (lscp_client_t *pClient);
194     const char ** lscp_list_available_engines (lscp_client_t *pClient);
195    
196 capela 107 lscp_engine_info_t * lscp_get_engine_info (lscp_client_t *pClient, const char *pszEngineName);
197     lscp_channel_info_t * lscp_get_channel_info (lscp_client_t *pClient, int iSamplerChannel);
198    
199     int lscp_get_channel_voice_count (lscp_client_t *pClient, int iSamplerChannel);
200     int lscp_get_channel_stream_count (lscp_client_t *pClient, int iSamplerChannel);
201 capela 167 int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel);
202 capela 107
203     lscp_buffer_fill_t * lscp_get_channel_buffer_fill (lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel);
204    
205     lscp_status_t lscp_set_channel_audio_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType);
206 capela 144 lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice);
207 capela 107 lscp_status_t lscp_set_channel_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn);
208    
209     lscp_status_t lscp_set_channel_midi_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType);
210 capela 144 lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice);
211 capela 107 lscp_status_t lscp_set_channel_midi_port (lscp_client_t *pClient, int iSamplerChannel, int iMidiPort);
212     lscp_status_t lscp_set_channel_midi_channel (lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel);
213     lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume);
214    
215 capela 735 lscp_status_t lscp_set_channel_mute (lscp_client_t *pClient, int iSamplerChannel, int iMute);
216     lscp_status_t lscp_set_channel_solo (lscp_client_t *pClient, int iSamplerChannel, int iSolo);
217    
218 capela 107 lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel);
219    
220 capela 213 lscp_status_t lscp_reset_sampler (lscp_client_t *pClient);
221 capela 107
222 capela 564 lscp_server_info_t * lscp_get_server_info (lscp_client_t *pClient);
223    
224 capela 946 int lscp_get_total_voice_count (lscp_client_t *pClient);
225     int lscp_get_total_voice_count_max (lscp_client_t *pClient);
226    
227     //-------------------------------------------------------------------------
228     // MIDI instrument mapping control functions.
229    
230     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);
231     lscp_status_t lscp_unmap_midi_instrument (lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
232    
233     int lscp_get_midi_instruments (lscp_client_t *pClient);
234 capela 948 lscp_midi_instrument_t *lscp_list_midi_instruments (lscp_client_t *pClient);
235 capela 946
236     lscp_midi_instrument_info_t *lscp_get_midi_instrument_info(lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
237    
238     lscp_status_t lscp_clear_midi_instruments (lscp_client_t *pClient);
239    
240    
241 capela 107 #if defined(__cplusplus)
242     }
243     #endif
244    
245     #endif // __LSCP_CLIENT_H
246    
247     // end of client.h

  ViewVC Help
Powered by ViewVC