Translate

Post Date:2022年6月24日 

7つのスケールでウォーキングベーラインを組み立てる

Ibanez UB804-MOB

アップライト・ベースの弾き方に慣れるために 「アップライト・ベースの運指トレーニング」で紹介した「バイブル・フォー・ジャズ・ベース」でのスケール練習をしています。

ロー・ポジションとハイ・ポジションそれぞれで、メジャー・スケールとマイナー・スケールの2パターンで練習しています。

スケール練習を行うことで、アップライトベースの右手と左手のフォーム、ポジション、運指にも少しづつ慣れてきました。

このスケールを覚えることは、運指練習だけでなく、ウォーキング・ベースラインの組み立てにも活用できます。

3年後、確実にジャズ・ベースが弾ける練習法」に7つのスケールについての説明がありますが、また新しい言葉がたくさん、、、。

と、いうことで今回は、スケールについてまとめてみました。


ダイアトニック・スケールとは?

「ダイアトニック・スケールとは、1オクターブを7つの音に分けた7音音階です。」というと、難しく聴こえますが、みんなが知ってる♪ドレミファソラシド♪のことです。

この♪ドレミファソラシド♪には、メジャースケールとマイナースケール以外に5種類、計7種類のスケールがあります(メジャー系3種類、マイナー系4種類)。

また、この7つのダイアトニック・スケール上に成り立つダイアトニック・コードが7つあります。ダイアトニックコードには、1度、3度、5度の3和音(トライアド)と、7度を加えた4和音(セブンスコード)があります。

以下、Key=C のダイアトニック・セブンスコードで説明をしていきますが、キーについては、象と散歩: ウォーキングベースを学ぶなら譜面が読めるようになろう(♯と♭との戦い) を参照してください。


Key=Cのダイアトニックスケール

下表は、調号(♭, ♯)が付かない、キーが C のダイアトニック・スケール、ダイアトニック・コード、スケールについてまとめた表になります。

備考欄にはメジャー系スケールであれば、メジャー・スケール(アイオニアン)と違う音について、マイナー系スケールであれば、マイナー・スケール(アエオリアン)と違う音についてを記載しています。

下表は Key=C ですが、キーが異なってもメジャー系であれば、Ⅰmaj7, IIm7, Ⅲm7, Ⅳmaj7, Ⅴ7, Ⅵm7, Ⅶm7♭5 というのは同じです。

Diatonic Scales (Key=C) Diatonic Code Scale 備考
C D E F G A B C D E F G A Ⅰmaj7Cmaj7 Ionian Major Scal
C D E F G A B C D E F G A IIm7Dm7 Dorian♭6→M6
C D E F G A B C D E F G A Ⅲm7Em7 PhrygianM2→♭2
C D E F G A B C D E F G A Ⅳmaj7Fmaj7 LydianP4→Aug4
C D E F G A B C D E F G A Ⅴ7G7 MixolydianM7→♭7
C D E F G A B C D E F G A Ⅵm7Am7Aeolian Minor Scale
C D E F G A B C D E F G A Ⅶm7♭5Bm7♭5 LocrianM2→♭2, P5→dim5

同じく、調号(♭, ♯)が付かない、キーが Am のダイアトニック・スケール、ダイアトニック・コード、スケールが下記になります。こちらもマイナー系のキーであれば Ⅰm7, IIm7♭5, ♭Ⅲmaj7, Ⅳm7, Ⅴm7, ♭Ⅵmaj7, ♭Ⅶ7 というのは同じです。

Diatonic Scales (Key=Am) Diatonic Code Scale 備考
A B C D E F G A B C D E F Ⅰm7Am7 Aeolian Minor Scale
A B C D E F G A B C D E F IIm7♭5Bm7♭5 LocrianM2→♭2, P5→dim5
A B C D E F G A B C D E F ♭Ⅲmaj7Cmaj7 IonianMajor Scal
A B C D E F G A B C D E F Ⅳm7Dm7 Dorian♭6→M6
A B C D E F G A B C D E F Ⅴm7Em7 PhrygianM2→♭2
A B C E E F G A B C D E F ♭Ⅵmaj7Fmaj7Lydian P4→Aug4
A B C D E F G A B C D E F ♭Ⅶ7G7 MixolydianM7→♭7

Ioinan Scale(アイオニアン・スケール)

アイオニアン・スケールは、いわゆるメジャースケールです。

記号英語日本語
RRoot完全1度
M2Major 2nd長2度
M3Major 3rd長3度
P4Perfect 4th完全4度
P5Perfect 5th完全5度
M6Major 6th長6度
M7Major 7th長7度
OctOctarve完全8度

Ⅰmaj7/♭Ⅲmaj7 で使えるスケールとなります。下の譜は Cmaj7(Cメジャーセブン)のスケールです。

Ioinan Scale(アイオニアン・スケール)

セブンスコードの構成音は、1度、3度、5度、7度なので、Cmaj7のCode Tone(コード・トーン)は、C,D,E,B です。

Code Tone 以外のD(2度), F(4度), A(6度) ですが、これをコード・トーンの後ろに音の高さ順に並び変えると C, D, E, B, D, F, A となり、Dは9度(9th)、Fは11度(11th)、Aは13度(13th)となります。

この9th, 11th, 13th は Tension Note(テンション・ノート)と呼ばれています。テンションとは緊張という意味ですが、Jazzではこの緊張感ある音がよく使わます。


Avoid Note(アボイド・ノート:回避音)

スケールの中には、不協和音となる音なので使わない方がよいという Avoid Note(アボイド・ノート)というのがあります。

アイオニアン・スケールでは、4度(P4)/11度(11th)の音がコード・トーンの3度(M3)と半音しか違わず、響きが汚くなるため Avoid Note(アボイド・ノート) となります。

Avoid Note は和音としては避けるべき音とされていますが、ベースは基本的に単音の楽器なので、ウォーキングベースラインの中では、通過音として Avoid Note も使われています。


Drian Scale(ドリアン・スケール)

ドリアン・スケールは、マイナー系のスケールで、Ⅱm7/Ⅵm7 で使えるスケールです。

記号英語日本語
RRoot完全1度
M2Major 2nd長2度
♭3Minor 3rd短3度
P4Perfect 4th完全4度
P5Perfect 5th完全5度
M6Major 6th長6度
♭7Minor 7th短7度
OctOctarve完全8度

下の譜は Dm7のスケールとなります。

Drian Scale(ドリアン・スケール)

マイナー・スケールとドリアン・スケールとの違いは、♭6 が M6 へ半音上がっていることです。ドリアンスケールの特性音が、M6なのに M6/13th は、コード・トーンである ♭3(3度) と増4度(トライトーン)の関係にあり不協和音となるため Avoid Note になっています。

まだ勉強不足です、、、。


Phrygian Scale(フリジアン・スケール)

フリジアン・スケールもマイナー系スケールで IIm7/Ⅴm7 で使えるスケールです。

記号英語日本語
RRoot完全1度
♭2Minor 2nd短2度
♭3Minor 3rd短3度
P4Perfect 4th完全4度
P5Perfect 5th完全5度
♭6Minor 6th短6度
♭7Minor 7th短7度
OctOctarve完全8度

下の譜は Em7のスケールとなります。

Phrygian Scale(フリジアン・スケール)

マイナー・スケールとフリジアン・スケールの違いは、M2 が ♭2 へ半音下がっていることです。フリジアン・スケールには Avoid Note はありません。


Lydian Scale(リディアン・スケール)

リディアン・スケールはメジャー系スケールで Ⅳmaj7/♭Ⅵmaj7 で使えるスケールです。

記号英語日本語
RRoot完全1度
M2Major 2nd長2度
M3Major 3rd長3度
Aug4Augmented 4th増4度
P5Perfect 5th完全5度
M6Major 6th長6度
M7Major 7th長7度
OctOctarve完全8度

下の譜は Fmaj7のスケールとなります。

Lydian Scale(リディアン・スケール)

メジャー・スケールとリディアン・スケールの違いは、P4 が Aug4 へ半音上がっていることです。リディアン・スケールにも Avod Note がありません。


Mixolydian Scale(ミクソリディアン・スケール)

ミクソリディアン・スケールもメジャー系スケールで Ⅴ7/♭Ⅶ7のスケールです。

記号英語日本語
RRoot完全1度
M2Major 2nd長2度
M3Major 3rd長3度
P4Perfect 4th完全4度
P5Perfect 5th完全5度
M6Major 6th長6度
♭7Minor 7th短7度
OctOctarve完全8度

下の譜はG7のスケールとなります。

Mixolydian Scale(ミクソリディアン・スケール)

メジャー・スケールとミクソリディアン・スケールの違いは、M7と♭7へと、7度の音が半音下がっていることです。また他のスケールと異なり、特性音である♭7は、コードトーンとなっています。

ミクソリディアン・スケールの Avod Note は、コードトーンの5度(P5)の半音下のP4/11thです。


Aeolean Scale(アエオリアン・スケール)

アエオリアン・スケールはマイナー・スケールのことです。

記号 英語 日本語
RRoot 完全1度
M2 Major 2nd長2度
♭3 Minor 3rd 短3度
P4 Perfect 4th 完全4度
P5 Perfect 5th 完全5度
♭6 Minor 6th 短6度
♭7 Minor 7th 短7度
Oct Octarve 完全8度

Ⅵm7/Ⅰm7 のスケールとなります。下の譜は Am7 のスケールです。

Aeolean Scale(アエオリアン・スケール)

Avoid Note は、P5 の半音上にある ♭6/13th です。


Locrian Scale(ロクリアン・スケール)

ロクリアン・スケールもマイナー系スケールです。 Ⅶm7♭5/IIm7♭5 で使えるスケールです。

記号英語日本語
RRoot完全1度
♭2Minor 2nd短2度
♭3Minor 3rd短3度
P4Perfect 4th完全4度
dim5Diminished 5th減5度
♭6Minor 6th短6度
♭7Minor 7th短7度
OctOctarve完全8度

下の譜はG7のスケールとなります。Bm7♭5 です。

Locrian Scale(ロクリアン・スケール)

マイナー・スケールとロクリアン・スケールの違いは2音あり、M2が♭2へと、2度が半音下がっていることとP5がdim5へと5度が半音下がっていることです。Avoid Note はルートの半音上の ♭2/♭9 です。


スケールでウォーキングベースを組み立てる

Autum Leaves の出だしをスケールアプローチだけで組み立ててみます。キーは♭が2つあるのでB♭です。

Autum Leaves コード進行

B♭を基準としたドミナント・コードとスケールは下記のようになります。

B♭Scale B♭ C D E♭ F G A
Code Ⅰmaj7 IIm7 Ⅲm7 Ⅳmaj7 Ⅴ7 Ⅵm7 Ⅶm7♭5
Scale Ionian Dorian Phyrigian Lydian Mixolydian Aelolian Locrian

これをコード進行にあてはめて、各スケールを使ってウォーキング・ベースラインを作ります。

Cm7 F7 B♭maj7 E♭maj7 Am7♭5 D7 Gm
IIm7 Ⅴ7 Ⅰmaj7 Ⅳmaj7 Ⅶm7♭5 Ⅲm7 Ⅵm7
Dorian Mixolydian Ionian Lydian Locrian Phyrigian Aelolian

下の譜は、上表の各スケールから1,2,3,5 と 8(1),7,6,5 を使った簡単なウォーキング・ベースラインです。

Autum Leaves - WalkingBass Line

これだけでもウォーキングベースっぽいですよね。色々と試してみたいと思います。

Post Date:2022年6月18日 

五線譜を書くのも大人の鉛筆が都合よい

「大人の鉛筆」と「鉛筆シャープ」

上から2本は、随分と前に購入した「大人の鉛筆」シリーズです。まだまだ現役として活躍中で、最近では譜面を書くのにも使っていました。

しかし、写真の上から2番目の PRIME TIMBER は、口金のネジの受けが木で、ネジ穴が緩くなり、芯を出すためにノックすると簡単に外れるようになってしまいました。

HIGHTIDE penco PRIME TIMBER

譜面を書くときに、音符は書き込みは と、2本のペンを使い分けていたので、譜面を書くときにも筆記用具は2本は必要!

PRIME TIMBER は、ハイタイドのpencoブランドと北星鉛筆(株)とのコラボレーション商品で、気に入っていたシャーペンでした。

同じものが購入できるのかとAmazonで検索してみると、廃版になっているようですが、まだAmazonで購入できます。

同じものを購入しようかと思いましたが、久しぶりのシャーペン購入の機会です。折角なので新しいものはないかと「太芯シャープ」で探してみました。

下記の3つは、芯が2.0mmで、デザインもシンプルな木製シャープペンシルです。

MUJI 木軸2mm は、無印良品の店舗で手にしてみましたが、軸がかなり太く握りづらい。書くというより描くための筆記用具といった感じです。

芯が2.0mm ではありませんが、「KOKUYO 鉛筆シャープ1.3mm」のデザインがとってもシンプルだったので、白と赤、2本の鉛筆シャープと2Bと赤の替芯を購入。

早速使ってみましたが、いままで使っていた大人の鉛筆と比べると軽すぎて、ペンの重さがしっくりきません。

実際にどのくらいの差があるのかと計量器で測ってみると

  • 大人の鉛筆 10g
  • 鉛筆シャープ 5g

と、鉛筆シャープは大人の鉛筆の半分の重さです。普段、万年筆やボールペンを使っている大人からするとかなり軽く感じます。

大人の鉛筆は、木製軸の両端に金属が使われていて、重心は先端にありますが、上部の金具の重さとのバランスで「書くという動作」に適した重さと絶妙なバランスです。

普段、大人が使っているであろう筆記用具と、違和感がないように設計されている点でも大人の鉛筆というネーミングに納得です。


譜面を書くのも心地よい

五線譜上の音符も力を入れなくてもムラもなくきれいに塗りつぶせます。芯はBを使っていますが、はっきりとした音符が書けます。練習では少し離れた位置から譜面を見るので視認性が高いことは大切です。

しっかり読める譜面が書ける大人の鉛筆

芯先が丸くなってきたら、専用の芯削りを使います。楽しいひとときです。

芯削りは楽しい作業

書きやすく、視認性が高い音符が書ける大人の鉛筆はウォーキングベースを練習するのにも必須アイテムとなっています。


五線譜ノート

文房具屋を訪れても音楽ノートなるものが、ほとんどない世の中になってしまいました。

リングノートの方が広げられるので使いやすいだろうと、マルマンノート 音楽譜 12段 を購入しました。しかし、コードやコメントなどを記載していくので五線譜と五線譜の間隔が広い10段にすればよかったと後悔しています。

また、キャンパスノート 音楽帳 A4 12段 は、A4なのでB5ノートより大きくなってしまいますが、五線譜と五線譜の間隔が14mmと、マルマンの12段より4mm幅広です。

練習に使うための音楽ノートは書き込める余白が大切です。


サステナブルな大人の鉛筆

大人の鉛筆も発売から10年以上が経過していますが、長きに渡って販売されています。またラインナップも増えて、漆塗りの大人の鉛筆もあります。

一瞬、物欲の神様が降臨しかかりましたが、鉛筆シャープを購入したばかりです。我らが救世主アロンアルファでpenco PRIME TIMBER (ペンコ プライムティンバー を復活させました。

大人の、大人による、大人のための鉛筆」というブログ記事を書いたのが2013年なので、大人の鉛筆を9年ぐらい使い続けていることになりますが、まだ頑張ってくれそうです。


変化の激しい時代にも変わらないものがある

新しい「太芯シャーペン」を探したつもりが、結局は、「鉛筆シャープ」と「大人の鉛筆」に戻ってきてしまいました。

「鉛筆シャープ」は三角形から六角形へとより鉛筆に近い形状に回帰し、シンプルなデザインになりましたが、「これ、いいな」と思った自分の変わらないモノへの価値基準に驚きです。

そして、譜面を書くのにも「大人の鉛筆」は、最適な筆記用具です。

古き良きものを懐かしむという懐古主義的な要素だけではなく、鉛筆としての良さを大人にも提供しつづけてくれる北星鉛筆に感謝いたします。

ガンバレ!北星鉛筆。

Post Date:2022年6月17日 

gasの変数について考えてみる

ゾウでもわかる Google Apps Script

Google Apps Scrit (GAS) で変数を定義するキーワードには、var, let, const の3種類があります。変数と定数の違いは明確ですが、varlet の違いはどのようなところにあるのかをサンプルプログラムを実行しながら確認してみました。


変数と定数

var, let は、再代入(値を入れ替えること)ができる変数で、const は定義した値を変更できない定数です。

再代入とは、下記の例のように、最初に x に 1を代入して、次に x に x+1(=2) を代入するということです。

function argument() {
  let x = 1
  x = x + 1
}

定数の場合には、x に 1を代入したあとに変更ができません。下記を実行するとエラーとなります。

function argument() {
  const x = 1
  x = x + 1
}

変数の利用可能範囲(スコープ)

では、varlet の違いは何でしょうか?

GoogleのV8ランタイムの説明を読むと

let および const キーワードは、ブロックスコープのローカル変数/定数を定義することができます。(和訳)

【引用】 let and const - Google Apps Script

と記載されています。

ブロックとは、{}で括られた処理のことで、例えば、if分も{}で括られた処理です。ローカル変数というのは、そのブロック内でしか使えない変数/定数ということです。

letconst は、同じ関数内であってもif文内で宣言した関数は使えないということになります。ちなみに var の場合は、同じ関数内であれば if文内で宣言した変数を利用することができます。

let and const - Google Apps Script にあるサンプルプログラムに constvar を追加してスコープについて確認してみます。

function myFunction() {
  let x = 'hello'
  const y = 'hello'
  var z = 'hello'
  if (x === 'hello') {
    let x = 'World'
    const y = 'World'
    var z = 'World'
    console.log('let x=', x)      // Prints 'world'
    console.log('const y=', y) // Prints 'world'
    console.log('var z=', z)     // Prints 'world'
  }
  console.log('let x=', x)      // Prints 'hello'
  console.log('const y=', y) // Prints 'hello'
console.log('var z=', z)     // Prints 'world' }

let, const の有効範囲はブロック内です。5行目からのif文のブロックの中では、6,7行目で変数の宣言と代入がされている 'world' が出力されます。

しかし、13,14行目のログ出力では、myFunction() として、2,3行目で変数の宣言と代入がされている 'hello' が有効な変数となります。

一方、var で定義した変数 xは、15行目のログ出力で 'world' と出力されます。これは var 変数は同一関数内で有効であり、かつ次に説明する再宣言ができるので、console.log が実行される直前(11行目)に宣言と代入がされた変数の値が出力されます。


関数で定義した変数はif, for のブロック内でも使える

上位のブロックで let, const で宣言された変数は、下位のブロックでも参照できます。

下記の例で説明します。

function checkScope() {
  let x = 0
  if (x==0)  {
    let y = 0
    for (let i=0; i<10; i++) {
      x = x + 1
      y = y + 1
    }
    console.log('y=', y)
  }
  console.log('x=', x)
}

変数 x は、checkScope() 関数で定義しているので、下位ブロックのif文、さらにその下位にあたる forループでも参照することができます。なので、x=x+1 が10回実行され、forループ、if文を抜けたあとのログ出力で x=10 と出力することができます。

変数 y は、if文の中で宣言されているので、下位ブロックのforループで参照することができます。forループでの処理で再代入された値が、if文内のログ出力で可能です。

しかし、if文を出た後にログ出力をしようとすると y は定義されていないとエラーとなります。

function checkScope() {
  let x = 0
  if (x==0)  {
    let y = 0
    for (let i=0; i<10; i++) {
      x = x + 1
      y = y + 1
    }
    console.log('y=', y)
  }
  console.log('x=', x)
  console.log('y=', y)
}

また forループで使っている変数 i も let で定義しているので forループ内だけで有効です。これを for (var i=0; ....) とすると、変数 i は、関数内で参照できる変数となります。

また 変数 i を宣言するときに、let, var のキーワードを付けないと(忘れると)、変数 i は、グローバル変数となり、変数が宣言された以降に実行されるどの関数でもアクセスできるようになってしまいます。

function checkScope() {
  let x = 0
  if (x==0)  {
    let y = 0
    for (i=0; i<10; i++) {
      x = x + 1
      y = y + 1
    }
    console.log('y=', y)
  }
  console.log('x=', x)
  print()
}
function print()	{
  console.log('i=', i)
}

再宣言

変数のスコープで var の再宣言についてふれましたが、もう少し簡単な例で説明します。下記のように var は、同じ関数内で何度でも宣言できます。

function redeclaration() {
  var x = 1
  x = x + 1
  console.log('x=', x)
  var x = 'Hello'
  console.log('x=', x)
}

let, const は同一ブロック内では1回しか宣言できません。下記のプログラムは構文エラーとなり保存できません。

function test() {
  let x = 1
  x = x + 1
  console.log('x=', x)
  let x = 'Hello'
  console.log('x=', x)
}

var, let, constの違い(まとめ)

var, int, const の違いを表にまとめます。

キーワード 再代入 再宣言 スコープ
var 可能 可能 同一関数内
let 可能 不可 ブロック内
const 不可 不可 ブロック内

参照できる範囲が少なく、再宣言ができないということは、より明示的に変数を使うということになるので、「varではなくlet を利用しましょう」というのも納得できます。


関数間で値の引き渡し

関数の中で関数を呼び出す場合には、引数として関数に値を引き渡すことができます。また、関数での実行結果を戻す場合には、戻り値として結果を返却することができます。

function argument() {
  let x = 1
  let y = 2
  let z = cal(x, y)
  console.log('z=', z)
}
function cal(a, b)	{
  let c = a + b
  return c
}

cal() を呼び出すときに引数として x, y をセットしています。7行目の function cal(x, y)では、4行目で設定した引数 x, y をそれぞれ a, b にセットしています。この関数の中では、合算した値(1+2)を cに代入して、cを戻り値としています。

関数の呼び出し側は、戻り値を変数zに代入するために let z = cal(x, y) としています。


グローバル変数

最後にグローバル変数についてです。関数内ではなくプログラムのトップレベルで定義された変数/定数は、プログラ内のどこから(同じプロジェクト内のどの関数から)でもアクセスすることができます。

const x = 1
const y = 2
function main()	{
  sub1()
  sub2()
  console.log('x=', x)
  console.log('y=', y)
}
function sub1()	{
  console.log('x=', x)
}
function sub2()	{
  console.log('y=', y)
}

変数も奥が深いですね。


GASの基礎を学べる参考図書

ある程度プログラミンがわかっていれば、WEBやYoutubeでも十分に調べられると思いますが、初歩的なところからであれば参考図書は有効な学習手段です。

詳解! Google Apps Script完全入門 [第3版]」は、プラグラミング初心者にわかりやすく説明されています。GASを最初に学ぶ一冊として良書です。

Udemy オススメ講座

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

講師:事務職たらこ

印象に残りやすい手書き風スライドを用いGASの基本的なプログラミングを気軽に学ぶことができる。本講座でGASを活用した自動化ができるレベルにはなれないが、基礎としては十分。

象と散歩:人気の投稿(過去7日間)