#ifndef _SNDEVENT_H_ #define _SNDEVENT_H_ /*-------------------------------------------------------------------------*/ /*definitions specifiques à la target*/ #ifdef SND_SCRIPT_VERSION /*Mode Script pur*/ #if defined(SNDLST2_StaticIsOptimised) || defined(LST2_StaticIsOptimised) #error Macros not coherent #endif #endif #ifdef SND_HYBRID_VERSION /*Mode Hybride*/ #define LST2_StaticIsOptimised #define SNDLST2_StaticIsOptimised #endif #ifdef SND_BINARY_VERSION /*Mode Binaire pur*/ #define LST2_StaticIsOptimised #define SNDLST2_StaticIsOptimised #endif #if ((!defined(SND_SCRIPT_VERSION))&&((!defined(SND_HYBRID_VERSION))&&(!defined(SND_BINARY_VERSION)))) #error neither SCRIPT,HYBRID, or BINARY defined #endif #include "sndlst2.h" #include "sndhard.h" #ifdef M_SET_ALIGNMENT #pragma pack(push) #pragma pack(M_SET_ALIGNMENT) #endif typedef enum { EVT_INVALID, EVT_SON_PLAY , EVT_SON_STOP , EVT_SON_STOP_ALL , EVT_SON_STOP_N_GO, EVT_SON_STOP_N_GO_CROSSFADE , EVT_SON_PITCH , EVT_SON_VOLUME , EVT_SON_PAN , EVT_SON_EFFET, EVT_SON_EXTRA, EVT_SON_CHANGE_VOLUME, FOR_ALIGNEMENT=SND_ENUM_ALIGNEMENT } tdeTypeEvent ; #define NB_TYPES_EVT 12 /*parametre de DeTuning*/ typedef struct { SndReal rDelta; } tdstDeTune; /*valeur pour laquelle il n'y a pas de tuning*/ #define NO_DETUNING C_SNDREAL_0 /*parametres de l'evt de type¨Play*/ typedef struct { tduRefRes uResource; /*ressource associee*/ tdstDeTune stDeTune; } tdstEvtPlay; /*parametres de l'evt de type Stop*/ typedef struct { SND_tduRefEvt uEvt; /*evt à stopper*/ } tdstEvtStop; /*parametres de l'evt de type Stop'N'Go*/ typedef struct { SND_tduRefEvt uEvtStop; /*evt à stopper*/ SND_tduRefEvt uEvtGo; /*evt à lancer*/ } tdstEvtStopNGo; /*parametres de l'evt de type Stop'N'Go avec Crossfade*/ typedef struct { SND_tduRefEvt uEvtStop; /*evt à stopper*/ SND_tduRefEvt uEvtGo; /*evt à lancer*/ int iTime; /*duree du fade*/ } tdstEvtStopNGoFade; /*parametres de l'evt de type ExtraParam(pitch,vol ou pan)*/ typedef struct { tduRefRes uResource; /*ressource associee*/ SndReal CoefA; /*coef a dans s=a*e+b*/ SndReal CoefB; /*coef b dans s=a*e+b*/ tdstDeTune stDeTune; } tdstEvtExtraParam; /*parametres de l'evt de type ExtraALL(pitch,vol et pan)*/ typedef struct { tduRefRes uResource; /*ressource associee*/ SndRealTwin rtCoefPitch; /*coef a et b pour Pitch*/ SndRealTwin rtCoefVol; /*coef a et b pour Volume*/ SndRealTwin rtCoefPan; /*coef a et b pour Pan*/ } tdstEvtExtraAll; /*parametres de l'evt de type effet*/ typedef struct { int iIdEffect; /*id de l'effet*/ } tdstEvtEffect; /*parameters for event "Change Volume"*/ typedef struct { SndBool bConcernWithObjectType;/*if TRUE, all object from the same type are concerned;if FALSE, only one object is concerned*/ long lNewVolume; } tdstEvtchangeVolume; /*union des parametres des differents types d'evt*/ typedef union { tdstEvtPlay stPlay; tdstEvtStop stStop; tdstEvtStopNGo stStopNGo; tdstEvtStopNGoFade stStopNGoFade; tdstEvtExtraParam stExtraParam; tdstEvtExtraAll stExtraAll; tdstEvtEffect stEffect; tdstEvtchangeVolume stChangeVolume; } tduEvtParams; /*description d'un evt*/ struct _SND_tdstBlockEvent { tdxId Id; /*id de l'evt*/ tdeTypeEvent eType; /*type*/ tduEvtParams uParams; /*parametres propres au type de l'evt*/ SndBool_field_decl(bStopable); /*TRUE si evt stopable à la mort de l'objet*/ SndBool_field_decl(bDynamic); /*TRUE si Synchrosonore modifie les param de l'objet en temps reel*/ /*M_LstChildDeclaration(SND_tdstBlockEvent,tdstSndPolyEvent); //inclusion dans la liste ACP*/ SNDLST2_M_StaticChildDeclaration(SND_tdstBlockEvent*,tdstSndPolyEvent*) /*inclusion dans la liste ACP*/ }; /*liste des evts*/ struct _tdstSndPolyEvent { /* M_LstParentDeclaration(SND_tdstBlockEvent);*/ SNDLST2_M_StaticParentDeclaration(SND_tdstBlockEvent*) }; #ifdef M_SET_ALIGNMENT #pragma pack(pop) #endif #endif /*_SNDEVENT_H_*/