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 :

acoustique, musique sur Python


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut acoustique, musique sur Python
    Bonjour
    Je suis débutant sur Python, et j'aimerais faire un programme qui permet de faire sonner une note pour un certain temps donné, en précisant simplement la fonction f(x) avec x : le temps et f(x) la hauteur du son.

    Eventuellement existe il un autre langage de programmation où je puisse le faire ?
    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 76
    Points : 48
    Points
    48
    Par défaut
    Salut,

    je ne peux pas t'aider pour les sons mais à la lecture de ton post, 2 réponses déjà sur ce que tu as écrit.

    J'imagine que tu peux faire ce que tu demandes avec Python ou avec un autre langage de programmation (ex: Java, C++, PEUT ETRE Php).
    maintenant faut voir les langages de programmation capables d'integrer la fréquence d'un son, un plus expérimenté que moi viendra te dire.

    Ensuite, à la lecture de ton message, tu devrais revoir les fonctions
    ta fonction c'est f
    ton parametre temps, c'est x
    dc avec f(x), tu ne pourras que parametrer le temps
    Il te faut rajouter un parametre pour la fréquence de ton son. Dc ta fonction sera de type: f(x, y)

    En pseudo code ça donne:
    f(temps, hertz)
    pendant temps
    joue son.hertz

    et tu appelles ta methode (fonction)
    objet.f(30, 2000)
    ou: 30= 30 secondes (ou millisecondes ou autre)
    2000= 2000 hertz

    Il serait sans doute interessant d'ajouter un 3° parametre: le son en lui même.

    Voilà réponse d'un newbie qui apprend comme toi mais pas le son. d'autres viendront compléter, confirmer ou infirmer ce que j'ecris.

    a+
    areuh
    longue vie aux forums

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Tout dépend en fait du timbre que tu veux donner à ton son
    Le plus simple est une onde sinusoïdale (quand on décroche le téléphone par exemple)

    Une formule pour la générer est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f(t) = sin(2*pi*freq*t)
    Après si tu veux un timbre particulier c'est beaucoup plus compliqué, il faudrait que tu te lances dans la recherche

    Après à partir de ça, je te conseille d'utiliser numarray ou NumPy, tu obtiendras un fichier audio "brut", que tu peux enregistrer au format wav avec le module wave, ou le jouer avec une librairie appropriée

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,
    Citation Envoyé par Papou_28
    Bonjour
    Je suis débutant sur Python, et j'aimerais faire un programme qui permet de faire sonner une note pour un certain temps donné, en précisant simplement la fonction f(x) avec x : le temps et f(x) la hauteur du son.

    Eventuellement existe il un autre langage de programmation où je puisse le faire ?
    Merci d'avance
    Hi, c'est drôle, c'est la description exacte du premier Basic Microsoft qui tournait sur les ordinateurs MXS de ... 1983? 1984?
    play $nom_de_chaine
    Dans la chaine il y avait la description de la suite de notes à jouer, avec justement la frequence et la hauteur... Mais c'était déjà plus évolué puisqu'on ne donnait pas la fréquence mais le nom de la note! Et c'était sous interruption, la Rolls à l'époque. Un basic qui tenait sur 16k, de mémoire... Depuis il leur faut 1 giga pour faire tourner rien que le SE, mais bon, appelons ça l'évolution...

    Pour ton problème, un moyen simple est de créer un thread, qui allume une note midi (standard sur toutes les cartes son), s'endort par un sleep pour la durée de la note, se reveille pour éteindre la note et allumer la suivante, etc... Pour gérer le midi, il y a un module python tout fait, que je ne connais pas encore, mais je vais suivre cette discussion avec intérêt!

    A+

    Pfeuh

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Pour Pfeuh :
    en fait J'ai déjà fait un programme en GW-Basic; qui permettait de faire une sortir un son en utilisant la fonction Sound(Fréquence,temps). Avantage facilité d'utilisation. Inconvéniant : A l'époque pas de carte son, donc je ne pouvais que créer un son carré ou sinusoiudale. En fait Avec le langage Python j'aimerais approfondir : pouvoir en effet sortir un son sinusidale, carré triangle etc.. voire même un son à partir d'une fonction pérodique. (Une belle application des fonctions de Fourriers).

    Pour oiffrig :
    J'ai déjà téléchargé NumPy. Cependant je n'arrive pas à télécharger Wave.
    Si J'ai bien compris, Je génère une fonction pérodique à l'aide de NumPy puis je la sauvegarde à l'aide de Wave. Puis je la lis aussi à l'aide d'un autre module Python.
    Je trouve ça interressant, cependant, j'ai peur que tout ceci soit lent(il y a pas mal de manipulation):
    Création de la fonction -----> sauvegarde du fichier à l'aide de la fonction en Wave -----> lecture du fichier.

    Pour areuh_fr :
    Ma fonction f n'est pas une fonction au sens de Python, mais une fonction au sens mathématique.
    En fait je recherche une fonction au sens de Pyhton F qui permet de transformer une fonction f périodique en son : F(f,temps)

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    En effet c'est lent, Pour du temps réel je n'ai pas d'idée, vu que je ne fais que des recherches donc un temps de "compilation" ne me dérange pas
    Je crois qu'une recherche s'impose, je ne connais pas de module pour faire du temps réel

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    J'ai cherché des modules pythons au sujet du son.
    Voilà le résultat de ma recherche :

    -pygame
    - pymédia
    -Et Snack tool kit

    j'ai un peu étudié snack tool kit c'est un module assez intérresant puisque il est possible de sortir un son carré; triangulaire; etc ... et choisir sa fréquence.

    Cependant je n'ai toujours pas trouvé le moyen de générer un son à partir d'une fonction car en fait je n'ai que 5 possibiltés de son : triangle carré,etc ...

  8. #8
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    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 : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Le module python pymedia est fait pour toi. Je l'ai utilisé pour enregistrer en mp3 "à la volée". Il gère aussi les waves (et quelques autres formats exotiques). A mon avis, il pourra très bien jouer une forme d'onde que tu auras calculée et transformée en wave (les specs se trouvent facilement avec google).

    A+

    Pfeuh

Discussions similaires

  1. [Audio] Mettre de la musique sur son appli possible ? simple ?
    Par Baptiste Wicht dans le forum Multimédia
    Réponses: 23
    Dernier message: 04/08/2008, 13h56
  2. Musique sur un prog en OpenGL
    Par Gonath dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 18/04/2006, 09h45
  3. [HTML] Comment faire pour mettre de la musique sur un site
    Par Gray Man dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/12/2005, 19h13
  4. [Audio] Comment lire les musiques sur un cd audio ?
    Par onlytoine dans le forum Multimédia
    Réponses: 3
    Dernier message: 10/07/2004, 23h03

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