IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Volume sonore très faible en Python


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Par défaut Volume sonore très faible en Python
    Bonjour,

    Je travaille avec Python3.3 sur windows vista.

    J'ai pour projet de programmer un audiomètre (pour tester l'audition), il jouera des sons purs au format ".wav".

    J'utilise Pygame pour jouer mes sons.

    L'audiomètre doit afficher le volume en dB HL (dB SPL pondéré) de -10 à 100.

    Le problème c'est que la valeur minimum de volume que je puisse donner à Pygame c'est 0.004, et à l'oreille on est loin du -10dB HL.

    Pygame n'est peut être pas adapté à ce que je veux faire.

    Auriez vous une idée pour jouer des sons à un volume très faible ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Citation Envoyé par AudioGBM Voir le message
    Le problème c'est que la valeur minimum de volume que je puisse donner à Pygame c'est 0.004, et à l'oreille on est loin du -10dB HL.
    Quel rapport entre ce 0.004 et -10dB HL ? Comment détermines-tu en dB la valeur 0.004 ?

    Ce programme est sensé piloter un appareil destiné à évaluer l'audition ?

    Dans l'affirmative, quid de ses caractéristiques ?

  3. #3
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Citation Envoyé par AudioGBM Voir le message
    Auriez vous une idée pour jouer des sons à un volume très faible ?
    Si tu ne peux pas descendre en dessous de ce que t'autorise la partie amplification de la carte son, tu peux jouer sur l'amplitude de tes sons purs en .wav... Pourquoi pas plusieurs .wav par son pur, mais avec des amplitudes différentes? Il faut juste être conscient que la qualité du son pur diminue si on descend l'amplitude car du coup le nombre de pas diminue.

    D'une façon plus générale, je pense qu'il faudra faire une calibration pour chaque poste où sera installé ton soft, car il faut pas s'attendre à ce que les caractéristiques de la sortie ligne soient identiques sur chaque carte son ou chaque PC.

    A+

    Pfeuh

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 28
    Par défaut
    Ce soft va piloter une carte son et servir à mesurer un seuil d'audition pour les fréquences suivantes : 250Hz,500,750,1kHz,2,3,4,6,8,10,12,16.

    Il devra pour voir émettre des sons à des niveaux sonores entre -10dB HL et 100 par pas de 5.

    Faire un fichier wav pour chaque niveau me semble donc un peu lourd.

    Le 0.004 est la valeur minimale accepté par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pygame.mixer.Sound.set_volume()
    Dans l'idéal j'aurais aimé que ça corresponde à -10dB HL au pire à 0, mais j'ai comparé à l'oreille avec des sons purs étalonnés ça correspond plutôt à un 40 dB HL (avec le potentiomètre de la carte son à fond).

    C'est une carte son externe USB Creative - Sound Blaster X-Fi. Evidemment si je diminue le volume au potentiomètre j'arrive à me rapprocher de ce que je veux, mais il faut que ça marche sans avoir besoin de toucher à la carte son.

    Peut être faut il que je crée un générateur de son pur pour pouvoir gérer l'amplitude comme je l'entend.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    C'est une carte son externe USB Creative - Sound Blaster X-Fi. Evidemment si je diminue le volume au potentiomètre j'arrive à me rapprocher de ce que je veux, mais il faut que ça marche sans avoir besoin de toucher à la carte son.
    Vous arrivez a traduire ce que vous cherchez a obtenir sur le matériel utilise: vous savez ce que vous voulez, et ça fonctionne. Le soucis est que vous souhaiteriez le mettre en œuvre de façon "programmatique".

    PyGame est une bonne bibliothèque: elle apporte une abstraction de niveau élevée des matériels en s'appuyant sur une librairie SDL qui réalise le standard SDL.
    Le constructeur de votre carte fournit probablement une API programmatique accessible "directement". SDL ne verra directement qu'une fraction de cette API, les gadgets spécifiques seront éventuellement accessibles via des "extensions".

    En tous cas, si vous vouliez réaliser cela en C, impossible sans trouver fonctions et mode opératoire (de l'API constructeur).
    Ce sera plus ou moins facile a coder. Mais s'assurer que ça existe et qu'on sait le faire fonctionner de façon "programmatique" sera incontournable pour savoir ou viser dans la couche SDL et espérer le mettre en œuvre depuis PyGame (ou a cote de.).

    Essayer de faire cela avec set_volume seul est une impasse.
    La fonction accepte un float entre 0 et 1. Il est utilise pour choisir un entier dans 0..128 qui est expédie a la couche SDL qui le rebalance au driver,...
    Impossible d'obtenir un pas plus fin que 1/128.

    C'est le code de la fonction C de PyGame dans src/mixer.c
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    static PyObject*
    snd_set_volume (PyObject* self, PyObject* args)
    {
        Mix_Chunk* chunk = PySound_AsChunk (self);
        float volume;
     
        if (!PyArg_ParseTuple (args, "f", &volume))
            return NULL;
     
        MIXER_INIT_CHECK ();
     
        Mix_VolumeChunk (chunk, (int)(volume*128));
        Py_RETURN_NONE;
    }


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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/04/2008, 18h53
  2. Réponses: 4
    Dernier message: 01/07/2007, 15h10
  3. controle volume sonore javascript
    Par Jérémy Lefevre dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/04/2007, 14h14
  4. savoir si "pas de connexion" ou "débit trés faible"
    Par devlopassion dans le forum Dépannage et Assistance
    Réponses: 3
    Dernier message: 25/09/2006, 12h29
  5. [Volume sonore] Comment séparer les volumes
    Par Manopower dans le forum Windows
    Réponses: 1
    Dernier message: 05/09/2005, 11h50

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