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