# JailAudio v1.2
JailAudio es una xicoteta api per a reemplaçar lo basic de *SDL_mixer*. Amb ella es poden carregar cançons en format **OGG** o sons en format **WAV**. Per a usar-la nomes tindreu que incloure els arxius `jail_audio.cpp`, `jail_audio.h` i `stb_vorbis.c` al vostre projecte. El seu us es molt senzill i es pot vore un example a l'arxiu `main.cpp`.

## Inicialització
### `void JA_Init(const int freq, const SDL_AudioFormat format, const int channels);`
Inicialitza el subsistema de audio. Es pot especificar la _frequència_, _format_ i _canals_, de la mateixa forma que abans creaveu el `SDL_AudioDevice`.

### `void JA_Quit();`
Tanquem la paraeta.

### `int JA_SetVolume(int volume);`
Canvia el volum general. Es un valor entre 0 i 128. Per defecte està a 128. La música al 100%, el só al 50%.

## Música

### `JA_Music JA_LoadMusic(const char* filename);`
Carrega un arxiu **OGG** en memoria i el guarda a una variable de tipus `JA_Music`. Es un punter opac, així que nomes val pa usar-lo com a referència a l'hora de fer-lo sonar.

### `void JA_PlayMusic(JA_Music music, const int loop);`
Comença a tocar un **OGG**. Se li pot dir que faça loop (`-1` fa loop, `0` no fa loop (sona 1 vegada), `1` repeteix el so (sona 2 vegades), etc...). Si estava sonant altra musica, pos la para i a prendre per cul.

### `void JA_PauseMusic();`
Pausa la música.

### `void JA_ResumeMusic();`
Continúa la música per on s’havia pausat.

### `void JA_StopMusic();`
Pos això...

### `int JA_SetMusicVolume(int volume);`
Canvia el volum de la música. Es un valor entre 0 i 128. Per defecte està a 128.

### `JA_Music_state JA_GetMusicState();`
Torna el estat de la música, que pot ser `JA_MUSIC_INVALID`, `JA_MUSIC_PLAYING`, `JA_MUSIC_PAUSED`o `JA_MUSIC_STOPPED`.

### `void JA_DeleteMusic(JA_Music music);`
Esborra de la memòria una cançò prèviament carregada. Si está sonant pos para de sonar, ningún problema.

## Efectes de só

### `JA_Sound JA_NewSound(Uint8* buffer, Uint32 length);`
Crea un nou só a partir d'un buffer en memòria.

### `JA_Sound JA_LoadSound(const char* filename);`
Carrega un àudio des d'un arxiu **WAV** i el guarda a una variable de tipus `JA_Sound`. Es un punter opac, així que nomes val pa usar-lo com a referència a l'hora de fer-lo sonar.

### `int JA_PlaySound(JA_Sound sound, const int loop);`
Fa sonar un só prèviament carregat. Se li pot dir que faça loop (`-1` fa loop, `0` no fa loop (sona 1 vegada), `1` repeteix el so (sona 2 vegades), etc...). Torna el número del canal en el que està sonant.

### `void JA_DeleteSound(JA_Sound sound);`
Esborra de la memòria un só prèviament carregat. Si el só estava sonant en eixe moment, pos el para, ningún problema.

### `int JA_SetSoundVolume(int volume);`
Especifica el volum dels efecte de só. Es un valor entre 0 i 128. Per defecte està a 64.

## Canals de só

### `void JA_PauseChannel(const int channel);`
Pausa el só que estiga sonant en el canal especificat. Si s'especifica `-1`, pausa tots els canals que estigueren sonant en eixe moment.

### `void JA_ResumeChannel(const int channel);`
Continua sonant el canal especificat, si es que estava pausat. Si s'especifica `-1`, fa que tots els canals que estigueren pausats es despausen i continuen.

### `void JA_StopChannel(const int channel);`
Para un canal i el deixa lliure. Si s'especifica `-1`, para tots els canals que estigueren sonant en eixe moment.

### `JA_Channel_state JA_GetChannelState(const int channel);`
Torna el estat del canal especificat, que pot ser `JA_CHANNEL_INVALID`, `JA_CHANNEL_FREE`,`JA_CHANNEL_PLAYING` o `JA_CHANNEL_PAUSED`.

