WAVEファイルから数値データを取り出すには?


ちょっとは解るC使い  2003-09-06 00:51:32  No: 52100  IP: [192.*.*.*]

WAVEファイルを扱い、ピッチのシフトを行ないたいのですが
まず、WAVEファイルから数値化されたデータを読み出したいのです。

が、その手法がよくわかりません。どなたか教えてください。

編集 削除
ちょっとは解るC使い  2003-09-06 00:55:41  No: 52101  IP: [192.*.*.*]

補足。
いろいろ調べてたらWin32APIと言うのを見つけました。
言語仕様がCとよく似ていますが異なるものなのでしょうか

編集 削除
YuO  2003-09-06 06:23:18  No: 52102  IP: [192.*.*.*]

> WAVEファイルを扱い、ピッチのシフトを行ないたいのですが
> まず、WAVEファイルから数値化されたデータを読み出したいのです。
> が、その手法がよくわかりません。どなたか教えてください。

WAVEファイルって言われても,多種多様な形式があります。
一般的にはPCMでしょうけど,他の形式でもWAVEファイルにすることは可能です。
#WAVEFORMAT::wFormatTag

それでもって,WAVEファイルは,RIFFというフォーマットに則っています。
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_resource_interchange_file_format_services.asp

でもって,WAVEについてMSDN内を簡単に探して見つからなかったので書いておくと,
・FormTypeはWAVE
・特性を記述するIDがfmt であるSubchunk
・データを格納するIDがdataであるSubchunk
からなります。

fmt サブチャンクに含めるのは,
・WAVEFORMAT構造体 (sizeof (WAVEFORMAT) == 14)
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_waveformat_str.asp
・PCMWAVEFORMAT構造体 (sizeof (PCMWAVEFORMAT) == 16)
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_pcmwaveformat_str.asp
・WAVEFORMATEX構造体 (sizeof (WAVEFORMATEX) == 18 + α)
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_waveformatex_str.asp
・WAVEFORMATEXTENSIBLE構造体 (WAVEFORMATEX構造体の一種)
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_waveformatextensible_str.asp
のどれかになります。


入出力は,Multimedia File I/Oという,RIFF専用の入出力API群もありますが,
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_multimedia_file_i_o.asp
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_multimedia_file_i_o_reference.asp
stdioでも十分だと思います。


> いろいろ調べてたらWin32APIと言うのを見つけました。
> 言語仕様がCとよく似ていますが異なるものなのでしょうか

APIというのはApplication Programming Interfaceの略です。
Win32 APIというのは,32bit Windows用のアプリケーションを作成するための,
システムが用意した関数群(のようなもの)です。

基本的にAPIの仕様はC言語で書かれています。
ただ,呼び出そうと思えばDelphiやVisual Basicのような,他の言語から呼び出すこともできます。

編集 削除