Emulare con il Midi il suono del bip prodotto dall'altoparlante del PC

Da Gambas-it.org - Wikipedia.

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 (nome della nota Midi: A5), è 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 0F 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


Eseguire il file Midi mediante la Classe MediaPlayer del Componente gb.media

Usando invece il Componente gb.media, potremo servirci della Classe MediaPlayer per eseguire il file Midi.
Imporremo - dopo la riga di avvio dell'esecuzione - un Wait di brevissima durata, che consentirà di eseguire quel file.
Il codice potrà essere il seguente:

Public Sub Main()

 Dim mp As New MediaPlayer

 mp.URL = Media.URL("/percorso/del/file.mid")
 mp.Play

 Wait 0.3

 mp.Stop
 mp.Close

End