Scusa xe ma interessa anche me

codice:
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 
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long 
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Dim m_nomeCortoDos As String 

Private Sub set_tempo(NewValue) 
Dim ret As Long 
ret = mciSendString("set MIDI tempo " & NewValue, 0, 0, 0)'imposta il tempo di metronomo del sequencer midi 
End Sub 

Private Sub play() 


ret = mciSendString("OPEN " & m_nomeCortoDos & " ALIAS MIDI", ByVal 0&, ByVal 0&, ByVal 0&) 
ret = mciSendString("PLAY MIDI FROM 0 TO 1000", ByVal 0&, ByVal 0&, ByVal 0&) 
'ret = mciSendString("PLAY MIDI", ByVal 0&, ByVal 0&, ByVal 0&) 

End Sub 

Private Sub Command1_Click() 
Dim buffer As String 

buffer = Space(255) 
cd1.ShowOpen 'non metto filtri ma .... aprire un file midi... 
file_midi = cd1.FileName 
ret = GetShortPathName(file_midi, buffer, 255)'devo usare questa perche se passo alla mci una stringa con degli spazi non carica il file 
m_nomeCortoDos = Left(buffer, ret) 

play 
'Sleep 110 'occhio a questa istruzione che pare na boiata ma..... 
set_tempo 300 
End Sub 

Private Sub Command2_Click() 
set_tempo 300 
End Sub 

Private Sub Form_Unload(Cancel As Integer) 
ret = mciSendString("CLOSE MIDI", ByVal 0&, ByVal 0&, ByVal 0&) 
End Sub