Forum de la communauté SFML

Aide => Audio => Discussion démarrée par: Visor le Février 09, 2017, 05:12:44 pm

Titre: Attenuation sons
Posté par: Visor le Février 09, 2017, 05:12:44 pm
Bonjour,

je cherche à calculer la distance maximum en pixels jusqu'à laquelle un son est audible suivant le SetAttenuation() d'un sf::Sound (peu importe le setMinDistance).

J'ai bien trouvé les formules concernant l’atténuation d'un son dans l'air, mais j'imagine que la formule intégrée dans la SFML est plus simpliste.

Quelqu'un aurait-il une idée sur quoi me diriger?
Titre: Re : Attenuation sons
Posté par: Laurent le Février 09, 2017, 05:18:32 pm
La formule est tout à la fin du tutoriel sur la spatialisation :
http://www.sfml-dev.org/tutorials/2.4/audio-spatialization-fr.php#les-sources-audio
Titre: Re : Attenuation sons
Posté par: Visor le Février 09, 2017, 07:05:19 pm
Merci pour la réponse rapide!

Oui je l'avais vue en effet, mais je ne vois pas comment l'utiliser.
J'ai eu beau la torturer dans tous les sens, je n'ai trouvé pas comment déduire la distance max (facteur de ~0.1) à partir d'elle.
Titre: Re : Attenuation sons
Posté par: Laurent le Février 09, 2017, 08:14:49 pm
Il suffit de retravailler un peu l'équation, et si je ne me suis pas trompé, ça doit faire quelque chose du genre :

d = m * (9 - a) / a

d = la distance que tu cherches (pour laquelle le facteur vaut 0.1)
m = minDistance
a = attenuation
Titre: Re : Attenuation sons
Posté par: Visor le Février 09, 2017, 08:24:26 pm
J'étais arrivé à quelque chose d'équivalent, mais qui ne correspondait pas toujours suivant l'atténuation choisie.
Par exemple 100 / (100 + 5 * (max(280, 100) - 100)) = 0.1
100 * (9 - 5) / 5 = 80, alors qu'on devrait trouver 280
Merci quand même, je vais continuer à chercher.
Titre: Re : Attenuation sons
Posté par: Laurent le Février 09, 2017, 08:29:43 pm
Oui j'ai effectivement retiré le max(distance, minDistance) de l'équation, et comme je te l'ai dit j'ai fait ça en 2 minutes sans me revérifier. Mais ce n'est que du bricolage simple d'équation, tu devrais pouvoir trouver la bonne formulation au bout du compte ;)
Titre: Re : Attenuation sons
Posté par: Visor le Février 09, 2017, 08:45:04 pm
Entendu, je mettrais à jour le post si je trouve  ;D
Titre: Re : Attenuation sons
Posté par: Visor le Février 28, 2017, 02:35:24 pm
DistanceMax = DistanceMin * ((( 1 / VolumeFactor ) - 1 ) / Attenuation + 1)

Vous pouvez clôturer!