Differenze tra le versioni di "Fondere insieme due file MIDI"

Da Gambas-it.org - Wikipedia.
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 19: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