Sujet Le pub des programmeurs
- 1 925 réponses
- 117 participants
- 123 048 vues
- 130 followers
Anonyme
521410
Sujet de la discussion Posté le 25/08/2005 à 17:21:03Le pub des programmeurs
Salut y a des programeurs sur AF si oui vous bossez sous quoi ?
J-Luc
6112
Modérateur·trice thématique
Membre depuis 21 ans
161 Posté le 21/08/2006 à 10:24:43
Buffer circulaire :
https://en.wikipedia.org/wiki/Circular_buffer
Très utilisé aussi dans l'industrie dans les process d'assemblage (on suit les produits dans une machine à l'aide d'un buffer circulaire de structures).
https://en.wikipedia.org/wiki/Circular_buffer
Très utilisé aussi dans l'industrie dans les process d'assemblage (on suit les produits dans une machine à l'aide d'un buffer circulaire de structures).
Il y a deux moyens d’oublier les tracas de la vie : la musique et les chats.
Albert Schweitzer
Pov Gabou
19553
Drogué·e à l’AFéine
Membre depuis 22 ans
162 Posté le 21/08/2006 à 11:55:40
> Wolfen, j'ai un exemple la (en python, mais meme si tu connais pas, ce devrait etre facile a lire, un peu comme du pseudo code):
http://www.ar.media.kyoto-u.ac.jp/members/david/ring.zip
Si t'as jamais utilise python, tu peux installer la version (windows): https://www.python.org/ftp/python/2.4.3/python-2.4.3.msi
Il y a deux fichiers: ringbuff.py qui implemente une classe ring buffer, que tu peux oublier au depart (l'implementation suit le truc de base explique sur wikipedia avec les puissances de 2), et le fichier fakeengine.py qui a 3 classes, en gros:
- BlockAlg: une classe toute con qui ne peut calculer que n samples en entree et ressort n samples en sortie, avec n fixe.
- Plugin: une classe un peu moins con, qui utilise BlockAlg pour faire le calcul, mais dont la function process peut prendre un nombre n de samples variables entre chaque appel (exactement comme la fonction process de VST, par exemple, avec la variable nframes). C'est elle qui fait l'adaptation nombre variables de sample / nombre fixe pour BlockAlg.
- Engine: modelise le moteur audio, cad ici ne fait qu'instancier un plugin, et fournit a un objet plugin des blocs de taille variable.
Je crois que la latence est gardee au minimum donnee les contraintes (taille fixe pour l'algo, taille maximale d'un bloc de la part du moteur audio).
La classe BlockAlg ne fait rien (je multiplie l'entree par -1 pour facilement regarder les eventuels pbs d'alignement avec en entree la suite 0, 1, 2....). par contre, il y a besoin de modifications si l'algo ne sort pas le meme nombre de sampels qu'en entree.
J'exige 10 % des parts pour le premier produit torpedo
http://www.ar.media.kyoto-u.ac.jp/members/david/ring.zip
Si t'as jamais utilise python, tu peux installer la version (windows): https://www.python.org/ftp/python/2.4.3/python-2.4.3.msi
Il y a deux fichiers: ringbuff.py qui implemente une classe ring buffer, que tu peux oublier au depart (l'implementation suit le truc de base explique sur wikipedia avec les puissances de 2), et le fichier fakeengine.py qui a 3 classes, en gros:
- BlockAlg: une classe toute con qui ne peut calculer que n samples en entree et ressort n samples en sortie, avec n fixe.
- Plugin: une classe un peu moins con, qui utilise BlockAlg pour faire le calcul, mais dont la function process peut prendre un nombre n de samples variables entre chaque appel (exactement comme la fonction process de VST, par exemple, avec la variable nframes). C'est elle qui fait l'adaptation nombre variables de sample / nombre fixe pour BlockAlg.
- Engine: modelise le moteur audio, cad ici ne fait qu'instancier un plugin, et fournit a un objet plugin des blocs de taille variable.
Je crois que la latence est gardee au minimum donnee les contraintes (taille fixe pour l'algo, taille maximale d'un bloc de la part du moteur audio).
La classe BlockAlg ne fait rien (je multiplie l'entree par -1 pour facilement regarder les eventuels pbs d'alignement avec en entree la suite 0, 1, 2....). par contre, il y a besoin de modifications si l'algo ne sort pas le meme nombre de sampels qu'en entree.
J'exige 10 % des parts pour le premier produit torpedo
Wolfen
13882
Rédacteur·trice
Membre depuis 22 ans
163 Posté le 21/08/2006 à 12:07:04
Merci les enfants
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
Pov Gabou
19553
Drogué·e à l’AFéine
Membre depuis 22 ans
164 Posté le 21/08/2006 à 12:23:07
Entre guillements, pour le prototypages de certains trucs, je te conseille vraiment python. Avec les derniers avancements numpy+scipy, ca permet de faire des trucs comme matlab, mais avec un vrai langage, gratuitement.
La, je suis en train de decouvrir ctypes, qui permet d'ecrire des wrapper de librairies C entierement ecrits en python. Quand tu vois la merde pour ecrire des extensions C sous matlab, c'est quand meme plus sympathique.
La, je suis en train de decouvrir ctypes, qui permet d'ecrire des wrapper de librairies C entierement ecrits en python. Quand tu vois la merde pour ecrire des extensions C sous matlab, c'est quand meme plus sympathique.
Wolfen
13882
Rédacteur·trice
Membre depuis 22 ans
165 Posté le 21/08/2006 à 12:27:49
Va falloir que je teste, avec tout le bien que tu m'en dis
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
zieQ
466
Posteur·euse AFfamé·e
Membre depuis 21 ans
166 Posté le 21/08/2006 à 14:17:31
Et euh, question bête, ça existe un wrappeur vst pour python ? ;)
Pov Gabou
19553
Drogué·e à l’AFéine
Membre depuis 22 ans
167 Posté le 21/08/2006 à 14:51:15
Je sais pas. Le pb de VST, c'est que c'est sous specifie, et que la license est stupide (interdiction de redistribution). Donc typiquement, si tu veux faire un wrapper VST, tu peux pas distribuer les source en entier, il faut que chaque gars qui l'utilise aille telecharger les headers VST chez steinberg. Du coup, ca interrresse personne.
zieQ
466
Posteur·euse AFfamé·e
Membre depuis 21 ans
168 Posté le 21/08/2006 à 15:08:07
Je connais bien ces problèmes avec les VSTs mais il n'existe pas vraiment d'alternative non plus. Du coup, le fait de prototyper en python vient de perdre beaucoup d'intérêt d'un coup ;)
Pov Gabou
19553
Drogué·e à l’AFéine
Membre depuis 22 ans
169 Posté le 21/08/2006 à 15:25:27
Disons que ca depend de quoi tu parles. Pour VST, c'est vrai qu'il y a pas beaucoup d'alternatives: en gros, AU sous mac OS X, et peut etre dssi sous linux (mais le fonctionnement est assez different sous linux, a cause du probleme de toolkit notament). Donc pour un plug dans sa totalite (moteur audio + gui), c'est pas interessant python, Ok (tu peux toujours ecrire le truc toi meme remarque).
Mais pour le moteur audio lui meme, c'est pas propre a VST. Si tu programmes correctement, le moteur audio est totalement separe de la GUI, et idealement des specs VST. Et la, pour tout ce qui est dsp, tu peux le faire sous python. Typiquement, tu veux tester un filtre, verifier sa reponse frequentielle graphiquement, en C, ca peut etre penible. Sous python, c'est trivial.
J'avais commence a m'interesser a la prog avec l'audio il y a maintenant 4-5 ans, et evidemment, vu mon niveau a l'epoque, je savais rien faire, et tester un truc comme un ring buffer + conditions aux bords en C... La, en python, ca a ete fait en une heure a tout casser, avec 150 lignes de code.
Je suis bien conscient du buzz autour des langages dits dynamiques, mais je trouve que pour python, c'est assez bien merite, car il y a un bon compromis syntaxe claire / syntaxe puissante / bonne librairie standard / facilite d'extension a partir de langages compiles / bien supporte. Perso, je m'y suis interesse pour faire un truc un peu trop complexe pour awk/sed, puis apres j'en ai profite pour me mettre a numpy/scipy (https://www.scipy.org/), et je trouve que c'est super efficace pour pas mal de taches.
Mais pour le moteur audio lui meme, c'est pas propre a VST. Si tu programmes correctement, le moteur audio est totalement separe de la GUI, et idealement des specs VST. Et la, pour tout ce qui est dsp, tu peux le faire sous python. Typiquement, tu veux tester un filtre, verifier sa reponse frequentielle graphiquement, en C, ca peut etre penible. Sous python, c'est trivial.
J'avais commence a m'interesser a la prog avec l'audio il y a maintenant 4-5 ans, et evidemment, vu mon niveau a l'epoque, je savais rien faire, et tester un truc comme un ring buffer + conditions aux bords en C... La, en python, ca a ete fait en une heure a tout casser, avec 150 lignes de code.
Je suis bien conscient du buzz autour des langages dits dynamiques, mais je trouve que pour python, c'est assez bien merite, car il y a un bon compromis syntaxe claire / syntaxe puissante / bonne librairie standard / facilite d'extension a partir de langages compiles / bien supporte. Perso, je m'y suis interesse pour faire un truc un peu trop complexe pour awk/sed, puis apres j'en ai profite pour me mettre a numpy/scipy (https://www.scipy.org/), et je trouve que c'est super efficace pour pas mal de taches.
Dr Pouet
52037
Membre d’honneur
Membre depuis 20 ans
170 Posté le 21/08/2006 à 20:38:29
Clair que une fois que tu as goûté à Perl ou Python, tu te sers plus de awk sed et autres shell scripts...
Python est également réputé pour ses bonnes capacités d'interfaçage avec le C et C++. C'est d'ailleurs sûrement l'une des raisons qui lui ont permis de grignoter Perl, lequel est moins bien (je trouve que le coup de l'indentation en Python est un super choix) mais arrivé avant (et donc initialement beaucoup plus populaire)...
Python est également réputé pour ses bonnes capacités d'interfaçage avec le C et C++. C'est d'ailleurs sûrement l'une des raisons qui lui ont permis de grignoter Perl, lequel est moins bien (je trouve que le coup de l'indentation en Python est un super choix) mais arrivé avant (et donc initialement beaucoup plus populaire)...
- < Liste des sujets
- Charte