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

C++Builder Discussion :

Lire un fichier MIDI


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut Lire un fichier MIDI
    Bonjour

    SVP
    Ce code lit une sequence midi a l'appuit sur un TButton, mais ne le lit qu'une fois, ont peut appuyer 50 fois sur le TButton, rien ne se passe ? Pourquoi ?

    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
     
    //inclure mmsystem
     
    #include "mmsystem.h"
     
     
    //jouer le morceau par un clickbutton.
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     
    //Ouverture du periph midi
     
    UINT uiMIDIPlayerID;
    MCI_OPEN_PARMS mciOpenParms;
    mciOpenParms.lpstrDeviceType = "sequencer";
    mciOpenParms.lpstrElementName = "C:\\mid.mid";
     
    if(mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD_PTR)&mciOpenParms)== 0)
     
     
    //Obtention de l'ID du sequencer MIDI
     
    uiMIDIPlayerID = mciOpenParms.wDeviceID;
     
     
    //Jouer le fichier MIDI
     
    MCI_PLAY_PARMS mciPlayParms;
    mciSendCommand(uiMIDIPlayerID, MCI_PLAY, 0, (DWORD_PTR)&mciPlayParms);
    }
    //---------------------------------------------------------------------------
    Merci
    Merci A++

  2. #2
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    connaissais pas ça tiens,

    mais d'instinct je dirais parce que le device est déjà ouvert ...
    peut être faudrait un close :

    essai peut être ça :

    dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UINT uiMIDIPlayerID; //<--variable publique de Form1
    dans le cpp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     
            MCI_OPEN_PARMS mciOpenParms;
            mciOpenParms.lpstrDeviceType = "sequencer";
            mciOpenParms.lpstrElementName = "C:\\mid.mid";
            mciSendCommand(uiMIDIPlayerID,MCI_CLOSE,0,NULL);
            if(mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD_PTR)&mciOpenParms)== 0)
            {
              uiMIDIPlayerID = mciOpenParms.wDeviceID;
              MCI_PLAY_PARMS mciPlayParms;
              mciSendCommand(uiMIDIPlayerID, MCI_PLAY, 0, (DWORD_PTR)&mciPlayParms);
            }
    }

  3. #3
    Membre régulier Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Points : 111
    Points
    111
    Par défaut Mci
    Bonjour,

    Essais de faire un MCI_CLOSE à la fin de ta fonction Button1Click.

    Jagboys

  4. #4
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Bonjour Djob et jagboys

    Et Merci de m'avoir repondu.

    Je vient de testé, c'est bon Djob, ca marche impecable MERCI.

    Donc le code est bon, je ne le reecrit pas
    Pour information supplementaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Pour mettre en pause : 
    mciSendCommand(uiMIDIPlayerID, MCI_PAUSE, 0, NULL);
     
    //Pour arretté le morceau en cour de lecture :
    mciSendCommand(uiMIDIPlayerID, MCI_CLOSE, 0, NULL);
    Je vous remerci Djob et jagboys Merci et A++

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

Discussions similaires

  1. [Servlet][EJB]lire un fichier à partir de mon bean
    Par kimausoleil dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/02/2004, 14h26
  2. [MFC] lire un fichier en int
    Par Kevgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 09h32
  3. Réponses: 5
    Dernier message: 11/01/2004, 20h17
  4. Lire un fichier de 50 gb
    Par Maryves dans le forum MFC
    Réponses: 2
    Dernier message: 08/01/2004, 14h08
  5. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29

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