• ベストアンサー

分数コードの見分け方

 分数コードで、D/AとかEmaj9/Bとかありますが 分母も分子もコードの場合と、分子がコードで 分母がベース音の場合があるようですね。 それを、どうやって見分けるのでしょうか?

  • 音楽
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ID10T5
  • ベストアンサー率31% (732/2313)
回答No.1

響くかどうかで見分けるしかないですね。 D/AやEmaj9/Bの場合は分母のAやBをコードで鳴らしてしまうと分子のDやEmaj9と音がぶつかりますから、コードで鳴らしちゃだめだなと分かります。 Avoid Noteというのを勉強してください。 ただE13/GとかE/Cみたいに理論的には響かないはずなんだけど、鳴らし方によってかっこいい響きが感じられる分数コードがときどきありますね。これはもう感覚でとらえるしかないです。

alterd1953
質問者

お礼

相当な専門家の方とお見受けしました。 こちらは一応吹く楽器なんですがピアノで確かめてみます。 Avoid Noteも知ってはいましたが 初めて実感出来そうです。 ありがとうございました。

関連するQ&A

  • 分数コードについて

    こんにちは、早速質問なんですが ギターのコードでC/Gなどの分数コードってありますよね それの手前側(分子?だと思うんですが)がメジャーコードなら まだ少し考えれば分かるんですが それがCmとかになったらどこがベース音になるのか分かりません CmならCと同じ場所と思ってやっていましたが とある楽譜を見ているとDm/Fというのが出てきたので 分数コードを出してくれるソフトで調べたところ 6フレットという数字が書いてあったので混乱しています どういう風に考えれば分かるのでしょうか? よろしくお願いします

  • 既約分数の表示プログラム

    (1)キーボードから,分子,分母に相当する整数2つを入力し,その既約分数を表示せよ。 (2)分母が1の時には,分子のみを表示する。 (3)分子と分母の符号が異なるときにのみ,-符号を表示する。 (4)分母がゼロの入力エラーに対しては、再入力するように促す。 (5)分子と分母の最大公約数も求めて表示する。 (6)また、正しく計算できる最大規約分数を示せ。 #include <stdio.h> int main(void) { int a,b,i=1,x,y,z; printf("分子=");/*分子の入力*/ scanf("%d",&a); printf("分母=");/*分母の入力*/ scanf("%d",&b); if(b==0) { printf("分母が0です。入力が誤っています。\n"); return 0; } if(b==1) { printf("既約分数は %d\n",a); return 0; } while((i<=a)&&(i<=b)) { if((a%i==0)&&(b%i==0)) { x=i;i=i+1; /*xを上書きしていく*/ } else { i=i+1; } } printf("分子と分母の最大公約数=%d より\n",x); y=a/x; z=b/x; printf("既約分数は %d/%d\n",y,z); return 0; } 大学の課題で出されたものです。(1)(2)(4)(5)はできたのですが、(3)と(6)の部分のやり方がいまいちよくわからなかったので質問しました。 どなたかご教授お願いできないでしょうか・・・。

  • 分数コード

    分数コードはルート音が何度になるとかはあるのでしょうか? 例えば、Cコードの場合、EやGなどがルート音になることがありますが、分数コードのルート音は3度か5度がなるみたいに決まっているのでしょうか? というかCコードのルート音がEやGになる場合、元々EとGはCコードに含まれているのにルート音になる意味があるのでしょうか? また、C on Bだと、C7と全く同じ構成音ですよね? テンションとしてBを付加する場合と、ルート音としてBを付加する場合はそれぞれどういう意図があるのでしょうか?

  • 繁分数?分数÷分数がわかりません。

     本当はここに例文を書きたいのですが、書き方がわからないのでかけませんが、分数÷分数はどのように計算すれば良いですか。  分母分子ともに分数の場合です。わからないので教えてください。

  • 2つ分数の四則演算を行うプログラム

    <要求事項> 分数は、 例)1|3 のように表す。 1.分母がゼロの時はエラーとする。 2.除算において、除数がゼロの入力エラーに対しては、再入力するように促す。 3.以下範囲の整数(分子、分母にかかわらず)に対して、正しく計算できるようにする。   -2147483648 ~ 2147483647 4.計算結果については,分母が1の時には分子のみ表示。分数がの時には0のみを表示。最終計算結果は既約分数にする。分数が負数の場合、-を分数の前に表示。 #include <stdio.h> #include <math.h> int main(void) { int b,d; /* 分母*/ int a,c; /* 分子*/ int sign,sign2,sign3,sign4; int yakusu,yakusu2,yakusu3,yakusu4; /* 最大公約数*/ printf("分母= "); scanf("%d",&b); printf("分子= "); scanf("%d",&a); if(b==0){ printf("分母が0です。入力が誤っています。\n"); /*分母が0ならエラーとする*/ return 0; } if (a==0){ printf("分数1= 0\n"); /*分子が0のとき*/ } else{ printf("分数1=%d|%d\n",a,b); /*一つ目の分数*/ } printf("\n"); printf("分母= "); scanf("%d",&d); printf("分子= "); scanf("%d",&c); if(d==0){ printf("分母が0です。入力が誤っています。\n"); /*分母が0ならエラーとする*/ return 0; } if (c==0){ printf("分数2= 0\n"); /*分子が0のとき*/ } else{ printf("分数2=%d|%d\n",c,d); /*二つ目の分数*/ } printf("\n"); /* 足し算:a|b + c|d = (a*d + b*c) | (b*d) */ printf("足し算:%d|%d + %d|%d\n",a,b,c,d); yakusu = gcd(abs(a*d + b*c),abs(b*d)); /*最大公約数を求める*/ sign = (a*d + b*c)/abs(a*d + b*c) * (b*d/abs(b*d)); if(sign * abs(a*d + b*c)/yakusu == 0){ /*分子が0となる時*/ printf("0\n"); } if (abs(b*d)/ yakusu!= 1){ printf("既約分数は %d|%d\n" ,sign * abs(a*d + b*c)/yakusu , abs(b*d)/yakusu ); } else{ printf("既約分数は %d\n" ,sign * abs(a*d + b*c)/yakusu ); /*分母が1の場合*/ } printf("\n"); /* 引き算:a|b - c|d = (a*d - b*c) | (b*d) */ printf("引き算:%d|%d - %d|%d\n",a,b,c,d); yakusu2 = gcd(abs(a*d - b*c),abs(b*d)); /*最大公約数を求める*/ sign2 = (a*d - b*c)/abs(a*d - b*c) * (b*d/abs(b*d)); if(sign2 * abs(a*d - b*c)/yakusu2 == 0){ /*分子が0となる時*/ printf("0\n"); } if (abs(b*d)/ yakusu2!= 1){ printf("既約分数は %d|%d\n" ,sign2 * abs(a*d - b*c)/yakusu2 , abs(b*d)/yakusu2 ); } else{ printf("既約分数は %d\n" ,sign2 * abs(a*d - b*c)/yakusu2 ); } printf("\n"); /* 掛け算:a|b * c|d = (a*c) | (b*d) */ printf("掛け算:%d|%d * %d|%d\n",a,b,c,d); yakusu3 = gcd(abs(a*c),abs(b*d)); /*最大公約数を求める*/ sign3 = (a*c)/abs(a*c) * (b*d/abs(b*d)); if(sign3 * abs(a*c)/yakusu3 == 0){ /*分子が0となる時*/ printf("0\n"); } if (abs(b*d)/ yakusu3!= 1){ printf("既約分数は %d|%d\n" ,sign3 * abs(a*c)/yakusu3 , abs(b*d)/yakusu3 ); } else{ printf("既約分数は %d\n" ,sign3 * abs(a*c)/yakusu3 ); /*分母が1の場合*/ } printf("\n"); /* 割り算:a|b / c|d = (a*d) | (b*c) */ printf("割り算:%d|%d / %d|%d\n",a,b,c,d); yakusu4 = gcd(abs(a*d),abs(b*c)); /*最大公約数を求める*/ sign4 = (a*d)/abs(a*d) * (b*c/abs(b*c)); if(sign4 * abs(a*d)/yakusu4 == 0){ /*分子が0となる時*/ printf("0\n"); } if (abs(b*c)/ yakusu4!= 1){ printf("既約分数は %d|%d\n" ,sign4 * abs(a*d)/yakusu4 , abs(b*c)/yakusu4 ); } else{ printf("既約分数は %d\n" ,sign4 * abs(a*d)/yakusu4 );/*分母が1の場合*/ } return 0; } int gcd(int x,int y){ /* ユークリッド互除法*/ int z; if( (x <= 0) || (y <= 0) ){ return -1; } z = x % y; while (z != 0){ x = y; y = z; z = x % y; } return y; } >>大学の課題です。現在の状態は上記の通りです。このプログラムだと、答えの既約分数が0になると表示できなかったり、桁が大きい数で計算しようとすると値がおかしくなってしまいます。 どなたかプログラム改良にご助力願えないでしょうか?

  • Mathematica 連分数について

    任意の長さのリストから、以下のようなリストの要素を分子に持つ連分数を生成 する関数を書きたい。(Foldを使い、チェックにFoldListを使う) a cf[{a,b,c,d}]= ----------- b 1 + ------ c 1 + --- 1+d 任意の長さのリストから、以下のような連分数を生成する関数を書きたい。 a1 cf[{{a1,b1},{a2,b2},{a3,b3{,{a4,b4},…}]= ---------------------- a2 b1+ --------- a3 b2+ ------ a4 b3+--- b4+ … すいません分母部分の位置が悪いですが、連分数です。

  • 整数+仮分数の名称

    分母より分子が小さい分数=真分数 分母より分子が大きい分数=仮分数 整数+真分数=帯分数 ですが、 1と3/2のような整数+仮分数の場合は何というのでしょう? 小学校や中学校では習った覚えはありませんし、 ネットで調べた限り、これに言及したものは見つかりませんでした。 帯分数の引き算の過程とかで出てくると思いますが、名前はないのでしょうか?

  • 分数

    分数は分母の値を分子が越えなければ1より小さいですよね?

  • 分数教えてください。

    ●1/5より大きく、1/4より小さい分数で、分母が一けたのものは? ●6/7と7/9の間の数で、分子が13になる分数は? ●109/? は6/11より大きく、5/9より小さい分数です。(?にあてはまる正数をすべて求める)    算数教えてください。お願いします。

  • 分数の約分について

    分数の約分について。 こんにちは。 素朴な疑問なんですが、「約分」は数を簡単にすることですよね。 分数の足し算のときに、足した答えが「約分」できれば約分する。 たとえば、「6分の3」は「2分の1」のようにしますよね。 これは分母と分子を同じ数で割ってますよね。 コレはわかります。 しかし掛け算の場合、「3分の4」×「16分の21」の場合、 「3と21」を約分して、「16と4」を約分します。 足し算の場合「分母と分子」(上と下)を割ったのに、 掛け算になると「左の分母」と「右の分子」を割って、同じように「左の分子」と「右の分母」を割っています。 なぜこのように(斜めに)約分しているのでしょうか? 説明が下手ですみません。 算数や数学に詳しい方には、バカな質問かもしてませんが、 詳しい方、分かる方よろしくお願いします。