class WaitUp::Pipeline

Wait Up pipeline class

Attributes

filename[R]
tempo[R]

Public Class Methods

new(filename, tempo) click to toggle source
# File lib/wait_up/pipeline.rb, line 8
def initialize(filename, tempo)
  @filename = filename
  @tempo = tempo

  play_bin.set_property 'uri', "file://#{File.absolute_path(filename)}"

  sink_bin.add audiosink
  sink_bin.add postconverter
  sink_bin.add speed_changer

  speed_changer.link postconverter
  postconverter.link audiosink

  sink_pad = Gst::GhostPad.new 'sink', speed_changer.sinkpads.first
  sink_bin.add_pad sink_pad

  play_bin.audio_sink = sink_bin
  play_bin.state = :paused
  play_bin.get_state(-1)
end

Public Instance Methods

audiosink() click to toggle source
# File lib/wait_up/pipeline.rb, line 47
def audiosink
  @audiosink ||= Gst::ElementFactory.make('autoaudiosink', 'audiosink')
end
play() click to toggle source
# File lib/wait_up/pipeline.rb, line 29
def play
  play_bin.set_state :playing
end
play_bin() click to toggle source
# File lib/wait_up/pipeline.rb, line 33
def play_bin
  @play_bin ||= Gst::ElementFactory.make 'playbin', nil
end
postconverter() click to toggle source
# File lib/wait_up/pipeline.rb, line 51
def postconverter
  @postconverter ||= Gst::ElementFactory.make('audioconvert', 'postconverter')
end
preconverter() click to toggle source
# File lib/wait_up/pipeline.rb, line 55
def preconverter
  @preconverter ||= Gst::ElementFactory.make('audioconvert', 'preconverter')
end
sink_bin() click to toggle source
# File lib/wait_up/pipeline.rb, line 37
def sink_bin
  @sink_bin ||= Gst::Bin.new('sinkbin')
end
speed_changer() click to toggle source
# File lib/wait_up/pipeline.rb, line 41
def speed_changer
  @speed_changer ||= Gst::ElementFactory.make('pitch', 'speed changer').tap do |element|
    element.set_property 'tempo', tempo
  end
end