Общедоступный интерфейс
#
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()
Составляет список устройств, доступных в системе. Устройства отображаются с указанием внутреннего имени и максимального количества каналов ввода и вывода.