Differenze tra le versioni di "Alsa e Gambas: Registrare messaggi Midi"
(→Creare i valori per il Tempo Delta) |
(→Creare i valori per il Tempo Delta) |
||
Riga 5: | Riga 5: | ||
===Creare i valori per il ''Tempo Delta''=== | ===Creare i valori per il ''Tempo Delta''=== | ||
− | Come abbiamo già avuto modo di vedere nella pagina "[[Alsa_e_Gambas:_Ricevere_dati_da_smf#Il_Tempo_Delta_come_dato_a_lunghezza_variabile|''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 '' | + | Come abbiamo già avuto modo di vedere nella pagina "[[Alsa_e_Gambas:_Ricevere_dati_da_smf#Il_Tempo_Delta_come_dato_a_lunghezza_variabile|''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 Midi ''tick'', tenuto conto della ''risoluzione'' per nota da 1/4 del Tempo Delta presente nell'Header Chunk, 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 (ossia del numero dei '' | + | 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 (ossia del numero dei Midi ''tick'', tenuto conto - ripetiamo - della ''risoluzione'' per nota da 1/4 presente nell'Header Chunk) nella loro ''rappresentazione'' esadecimale: |
− | Public g[4] As Byte ''<Font Color= #006400>' la variabile " g " è un array che conterrà i valori esadecimali costituenti la rappresentazione esadecimale dei '' | + | Public g[4] As Byte ''<Font Color= #006400>' la variabile " g " è un array che conterrà i valori esadecimali costituenti la rappresentazione esadecimale dei Midi ''tick''</font> |
− | Public h As Integer ''<Font Color= #006400>' la variabile " h " conterrà la quantità di byte che costituiscono la rappresentazione esadecimale dei '' | + | Public h As Integer ''<Font Color= #006400>' la variabile " h " conterrà la quantità di byte che costituiscono la rappresentazione esadecimale dei Midi ''tick''</font> |
'''Public''' Sub Button2_Click() | '''Public''' Sub Button2_Click() | ||
Riga 18: | Riga 18: | ||
h = 0 | h = 0 | ||
− | a = ...''<Font Color= #006400>' la variabile " a " raccoglie il valore reale decimale dei '' | + | a = ...''<Font Color= #006400>' la variabile " a " raccoglie il valore reale decimale dei Midi ''tick'':</font> |
b = a Mod 128 | b = a Mod 128 | ||
Riga 39: | Riga 39: | ||
For a = h To 0 Step -1 | For a = h To 0 Step -1 | ||
g[a] = Hex$(g[a], 2) | g[a] = Hex$(g[a], 2) | ||
− | ''<Font Color= #006400>' facciamo mostrare distintamente per didattica ciascun valore della "rappresentazione" esadecimale del valore dei '' | + | ''<Font Color= #006400>' facciamo mostrare distintamente per didattica ciascun valore della "rappresentazione" esadecimale del valore dei Midi ''tick'':</font> |
Print g[a] | Print g[a] | ||
Next | Next |
Versione delle 10:28, 24 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 Midi tick, tenuto conto della risoluzione per nota da 1/4 del Tempo Delta presente nell'Header Chunk, 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 (ossia del numero dei Midi tick, tenuto conto - ripetiamo - della risoluzione per nota da 1/4 presente nell'Header Chunk) nella loro rappresentazione esadecimale:
Public g[4] As Byte ' la variabile " g " è un array che conterrà i valori esadecimali costituenti la rappresentazione esadecimale dei Midi tick Public h As Integer ' la variabile " h " conterrà la quantità di byte che costituiscono la rappresentazione esadecimale dei Midi tick 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 reale decimale 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 g[a] = Hex$(g[a], 2) ' facciamo mostrare distintamente per didattica ciascun valore della "rappresentazione" esadecimale del valore dei Midi tick: Print g[a] Next End
< pagina in costruzione >