class Sound::Data
Attributes
duration[R]
format[R]
pcm_data[R]
Public Class Methods
new(format = Format.new)
click to toggle source
# File lib/sound/data.rb, line 6 def initialize(format = Format.new) @format = format @pcm_data = [] end
Public Instance Methods
generate_sine_wave(freq, duration, volume)
click to toggle source
# File lib/sound/data.rb, line 10 def generate_sine_wave(freq, duration, volume) @pcm_data = [] @duration = duration ramp = 200.0 samples = (@format.sample_rate/2*duration/1000.0).floor samples.times do |sample| angle = (2.0*Math::PI*freq) * sample/samples * duration/1000 factor = Math.sin(angle) x = 32768.0*factor*volume if sample < ramp x *= sample/ramp end if samples - sample < ramp x *= (samples - sample)/ramp end @pcm_data << x.floor end self end
Also aliased as: sine_wave