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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 735 - (show annotations) (download) (as text)
Tue Aug 16 09:48:42 2005 UTC (14 years, 7 months ago) by capela
File MIME type: text/x-c++hdr
File size: 7927 byte(s)
* Added support to sampler channel MUTE/SOLO states:
   lscp_set_channel_mute();
   lscp_set_channel_solo();
  with corresponding new lscp_channel_info_t fields.

1 // client.h
2 //
3 /****************************************************************************
4 liblscp - LinuxSampler Control Protocol API
5 Copyright (C) 2004-2005, 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 Lesser General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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
29 #if defined(__cplusplus)
30 extern "C" {
31 #endif
32
33 //-------------------------------------------------------------------------
34 // MIDI channel omni mode.
35
36 #define LSCP_MIDI_CHANNEL_ALL 16
37
38
39 //-------------------------------------------------------------------------
40 // Client data structures.
41
42 /** Server info cache struct. */
43 typedef struct _lscp_server_info_t
44 {
45 char * description;
46 char * version;
47
48 } lscp_server_info_t;
49
50
51 /** Engine info cache struct. */
52 typedef struct _lscp_engine_info_t
53 {
54 char * description;
55 char * version;
56
57 } lscp_engine_info_t;
58
59
60 /** Channel info cache struct. */
61 typedef struct _lscp_channel_info_t
62 {
63 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
78 } lscp_channel_info_t;
79
80
81 /** Buffer fill cache struct. */
82 typedef struct _lscp_buffer_fill_t
83 {
84 unsigned int stream_id;
85 unsigned long stream_usage;
86
87 } lscp_buffer_fill_t;
88
89
90 /** Buffer fill stream usage types. */
91 typedef enum _lscp_usage_t
92 {
93 LSCP_USAGE_BYTES = 0,
94 LSCP_USAGE_PERCENTAGE
95
96 } lscp_usage_t;
97
98
99 //-------------------------------------------------------------------------
100 // Client socket main structure.
101
102 /** Client opaque descriptor struct. */
103 typedef struct _lscp_client_t lscp_client_t;
104
105 /** Client event callback procedure prototype. */
106 typedef lscp_status_t (*lscp_client_proc_t)
107 (
108 struct _lscp_client_t *pClient,
109 lscp_event_t event,
110 const char *pchData,
111 int cchData,
112 void *pvData
113 );
114
115 //-------------------------------------------------------------------------
116 // Client versioning teller fuunction.
117
118 const char * lscp_client_package (void);
119 const char * lscp_client_version (void);
120 const char * lscp_client_build (void);
121
122 //-------------------------------------------------------------------------
123 // Client socket functions.
124
125 lscp_client_t * lscp_client_create (const char *pszHost, int iPort, lscp_client_proc_t pfnCallback, void *pvData);
126 lscp_status_t lscp_client_join (lscp_client_t *pClient);
127 lscp_status_t lscp_client_destroy (lscp_client_t *pClient);
128
129 lscp_status_t lscp_client_set_timeout (lscp_client_t *pClient, int iTimeout);
130 int lscp_client_get_timeout (lscp_client_t *pClient);
131
132 //-------------------------------------------------------------------------
133 // Client common protocol functions.
134
135 lscp_status_t lscp_client_query (lscp_client_t *pClient, const char *pszQuery);
136 const char * lscp_client_get_result (lscp_client_t *pClient );
137 int lscp_client_get_errno (lscp_client_t *pClient );
138
139 //-------------------------------------------------------------------------
140 // Client registration protocol functions.
141
142 lscp_status_t lscp_client_subscribe (lscp_client_t *pClient, lscp_event_t events);
143 lscp_status_t lscp_client_unsubscribe (lscp_client_t *pClient, lscp_event_t events);
144
145 lscp_event_t lscp_client_get_events (lscp_client_t *pClient);
146
147 //-------------------------------------------------------------------------
148 // Client command protocol functions.
149
150 lscp_status_t lscp_load_instrument (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
151 lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel);
152 lscp_status_t lscp_load_engine (lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel);
153 int lscp_get_channels (lscp_client_t *pClient);
154 int * lscp_list_channels (lscp_client_t *pClient);
155 int lscp_add_channel (lscp_client_t *pClient);
156 lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel);
157
158 int lscp_get_available_engines (lscp_client_t *pClient);
159 const char ** lscp_list_available_engines (lscp_client_t *pClient);
160
161 lscp_engine_info_t * lscp_get_engine_info (lscp_client_t *pClient, const char *pszEngineName);
162 lscp_channel_info_t * lscp_get_channel_info (lscp_client_t *pClient, int iSamplerChannel);
163
164 int lscp_get_channel_voice_count (lscp_client_t *pClient, int iSamplerChannel);
165 int lscp_get_channel_stream_count (lscp_client_t *pClient, int iSamplerChannel);
166 int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel);
167
168 lscp_buffer_fill_t * lscp_get_channel_buffer_fill (lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel);
169
170 lscp_status_t lscp_set_channel_audio_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType);
171 lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice);
172 lscp_status_t lscp_set_channel_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn);
173
174 lscp_status_t lscp_set_channel_midi_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType);
175 lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice);
176 lscp_status_t lscp_set_channel_midi_port (lscp_client_t *pClient, int iSamplerChannel, int iMidiPort);
177 lscp_status_t lscp_set_channel_midi_channel (lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel);
178 lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume);
179
180 lscp_status_t lscp_set_channel_mute (lscp_client_t *pClient, int iSamplerChannel, int iMute);
181 lscp_status_t lscp_set_channel_solo (lscp_client_t *pClient, int iSamplerChannel, int iSolo);
182
183 lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel);
184
185 lscp_status_t lscp_reset_sampler (lscp_client_t *pClient);
186
187 lscp_server_info_t * lscp_get_server_info (lscp_client_t *pClient);
188
189 #if defined(__cplusplus)
190 }
191 #endif
192
193 #endif // __LSCP_CLIENT_H
194
195 // end of client.h

  ViewVC Help
Powered by ViewVC