Class: RoadToRubykaigi::Audio::AudioEngine
- Inherits:
-
FFI::PortAudio::Stream
- Object
- FFI::PortAudio::Stream
- RoadToRubykaigi::Audio::AudioEngine
- Includes:
- FFI::PortAudio
- Defined in:
- lib/road_to_rubykaigi/audio/audio_engine.rb
Instance Method Summary collapse
- #add_source(source) ⇒ Object
- #mute ⇒ Object
- #process(_input, output, framesPerBuffer, _timeInfo, _statusFlags, _userData) ⇒ Object
- #remove_source(source) ⇒ Object
- #unmute ⇒ Object
Instance Method Details
#add_source(source) ⇒ Object
25 26 27 |
# File 'lib/road_to_rubykaigi/audio/audio_engine.rb', line 25 def add_source(source) @sources << source.rewind end |
#mute ⇒ Object
33 34 35 |
# File 'lib/road_to_rubykaigi/audio/audio_engine.rb', line 33 def mute @muted = true end |
#process(_input, output, framesPerBuffer, _timeInfo, _statusFlags, _userData) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/road_to_rubykaigi/audio/audio_engine.rb', line 8 def process(_input, output, framesPerBuffer, _timeInfo, _statusFlags, _userData) samples = Array.new(framesPerBuffer, 0.0) unless @muted @sources.each do |source| framesPerBuffer.times do |i| sample = source.generate * source.gain samples[i] += sample end remove_source(source) if source.finished? end end output.write_array_of_float(samples) :paContinue end |
#remove_source(source) ⇒ Object
29 30 31 |
# File 'lib/road_to_rubykaigi/audio/audio_engine.rb', line 29 def remove_source(source) @sources.delete(source) end |
#unmute ⇒ Object
37 38 39 |
# File 'lib/road_to_rubykaigi/audio/audio_engine.rb', line 37 def unmute @muted = false end |