Sha256: 05bcdd698fa7ce1706d68b7a184897cc81c204bd5d78ad57f8326ddd2415c8a7

Contents?: true

Size: 1.2 KB

Versions: 6

Compression:

Stored size: 1.2 KB

Contents

require 'browser/audio/node'

module Browser; module Audio

class Context
  include Native::Wrapper

  alias_native :destination
  alias_native :listener
  alias_native :state

  alias_native :sample_rate, :sampleRate
  alias_native :current_time, :currentTime

  def self.supported?
    Browser.support?('Audio') || Browser.support?('Audio (Chrome)')
  end

  if Browser.supports? 'Audio'
    def initialize
      super `new AudioContext()`
    end
  elsif Browser.supports? 'Audio (Chrome)'
    def initialize
      super `new webkitAudioContext()`
    end
  else
    def initialize
      raise NotImplementedError, 'Audio unsupported'
    end
  end

  def gain
    Node::Gain.new(self)
  end

  def oscillator
    Node::Oscillator.new(self)
  end

  def delay(max_time)
    Node::Delay.new(self, max_time)
  end

  def dynamics_compressor
    Node::DynamicsCompressor.new(self)
  end

  def biquad_filter
    Node::BiquadFilter.new(self)
  end

  def stereo_panner
    Node::StereoPanner.new(self)
  end

  def periodic_wave(real, imaginary)
    `#{@native}.createPeriodicWave(new Float32Array(#{real}), new Float32Array(#{imaginary}));`
  end

  alias_native :suspend
  alias_native :resume
  alias_native :close
end

end; end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
opal-browser-0.3.4 opal/browser/audio.rb
atome-opal-browser-0.3.9.5 opal/browser/audio.rb
opal-browser-0.3.3 opal/browser/audio.rb
opal-browser-0.3.2 opal/browser/audio.rb
opal-browser-0.3.1 opal/browser/audio.rb
opal-browser-0.3.0 opal/browser/audio.rb