WAVEファイルを扱い、ピッチのシフトを行ないたいのですが
まず、WAVEファイルから数値化されたデータを読み出したいのです。
が、その手法がよくわかりません。どなたか教えてください。
補足。
いろいろ調べてたらWin32APIと言うのを見つけました。
言語仕様がCとよく似ていますが異なるものなのでしょうか
> 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のような,他の言語から呼び出すこともできます。