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 :

Lecture de fichiers .wav et fonction random


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 Lecture de fichiers .wav et fonction random
    Bonjour,

    J'ai créé une interface graphique qui doit lire un fichier son en cliquant sur un bouton. Le programme possède toute une liste de .wav qu'il doit lire aléatoirement à l'appui de ce bouton. Jusque là rien de bien sorcier, j'ai associé chaque fichier à un chiffre qui est ensuite "tiré" par le random.

    Mais dès que le son est lu une fois il ne doit pas être possible de le réécouter une seconde fois avant la réouverture du programme.

    Il faudrait que mon random "supprime" une possibilité dès qu'elle est tiré.

    Par exemple voilà ce que j'ai fait :

    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
    r=floor(rand(1)*3); % valeur aléatoire entière de 0 à 2
     
    if (r==0) % boucle if associant une valeur 0 à 2 à un fichier WAVE
        h=wavread('sound00.wav'); % ouvre le fichier sound00.wav
        [h,f]=wavread('sound00.wav');
        wavplay(h,f) % lit le fichier sound00.wav
    elseif (r==1)
        h=wavread('sound01.wav'); 
        [h,f]=wavread('sound01.wav');
        wavplay(h,f) 
    elseif (r==2)
        h=wavread('sound02.wav'); 
        [h,f]=wavread('sound02.wav');
        wavplay(h,f) 
    end
    Une fois ce premier choix fait, quand l'utilisateur clique une deuxième fois sur le bouton de lecture le random doit se "rétrécir"...

    Si je me suis bien exprimé, est ce que quelqu'un aurait une idée pour réaliser ceci?

    Merci.
    Pierre.

  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 830
    Points
    14 830
    Par défaut
    Tu peux essayer ça :
    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
    r=floor(rand(1)*3); % valeur aléatoire entière de 0 à 2
    if isappdata(0,'valeurR')
       oldR=getappdata(0,'valeurR');
       if ismember(r,oldR)
          disp('Deja fait!');
          return
       else
          oldR(end+1)=r;
          setappdata(0,'valeurR',r);
       end
    else
       setappdata(0,'valeurR',r);
    end
    %Et plus simple :
    h=wavread(sprintf('sound0',%d,'.wav'));
    [h,f]=wavread(sprintf('sound0',%d,'.wav'));
    wavplay(h,f) % lit le fichier sound0<r>.wav
    Il peut y avoir d'autres solutions suivant comment tu as codé ton interface.
    Voir : Développement efficace des interfaces graphiques (GUI)
    Et pour les modifications que j'ai faites voir :
    Comment nommer une suite de fichiers : nom_1.ext, nom_2.ext... nom_N.ext ?
    Règles du Forum

    Adepte de la maïeutique

  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
    Merci Caro je vais pouvoir continuer mon programme avec ça.

  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 830
    Points
    14 830
    Par défaut
    sauf que j'ai écris des bêtises là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    h=wavread(sprintf('sound0',%d,'.wav'));
    [h,f]=wavread(sprintf('sound0',%d,'.wav'));
    C'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    h=wavread(sprintf('sound0%d.wav',r));
    [h,f]=wavread(sprintf('sound0%d.wav',r));
    D'ailleurs question pourquoi fais-tu 2 fois le wavread ?
    Il n'y a besoin que du 2nd non ?
    Règles du Forum

    Adepte de la maïeutique

  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
    Oui j'avais corrigé ton erreur après m'en être aperçu sur le programme.
    Pourquoi j'utilise deux fois le wavread? Euh... parce que j'ai trouvé cette formulation sur une doc d'aide.

    La première ligne sert à ouvrir le fichier, la seconde échantillonne le son, non?

  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 830
    Points
    14 830
    Par défaut
    Citation Envoyé par Pedrozito Voir le message
    La première ligne sert à ouvrir le fichier, la seconde échantillonne le son, non?
    Euh non je ne pense pas.
    Essaye avec une seule fois wavread tu verras bien si tu obtiens le même résultat
    Règles du Forum

    Adepte de la maïeutique

  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
    Ah oui ça fonctionne aussi !
    Bon mes scripts vont être allégés maintenant.

    Le pourquoi du comment, c'est peut être parce que j'utilise celle ci aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    h=wavread('sound00.wav'); 
    z=audioplayer(h,11000); 
    play(z)
    Qui permet d'utiliser "stop(z)" sur un autre bouton.

  8. #8
    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
    Bonjour,

    J'ai toujours un problème avec la fonction aléatoire "Random".
    Je me réexplique :
    Le programme en question doit lire des fichiers sons au hasard sans jamais lire deux fois le même.
    Chaque fichier son est associée à une valeur du random.

    Pour passer d'une écoute à l'autre, l'utilisateur doit cliquer sur un bouton et une fois que tous les fichiers sont lus, le programme recommence au début.

    Le problème est que je ne vois pas du tout comment programmer ce random qui ne choisira jamais deux fois la même valeur.

    La solution avec les if ne fonctionne pas correctement.

    Est ce que quelqu'un pourrait m'éclairer svp?

  9. #9
    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 830
    Points
    14 830
    Par défaut
    Tu peux peut-être regarder du côté de la fonction RANDPERM.
    Tu définis ainsi ton ordre aléatoire une fois pour toute et tu les joues dans ce sens-là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ordre = ranperm(3)-1;%crée un vecteur avec 0,1 et 2 dans un ordre aléatoire
    Règles du Forum

    Adepte de la maïeutique

  10. #10
    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
    Merci ce coup si tout fonctionne comme je le voulais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/08/2011, 11h36
  2. probléme de lecture de fichier wav.
    Par rominous41 dans le forum Débuter
    Réponses: 12
    Dernier message: 25/05/2009, 10h57
  3. [POO] Api de lecture de fichiers Wav.
    Par bonovox dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/07/2008, 09h33
  4. lecture de fichier via une fonction d'analyse
    Par Rniamo dans le forum C++
    Réponses: 2
    Dernier message: 17/07/2008, 16h28
  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