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