Differenze tra le versioni di "Alsa e Gambas: Registrare messaggi Midi"
(→Creare i valori per il Tempo Delta) |
|||
Riga 9: | Riga 9: | ||
Public g[4] As Byte | Public g[4] As Byte | ||
+ | Private s[4] As String | ||
Public h As Integer | Public h As Integer | ||
+ | Public sUsc as string | ||
'''Public''' Sub Button2_Click() | '''Public''' Sub Button2_Click() | ||
Riga 18: | Riga 20: | ||
h = 0 | h = 0 | ||
− | a = ...''<Font Color= #006400>' la variabile " a " raccoglie il valore dei Midi | + | a = ...''<Font Color= #006400>' la variabile " a " raccoglie il valore dei Midi tick</font> |
b = a Mod 128 | b = a Mod 128 | ||
Riga 37: | Riga 39: | ||
Wend | Wend | ||
− | + | For a = h To 0 Step -1 | |
− | + | s[a] = Str$(Hex$(g[a], 2)) | |
− | + | Next | |
+ | ''<Font Color= #006400>' la variabile contiene la "rappresentazione" esadecimale del valore del Midi tick:</font> | ||
+ | sUsc = s[3] & s[2] & s[1] & s[0] | ||
+ | |||
'''End''' | '''End''' | ||
Versione delle 17:22, 23 nov 2011
In questa pagina tratteremo del caso in cui vengono ricevuti in entrata dati Midi e memorizzati, al fine di creare al termine un file Midi (.mid).
Possiamo pensare di effettuare la registrazione dei dati Midi in entrata:
- attraverso l'utilizzazione di un altro specifico applicativo in C di supporto, come ad esempio arecordmidi, diciamo in modalità demone;
- oppure mediante la realizzazione in Gambas di apposito algoritmo, come parte del nostro applicativo appositamente dedicata o come applicativo a se stante.
Creare i valori per il Tempo Delta
Come abbiamo già avuto modo di vedere nella pagina "Ricevere dati da uno Standard Midi File", il Tempo Delta viene definito non con i suoi valori reali, bensì con una rappresentazione di tali valori. Pertanto, nel file Midi non avremo i valori reali dei millesimi di secondo, bensì una loro rappresentazione esadecimale. Dunque, prima ancora di poter scrivere, ossia di salvare, un file Midi dovremo - fra l'altro - individuare l'algoritmo per trasformare i valori decimali "reali" del Tempo Delta nella loro rappresentazione esadecimale:
Public g[4] As Byte Private s[4] As String Public h As Integer Public sUsc as string Public Sub Button2_Click() Dim a, b, c, d, e As Integer Dim rob As Byte h = 0 a = ...' la variabile " a " raccoglie il valore dei Midi tick b = a Mod 128 d = CInt(a / 128) g[h] = b While d > 0 e = d Mod 128 rob = e Or 128 d = CInt(d / 128) Inc h g[h] = rob Wend For a = h To 0 Step -1 s[a] = Str$(Hex$(g[a], 2)) Next ' la variabile contiene la "rappresentazione" esadecimale del valore del Midi tick: sUsc = s[3] & s[2] & s[1] & s[0] End
< pagina in costruzione >