[..] Piano

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
leoleolth
Niveau 4
Niveau 4
Messages : 68
Enregistré le : dim. 26 mai 2013 21:31
Status : Hors ligne

[..] Piano

#1

Message par leoleolth »

Bonjour,
Je souhaite créer un piano grâce aux touches l'ordinateur.
Je sais que des scripts existent déjà à ce propos.
J'aimerais que le beep soit joué lorsque l'on appuie sur une touche et qu'il s'arrete quand on le relâche.

Code : Tout sélectionner

#include <Misc.au3>

Local $hDLL = DllOpen("user32.dll")

HotKeySet("{ESC}", "echap")

While 1
   If _IsPressed("41", $hDLL) Then 
      While _IsPressed("41", $hDLL)
         Beep(523, 150)
      WEnd
   EndIF
   If _IsPressed("5A", $hDLL) Then 
      While _IsPressed("5A", $hDLL)
         Beep(587, 150)
      WEnd
   EndIF
   If _IsPressed("45", $hDLL) Then 
      While _IsPressed("45", $hDLL)
         Beep(659, 150)
      WEnd
   EndIF
WEnd

Func echap()
   Exit
EndFunc
 
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Piano

#2

Message par mikell »

La question est très intéressante, quoique pour ce que tu cherches il vaut mieux utiliser _Soundplay() ou les fonctions Midi de winmm.dll
En effet Beep est une fonction de bas niveau qui demande une durée initiale en paramètre pour s'exécuter et qui est bloquante
Donc avec une durée courte tu auras une suite de beeps en pointillé (pas top)
Avec une durée longue (pour avoir un beep continu) le seul moyen d'interrompre par exemple un "Beep(523, 4000)" c'est de lancer avec un autre thread un "Beep(..., 1)" , ça marche mais la fonction de départ va continuer à bloquer silencieusement tant que sa durée ne sera pas écoulée ce qui rend le concept à peu près inutilisable dans un script...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
leoleolth
Niveau 4
Niveau 4
Messages : 68
Enregistré le : dim. 26 mai 2013 21:31
Status : Hors ligne

Re: [..] Piano

#3

Message par leoleolth »

Merci pour votre réponse rapide.
Comment dois-je utiliser les fonctions midi de wimm.dll ?
Répondre