Hmm, c'est le moment ou je pleure, c'est ça ?
Haha !
Je vais tenter d'expliquer un peu mon programme et mon code (version simplifiée !).
J'utilise un QTreeWidget qui pour chaque item possède un QVariant qui me permet de récupérer une instance de ma classe "Sample" lié à cet item.
Pour chaque instance de ma classe "Sample*", j'ai un QAudioOutput instancié qu'il lui est liée : Ça me permet de déclencher des sons différents en parallèle (1 par item).
Les sons proviennent de waves / mp3 et ogg dont je créer le QFormat pour la lecture en parsant le header après avoir converti les fichiers si nécessaire.
Ce que je met dans mon QAudioOutput::Start() est un buffer de type QBuffer que j'ouvre et Write avec les données de mon wave stockée dans un QByteArray (à peu prêt ^^)
Aucun souci à ce niveau là.
Je peux sélectionner une sortie générale pour tous mes sons via :
foreach(QAudioDeviceInfo deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
et j'ajoute dans mon combo :
ui->AudioOutputCombo->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo));
Ensuite via un slot sur mon combo, lorsque je change de sortie, je parcoure tous mes QTreeWidgetItem et récupère l'instance de la classe "Sample*" qui lui est liée.
Ensuite je récupère le QAudioOuput qui va avec.
J'appèle stop();
j'appelle disconnect(this);
J'appelle une méthode de ma classe "Sample" qui me permet de redéfinir une nouvelle sortie, et je creer une nouvelle instance de QAudioOutput après avoir delete l'ancienne.
Tout ça fonctionne à merveille.
Même logique pour le setVolume();
j'ai un curseur général QSlider.
Je parcours tous mes items, je fais un setVolume(x) sur chacun.
Avec un volume(), je constate que les modifs sont valides.
Voilà pour le topo.
Mais au delà de 50%, le curseur de windows revient immédiatement sur 50%.
Ex : j'ouvre mon programme. je creer un item avec un son lié etc... bref, à la lecture il est à 50% malgré mon QSlider à 100%. Je monte le Slider Window à 100%. J'érafle mon slider qui était à 100, je le met à 99, ET HOP, celui de windows repasse à 50.
Haha ! Pas mal hein ! Pour mon 1er programme en c++, j'men suis sorti pour tout, sauf pour ça ... Bleh ...
PS : je n'ai de soucis qu'avec mon programme !! Évidemment :p.
Partager