class Musi::Note

Public Class Methods

flat(note) click to toggle source
# File lib/musi/note.rb, line 101
def self.flat(note)
  self.lower_helper(note, 1, 1)
end
lowerA4(note) click to toggle source
# File lib/musi/note.rb, line 163
def self.lowerA4(note)
  self.lower_helper(note, 3, 6)
end
lowerM2(note) click to toggle source
# File lib/musi/note.rb, line 122
def self.lowerM2(note)
  self.lower_helper(note, 1, 2)
end
lowerM3(note) click to toggle source
# File lib/musi/note.rb, line 141
def self.lowerM3(note)
  self.lower_helper(note, 2, 4)
end
lowerM6(note) click to toggle source
# File lib/musi/note.rb, line 194
def self.lowerM6(note)
  self.lower_helper(note, 5, 9)
end
lowerM7(note) click to toggle source
# File lib/musi/note.rb, line 212
def self.lowerM7(note)
  self.lower_helper(note, 6, 11)
end
lowerP4(note) click to toggle source
# File lib/musi/note.rb, line 150
def self.lowerP4(note)
  self.lower_helper(note, 3, 5)
end
lowerP5(note) click to toggle source
# File lib/musi/note.rb, line 176
def self.lowerP5(note)
  self.lower_helper(note, 4, 7)
end
lower_helper(note, diatonic_step, semitones) click to toggle source
# File lib/musi/note.rb, line 65
def self.lower_helper(note, diatonic_step, semitones)
  letter = note[0]
  i = 13
  while i >= 7
    if letter == @@letter_names[i]
      new_letter = @@letter_names[i - diatonic_step]
      break
    end
    i -= 1
  end
  if !note.match /b/
    if @@sharp_notes[note] - @@sharp_notes[new_letter] == semitones || @@sharp_notes[note] - @@sharp_notes[new_letter] == (semitones - 12)
      return new_letter
    elsif @@sharp_notes[note] - @@sharp_notes[new_letter] == semitones + 1 || @@sharp_notes[note] - @@sharp_notes[new_letter] == (semitones - 11)
      new_letter += "#"
    else
      new_letter += "b"
    end
  else
    if @@flat_notes[note] - @@flat_notes[new_letter] == semitones || @@flat_notes[note] - @@flat_notes[new_letter] == (semitones - 12)
      return new_letter
    else
      new_letter += "b"
    end
  end
end
lower_whole_step(note) click to toggle source
# File lib/musi/note.rb, line 118
def self.lower_whole_step(note)
  self.lower_helper(note, 1, 2)
end
lowerd5(note) click to toggle source
# File lib/musi/note.rb, line 167
def self.lowerd5(note)
  self.lower_helper(note, 4, 6)
end
lowerm2(note) click to toggle source
# File lib/musi/note.rb, line 105
def self.lowerm2(note)
  self.lower_helper(note, 1, 1)
end
lowerm3(note) click to toggle source
# File lib/musi/note.rb, line 131
def self.lowerm3(note)
  self.lower_helper(note, 2, 3)
end
lowerm6(note) click to toggle source
# File lib/musi/note.rb, line 185
def self.lowerm6(note)
  self.lower_helper(note, 5, 8)
end
lowerm7(note) click to toggle source
# File lib/musi/note.rb, line 203
def self.lowerm7(note)
  self.lower_helper(note, 6, 10)
end
raiseA4(note) click to toggle source

tritone

# File lib/musi/note.rb, line 155
def self.raiseA4(note)
  self.raise_helper(note, 3, 6)
end
raiseM2(note) click to toggle source
# File lib/musi/note.rb, line 114
def self.raiseM2(note)
  self.raise_helper(note, 1, 2)
end
raiseM3(note) click to toggle source

M3

# File lib/musi/note.rb, line 137
def self.raiseM3(note)
  self.raise_helper(note, 2, 4)
end
raiseM6(note) click to toggle source

M6

# File lib/musi/note.rb, line 190
def self.raiseM6(note)
  self.raise_helper(note, 5, 9)
end
raiseM7(note) click to toggle source

M7

# File lib/musi/note.rb, line 208
def self.raiseM7(note)
  self.raise_helper(note, 6, 11)
end
raiseP4(note) click to toggle source

P4

# File lib/musi/note.rb, line 146
def self.raiseP4(note)
  self.raise_helper(note, 3, 5)
end
raiseP5(note) click to toggle source

P5

# File lib/musi/note.rb, line 172
def self.raiseP5(note)
  self.raise_helper(note, 4, 7)
end
raise_helper(note, diatonic_step, semitones) click to toggle source
# File lib/musi/note.rb, line 38
def self.raise_helper(note, diatonic_step, semitones)
  letter = note[0]
  i = 0
  while i < 7
    if letter == @@letter_names[i]
      new_letter = @@letter_names[i + diatonic_step]
      break
    end
    i += 1
  end
  if !note.match /b/
    if @@sharp_notes[new_letter] - @@sharp_notes[note] == semitones || @@sharp_notes[new_letter] - @@sharp_notes[note] == (semitones - 12)
      return new_letter
    elsif @@sharp_notes[new_letter] - @@sharp_notes[note] == semitones - 1 || @@sharp_notes[new_letter] - @@sharp_notes[note] == (semitones - 13)
      new_letter += "#"
    else
      new_letter += "b"
    end
  else
    if @@flat_notes[new_letter] - @@flat_notes[note] == semitones || @@flat_notes[new_letter] - @@flat_notes[note] == (semitones - 12)
      return new_letter
    else
      new_letter += "b"
    end
  end
end
raise_whole_step(note) click to toggle source

M2

# File lib/musi/note.rb, line 110
def self.raise_whole_step(note)
  self.raise_helper(note, 1, 2)
end
raised5(note) click to toggle source
# File lib/musi/note.rb, line 159
def self.raised5(note)
  self.raise_helper(note, 4, 6)
end
raisem2(note) click to toggle source
# File lib/musi/note.rb, line 97
def self.raisem2(note)
  self.raise_helper(note, 1, 1)
end
raisem3(note) click to toggle source

m3

# File lib/musi/note.rb, line 127
def self.raisem3(note)
  self.raise_helper(note, 2, 3)
end
raisem6(note) click to toggle source

m6

# File lib/musi/note.rb, line 181
def self.raisem6(note)
  self.raise_helper(note, 5, 8)
end
raisem7(note) click to toggle source

m7

# File lib/musi/note.rb, line 199
def self.raisem7(note)
  self.raise_helper(note, 6, 10)
end
sharp(note) click to toggle source

m2

# File lib/musi/note.rb, line 93
def self.sharp(note)
  self.raise_helper(note, 1, 1)
end