1
|
- harkioライブラリは、MUSICのTF,GSSのTF,SMファイル等を読み書き、新規作成するC++のライブラリです。
- 詳細は、下記のページを参照してください。
- オブジェクト図
- 新規作成1〜3
- ファイルの読み書き
- データの参照
- その他の処理
- HARKフォーマット(詳細)
|
2
|
- 以下は、MUSICの伝達関数の場合のオブジェクト図です。
- RIFF、Data、Chunkクラスは、どのファイルフォーマットでも使用される基底クラスです。別のフォーマットを利用する場合には、別の派生クラスを使用します。
(たとえば、GSS伝達関数の場合だと、M2PGクラスの代わりにGTFクラスを利用します。)
|
3
|
- 以下、MUSICの伝達関数ファイルを作成する例を元に説明します
- HARKのオブジェクトを生成します
- HGTFのオブジェクトを作成します
|
4
|
- HGTFのオブジェクトをHARKオブジェクトへ追加します
- FMT,M2PG,SPECのチャンクオブジェクトを生成します
|
5
|
- チャンクオブジェクトへデータを設定する
(コンストラクタの引数で設定されるデータもあります)
- それぞれのチャンクのメンバ関数によってデータを設定する
- 3つのチャンクオブジェクトを、HGTFオブジェクトへ追加する
|
6
|
- ファイルの読み書きは、HARK(RIFF)オブジェクトのwriteFile(), readFile()関数を呼び出すだけです。
|
7
|
- データの参照にはまず、取得対象のオブジェクトのポインタを取得します。
- Dataポインタの取得
- getData関数で取得したDataポインタは、
それがHGTFオブジェクトかどうかは保障されません
- チャンクポインタの取得
- getChunk()関数は、取得するチャンクのクラス名をテンプレート引数で指定します。
- データの参照
- 各チャンクオブジェクトのデータ参照関数を使用します
|
8
|
- Sampleディレクトリに、サンプルプログラムがありますので、
参考にしてください。
- サンプルプログラムは、GSSのTF,GSSのSM,MUSICのTF,について、新規作成、ファイル読み書き、データ参照のすべて行っています。
(扱っているデータは、意味の無いテストデータです)
|
9
|
- RIFF (Resource Interchange File Format)ライクなバイナリフォーマット
- フォームタイプ
- HGTF (HARK General Transfer Function)
- サブチャンク
- M2PG (MUSIC 2D Polar Grid)
- GTF (GSS Transfer Function)
- SM (Separation Matrix)
- テキストフォーマット
|
10
|
- フォームタイプHGTFのバージョン
- テキストフォーマットのバージョン
- MICARY-LocationFile 1.0
- Noise-LocationFile 1.0
|
11
|
- バイナリ,テキストフォーマットともに,作成条件の情報を付与する
- 作成条件情報(英語で記述)
- 作成日
- 場所
- ロボット(ロボットの種類,動作中かなど)
- 例:ASIMO ver.2.5 #4 servo off
- アレイのタイプ(詳細な配置はマイク位置として記録されているので,大雑把に)
- 例:8ch headband, 8ch cubic, など
- 作成者
- 備忘録(作成時のパラメータなど上記以外のその他)
|
12
|
- M2PG
- GTF
- 伝達関数の正規化(ベクトル毎 or 行列毎)
- Normalization={vector norm, matrix norm}
- SM
- 分離行列を計算したときの状況
- NumberOfSources=2
- SourceDirection=(0, 30)
- SourceType=(speech, music)
|
13
|
|
14
|
|
15
|
|
16
|
|
17
|
|
18
|
|
19
|
- ヘッダ
- 現状ではマイク位置と雑音源位置の区別がつかないので区別できるようにする
- バージョン番号を別の行にする
- MICARY-LocationFile,Noise-LocationFile,Versionはファイルフォーマット識別のため,最初の2行に記述すること
- データ
- コメント
- 行頭がシャープの行(行頭で無ければならない)をコメントとする
- コメント内にこのファイルの作成条件等を記述しておく
|
20
|
|
21
|
|