@libraz/libcantus - v1.1.0
    Preparing search index...

    Function supportsFunctionalHarmony

    • Whether functional (Roman-numeral) analysis applies to a scale.

      True for common-practice and modal scales, false for everything classed 'non-functional' — analysis that would otherwise read a raga as a chord progression can ask here first.

      The two ways of naming a scale are answered differently, exactly as scaleSystemOf answers them. A name carries its tradition, so 'hijaz' is false. A KeyScale carries only a mask, and a mask shared with a Western scale is read the Western way — maqam Hijaz and the phrygian dominant are the same seven pitch classes, so that mask is modal and answers true. A mask that names no built-in scale answers true as well, which keeps a caller's own mask being analysed the way it always has been. Pass the name whenever the tradition is known and the answer should follow it.

      Parameters

      Returns boolean

      True when functional harmony describes the scale.

      If scale is a string naming no built-in scale.

      import { supportsFunctionalHarmony, scaleByName } from '@libraz/libcantus';
      supportsFunctionalHarmony('harmonicMinor'); // true
      supportsFunctionalHarmony('bhairav'); // false
      supportsFunctionalHarmony('hijaz'); // false — named, so read as a maqam
      supportsFunctionalHarmony(scaleByName('hijaz', 0)); // true — its mask is the phrygian dominant
      supportsFunctionalHarmony(scaleByName('ryukyu', 0)); // false — a mask no Western scale shares