Forum de la communauté SFML

Aide => Audio => Discussion démarrée par: Computer Mail le Mai 05, 2017, 05:34:23 pm

Titre: Capturer un son puis le diffuser
Posté par: Computer Mail le Mai 05, 2017, 05:34:23 pm
Bonjour,

j'ai suivi ce tuto https://www.sfml-dev.org/tutorials/2.4/audio-recording-fr.php pour capturer un échantillon sonore puis le jouer; voici mon code:
#include <iostream>
#include <string>
#include <chrono>
#include <SFML/Audio.hpp>
#include <SFML/Audio/SoundBuffer.hpp>
#include <SFML/Audio/SoundBufferRecorder.hpp>
#include <SFML/Audio/Sound.hpp>


unsigned long int a=1,b=0;


int main(){

if (!sf::SoundBufferRecorder::isAvailable()){std::cout<<"ERROR NO DEVICE FOUND";}

sf::SoundBufferRecorder recorder;


recorder.start();

while(a){

        ++b;

        if(b>2000000000){

                --a;}}

recorder.stop();


const sf::SoundBuffer& buffer = recorder.getBuffer();

std::cout<<"PROGRAM SUCCESSFUL"<<std::endl;

sf::Sound sound;

sound.setBuffer(buffer);

sound.play();

return 0;}

Il est censé enregistrer un son puis le diffuser seulement il ne fait qu'afficher PROGRAM SUCCESSFUL après le délai d'attente créé par la boucle, j'ai pourtant suivi le tuto à la lettre et ai bien les deux périphériques requis (microphone et hauts-parleurs), quelqu'un pourrait-il m'aider à corriger les erreurs ?
Titre: Re: Capturer un son puis le diffuser
Posté par: Cpl.Bator le Mai 05, 2017, 06:40:49 pm
Salut. sound.play() n'est pas bloquant, heureusement. imagines, tu serais obligé de faire un thread par son dans un jeu... :)
Titre: Re: Capturer un son puis le diffuser
Posté par: Computer Mail le Mai 05, 2017, 08:08:31 pm
Formidable merci.