- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用通用单片机制作MIDI键盘 作者:徐斌 MIDI是电子乐器的语言,随着MIDI的诞生,数字化电子乐器已经越来越多,MIDI的应用也越来越普遍,在电子乐队演奏,电子音乐制作等各个领域,发挥着越来越大的作用。随着计算机技术的发展,声卡已经成为普通计算机的标准设备,通过声卡的MIDI接口,可以连接各种各样的MIDI设备。连上专供输入的MIDI键盘,再配上相应的软件,计算机就可以完成电子琴的功能,甚至可以进行电子音乐的制作。由于 MIDI自身的特点,它形成的音乐易于进行后期制作,越来越为广大音乐工作者所喜爱,而MIDI键盘作为输入最有效的工具,也越来越普及。 有些计算机音序软件支持用电脑键盘模拟琴键,可通过计算机键盘将音符输入计算机,有爱好者就用电脑键盘的控制芯片改装玩具电子琴,将其并接在计算机键盘上,称之为电脑琴,但这种控制芯片本身并不是为演奏音乐开发的,单音演奏还可以,在多个按键压下时会出错。本文将介绍如何用通用单片机实现MIDI键盘功能,并改装各种电子琴,与计算机连接,从而实现通过MIDI接口,把电脑变成真正的,可支持复音的电子琴。 一 MIDI信号及声卡的MIDI接口 MIDI 是一种异步串行通讯协议,其传输速率为31.25 K baud (每秒31250位),每个字节包括10 位,1个起始位,8个数据位,1个停止位,每个音符的开(或关)命令有3个字节,经计算,不到1mS即可传输一个音符的开关命令。MIDI的数据流是单向的,不进行应答,设备发送音乐信息时,不管接收设备的状态,而接收设备收到的信息,经校验正确的则执行,错误的就忽略——这样规定是由音乐本身的特点决定的,可以丢掉音符,但不能搞错节拍,实时性最优先。从物理层面上看,MIDI信号是电流传输的,5mA代表逻辑“0”,0mA代表逻辑“1”。MIDI设备连接时,必须将输出与另一设备的输入连接。 图1 典型的多个MIDI设备连接方式 计算机声卡的MIDI/GAME接口是15针的D型连接器,其中与MIDI相关的有: 1 +5V +5 VDC 4 GND 地 12 MIDITXD MIDI 输出 15 MIDIRXD MIDI 输入 图 2 声卡上的 MIDI/GAME接口 二 单片机如何产生MIDI信号 本节介绍如何用目前在国内处于最主流地位的51系列单片机产生MIDI信号。实际上,这包含了两层意思 :1.如何产生符合 MIDI协议的串行数据。2.接口电路。 绝大多数51系列单片机都有串行通讯控制器(UART),配合合适的晶振,正确地设置UART的工作参数,就能够自动产生所需的串行数据。使用定时/计数器1(T/C1)作为波特率发生器。将串行口设置为方式1工作状态(10位异步收发,波特率由定时器控制),使用6MHz晶振,T/C1设为自动装入8位计数器状态(TMOD置为2xH),SMOD=1,TH=FFH,此时正好发生31.25K的串行通讯数据,适用于MIDI协议。 串口及定时/计数器初始化如下:(C语言例程,下同) void format(); { TMOD=0x21; //T/C1工作于8位自动装入状态// TL1=0xff; TH1=0xff ; // T/C1常数,确定波特率// SCON=0x50 ; //设串口工作于方式1,// PCON=0x80 ; //相当于SMOD=1;// TR1=1; //T/C1开始计数// } MIDI协议中,每一次音符操作,命令包含3个字节,连续发送,依次为 “命令+通道号”,“音符”,“力度”。命令的第一个字节的最高位为1,通道为0-16,第二字节最高为位0,音符号为0-127,第三字节最高位为0,力度0-127。 发送一个音符命令:(参数 cc,kk,vv分别为“命令+通道号”,“音符号”,“力度”) void send(uchar cc,kk,vv) { TR1=1; //开计数器// SBUF=cc; //写入寄存器// while(TI==0); //等待发送结束// TI=0; //清发送标志// SBUF=kk; while(TI==0); TI=0; SBUF=vv; while(TI==0); TI=0; TR1=0; } MIDI命令简表 命令代码 (cc) 命令说明 数据kk含义及说明 数据vv含义及说明 8+ 通道号 关闭音符
您可能关注的文档
最近下载
- 对近现代中国传统文化 三个传播断层的探讨和反思.doc VIP
- 生物的启示 教学设计 科学五年级上册青岛版.pdf VIP
- 共利电梯zxk-6000说明书客户版.pdf VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(必威体育精装版).pdf VIP
- ISO 13729-2020中文+英文船舶和海洋技术—船舶系泊和.pdf
- 软岩大变形隧道施工技术.pdf VIP
- 河防洪治理工程施工组织设计.doc
- 公立医院 “十五五” 发展规划计划书(2026-2030 年).docx VIP
- 关于医院“十五五”发展规划(2026-2030).docx VIP
- 大学生安全教育教程:人身与财产安全PPT教学课件.pptx VIP
有哪些信誉好的足球投注网站
文档评论(0)