Jeu Simon

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
P
PCl51
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 4 mars 2015
Version d'Excel : 2010

Message par PCl51 » 21 décembre 2018, 00:06

Bonjour,

Je voudrais m'inspirer du jeu Simon pour des cours musicaux. Il s'agit d'appuyer sur une touche pour obtenir un son. L'adversaire appuie sur la même touche pour montrer qu'il a retenue la série puis appuie sur une autre touche, etc. Je voudrais donc savoir s'il y a moyenne d'utiliser un command bouton pour obtenir un son quasi tout de suite parce que s'il faut attendre qu'un son se charge à chaque fois…


Si j'ai la solution pour un je pense que j'arrricerai à m'en sortir pour combiner le reste donc merci d'avance.
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 6'052
Appréciations reçues : 352
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 21 décembre 2018, 01:39

Bonjour,

Voici un exemple pour jouer les notes,
 Private Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long
 Private Declare Function midiOutOpen Lib "winmm.dll" (lphMidiOut As Long, ByVal uDeviceID As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
 Private Declare Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long
 Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)
 Dim hMidiOut As Long
 Public lanote As Integer
 Public Const durée As Integer = 250 ' millisecondes'
 
 Sub Au_clair_de_la_lune()
  Numéro = 0
  notes_a_jouer = Array(51, 51, 51, 53, 55, 53, 51, 55, 53, 53, 51, _
  51, 51, 51, 53, 55, 53, 51, 55, 53, 53, 51, _
  53, 53, 53, 53, 48, 48, 53, 51, 50, 48, 46, _
  51, 51, 51, 53, 55, 53, 51, 55, 53, 53, 51)
 
  For Each noteG In notes_a_jouer
      Numéro = Numéro + 1
      dur_n = Array(600, 600, 600, 600, 600, 600, 300, 300, 300, 300, 600, _
      300, 300, 300, 300, 600, 600, 300, 300, 300, 300, 600, _
      300, 300, 300, 300, 600, 600, 300, 300, 300, 300, 600, _
      300, 300, 300, 300, 600, 600, 300, 300, 300, 300, 600)
      
      Temps = dur_n(Numéro - 1)
      
      On Error GoTo fin
      midiOutClose hMidiOut '------------- ferme le port midi pour arreter la note précédente
      midiOutOpen hMidiOut, 0, 0, 0, 0 ' ----------------ouvre le port pour la nouvelle note
      midiOutShortMsg hMidiOut, RGB(192, 54 - 1, 127) 'ici, le nombre 51 peut être changé
      
     'par un nombre de 1 à 128
      lanote = 12 + CInt(noteG) ' -----on calcule la note / l'octave
      note = RGB(144, lanote, 127) '-----------------------astuce pour generer un entier long
      midiOutShortMsg hMidiOut, note ' --------------------on envoie la note sur le port MIDI
     Sleep (Temps)
fin:
     midiOutClose hMidiOut
   Next
  midiOutClose hMidiOut
End Sub
Modifié en dernier par i20100 le 21 décembre 2018, 04:11, modifié 1 fois.
Prenons soins de nous et de notre vaisseau spatial, nous n’en n’avons qu’un ...notre planète terre
isabelle
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'898
Appréciations reçues : 694
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 21 décembre 2018, 03:53

Salut Isabelle,

il m'a l'air vraiment très bien, ton code VBA !  :sp:  peux-tu préciser si ça marche sur tous les PC, quelle que soit la marque et le modèle de la carte son ? et ça marche aussi si au lieu de la carte son, c'est une puce son intégrée à la carte mère ?

si les instructions d'interface MIDI sont suffisamment standard pour être comprises par tout matériel, je crois que ça devrait passer.  ;;)

dhany
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 6'052
Appréciations reçues : 352
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 21 décembre 2018, 04:10

Salut dhany,

je peux juste dire que ça fonctionne sur pc de xl2002 à xl2010, et peut être plus si tu exécute la macro et tu me dit si ça fonctionne ? :wink:
Prenons soins de nous et de notre vaisseau spatial, nous n’en n’avons qu’un ...notre planète terre
isabelle
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'898
Appréciations reçues : 694
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 21 décembre 2018, 04:19

si, ça marche bien : j'entends la musique de « Au clair de la lune » ; j'me rappelle même plus si mon PC a une carte son ou non, et j'veux pas ouvrir le boîtier d'la tour pour vérifier ; comme le son est un peu faible, c'est p't'être plutôt une puce son intégrée à la carte mère.

merci quand même pour la jolie mélodie !  :)  ça f'ra pas un disque d'or, mais c'est quand même pas mal !  :P ;;)

dhany
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 6'052
Appréciations reçues : 352
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 21 décembre 2018, 05:42

re,
c'est p't'être plutôt une puce son intégrée à la carte mère.
j'saurais pas dire si ça fonctionne via une puce ou autre,
c'est trop loin pour que je m'en souvienne (2002), désolé pour l’auteur, peut être L.L. ou Sabatier à cette époque.
tirer de mes archives:
Music-Au clair de la lune.xls
(48.5 Kio) Téléchargé 18 fois
Prenons soins de nous et de notre vaisseau spatial, nous n’en n’avons qu’un ...notre planète terre
isabelle
P
PCl51
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 4 mars 2015
Version d'Excel : 2010

Message par PCl51 » 21 décembre 2018, 12:10

Merci je vais voir ce que je peux tirer de ça mais ça me parait compliqué pour un débutant comme moi. En fait tout ce que ej voulais c'est cliquer sur un command bouton pour avoir juste un do par exemple. (je suis sur Excel 2010).
Répondre