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

Multimédia Java Discussion :

Effet cathédrale lors de la lecture d'un son wav et interaction avec une image gif


Sujet :

Multimédia Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2002
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Effet cathédrale lors de la lecture d'un son wav et interaction avec une image gif
    Bonjour,

    Après avoir parcouru les faqs et forums, j'ai trouvé comment lire un fichier audio
    J'utilise ça : (je l'ai trouvé quelque part sur ce site mais je ne sais plus où )
    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
     
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.DataLine.Info;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.AudioSystem;
    import java.io.File;
     
    public class Sound
    {        
        /**
         * Read an audio file in wav format.
         * @param fileName the path of the file you want to read.
         */
        public static void readWavFile(final String fileName)
        {
            class SoundRunnable implements Runnable
            {
                public void run()
                {
                    try
                        {
                            AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileName));
                            AudioFormat format = ais.getFormat();
                            Info info = new Info(SourceDataLine.class, format);
                            SourceDataLine source = (SourceDataLine)AudioSystem.getLine(info);
                            source.open(format);
                            source.start();
                            int read = 0;
                            byte[] audioData = new byte[16384];
                            while(read > -1)
                                {
                                    read = ais.read(audioData, 0 , audioData.length);
                                    if(read >= 0)
                                        source.write(audioData, 0, read);
                                }
                            source.drain();
                            source.close();
                        }
                    catch(Exception e)
                        {
                            e.printStackTrace();
                        }
                }
            }
            Runnable r = new SoundRunnable();
            Thread t = new Thread(r);
            t.start();
        }                   
    }
    Que j'utilise ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sound.readWavFile("sons/unSon.wav");
    Premier problème :
    Mais... personne ne semble avoir avoir eu le problème que j'ai.
    A chaque première lecture d'un fichier .wav le son est complètement déformé, je qualifierais cet effet d'"effet cathédrale" puis quand le son est rejoué à nouveau il est normal.
    J'ai plusieurs sons dans mon application que je déclenche les uns après les autres et c'est pour chacun pareil.

    Second problème :
    J'ai un second effet qui me parait un peu surréaliste mais qui ne doit pas l'être, lorsque j'appuie sur une des flèches du clavier cela déclenche l'affichage d'une image gif ainsi que le lecture d'un son wav qui dit "en haut", "en bas", etc. selon la flèche sur laquelle on appuie.
    Comme ceci (dans la méthode paintComponent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Image img1 = Toolkit.getDefaultToolkit().getImage("images/ahaut.gif");
    g2.drawImage(img1, (this.getWidth()/2)-(img1.getWidth(null)/2), (this.getHeight()/2)-(img1.getHeight(null)/2), this);
    Sound.readWavFile("sons/haut.wav");
    et le son se retrouve être joué à répétition tant que l'animation du gif n'est pas finie, si j'utilise une image fixe, il n'y a pas de répétition.
    C'est un peu comme un écho mais différent de l'"effet cathédrale" décrit plus haut.

    J'espère que je ne suis pas trop brouillonne dans mes descriptions.
    Merci d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2002
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Honte sur moi
    Ne jamais faire lire de son dans une méthode paintComponent() !!!
    car on ne contrôle pas vraiment quand il est lu.
    (cela ne fait que 2 fois que je me fait avoir, j'apprend, mais promis la prochaine fois je fait attention)
    En fait un gif animé est une succession d'image, à chaque nouvelle image, la visualisation est rafraichie (appel de paintComponent), c'est bizarre le son était joué le nombre de fois qu'il y avait d'images dans mon gif
    Cela résout aussi le premier problème, je n'ai plus d'effet étrange sur le son, mais je sais pas trop à quoi cela était dû

  3. #3
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Citation Envoyé par marmotte
    Cela résout aussi le premier problème, je n'ai plus d'effet étrange sur le son, mais je sais pas trop à quoi cela était dû
    Je vais peut-être dire une énormité, mais si j'ai bien compris, quand tu appuies sur une fleche, ça déclenche l'affichage d'un gif et la lecture d'un son.

    Ce ne serait pas lié au fait qu'il charge chaque image du gif animé avant de l'afficher (la première fois) et qui déclencherait ton son à chaque image. Le son se lancerait alors plusieurs fois de manière très très rapprochée donnant cet effet "reverberation" (c'est comme ça que je comprends ton effet cathédrale)

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2002
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Oui, tu as mieux décrit l'effet que moi.
    Ce ne serait pas lié au fait qu'il charge chaque image du gif animé avant de l'afficher (la première fois)
    Mais au moment du chargement, il n'y a pas de repaint.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2012, 10h01
  2. Réponses: 1
    Dernier message: 11/10/2011, 22h38
  3. Lecture de plusieurs sons wav selon les cas
    Par Ghunter59 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/12/2008, 22h21
  4. VBA/Excel: lecture d'un son a l'ouverture d'une boite de dialogue
    Par Raph.c dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/05/2008, 02h04
  5. Problème lors du chargement d'une image gif
    Par pat-trix dans le forum Applets
    Réponses: 15
    Dernier message: 19/09/2006, 17h22

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