流行音乐乐曲演奏程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

流行音乐乐曲演奏程序

一、需求说明

1、通过一个较大型实用程序的设计与实现,综合运用所学知识,加深理解和掌握。

同时培养学生分析问题和解决问题的能力,以及自学能力。

2、编写用键盘选择计算机演奏歌曲的程序,歌曲清单至少包括3首;

3、程序应该有操作提示、输入和输出,界面追求友好,最好是菜单式的界面;

4、设计若干用例(测试数据),上机测试程序并分析所设计的程序;

二、设计说明

1、简要分析

为了编写一个流行音乐乐曲演奏程序,分析时按照课程设计的要求必须要有操作提示、输入和输出。在界面设计时应该追求友好,能够使用户便于使用该程序。而且按照课题要求最好能够实现菜单式的界面,进一步提高该程序界面的友好性。同时,在设计分析时也必须解决发声问题。分析设计时按照课本P383(10.4 通用发声程序)所示的设计方法解决发声问题。

2、概要分析

2.1 用户界面

以下是显示音乐菜单的字符串

msgmenu db'************************************** ',0dh,0ah

db'* The pop music menu is that: * ',0dh,0ah

db'* * ',0dh,0ah

db'* 1:dahai * ',0dh,0ah ;张宇生《大海》

db'* 2:dongfengpo * ',0dh,0ah ;周杰伦《东风破》

db'* 3:dashetou * ',0dh,0ah ;吴克群《大舌头》

db'************************************** ',0dh,0ah,'$'

2.2 模块定义、原理

2.2.2 提示选择乐曲

msgchoose db 0dh,0ah,'Input the number(1~3) to choose the music you want,input:','$'

在出现菜单时,同时出现选择乐曲模块,帮助用户认识菜单和操作菜单的方法。

2.2.2提示音乐播放

msgdoing db 0dh,0ah,0dh,0ah

db 0dh,0ah,' Now,playing the pop music which you chose!Please enjoying...'

db 0dh,0ah,0dh,0ah,'$'

在用户选择所选音乐,程序演奏音乐时,同时显示以上程序段,提示用户系统已经在演奏所选流行歌曲。

2.2.3 提示输入字符错误

msgerror db 0dh,0ah,0dh,0ah,0dh,0ah,'!!! sorry, you input a wrong number!!!',0dh,0ah db 'please try to choose from 1 to 3 again!,input:','$'

如果出现用户输入字符不符合程序定义的字符串时,程序显示以上模块段,提示用户操作错误,同时程序转回菜单,提示用户重新操作。

2.2.4 乐曲频率表和节拍表

以下节选《大舌头》流行乐曲的频率表和节拍表,其余乐曲见源程序段。

freq_dashetou dw 524,524,524,524,494,524,588,524 ;频率表

dw 524,524,524,524,494,524,494,392

dw 524,524,524,524,494,524,588,524

dw 330,330,294,294,262,330,300,262

dw 524,524,524,524,494,524,588,524

dw 524,524,524,524,494,524,494,392

dw 524,524,524,524,494,524,588,524

dw 330,330,294,294,262,330,300,262

dw -1

time_dashetou dw 500,500,500,500,1000,500,500,500 ;节拍表

dw 500,500,500,500,1000,500,500,500

dw 500,500,500,500,1000,500,500,500

dw 500,500,500,250,250,500,500,1000

dw 500,500,500,500,1000,500,500,500

dw 500,500,500,500,1000,500,500,500

dw 500,500,500,500,1000,500,500,500

dw 500,500,500,250,250,500,500,1000

2.2.5 乐曲处理模块

以下节选第一乐曲的处理模块,其余乐曲可见源程序。

music1:dispmsg msgdoing ;music1处理程序段

mov si,offset freq_dahai

mov di,offset time_dahai

m1: mov cx,[si]

cmp cx,-1 ;-1用于判断是否结束歌曲

je next

mov bx,[di]

call gensound

add si,2 ;取下一频率值

add di,2 ;取下一节拍值

jmp m1

2.2.6音乐处理模块

gensound proc near

push dx

mov al,0b6h ; 向计数器写控制数

out 43h,al ;方式3、双字节写和二进制计数方式写到控制口mov dx,08h ; 设置被除数

mov ax,3208h

div cx ; 其商为预置值

out 42h,al ; 先送LSB

mov al,ah

相关文档
最新文档