Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Attenuation sons  (Lu 3647 fois)

0 Membres et 1 Invité sur ce sujet

Visor

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Attenuation sons
« 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?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Attenuation sons
« Réponse #1 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
Laurent Gomila - SFML developer

Visor

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Attenuation sons
« Réponse #2 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.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Attenuation sons
« Réponse #3 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
Laurent Gomila - SFML developer

Visor

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Attenuation sons
« Réponse #4 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.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Attenuation sons
« Réponse #5 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 ;)
Laurent Gomila - SFML developer

Visor

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Attenuation sons
« Réponse #6 le: Février 09, 2017, 08:45:04 pm »
Entendu, je mettrais à jour le post si je trouve  ;D

Visor

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Attenuation sons
« Réponse #7 le: Février 28, 2017, 02:35:24 pm »
DistanceMax = DistanceMin * ((( 1 / VolumeFactor ) - 1 ) / Attenuation + 1)

Vous pouvez clôturer!
« Modifié: Février 28, 2017, 03:14:51 pm par Bloo »