/[svn]/liblscp/trunk/doc/reference.dox
ViewVC logotype

Diff of /liblscp/trunk/doc/reference.dox

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 132 by capela, Fri Jun 18 14:19:19 2004 UTC revision 1031 by capela, Mon Jan 15 11:08:28 2007 UTC
# Line 10  Hi all, Line 10  Hi all,
10  On the path to a GUI for linuxsampler, I've been taking some of my spare  On the path to a GUI for linuxsampler, I've been taking some of my spare
11  time by writing an early implementation for the LSCP (the LinuxSampler  time by writing an early implementation for the LSCP (the LinuxSampler
12  Control Protocol), as defined from the current available draft document  Control Protocol), as defined from the current available draft document
13  (http://www.linuxsampler.org/api/draft-linuxsampler-protocol-09.pdf).  (http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html).
14    
15  My implementation, while still rather crude, is taking the form of a  My implementation, while still rather crude, is taking the form of a
16  programming library for plain conventional C, codenamed liblscp.  programming library for plain conventional C, codenamed liblscp.
# Line 83  retrieved by:<pre> Line 83  retrieved by:<pre>
83  </pre>The client callback function must have the following prototype (@ref lscp_client_proc_t):  </pre>The client callback function must have the following prototype (@ref lscp_client_proc_t):
84    
85  - @ref lscp_status_t <i>client_callback</i> ( @ref lscp_client_t *client,  - @ref lscp_status_t <i>client_callback</i> ( @ref lscp_client_t *client,
86          const char *buf, int buflen, void *client_data );          @ref lscp_event_t event, const char *buf, int buflen, void *client_data );
87    
88  where buf will be a pointer to the event text which is buflen bytes in  where event is the specific event type notification, buf will be a pointer to
89  length; client_data is exactly the same value given on @ref lscp_client_create  the event text which is buflen bytes in length; client_data is exactly the same
90  call.  value given on @ref lscp_client_create call.
91    
92  This callback function is the place to handle all server notifications and  This callback function is the place to handle all server notifications and
93  will be only called if the client is currently subscribed. No response  will be only called if the client is currently subscribed. No response
94  from the client is expected while processing an event within  from the client is expected while processing an event within
95  client_callback.  client_callback.
96    
97  A client subscribes to receive notifications by calling:<pre>  A client subscribes to receive event notifications by calling:<pre>
98    
99      @ref lscp_client_subscribe (client);      @ref lscp_client_subscribe (client, events);
100    
101  </pre>after which it will start receiving events by means of the supplied  </pre>after which it will start receiving events by means of the supplied
102  client_callback function. To unsubscribe and stop this deliverance:<pre>  client_callback function. To unsubscribe and stop this deliverance:<pre>
103    
104      @ref lscp_client_unsubscribe (client);      @ref lscp_client_unsubscribe (client, events);
105    
106  </pre>Finally, when a client is about to quit, the proper terminator is in order:<pre>  </pre>Finally, when a client is about to quit, the proper terminator is in order:<pre>
107    
108      @ref lscp_client_destroy (client);      @ref lscp_client_destroy (client);
109    
110  </pre>As for the current protocol draft (04), the client interface already maps  </pre>As for the current protocol draft (11), the client interface already maps
111  the following functions defined in "@ref lscp_client.h", one for each corresponding  the following functions defined in <lscp/@ref:client.h>, one for each corresponding
112  LSCP comand:<pre>  LSCP comand, and regarding the sampler channel space:<pre>
113    
114      @ref lscp_get_available_engines (client);      @ref lscp_get_available_engines (client);
115        @ref lscp_list_available_engines (client);
116      @ref lscp_get_engine_info (client, engine_name);      @ref lscp_get_engine_info (client, engine_name);
117      @ref lscp_get_channels (client);      @ref lscp_get_channels (client);
118        @ref lscp_list_channels (client);
119      @ref lscp_add_channel (client);      @ref lscp_add_channel (client);
120      @ref lscp_load_engine (client, engine_name, channel);      @ref lscp_load_engine (client, engine_name, channel);
121      @ref lscp_set_channel_audio_channel (client, channel, audio_channel);      @ref lscp_set_channel_audio_device (client, channel, audio_device);
122      @ref lscp_set_channel_audio_type (client, channel, audio_type);      @ref lscp_set_channel_audio_type (client, channel, audio_type);
123      @ref lscp_set_channel_midi_channel (client, channel, midi_channel);      @ref lscp_set_channel_audio_channel (client, channel, audio_in, audio_out);
124      @ref lscp_set_channel_midi_port (client, channel, midi_port);      @ref lscp_set_channel_midi_device (client, channel, midi_device);
125      @ref lscp_set_channel_midi_type (client, channel, midi_type);      @ref lscp_set_channel_midi_type (client, channel, midi_type);
126        @ref lscp_set_channel_midi_port (client, channel, midi_port);
127        @ref lscp_set_channel_midi_channel (client, channel, midi_channel);
128        @ref lscp_set_channel_midi_map (client, channel, midi_map);
129        @ref lscp_set_channel_mute (client, channel, mute);
130        @ref lscp_set_channel_solo (client, channel, solo);
131      @ref lscp_set_channel_volume (client, channel, volume);      @ref lscp_set_channel_volume (client, channel, volume);
132      @ref lscp_load_instrument (client, file_name, instr_index, channel);      @ref lscp_load_instrument (client, file_name, instr_index, channel);
133        @ref lscp_load_instrument_non_modal (client, file_name, instr_index, channel);
134      @ref lscp_get_channel_info (client, channel);      @ref lscp_get_channel_info (client, channel);
135      @ref lscp_get_channel_voice_count (client, channel);      @ref lscp_get_channel_voice_count (client, channel);
136      @ref lscp_get_channel_stream_count (client, channel);      @ref lscp_get_channel_stream_count (client, channel);
137      @ref lscp_get_channel_buffer_fill (client, usage_type, channel);      @ref lscp_get_channel_buffer_fill (client, usage_type, channel);
138      @ref lscp_reset_channel (client, channel);      @ref lscp_reset_channel (client, channel);
139      @ref lscp_remove_channel (client, channel);      @ref lscp_remove_channel (client, channel);
140        @ref lscp_reset_sampler (client);
141        @ref lscp_get_server_info (client);
142        @ref lscp_get_server_info (client);
143        @ref lscp_get_total_voice_count (client);
144        @ref lscp_get_total_voice_count_max (client);
145        @ref lscp_get_volume (client);
146        @ref lscp_set_volume (client);
147    
148    </pre>Specific for sampler channel effect sends control:<pre>
149    
150        @ref lscp_create_fxsend (client, channel, midi_controller, name);
151        @ref lscp_destroy_fxsend (client, channel, fxsend);
152        @ref lscp_get_fxsends (client, channel);
153        @ref lscp_list_fxsends (client, channel);
154        @ref lscp_get_fxsend_info (client, channel, fxsend);
155        @ref lscp_set_fxsend_midi_controller (client, channel, fxsend, midi_controller);
156        @ref lscp_set_fxsend_audio_channel (client, channel, fxsend, audio_src, audio_dst);
157        @ref lscp_set_fxsend_level (client, channel, fxsend, level);
158    
159    </pre>Specific to MIDI instrument mapping interface:<pre>
160    
161        @ref lscp_add_midi_instrument_map (client, map_name);
162        @ref lscp_remove_midi_instrument_map (client, midi_map);
163        @ref lscp_get_midi_instrument_maps (client);
164        @ref lscp_list_midi_instrument_maps (client);
165        @ref lscp_get_midi_instrument_map_name (client, midi_map);
166        @ref lscp_set_midi_instrument_map_name (client, midi_map, map_name);
167        @ref lscp_map_midi_instrument (client, midi_instr, engine_name, file_name, instr_index, volume, load_mode, name);
168        @ref lscp_unmap_midi_instrument (client, midi_instr);
169        @ref lscp_get_midi_instruments (client, midi_map);
170        @ref lscp_list_midi_instruments (client, midi_map);
171        @ref lscp_get_midi_instrument_info (client, midi_instr);
172        @ref lscp_clear_midi_instruments (client, midi_map);
173    
174    </pre>For the audio output and MIDI input device configuration interface,
175    the following functions are respectively defined in <lscp/@ref:device.h>:<pre>
176    
177        @ref lscp_get_available_audio_drivers (client);
178        @ref lscp_list_available_audio_drivers (client);
179        @ref lscp_get_audio_driver_info (client, audio_driver);
180        @ref lscp_get_audio_driver_param_info (client, audio_driver, param_key, deplist);
181        @ref lscp_create_audio_device (client, audio_driver, params);
182        @ref lscp_destroy_audio_device (client, audio_device);
183        @ref lscp_get_audio_devices (client);
184        @ref lscp_list_audio_devices (client);
185        @ref lscp_get_audio_device_info (client, audio_device);
186        @ref lscp_set_audio_device_param (client, audio_device, param);
187        @ref lscp_get_audio_channel_info (client, audio_device, audio_channel);
188        @ref lscp_get_audio_channel_param_info (client, audio_device, audio_channel, param);
189        @ref lscp_set_audio_channel_param (client, audio_device, audio_channel, param);
190    
191        @ref lscp_get_available_midi_drivers (client);
192        @ref lscp_list_available_midi_drivers (client);
193        @ref lscp_get_midi_driver_info (client, midi_driver);
194        @ref lscp_get_midi_driver_param_info (client, midi_driver, param_key, deplist);
195        @ref lscp_create_midi_device (client, midi_driver, params);
196        @ref lscp_destroy_midi_device (client, midi_device);
197        @ref lscp_get_midi_devices (client);
198        @ref lscp_list_midi_devices (client);
199        @ref lscp_get_midi_device_info (client, midi_device);
200        @ref lscp_set_midi_device_param (client, midi_device, param);
201        @ref lscp_get_midi_port_info (client, midi_device, midi_port);
202        @ref lscp_get_midi_port_param_info (client, midi_device, midi_port, param);
203        @ref lscp_set_midi_port_param (client, midi_device, midi_port, param);
204    
205  </pre>All these functions are wrappers to @ref lscp_client_query, and some will handle  </pre>Most of these functions are wrappers to @ref lscp_client_query, and some will handle
206  and change the result string accordingly.  and change the result string accordingly.
207    
208    

Legend:
Removed from v.132  
changed lines
  Added in v.1031

  ViewVC Help
Powered by ViewVC