Ho risolto in questo modo:
- Ho aggiungo il file midi da "Esplora soluzioni" al progetto
- Ho impostato la proprietà "Operazione di generazione" del file midi in "Risorsa incorporata"
- Ho scritto il seguente codice:
codice:
Dim thisExe As System.Reflection.Assembly
Dim file As System.IO.Stream
thisExe = System.Reflection.Assembly.GetExecutingAssembly
file = thisExe.GetManifestResourceStream("Suoni.song.mid")
'crea un array di byte dallo stream
Dim bytearray As Byte()
ReDim bytearray(CInt(file.Length) - 1)
file.Read(bytearray, 0, CInt(file.Length))
file.Close()
'scrive l'array di byte in un file
Dim FileLibero As Integer = FreeFile()
FileOpen(FileLibero, Application.StartupPath & "\song.mid", OpenMode.Binary, OpenAccess.Write)
FilePut(FileLibero, bytearray)
FileClose(FileLibero)
'Suona il file creato
Dim audio1 As Audio
audio1 = New Audio(Application.StartupPath + "\song.mid")
audio1.Play()
E' possibile non creare il file midi nella dir del programma ma farlo suonare direttamente dall'array di byte creato?
Naturalmente se scrivo così non funziona:
audio1 = New Audio(bytearray)
audio1.Play()