Differenze tra le versioni di "Unire due file WAV"

Da Gambas-it.org - Wikipedia.
Riga 8: Riga 8:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
   Dim s, finale As String
+
   Dim s1, s2, finale As String
 
    
 
    
   s = File.Load("''/percorso/del/file.wav''")
+
   s1 = File.Load("''/percorso/del/primo/file.wav''")
 +
 +
  s2 = File.Load("''/percorso/del/secondo/file.wav''")
 
    
 
    
  <FONT color=gray>' ''Semplicemente azzeriamo i valori dei byte n. 4, 5, 6 e 7:''</font>
+
  <FONT color=gray>' ''Semplicemente azzeriamo i valori dei byte n. 4, 5, 6 e 7 del primo file wav''</font>
 
   finale = Left(s, 4)
 
   finale = Left(s, 4)
 
   finale &= String$(4, Chr(0))
 
   finale &= String$(4, Chr(0))
 
    
 
    
  <FONT color=gray>' ''Semplicemente inseriamo i valori uguali a zero nei byte n. 40, 41, 42, 43 al posto dei precedenti:''</font>
+
  <FONT color=gray>' ''Semplicemente inseriamo nel primo file wav i valori uguali a zero nei byte n. 40, 41, 42, 43 al posto dei precedenti:''</font>
 
   finale &= Mid(s, 9, 32)   
 
   finale &= Mid(s, 9, 32)   
 
   finale &= String$(4, Chr(0))
 
   finale &= String$(4, Chr(0))
Riga 22: Riga 24:
 
    
 
    
 
  <FONT color=gray>' ''Salviamo il nuovo file WAV unendo al primo file wav, come modificato, il secondo file wav privato del suo ''header'':''</font>
 
  <FONT color=gray>' ''Salviamo il nuovo file WAV unendo al primo file wav, come modificato, il secondo file wav privato del suo ''header'':''</font>
   File.Save("/tmp/nuovo.wav", finale & Right(s, Len(s) - 44) & Right(s, Len(s) - 44))
+
   File.Save("/tmp/nuovo.wav", finale & Right(s1, Len(s) - 44) & Right(s2, Len(s) - 44))
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 13:09, 18 gen 2014

Per unire due file audio di formato WAV con le sole funzioni di Gambas, bisognerà prestare cure ad almeno i seguenti aspetti:

  • i due file da unire devono avere uguale frequenza di campionamento ed uguale numero di canali;
  • bisognerà eliminare l'intero primo blocco, ossia l'header, al secondo file (che sarà unito alla fine del primo file wav;
  • bisognerà azzerare oppure impostare i nuovi corretti valori che indicano le dimensioni del file wav, presenti nei byte n. 4, 5, 6, 7 e nei byte n. 40, 41, 42, 43 dell'header del primo file.


Di seguito un possibile semplice codice:

Public Sub Main()

 Dim s1, s2, finale As String
 
  s1 = File.Load("/percorso/del/primo/file.wav")

  s2 = File.Load("/percorso/del/secondo/file.wav")
  
' Semplicemente azzeriamo i valori dei byte n. 4, 5, 6 e 7 del primo file wav
  finale = Left(s, 4)
  finale &= String$(4, Chr(0))
 
' Semplicemente inseriamo nel primo file wav i valori uguali a zero nei byte n. 40, 41, 42, 43 al posto dei precedenti:
  finale &= Mid(s, 9, 32)  
  finale &= String$(4, Chr(0))
 
 
' Salviamo il nuovo file WAV unendo al primo file wav, come modificato, il secondo file wav privato del suo header:
  File.Save("/tmp/nuovo.wav", finale & Right(s1, Len(s) - 44) & Right(s2, Len(s) - 44))

End