Method: Musiki::Makam#initialize

Defined in:
lib/musiki.rb

#initialize(m, up = true, down = true) ⇒ Makam

Returns a new instance of Makam.



209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/musiki.rb', line 209

def initialize m, up = true, down = true
  GC.start
  m = m.name if m.is_a?(Note)
  m = NOTES[m][:name] if m.is_a?(Integer)
  if MAKAM.has_key?(m.tr_to_ascii.downcase.gsub(/\W/,""))
    g = MAKAM[m.tr_to_ascii.downcase.gsub(/\W/,"")]
  elsif MAKAM_ALIAS.has_key?(m.tr_to_ascii.downcase.gsub(/\W/,""))
    g = MAKAM[MAKAM_ALIAS[m.tr_to_ascii.downcase.gsub(/\W/,"")]]
  elsif g = (MAKAM.map{|i,j| j[:code] == m ? j : nil}-[nil])[0]
  elsif m.scan(/\w\d/).length > 1
    g = {:name=>"Sallama",:code=>m}
  end
  return unless g
  if up and down
    self.setup(g)
    @up = self
    @down = Makam.new(m, false, true)
  elsif up
    self.setup(g)
    @up = self
    @down = nil
  elsif down
    self.setdown(g)
    @up = nil
    @down = self
  end
end