Bonjour à tous,
Je cherche à faire un patch qui enregistre une portion du son entrant et le lit ensuite en boucle.
Chose assez simple.
J'ai cependant du mal à trouver le "bon chemin".
L'idée :
Le patch a une entrée audio (stéréo). Lorsque je lui dit de commencer l'enregistrement, il enregistre dans une table.
Lorsque je lui dis d’arrêter l'enregistrement, il s’arrête d'enregistrer et lance la lecture du segment enregistré en boucle.
Sauf que, lorsque je lance l'enregistrement, je ne sais pas encore quelle durée fera ma table au final, puisque je ne sais pas encore quand est-ce que je vais arrêter l'enregistrement. Je ne sais donc pas quelle taille donner à ma table.
J'ai mis en pièce jointe une tentative de patch. Il fonctionne, mais je ne suis pas sur que ce soit la bonne option.
Dans cette tentative, la table est redimensionnée à la hausse toutes les secondes. Lorsque l'enregistrement est arrêté, la table est redimensionnée à la bonne taille (donc à la baisse).
Mais ce redimensionnement qui est fait toutes les secondes engendre des "clic" audio assez désagréables le temps de l'enregistrement.
Est-ce que quelqu'un aurait un conseil à me donner ?
Merci d'avance
Hors ligne
Je vois pas de pièce jointe... mais à ta place j'essaierai d'utiliser une table suffisamment longue pour stocker la durée max de ton enregistrement (si tu la connais à l'avance bien entendu), pour ensuite ne lire que la partie qui contient l'enregistrement. J'ai pondu un sampler il y a pas mal de temps sur ce principe, je vais voir si j'arrive à remettre la main dessus.
Hors ligne
Merci pour ta réponse.
J'ai fais comme tu as dis. Voici le patch modifié en pièce jointe.
Je me demande cependant quelle serait la meilleure méthode :
- Passer par une table très grande, pour la redimensionner après enregistrement (peut être pas très optimale en terme de ressources)
- Passer par un [writesf~] pour enregistrer la boucle dans un fichier wave temporaire (contraignant au niveau des chemins du fichier)
Dernière modification par TomObey (2014-02-05 22:51:49)
Hors ligne
Je pense que tu peux tout de suite oublier [writesf~] si tu veux que ton loop se déclenche immédiatement après la fin de l'enregistrement, il y a toujours un délai pour l'ouverture du fichier.
Après avoir essayer ton patch je pense plutôt qu'il faut virer le [resize $0-table( qui provoque un click à chaque opération. En gros tu définis par défaut une table assez grande, tu enregistres sans redimensionner et tu lis seulement la portion de la table qui contient des données. Du coup je ne sais pas si [tabplay~] arrive à faire ça correctement mais tu devrais pouvoir utiliser [tabread~] à la place sans trop de souci. J'ignore par contre ce que ça donne en terme de performances, il faut peut être éviter les samples de 45 minutes
Hors ligne
J'ai modifié ton patch, ça a l'air de bien fonctionner avec [tabplay~] à partir du moment où la taille de la boucle est un multiple de 64 (taille par défaut d'un block).
Hors ligne
Merci beaucoup, je pense que je vais partir là dessus
Hors ligne