Conception d'un synthétiseur virtuel analogique (VA)
- 23 réponses
- 7 participants
- 1 081 vues
- 9 followers

François-Arnaud

Si vous avez des informations à propos de ce sujet, je vous écouterai volontier et je n'attends que ça !
Bonne soirée !!

Jimbass

Avant de choisir une technologie d'implémentation, il faudrait que tu spécifies précisément ce que tu veux faire : quelle architecture de synthèse, quelle technique de modélisation analogique, quelles performances, etc.
Tu peux aller voir le code de plug-ins libres et open-source pour comprendre un peu mieux de quoi il retourne.
En ce qui concerne le FGPA (qui est une technologie de processeurs, pas un langage : les langages HDL les plus courants sont VHDL et Verilog), c'est effectivement très puissant quand on l'utilise correctement, mais il faut voir si le jeu en vaut la chandelle. En gros, si la complexité de ton système est modérée tu pourras peut-être l'implémenter plus simplement en logiciel. Et si c'est suffisamment complexe pour avoir vraiment besoin de FPGA, ca risque de l'être trop pour un premier projet, surtout si tu es tout seul ...
Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts

static volatile

Les DSP, eux aussi ont leurs désavantages: c'est cher, les toolchains sont en général propriétaires (et chères si tu veux travailler avec ton propre hardware).
Pour se lancer avec des puces Analog Devices par exemple, il faut compter plus de 600€ pour une dev board et la toolchain ne tourne que sous windows (et coûte un bras).
Chez TI, tu peux trouver moins cher (OMAP-Lxxx par exemple avec une toolchain verrouillée à la carte de dev entre 100€ et 200€).
Pour un premier projet, j'irais peut-être plutôt voir du côté des plus gros Cortex-M4 (ou Cortex-M7, mais le M7 ne sera pas forcément facile à bien faire tourner avec des contraintes temps-réel dures).
L'avantage du Cortex-M4: tu trouves des cartes de dev à moins de 15€ (les Nucleo de STMicro par exemple), la toolchain (gcc, openocd) est libre, gratuite et bien documentée, tu as les instructions DSP (MAC, etc.), un FPU... bref de quoi bien s'amuser déjà.
Le projet Axoloti, par exemple, tourne sur un STM32F4 et on fait déjà pas mal de synthèse avant d'arriver aux limites de mémoire et de calcul.
Resistance is not futile... it's voltage divided by current

Anonyme

Bonjour,
synthétiseur virtuel analogique
Merci d'éclairer ma lanterne en développant ce concept étonnant.

Jimbass

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

static volatile

Lu comme de la sorte, ça fait un bel oxymore...
Resistance is not futile... it's voltage divided by current
[ Dernière édition du message le 17/07/2018 à 21:40:43 ]

Jimbass


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

oktopus


Comme quoi, l'humour et les forums, c'est pas toujours évident.
Bref, je surveille ce sujet intéressant. Bon courage François-Arnaud !

François-Arnaud

Pour le FPGA, c'est vrai que ça va vraiment être une usine à gaz, sachant je le maîtrise pas non plus à la perfection, il est super complexe pour moi et mon niveau ! Dites-moi si je me trompe, mais une "ToolChain" est bien la chaîne des différents éléments composant le système ?
Voilà merci, bonne soirée !

[ Dernière édition du message le 18/07/2018 à 01:08:30 ]

François-Arnaud

[ Dernière édition du message le 18/07/2018 à 01:46:58 ]

Jimbass

En logiciel, il s'agit essentiellement d'éditeur de texte, de compilateur, d'assembleur, de linker ... le tout parfois rassemblé dans un IDE. Le plus souvent ca tourne autour des outils libres GCC (GNU Compiler Collection) et binutils associés.
En matériel, il s'agira de structurer ton design, d'en faire la synthèse*, le placement et le routage, et enfin de le charger sur la carte. Chaque fournisseur de FPGA a ses propres outils, car au moins le placement et le routage sont spécifiques de la puce utilisée.
* du coup, il peut y avoir confusion entre la synthèse sonore, l'objet de ton projet, et la synthèse logique, qui transforme le HDL en netlist.
Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts

EraTom

Coder et optimiser son code sur un DSP n'est pas follement plus simple que de câbler système numérique dans un FPGA.
J'ai le souvenir d'avoir implémenté des FFT temps réel bien plus facilement avec un FPGA qu'avec un DSP.

François-Arnaud


Jimbass

C'est pas faux. Surtout depuis que les FPGA ont des modules DSP pré-câblés.
Avec un Zynq ou un Cyclone SoC, tu pourras t'adonner à la fois aux affres du soft et aux perversions du hard.

Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts
[ Dernière édition du message le 18/07/2018 à 01:59:55 ]

François-Arnaud



François-Arnaud


Jimbass

Donc vous me conseillez bien de partir vers du FPGA ?
Ca dépend complètement de ce que tu veux faire.
D'un point de vue purement technique, il faut faire un truc vraiment compliqué en audio pour avoir besoin de FPGA. On peut déjà faire beaucoup de choses en logiciel, avec un CPU ou un DSP adapté.
D'un point de vue plus personnel, si c'est une compétence que tu souhaites développer, fonce.
L'idée que j'ai en te suggérant des puces FPGA+CPU, c'est de pouvoir développer tes compétences hardware d'une part, software d'autre part, et surtout l'interaction entre les deux.
J'ai regardé quelques conférences d'ingénieurs en université, qui font du DSP en C et C++, qu'en pensez-vous ?
Sans savoir de quelles conférences il s'agit, je n'en pense pas grand-chose.
Après j'éviterais le C++ pour du DSP, le C permet de mieux contrôler ses structures de données et optimiser la façon dont la mémoire est utilisée. Il est également courant, si des performances élevées sont requises, de coder une partie d'un algorithme en assembleur.
Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts

EraTom

Par exemple, une machine à états capable de pré traiter les messages midi pour les placer dispo dans une mémoire partagée avec le DSP.
Ou encore implémenter une IP qui sert d'interface UART ou USB.

static volatile

Ça coûte autour de 80€, avec une licence (verrouillée à la carte) pour la toolchain (qui fonctionne aussi sous linux).
C'est intéressant car certaines I/O ne sont accessibles qu'à travers le FPGA donc même pour un projet principalement software on se trouve à faire un minimum de hardware.
Ça se prêterait bien aux suggestions d'EraTom.
Resistance is not futile... it's voltage divided by current

Jimbass

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

François-Arnaud


Jimbass

Mais si tu veux un kit DSP pas cher, regarde ca : https://www.ti.com/tool/430boost-c55audio1
Il faut lui adjoindre une carte LaunchPad avec un microcontrôleur MSP430 (comparable à une Arduino), mais c'est pas cher non plus.
Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts
[ Dernière édition du message le 21/07/2018 à 23:05:20 ]

.Adrien

j'ai exactement le même profil que toi ! Je sors de BTS SN et je suis un mordu de son et d'éléctronique/informatique

Je voulait pendant un temps me lancer dans la conception d'un VST sur du hardware de système embarqué, j'avait déja réalisé un flanger sur FPGA en projet de 2ème année. La tache s'avère un peu ardue (mais pas infaisable) pour un niveau BTS.
Ducoup j'ai pas trop d'argent non plus mais je pense me diriger d'abord sur ça http://www.axoloti.com/ (sur conseil d'un enseignant-chercheur en traitement du signal). C'est à mi-chemin entre une carte de développement et un modulaire virtuel. En gros tu connecte la carte via USB, tu téléverse ensuite un patch que tu a créé sur l'interface, tu le déconnecte et tu te retrouve avec un DSP tout codé controlable en midi. Et le petit plus, c'est que le logiciel à l'air assez intuitif et permet de visualiser comment sont codés (en C) chacun des blocs internes (VCA, LFO, REVERB, etc), donc pour apprendre et ensuite passer au codage en dur sur un FPGA ou DSP ça peut être cool. Le son aussi est apparement asser propre (https://www.youtube.com/watch?v=XNx5zb3PuAw ici le type en joue via un appareil midi et sans traitement externe).

static volatile

C'est basé sur un STM32F4 et le firmware utilise un RTOS open source, ChibiOS, qui est plutôt pas mal.
Tu peux ajouter tes propres modules tant pour le DSP que dans le firmware (si par exemple tu connectes une board de ta conception pour laquelle tu aurais besoin de drivers).
Au niveau software, il y a quelques trucs intéressants, surtout si tu cherches un projet didactique: fixed-point arithmetic pour le DSP par exemple.
Le kernel de chibiOS peut demander un peu d'effort pour bien le comprendre.
Le code est conçu avec beaucoup de préprocesseur pour pouvoir compiler pour moult MCUs.
Si tu veux faire tes propres routines d'interruption il faut bien veiller à utiliser des vecteurs laissés libres par le kernel et les drivers (et faire gaffe aux canaux DMA, le kernel en utilise quelques uns), donc bien comprendre ce qui se passe à compile time et link time.
La HAL est plutôt bien faite et, toujours dans une optique didactique, c'est assez interessant d'utiliser les abstractions fournies par le kernel (notamment les streams) et/ou de faire ses propres drivers bas niveau qui viennent se brancher dans la HAL haut niveau du RTOS.
Bref, de quoi bien s'amuser si tu aimes la programmation bas niveau.
Pour le stm32, il y a 3 manuels indispensables (téléchargeables chez stmicro): la datasheet, le manuel de référence et le manuel de programmation.
Resistance is not futile... it's voltage divided by current
- < Liste des sujets
- Charte