void MOD_Start (char *name, qboolean midi, qboolean loop, qboolean notify, qboolean resume) { char file[MAX_QPATH]; FMOD_CREATESOUNDEXINFO exinfo; if(SND_Initialised == false) return; if(SND_MusicChannel.inuse == true) FMOD_MusicStop(); if(strlen(name) == 0) return; if(SND_FOpen(name, midi, resume) == true) { memset(&exinfo, 0, sizeof(FMOD_CREATESOUNDEXINFO)); exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO); exinfo.length = SND_File.length; result = FMOD_System_CreateSound(fmod_system, (const char *)SND_File.data, FMOD_HARDWARE | FMOD_OPENMEMORY | FMOD_2D, &exinfo, &fmod_music); FMOD_ERROR(result, true, false); if(loop == true) { SND_MusicChannel.looping = true; result = FMOD_Sound_SetMode(fmod_music, FMOD_LOOP_NORMAL); FMOD_ERROR(result, true, false); } else { SND_MusicChannel.looping = false; result = FMOD_Sound_SetMode(fmod_music, FMOD_LOOP_OFF); FMOD_ERROR(result, true, false); } strcpy(file, SND_File.filename); SND_FClose(); } if(!fmod_music) { Con_Printf("Couldn't open stream %s\n", file); return; } else { if(notify == true) Con_Printf("Playing: %s...\n", file); } result = FMOD_System_GetChannel(fmod_system, 0, &SND_MusicChannel.channel); FMOD_ERROR(result, true, false); result = FMOD_System_PlaySound(fmod_system, FMOD_CHANNEL_REUSE, fmod_music, 0, &SND_MusicChannel.channel); FMOD_ERROR(result, true, false); SND_MusicChannel.inuse = true; }
void Sound::setLoop( bool flag ) { if( flag ) { FMOD_Sound_SetMode( sound, FMOD_LOOP_NORMAL ); } else { FMOD_Sound_SetMode( sound, FMOD_LOOP_OFF ); } }
int sound_alloc(sound** target, sound_manager* system, const char* filename, int streamed) { if (target == NULL) { debug_critical("[sound_alloc] target cannot be NULL"); return 0; } if (*target != NULL) { debug_critical("[sound_alloc] target points to non NULL handle, possible memory leak"); } *target = h_malloc(sizeof(sound)); if (system == NULL) { debug_critical("[sound_alloc] system cannot be NULL"); h_free(*target); *target = NULL; } sound* this = *target; memset(this, 0, sizeof(sound)); this->sound_system = system->system_handle; if (FMOD_System_CreateSound(this->sound_system, filename, (streamed) ? FMOD_CREATESTREAM : FMOD_CREATESAMPLE, NULL, &(this->sound_object)) != FMOD_OK) { debug_message(filename); debug_critical("[sound_alloc] failed to initialize sound, check filename"); return 0; } FMOD_Sound_SetMode(this->sound_object, FMOD_LOOP_NORMAL); return 1; }
int fmod_setmode(int i, int mode) { FMOD_RESULT result; //result = FMOD_Sound_SetMode(sound[i], FMOD_LOOP_OFF); result = FMOD_Sound_SetMode(sound[i], mode); if (ERRCHECK(result)) return 1; return 0; }
void play(bool loop = false) { if (loop) { FMOD_Sound_SetMode(m_sound, FMOD_LOOP_NORMAL); } FMOD_System_PlaySound(System, FMOD_CHANNEL_FREE, m_sound, false, &m_channel); FMOD_System_Update(System); }
bool FmodSound::Play( const bool loop /* = false */ ) { if( IsLoaded() ) { if(FMOD_Sound_SetMode(m_pSound, loop ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF ) == FMOD_OK) { if(FMOD_System_PlaySound(m_pSystem, FMOD_CHANNEL_FREE, m_pSound, false, &m_pChannel) == FMOD_OK) { return true; } } } return false; }
int fmod_setmode(int i, int mode) { FMOD_RESULT result; //printf("fmod_setmode()...\n"); //result = FMOD_Sound_SetMode(sound[i], FMOD_LOOP_OFF); result = FMOD_Sound_SetMode(sound[i], mode); if (ERRCHECK(result)) { printf("error fmod_setmode()\n"); return 1; } return 0; }
void CDA_Start (int track, qboolean loop, qboolean notify) { #ifdef UQE_FMOD_CDAUDIO if (SND_InitialisedCD == false) return; if(SND_MusicChannel.inuse == true) FMOD_MusicStop(); if(loop == true) { SND_MusicChannel.looping = true; result = FMOD_Sound_SetMode(fmod_musicCD, FMOD_LOOP_NORMAL); FMOD_ERROR(result, true, false); } else { SND_MusicChannel.looping = false; result = FMOD_Sound_SetMode(fmod_musicCD, FMOD_LOOP_OFF); FMOD_ERROR(result, true, false); } // fmod track numbers starts at zero result = FMOD_Sound_GetSubSound(fmod_musicCD, track-1, &fmod_musicCD_subsound); FMOD_ERROR(result, notify, false); result = FMOD_System_GetChannel(fmod_system, 0, &SND_MusicChannel.channel); FMOD_ERROR(result, true, false); result = FMOD_System_PlaySound(fmod_system, FMOD_CHANNEL_REUSE, fmod_musicCD_subsound, FALSE, &SND_MusicChannel.channel); FMOD_ERROR(result, notify, false); SND_MusicChannel.inuse = true; #else CDAudio_Play((byte)track, loop); #endif }
boolean I_PlaySong(INT32 handle, boolean looping) { if (1337 == handle) { midimode = true; if (looping) FMR(FMOD_Sound_SetMode(music_stream, FMOD_LOOP_NORMAL)); FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel)); FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0)); FMR_MUSIC(FMOD_Channel_SetPriority(music_channel, 0)); } return true; }
Sound *SoundSystem::newSoundFromMemory( float *samples, int samples_num ) { Sound *out = new Sound(this); #ifdef USE_FMOD FMOD_RESULT r; FMOD_SOUND *s; FMOD_CREATESOUNDEXINFO exinfo; memset( &exinfo, 0, sizeof(exinfo) ); exinfo.cbsize = sizeof(exinfo); exinfo.length = sizeof(float) * samples_num; exinfo.defaultfrequency = 44100; exinfo.numchannels = 1; exinfo.format = FMOD_SOUND_FORMAT_PCMFLOAT; r = FMOD_System_CreateSound( sys, (const char*) samples, FMOD_SOFTWARE | FMOD_OPENMEMORY | FMOD_OPENRAW, &exinfo, &s ); FMOD_ERRCHECK(r); FMOD_Sound_SetMode( s, FMOD_LOOP_OFF ); #endif #ifdef USE_UNTZ UNTZ::SoundInfo info; memset(&info,0,sizeof(info)); info.mBitsPerSample = 32; info.mSampleRate = 44100; info.mChannels = 1; info.mTotalFrames = samples_num / 1; // 1 for num of channels info.mLength = (double)samples_num / 1.0f / 44100.0f; // 1 for num of channels UNTZ::Sound *s = UNTZ::Sound::create( info, samples, true ); // ownsdata: copy samples to mem #endif #ifdef USE_OPENAL ALSoundInfo info; info.mSampleRate = 44100; info.mChannels = 1; info.mTotalFrames = samples_num / 1; ALSound *s = ALSound::create( info, samples ); #endif #ifdef __linux__ void *s = this; // TODO: implement virtual sound #endif out->sound = s; out->default_volume = 1; out->id = id_gen; out->updateLastSamples(samples, samples_num); id_gen++; append(out); return out; }
void fmod_play_sound(FMOD_SYSTEM *fmod_sys,char *filename,int mode) { FMOD_SOUND *sound; FMOD_CHANNEL *channel = 0; FMOD_RESULT result; printf("playing sound:%s\n",filename); result = FMOD_System_CreateSound(fmod_sys, filename, FMOD_HARDWARE, 0, &sound); ERRCHECK(result); result = FMOD_Sound_SetMode(sound, FMOD_LOOP_OFF); ERRCHECK(result); result = FMOD_System_PlaySound(fmod_sys, FMOD_CHANNEL_FREE, sound, 0, &channel); //result = FMOD_Sound_Release(sound1); //ERRCHECK(result); return; }
bool Music::Play( const bool loop /* = false */ ) { if( IsLoaded() ) { FMOD_Sound_SetMode(m_pSound, loop ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF); FMOD_RESULT ret = FMOD_System_PlaySound(m_pSystem, FMOD_CHANNEL_FREE, m_pSound, 0, &m_pChannel); /* m_pSound->setMode( loop ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF ); FMOD_RESULT ret = m_pSystem->playSound( FMOD_CHANNEL_FREE, m_pSound, false, &m_pChannel); */ return ret == FMOD_OK; } return false; }
static void open_all_sounds(FMOD_SYSTEM *system, FMOD_SOUND **fmod_sounds) { FMOD_RESULT result; int i; for (i = 0; i < num_sounds; i++) { float freq, vol, pan; int prio; debugmsg("opening sound file %s\n", sounds[i].file); result = FMOD_System_CreateSound(system, (char *)sounds[i].file, FMOD_SOFTWARE, 0, &fmod_sounds[i]); if (result != FMOD_OK) { fprintf(stderr, "Unable to open sound file \"%s\"\n", sounds[i].file); exit(1); } result = FMOD_Sound_SetMode(fmod_sounds[i], FMOD_LOOP_OFF); ERRCHECK(result); result = FMOD_Sound_GetDefaults(fmod_sounds[i], &freq, &vol, &pan, &prio); ERRCHECK(result); /* override defaults (except freq) as requested */ if (sounds[i].vol != USE_DEFAULT) { debugmsg("setting vol value on %s to %f\n", sounds[i].file, sounds[i].vol); vol = sounds[i].vol; } if (sounds[i].pan != USE_DEFAULT) { debugmsg("setting pan value on %s to %f\n", sounds[i].file, sounds[i].pan); pan = sounds[i].pan; } if (sounds[i].prio != USE_DEFAULT_PRIO) { debugmsg("setting prio value on %s to %d\n", sounds[i].file, sounds[i].prio); prio = sounds[i].prio; } result = FMOD_Sound_SetDefaults(fmod_sounds[i], freq, vol, pan, prio); ERRCHECK(result); } }
Sound *SoundSystem::newSound( const char *path, float vol, bool use_stream_currently_ignored ) { #if !defined(__linux__) const char *cpath = platformCStringPath(path); #endif #ifdef USE_FMOD FMOD_RESULT r; FMOD_SOUND *s; r = FMOD_System_CreateSound(sys, cpath, FMOD_SOFTWARE, 0, &s ); if( r != FMOD_OK ) { print("newSound: can't create sound:'%s'", cpath ); } FMOD_ERRCHECK(r); FMOD_Sound_SetMode( s, FMOD_LOOP_OFF ); #endif #ifdef USE_UNTZ UNTZ::Sound *s = UNTZ::Sound::create( cpath, true ); #endif #ifdef USE_OPENAL ALSound *s = ALSound::create( cpath ); #endif #ifdef __linux__ void *s = this; // TODO: implement virtual sound #endif if(!s) { print("newSound failed for '%s'", path ); return 0; } Sound *out = new Sound(this); out->sound = s; out->default_volume = vol; out->id = id_gen; strncpy( out->last_load_file_path, path, sizeof(out->last_load_file_path) ); id_gen++; append(out); return out; }
void Sound::setSoundMode(FMOD_MODE mode) { *result = FMOD_Sound_SetMode(sound, mode); ERRCHECK(); }
int main(int argc, char *argv[]) { FMOD_SYSTEM *system = 0; FMOD_SOUND *sound = 0; FMOD_CHANNEL *channel = 0; FMOD_RESULT result; FMOD_CREATESOUNDEXINFO exinfo; int key, driver, recorddriver, numdrivers, count; unsigned int version; /* Create a System object and initialize. */ result = FMOD_System_Create(&system); ERRCHECK(result); result = FMOD_System_GetVersion(system, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return 0; } /* System initialization */ printf("---------------------------------------------------------\n"); printf("Select OUTPUT type\n"); printf("---------------------------------------------------------\n"); printf("1 : OSS - Open Sound System\n"); printf("2 : ALSA - Advanced Linux Sound Architecture\n"); printf("3 : ESD - Enlightenment Sound Daemon\n"); printf("---------------------------------------------------------\n"); printf("Press a corresponding number or ESC to quit\n"); do { key = getch(); } while (key != 27 && key < '1' && key > '5'); switch (key) { case '1' : result = FMOD_System_SetOutput(system, FMOD_OUTPUTTYPE_OSS); break; case '2' : result = FMOD_System_SetOutput(system, FMOD_OUTPUTTYPE_ALSA); break; case '3' : result = FMOD_System_SetOutput(system, FMOD_OUTPUTTYPE_ESD); break; default : return 1; } ERRCHECK(result); /* Enumerate playback devices */ result = FMOD_System_GetNumDrivers(system, &numdrivers); ERRCHECK(result); printf("---------------------------------------------------------\n"); printf("Choose a PLAYBACK driver\n"); printf("---------------------------------------------------------\n"); for (count=0; count < numdrivers; count++) { char name[256]; result = FMOD_System_GetDriverInfo(system, count, name, 256, 0); ERRCHECK(result); printf("%d : %s\n", count + 1, name); } printf("---------------------------------------------------------\n"); printf("Press a corresponding number or ESC to quit\n"); do { key = getch(); if (key == 27) { return 0; } driver = key - '1'; } while (driver < 0 || driver >= numdrivers); result = FMOD_System_SetDriver(system, driver); ERRCHECK(result); /* Enumerate record devices */ result = FMOD_System_GetRecordNumDrivers(system, &numdrivers); ERRCHECK(result); printf("---------------------------------------------------------\n"); printf("Choose a RECORD driver\n"); printf("---------------------------------------------------------\n"); for (count=0; count < numdrivers; count++) { char name[256]; result = FMOD_System_GetRecordDriverInfo(system, count, name, 256, 0); ERRCHECK(result); printf("%d : %s\n", count + 1, name); } printf("---------------------------------------------------------\n"); printf("Press a corresponding number or ESC to quit\n"); recorddriver = 0; do { key = getch(); if (key == 27) { return 0; } recorddriver = key - '1'; } while (recorddriver < 0 || recorddriver >= numdrivers); printf("\n"); result = FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL); ERRCHECK(result); memset(&exinfo, 0, sizeof(FMOD_CREATESOUNDEXINFO)); exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO); exinfo.numchannels = 1; exinfo.format = FMOD_SOUND_FORMAT_PCM16; exinfo.defaultfrequency = 44100; exinfo.length = exinfo.defaultfrequency * sizeof(short) * exinfo.numchannels * 5; result = FMOD_System_CreateSound(system, 0, FMOD_2D | FMOD_SOFTWARE | FMOD_OPENUSER, &exinfo, &sound); ERRCHECK(result); printf("===================================================================\n"); printf("Recording example. Copyright (c) Firelight Technologies 2004-2011.\n"); printf("===================================================================\n"); printf("\n"); printf("Press 'r' to record a 5 second segment of audio and write it to a wav file.\n"); printf("Press 'p' to play the 5 second segment of audio.\n"); printf("Press 'l' to turn looping on/off.\n"); printf("Press 's' to stop recording and playback.\n"); printf("Press 'w' to save the 5 second segment to a wav file.\n"); printf("Press 'Esc' to quit\n"); printf("\n"); /* Main loop. */ do { static FMOD_CHANNEL *channel = 0; static int looping = 0; int recording = 0; int playing = 0; unsigned int recordpos = 0; unsigned int playpos = 0; unsigned int length; if (kbhit()) { key = getch(); switch (key) { case 'r' : case 'R' : { result = FMOD_System_RecordStart(system, recorddriver, sound, looping); ERRCHECK(result); break; } case 'p' : case 'P' : { if (looping) { FMOD_Sound_SetMode(sound, FMOD_LOOP_NORMAL); } else { FMOD_Sound_SetMode(sound, FMOD_LOOP_OFF); } ERRCHECK(result); result = FMOD_System_PlaySound(system, FMOD_CHANNEL_REUSE, sound, 0, &channel); ERRCHECK(result); break; } case 'l' : case 'L' : { looping = !looping; break; } case 's' : case 'S' : { result = FMOD_System_RecordStop(system, recorddriver); if (channel) { FMOD_Channel_Stop(channel); channel = 0; } break; } case 'w' : case 'W' : { printf("Writing to record.wav ... \r"); SaveToWav(sound); Sleep(500); break; } } } FMOD_Sound_GetLength(sound, &length, FMOD_TIMEUNIT_PCM); ERRCHECK(result); FMOD_System_IsRecording(system, recorddriver, &recording); ERRCHECK(result); FMOD_System_GetRecordPosition(system, recorddriver, &recordpos); ERRCHECK(result); if (channel) { FMOD_Channel_IsPlaying(channel, &playing); ERRCHECK(result); FMOD_Channel_GetPosition(channel, &playpos, FMOD_TIMEUNIT_PCM); ERRCHECK(result); } printf("State: %-19s. Record pos = %6d : Play pos = %6d : Loop %-3s\r", recording ? playing ? "Recording / playing" : "Recording" : playing ? "Playing" : "Idle", recordpos, playpos, looping ? "On" : "Off"); fflush(stdout); FMOD_System_Update(system); Sleep(10); } while (key != 27); printf("\n"); /* Shut down */ result = FMOD_Sound_Release(sound); ERRCHECK(result); result = FMOD_System_Release(system); ERRCHECK(result); return 0; }
void FMCSound::setPlayLooped(bool yes) { MYASSERT(FMOD_Sound_SetMode(m_fmod_sound, yes ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF) == FMOD_OK); }
int main(int argc, char *argv[]) { FMOD_SYSTEM *system = 0; FMOD_SOUND *playlist = 0; FMOD_SOUND *sound = 0; FMOD_CHANNEL *channel = 0; FMOD_TAG tag; FMOD_RESULT result; FMOD_SOUND_TYPE soundtype; FMOD_BOOL isplaylist = 0; char *title = NULL; int count = 0; int key; unsigned int version; char file[128]; /* Create a System object and initialize. */ result = FMOD_System_Create(&system); ERRCHECK(result); result = FMOD_System_GetVersion(system, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return 0; } result = FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, 0); ERRCHECK(result); result = FMOD_System_CreateSound(system, "../media/playlist.m3u", FMOD_DEFAULT, 0, &playlist); ERRCHECK(result); result = FMOD_Sound_GetFormat(playlist, &soundtype, 0, 0, 0); ERRCHECK(result); isplaylist = (soundtype == FMOD_SOUND_TYPE_PLAYLIST); printf("===================================================================\n"); printf("PlayList Example. Copyright (c) Firelight Technologies 2004-2015.\n"); printf("===================================================================\n"); printf("\n"); printf("Press 'n' to play next sound in playlist\n"); printf("Press 'space' to pause/unpause current sound\n"); printf("Press 'Esc' to quit\n"); printf("\n"); if (isplaylist) { printf("PLAYLIST loaded.\n"); /* Get the first song in the playlist, create the sound and then play it. */ result = FMOD_Sound_GetTag(playlist, "FILE", count, &tag); ERRCHECK(result); sprintf(file, "../media/%s", (char *)tag.data); result = FMOD_System_CreateSound(system, file, FMOD_DEFAULT, 0, &sound); ERRCHECK(result); result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound, 0, &channel); ERRCHECK(result); FMOD_Sound_GetTag(playlist, "TITLE", count, &tag); title = (char *)tag.data; count++; } else { printf("SOUND loaded.\n"); /* This is just a normal sound, so just play it. */ sound = playlist; result = FMOD_Sound_SetMode(sound, FMOD_LOOP_NORMAL); ERRCHECK(result); result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound, 0, &channel); ERRCHECK(result); } printf("\n"); /* Main loop. */ do { FMOD_BOOL isplaying = 0; if (channel && isplaylist) { /* When sound has finished playing, play the next sound in the playlist */ FMOD_Channel_IsPlaying(channel, &isplaying); if (!isplaying) { if (sound) { FMOD_Sound_Release(sound); sound = NULL; } result = FMOD_Sound_GetTag(playlist, "FILE", count, &tag); if (result != FMOD_OK) { count = 0; } else { printf("playing next song in playlist...\n"); sprintf(file, "../media/%s", (char *)tag.data); result = FMOD_System_CreateSound(system, file, FMOD_DEFAULT, 0, &sound); ERRCHECK(result); result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound, 0, &channel); ERRCHECK(result); FMOD_Sound_GetTag(playlist, "TITLE", count, &tag); title = (char *)tag.data; count++; } } } if (_kbhit()) { key = _getch(); switch (key) { case 'n' : { /* Play the next song in the playlist */ if (channel && isplaylist) { FMOD_Channel_Stop(channel); } break; } case ' ' : { if (channel) { FMOD_BOOL paused; FMOD_Channel_GetPaused(channel, &paused); FMOD_Channel_SetPaused(channel, !paused); } } } } FMOD_System_Update(system); { unsigned int ms = 0; unsigned int lenms = 0; FMOD_BOOL paused = 0; if (channel) { if (sound) { result = FMOD_Sound_GetLength(sound, &lenms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } } result = FMOD_Channel_GetPaused(channel, &paused); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPosition(channel, &ms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } } printf("Time %02d:%02d:%02d/%02d:%02d:%02d : %s : %s\r", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : "Playing ", title); } Sleep(10); } while (key != 27); printf("\n"); /* Shut down */ if (sound) { result = FMOD_Sound_Release(sound); ERRCHECK(result); } if (isplaylist) { result = FMOD_Sound_Release(playlist); ERRCHECK(result); } result = FMOD_System_Close(system); ERRCHECK(result); result = FMOD_System_Release(system); ERRCHECK(result); return 0; }
int main(int argc, char *argv[]) { FMOD_SYSTEM *system; FMOD_SOUND *sound1, *sound2, *sound3; FMOD_CHANNEL *channel = 0; FMOD_RESULT result; int key; unsigned int version; void *buff = 0; int length = 0; FMOD_CREATESOUNDEXINFO exinfo; /* Create a System object and initialize. */ result = FMOD_System_Create(&system); ERRCHECK(result); result = FMOD_System_GetVersion(system, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return 0; } result = FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL); ERRCHECK(result); LoadFileIntoMemory("../media/drumloop.wav", &buff, &length); memset(&exinfo, 0, sizeof(FMOD_CREATESOUNDEXINFO)); exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO); exinfo.length = length; result = FMOD_System_CreateSound(system, (const char *)buff, FMOD_HARDWARE | FMOD_OPENMEMORY, &exinfo, &sound1); ERRCHECK(result); result = FMOD_Sound_SetMode(sound1, FMOD_LOOP_OFF); ERRCHECK(result); free(buff); // don't need the original memory any more. Note! If loading as a stream, the memory must stay active so do not free it! LoadFileIntoMemory("../media/jaguar.wav", &buff, &length); memset(&exinfo, 0, sizeof(FMOD_CREATESOUNDEXINFO)); exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO); exinfo.length = length; result = FMOD_System_CreateSound(system, (const char *)buff, FMOD_SOFTWARE | FMOD_OPENMEMORY, &exinfo, &sound2); ERRCHECK(result); free(buff); // don't need the original memory any more. Note! If loading as a stream, the memory must stay active so do not free it! LoadFileIntoMemory("../media/swish.wav", &buff, &length); memset(&exinfo, 0, sizeof(FMOD_CREATESOUNDEXINFO)); exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO); exinfo.length = length; result = FMOD_System_CreateSound(system, (const char *)buff, FMOD_HARDWARE | FMOD_OPENMEMORY, &exinfo, &sound3); ERRCHECK(result); free(buff); // don't need the original memory any more. Note! If loading as a stream, the memory must stay active so do not free it! printf("==========================================================================\n"); printf("Load from memory example. Copyright (c) Firelight Technologies 2004-2014.\n"); printf("==========================================================================\n"); printf("\n"); printf("Press '1' to play a mono sound using hardware mixing\n"); printf("Press '2' to play a mono sound using software mixing\n"); printf("Press '3' to play a stereo sound using hardware mixing\n"); printf("Press 'Esc' to quit\n"); printf("\n"); /* Main loop. */ do { if (kbhit()) { key = getch(); switch (key) { case '1' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, 0, &channel); ERRCHECK(result); break; } case '2' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound2, 0, &channel); ERRCHECK(result); break; } case '3' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound3, 0, &channel); ERRCHECK(result); break; } } } FMOD_System_Update(system); { unsigned int ms = 0; unsigned int lenms = 0; int playing = 0; int paused = 0; int channelsplaying = 0; if (channel) { FMOD_SOUND *currentsound = 0; result = FMOD_Channel_IsPlaying(channel, &playing); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPaused(channel, &paused); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPosition(channel, &ms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } FMOD_Channel_GetCurrentSound(channel, ¤tsound); if (currentsound) { result = FMOD_Sound_GetLength(currentsound, &lenms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } } } result = FMOD_Sound_GetLength(sound1, &lenms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } FMOD_System_GetChannelsPlaying(system, &channelsplaying); printf("\rTime %02d:%02d:%02d/%02d:%02d:%02d : %s : Channels Playing %2d", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : playing ? "Playing" : "Stopped", channelsplaying); fflush(stdout); } Sleep(10); } while (key != 27); printf("\n"); /* Shut down */ result = FMOD_Sound_Release(sound1); ERRCHECK(result); result = FMOD_Sound_Release(sound2); ERRCHECK(result); result = FMOD_Sound_Release(sound3); ERRCHECK(result); result = FMOD_System_Close(system); ERRCHECK(result); result = FMOD_System_Release(system); ERRCHECK(result); return 0; }
int main(int argc, char *argv[]) { FMOD_SYSTEM *system; FMOD_SOUND *sound1, *sound2, *sound3; FMOD_CHANNEL *channel = 0; FMOD_RESULT result; int key; unsigned int version; /* Global Settings */ result = FMOD_System_Create(&system); ERRCHECK(result); result = FMOD_System_GetVersion(system, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); getch(); return 0; } result = FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL); ERRCHECK(result); result = FMOD_System_CreateSound(system, "../media/drumloop.wav", FMOD_SOFTWARE, 0, &sound1); ERRCHECK(result); result = FMOD_Sound_SetMode(sound1, FMOD_LOOP_OFF); ERRCHECK(result); result = FMOD_System_CreateSound(system, "../media/jaguar.wav", FMOD_SOFTWARE, 0, &sound2); ERRCHECK(result); result = FMOD_System_CreateSound(system, "../media/swish.wav", FMOD_SOFTWARE, 0, &sound3); ERRCHECK(result); printf("===================================================================\n"); printf("PlaySound Example. Copyright (c) Firelight Technologies 2004-2011.\n"); printf("===================================================================\n"); printf("\n"); printf("Press '1' to Play a mono sound using software mixing\n"); printf("Press '2' to Play a mono sound using software mixing\n"); printf("Press '3' to Play a stereo sound using software mixing\n"); printf("Press 'Esc' to quit\n"); printf("\n"); /* Main loop. */ do { if (kbhit()) { key = getch(); switch (key) { case '1' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, 0, &channel); ERRCHECK(result); break; } case '2' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound2, 0, &channel); ERRCHECK(result); break; } case '3' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound3, 0, &channel); ERRCHECK(result); break; } } } FMOD_System_Update(system); { unsigned int ms = 0; unsigned int lenms = 0; int playing = 0; int paused = 0; int channelsplaying = 0; if (channel) { FMOD_SOUND *currentsound = 0; result = FMOD_Channel_IsPlaying(channel, &playing); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPaused(channel, &paused); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPosition(channel, &ms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } FMOD_Channel_GetCurrentSound(channel, ¤tsound); if (currentsound) { result = FMOD_Sound_GetLength(currentsound, &lenms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } } } result = FMOD_Sound_GetLength(sound1, &lenms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } FMOD_System_GetChannelsPlaying(system, &channelsplaying); printf("\rTime %02d:%02d:%02d/%02d:%02d:%02d : %s : Channels Playing %2d", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : playing ? "Playing" : "Stopped", channelsplaying); fflush(stdout); } Sleep(10); } while (key != 27); printf("\n"); /* Shut down */ result = FMOD_Sound_Release(sound1); ERRCHECK(result); result = FMOD_Sound_Release(sound2); ERRCHECK(result); result = FMOD_Sound_Release(sound3); ERRCHECK(result); result = FMOD_System_Close(system); ERRCHECK(result); result = FMOD_System_Release(system); ERRCHECK(result); return 0; }
int main(int argc, char *argv[]) { FMOD_SYSTEM *system; FMOD_SOUND *sound1, *sound2; FMOD_CHANNEL *channel = 0; FMOD_RESULT result; FMOD_SPEAKERMODE speakermode; int key; unsigned int version; /* Create a System object and initialize. */ result = FMOD_System_Create(&system); ERRCHECK(result); result = FMOD_System_GetVersion(system, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return 0; } /* Choose the speaker mode selected by the Windows control panel. */ result = FMOD_System_GetDriverCaps(system, 0, 0, 0, &speakermode); ERRCHECK(result); result = FMOD_System_SetSpeakerMode(system, speakermode); ERRCHECK(result); result = FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL); ERRCHECK(result); result = FMOD_System_CreateSound(system, "../media/drumloop.wav", FMOD_SOFTWARE | FMOD_2D, 0, &sound1); ERRCHECK(result); result = FMOD_Sound_SetMode(sound1, FMOD_LOOP_OFF); ERRCHECK(result); result = FMOD_System_CreateSound(system, "../media/stereo.ogg", FMOD_SOFTWARE | FMOD_2D, 0, &sound2); ERRCHECK(result); printf("==============================================================================\n"); printf("Multi Speaker Output Example. Copyright (c) Firelight Technologies 2004-2011.\n"); printf("==============================================================================\n"); printf("\n"); switch (speakermode) { case FMOD_SPEAKERMODE_MONO : { printf("Using control panel speaker mode : MONO.\n"); printf("\n"); printf("Note! This output mode is very limited in its capability.\n"); printf("Most functionality of this demo is only realized with at least FMOD_SPEAKERMODE_QUAD\n"); printf("and above.\n"); break; } case FMOD_SPEAKERMODE_STEREO : { printf("Using control panel speaker mode : STEREO.\n"); printf("\n"); printf("Note! This output mode is very limited in its capability.\n"); printf("Most functionality of this demo is only realized with FMOD_SPEAKERMODE_QUAD\n"); printf("and above.\n"); break; } case FMOD_SPEAKERMODE_QUAD : { printf("Using control panel speaker mode : QUAD.\n"); printf("Side left, side right, center and subwoofer mix will be disabled.\n"); break; } case FMOD_SPEAKERMODE_SURROUND : { printf("Using control panel speaker mode : SURROUND.\n"); printf("Side left, side right, and subwoofer mix will be disabled.\n"); break; } case FMOD_SPEAKERMODE_5POINT1 : { printf("Using control panel speaker mode : 5.1 surround.\n"); printf("Side left and right mix will be disabled..\n"); break; } case FMOD_SPEAKERMODE_7POINT1 : { printf("Using control panel speaker mode : 7.1 surround.\n"); printf("Full capability.\n"); break; } }; printf("\n"); printf("Press '1' to play a mono sound on the FRONT LEFT speaker.\n"); printf("Press '2' to play a mono sound on the FRONT RIGHT speaker.\n"); if (speakermode >= FMOD_SPEAKERMODE_SURROUND) { printf("Press '3' to play a mono sound on the CENTER speaker.\n"); } else { printf("- CENTER Disabled\n"); } if (speakermode >= FMOD_SPEAKERMODE_QUAD) { printf("Press '4' to play a mono sound on the REAR LEFT speaker.\n"); printf("Press '5' to play a mono sound on the REAR RIGHT speaker.\n"); } else { printf("- REAR LEFT Disabled\n"); printf("- REAR RIGHT Disabled\n"); } if (speakermode >= FMOD_SPEAKERMODE_7POINT1) { printf("Press '6' to play a mono sound on the SIDE LEFT speaker.\n"); printf("Press '7' to play a mono sound on the SIDE RIGHT speaker.\n"); } else { printf("- SIDE LEFT Disabled\n"); printf("- SIDE RIGHT Disabled\n"); } printf("\n"); printf("Press '8' to play a stereo sound on the front speakers.\n"); printf("Press '9' to play a stereo sound on the front speakers but channel swapped.\n"); if (speakermode >= FMOD_SPEAKERMODE_SURROUND) { printf("Press '0' to play the right part of a stereo sound on the CENTER speaker.\n"); } printf("Press 'Esc' to quit\n"); printf("\n"); /* Main loop. */ do { if (_kbhit()) { key = _getch(); switch (key) { case '1' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, TRUE, &channel); ERRCHECK(result); result = FMOD_Channel_SetSpeakerMix(channel, 1.0f, 0, 0, 0, 0, 0, 0, 0); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); break; } case '2' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, TRUE, &channel); ERRCHECK(result); result = FMOD_Channel_SetSpeakerMix(channel, 0, 1.0f, 0, 0, 0, 0, 0, 0); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); break; } case '3' : { if (speakermode >= FMOD_SPEAKERMODE_QUAD) { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, TRUE, &channel); ERRCHECK(result); result = FMOD_Channel_SetSpeakerMix(channel, 0, 0, 1.0f, 0, 0, 0, 0, 0); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); } break; } case '4' : { if (speakermode >= FMOD_SPEAKERMODE_QUAD) { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, TRUE, &channel); ERRCHECK(result); result = FMOD_Channel_SetSpeakerMix(channel, 0, 0, 0, 0, 1.0f, 0, 0, 0); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); } break; } case '5' : { if (speakermode >= FMOD_SPEAKERMODE_QUAD) { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, TRUE, &channel); ERRCHECK(result); result = FMOD_Channel_SetSpeakerMix(channel, 0, 0, 0, 0, 0, 1.0f, 0, 0); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); } break; } case '6' : { if (speakermode >= FMOD_SPEAKERMODE_7POINT1) { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, TRUE, &channel); ERRCHECK(result); result = FMOD_Channel_SetSpeakerMix(channel, 0, 0, 0, 0, 0, 0, 1.0f, 0); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); } break; } case '7' : { if (speakermode >= FMOD_SPEAKERMODE_7POINT1) { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound1, TRUE, &channel); ERRCHECK(result); result = FMOD_Channel_SetSpeakerMix(channel, 0, 0, 0, 0, 0, 0, 0, 1.0f); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); } break; } case '8' : { float levels[2] = { 0, 1.0f }; result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound2, TRUE, &channel); ERRCHECK(result); /* By default a stereo sound would play in all right and all left speakers, so this forces it to just the front. */ result = FMOD_Channel_SetSpeakerMix(channel, 1.0f, 1.0f, 0, 0, 0, 0, 0, 0); ERRCHECK(result); result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); break; } case '9' : { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound2, TRUE, &channel); ERRCHECK(result); /* Clear out all speakers first. */ result = FMOD_Channel_SetSpeakerMix(channel, 0, 0, 0, 0, 0, 0, 0, 0); ERRCHECK(result); /* Put the left channel of the sound in the right speaker. */ { float levels[2] = { 0, 1.0f }; /* This array represents the source stereo sound. l/r */ result = FMOD_Channel_SetSpeakerLevels(channel, FMOD_SPEAKER_FRONT_LEFT, levels, 2); ERRCHECK(result); } /* Put the right channel of the sound in the left speaker. */ { float levels[2] = { 1.0f, 0 }; /* This array represents the source stereo sound. l/r */ result = FMOD_Channel_SetSpeakerLevels(channel, FMOD_SPEAKER_FRONT_RIGHT, levels, 2); ERRCHECK(result); } result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); break; } case '0' : { if (speakermode >= FMOD_SPEAKERMODE_SURROUND) /* All formats that have a center speaker. */ { result = FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound2, TRUE, &channel); ERRCHECK(result); /* Clear out all speakers first. */ result = FMOD_Channel_SetSpeakerMix(channel, 0, 0, 0, 0, 0, 0, 0, 0); ERRCHECK(result); /* Put the right channel of the sound in the center speaker. */ { float levels[2] = { 0, 1.0f }; /* This array represents the source stereo sound. l/r */ result = FMOD_Channel_SetSpeakerLevels(channel, FMOD_SPEAKER_FRONT_CENTER, levels, 2); ERRCHECK(result); } result = FMOD_Channel_SetPaused(channel, FALSE); ERRCHECK(result); } break; } } } FMOD_System_Update(system); { unsigned int ms = 0; unsigned int lenms = 0; int playing = FALSE; int paused = FALSE; int channelsplaying = 0; if (channel) { FMOD_SOUND *currentsound = 0; result = FMOD_Channel_IsPlaying(channel, &playing); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPaused(channel, &paused); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } result = FMOD_Channel_GetPosition(channel, &ms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } FMOD_Channel_GetCurrentSound(channel, ¤tsound); if (currentsound) { result = FMOD_Sound_GetLength(currentsound, &lenms, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(result); } } } FMOD_System_GetChannelsPlaying(system, &channelsplaying); printf("Time %02d:%02d:%02d/%02d:%02d:%02d : %s : Channels Playing %2d\r", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : playing ? "Playing" : "Stopped", channelsplaying); } Sleep(10); } while (key != 27); printf("\n"); /* Shut down */ result = FMOD_Sound_Release(sound1); ERRCHECK(result); result = FMOD_Sound_Release(sound2); ERRCHECK(result); result = FMOD_System_Close(system); ERRCHECK(result); result = FMOD_System_Release(system); ERRCHECK(result); return 0; }
int main(int argc, char *argv[]) { FMOD_SYSTEM *systemA, *systemB; FMOD_SOUND *soundA, *soundB; FMOD_CHANNEL *channelA = 0, *channelB = 0; FMOD_RESULT result; int key, count, numdrivers, driver; unsigned int version; /* Create Sound Card A */ result = FMOD_System_Create(&systemA); ERRCHECK(result); result = FMOD_System_GetVersion(systemA, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return 0; } result = FMOD_System_GetNumDrivers(systemA, &numdrivers); ERRCHECK(result); printf("---------------------------------------------------------\n"); printf("Select soundcard A\n"); printf("---------------------------------------------------------\n"); for (count=0; count < numdrivers; count++) { char name[256]; result = FMOD_System_GetDriverInfo(systemA, count, name, 256, 0); ERRCHECK(result); printf("%d : %s\n", count + 1, name); } printf("---------------------------------------------------------\n"); printf("Press a corresponding number or ESC to quit\n"); do { key = _getch(); if (key == 27) { return 0; } driver = key - '1'; } while (driver < 0 || driver >= numdrivers); printf("\n"); result = FMOD_System_SetDriver(systemA, driver); ERRCHECK(result); result = FMOD_System_Init(systemA, 32, FMOD_INIT_NORMAL, NULL); ERRCHECK(result); /* Create Sound Card B */ result = FMOD_System_Create(&systemB); ERRCHECK(result); result = FMOD_System_GetVersion(systemB, &version); ERRCHECK(result); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return 0; } result = FMOD_System_GetNumDrivers(systemB, &numdrivers); ERRCHECK(result); printf("---------------------------------------------------------\n"); printf("Select soundcard B\n"); printf("---------------------------------------------------------\n"); for (count=0; count < numdrivers; count++) { char name[256]; result = FMOD_System_GetDriverInfo(systemB, count, name, 256, 0); ERRCHECK(result); printf("%d : %s\n", count + 1, name); } printf("---------------------------------------------------------\n"); printf("Press a corresponding number or ESC to quit\n"); do { key = _getch(); if (key == 27) { return 0; } driver = key - '1'; } while (driver < 0 || driver >= numdrivers); printf("\n"); result = FMOD_System_SetDriver(systemB, driver); ERRCHECK(result); result = FMOD_System_Init(systemB, 32, FMOD_INIT_NORMAL, NULL); ERRCHECK(result); /* Load 1 sample into each soundcard. */ result = FMOD_System_CreateSound(systemA, "../media/drumloop.wav", FMOD_HARDWARE, 0, &soundA); ERRCHECK(result); result = FMOD_Sound_SetMode(soundA, FMOD_LOOP_OFF); ERRCHECK(result); result = FMOD_System_CreateSound(systemB, "../media/jaguar.wav", FMOD_HARDWARE, 0, &soundB); ERRCHECK(result); printf("===========================================================================\n"); printf("MultipleSoundCard Example. Copyright (c) Firelight Technologies 2004-2014.\n"); printf("===========================================================================\n"); printf("\n"); printf("Press '1' to play a sound on soundcard A\n"); printf("Press '2' to play a sound on soundcard B\n"); printf("Press 'Esc' to quit\n"); printf("\n"); /* Main loop. */ do { int channelsplayingA = 0; int channelsplayingB = 0; if (_kbhit()) { key = _getch(); switch (key) { case '1' : { result = FMOD_System_PlaySound(systemA, FMOD_CHANNEL_FREE, soundA, 0, &channelA); ERRCHECK(result); break; } case '2' : { result = FMOD_System_PlaySound(systemB, FMOD_CHANNEL_FREE, soundB, 0, &channelB); ERRCHECK(result); break; } } } FMOD_System_Update(systemA); FMOD_System_Update(systemB); FMOD_System_GetChannelsPlaying(systemA, &channelsplayingA); FMOD_System_GetChannelsPlaying(systemB, &channelsplayingB); printf("Channels Playing on A %2d. Channels Playing on B %2d.\r", channelsplayingA, channelsplayingB); Sleep(10); } while (key != 27); printf("\n"); /* Shut down */ result = FMOD_Sound_Release(soundA); ERRCHECK(result); result = FMOD_System_Close(systemA); ERRCHECK(result); result = FMOD_System_Release(systemA); ERRCHECK(result); result = FMOD_Sound_Release(soundB); ERRCHECK(result); result = FMOD_System_Close(systemB); ERRCHECK(result); result = FMOD_System_Release(systemB); ERRCHECK(result); return 0; }