liblscp 0.9.12
client.h
Go to the documentation of this file.
1// client.h
2//
3/****************************************************************************
4 liblscp - LinuxSampler Control Protocol API
5 Copyright (C) 2004-2021, 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#include <stdbool.h>
29
30#if defined(__cplusplus)
31extern "C" {
32#endif
33
34//-------------------------------------------------------------------------
35// MIDI channel omni mode.
36
37#define LSCP_MIDI_CHANNEL_ALL 16
38
39
40//-------------------------------------------------------------------------
41// Client data structures.
42
51
52
60
61
82
83
85typedef struct _lscp_buffer_fill_t
86{
87 unsigned int stream_id;
88 unsigned long stream_usage;
89
91
92
100
101
111
112
121
122
132
133
146
147
156
157
158//-------------------------------------------------------------------------
159// Client socket main structure.
160
162typedef struct _lscp_client_t lscp_client_t;
163
166(
167 struct _lscp_client_t *pClient,
168 lscp_event_t event,
169 const char *pchData,
170 int cchData,
171 void *pvData
172);
173
174//-------------------------------------------------------------------------
175// Client versioning teller function.
176
177const char * lscp_client_package (void);
178const char * lscp_client_version (void);
179const char * lscp_client_build (void);
180
181//-------------------------------------------------------------------------
182// Client socket functions.
183
184lscp_client_t * lscp_client_create (const char *pszHost, int iPort, lscp_client_proc_t pfnCallback, void *pvData);
187
191
192//-------------------------------------------------------------------------
193// Client common protocol functions.
194
195lscp_status_t lscp_client_query (lscp_client_t *pClient, const char *pszQuery);
196const char * lscp_client_get_result (lscp_client_t *pClient );
198
199//-------------------------------------------------------------------------
200// Client registration protocol functions.
201
204
206
207//-------------------------------------------------------------------------
208// Client command protocol functions.
209
210lscp_status_t lscp_load_instrument (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
211lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
212lscp_status_t lscp_load_engine (lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel);
213int lscp_get_channels (lscp_client_t *pClient);
214int * lscp_list_channels (lscp_client_t *pClient);
215int lscp_add_channel (lscp_client_t *pClient);
216lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel);
217
219const char ** lscp_list_available_engines (lscp_client_t *pClient);
220
221lscp_engine_info_t * lscp_get_engine_info (lscp_client_t *pClient, const char *pszEngineName);
222lscp_channel_info_t * lscp_get_channel_info (lscp_client_t *pClient, int iSamplerChannel);
223
224int lscp_get_channel_voice_count (lscp_client_t *pClient, int iSamplerChannel);
225int lscp_get_channel_stream_count (lscp_client_t *pClient, int iSamplerChannel);
226int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel);
227
228lscp_buffer_fill_t * lscp_get_channel_buffer_fill (lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel);
229
230lscp_status_t lscp_set_channel_audio_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType);
231lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice);
232lscp_status_t lscp_set_channel_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn);
233
234lscp_status_t lscp_set_channel_midi_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType);
235lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice);
236lscp_status_t lscp_set_channel_midi_port (lscp_client_t *pClient, int iSamplerChannel, int iMidiPort);
237lscp_status_t lscp_set_channel_midi_channel (lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel);
238lscp_status_t lscp_set_channel_midi_map (lscp_client_t *pClient, int iSamplerChannel, int iMidiMap);
239
240lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume);
241
242lscp_status_t lscp_set_channel_mute (lscp_client_t *pClient, int iSamplerChannel, int iMute);
243lscp_status_t lscp_set_channel_solo (lscp_client_t *pClient, int iSamplerChannel, int iSolo);
244
245lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel);
246
248
250
253
254float lscp_get_volume (lscp_client_t *pClient);
255lscp_status_t lscp_set_volume (lscp_client_t *pClient, float fVolume);
256
257int lscp_get_voices (lscp_client_t *pClient);
258lscp_status_t lscp_set_voices (lscp_client_t *pClient, int iMaxVoices);
259
260int lscp_get_streams (lscp_client_t *pClient);
261lscp_status_t lscp_set_streams (lscp_client_t *pClient, int iMaxStreams);
262
263//-------------------------------------------------------------------------
264// Effect sends control functions.
265
266int lscp_create_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iMidiController, const char *pszFxName);
267lscp_status_t lscp_destroy_fxsend (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
268
269int lscp_get_fxsends (lscp_client_t *pClient, int iSamplerChannel);
270int * lscp_list_fxsends (lscp_client_t *pClient, int iSamplerChannel);
271
272lscp_fxsend_info_t * lscp_get_fxsend_info (lscp_client_t *pClient, int iSamplerChannel, int iFxSend);
273
274lscp_status_t lscp_set_fxsend_name (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, const char *pszFxName);
275lscp_status_t lscp_set_fxsend_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iAudioSrc, int iAudioDst);
276lscp_status_t lscp_set_fxsend_midi_controller (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iMidiController);
277lscp_status_t lscp_set_fxsend_level (lscp_client_t *pClient, int iSamplerChannel, int iFxSend, float fLevel);
278
279//-------------------------------------------------------------------------
280// MIDI instrument mapping control functions.
281
282int lscp_add_midi_instrument_map (lscp_client_t *pClient, const char *pszMapName);
284
287
288const char * lscp_get_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap);
289lscp_status_t lscp_set_midi_instrument_map_name (lscp_client_t *pClient, int iMidiMap, const char *pszMapName);
290
291lscp_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);
293
294int lscp_get_midi_instruments (lscp_client_t *pClient, int iMidiMap);
296
298
300
301//-------------------------------------------------------------------------
302// Instrument editor functions.
303
304lscp_status_t lscp_edit_channel_instrument (lscp_client_t *pClient, int iSamplerChannel);
305
306#if defined(__cplusplus)
307}
308#endif
309
310#endif // __LSCP_CLIENT_H
311
312// end of client.h
lscp_status_t lscp_client_subscribe(lscp_client_t *pClient, lscp_event_t events)
Definition client.c:767
lscp_status_t lscp_set_channel_midi_device(lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice)
Definition client.c:1708
lscp_buffer_fill_t * lscp_get_channel_buffer_fill(lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel)
Definition client.c:1537
int * lscp_list_midi_instrument_maps(lscp_client_t *pClient)
Definition client.c:2662
struct _lscp_fxsend_info_t lscp_fxsend_info_t
lscp_status_t lscp_client_query(lscp_client_t *pClient, const char *pszQuery)
Definition client.c:682
lscp_client_t * lscp_client_create(const char *pszHost, int iPort, lscp_client_proc_t pfnCallback, void *pvData)
Definition client.c:304
enum _lscp_usage_t lscp_usage_t
const char * lscp_client_version(void)
Definition client.c:281
lscp_midi_instrument_t * lscp_list_midi_instruments(lscp_client_t *pClient, int iMidiMap)
Definition client.c:2916
const char * lscp_client_build(void)
Definition client.c:284
lscp_status_t lscp_client_join(lscp_client_t *pClient)
Definition client.c:518
lscp_server_info_t * lscp_get_server_info(lscp_client_t *pClient)
Definition client.c:1937
_lscp_midi_map_mode_t
Definition client.h:150
@ LSCP_MIDI_MAP_ALL
Definition client.h:153
@ LSCP_MIDI_MAP_NONE
Definition client.h:151
@ LSCP_MIDI_MAP_DEFAULT
Definition client.h:152
lscp_status_t lscp_load_instrument_non_modal(lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel)
Definition client.c:985
lscp_status_t lscp_remove_channel(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:1123
struct _lscp_engine_info_t lscp_engine_info_t
float lscp_get_volume(lscp_client_t *pClient)
Definition client.c:2053
struct _lscp_midi_instrument_info_t lscp_midi_instrument_info_t
_lscp_usage_t
Definition client.h:95
@ LSCP_USAGE_PERCENTAGE
Definition client.h:97
@ LSCP_USAGE_BYTES
Definition client.h:96
int lscp_get_channel_stream_usage(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:1476
lscp_status_t lscp_load_instrument(lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel)
Definition client.c:960
lscp_status_t lscp_set_channel_mute(lscp_client_t *pClient, int iSamplerChannel, int iMute)
Definition client.c:1852
lscp_event_t lscp_client_get_events(lscp_client_t *pClient)
Definition client.c:937
int lscp_add_midi_instrument_map(lscp_client_t *pClient, const char *pszMapName)
Definition client.c:2574
lscp_fxsend_info_t * lscp_get_fxsend_info(lscp_client_t *pClient, int iSamplerChannel, int iFxSend)
Definition client.c:2387
enum _lscp_midi_map_mode_t lscp_midi_map_mode_t
int lscp_get_voices(lscp_client_t *pClient)
Definition client.c:2119
lscp_channel_info_t * lscp_get_channel_info(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:1267
lscp_status_t lscp_reset_sampler(lscp_client_t *pClient)
Definition client.c:1921
lscp_status_t lscp_set_channel_midi_type(lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType)
Definition client.c:1684
int lscp_get_channels(lscp_client_t *pClient)
Definition client.c:1031
int lscp_get_total_voice_count_max(lscp_client_t *pClient)
Definition client.c:2024
lscp_status_t lscp_set_streams(lscp_client_t *pClient, int iMaxStreams)
Definition client.c:2221
lscp_status_t lscp_set_fxsend_audio_channel(lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iAudioSrc, int iAudioDst)
Definition client.c:2494
int lscp_get_midi_instrument_maps(lscp_client_t *pClient)
Definition client.c:2633
lscp_status_t lscp_client_set_timeout(lscp_client_t *pClient, int iTimeout)
Definition client.c:624
lscp_status_t lscp_set_channel_midi_map(lscp_client_t *pClient, int iSamplerChannel, int iMidiMap)
Definition client.c:1787
lscp_status_t lscp_set_fxsend_midi_controller(lscp_client_t *pClient, int iSamplerChannel, int iFxSend, int iMidiController)
Definition client.c:2520
lscp_status_t lscp_edit_channel_instrument(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:3093
struct _lscp_client_t lscp_client_t
Definition client.h:162
int lscp_get_total_voice_count(lscp_client_t *pClient)
Definition client.c:1995
int lscp_get_streams(lscp_client_t *pClient)
Definition client.c:2183
int lscp_add_channel(lscp_client_t *pClient)
Definition client.c:1094
int lscp_client_get_errno(lscp_client_t *pClient)
Definition client.c:727
const char ** lscp_list_available_engines(lscp_client_t *pClient)
Definition client.c:1173
bool lscp_client_connection_lost(lscp_client_t *pClient)
Definition client.c:658
lscp_status_t lscp_set_midi_instrument_map_name(lscp_client_t *pClient, int iMidiMap, const char *pszMapName)
Definition client.c:2749
int lscp_get_midi_instruments(lscp_client_t *pClient, int iMidiMap)
Definition client.c:2876
int lscp_client_get_timeout(lscp_client_t *pClient)
Definition client.c:643
struct _lscp_buffer_fill_t lscp_buffer_fill_t
lscp_status_t lscp_clear_midi_instruments(lscp_client_t *pClient, int iMidiMap)
Definition client.c:3066
int lscp_get_channel_voice_count(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:1410
lscp_status_t lscp_set_channel_volume(lscp_client_t *pClient, int iSamplerChannel, float fVolume)
Definition client.c:1822
enum _lscp_load_mode_t lscp_load_mode_t
int * lscp_list_fxsends(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:2348
lscp_status_t lscp_set_volume(lscp_client_t *pClient, float fVolume)
Definition client.c:2089
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)
Definition client.c:2788
const char * lscp_client_get_result(lscp_client_t *pClient)
Definition client.c:710
int lscp_get_channel_stream_count(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:1443
lscp_status_t lscp_set_channel_midi_channel(lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel)
Definition client.c:1757
lscp_status_t lscp_set_channel_audio_device(lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice)
Definition client.c:1635
lscp_midi_instrument_info_t * lscp_get_midi_instrument_info(lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr)
Definition client.c:2962
lscp_status_t lscp_set_channel_solo(lscp_client_t *pClient, int iSamplerChannel, int iSolo)
Definition client.c:1878
struct _lscp_channel_info_t lscp_channel_info_t
lscp_status_t lscp_set_channel_audio_type(lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType)
Definition client.c:1611
const char * lscp_client_package(void)
Definition client.c:278
const char * lscp_get_midi_instrument_map_name(lscp_client_t *pClient, int iMidiMap)
Definition client.c:2696
lscp_status_t lscp_load_engine(lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel)
Definition client.c:1009
lscp_status_t lscp_destroy_fxsend(lscp_client_t *pClient, int iSamplerChannel, int iFxSend)
Definition client.c:2288
_lscp_load_mode_t
Definition client.h:125
@ LSCP_LOAD_ON_DEMAND_HOLD
Definition client.h:128
@ LSCP_LOAD_DEFAULT
Definition client.h:126
@ LSCP_LOAD_ON_DEMAND
Definition client.h:127
@ LSCP_LOAD_PERSISTENT
Definition client.h:129
lscp_status_t lscp_set_channel_midi_port(lscp_client_t *pClient, int iSamplerChannel, int iMidiPort)
Definition client.c:1732
lscp_status_t lscp_reset_channel(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:1901
lscp_status_t lscp_client_unsubscribe(lscp_client_t *pClient, lscp_event_t events)
Definition client.c:863
lscp_status_t lscp_set_fxsend_name(lscp_client_t *pClient, int iSamplerChannel, int iFxSend, const char *pszFxName)
Definition client.c:2467
lscp_status_t lscp_set_channel_audio_channel(lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn)
Definition client.c:1660
struct _lscp_midi_instrument_t lscp_midi_instrument_t
int lscp_get_fxsends(lscp_client_t *pClient, int iSamplerChannel)
Definition client.c:2313
int lscp_get_available_engines(lscp_client_t *pClient)
Definition client.c:1144
lscp_status_t lscp_unmap_midi_instrument(lscp_client_t *pClient, lscp_midi_instrument_t *pMidiInstr)
Definition client.c:2847
lscp_status_t lscp_set_voices(lscp_client_t *pClient, int iMaxVoices)
Definition client.c:2157
lscp_status_t lscp_client_destroy(lscp_client_t *pClient)
Definition client.c:541
struct _lscp_server_info_t lscp_server_info_t
lscp_status_t lscp_set_fxsend_level(lscp_client_t *pClient, int iSamplerChannel, int iFxSend, float fLevel)
Definition client.c:2546
lscp_engine_info_t * lscp_get_engine_info(lscp_client_t *pClient, const char *pszEngineName)
Definition client.c:1208
lscp_status_t lscp_remove_midi_instrument_map(lscp_client_t *pClient, int iMidiMap)
Definition client.c:2611
int lscp_create_fxsend(lscp_client_t *pClient, int iSamplerChannel, int iMidiController, const char *pszFxName)
Definition client.c:2246
int * lscp_list_channels(lscp_client_t *pClient)
Definition client.c:1060
lscp_status_t(* lscp_client_proc_t)(struct _lscp_client_t *pClient, lscp_event_t event, const char *pchData, int cchData, void *pvData)
Definition client.h:166
enum _lscp_event_t lscp_event_t
Definition client.h:86
unsigned int stream_id
Definition client.h:87
unsigned long stream_usage
Definition client.h:88
Definition client.h:64
int midi_map
Definition client.h:76
char * instrument_file
Definition client.h:69
int midi_device
Definition client.h:73
int solo
Definition client.h:79
int * audio_routing
Definition client.h:68
int instrument_nr
Definition client.h:70
int midi_channel
Definition client.h:75
float volume
Definition client.h:77
int midi_port
Definition client.h:74
int audio_device
Definition client.h:66
int instrument_status
Definition client.h:72
char * engine_name
Definition client.h:65
int audio_channels
Definition client.h:67
int mute
Definition client.h:78
char * instrument_name
Definition client.h:71
Definition client.h:55
char * description
Definition client.h:56
char * version
Definition client.h:57
Definition client.h:104
float level
Definition client.h:108
int midi_controller
Definition client.h:106
int * audio_routing
Definition client.h:107
char * name
Definition client.h:105
Definition client.h:136
char * name
Definition client.h:137
char * instrument_name
Definition client.h:141
char * instrument_file
Definition client.h:139
float volume
Definition client.h:143
char * engine_name
Definition client.h:138
int instrument_nr
Definition client.h:140
lscp_load_mode_t load_mode
Definition client.h:142
Definition client.h:115
int map
Definition client.h:116
int bank
Definition client.h:117
int prog
Definition client.h:118
Definition client.h:45
char * description
Definition client.h:46
char * version
Definition client.h:47
char * protocol_version
Definition client.h:48
enum _lscp_status_t lscp_status_t