Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    47

    [VB.NET] File midi e risorse

    Salve, ho inserito in un form il seguente codice per riprodurre un file midi:

    codice:
    Imports Microsoft.DirectX
    Imports Microsoft.DirectX.AudioVideoPlayback
    
    Dim audio1 As Audio
    
    audio1 = New Audio(Application.StartupPath + "\song.mid")
    audio1.Play()
    Vorrei inserire il file midi all'interno di un file di risorse in modo tale da farlo eseguire da li e non doverlo tenere esterno all'exe, come posso fare? Come richiamo poi dalle risorse il file?
    Grazie in anticipo!!

  2. #2
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Leggi questo articolo
    ... e non usare while wend è una sintassi deprecata

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    scusate io

    Imports Microsoft.DirectX.AudioVideoPlayback


    non ce lo ,basta installare solo le directx ???

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    47
    Originariamente inviato da Mabi
    Leggi questo articolo
    Quell'articolo si riferisce a visual basic 6, e non riesco ad adattarlo per il .net
    Premetto che l'unica volta che ho utilizzato le risorse è stato per inserire il file .manifest all'interno del .exe per ottenere i controlli stile XP, in quel caso selezionavo direttamente l'eseguibile compilato e lo inserive li dentro, in questo caso però stavo provando creando un file di risorse in questo modo:

    File -> Nuovo -> File -> Modello di risorsa
    Tasto destro -> Importa (scelgo il file midi) e si apre la finestra "tipo di risorsa personalizzata" e mi chiede "tipo di risorsa" (nel caso del file .manifest mettevo RT_MANIFEST) qui che metto?
    Una volta inserita la risorsa mi sembra di capire che si deve modificare l'ID, nel caso del file .manifest dovevo mettere "1" (che poi non ho capito esattamente a cosa si riferisce, se mettevo altro ID non funzionava) in questo caso cosa devo inserire?
    Nel codice del programma al posto di "Application.StartupPath + "\song.mid"" cosa devo scrivere per far caricare il midi dalla risorsa creata?
    Grazie ancora

    X cassano
    Devi installare le DirectX, anche io non avevo i riferimenti anche se su XP SP2 già avevo la versione 9.0c installata con windows, le ho quindi installate prelevandole da questo link: http://www.microsoft.com/downloads/d...5-924DCD4CD2C5

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Devi installare le DirectX, anche io non avevo i riferimenti anche se su XP SP2 già avevo la versione 9.0c installata con windows, le ho quindi installate prelevandole da questo link:
    Grazie ora riprovo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    47
    Nessuno mi sa aiutare

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    ok ora funziona grazie.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    47
    ...ho provato in tanti modi e non trovo nessuna guida, messuno mi sa aiutare?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    47
    Non ho ancora risolto
    Sto provando a creare il file di risorse utilizzando un "Modello di risorsa" seguendo la procedura descritta sopra, è possibile che questi file (.rct) vengano utilizzati solo da c++ ?
    Chiedo questo perchè ho notato una cosa strana, quando compilo la dimensione dell'exe è identica a prima che creassi il file di risorse, è come se non avesse inserito all'interno dell'eseguibile il file midi nonostante il file .rtc sia presente in "esplora soluzioni" prima della compilazione, cosa sbaglio?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    47
    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()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.