CN109599081A - 一种基于midi的机器人乐队自动演奏控制方法及系统 - Google Patents
一种基于midi的机器人乐队自动演奏控制方法及系统 Download PDFInfo
- Publication number
- CN109599081A CN109599081A CN201811535419.1A CN201811535419A CN109599081A CN 109599081 A CN109599081 A CN 109599081A CN 201811535419 A CN201811535419 A CN 201811535419A CN 109599081 A CN109599081 A CN 109599081A
- Authority
- CN
- China
- Prior art keywords
- robot
- note
- midi
- guitar
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H1/00—Details of electrophonic musical instruments
- G10H1/0008—Associated control or indicating means
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10F—AUTOMATIC MUSICAL INSTRUMENTS
- G10F1/00—Automatic musical instruments
- G10F1/22—Combinations of two or more instruments
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H1/00—Details of electrophonic musical instruments
- G10H1/0033—Recording/reproducing or transmission of music for electrophonic musical instruments
- G10H1/0041—Recording/reproducing or transmission of music for electrophonic musical instruments in coded form
- G10H1/0058—Transmission between separate instruments or between individual components of a musical system
- G10H1/0066—Transmission between separate instruments or between individual components of a musical system using a MIDI interface
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H2210/00—Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
- G10H2210/031—Musical analysis, i.e. isolation, extraction or identification of musical elements or musical parameters from a raw acoustic signal or from an encoded audio signal
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
本发明涉及一种基于midi的机器人乐队自动演奏控制方法及系统,所述的机器人乐队包括电子琴机器人、架子鼓机器人、吉他机器人和贝斯机器人,该方法包括获取midi格式的音乐文件;对所述音乐文件进行解析,获取电子琴、架子鼓、吉他和贝斯的音轨动作序列;根据所述音轨动作序列分别生成乐队中各机器人的驱动数据文件;乐队中各机器人根据所述驱动数据文件演奏音乐。通过midi文件解析出对应的控制数据,具有通用性,大部分midi文件都可以解析出电子琴、架子鼓、吉他和贝斯的音轨动作序列,就能控制乐队自动演奏,同时对于一些伴奏或者没有的乐器,可以直接通过播放midi音频的方式作为补充,进而实现生动、悦耳的音乐表演。
Description
技术领域
本发明涉及机器人演奏技术领域,具体涉及一种基于midi的机器人乐队自动演奏控制方法及系统。
背景技术
现有的乐器必须借助于具备音乐基础的一些专业人士进行演奏才能发出悦耳的声音,而很多人都不具备演奏能力。四川自贡挚诚科技有限公司于2004年研制出一种机器人乐手吹奏系统。该机器人外形完全仿人制作,由嵌入式电脑控制DC24/AC220逆变器、气泵、气动伺服阀产生吹奏气流,并由嵌入式电脑里根据曲目节拍、音阶编写的气流控制程序控制吹奏气流。手指结构由一台步进电机通过钢丝绳和拉簧与机器人的每个手指相连,由嵌入式电脑控制十台步进电机来分别控制十指的动作。嵌入式电脑中设有备选曲目,观众可以现场通过触摸屏点曲让机器人独奏或合奏。由于没有一套统一通用的乐曲编码解码系统,其备选曲目只有少数几首,其它曲目需向公司定制,不能实现灵活的任意曲目选曲演奏。
发明内容
本发明针对现有技术中存在的技术问题,提供一种基于midi的机器人乐队自动演奏控制方法及系统。
本发明解决上述技术问题的技术方案如下:
一方面,本发明提供一种基于midi的机器人乐队自动演奏控制方法,所述的机器人乐队包括电子琴机器人、架子鼓机器人、吉他机器人和贝斯机器人,包括以下步骤:
获取midi格式的音乐文件;
对所述音乐文件进行解析,获取电子琴、架子鼓、吉他和贝斯的音轨动作序列;
根据所述音轨动作序列分别生成乐队中各机器人的驱动数据文件;
乐队中各机器人根据所述驱动数据文件演奏音乐。
进一步的,所述的对所述音乐文件进行解析,获取电子琴、架子鼓、吉他和贝斯的音轨动作序列,包括:
按照midi文件格式,提取事件集合并存储,所述事件包括音符事件、控制器事件、系统信息事件,存储的音符事件内容包括事件的通道编号、音轨编号、音符值以及音色信息;
根据事件的音轨编号提取所述事件集合中所有架子鼓对应的音符事件生成架子鼓对应的音轨动作序列;
对于非架子鼓对应的音符事件,根据音色进行分类,分别提取所述事件集合中电子琴、吉他、贝斯对应的音符事件,并分别生成电子琴、吉他、贝斯对应的音轨动作序列。
进一步的,所述音符事件还包括:松开音符、按下音符、节拍、节拍速度、力度、时间差。
进一步的,所述的生成吉他、贝斯对应的音轨动作序列,包括,
初始化用于表示吉他或贝斯品弦的数组;
读取音符事件中的音符值,并与所述数组中的值进行匹配,直至找到匹配的音符值,将音符值转换为品弦值。
进一步的,所述的乐队中各机器人根据所述驱动数据文件演奏音乐,包括,
针对架子鼓机器人,由于音符值对应不同的鼓,则读取音符事件,通过匹配音符值,找到需要敲击的鼓,移动负责目标鼓的机械手,进行音符演奏;
针对吉他机器人,根据音轨动作序列中转换的品弦值以及松开音符、按下音符事件进行演奏;
针对贝斯机器人,根据音轨动作序列中转换的品弦值以及松开音符、按下音符事件进行音符演奏;
针对电子琴机器人,所述所述电子琴机器人包括四个机械手,每个机械手有12根手指,覆盖一个音阶的7个白键和5个黑键,每个机械手可以移动两个音阶,四个手臂可以覆盖标准61键电子琴,根据读取的音符值将负责该音符值对应的电子琴按键的机械手移动至相应位置,并控制负责所述电子琴按键的机械手指按下和抬起,进行音符演奏。
另一方面,本发明还提供一种基于midi的机器人乐队自动演奏控制系统,所述的机器人乐队包括电子琴机器人、架子鼓机器人、吉他机器人和贝斯机器人,该系统包括:
文件读取模块,用于获取midi格式的音乐文件;
解析模块,用于对所述音乐文件进行解析,获取电子琴、架子鼓、吉他和贝斯的音轨动作序列;
驱动文件生成模块,根据所述音轨动作序列分别生成乐队中各机器人的驱动数据文件;
驱动控制模块,用于控制乐队中各机器人根据所述驱动数据文件演奏音乐。
进一步的,所述解析模块,具体用于:
按照midi文件格式,提取事件集合并存储,所述事件包括音符事件、控制器事件、系统信息事件,存储的音符事件内容包括事件的通道编号、音轨编号、音符值以及音色信息;
根据事件的音轨编号提取所述事件集合中所有架子鼓对应的音符事件生成架子鼓对应的音轨动作序列;
对于非架子鼓对应的音符事件,根据音色进行分类,分别提取所述事件集合中电子琴、吉他、贝斯对应的音符事件,并分别生成电子琴、吉他、贝斯对应的音轨动作序列。
进一步,所述音符事件还包括:松开音符、按下音符、节拍、节拍速度、力度、时间差。
本发明的有益效果是:通过midi文件解析出对应的控制数据,具有通用性,大部分midi文件都可以解析出电子琴、架子鼓、吉他和贝斯的音轨动作序列,就能控制乐队自动演奏,同时对于一些伴奏或者没有的乐器,可以直接通过播放midi音频的方式作为补充,进而实现生动、悦耳的音乐表演。
附图说明
图1为本发明一种基于midi的机器人乐队自动演奏控制方法流程图;
图2为吉他机器人演奏流程;
图3为电子琴机器人演奏流程。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例:
图1是本实施例提供的一种基于midi的机器人乐队自动演奏控制方法的流程图。
基于MIDI文件的机器人乐队自动演奏机器人,包括四个仿人机器人(电子琴机器人、架子鼓机器人、吉他机器人和贝斯机器人)、MIDI文件解析系统、机器人控制系统、气路系统,机械臂、灵巧机械手和仿人本体,其中MIDI文件解析系统得到的演奏控制数据应用于机器人乐队控制系统,机器人乐队控制系统分别与气路系统、机械臂、灵巧机械手连接,机械臂、灵巧机械手分别设置在仿人本体上,气路系统设置在仿人本体上或仿人本体之外,MIDI文件解析系统包括MIDI解析模块和演奏控制数据格式处理模块,MIDI解析模块解析.mid文件后交由演奏控制数据格式处理模块进行处理,机器人控制系统包括工控机电脑,演奏控制数据格式处理模块处理得到的演奏控制数据文件,表演的时候读取控制数据文件,控制机器人完成演奏。
四个机器人通过电气系统连接到主控计算机,主控计算机通过运动控制卡控制机器人动作,在上位机软件中,通过界面选择想要观看的表演曲目之后,软件会加载该曲目对应的midi文件,解析成对应的机器人控制数据(分别解析出架子鼓、电子琴、吉他和贝斯),发送给运动控制卡,执行相应的动作。具体的流程和说明如下:
(1)MIDI歌曲文件格式
1.MIDI文件的头块
MIDI文件属于二进制文件,这种文件一般都有如下基本结构:文件头+数据描述。文件头一般包括文件的类型,而数据描述部分是主体,我们现在一起来分析它的结构:
在每个MIDI文件的开头都有如下内容,它们的十六进制代码为:“4d 54 68 64 0000 00 06 ff ff nn nn dd dd”。前四个是ASCII字符“MThd”是用来鉴别是否Midi文件,而随后的四个字节是指明文件头描述部分的字节数,它总是6,所以一定是“00000006”,以下是剩余部分的含义:
以上就是MIDI文件头了。
2.MIDI文件的音轨
每个音轨,都以“4D 54 72 68”开头,它其实是ASCII字符“MTrk”,其后跟着一个4字节的整数,它标志了该轨道的字节数,这不包括前面的4个字节和本身的4个字节。
音轨块包括:全局音轨和分音轨。
首先是全局音轨块,主要包括:歌曲的附加信息(比如标题和版权),歌曲速度和系统码(sysex)等。
接着是分音轨块,主要包括:MIDI事件、非MIDI事件和系统码事件,每个事件前面都有时间差。
所谓时间差,指的是前一个事件到该事件的时间数,它的单位是tick(MIDI的最小时间单位)。如果音轨第一个事件发生在开头,或者两个事件同时发生,<delta-time>设为零。对于0-127tick,标志位为0,用一个字节(8位表示);对于大于127tick,标志位为1,用多个字节表示,也即除了最后一个字节的最高有效位是0外,其它字节最高位是1。
事件大体上可以分为音符、控制器和系统信息这几个种类。对于这些事件,都有统一的表达结构:种类+参数。
一个音轨到底是全局的还是用于记录音符的,归根结底都是用来记录各种事件的,只不过有些应出现在全局音轨比较合乎逻辑而已。既然这样,我们就可以从下面的表来看事件:
下表详细地列出了FF的详细情况,对于字节数由数据决定的情况,表中以“--”表示
这些就是MIDI结构的全部内容了。
事件举例说明:
其中FF 58 XX XX XX XX用来设置节拍,虽然参数有4个,但是后两个在现在的系统中是被忽视的。第一个参数是节拍的分子6,如果节拍的分母是8,那第二个参数就是03(2^3=8)。如果时间差为0,这条事件应该是00FF580406030000。
其中FF 51 03 XX XX XX用来设置歌曲的速度,表示一个四分音符的微妙数。
假设一个四分音符的时间是半秒,即0.5*10^6微妙,
它的十六进制是07A120,如果时间差为0,这也就是事件00 FF 51 03 07 A1 20。
在事件表中,9X是用来按下一个音符,假设使用第7个通道,(MIDI有16个通道,而第10个被默认地用作打击乐),则9X中的X是6,音符是45,力度是70,时间差为0,对应的事件:00964570。
(2)MIDI解析
按照MIDI文件格式,将每个event读出来,存储格式为QList<MidiTrack>中,下面列出类的主要的数据成员:
classMidiTrack{
std::multimap<int,CMidiEvent>events;//其中first为event距离开始播放的时间,单位为tick数
int outChannel;
bool drumTrack;
int program;}
outChannel为通道,drumTrack是否为鼓音轨,一般第10个通道为鼓音轨,program为音色,通过音色可以区分不同的乐器。
种类为0xF0或0xF7的系统码,系统码存储在_type中,_len记录可变的数据长度,_edata记录数据内容。
以0xFF开头的事件,0xFF0存储在_type中,种类记录在_metaType中,_len记录可变的数据长度,_edata记录数据内容。
其他带通道的种类,种类存储在_type中,通道存储在_channel,_a记录第一个参数,_b记录第二个参数。如音符事件:8X或9X表示松开音符、按下音符,存储在_type中,其中x是音轨通道,用_channel记录,_a记录音符,_b记录力度。
解析过程中存储节拍的速度,存储结构为std::map<int tick,qrealTEvent>,其中tick为时间;
其中tempo为每秒四分音符的个数。
存储的节拍,主要的数据结构std::map<int tick,Fraction>,
音色表:
打击乐器音色通道10,音符不代表音高,而是表示不同的乐器。
通道为10,音符为
程序首先判断是否为鼓轨道,如果是,则判断音符是否为上述列举出来的鼓种类的音符,如果满足,则提取出所有鼓note事件。
电子琴、吉他、贝斯则是通过不同的轨道的program对应的乐器不一样区分出来的,在不满足鼓轨道音轨下,分离出所有乐器下note事件。
tick这个MIDI中的时间单位,需要转为为实际时间单位毫秒。
转化公式:time+=delta/(_division*tempo),其中time为前一个TEvent中的时间,
delta为前一个TEvent中的tick与当前tick之差,tempo为当前节拍速度,
_division为一个四分音符的tick数。
将每一个note事件转化如下数据结构:
将所有note事件集合为QVector<MidiEvent>参数传递给乐器DLL演奏。
(3)演奏音符序列
吉他演奏流程:
调用开始演奏接口时,开启了一个线程,去执行音符序列,流程如图2所示。
图中延时时间为MidiEvent结构体中的deltaTime,单位为毫秒。MidiEvent中para为音符,根据这个值需要寻找到吉他的品和弦。延时结束之后,根据MidiEvent中的type为80还是90,指导机器人按下或松开对应的品和弦,吉他这里是写机器人的IO值,执行结束之后继续读下一个MidiEvent,直到所有的MidiEvent都读取完成。
音符值转化为品弦的流程:
数据结构int m_MusicNoteCode[6][24]存储6弦24品所对应的音符值,初始化为:
m_MusicNoteCode[0][0]=0x40;
m_MusicNoteCode[1][0]=0x3B;
m_MusicNoteCode[2][0]=0x37;
m_MusicNoteCode[3][0]=0x32;
m_MusicNoteCode[4][0]=0x2D;
m_MusicNoteCode[5][0]=0x28;
这是6根弦第一品的值,后面23品所对应的值均比前一品的值大1。
将音符与MusicNoteCode数组中的值进行比对,先比较第一品的六根弦,再比较第二品的六根弦,直到找到匹配的音符值,此时品和弦的值在数组中是以0为基数的,加1,转化为实际的几弦几品。
贝斯演奏流程:
贝斯的演奏流程与吉他完全一样,就只有将音符值转化为对应的品和弦不一样。
音符值转化为品弦流程:
数据结构int m_MusicNoteCode[4][24]存储4弦24品所对应的音符值,初始化为:
m_MusicNoteCode[0][0]=0x2B;
m_MusicNoteCode[1][0]=0x26;
m_MusicNoteCode[2][0]=0x21;
m_MusicNoteCode[3][0]=0x1C;
这是4根弦第一品的值,后面23品所对应的值均比前一品的值大1。
将音符与MusicNoteCode数组中的值进行比对,先比较第一品的4根弦,再比较第二品的4根弦,直到找到匹配的音符值,此时品和弦的值在数组中是以0为基数的,加1,转化为实际的几弦几品。
电子琴演奏流程:
电子琴机器人有四个手,每个机械手有12根手指,覆盖一个音阶的7个白键和5个黑键,每个机械手可以移动两个音阶,四个手臂可以覆盖标准61键电子琴。记录手信息的类的主要数据成员:
主线程里面成员变量HandInfo[4],记录每只手的信息。
初始化四个手的最大音阶和最小音阶,通过调用类HandInfo函数SetKeyRange实现:
读取配置文件,初始化每个手指对应的IO值,配置文件如下图所示:
[HandInfo_0]
Axis_ID=0
pulse_0=3000
pulse_1=5000
IO1280_Note1_OUT=1
IO1280_Note2_OUT=8
IO1280_Note3_OUT=2
IO1280_Note4_OUT=9
IO1280_Note5_OUT=3
IO1280_Note6_OUT=10
IO1280_Note7_OUT=4
IO1280_Note8_OUT=5
IO1280_Note9_OUT=11
IO1280_Note10_OUT=6
IO1280_Note11_OUT=12
IO1280_Note12_OUT=7
;L_R
[HandInfo_1]
Axis_ID=1
pulse_0=3000
pulse_1=6000
IO1280_Note1_OUT=13
IO1280_Note2_OUT=20
IO1280_Note3_OUT=14
IO1280_Note4_OUT=21
IO1280_Note5_OUT=15
IO1280_Note6_OUT=16
IO1280_Note7_OUT=22
IO1280_Note8_OUT=17
IO1280_Note9_OUT=23
IO1280_Note10_OUT=18
IO1280_Note11_OUT=24
IO1280_Note12_OUT=19
;R_L
[HandInfo_2]
Axis_ID=2
pulse_0=2000
pulse_1=5000
IO1280_Note1_OUT=25
IO1280_Note2_OUT=32
IO1280_Note3_OUT=26
IO1280_Note4_OUT=33
IO1280_Note5_OUT=27
IO1280_Note6_OUT=28
IO1280_Note7_OUT=34
IO1280_Note8_OUT=29
IO1280_Note9_OUT=35
IO1280_Note10_OUT=30
IO1280_Note11_OUT=36
IO1280_Note12_OUT=31
;R_R
[HandInfo_3]
Axis_ID=3
pulse_0=4000
pulse_1=5000
IO1280_Note1_OUT=37
IO1280_Note2_OUT=44
IO1280_Note3_OUT=38
IO1280_Note4_OUT=45
IO1280_Note5_OUT=39
IO1280_Note6_OUT=46
IO1280_Note7_OUT=40
IO1280_Note8_OUT=41
IO1280_Note9_OUT=47
IO1280_Note10_OUT=42
IO1280_Note11_OUT=48
IO1280_Note12_OUT=43
其中Axis_ID为控制手移动的轴号,pulse_0为手默认位置,pulse_1为手移动到另一个位置,在一个位置时,每个IO控制一个手指,每只手总共12个IO,控制电子琴上12个按键的按下和抬起,移动到另一个位置时,控制电子琴另外12个按键的按下和抬起。
这里电子琴机器人的控制主要为机械手的运动控制,这个时间需要计算,前面吉他和贝斯时直接通过IO控制,开启关闭IO时间忽视。
初始化阶段已经将手移动到了第一个音符可以演奏的位置。
调用开始演奏接口时,开启了一个线程,去执行音符序列,流程如图3所示。
图中延时时间为MidiEvent结构体中的deltaTime,减去上一个流程中“将手移动到下一个音符可以演奏的位置”的时间。
移动手到可以演奏位置流程:
每个手可以移动两个位置,每个位置12个音符,总共24个音符,HandInfo中m_nPuls[0]对应其中12个音符,m_nPulse[1]对应另外12个音符。循环四个手信息,如果在HandInfo中的m_nMinKey_Val和m_nMaxKey_Val之间,再判断是m_nPuls[0]还是m_nPulse[1],返回结构体:
描述哪只手的哪个位置。nInDex指的是HandInfo[4]中的数组序号,nPulse是指HandInfo中的m_nPulse[2]中的一个。如果没有存在手在当前位置可以演奏,则需要移动对应的轴到对应的距离,使其可以演奏音符。
演奏音符:这里每一个音符演奏前都提前将手移动到了对应的位置,所以演奏只需要控制IO的控制就可以了,然后需要更新HandInfo中的当前位置,手指状态等信息。
整个电子琴的演奏控制流程就是如上说述。
鼓演奏流程:
鼓的演奏流程图与电子琴一样,只是演奏音符阶段演奏方式不一样,和移动到演奏位置不一样。同样时初始化阶段已将第一个音符演奏的位置移动好了。
鼓的配置文件:
;0号手只敲军鼓
[HandInfo_0]
IO_0=1
IO_1=2
IO_2=3
IO_3=4
;1号手敲左边的hihat和右边的crash
[HandInfo_1]
IO_0=5
IO_1=6
IO_2=7
IO_3=8
;2号手敲tom1和tom2
[HandInfo_2]
IO_0=9
IO_1=10
IO_2=11
IO_3=12
;3号手敲ride和tom3
[HandInfo_3]
IO_0=13
IO_1=14
IO_2=15
IO_3=16
;左脚是踩镲,右脚是kick
[Foot]
l_Pedal=21
r_Kick=22
将配置文件读入结构体:
将信息保存起来。
移动手到可以演奏位置流程:
MidiEvent结构体成员音符值para所代表的是不同的鼓,通过匹配就能找到需要敲击的鼓。通过鼓名字就可以判断是属于哪个鼓手编号的哪个位置。通过配置文件记录的IO,读出该IO并设置就能移动鼓手,使其能演奏对应的鼓的音符。
演奏音符:这里每一个音符演奏前都提前将鼓移动到了对应的位置,所以演奏只需要控制IO,然后需要更新信息。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于midi的机器人乐队自动演奏控制方法,所述的机器人乐队包括电子琴机器人、架子鼓机器人、吉他机器人和贝斯机器人,其特征在于,包括以下步骤:
获取midi格式的音乐文件;
对所述音乐文件进行解析,获取电子琴、架子鼓、吉他和贝斯的音轨动作序列;
根据所述音轨动作序列分别生成乐队中各机器人的驱动数据文件;
乐队中各机器人根据所述驱动数据文件演奏音乐。
2.根据权利要求1所述一种基于midi的机器人乐队自动演奏控制方法,其特征在于,所述的对所述音乐文件进行解析,获取电子琴、架子鼓、吉他和贝斯的音轨动作序列,包括:
按照midi文件格式,提取事件集合并存储,所述事件包括音符事件、控制器事件、系统信息事件,存储的音符事件内容包括事件的通道编号、音轨编号、音符值以及音色信息;
根据事件的音轨编号提取所述事件集合中所有架子鼓对应的音符事件生成架子鼓对应的音轨动作序列;
对于非架子鼓对应的音符事件,根据音色进行分类,分别提取所述事件集合中电子琴、吉他、贝斯对应的音符事件,并分别生成电子琴、吉他、贝斯对应的音轨动作序列。
3.根据权利要求2所述一种基于midi的机器人乐队自动演奏控制方法,其特征在于,所述音符事件还包括:松开音符、按下音符、节拍、节拍速度、力度、时间差。
4.根据权利要求3所述一种基于midi的机器人乐队自动演奏控制方法,其特征在于,所述的生成吉他、贝斯对应的音轨动作序列,包括,
初始化用于表示吉他或贝斯品弦的数组;
读取音符事件中的音符值,并与所述数组中的值进行匹配,直至找到匹配的音符值,将音符值转换为品弦值。
5.根据权利要求4所述一种基于midi的机器人乐队自动演奏控制方法,其特征在于,所述的乐队中各机器人根据所述驱动数据文件演奏音乐,包括,
针对架子鼓机器人,由于音符值对应不同的鼓,则读取音符事件,通过匹配音符值,找到需要敲击的鼓,移动负责目标鼓的机械手,进行音符演奏;
针对吉他机器人,根据音轨动作序列中转换的品弦值以及松开音符、按下音符事件进行演奏;
针对贝斯机器人,根据音轨动作序列中转换的品弦值以及松开音符、按下音符事件进行音符演奏;
针对电子琴机器人,所述电子琴机器人包括四个机械手,每个机械手有12根手指,覆盖一个音阶的7个白键和5个黑键,每个机械手可移动两个音阶,根据读取的音符值将负责该音符值对应的电子琴按键的机械手移动至相应位置,并控制负责所述电子琴按键的机械手指按下和抬起,进行音符演奏。
6.一种基于midi的机器人乐队自动演奏控制系统,所述的机器人乐队包括电子琴机器人、架子鼓机器人、吉他机器人和贝斯机器人,其特征在于,该系统包括:
文件读取模块,用于获取midi格式的音乐文件;
解析模块,用于对所述音乐文件进行解析,获取电子琴、架子鼓、吉他和贝斯的音轨动作序列;
驱动文件生成模块,根据所述音轨动作序列分别生成乐队中各机器人的驱动数据文件;
驱动控制模块,用于控制乐队中各机器人根据所述驱动数据文件演奏音乐。
7.根据权利要求6所述一种基于midi的机器人乐队自动演奏控制系统,其特征在于,所述解析模块,具体用于:
按照midi文件格式,提取事件集合并存储,所述事件包括音符事件、控制器事件、系统信息事件,存储的音符事件内容包括事件的通道编号、音轨编号、音符值以及音色信息;
根据事件的音轨编号提取所述事件集合中所有架子鼓对应的音符事件生成架子鼓对应的音轨动作序列;
对于非架子鼓对应的音符事件,根据音色进行分类,分别提取所述事件集合中电子琴、吉他、贝斯对应的音符事件,并分别生成电子琴、吉他、贝斯对应的音轨动作序列。
8.根据权利要求7所述一种基于midi的机器人乐队自动演奏控制系统,其特征在于,所述音符事件还包括:松开音符、按下音符、节拍、节拍速度、力度、时间差。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811535419.1A CN109599081A (zh) | 2018-12-14 | 2018-12-14 | 一种基于midi的机器人乐队自动演奏控制方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811535419.1A CN109599081A (zh) | 2018-12-14 | 2018-12-14 | 一种基于midi的机器人乐队自动演奏控制方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109599081A true CN109599081A (zh) | 2019-04-09 |
Family
ID=65960811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811535419.1A Pending CN109599081A (zh) | 2018-12-14 | 2018-12-14 | 一种基于midi的机器人乐队自动演奏控制方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109599081A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110677750A (zh) * | 2019-10-23 | 2020-01-10 | 朝阳聚声泰(信丰)科技有限公司 | 一种汽车虚拟场馆音响系统及其实现方法 |
CN110861086A (zh) * | 2019-11-20 | 2020-03-06 | 珠海格力智能装备有限公司 | 机器人弹奏钢琴的控制方法、装置、存储介质和机器人 |
CN113797541A (zh) * | 2021-09-06 | 2021-12-17 | 武汉指娱互动信息技术有限公司 | 一种音乐游戏关卡生成方法、装置、设备及存储介质 |
CN114002978A (zh) * | 2021-10-27 | 2022-02-01 | 广州小鹏汽车科技有限公司 | 一种车辆控制的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004354613A (ja) * | 2003-05-28 | 2004-12-16 | Toyota Motor Corp | 実楽器演奏ロボットと実楽器演奏ロボット群 |
CN101840698A (zh) * | 2009-03-19 | 2010-09-22 | 上海市向明中学 | 鼓点编译方法 |
CN102314866A (zh) * | 2010-07-09 | 2012-01-11 | 卡西欧计算机株式会社 | 演奏装置以及电子乐器 |
CN105390128A (zh) * | 2015-11-09 | 2016-03-09 | 清华大学 | 自动演奏机械装置及敲击乐器自动演奏系统 |
CN106652655A (zh) * | 2015-10-29 | 2017-05-10 | 施政 | 一种音轨替换的乐器 |
CN107331409A (zh) * | 2017-06-01 | 2017-11-07 | 东莞职业技术学院 | 乐队音乐播放方法和装置 |
-
2018
- 2018-12-14 CN CN201811535419.1A patent/CN109599081A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004354613A (ja) * | 2003-05-28 | 2004-12-16 | Toyota Motor Corp | 実楽器演奏ロボットと実楽器演奏ロボット群 |
CN101840698A (zh) * | 2009-03-19 | 2010-09-22 | 上海市向明中学 | 鼓点编译方法 |
CN102314866A (zh) * | 2010-07-09 | 2012-01-11 | 卡西欧计算机株式会社 | 演奏装置以及电子乐器 |
CN106652655A (zh) * | 2015-10-29 | 2017-05-10 | 施政 | 一种音轨替换的乐器 |
CN105390128A (zh) * | 2015-11-09 | 2016-03-09 | 清华大学 | 自动演奏机械装置及敲击乐器自动演奏系统 |
CN107331409A (zh) * | 2017-06-01 | 2017-11-07 | 东莞职业技术学院 | 乐队音乐播放方法和装置 |
Non-Patent Citations (2)
Title |
---|
刘晓燕: "机器人乐队:真比英国"酷玩"摇滚乐队更酷?", 《新华每日电讯》 * |
刘永志: "《MIDI技术应用基础》", 31 December 2014 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110677750A (zh) * | 2019-10-23 | 2020-01-10 | 朝阳聚声泰(信丰)科技有限公司 | 一种汽车虚拟场馆音响系统及其实现方法 |
CN110861086A (zh) * | 2019-11-20 | 2020-03-06 | 珠海格力智能装备有限公司 | 机器人弹奏钢琴的控制方法、装置、存储介质和机器人 |
CN113797541A (zh) * | 2021-09-06 | 2021-12-17 | 武汉指娱互动信息技术有限公司 | 一种音乐游戏关卡生成方法、装置、设备及存储介质 |
CN113797541B (zh) * | 2021-09-06 | 2024-04-09 | 武汉指娱互动信息技术有限公司 | 一种音乐游戏关卡生成方法、装置、设备及存储介质 |
CN114002978A (zh) * | 2021-10-27 | 2022-02-01 | 广州小鹏汽车科技有限公司 | 一种车辆控制的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109599081A (zh) | 一种基于midi的机器人乐队自动演奏控制方法及系统 | |
Goto et al. | Music interfaces based on automatic music signal analysis: new ways to create and listen to music | |
US7223913B2 (en) | Method and apparatus for sensing and displaying tablature associated with a stringed musical instrument | |
CN100354924C (zh) | 使用演奏乐器的声音信息的音乐分析方法 | |
Pachet et al. | Reflexive loopers for solo musical improvisation | |
US6995310B1 (en) | Method and apparatus for sensing and displaying tablature associated with a stringed musical instrument | |
Dittmar et al. | Music information retrieval meets music education | |
Wanderley et al. | Escher-modeling and performing composed instruments in real-time | |
US7268289B2 (en) | Musical instrument performing artistic visual expression and controlling system incorporated therein | |
EP1791111A1 (en) | Content creating device and content creating method | |
Goebl et al. | Sense in expressive music performance: Data acquisition, computational studies, and models | |
US20080307946A1 (en) | Braille music systems and methods | |
Lévy et al. | OMaxist dialectics | |
US6864413B2 (en) | Ensemble system, method used therein and information storage medium for storing computer program representative of the method | |
EP1528537B1 (en) | Musical instrument recording advanced music data codes for playback, music data generator and music data source for the musical instrument | |
JP2720305B2 (ja) | 少数鍵盤電子ピアノでのロボット指打演奏装置 | |
Puckette | Something digital | |
JP3753798B2 (ja) | 演奏再現装置 | |
CN116710998A (zh) | 信息处理系统、电子乐器、信息处理方法及程序 | |
Jaffe et al. | The computer-extended ensemble | |
Niedermayer et al. | On the Importance of" Real" Audio Data for MIR Algorithm Evaluation at the Note-Level-A Comparative Study. | |
KR102492981B1 (ko) | 인공지능 기반 발레반주 생성 방법 및 장치 | |
Fremerey | SyncPlayer–a Framework for Content-Based Music Navigation | |
KR102490769B1 (ko) | 음악적 요소를 이용한 인공지능 기반의 발레동작 평가 방법 및 장치 | |
Livingston | Paradigms for the new string instrument: digital and materials technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190409 |