Pages vues depuis 25/07/2007 : 25 318 637
Index du forum »» Création-Développement »» question multiview
#define?END_SOUND_SIGNAL?(1L<<19)
#ifdef?__MORPHOS__
??#define?uint32?unsigned?int
??#define?uint16?unsigned?short
??#define?int32?long
?#endif
struct?DTSoundMessage
{
??struct?Message?sound_Msg;
??char?*soundMessage?;
};
/*?Variables?globales?au?fichier?lib?*/
struct?AudioStruct{
??BOOL?Exist;??????????????????//?Object?Exist??
//??APTR?ObjectPTR;????????????//?Object?buffer?pointer?useless.?now?use?zzd10h?sample.
??int Loop;???????????????????//?Is?loop?enabled?or?not??
??int Playing;????????????????//?Sound?is?actually?played?or?not.
??char*?FileName;??????????????//?Pointer?to?the?sound?filename.
??int?Audio3D;?????????????????//?Flag?for?3D?Sound?/?no?3D?Sound.
??//?eXtended?for?the?Audio?system?from?zzd10h?//
??char?*?nom_msgport;
??APTR?dtobject;
??ULONG?res;
??uint32?longueur;
??LONG?duree;
??int32?samplesParSec;
??int?nb_cycle;
??int?nb_cycle_temp;
??int8?balance;
??int16?volume;
??int16?increment;
??ULONG?dores;
??struct?MsgPort?*?DTMsgPort;
?};
struct?AudioStruct?AESound[?256?];
struct?dtTrigger?mydtt;
int?AHIAudioInitialized;
void?DELoadSound(?char?*szFilename,?int?iID?){
??if?(?iID?>?0?){
????if?(?iID?257?){
??????if?(?DESoundExist(?iID?)?==?0?){
????????if(?DEFileExist(?szFilename?)?==?TRUE?){
??????????AESound[?iID?].balance?=?0;
??????????AESound[?iID?].volume?=?64;
??????????#if?defined(?__amigaos4__?)
???????????????AESound[?iID?].dtobject?=?IDataTypes->NewDTObject(?(STRPTR)szFilename,
????????????????????????????????????????????????????????????????DTA_GroupID,?GID_SOUND,
????????????????????????????????????????????????????????????????SDTA_Pan,?AESound[?iID?].balance,
????????????????????????????????????????????????????????????????SDTA_Volume,?AESound[?iID?].volume,
????????????????????????????????????????????????????????????????SDTA_SignalTask,?(ULONG)IExec->FindTask(NULL),
????????????????????????????????????????????????????????????????SDTA_SignalBitMask,?END_SOUND_SIGNAL,
????????????????????????????????????????????????????????????????TAG_END?);
???????????#else
????????????AESound[?iID?].dtobject?=?NewDTObject(?(STRPTR)szFilename,
?????????????????????????????????????????????????????DTA_GroupID,?GID_SOUND,
?????????????????????????????????????????????????????SDTA_Pan,?AESound[?iID?].balance,
?????????????????????????????????????????????????????SDTA_Volume,?AESound[?iID?].volume,
?????????????????????????????????????????????????????SDTA_SignalTask,?(ULONG)FindTask(NULL),
?????????????????????????????????????????????????????SDTA_SignalBitMask,?END_SOUND_SIGNAL,
?????????????????????????????????????????????????????TAG_END?);
???????????#endif
??????????if?(?AESound[?iID?].dtobject?!=?NULL??){
????????????AESound[?iID?].Exist?=?TRUE;
????????????AESound[?iID?].Loop?=?0;
????????????AESound[?iID?].Playing?=?0;
????????????AESound[?iID?].Audio3D?=?0?;?//?This?sound?IS?NOT?a?3D?Audio?sound.
????????????AESound[?iID?].FileName?=?LCreateString(?256?);
????????????LCopyString(?szFilename,?AESound[?iID?].FileName?);
????????????AESound[?iID?].res?=?IDataTypes->GetDTAttrs(?AESound[?iID?].dtobject,
?????????????????????????????????????????????????????????SDTA_Pan,?&AESound[?iID?].balance,
?????????????????????????????????????????????????????????TAG_END?);
????????????//?Creation?du?message?port?de?l'exemple?de?zzd10h?//
????????????AESound[?iID?].nom_msgport?=?DEAppend(?"DataT_SDPort_",?DEStrI(?iID?)?);
????????????#if?defined(?__amigaos4__?)
??????????????AESound[?iID?].DTMsgPort?=?IExec->AllocSysObjectTags(?ASOT_PORT,
????????????????????????????????????????????????????????????????????ASOPORT_Name,?AESound[?iID?].nom_msgport,
????????????????????????????????????????????????????????????????????TAG_END?);
?????????????#else
??????????????AESound[?iID?].DTMsgPort?=?AllocSysObjectTags(?ASOT_PORT,
?????????????????????????????????????????????????????????????ASOPORT_Name,?AESound[?iID?].nom_msgport,
?????????????????????????????????????????????????????????????TAG_END?);
?????????????#endif
???????????}
?????????}
???????}
?????}
???}
?}
void?DEPlaySound(?int?iID?){
??if?(?DESoundExist(?iID?)?==?1?){
????if?(?AESound[?iID?].Playing?>?0?){
??????DEStopSound(?iID?);
?????}
????if?(?AESound[?iID?].DTMsgPort?!=?NULL?){
??????//?Default?DTM_TRIGGER?method?from?zzd10h?datatype?play?sample?//
??????mydtt.MethodID??????=?DTM_TRIGGER;?/*?Fill?in?the?dtTrigger?struct?*/
??????mydtt.dtt_GInfo?????=?NULL;
??????mydtt.dtt_Function??=?STM_PLAY;
??????mydtt.dtt_Data??????=?NULL;
??????#if?defined(?__amigaos4__?)
????????AESound[?iID?].dores?=?IDataTypes->DoDTMethodA(?AESound[?iID?].dtobject,
????????????????????????????????????????????????????????NULL,?NULL,?(Msg)&mydtt?);
???????#else
????????AESound[?iID?].dores?=?DoDTMethodA(?AESound[?iID?].dtobject,
????????????????????????????????????????????NULL,?NULL,?(Msg)&mydtt?);
???????#endif
??????AESound[?iID?].Playing?=?1;
?????}
???}
?}
void?DEStopSound(?int?iID?){
??if?(?AHIAudioInitialized?==?1?){
????if?(?DESoundExist(?iID?)?==?1?){
??????if?(?AESound[?iID?].Playing?>?0?){
????????//?Default?DTM_TRIGGER?method?from?zzd10h?datatype?play?sample?//
????????mydtt.MethodID??????=?DTM_TRIGGER;?/*?Fill?in?the?dtTrigger?struct?*/
????????mydtt.dtt_GInfo?????=?NULL;
????????mydtt.dtt_Function??=?STM_STOP;
????????mydtt.dtt_Data??????=?NULL;
????????#if?defined(?__amigaos4__?)
??????????AESound[?iID?].dores?=?IDataTypes->DoDTMethodA(?AESound[?iID?].dtobject,
??????????????????????????????????????????????????????????NULL,?NULL,?(Msg)&mydtt?);
?????????#else
??????????AESound[?iID?].dores?=?DoDTMethodA(?AESound[?iID?].dtobject,
??????????????????????????????????????????????NULL,?NULL,?(Msg)&mydtt?);
?????????#endif
???????}
?????}
???}
?}
void?DEDeleteSound(?int?iID?){
??if?(?DESoundExist(?iID?)?==?1?){
????if?(?AESound[?iID?].Playing?!=?0?){
??????DEStopSound(?iID?);
?????}
????#if?defined(?__amigaos4__?)
??????IExec->FreeSysObject(ASOT_PORT,?AESound[?iID?].DTMsgPort);
??????IDataTypes->DisposeDTObject(?AESound[?iID?].dtobject?);
?????#else
??????FreeSysObject(ASOT_PORT,?AESound[?iID?].DTMsgPort);
??????DisposeDTObject(?AESound[?iID?].dtobject?);
?????#endif
????LDeleteString(?AESound[?iID?].FileName?);
????AESound[?iID?].dtobject?=?NULL;
????AESound[?iID?].Exist?=?FALSE;
????AESound[?iID?].FileName?=?NULL;
???}
?}
#!!!!!include!!!!!?"libamidark.h"
int?InKey;
void?DarkLoop(?void?){??
??//?Setup?Display.
??DESetDisplayMode(?640,?480,?32?);
??DESyncOn();
??DESyncRate(?60?);
??//?Load?the?4?samples?using?DataTypes.
??DELoadSound(?"Medias/oceanwave.wav",?1?);
??DELoadSound(?"Medias/break.wav",?2?);
??DELoadSound(?"Medias/DREAM.WAV",?3?);
??DELoadSound(?"Medias/electricarc.wav",?4?);
??InKey?=?0;
??while(?!DELoop()?){
????DECls();
????DESetCursor(?0,?0?);
????DEPrint(?"AmiDARK?Engine?now?play?Audio?Sounds?using?DATATYPES"?);
????DEPrint(?"Press?default?QUIT?KEY?to?stop?replay?music."?);
????DEPrint(?"?"?);
????DEPrint(?"Press?1?to?play?OceanWave.wav"?);
????DEPrint(?"Press?2?to?play?Break.wav"?);
????DEPrint(?"Press?3?to?play?Dream.wav"?);
????DEPrint(?"Press?4?to?play?ElectricArc.wav"?);
????//?Keyboard?key?1?to?4?start?replay?of?a?sound.
????InKey?=?DEScancode();?InKey--;
????if?(?InKey?>?0?){
??????if?(?InKey?5?){
????????DEPlaySound(?InKey?);
???????}
?????}
????DESync();
???}
??//?We?delete?sounds?from?memory.
??for?(?InKey?=?1;?InKey?5;?InKey++?){
????if?(?DESoundExist(?InKey?)?==?1?){
??????DEStopSound(?InKey?);
??????DEDeleteSound(?InKey?);
?????}
???}
?}