質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.91%

androidでの音声解析で、周波数の度数について

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,513

redtass

score 28

前提・実現したいこと

androidで音声解析を行っていて、周波数を求めているのですが、度数というもの求めることができません。具体的なソースコードをご教授いただけないでしょうか?

試したこと

周波数は出せました。100Hz~2000Hzまで取得できるようにしてあります。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2017/04/27 17:46

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • redtass

    2017/04/28 15:52

    大変申し訳ございません。私の言う度数というのは音の強度のことなんです。

    キャンセル

回答 2

+2

Aの音(ラの音)が440Hz、1オクターブ上のAの音(上のラの音)が880Hzというように1オクターブ違うと周波数は2倍になります。
1オクターブは、12半音の差ですから、半音の違いは周波数の2^(1/12)倍の違いになります。 2^(1/12)は、約1.059。

ハ長調のドは、ラより1音半高いので523.25Hz (440*1.059*1.059*1.059)
レは更に全音高いので587.33Hz (523.25*1.059*1.059)
というように各音階の周波数を計算する事ができます。

度数は、音階の差で、同じ音が1度、隣の音階との差が2度、1オクターブ違うと8度になります。
オクターブは、8度の8(Oct)が語源になっています。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+1

もしcoco_bauerさんがおっしゃる度数を求められるような分解能の周波数分析を目的にしているなら(若干蛇足なコメントですが)

音楽でいう度数は半音と全音が入り混じってややこしいので、まずはノート番号を求めるとし、
周波数=f、ノート番号=n、440Hzでn=69と仮定すると

f = 440 * 2^((n - 69) / 12) ... (ただし^はべき乗)

ですので、nを左辺に持ってきて周波数fから以下の式でノート番号が得られます。

n = 12 * log(f / 440) / log(2) + 69

最初に戻って音楽の度数を考えると、ベースになる音程のノート番号を60とすれば

ノート番号60=完全1度、ノート番号61=短2度, ノート番号62=長2度...

のようにする感じでしょうか・・・

自分は度数を和音の表現でしか見たことがないので、上記のような表現があっているかはよく分かりません。もし音名(国際式)を求めるなら、ノート番号を整数にできたものと仮定し、以下のように求めることができます。

String[] names = {
  "C",  "C#", "D",  "D#", "E",  "F",
  "F#", "G",  "G#", "A",  "A#", "B"
};

int noteNumber = ...; // ノート番号を整数として求められたと仮定
int oct = (int)Math.floor((noteNumber - 12) / 12);
String noteName = names[noteNumber % 12] + oct; // 音名

この質問を最初見たとき、度数って音の大きさか、スペクトルの角度か何が正解なのだろうと思ってました・・・

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る