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 :

Duration 0.5 pyaudio


Sujet :

Python

  1. #1
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut Duration 0.5 pyaudio
    Bonjour.

    J'ai un problème quand je veux diminuer à moins d'une seconde la durée d'une fréquence avec pyaudio.
    Le code que je vous copie est partiel, il ne fonctionnera pas tel qu'il est.
    Mais peut-être que vous êtes habitué à l'utilisation de pyaudio et que vous êtes en mesure de trouver ma solution.

    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
    def sine_tone(frequency, duration, volume=0.3, sample_rate=44100):    # Calculer le nombre total d'échantillons
        n_samples = int(sample_rate * duration)
        # Initialiser PyAudio
        p = pyaudio.PyAudio()
        # Ouvrir un flux de sortie
        stream = p.open(format=p.get_format_from_width(1),  # 8 bits par échantillon
                        channels=1,  # mono
                        rate=sample_rate,  # fréquence d'échantillonnage
                        output=True)  # flux de sortie
     
     
        # Fonction pour générer l'onde sinusoïdale
        def s(t):
            (lineno(), "T", t, "frequency", frequency)
            return volume * math.sin(2 * math.pi * frequency * t / sample_rate)
     
     
        # Générer les échantillons de l'onde sinusoïdale
        samples = (int(s(t) * 0x7f + 0x80) for t in range(n_samples))
     
     
        # Écrire les échantillons dans le flux de sortie par blocs
        for buf in zip(*[samples] * sample_rate):  # écrire plusieurs échantillons à la fois
            stream.write(bytes(bytearray(buf)))
     
     
    "# Générer les sons avec les fréquences et les notes de 'self.gam_son'."
    liste_gam = list(self.gam_son.keys())  # Les noms des gammes
    ind_gam = 66 - len(liste_gam)
    # id_lino = 0  # self.tab_lig (Lignes) et colis1[2] (Noms.Lignes).
    # 328 tab_lig [1, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, ] long 68
    for k2, v2 in self.gam_son.items():
        (lineno(), "k2", k2, "v2", v2, "ind_gam", ind_gam)
        # 1124 k2 0 v2 [['C2', 65.41], ['D2', 73.42], ['E2', 82.41], ['F2', 87.31], ['G2', 98.0], ['A2', 55.0],
        # ['B2', 61.74]] ind_gam 0
        self.frequencies.clear()
        for v1 in v2:
            self.frequencies.append(v1)
            (lineno(), "v1", v1, "... \t", k2, "\t\t", self.frequencies[-1])
            # 1130 v1 ['C2', 65.41] ...      0          ['C2', 65.41]
     
     
        (lineno(), "frequencies", self.frequencies, "k2", k2)
        for freq in self.frequencies:
            # Colorier les rectangles coordonnés aux gammes via 'tab_rec' (ligne-315).
            # For rec in tab_rec : self.tableau.itemconfig(rec, fill="red") : Change la couleur.
            self.tableau.itemconfig(self.tab_rec[ind_gam-1], fill="")
            self.tableau.itemconfig(self.tab_rec[ind_gam], fill="lightsteelblue")
            self.tableau.update_idletasks()  # Forcer la mise à jour de l'interface graphique
            # For rec in tab_rec : coords = self.tableau.coords(rec) : Donne les coordonnées.
            (lineno(), "freq1", freq)
            # 1126 freq1 ['C6', 1046.5]
            sine_tone(freq[1], 1)
        self.tableau.itemconfig(self.tab_rec[ind_gam], fill="")
        ind_gam += 1
    Sincères salutations. ☺

  2. #2
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut
    Citation Envoyé par toumic2.0 Voir le message
    Bonjour.

    J'ai un problème quand je veux diminuer à moins d'une seconde la durée d'une fréquence avec pyaudio.
    Le code que je vous copie est partiel, il ne fonctionnera pas tel qu'il est.
    Mais peut-être que vous êtes habitué à l'utilisation de pyaudio et que vous êtes en mesure de trouver ma solution.

    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
    def sine_tone(frequency, duration, volume=0.3, sample_rate=44100):    # Calculer le nombre total d'échantillons
        n_samples = int(sample_rate * duration)
        # Initialiser PyAudio
        p = pyaudio.PyAudio()
        # Ouvrir un flux de sortie
        stream = p.open(format=p.get_format_from_width(1),  # 8 bits par échantillon
                        channels=1,  # mono
                        rate=sample_rate,  # fréquence d'échantillonnage
                        output=True)  # flux de sortie
     
     
        # Fonction pour générer l'onde sinusoïdale
        def s(t):
            (lineno(), "T", t, "frequency", frequency)
            return volume * math.sin(2 * math.pi * frequency * t / sample_rate)
     
     
        # Générer les échantillons de l'onde sinusoïdale
        samples = (int(s(t) * 0x7f + 0x80) for t in range(n_samples))
     
     
        # Écrire les échantillons dans le flux de sortie par blocs
        for buf in zip(*[samples] * sample_rate):  # écrire plusieurs échantillons à la fois
            stream.write(bytes(bytearray(buf)))
     
     
    "# Générer les sons avec les fréquences et les notes de 'self.gam_son'."
    liste_gam = list(self.gam_son.keys())  # Les noms des gammes
    ind_gam = 66 - len(liste_gam)
    # id_lino = 0  # self.tab_lig (Lignes) et colis1[2] (Noms.Lignes).
    # 328 tab_lig [1, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, ] long 68
    for k2, v2 in self.gam_son.items():
        (lineno(), "k2", k2, "v2", v2, "ind_gam", ind_gam)
        # 1124 k2 0 v2 [['C2', 65.41], ['D2', 73.42], ['E2', 82.41], ['F2', 87.31], ['G2', 98.0], ['A2', 55.0],
        # ['B2', 61.74]] ind_gam 0
        self.frequencies.clear()
        for v1 in v2:
            self.frequencies.append(v1)
            (lineno(), "v1", v1, "... \t", k2, "\t\t", self.frequencies[-1])
            # 1130 v1 ['C2', 65.41] ...      0          ['C2', 65.41]
     
     
        (lineno(), "frequencies", self.frequencies, "k2", k2)
        for freq in self.frequencies:
            # Colorier les rectangles coordonnés aux gammes via 'tab_rec' (ligne-315).
            # For rec in tab_rec : self.tableau.itemconfig(rec, fill="red") : Change la couleur.
            self.tableau.itemconfig(self.tab_rec[ind_gam-1], fill="")
            self.tableau.itemconfig(self.tab_rec[ind_gam], fill="lightsteelblue")
            self.tableau.update_idletasks()  # Forcer la mise à jour de l'interface graphique
            # For rec in tab_rec : coords = self.tableau.coords(rec) : Donne les coordonnées.
            (lineno(), "freq1", freq)
            # 1126 freq1 ['C6', 1046.5]
            sine_tone(freq[1], 1)
        self.tableau.itemconfig(self.tab_rec[ind_gam], fill="")
        ind_gam += 1
    Sincères salutations. ☺
    Quand on parle de propreté, c'est souvent une question de compatibilité. Un code peut être propre et ne pas répondre aux exigences demandées.

    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
     
            def sine_tone(frequency, duration, sample_rate=44100):
                """# Calculer le nombre total d'échantillons"""
                # Initialiser PyAudio
                p = pyaudio.PyAudio()
                # Ouvrir un flux de sortie
                stream = p.open(format=pyaudio.paFloat32,  # 8 bits par échantillon
                                channels=1,  # mono
                                rate=sample_rate,  # fréquence d'échantillonnage
                                output=True)  # flux de sortie
     
     
                # Génération de l'onde sonore
                t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)
                wave = 0.5 * np.sin(2 * np.pi * frequency * t)
                # Lecture de l'onde sonore
                stream.write(wave.astype(np.float32).tobytes())
     
                # Fermeture du flux audio
                stream.stop_stream()
                stream.close()
     
     
                # Fermeture de PyAudio
                p.terminate()
     
     
            "# Générer les sons avec les fréquences et les notes de 'self.gam_son'."
            liste_gam = list(self.gam_son.keys())  # Les noms des gammes
            ind_gam = 66 - len(liste_gam)
            # id_lino = 0  # self.tab_lig (Lignes) et colis1[2] (Noms.Lignes).
            # 328 tab_lig [1, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, ] long 68
            for k2, v2 in self.gam_son.items():
                (lineno(), "k2", k2, "v2", v2, "ind_gam", ind_gam)
                # 1124 k2 0 v2 [['C2', 65.41], ['D2', 73.42], ['E2', 82.41], ['F2', 87.31], ['G2', 98.0], ['A2', 55.0],
                # ['B2', 61.74]] ind_gam 0
                self.frequencies.clear()
                for v1 in v2:
                    self.frequencies.append(v1)
                    (lineno(), "v1", v1, "... \t", k2, "\t\t", self.frequencies[-1])
                    # 1130 v1 ['C2', 65.41] ...      0          ['C2', 65.41]
     
     
                (lineno(), "frequencies", self.frequencies, "k2", k2)
                for freq in self.frequencies:
                    # Colorier les rectangles coordonnés aux gammes via 'tab_rec' (ligne-315).
                    # For rec in tab_rec : self.tableau.itemconfig(rec, fill="red") : Change la couleur.
                    self.tableau.itemconfig(self.tab_rec[ind_gam-1], fill="")
                    self.tableau.itemconfig(self.tab_rec[ind_gam], fill="lightsteelblue")
                    self.tableau.update_idletasks()  # Forcer la mise à jour de l'interface graphique
                    # For rec in tab_rec : coords = self.tableau.coords(rec) : Donne les coordonnées.
                    (lineno(), "freq1", freq)
                    # 1126 freq1 ['C6', 1046.5]
                    # sine_tone(freq[1], 0.5)
                self.tableau.itemconfig(self.tab_rec[ind_gam], fill="")
                ind_gam += 1

Discussions similaires

  1. colonne duration de sql profiler
    Par voran dans le forum Outils
    Réponses: 1
    Dernier message: 22/07/2008, 17h43
  2. [DOM] Parser une "duration"
    Par MrDuChnok dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 23/11/2007, 11h22
  3. Problème de code Duration
    Par landoltp dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/08/2007, 20h31
  4. [FLASH MX] Propriété duration d'un objet Sound
    Par Bisûnûrs dans le forum Flash
    Réponses: 12
    Dernier message: 13/02/2007, 08h50
  5. [XML\XQuery] Caster xs:duration vers xdt:dayTimeDuration
    Par Otarie dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 13/11/2005, 18h20

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