Fondere insieme due file MIDI: differenze tra le versioni
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. | ||
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, | 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 | |||
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