Sin complicarnos con DirectSound, podemos usar la API
waveOutOpen especificando en su segundo parametro el
uDeviceId, el cual al ser
WAVE_MAPPER (-1) enviará el buffer de sonido a la targeta por defecto, y para definir una targeta en particular deberas usar el valor 0, 1, 2, etc.. dependiendo de la cantidad de tarjetas instaladas.
Luego de la citada API necesitas usar la API waveOutPrepareHeader y waveOutWrite alimentando con ondas a la(s) tarjetas, la decodificacion de formatos distintos a .WAV te obligará a usar DirectSound para usar los CODECS del sistema.
Suerte