No se de que visual basic hablas,
pero si fuese VB.NET este ejemplo de C#.NET sera facil de convertir a VB.NET:
Esto es un resumen de lo que hay que hacer... logicamente deberias colocarle control de excepciones ordenarlo y todas essas cosas
/// <summary>Dispositio de hardware asociado a la clase</summary>
public readonly Sonido.Device dispSonido;
/// <summary>Buffer temporal para un sonido</summary>
private Sonido.SecondaryBuffer tmpBuffer;
/// <summary>Descripcion asociada a la creacion de un nuevo Buffer de sonido</summary>
private Sonido.BufferDescription desc;
public constructot()
{
desc = new Sonido.BufferDescription();
dispSonido = new Sonido.Device();
dispSonido.SetCooperativeLevel(propietario,
Sonido.CooperativeLevel.Priority);
try
{
desc.ControlVolume = true;
this.Volumen = volumenSonido;
}
catch{}
}
public void otros()
{
...
...
string s="sonido.wav"
// Se crea el buffer temporal
tmpBuffer = new Sonido.SecondaryBuffer(s,desc,dispSonido);
// Se establece el volumen
tmpBuffer.Volume = volumen;
...
...
tmpBuffer.Play(0,Sonido.BufferPlayFlags.Default);
}