VB 5/6-Tipp 0510: Auslesen der verfügbaren Soundeinstellungen
von Klaus Langbein
Beschreibung
Mithilfe dieses Beispiels kann überprüfen welches
eingebaute Gerät eine spezielle Soundeinstellung
(z.B. Sample Rate=44100 bei 16 Bit Stereo) beherrscht.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei getCaps.vbp ------------- '------- Anfang Formular "frmDevice" alias Form1.frm ------- ' Steuerelement: Rahmensteuerelement "Frame1" ' Steuerelement: Optionsfeld-Steuerelement "optSample" (Index von 0 bis 2) auf Frame1 ' Steuerelement: Rahmensteuerelement "frmStereo" ' Steuerelement: Optionsfeld-Steuerelement "optWavtype" (Index von 0 bis 3) auf frmStereo ' Steuerelement: Listen-Steuerelement "lstDevice" ' Steuerelement: Schaltfläche "cmdGet" ' Autor: K. Langbein Klaus@ActiveVB.de ' Dieses Programm wurde auf der Grundlage der ' Vorarbeiten von Murphy McCauley erstellt '----------------------------------------------------------------- ' Murphy McCauley (MurphyMc@Concentric.NET) 08/14/99 ' http://www.fullspectrum.com/deeth/ '----------------------------------------------------------------- Option Explicit Private Type WaveOutCaps ManufacturerID As Integer ProductID As Integer DriverVersion As Long ProductName(1 To 32) As Byte Formats As Long Channels As Integer dwSupport As Long End Type Private Const WAVE_INVALIDFORMAT = &H0& ' ungueltiges format Private Const WAVE_FORMAT_1M08 = &H1& ' 11.025 kHz, Mono, 8-bit Private Const WAVE_FORMAT_1S08 = &H2& ' 11.025 kHz, Stereo, 8-bit Private Const WAVE_FORMAT_1M16 = &H4& ' 11.025 kHz, Mono, 16-bit Private Const WAVE_FORMAT_1S16 = &H8& ' 11.025 kHz, Stereo, 16-bit Private Const WAVE_FORMAT_2M08 = &H10& ' 22.05 kHz, Mono, 8-bit Private Const WAVE_FORMAT_2S08 = &H20& ' 22.05 kHz, Stereo, 8-bit Private Const WAVE_FORMAT_2M16 = &H40& ' 22.05 kHz, Mono, 16-bit Private Const WAVE_FORMAT_2S16 = &H80& ' 22.05 kHz, Stereo, 16-bit Private Const WAVE_FORMAT_4M08 = &H100& ' 44.1 kHz, Mono, 8-bit Private Const WAVE_FORMAT_4S08 = &H200& ' 44.1 kHz, Stereo, 8-bit Private Const WAVE_FORMAT_4M16 = &H400& ' 44.1 kHz, Mono, 16-bit Private Const WAVE_FORMAT_4S16 = &H800& ' 44.1 kHz, Stereo, 16-bit Private Declare Function waveOutGetDevCaps Lib "winmm.dll" _ Alias "waveOutGetDevCapsA" (ByVal uDeviceID _ As Long, lpCaps As WaveOutCaps, _ ByVal uSize As Long) As Long Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long Function getOptionWavetype() Dim i For i = 0 To 3 If optWavtype(i).Value = -1 Then getOptionWavetype = i Exit Function End If Next i End Function Function getSampleRate() Dim i For i = 0 To 2 If optSample(i).Value = -1 Then getSampleRate = Val(optSample(i).Caption) Exit Function End If Next i End Function Private Sub cmdGet_Click() Dim wavetype As Long Dim wtype Dim srate lstDevice.Clear wtype = getOptionWavetype srate = getSampleRate Select Case srate Case 11025 Select Case wtype Case 0 wavetype = WAVE_FORMAT_1M08 Case 1 wavetype = WAVE_FORMAT_1S08 Case 2 wavetype = WAVE_FORMAT_1M16 Case 3 wavetype = WAVE_FORMAT_1S16 End Select Case 22050 Select Case wtype Case 0 wavetype = WAVE_FORMAT_2M08 Case 1 wavetype = WAVE_FORMAT_2S08 Case 2 wavetype = WAVE_FORMAT_2M16 Case 3 wavetype = WAVE_FORMAT_2S16 End Select Case 44100 Select Case wtype Case 0 wavetype = WAVE_FORMAT_4M08 Case 1 wavetype = WAVE_FORMAT_4S08 Case 2 wavetype = WAVE_FORMAT_4M16 Case 3 wavetype = WAVE_FORMAT_4S16 End Select End Select Call FindCompatibleDevice(wavetype) End Sub Private Sub FindCompatibleDevice(DeviceFormat As Long) Dim Caps As WaveOutCaps Dim Device As Long For Device = 0 To waveOutGetNumDevs - 1 Call waveOutGetDevCaps(Device, Caps, Len(Caps)) If (Caps.Formats And DeviceFormat) Then lstDevice.AddItem StrConv(Caps.ProductName, vbUnicode) End If Next End Sub '-------- Ende Formular "frmDevice" alias Form1.frm -------- '-------------- Ende Projektdatei getCaps.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von BS am 18.12.2002 um 13:42
Hallo, wirklich ein nettes Tool! Meine Frage ist welche Adressen man bei der Konstante WAVE_FOTMAT_* eintragen muss, um 24-Bit, bzw. 96 kHz Geräte abzufragen (die Logik einfach eine '0' anzuhängen funktionierte leider nicht...;-)
Danke im Voraus
BS