SFML - Mettre en pause un enregistrement audio
Résolu/Fermé
MemeTech
Messages postés
90
Date d'inscription
mercredi 14 août 2019
Statut
Membre
Dernière intervention
7 janvier 2021
-
3 oct. 2019 à 21:39
MemeTech Messages postés 90 Date d'inscription mercredi 14 août 2019 Statut Membre Dernière intervention 7 janvier 2021 - 10 nov. 2019 à 18:49
MemeTech Messages postés 90 Date d'inscription mercredi 14 août 2019 Statut Membre Dernière intervention 7 janvier 2021 - 10 nov. 2019 à 18:49
A voir également:
- SFML - Mettre en pause un enregistrement audio
- Transcription audio en texte word gratuit - Guide
- Realtek audio driver - Guide
- Comment couper un enregistrement audio - Guide
- Imprimante en pause hp -
- Annonce en pause leboncoin -
4 réponses
ElementW
Messages postés
4814
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 227
4 oct. 2019 à 07:46
4 oct. 2019 à 07:46
'lut,
la pause n'est pas souvent une fonctionnalité dispo sur les APIs d'enregistrement, donc rien d'exceptionnel de la part de la SFML.
Une solution (parmi d'autres) consiste à arrêter l'enregistrement (
Sinon j'ai rapidement regardé le code des classes d'enregistrement de la SFML et, bien que pas testé, il me semble que l'on peut faire start/stop plusieurs fois sur un même
la pause n'est pas souvent une fonctionnalité dispo sur les APIs d'enregistrement, donc rien d'exceptionnel de la part de la SFML.
Une solution (parmi d'autres) consiste à arrêter l'enregistrement (
stop()) quand on veut mettre en pause, et garder les buffers résultat quelque part (mémoire, disque, ...) tant qu'on arrête pas complètement l'enregistrement. Quand on a fini, on prend les buffers et les combine (en sortant les données des buffers avec
SoundBuffer::getSamples, les copiant dans un conteneur tel que
std::vector<Int16>, et les rechargeant avec
SoundBuffer::loadFromSamples).
Sinon j'ai rapidement regardé le code des classes d'enregistrement de la SFML et, bien que pas testé, il me semble que l'on peut faire start/stop plusieurs fois sur un même
SoundBufferRecorder, permettant de mettre en pause. Ce n'est documenté nulle part, ceci dit, donc à vérifier.
MemeTech
Messages postés
90
Date d'inscription
mercredi 14 août 2019
Statut
Membre
Dernière intervention
7 janvier 2021
1
4 oct. 2019 à 15:37
4 oct. 2019 à 15:37
Merci pour m'avoir aidé si vite !
Pour mettre en pause avec start () / stop (), j ai déjà essayé, ça ne fonctionne pas.
En revanche, j'imagine que les std::vector doivent fonctionner, mais je ne sais pas comment faire, je ne connais pas le fonctionnement de ces échantillons audio.
Pourriez-vous m'éclairer à ce sujet ?
Pour mettre en pause avec start () / stop (), j ai déjà essayé, ça ne fonctionne pas.
En revanche, j'imagine que les std::vector doivent fonctionner, mais je ne sais pas comment faire, je ne connais pas le fonctionnement de ces échantillons audio.
Pourriez-vous m'éclairer à ce sujet ?
MemeTech
Messages postés
90
Date d'inscription
mercredi 14 août 2019
Statut
Membre
Dernière intervention
7 janvier 2021
1
10 nov. 2019 à 16:22
10 nov. 2019 à 16:22
Up !
Voilà plusieurs jours que je galère avec ces tableaux de samples et je commence à sécher...
J'ai fait une fonction pause () appelée quand l'utilisateur veut suspendre son enregistrement qui ajoute au un tableau d'échantillons l'enregistrement juste arrêté.
Souci, Code::Blocks me dit :
error: invalid conversion from 'const Int16*' {aka 'const short int*'} to 'sf::Int16*' {aka 'short int*'} [-fpermissive]|
Voilà un petit extrait de mon code :
Merci pour votre aide !
Voilà plusieurs jours que je galère avec ces tableaux de samples et je commence à sécher...
J'ai fait une fonction pause () appelée quand l'utilisateur veut suspendre son enregistrement qui ajoute au un tableau d'échantillons l'enregistrement juste arrêté.
Souci, Code::Blocks me dit :
error: invalid conversion from 'const Int16*' {aka 'const short int*'} to 'sf::Int16*' {aka 'short int*'} [-fpermissive]|
Voilà un petit extrait de mon code :
void MRecorder::pause () { sBackground.setTexture (tPaused); // Change l'image de fond de l'appli recorder.stop (); // Arrête l'enregistreur (logique... :-D) Int16* nextRecording = recorder.getBuffer ().getSamples (); // Initialise le buffer unsigned long int const MAX_INDEX = recorder.getBuffer ().getSampleCount (); // Le nombre de samples dans le dernier enregistrement for (unsigned int i = 0 ; i != MAX_INDEX ; i++) // Boucle qui ajoute à recording le dernier enregistrement recording.push_back (nextRecording[i]); }
Merci pour votre aide !
MemeTech
Messages postés
90
Date d'inscription
mercredi 14 août 2019
Statut
Membre
Dernière intervention
7 janvier 2021
1
10 nov. 2019 à 18:49
10 nov. 2019 à 18:49
En fait, il suffisait de déclarer nextRecording en const, je ne comprend pas bien pourquoi, mais ça a fonctionné.
Donc, ça y est, mon enregistreur audio peut se mettre en pause !
Sujet résolu, merci encore ElementW !
Donc, ça y est, mon enregistreur audio peut se mettre en pause !
Sujet résolu, merci encore ElementW !