Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Les Mains dans le Cambouis
Bidouille & Développement Informatique

Sujet Le pub des programmeurs

  • 1 925 réponses
  • 117 participants
  • 119 781 vues
  • 130 followers
1 Le pub des programmeurs
Salut :coucou: y a des programeurs sur AF si oui vous bossez sous quoi ?
Afficher le premier post
161
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).

Il y a deux moyens d’oublier les tracas de la vie : la musique et les chats.
Albert Schweitzer

162
> 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 :diable:
163
Merci les enfants :mrg:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape

164
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.
165
Va falloir que je teste, avec tout le bien que tu m'en dis :clin:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape

166
Et euh, question bête, ça existe un wrappeur vst pour python ? ;)
167
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.
168
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 ;)
169
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.
170
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)...