Bonjour
quelle boîte permettrait de lire un son depuis son début puis de faire un pause, et reprendre au point de pause.
Le [readsf~] ne semble pas le faire, j'avais pensé a utiliser un [tabplay~] mais je suis dans l'expectative.
Merci
François-Marie
Hors ligne
Je dirais [tabread~] contrôlé par un [phasor~]. Si tu veux faire pause, tu envoies [0< à ton phasor; quand tu veux reprendre, tu lui renvoies la bonne fréquence.
EDIT : forcément, la fréquence du [phasor~] dépend le la longueur de ton fichier son, et il ne faut pas oublier de multiplier la sortie du [phasor~] par la longueur du son exprimée en nombre de samples :
- un sample d'une seconde (probablement 44100 samples) -> freq du phasor = 44100/44100 = 1 et multiplier la sortie du phasor par 44100
- un sample de 10 secondes (probablement 441000 samples) -> freq du phasor = 44100/441000 = 0.1 et multiplier la sortie du phasor par 441000
Dernière modification par dwan (2012-11-27 15:45:46)
Hors ligne
Merci cela fonctionne bien que je comprenne pas bien le fonctionnement du phasor avec le tabread.
Je pensai que le tableau comprenais les échantillons de mon son, et qu'il me suffisait de lire le tableau à la fréquence d'échantillonnage de 44100 Hz.
Donc le calcul de la fréquence de ce phasor m'est bien obscur.
François
Hors ligne
[phasor~] sort une forme d'onde d'amplitude 1 comprise entre 0 et 1 : elle va graduellement de 0 à 1 puis retourne brusquement à 0. Si [tabread~] reçoit un 1, il prend ça comme l'ordre de jouer le sample 1 : donc pour jouer le dernier sample d'un son qui fait une seconde (44100 samples de long), il faut envoyer 44099 à [tabread~] (petite subtilité, on commence à compter à 0). Comme les samples de ton son d'une seconde sont accessibles en envoyant un nombre à [tabread~] compris entre 0 et 44099 et que ton [phasor~] crache des nombres compris entre 0 et 1, on va multiplier la sortie de [phasor~] par la longueur en samples de ton son (1s -> 44100 samples, 2s -> 88200 samples, etc).
Maintenant qu'on peut jouer ce sample en entier, il faut le jouer à la bonne vitesse. Prenons un son de 3 secondes : il fait 132300 samples de long à raison de 44100 samples par seconde. On va respecter la vitesse originale de lecture en envoyant les nombres de 0 à 132299 en 3 secondes. On demandera donc au [phasor~] d'osciller à une fréquence égale à 44100/(44100*132300), soit 1/3, soit 0,3333333...
EDITH : Si on envoie 0 à un [phasor~], il reste bloqué à la position à laquelle il était, donc on reste sur le dernier sample lu. Si on lui envoie à nouveau la fréquence de lecture désirée, il reprend son petit bonhomme de chemin là où il s'était arrêté. D'où la fonction play/pause.
Dernière modification par dwan (2012-12-02 21:32:39)
Hors ligne
Bonjour
merci pour cette explication très claire je comprends maintenant les raisons de ce calcul avec le phasor.
François-Marie
Hors ligne
Salut,
je n'utilise plus du tout readsf~ mais readanysf~ d'august black qui existe désormais en paquet pour pd sur debian/ubuntu
Hors ligne
+ 1 pour readanysf qui gère vraiment tout sans limitation de durée
Hors ligne
+ 20 pour readanysf qui, je viens de m'en apercevoir lit les fichiers audio des conteneurs pour les films ( facile à coupler avec pix-film )
Hors ligne
Bonjour
Chez moi ce readanysf n'existe pas dans mon pure-data. J'ai donc téléchargé ce matin un fichier source de readanysf (readanysf~0.43) et j'ai tenté de compiler sans résultat, sauf des erreurs.
la première est :
citation :
src/FifoVideoFrames.h:30:27: error: gmerlin/avdec.h: Aucun fichier ou dossier de ce type
Je suis sous Debian squezze en 64 bits avec gmerlin-encoders, lingmerlin-dev, même chose pour gavl, installés.
Merci
François-Marie
Hors ligne
readanysf~ dépends des librairies gmerlin dont il faut installer les paquets de développement (*-dev)
en cherchant dans synaptic tu devrais t'y retrouver...
il te manque peut-etre libgmerlin-avdec-dev p.ex.
Dernière modification par Olm-e (2012-12-06 19:02:37)
Hors ligne
Pages: 1