Page 1 sur 1

[Résolu] AudioMixer : Question sur la plage Db

Publié : 28 Déc 2015 22:46
par Skelnox
Bonsoir,

En poursuivant le manuel (Spriting API avec pour compléter) j'ai commencé la lecture de la partie Audio (commencé, très loin d'avoir fini le tour) et j'en suis arrivé à l'AudioMixer. Je dois avouer que pour gérer de multiple AudioSource en un et même point c'est un bonheur. Mais un détail me taquine. Je suis loin d'être calé en Audio de manière général, donc passer du classique - 0 = pas de son - et - 1 = son à fond - , à cette barre de Db, là je suis un peu perdu. J'ai réussi via un script + un slider et donc l'AudioMixer (celui de l'ui canvas...) à gérer le volume en faisant bouger le slider.

Note : Je le met quand même, mais c'est la base même pour contrôler le volume par script dans le mixer. (J'appel la méthode depuis les paramètres "On Value Changed (single)" sur le slider dans l'inspecteur)

Code : Tout sélectionner

    public void SetMusicLvl(float musicLvl)
    {
        masterMixer.SetFloat("musicVol", musicLvl);
    }
Mais dans l'AudioMixer le son à 0 revient à mettre à -80db et donc pour un son normal je met à -10db (on peut mettre à 0 aussi mais la différence sur le slider ne se fait pas ressentir). Mais le hic c'est que, sur le slider, à peine 15%/20% du slider descendu le son est déjà inaudible (mais toujours là si on fait cracher la molette des enceinte à fond sur la droite). Donc les 75% / 80% il y a bien trop.

Je ne suis pas sûr si je me ferais bien comprendre, mais n'y a t-il pas un moyen, un paramètre (ou plusieurs) afin d'avoir un maximum et minimum un peu comme l'habituel 0 et 1 qui définissait les minimums et maximums si l'ont gérait le son directement sur l'AudioSource ?

Je suis bien perdu pour ce détail, j'oublie peut-être un petit truc ou cela se trouve je ne pense pas dans le bon sens avec l'AudioMixer.
Je vais continuer à tâter et faire des essais d'ici là qu'une réponse arrive.

Merci d'avance.
Skelnox

--


Edit : Problème résolu. Je vous met le code, si cela peut intéresser quelqu'un (ou si quelqu'un trouve qu'il peut y avoir mieux que ce que j'ai là, je serais preneur :super: )
Merci à IntDev(je n'aurais pas pensé à faire une conversion des décibels en float linéaire)

Code : Tout sélectionner

    public void SetMusicLvl(float musicLvl)
    {
        float dB = 20f * Mathf.Log10(Mathf.Pow(musicLvl, 2f));

        if (float.IsInfinity(dB)) { dB = -80f; }

        masterMixer.SetFloat("musicVol", dB);
    }