class MorseCode::Wave

Attributes

message[R]

Public Class Methods

new(message, frequency = 600, sample_rate = 8000) click to toggle source
# File lib/morse_code/wave.rb, line 9
def initialize(message, frequency = 600, sample_rate = 8000)
  @message = message
  @sample_rate = sample_rate
  @sample = MorseCode::Sample.new(message, frequency, sample_rate)
end

Public Instance Methods

generate() click to toggle source
# File lib/morse_code/wave.rb, line 15
def generate
  buffer = WaveFile::Buffer.new(pcm_samples, WaveFile::Format.new(:mono, :float, @sample_rate))
  WaveFile::Writer.new(filepath, WaveFile::Format.new(:mono, :pcm_16, @sample_rate)) do |writer|
    writer.write(buffer)
  end
  filepath
end

Private Instance Methods

filename() click to toggle source
# File lib/morse_code/wave.rb, line 29
def filename
  "#{Digest::MD5.hexdigest(message)[0, 10]}.wav"
end
filepath() click to toggle source
# File lib/morse_code/wave.rb, line 25
def filepath
  "/tmp/morse_code-#{filename}"
end
pcm_samples() click to toggle source
# File lib/morse_code/wave.rb, line 33
def pcm_samples
  @pcm_samples ||= @sample.pcm_samples
end