j'aimerais, dans la mesure du possible, connaitre la commande qui permet de creer des bip (sons) sous GRX, je vous remercie.
j'aimerais, dans la mesure du possible, connaitre la commande qui permet de creer des bip (sons) sous GRX, je vous remercie.
La procédure est identique quel que soit le compilateur.
Merci de consulter la F.A.Q Pascal.
A+
merci pour ta reponse, mais en ce qui concerne GNU ( et surtout dans la bibliotheque GRX) ben la procedure ne marche pas, je l'ai essayée et il ne connait pas sound (il me marque).
Code : Sélectionner tout - Visualiser dans une fenêtre à part undeclared identifier `Sound'
y aurait-il une autre solution?
Ben la solution serait de regarder l'aide... Sound est peut-être contenue dans une unité à part...
a+
nan j'arrive pas a trouver non plus et c'est surtout une procedure dont j'ai énormement besoin
Bon, alors en persévérant un peu, on arrive à tout.
Seule une chose a été gênante : la procédure Delay ne fonctionne pas. Eh ben c'est pas grave ! On en refait une !
Voilà donc le programme, avec la nouvelle procédure Wait, qui fonctionne comme Delay, mais en se servant de la fonction GetMicroSecondTime de l'unité GPC :
Faisons abstraction de Delay, qui ne fonctionne peut-être pas à cause de Windows, on peut donc se rendre compte que le code se réduirait à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 program SndTest; uses Gpc, Crt; procedure Wait(Ms: Word); var Start: Longint; Micro: Longint; begin Micro := Longint(Ms) * 1000; Start := GetMicroSecondTime; repeat until GetMicroSecondTime >= Start + Micro; end; begin Sound(500); Wait(1000); NoSound; end.
Oh ! Miracle ! Comme dans la FAQ !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 uses Crt; begin Sound(500); Delay(1000); NoSound; end.
Mais peut-être faut-il penser à compiler l'unité Crt... Alors on fait comme ça :
On remarquera la présence de --automake qui, comme c'est si bien dit dans l'aide, permet de construire toutes les bibliothèques nécessaires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 GPC SNDTEST.PAS -o SNDTEST.EXE --automake
Un peu de recherche personnelle ne fait de mal à personne. L'avantage, c'est que ça m'a permis de découvrir DJGPP. Pas pratique comme compilo...
Tu devrais essayer FreePascal sous Linux.
A+
avec ton
je n'arrive a trouver aucun des deux sous Gnu Pascal, déja le GPC c'est pas un fichier Unit donc il le compilera pas et en ce qui concerne Crt, a ma connaissance c'est une unité de turbo pascal donc il ne la gerera pas non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part uses GPC, Crt;
et pour ne pas oublier, en ce qui concerne free pascal, je n'ai pas le droit de l'utilisé car a la fac on nous impose le GNU pascal
L'unité Crt, je l'ai pas inventée. Tu veux pas aussi que je te passe le contenu de mon répertoire D:\DJGPP ? Non parce qu'au point où on en est...
Là, déjà : D:\djgpp\lib\gcc-lib\djgpp\3.22\units\Crt.pas Trouvé !
Et puis aussi : D:\djgpp\lib\ctr0.o Trouvé !
Alors s'il te manque des fichiers, va les télécharger sur le site approprié.
Pour info, c'est la version DJGPP 2.03 que j'ai...
A+
Salut! Je ne sais pas si ce code vous sera bien utile, je l'ai récupéré dans les swags ya longtemps... à+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 procedure delay(ms : word); Assembler; asm MOV AX,1000 MUL ms MOV CX,DX MOV DX,AX MOV AH,$86 INT $15 end; procedure sound( hertz : word); Assembler; asm MOV BX,SP MOV BX,&hertz MOV AX,34DDh MOV DX,0012h CMP DX,BX JNB @J1 DIV BX MOV BX,AX IN AL,61h TEST AL,03h JNZ @J2 OR AL,03h OUT 61h,AL MOV AL,-4Ah OUT 43h,AL @J2: MOV AL,BL OUT 42h,AL MOV AL,BH OUT 42h,AL @J1: end; procedure nosound; Assembler; asm IN AL,61h AND AL,0FCh OUT 61h,AL end;
euh dez de deranger mais la librairy crt je la trouve pas pour pascal mais seulement pour C et turbo pascal donc si qq'un a une site ou je peux le trouver ce sera bien
voir meme si vous etes tres motive me l'envoyer par mail la petite chose !
merci a tous de votre aide tjrs precieuse
pour l'unité CRT il suffit de télecharger DJGPP et tu le trouvera dans la librairie, par contre je n'arrive toujours pas a compiler avec gpc le program snsoud j'ai tout essayer, je l'ai modifié mais rien a faire, je commence à désespérer
En lisant bien comme il faut l'unité crt.pas (il suffit de lire les commentaires au debut du fichier) ben on peu remarquer qu'en ce qui concerne windows, la procedure sound/no sound ne marche pas, elle passe sous linux unix et autre, mais pas sous windows, donc je pense qu'il n'y a pas d'autres solutions malheureusement
S'il s'agit d'un programme Windows alors il faut utiliser les API Windows. Ca paraît logique jusque là...
Et dans ce cas, va chercher bonheur dans l'aide de Windows (les SDK ou les MSDN). Tu tomberas peut-être sur la procédure Beep qui fera ce que tu souhaites.
A+
Salut!
Quand je développais avec BPW, j'utilisais ce code pour avoir la fonction "sound",
sans API mais direct sur le port du speaker:En commentaire, le code Pascal équivalent...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 { --------------------------------------------------------------------------} procedure noSound; Assembler; Asm in al,61h { Port[$61] := Port[$61] and 252 } and al,252 { = Efface les bits (#1) et (#0) } out 61h,al { => Haut parleur off } end; { --------------------------------------------------------------------------} procedure Sound (frequence: word); assembler; Asm mov bx,[frequence] mov ax,34DDh mov dx,0012h cmp dx,bx { Pour éviter les erreurs de division par 0 : } jae @Exit { teste si la fréquence est inférieure à 18 } div bx mov bx,ax { BX = 1193181 div frequence } { Haut parleur ON } in al,61h or al,3 out 61h,al { Port[$61] := Port[$61] or 3 } { ? Change la fréquence ? } mov al,0B6h out 43h,al { Port[$43] := $B6 } { Envoi la fréquence } mov al,bl out 42h,al { Port[$42] := frequenceLO (and $FF) } mov al,bh out 42h,al { Port[$42] := frequenceHI (shr 8) } @Exit: end;
Si tu veux, je possède des fonctions pour jouer des notes midi...
Je possède aussi des sources pour jouer un WAV avec BPW et donc,
pouvoir jouer une période en boucle et choisir sa fréquence... à+
C'est sympa de ta part Sub0, seulement comme ils débutent, je sens très mal le passage de l'assembleur au format Intel vers le format AT&T requis par le compilateur DJGPP.
De plus il n'est pas conseillé de faire appel directement au matériel sous Windows, et la procédure Beep doit faire ce qu'il faut.
A+
merci Sub0, certe je debute aussi en assembleur, mais je comprend parfaitement ce que tu a posté, je ten remercie
de rien!
J'espère simplement que tu as trouvé la solution à ton problème au moins!
à+
jarrive pas a le compiler, pourrais tu le mettre dans un programme simple qui est compilable, c'est juste que tu vois je suis sur GPC et je sais pas si c'est la meme chose
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager