-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsound_shared.cpp
181 lines (173 loc) · 7.94 KB
/
sound_shared.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#include "sound_shared.h"
#include <iostream>
#include <QMap>
#include <QString>
namespace Snd {
void handleErrors()
{
ALenum err;
ALenum lastError = AL_NO_ERROR;
while( (err = alGetError()) != AL_NO_ERROR )
{
lastError = err;
std::cerr << "OpenAL error: " << err << std::endl;
}
// throw last error
if(lastError != AL_NO_ERROR)
throw err;
}
QMap<QString, SoundEffect> const g_effects = {
{"GENERIC", SFX_REVERB_PRESET_GENERIC},
{"PADDEDCELL", SFX_REVERB_PRESET_PADDEDCELL},
{"ROOM", SFX_REVERB_PRESET_ROOM},
{"BATHROOM", SFX_REVERB_PRESET_BATHROOM},
{"LIVINGROOM", SFX_REVERB_PRESET_LIVINGROOM},
{"STONEROOM", SFX_REVERB_PRESET_STONEROOM},
{"AUDITORIUM", SFX_REVERB_PRESET_AUDITORIUM},
{"CONCERTHALL", SFX_REVERB_PRESET_CONCERTHALL},
{"CAVE", SFX_REVERB_PRESET_CAVE},
{"ARENA", SFX_REVERB_PRESET_ARENA},
{"HANGAR", SFX_REVERB_PRESET_HANGAR},
{"CARPETEDHALLWAY", SFX_REVERB_PRESET_CARPETEDHALLWAY},
{"HALLWAY", SFX_REVERB_PRESET_HALLWAY},
{"STONECORRIDOR", SFX_REVERB_PRESET_STONECORRIDOR},
{"ALLEY", SFX_REVERB_PRESET_ALLEY},
{"FOREST", SFX_REVERB_PRESET_FOREST},
{"CITY", SFX_REVERB_PRESET_CITY},
{"MOUNTAINS", SFX_REVERB_PRESET_MOUNTAINS},
{"QUARRY", SFX_REVERB_PRESET_QUARRY},
{"PLAIN", SFX_REVERB_PRESET_PLAIN},
{"PARKINGLOT", SFX_REVERB_PRESET_PARKINGLOT},
{"SEWERPIPE", SFX_REVERB_PRESET_SEWERPIPE},
{"UNDERWATER", SFX_REVERB_PRESET_UNDERWATER},
{"DRUGGED", SFX_REVERB_PRESET_DRUGGED},
{"DIZZY", SFX_REVERB_PRESET_DIZZY},
{"PSYCHOTIC", SFX_REVERB_PRESET_PSYCHOTIC},
{"CASTLE_SMALLROOM", SFX_REVERB_PRESET_CASTLE_SMALLROOM},
{"CASTLE_SHORTPASSAGE", SFX_REVERB_PRESET_CASTLE_SHORTPASSAGE},
{"CASTLE_MEDIUMROOM", SFX_REVERB_PRESET_CASTLE_MEDIUMROOM},
{"CASTLE_LARGEROOM", SFX_REVERB_PRESET_CASTLE_LARGEROOM},
{"CASTLE_LONGPASSAGE", SFX_REVERB_PRESET_CASTLE_LONGPASSAGE},
{"CASTLE_HALL", SFX_REVERB_PRESET_CASTLE_HALL},
{"CASTLE_CUPBOARD", SFX_REVERB_PRESET_CASTLE_CUPBOARD},
{"CASTLE_COURTYARD", SFX_REVERB_PRESET_CASTLE_COURTYARD},
{"CASTLE_ALCOVE", SFX_REVERB_PRESET_CASTLE_ALCOVE},
{"FACTORY_SMALLROOM", SFX_REVERB_PRESET_FACTORY_SMALLROOM},
{"FACTORY_SHORTPASSAGE", SFX_REVERB_PRESET_FACTORY_SHORTPASSAGE},
{"FACTORY_MEDIUMROOM", SFX_REVERB_PRESET_FACTORY_MEDIUMROOM},
{"FACTORY_LARGEROOM", SFX_REVERB_PRESET_FACTORY_LARGEROOM},
{"FACTORY_LONGPASSAGE", SFX_REVERB_PRESET_FACTORY_LONGPASSAGE},
{"FACTORY_HALL", SFX_REVERB_PRESET_FACTORY_HALL},
{"FACTORY_CUPBOARD", SFX_REVERB_PRESET_FACTORY_CUPBOARD},
{"FACTORY_COURTYARD", SFX_REVERB_PRESET_FACTORY_COURTYARD},
{"FACTORY_ALCOVE", SFX_REVERB_PRESET_FACTORY_ALCOVE},
{"ICEPALACE_SMALLROOM", SFX_REVERB_PRESET_ICEPALACE_SMALLROOM},
{"ICEPALACE_SHORTPASSAGE", SFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE},
{"ICEPALACE_MEDIUMROOM", SFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM},
{"ICEPALACE_LARGEROOM", SFX_REVERB_PRESET_ICEPALACE_LARGEROOM},
{"ICEPALACE_LONGPASSAGE", SFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE},
{"ICEPALACE_HALL", SFX_REVERB_PRESET_ICEPALACE_HALL},
{"ICEPALACE_CUPBOARD", SFX_REVERB_PRESET_ICEPALACE_CUPBOARD},
{"ICEPALACE_COURTYARD", SFX_REVERB_PRESET_ICEPALACE_COURTYARD},
{"ICEPALACE_ALCOVE", SFX_REVERB_PRESET_ICEPALACE_ALCOVE},
{"SPACESTATION_SMALLROOM", SFX_REVERB_PRESET_SPACESTATION_SMALLROOM},
{"SPACESTATION_SHORTPASSAGE", SFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE},
{"SPACESTATION_MEDIUMROOM", SFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM},
{"SPACESTATION_LARGEROOM", SFX_REVERB_PRESET_SPACESTATION_LARGEROOM},
{"SPACESTATION_LONGPASSAGE", SFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE},
{"SPACESTATION_HALL", SFX_REVERB_PRESET_SPACESTATION_HALL},
{"SPACESTATION_CUPBOARD", SFX_REVERB_PRESET_SPACESTATION_CUPBOARD},
{"SPACESTATION_ALCOVE", SFX_REVERB_PRESET_SPACESTATION_ALCOVE},
{"WOODEN_SMALLROOM", SFX_REVERB_PRESET_WOODEN_SMALLROOM},
{"WOODEN_SHORTPASSAGE", SFX_REVERB_PRESET_WOODEN_SHORTPASSAGE},
{"WOODEN_MEDIUMROOM", SFX_REVERB_PRESET_WOODEN_MEDIUMROOM},
{"WOODEN_LARGEROOM", SFX_REVERB_PRESET_WOODEN_LARGEROOM},
{"WOODEN_LONGPASSAGE", SFX_REVERB_PRESET_WOODEN_LONGPASSAGE},
{"WOODEN_HALL", SFX_REVERB_PRESET_WOODEN_HALL},
{"WOODEN_CUPBOARD", SFX_REVERB_PRESET_WOODEN_CUPBOARD},
{"WOODEN_COURTYARD", SFX_REVERB_PRESET_WOODEN_COURTYARD},
{"WOODEN_ALCOVE", SFX_REVERB_PRESET_WOODEN_ALCOVE},
{"SPORT_EMPTYSTADIUM", SFX_REVERB_PRESET_SPORT_EMPTYSTADIUM},
{"SPORT_SQUASHCOURT", SFX_REVERB_PRESET_SPORT_SQUASHCOURT},
{"SPORT_SMALLSWIMMINGPOOL", SFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL},
{"SPORT_LARGESWIMMINGPOOL", SFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL},
{"SPORT_GYMNASIUM", SFX_REVERB_PRESET_SPORT_GYMNASIUM},
{"SPORT_FULLSTADIUM", SFX_REVERB_PRESET_SPORT_FULLSTADIUM},
{"SPORT_STADIUMTANNOY", SFX_REVERB_PRESET_SPORT_STADIUMTANNOY},
{"PREFAB_WORKSHOP", SFX_REVERB_PRESET_PREFAB_WORKSHOP},
{"PREFAB_SCHOOLROOM", SFX_REVERB_PRESET_PREFAB_SCHOOLROOM},
{"PREFAB_PRACTISEROOM", SFX_REVERB_PRESET_PREFAB_PRACTISEROOM},
{"PREFAB_PRACTICEROOM", SFX_REVERB_PRESET_PREFAB_PRACTISEROOM},
{"PREFAB_OUTHOUSE", SFX_REVERB_PRESET_PREFAB_OUTHOUSE},
{"PREFAB_CARAVAN", SFX_REVERB_PRESET_PREFAB_CARAVAN},
{"DOME_TOMB", SFX_REVERB_PRESET_DOME_TOMB},
{"PIPE_SMALL", SFX_REVERB_PRESET_PIPE_SMALL},
{"DOME_SAINTPAULS", SFX_REVERB_PRESET_DOME_SAINTPAULS},
{"PIPE_LONGTHIN", SFX_REVERB_PRESET_PIPE_LONGTHIN},
{"PIPE_LARGE", SFX_REVERB_PRESET_PIPE_LARGE},
{"PIPE_RESONANT", SFX_REVERB_PRESET_PIPE_RESONANT},
{"OUTDOORS_BACKYARD", SFX_REVERB_PRESET_OUTDOORS_BACKYARD},
{"OUTDOORS_ROLLINGPLAINS", SFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS},
{"OUTDOORS_DEEPCANYON", SFX_REVERB_PRESET_OUTDOORS_DEEPCANYON},
{"OUTDOORS_CREEK", SFX_REVERB_PRESET_OUTDOORS_CREEK},
{"OUTDOORS_VALLEY", SFX_REVERB_PRESET_OUTDOORS_VALLEY},
{"MOOD_HEAVEN", SFX_REVERB_PRESET_MOOD_HEAVEN},
{"MOOD_HELL", SFX_REVERB_PRESET_MOOD_HELL},
{"MOOD_MEMORY", SFX_REVERB_PRESET_MOOD_MEMORY},
{"DRIVING_COMMENTATOR", SFX_REVERB_PRESET_DRIVING_COMMENTATOR},
{"DRIVING_PITGARAGE", SFX_REVERB_PRESET_DRIVING_PITGARAGE},
{"DRIVING_INCAR_RACER", SFX_REVERB_PRESET_DRIVING_INCAR_RACER},
{"DRIVING_INCAR_SPORTS", SFX_REVERB_PRESET_DRIVING_INCAR_SPORTS},
{"DRIVING_INCAR_LUXURY", SFX_REVERB_PRESET_DRIVING_INCAR_LUXURY},
{"DRIVING_FULLGRANDSTAND", SFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND},
{"DRIVING_EMPTYGRANDSTAND", SFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND},
{"DRIVING_TUNNEL", SFX_REVERB_PRESET_DRIVING_TUNNEL},
{"CITY_STREETS", SFX_REVERB_PRESET_CITY_STREETS},
{"CITY_SUBWAY", SFX_REVERB_PRESET_CITY_SUBWAY},
{"CITY_MUSEUM", SFX_REVERB_PRESET_CITY_MUSEUM},
{"CITY_LIBRARY", SFX_REVERB_PRESET_CITY_LIBRARY},
{"CITY_UNDERPASS", SFX_REVERB_PRESET_CITY_UNDERPASS},
{"CITY_ABANDONED", SFX_REVERB_PRESET_CITY_ABANDONED},
{"DUSTYROOM", SFX_REVERB_PRESET_DUSTYROOM},
{"CHAPEL", SFX_REVERB_PRESET_CHAPEL},
{"SMALLWATERROOM", SFX_REVERB_PRESET_SMALLWATERROOM},
{"DISABLED", SFX_DISABLED}
};
QMap<QString, SoundFilter> const g_filters = {
{"VERY_LIGHT_MUFFLED_SOUND", SFE_MUFFLE_1},
{"VERY_LIGHTLY_MUFFLED_SOUND", SFE_MUFFLE_1},
{"LIGHT_MUFFLED_SOUND", SFE_MUFFLE_2},
{"LIGHTLY_MUFFLED_SOUND", SFE_MUFFLE_2},
{"AVERAGE_MUFFLED_SOUND", SFE_MUFFLE_4},
{"AVERAGELY_MUFFLED_SOUND", SFE_MUFFLE_4},
{"HEAVY_MUFFLED_SOUND", SFE_MUFFLE_7},
{"HEAVILY_MUFFLED_SOUND", SFE_MUFFLE_7},
{"VERY_HEAVY_MUFFLED_SOUND", SFE_MUFFLE_9},
{"VERY_HEAVILY_MUFFLED_SOUND", SFE_MUFFLE_9},
{"MUFFLE_1", SFE_MUFFLE_1},
{"MUFFLE_2", SFE_MUFFLE_2},
{"MUFFLE_3", SFE_MUFFLE_3},
{"MUFFLE_4", SFE_MUFFLE_4},
{"MUFFLE_5", SFE_MUFFLE_5},
{"MUFFLE_6", SFE_MUFFLE_6},
{"MUFFLE_7", SFE_MUFFLE_7},
{"MUFFLE_8", SFE_MUFFLE_8},
{"MUFFLE_9", SFE_MUFFLE_9},
{"MUFFLE_10", SFE_MUFFLE_10},
{"DISABLED", SFE_NONE}
};
SoundEffect GetSoundEffectByName(QString const& name)
{
auto it = g_effects.find(name);
if(it == g_effects.end())
return SFX_DISABLED;
return it.value();
}
SoundFilter GetSoundFilterByName(QString const& name)
{
auto it = g_filters.find(name);
if(it == g_filters.end())
return SFE_DISABLED;
return it.value();
}
}