liblscp 0.9.5
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
44typedef struct _lscp_server_info_t
45{
47 char * version;
49
51
52
54typedef struct _lscp_engine_info_t
55{
57 char * version;
58
60
61
64{
77 float volume;
78 int mute;
79 int solo;
80
82
83
85typedef struct _lscp_buffer_fill_t
86{
87 unsigned int stream_id;
88 unsigned long stream_usage;
89
91
92
94typedef enum _lscp_usage_t
95{
98
100
101
104{
105 char * name;
108 float level;
109
111
112
115{
116 int map;
117 int bank;
118 int prog;
119
121
122
125{
130
132
133
136{
137 char * name;
143 float volume;
144
146
147
150{
154
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