我们生活在一个信息高速发达的时代,各种各样电子产品层出不穷。对于广大老百姓来说,电子琴可以说已经不再是什么“新鲜玩意”了,它现在作为一种休闲和娱乐的产品早就推出市面,面向百姓,进入了我们的生活。作为一个电子信息科学与技术专业的学生,了解这些电子产品的基本的组成和设计原理是十分必要的,我们学习过了计算机组成的理论知识,而我所做的课程设计正是对我学习的理论进行实践和巩固。
电子琴作为音乐与科技的产物,在电子化和信息化的时代,为音乐的大众化做出了很大的贡献,歌曲的制作大多数都要由电子琴来完成,然后通过媒介流传开来,电视剧和电影的插曲、电视节目音效、甚至你的手机铃声,都很可能包含电子琴的身影。
电子琴因其 *** 作简单, 且能模拟各种传统乐器的音色, 而深受消费者喜爱。笔者介绍了一种电子琴的设计方法。该系统基于可编程逻辑器件 FPGA( FieldProgrammable Logical Device) 芯片 , 利用 VHDL 硬件描述语言设计系统核心部件, 再配以适当的外围电路,可从琴键上进行演奏也可自动进行乐曲演奏, 可模拟传统乐器笛、风琴、小号、单簧、基准频率产生器双簧等音色。该电子琴共有12 个琴键 ( 7 个白色琴键 , 5个黑色琴键) , 分高音、中音、低音 3 个音区, 演奏时音名可动态显示。
原理分析乐曲都是由一连串的音符组成,按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。为了准确地演奏出一首乐曲,仅仅让扬声器能够发出声音是远远不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。由此可见,乐曲中每个音符的发音频率以及音符持续的时间是乐曲能够连续演奏的两个关键因素。
乐曲的12平均率规定:每2个八度音之间的频率要相差1倍,比如简谱中的中音2与高音2。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音5)的频率为392Hz,音符E到F之间、B到C之间为半音,其余为全音。由此可以计算出简谱中从低音l至高音1之间每个音符的频率。简谱音名与频率对应关系下图2-1所示:
1 系统组成
该电子琴系统组成框图如图 1 所示。
2 系统各部分电路设计
2.1 基准频率产生器
电路由晶振与反相器 CC4069 构成时钟脉冲振荡器。振荡器输出的频率为 6 MHz, 作为系统的基准频率。
自动演奏及键盘编码模块( AUTOMUSIC 模块)
该模块主要包括两大内容: 键盘输入编码及乐曲自动演奏。其 VHDL 程序的结构如图 2 所示, 包括 3 个进 程 : p01:process ( clk, Auto) 进程完成对系统时钟 6 MHz 的 1 500 000 分频, 得到 4 Hz 的信号 clk2, 作为另一进程的计数时钟, 用来控制每个音阶之间的停顿时间; p02: process( clk2) 进程为地址计数器, 计数范围为0~音乐存贮模块中音符的最大地址数。完成自动演奏乐曲的地址累加, 同时实现乐曲循环演奏; music: pro-cess ( count0, Auto, index2) 进程主要用来记录所选乐曲的乐谱、根据乐谱产生 12 位发声控制输出 index0 信号。当 auto 为“0”时, 将存储在此模块中的 12位二进制数作为发声控制信号 , 自动演奏乐曲。在记录乐谱时 , 若将 1 拍的时间长度定为1 s, 因地址计数器的时钟频率为 4 Hz, 即 1/4 拍时间为 0.25 s,则 1 个全音音符需重复记录 4次 , 2/4 拍音符重复记录 2 次, 该进程的流程图如图 3所示。
该模块程序中 clk 接基准频率产生器, 输入系统的基准频率 6 MHz; auto 为键盘输入演奏与自动演奏的切换开关, 即当 auto=“0”时, 选择音乐存储器里的乐曲 , 自动演奏 ; auto=“1”时 , 选择键盘输入的信号 , 从琴键上演奏。high2, med2, low2 分别接键盘上高、中、低音的控制开关 , Index2[0]~Index2[11]分别接键盘上的12 个琴键, HIGH0, med0, low0 分别输出音调的音区信息( 分别对应高音、中音、低音区) ; Index0[0]~Index0[11]输出琴键编码或音乐存储器里的乐曲的音符编码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)