IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Génération de son en temps réel


Sujet :

Signal

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 44
    Points
    44
    Par défaut Génération de son en temps réel
    Bonjour à tous!

    Je travail sur un instrument de musique virtuel piloté de l'extérieur par un joystick en utilisant matlab pour récupérer les données du joystick, et produire des sons. Mon problème ce situe dans la génération du son. Je cherche juste à produire un truc simple : un sinus de fréquence prédéfinie mais dont l'amplitude est pilotée en temps réel. Je n'ai pas trouvé le moyen de piloter cette amplitude en temps réel, car avec soundsc, je ne peux produire que des sons de durées prédéfinies. Existe-t-il une fonction, ou une astuce pour pouvoir gérer cela?

    Merci d'avance!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si tu possèdes la Data Acquisition Toolbox, tu peux t'inspirer de cette discussion.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Hum je suis pas sûr que ça soit ça, en fait je vais ré-expliquer ce que je fais, je me rend compte que c'était mal dis (et surtout incomplet) :

    J'utilise un contrôleur midi (clavier) pour définir une note. L'information est récupérée par matlab dans une boucle while (ce qui permet de mettre à jour l'information venant du clavier en temps réel), ainsi que l'information sur l'amplitude donnée par le joystick.
    A partir de là, je cherche à produire un son au pitch défini par le clavier et à l'amplitude définie par le joystick, le tout évoluant dans le temps (je ne me sers donc pas de l'analoginput), comme pour un instrument réel. Je voudrai donc pouvoir produire des sons ayant pour seule limite temporelle le fait de changer de fréquence et dont l'amplitude peut évoluer continument.

    Pour le moment, l'acquisition du pitch et de l'amplitude se fait sans problème, et est suffisamment rapide pour être "temps réel", mais la fonction sound ne me permet de faire que des sons à durée définie, séparés par des claquements si non fenêtrés (et non continus si fenêtrés).

    N'hésitez pas à poser des questions si je manque de clarté!

    Et si vous avez une idée ou une solution, n'hésitez pas non plus! ^^

    Merci!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je ne t'ai pas dit que la discussion refletait exactement ton cas, juste de t'en inspirer. Je suis bien conscient que tu n'utiliseras dans ton cas que l'analogoutput, mais le fonctionnement est quasi-le même.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    L'exemple de la discussion ne fonctionne pas sur ma machine, quand je le lance il me met:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data must be queued using PUTDATA before starting.
    pour la portion de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    start([AI Aout] );
    trigger([AI Aout])
    Le problème, c'est que si je rajoute un

    matlab me répond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Undefined function or method 'putdata' for input arguments of type
    'analoginput'.
    ...

    Je ne connais pas très bien la data Acquisition Tool Box, mes erreurs viennent surement de là, mais là je ne comprends pas l'erreur...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Tibtib Voir le message
    Le problème, c'est que si je rajoute un

    matlab me répond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Undefined function or method 'putdata' for input arguments of type
    'analoginput'.
    Comme te le dit Matlab, ta variable AI est de type 'analoginput', or ce serait plutôt 'analogoutput' comme on en a parlé.
    De plus il te manque le deuxième argument des données à mettre.
    Tu peux regarder la documention pour avoir un exemple en tapant doc analogoutput.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    j'ai finalement fais quelque chose de différent, de plus simple mais peut-être plus bricolage, en utilisant puredata pour produire la partie son, et matlab uniquement pour la partie haptique (joystick). De cette façon, le pitch est intégralement géré par puredata, seule l'amplitude est prise en compte dans matlab, sauvée dans une boucle while sur un fichier txt (plusieurs centaines de fois pas seconde donc) et lue par puredata qui l'applique sur le pitch généré. Le tout à peu près en temps réel (il y a des craquements quand l'amplitude varie trop vite, mais c'est peut-être due à mes enceintes, car le craquement n'est pas présent pour certaines fréquences).

    Voilà, merci pour ton aide, il est fort possible que je revienne ici plus tard pour achever ce travail "pure matlab" !

Discussions similaires

  1. [Débutant] Analyse de son en temps réel
    Par titone971 dans le forum MATLAB
    Réponses: 5
    Dernier message: 12/12/2019, 15h20
  2. Traitement d'un fichier son en temps réel
    Par strattist dans le forum MATLAB
    Réponses: 0
    Dernier message: 08/11/2011, 19h07
  3. Réponses: 3
    Dernier message: 23/02/2010, 09h53
  4. Transfert de Son en temps réel
    Par rc.dev2009 dans le forum Développement
    Réponses: 3
    Dernier message: 24/12/2008, 12h36
  5. [SON - Linux] Acquisition temps réel
    Par kromartien dans le forum Administration système
    Réponses: 9
    Dernier message: 29/04/2007, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo