--- liblscp/trunk/lscp/client.h 2004/06/14 21:04:04 125 +++ liblscp/trunk/lscp/client.h 2005/05/22 22:02:00 564 @@ -2,7 +2,7 @@ // /**************************************************************************** liblscp - LinuxSampler Control Protocol API - Copyright (C) 2004, rncbc aka Rui Nuno Capela. All rights reserved. + Copyright (C) 2004-2005, rncbc aka Rui Nuno Capela. All rights reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -24,15 +24,30 @@ #define __LSCP_CLIENT_H #include "lscp/socket.h" +#include "lscp/event.h" #if defined(__cplusplus) extern "C" { #endif +//------------------------------------------------------------------------- +// MIDI channel omni mode. + +#define LSCP_MIDI_CHANNEL_ALL 16 + //------------------------------------------------------------------------- // Client data structures. +/** Server info cache struct. */ +typedef struct _lscp_server_info_t +{ + char * description; + char * version; + +} lscp_server_info_t; + + /** Engine info cache struct. */ typedef struct _lscp_engine_info_t { @@ -51,6 +66,8 @@ char ** audio_routing; char * instrument_file; int instrument_nr; + char * instrument_name; + int instrument_status; int midi_device; int midi_port; int midi_channel; @@ -83,12 +100,13 @@ /** Client opaque descriptor struct. */ typedef struct _lscp_client_t lscp_client_t; -/** Client callback procedure prototype. */ +/** Client event callback procedure prototype. */ typedef lscp_status_t (*lscp_client_proc_t) ( struct _lscp_client_t *pClient, - const char *pchBuffer, - int cchBuffer, + lscp_event_t event, + const char *pchData, + int cchData, void *pvData ); @@ -119,38 +137,49 @@ //------------------------------------------------------------------------- // Client registration protocol functions. -lscp_status_t lscp_client_subscribe (lscp_client_t *pClient); -lscp_status_t lscp_client_unsubscribe (lscp_client_t *pClient); +lscp_status_t lscp_client_subscribe (lscp_client_t *pClient, lscp_event_t events); +lscp_status_t lscp_client_unsubscribe (lscp_client_t *pClient, lscp_event_t events); + +lscp_event_t lscp_client_get_events (lscp_client_t *pClient); //------------------------------------------------------------------------- // Client command protocol functions. lscp_status_t lscp_load_instrument (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel); +lscp_status_t lscp_load_instrument_non_modal (lscp_client_t *pClient, const char *pszFileName, int iInstrIndex, int iSamplerChannel); lscp_status_t lscp_load_engine (lscp_client_t *pClient, const char *pszEngineName, int iSamplerChannel); int lscp_get_channels (lscp_client_t *pClient); int * lscp_list_channels (lscp_client_t *pClient); int lscp_add_channel (lscp_client_t *pClient); lscp_status_t lscp_remove_channel (lscp_client_t *pClient, int iSamplerChannel); -const char ** lscp_get_available_engines (lscp_client_t *pClient); + +int lscp_get_available_engines (lscp_client_t *pClient); +const char ** lscp_list_available_engines (lscp_client_t *pClient); lscp_engine_info_t * lscp_get_engine_info (lscp_client_t *pClient, const char *pszEngineName); lscp_channel_info_t * lscp_get_channel_info (lscp_client_t *pClient, int iSamplerChannel); int lscp_get_channel_voice_count (lscp_client_t *pClient, int iSamplerChannel); int lscp_get_channel_stream_count (lscp_client_t *pClient, int iSamplerChannel); +int lscp_get_channel_stream_usage (lscp_client_t *pClient, int iSamplerChannel); lscp_buffer_fill_t * lscp_get_channel_buffer_fill (lscp_client_t *pClient, lscp_usage_t iUsageType, int iSamplerChannel); lscp_status_t lscp_set_channel_audio_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszAudioType); +lscp_status_t lscp_set_channel_audio_device (lscp_client_t *pClient, int iSamplerChannel, int iAudioDevice); lscp_status_t lscp_set_channel_audio_channel (lscp_client_t *pClient, int iSamplerChannel, int iAudioOut, int iAudioIn); lscp_status_t lscp_set_channel_midi_type (lscp_client_t *pClient, int iSamplerChannel, const char *pszMidiType); +lscp_status_t lscp_set_channel_midi_device (lscp_client_t *pClient, int iSamplerChannel, int iMidiDevice); lscp_status_t lscp_set_channel_midi_port (lscp_client_t *pClient, int iSamplerChannel, int iMidiPort); lscp_status_t lscp_set_channel_midi_channel (lscp_client_t *pClient, int iSamplerChannel, int iMidiChannel); lscp_status_t lscp_set_channel_volume (lscp_client_t *pClient, int iSamplerChannel, float fVolume); lscp_status_t lscp_reset_channel (lscp_client_t *pClient, int iSamplerChannel); +lscp_status_t lscp_reset_sampler (lscp_client_t *pClient); + +lscp_server_info_t * lscp_get_server_info (lscp_client_t *pClient); #if defined(__cplusplus) }