- Add Multithread task support,
- Add task layer loading support, - Add task kit loading support, - Add task kits loading support.
This commit is contained in:
parent
5dfe9feb17
commit
5113c24f6a
969
datastruct.c
969
datastruct.c
File diff suppressed because it is too large
Load Diff
371
datastruct.h
371
datastruct.h
@ -11,15 +11,28 @@
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Pre definitions */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
typedef struct DRT_Instrument DRT_Instrument;
|
||||
typedef struct DRT_Kit DRT_Kit;
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Global definitions */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#define NDD_CMD_STATS_GET ( NDT_Command) 65
|
||||
#define NDD_CMD_SAMPLE_LOAD ( NDT_Command) 66
|
||||
#define NDD_CMD_SAMPLE_UNLOAD ( NDT_Command) 67
|
||||
#define NDD_CMD_INDEX0_PRINT ( NDT_Command) 68
|
||||
#define NDD_CMD_INDEX1_PRINT ( NDT_Command) 69
|
||||
#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)
|
||||
@ -30,17 +43,24 @@
|
||||
#define DRD_DESC_LEN (short) 4096
|
||||
#define DRD_DESC_SIZE (DRD_DESC_LEN + 1)
|
||||
|
||||
typedef long DRT_Layer_Id;
|
||||
|
||||
typedef long DRT_Instrument_Id;
|
||||
|
||||
typedef long DRT_Kit_Id;
|
||||
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) 0
|
||||
#define DRD_LOAD_STATUS_UNLOADED ( DRT_Load_Status) 1
|
||||
#define DRD_LOAD_STATUS_LOADED ( DRT_Load_Status) 2
|
||||
#define DRD_LOAD_STATUS_TRANSIENT ( DRT_Load_Status) 3
|
||||
#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)
|
||||
@ -57,6 +77,105 @@ typedef short DRT_Load_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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
@ -66,7 +185,6 @@ typedef short DRT_Load_Status;
|
||||
typedef struct DRT_Layer
|
||||
{
|
||||
DRT_Layer_Id Id;
|
||||
DRT_Load_Status Status;
|
||||
char FileName[ DRD_FILENAME_SIZE];
|
||||
float *Sample_Ptr;
|
||||
long Sample_Size;
|
||||
@ -75,6 +193,7 @@ typedef struct DRT_Layer
|
||||
double Max;
|
||||
double Gain;
|
||||
double Pitch;
|
||||
DRT_Instrument *Instrument_Ptr;
|
||||
} DRT_Layer;
|
||||
|
||||
|
||||
@ -82,11 +201,11 @@ typedef struct DRT_Layer
|
||||
typedef struct DRT_Instrument
|
||||
{
|
||||
DRT_Instrument_Id Id;
|
||||
DRT_Load_Status Status;
|
||||
char Name[ DRD_NAME_SIZE];
|
||||
double Gain;
|
||||
double Pan_Left;
|
||||
double Pan_Right;
|
||||
DRT_Kit *Kit_Ptr;
|
||||
NDT_Root *Layer_DS_Ptr;
|
||||
} DRT_Instrument;
|
||||
|
||||
@ -95,10 +214,12 @@ typedef struct 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;
|
||||
|
||||
@ -313,6 +434,14 @@ 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 */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
@ -341,7 +470,7 @@ extern DRT_Status DR_Kit_Load( DRT_Base *, char *);
|
||||
/* DR_Kit_Sample_Load */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
extern DRT_Status DR_Kit_Sample_Load( DRT_Kit *, DRT_SampleRate);
|
||||
extern DRT_Status DR_Kit_Sample_Load( DRT_Kit *);
|
||||
|
||||
|
||||
|
||||
@ -353,22 +482,6 @@ extern DRT_Status DR_Kit_Sample_UnLoad( DRT_Kit *);
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* DR_DataStruct_Init */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
extern DRT_Status DR_DataStruct_Init( DRT_Base *, DRT_SampleRate);
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* DR_DataStruct_DeInit */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
extern DRT_Status DR_DataStruct_DeInit( DRT_Base *);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* DR_Kits_Sample_Load */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@ -393,6 +506,14 @@ extern DRT_Status DR_Kits_Load( DRT_Base *);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* DR_Kits_Stats_Dump */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
extern DRT_Status DR_Kits_Stats_Dump( DRT_Base *);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* DR_Kits_Dump */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@ -401,6 +522,70 @@ 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_
|
||||
|
||||
|
||||
@ -431,7 +616,7 @@ DRT_Status DR_Layer_Add( DRT_Layer **, NDT_Root *, DRT_Layer *);
|
||||
/* DR_Layer_Sample_Load */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
DRT_Status DR_Layer_Sample_Load( DRT_Layer *, DRT_Kit *, DRT_SampleRate);
|
||||
DRT_Status DR_Layer_Sample_Load( DRT_Layer *);
|
||||
|
||||
|
||||
|
||||
@ -467,6 +652,22 @@ 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 */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@ -483,6 +684,14 @@ 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 */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
@ -535,7 +744,7 @@ DRT_Status DR_Kit_Load( DRT_Base *, char *);
|
||||
/* DR_Kit_Sample_Load */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
DRT_Status DR_Kit_Sample_Load( DRT_Kit *, DRT_SampleRate);
|
||||
DRT_Status DR_Kit_Sample_Load( DRT_Kit *);
|
||||
|
||||
|
||||
|
||||
@ -547,22 +756,6 @@ DRT_Status DR_Kit_Sample_UnLoad( DRT_Kit *);
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* DR_DataStruct_Init */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
DRT_Status DR_DataStruct_Init( DRT_Base *, DRT_SampleRate);
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* DR_DataStruct_DeInit */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
|
||||
DRT_Status DR_DataStruct_DeInit( DRT_Base *);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* DR_Kits_Sample_Load */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@ -587,6 +780,14 @@ DRT_Status DR_Kits_Load( DRT_Base *);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* DR_Kits_Stats_Dump */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
DRT_Status DR_Kits_Stats_Dump( DRT_Base *);
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* DR_Kits_Dump */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@ -595,6 +796,78 @@ 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_
|
||||
|
||||
|
||||
|
69
drummer.c
69
drummer.c
@ -21,7 +21,7 @@ DRT_Status DR_Init( DRT_Base *Base_Ptr)
|
||||
DRT_Status status;
|
||||
|
||||
|
||||
if( ( status = DR_DataStruct_Init( Base_Ptr, DRD_SAMPLE_RATE_DEFAULT)) != DRS_OK)
|
||||
if( ( status = DR_DataStruct_Init( Base_Ptr, DRD_SAMPLE_RATE_DEFAULT, DRD_THREAD_NUMBER_DEFAULT)) != DRS_OK)
|
||||
{
|
||||
fprintf( stderr, "Can't init data structures (%d) !", status);
|
||||
return( status);
|
||||
@ -66,6 +66,7 @@ int main( int argc, char **argv)
|
||||
DRT_Base base;
|
||||
DRT_Status status;
|
||||
DRT_Kit *kit_ptr;
|
||||
DRT_Id i;
|
||||
|
||||
|
||||
if( ( status = DR_Init( &base)) != DRS_OK)
|
||||
@ -77,16 +78,16 @@ int main( int argc, char **argv)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
if( ( status = DR_Kit_Id_Find( &kit_ptr, base.Kit_DS_Ptr, 0)) != DRS_OK)
|
||||
// if( ( status = DR_Kit_Name_Find( &kit_ptr, base.Kit_DS_Ptr, "Mars LM1: 01-777 Clean Kit")) != DRS_OK)
|
||||
// if( ( status = DR_Kit_Logical_Id_Find( &kit_ptr, base.Kit_DS_Ptr, 31)) != DRS_OK)
|
||||
// if( ( status = DR_Kit_Name_Find( &kit_ptr, base.Kit_DS_Ptr, "HardElectro1")) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ( status = DR_Kit_Sample_Load( kit_ptr, base.SampleRate)) != DRS_OK)
|
||||
if( ( status = DR_Kit_Sample_Load( kit_ptr)) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
@ -98,20 +99,76 @@ int main( int argc, char **argv)
|
||||
exit( -1);
|
||||
}
|
||||
*/
|
||||
/*
|
||||
fprintf( stderr, "After!\n");
|
||||
|
||||
if( ( status = DR_Kit_Sample_Load( kit_ptr, base.SampleRate)) != DRS_OK)
|
||||
if( ( status = DR_Kit_Sample_Load( kit_ptr)) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
*/
|
||||
|
||||
// }
|
||||
|
||||
DR_Kits_Sample_Load( &base);
|
||||
|
||||
/*
|
||||
for( i = 0; i < 264; i++)
|
||||
{
|
||||
if( ( status = DR_Kit_Logical_Id_Find( &kit_ptr, base.Kit_DS_Ptr, i)) == DRS_OK)
|
||||
{
|
||||
printf( "Loading Logical Id: (%d)\n", i);
|
||||
DR_Kit_Sample_Load( kit_ptr);
|
||||
}
|
||||
}
|
||||
*/
|
||||
/*
|
||||
if( DR_Task_Wait( &base) != DRS_OK)
|
||||
{
|
||||
printf( "DR_Task_Wait failed (%d)!\n");
|
||||
exit(-1);
|
||||
}
|
||||
*/
|
||||
|
||||
fprintf( stderr, "hello world!\n");
|
||||
|
||||
|
||||
|
||||
// DR_Kits_Graph_Dump( &base);
|
||||
|
||||
/*
|
||||
if( ( status = DR_Kits_Dump( &base)) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
*/
|
||||
/*
|
||||
DR_Task_Run( &base, (DRT_Instrument *)1);
|
||||
DR_Task_Run( &base, (DRT_Instrument *)2);
|
||||
DR_Task_Run( &base, (DRT_Instrument *)3);
|
||||
*/
|
||||
// sleep( 10);
|
||||
|
||||
/*
|
||||
if( ( status = DR_Tasks_Dump( &base)) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
|
||||
if( ( status = DR_Task_Wait( &base)) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
*/
|
||||
if( ( status = DR_Tasks_Dump( &base)) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
|
||||
if( ( status = DR_Kits_Stats_Dump( &base)) != DRS_OK)
|
||||
{
|
||||
exit( -1);
|
||||
}
|
||||
|
||||
if( ( status = DR_DeInit( &base)) != DRS_OK)
|
||||
{
|
||||
|
35
drummer.h
35
drummer.h
@ -13,6 +13,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <libgen.h>
|
||||
#include <glob.h>
|
||||
@ -31,8 +32,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Global definitions */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@ -42,13 +41,28 @@ typedef short DRT_Boolean;
|
||||
#define DRD_FALSE ( DRT_Boolean) 0
|
||||
#define DRD_TRUE ( DRT_Boolean) 1
|
||||
|
||||
#define DR_BOOLEAN_VALUE_FALSE_IS( v) ( (v) == DRD_FALSE)
|
||||
#define DR_BOOLEAN_VALUE_TRUE_IS( v) ( (v) == DRD_TRUE)
|
||||
|
||||
#define DR_BOOLEAN_VALUE_ASCII_GET( v) ( DR_BOOLEAN_VALUE_FALSE_IS( (v)) ? "FALSE" : ( DR_BOOLEAN_VALUE_TRUE_IS( (v)) ? "TRUE" : "???"))
|
||||
|
||||
|
||||
|
||||
#define DRD_NO 'n'
|
||||
#define DRD_YES 'y'
|
||||
|
||||
#define DR_MAX(A,B) (((A) < (B)) ? (B) : (A))
|
||||
#define DR_MIN(A,B) (((A) > (B)) ? (B) : (A))
|
||||
|
||||
|
||||
|
||||
#define DRD_SAMPLE_RATE_DEFAULT 44100
|
||||
#define DRD_THREAD_NUMBER_DEFAULT 16L
|
||||
#define DRD_TASK_LOAD_LAYER_DEFAULT DRD_TRUE
|
||||
#define DRD_TASK_LOAD_INSTRUMENT_DEFAULT DRD_FALSE
|
||||
#define DRD_TASK_LOAD_KIT_DEFAULT DRD_FALSE
|
||||
#define DRD_TASK_SYNC_KIT_DEFAULT DRD_TRUE
|
||||
#define DRD_TASK_SYNC_KITS_DEFAULT DRD_TRUE
|
||||
|
||||
|
||||
|
||||
@ -74,17 +88,12 @@ typedef short DRT_Status;
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/* DRT_Base */
|
||||
/*---------------------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Drummer Includes */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
typedef int DRT_SampleRate;
|
||||
|
||||
typedef struct DRT_Base
|
||||
{
|
||||
NDT_Root *Kit_DS_Ptr;
|
||||
DRT_SampleRate SampleRate;
|
||||
} DRT_Base;
|
||||
#include <datastruct.h>
|
||||
#include <lv2_plugin.h>
|
||||
|
||||
|
||||
|
||||
@ -125,7 +134,5 @@ int main( int, char **);
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <datastruct.h>
|
||||
#include <lv2_plugin.h>
|
||||
|
||||
#endif
|
||||
|
2
go.sh
2
go.sh
@ -13,7 +13,7 @@ done
|
||||
|
||||
|
||||
|
||||
cmd="gcc -g -o drummer ${module_list//.c/.o} drummer.o -fPIC -ldl -lxml2 -lz -llzma -lm -lsndfile -lsamplerate"
|
||||
cmd="gcc -g -o drummer ${module_list//.c/.o} drummer.o -fPIC -ldl -lpthread -lxml2 -lz -llzma -lm -lsndfile -lsamplerate"
|
||||
|
||||
echo ${cmd}
|
||||
eval ${cmd}
|
||||
|
48
lv2_plugin.c
48
lv2_plugin.c
@ -32,7 +32,7 @@ DRT_Status DR_LV2_Kit_Sample_Load( DRT_LV2_Base *LV2_Base_Ptr, DRT_Kit *Kit_P
|
||||
{
|
||||
// fprintf( stderr, "Sample Rate: (%d)\n", LV2_Base_Ptr->Base.SampleRate);
|
||||
|
||||
if( ( status = DR_Kit_Sample_Load( Kit_Ptr, LV2_Base_Ptr->Base.SampleRate)) == DRS_OK)
|
||||
if( ( status = DR_Kit_Sample_Load( Kit_Ptr)) == DRS_OK)
|
||||
{
|
||||
LV2_Base_Ptr->Kit_Cur_Ptr = Kit_Ptr;
|
||||
|
||||
@ -67,7 +67,7 @@ DRT_Status DR_LV2_Kit_Sample_Load( DRT_LV2_Base *LV2_Base_Ptr, DRT_Kit *Kit_P
|
||||
pthread_mutex_unlock( &( LV2_Base_Ptr->Load_Mutex));
|
||||
|
||||
LV2_Base_Ptr->Sample_Number = Kit_Ptr->Instrument_DS_Ptr->Index_Tab[NDD_INDEX_PRIMARY].Node_Number;
|
||||
fprintf( stderr, "Loaded: (%d) samples!\n", LV2_Base_Ptr->Sample_Number);
|
||||
fprintf( stderr, "Loaded: (%d) instruments!\n", LV2_Base_Ptr->Sample_Number);
|
||||
|
||||
// DR_Kit_Dump( Kit_Ptr, 0);
|
||||
}
|
||||
@ -95,14 +95,32 @@ DRT_Status DR_LV2_CurKit_Sample_Load( DRT_LV2_Base *LV2_Base_Ptr)
|
||||
|
||||
if( kit_id == LV2_Base_Ptr->Kit_Id)
|
||||
{
|
||||
fprintf( stderr, "Same Kit id: (%d) Bank/Program: (%d/%d/%d)!\n", kit_id, LV2_Base_Ptr->Bank_Id_LSB_New, LV2_Base_Ptr->Bank_Id_MSB_New, LV2_Base_Ptr->Program_Id_New);
|
||||
fprintf( stderr, "Same kit id: (%d) Bank/Program: (%d/%d/%d) Name: [%s]!\n",
|
||||
kit_id, LV2_Base_Ptr->Bank_Id_LSB_New, LV2_Base_Ptr->Bank_Id_MSB_New, LV2_Base_Ptr->Program_Id_New, LV2_Base_Ptr->Kit_Cur_Ptr->Name);
|
||||
status = DRS_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ( status = DR_Kit_Id_Find( &Kit_Ptr, LV2_Base_Ptr->Base.Kit_DS_Ptr, kit_id)) == DRS_OK)
|
||||
if( ( status = DR_Kit_Logical_Id_Find( &Kit_Ptr, LV2_Base_Ptr->Base.Kit_DS_Ptr, kit_id)) != DRS_OK)
|
||||
{
|
||||
fprintf( stderr, "New Kit id: (%d) Bank/Program: (%d/%d/%d)!\n", kit_id, LV2_Base_Ptr->Bank_Id_LSB_New, LV2_Base_Ptr->Bank_Id_MSB_New, LV2_Base_Ptr->Program_Id_New);
|
||||
fprintf( stderr, "Can't find kit id: (%d) Bank/Program: (%d/%d/%d)!\n",
|
||||
kit_id, LV2_Base_Ptr->Bank_Id_LSB_New, LV2_Base_Ptr->Bank_Id_MSB_New, LV2_Base_Ptr->Program_Id_New);
|
||||
|
||||
if( LV2_Base_Ptr->Kit_Id == DRD_ID_UNKNOWN)
|
||||
{
|
||||
fprintf( stderr, "No Kit available!\n");
|
||||
status=DRS_KO;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf( stderr, "Keep kit id: (%d) Bank/Program: (%d/%d/%d) Name: [%s]!\n",
|
||||
LV2_Base_Ptr->Kit_Id, LV2_Base_Ptr->Bank_Id_LSB, LV2_Base_Ptr->Bank_Id_MSB, LV2_Base_Ptr->Program_Id, LV2_Base_Ptr->Kit_Cur_Ptr->Name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf( stderr, "New kit id: (%d) Bank/Program: (%d/%d/%d) Name: [%s]!\n",
|
||||
kit_id, LV2_Base_Ptr->Bank_Id_LSB_New, LV2_Base_Ptr->Bank_Id_MSB_New, LV2_Base_Ptr->Program_Id_New, Kit_Ptr->Name);
|
||||
|
||||
LV2_Base_Ptr->Bank_Id_LSB = LV2_Base_Ptr->Bank_Id_LSB_New;
|
||||
LV2_Base_Ptr->Bank_Id_MSB = LV2_Base_Ptr->Bank_Id_MSB_New;
|
||||
@ -480,7 +498,7 @@ static LV2_Handle DR_LV2_Instantiate( const LV2_Descriptor *LV2_Descriptor
|
||||
lv2_base_ptr->Bank_Id_LSB_New = 0;
|
||||
lv2_base_ptr->Bank_Id_MSB_New = 0;
|
||||
lv2_base_ptr->Program_Id_New = 0;
|
||||
lv2_base_ptr->Kit_Id = -1;
|
||||
lv2_base_ptr->Kit_Id = DRD_ID_UNKNOWN;
|
||||
lv2_base_ptr->Current_Path = NULL;
|
||||
lv2_base_ptr->CurReq = -1;
|
||||
|
||||
@ -569,21 +587,21 @@ static LV2_Handle DR_LV2_Instantiate( const LV2_Descriptor *LV2_Descriptor
|
||||
lv2_base_ptr->Pans[i] = NULL;
|
||||
}
|
||||
|
||||
if( ( status = DR_DataStruct_Init( &( lv2_base_ptr->Base), (DRT_SampleRate)SampleRate)) != DRS_OK)
|
||||
if( ( status = DR_DataStruct_Init( &( lv2_base_ptr->Base), (DRT_SampleRate)SampleRate, DRD_THREAD_NUMBER_DEFAULT)) != DRS_OK)
|
||||
{
|
||||
fprintf( stderr, "Can't init data structures (%d) !", status);
|
||||
fprintf( stderr, "Can't init data structures (%d)!\n", status);
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ( status = DR_Kits_Load( & ( lv2_base_ptr->Base))) != DRS_OK)
|
||||
{
|
||||
fprintf( stderr, "Can't load kits (%d) !", status);
|
||||
fprintf( stderr, "Can't load kits (%d)!\n", status);
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ( status = DR_LV2_CurKit_Sample_Load( lv2_base_ptr)) != DRS_OK)
|
||||
{
|
||||
fprintf( stderr, "Can't load kit sample (%d) !", status);
|
||||
fprintf( stderr, "Can't load kit sample (%d)!\n", status);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -723,7 +741,7 @@ static void DR_LV2_Run( LV2_Handle Instance_Ptr, uint32_t N_Samples)
|
||||
|
||||
LV2_ATOM_SEQUENCE_FOREACH( lv2_base_ptr->Control_Port, ev_ptr)
|
||||
{
|
||||
fprintf( stderr, "LV2 Event!\n");
|
||||
// fprintf( stderr, "LV2 Event!\n");
|
||||
|
||||
if( ev_ptr->body.type == lv2_base_ptr->URIS.midi_event)
|
||||
{
|
||||
@ -735,7 +753,7 @@ static void DR_LV2_Run( LV2_Handle Instance_Ptr, uint32_t N_Samples)
|
||||
uint8_t value;
|
||||
|
||||
|
||||
fprintf( stderr, " Midi Event!\n");
|
||||
// fprintf( stderr, " Midi Event!\n");
|
||||
|
||||
if( ( lv2_base_ptr->Channel_Nb == 0) || ( channel == ( lv2_base_ptr->Channel_Nb - 1)))
|
||||
{
|
||||
@ -834,7 +852,7 @@ static void DR_LV2_Run( LV2_Handle Instance_Ptr, uint32_t N_Samples)
|
||||
|
||||
default:
|
||||
{
|
||||
fprintf( stderr, "Unhandeled status: (%i) Data 1: (%i) Data 2: (%d)\n", ( *data) >> 4, data[1], data[2]);
|
||||
// fprintf( stderr, "Unhandeled status: (%i) Data 1: (%i) Data 2: (%d)\n", ( *data) >> 4, data[1], data[2]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1072,6 +1090,10 @@ static void DR_LV2_Cleanup( LV2_Handle Instance_Ptr)
|
||||
|
||||
fprintf( stderr, "LV2 Cleanup!\n");
|
||||
|
||||
|
||||
DR_Tasks_Dump( &( lv2_base_ptr->Base));
|
||||
DR_Kits_Stats_Dump( &( lv2_base_ptr->Base));
|
||||
|
||||
if( ( status = DR_DataStruct_DeInit( &( lv2_base_ptr->Base))) != DRS_OK)
|
||||
{
|
||||
printf( "Can't deinit data structures (%d)!\n", status);
|
||||
|
Loading…
Reference in New Issue
Block a user