Общедоступный интерфейс
#
PortAudio.PortAudioStream
— Type
PortAudioStream(input_channels = 2, output_channels = 2; options...)
PortAudioStream(duplex_device, input_channels = 2, output_channels = 2; options...)
PortAudioStream(input_device, output_device, input_channels = 2, output_channels = 2; options...)
Звуковые устройства могут быть либо экземплярами PortAudioDevice
, которые возвращает функция devices
, либо строками с именами устройств, которые сообщает операционная система. Чтобы поток использовался только для вывода, присвойте input_channels
значение 0
; чтобы поток использовался только для ввода, присвойте output_channels
значение 0
. Если вместо количества каналов передается функция maximum
, используйте максимальное количество каналов, допускаемое соответствующим устройством. Если указано единственное устройство duplex_device
, оно используется как для ввода, так и для вывода. Если устройства не указаны, используются системные устройства по умолчанию.
Тип PortAudioStream
поддерживает все функции потока и буфера, определенные в SampledSignals.jl по умолчанию. Например, при загрузке SampledSignals с помощью using SampledSignals
можно считать данные за 5 секунд в буфер с помощью buf = read(stream, 5s)
независимо от частоты дискретизации устройства. write(stream, stream)
создаст обратную петлю для считывания данных из входного потока и их воспроизведения в выходном.
Параметры:
-
adjust_channels = false
: при значенииtrue
, еслиinput_channels
илиoutput_channels
превышает максимальное значение для соответствующего устройства, выполняется корректировка до максимального значения. -
call_back = C_NULL
: функция обратного вызова PortAudio.
В настоящее время можно передавать только C_NULL
.
-
eltype = Float32
: тип выборки для звукового потока. -
flags = PortAudio.paNoFlag
: флаги PortAudio. -
frames_per_buffer = 128
: количество фреймов на буфер. -
input_info = C_NULL
: информация о потоке, относящаяся к API хоста, для устройства ввода.
В настоящее время можно передавать только C_NULL
.
-
latency = nothing
: запрошенная задержка. При слишком низком значении поток может быть недогружен; рекомендуется использовать значения по умолчанию. Если оставить значениеnothing
, будут использоваться следующие значения по умолчанию.-
Для потоков, предназначенных только для ввода или только для вывода, используйте большую задержку по умолчанию для соответствующего устройства.
-
Для дуплексных потоков используйте максимальную из больших задержек по умолчанию для устройств ввода и вывода.
-
-
output_info = C_NULL
: информация о потоке, относящаяся к API хоста, для устройства вывода.
В настоящее время можно передавать только C_NULL
.
-
reader = PortAudio.SampledSignalsReader()
: устройство чтения, считывающее входные данные.
По умолчанию PortAudio.SampledSignalsReader
. Пользователи могут передавать собственные средства чтения; см. описание PortAudio.Scribe
.
-
samplerate = nothing
: частота дискретизации. Если оставить значениеnothing
, будут использоваться следующие значения по умолчанию.-
Для потоков, предназначенных только для ввода или только для вывода, используйте частоту дискретизации по умолчанию для соответствующего устройства.
-
Для дуплексных потоков используйте частоту дискретизации по умолчанию, если она одинакова для устройств ввода и вывода; в противном случае выдается ошибка.
-
-
warn_xruns = true
: выводится предупреждение, если поток перегружен или недогружен, что часто происходит при компиляции Julia или при особенно большом прогоне сборки мусора.
Влияет только на дуплексные потоки.
-
writer = PortAudio.SampledSignalsWriter()
: устройство чтения, записывающее выходные данные.
По умолчанию PortAudio.SampledSignalsReader
. Пользователи могут передавать собственные средства чтения; см. описание PortAudio.Scribe
.
Примеры:
Настройка сквозной передачи звука с микрофона на динамик
julia> using PortAudio, SampledSignals
julia> stream = PortAudioStream(2, 2; warn_xruns = false);
julia> try
# для отмены нажмите CTRL+C
write(stream, stream, 2s)
finally
close(stream)
end
Для автоматического закрытия потока используйте синтаксис do
julia> using PortAudio, SampledSignals
julia> PortAudioStream(2, 2; warn_xruns = false) do stream
write(stream, stream, 2s)
end
Открытие устройств по именам
using PortAudio, SampledSignals
PortAudioStream("Built-in Microph", "Built-in Output"; warn_xruns = false) do stream
write(stream, stream, 2s)
end
2 s
Запись звука в течение 10 секунд и сохранение записи в OGG-файл
julia> using PortAudio, SampledSignals, LibSndFile
julia> PortAudioStream(2, 0; warn_xruns = false) do stream
buf = read(stream, 10s)
save(joinpath(tempname(), ".ogg"), buf)
end
2 s
#
PortAudio.devices
— Method
devices()
Составляет список устройств, доступных в системе. Устройства отображаются с указанием внутреннего имени и максимального количества каналов ввода и вывода.