Eliminare una traccia da un file MIDI
Vai alla navigazione
Vai alla ricerca
Per eliminare una traccia da un file Midi con le sole funzioni di Gambas, è possibile usare il seguente codice:
Public Sub Form_Open()
Dim s1, s2, da, dati, mthd, nuovo_file As String
Dim el, j As Byte
Dim lungh As Integer
Dim bb As New Byte[]
Dim tracce As New String[]
s1 = File.Load("/percorso/del/file.mid")
el = Val(InputBox("Scegliere la traccia da eliminare:"))
If el = 1 Then
Message.Warning("Eliminazione della 'Traccia del Tempo' non consentita !")
Quit
Endif
' Carica la sola parte delle tracce "MTrk":
s2 = Right(s1, Len(s1) - 14)
' Ciclo per individuare ciascuna traccia "MTrk" del file Midi:
While j < Asc(Mid(s1, 12, 1))
bb = Byte[].FromString(Mid(s2, 5, 4))
lungh = Val("&" & Hex(bb[0]) & Hex(bb[1]) & Hex(bb[2]) & Hex(bb[3]))
tracce.Add(Mid(s2, 1, lungh + 8))
s2 = Right(s2, Len(s2) - (8 + lungh))
Inc j
Wend
' Rimuove la traccia "MTrk" prescelta:
tracce.Remove(el - 1, 1)
For Each da In tracce
dati &= da
Next
mthd = Left(s1, 11) & Chr(tracce.Count) & Mid(s1, 13, 2)
nuovo_file = mthd & dati
File.Save("/tmp/nuovo.mid", nuovo_file)
Quit
End