33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
}
VAR(soundbufferlen, 128, 1024, 4096);
void
initsound()
{
memset(soundlocs, 0, sizeof(soundloc) * MAXCHAN);
if (Mix_OpenAudio(SOUNDFREQ, MIX_DEFAULT_FORMAT, 2, soundbufferlen) <
0) {
conoutf(@"sound init failed (SDL_mixer): %s",
(size_t)Mix_GetError());
nosound = true;
}
Mix_AllocateChannels(MAXCHAN);
|
|
|
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
}
VAR(soundbufferlen, 128, 1024, 4096);
void
initsound()
{
memset(soundlocs, 0, sizeof(struct soundloc) * MAXCHAN);
if (Mix_OpenAudio(SOUNDFREQ, MIX_DEFAULT_FORMAT, 2, soundbufferlen) <
0) {
conoutf(@"sound init failed (SDL_mixer): %s",
(size_t)Mix_GetError());
nosound = true;
}
Mix_AllocateChannels(MAXCHAN);
|
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
vol -= (int)(dist * 3 * soundvol /
255); // simple mono distance attenuation
if (stereo && (v.x != 0 || v.y != 0)) {
// relative angle of sound along X-Y axis
float yaw =
-atan2(v.x, v.y) - player1.yaw * (PI / 180.0f);
// range is from 0 (left) to 255 (right)
pan = int(255.9f * (0.5 * sin(yaw) + 0.5f));
}
}
vol = (vol * MAXVOL) / 255;
Mix_Volume(chan, vol);
Mix_SetPanning(chan, 255 - pan, pan);
}
|
|
|
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
vol -= (int)(dist * 3 * soundvol /
255); // simple mono distance attenuation
if (stereo && (v.x != 0 || v.y != 0)) {
// relative angle of sound along X-Y axis
float yaw =
-atan2(v.x, v.y) - player1.yaw * (PI / 180.0f);
// range is from 0 (left) to 255 (right)
pan = (int)(255.9f * (0.5 * sin(yaw) + 0.5f));
}
}
vol = (vol * MAXVOL) / 255;
Mix_Volume(chan, vol);
Mix_SetPanning(chan, 255 - pan, pan);
}
|