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

Interfaces Graphiques Discussion :

Problème d'incrémentation sur lecture wave


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Problème d'incrémentation sur lecture wave
    Bonjour,

    Voilà je vous explique mon problème, j'ai un bouton "Suivant" qui doit augmenter la valeur "rWav" du programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    %Récupération de rWav depuis les données d'application de l'objet Figure
    rWav=getappdata(gcf,'numero_de_son');
     
    %Augmentation de la valeur rWav
    rWav=rWav+1;
     
    %Enregistrement de la nouvelle valeur de rWav dans les données
    %d'application de l'objet Figure
    setappdata(gcf,'numero_de_son',rWav);
    Cette valeur est ensuite reprise pour être lu avec le bouton "Lecture" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %Récupération de rWav,h et z depuis les données d'application de l'objet Figure
    rWav=getappdata(gcf,'numero_de_son');
    h=getappdata(gcf,'lecture_du_son');
    z=getappdata(gcf,'echantillon_du_son');
     
    %Lecture du fichier son concerné
    play(z);
    avec comme variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rWav=0;
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
    Il est normalement ainsi possible de lire une suite de son en en utilisant "Suivant", puis "Lecture".
    Cependant sur le programme, c'est toujours le même fichier qui est lu...
    Quelqu'un aurait il une solution à ce problème?

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par Pedrozito Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rWav=0;
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
    Il est normalement ainsi possible de lire une suite de son en en utilisant "Suivant", puis "Lecture".
    Cependant sur le programme, c'est toujours le même fichier qui est lu...
    Quelqu'un aurait il une solution à ce problème?
    Euh, il n'y a rien qui te choque ??
    un indice en gras rouge...c'est ça quand on a trop le nez dans son code

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    J'avoue ne pas bien saisir , le premier fichier son étant le 00.wav la variable rWav doit bien être égale à 0 au départ? Puis rWav=rWav+1 la fait augmenter de un par un.

    Je dois être aveugle là...

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Dans ce cas il manque des bouts de code dans ce que tu nous a donné.
    A quel moment fais-tu la lecture des fichiers pour rWav >0 ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Ca c'est la fonction principale en enlevant toute la partie création de uicontrols pour plus de lisibilité :

    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
    %Initialisation de la valeur réprensantant le numéro de son
    rWav=0;
     
    %Initialisation du son 1 et du son 2
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
    h2=wavread(sprintf('sound10%d.wav',rWav));
    z2=audioplayer(h2,11000);
     
    %Enregistrement direct de rWav dans les données d'application de l'objet
    %Figure
    setappdata(gcf,'numero_de_son',rWav);
     
    %Enregistrement direct de h, h2 et de z, z2 dans les données d'application de
    %l'objet
    setappdata(gcf,'lecture_du_son',h);
    setappdata(gcf,'echantillon_du_son',z);
    setappdata(gcf,'lecture_du_son2',h2);
    setappdata(gcf,'echantillon_du_son2',z2);
    Voici la fonction Suivant :

    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
    %Récupération de rWav depuis les données d'application de l'objet Figure
    rWav=getappdata(gcf,'numero_de_son');
     
    %Augmentation de la valeur rWav
    rWav=rWav+1;
     
    %Récupération de l'identifiant de l'objet Uicontrol text Fichier résultat
    %enfant de l'objet Figure
    textF=findobj('parent',gcf,'style','text','tag','fichier');
     
    %Modification de sa propriété String
    set(textF,'string',sprintf('Fichier%d',rWav));
     
    %Enregistrement de la nouvelle valeur de rWav dans les données
    %d'application de l'objet Figure
    setappdata(gcf,'numero_de_son',rWav);
    Et la fonction Lecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %Récupération de rWav,h et z depuis les données d'application de l'objet Figure
    rWav=getappdata(gcf,'numero_de_son');
    h=getappdata(gcf,'lecture_du_son');
    z=getappdata(gcf,'echantillon_du_son');
     
    %Lecture du fichier son concerné
    play(z);
    Normalement tout y est, je n'ai pas mis les autres fonctions du programme car elles n'interviennent pas dans cette action.

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    ??
    Euh ce n'est pas clair du tout du tout.
    Dès le début : comment est défini rWav.
    Les 4 premières lignes font 2 fois la même chose puisque rWav ne change pas entre h=..,z=... et h2=...

    Dans la fonction lecture au lieu de faire z=getappdata il faut faire la lecture là. Sinon z est fixe (il n'est pas dépendant de rWav) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rWav=getappdata(gcf,'numero_de_son');
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
     
    %Lecture du fichier son concerné
    play(z);
    Je pense que ton erreur vient du fait que tu penses que h et z se mettent à jour quand rWav est mis à jour => ce n'est pas le cas, il faut les recalculer à chaque fois que tu incrémentes rWav.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Les 4 premières lignes font 2 fois la même chose puisque rWav ne change pas entre h=..,z=... et h2=...
    Désolé c'est juste que h2 z2 sont pour un autre Uicontrol qui doit avoir le même rWav que h et z. J'ai mal expliqué mon affaire.

    Si je n'appelle plus z et avec getappdata dans la fonction lecture comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rWav=getappdata(gcf,'numero_de_son');
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
     
    %Lecture du fichier son concerné
    play(z);
    La lecture ne lit même plus un seul fichier, silence radio...

    Dans ma logique (qui est fausse visiblement ) le uicontrol Suivant avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setappdata(gcf,'numero_de_son',rWav);
    enregistre le nouveau rWav.
    Puis dans la fonction Lecture,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     rWav=getappdata(gcf,'numero_de_son');
    h=getappdata(gcf,'lecture_du_son');
    z=getappdata(gcf,'echantillon_du_son');
    Il y a récupération de la valeur rWav, de la valeur h qui est dépendante de rWav et de la valeur z qui est dépendante de h et donc de rWav.

    C'est pas clair mon truc là...

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par Pedrozito Voir le message
    Si je n'appelle plus z et avec getappdata dans la fonction lecture comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rWav=getappdata(gcf,'numero_de_son');
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
     
    %Lecture du fichier son concerné
    play(z);
    La lecture ne lit même plus un seul fichier, silence radio...
    Même pas un petit message d'erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     rWav=getappdata(gcf,'numero_de_son');%rWav = 0, 1, 2...OK
    h=getappdata(gcf,'lecture_du_son');%=wavread(sprintf('sound0%d.wav',rWav)); quand rWav=0 et pis c'est tout, pourquoi "bougerait"-il ?
    z=getappdata(gcf,'echantillon_du_son');%pareil que h

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Non même pas un petit message d'erreur, absolument rien...

    Je vois ça comme ça :
    -Au début il y a l'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
    -Et l'enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setappdata(gcf,'lecture_du_son',h);
    setappdata(gcf,'echantillon_du_son',z);
    Quand on rappelle ces variablres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    h=getappdata(gcf,'lecture_du_son');
    z=getappdata(gcf,'echantillon_du_son');
    Elles ne sont pas modifiées alors que rWav a été modifié? C'est ça qu'il faut comprendre?

  10. #10
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par Pedrozito Voir le message
    Quand on rappelle ces variablres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    h=getappdata(gcf,'lecture_du_son');
    z=getappdata(gcf,'echantillon_du_son');
    Elles ne sont pas modifiées alors que rWav a été modifié? C'est ça qu'il faut comprendre?
    Oui.

    Un test simple en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a=3;
    setappdata(0,'a',a);
    b=4*a
    setappdata(0,'b',b);
    a=5
    setappdata(0,'a',a);
    b=getappdata(0,'b')
    4*a
    Alors convaincu ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    C'est bon j'ai enfin compris, merci beaucoup pour ton aide Caro !

    Il suffisait juste d'enregistrer à nouveau h et z dans la fonction Suivant :

    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
    %Récupération de rWav depuis les données d'application de l'objet Figure
    rWav=getappdata(gcf,'numero_de_son');
     
    %Augmentation de la valeur rWav
    rWav=rWav+1;
     
    %Récupération de l'identifiant de l'objet Uicontrol text Fichier résultat
    %enfant de l'objet Figure
    textF=findobj('parent',gcf,'style','text','tag','fichier');
     
    %Modification de sa propriété String
    set(textF,'string',sprintf('Fichier%d',rWav));
     
    %Définition de h et z
    h=wavread(sprintf('sound0%d.wav',rWav));
    z=audioplayer(h,11000);
     
    %Enregistrement des nouvelles valeurs de rWav, h et z dans les données
    %d'application de l'objet Figure
    setappdata(gcf,'numero_de_son',rWav);
    setappdata(gcf,'lecture_du_son',h);
    setappdata(gcf,'echantillon_du_son',z);
    La fonction Lecture reste ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %Récupération de rWav,h et z depuis les données d'application de l'objet Figure
    rWav=getappdata(gcf,'numero_de_son');
    h=getappdata(gcf,'lecture_du_son');
    z=getappdata(gcf,'echantillon_du_son');
     
    %Lecture du fichier son concerné
    play(z);
    Encore merci et bonne journée.

    Pierre.

  12. #12
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Dans ce cas dans la fonction lecture tu n'as besoin de récupérer que z, rWav et h ne servent à rien dans ce contexte.
    D'ailleurs l'enregistrement de h ne sert non plus à rien (à moins que tu ne l'utilises ailleurs).

Discussions similaires

  1. [Débutant] Problème à l'insertion sur base donné Access | Lecture Seule
    Par megibson dans le forum Windows Forms
    Réponses: 0
    Dernier message: 22/02/2014, 23h37
  2. [XL-2010] Problème libération mémoire sur lecture OnAction d'un shape
    Par DenisF dans le forum Macros et VBA Excel
    Réponses: 41
    Dernier message: 07/02/2013, 11h30
  3. Problème champ auto-incrément sur SQL Server 2000
    Par samirmember dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/03/2010, 13h17
  4. Problème d'attribut de lecture seule sur des dossiers
    Par Redbull dans le forum Sécurité
    Réponses: 2
    Dernier message: 09/08/2005, 09h52
  5. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56

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