2013-08-07 7 views
1

В настоящее время я изо всех сил пытаюсь найти решение для программной установки частоты дискретизации и скорости передачи звука звуковой карты USB. Я работаю над переключением нашей тестовой программы с Windows XP на Windows 7, и у нас есть продукт, который действует как звуковая карта USB. Некоторые из наших тестов отправляют 48k сигналов через звуковую карту и измеряют сигнал после ее маршрутизации через ЦАП. Я думаю, что аппаратное обеспечение/программное обеспечение для аппаратных измерений не помещает его генератор сигналов в исключительный режим, и Windows запутывается и помещает устройство в общий режим, который по умолчанию устанавливает частоту дискретизации до 44.1k/16bit, я хотел бы изменить это значение когда мы запускаем устройство до 48k/24bit.Установите частоту дискретизации в окнах 7

Я надеюсь, что кто-то может подтолкнуть меня в правильном направлении, потому что все, что я вижу, говорит мне, что это невозможно ... (также, я бы предпочел .NET-решения или что-нибудь, что я могу call/execute из .NET будет в порядке).

Вот одна вещь, которую я пробовал, но это закончилось тем, что только создало объект для воспроизведения звука, он не устанавливает глубину выборки/бит навсегда.

Imports NAudio.Wave 

Module ConfigureDevice 

    Private Const SAMPLE_RATE As Integer = 48000 
    Private Const CHANNELS As Integer = 2 

    Sub Main(ByVal args() As String) 

     ConfigureDirectSound(args(0)) 

    End Sub 


    Private Sub ConfigureDirectSound(ByVal name As String) 

     Dim out As New DirectSoundOut(GetWaveOutDeviceNumber(name)) 
     Dim waveFormat = New WaveFormat(SAMPLE_RATE, CHANNELS) 
     Dim waveProvider = New BufferedWaveProvider(waveFormat) 

     out.Init(waveProvider) 

    End Sub 

    Private Function GetWaveOutDeviceNumber(ByVal name As String) As System.Guid 

     Dim devices = DirectSoundOut.Devices 

     For Each d In devices 
      If d.Description = name Then 
       Return d.Guid 
      End If 
     Next 

     Return Nothing 

    End Function 

End Module 
+0

Будет ли VB6 работать даже в Windows 7? Вы используете 32 или 64 бит Win7? – Tim

+0

Tim, VB6 поддерживается на протяжении всего жизненного цикла Windows 8, так что да, он работает. http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx Highcore, У меня нет никакого кода, все мои попытки были решениями с использованием методов, которые бы не сработали. Все, что я пробовал до сих пор, - это открытие аудиопотока на устройстве, я не хочу этого делать, я хочу изменить значение по умолчанию для Windows, которое я не могу найти после часов поиска. – Calvin

ответ

1

Похоже, вам нужно изучить WASAPI. Из того, что я читаю, это единственный способ программно заставить выходную частоту дискретизации, помимо изменения самого аудиофайла.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd371455(v=vs.85).aspx

Вы, возможно, придется искать вокруг для C++/CLI обертку для него (или написать его самостоятельно), чтобы получить любое использование из него в .NET.

+0

Я рассмотрю API напрямую, но я думаю, что у NAudio была обертка, и я ничего не видел. Я проверю это еще немного, спасибо. – Calvin

+0

Да У NAudio есть обертка WASAPI. Однако вы можете установить частоту дискретизации и глубину бита, если используете эксклюзивный режим. –

 Смежные вопросы

  • Нет связанных вопросов^_^