基于单片机的MIDI音乐播放电路和方法
本申请公开了基于单片机的MIDI音乐播放电路和方法。所述电路的一具体实施方式包括:单片机、MIDI芯片、功率放大电路、扬声器,其中,单片机与MIDI芯片电连接,通过UART接口通信,MIDI芯片与功率放大器电连接,功率放大器与扬声器电连接;单片机解析MIDI消息,确定通道的个数及各个通道内音符的播放时间,然后,循环执行如下步骤:定时器的值每增加1,则将定时器当前的值依次与各个通道待播放音符的播放时间进行比较,如果相等,向MIDI芯片发送控制指令,MIDI芯片根据控制指令,确定播放的音频信号,并将音频信号发送给功率放大器进行功率放大,功率放大器用放大后的音频信号驱动扬声器发声。该实施方式实现了采用低成本的单片机播放MIDI音乐。
发明专利
CN202010734490.3
2020-07-27
CN111933099A
2020-11-13
G10H7/00(2006.01)
北京爱其科技有限公司
张洋;张虎
100085 北京市海淀区上地三街9号D座11层D1204A
济南信达专利事务所有限公司
李世喆
北京;11
1.一种基于单片机的MIDI音乐播放电路,其特征在于,所述电路包括: 单片机、MIDI芯片、功率放大电路、扬声器,其中,所述单片机与所述MIDI芯片电连接,所述MIDI芯片与所述功率放大器电连接,所述功率放大器与所述扬声器电连接; 所述单片机解析MIDI消息,确定通道的个数及各个通道内音符的播放时间,然后,循环执行如下步骤:定时器的值每增加1,则将定时器当前的值依次与各个通道待播放音符的播放时间进行比较,如果相等,向所述MIDI芯片发送控制指令,所述MIDI芯片根据所述控制指令,确定播放的音频信号,并将所述音频信号发送给所述功率放大器进行功率放大,所述功率放大器用放大后的音频信号驱动所述扬声器发声。 2.根据权利要求1所述的基于单片机的MIDI音乐播放电路,其特征在于, 所述单片机确定通道的个数及各个通道内音符的播放时间后,为每个通道创建一个任务,然后,循环执行如下步骤:定时器的值每增加1,依次执行各个任务,每个任务被配置用于:如果所述定时器当前的值小于当前任务中待播放音符的播放时间,跳转下一个任务;如果所述定时器当前的值等于当前任务中待播放音符的播放时间,则向所述MIDI芯片发送控制指令,然后跳转下一个任务。 3.根据权利要求2所述的基于单片机的MIDI音乐播放电路,其特征在于, 所述单片机的每个任务还被配置用于:如果所述定时器当前的值大于当前任务中待播放音符的播放时间,则选取下一个待播放音符的播放时间与定时器当前的值进行比较。 4.根据权利要求4所述的基于单片机的MIDI音乐播放电路,其特征在于, 所述单片机的型号为STM32F103。 5.根据权利要求4所述的基于单片机的MIDI音乐播放电路,其特征在于, 所述MIDI芯片的型号为ISD9160。 6.一种基于单片机的MIDI音乐播放方法,其特征在于,所述方法包括: 解析MIDI消息,确定通道的个数及各个通道内音符的播放时间; 循环执行如下步骤:定时器的值每增加1,则将定时器当前的值依次与各个通道待播放音符的播放时间进行比较,如果相等,则向MIDI芯片发送控制指令,所述MIDI芯片根据所述控制指令,确定播放的音频信号,并将所述音频信号发送给功率放大器进行功率放大,所述功率放大器用放大后的音频信号驱动扬声器发声。 7.根据权利要求6所述的基于单片机的MIDI音乐播放方法,其特征在于, 在确定通道的个数及各个通道内音符的播放时间后,为每个通道创建一个任务,然后,循环执行如下步骤:定时器的值每增加1,依次执行各个任务,每个任务被配置用于:如果所述定时器当前的值小于当前任务中待播放音符的播放时间,跳转下一个任务;如果所述定时器当前的值等于当前任务中待播放音符的播放时间,则向所述MIDI芯片发送控制指令,然后跳转下一个任务。 8.根据权利要求7所述基于单片机的MIDI音乐播放方法,其特征在于, 每个任务还被配置用于:如果所述定时器当前的值大于当前任务中待播放音符的播放时间,则选取下一个待播放音符的播放时间与定时器当前的值进行比较。 9.根据权利要求6-8任一所述的基于单片机的MIDI音乐播放方法,其特征在于, 所述控制指令包括:所述待播放音符所在通道的唯一标识、所述待播放音符的唯一标识、播放时长、播放音量。 10.根据权利要求9所述的基于单片机的MIDI音乐播放方法,其特征在于, 所述MIDI芯片储存音色库。