ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:53.48KB ,
资源ID:22864260      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22864260.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第三讲让你的程序声图并茂Word文件下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第三讲让你的程序声图并茂Word文件下载.docx

1、,&snd);/* if the answer it to exit ,do so. */ if (snd=0) break;/* Ask how many times to repast the sound. */Nunger of times:/* get the answer */scanf(cnt);/* repeat the sound the number of time specifed */while(cnt-)/* swich on type of sound to produce*/switch (snd)case 1: /* do a siren:sweep up */f

2、or (note=1000;note150;note-=10)sound(note);delay(20);/* Sweep down */for (;note1000;note+=10) delay(20);break;case 2: /* do an overload. sweep up */ for (note=4000;10;delay(70);case 3: /* do a whoop: Sweep up*/ for (note=1000; sound (note);delay (200);case 4: /* do a phaser: sweep down */ for (note=

3、60; notestdlib.htime.hint i,j;randomize();while(!bioskey(1)i=rand()*5000;sound(i);delay(10);nosound();前台音乐设计 首先我们来看下面这个例子,演奏的是好人一生平安#define N1 64#define N2 32#define N4 16#define N8 8#define N16 4#define END 0enum NOTESC10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,C0=262,D0=296,E0=330,F0=3

4、49,G0=392,A0=440,B0=494,C1=525,D1=587,E1=659,F1=698,G1=784,A1=880,B1=988,C2=1047,D2=1175,E2=1319,F2=1397,G2=1568,A2=1760,B2=1796song= D0,N4,E0,N8,D0,N8,C0,N4,A10,N4,G10,N8,E10,N8,G10,N8,A10, N8,C0,N2,A10,N4,A10,N8,C0,N8,G10,N8,A0,N8,E0,N8,G0,N8, D0,N2,E0,N4,D0,N8,E0,N8,G0,N4,E0,N4,G10,N8,E10,N8,G10,

5、 N8,A10,N8,C0,N2,A10,N4,A10,N8,C0,N8,A10,N8,A10,N8,D10, N8,E10,N8,G10,N2,D0,N4,D0,N4,G0,N4,A0,N8,G0,N8,F0,N2,G0, N2,A0,N4,G0,N8,E0,N8,D0,N8,E0,N8,C0,N8,A10,N8,D0,N2,E0, N4,G0,N8,E0,N8,G0,N4,E0,N4,G10,N8,E10,N8,G10,N8,A10,N8, C0,N4,A10,N4,A10,N8,C0,N8,D0,N8,A10,N8,C0,N8,E0,N8,D0, N1,END,END; main() i

6、nt note=0,fre,dur,control; clock_t goal; while(songnote!=0) fre=songnote; dur=songnote+1; if(kbhit() break; if(fre) outportb(0x43,0xb6); fre=(unsigned)(1193180L/fre); outportb(0x42,(char)fre); outportb(0x42,(char)(fre8); control=inportb(0x61); outportb(0x61,(control)|0x3); goal=(clock_t)dur+clock( )

7、; while(goalclock ( ); outportb(0x61,control); goal=(clock_t)0;note=note+2; 音乐是时间的艺术,即把各种音符按不同的时值演奏出来,就可以构成曲调。因此,音乐程序设计中的两个重要因素是:如何用“曲调定义语言”来表示音符(即音高);如何控制音符的持续时间(即音长)。解决了这两个问题之后,剩下的就是如何用c语言控制计算机的扬声器发声。下面我们详细的讲解一下。 (1)音符及音长的定义 音调由音符构成,音调的高低由音符频率决定,频率越高,音调也越高。音乐中使用的频率一般为1311976HZ,它包括了中央C调及其前后的4个8度的音程

8、。 用c语言中的枚举类型常量可定义上述表中的各音符的频率。如果音乐中有比表中的音符更高的音调,则可根据表上的有关值推出,如高8度的C,D和E的频率分别为2091,2350和2638,还需作适当的调整。 EnumNOTES C10=131,DlO=147,ElO=165,FlO=175,GlO=196,A10=220,B10=247 CO=262,DO=294,EO=330,FO=349,GO=392,AO=440,BO=494, C1=523,Dl=587,EI=659,Fl=698,G1=784,A1=880,B1=988, C2=1047,D2=1175,E2=1319,F2=1397,G

9、2=1568,A2=1760,B2=1976 音长即一个音符的持续题意。在乐曲中,音长用全音符、半音符、4分音符来表示,通常以4分音符一拍,等等。音长可用下面定义: #define N1 32 #define N2 16 #define N4 8 #define N8 4 #define N16 2 #define END 0 如果感觉计算机所演奏的乐曲速度过快,可以适当调整上面的值。 (2) 用C语言定义音乐 NOTES类型中各音调对应的简谱如下: 上面的乐谱共有10个音符,其音高和音长如下: (3) 如何控制扬声器如何控制扬声器发生,则可用Turbo C中的库函数中outportb(int

10、 port, char byte),函数的原型在”dos.h”文件中,port为端口地址,byte为传送给端口的字节。扬声器的端也址为0x42,下面的程序中主要是发声的频率。另外,还需要使发声延迟,就要用到”clock_t”,类型变量goal和clock()库函数,变量和程序的原型在”time.h”文件中,使扬声器发声的步骤为: 初始化端口0x42; 向端口0x42传送声频率fre;延迟:当goalclock()时,做循环。后台音乐设计 后台音乐设计主要是程序的背景声音,看下面的例子:graphics.hfcntl.hvoid interrupt(* handler)( );void inte

11、rrupt music( );int handle,control; C10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247, C0=262, D0=296, E0=330, F0=349, G0=392, A0=440, B0=494, C1=523, D1=587, E1=659, F1=698, G1=784, A1=880, B1=988, C2=1047, D2=1175, E2=1319, F2=1397, G2=1568, A2=1760, B2=1796 E1,N4,E1,N8,E1,N8,F1,N4,G1,N4,F1,N

12、4,F1,N4,E1,N4,D1, N4,C1,N4,C1,N4,D1,N4,E1,N4,E1,N4,D1,N4,D1,N4,E1,N4, E1,N8,E1,N8,F1,N4,G1,N4,G1,N4,F1,N4,E1,N4,D1,N4,C1, N4,C1,N4,D1,N4,E1,N4,D1,N4,D1,N4,C1,N4,D1,N4,D1,N8, D1,N8,E1,N4,C1,N4,D1,N4,E1,N8,F1,N8,E1,N4,C1,N4,D1, N4,E1,N8,F1,N8,E1,N4,C1,N4,C1,N4,D1,N4,G0,N4,E1,N4, E1,N4,E1,N8,F1,N4,G1,N

13、4,G1,N4,F1,N4,E1,N4,D1,N4,C1, N4,C1,N4,D1,N4,E1,N4,E1,N4,D1,N4,C1,N4,D1,N4, END,END ; int gdriver=VGA,gmode=1,i; initgraph (&gdriver,&gmode, handler=getvect(0x1c); setvect(0x1c,music);cleardevice( );setbkcolor(BLUE);setcolor(YELLOW);setfillstyle(SOLID_FILL,RED);sector(200,150,50,120,70,50);bar3d(400

14、,150,500,200,10,5);setactivepage(1);sector(200,150,50,170,70,50);bar3d(400,200,500,250,10,5);for(i=0;i(int)dur*2/5*/fre) flag=0; note=note+2; if(note=134)note=0; handler();乐谱文件的制作 我们在这里使用的乐谱文件格式如下:最高音的前面加”*”;高音,在每个音的前面加”h”;中音,在每个音的前面加”m”;低音,在每个音的前面加”L”。“*”、“h”、“m”、“L”与其控制的音符构成音高,决定发声频率。音高的后面是音长,可用整数

15、或小数输入,以控制延时,但中间必须用空格分开。乐谱文件的最前端是一个整数,表示音长基数,一般为300、600、900、1200。乐谱文件的最末端是乐谱文件结束符”#”,以表示乐谱文件结束。下面是电影void main(int argc,char *argv)FILE *fp;int rate;char sound_high3;float sound_long;register int i=0, j ;int sign=0;float str1002;if(argc!=2) /* 命令行参数个数不正确 */ printf(Pararneters Errors! n) ;exit(1);if(fp

16、=fopen(argv1,r)=NULL) /*文件打开失败 */open file music, doc Errors! ); exit (1);fscanf(fp, &rate ); /* 读取音长基数的值*/feof(fp)&!sign ) /* 文件没有结束并且数据还是乐谱 */ fscanf(fp,%s %f,sound_high,&sound_long); /* 得到音频、音长的数值 */ stri1=rate*sound_long; /* 音乐= 音长基数*节拍数*/ switch(sound_high0) case *: /* 最高音 */switch (sound_high1

17、) /* 确定发音的频率 */1 stri+0=1046.5;2 stri+0=1174.7;3 stri+0=1318.5;4 stri+0=1396.9; brcak:5 stri+0=1568;6 stri+0=1760;7 stri+0=1975.5; default: printf ( n Errors in music.doc n exit(1);case h /* 高音*/switch(sound_high1) stri+0=523.3;stri+0=587.3;stri+0=659.3; stri+0=698.5; stri+0=784.0;stri+0=880;stri+0=

18、987.8;n Errors in music.doc n m /* 中音 */ switch(sound_high1) stri+0=262; stri+0=296; stri+0=329.6; stri+0=349.2; stri+0=392;stri+0=440;stri+0=493.9;printf ( l /* 低音 */ stri+0=131; stri+0=147; stri+0=165; stri+0=176; stri+0=196; stri+0=220; stri+0=247;printf( # if(sound_high1=) sign=1;exit (1);for(j=

19、0;j#define CENTERX 320 /*表盘中心位置*/#define CENTERY 175#define CLICK 100 /*喀嗒声频率*/#define CLICKDELAY 30 /*喀嗒声延时*/#define HEBEEP 10000 /*高声频率*/#define LOWBEEP 500 /*低声频率*/#define BEEPDELAY 200 /*报时声延时*/*表盘刻度形状*/int Mrk_18=-5,-160,5,-160,5,-130,-5,-130, ;int Mrk_28=-5,-160,5,-160,2,-130,-2-130, ;/*时针形状*/int HourHand

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1