535 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			535 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*---------------------------------------------------------------------------------*/
 | 
						|
/* Includes                                                                        */
 | 
						|
/*---------------------------------------------------------------------------------*/
 | 
						|
 | 
						|
#ifndef _LV2_PLUGIN_H_
 | 
						|
#define _LV2_PLUGIN_H_
 | 
						|
 | 
						|
#include <pthread.h>
 | 
						|
 | 
						|
#include "lv2/lv2plug.in/ns/ext/atom/forge.h"
 | 
						|
// util includes atom.h
 | 
						|
#include "lv2/lv2plug.in/ns/ext/atom/util.h"
 | 
						|
#include "lv2/lv2plug.in/ns/lv2core/lv2.h"
 | 
						|
#include "lv2/lv2plug.in/ns/ext/urid/urid.h"
 | 
						|
#include "lv2/lv2plug.in/ns/ext/state/state.h"
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/* Global definitions                                                         */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
// lv2 stuff
 | 
						|
 | 
						|
#define DRD_DRUMMER_URI      "http://rx3.net/AlkorZ3/drummer"
 | 
						|
#define DRD_GAIN_MIN        -60.0f
 | 
						|
#define DRD_GAIN_MAX         6.0f
 | 
						|
#define DRD_VELOCITY_MIN     0
 | 
						|
#define DRD_VELOCITY_MAX     127
 | 
						|
 | 
						|
#define DRD_DB3SCALE        -0.8317830986718104f
 | 
						|
#define DRD_DB3SCALEPO       1.8317830986718104f
 | 
						|
 | 
						|
// taken from lv2 example amp plugin
 | 
						|
#define DRD_DB_CO(g)         ( ( g) > DRD_GAIN_MIN ? powf( 10.0f, ( g) * 0.05f) : 0.0f)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#define DRD_PORT_NUMBER_MAX  32
 | 
						|
 | 
						|
#define DRD_REQ_BUF_SIZE 10
 | 
						|
 | 
						|
 | 
						|
 | 
						|
typedef enum
 | 
						|
{
 | 
						|
    DRD_LV2_CONTROL = 0,
 | 
						|
    DRD_LV2_MASTER_LEFT,
 | 
						|
    DRD_LV2_MASTER_RIGHT,
 | 
						|
    DRD_LV2_LEFT_00,
 | 
						|
    DRD_LV2_RIGHT_00,
 | 
						|
    DRD_LV2_LEFT_01,
 | 
						|
    DRD_LV2_RIGHT_01,
 | 
						|
    DRD_LV2_LEFT_02,
 | 
						|
    DRD_LV2_RIGHT_02,
 | 
						|
    DRD_LV2_LEFT_03,
 | 
						|
    DRD_LV2_RIGHT_03,
 | 
						|
    DRD_LV2_LEFT_04,
 | 
						|
    DRD_LV2_RIGHT_04,
 | 
						|
    DRD_LV2_LEFT_05,
 | 
						|
    DRD_LV2_RIGHT_05,
 | 
						|
    DRD_LV2_LEFT_06,
 | 
						|
    DRD_LV2_RIGHT_06,
 | 
						|
    DRD_LV2_LEFT_07,
 | 
						|
    DRD_LV2_RIGHT_07,
 | 
						|
    DRD_LV2_LEFT_08,
 | 
						|
    DRD_LV2_RIGHT_08,
 | 
						|
    DRD_LV2_LEFT_09,
 | 
						|
    DRD_LV2_RIGHT_09,
 | 
						|
    DRD_LV2_LEFT_10,
 | 
						|
    DRD_LV2_RIGHT_10,
 | 
						|
    DRD_LV2_LEFT_11,
 | 
						|
    DRD_LV2_RIGHT_11,
 | 
						|
    DRD_LV2_LEFT_12,
 | 
						|
    DRD_LV2_RIGHT_12,
 | 
						|
    DRD_LV2_LEFT_13,
 | 
						|
    DRD_LV2_RIGHT_13,
 | 
						|
    DRD_LV2_LEFT_14,
 | 
						|
    DRD_LV2_RIGHT_14,
 | 
						|
    DRD_LV2_LEFT_15,
 | 
						|
    DRD_LV2_RIGHT_15,
 | 
						|
    DRD_LV2_LEFT_16,
 | 
						|
    DRD_LV2_RIGHT_16,
 | 
						|
    DRD_LV2_LEFT_17,
 | 
						|
    DRD_LV2_RIGHT_17,
 | 
						|
    DRD_LV2_LEFT_18,
 | 
						|
    DRD_LV2_RIGHT_18,
 | 
						|
    DRD_LV2_LEFT_19,
 | 
						|
    DRD_LV2_RIGHT_19,
 | 
						|
    DRD_LV2_LEFT_20,
 | 
						|
    DRD_LV2_RIGHT_20,
 | 
						|
    DRD_LV2_LEFT_21,
 | 
						|
    DRD_LV2_RIGHT_21,
 | 
						|
    DRD_LV2_LEFT_22,
 | 
						|
    DRD_LV2_RIGHT_22,
 | 
						|
    DRD_LV2_LEFT_23,
 | 
						|
    DRD_LV2_RIGHT_23,
 | 
						|
    DRD_LV2_LEFT_24,
 | 
						|
    DRD_LV2_RIGHT_24,
 | 
						|
    DRD_LV2_LEFT_25,
 | 
						|
    DRD_LV2_RIGHT_25,
 | 
						|
    DRD_LV2_LEFT_26,
 | 
						|
    DRD_LV2_RIGHT_26,
 | 
						|
    DRD_LV2_LEFT_27,
 | 
						|
    DRD_LV2_RIGHT_27,
 | 
						|
    DRD_LV2_LEFT_28,
 | 
						|
    DRD_LV2_RIGHT_28,
 | 
						|
    DRD_LV2_LEFT_29,
 | 
						|
    DRD_LV2_RIGHT_29,
 | 
						|
    DRD_LV2_LEFT_30,
 | 
						|
    DRD_LV2_RIGHT_30,
 | 
						|
    DRD_LV2_LEFT_31,
 | 
						|
    DRD_LV2_RIGHT_31,
 | 
						|
    DRD_LV2_BASENOTE,
 | 
						|
    DRD_LV2_GAIN_00,
 | 
						|
    DRD_LV2_GAIN_01,
 | 
						|
    DRD_LV2_GAIN_02,
 | 
						|
    DRD_LV2_GAIN_03,
 | 
						|
    DRD_LV2_GAIN_04,
 | 
						|
    DRD_LV2_GAIN_05,
 | 
						|
    DRD_LV2_GAIN_06,
 | 
						|
    DRD_LV2_GAIN_07,
 | 
						|
    DRD_LV2_GAIN_08,
 | 
						|
    DRD_LV2_GAIN_09,
 | 
						|
    DRD_LV2_GAIN_10,
 | 
						|
    DRD_LV2_GAIN_11,
 | 
						|
    DRD_LV2_GAIN_12,
 | 
						|
    DRD_LV2_GAIN_13,
 | 
						|
    DRD_LV2_GAIN_14,
 | 
						|
    DRD_LV2_GAIN_15,
 | 
						|
    DRD_LV2_GAIN_16,
 | 
						|
    DRD_LV2_GAIN_17,
 | 
						|
    DRD_LV2_GAIN_18,
 | 
						|
    DRD_LV2_GAIN_19,
 | 
						|
    DRD_LV2_GAIN_20,
 | 
						|
    DRD_LV2_GAIN_21,
 | 
						|
    DRD_LV2_GAIN_22,
 | 
						|
    DRD_LV2_GAIN_23,
 | 
						|
    DRD_LV2_GAIN_24,
 | 
						|
    DRD_LV2_GAIN_25,
 | 
						|
    DRD_LV2_GAIN_26,
 | 
						|
    DRD_LV2_GAIN_27,
 | 
						|
    DRD_LV2_GAIN_28,
 | 
						|
    DRD_LV2_GAIN_29,
 | 
						|
    DRD_LV2_GAIN_30,
 | 
						|
    DRD_LV2_GAIN_31,
 | 
						|
    DRD_LV2_PAN_00,
 | 
						|
    DRD_LV2_PAN_01,
 | 
						|
    DRD_LV2_PAN_02,
 | 
						|
    DRD_LV2_PAN_03,
 | 
						|
    DRD_LV2_PAN_04,
 | 
						|
    DRD_LV2_PAN_05,
 | 
						|
    DRD_LV2_PAN_06,
 | 
						|
    DRD_LV2_PAN_07,
 | 
						|
    DRD_LV2_PAN_08,
 | 
						|
    DRD_LV2_PAN_09,
 | 
						|
    DRD_LV2_PAN_10,
 | 
						|
    DRD_LV2_PAN_11,
 | 
						|
    DRD_LV2_PAN_12,
 | 
						|
    DRD_LV2_PAN_13,
 | 
						|
    DRD_LV2_PAN_14,
 | 
						|
    DRD_LV2_PAN_15,
 | 
						|
    DRD_LV2_PAN_16,
 | 
						|
    DRD_LV2_PAN_17,
 | 
						|
    DRD_LV2_PAN_18,
 | 
						|
    DRD_LV2_PAN_19,
 | 
						|
    DRD_LV2_PAN_20,
 | 
						|
    DRD_LV2_PAN_21,
 | 
						|
    DRD_LV2_PAN_22,
 | 
						|
    DRD_LV2_PAN_23,
 | 
						|
    DRD_LV2_PAN_24,
 | 
						|
    DRD_LV2_PAN_25,
 | 
						|
    DRD_LV2_PAN_26,
 | 
						|
    DRD_LV2_PAN_27,
 | 
						|
    DRD_LV2_PAN_28,
 | 
						|
    DRD_LV2_PAN_29,
 | 
						|
    DRD_LV2_PAN_30,
 | 
						|
    DRD_LV2_PAN_31,
 | 
						|
    DRD_LV2_CORE_EVENT,
 | 
						|
    DRD_LV2_NUM_PORTS
 | 
						|
} DRT_Port_Index;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    LV2_URID  midi_event;
 | 
						|
    LV2_URID  ui_msg;
 | 
						|
    LV2_URID  kit_path;
 | 
						|
    LV2_URID  atom_eventTransfer;
 | 
						|
    LV2_URID  atom_object;
 | 
						|
    LV2_URID  string_urid;
 | 
						|
    LV2_URID  bool_urid;
 | 
						|
    LV2_URID  int_urid;
 | 
						|
    LV2_URID  get_state;
 | 
						|
    LV2_URID  midi_info;
 | 
						|
    LV2_URID  sample_trigger;
 | 
						|
    LV2_URID  velocity_toggle;
 | 
						|
    LV2_URID  note_off_toggle;
 | 
						|
    LV2_URID  channel_nb;
 | 
						|
    LV2_URID  zero_position;
 | 
						|
    LV2_URID  sample_add;
 | 
						|
    LV2_URID  sample_remove;
 | 
						|
} DRT_Drummer_URIS;
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    SF_INFO     *Info;
 | 
						|
    char         Active;
 | 
						|
    uint32_t     Offset;
 | 
						|
    uint32_t     Limit;
 | 
						|
    uint32_t     Layer_Count;
 | 
						|
    float        Velocity;
 | 
						|
//    drmr_layer  *layers;
 | 
						|
    float       *Data;
 | 
						|
    int          Data_Offset;
 | 
						|
} DRT_Sample;
 | 
						|
*/
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    DRT_Instrument  *Instrument_Ptr;
 | 
						|
    DRT_Layer       *Layer_Ptr;
 | 
						|
    float           *Data_Ptr;
 | 
						|
    uint32_t         Limit;
 | 
						|
    SF_INFO         *SF_Info_Ptr;
 | 
						|
    int              Data_Offset;
 | 
						|
    char             Active;
 | 
						|
    uint32_t         Offset;
 | 
						|
    float            Velocity;
 | 
						|
    bool             Sustained;
 | 
						|
} DRT_Sample;
 | 
						|
 | 
						|
typedef struct  DRT_LV2_Base
 | 
						|
{
 | 
						|
    DRT_Base             Base;
 | 
						|
 | 
						|
    // Ports
 | 
						|
    float               *Master_Left;
 | 
						|
    float               *Master_Right;
 | 
						|
    float              **Left;
 | 
						|
    float              **Right;
 | 
						|
    LV2_Atom_Sequence   *Control_Port;
 | 
						|
    LV2_Atom_Sequence   *Core_Event_Port;
 | 
						|
 | 
						|
    LV2_Atom_Forge       Forge;
 | 
						|
 | 
						|
    // params
 | 
						|
    int                  Channel;
 | 
						|
    int                  Channel_Nb;
 | 
						|
    int                  Zero_Position;
 | 
						|
    float              **Gains;
 | 
						|
    float              **Pans;
 | 
						|
    float               *BaseNote;
 | 
						|
 | 
						|
    bool                 Sustain;
 | 
						|
    
 | 
						|
    // URIs
 | 
						|
    LV2_URID_Map        *Map_Ptr;
 | 
						|
    DRT_Drummer_URIS     URIS;
 | 
						|
 | 
						|
    // Kit info
 | 
						|
    DRT_Kit             *Kit_Cur_Ptr;
 | 
						|
    uint8_t              Bank_Id_LSB;
 | 
						|
    uint8_t              Bank_Id_MSB;
 | 
						|
    uint8_t              Program_Id;
 | 
						|
    uint8_t              Bank_Id_LSB_New;
 | 
						|
    uint8_t              Bank_Id_MSB_New;
 | 
						|
    uint8_t              Program_Id_New;
 | 
						|
    DRT_Kit_Id           Kit_Id;
 | 
						|
    char                *Current_Path;
 | 
						|
    char               **Request_Buf;
 | 
						|
    int                  CurReq;
 | 
						|
 | 
						|
    // Samples
 | 
						|
    DRT_Sample           Samples[DRD_PORT_NUMBER_MAX];
 | 
						|
    uint8_t              Sample_Number;
 | 
						|
 | 
						|
 | 
						|
    // Loading Thread Stuff
 | 
						|
    pthread_mutex_t      Load_Mutex;
 | 
						|
    pthread_cond_t       Load_Cond;
 | 
						|
    pthread_t            Load_Thread;
 | 
						|
} DRT_LV2_Base;
 | 
						|
 | 
						|
 | 
						|
/*    
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    // Ports
 | 
						|
    float               *master_left;
 | 
						|
    float               *master_right;
 | 
						|
    float              **left;
 | 
						|
    float              **right;
 | 
						|
    LV2_Atom_Sequence   *control_port;
 | 
						|
    LV2_Atom_Sequence   *core_event_port;
 | 
						|
 | 
						|
    LV2_Atom_Forge       forge;
 | 
						|
 | 
						|
    // params
 | 
						|
    int                  channel;
 | 
						|
    bool                 ignore_velocity;
 | 
						|
    bool                 ignore_note_off;
 | 
						|
    int                  channel_nb;
 | 
						|
    int                  zero_position;
 | 
						|
    float              **gains;
 | 
						|
    float              **pans;
 | 
						|
    float               *baseNote;
 | 
						|
    double               rate;
 | 
						|
 | 
						|
    // URIs
 | 
						|
    LV2_URID_Map        *map;
 | 
						|
    drmr_uris            uris;
 | 
						|
 | 
						|
    // Kit info
 | 
						|
    char                *current_path;
 | 
						|
    char               **request_buf;
 | 
						|
    int                  curReq;
 | 
						|
 | 
						|
    // Samples
 | 
						|
    drmr_sample         *samples;
 | 
						|
    uint8_t              num_samples;
 | 
						|
 | 
						|
    // loading thread stuff
 | 
						|
    pthread_mutex_t      load_mutex;
 | 
						|
    pthread_cond_t       load_cond;
 | 
						|
    pthread_t            load_thread;
 | 
						|
} DrMr;
 | 
						|
*/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
static inline void  DR_Map_Drummer_URIS( LV2_URID_Map  *Map_Ptr, DRT_Drummer_URIS  *URIS)
 | 
						|
{
 | 
						|
    URIS->midi_event         = Map_Ptr->map( Map_Ptr->handle, "http://lv2plug.in/ns/ext/midi#MidiEvent");
 | 
						|
    URIS->string_urid        = Map_Ptr->map( Map_Ptr->handle, LV2_ATOM__String);
 | 
						|
    URIS->bool_urid          = Map_Ptr->map( Map_Ptr->handle, LV2_ATOM__Bool);
 | 
						|
    URIS->int_urid           = Map_Ptr->map( Map_Ptr->handle, LV2_ATOM__Int);
 | 
						|
    URIS->ui_msg             = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#uimsg");
 | 
						|
    URIS->kit_path           = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#kitpath");
 | 
						|
    URIS->get_state          = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#getstate");
 | 
						|
    URIS->midi_info          = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#midiinfo");
 | 
						|
    URIS->sample_trigger     = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#sampletrigger");
 | 
						|
    URIS->velocity_toggle    = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#velocitytoggle");
 | 
						|
    URIS->note_off_toggle    = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#noteofftoggle");
 | 
						|
    URIS->channel_nb         = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#channelnb");
 | 
						|
    URIS->zero_position      = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#zeroposition");
 | 
						|
    URIS->sample_add         = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#sampleadd");
 | 
						|
    URIS->sample_remove      = Map_Ptr->map( Map_Ptr->handle, DRD_DRUMMER_URI "#sampleremove");
 | 
						|
    URIS->atom_eventTransfer = Map_Ptr->map( Map_Ptr->handle, LV2_ATOM__eventTransfer);
 | 
						|
    URIS->atom_object        = Map_Ptr->map( Map_Ptr->handle, LV2_ATOM__Object);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#  ifdef _LV2_PLUGIN_C_
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/* Private Definitions                                                        */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
#  endif // ifdef _LV2_PLUGIN_C_
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#  ifndef _LV2_PLUGIN_C_
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/* Public Prototypes                                                          */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#  else // ifndef _LV2_PLUGIN_C_
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/* Private Prototypes                                                         */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static void  *DR_LV2_Load_Thread( DRT_LV2_Base  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static inline LV2_Atom  *DR_LV2_Message_Midi_Info_Build( DRT_LV2_Base  *, uint8_t  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
DRT_Status  DR_LV2_Kit_Samples_Load( DRT_LV2_Base  *, DRT_Kit  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
DRT_Status  DR_LV2_CurKit_Samples_Load( DRT_LV2_Base  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static inline void  DR_Layer_To_Sample( DRT_Sample  *, float);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static inline void  DR_Sample_Trigger( DRT_LV2_Base  *, int, uint8_t  *const, uint32_t);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static inline void  DR_Sample_Untrigger( DRT_LV2_Base  *, int, uint32_t);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static inline void  DR_Sample_UnSustain( DRT_LV2_Base  *, uint32_t);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static LV2_Handle  DR_LV2_Instantiate(const LV2_Descriptor  *, double, const char  *, const LV2_Feature  * const  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static void  DR_LV2_Connect_Port( LV2_Handle, uint32_t, void  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static void  DR_LV2_Run( LV2_Handle, uint32_t);
 | 
						|
 | 
						|
 | 
						|
    
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static void  DR_LV2_Cleanup( LV2_Handle);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static LV2_State_Status  DR_LV2_Save_State( LV2_Handle, LV2_State_Store_Function, void  *, uint32_t, const LV2_Feature  *const  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static LV2_State_Status  DR_LV2_Restore_State( LV2_Handle, LV2_State_Retrieve_Function, void  *, uint32_t, const LV2_Feature  *const   *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
static const void  *DR_LV2_Extension_Data( const char  *);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
/*                                                                            */
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
LV2_SYMBOL_EXPORT const LV2_Descriptor  *lv2_descriptor( uint32_t);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#  endif // ifndef _LV2_PLUGIN_C_
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*----------------------------------------------------------------------------*/
 | 
						|
 | 
						|
#endif // ifndef _LV2_PLUGIN_H_
 | 
						|
 |