Differenze tra le versioni di "Eliminare una traccia da un file MIDI"
Da Gambas-it.org - Wikipedia.
(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, ...') |
|||
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 15: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