Fondere insieme due file MIDI: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 3: | Riga 3: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Dim s1, s2, ss2 | Dim s1, s2, ss2, file_finale As String | ||
Dim nt1, nt2 As Byte | Dim nt1, nt2 As Byte | ||
| Riga 10: | Riga 10: | ||
<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 | nt1 = Asc(s1[11, 1]) | ||
<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 | nt2 = Asc(s2[11, 1]) | ||
<FONT color=gray>' ''Raccoglie solo la parte delle tracce "MTrk" del secondo file:''</font> | <FONT color=gray>' ''Raccoglie solo la parte delle tracce "MTrk" del secondo file:''</font> | ||
ss2 = Right(s2, Len(s2) - 14) | ss2 = Right(s2, Len(s2) - 14) | ||
file_finale = Left(s1, 11) & | 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:51, 19 set 2022
Mostriamo di seguito un codice per fondere (mischiare) due file Midi con le sole funzioni di Gambas.
Va precisato che 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. 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.).
Public Sub Main()
Dim s1, s2, ss2, 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 solo la parte delle tracce "MTrk" del secondo file:
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)
End