Différences
Ci-dessous, les différences entre deux révisions de la page.
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... | ||