Forum de la communauté SFML

Aide => Audio => Discussion démarrée par: Phanoo le Mai 13, 2014, 02:01:41 pm

Titre: SoundStream : séparation stéréo trop faible ?
Posté par: Phanoo 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 ?
Titre: Re : SoundStream : séparation stéréo trop faible ?
Posté par: Laurent 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.
Titre: Re : SoundStream : séparation stéréo trop faible ?
Posté par: Phanoo 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
Titre: Re : SoundStream : séparation stéréo trop faible ?
Posté par: Laurent 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.