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
Prochaine révision
Révision précédente
openatelier:projet:sampler_puredata_pour_raspberry_pi_sans_ecran [2025/09/02 12:22]
cyril [Lancement automatique du script python au démarrage du Raspberry Pi]
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!
Ligne 254: Ligne 313:
 }</​code>​ }</​code>​
    
-Il n'y aura eu qu'à changer "​hw:​1,​0"​ par: "​hw:​0,​0"​ et c'est tout!+Il n'y aura eu qu'à changer "​hw:​1,​0"​ par: "​hw:​0,​0"​ et c'est tout! Et on sauvegarde le fichier, comme de bien entendu.
  
 On reboot le raspberry pi pour que la modification du fichier soit prise en compte et cela fonctionne. On s'​habitue doucement au succès... On reboot le raspberry pi pour que la modification du fichier soit prise en compte et cela fonctionne. On s'​habitue doucement au succès...
  
  • openatelier/projet/sampler_puredata_pour_raspberry_pi_sans_ecran.1756808530.txt.gz
  • Dernière modification: 2025/09/02 12:22
  • par cyril