- initial import
git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@37 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
// --------------------------------------------------------------
|
||||
// --------------------------------------------------------------
|
||||
#ifndef _ENV_H_
|
||||
#define _ENV_H_
|
||||
|
||||
#include "synth_defs.h"
|
||||
|
||||
#define ENV_TOL ((synth_float_t)(1E-4))
|
||||
#define ENV_KE ((synth_float_t)(1-exp(-1)))
|
||||
|
||||
#define ENV_MIN_A (0.001) // s
|
||||
#define ENV_MIN_D (0.005) // s
|
||||
#define ENV_MIN_R (0.005) // s
|
||||
|
||||
// --------------------------------------------------------------
|
||||
// Types
|
||||
// --------------------------------------------------------------
|
||||
enum
|
||||
{
|
||||
ENV_PARAM2_A,
|
||||
ENV_PARAM2_D,
|
||||
ENV_PARAM2_S,
|
||||
ENV_PARAM2_R,
|
||||
ENV_PARAM2_END
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
env_state_idle = 0,
|
||||
env_state_attack,
|
||||
env_state_attack_retrigger,
|
||||
env_state_decay,
|
||||
env_state_sustain,
|
||||
env_state_release
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
env_event_trigger = 0,
|
||||
env_event_retrigger,
|
||||
env_event_release,
|
||||
};
|
||||
|
||||
typedef struct _senv_param_t
|
||||
{
|
||||
synth_float_t Ta;
|
||||
synth_float_t Td;
|
||||
synth_float_t Vs;
|
||||
synth_float_t Tr;
|
||||
|
||||
} env_param_t;
|
||||
|
||||
typedef struct _senvgen_t
|
||||
{
|
||||
synth_float_t fs;
|
||||
UINT32 bufsize;
|
||||
UINT32 state;
|
||||
env_param_t param;
|
||||
synth_float_t k, s, sr, sf;
|
||||
synth_float_t a_a, b_a;
|
||||
synth_float_t a_d, b_d;
|
||||
synth_float_t a_r, b_r;
|
||||
synth_float_t *pOut;
|
||||
|
||||
} envgen_t;
|
||||
|
||||
// --------------------------------------------------------------
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// --------------------------------------------------------------
|
||||
// Exported functions
|
||||
// --------------------------------------------------------------
|
||||
void ENV_Init(envgen_t *pObj, synth_float_t fs);
|
||||
void ENV_Free(envgen_t *pObj);
|
||||
void ENV_Reset(envgen_t *pObj);
|
||||
void ENV_SetBufsize(envgen_t *pObj, UINT32 size);
|
||||
void ENV_SetFS(envgen_t *pObj, synth_float_t fs);
|
||||
void ENV_Event(envgen_t *pObj, UINT32 type);
|
||||
void ENV_Param2Set(envgen_t *pObj, UINT32 type, synth_float_t value);
|
||||
UINT32 ENV_ParamGet(envgen_t *pObj, UINT32 type);
|
||||
|
||||
INT32 ENV_IsIdle(envgen_t *pObj);
|
||||
INT32 ENV_IsStage(envgen_t *pObj, UINT32 stage_num);
|
||||
synth_float_t* ENV_ProcessDataV(envgen_t *pObj, UINT32 len);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
||||
#endif
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#endif // _ENV_H_
|
||||
Reference in New Issue
Block a user