首页> 中国专利> 自动演奏机械装置及敲击乐器自动演奏系统

自动演奏机械装置及敲击乐器自动演奏系统

摘要

本发明公开一种自动演奏机械装置及敲击乐器自动演奏系统。为解决现有技术的空白而发明。包括:乐谱生成器:用于解析MIDI乐谱文件获取乐谱信息,再据此生成驱动数据;控制装置,用于依据驱动数据产生驱动信号输出;自动演奏机械装置,为上述的演奏装置,用以接收驱动信号以产生敲击动作。上述结构的本发明,可以接收MIDI文件并生成驱动信号,并利用该信号对诸如木琴类的敲击乐器进行演奏。

著录项

  • 公开/公告号CN105390128A

    专利类型发明专利

  • 公开/公告日2016-03-09

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201510756965.8

  • 申请日2015-11-09

  • 分类号G10F1/08(20060101);G10F5/02(20060101);

  • 代理机构11325 北京中伟智信专利商标代理事务所;

  • 代理人张岱

  • 地址 100084 北京市海淀区清华园1号

  • 入库时间 2023-12-18 14:45:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-11

    授权

    授权

  • 2016-04-06

    实质审查的生效 IPC(主分类):G10F1/08 申请日:20151109

    实质审查的生效

  • 2016-03-09

    公开

    公开

说明书

技术领域

本发明涉及一种自动演奏机械装置及敲击乐器自动演奏系统。

背景技术

目前成熟的自动演奏乐器主要集中于钢琴等键盘乐器,该类乐器具有本身传动装置设计成熟,商业化程度高,标准MIDI文件对钢琴适应性好等特点。木琴作为一种需要人手把握琴槌进行敲击发声,且不具有延音设备的装置,在自动演奏中面临多数标准MIDI乐谱不适合木琴,音强度对力敏感性高,需要重新设计代替人手敲击功能的机械装置等困难。同时敲击装置容易出现噪音过大的问题。而且由于木琴发声块位置和高度的不规则性,需要对自动演奏木琴设计调节装置。另一方面,现在的电子合成乐谱,如黑乐谱,几乎不可能通过人使用真实乐器演奏出来,必须使用具有高响应频率并且可全音符同时响应的自动演奏装置来演奏。

发明内容

为克服上述缺陷,本发明的目的在于提供一种自动演奏机械装置及敲击乐器自动演奏系统。

为达到上述目的,本发明的自动演奏机械装置,用于在接收到控制信号后驱动琴槌做出敲击动作;包括:底板,以及间隔设置在底板上的固定立臂和电磁致动立臂,在固定立臂和电磁致动立臂的铁芯上端安装有驱动杆,所述的底板、固定立臂、电磁致动立臂和驱动杆组成可变四连杆装置;其中,所述的电磁致动立臂用于接收控制信号产生磁场使铁芯向下动作或失去磁场使铁芯复位。

优选地,所述的电磁致动立臂包括:电磁线圈,设置在电磁线圈内的滑动立臂、在滑动立臂下部设置有复位弹簧。

优选地,所述的电磁线圈通过支架固定在底板上,在所述的滑动立臂上设有限位凸起,在所的支架上对应该限位凸起设有限位支架;所述的限位凸起与限位支架间设有隔振装置:为贴于的软垫片,垫片材料可为软质PVC塑料或海绵。

优选地,在所述的琴槌4上固定有降低振动的阻尼杆。

优选地,阻尼杆6所覆盖的琴槌4的部分应不短于琴槌4露出可变四连杆5部分长度的1/3,不长于琴槌4露出可变四连杆5部分长度的2/3。

优选地,所述的MIDI音乐信号是按下述方法产生的:

1)读入乐谱数据;乐谱数据中包含了乐谱的长度信息和各个音符的信息;乐谱数据由解析MIDI文件得到。

2)根据外部设定的采样率和乐谱长度的乘积生成一个所有元素全为零的二维输出数组;其中,数组高度为所需通道数,宽度为乐曲长度(秒)乘以采样率;

3)读入一个音符数据;

其中的音符数据:与乐曲起始处相隔的时间(秒),音高(频率),时值(持续时长),以及力度,形成一个矢量;

4)生成单个音符对应的输出脉冲;

生成一个方形或半正弦脉冲,脉冲周期为音符时值乘以采样率,脉冲幅值为归一化的音符力度值乘以电路所能提供的电压,脉冲宽度和脉冲上升时刻均取为事先指定的常数(由调试获得),与采样率保持恒定比例关系;

5)确定单个音符脉冲在输出数组中的位置;

木琴的每个琴键均对应一个机械装置,亦即对应一个输出通道;事先为各琴键指定输出通道号,得到通道号与音符频率的对应关系;而输出数组的行号与通道号对应;由音符频率可获知音符脉冲起点在输出数组中所处的行号;

音符与乐曲起始处相隔的时间乘以采样率,即为音符脉冲起点在输出数组中对应的列号;

6)在输出数组中,以步骤5获得的行号与列号为起点位置,将步骤4获得的脉冲代入输出数组,替换其相应原值;

7)判断音符是否为乐谱的最后一个音符,若是最后一个音符,则程序转入输出模块;若不是,则转到步骤3继续读入下一个音符。

为达到上述目的,本发明的敲击乐器自动演奏系统,包括:

乐谱生成器:解析MIDI乐谱文件获取乐谱信息,再据此生成驱动数据;

控制装置,用于依据驱动数据产生驱动信号输出;

自动演奏机械装置,为上述的演奏装置,用以接收驱动信号以产生敲击动作。

其中,所述的乐谱生成器,包括:

输入装置,读入乐谱数据;乐谱数据中包含了乐谱的长度信息和各个音符的信息;乐谱数据由解析MIDI文件得到;

生成装置,根据外部设定的采样率和乐谱长度的乘积生成一个所有元素全为零的二维输出数组;其中,数组高度为所需通道数,宽度为乐曲长度(秒)乘以采样率;

读入装置,读入一个音符数据;

其中的音符数据:与乐曲起始处相隔的时间(秒),音高(频率),时值(持续时长),以及力度,形成一个矢量;

转换装置,将单个音符转换为一个方形或半正弦脉冲,脉冲总长为音符时值乘以采样率,脉冲幅值为归一化的音符力度值乘以电路所能提供的电压,脉冲宽度和脉冲上升时刻均取为事先指定的常数,与采样率保持恒定比例关系;

存入装置,根据实现标定的通道号与音符频率的对应关系,以及音符与乐曲起始处相隔的时间,确定单个音符脉冲在输出数组中的位置;将脉冲代入输出数组,替换其相应原值;

判断装置,判断音符是否为乐谱的最后一个音符,若是最后一个音符,则程序转入输出模块;若不是,则由读入装置继续读入下一个音符。

上述结构的本发明,可以接收MIDI文件并生成驱动信号,并利用该信号对诸如木琴类的敲击乐器进行演奏。

附图说明

图1为本发明自动演奏系统的结构原理图。

图2为图1中驱动电路原理图。

图3为本发明中乐谱处理的方法流程图。

图4为解析MIDI文件,获取生成输出数组所需的乐谱信息的流程图。

图5(1)为实施例中生成数组脉冲信号示意图。

图5(2)为从K1到K2的脉冲信号转变过程示意图

具体实施方式

本发明的敲击乐器自动演奏系统,包括:乐谱生成器:用于将MIDI乐谱文件生成驱动数据;控制装置,用于依据驱动数据产生驱动信号输出;自动演奏机械装置,用以接收驱动信号以产生敲击动作。如图1所示,本发明的系统除木琴主体外主要包括自动演奏机械装置100和数控系统,其中数控系统由乐谱生成器300和控制装置400组成。使用时,自动演奏机械装置固定在木琴主体之上。当人为向乐谱生成器300发送读取标准音乐文件指令并向控制装置400供电后,自动演奏木琴开始演奏。

如图1所示,本发明的自动演奏机械装置,用于在接收到控制信号后驱动琴槌做出敲击动作;包括:底板,以及间隔设置在底板上的固定立臂和电磁致动立臂,在固定立臂和电磁致动立臂的铁芯上端安装有驱动杆,所述的底板、固定立臂、电磁致动立臂和驱动杆组成可变四连杆装置;其中,所述的电磁致动立臂用于接收控制信号产生磁场使铁芯向下动作或失去磁场使铁芯复位。

上述的电磁线圈通过支架固定在底板上,在所述的滑动立臂上设有限位凸起,在所的支架上对应该限位凸起设有限位支架;所述的限位凸起与限位支架间设有隔振装置,其可以为软垫片,垫片材料可为软质PVC塑料或海绵。增加隔振装置有利于降低机械装置在高速运动时发出的噪声。

为了降低琴槌在上下动作过程中的振动,在所述的琴槌4上固定有降低振动的阻尼杆,所述的阻尼杆宜选用高刚性的材料制成,如:Q245钢。

最佳的,阻尼杆6所覆盖的琴槌4的部分应不短于琴槌4露出可变四连杆5部分长度的1/3,不长于琴槌4露出可变四连杆5部分长度的2/3。

实施例

参照附图的图1,实施本发明的自动演奏木琴除木琴主体外主要包括自动演奏机械装置100和数控系统,其中数控系统充当乐谱生成器300和控制装置400。乐谱生成器300为台式PC机并放置在木琴主体之外,控制装置放置在木琴主体中,自动演奏机械装置固定在木琴主体之上。当人为向乐谱生成器300发送读取标准音乐文件指令并向控制装置400供电后,自动演奏木琴开始演奏。

如图1所示,电磁线圈1为电磁铁用线圈,可选用额定电压12V;在工作中被电源模块402经过控制器401以超过其额定电压的信号短时间激励。铁芯2在线圈被激励时受到吸引向下直线运动,在本实例中铁芯2的行程为10mm。可变四连杆5将铁芯2的直线运动转化为琴槌4的转动并敲击木琴本体上的控制块使其发声,敲击完成后,铁芯2被弹簧高速弹回原位置以准备下一次的敲击,典型的弹回时间为40ms。

敲击时,使用胶带8缠绕的琴槌头部与木质块发生碰撞,胶带8被用来调节撞击产生的音色以使其更接近乐器的正常音色,本实施例中胶带8取为双层的绝缘电工胶带。

敲击结束后,铁芯2回弹至初始位置后被带有缓冲垫9的限幅装置3拦截,从而使杆在回弹时不至于飞出以保证下一次敲击的响应速度,本实验例中缓冲垫9为3mm厚的软PVC垫片。在铁芯2与缓冲垫9发生碰撞时琴槌4会产生大幅度的振动,进而产生噪音且影响下一次敲击的准度。高刚度阻尼杆6被固定于琴槌4上以降低振动。本实验例中加入高刚度阻尼杆6后琴槌头部振幅减小至5mm。在安装高刚度阻尼杆6时,如图所示,被高刚度阻尼杆6所覆盖的琴槌4的部分应不短于琴槌4露出可变四连杆5部分长度的1/3,不长于琴槌4露出可变四连杆5部分长度的2/3。

作为安装时粗调琴槌头部高度的方式,可变四连杆5可以通过改变上面曲柄的长度来调节琴槌头部能够敲击到的位置,从而适应原声木琴各木质块的不同高度。细调部分由控制器完成,通过改变控制器中的参数,可以改变琴槌头部与木质块的接触时间,从而改变音的强度,细调部分具体的实现方式在自动演奏控制器部分详细说明。

图2为本发明的一个实施例中自动演奏控制器400的具体电路图示。如图2所示,自动演奏控制器包括控制器401和电源模块402。

在本实施例中,控制器401为开关电路,控制器401的信号输入端11接收来自乐谱生成器300的信号R。本实施例中,信号R可为不同长度的单位脉冲或不同占空比的PWM信号或模拟信号。接收到信号R后,开关元件12对信号电压做出判断决定电流输出端13的开闭。

若使用PWM信号作为信号R,则其频率应在20kHz以上,以防止致动器线圈自激发出噪声。

在本实施例中,开关元件12为N沟道场效应管。开关元件12并非只输出通断两种状态,在信号R电压在3V到10V之间时,开关元件12对电流I有近似线性的放大,因此信号R为模拟信号时仍可通过不同的电压值调节流过电流输出端13的电流I。

电源模块402根据电流输出端的开闭间歇性地输出电流I,电流I传入自动演奏机械装置100控制其运动。电流I的幅值Ai决定琴槌8的最大敲击速度,持续时间Ti决定琴槌8的敲击速度和与木质块接触的时间。在回弹阶段,电流I使电磁线圈1产生吸力减小铁芯2与缓冲垫9的撞击强度以减小噪声。

乐谱生成器

图3为本发明的一个实施例中乐谱生成器300的流程图示。整个流程包括了从读取乐谱文件到乐谱转换到输出模块向自动演奏控制器400输出信号R的具体过程。

步骤S1读入乐谱文件

读入的乐谱文件为标准MIDI文件。在本实施例中,解析文件的程序基于MIDI_JamSession提供的Labview子程序并修改,文件解析流程参见图4及相应说明,获得的乐谱数据中包含了乐谱的长度信息和各个音符的信息。

步骤S1读入乐谱数据后,后续的乐谱转换程序会根据外部设定的采样率和乐谱长度(秒)的乘积初始化两个全零的数组,以支持两个乐器的同时演奏。这里生成的数组即步骤S6中用到的数组。数组高度为所需通道数,宽度为乐曲长度(秒)乘以采样率。

步骤S2读入音符及音轨信息数据

其中的音符及音轨信息数据包括音符所在音轨号,与乐曲起始处相隔的时间(秒)即偏移量,音高,时值,以及力度,形成一个矢量。步骤S2每次读入一个音符

步骤S3判断该音符所在的音轨号,在本实施例中,若音轨号为1,即木琴,则程序运行步骤S4;若音轨号不为1,则判断为应生成其他乐器的乐谱,如萨克斯,关于萨克斯乐谱的生成在另一份专利中会详细说明。

步骤S4根据事先标定的木琴音域将音符的音高转换为输出的通道号,亦即木琴键位。

步骤S5将单个音符转换为一个方形或半正弦脉冲,脉冲总长为音符时值乘以采样率,脉冲幅值为归一化的音符力度值乘以电路所能提供的电压,脉冲宽度和脉冲上升时刻均取为事先指定的常数(经调试获得),与采样率保持恒定比例关系。

步骤S6中音高决定了它所对应的通道,亦即数组的行序号,音符与乐曲起始处相隔的时间决定了脉冲起点在输出数组中的列序号。将S5中的脉冲代入输出数组的相应位置,替代这些位置的原值。

步骤S7判断音符是否为乐谱的最后一个音符,若是最后一个音符,则程序转入输出模块;若不是,则范围步骤S2继续读入下一个音符。

步骤S9中在硬件上可能有多块模拟信号输出卡,本实施例中为两个,需要进行始终同步以保证演奏乐曲的质量。为了使得两张卡对于作动器的控制同步,让第二张模拟输出卡通过自带的PFI引脚接收第一张模拟输出卡的时钟信号,保证控制装置的同步。

步骤S10将整个输出数组经由NI模拟输出板卡输出,每行数据对应一个通道,各通道每秒输出的数据量与系统采样率相同。

图4为解析MIDI文件,获取生成输出数组所需的乐谱信息的具体过程。各步骤的详细说明之后会给出数据示例(《小星星》片段),读取规则参见MIDI格式标准。

步骤Q1将二进制MIDI文件以十六进制表示,并转化为相应的字符串。

步骤Q2读取字符串的“文件头”部分,该部分以4D546864开头,包含乐曲类型、音轨数和每四分音符的tic数的信息。本例为三音轨(一个全局音轨加两个乐器音轨),每四分音符包含480个tic

步骤Q3开始读取某条音轨(首先是全局音轨),音轨开头必须为4D54726B,其后以四字节表现该音轨数据长度。音轨的参数设置和具体的音符信息则由“间隔时间+事件名称+事件参数”的格式表示,下述步骤将逐一解读事件信息。

步骤Q4读取本条事件与上一事件的间隔时间。将此时读取的字节以二进制表示,若首位为0,则该字节表示间隔时间对应的tic数;若首位为1,则继续读取下一字节直到当前读取字节的首位为0。设读取的三个字节为83FF7F,则首先去掉前两字节首位的1,得037F7F,时间间隔为3*128^2+127*128^1+127*128^0=65535tic。

步骤Q5读取事件名称与事件参数。字节9x表示按下按键(x为本音轨内的频道号),字节8x表示松开按键,两者之后都会附上一个字节的音高和一个字节的力度作为事件参数;字节FF03表示设定音轨名,之后附上一个字节的名字长度与相应字节数的名字,作为事件参数;FF2F00表示音轨结束。其余的系统控制事件一般不影响本实例的实施。

步骤Q6依据前两步骤生成乐谱信息数组,每行表示一个音符的信息,依次为频道号、开始时间、持续时间、音高和力度。每按下一个按键,系统将当前时间设为该音符的起始时间,并记录力度和频道号;当同一按键被松开时,系统由当前时间减去起始时间获得持续时间,并在乐谱信息数组中添加新的一行。本步骤的时间单位均为tic。

步骤Q7和Q8为循环条件判断。

步骤Q9将步骤Q6生成的乐谱信息数组中的时间单位由tic改为实际时间(秒),需要用到在全局音轨中读取的tempo值(每个四分音符的微秒数)和文件头中的每四分音符tic数。

步骤Q9的结果另经由图3所示处理,即可转化为可以输出给木琴或其他乐器的作动器的数组。

乐谱生成器数据示例

(解析MIDI文件获取乐谱信息,再据此生成驱动数据)

以《小星星》片段为例,MIDI文件的解读如下:

#文件头#

4D546864(MThd)00000006(headerlength:6)0001(multi-tracksynchronized)0003(numberoftracks:2+1)01E0(ticsperquarter-note:480)

#全局音轨#

4D54726B(MTrk)0000001B(lengthoftrack:27)00FF510307A120(settempo:500,000)00FF030454657374(SequenceName:Test)00FF5804040207A1(timesignature)00FF2F00(endoftrack)

#木琴音轨#

4D54726B(MTrk)00000099(lengthoftrack:153)00FF030958796C6F70686F6E65(TrackName:Xylophone)00B0640000650000060C00E0004000B0650000640100064000260000657F00647F00650000640200064000657F00647F00C01900B00000000768000A40005D00005B00005C00005F00(control)0090305F(press30)8360803050(release30)0090305F(press30)8360803050(release30)0090375F(press37)8360803750(release37)0090375F(press37)8360803750(release37)0090395F(press39)8360803950(release39)0090395F(press39)8360803950(release39)0090375F(press37)8740803750(release37)00FF2F00(endoftrack)

#萨克斯管音轨#

4D54726B(MTrk)00000094(lengthoftrack:148)00FF0303536178(TrackName:Sax)00B1640000650000060C00E1004000B1650000640100064000260000657F00647F00650000640200064000657F00647F00C11900B10000000768000A40005D00005B00005C00005F00(control)9E0091355F(press35)8360813550(release35)0091355F(press35)8360813550(release35)0091345F(press34)8360813450(release34)0091345F(press34)8360813450(release34)0091325F(press32)8360813250(release32)0091325F(press32)8360813250(release32)0091305F(press30)8740813050(release30)00FF2F00(endoftrack)

图4步骤Q6生成的乐谱信息数组的相应示例为:

ChannelStart(tic)Duration(tic)noteVelocity00480305F0480480305F0960480375F…………………………

图4步骤Q9生成的乐谱信息数组的相应示例为:

ChannelStart(sec)Duration(sec)noteVelocity000.5305F00.50.5305F01.00.5375F…………………………

设系统采样率为d=10000,脉冲宽度参数为400,幅值参数10,延迟参数10,所用木琴有37个音,木琴部分的输出数组为37行N列。

《小星星》片段的总时长为t0=8s,N=d*t0=80000.初始化的输出数组为37行80000列的全零数组K0。根据图4步骤Q9获得的表格,第一个音符始于t=0.0s,终于t=0.5s,音高数据为“30”,对应木琴的第10个按键,强度数据为“5F”,对应输出电压为10V,生成脉冲信号如图5(1)所示;各段数据点数量分别为10、400和4500.

将图5(1)表示的长度为5000的数组记为KX1,代替K0(10,1:5000),将修改后的输出数组记为K1.

第二个音符始于t=0.5s,终于t=1.0s,音高数据为“30”,对应木琴的第10个按键,强度数据为“5F”,对应输出电压为10V,按与KX1类似的规则可生成本音符数组KX2。以KX2代替K1(10,5001:10000),将修改后的输出数组记为K2。从K1到K2的过程如图5(2)所示

第三/四/七个音符的音高数据为“37”,对应木琴的第17个按键,强度数据仍为“5F”;第五/六个音符的音高数据为“39”,对应木琴的第19个按键,强度数据仍为“5F”;对其他音符以此类推。《小星星》木琴部分共有7个音符,则输出数组K7可由信号输出装置传送给作动器,实现演奏。

其他乐器的处理过程与木琴相同,在此不再赘述。

上述描述本发明的实施例,仅用于解释本发明,而不能理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号