Differenze tra le versioni di "Alsa e Gambas: Registrare messaggi Midi"

Da Gambas-it.org - Wikipedia.
(Creare i valori per il Tempo Delta)
Riga 6: Riga 6:
 
===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 millesimi di secondo, bensì una loro ''rappresentazione'' esadecimale.
 
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 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
 +
Public h As Integer
 +
 +
'''Public''' Sub Button2_Click()
 +
 +
  Dim a, b, c, d, e As Integer
 +
  Dim rob As Byte
 +
 
 +
  h = 0
 +
 
 +
  a = ...''<Font Color= #006400>' la variabile " a " raccoglie il valore dei Midi clock</font>
 +
 +
  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
 +
    Print Hex$(g[a], 2)
 +
  Next
 +
 +
'''End'''
 +
 +
 +
  
  
  
 
'''< pagina in costruzione >'''
 
'''< pagina in costruzione >'''

Versione delle 18:07, 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
Public h As Integer

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 clock

 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
   Print Hex$(g[a], 2)
 Next

End




< pagina in costruzione >