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

Turbo Pascal Discussion :

[TPW]TPW et sons


Sujet :

Turbo Pascal

  1. #1
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut [TPW]TPW et sons
    Bonjour,

    J'utilise Turbo Pascal for Windows 1.5 (avec l'unité WinCrt donc) sous Windows XP (ça n'arrange rien) et je voudrais créer un programme qui joue un/des sons, comme pourrait le faire celui-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    program Joue_son;
    uses Crt;
     
    begin
    Sound(10000); {fréquence du son choisi, là j'ai mis au pif}
    delay(1000);
    NoSound;
    end.
    Seulement l'unité WinCrt ne reconnaît pas la procédure Sound (ni nosound) et j'ai eu beau cherché, je n'ai pas trouvé son équivalent.

    Alors, comment puis-je faire pour jouer un son ? Quelle commande dois-je utiliser ?

    Si avez une idée, merci de la dire !

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Par défaut
    Tu peux tenter la procédure Beep des API Windows.

    Sinon, pour jouer un fichier son, tu peux te servir de PlaySound.

    A+

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Merci, mais c'est quoi les formules magiques pour les utiliser ?

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Par défaut
    Beep est une fonction de l'API Windows :
    Citation Envoyé par SDK
    BOOL Beep(
    DWORD dwFreq, // sound frequency, in hertz
    DWORD dwDuration // sound duration, in milliseconds
    );
    Un DWord en paramètre pour la fréquence du son, et un autre DWord pour la durée en millisecondes.

    Pour PlaySound, tu dois pouvour obtenir de l'aide avec ton compilateur ?

    a+

  5. #5
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Apparement, le PlaySound ne fonctionne qu'en delphi (en tout cas il n'y a aucune procédure/fonction de ce nom dans TPW 1.5).

    Pour le Beep, je ne vois pas comment l'utiliser dans un programme.
    Est-ce que tu pourrais donner un exemple de programme qui s'en servirait (avec les unités qu'il appelle) ?

    J'ai oublié de préciser que je débutais dans la programmation...

  6. #6
    Membre chevronné

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Par défaut
    Bien sur que tu ne trouves pas celà dans la doc de TP, vu que playsound est une fonction contenue dans une dll de windows...
    Le playsound fonctionne avec freepascal (je suppose qu'avec TP aussi): voici un exemple d'une fenetre qui joue un .wav à sa creation...

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    Program sound ;
    {$APPTYPE GUI}
     
    Uses Windows;
     
     
    Var WinClass: WndClass;
        Inst: HINST;
        hWindow: HWND;
        TheMessage: Msg;
     
     
    // cette partie est une récupération des constantes de playsound,
    // j'ai laissé les commentaires originaux qui peuvent etre utiles
    const
      SND_SYNC            = $0000;  // play synchronously (default)
      SND_ASYNC           = $0001;  // play asynchronously
      SND_NODEFAULT       = $0002;  // don't use default sound
      SND_MEMORY          = $0004;  // lpszSoundName points to a memory file
      SND_LOOP            = $0008;  // loop the sound until next sndPlaySound
      SND_NOSTOP          = $0010;  // don't stop any currently playing sound
      SND_NOWAIT          = $00002000;  // don't wait if the driver is busy
      SND_ALIAS           = $00010000;  // name is a registry alias
      SND_ALIAS_ID        = $00110000;  // alias is a predefined ID
      SND_FILENAME        = $00020000;  // name is file name
      SND_RESOURCE        = $00040004;  // name is resource name or atom
      SND_PURGE           = $0040;      // purge non-static events for task
      SND_APPLICATION     = $0080;     // look for application specific association
     
    // declaration de la fonction playsound contenue dans la dll winmm.dll
    function PlaySound(pszSound: PChar; hmod: HMODULE; fdwSound: DWORD): BOOL;
    stdcall; external 'winmm.dll' name {$ifdef unicode}'PlaySoundW' {$else}
    'PlaySoundA' {$endif};
     
    //procedure simplifiée d'appel de playsound
    procedure PlayMediaFile(_file : Pchar);
    begin
        PlaySound(_file, 0, SND_ASYNC or SND_FILENAME);
    end;
     
     
     
     
     
    { function qui gere les evenements de votre fenetre }
    function WindowProc(hWin: HWnd; Message,wParam,lParam: Integer): Integer; stdcall;
    begin
      Result := 0;
      { Gestion des messages }
      case Message of
        WM_CREATE :
    // ici c'est le chemin du fichier wav à jouer
         PlayMediaFile('C:\fpc1\ex\snd\1.wav');
     
        WM_DESTROY:
        begin
          postquitmessage(0);
        end;
     
      else
        Result := DefWindowProc(hWin, Message, wParam, lParam);
      end;
    end;
     
    begin
      { enregistrement WndClass }
      Inst := hInstance;
      with WinClass do
      begin
        style              := cs_hRedraw Or cs_vRedraw;
        lpfnWndProc        := @WindowProc;
        hInstance          := Inst;
        hbrBackground      := color_btnface + 1; //GetStockObject (GRAY_BRUSH);
        lpszClassname      := 'MyWindowClass';
        hIcon              := LoadIcon(0, IDI_APPLICATION);
        hCursor            := LoadCursor(0, IDC_ARROW);
      end; {  du with }
     
      RegisterClass(WinClass);
     
      { Creation de la fenetre }
      hWindow := CreateWindowEx(WS_EX_WINDOWEDGE,
                        'MyWindowClass','Titre de la fenetre',
                         WS_OVERLAPPEDWINDOW or WS_VISIBLE, 
                         190,  128, 546, 426, 0, 0, Inst, nil);
     
     
      UpdateWindow(hWindow);
     
      {La boucle principale}
      while GetMessage(TheMessage,0,0,0) do begin
        if not IsDialogMessage(hWindow,TheMessage) then begin
          TranslateMessage(TheMessage);
          DispatchMessage(TheMessage);
        end;
      end;
    end.
    See ya

    Clan

  7. #7
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Merci beaucoup, je ne l'ai pas encore essayé, mais avec ça je devrais m'en sortir.

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Par défaut
    Au temps pour moi, la procédure Beep n'est pas disponible avec les API Win31.
    Tu disposes des fonctions suivantes :

    PlaySound déclarée dans l'unité MMSystem
    MessageBeep décarée dans l'unité WinProcs

    Regarde tes fichiers d'aide, ils sont assez explicites en principe.

    Si jamais tu ne trouves pas PlaySound, essaie avec sndPlaySound toujours dans l'unité MMSystem.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TPW]Boites de dialogue
    Par francoistpw dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 29/06/2004, 14h05
  2. [TPW]J'ai besoin de WINCRT
    Par luno2545 dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 18/01/2004, 22h00
  3. tpw turbo pascal for windows
    Par tripper.dim dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 29/11/2003, 23h06
  4. [TPW]EnumWindowsProc
    Par Sub0 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 19/08/2003, 20h57
  5. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

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