From e7cdbad4b36e15328a9c3777ec01597e325bcd38 Mon Sep 17 00:00:00 2001 From: Spencer Russell Date: Mon, 8 Aug 2016 23:34:54 -0400 Subject: [PATCH] now pulls samplerate from device by default. fixes #4 --- src/PortAudio.jl | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/PortAudio.jl b/src/PortAudio.jl index 27ca07e..659cc05 100644 --- a/src/PortAudio.jl +++ b/src/PortAudio.jl @@ -51,6 +51,7 @@ type PortAudioDevice hostapi::UTF8String maxinchans::Int maxoutchans::Int + defaultsamplerate::Float64 idx::PaDeviceIndex end @@ -59,6 +60,7 @@ PortAudioDevice(info::PaDeviceInfo, idx) = PortAudioDevice( unsafe_string(Pa_GetHostApiInfo(info.host_api).name), info.max_input_channels, info.max_output_channels, + info.default_sample_rate, idx) function devices() @@ -130,7 +132,18 @@ end # this is the top-level outer constructor that all the other outer constructors # end up calling function PortAudioStream(indev::PortAudioDevice, outdev::PortAudioDevice, - inchans=-1, outchans=-1; eltype=Float32, samplerate=48000Hz, blocksize=DEFAULT_BLOCKSIZE) + inchans=-1, outchans=-1; eltype=Float32, samplerate=-1, blocksize=DEFAULT_BLOCKSIZE) + if samplerate == -1 + sampleratein = indev.defaultsamplerate * Hz; + samplerateout = outdev.defaultsamplerate * Hz; + if inchans > 0 && outchans > 0 && sampleratein != samplerateout + error("Can't open duplex stream with mismatched samplerates") + elseif inchans > 0 + samplerate = sampleratein + else + samplerate = samplerateout + end + end PortAudioStream{eltype, typeof(samplerate)}(indev, outdev, inchans, outchans, samplerate, blocksize) end