1
votes

Chargement et lecture de musique en python

Donc, j'essaye de jouer de la musique sur pygame et jusqu'à présent je peux charger et lire avec succès la musique sur le programme, mais je peux le faire sans variables et je ne sais pas comment le faire avec les variables impliquées.

p> J'ai déjà essayé de les stocker dans une variable et de les lire à partir de la variable.

Menumusic.play(-1, 0.0)
AttributeError: 'NoneType' object has no attribute 'play'

Je m'attends à ce que la musique joue mais à la place je reçois ceci en sortie:

Menumusic = pygame.mixer.music.load("MainMenu.mp3")
Menumusic.play(-1, 0.0)


0 commentaires

3 Réponses :


0
votes

Selon la documentation, vous devez appeler pygame.mixer.music.play () pour démarrer la lecture du flux de musique chargé.


0 commentaires

0
votes

Ce que vous entendez par jouer à partir d'une variable n'est pas très clair, mais il me semble que vous voulez changer la musique qui est jouée. Vous ne pouvez pas vous passer de votre variable Menumusic car elle contient toutes les fonctionnalités nécessaires à la lecture de la musique.

myvariablemp3 = "MainMenu.mp3"   # Change this to some way of varying the filename 
Menumusic = pygame.mixer.music.load(myvariablemp3)
Menumusic.play(-1, 0.0)


5 commentaires

Toutes mes excuses pour l'imprécision, mais oui, c'était la structure que j'ai également essayé d'utiliser, mais elle a simplement renvoyé "nonetype n'a pas de jeu d'attribut"


Je fais cela pour que plus tard dans le code, quand j'ai besoin de la musique pour arrêter de jouer, je pourrais simplement dire "Menumusic.stop ()" au lieu d'écrire "pygame.mixer.music ...."


Si vous avez AttributeError: l'objet 'NoneType' n'a pas d'attribut 'play' c'est parce que votre appel à pygame.mixer.music.load a échoué (problème avec le nom de fichier ou le chemin, peut-être?) et pas parce que ce que votre code faisait était faux. Si vous le faites correctement, il n'y a aucune différence entre appeler load avec une chaîne littérale et appeler load avec une variable qui contient une chaîne.


Mais il n'y a rien de mal avec le chemin ou le nom du fichier et je ne sais pas pourquoi cela se produit même


Je dis toujours que votre appel à pygame.mixer.music.load échoue, et donc quelque chose à propos de cet appel est erroné. Veuillez modifier votre question pour nous montrer (1) le code qui attribue le nom de fichier à une variable (2) l'appel que votre code fait à pygame.mixer.music.load avec cette variable et (3) le message d'erreur complet, y compris le traçage que vous obtenez lorsque votre code effectue l'appel. Pour le moment, votre question ne montre qu'une version expurgée du problème décrivant ce que vous pensez être faux, mais ne nous montrant pas exactement quoi, où et comment cela va mal.



0
votes

Généralement, pour contenir un son dans une variable, le code doit utiliser pygame.mixer.Sound () pour charger le fichier.

Par exemple:

drum_beat = pygame.mixer.Sound("bass_drum.wav")
...
pygame.mixer.Sound.play( drum_beat )

Plus tard dans le code, le son préchargé peut être joué en passant le résultat de cet appel .Sound (...) (dans ce cas drum_beat ) à pygame.mixer.Sound.play().

drum_beat = pygame.mixer.Sound("bass_drum.wav")


0 commentaires