DSP Open source - présentation projet

Petit post pour présenter un projet communautaire Tavernage qui est en réflexion / debut de travail depuis déjà quelques temps : Le DSP OpenSource

Proposé par Dabu, et actuellement developpé par Maxime et moi-même, il a pour but de mettre a disposition toutes les ressources pour un DSP professionnel en open hardware (C’est a dire constuictible par n’importe qui, gratuitement.)

On ne parle pas d’une petite carte aliexpress à 20 euros, mais d’un vrai dsp rackable, avec un grand nombre d’entrée/sorties, en haute fidélité, supportant les protocoles réseaux standards et tout ce qu’on peut attendre d’un DSP pour une sono pro.

On a une liste d’idée de features à implémenter ici : Les spec

Niveau hardware, on devrait se baser sur une variante de STM32MP2, et un codec TI (Rien de définitif)
Niveau firmware, on utilisera un OS Linux Realtime.
Il faudra intégrer tous les drivers nécessaires, du codec jusqu’aux protocoles réseaux, et build notre image custom, ce qui se fera sur Yocto.
Et en software:

  • En moteur audio l’excellent CamillaDSP qui nous permettra de supporter FIR, IIR, routage, gains, delais, filtres et tout le processing nécessaire.
  • Un software « back-end » pour moniter camilla ainsi que les différents périphériques.
  • Un GUI fait-maison pour editer la configuration, avec pour objectif une portabilité maximale (WIn/MaOS/Lin/IOs/Android), et un design moderne et lisible.
  • Une interface classique boutons / écran LCD pour les modifs « on-the-fly »

Y’a du taf, et on aura besoin d’aide !
Si tu as des compétences de dev, design d’interface, electronique, tu pourras certainement apporter ta pierre à l’édifice :rock:
J’essayerais de faire quelques dev-notes pour documenter les galères et l’avancée du projet :slight_smile:

A + dans le bus les sondier.e.s ! :computer_disk: :rainbow_flag:

7 « J'aime »

Si il y a bien un domaine et un projet auquel je n’ai rien à apporter c’est celui !

Mais je trouve ce projet beaucoup trop stylé ! Hâte de voir l’avancée de la chose hehe

2 « J'aime »

Merci beaucoup !
Pour ce que tu peux apporter, il nous faudra bien des retour d’expérience !
Des avis sur les interfaces, les features les plus utiles, et tout le tintouin
C’est bien l’interet du projet communautaire, mettre en commun les expériences et retours pour ne pas etre juste trois nerds dans leur coin :stuck_out_tongue:

2 « J'aime »

Et des feedbacks de matos existant qui sont cools ou pas pour prendre un peu d’inspiration sur l’UX, et ce qu’il faut éviter aussi (non ça va pas ressembler à Lake, déso pas déso)

Trop bien comme projet !

J’ai un peu d’experience avec different microcontroller dont 1-2 projet sur STM32. Mon seul projet audio sur microcontroller est un Vocoder sur Daisy seed qui est une plateforme un peu plus accessible. Egalement 1-2 cours de signal processing dans les pattes mais peu de projets dans ce domaines.

Malheureusement je n’arrive pas a cliqué sur le lien des specs, ca m’envoie vers une page de double authentification qui ne m’envoie jamais de mail.

Cela dit si il y a un git ou on peut jeter un coup d’oeil, ou que je peux aider quelque part c’est avec plaisir.

Simplement pour ma part ca sera en dehors de mes périodes d’examens :smiling_face_with_tear:

1 « J'aime »

Ça va être du Linux pour le très gros du taff, on fait quelques tests de perfs sur le MP1 mais je pense que c’est + raisonnable de partir sur le MP2, du coup il y aura pas tant de développement microcontroleur je pense.

Quand on aura des bouts de trucs qui commencent à ressembler à quelque chose ça ira sur git, c’est juste un peu tôt pour l’info but stay tunned

Je ne peux aucunement aider la… à moins qu’il faille de l’impression 3D

(message supprimé par son auteur)

Hello

Nouveau sur le forum, il va falloir que je me présente :slight_smile:

En attendant, je trouve ton projet super chouette !

Pour ma part, je suis électronicien / développeur micro controleur / DSP
Bonne connaissance de l’électronique analogique, numérique, alimentations (faible puissance).
Pour le moment, j’ai développé des algo en traitement du signal en python pour prototypage, avec succès (iir, compresseur, anti larsen, gate, limiteur, ALC, …), et je compte bientôt porter cela sur µC (STM32H7, donc pas MP linux mais C pur)
Je connais très bien les Sigma DSP, des plus petits aux plus gros, en autonome ou pilotage avec µC, mais je veux sortir un peu de ce monde qui est un peu bridé.

Ce que ton projet m’inspire :

  • Il faut vraiment que je me mette à Linux :slight_smile: . Je vois bien l’avantage d’avoir des librairies, la stack IP déjà implémentée, etc..
  • Tu vas forcément devoir buffuriser tout ça, est-ce que ça ne te parait pas risqué en terme de latence pour du live ? (le sigma DSP est “temps réel”, sur STM32 je pensais utiliser des buffers de 1-2ms, ce qui me semble impossible avec un OS comme linux, non ?)
  • Si vous avez besoin d’aide pour utiliser des ADC/DAC très faible bruit, j’ai pas mal expérimenté déjà
  • Comment comptes-tu faire le hardware ? Surtout le STM32MP2 c’est un sacré bouzin, avec besoin de RAM, FLASH. Tu comptes utiliser une SOM du commerce à placer sur une carte maison ?

Hâte de lire la suite,
Pierre

3 « J'aime »

Bonjour Pierre, merci pour ton message !

Petite précision, il ne s’agit pas de mon projet mais bien du nôtre, c’est avant tout un projet communautaire et je n’en suis pas à l’initiative :slight_smile:

Tu publie ton code quelque part ? J’aimerais bien voir ce que tu as fait !
J’ai déjà bossé sur du STM32H747, avec MbedOS, basé sur un RTOS et qui met a disposition un ensemble de librairies pour la connectivité et de driver hardware.
C’est dans le cadre de quel projet que tu veux dev ça ?

Jamais travaillé sur les uc de chez analog device, même si j’ai un peu gratté leur documentation, c’est une bonne ressource en général pour étudier différents algorithmes audios.

Bien sur, un Linux en tant qu’OS de bureau et un kernel linux configuré pour de l’embarqué n’ont tien a voir en terme de perdormances.
Tu peux inclure uniquement les morceaux qui t’intéressent, tout ce dont on a besoin c’est d’un bootloader, le process init, un scheduler, quelques drivers et les services de base pour gérer filesystem & networking

Depuis quelques temps, le kernel linux peut etre compilé avec le flag PREEMPT_RT, qui active un scheduler Real-time dans linux, et permet de « pin » certaines tâches de haute priorité à un CPU dédié, pour garantir une latence maximale fixe. Tu peux aller voir ici si ca t’intéresse.
Le projet assure une latence maximale de 200 microseconde pour les taches prioritaires, avec une configuration basique. (hors buffering bien évidemment)

Pour notre projet la pipeline logicielle de traitement du son ressemble à ça (pour les input/output hardware) :
ADC -> I2S -> Driver ALSA -> PipeWire -> CamillaDSP
Et dans le sens inverse pour l’output.

Tous les elements de cette pipeline (a part camillaDSP) peuvent etre utilisés avec des exigences real-time,
et ce sera a nous d’expérimenter avec différentes configuration pour que le délai soit satisfaisant.
On pourra être amené a changer si on voit que ça le fait pas
Mais je ne m’en fais pas trop, un kernel linux bien optimisé est vraiment très rapide.
Je pense qu’on peut rester en dessous des 2 millisecondes de delay, avec la bonne configuration.
C’est evidemment sans compter les potentiels FIR mis en place par l’utilisateur, mais ça, on y peut rien, c’est leur nature :stuck_out_tongue:

Merci pour tes questions qui m’ont incitée à évaluer mes contraintes et les équivalents avec d’autres technos, j’espère avoir pu te donner quelques elements et ne pas m’etre embrouillée les pinceaux !

Pour tout ce qui concerne le design du PCB et l’electronique en général, je suis une bille totale et c’est plutot @mborges qui pourra te répondre

2 « J'aime »

Hey !
J’ai regardé un peu du côté de TI et Cirrus pour l’instant, faudrait que je prenne un peu plus de temps pour regarder ailleurs aussi.
Du coup je veux bien des retours pour les DAC/ADC :stuck_out_tongue:

Pour la board du STM32MP2, je suis pas super content des pins dispo sur le discovery kit, du coup je sais pas trop encore. Y a l’evaluation kit qui coûte vachement cher pour ce que c’est, mais les fichiers Altium sont dispo donc il y a moyen de refaire une board en partant de là sans trop se compliquer la vie.

Mais là j’ai pas des masses de temps libre, donc on va voir comment boucler ça ^^’

1 « J'aime »

Sympa !

Non je ne publie pas mon code/schéma, c’est en pro

J’avais fait une carte libre à base de 2x ADAU1701 (sigma DSP avec codec 2x4 intégré) et un ESP32, ça fonctionne bien, vraiment pas cher, mais :

  • Il restait beaucoup de code à faire pour le pilotage du DSP (web, etc..) => A ce jour, je sais juste flasher le DSP et piloter pas mal de traitements en “hard codé” - Passer sur un raspberry pi / som linux me permettrait au moins d’avoir un fatfs pour avoir les paramètres de traitement dans un fichier texte et y accéder en ftp, en attendant de mieux (je ne suis pas dev web)
  • Le 1701 est un peu limite pour traiter 2 canaux d’entrée et 4 canaux de sortie, surtout en RAM, le délai est très limité
  • Le SNR autour des 100dB(A) des ADAU1701 n’est pas suffisant pour une utilisation pro => entrées/sorties à +15dBu par exemple, ce qui est un peu le minimum, ça donne un bruit de fond à -85/-82dBu - Pour peu que tu attaques un proline 3000 avec un gain de 45.5dB branché sur une compression qui fournit 110dB à 1W/1m (2.83V), ça te sort un bruit de fond autour des 70dB(A) à 1m :sweat_smile: (pire cas bien-sûr, mais voilà l’idée) - Par contre très adapté au home cinema, j’ai fait des variantes de BOM avec des niveaux à +6dBu, sur des enceintes à faible rendement et amplis à faible gain, ça passe bien
  • C’était mon premier projet en sigma DSP, aujourd’hui je ferais autrement
    (Dépot github avec les gerber / 3D et des mesures ici : PDSP-I4-O8/Hardware/Binaries/PDSP-I4-O8_2D-TOP-Full.PNG at main · PierroDandine/PDSP-I4-O8 · GitHub )

Mais j’ai toujours pour projet de faire une carte DSP libre genre 4x8 “haut qualité”, avec un ADAU1466 (sigma DSP le plus puissant), et certainement une SOM ou RPI (zéro ?) pour le pilotage du DSP uniquement. Pour du FIR, les sigma DSP sont insuffisants en RAM sauf pour traiter 1-2 canaux.
Pour répondre à @mborges en même temps, tu peux regarder chez AKM, ils ont des très bons ADC/DAC avec jusqu’à 8 canaux. Viser 115dB de SNR me semble bien. Faut que le préampli suive bien-sûr.

L’idée du STM32H7 est qu’il tourne quand même sacrément vite, pour pas cher, et que c’est une porte d’entrée pour faire du traitement du signal en C et sortir de ces Sigma DSP qui ne disposent pas de compilateur (bloc seulement) sans mettre plusieurs milliers d’euros par ans dans une licence SHARC.. Sans OS bien sûr, je reste quelqu’un du hardware :slight_smile:

Par rapport au temps réel et capacités, c’est vrai que les processeurs ARM cortex “A” sont devenus très puissants, surtout avec le SIMD (ARM Neon), tout en étant abordables. J’y crois bien à votre projet !

Pour les revues de spec / choix de composants, puis schémas, n’hésitez pas.

A+

2 « J'aime »