Java Wave Viewer (Java Wave Viewer) v1.4.5


「MXV」もどきの Java Wave Viewer(JWV)です。 Wave波形の全体を見渡す事が出来ます。 ついでに FFTでも見えるようになっています。

  1. a110[Hz]

    makewavex プログラムで作成したものです。 (a110[Hz]の 10倍音・打弦点 1/8・1.5秒・サンプリング周波数 11025[Hz]・「インハーモニシティあり」で作成しています) 波形の再現・FFTの周波数のキャリブレーション(確認)用です。

    a110 wave file (3.4KB) a110 wave a110 FFT
  2. ピアノの和音 (Piano chord)

    Delphes wave file (156KB) delphes wave delphes FFT
  3. ピアノ 1 (Piano 1)

    Fille wave file (184KB) fille wave fille FFT
  4. ピアノ 2 (Piano 2)

    jimbo wave file (116KB) jimbo wave jimbo FFT
  5. G - D 5度のうなり

    g-d wave file (6.6KB) g-d wave g-d FFT

Jwv gif (Java appletは 利用出来なくなりました;)

〔項目内容〕
  1. a110.wav : a110[Hz]
  2. delphes.wav : ピアノの和音 (Piano chord)
  3. (※ f-vedernikov.wav : ピアノ 1 (Piano 1))
  4. jimbo.wav : ピアノ 2 (Piano 2)
  5. g-d-22.wav : G - D 5度のうなり
使い方:

例えば「ピアノ 1(Fille.wav)」の音は 以下(Fig-1)のように見えます。(サンプル数 2048)

fille-1 wav Fig-1

それを サンプル数 8192 で行うと Fig-2のようになります。

fille FFT Fig-2

波形の図(Fig-3)では

fille wave Fig-3

最初の打鍵音の方が大きいのに FFTではしばらくしてから基音のスペクトルが増加してる様に見えます。
(参照〉ウェーヴレット序奏 (Wavelet Introduction))


Waveファイルについて:

「makewavex.c」で作成した時のヘッダー数は58ビットでしたが 一般(ステレオ)のWaveファイルでは76ビットあります。 (再生では影響ありません)

makewavex.c で作成したファイルの 先頭のダンプ:
% hd a110.wav | jless

00000000  52 49 46 46 ca 09 04 00  57 41 56 45 66 6d 74 20  |RIFFハ...WAVEfmt |
00000010  12 00 00 00 01 00 01 00  44 ac 00 00 88 58 01 00  |........Dャ...X..|
00000020  02 00 10 00 00 00 66 61  63 74 04 00 00 00 cc 04  |......fact....フ.|
00000030  02 00 64 61 74 61 98 09  04 00 00 00 58 06 a5 0c  |..data......X.・.|
…
(※)ステレオ wave file の先頭のダンプ:

% hex audio_08.wav | jless

0x00000000: 52 49 46 46 d4 9b d6 01 - 57 41 56 45 66 6d 74 20 RIFF....WAVEfmt 
0x00000010: 10 00 00 00 01 00 02 00 - 44 ac 00 00 10 b1 02 00 ........D.......
0x00000020: 04 00 10 00 64 61 74 61 - b0 9b d6 01 e6 ff c3 ff ....data........
0x00000030: dd ff df ff ed ff ee ff - db ff c4 ff ea ff f1 ff ................
...

また“sox”と言うソフトでステレオからモノラルに変換すると 44ビットになるのですが その当たりの規格は...以下の様です。

ファイルを読み込んでいる時 makewavex で作成した場合は テキストフィールドに<fact> モノラルの場合は<mono> ステレオ時は<WAVE>と表示しています。 (切替えなくても先頭にノイズが入るだけですが 転用・流用時には御確認下さい)

WWWで検索した所 だいたい(?)以下の様です。 「数値はリトルエンディアンで格納される…」音声信号もですね。
----------------------------------------------------------------------
 Num |    Name       |bytes| 
----------------------------------------------------------------------
 0-3 | ChunkID       |  4  | "RIFF"
 4-7 | ChunkSize     |  4  | (以降の全データサイズ 58-8+Data)
 8-11| formType      |  4  | "WAVE"
12-15| ChunkID_fmt   |  4  | "fmt "
16-19| ChunkSize_fmt |  4  | (fact/data/fmt までのサイズ)
20-21| WaveFormatType|  2  | フォーマットID (※2) 
22-23| Channel       |  2  | Mono/Stereo (1/2)
24-27| SampFreq      |  4  | サンプリング周波数
28-31| BytesPerSec   |  4  | 1バイト当たりのサンプリング数
32-33| BlockSize     |  2  | データのバイト長 (1/2)
34-35| BitsPerSample |  2  | データのビット長 (8/16)
36-37| ChunkSize_Ext |  2  | (拡張部サイズ Monoは無く"data"以降となる)
38-41| ChunkID_fact  |  4  | "fact"
42-45| ChunkSize_fact|  4  | (dataまでのサイズ)
46-49| Num Of Data   |  4  | 量子化ビット数
50-53| ChunkID_data  |  4  | "data"
54-57| ChunkSize_data|  4  | データサイズ
58-~ | Data          |     | (これ以降音声信号データ )
----------------------------------------------------------------------
フォーマットID
0001h: リニア PCM
0002h: MS ADPCM
0005h: IBM CSVD
0006h: A-Law
0007h: μ-Law
0010h: OKI ADPCM
0011h: ADPCM(IMA/DVI)
0012h: MediaSpace ADPCM
0013h: Sierra ADPCM
0014h: ADPCM(G.723)
0020h: YAMAHA ADPCM
0022h: TrueSpeech
0030h: DOLBY AC2
0031h: GSM 6.10
0040h: ADPCM(G.721)
0050h: MPEG
0200h: CREATIVE ADPCM
0300h: FM-TOWNS SND
... etc.

Dobashi.M
Last modified: 4月 26日 金 15:23:28 2024 JST