Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

Conception d'un synthétiseur virtuel analogique (VA)

  • 23 réponses
  • 7 participants
  • 1 081 vues
  • 9 followers
Sujet de la discussion Conception d'un synthétiseur virtuel analogique (VA)
Bonjour tout le monde ! Je suis musicien sur différents types d'instruments (synthétiseurs analogiques : modulaires, semi-modulaires, synthétiseur virtuel analogiques et numériques, sampler, etc...) et également étudiant en étude du numérique et d'électronique. Je suis donc passionné par la "fusion" du domaine de la musique avec la science et la technologie. Je suis titulaire d'un BTS Systèmes Numériques option Electronique et Communication et celui-ci m'a permis de participer à un projet qui m'a vraiment plût et intéressé : une table de mixage automatisée avec effets, bref bref bref ! Et j'ai donc accomplit ce projet grâce à une carte et au langage FPGA. Je suis donc très tenté de concevoir mon propre synthétiseur virtuel analogique (synthétiseur numérique virtuel qui simule le fonctionnement d'un synthétiseur analogique) qui contiendrait la génération de différentes formes d'ondes, l'application de différents types de filtres et d'oscillateurs à basses fréquences. Mais le problème n'est pas de savoir où me diriger, mais plutôt de savoir si justement je me dirige vers la bonne direction. Je sais pas comment fonctionnent et comment sont programmés ces synthétiseurs, chez les fabricants, appart pour les effets, ils utilisent des VSP (Virtual Signal Processing si je ne me trompe pas). Le FPGA me semble être un excellent moyen pour ce projet, mais son langage est vachement complexe, et assez coûteux.

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

Bonne soirée !!
2
Alors déjà c'est pas "VSP" mais DSP, pour Digital Signal Processor. C'est un type de microprocesseur spécialisé pour le traitement de signal, et effectivement c'est bien adapté pour le genre de choses qu'on fait dans un synthé ou des effets.

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 ...
3
D'accord avec Jimbass sur le FPGA, c'est complexe et le temps de développement, surtout quand on ne connait pas bien la toolchain, est loin d'être anodin.

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

4

Bonjour,

synthétiseur virtuel analogique

Merci d'éclairer ma lanterne en développant ce concept étonnant.

5
Phil, on qualifie de "VA" (virtual analog) tous ces synthés-là : https://fr.audiofanzine.com/synthe-modelisation/
6
@Jimbass: je crois que Phil29 faisait de l'humour, la formulation du titre du sujet pourrait se lire [synthétiseur virtuel] analogique.
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 ]

7
8
J'ai tiqué aussi :-D
Comme quoi, l'humour et les forums, c'est pas toujours évident.
Bref, je surveille ce sujet intéressant. Bon courage François-Arnaud !
9
D'abord merci pour l'intérêt et les réponses ! Ca fait plaisir de pas se faire prendre de haut comme sur Openclassroom qui prennent la grosse tête en forum électronique... Désolé si vous n'aviez pas saisi "Synthétiseur analogique virtuel", pour moi je vois pas comment l'appeler autrement ^^ Oui en effet je voulais dire VHDL pour le langage, et non pas FPGA. En ce qui concerne la complexité comme vous le mentionnez, je ne sais pas trop comment la jauger, pour commencer un premier appareil je pense qu'un principe de synthèse tout simple comme la synthèse soustractive, cela me laisserais déjà générer le signal d'origine, ensuite lié à trois filtres possibles (LPF, BPF, HPF) et peut-être un LFO. Ce principe serait plus simple dans le fonctionnement.
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 ]

10
Un des synthétiseurs dont je rêverais de connaître le fonctionnement est le fameux Teenage Engineering OP-1, mais là ça relève de très puissant et complexe malgré son allure qui ne paye pas de mine ! Mais pour moi c'est une ptite merveille de compréhension de synthèse et de puissance !

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

11
Le terme "toolchain" représente l'ensemble des outils de développement.

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.
12
x
Hors sujet :
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.
13
Donc pour résumer un peu tout ça, vous me conseillez de me diriger plus vers quoi ? Pour avoir une base du fonctionnement, et pouvoir par la suite m'améliorer ?
14
x
Hors sujet :
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. :oops2:

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

15
Donc vous me conseillez bien de partir vers du FPGA ? :)
16
J'ai regardé quelques conférences d'ingénieurs en université, qui font du DSP en C et C++, qu'en pensez-vous ?
17
Citation de François-Arnaud :
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.

Citation de François-Arnaud :
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.
18
Un truc intéressant dans un premier temps mais assez pointu techniquement c'est d'utiliser la partie FPGA comme un interface numérique entre la partie DSP et les autres périphériques du synthétiseur.

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.
19
Tiens, en ce moment je joue avec ça pour m'éduquer: miniZED.
Ç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

20
C'est une petite carte bien sympa, avec juste ce qu'il faut d'IO et un prix tout à fait abordable.
21
J'ai trouvé une carte qui a l'air assez performante et qui a l'air de faire l'affaire pour ce que je voudrais en faire : la TI ezDSP, je ne vais pas pouvoir me la procurer tout de suite même d'autres cartes peu chères (plus d'argent !). Mais j'ai un article d'un étudiant en ingénierie qui fait tout un cours sur la conception d'un synthétiseur avec cette carte, il produirait le son, filtrerait et pourrait appliquer différents effets. Cette carte est programmable en C il me semble, je le maîtrise plutôt bien donc cela m'arrange ! J'avoue que le FPGA peut-être vraiment puissant si on s'en sort, mais je ne le maîtrise vraiment pas assez, et je pense vraiment que ça va plus être de la prise de tête qu'autre chose...
22
Il y a plein de références de cartes eZdsp chez TI ...

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.

[ Dernière édition du message le 21/07/2018 à 23:05:20 ]

23
Salut François-Arnaud,
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 :D:
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).
24
Axoloti est une board très marrante.
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