학습 내용 | 조 : 2조 |
작성자 : 김동영 | |
작성일 : 2011. 6. 1 | |
제목 : 주파수 생성 |
주파수를 생성하여 주파수에 해당 하는 음을 재생하는 wav파일을 만들어 보았다.
아래의 이미지는 음에 관한 주파수이다.
C3에 해당하는 주파수를 생성하여 wav파일로 만들어 재생하였다.
생성된 wav파일을 midi파일로 변환해보니 미디 60에 해당하는 C3가 재생되었다.
private void button1_Click(object sender, EventArgs e) { double amplitude = 0.25 * short.MaxValue;
double frequency = double.Parse(textBox2.Text); double samplerate = double.Parse(textBox1.Text);
for (int i = 0; i < buf.Length; i++) { buf[i] = (short)(amplitude * Math.Sin((2 * Math.PI * i * frequency) / samplerate)); }
Invalidate(); } |
주파수를 생성하는 부분이다.
private void MakeFile(string filename,double sampleRate, int channelCount) { FileStream fs = new FileStream(filename, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs);
bw.Write(0x46464952); // RIFF bw.Write((buf.Length*sizeof(short)+44)); bw.Write(0x45564157); // WAVE bw.Write(0x20746d66); // fmt_ bw.Write(16); bw.Write((Int16)1); bw.Write((Int16)channelCount); bw.Write((Int32)sampleRate); bw.Write((Int32)sampleRate * 2 * channelCount); bw.Write((Int16)(channelCount * 2)); bw.Write((Int16)(16));
bw.Write(0x61746164); // data bw.Write(buf.Length*sizeof(short)); for (int i = 0; i < buf.Length; i++) { bw.Write(buf[i]); } bw.Close(); } |
파일을 생성하는 부분이다.
'기타 > Wave' 카테고리의 다른 글
Wave 파일 분석 (0) | 2012.11.02 |
---|---|
Wave파일 구조 (0) | 2012.11.02 |