Eliminare una traccia da un file MIDI: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
(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, ...') |
Nessun oggetto della modifica |
||
| Riga 1: | Riga 1: | ||
Per eliminare una traccia da un file Midi con le sole funzioni di Gambas, è possibile usare il seguente codice: | Per eliminare una traccia da un file Midi con le sole funzioni di Gambas, è possibile usare il seguente codice: | ||
'''Public''' Sub | '''Public''' Sub Button1_Click() | ||
Dim | Dim s As String | ||
Dim bb As New Byte[] | Dim bb As New Byte[] | ||
Dim | Dim el As Byte | ||
Dim i, lungh As Integer | |||
Dim ii As New String[] | |||
s = File.Load("<FONT Color=gray>''/percorso/del/file.mid''</font>") | |||
bb = Byte[].FromString(s) | |||
<FONT Color=gray>' ''Ciclo per individuare ciascuna traccia "MTrk" del file Midi:''</font> | |||
Do | |||
i = InStr(s, "MTrk", i + 1) | |||
If i > 0 Then ii.Push(i) | |||
Loop Until i = 0 | |||
Print "Il file Midi contiene";; ii.Count;; "tracce Midi." | |||
el = Val(InputBox("Scegliere la traccia da eliminare:")) | el = Val(InputBox("Scegliere la traccia da eliminare:")) | ||
Select Case el | |||
Case 1 | |||
Message.Warning("Eliminazione della '<I>Traccia del Tempo</i>' non consentita !") | |||
Return | |||
Case ii.Count + 1 | |||
<FONT | Message.Warning("Numero traccia superiore alla quantità di tracce presenti nel file Midi !") | ||
Return | |||
End Select | |||
<FONT Color=gray>' ''Individua la dimensione della traccia da eliminare:''</font> | |||
lungh = bb[ii[el - 1] + 6] | |||
lungh += bb[ii[el - 1] + 5] * 256 <FONT Color=gray>' ''&0100''</font> | |||
lungh += bb[ii[el - 1] + 4] * 65536 <FONT Color=gray>' ''&010000''</font> | |||
lungh += bb[ii[el - 1] + 3] * 16777216 <FONT Color=gray>' ''&01000000''</font> | |||
nuovo_file | bb.Remove(ii[el - 1] - 1, 8 + lungh) | ||
bb[11] -= 1 | |||
Print "Salvataggio del nuovo file Midi pari a";; bb.Count;; "byte." | |||
File.Save("<FONT Color=gray>''/percorso/del/nuovo_file.mid''</font>", bb.ToString(0, bb.count)) | |||
'''End''' | '''End''' | ||
Versione delle 16:29, 29 mag 2015
Per eliminare una traccia da un file Midi con le sole funzioni di Gambas, è possibile usare il seguente codice:
Public Sub Button1_Click()
Dim s As String
Dim bb As New Byte[]
Dim el As Byte
Dim i, lungh As Integer
Dim ii As New String[]
s = File.Load("/percorso/del/file.mid")
bb = Byte[].FromString(s)
' Ciclo per individuare ciascuna traccia "MTrk" del file Midi:
Do
i = InStr(s, "MTrk", i + 1)
If i > 0 Then ii.Push(i)
Loop Until i = 0
Print "Il file Midi contiene";; ii.Count;; "tracce Midi."
el = Val(InputBox("Scegliere la traccia da eliminare:"))
Select Case el
Case 1
Message.Warning("Eliminazione della 'Traccia del Tempo' non consentita !")
Return
Case ii.Count + 1
Message.Warning("Numero traccia superiore alla quantità di tracce presenti nel file Midi !")
Return
End Select
' Individua la dimensione della traccia da eliminare:
lungh = bb[ii[el - 1] + 6]
lungh += bb[ii[el - 1] + 5] * 256 ' &0100
lungh += bb[ii[el - 1] + 4] * 65536 ' &010000
lungh += bb[ii[el - 1] + 3] * 16777216 ' &01000000
bb.Remove(ii[el - 1] - 1, 8 + lungh)
bb[11] -= 1
Print "Salvataggio del nuovo file Midi pari a";; bb.Count;; "byte."
File.Save("/percorso/del/nuovo_file.mid", bb.ToString(0, bb.count))
End