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

MATLAB Discussion :

lancer la lecture d'un .wav sans rien cliquer


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut lancer la lecture d'un .wav sans rien cliquer
    Bonjour,
    Je suis tout nouveau sur le forum et vais sans doute faire des maladresses de présentation de mon problème...

    Je ne suis pas développeur, seulement utilisateur de Matlab pour mon travail (chercheur en écologie).
    J'essaye de "visualiser" des signaux accélérométriques enregistrés sur des animaux sauvages pour les interpréter en terme de comportement et reconstituer leur budget temps.
    Par visualiser, je veux dire ici les transformer en fichier audio et les rendre compatible multimedia (par wavwrite) pour les entendre : entendre en temps réel la fréquence ou l'amplitude des signaux accélérométriques issus des mouvements me permet en effet de mieux les interpréter....

    Mon problème est d'ouvrir directement une application multimedia dans mes programmes pour lire ce signal transformé en audio sans avoir à faire aucun clique sur une interface....

    J'ai trouvé l'échange entre 'dut' et 'Vassili68' datant de nov 2007, et ai appliqué le script de dut 'vlc.m'.
    SUPER et MERCI, ça fonctionne, c'est magique !

    Néanmoins, ce que j'aimerais, c'est lancer cette application sans avoir à cliquer une seule fois (dans une boucle de visualisation d'une sous-partie de mes données sous forme d'une figure classique en plot(t,Ax,'b',t,Ay,'g',T,Az,'r') :

    Question 1 : comment modifier ce script pour ne pas avoir à appuyer sur les touches select et play et stop et surtout Exit de la fenêtre VLC ainsi créée avant de revenir dans la boucle de mon programme ???

    J'ai réussi à éliminer l'obligation de cliquer la touche select, mais ne sais pas comment shunter le clic 'Play' (je suppose que c'est au niveau de l'instruction " 'tag','play' " dans le script), et surtout shunter le clic sur le "Exit" pour fermer la fenêtre, voir ci-dessous mon script adapté.

    Une autre chose que je ne comprends pas du tout (il faut excuser mes questions idiotes, mais j'ai une notion très mauvaise des variables publiques, etc..) : les deux argin 'fichier' et 'chemin' de ma fonction ci-dessous ne fonctionnent pas si en lançant la fonction, je leur donne des noms quelconques : cela bloque plus bas en instruction :
    'callback','actionknownMovie(fichier,chemin)')

    C'est la première fois que cela m'arrive dans une fonction !
    Question 2 : mais pourquoi bon sang???????

    Question3 (en rêve) : serait-il imaginable d'avoir en même temps sur la fenêtre video ma figure plot(T,Ax,'b',T,Ay,g',T,Az,'r') défiler (ou s'allonger) avec les données accélérométriques (elles sont en 50Hz) en synchrone avec le son (mon fichier .wav est issu d'une transformation des données accélérométriques en un signal en 5KHz) !

    ci-dessous donc, mon script largement inspiré de celui de Dut (vlc.m'), mais totalement bricolé car je suis à 100 000 lieux de comprendre toutes les lignes d'instruction (c'est pas de mon niveau!) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    function playOneFileWavWithVlc(fichier,chemin,volume)
    % playOneFileWavWithVlc(fichier,chemin,volume)
    %
    % va permettre l'ouverture de VLC Media Player avec en sélection automatique le fichier "fichier"
    % trois argin :
    % 1/fichier : String contenant l'extension .wav
    % 2/ chemin, String le path complet, avec ou non à la fin un "\"
    % 3/ volume, un entier (50 = moyen, 200= fort !')
    %
    % ATTENTION, incompréhensible : les deux arguments d'entrée "fichier" et "chemin" doivent être utilisés tels quels dans le lancement de la fonction !
    % faire impérativement : fichier= 'toto.wav'; chemin= 'XXX'; playOneFileWavWithVlc(fichier,chemin,volume)
    %
    % script interprété trouvé sur le web, écrit par ''DUT" en nov 2007
    %
    % Yves Handrich (first version du 5 mai 2013)
     
    recV= findstr(fichier,'.wav'); if isempty(recV), disp('ATTENTION, le nom du fichier doit comprendre l''extension ".wav"'), return, end
     
     
    fig = figure('position',[381 188 850 100],...
        'menubar','none',...
        'numbertitle','off',...
        'tag','vlcfig');
     
    actx = actxcontrol('VideoLAN.VLCPlugin.1', ...
        'position',[20 60 820 20], ...
    	'parent',fig);
     
    vi = get(actx,'VersionInfo');
    vr = version('-release');
     
    set(fig,'name',sprintf('VLC media player (%s) in MATLAB %s',vi,vr))
    actx.volume = volume;
     
     
    uicontrol('units','pixels','position',[20 20 300 20],...
        'string',fichier)
     
    uicontrol('units','pixels','position',[350+(80+140/3) 20 80 20],...
        'string','Play',...
        'tag','play',...
        'callback','actionknownMovie(fichier,chemin)')
     
     
    handles=guihandles(fig);
    handles.actx=actx;
    guidata(fig,handles)
     
     
    function actionknownMovie(fichier,chemin)
     
    handles=guidata(findobj('type','figure','tag','vlcfig'));
    invoke(handles.actx,'addTarget',fullfile(chemin,fichier),[],1,int32(1)); 
    %
    handles=guidata(findobj('type','figure','tag','vlcfig'));
    invoke(handles.actx,get(gcbo,'tag'))

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

    1. Il te suffit de regarder le code contenu dans la fonction callback correspondante.
      Par exemple pour le bouton play, on a
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      uicontrol('units','pixels','position',[20+80+140/3 20 80 20],...
          'string','Play',...
          'tag','pla',...
          'callback',@playmovie)
      qui appelle donc la fonction playmovie lorsque le bouton est pressé, fonction qui contient la ligne invoke(actx,'play').
    2. Ceci vient du fait que tu as associé la propriété Callback à une chaîne de caractères. Tu trouveras l'explication dans ce sujet de la FAQ.
    3. Je pense à associer le code de ce sujet au callback d'un objet Timer.

Discussions similaires

  1. Se lancer, sans rien.
    Par karottes dans le forum Emploi
    Réponses: 35
    Dernier message: 12/07/2010, 13h55
  2. Lecture fichier wav sans librairie
    Par websurfeur dans le forum C
    Réponses: 3
    Dernier message: 12/09/2006, 10h51
  3. a quoi sert un return sans rien après ?
    Par harlock59 dans le forum C
    Réponses: 11
    Dernier message: 17/01/2006, 10h14
  4. Lecture dans un fichier sans cat
    Par gandalfar dans le forum Linux
    Réponses: 5
    Dernier message: 27/12/2005, 11h35
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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