您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 如何用c或c++编一个声音文件,就是能够输出声音,音乐?qi

如何用c或c++编一个声音文件,就是能够输出声音,音乐?qi

来源:网络整理     时间:2016/8/16 5:36:11     关键词:

关于网友提出的“ 如何用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

相关图片

相关文章