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

Auteur Sujet: SoundStream : séparation stéréo trop faible ?  (Lu 2783 fois)

0 Membres et 1 Invité sur ce sujet

Phanoo

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
SoundStream : séparation stéréo trop faible ?
« le: Mai 13, 2014, 02:01:41 pm »
Bonjour,
J'ai une SoundStream dans laquelle j'écris manuellement les samples, mais bizarrement la séparation stéréo est très faible : si j'écris que dans le buffer de droite (buffer gauche remplis de zéros), quand j'écoute le son il est certes positionné un peu à droite mais il y a quand même beaucoup de son qui sort du haut parleur de gauche. Inversement pour le channel gauche. Est-ce un bug ou j'ai loupé quelque chose ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SoundStream : séparation stéréo trop faible ?
« Réponse #1 le: Mai 13, 2014, 02:12:09 pm »
Je n'ai jamais vraiment testé ce genre de chose, je ne sais donc pas si c'est "normal" ou pas. Mais a priori je dirais que non.

Il faudrait que tu nous montres un code complet minimal qui reproduit le problème, afin qu'on puisse tester par nous-même et éventuellement debugger.
Laurent Gomila - SFML developer

Phanoo

  • Full Member
  • ***
  • Messages: 136
    • Voir le profil
Re : SoundStream : séparation stéréo trop faible ?
« Réponse #2 le: Mai 13, 2014, 02:32:42 pm »
Voilà je viens de faire un code minimal qui reproduit le problème, le programme génère une forme d'onde carrée qu'il envoie entièrement dans le buffer de droite : (SFML2.1)

#include <SFML/Audio.hpp>
using namespace sf;

Int16 testWave[2]={-2000,2000};
float phase=0.f;

class Test: public SoundStream{
private:
        Int16 buffer[2048];
        virtual bool onGetData(Chunk& data){
                data.samples = &buffer[0];
                data.sampleCount = 2048;
                for(unsigned i = 0; i< data.sampleCount; i+=2){

                        buffer[i]=0; // zéros à gauche, pourtant j'ai du son ?
                        buffer[i+1]=testWave[(int)phase]; // données envoyées coté droit

                        phase+=0.01f;
                        if(phase >= 2)
                                phase=0;
                }
                return true;
        }
        virtual void onSeek(Time timeOffset){}
public:
        Test(){
                initialize(2, 22050);
        }
};

int main(){
        Test test;
        test.play();

        while(1){}
        return (0);
}

A l'écoute il y a plus de son à droite effectivement mais c'est léger, comme si au lieu de faire du "0,255" ça faisait du "100,150" niveau séparation des deux canaux.

C'est possible que la méthode setPosition interfère avec la stéréo ? Je l'ai pas essayée vu que c'est censé s'appliquer qu'aux sons mono
« Modifié: Mai 13, 2014, 02:35:08 pm par ratatax »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SoundStream : séparation stéréo trop faible ?
« Réponse #3 le: Mai 13, 2014, 02:54:29 pm »
Citer
C'est possible que la méthode setPosition interfère avec la stéréo ? Je l'ai pas essayée vu que c'est censé s'appliquer qu'aux sons mono
Non en effet, ça ne fera rien aux sons stéréo.

Je testerai ça si j'ai le temps, je ne te promets rien.
Laurent Gomila - SFML developer