added the readme
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
/*==============================================================================
|
||||
Play Sound Example
|
||||
Copyright (c), Firelight Technologies Pty, Ltd 2004-2026.
|
||||
|
||||
This example shows how to simply load and play multiple sounds, the simplest
|
||||
usage of FMOD. By default FMOD will decode the entire file into memory when it
|
||||
loads. If the sounds are big and possibly take up a lot of RAM it would be
|
||||
better to use the FMOD_CREATESTREAM flag, this will stream the file in realtime
|
||||
as it plays.
|
||||
|
||||
For information on using FMOD example code in your own programs, visit
|
||||
https://www.fmod.com/legal
|
||||
==============================================================================*/
|
||||
#include "fmod.hpp"
|
||||
#include "common.h"
|
||||
|
||||
int FMOD_Main()
|
||||
{
|
||||
FMOD::System *system;
|
||||
FMOD::Sound *sound1, *sound2, *sound3;
|
||||
FMOD::Channel *channel = 0;
|
||||
FMOD_RESULT result;
|
||||
void *extradriverdata = 0;
|
||||
|
||||
Common_Init(&extradriverdata);
|
||||
|
||||
/*
|
||||
Create a System object and initialize
|
||||
*/
|
||||
result = FMOD::System_Create(&system);
|
||||
ERRCHECK(result);
|
||||
|
||||
result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);
|
||||
ERRCHECK(result);
|
||||
|
||||
result = system->createSound(Common_MediaPath("drumloop.wav"), FMOD_DEFAULT, 0, &sound1);
|
||||
ERRCHECK(result);
|
||||
|
||||
result = sound1->setMode(FMOD_LOOP_OFF); /* drumloop.wav has embedded loop points which automatically makes looping turn on, */
|
||||
ERRCHECK(result); /* so turn it off here. We could have also just put FMOD_LOOP_OFF in the above CreateSound call. */
|
||||
|
||||
result = system->createSound(Common_MediaPath("jaguar.wav"), FMOD_DEFAULT, 0, &sound2);
|
||||
ERRCHECK(result);
|
||||
|
||||
result = system->createSound(Common_MediaPath("swish.wav"), FMOD_DEFAULT, 0, &sound3);
|
||||
ERRCHECK(result);
|
||||
|
||||
/*
|
||||
Main loop
|
||||
*/
|
||||
do
|
||||
{
|
||||
Common_Update();
|
||||
|
||||
if (Common_BtnPress(BTN_ACTION1))
|
||||
{
|
||||
result = system->playSound(sound1, 0, false, &channel);
|
||||
ERRCHECK(result);
|
||||
}
|
||||
|
||||
if (Common_BtnPress(BTN_ACTION2))
|
||||
{
|
||||
result = system->playSound(sound2, 0, false, &channel);
|
||||
ERRCHECK(result);
|
||||
}
|
||||
|
||||
if (Common_BtnPress(BTN_ACTION3))
|
||||
{
|
||||
result = system->playSound(sound3, 0, false, &channel);
|
||||
ERRCHECK(result);
|
||||
}
|
||||
|
||||
result = system->update();
|
||||
ERRCHECK(result);
|
||||
|
||||
{
|
||||
unsigned int ms = 0;
|
||||
unsigned int lenms = 0;
|
||||
bool playing = 0;
|
||||
bool paused = 0;
|
||||
int channelsplaying = 0;
|
||||
|
||||
if (channel)
|
||||
{
|
||||
FMOD::Sound *currentsound = 0;
|
||||
|
||||
result = channel->isPlaying(&playing);
|
||||
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
|
||||
{
|
||||
ERRCHECK(result);
|
||||
}
|
||||
|
||||
result = channel->getPaused(&paused);
|
||||
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
|
||||
{
|
||||
ERRCHECK(result);
|
||||
}
|
||||
|
||||
result = channel->getPosition(&ms, FMOD_TIMEUNIT_MS);
|
||||
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
|
||||
{
|
||||
ERRCHECK(result);
|
||||
}
|
||||
|
||||
channel->getCurrentSound(¤tsound);
|
||||
if (currentsound)
|
||||
{
|
||||
result = currentsound->getLength(&lenms, FMOD_TIMEUNIT_MS);
|
||||
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
|
||||
{
|
||||
ERRCHECK(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
system->getChannelsPlaying(&channelsplaying, NULL);
|
||||
|
||||
Common_Draw("==================================================");
|
||||
Common_Draw("Play Sound Example.");
|
||||
Common_Draw("Copyright (c) Firelight Technologies 2004-2026.");
|
||||
Common_Draw("==================================================");
|
||||
Common_Draw("");
|
||||
Common_Draw("Press %s to play a mono sound (drumloop)", Common_BtnStr(BTN_ACTION1));
|
||||
Common_Draw("Press %s to play a mono sound (jaguar)", Common_BtnStr(BTN_ACTION2));
|
||||
Common_Draw("Press %s to play a stereo sound (swish)", Common_BtnStr(BTN_ACTION3));
|
||||
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
|
||||
Common_Draw("");
|
||||
Common_Draw("Time %02d:%02d:%02d/%02d:%02d:%02d : %s", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : playing ? "Playing" : "Stopped");
|
||||
Common_Draw("Channels Playing %d", channelsplaying);
|
||||
}
|
||||
|
||||
Common_Sleep(50);
|
||||
} while (!Common_BtnPress(BTN_QUIT));
|
||||
|
||||
/*
|
||||
Shut down
|
||||
*/
|
||||
result = sound1->release();
|
||||
ERRCHECK(result);
|
||||
result = sound2->release();
|
||||
ERRCHECK(result);
|
||||
result = sound3->release();
|
||||
ERRCHECK(result);
|
||||
result = system->close();
|
||||
ERRCHECK(result);
|
||||
result = system->release();
|
||||
ERRCHECK(result);
|
||||
|
||||
Common_Close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user