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

Anonyme



Wolfen

Je peux potentiellement y aller cette année, je serai Londonien... Peut-être mieux avec une pres, faudra que je réfléchisse.
En tout cas je l'ai fait les deux autres fois, je présentais quelque chose à chaque fois, et ça a toujours été très intéressant et super bien organisé

Au fait, t'es passé au Newton Raphson avec SVF/ZDF pour tes plugins ?
Je fais du Newton-Raphson depuis 10 ans, donc du ZDF



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

miles1981

D'ailleurs je suis en train de me reposer la question d'écrire un livre pur processing audio pour les plugins. Je risque d'avoir 3 mois assez calmes pour faire ça.
Audio Toolkit: http://www.audio-tk.com/

Rémy M. (chimimic)

je suis en train de me reposer la question d'écrire un livre pur processing audio pour les plugins.
Ah bah voilà une bonne nouvelle ! Allez GO !

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

J-Luc

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

Jimbass


Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts

Wolfen

Oui, je sais que tu faisais du NR, c'était plus pour le remplacement des condensateurs/bobines par leur forme "nodale" (le côté SVF qui n'est pas dans le NR de base), comme j'avais constaté que ça permettait d'accélérer pas mal la préparation de la Jacobienne du NR.
Ca veut toujours rien dire

https://en.wikipedia.org/wiki/State_variable_filter
La forme nodale, tu veux dire ce qui est utilisé lorsqu'on utilise la MNA (Modified Nodal Analysis) comme dans SPICE ? C'est super utile pour automatiser la mise en équation et la résolution, mais faut aller un peu plus loin dès que le circuit devient complexe pour faire du temps réel. Soit tu utilises des moyens de faire tous tes calculs en tenant compte du fait que tu vas avoir majoritairement des zéros dans tes matrices, soit tu la mets en forme pour éviter d'avoir des lignes en trop (genre avec les résistances) qui sont inutiles dans la structure de simulation finale et tu obtiens ainsi une matrice plus petite mais moins creuse, soit tu te tapes du découpage de circuit et de la mise en équation à la main

Tu sais ce que je pense pour le bouquin, je comprends même pas pourquoi tu n'as pas déjà commencé

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
[ Dernière édition du message le 05/04/2017 à 16:33:02 ]

miles1981

Effectivement, pour les plus complexes, tout part en vrille rapidement (dans mon dernier circuit qui est un classe A avec 2 transistors, donc un suiveur, on obtient une matrice 5x5, et prendre en compte la densité de la matrice pour calculer l'inverse est bien plus efficace que prendre une méthode générique).
Et pourquoi je n'avais pas commencé ? Pas le temps, une copine, un boulot, un enfant... Là, je supprime la 2ème entrée pour 3 mois, donc je vais me mettre à chercher un éditeur et voir si j'arrive à écrire (c'est une bonne question car mon livre sur Python était illisible !).
Audio Toolkit: http://www.audio-tk.com/

Dr Pouet



EraTom

Lorsque l'on a une équation du type A*X = Y connaissant A et Y on peut calculer X sans expliciter l'inverse de A (en procédant par substitution, pour prendre un algo simple).
Dans le cas d'une matrice A creuse, il est possible de construire un arbres d'élimination pour factoriser efficacement la matrice et éviter de passer par tous les produits par 0...
... Et dans le cadre de la MNA l'arbre est calculé une fois pour toute (il ne dépend que de la topologie du circuit dont le configuration ne change pas à toutes les itérations).
Je suis à côté de la plaque ?
On se retrouve avec un solution intermédiaire entre la méthode générique qui produit une grosse matrice et le découpage du circuit à la main (enfin les seuls fois que je le suis lancé dans ce genre de calcul c'était sur des petits circuits simples autour de triodes avec un schéma d'intégration implicite).
[ Dernière édition du message le 05/04/2017 à 21:21:23 ]

alex.d.

Lorsque l'on a une équation du type A*X = Y connaissant A et Y on peut calculer X sans expliciter l'inverse de A (en procédant par substitution, pour prendre un algo simple).
Ou tu peux aussi faire une facto LU, sur de grosses matrices.

miles1981

En fait, ce que je fais généralement, c'est passer par une résolution symbolique (avec SymPy) et j'implémente ça. En général, il faut multiplier le résultat par le déterminant de la matrice pour simplifier les calculs, mais c'est rapide. Et je compare avec utiliser un solve explicite, et c'est l'un ou l'autre qui sera plus rapide.
Audio Toolkit: http://www.audio-tk.com/

EraTom

Citation de EraTom :
Lorsque l'on a une équation du type A*X = Y connaissant A et Y on peut calculer X sans expliciter l'inverse de A (en procédant par substitution, pour prendre un algo simple).
Ou tu peux aussi faire une facto LU, sur de grosses matrices.
Pour les grosses matrices creuses, la factorisation est procédée par bloc pour éviter les calculs inutiles ; l'arbre d'élimination est construit de manière à tracer les zones qui contiennent des valeurs non-nulles et celles qui ne contiennent que des 0 pour parcourir les blocs rapidement, ou pour paralléliser les factorisations de blocs, etc.
En fait, ce que je fais généralement, c'est passer par une résolution symbolique (avec SymPy) et j'implémente ça. En général, il faut multiplier le résultat par le déterminant de la matrice pour simplifier les calculs, mais c'est rapide.
Mais du coup, est-ce un problème d'avoir une grosse matrice creuse avec la MNA ?
Quitte à calculer formellement la matrice inverse autant calculer formellement le produit par cette matrice.
Purée je repense à l'une de mes simu de montage... C'est ce que j'aurais dû faire !
[ Dernière édition du message le 06/04/2017 à 07:25:06 ]

Wolfen


Oui en général quand on a des matrices à inverser, il est plus intéressant d'utiliser des algos de résolution de système d'équations plutôt que d'avoir à calculer explicitement l'inverse. Après c'est vraiment utile si la matrice en question a son contenu ou sa structure qui change en temps-réel. Et ça peut être optimisé par d'autres algos si la matrice est creuse d'où ma remarque. Enfin, dans le cas où rien de tout ça ne change en temps réel, on peut aussi faire le calcul en symbolique une fois pour toutes pour simplifier encore plus les calculs...
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

miles1981

Mais du coup, est-ce un problème d'avoir une grosse matrice creuse avec la MNA ?
Quitte à calculer formellement la matrice inverse autant calculer formellement le produit par cette matrice.
Tout dépend ce qu'on appelle grosse ! La plus grosse que j'ai pu utiliser pour l'instant donne le code suivant : https://github.com/mbrucher/AudioTK/blob/master/ATK/Preamplifier/FollowerTransistorClassAFilter.cpp#L114
C'est déjà imbitable. Je garde la multiplication matricielle pour laisser Eigen se débrouiller efficacement. J'ai constaté que parfois quand j'essayais d'être plus malin que lui, j'étais plus lent. Du coup, pour une petit matrice, je garde cette solution là, même si par la suite, pour des schémas plus gros (par ex des push-pull ou des ampli miroir), je passerai définitivement par le calcul formel du produit final.
Audio Toolkit: http://www.audio-tk.com/

miles1981

Bon courage alors miles
Bon, on va commencer alors : https://github.com/mbrucher/AudioTK-book
LA grande question est de savoir si je vais avoir la motivation d'aller jusqu'au bout, si j'ai bien couvert ce qu'il faut couvrir et correctement surtout.
Audio Toolkit: http://www.audio-tk.com/

Apleton


J'aurais adoré participer à un workshop Juce, mais je suis basé à Bruxelles.
Vous avez pas envie de délocaliser dans la capitale de l'Europe ?

[ Dernière édition du message le 08/04/2017 à 11:59:04 ]

miles1981


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

J-Luc

Tadaaaaa on sait piloter les E/S (I2C, GPIO,...) du Raspberry Pi sous Linux avec Mono en C# (langage de haut niveau).
A nous les applications IIOT ou d'automatisme à pas cher... et surtout compréhensibles et surtout dans un langage un peu chiadé.
Il y a deux moyens d’oublier les tracas de la vie : la musique et les chats.
Albert Schweitzer

miles1981

Je viens d'y mettre un premier jet de premier chapitre/intro (dans les releases), vous pouvez commenter en mettant un commentaire en ouvrant un ticket (je pense qu'un ticket par chapitre peut êytre pas mal à la fin).
https://github.com/mbrucher/AudioTK-book/releases/tag/0.0.1
Audio Toolkit: http://www.audio-tk.com/

Wolfen


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

Rémy M. (chimimic)


Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

darklinux


miles1981

Pour les remarques, merci d'utiliser github directement, plus simple pour centraliser les critiques constructives !
Audio Toolkit: http://www.audio-tk.com/

Wolfen

Je suis en train d'organiser les stages de formation accélérés sur JUCE, si jamais ça vous intéresse j'aimerais savoir si vous pourriez répondre à un petit sondage, pour m'aider à cibler le contenu. Ca sera sur Paris après la rentrée scolaire

https://fr.surveymonkey.com/r/QNZVMYH
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

Anonyme

J'ai un banc de mesure que j'aimerais automatiser un peu et pour ça je voudrais utiliser python. L'aspect communicaiton avec les appareils est assez facile à gérer, à l'aide d'une librairie spéciale, et tous les appareils causent à peu près le même langage (du SCPI pour ceux qui connaissent)
Bref, j'aimerais programmer un truc un peu propre, et surtout facilement réutilisable pour d'autres projets qui utilisent les mêmes appareils. Je pensais donc créer des librairies permettant à mon application de causer très facilement avec mes appareils.
Bref, j'en suis arrivé à faire quelque chose de ce style
import visa
def smbv100a_init(ip_adress):
rm = visa.ResourceManager()
my_SMBV = rm.get_instrument("TCPIP::"+ip_adress+"::inst0::INSTR")
identity = my_SMBV.query('*IDN?')
identity = identity.split(',') #Séparation des mots le modèle de l'appareil se situe dans la première case du tableau identity
if (identity[1] == 'SMBV100A'):
return 1
else:
return 0
def smbv100a_set_RF_ON():
my_SMBV.write('OUTP ON')
mais du coup sur la deuxième définition il me dit qu'il ne connais pas la variable my_SMBV. Ce qui est logique vu que je la définie dans la fonction d'init juste au dessus. Comment est ce que je peux faire pour qu'il fasse bien le lien entre "les deux" ? J'avais pensé à utiliser une variable globale, mais bon, si il y a des solutions plus propres, je suis preneur.
Merci !
- < Liste des sujets
- Charte