Le pub des programmeurs
- 1 927 réponses
- 117 participants
- 131 729 vues
- 130 followers

Anonyme



Dr Pouet

Tout à fait. Jusqu'au jour où on se dit que le legacy code, c'est bien mais c'est limite en terme de maintenance et on recommence de 0 en C++
En mécanique des fluides, ils ont l'air d'être loin d'en prendre le chemin. Ils utilisent des technos plus récentes (C++, java, openGL...) pour la modélisation du problème, ou pour l'analyse et la représentation des résultats, mais le calcul reste imperturbablement en Fortran.
Moi je bosse sur des gros logiciels opérationnels qui tournent à H24 (contrôle aérien) et effectivement comme tu dis tous les 20/30 ans on change tout. Mais c'est pas tellement un problème de langage, un peu plus un problème de librairies/cots... mais surtout un problème de conception initiale qui a fait son temps, voire qu'on a poussée dans ses toutes dernières extrémités et qui a donné tout ce qu'elle pouvait.

miles1981

Dr Pouet > T'inquiètes, je travaille actuellement sur l'un des plus gros simulateurs d'écoulement de fluides commercial dans le domaine pétrolier, remplaçant l'ancien simulateur écrit en Fortran (peu souple, c'est en fait 2 simulateurs en 1), 30 personnes environ, et tout est en C++.
+1 sur ton dernier paragraphe, c'est exactement la raison qui a fait que la boîte a lancé ce projet : l'ancien simulateur ne scalait pas. Bon, le souci, c'est que c'est tellement un standard du marché que personne n'a vraiment envie de passer au nouveau, même s'il est bien plus rapide...
Audio Toolkit: http://www.audio-tk.com/

obe

De l'interpolation linéaire ou cubique plus un filtre IIR (pour minimiser la latence mais avec un résultat pas mathematiquement parfait), ou tu remplis avec des zeros puis FIR passe bas ?
J'avais testé les deux en prototypant avec Jesusonic (Reaper-Cockos). A l'oreille il n'y avait pas grande différence par contre sur les graphes la différence était flagrante.
Je trouve ton projet très intéressant. Par contre, je n'arrive pas vraiment à voir comment interagissent wdl-ol, python et QT au sein de ton audio-toolkit (je n'ai pas encore regardé le code).
[ Dernière édition du message le 12/06/2014 à 10:52:22 ]

miles1981

Donc il me semble que c'est ni l'un ni l'autre

Qt, j'ai arrêté, trop compliqué à mettre en place, à maintenir... donc je n'utilise plus que WDL-OL pour générer les UI. Et j'ai le support VST3, AU, AAX gratuitement!Dans le coeur du plugin, j'attaque directement la couche C++ de mon toolkit, donc pas de Python. Ce n'est utilisé que pour designer, comparer... C'est ce que j'avais aussi fait pour mon premier plugin d'overdrive (celui-ci utilisant Qt) : http://matt.eifelle.com/2011/05/10/qtvst-how-qtsimpleoverdrive-is-implemented/ Je dois avoir les scripts sur le repository de QtVST sur github au cas où.
Audio Toolkit: http://www.audio-tk.com/

Hohman



obe

Du coup, tu n'as pas de problèmes de stabilité avec un filtre d'ordre 6 (parfois on préfère utiliser 3 filtres d'ordre 2) ? De plus la réponse en phase doit être assez bizarre, mais tant que cela ne s'entend pas cela ne pose pas de problème.
Néanmoins, cela me semble une bonne solution pour minimiser les artefacts liés à l'oversampling tout en conservant une latence decente.
OK pour WDL-Ol c'est celui que j'utilise aussi même si je n'ai terminé aucun de mes projets pour l'instant... Juice semble pas mal et surtout plus documenté mais je reste sur WDL-OL car j'aime bien l'état d'esprit des gars de chez Cockos.
J'utilise aussi Python et scipy pour essayer de compendre le DSP avant de coder, puis je passe par une phase de prototypage en JesuSonic , puis ensuite WDL-OL.
A ce propos, je te conseille JesuSonic pour faire rapidement des tests en audio temps-reel. Cela permet de mettre un peu les maths de coté pour se concentrer sur l'audio avant de se lancer dans un code plus structuré dans WDL-OL.
Pour la distortion, j'ai codé en Jesusonic ce qui exposé dans l'article de D. Yeh. Ce n'est pas 100% fini, mais cela doit correspondre en version assez simplifiée à ce que tu implémentes avec la SD1 (équation non linéaire due aux diodes, résolution de l'ODE par la méthode de Newton, gestion basique de l'oversampling).
Ton code va surement pouvoir m'aider à terminer et à ameliorer ce projet.
[ Dernière édition du message le 12/06/2014 à 11:37:57 ]

miles1981

obe > En fait, le filtre passe-bas est un Butterworth, en général d'ordre assez élevé, au cas ou le gars a une fréquence d'échantillonnage de 44.1kHz, et que la zone de transition est très faible. Pas de souci de stabilité pour un tel filtre. La phase aussi est très bien pour ces filtres ultra-classiques.
Pour l'implémentation du filtre oversampling -> https://github.com/mbrucher/AudioTK/blob/master/ATK/Tools/OversamplingFilter.cpp
J'ai trop l'habitude de tout coder en C++ ou en Python pour faire autre chose :p Et en plus maintenant que j'ai un pipeline, il me suffit de coder la partie manquante (bon, j'ai un truc de base qui me manque, la gestion de la latence dans le pipeline, ça sera là pour la 1.0.0, mais pas encore maintenant). Pour les filtres IIR ou FIR, il me suffit de coder la génération des coeffs, pour un algo d'optimisation, il suffit de mettre la fonction de coût... Bref, c'est très facile de changer un bloc par un autre. Par ex le module SD1 a commencé par la partie overdrive, petite modification de l'équation, puis les coeffs de l'EQ (un peu plus compliqué puisqu'il ne faut pas se planter sur les signes, simplifier les équations dès que possible...). C'est finalement très incrémental

Ton premier article ressemble effectivement à celui de simulanalog, mais il donne le nombre d'itérations de Newton nécessaires, et ça c'est pas mal. Parce que j'en utilise 3 à 4 fois plus ! Donc j'imagine itérer à une plus grande précision qu'eux. Et sachant que certains transitoires dans la SD1 sont tellement abruptes avec une sinusoïde à 1kHz que l'algo ne converge pas après 10 itérations, je suis interrogatif sur ces valeurs assez faibles...
N'hésite pas à regarder le code, à donner ton avis et à critiquer, il est sous licence BSD précisément pour cette raison

Audio Toolkit: http://www.audio-tk.com/

miles1981

Audio Toolkit: http://www.audio-tk.com/

obe


miles1981

Merci pour toutes ces infos et articles ! Cela me donne vraiment envie de m'y remettre !
Ca donne envie de s'y mettre quand on est plusieurs passionnes

Audio Toolkit: http://www.audio-tk.com/

miles1981

Du coup, tu n'as pas de problèmes de stabilité avec un filtre d'ordre 6 (parfois on préfère utiliser 3 filtres d'ordre 2) ? De plus la réponse en phase doit être assez bizarre, mais tant que cela ne s'entend pas cela ne pose pas de problème.
Sur le coup, je suis en train de regarder justement ce point. Je pensais partir sur un filtre Butterworth d'ordre 10, et en fait avec un oversampling x32, le Butterworth de base a pas mal de bruit de fond ! Du coup...
Audio Toolkit: http://www.audio-tk.com/

obe

C'est vraiment mieux qu'une simple interpolation linéaire et c'est plus efficace en terme de latence et de calcul que d'upsampler en remplissant par des zeros et ensuite faire un passe-bas bien raide vers la fréquence de Nyquist avec un FIR (d'au moins 32 points).
J'ai aussi commencé à regarder le code de ta librairie, c'est vraiment bien fait, très clair dans sa construction.
(Si je devais emmettre une reserve personnelle (mes connaissances du C++ sont modestes, je l'ai enseigné à des étudiants en physique en M1), l'utilisation massive des templates rend surement le code plus polyvalent mais nuit peut-être à la compréhension rapide du code.)
Pour l'instant je n'ai pas encore trouvé la partie qui correspond au "pre-emphasis filter" (chapitre 8 de Polynomial Interpolators... page 61). Ce filtre doit servir à compenser la réponse spectrale de l'interpolateur. Olli Niemitalo ne donne "que" la réponse en fréquence des interpolateurs. Est-ce qu'il y a dans ta librairie de quoi calculer les coeffs du filtre qui doit pré-corriger la réponse en fréquence de l'interpolateur ?
En tout cas, vraiment merci, cela va m'être très utile. Je compte dans un premier temps faire un script Jesusonic pour implementer l'oversampling avec cette méthode d'interpolation.
[ Dernière édition du message le 13/06/2014 à 13:01:58 ]

miles1981

Je n'ai pas fait la partie pre-emphasis, effectivement. Cela ne coûterait pas cher à écrire, c'est sûr, surtout que les filtres IIR sont là pour ça. On pourra faire un test un jour pour voir l'efficacité et l'utilité ! (il me semblait qu'ils étaient inclus dans les filtres proposés, mais j'ai fait cette partie il y a plusieurs années, j'ai pu zapper des trucs) Il y a d'autres filtres interpolateurs que je dois implémenter, comme les paraboliques, mais ça prend du temps et j'ai un boulot en journée :p (déjà que je passe pour un hurluberlu !)
Audio Toolkit: http://www.audio-tk.com/

miles1981

Pour ceux qui sont intéressés : https://github.com/mbrucher/ATK-plugins/tree/develop/ATKSD1/
Audio Toolkit: http://www.audio-tk.com/

GrosGrainGras

je suis aussi en train de développer un logiciel de simulation électronique temps réel...
J'ai aussi pas mal d'articles sur le sujet si ça vous intéresse :
La thèse de David T Yeh (bien plus récent et plus complet que l'article cité auparavent du même auteur):
https://ccrma.stanford.edu/~dtyeh/papers/DavidYehThesissinglesided.pdf
Poursuivre avec le paper de Martins et Zolzer (Du lourd!):
http://recherche.ircam.fr/pub/dafx11/Papers/21_e.pdf
La thèse de Jaromir Macak (Reprend la formulation du précédent cité, mais étendue à des circuits plus complexes, pour des circuits avec transfos ou aop):
https://dspace.vutbr.cz/xmlui/bitstream/handle/11012/21132/thesis.pdf?sequence=1&isAllowed=y
En espérant que ça aide!

miles1981

Audio Toolkit: http://www.audio-tk.com/

Hohman


miles1981


Audio Toolkit: http://www.audio-tk.com/

Hohman



nonconforme

Affiliation : Dirigeant Fondateur d'Orosys - Two notes Audio Engineering

miles1981

nonconforme qui part à la chasse :p
Audio Toolkit: http://www.audio-tk.com/

GrosGrainGras

Et bien j'ai continué de développer mon truc de mon côté depuis... Mais je compte bien en faire profiter d'autres personnes au plus vite! Seul ou pas...

miles1981

Audio Toolkit: http://www.audio-tk.com/

nonconforme


Du coup tu fais ça comme un passe-temps ?
Affiliation : Dirigeant Fondateur d'Orosys - Two notes Audio Engineering

GrosGrainGras

- < Liste des sujets
- Charte