--- liblscp/trunk/doc/reference.dox 2004/06/14 21:04:04 125 +++ liblscp/trunk/doc/reference.dox 2006/12/17 00:59:40 975 @@ -10,7 +10,7 @@ On the path to a GUI for linuxsampler, I've been taking some of my spare time by writing an early implementation for the LSCP (the LinuxSampler Control Protocol), as defined from the current available draft document -(http://www.linuxsampler.org/api/draft-linuxsampler-protocol-08.pdf). +(http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html). My implementation, while still rather crude, is taking the form of a programming library for plain conventional C, codenamed liblscp. @@ -83,54 +83,113 @@ The client callback function must have the following prototype (@ref lscp_client_proc_t): - @ref lscp_status_t client_callback ( @ref lscp_client_t *client, - const char *buf, int buflen, void *client_data ); + @ref lscp_event_t event, const char *buf, int buflen, void *client_data ); -where buf will be a pointer to the event text which is buflen bytes in -length; client_data is exactly the same value given on @ref lscp_client_create -call. +where event is the specific event type notification, buf will be a pointer to +the event text which is buflen bytes in length; client_data is exactly the same +value given on @ref lscp_client_create call. This callback function is the place to handle all server notifications and will be only called if the client is currently subscribed. No response from the client is expected while processing an event within client_callback. -A client subscribes to receive notifications by calling:
+A client subscribes to receive event notifications by calling:
 
-    @ref lscp_client_subscribe (client);
+    @ref lscp_client_subscribe (client, events);
 
 
after which it will start receiving events by means of the supplied client_callback function. To unsubscribe and stop this deliverance:
 
-    @ref lscp_client_unsubscribe (client);
+    @ref lscp_client_unsubscribe (client, events);
 
 
Finally, when a client is about to quit, the proper terminator is in order:
 
     @ref lscp_client_destroy (client);
 
-
As for the current protocol draft (04), the client interface already maps -the following functions defined in "@ref lscp_client.h", one for each corresponding -LSCP comand:
+
As for the current protocol draft (11), the client interface already maps +the following functions defined in , one for each corresponding +LSCP comand, and regarding the sampler channel space:
 
     @ref lscp_get_available_engines (client);
+    @ref lscp_list_available_engines (client);
     @ref lscp_get_engine_info (client, engine_name);
     @ref lscp_get_channels (client);
+    @ref lscp_list_channels (client);
     @ref lscp_add_channel (client);
     @ref lscp_load_engine (client, engine_name, channel);
-    @ref lscp_set_channel_audio_channel (client, channel, audio_channel);
+    @ref lscp_set_channel_audio_device (client, channel, audio_device);
     @ref lscp_set_channel_audio_type (client, channel, audio_type);
-    @ref lscp_set_channel_midi_channel (client, channel, midi_channel);
-    @ref lscp_set_channel_midi_port (client, channel, midi_port);
+    @ref lscp_set_channel_audio_channel (client, channel, audio_in, audio_out);
+    @ref lscp_set_channel_midi_device (client, channel, midi_device);
     @ref lscp_set_channel_midi_type (client, channel, midi_type);
+    @ref lscp_set_channel_midi_port (client, channel, midi_port);
+    @ref lscp_set_channel_midi_channel (client, channel, midi_channel);
+    @ref lscp_set_channel_midi_map (client, channel, midi_map);
+    @ref lscp_set_channel_mute (client, channel, mute);
+    @ref lscp_set_channel_solo (client, channel, solo);
     @ref lscp_set_channel_volume (client, channel, volume);
     @ref lscp_load_instrument (client, file_name, instr_index, channel);
+    @ref lscp_load_instrument_non_modal (client, file_name, instr_index, channel);
     @ref lscp_get_channel_info (client, channel);
     @ref lscp_get_channel_voice_count (client, channel);
     @ref lscp_get_channel_stream_count (client, channel);
     @ref lscp_get_channel_buffer_fill (client, usage_type, channel);
     @ref lscp_reset_channel (client, channel);
     @ref lscp_remove_channel (client, channel);
+    @ref lscp_reset_sampler (client);
+    @ref lscp_get_server_info (client);
+    @ref lscp_get_server_info (client);
+    @ref lscp_get_total_voice_count (client);
+    @ref lscp_get_total_voice_count_max (client);
+
+
Specific to MIDI instrument mapping interface:
+
+    @ref lscp_add_midi_instrument_map (client, map_name);
+    @ref lscp_remove_midi_instrument_map (client, midi_map);
+    @ref lscp_get_midi_instrument_maps (client);
+    @ref lscp_list_midi_instrument_maps (client);
+    @ref lscp_get_midi_instrument_map_name (client, midi_map);
+    @ref lscp_set_midi_instrument_map_name (client, midi_map, map_name);
+    @ref lscp_map_midi_instrument (client, midi_instr, engine_name, file_name, instr_index, volume, load_mode, name);
+    @ref lscp_unmap_midi_instrument (client, midi_instr);
+    @ref lscp_get_midi_instruments (client, midi_map);
+    @ref lscp_list_midi_instruments (client, midi_map);
+    @ref lscp_get_midi_instrument_info (client, midi_instr);
+    @ref lscp_clear_midi_instruments (client, midi_map);
+
+
For the audio output and MIDI input device configuration interface, +the following functions are respectively defined in :
+
+    @ref lscp_get_available_audio_drivers (client);
+    @ref lscp_list_available_audio_drivers (client);
+    @ref lscp_get_audio_driver_info (client, audio_driver);
+    @ref lscp_get_audio_driver_param_info (client, audio_driver, param_key, deplist);
+    @ref lscp_create_audio_device (client, audio_driver, params);
+    @ref lscp_destroy_audio_device (client, audio_device);
+    @ref lscp_get_audio_devices (client);
+    @ref lscp_list_audio_devices (client);
+    @ref lscp_get_audio_device_info (client, audio_device);
+    @ref lscp_set_audio_device_param (client, audio_device, param);
+    @ref lscp_get_audio_channel_info (client, audio_device, audio_channel);
+    @ref lscp_get_audio_channel_param_info (client, audio_device, audio_channel, param);
+    @ref lscp_set_audio_channel_param (client, audio_device, audio_channel, param);
+
+    @ref lscp_get_available_midi_drivers (client);
+    @ref lscp_list_available_midi_drivers (client);
+    @ref lscp_get_midi_driver_info (client, midi_driver);
+    @ref lscp_get_midi_driver_param_info (client, midi_driver, param_key, deplist);
+    @ref lscp_create_midi_device (client, midi_driver, params);
+    @ref lscp_destroy_midi_device (client, midi_device);
+    @ref lscp_get_midi_devices (client);
+    @ref lscp_list_midi_devices (client);
+    @ref lscp_get_midi_device_info (client, midi_device);
+    @ref lscp_set_midi_device_param (client, midi_device, param);
+    @ref lscp_get_midi_port_info (client, midi_device, midi_port);
+    @ref lscp_get_midi_port_param_info (client, midi_device, midi_port, param);
+    @ref lscp_set_midi_port_param (client, midi_device, midi_port, param);
 
-
All these functions are wrappers to @ref lscp_client_query, and some will handle +
Most of these functions are wrappers to @ref lscp_client_query, and some will handle and change the result string accordingly.