Newsgroup: it.comp.lang.visual-basic
Titolo: midi

Come si fa a lanciare un file midi senza che compaia nessun comando in modo
che si possa stoppare e che cicli all'infinito rincominciando da capo?
Grazie
P.s.: premetto che non ho esperienza, quindi dovreste essere precisi.
scusate :-)

 scusate :-)
Vedi sopra...
________________________________________
James Tiberius Kirk, matricola SC 937-076 CEC
  Nato a Riverside, nello Iowa, USA, Terra
            il 1277.1 (26/03/2233)

 wrote in message
abvk8.24755$%g7.7...@twister2.libero.it...


>Grazie
Da qui non si capiva, sorry...


 ha scritto nel messaggio
news:a6tmdv$rss$1...@lacerta.tiscalinet.it...

Inserisci il controllo MMControl sul tuo Form, e imposti la proprietà
Visible=False Il resto lo devi fare da codice:
    MMcontrol.Filenname = "Nome del file"
    MMControl.Command = "Open"
    MMControl.Command = "Play"
Ciao
G. Chieli

 Inserisci il controllo MMControl sul tuo Form, e imposti la proprietą


 ha scritto nel messaggio
news:a6tmdv$rss$1...@lacerta.tiscalinet.it...

con questo modulo di classe
Private Declare Function mciGetErrorString Lib "winmm.dll" Alias
"mciGetErrorStringA" (ByVal dwError As Long, ByVal lpstrBuffer As String,
ByVal uLength As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias
"GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As
String, ByVal cchBuffer As Long) As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias
"mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As
String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
'Default Property
Const m_def_FileName = ""
'Property Variables:
Dim m_FileName As String
Dim OnOff As Boolean
Dim m_mmOpen As Boolean
Public Property Get FileName() As String
    FileName = m_FileName
End Property
Public Property Get mmOpen() As Boolean
    mmOpen = m_mmOpen
End Property
Public Property Let FileName(ByVal New_FileName As String)
    m_FileName = New_FileName
End Property
'verifica se il sequencer midi è in riproduzione
Public Function IsPlaying() As Boolean
On Error GoTo Correzione
Static s As String * 30
    IsPlaying = True
    mciSendString "status PlayMidi mode", s, Len(s), 0
    If Mid$(s, 1, 7) = "playing" Then Exit Function
    If Mid$(s, 1, 13) = "in esecuzione" Then Exit Function
   IsPlaying = False
Exit Function
Correzione:
   IsPlaying = False
End Function
'apre il sequencer e inizia la riproduzione del file
Public Function mmPlay()
    Dim cmdToDo As String * 255
    Dim dwReturn As Long
    Dim Ret As String * 128
    Dim tmp As String * 255
    Dim lenShort As Long
    Dim ShortPathAndFie As String
    If Dir(FileName) = "" Then
        m_mmOpen = False
        Exit Function
    End If
    lenShort = GetShortPathName(FileName, tmp, 255)
    ShortPathAndFie = Left$(tmp, lenShort)
    glo_hWnd = hWnd
    cmdToDo = "open " & ShortPathAndFie & " type sequencer alias PlayMidi"
    dwReturn = mciSendString(cmdToDo, 0&, 0&, 0&)
    If dwReturn <> 0 Then  'non aperto
        mciGetErrorString dwReturn, Ret, 128
        m_mmOpen = False
        Exit Function
    End If
    m_mmOpen = True
    mciSendString "play PlayMidi", 0, 0, 0
End Function
'chiude il sequencer
Public Function mmStop() As String
    mciSendString "stop PlayMidi", 0, 0, 0
    mciSendString "close PlayMidi", 0, 0, 0
End Function
' mette in pausa il sequencer
 Public Function mmPausa() As String
     mciSendString "pause PlayMidi", 0, 0, 0
    'mciSendString "close PlayMidi", 0, 0, 0
End Function
Private Sub Class_Initialize()
    m_FileName = m_def_FileName
    OnOff = False
End Sub
Private Sub Class_Terminate()
    mmStop
End Sub

 ha scritto nel messaggio
news:JEOk8.69643$_u5.2...@news1.tin.it...



MMControl è molto semplice da usare ma ti costringe a distribuire un
Controllo in più nel tuo progetto, inoltre le funzionalità sono limitate a
quelle esposte nella sua interfaccia, è difficile commettere errori che
mandino in crash il sistema; è l' ideale per un principiante che vuole
ottenere subito buoni risultati senza aspettare di diventare esperto.
Le API fanno riferimento alle librerie di sistema, sono un po' più
complicate da utilizzare per chi è alle prime armi, ma offrono una gestione
completa del problema  anche se senza alcuna interfaccia, non ti costringono
a distribuire OCX aggiuntivi. Se sbagli a passare un parametro hai ottime
probabilità di un crash, per questo spesso conviene incapsularle in
routine/propery che rendano  il compito un  po' piu' "amichevole", infatti
le API sono state scritte pensando che, ad utilizzarle, debba essere un
programmatore di C non di VB.
A te le conclusioni finali.
Ciao
G.C.