class CW::Coreaudio
Public Class Methods
new()
click to toggle source
# File lib/cw/coreaudio.rb, line 9 def initialize dev = CoreAudio.default_output_device @buf = dev.output_buffer(8192) end
Public Instance Methods
generate_silence(number_of_samples)
click to toggle source
# File lib/cw/coreaudio.rb, line 36 def generate_silence(number_of_samples) ary = [] number_of_samples.round.times do |sample_number| ary << 0.0 end @buf << ary end
generate_tone(number_of_samples)
click to toggle source
# File lib/cw/coreaudio.rb, line 22 def generate_tone(number_of_samples) @sample_rate = 44100 @frequency = 1000 @w = (@frequency * TWO_PI) / @sample_rate ary = [] number_of_samples.round.times do |sample_number| amplitude = ramp_filter(number_of_samples, sample_number) sine_radians = @w * sample_number temp = (amplitude * Math.sin(sine_radians) * 0x7FFF).round ary << temp end @buf << ary end
ramp_filter(size, count)
click to toggle source
# File lib/cw/coreaudio.rb, line 14 def ramp_filter(size, count) @max_amplitude = 1 ramp = 0.03 ramp_point = @max_amplitude / ramp ampl = (count < ramp_point) ? (ramp * count) : @max_amplitude (count > (size - ramp_point)) ? (ramp * (size - count)) : ampl end
start()
click to toggle source
# File lib/cw/coreaudio.rb, line 44 def start @buf.start end
stop()
click to toggle source
# File lib/cw/coreaudio.rb, line 48 def stop @buf.stop end