Salut à tous,
J'ai un Raspberry Pi avec Pure Data Extended installé dessus.
Quand j'utilise un patch à base de synthèse (oscillos, filtres, delay, etc.), le Rpi tourne bien.
Mais je n'arrive pas à faire tourner un patch qui nécessite la lecture de samples.
Par exemple, j'ai un patch qui émule un piano, il s'agit d'un sampler polyphonique à 16 voix basé autour d'1 seul sample de piano. C'est impossible de jouer normalement sans que le système soit complètement ralenti et que le son saccade jusqu'à l'épuisement (je précise que je lance le patch au démarrage sans interface graphique).
Au départ, j'ai pensé que ça pouvait venir de ma carte microSD (classe 6) alors j'ai reçu ce matin une nouvelle carte SDHC ultra rapide (classe 10, 80Mo/s en lecture) de 16Go que j'ai reconfiguré : idem, le patch du sampler ne passe pas. Il fait friser le CPU du Rpi et pourtant, sur mon iMac il consomme moins de 10% de CPU (comme mon patch à base d'oscillo qui lui tourne parfaitement sur le Rpi).
J'utilise la carte son intégrée et les pilotes ALSA : même avec un buffer de 1024, ça ne passe pas. Pour commencer un peu à entendre le son sans saccades, je dois réduire la fréquence à 22050Hz voire encore moins pour être à peu près ok au niveau du comportement, mais le son est lo-fi pour le coup ! N'étant pas du tout utilisateur de Linux, je ne suis pas familier à Jack mais j'ai essayé avec, ça ne semble pas arranger pas les choses.
Pourtant, j'ai vu une vidéo d'un gars utiliser le Rpi avec un piano totalement échantillonné (1 sample différent par note) sans que ça pose de problème. Bref, je ne sais comment régler ce problème et je n'ai pas trouvé grand chose la dessus sur le web.
Avez-vous une idée de ce qui est possible ou pas avec le Rpi ? Peut-on lire et écrire de manière fluide sur un Rpi via Puredata (je pense à l'utilisation des tables en général) ?
Merci pour vos réponses.
++
Hors ligne
Salut Olivier,
Et bien, elle me dit tout ça :
Sans activité : (rien qui tourne, pas de Pure data lancé)
Avec Pure data qui fait tourner un patch à base d'oscillos (pas de samples, ni tableaux) :
Avec Pure data qui essaie de faire tourner mon patch qui comprend le sampler :
Dernière modification par boscovic (2014-11-11 14:31:45)
Hors ligne
Bon, je viens de faire d'autres tests :
D'abord avec le même patch en réduisant la polyphonie à 8 voies seulement: ça n'a quasiment rien changé (2% de CPU en moins seulement). C'est normal car le problème commence avant même de jouer une note, donc sans solliciter de polyphonie.
Ensuite, avec ce même patch mais sans abstractions (j'ai tout mis dans le patch principal) et en remplaçant l'objet [tabread4~] par l'objet [tabread~] (qui ajoute un vilain aliasing mais bon) : ça n'a pas changé non plus, le patch saccade à tout va.
Puis finalement, avec un simple patch qui fait tourner une sorte de boite rythme dynamique sur 3 samples (kick, Snare, Hihat, avec l'objet [readsf~]) et là, ça passe, sans problème même car le CPU ne dépasse par les 20%.
Donc, j'ai tendance à penser que soit les limites du Rpi sont très vite atteintes en matière de lecture (de samples) et j'imagine que l'écriture (enregistrement audio) doit subir le même sort, soit je fais une erreur quelque part mais je ne vois pas bien où chercher !
Bref, personne ne s'est heurté à ce problème jusqu'ici ?
Dernière modification par boscovic (2014-11-11 15:21:52)
Hors ligne
J'avoue n'avoir encore jamais fait de projet sonore Puredata/RaspberryPi...
Donc, ce n'est pas mon expérience qui va t'aider...
Ton projet est-il destiné a être utilisé comme un sampler ?
C'est à dire, est-ce que ta note de piano est vouée à être remplacer par un autre fichier ?
Sinon, tu peux essayer avec 16 .wav pour observer le comportement de la Pi.
Et, si ça passe, les remplacer par 16 ré échantillonnages de ta note de pinano réalisé avec Audacity (par exemple).
Par contre, si tu souhaites tisser un sampler, il semble nécessaire de contourner l'option "tableau".
Il y a la boite [sfread2~ ] qui te permet de lire un fichier à une fréquence donné, mais il faut la compiler.
Je l'ai pour ma Ubuntu 32bit... mais pas pour ARM... désolé...
Bon courage...
Hors ligne
citation :
J'avoue n'avoir encore jamais fait de projet sonore Puredata/RaspberryPi... Donc, ce n'est pas mon expérience qui va t'aider...
... mais c'est tes idées et je te remercie de les partager autour de ma requête.
Tu as raison, je crois qu'il faut contourner l'option tableau pour tout ce qui est audio, le CPU du Rpi en mourrait !
Du coup, je vais me renseigner sur l'objet [sfread2~] et peut-être aussi sur d'autres librairies externes qui pourraient avoir des objets intéressants dans mon cas pour enregistrer et lire dans cette contrainte.
Je n'ai pas encore de projet arrêté mais j'aurai vraiment besoin de manipuler des "loopers" dans le sens général du terme (enregistrement audio puis manipulation autour de la lecture) et aussi des "samples" (pour développer des claviers, boites à rythmes ou des modules plus singuliers comme des slicers ou du granulaire par exemple).
Au niveau de la polyphonie, je ne peux contourner l'affaire "manuellement" car il me faudrait 1 wav accordé pour chaque note du clavier et encore, ça couperait le son du .wav à chaque rappel. L'intérêt de la polyphonie étant de charger un seul sample, de l'accorder "dynamiquement" sur chaque touche mais surtout de pouvoir appuyer plusieurs fois (jusqu'à 16 ici) sur la même touche sans couper pour autant la tenue du son en cours...
citation :
mais il faut la compiler. Je l'ai pour ma Ubuntu 32bit... mais pas pour ARM... désolé...
Ah, j'ai toujours bossé sur Mac uniquement avec Pd Extended et je n'ai quasiment aucune connaissance en Linux : certains objets externes ne sont pas compatibles entres les différents OS ? (il faut qu'ils soient compatibles Raspbian ?)
Hors ligne
citation :
ça couperait le son du .wav à chaque rappel
Tu peux très bien imaginer une abstraction pour chaque "touche" contenant X fois une autre abstraction/ [readsf~] qui permettrait d'appuyer X fois successivement sur la même "touche" sans que le son en cours soit coupé...
Un petit compteur avec un [gate X] et zou...
Je le fais souvent, et ça marche très bien...
Mais si tu veux avoir la puissance d'un sampler, ça ne résoudra pas le pb...
J'ai regardé dans mes vieux projets et je suis tombé sur la boite [samplebox~ ] qui permet pas mal de chose mais elle s'appuie sur des [tabplay~ ] donc je ne sais pas si ça va t'aider...
citation :
certains objets externes ne sont pas compatibles entres les différents OS
Aucun en fait...
Quand ce sont des abstractions, cela ne pose (en général) aucun pb...
Mais pour des binaires, il faut qu'il est été compilés pour la bonne architecture...
En ce qui me concerne, j'ai un processeur Intel et ce n'est pas la même chose qu'un ARM, proc de la RaspberryPi...
À suivre...
Hors ligne
citation :
u peux très bien imaginer une abstraction pour chaque "touche" contenant X fois une autre abstraction/ [readsf~] qui permettrait d'appuyer X fois successivement sur la même "touche" sans que le son en cours soit coupé...
Oui, c'est vrai qu'une abstraction du genre ferait tout à fait l'affaire, un peu long à préparer mais c'est une solution.
Merci pour la piste [samplebox~ ], je vais prendre le temps de regarder si ça passe, de tester tout ça.
Ok pour les objets compilés, merci pour l'info.
Hors ligne
Pages: 1