module PulseAnalysis::Conversion

Public Instance Methods

num_samples_to_formatted_time(sample_rate, num_samples) click to toggle source

Convert a quantity of samples to a formatted time string with regard to the sample rate. (eg ā€œ1m20sā€, ā€œ2m22.4sā€ @param [Integer] sample_rate Sample rate in hertz (eg 88200) @param [Integer] num_samples @return [String]

# File lib/pulse-analysis/conversion.rb, line 21
def num_samples_to_formatted_time(sample_rate, num_samples)
  total_seconds = num_samples_to_seconds(sample_rate, num_samples)
  min, sec = *total_seconds.divmod(60)
  # convert seconds to int if it has no decimal value
  if sec != 0
    if sec.to_i % sec == 0
      sec = sec.to_i
    else
      sec = sec.round(2)
    end
  end
  # only include minutes if there is a value
  result = min > 0 ? "#{min}m" : ""
  result + "#{sec}s"
end
num_samples_to_millis(sample_rate, num_samples) click to toggle source

Convert a quantity of samples to milliseconds with regard to the sample rate @param [Integer] sample_rate Sample rate in hertz (eg 88200) @param [Integer] num_samples @return [Float]

# File lib/pulse-analysis/conversion.rb, line 42
def num_samples_to_millis(sample_rate, num_samples)
  (num_samples.to_f / sample_rate) * 1000
end
num_samples_to_seconds(sample_rate, num_samples) click to toggle source

Convert a quantity of samples to seconds with regard to the sample rate @param [Integer] sample_rate Sample rate in hertz (eg 88200) @param [Integer] num_samples @return [Float]

# File lib/pulse-analysis/conversion.rb, line 12
def num_samples_to_seconds(sample_rate, num_samples)
  num_samples.to_f / sample_rate
end