2009 年 1 月 29 日 のアーカイブ

音出し その3 和音

2009 年 1 月 29 日 木曜日

和音に挑戦。

和音の並び、画面構成は @きよし 様 作成  MIDI Chord Helper参考にしました。 パクリました(^^;

とりあえず試したいかたはこちら

使い方:

  1. 上のコード表を クリックすると和音が出ます。sus4欄は 下のコード+sus4 です。
  2. コード表のコードは適当に並んでいるわけではありません。
  3. shiftキーで7th、ctrlキーでM7th、altキーで6th になります。(ウソかもしれない)
  4. コード生成方法が適当です。本来は上に並んでる b#の数(キー(調))によって、音をオクターブ移動したりしないといけないはずなんですが、してません。(誰かルール教えて(´・ω・`))
  5. ピアノロールは、そのままクリックすると単音が出ます。Shiftキーと一緒にクリックすると、メジャー和音が出ます。
  6. 左上デバイスの変更、音色(Program)の変更は今まで通りですが、音色は番号だけじゃなくて名前を表示するようにしました。右ボタンで逆順に変化します。
  7. Effect は、緑の画面エフェクトのOn/Off です。Onにすると、背景が黒くなり、例のエフェクトが出ます。
  8. Octave はオクターブの移動です。ピアノロールのC の位置にオクターブ表示があります。左クリックで オクターブが上がり、右クリックで下がります。

あくまで、和音は適当なので、ご注意ください。

※このアプレットのソースコードの公開予定はありません。


以前、ニコニコ技術部で、@きよし さん の「あの楽器?でInnocenceをコード演奏してみた」を見たときから、これは すごいと思っていて、「あの楽器」を作るときは絶対このやりかたを使おうと心に決めていました。
<a href=”http://www.nicovideo.jp/watch/sm5733724″ mce_href=”http://www.nicovideo.jp/watch/sm5733724″>【ニコニコ動画】あの楽器?でInnocenceをコード演奏してみた</a>
で、実際にproce55ingで作ってみたのが こちらです。

しかし、音楽理論がさっぱりわからん。今回、実際に実装したコードの生成方法は次の通り、

3和音のトニック、ドミナント、サブドミナントの生成方法。

  • トニック:ベース音コード名の音(C ならド)。
  • ドミナント:トニックの3度上の音(MIDI Pitch で トニック+4)
  • サブドミナント:トニックの5度上の音(MIDI Pitch で トニック+7)
  • マイナーの場合、ドミナントを MIDI Pitch で -1
  • sus4 の場合、ドミナントをMIDI Pitchで +1

さらに、7th等の生成

  • 7thは、3和音に、短7度上の音を加える。(MIDI Pitch で トニック+10)
  • M7thは、3和音に、長7度上の音を加える。(MIDI Pitch で トニック+11)
  • 6thは、3和音に、短6度上の音を加える。(MIDI Pitch で トニック+9)

という非常に簡単な方法で 行っています。

コードはこんな感じ

int[] makeCode(int base, int mFlg, int numFlg, int shpNum ){
int[] pitches= new int[4];
// 基本3和音
pitches[0] = base;
pitches[1] = base+4;
pitches[2] = base+7;
pitches[3] = -1;
// マイナー
if( mFlg == 1 ){
pitches[1] = pitches[1] -1;
}
// sus4
if( mFlg == 2 ){
pitches[1] = pitches[1] +1;
}
// add
if( numFlg == 6 ){  // 6th
pitches[3] = base+9;
}
if( numFlg == 7 ){  // 7th
pitches[3] = base+10;
}
if( numFlg == 8 ){  // M7th
pitches[3] = base+11;
}
if( numFlg == 9 ){  // 9th
pitches[3] = base+14;
}
return pitches;
}

ほんとうは、サブドミナント音を オクターブ下にもっていったり4和音目を オクターブ下にもっていったり しなきゃいけないはずなんだけど、さっぱりわからん。

このへんは、音楽の詳しいひとに教わりたいなぁ。誰か教えてください。