class Diapason::Sound::WaveSampler
Attributes
sample_rate[RW]
Public Class Methods
new(sample_rate = 44100)
click to toggle source
# File lib/diapason/sound/wave_sampler.rb, line 4 def initialize(sample_rate = 44100) @sample_rate = sample_rate.to_f end
Public Instance Methods
cycles_per_frame(frequency)
click to toggle source
# File lib/diapason/sound/wave_sampler.rb, line 31 def cycles_per_frame(frequency) frequency / sample_rate end
each_sample(wave) { |call| ... }
click to toggle source
# File lib/diapason/sound/wave_sampler.rb, line 8 def each_sample(wave) return enum_for(:each_sample, wave) unless block_given? x = 0 loop do yield wave.call(x) x += cycle * cycles_per_frame(wave.frequency) end end
samples_for_duration(wave, duration) { |sample| ... }
click to toggle source
# File lib/diapason/sound/wave_sampler.rb, line 18 def samples_for_duration(wave, duration) return enum_for(:samples_for_duration, wave, duration) unless block_given? total_samples = (duration * sample_rate).round i = 0 each_sample(wave) do |sample| break if i == total_samples i += 1 yield sample end end