Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
9566 turbocat 1
#include "audio.h"
2
#include "../options.h"
3
#include 
4
 
5
int music_volume = 4;
6
 
7
void PHL_AudioInit()
8
{
9
    SDL_InitSubSystem(SDL_INIT_AUDIO);
10
    #ifndef __MORPHOS__
11
    Mix_Init(MIX_INIT_OGG); // midi is on by default
12
    #endif
13
    Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096);
14
 
15
    PHL_MusicVolume(0.25f * music_volume);
16
}
17
 
18
void PHL_AudioClose()
19
{
20
    Mix_CloseAudio();
21
    #ifndef __MORPHOS__
22
    Mix_Quit();
23
    #endif
24
}
25
 
26
//Same as PHL_LoadSound, but expects a file name without extension
27
PHL_Music PHL_LoadMusic(char* fname, int loop)
28
{
29
    PHL_Music ret;
30
    ret.loop = loop;
31
    char buff[4096];
32
    strcpy(buff, "data/");
33
    strcat(buff, fname);
34
    strcat(buff, getMusicType()?".ogg":".mid");
35
    ret.snd = Mix_LoadMUS(buff);
36
    return ret;
37
}
38
 
39
PHL_Sound PHL_LoadSound(char* fname)
40
{
41
    char buff[4096];
42
    strcpy(buff, "data/");
43
    strcat(buff, fname);
44
    return Mix_LoadWAV(buff);
45
}
46
 
47
void PHL_MusicVolume(float vol)
48
{
49
    Mix_VolumeMusic(SDL_MIX_MAXVOLUME*vol);
50
}
51
 
52
void PHL_PlayMusic(PHL_Music snd)
53
{
54
    if(snd.snd)
55
        Mix_PlayMusic(snd.snd, snd.loop?-1:0);
56
}
57
 
58
void PHL_PlaySound(PHL_Sound snd, int channel)
59
{
60
    Mix_PlayChannel(channel, snd, 0);
61
}
62
 
63
void PHL_StopMusic()
64
{
65
    Mix_HaltMusic();
66
}
67
 
68
void PHL_StopSound(PHL_Sound snd, int channel)
69
{
70
    Mix_HaltChannel(channel);
71
}
72
 
73
void PHL_FreeMusic(PHL_Music snd)
74
{
75
    if(snd.snd)
76
        Mix_FreeMusic(snd.snd);
77
    snd.snd = NULL;
78
}
79
 
80
void PHL_FreeSound(PHL_Sound snd)
81
{
82
    Mix_FreeChunk(snd);
83
}