主页 > 焦点科技 >意境美图_在c语言程序中怎样载入背景音乐啊,是背景音乐哦,求函数具体用法和实例。谢谢 >

意境美图_在c语言程序中怎样载入背景音乐啊,是背景音乐哦,求函数具体用法和实例。谢谢

在c语言程序中怎样载入背景音乐啊,是背景音乐哦,求函数具体用法和实例。谢谢

如下:#include #include #pragma comment(lib, "WINMM.LIB")/*播乐*/void playMusic(){ //aiyo.wav是放在代码文件中 PlaySound(TEXT("aiyo.wav"),0,SND_FILENAME | SND_ASYNC);}/*** 主 函 数(音乐放第)*/void main(){ playMusic(); title(); //欢迎界面上的标题 flower(); //打符画 welcome(); //欢迎界面上的选项菜单 }扩展资料C语言解析WAV音频文件:C语言基本的二进制文件操作函数有fopen,fread等等。(注意是二进制文件操作函数,所以我们不讨论fgets,这是普通的文本文件操作函数)fread是一个函数。从一个文件流中读数据,最多读取count个项,每个项size个字节,如果调用成功返回实际读取到的项个数(小于或等于count),如果不成功或读到文件末尾返回 0。它的函数原型为size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
而且C语言还有一种类型叫做结构体,它在内存中是顺序存储的。刚好我们也已经得知了WAV文件在文件中的顺序以及该顺序中每个部分对应的含义。那么我们可以事先根据前面所说的WAV文件结构来定义好一个struct,然后在main主函数中初始化这个struct,并且通过fread的第一个参数带入初始化好的这个struct,那么执行之后就会自动读取该文件,并且按照顺序自动把这些元数据填充进了我们初始化好的struct中。

给你一子:可以再vc++6.0行,其他编译器不清楚

#include
#include
#pragma comment(lib,"winmm.lib")
int main()
{
puts("播放声...");
PlaySound ("1.wav",NULL,SND_FILENAME | SND_ASYNC);

puts("按任退出!");
system("pause>nul") ;
}

注意。。。音乐文件格式必须是.wav的,播放声音不会停止代码的执行

如果你要在声音播放完之后在继续执行代码,而不是一边播放一边执行的话,请把SND_ASYNC改成SND_SYNC追问

如果要循环播放这首歌,要怎么设置啊追答

那就把 SND_FILENAME | SND_ASYNC 改为 SND_FILENAME | SND_ASYNC | SND_LOOP 就可以了

你自己看标志的说明:组合方式就像上面的一样,用|组合

● SND_APPLICATION
  用应用程序指定的关联来播放声音。
  ● SND_ALIAS
  pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
  ● SND_ALIAS_ID
  pszSound参数指定了预定义的声音标识符。
  ● SND_ASYNC
  用异步方式播放声音,PlaySound函数在开始播放后立即返回。
  ● SND_FILENAME
  pszSound参数指定了WAVE文件名。
  ● SND_LOOP
  重复播放声音,必须与SND_ASYNC标志一块使用。
  ● SND_MEMORY
  播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
  ● SND_NODEFAULT
  不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
  ● SND_NOSTOP
  PlaySound不打断原来的声音播出并立即返回FALSE。
  ● SND_NOWAIT
  如果驱动程序正忙则函数就不播放声音并立即返回。
  ● SND_PURGE
  停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
  ● SND_RESOURCE
  pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
  ● SND_SYNC
  同步播放声音,在播放完后PlaySound函数才返回。本回答被提问者采纳turboc可以把音乐播放函数在时钟中断里调用
播放音乐嘛,就是用sound() 函数发声,delay()函数指定时间长度,nosound()取消发声
可以把乐谱放入数组
基本就是这样
c语言怎么写插入音乐的程序?


?push=core


实训三 乐谱播放程序设计
2009-03-19 21:25
一、实训目的
1C语言音乐程序,写自己或创作的音乐,使在没有乐器的情况下听到自己创作的音乐。
2、巩固文件读取和数组的有关知识。
3、学习使用PC机扬声器的两个控制函数。
二、功能要求
自己创作乐曲,将其转换为计算机程序能够识别的电子文本格式,利用PC机扬声器的功能播放该乐曲。
三、编程参考
1、发声原理
编写音乐程序时,首先需要制作被演奏音乐的乐谱文件。制作乐谱文件可用不同的符号标记,只要所编制的程序易于识别即可。
下面是编制乐谱文件的一种规则:最高音在每个音的前面加“*”:高音,在每个音的前面加“h”;中音,在每个音的前面加“m”;低音,在每个音的前面加“l”。
“*”,“h”,“m”,“l” 与其控制的音符构成音高,决定发声频率。音高的后面是音长,可用整数或小数输入,以控制延时,但中间必须用空格分开。乐谱文件的最前端是一个整数,表示音长基数,一般为300的倍数。乐谱文件的最末端是乐谱文件结束符“##”,以表示乐谱文件结束。
每个音的音长=音长基数*节拍数,其中,音长基数是乐谱文件的第一个字符,如上面乐谱文件为3600,每个音的音频可用一模拟频率值输入。下面是中央C及其前后4个8度中各个音符的频率值
低8度 1 2 3 4 5 6 7
131 147 165 176 196 220 247
中央C 1 2 3 4 5 6 7
262 296 329.7 349.2 392 440 493.9
高8度 1 2 3 4 5 6 7
523.3 587.3 659.3 698.5 784.0 880 987.8
2、PC机扬声器的两个控制函数
sound() 以指定频率打开PC机的扬声器,频率以赫兹为单位。
nosound() 关闭扬声器。
3、乐谱实例
巴赫的《小步舞曲》:
600 h2 4 m5 1 m6 1 m7 1 h1 1 h2 4 m5 4 m5 4 h3 4 h1 1 h2 1 h3 1 h4 1 h5 4 m5 4 m5 4 h1 4 h2 1 h1 1 m7 1 m6 1 m7 4 h1 1 m7 1 m6 1 m5 1 m4 4 m5 1 m6 1 m7 1 m5 1 m6 6 l2 1 m1 1 l7 1 l6 1 h2 4 m5 1 m6 1 m7 1 h1 1 h2 4 m5 4 m5 4 h3 4 h1 1 h2 1 h3 1 h4 1 h5 4 m5 4 m5 4 h1 4 h2 1 h1 1 m7 1 m6 1 m7 4 h1 1 m7 1 m6 1 m5 1 m6 4 m7 1 m6 1 m5 1 m4 1 m5 10 ##
四、拓展训练
1、制作选曲菜单,使其可以播放多首乐曲;
2、修改某些参数,改变乐曲播放速度。
源程序
#include
#include
#include
void main(int argc,char *argv[])
{ FILE *fp;
int rate;
char sound_high[3];
int sound_long;
register int i=0,j;
int sign=0;
float str[200][2];
if(argc!=2) /*命令行参数个数不正确*/
{ printf("Parameters Errors!\n");
exit(1);
} if((fp=fopen(argv[1],"r"))==NULL) /*文件打开失败*/
{ printf("Open file music.doc Errors!\n");
exit(1);
} fscanf(fp,"%d",&rate);/*读取音长基数的值*/
while(!feof(fp)&&!sign) /*文件没有结束并且数据还是乐谱*/
{ fscanf(fp,"%s%d",sound_high,&sound_long); /*得到音频,音长的数值*/
str[i][1]=rate*sound_long; /*音长=音长基数*节拍数*/
switch(sound_high[0])
{ case'*': /*最高音*/
switch(sound_high[1]) /*确定发声频率*/
{ case'1':
str[i++][0]=1046.5;
break;
case'2':
str[i++][0]=1174.7;
break;
case'3':
str[i++][0]=1318.5;
break;
case'4':
str[i++][0]=1396.9;
break;
case'5':
str[i++][0]=1568;
break;
case'6':
str[i++][0]=1760;
break;
case'7':
str[i++][0]=1975.5;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'h': /*高音*/
switch(sound_high[1])
{ case'1':
str[i++][0]=523.3;
break;
case'2':
str[i++][0]=587.3;
break;
case'3':
str[i++][0]=659.3;
break;
case'4':
str[i++][0]=698.5;
break;
case'5':
str[i++][0]=784.0;
break;
case'6':
str[i++][0]=880;
break;
case'7':
str[i++][0]=987.8;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'm': /*中音*/
switch(sound_high[1])
{ case'1':
str[i++][0]=262;
break;
case'2':
str[i++][0]=296;
break;
case'3':
str[i++][0]=329.6;
break;
case'4':
str[i++][0]=349.2;
break;
case'5':
str[i++][0]=392;
break;
case'6':
str[i++][0]=440;
break;
case'7':
str[i++][0]=493.9;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'l': /*低音*/
switch(sound_high[1])
{ case'1':
str[i++][0]=131;
break;
case'2':
str[i++][0]=147;
break;
case'3':
str[i++][0]=165;
break;
case'4':
str[i++][0]=176;
break;
case'5':
str[i++][0]=196;
break;
case'6':
str[i++][0]=220;
break;
case'7':
str[i++][0]=247;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'#':
if(sound_high[1]=='#')sign=1;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
} }
for(j=0;j<=i-1;j++)
{ sound(str[j][0]); /*按频率发出歌曲的音调*/
delay(str[j][1]);
} nosound(); /*关闭扬声器*/
}
C语言中添加音乐的问题

mciSendString(TEXT("closeMySong"),NULL,0,NULL);/*停止播放以解决一些不必要的麻烦*/wsprintf(play_lujing2,"open"%s"aliasmysong",“d:/一万年.mp3”);//将字符串准备好 mciSendString(TEXT(play_lujing2),NULL,0,NULL);//曲打开 mciSendString(TEXT("playMySong"),NULL,0,NULL);//播放歌曲 这样就可以实现播放了,更多的功能请下载这个:(可以看MV、下载歌曲的c语言播放器)

需要,,这段代码貌似在那个window编程书里很常见
急求高手啊,怎么在c语言程序中插入音乐啊!!!!
不要误导新手!C语言程方面是无所不!上到HTML,下到硬件驱,系统内核!
可以实现,但是比较麻在TC能运行,也就是控制台程序,首先,你的程序要能驱动你机器的硬件,也就是你能够和硬件通讯,C语言串口通讯之类的东西.用Unix的思想,任何硬件都可以看做文件来处理!
Windows了解不是很深,这一步可能Windows会提供系统函数的调用.然后将音乐文件以对应声卡的协议,以流的方式向打开的串口里面写就OK了(跟写文件一样)!

上面是原理,其实你可以在网上收搜索具有音乐播放功能的动态链接库(windows下后缀应该是.dll),然后用C语言调用其中对应的函数就OK了.你可以mciSendString。
mciSendStringA("play \\2.mp3","",0,NULL);
如果你喜欢界面编话可以里看看:f?kw=erbi_lucifer&fr=itb_favo&fp=favo#c是控制台程序,应该插不了吧~~~~~~~~~~本回答被提问者采纳那要用到面向界面的编程。关C程序代码肯定是不行的


上一篇: 下一篇: