2012-06-09 1 views
1

J'ai besoin de jouer un son (fichier .WAV) à partir d'une application Visual Basic 6. Cependant, le PC est équipé de plusieurs cartes son et l'utilisateur devrait pouvoir l'utiliser.Comment lire de l'audio via une carte son spécifique?

Jusqu'à présent une carte son par défaut a été pris en charge et je jouerais un son comme celui-ci:

CommandString = "Open " & Chr$(34) & mstrFilename & Chr$(34) & " type waveaudio alias MediaFile" 
mciSendString CommandString, vbNullString, 0, 0& 

If PlayFromPercent <= 0 Then 
    CommandString = "play MediaFile" 
    lngRetcode = mciSendString(CommandString, vbNullString, 0, 0&) 
Else 
    CommandString = "play MediaFile from " & CLng(lngLength * (PlayFromPercent/100)) 
    lngRetcode = mciSendString(CommandString, vbNullString, 0, 0&) 
End If 

Est-il possible d'adapter ce code pour une carte son spécifique ou est-il une approche différente je pouvais prendre (par exemple DirectX ou une bibliothèque commerciale tierce)?

Bonus, si l'approche prend en charge la lecture du fichier à partir d'une position spécifique (comme vous pouvez le voir, le code prend en charge au-dessus)

Répondre

1

Cela peut fonctionner; appelez mciSendCommand() avec MCI_SET & MCI_WAVE_SET_PARMS en réglant wOutput sur l'ID du périphérique de lecture souhaité.

  • Vous pouvez obtenir IDDevice pour mciSendCommand() via mciGetDeviceID("waveaudio")
  • Son pas 100% clair ce que wOutput veut, est probablement le même ID retourné par waveOutGetDevCaps()
Questions connexes