トラック
/
Python
Python
/
演習
/
音階ジェネレーター
音階ジェネレーター

音階ジェネレーター

中級

説明

半音階

西洋音楽の音階は、半音階(12音)をもとにしています。 この音階は、次のような音の集まりとして表せます。

A, A♯, B, C, C♯, D, D♯, E, F, F♯, G, G♯

あるシャープの音(♯で表します)は、その上の音のフラット(♭で表します)としても表せるので、半音階は次のようにも書けます。

A, B♭, B, C, D♭, D, E♭, E, F, G♭, G, A♭

長音階と短音階、および旋法は、この12の音の集まりの部分集合です。 これらは7つの音をもち、全音階と呼ばれます。 これらの音階に含まれる音は、主音(始まりの音)に応じて、シャープまたはフラットのどちらかで書きます。 次は、ある主音に対して、音階をフラットで表すか、シャープで表すかを示す表です。

調号 長調 短調
ナチュラル C a
シャープ G, D, A, E, B, F♯ e, b, f♯, c♯, g♯, d♯
フラット F, B♭, E♭, A♭, D♭, G♭ d, g, c, f, b♭, e♭

音楽理論の一般的な慣習では、ナチュラルの調「C」と「a」は、上行するときはシャープの音階に、下行するときはフラットの音階に従うことに注意してください。 この演習では、音階は上行する場合だけを扱います。

課題

主音が与えられたら、その主音から始まる12音の半音階を生成します。

  • 基準の音階を適切にずらして、与えられた主音から始まる12の音をすべて返します。
  • 与えられた主音について、その音階をフラットで返すかシャープで返すかを判断します。
  • 与えられた主音の大文字・小文字にかかわらず、すべての音を大文字で返します(フラットのbは除きます)。

全音階

全音階をはじめ、半音階から導かれるすべての音階は、音程をもとに組み立てられます。 音程とは、2つの音の間の隔たりです。

最も単純な音程は、隣り合う2つの音の間にあるもので、「半音」または「短2度」と呼ばれます(小文字のmと書くこともあります)。 間に1つの音をはさむ2つの音の間の音程は、「全音」または「長2度」と呼ばれます(大文字のMと書きます)。 全音階は、隣り合う音の間にこの2つの音程だけを使って組み立てられます。

全音階以外の音階には、他の音程が含まれることもあります。 「増2度」の音程はAと書き、間に2つの音をはさみます(たとえばAからC、またはD♭からE)。あるいは「全音」と「半音」を足したものです。 もっと小さい音程や大きい音程もありますが、この演習では扱いません。

課題

主音と一連の音程が与えられたら、その主音から始まり、指定された音程のパターンに従う音階を生成します。

これは半音階を生成するのと似ていますが、12の音を返す代わりに、N個の音程に対してN+1個の音を返します。 最初の音は、常に与えられた主音です。 次に、パターン内の各音程について、前の音から始めて、その音程が示す数の音を飛ばすことで、次の音を決めます。

たとえば、Gから始めて7つの音程MMmMMMmを使うと、次の8つの音になります。

音 理由
G 主音
A MはGから全音で、G♯を飛ばすことを示します
B MはAから全音で、A♯を飛ばすことを示します
C mはBから半音で、何も飛ばしません
D MはCから全音で、C♯を飛ばすことを示します
E MはDから全音で、D♯を飛ばすことを示します
F♯ MはEから全音で、Fを飛ばすことを示します
G mはF♯から半音で、何も飛ばしません
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Python Exercism

音階ジェネレーターを始める準備はできましたか?

Exercismに登録すれば、17個のコンセプト146個の演習、そして本物の人間によるメンタリングとともに、Pythonを学んでマスターできます。すべて無料です。