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 :

Projet ISN Python programme Piano Tkinter


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Projet ISN Python programme Piano Tkinter
    Bonjour à tous,
    Je suis en Terminale S et j'ai un projet BAC en ISN à rendre dans 1 mois...
    J'ai choisi de réaliser un programme qui permet de jouer du piano. Pour cela, je dois utiliser le module "tkinter" en Python 3.2.5.1 et je possède une liste de ressources, c'est à dire les sons de chaque touche ainsi que les images de celles-ci. Les touches jouées deviennent grises, et c'est en appuyant sur le clavier que les notes doivent se jouer. Le problème est que je n'avance pas, j'ai étudié le module tkinter mais je ne sais pas du tout comment commencer et faire le programme. Il y a bien un prof pour m'aider mais on ne le revoit pas avant un moment, et le timing risque d'être serré. C'est pourquoi je demande votre aide, en sachant que je ne suis pas un expert en programmation Merci d'avance pour vos réponses!!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 282
    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 282
    Points : 36 769
    Points
    36 769
    Par défaut
    Salut,

    Tk vous permettra de visualiser les touches du piano et de déclencher l'action "émettre un son" lorsque vous allez cliquer sur la touche.
    Pour commencer, il faudrait déjà avoir écrire une fonction émettre_son(touche).
    Puis côté "visualisation", ça pourrait être un Canvas, des touches représentées par des rectangles et des actions déclenchées via un .bind.

    A la base, produire des sons et visualiser les touches sont deux sujets complètement différents.
    Vous en êtes où? That is the question.

    Montrez du code si vous voulez qu'on se mette à votre niveau et que vous puissiez en profiter.

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Voilà ce que j'ai déjà fait :

    ####################
    from tkinter import*
    import winsound

    #Fonction affichage de toutes les touches
    def MakeWhite() :
    for w in range (10) :
    item=can1.create_image(50+63*w, 150, image =white)
    can1.pack()

    def MakeBlack() :
    for b in range (2) :
    item=can1.create_image(82+63*b, 95, image =black)
    can1.pack()
    for b in range (3) :
    item=can1.create_image(271+63*b, 95, image =black)
    can1.pack()
    for b in range (2) :
    item=can1.create_image(523+63*b, 95, image =black)
    can1.pack()

    # joue un son quand on clique dans la fenetre avec la souris
    def JouerSon(event) :
    #winsound.PlaySound("sounds\3b.wav", winsound.SND_FILENAME) !!! NE FONCTIONNE PAS : IL FAUT "/" ET PAS "\"
    winsound.PlaySound("sounds/3b.wav", winsound.SND_FILENAME)


    #Variable globale






    #Programme principal



    fen1=Tk()

    can1=Canvas(fen1, width =665, height =350, bg = 'beige')
    white=PhotoImage(file='images\white-key1.gif')
    black=PhotoImage(file='images\Black-key2.gif')

    MakeWhite()
    MakeBlack()

    # le clic de la souris dans la fenetre declenche l'execution de la fonction JouerSon
    can1.bind("<Button-1>", JouerSon)

    #winsound.PlaySound("sounds\3b.wav", winsound.SND_FILENAME)


    fen1.mainloop()
    #####################################

    Mais là je suis bloqué... Je ne sais comment faire pour associer, par exemple la touche 'q' à la première note. De plus, il faut que quand j'appuie sur 'q' la note do (je l'ai en ressource) soit joué et que la touche devienne grise (photo en ressource aussi).
    Si vous pouvez m'éclairer rapidement, ça serait super!
    Merci d'avance

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 282
    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 282
    Points : 36 769
    Points
    36 769
    Par défaut
    Salut,

    Ca commence comme çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> import tkinter as tk
    >>> def on_keypress(event):
    ...     print (event.keysym)
    ...
    >>> canvas = tk.Canvas()
    >>> canvas.pack()
    >>> canvas.bind('<Key>', on_keypress)
    '36100616on_keypress'
    >>> canvas.focus_set()
    >>> canvas.mainloop()
    Tapez sur le clavier et vous devriez voir s'afficher des "caractères".
    Pour le reste, à vous de jouer.

    Vous voyez comment j'ai posté mon code: la balise CODE (cherchez le #) rend cela plus lisible.

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

  5. #5
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Pour qu'un canevas réagisse lorsqu'on appuie sur une touche il faut faire (je prends un exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def la_dieze () :#pas d'argument, on utilise les variables globales si besoin
        #tes actions pour lire le fichier, avec le module pygame.mixer_sound par exemple
        #tes actions pour griser, j'en parle après
     
    #on considère que le canevas s'appelle can et la fenêtre fenetre
    can.bind('<space>',la_dieze)#j'ai mis space mais ça peut être bien d'autres choses, se documenter sur internet
    Pour ce qui est de griser les touches une fois jouées, je suggère de faire des fichiers image avec les touches une fois grisées (une touche noire et une blanche) et de mettre cette autre image par dessus, en réglant les coordonnées pour qu'elles correspondent à la touche d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #dans chaque fonction do, re...
    gris=can.create_image()#les arguments pour positionner l'image grise et l'image grise bien sûr
    fenetre.after(500, lambda : can.delete(gris))#le temps en ms où ça reste grisé
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

Discussions similaires

  1. [Python 3.X] Projet ISN Numpy et tkinter
    Par Louis63584 dans le forum Tkinter
    Réponses: 7
    Dernier message: 06/05/2015, 18h19
  2. [Question] Projet ISN - Tkinter ou pas ?
    Par Tom38211 dans le forum Tkinter
    Réponses: 3
    Dernier message: 21/12/2014, 20h44
  3. Projet ISN Planche de Galton Python/Pygame/Tkinter
    Par Mmemykon dans le forum Tkinter
    Réponses: 13
    Dernier message: 24/04/2014, 22h28
  4. projets isn debutant pb avec tkinter
    Par ssydjay dans le forum Général Python
    Réponses: 0
    Dernier message: 07/04/2014, 10h57
  5. Aide python mini projet ISN
    Par Trirouson dans le forum Général Python
    Réponses: 22
    Dernier message: 19/12/2013, 20h01

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