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.NET Discussion :

jouer un .mid en resource en boucle avec mciSendString


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut jouer un .mid en resource en boucle avec mciSendString
    tous d'abord je voudrais préciser que le mérite de cette source doit être
    attribué a "conte zero" qui m'a bien aiguille sur l'API a utiliser
    merci encore
    ce bout de code permet de jouer une ressource .mid en boucle
    mais avec un défaut: une latence de 1 à 2 secondes entre chaque reprise
    j'ai bien trouve sur MSDN une possibilité : avec repeat

    http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx

    mais je n'arrive pas a la faire fonctionner ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mciSendString("play SongMid repeat", Nothing, 0, 0)
    ne donne rien .


    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
    Imports System.IO
     
     
    Public Class Form1
        Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, _
         ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
     
        Dim path_muzik As String = ""
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            path_muzik = Application.StartupPath & "\song.mid"
     
            If File.Exists(path_muzik) = False Then
                File.WriteAllBytes(path_muzik, My.Resources.song)   ' copîe la ressource sur le dir de l'appli
                File.SetAttributes(path_muzik, FileAttributes.Hidden)
            End If
     
            zik()
            '____________________________________________________________________
            'METHODE POUR RECUPERER LA LONGUEUR DU .MID
            Dim RetString As New String(" "c, 50)
            mciSendString("Set SongMid time format milliseconds", Nothing, 0, 0)
            mciSendString("Status SongMid length", RetString, RetString.Length, 0)
     
            Dim temp As String = Replace(RetString, Chr(34), "") 'mise en forme du temps .mid pour convertion integer
            temp = Replace(temp, " ", "")
            '___________________________________________________________
     
            Timer_song.Interval = Conversion.Int(temp) + 1000  '+1000 evite la coupure avant la fin du .mid
            Timer_song.Enabled = True
        End Sub
     
        Sub zik()
            Dim muzik As String = Chr(34) & path_muzik & Chr(34)
            mciSendString("open " & muzik & " alias SongMid", Nothing, 0, 0)
            mciSendString("play SongMid", Nothing, 0, 0)
     
        End Sub
     
        Private Sub Timer_song_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer_song.Tick
            mciSendString("close SongMid", Nothing, 0, 0) 'on ferme pour reouvrir c'est surement la que le delai devient important. mais j'ai pas mieux ....
            zik()
        End Sub
        Private Sub Btn_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_exit.Click
            mciSendString("close SongMid", Nothing, 0, 0)
            File.Delete(path_muzik)
            Me.Dispose()
        End Sub
    End Class
    voila si vous avez la solution permettant de réduire fortement cette latence
    je suis preneur
    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    pffff... je m'en fais tout un cinema alors que c'est si simple avec un control WindowsMediaPlayer
    l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     WindowsMediaPlayer1.URL = path_muzik
            WindowsMediaPlayer1.settings.setMode("loop", True)

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

Discussions similaires

  1. Jouer un son en boucle avec Flash
    Par c4cf6 dans le forum Flash
    Réponses: 0
    Dernier message: 27/05/2010, 15h11
  2. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 18h57
  3. Boucle avec un TIBDataSet
    Par SebCBien dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/09/2004, 17h33
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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