首页> 中国专利> 自动演奏装置及自动演奏处理程序

自动演奏装置及自动演奏处理程序

摘要

本发明提供一种自动演奏装置及自动演奏处理程序。其具有演奏数据存储器(PDE),按曲行进顺序排列存储相对时间形式的演奏数据,该数据由事件群和插入各事件与事件之间的两事件的发生定时的时间差构成,该事件群由至少指示音乐发音开始的音符开启事件、指示音乐发音结束的音符关闭事件、指示音乐音量的音量事件及指示音乐音色的音色事件构成。另外,依次读取存储在该演奏数据存储单元(PDE)中的相对时间形式的演奏数据,变换为表示每个音的发音属性的音符数据(SD),存储在变换数据存储器(CWE)中(SB1-SB3)。读取存储在变换数据存储器(CWE)中的音符数据(SD),形成与该读取音符数据(SD)表示的发音属性相对应的音乐,进行自动演奏(SA4)。

著录项

  • 公开/公告号CN1460989A

    专利类型发明专利

  • 公开/公告日2003-12-10

    原文格式PDF

  • 申请/专利权人 卡西欧计算机株式会社;

    申请/专利号CN03140766.8

  • 发明设计人 佐佐木博之;

    申请日2003-05-14

  • 分类号G10H1/00;G10H1/26;

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人黄剑峰

  • 地址 日本东京都

  • 入库时间 2023-12-17 15:05:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-03

    未缴年费专利权终止 IPC(主分类):G10H1/00 授权公告日:20080514 终止日期:20180514 申请日:20030514

    专利权的终止

  • 2008-05-14

    授权

    授权

  • 2004-02-25

    实质审查的生效

    实质审查的生效

  • 2003-12-10

    公开

    公开

说明书

技术领域

本发明涉及一种最适于电子乐器的自动演奏装置及自动演奏方法。

背景技术

音序器等自动演奏装置配置具有可同时发音的多个发音通道(channel)的音源,根据表示应演奏的各音的音高、发音/消音定时或发生音乐的音色或音量等SMF形式的演奏数据(MIDI数据),该音源使各发音通道发音/消音,发音时,根据指定音色的波形数据,生成指定音高/音量的音乐信号,由此进行自动演奏。

但是,在制品化配备自动演奏功能的电子音乐的情况下,若象上述现有自动演奏装置那样装载翻译执行SMF形式演奏数据(MIDI数据)的专用音源,则必然导致制品成本上升。为了实现低廉的制品成本并达成自动演奏功能,即使不配备专用音源,但必需可根据SMF形式的演奏数据自动演奏的自动演奏装置。

发明内容

鉴于这种情况做出本发明,其目的在于提供一种即使不配备专用音源也可根据SMF形式的演奏数据自动演奏的自动演奏装置。

即,根据本发明的1个方面,首先,第1具有演奏数据存储单元,按曲行进顺序排列存储相对时间形式的演奏数据,该数据由事件群和插入各事件与事件之间的两事件的发生定时的时间差构成,该事件群由至少指示音乐发音开始的音符开启(note on)事件、指示音乐的发音结束的音符关闭事件、指示音乐音量的音量事件及指示音乐音色的音色事件构成。

另外,将存储在该演奏数据存储单元中的相对时间形式的演奏数据变换为表示每个音的发音属性的音符数据。

接着,形成对应于变换后音符数据表示的发音属性的音乐,进行自动演奏。

通过具有上述构成,将按曲行进顺序交互排列发音定时与事件的SMF形式的演奏数据变换为表示每个音的发音属性的音符数据,形成对应于该音符数据表示的发音属性的音乐,进行自动演奏,所以即使不配备翻译执行SMF形式演奏数据的专用音源,也可根据SMF形式的演奏数据来自动演奏。

附图的简要说明

图1是表示本发明一实施例构成的框图。

图2是表示数据ROM5的存储器构成的图。

图3是表示存储在作业RAM6的演奏数据区域PDE中的演奏数据PD构成的图。

图4是表示作业RAM6配备的变换处理用作业区域CWE构成的内存映象。

图5是表示作业RAM6配备的生成处理用作业区域GWE构成的内存映象。

图6是表示主程序动作的流程图。

图7是表示变换处理动作的流程图。

图8是表示时间变换处理动作的流程图。

图9是表示复数限制处理动作的流程图。

图10是表示音符变换处理动作的流程图。

图11是表示音符变换处理动作的流程图。

图12是表示音符变换处理动作的流程图。

图13是表示生成处理动作的流程图。

图14是表示生成处理动作的流程图。

图15是表示缓冲运算处理动作的流程图。

发明的最佳实施形态

本发明的自动演奏装置除公知的电子乐器外,还适用于使用个人计算机的所谓DTM装置等。下面,以本发明一实施例的自动演奏装置为实施例,参照附图来进行说明。

(1)整体构成

图1是表示本发明一实施例构成的框图。图中,1是由配置在控制板上的各种开关构成的面板开关,对应于各开关操作,发生开关事件。作为配置在面板开关1中的主要开关有例如未图示的电源开关、和选择动作模式(后述的变换模式或生成模式)的模式选择开关等。2是显示部,由配置在控制板中的LCD面板、和根据从CPU3提供的显示控制信号来显示控制LCD面板的显示驱动器构成,对应于上述面板开关1的操作,画面显示动作状态和设定状态等。

CPU3执行程序ROM4中存储的控制程序,根据选择的动作模式来控制装置各部。具体而言,在通过模式选择开关的操作选择变换模式的情况下,执行将SMF形式的演奏数据(MIDI数据)变换为音符数据(后述)的变换处理,另一方面,在选择生成模式的情况下,执行根据变换后的音符数据生成音乐数据、并自动演奏的生成处理,详细追述这些处理动作。

5是存储各种音色的波形数据和波形参数的数据ROM。追述数据ROM5的存储器构成。6是配备演奏数据区域PDE、变换处理用作业区域CWE和生成处理用作业区域GWE的作业RAM,追述其存储器构成。7是将CPU3生成的音乐数据变换为模拟形式的音乐波形后输出的D/A变换器(记为DAC)。8是放大从DAC7输出的音乐波形、作为音乐从扬声器发音的发音电路。

(2)数据ROM5的构成。

下面,参照图2来说明数据ROM5的存储器构成。数据ROM5具备波形数据区域WDA和波形参数区域WPA。在波形数据区域WDA中存储各种音色的波形数据(1)-(n)。在波形参数区域WPA中存储对应于这些各种音色的波形数据(1)-(n)的波形参数(1)-(n)。各波形参数表示再现对应音色的波形数据时参照的波形属性,具体而言,由波形开始地址、波腹幅度和波形结束地址构成。

因此,在例如:再现波形数据(1)的情况下,开始参照存储在对应于该音色的波形参数(1)中的波形开始地址读取对应的波形数据(1),在到达波形结束地址后,按照波腹宽度重复再现。

(3)作业RAM6的构成

下面,参照图3-图5来说明作业RAM6的存储器构成。如上所述,作业RAM6由演奏数据区域PDE、变换处理用作业区域CWE和生成处理用作业区域GWE构成。

在演奏数据区域PDE中,存储例如经未图示的MIDI接口从外部输入的SMF形式的演奏数据PD。演奏数据PD在例如将所有声迹(track)(相当于演奏部分)汇聚成1个乐曲部分的Format0形式的情况下,如图3所示,使与上一事件的时间差表示的发音/消音定时的定时数据Δt、和表示应发音/消音的音高或音色等的事件EVT对应于曲行进,按时间系列寻址,在其终端设置表示曲终的END数据。

如图4所示,变换处理用作业区域CWE由音量数据区域VDE、音色数据区域TDE、变换数据区域CDE和音符寄存区域NRE构成。

在变换数据区域CDE中存储通过变换处理(后述)将SMF形式的演奏数据PD变换为音符形式的音符数据SD。音符数据SD由从构成演奏数据PD的各事件EVT中抽取的一连串音符数据SD(1)-SD(n)形成。音符数据SD(1)-SD(n)分别由发音通道序号CH、时刻差Δt、发音音量VOL、波形参数序号WPN和发音音调PIT(频率数)构成。

音量数据区域VDE具备对应于发音通道的音量数据寄存器(1)-(n)。在将演奏数据PD中的音量事件变换为音符数据SD时,将音量数据暂时存储在指定音量事件的发音通道序号CH的音量数据寄存器(CH)中。

音色数据区域TDE与上述音量数据区域VDE一样,具备对应于发音通道的音色数据寄存器(1)-(n)。当将演奏数据PD中的音色事件变换为音符数据SD时,将波形参数序号WPN暂时存储在指定音色事件的发音通道序号CH的音色数据寄存器(CH)之中。

音符寄存区域NRE具备对应于发音通道的音符寄存器NOTE(1)-(n)。当将演奏数据PD变换为音符数据SD时,将发音通道序号和音符数暂时存储在对应于指定音符开启事件的发音通道序号CH的音符寄存器NOTE(CH)中。

在生成处理用作业区域GWE中设置用于根据上述音符数据SD生成音乐波形的生成处理(后述)的各种寄存器和缓冲器。这里,参照图5来说明设置在生成处理用作业区域GWE中的主要寄存器和缓冲器的内容。R1是累计从波形数据中读取的波形采样数的当前采样寄存器。在本实施例中,设该当前采样寄存器R1的低16比特为使变为“0”的周期曲步进的定时。R2是保持当前演奏时刻的演奏当前时刻寄存器。R3是保持此前结束演奏运算的时刻的演奏运算时刻寄存器,R4是保持表示处于当前处理中的音符数据SD的指针值的演奏数据指针。

BUF是设置在每个发音通道中的波形运算缓冲器。在本实施例中,因为设最大发音数是16音,所以具备波形运算缓冲器(1)-(16)。在各波形运算缓冲器BUF中暂时存储当前波形地址、波腹幅度、波形结束地址、音调寄存器、音量寄存器和通道输出寄存器的各值。这些值意图说明后述的生成处理的动作说明。

输出寄存器OR保持波形运算缓冲器(1)-(16)的各通道输出寄存器值、即累计在每个发音通道中生成的音乐数据后的结果。将输出寄存器OR的值提供给DAC7。

(4)动作

下面,参照图6-图15来说明上述构成实施例的动作。下面,在最初描述主程序的动作后,接着,说明从该主程序调用的各种处理的动作。

(a)主程序的动作(整体动作)

上述构成实施例中,一旦接通电源,则CPU3从程序ROM4中调出控制程序,执行图6所示的主程序,处理前进到步骤SA1。在步骤SA1中,复位作业RAM6中设置的各种寄存器/标志类,并执行设置初始值的初始化。

接着,在步骤SA2中,判断面板开关1中的模式选择开关选择了变换模式还是生成模式。若选择变换模式,则经步骤SA3执行变换处理,执行将SMF形式的演奏数据(MIDI数据)变换为音符数据SD的变换处理,另一方面,若选择生成模式,则经步骤SA4执行生成处理,根据音符数据SD,生成音乐数据,进行自动演奏。

(b)变换处理的动作

下面,参照图7来说明变换处理的动作。若通过模式选择开关的操作选择变换模式,则经上述步骤SA3,处理前进到图7所示变换处理的步骤SB1。在步骤SB1中,执行将在演奏数据PD中定义的相对时间形式的定时数据Δt变换为由距开始时刻的经过时间表示的绝对时间形式的时间变换处理。

接着,步骤SB2中,执行限制在演奏数据PD定义的同时发音通道数(下面称为复数)以适应于装置规格的复数限制处理。接着,在步骤SB3中,执行将演奏数据PD变换为音符数据SD的音符变换处理。

①时间变换处理的动作

下面,参照图8来说明时间变换处理的动作。一旦经上述步骤SB1来执行本处理,则CPU3将处理前进到图8所示步骤SC1,将地址指针AD0、AD1复位为零。

这里,地址指针AD0是暂时存储从存储在作业RAM6的演奏数据区域PDE(参照图3)中的演奏数据PD中读取定时数据Δt的地址的寄存器。另一方面,地址指针AD1是暂时存储再次将定时数据Δt从相对时间形式变换为绝对时间形式的演奏数据PD存储在作业RAM6的演奏数据区域PDE中时的写入地址的寄存器。

若将地址指针AD0、AD1复位为零,则CPU3将处理前进到步骤SC2,将寄存器TIME复位为零。接着,在步骤SC3中,根据地址指针AD0来判断从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD0]的种类是定时数据Δt还是事件EVT。

(I)数据MEM[AD0]是定时数据Δt的情况

若是在将地址指针AD0复位为零之前就读取,则因为读取寻址到演奏数据PD开头的定时数据Δt,所以处理前进到步骤SC4,将读取的定时数据Δt加入寄存器TIME中。

下面,在步骤SC5中,增加并步进地址指针AD0。一旦前进到步骤SC6,则对应于步进的地址指针AD0,判断是否从作业RAM6的演奏数据区域PDE中读取END数据,即是否到达曲终端。在达到曲终端的情况下,判断结果变为“是”,完成本处理,若不是,则判断结果变为“否”,处理返回上述步骤SC3,再次判断读取的数据种类。

如此,在步骤SC3-SC6中,每次对应于地址指针AD0的步进来从作业RAM6的演奏数据区域PDE中读取定时数据Δt时,将其加到寄存器TIME中的结果,寄存器TIME的值被变换为累计表示与上一事件的时间差的相对时间形式的定时数据Δt的经过时间、即设曲开始时刻为[0]的绝对时间形式。

(II)数据MEM[AD0]为事件EVT的情况

若对应于地址指针AD0的步进从作业RAM6的演奏数据区域PDE中读取的数据为事件EVT时,处理前进到步骤SC7。在步骤SC7中,对应于地址指针AD1,将读取的事件EVT(MEM[AD0])写入作业RAM6的演奏数据区域PDE中。

下面,在步骤SC8中,步进地址指针AD1,接着,在步骤SC9中,根据步进的地址指针AD1,将存储在寄存器TIME中的绝对时间形式的定时值写入作业RAM6的演奏数据区域PDE中。另外,在步骤SC10中,还使地址指针AD1步进,处理前进到上述步骤SC5。

因此,在步骤SC7-SC10中,在根据地址指针AD0的步进从作业RAM6的演奏数据区域PDE中读取事件EVT的情况下,对应于地址指针AD1,将该事件EVT再次存储在作业RAM6的演奏数据区域PDE中,之后,根据步进的地址指针AD1,将存储在寄存器TIME中的绝对时间形式的定时值写入作业RAM6的演奏数据区域PDE中。

结果,将按Δt→EVT→Δt→EVT…顺序存储的相对时间形式的演奏数据PD变换为按EVT→TIME→EVT→TIME顺序存储的绝对时间形式的演奏数据PD。

②复数限制处理的动作

下面,参照图9来说明复数限制处理的动作。一旦经上述步骤SB2(参照图7)执行本处理,则CPU3将处理前进到图9所示步骤SD1。在步骤SD1中,在将地址指针AD1复位为零后,在步骤SD2中将对发音复数计数的寄存器M复位为零。之后,在步骤SD3、SD4中,判断对应于地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是音符开启事件、音符切断事件或音符开启/切断以外的事件中的哪个。

下面,将对应于地址指针AD1读取的数据MEM[AD1]分成“音符开启事件”、“音符切断事件”和“音符开启/切断以外事件”的情况来说明动作。

(I)音符开启/切断以外事件的情况

此时,步骤SD3、SD4的各判断结果都变为“否”,前进到步骤SD5。在步骤SD5中,增加步进地址指针AD1。之后,在步骤SD6中,判断对应于步进地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是否是END数据,即是否到达曲终端。在到达曲终端的情况下,判断结果变为“是”,完成本处理,若不是,则判断结果变为“否”,处理返回上述步骤SD3

(II)音符开启事件的情况

此时,步骤SD3的判断结果变为“是”,前进到步骤SD7。在步骤SD7中,判断寄存器M的值是否达到规定复数,即有无空通道。这里所谓的规定复数指本实施例的自动演奏装置中标准的发音复数(同时发音通道数)。

若有空通道,则判断结果变为“否”,处理前进到步骤SD8,在增加步进寄存器M后,处理前进到上述步骤SD5以后,读取下一事件EVT。

另一方面,在寄存器M的值到达规定复数,且没有空通道的情况下,判断结果变为“是”,前进到步骤SD9。在步骤SD9中,将音符开启事件中包含的发音通道序号存储在寄存器CH中,之后,在步骤SD10中,将该音符开启事件中包含的音符数存储在寄存器NOTE中。

从而,一旦存储完未发音分配的音符开启事件的发音通道序号和音符数,则前进到步骤SD11,将指示事件无效的停止代码写入对应于地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]中。

下面,在步骤SD12-SD17中,参照在上述步骤SD9、SD10中暂时存储的未发音分配的音符开启事件的发音通道序号和音符数,从作业RAM6的演奏数据区域PDE中搜索对应于该音符开启事件的音符切断事件,写入指示事件无效的停止代码。

即,在步骤SD12中,对保持检查指针的寄存器m设置初始值“1”,之后,在步骤SD13中,判断对应于加上寄存器m的值(检查指针)后的地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1+m]是否是音符切断事件。

若不是音符切断事件,则判断结果变为“否”,转到步骤SD14,将寄存器m中存储的检查指针加1。另外,再次返回步骤SD13,判断对应于加上步进检查指针的地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1+m]是否是音符切断事件。

若是音符切断事件,则判断结果变为“是”,处理前进到步骤SD15,判断该音符切断事件中包含的发音通道序号是否与寄存器CH中存储的发音通道序号一致。若不一致,则判断结果为“否”,处理前进到步骤SD14,在步进检查指针后,处理返回步骤SD13。

另一方面,若该音符切断事件中包含的发音通道序号与寄存器CH中存储的发音通道序号一致,则判断结果为“是”,前进到步骤SD16。在步骤SD16中,判断音符切断事件中包含的音符数是否与寄存器NOTE中存储的音符数一致,即,是否是对应于未发音分配的音符开启事件的音符切断事件。

若不是对应的音符切断事件,则判断结果为“否”,处理前进到步骤SD14,若是对应的音符切断事件,则判断结果为“是”,前进到步骤SD17,将指示事件无效的停止代码写入对应于加上寄存器m的值(检查指针)的地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1+m]中。

从而,在由演奏数据PD定义的发音复数超过装置标准的情况下,将演奏数据PD中未发音分配的音符开启/切断事件替换成指示事件无效的停止代码,所以限制为符合装置规格的发音复数。

(III)音符切断事件的情况

此时,步骤SD4的判断结果变为“是”,前进到步骤SD18,减少寄存器M中存储的发音复数。之后,前进到步骤SD5,增加步进地址指针AD1,之后,在步骤SD6中,判断是否到达曲终端。若到达曲终端,则判断结果为“是”,本程序完成。若未到达曲终端,则判断结果为[否],处理返回上述步骤SD3。

③音符变换处理的动作

下面,参照图10-图12来说明音符变换处理的动作。若经上述步骤SB3(参照图7)来执行本处理,则CPU3将处理前进到图10所示的步骤SE1。在步骤SE1中,将地址指针AD1、AD2复位为零。这里,地址指针AD2是暂时存储将从演奏数据PD变换的音符数据SD存储在作业RAM6的变换数据区域CDE中时的写入地址。

接着,在步骤SE2、SE3中,分别零位复位寄存器TIME1、CH、N。之后,在步骤SE4中,判断对应于地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是否是事件EVT。

下面,将从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]分为事件EVT的情况和定时TIME的情况来说明动作

所谓从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是通过上述时间变换处理(参照图8)变换为绝对时间形式、按EVT→TIME→EVT→TIME…顺序再次存储的演奏数据PD。

(I)定时数据TIME的情况

一旦读取用绝对时间形式表示的定时数据TIME,则上述步骤SE4的判断结果变为“否”,前进到步骤SE11,增加步进地址指针AD1。另外,在步骤SE12中,判断对应于步进地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是否是表示曲终端的END数据。在到达曲终端的情况下,判断结果为“是”,完成本处理,若不是,则判断结果为“否”,处理返回上述步骤SE4。

(II)事件EVT的情况

在读取事件EVT的情况下,对应于事件种类来执行处理。下面,描述读取的事件EVT为“音量事件”、“音色事件”、“音符开启事件”和“音符切断事件”情况下的各动作。

a、音量事件的情况

若对应于地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是音量事件,则步骤SE5的判断结果为“是”,处理前进到步骤SE6。在步骤SE6中,将音量事件中包含的发音通道序号存储在寄存器CH中,之后,在步骤SE7中,将音量事件中包含的音量数据存储在音量数据寄存器[CH]中后,处理前进到上述步骤SE11。

另外,这里所谓的音量数据寄存器[CH]是指作业RAM6的音量数据区域VDE(参照图4)中设置的音量数据寄存器(1)-(n)内、对应于寄存器CH中存储的发音通道序号的寄存器。

b、音色事件的情况

若对应于地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是音色事件,则步骤SE8的判断结果为“是”,处理前进到步骤SE9。在步骤SE9中,将音色事件中包含的发音通道序号存储在寄存器CH中,之后,在步骤SE10中,将音色事件中包含的音色数据(波形参数序号WPN)存储在音色数据寄存器[CH]中后,处理前进到上述步骤SE11。

另外,这里所谓的音色数据寄存器[CH]是指作业RAM6的音色数据区域TDE(参照图4)中设置的音色数据寄存器(1)-(n)内、对应于寄存器CH中存储的发音通道序号的寄存器。

c、音符开启事件的情况

若对应于地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是音符开启事件,则图11所示步骤SE13的判断结果为“是”,处理前进到步骤SE14。在步骤SE14-SE16中,检查未发音分配的空通道。

即,在步骤SE14中将初始值“1”存储在通道检测用的指针寄存器n中后,前进到步骤SE15,判断对应于指针寄存器n的音符寄存器NOTE[n]是否是未发音分配的空通道。

若不是空通道,则判断结果为“否”,将指针寄存器n加1,将处理返回步骤SE15,判断对应于步进后指针寄存器n的音符寄存器NOTE[n]是否是空通道。

从而,对应于指针寄存器n的步进来检查空通道,一旦检索空通道,则步骤SE15的判断结果变为[是],处理前进到步骤SE17。在步骤SE17中,将音符开启事件中包含的音符数和发音通道序号存储在空通道的音符寄存器NOTE[n]中。之后,在步骤SE18中,生成对应于音符寄存器NOTE[n]中存储的音符数的发音音调PIT。这里所谓的发音音调PIT是表示从数据ROM5的波形数据区域WDA(参照图2)中读取波形数据时的相位的频率数。

若前进到步骤SE19,则在寄存器CH中存储发音通道序号,接着,在步骤SE20中,从对应于寄存器CH中存储的发音通道序号的音色数据寄存器[CH]中读取音色数据(波形参数序号WPN)。之后,在步骤SE21中,将音符开启事件中包含的速率乘以从音量数据寄存器[CH]中读取的音量数据后,算出发音音量VOL。

之后,若前进到步骤SE22,则将对应于地址指针AD2+1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD2+1]、即绝对时间形式的定时值存储在寄存器TIME2中。之后,在步骤SE23中,从寄存器TIME2的值中减去寄存器TIME1的值,发生时刻差Δt。

从而,若经步骤SE18-SE23,从音符开启事件中得到发音通道序号CH、时刻差Δt、发音音量VOL、波形参数序号WPN和发音音调PIT,则前进到步骤SE24,将这些数据作为音符数据SD(参照图4),对应于地址指针AD2,存储在作业RAM6的变换数据区域CDE中。

另外,在步骤SE25中,为了算出与下一音符事件的相对时间,将寄存器TIME2的值存储在寄存器TIME1中,之后,在步骤SE26中,使地址指针AD2步进后,将处理返回上述步骤SE11(参照图10)。

d、音符切断事件的情况

若对应于地址指针AD1从作业RAM6的演奏数据区域PDE中读取的数据MEM[AD1]是音符切断事件,则图12所示步骤SE27的判断结果为“是”,处理前进到步骤SE28。在步骤SE28中,将音符切断事件的发音通道序号存储在寄存器CH中,之后,在步骤SE29中,将音符切断的音符数存储在寄存器NOTE中。

另外,在步骤SE30-SE35中,从16发音通道的音符寄存器NOTE[1]-[16]内检查暂时存储对应于音符切断的发音通道序号和音符数的音符寄存器NOTE,将对应的音符寄存器NOTE调定为空通道。

即,在步骤SE30中,在将初始值“1”存储在指针寄存器m中后,前进到步骤SE31,判断存储在对应于指针寄存器m的音符寄存器NOTE[m]中的发音通道序号是否与存储在寄存器CH中的发音通道序号一致。若不一致,则判断结果为“否”,前进到步骤SE34,增加步进指针寄存器m。接着,在步骤SE35中,判断步进后的指针寄存器m的值是否超过“16”、即是否检索完全部的音符寄存器NOTE[1]-[16]。

若未检索完,则判断结果为“否”,处理返回上述步骤SE31。另外,在步骤SE3 1中,对应于步进后的指示会寄存器m的值,再次判断音符寄存器NOTE[m]的发音通道序号是否与存储在寄存器CH的发音通道序号一致。在一致的情况下,判断结果为“是”,前进到下一步骤SE32,判断音符寄存器NOTE[m]中存储的音符数是否与寄存器NOTE的音符数一致。若不一致,则判断结果为“否”,处理前进到上述步骤SE34,再次使指针寄存器m步进,处理返回步骤SE31。

从而,若响应指针寄存器m的步进,搜索出存储对应于音符切断的发音通道序号和音符数的音符寄存器NOTE[m],则步骤SE31、SE32的各判断结果都变为“是”,前进到步骤SE33,在将检索的音符寄存器NOTE[m]设定为空通道后,将处理返回上述步骤SE11(参照图10)。

(c)生成处理的动作

下面,参照图13-图15来说明生成处理的动作。若通过模式选择开关的操作来选择生成模式,则CPU3经上述步骤SA4(参照图6)执行图13所示生成处理,处理转到步骤SF1。在步骤SF1中,复位作业RAM6中设置的各种寄存器/标志类,并执行设置初始值的初始化。之后,在步骤SF2中,增大累计波形采样数的当前采样寄存器R1,接着,在步骤SF3中,判断步进后的当前采样寄存器R1的低16比特是否为“0”、即是否在曲步进定时以下。

若在曲步进定时以下,则判断结果变为“是”,前进到下一步骤SE4,增加保持当前演奏时刻的演奏当前时刻寄存器后,前进到步骤SF5。

另一方面,若不在曲步进定时以下,则上述步骤SF3的判断结果变为“否”,转到步骤SF5。在步骤SF5中,判断演奏当前时刻寄存器R2的值是否比演奏运算时刻寄存器R3的值大、即是否在进行再现下一音符数据SD用的演奏运算的定时下。

这里,若已在演奏运算中,则判断结果变为“否”,处理前进到后述的步骤SF13(参照图14),但若在进行演奏运算的定时以下,则判断结果变为“是”,处理前进到步骤SF6。

在步骤SF6中,根据演奏数据指针R4,从作业RAM6的变换数据区域CDE中指定音符数据SD。之后,在步骤SF7中,若设指定的音符数据SD的发音通道序号为n,则分别将该音符数据SD的发音音调PIT和发音音量VOL设置在作业RAM6的生成处理用作业区域GWE中设置的波形运算缓冲器(n)中的音调寄存器和音量寄存器中。

接着,在步骤SF8中,读取指定的音符数据SD的波形参数序号WPN。在步骤SF9中,根据读取的波形参数序号WPN,从数据ROM5中将对应的波形参数(波形开始地址、波腹幅度和波形结束地址)存储在上述波形运算缓冲器(n)中。

接着,在图14所示步骤SF10中,读取指定的音符数据SD的时刻差Δt,接着,在步骤SF11中,将读取的时刻差Δt加入演奏运算时刻寄存器R3中。

从而,若为了再现指定的音符数据SD而做准备,则CPU3将处理前进到步骤SF12,增加演奏数据指针R4。另外,在步骤SF13~SF17中,对应于分别存储在波形运算缓冲器(1)-(16)中的波形参数、发音音量和发音音调,生成每个发音通道的波形,累计后,发生对应于音符数据SD的音乐数据。

即,在步骤SF13、SF14中,对指针寄存器N设置初始值“1”,将输出寄存器OR的内容复位为零。在步骤SF15中,根据分别存储在波形运算缓冲器(1)-(16)中的波形参数、发音音量以及发音音调,执行形成每个发音通道的音乐数据的缓冲器运算处理。

若执行缓冲器运算处理,则CPU3将处理前进到图15所示步骤SF15-1,将该缓冲器中的音调寄存器的值加到对应于指针寄存器N的波形运算缓冲器(N)的当前波形地址中。之后,前进到步骤SF15-2,判断相加音调寄存器值后的当前波形地址是否超过波形结束地址。若未超过,则判断结果为“否”,进行到步骤SF15-4,但若超过,则判断结果变为“是”,转到下一步骤SF15-3。

在步骤SF15-3中,将从当前波形地址中减去波腹幅度后的结果调定为新的当前波形地址。之后,若前进到步骤SF15-4,则对应于当前波形地址,从数据ROM5中读取由波形参数指定的音色的波形数据。

接着,在步骤SF15-5中,将音量寄存器的值乘以读取的波形数据后,形成音乐数据。之后,在步骤SF15-6中,将该音乐数据存储在波形运算缓冲器(N)中的通道输出寄存器中。之后,前进到步骤SF15-7,将存储在通道输出寄存器中的音乐数据加入输出寄存器OB。

从而,若缓冲器运算处理完成,则CPU3将处理转到图14所示步骤SF16,增加步进指针寄存器N,接着,在步骤SF17中,判断步进后的指针寄存器N是否超过“16”、即是否对所有发音通道形成完音乐数据。若在途中,则判断结果变为“否”,处理返回步骤SF15,重复步骤SF15-SF17,直到对所有发音通道形成完音乐数据。

另外,若对所有发音通道形成完音乐数据,则步骤S17的判断结果变为[是],前进到步骤SF18。在步骤SF18中,将由上述缓冲器运算处理(参照图15)累计并保持每个发音通道的音乐数据的输出寄存器OR的内容输出到DAC7。之后,CPU3将处理返回上述步骤SF2(参照图13)。

从而,在生成处理中,在每个曲步进定时时使演奏当前时刻寄存器R2步进时,若步进后的演奏当前时刻寄存器R2的值比演奏运算时刻寄存器R3的值大、即变为进行再现音符数据SD用的演奏运算定时,则根据常规数据指针R4指定的音符数据SD来生成音乐数据,进行自动演奏。

如上所述,在本实施例中,CPU3将SMF形式的演奏数据PD变换为音符数据SD,发生对应于变换后音符数据SD的音乐数据,进行自动演奏,所以即使不配备翻译执行SMF形式演奏数据PD的专用音源,也可SMF形式的演奏数据来自动演奏。

在上述实施例中,一旦将从外部提供的SMF形式的演奏数据PD存储在作业RAM6的演奏数据区域PDE中后,将从该演奏数据区域PDE中读取的演奏数据PD变换为音符数据SD,根据音符数据SD来进行自动演奏,但不限于此,也可以将经MIDI接口提供的SMF形式的演奏数据PD实时变换为音符数据SD,并且再现该音符数据SD。如此,即使不具备专用音源,也可实现MIDI乐器。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号