Differenze tra le versioni di "Emulare con il Midi il suono del bip prodotto dall'altoparlante del PC"

Da Gambas-it.org - Wikipedia.
Riga 11: Riga 11:
 
</table>
 
</table>
 
</td></tr></table>
 
</td></tr></table>
In questo caso abbiamo scelto il suono dello strumento di indice &h26 nell'elenco del ''General Midi'', che sarà eseguito per soli 30 tick.
+
In questo caso abbiamo scelto il suono della nota Midi numero &h51, usando lo strumento di indice &h26 dell'elenco ''General Midi'', che sarà eseguito per soli 30 tick.
  
  

Versione delle 16:08, 14 ott 2023

Volendo tentare di emulare con il MIDI il classico bip che in particolare i vecchi pc riproducevano attraverso i loro altoparlanti, realizzeremo un apposito file Midi standard, contenente i dati per eseguire un brevissimo suono a 880 hertz di uno strumento il cui timbro possa somigliare al classico bip.
A tal proposito ci sono sembrati somiglianti al classico bip i suoni a 880 hertz degli strumenti musicali indicati nella lista del General Midi ai numeri (con indice iniziale zero) in esadecimale: &h21, &h22, &h23, &h26 e &h50.
La nota Midi, che corrisponde al "La" da 880 hertz, è rappresentata dal valore esadecimale &h51.

Il file Midi, da utilizzare, potrà essere realizzato con un programma Midi o anche con un Editor esadecimale e sarà il seguente:

4D 54 68 64 00 00 00 06 00 01 00 01 01 80 4D 54
72 6B 00 00 00 0E 00 C0 26 00 90 51 64 30 80 51
00 00 FF 2F 00

In questo caso abbiamo scelto il suono della nota Midi numero &h51, usando lo strumento di indice &h26 dell'elenco General Midi, che sarà eseguito per soli 30 tick.


Eseguire il file Midi mediante la Classe Music del Componente gb.sdl2.audio

Volendo usare le risorse della Classe Music del Componente gb.sdl2.audio, per eseguire il predetto file Midi, il codice potrà essere il seguente:

Public Sub Main()

 Music.SoundFontPath = "/percorso/del/soundfont/bank/file.sf2"
 
 Music.Load("/percorso/del/file.mid")

 Music.Play

' Questo ciclo consente l'esecuzione del file Midi:
 While Music.State == Music.Playing
 Wend

End