/********* music class ************ By Michael Garcia mgarcia email gwald@start.com.au ********* music class ************/ #include "music.h" #include music_c::music_c(unsigned long *seq, unsigned long *vh, unsigned long *vb, short mvol, short svol, char mode, char count) { seqAdd_m =seq; vhAdd_m = vh; vbAdd_m = vb; mvol_m = mvol; svol_m = svol; mode_m = mode; count_m = count; if(seq) init(); } char music_c::init() { /* VAB opening and transmission to sound buffer */ vabId_m = SsVabTransfer( (unsigned char*)vhAdd_m, (unsigned char*)vbAdd_m, -1, 1 ); if (vabId_m < 0) { printf("SsVabTransfer failed (%d)\n", vabId_m); return -1; } /* SEQ opening */ seqId_m = SsSeqOpen((unsigned long *)seqAdd_m, vabId_m); if (seqId_m < 0) { printf("SsSeqOpen failed (%d)\n", seqAdd_m); return -1; } return vabId_m; } void music_c::play() { SsSetMVol(mvol_m, mvol_m); /* Main volume setting*/ SsSeqSetVol(seqId_m, svol_m, svol_m); /* Volume setting for each SEQ */ SsSeqPlay(seqId_m, mode_m ,count_m);/* Playback switch ON */ } /* Sound playback termination */ void music_c::stop() { SsSeqStop(seqId_m); /* Playback switch OFF */ VSync(0); VSync(0); SsSeqClose(seqId_m); /* SEQ close */ SsVabClose(vabId_m); /* VAB close */ } void music_c::fadeOut(unsigned long dur) { for(int i = svol_m*dur; i>0; i--) SsSeqSetVol(seqId_m, i/dur, i/dur); /* Volume setting for each SEQ */ stop(); } void music_c::fadeIn(unsigned long dur) { SsSetMVol(mvol_m, mvol_m); /* Main volume setting*/ SsSeqSetVol(seqId_m, 1, 1); /* Volume setting for each SEQ */ SsSeqPlay(seqId_m, mode_m ,count_m);/* Playback switch ON */ for(int i = 0; i