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

Autres IDE Pascal Discussion :

[GRX] Créer des sons


Sujet :

Autres IDE Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut [GRX] Créer des sons
    j'aimerais, dans la mesure du possible, connaitre la commande qui permet de creer des bip (sons) sous GRX, je vous remercie.

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    La procédure est identique quel que soit le compilateur.

    Merci de consulter la F.A.Q Pascal.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    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?

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ben la solution serait de regarder l'aide... Sound est peut-être contenue dans une unité à part...


    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    nan j'arrive pas a trouver non plus et c'est surtout une procedure dont j'ai énormement besoin

  6. #6
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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 :

    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.
    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
     
    uses Crt;
     
    begin
      Sound(500);
      Delay(1000); 
      NoSound;
    end.
    Oh ! Miracle ! Comme dans la FAQ !

    Mais peut-être faut-il penser à compiler l'unité Crt... Alors on fait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GPC SNDTEST.PAS -o SNDTEST.EXE --automake
    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.


    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+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    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.
    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

  8. #8
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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;
    De retour parmis vous après 10 ans!!

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Sites
    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

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    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

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    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

  13. #13
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  14. #14
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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:
    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;
    En commentaire, le code Pascal équivalent...
    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... à+
    De retour parmis vous après 10 ans!!

  15. #15
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  16. #16
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    oui
    De retour parmis vous après 10 ans!!

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    merci Sub0, certe je debute aussi en assembleur, mais je comprend parfaitement ce que tu a posté, je ten remercie

  18. #18
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    de rien!
    J'espère simplement que tu as trouvé la solution à ton problème au moins!
    à+
    De retour parmis vous après 10 ans!!

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    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

Discussions similaires

  1. Réponses: 24
    Dernier message: 19/05/2010, 15h35
  2. créer des diaporama avec son
    Par omar344 dans le forum Vidéo
    Réponses: 1
    Dernier message: 17/12/2009, 14h03
  3. WinDev 9 : Créer des sons pour un piano
    Par jbidou88 dans le forum WinDev
    Réponses: 1
    Dernier message: 20/08/2007, 14h48

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