FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Fonction Beep de kernel32.dll Emptypar papydall Hier à 16:57

» PANORAMIC V 1
Fonction Beep de kernel32.dll Emptypar papydall Hier à 3:22

» select intégrés [résolu]
Fonction Beep de kernel32.dll Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Fonction Beep de kernel32.dll Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Fonction Beep de kernel32.dll Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Fonction Beep de kernel32.dll Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Fonction Beep de kernel32.dll Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Fonction Beep de kernel32.dll Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Fonction Beep de kernel32.dll Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Fonction Beep de kernel32.dll Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Fonction Beep de kernel32.dll Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Fonction Beep de kernel32.dll Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Fonction Beep de kernel32.dll Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Fonction Beep de kernel32.dll Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Fonction Beep de kernel32.dll Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

 

 Fonction Beep de kernel32.dll

Aller en bas 
5 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Fonction Beep de kernel32.dll Empty
MessageSujet: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 2:26

Salut tout le monde.

La commande BEEP de Panoramic émet un son bref.
Seulement, chez moi (sous XP)  je n’obtiens  aucun  son avec cette commande.

La kernel32.dll possède une fonction Beep qui requiert deux paramètres : fréquence (en Hertz) et durée (en millisecondes).
En jouant sur ces deux paramètres, on peut obtenir des sons intéressants.
A vos marques, prêts, partez !  
N’oubliez pas de régler vos haut-parleurs !



Code:
dim frequence,duree,ret
hide 0 : dll_on "kernel32.dll"
duree = 50
' Gérérer un son sur le haut-parleur du PC
' Paramètres : frequence en hertz; duree en millisecondes
for frequence = 100 to 10000 step 100
    ret = dll_call2("Beep",frequence,duree)
    ret = dll_call2("Beep",frequence/100,duree*2)
    ret = dll_call2("Beep",frequence/20,duree*1.5)
next frequence
dll_off
message "Terminé"
terminate
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 7:25

En effet, c'est simple à utiliser et efficace Smile
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 7:59

Bonjour Papydall  Smile 
Cette fonction est intéressante, je l'avais déjà remarqué, mais je ne l'avais pas encore exploité.
Donc, on peut en tirer une utilisation toute simple, un diapason ou accordeur pour un musicien. Juste donner le "LA" à 440 hz ce qui permet d'accorder la plus grande partie des instruments de musique, bien que certains instruments peuvent s'accorder à 442 hz ou autre valeur... Là, seul le musicien professionnel peut faire la différence à l'oreille.
Code:
' ACCORDEUR
print "un click ou une touche pour arrêter le programme"
dim res%
dll_on "kernel32.dll"
repeat
   res%=dll_call2("Beep",440,1000)
until scancode<>0
dll_off
terminate
A+  Wink Wink Wink
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 8:29

Dans ce programme, nous avons presque toutes les fréquences audibles des infra son aux ultra sons, mais le problème c'est que panoramic n'accepte que des valeurs entières dans les dll, et c'est bien dommage, mais qu'importe, vous ne ferez certainement pas la différence à l'oreille.
Les notes de musique sont en notation américaine: A pour LA, B pour SI, C pour DO, D pour RÉ, E pour MI, F pour FA et G pour SOL. À cela s'ajoute des "b" pour bémol et "#" pour dièse, et les numéros indiquent l'octave dans lequel la note est jouée.
Code:
data "C0",32.70,"Db0",34.65,"D0",36.71,"Eb0",38.89,"E0",41.20,"F0",43.65,"F#0",46.25,"G0",49.00,"G#0",51.91,"A0",55.00,"Bb0",58.27,"B0",61.74
data "C1",65.41,"Db1",69.30,"D1",73.42,"Eb1",77.78,"E1",82.41,"F1",87.31,"F#1",92.50,"G1",98.00,"G#1",103.83,"A1",110.00,"Bb1",116.54,"B1",123.47
data "C2",130.81,"Db2",138.59,"D2",146.83,"Eb2",155.56,"E2",164.81,"F2",174.61,"F#2",185.00,"G2",196.00,"G#2",207.65,"A2",220.00,"Bb2",233.08,"B2",246.94
data "C3",261.63,"Db3",277.18,"D3",293.66,"Eb3",311.13,"E3",329.63,"F3",349.23,"F#3",369.99,"G3",392.00,"G#3",415.30,"A3",440.00,"Bb3",466.16,"B3",493.88
data "C4",523.25,"Db4",554.37,"D4",587.33,"Eb4",622.25,"E4",659.26,"F4",698.46,"F#4",739.99,"G4",783.99,"G#4",830.61,"A4",880.00,"Bb4",932.33,"B4",987.77
data "C5",1046.50,"Db5",1108.73,"D5",1174.66,"Eb5",1244.51,"E5",1318.51,"F5",1396.91,"F#5",1479.98,"G5",1567.98,"G#5",1661.22,"A5",1760.00,"Bb5",1864.66,"B5",1975.53
data "C6",2093.00,"Db6",2217.46,"D6",2349.32,"Eb6",2489.02,"E6",2637.02,"F6",2793.83,"F#6",2959.96,"G6",3135.96,"G#6",3322.44,"A6",3520.00,"Bb6",3729.31,"B6",3951.07
data "C7",4186.01,"Db7",4434.92,"D7",4698.64,"Eb7",4978.03,"E7",5274.04,"F7",5587.65,"F#7",5919.91,"G7",6271.93,"G#7",6644.88,"A7",7040.00,"Bb7",7458.62,"B7",7902.13

label joue,fin
dim a,b,n$,freq(96),res%,note%

dll_on "kernel32.dll"

on_close 0,fin

restore
for a=0 to 84 step 12
   for b=1 to 12
      read n$
      read freq(a+b)
      button a+b
      caption a+b,n$
      width a+b,30
      top a+b,2*a
      left a+b,(30*b)+50
      on_click (a+b),joue
   next b
next a

end

joue:
   note%=freq(number_click)
   res%=dll_call2("Beep",note%,1000)
return

fin:
dll_off
terminate
A+  Wink Wink Wink
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 8:57

bignono a écrit:
panoramic n'accepte que des valeurs entières dans les dll

On peut passer l'adresse d'une variable entière ou chaîne de caractères, mais il faut que la fonction de la DLL ait été programmée pour recevoir une telle adresse. Avec les DLL que l'on écrit soi-même cela ne pose pas de problème. Avec les DLL préprogrammées, comme celles de Windows, c'est une autre affaire. Il faudrait voir les déclarations des fonctions. Je n'ai pas vérifié.

Donc, comme l'a déjà fait remarquer Klaus, il faudra presque toujours faire une DLL intermédiaire pour assurer la compatibilité entre les types de variables et les modes d'appel de Panoramic et ceux de la DLL (ou bibliothèque statique) que l'on veut exploiter.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 9:50

En l'occurence, la DLL intermédiaire pourrait directement gérer les notes données par bignono et on pourrait avoir 2 appels, soit avec la fréquence et la durée, soit avec la note et la durée.
Voir si on utilise le principe que Klaus avait utilisé si je me souvient bien, régler le volume de la note (pas sûr, mais il me semble que Klaus l'avait fait)
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 15:52

Salut tout le monde.

Je continue à m’amuser avec les DLLs.
Cette fois-ci, j’expérimente la fonction Ellipse de gdi32.dll qui (comme son nom l’indique) dessine une ellipse (éventuellement un cercle).

Code:
rem Fonction Ellipse de gdi32.dll pour dessiner une ellipse (et accessoirement un cercle)
dim hDC,x1,y1,x2,y2, ret
hDC = handle_canvas(0) : ' Handle_canvas de la FORM sur laquelle on dessine
' On définit un rectangle dans lequel sera placé l'ellipse
' Pour dessiner un cercle, il faut donc faire un carré
x1 = 10 : y1 = 100  : ' Coordonnées du point haut/gauche du rectangle
x2 = 300 : y2 = 200 : ' Coordonnées du point bas/droit du rectangle
dll_on "gdi32.dll"
ret = dll_call5("Ellipse",hDC,x1,y1,x2,y2)
dll_off
message "Terminé"
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Invité
Invité




Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 18:47

Bonsoir
J'ai peu de temps, mais j'ai été curieux de regarder ton petit programme Papydall
C'est curieux que cela fonctionne chez toi.
Moi j'obtiens le message suivant:
'2164337286' is not a valid integer value
Mais en mettant ret% à la place, cela fonctionne.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 20:23

C'est curieux, j'avais essayé tout à l'heure et ça marchait, suite au post de cosmos je réessaye et j'ai ce message invalid integer value.
Et même en mettant ret% au lieu de ret.
La fonction ne s'exécute que si je mets TOUTES les variables en entières (%).

Bien vu bignono pour ton clavier !
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 21:45

Ce n’est pas si curieux que ça !
En effet, la fonction Ellipse  de gdi32.dll demande que tous les paramètres transmis soient du type entier.
Or, moi je ne suis pas ami avec le signe % (allez savoir pourquoi !).
La valeur mentionnée par cosmos70 est celle de hDC qui est le handle_canvas(0) (qui peut être différente selon le cas)
ret est le code de retour de la fonction qui est , soit 0 (la fonction n’a pas abouti) soit une valeur non-zéro (1 par exemple).

Morale de l’histoire : je devrai faire la paix avec le % et déclarer toutes les variables entières en leur restituant leur si cher pourcent !  Laughing Laughing 
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 22:00

Salut papydall, bien d'accord sur la nécessité de valeurs entières, mais ce que je trouvais curieux c'est que ça ait marché précédemment avec des valeurs non déclarées entières (sans le %), comme dans ton exemple.
Ca veut dire que parfois elles sont considérées entières d'office ?

Je remarque également que l'ellipse est tracée 'pleine', avec un fond. Y aurait-il un paramètre pour ne tracer que le contour ?
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 22:33

JL35 a écrit:
Je remarque également que l'ellipse est tracée 'pleine', avec un fond. Y aurait-il un paramètre pour ne tracer que le contour ?

Chez moi (encore sous XP !) l’ellipse n’est pas ‘pleine’.
La voici

Fonction Beep de kernel32.dll Ellips10


NB : Je ne connais pas d'autre paramètre qui fait que l'ellipse soit pleine ou vide.
Edit
Mais il existe une fonction FloodFill de gdi32.dll qui remplit une zone délimitée par une couleur donnée.
FloodFill nécessite les paramètres suivants :
hDC : le Handle vers la zone à remplir
x et y : coordonnées d’un point à l’intérieur de la zone à remplir
crColor : couleur de remplissage à utiliser
Remarque : les 4 paramètres doivent être du type entier.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 23:06

Désolé papydall, mais pour moi l'ellipse est bien pleine
Si je reprends ton exemple et que je trace deux ellipses, la deuxième recouvre la première (sous W7, mais ça ne doit pas changer grand chose):
Code:
rem Fonction Ellipse de gdi32.dll pour dessiner une ellipse (et accessoirement un cercle)
dim hDC%,x1%,y1%,x2%,y2%, ret%
hDC% = handle_canvas(0) : ' Handle_canvas de la FORM sur laquelle on dessine
' On définit un rectangle dans lequel sera placé l'ellipse
' Pour dessiner un cercle, il faut donc faire un carré
x1% = 10 : y1% = 100  : ' Coordonnées du point haut/gauche du rectangle
x2% = 300 : y2% = 200 : ' Coordonnées du point bas/droit du rectangle
dll_on "gdi32.dll"
ret% = dll_call5("Ellipse",hDC%,x1%,y1%,x2%,y2%)
x1%=50: x2%=350
ret% = dll_call5("Ellipse",hDC%,x1%,y1%,x2%,y2%)
dll_off
message "Terminé"
Fonction Beep de kernel32.dll Image10
C'est bien d'avoir une fonction pour remplir, ce qu'il faudrait ici c'est une fonction pour vider !  Very Happy
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 23:40

ok, la fonction "rectangle" fonctionne aussi. Par contre, si tu sais changer la couleur du tracé, ça pourrait être sympa pour ne pas forcément dessiner en noir.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptyVen 3 Jan 2014 - 23:47

Code:
dim hDC%,x1%,y1%,x2%,y2%,ret%
hDC% = handle_canvas(0)
dll_on "gdi32.dll"
for x2% = 60 to 460 step 2
    x1% = x2%-60 : y1% = x2%-60 : y2% = 460-x2%
    ret% = dll_call5("Ellipse",hDC%,x1%,y1%,x2%,y2%)
next x2%
dll_off
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptySam 4 Jan 2014 - 14:20

C'est joli, et on peut faire plein de variations dans le même style, mais ça montre bien que la figure est pleine... de blanc.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll EmptySam 4 Jan 2014 - 17:07

ou plutôt vide … de couleur !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





Fonction Beep de kernel32.dll Empty
MessageSujet: Re: Fonction Beep de kernel32.dll   Fonction Beep de kernel32.dll Empty

Revenir en haut Aller en bas
 
Fonction Beep de kernel32.dll
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» PANORAMIC V0.9.13
» Terminate qui BEEP ...
» un beep muet
» La commande BEEP n'émet aucun son
» Un beep sonnant après TERMINATE

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: