Newsgroup: it.comp.lang.visual-basic
Titolo: File Wave ???

Ciao a tutti, ho il seguente problema:
Dato un file formato wave di lunghezza x (tipo 10 minuti)
dovrei tagliarlo in pezzi più piccoli ... 1.30 minuti, 2.00 minuti ecc ma
dovrei anche fare in modo che negli ultimi 5 sec ci sia un fade out sulla
musica in oggetto. Qualche idea?
Grazie
AleD

 musica in oggetto. Qualche idea?
Ogni file wave come tu sai č composto da una  intestazione (Header)
perciņ per dividere il file wave devi leggere l'header del file  wave da
dividere e
 risciverlo all'inizio di ogni file wave pił piccolo.
il seguente codice l'ho utilizzato per ceare un file wave con dei dati audio
non in
formato wave.   Analizzando e modificando il seguente codice dovresti
riuscire a capire il formato del file wave per poi implementare il codice
che
serve al tuo scopo.
ti invio inoltre il formato del file wave come mi fu inviato su mia
richiesta da un
gentilissimo tedesco:
'-------------------------------------------------
'Header
'------------------------------------------------
'1 - 4 String "RIFF"
'5 - 8 long int Länge der gesamt folgenden Datei
'9 - 16 String "WAVEfmt "(Leerzeichen am Ende!"
'17 - 20 long int (immer 16)
'21 - 22 int (immer 1)
'23 - 24 int Anzahl Kanäle (1 oder2)
'25 - 28 long int Samplefrewuenz in Hz
'29 - 32 long int Bytes/sekunde
'33 - 34 int Bytes/Sample
'35 - 36 int Sample Auflösung: 8,12,16(Bit)
'------------------------------------------------
'Body
'----------------------------------------------
'37 - 40 String "data"
'41 - 44 long int Länge des gesamten folgenden
'Datenbereiches
'45 - Ende Daten ( bei Stereo abwechselnd re und li Kanal)
Questo č il codice da me  implementato per creare un file wave .
      Dim LenFile As Long
      Dim riff As String * 4
      Dim str As String * 8
      Dim Fisso16 As Long
      Dim Fisso1 As Integer
      Dim immer As Long
      Dim canale As Integer
      Dim FrCamp As Long
      Dim BytesSec As Long
      Dim BytesCampioni As Integer
      Dim NBit As Integer
      Dim data As String * 4
      Dim TotLenFileDGrezz As Long
      Dim legge(262144) As Single
      Dim filenames As String
      filenames = "C:\Wave\dati\dati.bin"
         SizeFile = FileLen(filenames)
         Open filenames For Binary As 1
             Get #1, 1, legge()
         Close #1
         Open "C:\wave\Nuovo.Wav" For Binary As #1
                       riff = "RIFo"         'Lunghezza = 4
                       Put #1, 1, riff       'Stringa Riff
                       '
                       LenFile = 512118      'variabile Long
                       Put #1, 5, valore2    'corrisponde a circa la
lunghezza del file in bytes
                       '
                       str = "WAVEfmt"
                       Put #1, 9, str        'stringa 'wavefmt'
                       '
                       Fisso16 = 16          'variabile intera
                       Put #1, 17, Fisso16   'sempre 16
                       '
                       Fisso1 = 1            'variabile intera
                       Put #1, 21, Fisso1    'sempre 1
                       '
                       canale = 1            'variabile intera
                       Put #1, 23, canale    'n° canali
                       '
                       FrCamp = 51200        'variabile Long
                       Put #1, 25, FrCamp    'frequenza di campionamento
                       BytesSec = FrCamp * 2  'variabile Long
                       Put #1, 29, BytesSec
                       'n.  Bytes al secondo (frequenza di campionamento *
lunghezza 1 dato)
                       '
                       BytesCampioni = 2      'variabile intera
                       Put #1, 33, BytesCampioni 'n. Bytes / n. campioni
totali
                       '
                       NBit = 16              'variabile intera
                       Put #1, 35, NBit       'N° Bit
                       '
                       data = "data"          'stringa lunghezza = 4
                       Put #1, 37, data       'Stringa "Data"
                       '
                       TotLenFileDGrezz = 512000        'variabile Long
                       '
                       Put #1, 41, TotLenFileDGrezz     'Lunghezzatotale
file datigrezzi =
                       ' = FrCamp * Nsec * ndati * lenOgniDato
                       'If valore = 0 And valore1 = 0 Then Stop
                       Put #1, 45, legge()
        Close #1