/*---------------------------------------------------------------------------------*/ /* Includes */ /*---------------------------------------------------------------------------------*/ #ifndef _DATASTRUCT_H_ #define _DATASTRUCT_H_ /*----------------------------------------------------------------------------*/ /* Pre definitions */ /*----------------------------------------------------------------------------*/ typedef struct DRT_Instrument DRT_Instrument; typedef struct DRT_Kit DRT_Kit; /*----------------------------------------------------------------------------*/ /* Global definitions */ /*----------------------------------------------------------------------------*/ #define NDD_CMD_ID_REFRESH ( NDT_Command) 65 #define NDD_CMD_STATS_GET ( NDT_Command) 66 #define NDD_CMD_GRAPH_PRINT ( NDT_Command) 67 #define NDD_CMD_SAMPLE_LOAD ( NDT_Command) 68 #define NDD_CMD_SAMPLE_UNLOAD ( NDT_Command) 69 #define NDD_CMD_INDEX0_PRINT ( NDT_Command) 70 #define NDD_CMD_INDEX1_PRINT ( NDT_Command) 71 #define DRD_NAME_LEN (short) 256 #define DRD_NAME_SIZE (DRD_NAME_LEN + 1) #define DRD_DIRNAME_LEN (short) 1024 #define DRD_DIRNAME_SIZE (DRD_DIRNAME_LEN) #define DRD_FILENAME_LEN (short) 1024 #define DRD_FILENAME_SIZE (DRD_FILENAME_LEN) #define DRD_DESC_LEN (short) 4096 #define DRD_DESC_SIZE (DRD_DESC_LEN + 1) typedef long DRT_Id; typedef DRT_Id DRT_Layer_Id; typedef DRT_Id DRT_Instrument_Id; typedef DRT_Id DRT_Kit_Id; typedef DRT_Id DRT_Task_Id; #define DRD_ID_UNKNOWN (DRT_Id) -1 typedef short DRT_Load_Status; #define DRD_LOAD_STATUS_UNKNOWN ( DRT_Load_Status) -1 #define DRD_LOAD_STATUS_UNLOADED ( DRT_Load_Status) 0 #define DRD_LOAD_STATUS_LOADED ( DRT_Load_Status) 1 #define DRD_LOAD_STATUS_TRANSIENT ( DRT_Load_Status) 2 #define DR_LOAD_STATUS_VALUE_UNKNOWN_IS( v) ( (v) == DRD_LOAD_STATUS_UNKNOWN) #define DR_LOAD_STATUS_VALUE_UNLOADED_IS( v) ( (v) == DRD_LOAD_STATUS_UNLOADED) #define DR_LOAD_STATUS_VALUE_LOADED_IS( v) ( (v) == DRD_LOAD_STATUS_LOADED) #define DR_LOAD_STATUS_VALUE_TRANSIENT_IS( v) ( (v) == DRD_LOAD_STATUS_TRANSIENT) #define DR_LOAD_STATUS_UNKNOWN_IS( s) DR_LOAD_STATUS_VALUE_UNKNOWN_IS( (s)->Status) #define DR_LOAD_STATUS_UNLOADED_IS( s) DR_LOAD_STATUS_VALUE_UNLOADED_IS( (s)->Status) #define DR_LOAD_STATUS_LOADED_IS( s) DR_LOAD_STATUS_VALUE_LOADED_IS( (s)->Status) #define DR_LOAD_STATUS_TRANSIENT_IS( s) DR_LOAD_STATUS_VALUE_TRANSIENT_IS( (s)->Status) #define DR_LOAD_STATUS_VALUE_ASCII_GET( v) ( DR_LOAD_STATUS_VALUE_UNKNOWN_IS( (v)) ? "UNKNOWN" : ( DR_LOAD_STATUS_VALUE_UNLOADED_IS( (v)) ? "UNLOADED" : ( DR_LOAD_STATUS_VALUE_LOADED_IS( (v)) ? "LOADED" : ( DR_LOAD_STATUS_VALUE_TRANSIENT_IS( (v)) ? "TRANSIENT" : "???")))) #define DR_LOAD_STATUS_ASCII_GET( s) DR_LOAD_STATUS_VALUE_ASCII_GET( (s)->Status) /*---------------------------------------------------------------------------------*/ /* DRT_Task */ /*---------------------------------------------------------------------------------*/ typedef short DRT_Task_Status; #define DRD_TASK_STATUS_UNKNOWN ( DRT_Task_Status) -1 #define DRD_TASK_STATUS_UNSPAWNED ( DRT_Task_Status) 0 #define DRD_TASK_STATUS_WAITING ( DRT_Task_Status) 1 #define DRD_TASK_STATUS_RUNNING ( DRT_Task_Status) 2 #define DRD_TASK_STATUS_KILLED ( DRT_Task_Status) 3 #define DR_TASK_STATUS_VALUE_UNKNOWN_IS( v) ( (v) == DRD_TASK_STATUS_UNKNOWN) #define DR_TASK_STATUS_VALUE_UNSPAWNED_IS( v) ( (v) == DRD_TASK_STATUS_UNSPAWNED) #define DR_TASK_STATUS_VALUE_WAITING_IS( v) ( (v) == DRD_TASK_STATUS_WAITING) #define DR_TASK_STATUS_VALUE_RUNNING_IS( v) ( (v) == DRD_TASK_STATUS_RUNNING) #define DR_TASK_STATUS_VALUE_KILLED_IS( v) ( (v) == DRD_TASK_STATUS_KILLED) #define DR_TASK_STATUS_UNKNOWN_IS( s) DR_TASK_STATUS_VALUE_UNKNOWN_IS( (s)->Status) #define DR_TASK_STATUS_UNSPAWNED_IS( s) DR_TASK_STATUS_VALUE_UNSPAWNED_IS( (s)->Status) #define DR_TASK_STATUS_WAITING_IS( s) DR_TASK_STATUS_VALUE_WAITING_IS( (s)->Status) #define DR_TASK_STATUS_RUNNING_IS( s) DR_TASK_STATUS_VALUE_RUNNING_IS( (s)->Status) #define DR_TASK_STATUS_KILLED_IS( s) DR_TASK_STATUS_VALUE_KILLED_IS( (s)->Status) #define DR_TASK_STATUS_VALUE_ASCII_GET( v) ( DR_TASK_STATUS_VALUE_UNKNOWN_IS( (v)) ? "UNKNOWN" : ( DR_TASK_STATUS_VALUE_UNSPAWNED_IS( (v)) ? "UNUNSPAWNED" : ( DR_TASK_STATUS_VALUE_WAITING_IS( (v)) ? "WAITING" : ( DR_TASK_STATUS_VALUE_RUNNING_IS( (v)) ? "RUNNING" : ( DR_TASK_STATUS_VALUE_KILLED_IS( (v)) ? "KILLED" : "???"))))) #define DR_TASK_STATUS_ASCII_GET( s) DR_TASK_STATUS_VALUE_ASCII_GET( (s)->Status) typedef short DRT_Task_Command; #define DRD_TASK_CMD_UNKNOWN ( DRT_Task_Command) -1 #define DRD_TASK_CMD_NONE ( DRT_Task_Command) 0 #define DRD_TASK_CMD_TASK_SPAWN ( DRT_Task_Command) 1 #define DRD_TASK_CMD_TASK_KILL ( DRT_Task_Command) 2 #define DRD_TASK_CMD_LAYER_LOAD ( DRT_Task_Command) 3 #define DRD_TASK_CMD_INSTRUMENT_LOAD ( DRT_Task_Command) 4 #define DRD_TASK_CMD_KIT_LOAD ( DRT_Task_Command) 5 #define DR_TASK_CMD_VALUE_UNKNOWN_IS( v) ( (v) == DRD_TASK_CMD_UNKNOWN) #define DR_TASK_CMD_VALUE_NONE_IS( v) ( (v) == DRD_TASK_CMD_NONE) #define DR_TASK_CMD_VALUE_TASK_SPAWN_IS( v) ( (v) == DRD_TASK_CMD_TASK_SPAWN) #define DR_TASK_CMD_VALUE_TASK_KILL_IS( v) ( (v) == DRD_TASK_CMD_TASK_KILL) #define DR_TASK_CMD_VALUE_LAYER_LOAD_IS( v) ( (v) == DRD_TASK_CMD_LAYER_LOAD) #define DR_TASK_CMD_VALUE_INSTRUMENT_LOAD_IS( v) ( (v) == DRD_TASK_CMD_INSTRUMENT_LOAD) #define DR_TASK_CMD_VALUE_KIT_LOAD_IS( v) ( (v) == DRD_TASK_CMD_KIT_LOAD) #define DR_TASK_CMD_UNKNOWN_IS( s) DR_TASK_CMD_VALUE_UNKNOWN_IS( (s)->Command) #define DR_TASK_CMD_NONE_IS( s) DR_TASK_CMD_VALUE_NONE_IS( (s)->Command) #define DR_TASK_CMD_TASK_SPAWN_IS( s) DR_TASK_CMD_VALUE_TASK_SPAWN_IS( (s)->Command) #define DR_TASK_CMD_TASK_KILL_IS( s) DR_TASK_CMD_VALUE_TASK_KILL_IS( (s)->Command) #define DR_TASK_CMD_LAYER_LOAD_IS( s) DR_TASK_CMD_VALUE_LAYER_LOAD_IS( (s)->Command) #define DR_TASK_CMD_INSTRUMENT_LOAD_IS( s) DR_TASK_CMD_VALUE_INSTRUMENT_LOAD_IS( (s)->Command) #define DR_TASK_CMD_KIT_LOAD_IS( s) DR_TASK_CMD_VALUE_KIT_LOAD_IS( (s)->Command) #define DR_TASK_CMD_VALUE_ASCII_GET( v) ( DR_TASK_CMD_VALUE_UNKNOWN_IS( (v)) ? "UNKNOWN" : ( DR_TASK_CMD_VALUE_NONE_IS( (v)) ? "None" : ( DR_TASK_CMD_VALUE_TASK_SPAWN_IS( (v)) ? "Task Spawn" : ( DR_TASK_CMD_VALUE_TASK_KILL_IS( (v)) ? "Task Kill" : ( DR_TASK_CMD_VALUE_LAYER_LOAD_IS( (v)) ? "Layer Load" : ( DR_TASK_CMD_VALUE_INSTRUMENT_LOAD_IS( (v)) ? "Instrument Load" : ( DR_TASK_CMD_VALUE_KIT_LOAD_IS( (v)) ? "Kit Load" : "???"))))))) #define DR_TASK_CMD_ASCII_GET( s) DR_TASK_CMD_VALUE_ASCII_GET( (s)->Command) typedef struct DRT_Task { DRT_Task_Status Status; pthread_t Thread; pthread_cond_t Cond; DRT_Task_Command Command; void *Target_Ptr; long Count; } DRT_Task; /*---------------------------------------------------------------------------------*/ /* DRT_Base */ /*---------------------------------------------------------------------------------*/ typedef int DRT_SampleRate; typedef struct DRT_Base { NDT_Root *Kit_DS_Ptr; DRT_SampleRate SampleRate; DRT_Task_Id Task_Number; DRT_Boolean Task_Load_Layer_Flag; DRT_Boolean Task_Load_Instrument_Flag; DRT_Boolean Task_Load_Kit_Flag; DRT_Boolean Task_Sync_Kit_Flag; DRT_Boolean Task_Sync_Kits_Flag; DRT_Task *Task_Tab; pthread_mutex_t Task_Mutex; pthread_cond_t Task_Cond; DRT_Task_Id Task_Count_Waiting; long Task_Count_Run; long Task_Count_Sleep; } DRT_Base; /*---------------------------------------------------------------------------------*/ /* Layer / Instrument / Kit */ /*---------------------------------------------------------------------------------*/ typedef struct DRT_Layer { DRT_Layer_Id Id; char FileName[ DRD_FILENAME_SIZE]; float *Sample_Ptr; long Sample_Size; SF_INFO *SF_Info_Ptr; double Min; double Max; double Gain; double Pitch; DRT_Instrument *Instrument_Ptr; } DRT_Layer; typedef struct DRT_Instrument { DRT_Instrument_Id Id; char Name[ DRD_NAME_SIZE]; double Gain; double Pan_Left; double Pan_Right; DRT_Kit *Kit_Ptr; NDT_Root *Layer_DS_Ptr; } DRT_Instrument; typedef struct DRT_Kit { DRT_Kit_Id Id; DRT_Kit_Id Logical_Id; DRT_Load_Status Status; char Name[ DRD_NAME_SIZE]; char Desc[ DRD_DESC_SIZE]; char DirName[ DRD_DIRNAME_SIZE]; DRT_Base *Base_Ptr; NDT_Root *Instrument_DS_Ptr; } DRT_Kit; # ifdef _DATASTRUCT_C_ /*----------------------------------------------------------------------------*/ /* Private Definitions */ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ /* Layer_DS Indexes */ /*----------------------------------------------------------------------------*/ #define DRD_LAYER_DS_INDEX_NB (short)2 static NDT_Index_Type DRG_Layer_DS_Index_Tab_Initial[DRD_LAYER_DS_INDEX_NB] = { (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED), (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED) }; static NDT_Index_Type DRG_Layer_DS_Index_Tab_Final[DRD_LAYER_DS_INDEX_NB] = { (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED), (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED) }; /*----------------------------------------------------------------------------*/ /* Instrument_DS Indexes */ /*----------------------------------------------------------------------------*/ #define DRD_INSTRUMENT_DS_INDEX_NB (short)2 static NDT_Index_Type DRG_Instrument_DS_Index_Tab_Initial[DRD_INSTRUMENT_DS_INDEX_NB] = { (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED), (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED) }; static NDT_Index_Type DRG_Instrument_DS_Index_Tab_Final[DRD_INSTRUMENT_DS_INDEX_NB] = { (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED), (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED) }; /*----------------------------------------------------------------------------*/ /* Kit_DS Indexes */ /*----------------------------------------------------------------------------*/ #define DRD_KIT_DS_INDEX_NB (short)2 static NDT_Index_Type DRG_Kit_DS_Index_Tab_Initial[DRD_KIT_DS_INDEX_NB] = { (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED), (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED) }; static NDT_Index_Type DRG_Kit_DS_Index_Tab_Final[DRD_KIT_DS_INDEX_NB] = { (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED), (NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED) }; /*---------------------------------------------------------------------------------*/ /* XML XPATH Tags */ /*---------------------------------------------------------------------------------*/ #define DR_STR(A) #A #define DR_TAG(A) DR_STR(A) #define DR_XML_XPATH_ELEMENT(A) *[local-name()=(A)] #define DRD_XML_SLASH / #define DRD_XML_XPATH_DRUMKIT_BASE_TAG DR_XML_XPATH_ELEMENT('drumkit_info') #define DRD_XML_XPATH_DRUMKIT_NAME_TAG DR_XML_XPATH_ELEMENT('name') #define DRD_XML_XPATH_DRUMKIT_INFO_TAG DR_XML_XPATH_ELEMENT('info') #define DRD_XML_XPATH_DRUMKIT_INSTRUMENTLIST_TAG DR_XML_XPATH_ELEMENT('instrumentList') #define DRD_XML_XPATH_DRUMKIT_INSTRUMENT_TAG DR_XML_XPATH_ELEMENT('instrument') #define DRD_XML_XPATH_DRUMKIT_ID_TAG DR_XML_XPATH_ELEMENT('id') #define DRD_XML_XPATH_DRUMKIT_GAIN_TAG DR_XML_XPATH_ELEMENT('gain') #define DRD_XML_XPATH_DRUMKIT_PAN_LEFT_TAG DR_XML_XPATH_ELEMENT('pan_L') #define DRD_XML_XPATH_DRUMKIT_PAN_RIGHT_TAG DR_XML_XPATH_ELEMENT('pan_R') #define DRD_XML_XPATH_DRUMKIT_INSTRUMENTCOMPONENT_TAG DR_XML_XPATH_ELEMENT('instrumentComponent') #define DRD_XML_XPATH_DRUMKIT_LAYER_TAG DR_XML_XPATH_ELEMENT('layer') #define DRD_XML_XPATH_DRUMKIT_FILENAME_TAG DR_XML_XPATH_ELEMENT('filename') #define DRD_XML_XPATH_DRUMKIT_MIN_TAG DR_XML_XPATH_ELEMENT('min') #define DRD_XML_XPATH_DRUMKIT_MAX_TAG DR_XML_XPATH_ELEMENT('max') #define DRD_XML_XPATH_DRUMKIT_PITCH_TAG DR_XML_XPATH_ELEMENT('pitch') #define DRD_XML_XPATH_DRUMKIT_BASE_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_BASE_TAG) #define DRD_XML_XPATH_DRUMKIT_NAME_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_NAME_TAG) #define DRD_XML_XPATH_DRUMKIT_INFO_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_INFO_TAG) #define DRD_XML_XPATH_DRUMKIT_ID_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_ID_TAG) #define DRD_XML_XPATH_DRUMKIT_GAIN_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_GAIN_TAG) #define DRD_XML_XPATH_DRUMKIT_PAN_LEFT_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_PAN_LEFT_TAG) #define DRD_XML_XPATH_DRUMKIT_PAN_RIGHT_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_PAN_RIGHT_TAG) #define DRD_XML_XPATH_DRUMKIT_FILENAME_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_FILENAME_TAG) #define DRD_XML_XPATH_DRUMKIT_MIN_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_MIN_TAG) #define DRD_XML_XPATH_DRUMKIT_MAX_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_MAX_TAG) #define DRD_XML_XPATH_DRUMKIT_PITCH_STR DR_TAG(/DRD_XML_XPATH_DRUMKIT_PITCH_TAG) #define DRD_XML_XPATH_DRUMKIT_KIT_NAME_FULL DR_TAG(/DRD_XML_XPATH_DRUMKIT_BASE_TAG/DRD_XML_XPATH_DRUMKIT_NAME_TAG) #define DRD_XML_XPATH_DRUMKIT_KIT_INFO_FULL DR_TAG(/DRD_XML_XPATH_DRUMKIT_BASE_TAG/DRD_XML_XPATH_DRUMKIT_INFO_TAG) #define DRD_XML_XPATH_DRUMKIT_INSTRUMENT_FULL DR_TAG(/DRD_XML_XPATH_DRUMKIT_BASE_TAG/DRD_XML_XPATH_DRUMKIT_INSTRUMENTLIST_TAG/DRD_XML_XPATH_DRUMKIT_INSTRUMENT_TAG[%i]) #define DRD_XML_XPATH_DRUMKIT_LAYER_FULL2 DR_TAG(/DRD_XML_XPATH_DRUMKIT_BASE_TAG/DRD_XML_XPATH_DRUMKIT_INSTRUMENTLIST_TAG/DRD_XML_XPATH_DRUMKIT_INSTRUMENT_TAG[%i]/DRD_XML_XPATH_DRUMKIT_INSTRUMENTCOMPONENT_TAG/DRD_XML_XPATH_DRUMKIT_LAYER_TAG[%i]) #define DRD_XML_XPATH_DRUMKIT_LAYER_FULL DR_TAG(/DRD_XML_XPATH_DRUMKIT_BASE_TAG/DRD_XML_XPATH_DRUMKIT_INSTRUMENTLIST_TAG/DRD_XML_XPATH_DRUMKIT_INSTRUMENT_TAG[%i]DRD_XML_SLASH/DRD_XML_XPATH_DRUMKIT_LAYER_TAG[%i]) /*---------------------------------------------------------------------------------*/ /* LibSamplerate */ /*---------------------------------------------------------------------------------*/ // Quality of conversion for libsamplerate. // See http://www.mega-nerd.com/SRC/api_misc.html#Converters // for info about availble qualities //#define RATE_CONV_QUALITY SRC_SINC_BEST_QUALITY #define DRD_RATE_CONV_QUALITY SRC_SINC_MEDIUM_QUALITY /*---------------------------------------------------------------------------------*/ /* XML_Query */ /*---------------------------------------------------------------------------------*/ #define DRD_XML_QUERY_VALUE_UNKNOWN (short) 0 #define DRD_XML_QUERY_VALUE_STRING (short) 1 #define DRD_XML_QUERY_VALUE_INT (short) 2 #define DRD_XML_QUERY_VALUE_LONG (short) 3 #define DRD_XML_QUERY_VALUE_LONGLONG (short) 4 #define DRD_XML_QUERY_VALUE_FLOAT (short) 5 #define DRD_XML_QUERY_VALUE_DOUBLE (short) 6 typedef struct DRT_XML_Query { char *Query_Name; char *XPath_Query; short Value_Type; long Value_Offset; short Value_Len; } DRT_XML_Query; DRT_XML_Query DRG_XML_Query_Tab_Layer[] = { { "File Name", DRD_XML_XPATH_DRUMKIT_FILENAME_STR, DRD_XML_QUERY_VALUE_STRING, offsetof( DRT_Layer, FileName), DRD_FILENAME_LEN }, { "Min", DRD_XML_XPATH_DRUMKIT_MIN_STR, DRD_XML_QUERY_VALUE_DOUBLE, offsetof( DRT_Layer, Min), 0 }, { "Max", DRD_XML_XPATH_DRUMKIT_MAX_STR, DRD_XML_QUERY_VALUE_DOUBLE, offsetof( DRT_Layer, Max), 0 }, { "Gain", DRD_XML_XPATH_DRUMKIT_GAIN_STR, DRD_XML_QUERY_VALUE_DOUBLE, offsetof( DRT_Layer, Gain), 0 }, { "Pitch", DRD_XML_XPATH_DRUMKIT_PITCH_STR, DRD_XML_QUERY_VALUE_DOUBLE, offsetof( DRT_Layer, Pitch), 0 }, { NULL, NULL, DRD_XML_QUERY_VALUE_UNKNOWN, 0, 0 } }; DRT_XML_Query DRG_XML_Query_Tab_Instrument[] = { { "Id", DRD_XML_XPATH_DRUMKIT_ID_STR, DRD_XML_QUERY_VALUE_LONG, offsetof( DRT_Instrument, Id), 0 }, { "Name", DRD_XML_XPATH_DRUMKIT_NAME_STR, DRD_XML_QUERY_VALUE_STRING, offsetof( DRT_Instrument, Name), DRD_NAME_LEN }, { "Gain", DRD_XML_XPATH_DRUMKIT_GAIN_STR, DRD_XML_QUERY_VALUE_DOUBLE, offsetof( DRT_Instrument, Gain), 0 }, { "Pan_Left", DRD_XML_XPATH_DRUMKIT_PAN_LEFT_STR, DRD_XML_QUERY_VALUE_DOUBLE, offsetof( DRT_Instrument, Pan_Left), 0 }, { "Pan_Right", DRD_XML_XPATH_DRUMKIT_PAN_RIGHT_STR, DRD_XML_QUERY_VALUE_DOUBLE, offsetof( DRT_Instrument, Pan_Right), 0 }, { NULL, NULL, DRD_XML_QUERY_VALUE_UNKNOWN, 0, 0 } }; DRT_XML_Query DRG_XML_Query_Tab_Kit[] = { { "File", DRD_XML_XPATH_DRUMKIT_NAME_STR, DRD_XML_QUERY_VALUE_STRING, offsetof( DRT_Kit, Name), DRD_NAME_LEN }, { "Desc", DRD_XML_XPATH_DRUMKIT_INFO_STR, DRD_XML_QUERY_VALUE_STRING, offsetof( DRT_Kit, Desc), DRD_DESC_LEN }, { NULL, NULL, DRD_XML_QUERY_VALUE_UNKNOWN, 0, 0 } }; # endif // ifdef _DATASTRUCT_C_ # ifndef _DATASTRUCT_C_ /*----------------------------------------------------------------------------*/ /* Public Prototypes */ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ /* DR_Layer_Dump */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Layer_Dump( DRT_Layer *, long); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Id_Find */ /*---------------------------------------------------------------------------------*/ extern DRT_Status DR_Kit_Id_Find( DRT_Kit **, NDT_Root *, DRT_Kit_Id); /*----------------------------------------------------------------------------*/ /* DR_Kit_Logical_Id_Find */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kit_Logical_Id_Find( DRT_Kit **, NDT_Root *, DRT_Kit_Id); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Name_Find */ /*---------------------------------------------------------------------------------*/ extern DRT_Status DR_Kit_Name_Find( DRT_Kit **, NDT_Root *, char *); /*----------------------------------------------------------------------------*/ /* DR_Kit_Dump */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kit_Dump( DRT_Kit *, long); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Load */ /*---------------------------------------------------------------------------------*/ extern DRT_Status DR_Kit_Load( DRT_Base *, char *); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Sample_Load */ /*---------------------------------------------------------------------------------*/ extern DRT_Status DR_Kit_Sample_Load( DRT_Kit *); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Sample_UnLoad */ /*---------------------------------------------------------------------------------*/ extern DRT_Status DR_Kit_Sample_UnLoad( DRT_Kit *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Sample_Load */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kits_Sample_Load( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Sample_UnLoad */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kits_Sample_UnLoad( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Load */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kits_Load( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Stats_Dump */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kits_Stats_Dump( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Dump */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kits_Dump( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Graph_Dump */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Kits_Graph_Dump( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Task_Id_Run */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Task_Id_Run( DRT_Task_Id, DRT_Base *, DRT_Task_Command, void *); /*----------------------------------------------------------------------------*/ /* DR_Task_Id_Kill */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Task_Id_Kill( DRT_Task_Id, DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Task_Run */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Task_Run( DRT_Base *, void *); /*----------------------------------------------------------------------------*/ /* DR_Task_Wait */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Task_Wait( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Tasks_Dump */ /*----------------------------------------------------------------------------*/ extern DRT_Status DR_Tasks_Dump( DRT_Base *); /*---------------------------------------------------------------------------------*/ /* DR_DataStruct_Init */ /*---------------------------------------------------------------------------------*/ extern DRT_Status DR_DataStruct_Init( DRT_Base *, DRT_SampleRate, DRT_Task_Id); /*---------------------------------------------------------------------------------*/ /* DR_DataStruct_DeInit */ /*---------------------------------------------------------------------------------*/ extern DRT_Status DR_DataStruct_DeInit( DRT_Base *); # else // ifndef _DATA_STRUCT_C_ /*----------------------------------------------------------------------------*/ /* Private Prototypes */ /*----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------*/ /* DS Managers */ /*---------------------------------------------------------------------------------*/ NDT_Status DR_Layer_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *); NDT_Status DR_Instrument_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *); NDT_Status DR_Kit_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *); /*---------------------------------------------------------------------------------*/ /* DR_Layer_Add */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Layer_Add( DRT_Layer **, NDT_Root *, DRT_Layer *); /*---------------------------------------------------------------------------------*/ /* DR_Layer_Sample_Load */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Layer_Sample_Load( DRT_Layer *); /*---------------------------------------------------------------------------------*/ /* DR_Layer_Sample_UnLoad */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Layer_Sample_UnLoad( DRT_Layer *); /*---------------------------------------------------------------------------------*/ /* DR_Layer_Dump */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Layer_Dump( DRT_Layer *, long); /*----------------------------------------------------------------------------*/ /* DR_Instrument_Add */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Instrument_Add( DRT_Instrument **, NDT_Root *, DRT_Instrument *); /*---------------------------------------------------------------------------------*/ /* DR_Instrument_Dump */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Instrument_Dump( DRT_Instrument *, long); /*----------------------------------------------------------------------------*/ /* DR_Instrument_Sample_Load */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Instrument_Sample_Load( DRT_Instrument *); /*----------------------------------------------------------------------------*/ /* DR_Instrument_Sample_Unload */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Instrument_Sample_UnLoad( DRT_Instrument *); /*----------------------------------------------------------------------------*/ /* DR_Kit_Add */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kit_Add( DRT_Kit **, NDT_Root *, DRT_Kit *); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Id_Find */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Kit_Id_Find( DRT_Kit **, NDT_Root *, DRT_Kit_Id); /*----------------------------------------------------------------------------*/ /* DR_Kit_Logical_Id_Find */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kit_Logical_Id_Find( DRT_Kit **, NDT_Root *, DRT_Kit_Id); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Name_Find */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Kit_Name_Find( DRT_Kit **, NDT_Root *, char *); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Dump */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Kit_Dump( DRT_Kit *, long); /*---------------------------------------------------------------------------------*/ /* DR_XML_Node_Exist */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_XML_Node_Exist( xmlDocPtr, xmlXPathContextPtr, char *); /*---------------------------------------------------------------------------------*/ /* DR_XML_Query_Tab_Exec */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_XML_Query_Tab_Exec( void *, xmlDocPtr, xmlXPathContextPtr, char *, DRT_XML_Query *); /*---------------------------------------------------------------------------------*/ /* DR_XML_Value_Get */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_XML_Value_Get( char *, long, xmlDocPtr, xmlXPathContextPtr, char *, char *); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Load */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Kit_Load( DRT_Base *, char *); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Sample_Load */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Kit_Sample_Load( DRT_Kit *); /*---------------------------------------------------------------------------------*/ /* DR_Kit_Sample_UnLoad */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_Kit_Sample_UnLoad( DRT_Kit *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Sample_Load */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kits_Sample_Load( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Sample_UnLoad */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kits_Sample_UnLoad( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Load */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kits_Load( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Stats_Dump */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kits_Stats_Dump( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Dump */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kits_Dump( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Kits_Graph_Dump */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Kits_Graph_Dump( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Task_Tread */ /*----------------------------------------------------------------------------*/ static void *DR_Task_Thread( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Task_Id_Run */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Task_Id_Run( DRT_Task_Id, DRT_Base *, DRT_Task_Command, void *); /*----------------------------------------------------------------------------*/ /* DR_Task_Id_Kill */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Task_Id_Kill( DRT_Task_Id, DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Task_Run */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Task_Run( DRT_Base *, DRT_Task_Command, void *); /*----------------------------------------------------------------------------*/ /* DR_Task_Wait */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Task_Wait( DRT_Base *); /*----------------------------------------------------------------------------*/ /* DR_Tasks_Dump */ /*----------------------------------------------------------------------------*/ DRT_Status DR_Tasks_Dump( DRT_Base *); /*---------------------------------------------------------------------------------*/ /* DR_DataStruct_Init */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_DataStruct_Init( DRT_Base *, DRT_SampleRate, DRT_Task_Id); /*---------------------------------------------------------------------------------*/ /* DR_DataStruct_DeInit */ /*---------------------------------------------------------------------------------*/ DRT_Status DR_DataStruct_DeInit( DRT_Base *); # endif // ifndef _DATASTRUCT_C_ /*----------------------------------------------------------------------------*/ #endif // ifndef _DATASTRUCT_H_