Outils pour utilisateurs

Outils du site


issue190:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
issue190:python [2023/02/28 13:56] auntieeissue190:python [2023/03/01 12:56] (Version actuelle) andre_domenech
Ligne 31: Ligne 31:
 pip3 install beepy pip3 install beepy
  
-J'ai lancé mon REPL ptpython... Les instructions disent...+J'ai lancé mon REPL ptpython... Les instructions disent :
  
 import beepy import beepy
 beep(sound=1) beep(sound=1)
  
-C'est assez facile à suivre, même pour moi. Malheureusement, quand j'ai fait ça, rien ne s'est passé à part un message d'erreur.+C'est assez facile à suivre, même pour moi. Malheureusement, quand j'ai fait ça, rien ne s'est passéà part un message d'erreur.
  
-Traceback (appel le plus récent en dernier):+Traceback (appel le plus récent en dernier) :
  
   File "<stdin>", line 1, in <module>   File "<stdin>", line 1, in <module>
Ligne 70: Ligne 70:
 Hmmm. Only 7 options. I tried all 7 sounds and, while they worked, I wasn’t really impressed. Given the fact that the last release was in 2019, I thought there might be a better solution.** Hmmm. Only 7 options. I tried all 7 sounds and, while they worked, I wasn’t really impressed. Given the fact that the last release was in 2019, I thought there might be a better solution.**
  
-J'ai revérifié la documentation (le peu qu'il y a), et les instructions sont toujours les mêmes. J'ai donc pensé qu'il y avait peut-être eu un changement dans le programme et que la documentation n'avait pas été mise à jour ; alors je me suis gratté plusieurs parties du corps et j'ai décidé de jeter un coup d'œil à la sortie de la fonction dir().+J'ai revérifié la documentation (le peu qu'il y a), et les instructions sont toujours les mêmes. J'ai donc pensé qu'il y avait peut-être eu un changement dans le programme et que la documentation n'avait pas été mise à jour ; alors je me suis gratté plusieurs parties du corps et j'ai décidé de jeter un coup d'œil à la sortie de la fonction dir() :
  
 >>> dir(beepy) >>> dir(beepy)
 ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'beep', 'make_sound'] ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'beep', 'make_sound']
  
-Il y avait la commande beep, donc je savais qu'il y avait simplement deux façons de la faire fonctionner. Je pouvais essayer+Il y avait la commande beep, donc je savais qu'il y avait simplement deux façons de la faire fonctionner. Je pouvais essayer :
  
 from beepy import beep from beepy import beep
 beep(sound=1) beep(sound=1)
  
-Et voilà ! On a tous pu apprendre quelque chose ! C'est assez simple à inclure et à coder pour moi si je voulais attirer l'attention de l'utilisateur. Mais qu'en est-il de l'autre option ?+Et voilà ! On a tous pu apprendre quelque chose ! C'est assez simple à inclure et à coder pour moisi je voulais attirer l'attention de l'utilisateur. Mais qu'en est-il de l'autre option ?
  
 import beepy import beepy
Ligne 87: Ligne 87:
 Et voilà, c'était un moment d'apprentissage pour nous tous. J'ai lu le reste des instructions et j'ai trouvé le reste des commandes. Et voilà, c'était un moment d'apprentissage pour nous tous. J'ai lu le reste des instructions et j'ai trouvé le reste des commandes.
  
-L'argument sound prend comme argumentsoit des entiers (1-7), soit des chaînes (de la liste ci-dessous).+L'argument sound prend comme argument soit des entiers (1-7), soit des chaînes (de la liste ci-dessous).
  
 Voici les correspondances pour les nombres : 1 : 'coin', 2 : 'robot_error', 3 : 'error', 4 : 'ping', 5 : 'ready', 6 : 'success', 7 : 'wilhelm'. Voici les correspondances pour les nombres : 1 : 'coin', 2 : 'robot_error', 3 : 'error', 4 : 'ping', 5 : 'ready', 6 : 'success', 7 : 'wilhelm'.
Ligne 123: Ligne 123:
 The next bit of code (below) creates numpy arrays containing the values for the sine waves of the three notes.** The next bit of code (below) creates numpy arrays containing the values for the sine waves of the three notes.**
  
-Je venais de trouver un de ces fichiers "destinés à être intégréset je l'ai téléchargé sur mon bureau. J'ai copié le bloc de code dans le REPL et j'ai remplacé le chemin d'accès de l'exemple par mon chemin d'accès réel et, comme par hasard, cela a fonctionné comme prévu. La première fois !+Je venais de trouver un de ces fichiers « destinés à être intégrés » et je l'ai téléchargé sur mon bureau. J'ai copié le bloc de code dans le REPL et j'ai remplacé le chemin d'accès de l'exemple par mon chemin d'accès réel et, comme par hasard, cela a fonctionné comme prévu. La première fois !
  
-Je venais de trouver l'un de ces fichiers « à intégré » et l'ai téléchargé sur mon bureau. J'ai copié le bloc de code dans le REPL et j'ai changé le chemin de l'exemple à mon vrai chemin et, surprise, il fonctionnait comme attendu. La première fois !+Je venais de trouver l'un de ces fichiers « à intégrer » et l'ai téléchargé sur mon bureau. J'ai copié le bloc de code dans le REPL et j'ai changé le chemin de l'exemple à mon vrai chemin et, surprise, il fonctionnait comme attendu. La première fois !
  
 J'ai creusé un peu plus profondément et j'ai trouvé l'autre chose que je voulais. La possibilité de créer un ou deux sons simples à la demande. Cependant, l'échantillon et cette partie de la documentation concernaient l'utilisation de numpy pour générer des formes d'onde. Cela semblait être un peu plus que ce que j'étais prêt à faire, mais j'ai quand même essayé, puisque le REPL était toujours en place (au milieu à droite). J'ai creusé un peu plus profondément et j'ai trouvé l'autre chose que je voulais. La possibilité de créer un ou deux sons simples à la demande. Cependant, l'échantillon et cette partie de la documentation concernaient l'utilisation de numpy pour générer des formes d'onde. Cela semblait être un peu plus que ce que j'étais prêt à faire, mais j'ai quand même essayé, puisque le REPL était toujours en place (au milieu à droite).
Ligne 153: Ligne 153:
 Ensuite, nous introduisons les données audio dans le tampon d'exécution (playbuffer) et attendons qu'il soit terminé (en haut à droite). Ensuite, nous introduisons les données audio dans le tampon d'exécution (playbuffer) et attendons qu'il soit terminé (en haut à droite).
  
-Sachant que je ne pouvais pas faire de fautes de frappe, puisque j'ai copié le code directement à partir de la documentation, j'ai appuyé sur la touche <entrée> après la dernière ligne, m'attendant à ce qu'on me présente un accord de trois notes, une note à la fois. Cependant, ce que j'ai obtenu est (ci-dessous)...+Sachant que je ne pouvais pas faire de fautes de frappe, puisque j'ai copié le code directement à partir de la documentation, j'ai appuyé sur la touche <entrée> après la dernière ligne, m'attendant à ce qu'on me présente un accord de trois notes, une note à la fois. Cependant, ce que j'ai obtenu est (ci-dessous).
  
 C'était VRAIMENT frustrant. J'ai regardé le code à nouveau et j'ai réalisé que la seule valeur à virgule flottante était la valeur de T, qui est la durée de la note à jouer. Cela devait être dans la commande np.linspace. C'était VRAIMENT frustrant. J'ai regardé le code à nouveau et j'ai réalisé que la seule valeur à virgule flottante était la valeur de T, qui est la durée de la note à jouer. Cela devait être dans la commande np.linspace.
Ligne 160: Ligne 160:
 t = np.linspace(0, T, T * sample_rate, False) t = np.linspace(0, T, T * sample_rate, False)
  
-AhLa partie T * taux d'échantillonnage va retourner une valeur à virgule flottante ; j'ai donc essayé de la convertir en un nombre entier.+Ah La partie T * taux d'échantillonnage va retourner une valeur à virgule flottante ; j'ai donc essayé de la convertir en un nombre entier :
  
 t = np.linspace(0, T, int(T * sample_rate), False) t = np.linspace(0, T, int(T * sample_rate), False)
Ligne 190: Ligne 190:
 Lorsque j'ai relancé le programme, j'ai obtenu les trois tons que j'attendais depuis le début. Lorsque j'ai relancé le programme, j'ai obtenu les trois tons que j'attendais depuis le début.
  
-J'ai essayé d'autres exemples du site Web, dont l'un crée un objet de plus haute résolution, puis j'ai essayé d'ajouter plus de notes à l'ensemble du processus. L'idée était de créer toutes les notes de La4 à La5. J'ai modifié le fichier de base pour calculer les treize notes.+J'ai essayé d'autres exemples du site Web, dont l'un crée un objet de plus haute résolution, puis j'ai essayé d'ajouter plus de notes à l'ensemble du processus. L'idée était de créer toutes les notes de La4 à La5. J'ai modifié le fichier de base pour calculer les treize notes :
 <nowiki> <nowiki>
 # calculate the frequencies # calculate the frequencies
Ligne 231: Ligne 231:
     np.save(f, audio)**     np.save(f, audio)**
          
-Les touches noires sont des dièses ou des bémols, selon que vous montez ou descendez la gamme. Les clés sont donc+Les touches noires sont des dièses ou des bémols, selon que vous montez ou descendez la gamme. Les clés sont donc :
  
 Do, Do#, Ré, Ré#, Mi, Fa, Fa#, Sol, Sol#, La, La#, Si et retour au Do. Do, Do#, Ré, Ré#, Mi, Fa, Fa#, Sol, Sol#, La, La#, Si et retour au Do.
Ligne 243: Ligne 243:
 J'allais clore l'article ici, en notant que je n'avais pas essayé de sauvegarder les objets audio créés dans des fichiers, soit comme un fichier numpy qui peut être chargé plus tard, soit comme un fichier .wav qui éviterait le besoin d'importer numpy dans chaque programme que vous créez et utilisez cela, mais juste le paquet simpleaudio. Après avoir fait une petite pause, j'ai trouvé comment le faire, alors je vais vous révéler le secret. J'allais clore l'article ici, en notant que je n'avais pas essayé de sauvegarder les objets audio créés dans des fichiers, soit comme un fichier numpy qui peut être chargé plus tard, soit comme un fichier .wav qui éviterait le besoin d'importer numpy dans chaque programme que vous créez et utilisez cela, mais juste le paquet simpleaudio. Après avoir fait une petite pause, j'ai trouvé comment le faire, alors je vais vous révéler le secret.
  
-La solution pour sauvegarder l'objet audio dans un fichier est vraiment très simple. Au bas du fichier, il y a juste deux lignes. Dans le cas de tones4.py, ajoutez en bas du fichier les lignes suivantes.+La solution pour sauvegarder l'objet audio dans un fichier est vraiment très simple. Au bas du fichier, il y a juste deux lignes. Dans le cas de tones4.py, ajoutez en bas du fichier les lignes suivantes :
  
 # enregistrer l'objet audio dans un fichier local pour une utilisation future # enregistrer l'objet audio dans un fichier local pour une utilisation future
Ligne 272: Ligne 272:
 C'est tout. J'ai enregistré le programme sous le nom de tones4a.py . Le fichier qui a été généré peut être réutilisé dans un autre programme (en haut à droite). C'est tout. J'ai enregistré le programme sous le nom de tones4a.py . Le fichier qui a été généré peut être réutilisé dans un autre programme (en haut à droite).
  
-Cette solution, cependant, nécessite toujours d'avoir numpy comme dépendance dans le programme. Pour moi, la meilleure solution n'est pas seulement d'avoir le fichier numpy (pour une utilisation future) mais de sauvegarder l'objet audio dans un fichier .wav. Cela nécessite l'importation supplémentaire du paquet wave. Ajoutez-le en haut du programme test4, puis ajoutez le code suivant en bas+Cette solution, cependant, nécessite toujours d'avoir numpy comme dépendance dans le programme. Pour moi, la meilleure solution n'est pas seulement d'avoir le fichier numpy (pour une utilisation future) mais de sauvegarder l'objet audio dans un fichier .wav. Cela nécessite l'importation supplémentaire du paquet wave. Ajoutez-le en haut du programme test4, puis ajoutez le code suivant en bas :
 obj = wave.open("scale1.wav", "w") obj = wave.open("scale1.wav", "w")
 obj.setnchannels(1) obj.setnchannels(1)
Ligne 281: Ligne 280:
 obj.close() obj.close()
  
-Cela créera un fichier .wav (sans qu'il soit nécessaire de sauvegarder les données numpy si vous ne le souhaitez pas). Ensuite, pour le lire, tout ce dont vous avez besoin est ce petit bout de code.+Cela créera un fichier .wav (sans qu'il soit nécessaire de sauvegarder les données numpy si vous ne le souhaitez pas). Ensuite, pour le lire, tout ce dont vous avez besoin est ce petit bout de code :
  
 import simpleaudio as sa import simpleaudio as sa
issue190/python.1677588996.txt.gz · Dernière modification : 2023/02/28 13:56 de auntiee