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

VB 6 et antérieur Discussion :

connaitre la fin lors de la lecture d'une musique


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut connaitre la fin lors de la lecture d'une musique
    bonjour
    j'ai ajouter un control "MMControl" pour lire des sons
    le probleme est que je n'arrive pas a enchainer 2 titres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Command1_Click()
    MMC.FileName = "K:\player\zik\titre.mp3"
    MMC.Command = "open"
    MMC.Command = "play"
     
    End Sub
    mais la je suis obliger de faire un 'close' pour lire un autre fichier
    comment faire le close a la fin du morceau?
    car si je le fais de suite apres la ligne
    le titre de demarre meme pas!!!

    Peut on connaitre le temps d'un morceau?
    Ou y a t il une autre maniere de faire plus simple?

    merci

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 623
    Points
    16 623
    Par défaut
    Fais une recherche dans ce forum avec mp3, ça vaut le coup

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonsoir,

    Progelect (que je salue) a diablement raison...

    Si tu tiens toutefois à utiliser ton MMControl ;


    Utilise une FileListBox File1 contenant tous tes fichiers (Wav)

    Dans l'évènement Load de ta Form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With MMControl1
        .Notify = False
        .Wait = True
        .Shareable = False
        .DeviceType = "WaveAudio"
        .TimeFormat = 0
      End With
    et Mets ceci dans l'évènement Click de ta Filelistbox File1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MMControl1.filename = file1.file_(file1.listindex)
    mmcontrol1.command = "stop"
    MMControl1.Command = "Open"
    mmcontrol1.command = "Play"
    Et tes morceaux seront joués un après l'autre

    EDIT : Ah oui (j'oublie tout ces jours ci...) Mets la propriété Visible de ton MMControl à False

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 623
    Points
    16 623
    Par défaut
    Salut ucfoutu
    pour MaMusique.mp3 -> .DeviceType = "mpegvideo"
    Pour trouver la longueur du morceau ouvert, tu verras en recherchant mp3, qu'il y a plusieurs façons de la recuperer, ce qui te permettras de choisir c'elle qui te convient.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    voila j'en suis la
    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
    Dim essai As Integer
    Dim titre1 As Variant
    Dim titre2 As Variant
    Dim titre3 As Variant
    Dim titre4 As Variant
     
     
     
    Private Sub Command1_Click()
     
    wmplayer.URL = titre1
    essai = wmplayer.currentMedia.duration
    Label1.Caption = Int(essai)
     
     
    End Sub
     
    Private Sub Form_Load()
    Open "c:\fichier.txt" For Input As #2
                Input #2, titre1
                Input #2, titre2
                Input #2, titre3
                Input #2, titre4
    Close #2
    titre1 = "K:\player\zik\" & titre1 & ".mp3"
    titre2 = "K:\player\zik\" & titre2 & ".mp3"
    titre3 = "K:\player\zik\" & titre3 & ".mp3"
    titre4 = "K:\player\zik\" & titre4 & ".mp3"
     
     
    End Sub
    j'ai mes 4 titres de charger
    le but etan de lancer ces 4 titres les un apres les autres automatiquement
    avec le Command1_Click() je lance le 1er morceau
    2 problemes:
    1)En pas a pas j'obtien bien la durrée du titre dans ma variable essai
    mais en mode normal non, il n'y aurai pas un laps de temps avant que " wmplayer.currentMedia.duration" connaisse sa valeur?

    2)admettons que la durée soit de 150(en seconde si j'ai bien compris) j'ai penser a lancer mon 2eme titres 153 secondes apres(3 secondes de plus pour qu'il y ai un blanc)mon probleme est que je suis pas tres douer avec les timers et que je n'ai pas trouver comment faire.
    ou je pourrai trouver un cours sur les timers afin de ne pas vous faire perdre votre temps a m'expliquer( meme si c'est le but 1er d'un forum lol)?

    merci

  6. #6
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 623
    Points
    16 623
    Par défaut
    Pour la durée, dans mes contributions, ligne ExtraInfFich.zip : durée d'une musique mp3 et wma , ne se limite pas qu'aux fichier .mp3 ou wma.
    Avec un MMControl
    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
    Private Sub Command1_Click()
    MMControl1.DeviceType = "mpegvideo" 'pour mp3 sa fonctinne aussi
    MMControl1.FileName = "C:\PersoFrancis\00 - Mon coeur mon amour (Version radios).mp3" '********** à adapter ********
    On Error Resume Next
    MMControl1.Wait = True
    MMControl1.Command = "Open"
    DoEvents
    If MMControl1.Length = 0 Or Err.Number <> 0 Then
     On Error GoTo 0
     MsgBox "impossible d'ouvrire le fichier", vbInformation
     Unload Me
     Exit Sub
    End If
    LongSupport = MMControl1.Length 'longueur du fichier
    MMControl1.Notify = True 'pour declancher Private Sub MMControl1_Done
    MMControl1.Command = "Play"
    End Sub
     
    Private Sub MMControl1_Done(NotifyCode As Integer)
    If MMControl1.Position = LongSupport Then
     'detection de la fin de lecture du fichier pour le relancer en boucle
     MMControl1.Command = "Prev": DoEvents ' retour au debut
     MMControl1.Command = "Play" ' rejoue le fichier
    End If
    End Sub
    dans Private Sub MMControl1_Done, apres la detection de la fin de lecture du fichier, toi, tu recharges un nouveau titre et tu le lances.

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 476
    Points
    20 476
    Par défaut
    mais la je suis obliger de faire un 'close' pour lire un autre fichier
    comment faire le close a la fin du morceau?
    Il faut utiliser les notifications et gérer en fonction de cela donc mettre la propriété notify du controle à true et gérer NotifyMessage par exemple.
    Il faut gérer Done comme le décrit ProgElect
    Regarder dans le MSDN; si le controle a fini de lire un fichier il envoit une notification de fin de lecture et c'est à partir de ce moment-là que tu peux ouvrir un autre...
    C'est un peu compliqué à mettre en oeuvre je conseille de consulter le MSDN

    ( désolé je n'avais pas vu totalement le code de ProgElect)

    sinon aussi avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub MMControl1_StopCompleted(Errorcode As Long)
     
    End Sub
    Du moins faire des essais..

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    j'ai un petit probleme avec ton code ProgElecT

    dans le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If MMControl1.Position = LongSupport Then
    MMControl1.Command = "Prev": DoEvents ' retour au debut
     MMControl1.Command = "Play"
    il ne fait pas les instructions
    donc pas de replay

  9. #9
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 623
    Points
    16 623
    Par défaut
    Citation Envoyé par mathrix77
    il ne fait pas les instructions

    Chez moi si, pour n'importe quel type de fichier, La seule chose que j'ai oublié dans le code proposé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Dim LongSupport As Long
    la ligne MMControl1.Notify = True est absolument indispensable avant le MMControl1.Command = "Play" pour que la procedure MMControl1_Done soit disponible.
    Essais de modifier par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MMControl1.Position >= LongSupport - 2 Then
    Citation Envoyé par Mat.M
    ( désolé je n'avais pas vu totalement le code de ProgElect)
    Il n'y a pas de probléme, en tout cas pour moi , je ne crois pas que la procedure StopCompleted soit utilisable dans ce cas, cette procedure detecte l'appui du bouton Stop, pas l'evenement de fin de la lecture du fichier.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    c'est tout bon ca fonctionne
    je vous met le code complet car je trouve que c'est le meilleur moyen de terminer une conversation (chose rare je trouves dans plusieurs sujet)

    voir : http://www.developpez.net/forums/sho...d.php?t=527104

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/05/2015, 09h37
  2. [MySQL] Utilisation de guillemets lors de la lecture d'une table
    Par Hell dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/06/2009, 14h36
  3. Probleme de memoire lors de la lecture d'une socket
    Par arover dans le forum Réseau
    Réponses: 4
    Dernier message: 02/04/2008, 20h02
  4. Réponses: 1
    Dernier message: 14/09/2006, 15h33
  5. Lenteur lors de la lecture d'une base Access
    Par Lio590 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/11/2005, 12h24

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