class AudioStream::AudioOutputDevice
Attributes
dev[R]
Public Class Methods
default_device(soundinfo:)
click to toggle source
# File lib/audio_stream/audio_output_device.rb, line 43 def self.default_device(soundinfo:) dev = CoreAudio.default_output_device({nominal_rate: soundinfo.samplerate}) new(dev, soundinfo: soundinfo) end
devices(soundinfo:)
click to toggle source
# File lib/audio_stream/audio_output_device.rb, line 48 def self.devices(soundinfo:) CoreAudio.devices({nominal_rate: soundinfo.samplerate}) .select{|dev| 0<dev.output_stream.channels } .map {|dev| new(dev, soundinfo: soundinfo) } end
new(dev, soundinfo:)
click to toggle source
Calls superclass method
AudioStream::AudioOutput::new
# File lib/audio_stream/audio_output_device.rb, line 5 def initialize(dev, soundinfo:) super() @dev = dev @channels = dev.output_stream.channels @buf = dev.output_buffer(soundinfo.window_size) end
Public Instance Methods
connect()
click to toggle source
# File lib/audio_stream/audio_output_device.rb, line 12 def connect @buf.start end
disconnect()
click to toggle source
# File lib/audio_stream/audio_output_device.rb, line 16 def disconnect @buf.stop end
on_completed()
click to toggle source
# File lib/audio_stream/audio_output_device.rb, line 39 def on_completed disconnect end
on_error(error)
click to toggle source
# File lib/audio_stream/audio_output_device.rb, line 34 def on_error(error) puts error puts error.backtrace.join("\n") end
on_next(input)
click to toggle source
# File lib/audio_stream/audio_output_device.rb, line 20 def on_next(input) window_size = input.window_size channels = input.channels case @channels when 1 input = input.mono when 2 input = input.stereo end @buf << input.to_sint_na end