Fondere insieme due file MIDI: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
Mostriamo di seguito un codice per fondere (mischiare) due file Midi con le sole funzioni di Gambas.
Mostriamo di seguito un codice, sufficientemente commentato, per fondere (mischiare) due file Midi con le sole funzioni di Gambas.
<BR>Va precisato che <SPAN Style="text-decoration:underline>la dinamica dell'esecuzione, ed in particolare il Tempo metronomico, di un file Midi potrà essere influenzata dagli eventuali ''Meta-eventi'' contenuti nell'altro file Midi</span>. Pertanto si suggerisce di usare il seguente codice con due file Midi che posseggono ciascuno il ''Meta-evento'' del Tempo metronomico avente medesimo valore (B.p.M.).
 
Va precisato che <SPAN Style="text-decoration:underline>la dinamica e modalità dell'esecuzione di un file Midi potrà essere influenzata da diversa risoluzione del Tempo-Delta e dagli eventuali ''Meta-eventi'' contenuti nell'altro file Midi</span>. Pertanto si suggerisce di usare il seguente codice con due file Midi che posseggono medesima risoluzione del Tempo-Delta e medesimo valore del ''Meta-evento'' relativo al Tempo metronomico.
  '''Public''' Sub Main()
  '''Public''' Sub Main()
   
   
   Dim s1, s2, ss2, file_finale As String
   Dim s1, s2, mtrk1, mtrk2, file_finale As String
   Dim nt1, nt2 As Byte
   Dim nt1, nt2 As Byte
 
   s1 = File.Load("<FONT color=gray>''/percorso/del/'''primo'''/file.mid''</font>")
   s1 = File.Load("<FONT color=gray>''/percorso/del/'''primo'''/file.mid''</font>")
   s2 = File.Load("<FONT color=gray>''/percorso/del/'''secondo'''/file.mid''</font>")
   s2 = File.Load("<FONT color=gray>''/percorso/del/'''secondo'''/file.mid''</font>")
   
  <FONT color=gray>' ''Individua il numero di tracce presenti nel primo file:''</font>
  <FONT color=gray>' ''Individua il numero di tracce presenti nel primo file:''</font>
   nt1 = Asc(s1[11, 1])
   nt1 = Asc(s1[11, 1])
Riga 14: Riga 15:
  <FONT color=gray>' ''Individua il numero di tracce presenti nel secondo file:''</font>
  <FONT color=gray>' ''Individua il numero di tracce presenti nel secondo file:''</font>
   nt2 = Asc(s2[11, 1])
   nt2 = Asc(s2[11, 1])
 
<FONT color=gray>' ''Raccoglie del 1° file Midi solo il valore della risoluzione del Tempo-Delta e la parte delle tracce "MTrk":''</font>
  mtrk1 = s1[12, s1.Len]
<FONT color=gray>' ''Raccoglie del 2° file Midi solo la parte delle tracce "MTrk":''</font>
  mtrk2 = s2[14, s2.Len]
  file_finale = s1[0, 11] & MkByte(nt1 + nt2) & mtrk1 & mtrk2
   
   
<FONT color=gray>' ''Raccoglie solo la parte delle tracce "MTrk" del secondo file:''</font>
  ss2 = Right(s2, Len(s2) - 14)
   
  file_finale = Left(s1, 11) & MkByte(nt1 + nt2) & Right(s1, Len(s1) - 12) & ss2
   
   File.Save("/tmp/nuovo.mid", file_finale)
   File.Save("/tmp/nuovo.mid", file_finale)
   
   
  '''End'''
  '''End'''

Versione delle 20:14, 19 set 2022

Mostriamo di seguito un codice, sufficientemente commentato, per fondere (mischiare) due file Midi con le sole funzioni di Gambas.

Va precisato che la dinamica e modalità dell'esecuzione di un file Midi potrà essere influenzata da diversa risoluzione del Tempo-Delta e dagli eventuali Meta-eventi contenuti nell'altro file Midi. Pertanto si suggerisce di usare il seguente codice con due file Midi che posseggono medesima risoluzione del Tempo-Delta e medesimo valore del Meta-evento relativo al Tempo metronomico.

Public Sub Main()

 Dim s1, s2, mtrk1, mtrk2, file_finale As String
 Dim nt1, nt2 As Byte

 s1 = File.Load("/percorso/del/primo/file.mid")
 s2 = File.Load("/percorso/del/secondo/file.mid")

' Individua il numero di tracce presenti nel primo file:
 nt1 = Asc(s1[11, 1])

' Individua il numero di tracce presenti nel secondo file:
 nt2 = Asc(s2[11, 1])
 
' Raccoglie del 1° file Midi solo il valore della risoluzione del Tempo-Delta e la parte delle tracce "MTrk":
 mtrk1 = s1[12, s1.Len]

' Raccoglie del 2° file Midi solo la parte delle tracce "MTrk":
 mtrk2 = s2[14, s2.Len]

 file_finale = s1[0, 11] & MkByte(nt1 + nt2) & mtrk1 & mtrk2

 File.Save("/tmp/nuovo.mid", file_finale)

End