com.j_phone.io
クラス PitchScanData

java.lang.Object
  |
  +--com.j_phone.io.PitchScanData

public class PitchScanData
extends java.lang.Object

外部音声入力から入力された音声をスキャンして得た周波数と音量の情報を保持するクラスです。

概要

MicControlを利用して外部音声入力からの入力を受け付ける際に MicControlstartPitchScan(PitchScanData)メソッドを呼び出すことで、 入力されている音声の周波数と音量をリアルタイムに検出することができます。 この検出結果を保持するためのクラスがPitchScanDataです。

周波数と音量の検出

外部音声入力に入力された音声から検出される周波数と音量は以下のようになります。

保持する情報

前述したように、PitchScanDataクラスのインスタンスは、検出した周波数と音量を配列に格納しますが、 この配列の長さは、PitchScanDataのコンストラクタで指定します。 指定した長さの検出データを格納した時点でピッチ検出の停止要求が行われていない場合は、 自動的にピッチ検出が停止され、その旨がMicControlListenerに通知されます。

サンプルコード

周波数と音量を5分間検出するために必要な PitchScanData のインスタンスの生成例を以下に示します。
     // 検出間隔を得る
     int interval = MicControl.getScanInterval();

     // 5分ぶんの検出データを格納するのに必要な要素数を計算
     int index = (5*60*1000)/interval;

     // 検出データを格納するための PitchScanData インスタンスを生成
     PitchScanData scandata = new PitchScanData( index );
 

導入されたバージョン:
JSCL 1.3.2

コンストラクタの概要
PitchScanData(int size)
          検出する周波数と音量のデータを、指定した要素数だけ保持できるPitchScanData インスタンスを返します。
 
メソッドの概要
 int getCurrentIndex()
          検出済みの周波数と音量のインデックスを取得します。
 int[] getPitch(int offset, int size)
          検出した音程(周波数 1/16Hz単位)を取得します。
 int[] getVoice(int offset, int size)
          検出した声量(0 〜 31 の32段階)を取得します。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

PitchScanData

public PitchScanData(int size)
検出する周波数と音量のデータを、指定した要素数だけ保持できるPitchScanData インスタンスを返します。
パラメータ:
size - 周波数と音量のデータを保持する配列のサイズ
例外:
java.lang.IllegalArgumentException - 不正な引数が指定された場合に発生する
メソッドの詳細

getPitch

public int[] getPitch(int offset,
                      int size)
検出した音程(周波数 1/16Hz単位)を取得します。

音程は1/16Hz単位になります。
例:

  • 戻り値 1 = 1/16Hz(0.0625Hz) 実値
  • 戻り値 16 = 1 Hz 実値
  • 戻り値 32 = 2 Hz 実値
  • 戻り値 80 = 5 Hz 実値
    未検出インデックス値は 0 になります。 検出エラー時は以下の値になります。
    検出エラー時の値
    エラー内容 詳細
    周波数上限エラー -1 音程が検出上限を超えたため周波数検出が出来なかった事を示します。本エラーの検出可否は機器に依存します。
    周波数下限エラー -2 音程が検出下限を超えたため周波数検出が出来なかった事を示します。本エラーの検出可否は機器に依存します。
    その他 -3 音程の検出エラー発生を示します。上限、下限エラーが検出できない機器は本エラーとなります。
    パラメータ:
    offset - 取得する周波数配列のオフセット
    size - 配列のサイズ
    戻り値:
    音程(周波数 1/16Hz単位)の配列
    例外:
    java.lang.IllegalArgumentException - 不正な引数が指定された場合に発生する
    ArrayIndexOutOfBoundsException - 引数 offset + size が PitchScanData のサイズを超えている場合に発生する

  • getVoice

    public int[] getVoice(int offset,
                          int size)
    検出した声量(0 〜 31 の32段階)を取得します。

    未検出インデックス値は 0 になります。 検出エラー時は -1 になります。

    パラメータ:
    offset - 取得する周波数配列のオフセット
    size - 配列のサイズ
    戻り値:
    声量(0 〜 31)の配列
    例外:
    java.lang.IllegalArgumentException - 不正な引数が指定された場合に発生する
    ArrayIndexOutOfBoundsException - 引数 offset + size が PitchScanData のサイズを超えている場合に発生する

    getCurrentIndex

    public int getCurrentIndex()
    検出済みの周波数と音量のインデックスを取得します。

    現在、何番目の要素まで周波数と音量の検出が完了しているかを返します。 未検出の場合は -1 が返ります。 MicControlstopPitchScan()メソッドが呼び出されて検出を停止した場合は、 最後に検出を行った要素のインデックスを返します。

    戻り値:
    検出済みの周波数と音量のインデックス