2011-11-19 141 views
0

我有一個文本文件,它存儲例如WAV文件的頻率和零件持續時間:如何從文本文件創建一個wav文件?

44100hz 150 010 150 015 133 ...

這些信息描述了wavfile將與44100hz創建頻率爲50ms,音量爲100,10ms,音量爲0,50ms,音量爲100,15ms,音量爲0,33ms,音量爲100 ...我不知道如何設置我在寫wav文件時的持續時間。 'data array'中的元素是否存儲(1 /頻率)秒的幅度?你可以幫我嗎?

p/s:我很抱歉我的英語,我使用C#編碼。

回答

0

我不知道我自己,但Garrett Hoofman創建a wrapper for creating WAV files in C#

通過獲取您的數據,您應該能夠使用MSDN上的Generating Sound Waves with C# Wave Oscillators實際上從您的文件創建數據。

這是來自Garret的WaveLibrary庫的WAV文件規範。

* Wave File Library 
* A simple library to write a wave file 
* 
* Garrett Hoofman 
* 10/21/08 
* http://www.visionsofafar.com 
* */ 

/* Wave File Format 
Reference : http://ccrma.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/ 
The canonical WAVE format starts with the RIFF header: 
0   4 ChunkID   Contains the letters "RIFF" in ASCII form 
           (0x52494646 big-endian form). 
4   4 ChunkSize  36 + SubChunk2Size, or more precisely: 
           4 + (8 + SubChunk1Size) + (8 + SubChunk2Size) 
           This is the size of the rest of the chunk 
           following this number. This is the size of the 
           entire file in bytes minus 8 bytes for the 
           two fields not included in this count: 
           ChunkID and ChunkSize. 
8   4 Format   Contains the letters "WAVE" 
           (0x57415645 big-endian form). 

The "WAVE" format consists of two subchunks: "fmt " and "data": 
The "fmt " subchunk describes the sound data's format: 
12  4 Subchunk1ID  Contains the letters "fmt " 
           (0x666d7420 big-endian form). 
16  4 Subchunk1Size 16 for PCM. This is the size of the 
           rest of the Subchunk which follows this number. 
20  2 AudioFormat  PCM = 1 (i.e. Linear quantization) 
           Values other than 1 indicate some 
           form of compression. 
22  2 NumChannels  Mono = 1, Stereo = 2, etc. 
24  4 SampleRate  8000, 44100, etc. 
28  4 ByteRate   == SampleRate * NumChannels * BitsPerSample/8 
32  2 BlockAlign  == NumChannels * BitsPerSample/8 
           The number of bytes for one sample including 
           all channels. I wonder what happens when 
           this number isn't an integer? 
34  2 BitsPerSample 8 bits = 8, 16 bits = 16, etc. 
      2 ExtraParamSize if PCM, then doesn't exist 
      X ExtraParams  space for extra parameters 

The "data" subchunk contains the size of the data and the actual sound: 
36  4 Subchunk2ID  Contains the letters "data" 
           (0x64617461 big-endian form). 
40  4 Subchunk2Size == NumSamples * NumChannels * BitsPerSample/8 
           This is the number of bytes in the data. 
           You can also think of this as the size 
           of the read of the subchunk following this 
           number. 
44  * Data    The actual sound data. 
*/ 
相關問題