关于网友提出的“ 如何用c或c++编一个声音文件,就是能够输出声音,音乐?qi”问题疑问,本网通过在网上对“ 如何用c或c++编一个声音文件,就是能够输出声音,音乐?qi”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 如何用c或c++编一个声音文件,就是能够输出声音,音乐?qi
描述: 求教
解决方案1: #define S1 24
#define S2 S1/2
#define S4 S1/4
#define S8 S1/8
#define S16 S1/16
#include "math.h"
enum FREQDEF
{
L1=131,L2=147,L3=165,L4=175,L5=196,L6=220,L7=247,
N1=262,N2=296,N3=330,N4=349,N5=392,N6=440,N7=494,
H1=523,H2=587,H3=659,H4=698,H5=784,H6=880,H7=988,
I1=1047,I2=1175,I3=1319,I4=1397,I5=1568,I6=1760,I7=1976
} song[]=
{
N2,S4,N2,S8,N3,S16,N2,S16,N1,S4,L6,S4,L5,S8,
L3,S8,L5,S8,L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,
N5,S8,N6,S8,N3,S8,N5,S8,N2,S1,N3,S4,N3,S8,
N2,S8,N3,S8,N5,S4,N3,S4,L5,S8,L3,S8,L5,S8,
L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,L6,S8,L6,S8,
L2,S8,L3,S8,L5,S1,N2,S4,N2,S4,N5,S4,N6,S8,
N5,S8,N4,S2,N5,S2,N6,S4,N5,S8,N3,S8,N2,S8,
N3,S16,N2,S16,N1,S8,L6,S16,N1,S16,N2,S1,N3,S4,
N2,S8,N3,S8,N5,S4,N3,S4,L5,S8,L3,S8,L5,S8,
L6,S8,N1,S2,L6,S4,L6,S8,N1,S8,N2,S8,L6,S8,
N1,S8,N3,S8,N2,S1
};
void Sound(int freq)
{
asm{
mov al, 0B6h
out 43h, al
mov dx, 12h
mov ax, 34DEh
div freq
out 42h, al
mov al, ah
out 42h, al
in al, 61h
or al, 3
out 61h, al
}
}
void Nosound(void)
{
asm{
in al, 61h
and al, 252
out 61h, al
}
}
void Delay(int clicks)
{
unsigned int far *clock=(unsigned int far *)0x0000046CL;
unsigned int now;
now=*clock;
while(abs(*clock-now)<>
}
void Sound_All(int freq,int clicks)
{
Sound(freq);
Delay(clicks);
Nosound();
}
void main(void)
{
int i;
for(i=0;song[i];i+=2)
Sound_All(song[i],song[i+1]);
}
解决方案2: 好象在TC的库中带有SOUND()函数(DOS下),可以利用这个函数来做。呵呵,不过别指望这个能有多动听。
解决方案3: 在DOS下,首先要对声卡有一定的了解,然后才能进行开发
以上介绍了“ 如何用c或c++编一个声音文件,就是能够输出声音,音乐?qi”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3318731.html