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

Python Discussion :

PyAudio et les notes.wav


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut PyAudio et les notes.wav
    Bonjour
    J'ai réussi à entendre une note avec pyaudio, sauf qu'après çà boucle indéfiniment
    Si on entend une note, c'est que le procédé d'écriture et de lecture a fonctionné une fois
    Je crois qu'il manque une temporisation à la boucle de lecture pour pyaudio

    Le tutoriel python : M'apprend comment utiliser PyAudio
    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
    import pyaudio
    import wave
     
    ex = "1 AT&T Tone.wav"
     
    def jouer(zik):
        CHUNK = 1024
        wf = wave.open(zik, 'rb')
        p = pyaudio.PyAudio()
        stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=wf.getnchannels(),
                    rate=wf.getframerate(),
                    output=True)
        data = wf.readframes(CHUNK)
        while data != '':
            stream.write(data)
            data = wf.readframes(CHUNK)
        stream.stop_stream()
        stream.close()
        p.terminate()
    L'écriture : L'indispensable pour la lecture
    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
    # Partie échantillonnage pour l'écriture de la note.wav
            nbOctet = nbCanal = 1
            fech = 64000
            niveau = float(1 / 2)
            duree = float(1 / 6)
            nbEch = int(duree * fech)
            for fy in range(7):
                toplo = self.fichnom[fy]
                manote = wave.open(toplo, 'wb')
                param = (nbCanal, nbOctet, fech, nbEch, 'NONE', 'not compressed')
                manote.setparams(param)
                freq = diato[fy]
                self.framno[fy] = freq
                amp = 127.5 * niveau
                for i in range(0, nbEch):
                    val = wave.struct.pack('B', int(128.0 + amp * math.sin(2.0 * math.pi * freq * i / fech)))
                    manote.writeframes(val)
                manote.close()
    La lecture :
    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
    # Partie lecture avec pyaudio qui après une première note.wav entendue ne réagit plus
            for fy in range(7):
                CHUNK = 1024
                toplo = self.fichnom[fy]
                wf = wave.open(toplo, 'rb')
                p = pyaudio.PyAudio()
                stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                                channels=wf.getnchannels(),
                                rate=wf.getframerate(),
                                output=True)
                data = wf.readframes(CHUNK)
                while data != '':
                    stream.write(data)
                    data = wf.readframes(CHUNK)
                stream.stop_stream()
                stream.close()
                p.terminate()
                wf.close()
            """if self.presaudio == 0:
                self.presaudio = 1
                for fu in self.fichnom:
                    winsound.PlaySound(fu, winsound.SND_FILENAME)
                    # Windsound : Ne peut être utilisé qu'avec windows"""
    Je devrais modifier à cause de """if self.presaudio == 0: Conditionnant la lecture

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    On ne peut pas tester ton code, il manque des choses.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par marco056 Voir le message
    On ne peut pas tester ton code, il manque des choses.
    Voilà j'envoie le code pour tester, comme çà tu pourras donner ton avis
    http://cabviva.com/programs/progamv4encore.txt

    Lignes 1830 environ, def audio(self):

    En fait ce n'est pas de la pub
    Dernière modification par Invité ; 27/02/2016 à 18h26. Motif: Situation dans le programme

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Je ne comprends pas, le code est toujours l'ancien, pour Windows. Or, je ne suis pas sous Windows, 99,9 % de mon temps...
    Je ne peux donc rien tester.
    Si c'est pour réaliser le code, désolé, mais j'ai du boulot.
    Cela m'intéresse, mais j'ai des choses plus urgentes...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour désolé pour la gêne mais çà fait partie du jeu
    Pendant que d'autres travaillent

    Mais en cherchant un peu, j'ai réussi à faire tourner la boucle
    En changeant , par
    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
     
    for fy in range(7):
                toplo = self.fichnom[fy]
                manote = wave.open(toplo, 'wb')
                param = (nbCanal, nbOctet, fech, nbEch, 'NONE', 'not compressed')
                manote.setparams(param)
                freq = diato[fy]
                self.framno[fy] = freq
                amp = 127.5 * niveau
                for i in range(0, nbEch):
                    val = wave.struct.pack('B', int(128.0 + amp * math.sin(2.0 * math.pi * freq * i / fech)))
                    manote.writeframes(val)
                manote.close()
                if self.presaudio == 0:
                    if fy > 6:
                        self.presaudio = 1
                        break
                    p = pyaudio.PyAudio()
                    CHUNK = 1024
                    #toplo = self.fichnom[fy]
                    wf = wave.open(toplo, 'rb')
                    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                                    channels=wf.getnchannels(),
                                    rate=wf.getframerate(),
                                    output=True)
                    data = wf.readframes(CHUNK)
                    while len(data) > 0:
                        stream.write(data)
                        data = wf.readframes(CHUNK)
                    stream.stop_stream()
                    stream.close()
                    p.terminate()

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par toumic Voir le message
    Bonjour désolé pour la gêne mais çà fait partie du jeu
    Pendant que d'autres travaillent

    Mais en cherchant un peu, j'ai réussi à faire tourner la boucle
    En changeant , par
    C'est dommage, je n'avais pas vu les lignes rouges. Décidemment je suis TROP rapide

    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
     
    C:\Users\Vincent\AppData\Local\Programs\Python\Python35-32\python.exe C:/pyprogam/progamv5encore2.py
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\Vincent\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1549, in __call__
        return self.func(*args)
      File "C:/pyprogam/progamv5encore2.py", line 1823, in audio
        manote = wave.open(toplo, 'wb')
      File "C:\Users\Vincent\AppData\Local\Programs\Python\Python35-32\lib\wave.py", line 501, in open
        return Wave_write(f)
      File "C:\Users\Vincent\AppData\Local\Programs\Python\Python35-32\lib\wave.py", line 294, in __init__
        f = builtins.open(f, 'wb')
    PermissionError: [Errno 13] Permission denied: 'a7.wav'
    Exception ignored in: <bound method Wave_write.__del__ of <wave.Wave_write object at 0x0176CAB0>>
    Traceback (most recent call last):
      File "C:\Users\Vincent\AppData\Local\Programs\Python\Python35-32\lib\wave.py", line 316, in __del__
        self.close()
      File "C:\Users\Vincent\AppData\Local\Programs\Python\Python35-32\lib\wave.py", line 433, in close
        if self._file:
    AttributeError: 'Wave_write' object has no attribute '_file'
     
    Process finished with exit code 0

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

Discussions similaires

  1. Problème avec les notes de bas de page
    Par moukah2 dans le forum Word
    Réponses: 3
    Dernier message: 12/04/2011, 23h01
  2. Base de données pour gérer les notes
    Par netsabes dans le forum Schéma
    Réponses: 6
    Dernier message: 23/11/2007, 18h52
  3. mon jar ne lit pas les sons wav
    Par poulette3000 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 13/05/2007, 19h56
  4. Fichier Midi : récupérer les notes de musique
    Par zardi dans le forum Multimédia
    Réponses: 2
    Dernier message: 20/12/2005, 02h38
  5. Gérer les notes d'un examen
    Par declencher dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 31/05/2005, 12h59

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