Eliminare una traccia da un file MIDI

Da Gambas-it.org - Wikipedia.
Versione del 19 gen 2014 alle 02:22 di Vuott (Discussione | contributi) (Creata pagina con '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, ...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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