Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Pygame : Charger un banque de sons


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Membre expert

    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2006
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : janvier 2006
    Messages : 1 326
    Points : 3 252
    Points
    3 252
    Par défaut Pygame : Charger un banque de sons
    Bonjour,

    Je souhaite charger dans un tableau, plusieurs effets sonors (Objet Sound de PyGame). Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    samples = []
    def loadSamples_event(_sampleFiles):
        pygame.mixer.stop();
        _sampleFiles = _sampleFiles.split(',') <-- Je transforme le JSON passé en argument, en objet de type tableau
        samples = [];
     
        for file in _sampleFiles:
    # Nettoyage de nom de fichier
           file = file.replace('[', '')
           file = file.replace(']', '')
           file = file.replace('"', '')
           try:
               sound = pygame.mixer.Sound(file) <-- me retourne une exception "fichier introuvable"
               samples.append(sound)
           except:
               print("Sample file " + file + " not open.")
    Je passe en argument de cette méthode un chaine JSON (provenant d'un JSON.stringify), que je transforme en un tableau de string (noms des fichiers à charger). Mais mes fichiers sont introuvables, alors qu'après vérification, ma variable "file" est bien renseignée et mes chemins d'accès sont correctement indiqués.

    Avez-vous une idée du problème ? Merci.
    "La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 484
    Points : 24 504
    Points
    24 504
    Par défaut
    Salut,

    Un nom de fichier est soit absolu (et il devrait être trouvé) soit relatif au répertoire de travail (et on peut se tromper).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre expert

    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2006
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : janvier 2006
    Messages : 1 326
    Points : 3 252
    Points
    3 252
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Un nom de fichier est soit absolu (et il devrait être trouvé) soit relatif au répertoire de travail (et on peut se tromper).

    - W
    Pour le coup, mes chemins de fichiers sont absolus.

    Voilà la chaine JSON que je passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ["/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Achievement_00.wav","/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Achievement_01.wav","/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Lose_00.wav"]
    Et je récupère bien chaque chemin de fichier dans ma variable "file" ('/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Achievement_00.wav' par exemple). Et les chemins sont corrects. Alors je ne comprend pas pourquoi PyGame ne les trouve pas...
    "La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"

  4. #4
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 484
    Points : 24 504
    Points
    24 504
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Et les chemins sont corrects. Alors je ne comprend pas pourquoi PyGame ne les trouve pas...
    PyGame retourne une exception que vous ne prenez pas la peine de visualiser pour conclure qu'il ne trouve pas le fichier.

    Admettons que pygame ne le trouve pas, un simple open ne devrait pas le trouver non plus. Si tel est le cas, impossible de vérifier à votre place que le chemin correspond bien a un nom de fichier i.e. de vérifier que "les chemins sont corrects".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre expert

    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2006
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : janvier 2006
    Messages : 1 326
    Points : 3 252
    Points
    3 252
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    PyGame retourne une exception que vous ne prenez pas la peine de visualiser pour conclure qu'il ne trouve pas le fichier.
    Avant de mettre "try ... except";, j'avais bien vu le contenu de l'exception PyGame.voilà à ce qu'elle est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ["/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Achievement_00.wav","/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Achievement_01.wav","/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Lose_00.wav"]
    /home/pi/Documents/mes_projets/interface/media/wav/Jingle_Achievement_00.wav
    ERROR:websockets.server:Error in connection handler
    Traceback (most recent call last):
      File "/home/pi/.local/lib/python3.7/site-packages/websockets/server.py", line 195, in handler
        await self.ws_handler(self, path)
      File "/home/pi/Documents/mes_projets/interface/python/server.py", line 446, in counter
        await loadSamples_event(data["sampleFiles"], data["callback"])
      File "/home/pi/Documents/mes_projets/interface/python/server.py", line 327, in loadSamples_event
        sound = pygame.mixer.Sound(file)
    pygame.error: Unable to open file '/home/pi/Documents/mes_projets/interface/media/wav/Jingle_Achievement_00.wav'
    "La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"

  6. #6
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 484
    Points : 24 504
    Points
    24 504
    Par défaut
    Salut,

    Vous ne dites rien concernant le retour d'un simple "open".
    En supposant qu'il fonctionne, cherchez un peu sur Internet ce qui remonte avec le message d'erreur "pygame.error: Unable to open file" ou ouvrez la documentation de pygame.mixer pour voir si vous n'avez rien oublié.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre expert

    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2006
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : janvier 2006
    Messages : 1 326
    Points : 3 252
    Points
    3 252
    Par défaut
    Trouvé ! Sous Python 3, il faut encoder les chaines de caractères des chemins d'accès pour PyGame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sound = pygame.mixer.Sound(file.encode())
    "La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Charger en mémoire un son
    Par leblanc.philippe dans le forum Java ME
    Réponses: 5
    Dernier message: 10/03/2008, 01h12
  2. [Général] Quel langage pour une banque de son?
    Par freedom4seagulls dans le forum Windows
    Réponses: 4
    Dernier message: 22/11/2006, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo