module AudioPlayback::Device

Audio IO devices

Public Instance Methods

by_id(id) click to toggle source

Get a device by its ID @param [Integer] id @return [Output]

# File lib/audio-playback/device.rb, line 26
def by_id(id)
  outputs.find { |device| [device, device.id].include?(id) }
end
by_name(name) click to toggle source

Get a device by its name @param [String] name @return [Output]

# File lib/audio-playback/device.rb, line 33
def by_name(name)
  outputs.find { |device| device.name == name }
end
default_output() click to toggle source

The system default output @return [Output]

# File lib/audio-playback/device.rb, line 39
def default_output
  by_id(FFI::PortAudio::API.Pa_GetDefaultOutputDevice)
end
device_info(id) click to toggle source

Get system device info given a device ID @param [Integer] id @return [FFI::PortAudio::API::PaDeviceInfo]

# File lib/audio-playback/device.rb, line 46
def device_info(id)
  FFI::PortAudio::API.Pa_GetDeviceInfo(id)
end
outputs() click to toggle source

All output devices @return [Array<Output>]

# File lib/audio-playback/device.rb, line 13
def outputs
  AudioPlayback.ensure_initialized
  if @devices.nil?
    count = FFI::PortAudio::API.Pa_GetDeviceCount
    ids = (0..count-1).to_a.select { |id| output?(id) }
    @devices = ids.map { |id| Output.new(id) }
  end
  @devices
end

Private Instance Methods

output?(id) click to toggle source

Is the device with the given ID an output? @param [Integer] id @return [Boolean]

# File lib/audio-playback/device.rb, line 55
def output?(id)
  device_info(id)[:maxOutputChannels] > 0
end