class Diatone::Note
Public Class Methods
fix(i)
click to toggle source
# File lib/diatone.rb, line 74 def self.fix(i) if i.is_a? Numeric return i end unless i.to_s[0] == i[0].to_i.to_s i = tone2ord(i) end return i end
get(s)
click to toggle source
# File lib/diatone.rb, line 93 def self.get (s) return [key(s,false)] end
getFreq(i)
click to toggle source
# File lib/diatone.rb, line 101 def self.getFreq (i) i = fix(i) return 440.0 * ( STEP ** (i-9) ) end
key(s, ord=true)
click to toggle source
# File lib/diatone.rb, line 84 def self.key(s, ord=true) s = fix(s) s = ord2tone(s, true) unless ord return s end return TONES.rindex {|a| a == s } end
name(s)
click to toggle source
# File lib/diatone.rb, line 97 def self.name (s) return key(s,false) end
ord2tone( i, key = false )
click to toggle source
# File lib/diatone.rb, line 54 def self.ord2tone ( i, key = false ) i += 48 s = TONES[i% CHR] s = s + (i/ CHR).floor.to_s unless key return s end
tone2ord(s)
click to toggle source
# File lib/diatone.rb, line 61 def self.tone2ord (s) if s[-2] == s[-2].to_i.to_s i = s[-2..-1].to_i * CHR elsif s[-1] == s[-1].to_i.to_s i = s[-1].to_i * CHR else i = 48 end if s[1] == 'b' then i -= 1 elsif s[1] == '♯' then i += 1 end return i + TONES.rindex { |a| a == s[0].upcase } - 48 end