Module: Musiki

Defined in:
lib/musiki.rb

Defined Under Namespace

Classes: Makam, Note

Constant Summary collapse

OCTAVE =
[
  ["kaba çârgâh","çârgâh",0,0,1] ,
  ["kaba nîm hicâz","nîm hicâz", 8, -5, 4],
  ["kaba hicâz","hicâz", -11, 7, 1],
  ["kaba dik hicâz","dik hicâz", 16, -10, 3],
  ["yegâh","nevâ", -3, 2, 1],
  ["kaba nîm hisar","nîm hisâr", 5, -3, 4],
  ["kaba hisar","hisâr", -14, 9, 1],
  ["kaba dik hisar","dik hisâr", 13, -8, 3],
  ["hüseynî aşîrân","hüseynî", -6, 4, 1],
  ["acem aşîrân","acem", 2, -1, 4],
  ["dik acem aşîrân ","dik acem", -17, 11, 1],
  ["ırak","eviç", 10, -6, 3],
  ["geveşt","mâhûr", -9, 6, 1],
  ["dik geveşt","dik mâhûr", 18, -11, 3],
  ["râst","gerdâniye", -1, 1, 1],
  ["nîm zîrgûle","nîm şehnâz", 7, -4, 4],
  ["zîrgûle","şehnâz", -12, 8, 1],
  ["dik zîrgûle","dik şehnâz", 15, -9, 3],
  ["dügâh","muhayyer", -4, 3, 1],
  ["kürdî","sünbüle", 4, -2, 4],
  ["dik kürdî","dik sünbüle", -15, 10, 1],
  ["segâh","tîz segâh", 12, -7, 3],
  ["bûselik","tîz bûselik", -7, 5, 1],
  ["dik bûselik","tîz dik bûselik", 20, -12, 3],
  ["çârgâh","tîz çârgâh", 1, 0, 1]
]
MAKAM =
{
  "cargah" => {:name => "çârgâh", :code => "c5c4"},
  "buselik" => {:name => "bûselik", :code => "b5k4"},
  "sehnazbuselik" => {:name => "şehnâz bûselik", :code => "b5h4"},
  "kurdi" => {:name => "kürdî", :code => "k4b5"},
  "rast" => {:name => "râst", :code => "r5r4"},
  "ussak" => {:name => "uşşak", :code => "u4b5"},
  "beyati" => {:name => "beyâtî", :code => "u4b5"},
  "ısfahan" => {:name => "isfahan", :code => "u4b5"},
  "humayun" => {:name => "hümâyûn", :code => "h4b5"},
  "hicaz" => {:name => "hicaz", :code => "h4r5"},
  "uzzal" => {:name => "uzzâl", :code => "h5u4"},
  "zirgulelihicaz" => {:name => "zîrgûle'li hicaz", :code => "h5h4"},
  "huseyni" => {:name => "hüseynî", :code => "u5u4"},
  #"muhayyer" => {:name => "muhayyer", :code => "u5u4"},
  #"gulizar" => {:name => "gülizâr", :code => "u5u4"},
  "neva" => {:name => "nevâ", :code => "u4r5"},
  #"tahir" => {:name => "tâhir", :code => "u4r5"},
  "karcigar" => {:name => "karcığar", :code => "u4h5"},
  "suznak" => {:name => "sûz'nâk", :code => "r5h4"},
  "neveser" => {:name => "nev'eser", :code => "n5h4"},
}
MAKAM_ALIAS =
{
  "buselik2" => "sehnazbuselik",
  "2buselik" => "sehnazbuselik",
  "ikincibuselik" => "sehnazbuselik",
}
NAMED_TRANSPOSITION =
{
  "mahur" => {:name => "mâhûr", :makam => "cargah", :tonic => "râst"},
  "acemasiran" => {:name => "acem aşîrân", :makam => "cargah", :tonic => "acem aşîrân"},
  "nihavend" => {:name => "nihâvend", :makam => "buselik", :tonic => "râst"},
  "ruhnuvaz" => {:name => "ruhnüvâz", :makam => "buselik", :tonic => "hüseynî aşîrân"},
  "sultaniyegah" => {:name => "sultânî yegâh", :makam => "buselik", :tonic => "yegâh"},
  "kurdilihicazkar" => {:name => "kürdî'li hicazkâr", :makam => "kurdi", :tonic => "râst"},
  "askefza" => {:name => "aşkefzâ", :makam => "kurdi", :tonic => "hüseynî aşîrân"},
  "zirgulelisuznak" => {:name => "zîrgûle'li sûz'nâk", :makam => "zirgulelihicaz", :tonic => "râst"},
  "hicazkar" => {:name => "hicazkâr", :makam => "zirgulelihicaz", :tonic => "râst"},
  "evcara" => {:name => "evcârâ", :makam => "zirgulelihicaz", :tonic => "ırâk"},
  "suzidil" => {:name => "sûz-i dil", :makam => "zirgulelihicaz", :tonic => "hüseynî aşîrân"},
  "seddiaraban" => {:name => "şedd-i arabân", :makam => "zirgulelihicaz", :tonic => "yegâh"},
  "rengidil" => {:name => "reng-i dil", :makam => "neveser", :tonic => "acem aşîrân"},
  "heftgah" => {:name => "heft-gâh", :makam => "segah", :tonic => "nîm hicaz"},
}
INTERVAL =
{
  F: {value: 1, sharp: "", flat: "", name: "koma"},
  E: {value: 3, sharp: "", flat: "", name: "eksik bakıye"},
  B: {value: 4, sharp: "", flat: "", name: "bakıye"},
  S: {value: 5, sharp: "", flat: "", name: "küçük mücenneb"},
  K: {value: 8, sharp: "", flat: "", name: "büyük mücenneb"},
  T: {value: 9, sharp: "", flat: "", name: "tanini"},
  A: {value: 12, sharp: "", flat: "", name: "artık ikili"},
  Z: {value: 13, sharp: "", flat: "", name: "artık ikili"}
}
TRIAD =
{
  c: {name: "çârgâh", interval: "TT", tonic:0},
  b: {name: "bûselik", interval: "TB", tonic:18},
  k: {name: "kürdî", interval: "BT", tonic:18},
  r: {name: "râst", interval: "TK", tonic:14},
  u: {name: "uşşak", interval: "KS", tonic:18},
  h: {name: "hicaz", interval: "SA", tonic:18},
  n: {name: "nikrîz", interval: "TS", tonic:14}
}
TETRAD =
{}
PENTAD =
{}
MODE =
{3 => TRIAD, 4 => TETRAD, 5 => PENTAD}
COMMA =
2 ** (1/53.0)
MODETONE =
2 ** (1/12.0)
NOTES =
[]
@@base =
64
@@verbose =
false

Class Method Summary collapse

Class Method Details

.baseObject



179
180
181
# File 'lib/musiki.rb', line 179

def self.base
  @@base
end

.set_base(base, update = false) ⇒ Object



183
184
185
186
# File 'lib/musiki.rb', line 183

def self.set_base base, update=false
  @@base = base
  Musiki.update if update
end

.updateObject



188
189
190
191
192
193
# File 'lib/musiki.rb', line 188

def self.update
  GC.start
  ObjectSpace.each_object(Musiki::Note) do |n|
    n.update
  end
end

.verbose!Object



201
202
203
# File 'lib/musiki.rb', line 201

def self.verbose!
  @@verbose = (not @@verbose)
end

.verbose?Boolean

Returns:

  • (Boolean)


197
198
199
# File 'lib/musiki.rb', line 197

def self.verbose?
  @@verbose
end