104 lines
3.1 KiB
C++
104 lines
3.1 KiB
C++
#pragma once
|
|
#include <string>
|
|
|
|
namespace audio
|
|
{
|
|
// Enumeració per a representar el estat de un canal de sò
|
|
enum channel_state
|
|
{
|
|
CHANNEL_INVALID,
|
|
CHANNEL_FREE,
|
|
CHANNEL_PLAYING,
|
|
CHANNEL_PAUSED
|
|
};
|
|
|
|
// Enumeració per a representar el estat de la música
|
|
enum music_state
|
|
{
|
|
MUSIC_INVALID,
|
|
MUSIC_PLAYING,
|
|
MUSIC_PAUSED,
|
|
MUSIC_STOPPED
|
|
};
|
|
|
|
// Estructures per a gestionar música i só
|
|
struct sound;
|
|
struct music
|
|
{
|
|
char *buffer;
|
|
void *music;
|
|
};
|
|
|
|
/// @brief Inicialitza el sistema de só
|
|
void init();
|
|
|
|
/// @brief Tanca el sistema de só
|
|
void quit();
|
|
|
|
/// @brief Carrega un arxiu de música en format OGG
|
|
/// @param filename nom de l'arxiu
|
|
/// @return punter a la música
|
|
music *loadMusic(const std::string filename);
|
|
|
|
/// @brief Comença a reproduïr la música en questió
|
|
/// @param mus punter a la música
|
|
/// @param loop quants bucles farà (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
|
void playMusic(const music *mus, const int loop = -1);
|
|
|
|
/// @brief Pausa la música que està sonant ara
|
|
void pauseMusic();
|
|
|
|
/// @brief Continua la música pausada
|
|
void resumeMusic();
|
|
|
|
/// @brief Para la música que estava sonant
|
|
void stopMusic();
|
|
|
|
/// @brief Para la música que estava sonant fent un fade
|
|
void fadeoutMusic();
|
|
|
|
/// @brief Obté el estat actual de la música
|
|
/// @return estat actual de la música (MUSIC_INVALID, MUSIC_PLAYING, MUSIC_PAUSED o MUSIC_STOPPED)
|
|
const music_state getMusicState();
|
|
|
|
/// @brief Allibera una música
|
|
/// @param mus punter a la música a alliberar
|
|
void deleteMusic(music *mus);
|
|
|
|
/// @brief Carrega un só des d'un arxiu WAV
|
|
/// @param filename nom de l'arxiu
|
|
/// @return un punter al só
|
|
const sound *loadSound(const std::string filename);
|
|
|
|
/// @brief Comença a reproduïr el só especificat
|
|
/// @param snd punter al só a reproduïr
|
|
/// @param loop si es fa bucle (-1=infinit, 0=no repeteix, 1=repeteix 1 vegada...)
|
|
/// @return número del canal en que està sonant el só
|
|
const int playSound(sound *snd, const int loop = 0);
|
|
|
|
/// @brief Pausa un canal en el que s'estava reproduïnt un só
|
|
/// @param channel número del canal a pausar
|
|
void pauseChannel(const int channel);
|
|
|
|
/// @brief Continua un canal pausat
|
|
/// @param channel número del canal pausat
|
|
void resumeChannel(const int channel);
|
|
|
|
/// @brief Para un canal que estava reproduïnt un só
|
|
/// @param channel número del canal a parar
|
|
void stopChannel(const int channel);
|
|
|
|
/// @brief Obté l'estat d'un canal
|
|
/// @param channel canal del que es vol obtindre l'estat
|
|
/// @return estat del canal (CHANNEL_INVALID, CHANNEL_FREE, CHANNEL_PLAYING o CHANNEL_PAUSED)
|
|
const channel_state getChannelState(const int channel);
|
|
|
|
/// @brief Allibera un só
|
|
/// @param snd punter al só
|
|
void deleteSound(sound *snd);
|
|
|
|
/// @brief Estableix el volum general
|
|
/// @param volume valor a establir com a volum (128 màxim)
|
|
/// @return el volum anterior
|
|
const int setVolume(int volume);
|
|
} |