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édentes Révision précédente
openatelier:projet:sampler_puredata_pour_raspberry_pi_sans_ecran [2025/09/02 12:23]
cyril [Ajout d'une carte Audio Amp Shim]
openatelier:projet:sampler_puredata_pour_raspberry_pi_sans_ecran [2025/09/02 12:45] (Version actuelle)
cyril [En Python avec des boutons physiques de récupération]
Ligne 90: Ligne 90:
  
 while True:                                                        #initialise une boucle "​while"​ (conditionnelle) while True:                                                        #initialise une boucle "​while"​ (conditionnelle)
-    ChasetheDevil.when_pressed = chase                             #​lorsque le boutton ​auquel est assigné ChasetheDevil est pressé, cela lance la fonction "​c>​ +    ChasetheDevil.when_pressed = chase                             #​lorsque le bouton ​auquel est assigné ChasetheDevil est pressé, cela lance la fonction "​c>​ 
-    President.when_pressed = pres                                  #lorsque le boutton ​auquel est assigné President est pressé, cela lance la fonction "​pres"​+    President.when_pressed = pres                                  #lorsque le bouton ​auquel est assigné President est pressé, cela lance la fonction "​pres"​
  
 pause() ​                                                           #mets le script en pause, il attend donc une nouvelle instruction en permanence pause() ​                                                           #mets le script en pause, il attend donc une nouvelle instruction en permanence
 </​code>​ </​code>​
 +
 +Puisque notre sortie sera en mono, nous pouvons avoir cette ligne configuration dans le script python:
 +
 +<code python>​mixer.pre_init(44100,​-16,​ 1, 127)
 +mixer.init() </​code>​
 +Où les paramètres sont (fréquence d’échantillonnage,​ la taille, le nombre de canaux de sortie, la taille du buffer). Dans notre cas, on place la fréquence d’échantillonnage à 44100 Hz, ce qui est de qualité CD, on demande un seul canal de sortie, ce qui fera moins de calculs, un a une taille de buffer assez petite, le tout fait que la latence est assez réduite et permette de pouvoir éventuellement jouer avec les samples.
 +
 +Notre nouveau script Python est donc le suivant:
 +
 +<code python>
 +#Always comment your code like a violent psychopath will be maintaining it and they know where you live  ;)
 +
 +from pygame import mixer                                                    #importe la classe Mixer depuis le module "​pygame"​ pour gérer les fichiers son
 +from gpiozero import Button ​                                                #​importe que l'​élément "​Button"​depuis la bibliothèque GPIOzero
 +
 +RadioVaxmonedeu = Button(5)
 +RadioWaxmonde01 = Button(7)
 +Waxmonde10 = Button(13) ​                                        #​désigne la broche GPIO 13, l'​active et lui donne un nom     
 +WaxmondeRalenti = Button(15) ​                                                          #​désigne la broche GPIO 21, l'​active et lui donne un nom
 +
 +mixer.pre_init(44100,​-16,​ 1, 127)
 +mixer.init() ​                                                               #créé une instance de la classe "​mixer"​ de la bibliothèque "​Pygame"​
 +
 +def radiovaxmonedeu(): ​                                                                #​déclare une fonction pour gérer l'​arrêt du morceau en cours, son volu>
 +    mixer.music.stop() ​                                                     #stoppe le fichier actuellement en lecture
 +    mixer.music.set_volume(1.0) ​                                            #​règle le volume ​
 +    mixer.music.load('/​home/​waxmonde/​samples/​radio_vaxmonedeu_01.wav'​) ​               #charge le fichier son en indiquant le chemin entier pour pouvoir démar>
 +    mixer.music.play()
 +
 +def radiowaxmonde01(): ​                                                                #​déclare une fonction pour gérer l'​arrêt du morceau en cours, son volu>
 +    mixer.music.stop() ​                                                     #stoppe le fichier actuellement en lecture
 +    mixer.music.set_volume(1.0) ​                                            #​règle le volume ​
 +    mixer.music.load('/​home/​waxmonde/​samples/​radio_waxmonde_01.wav'​) ​               #charge le fichier son en indiquant le chemin entier pour pouvoir démarre>​
 +    mixer.music.play() ​                                                     #répare ta gazinière
 +    ​
 +
 +def waxmonde10(): ​                                                               #déclare une fonction pour gérer l'​arrêt du morceau en cours, son volume, so>
 +    mixer.music.stop() ​                                                     #stoppe le fichier actuellement en lecture
 +    mixer.music.set_volume(1.0) ​                                            #​règle le volume ​
 +    mixer.music.load('/​home/​waxmonde/​samples/​waxmonde_10.wav'​) ​  #​charge le fichier son en indiquant le chemin entier pour pouvoir démarrer le script depuis >
 +    mixer.music.play() ​                                                     #trouve les bons numéros du loto de hier
 +
 +def waxmonderalenti(): ​                                                                #​déclare une fonction pour gérer l'​arrêt du morceau en cours, son volu>
 +    mixer.music.stop() ​                                                     #stoppe le fichier actuellement en lecture
 +    mixer.music.set_volume(1.0) ​                                            #​règle le volume ​
 +    mixer.music.load('/​home/​waxmonde/​samples/​waxmonde_ralenti.wav'​) ​               #charge le fichier son en indiquant le chemin entier pour pouvoir démarrer>​
 +    mixer.music.play() ​                                                     #répare ta gazinière
 +    ​
 +
 +while True:                                                                 #​initialise une boucle "​while"​ (conditionnelle)
 +    RadioVaxmonedeu.when_pressed = radiovaxmonedeu ​                                     #lorsque le boutton auquel est assigné ChasetheDevil est pressé, cela>
 +    RadioWaxmonde01.when_pressed = radiowaxmonde01 ​                                         #lorsque le boutton auquel est assigné President est pressé, cela>
 +    Waxmonde10.when_pressed = waxmonde10
 +    WaxmondeRalenti.when_pressed = waxmonderalenti
 +
 +pause()</​code>​
 +
 +
 +Il y a certainement possibilité de simplifier le script avec un système de dictionnaire ou autre.
  
 Prochaine étape: faire en sorte que ce script se lance automatiquement au démarrage du Raspberry Pi! Prochaine étape: faire en sorte que ce script se lance automatiquement au démarrage du Raspberry Pi!
  • openatelier/projet/sampler_puredata_pour_raspberry_pi_sans_ecran.1756808581.txt.gz
  • Dernière modification: 2025/09/02 12:23
  • par cyril