Journal Nouveau projet :-)

Posté par  .
Étiquettes : aucune
0
22
sept.
2003
Cher Journal,

Je viens de publier un nouveau projet nommé IzSound. Il s'agit là d'une bibliothèque de traitement de flux audios implémentée à l'aide de C++/STL. Ce projet est disponible ici : http://www.izforge.com/izsound/(...) . Quand elle s'étoffera, j'espère implémenter quelques applications qui s'appuieront dessus. J'ai en particulier en tete une application de DJ-mix.

Voilà :-)
  • # Re: Nouveau projet :-)

    Posté par  . Évalué à 1.

    Je n'ai pas trouvé beaucoup d'infos sur le site, alors je pose mes petites questions ici :-) :

    Si j'ai bien compris, cette bibliothèque permet d'assembler des DSPs dans le but de traiter du son.
    - Le traitement est-il bien prévu pour fonctionner en temps réel ?
    - les sons pourraient-il etre streamé à partir de la mémoire (préchargement) ?
    - Pourra-t-on chainer différents types de modules (filtres, transposeur, mélangeur, etc.) ?
    - Gestion de plusieurs sons en simultané (d'ou le mélangeur) ?

    En fait, et pour résumer,je souhaiterais savoir si cette lib permettrait la création d'un logiciel de sampleur virtuel multimbral en temps réel (commandable par midi). Ca fait longtemps que je cherche un logiciel de ce type pour Linux, et rien ne m'a vraiment convaincu pour l'instant (en tout cas ceux que j'ai pu compiler parmis ceux dont quelque chose avait été releasé). Si cette lib permet de faire ca (ou le permettra à terme), je sens que je vais être très intéressé :-)
    • [^] # Re: Nouveau projet :-)

      Posté par  . Évalué à 3.

      Allonz-ions:

      1/ Rien n'est spécialement fait pour du temps réel à proprement parler. Chaque DSP est alimentée par un bloc de son de taille variable (ça dépent de ce que les DSP qui précèdent envoient) et elle opère sur ce bloc. Point barre :-)

      2/ On peut envisager un préchargement en mémoire. Il suffit de faire une DSP dont l'instanciation de la classe entraine le pré-chargement (par exemple en prenant le son sur une DSP qui la précède, mettons la DSP pour lire du Vorbis).

      3/ Oui.

      4/ Tu chaines comme tu veux, en fonction du nombre de 'slots' disponibles sur les DSP. Il y a déjà un crossfader qui est implémenté.

      Pour le MIDI il n'y a rien de prévu à priori. On opère sur du son. Mais il doit y avoir moyen de faire un système de commandes par signaux MIDI. En tous cas ça ne sera pas moi qui le fera :-)

      Mon objectif premier avec cette lib est de faire un logiciel de DJ-mix, tout en faisant que cette lib puisse etre d'intéret général. On peut envisager de faire un sound-tracker par exemple, c'est le type de logiciel que j'apprécie. Avant tout, le principe du KISS (Keep It Simple Stupid) est de rigueur.

      Pour le reste, je ne suis pas un expert en traitement du signal, je développe ça plus parceque ça m'amuse qu'autre chose :-) Voici une liste des DSP qui existent dans cette première release :
      - crossfader
      - utilisation de la libao (sorties alsa, oss, arts, .wav, ...)
      - lecture ogg
      - volume
      - sortie oss
      - pitch shifting.

      Bien sur, toute aide est la bienvenue. A bon entendeur :-)
      • [^] # Re: Nouveau projet :-)

        Posté par  . Évalué à 1.

        Merci pour toutes ces réponses :-)

        A priori donc, la lib pourrait être utilisée pour du traitement temps réel (en tunant au mieux la taille des tampons mémoire etc. c'est ce que font déjà les logiciels de sampleur virtuel à priori). Et vu tes réponses, un sampleur virtuel semble être fortement envisageable. Tu parle d'un sound tracker, c'est finalement beaucoup la même chose, à part qu'au lieu de lire les commandes dans un fichier, on les recoit au fur et à mesure (clavier du pc, boitier midi quelconque, etc.)


        J'ai malheureusement déjà plusieurs projets en cours, mais cette lib m'intéresse fortement. Je crois que je ne vais pas résister à l'envie de la télécharger et de la tester. Voilà que mon cerveau ne peux s'empêcher d'ébaucher des idées pour un soft de sampleur. Le temps, on en a jamais assez :-/

        Le traitement du signal, j'en ai bouffé plus que de raison au cours de mes études (ahh les FFT cé bon, miam :-p), je pourrais peut-être t'aider ponctuellement à l'occasion.
        • [^] # Re: Nouveau projet :-)

          Posté par  . Évalué à 1.

          Malheureux ! Tu n'aurais pas dû dire que tu avais fait du traitement du signal, maintenant je vais te harceler :-)

          Deux choses où une aide pourrait etre bienvenue:

          1/ Un flanger. En jouant sur le pitch (sinusoidalement) d'un flux sonore dédoublé, ça doit se faire. On dédouble, on joue avec le pitch d'un des flux et on le remélange avec l'autre avec un volume plus faible. Il me semble que ça marche. Mais c'est assez peu scientifique :-)

          2/ Filtrage de fréquences (cutoff et consorts). J'ai vu ça en physique de DEUG, j'ai vu la théorie de Fourier en DEUG ... mais c'est loin :-) Et puis il y a les FFT, mais je ne connais pas.

          Tu peux essayer la lib pour voir. Compiles avec le support du prog de test (--enable-testprog) et regardes. C'est un 0.0.1 mais ce qui est fait doit marcher :-) Si tu veux me contacter: julien |at] izforge [point) com .
          • [^] # Re: Nouveau projet :-)

            Posté par  . Évalué à 1.

            1/ Ca c'est le genre de filtre qu'on n'a pas vraiment l'occasion d'étudier à l'école :-) Mais je crois que tu es à peu près dessus : un filtre (à déterminer) donc la fréquence de coupure est commandable par un signal basse-fréquence (0.1~1Hz environ)

            2/ En fait, tous les filtres peuvent être implémentés avec un seule fonction (voir le produit de convolution noté *) : s(t)=e(t)*h(t)= integrale ( e(t-tau) . h(tau).dt ). Côté programmation, cette formule s'adapte bien au traitement par échantillons. Une simple somme suffit (on peut le faire rapidement avec un peu d'astuce), et on travaille directement en temporel. En entrée, on a un tableau d"échantillons, et le filtre est un simple tableau de coefficients (qui déterminent le type du filtre et son ordre). Les DSPs matériels fonctionnent comme ca (les instructions du processeur sont spécialement prévues pour ca).

            Comprendre les mathématiques derrière tout ca peut être un peu ardu, mais c'est plutôt simple à mettre en oeuvre, et une seule fonction permet de créer pratiquement n'importe quel type de filtre :-) Calculer les coefficients demandent un peu plus de boulot cependant ;-) Je pourrais sûrement t'aider pour mettre ca en place, j'ai un projet scolaire (en java) qui traîne quelque part sur le sujet (pas du temps réel cependant, c'était pour faire de la simulation de filtrage d'un signal avec des jolies courbes, etc.).

            Par contre, implémenter un cut-uff variable (commandable) demandera un petit peu de recherche, je vois mal le logiciel recalculer les coefficients du filtre à chaque fois que l'utilisateur joue sur ce paramètre :-p

            Si tu souhaites me contacter ;-) : dlfp chez cyberdivad point com
  • # Re: Nouveau projet :-)

    Posté par  (site web personnel) . Évalué à 1.

    est-ce qu'il y a un rapport avec les trucs de arts ? Il me semblait que arts définissait un framework de gestion du son assez costaux.

    "La première sécurité est la liberté"

    • [^] # Re: Nouveau projet :-)

      Posté par  . Évalué à 1.

      J'ai essayé Arts un temps mais c'est mal documenté et franchement compliqué à utiliser. En plus son auteur refuse de faire de la doc. Peu de gens savent utiliser Arts visiblement ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.