00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __LSCP_CLIENT_H
00024 #define __LSCP_CLIENT_H
00025
00026 #include "lscp/socket.h"
00027 #include "lscp/event.h"
00028
00029 #if defined(__cplusplus)
00030 extern "C" {
00031 #endif
00032
00033
00034
00035
00036 #define LSCP_MIDI_CHANNEL_ALL 16
00037
00038
00039
00040
00041
00043 typedef struct _lscp_server_info_t
00044 {
00045 char * description;
00046 char * version;
00047 char * protocol_version;
00048
00049 } lscp_server_info_t;
00050
00051
00053 typedef struct _lscp_engine_info_t
00054 {
00055 char * description;
00056 char * version;
00057
00058 } lscp_engine_info_t;
00059
00060
00062 typedef struct _lscp_channel_info_t
00063 {
00064 char * engine_name;
00065 int audio_device;
00066 int audio_channels;
00067 int * audio_routing;
00068 char * instrument_file;
00069 int instrument_nr;
00070 char * instrument_name;
00071 int instrument_status;
00072 int midi_device;
00073 int midi_port;
00074 int midi_channel;
00075 int midi_map;
00076 float volume;
00077 int mute;
00078 int solo;
00079
00080 } lscp_channel_info_t;
00081
00082
00084 typedef struct _lscp_buffer_fill_t
00085 {
00086 unsigned int stream_id;
00087 unsigned long stream_usage;
00088
00089 } lscp_buffer_fill_t;
00090
00091
00093 typedef enum _lscp_usage_t
00094 {
00095 LSCP_USAGE_BYTES = 0,
00096 LSCP_USAGE_PERCENTAGE
00097
00098 } lscp_usage_t;
00099
00100
00102 typedef struct _lscp_fxsend_info_t
00103 {
00104 char * name;
00105 int midi_controller;
00106 int * audio_routing;
00107 float level;
00108
00109 } lscp_fxsend_info_t;
00110
00111
00113 typedef struct _lscp_midi_instrument_t
00114 {
00115 int map;
00116 int bank;
00117 int prog;
00118
00119 } lscp_midi_instrument_t;
00120
00121
00123 typedef enum _lscp_load_mode_t
00124 {
00125 LSCP_LOAD_DEFAULT = 0,
00126 LSCP_LOAD_ON_DEMAND,
00127 LSCP_LOAD_ON_DEMAND_HOLD,
00128 LSCP_LOAD_PERSISTENT
00129
00130 } lscp_load_mode_t;
00131
00132
00134 typedef struct _lscp_midi_instrument_info_t
00135 {
00136 char * name;
00137 char * engine_name;
00138 char * instrument_file;
00139 int instrument_nr;
00140 char * instrument_name;
00141 lscp_load_mode_t load_mode;
00142 float volume;
00143
00144 } lscp_midi_instrument_info_t;
00145
00146
00148 typedef enum _lscp_midi_map_mode_t
00149 {
00150 LSCP_MIDI_MAP_NONE = -1,
00151 LSCP_MIDI_MAP_DEFAULT = -2,
00152 LSCP_MIDI_MAP_ALL = -3
00153
00154 } lscp_midi_map_mode_t;
00155
00156
00157
00158
00159
00161 typedef struct _lscp_client_t lscp_client_t;
00162
00164 typedef lscp_status_t (*lscp_client_proc_t)
00165 (
00166 struct _lscp_client_t *pClient,
00167 lscp_event_t event,
00168 const char *pchData,
00169 int cchData,
00170 void *pvData
00171 );
00172
00173
00174
00175
00176 const char * lscp_client_package (void);
00177 const char * lscp_client_version (void);
00178 const char * lscp_client_build (void);
00179
00180
00181
00182
00183 lscp_client_t * lscp_client_create (const char *pszHost, int iPort, lscp_client_proc_t pfnCallback, void *pvData);
00184 lscp_status_t lscp_client_join (lscp_client_t *pClient);
00185 lscp_status_t lscp_client_destroy (lscp_client_t *pClient);
00186
00187 lscp_status_t lscp_client_set_timeout (lscp_client_t *pClient, int iTimeout);
00188 int lscp_client_get_timeout (lscp_client_t *pClient);
00189
00190
00191
00192
00193 lscp_status_t lscp_client_query (lscp_client_t *pClient, const char *pszQuery);
00194 const char * lscp_client_get_result (lscp_client_t *pClient );
00195 int lscp_client_get_errno (lscp_client_t *pClient );
00196
00197
00198
00199
00200 lscp_status_t lscp_client_subscribe (lscp_client_t *pClient, lscp_event_t events);
00201 lscp_status_t lscp_client_unsubscribe (lscp_client_t *pClient, lscp_event_t events);
00202
00203 lscp_event_t lscp_client_get_events (lscp_client_t *pClient);
00204
00205
00206
00207
00208 lscp_status_t lscp_load_instrument (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
00209 lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
00210 lscp_status_t lscp_load_engine (lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel);
00211 int lscp_get_channels (lscp_client_t *pClient);
00212 int * lscp_list_channels (lscp_client_t *pClient);
00213 int lscp_add_channel (lscp_client_t *pClient);
00214 lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel);
00215
00216 int lscp_get_available_engines (lscp_client_t *pClient);
00217 const char ** lscp_list_available_engines (lscp_client_t *pClient);
00218
00219 lscp_engine_info_t * lscp_get_engine_info (lscp_client_t *pClient, const char *pszEngineName);
00220 lscp_channel_info_t * lscp_get_channel_info (lscp_client_t *pClient, int iSamplerChannel);
00221
00222 int lscp_get_channel_voice_count (lscp_client_t *pClient, int iSamplerChannel);
00223 int lscp_get_channel_stream_count (lscp_client_t *pClient, int iSamplerChannel);
00224 int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel);
00225
00226 lscp_buffer_fill_t * lscp_get_channel_buffer_fill (lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel);
00227
00228 lscp_status_t lscp_set_channel_audio_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType);
00229 lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice);
00230 lscp_status_t lscp_set_channel_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn);
00231
00232 lscp_status_t lscp_set_channel_midi_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType);
00233 lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice);
00234 lscp_status_t lscp_set_channel_midi_port (lscp_client_t *pClient, int iSamplerChannel, int iMidiPort);
00235 lscp_status_t lscp_set_channel_midi_channel (lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel);
00236 lscp_status_t lscp_set_channel_midi_map (lscp_client_t *pClient, int iSamplerChannel, int iMidiMap);
00237
00238 lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume);
00239
00240 lscp_status_t lscp_set_channel_mute (lscp_client_t *pClient, int iSamplerChannel, int iMute);
00241 lscp_status_t lscp_set_channel_solo (lscp_client_t *pClient, int iSamplerChannel, int iSolo);
00242
00243 lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel);
00244
00245 lscp_status_t lscp_reset_sampler (lscp_client_t *pClient);
00246
00247 lscp_server_info_t * lscp_get_server_info (lscp_client_t *pClient);
00248
00249 int lscp_get_total_voice_count (lscp_client_t *pClient);
00250 int lscp_get_total_voice_count_max (lscp_client_t *pClient);
00251
00252 float lscp_get_volume (lscp_client_t *pClient );
00253 lscp_status_t lscp_set_volume (lscp_client_t *pClient, float fVolume);
00254
00255
00256
00257
00258 int lscp_create_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iMidiController, const char *pszFxName);
00259 lscp_status_t lscp_destroy_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
00260
00261 int lscp_get_fxsends (lscp_client_t *pClient, int iSamplerChannel);
00262 int * lscp_list_fxsends (lscp_client_t *pClient, int iSamplerChannel);
00263
00264 lscp_fxsend_info_t * lscp_get_fxsend_info (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
00265
00266 lscp_status_t lscp_set_fxsend_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iAudioSrc, int iAudioDst);
00267 lscp_status_t lscp_set_fxsend_midi_controller (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iMidiController);
00268 lscp_status_t lscp_set_fxsend_level (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, float fLevel);
00269
00270
00271
00272
00273 int lscp_add_midi_instrument_map (lscp_client_t *pClient, const char *pszMapName);
00274 lscp_status_t lscp_remove_midi_instrument_map (lscp_client_t *pClient, int iMidiMap);
00275
00276 int lscp_get_midi_instrument_maps (lscp_client_t *pClient);
00277 int * lscp_list_midi_instrument_maps (lscp_client_t *pClient);
00278
00279 const char * lscp_get_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap);
00280 lscp_status_t lscp_set_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap, const char *pszMapName);
00281
00282 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);
00283 lscp_status_t lscp_unmap_midi_instrument (lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
00284
00285 int lscp_get_midi_instruments (lscp_client_t *pClient, int iMidiMap);
00286 lscp_midi_instrument_t *lscp_list_midi_instruments (lscp_client_t *pClient, int iMidiMap);
00287
00288 lscp_midi_instrument_info_t *lscp_get_midi_instrument_info(lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr);
00289
00290 lscp_status_t lscp_clear_midi_instruments (lscp_client_t *pClient, int iMidiMap);
00291
00292
00293
00294
00295 lscp_status_t lscp_edit_channel_instrument (lscp_client_t *pClient, int iSamplerChannel);
00296
00297 #if defined(__cplusplus)
00298 }
00299 #endif
00300
00301 #endif // __LSCP_CLIENT_H
00302
00303