fix
This commit is contained in:
parent
a84dfac0d7
commit
69ca8a90af
2 changed files with 13 additions and 4 deletions
|
|
@ -21,8 +21,12 @@ int main(){
|
|||
|
||||
drv = new fishbone::SoundDriver();
|
||||
|
||||
snd = drv->mixer.open("music.mod");
|
||||
snd = drv->mixer.open("shanghai.mp3");
|
||||
snd->setLoop(true);
|
||||
snd->position[0] = -1;
|
||||
snd->position[1] = 0;
|
||||
snd->position[2] = 0;
|
||||
snd->is3d = true;
|
||||
snd->resume();
|
||||
|
||||
while(!quit);
|
||||
|
|
|
|||
|
|
@ -42,17 +42,17 @@ void fishbone::Mixer::read(short* buffer, size_t frames) {
|
|||
float angle, v;
|
||||
float d;
|
||||
float lf, rf;
|
||||
|
||||
|
||||
for(int j = 0; j < 3; j++) r[j] = this->sounds[i]->position[j] - this->position[j];
|
||||
|
||||
angle = atan2(r[2], r[0]);
|
||||
v = cos(angle);
|
||||
|
||||
d = sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);
|
||||
|
||||
lf = 1.0 - v;
|
||||
rf = 1.0 + v;
|
||||
|
||||
d = sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);
|
||||
|
||||
la = 1.0 / (1.0 + lf + d * d);
|
||||
ra = 1.0 / (1.0 + rf + d * d);
|
||||
}
|
||||
|
|
@ -83,6 +83,11 @@ void fishbone::Mixer::read(short* buffer, size_t frames) {
|
|||
r = req[(j * this->sounds[i]->rate / fishbone::Mixer::rate) * 2 + 1];
|
||||
}
|
||||
|
||||
if(this->sounds[i]->is3d){
|
||||
l = (l + r) / 2;
|
||||
r = l;
|
||||
}
|
||||
|
||||
tmp[2 * j + 0] += l / 32767.0 * la * this->sounds[i]->volume;
|
||||
tmp[2 * j + 1] += r / 32767.0 * ra * this->sounds[i]->volume;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue