CN105632474A - 自动作曲装置、方法以及存储介质 - Google Patents

自动作曲装置、方法以及存储介质 Download PDF

Info

Publication number
CN105632474A
CN105632474A CN201510600154.9A CN201510600154A CN105632474A CN 105632474 A CN105632474 A CN 105632474A CN 201510600154 A CN201510600154 A CN 201510600154A CN 105632474 A CN105632474 A CN 105632474A
Authority
CN
China
Prior art keywords
note
chord
data
melody
mentioned
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.)
Granted
Application number
CN201510600154.9A
Other languages
English (en)
Other versions
CN105632474B (zh
Inventor
南高纯一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Publication of CN105632474A publication Critical patent/CN105632474A/zh
Application granted granted Critical
Publication of CN105632474B publication Critical patent/CN105632474B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Details of electrophonic musical instruments
    • G10H1/0008Associated control or indicating means
    • G10H1/0025Automatic or semi-automatic music composition, e.g. producing random music, applying rules from music theory or modifying a musical piece
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10GREPRESENTATION OF MUSIC; RECORDING MUSIC IN NOTATION FORM; ACCESSORIES FOR MUSIC OR MUSICAL INSTRUMENTS NOT OTHERWISE PROVIDED FOR, e.g. SUPPORTS
    • G10G3/00Recording music in notation form, e.g. recording the mechanical operation of a musical instrument
    • G10G3/04Recording music in notation form, e.g. recording the mechanical operation of a musical instrument using electrical means
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Details of electrophonic musical instruments
    • G10H1/36Accompaniment arrangements
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Details of electrophonic musical instruments
    • G10H1/36Accompaniment arrangements
    • G10H1/38Chord
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Aspects 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/031Musical analysis, i.e. isolation, extraction or identification of musical elements or musical parameters from a raw acoustic signal or from an encoded audio signal
    • G10H2210/081Musical analysis, i.e. isolation, extraction or identification of musical elements or musical parameters from a raw acoustic signal or from an encoded audio signal for automatic key or tonality recognition, e.g. using musical rules or a knowledge base
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Aspects 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/101Music Composition or musical creation; Tools or processes therefor
    • G10H2210/145Composing rules, e.g. harmonic or musical rules, for use in automatic composition; Rule generation algorithms therefor
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Aspects 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/101Music Composition or musical creation; Tools or processes therefor
    • G10H2210/151Music Composition or musical creation; Tools or processes therefor using templates, i.e. incomplete musical sections, as a basis for composing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Aspects 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/325Musical pitch modification
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Aspects 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/325Musical pitch modification
    • G10H2210/331Note pitch correction, i.e. modifying a note pitch or replacing it by the closest one in a given scale
    • G10H2210/335Chord correction, i.e. modifying one or several notes within a chord, e.g. to correct wrong fingering or to improve harmony
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Aspects 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/571Chords; Chord sequences
    • G10H2210/576Chord progression
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Aspects 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/571Chords; Chord sequences
    • G10H2210/611Chord ninth or above, to which is added a tension note

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Auxiliary Devices For Music (AREA)

Abstract

一种自动作曲装置以及方法,其中,和弦进行选择部按照伴奏·和弦进行DB所存储的每个和弦进行数据,依次参照规则DB所存储的多个音符连接规则,并且算出该和弦进行数据相对输入动机的匹配度,输出对该匹配度高的和弦进行数据进行指示的和弦进行候补指示数据。旋律生成部基于和弦进行候补指示数据所指示的和弦进行数据和输入动机,参照片段集合DB以及规则DB并且生成旋律。

Description

自动作曲装置、方法以及存储介质
关联申请
本申请享受以日本专利申请2014-235233号(申请日:2014年11月20日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部的内容。
技术领域
本发明涉及自动作曲装置、方法以及存储介质。
背景技术
已知有基于由多个音符数据构成的动机旋律(motifmelody)来进行自动作曲的技术。例如,已知有随后那样的以往技术(例如日本特开2002-32080号公报记载的技术)。在从存储了特定调的和弦进行(chordprogression)的数据库中选择规定的和弦进行,并以规定的调来输入动机时,从输入动机中检测出动机调。基于检测出的动机调,和弦进行数据被移调成动机调,在旋律生成片段中,基于输入动机以及移调成动机调后的和弦进行,生成动机调中的旋律。另外,基于检测出的动机调,动机被移调成特定调,基于特定调的和弦进行以及移调后动机,生成特定调的旋律,之后,该特定调的旋律被移调成动机调的旋律。
另外,还已知有随后那样的以往技术(例如日本特开平10-105169号公报记载的技术)。从乐曲数据的卡拉OK演奏用数据、向导旋律数据中提取4分音符以上长度的音符,累计其音名(C~B)的出现次数的分布。将该次数分布与大调判断音阶及小调判断音阶进行比较,将分布形状最一致处判断为是作为主音(音阶音)的调,基于该调判断结果和向导旋律数据生成和声数据,基于该和声数据形成和声声音信号码。
但是,在上述以往技术中,动机旋律是被确定成某调那样的隐含的前提,不能对应在动机内的转调、模式的旋律、无调性动机等。另外,调的判断是基于音高的分布的方法,因此,存在无法得到正确的对应关系的情况。例如,“RE、DO、SI、LA、SOL”、“SOL、RE、LA、SI、DO”是相同的音高分布,但是,应该分别看成G大调、C大调。
发明内容
因此,本发明的目的在于能够选择适当的和弦进行数据来实现自然的乐曲生成。
在技术方案的一个例子中具备自动作曲装置,该自动作曲装置具备处理部,该处理部执行:计算处理,参照用于规定连续的音符类型的连接关系的多种音符连接规则,计算多种和弦进行数据各自相对于包含多个音符数据的动机的匹配度;以及旋律生成处理,基于被计算出了该匹配度的和弦进行数据和上述动机,生成旋律。
附图说明
图1是自动作曲装置的实施方式的框图。
图2是表示在本实施方式中被自动作曲的乐曲的构造例的图。
图3是输入动机108与和弦进行数据的匹配动作例
图4是表示输入动机的数据构成例的图。
图5是表示伴奏·和弦进行DB的数据构成例的图。
图6是表示1个记录中的曲构造数据的数据构成例的图。
图7是表示标准音级集合表的数据构成例的图。
图8是关于音符类型、相邻音程、以及音符类型与相邻音程的排列变量数据的说明图。
图9是表示音符连接规则的数据构成例的图。
图10是和弦进行选择部102的动作说明图。
图11是表示片段集合DB的数据构成例的图。
图12是旋律变形处理以及旋律优化处理的动作说明图。
图13是旋律优化处理的详细动作说明图。
图14是表示自动作曲装置的硬件构成例的图。
图15A是表示各种变量数据、排列变量数据、以及常数数据的列表的图(其1)。
图15B是表示各种变量数据、排列变量数据、以及常数数据的列表的图(其2)。
图16是表示自动作曲处理的例子的流程图。
图17是表示和弦进行选择处理的详细例子的流程图。
图18是表示和弦设计数据生成处理的详细例的流程图。
图19是表示输入动机与和弦进行的匹配度检验处理的详细例的流程图。
图20是表示检验处理的详细例的流程图。
图21是表示与输入动机的当前的音符的定时对应的和弦信息的取得处理的详细例的图。
图22是表示音符类型取得处理的详细例的图。
图23是表示音符连接性检验处理的详细例的图。
图24是表示旋律生成处理的详细例的图。
图25是表示旋律生成1处理的详细例的图。
图26是表示片段集合DB检索处理的详细例的图。
图27是表示旋律变形处理的详细例的图。
图28是表示旋律优化处理的详细例的图。
图29是表示旋律生成2处理的详细例的图。
具体实施方式
下面,参照附图对用于实施本发明的方式进行详细说明。图1是自动作曲装置100的实施方式的框图。该自动作曲装置100具备动机输入部101、和弦进行选择部102、伴奏·和弦进行数据库(下面,将“数据库”称为“DB”)103、规则DB104、旋律生成部105、片段集合DB106、以及输出部107。
动机输入部101中,将所谓A旋律、B旋律、C旋律(副歌旋律)等的、决定曲调所使用的特征的旋律部分的任一旋律作为输入动机108由用户进行输入。输入动机108是作为A旋律部分的动机的动机A、作为B旋律部分的动机的动机B、或者作为C旋律(副歌旋律)部分的动机的动机C的任意一种,例如具有各旋律部分的开头的2小节的长度。动机输入部101例如具有用户通过键盘输入旋律的键盘输入部101-1、用户从麦克风通过歌声输入旋律的音声输入部101-2、用户从键盘等输入构成旋律的音符的数据的音符输入部101-3的任意1个以上的机构。另外,输入部101具有输入所谓A旋律、B旋律、C旋律(副歌旋律)的动机的类别的、独立的操作单元等。
和弦进行选择部102按照在伴奏·和弦进行DB103中存储的多个和弦进行数据的每个和弦进行数据,一边参照规则DB104,一边算出匹配度,并且输出匹配度高的例如分别指示高位3个和弦进行数据的#0、#1、#2的和弦进行候补指示数据(在图1中显示为“和弦进行候补”)109,该匹配度表示该和弦进行数据与从动机输入部101输入的输入动机108匹配到什么程度。
旋律生成部105例如使用户来选择与和弦进行选择部102输出的#0、#1、#2的和弦进行候补指示数据109对应的3个和弦进行候补之中的1个。或者,旋律生成部105也可以设为自动地按顺序选择与#0、#1、#2的和弦进行候补指示数据109的任意对应的和弦进行候补。该结果是,旋律生成部105从伴奏·和弦进行DB103读入与所选择的和弦进行候补对应的曲构造数据。旋律生成部105按照由该曲构造数据所示的小节的片段的每个片段,参照输入动机108、片段集合DB106所登记的片段集合、以及规则DB104,自动生成该片段的旋律。旋律生成部105遍及乐曲整体的小节地执行旋律的自动生成处理,并输出自动生成的旋律110。
输出部107具备基于由旋律生成部105自动生成的旋律数据110来显示旋律的乐谱的乐谱显示部107-1、以及基于从旋律数据110以及伴奏·和弦进行DB103取得的伴奏用MIDI(MusicalInstrumentDigitalInterface)数据来执行旋律以及伴奏的再生的乐音再生部107-2。
随后,关于具有图1的功能构成的自动作曲装置100的动作的概略进行说明。图2是表示在本实施方式中被自动作曲的乐曲的构造例的图。乐曲通常由前奏、A旋律、B旋律、间奏、C旋律(副歌旋律)、后奏等片段构成。前奏是只由旋律开始前的伴奏构成的前奏部分。A旋律通常是指在前奏之后出来的片段,在曲中一般演奏平静的旋律。B旋律是指在A旋律之后出来的片段,大多变成比A旋律稍微热烈的曲调。C旋律大多情况是在B旋律之后出来的片段,若是日本的曲时,C旋律大多情况是变成最热烈的副歌旋律。后奏与前奏相反,是指曲结束的片段。间奏是例如第1曲与第2曲之间的不存在旋律的只有乐器演奏的片段。在图2所示的乐曲的构造例中,乐曲按照前奏、A旋律、B旋律、A旋律、间奏、A旋律、B旋律、C旋律、后奏的顺序构成。
在本实施方式中,用户能够例如从动机输入部101(参照图1)输入在乐曲中最先出现的A旋律的例如开头2小节的旋律作为图2A的动机A(图1的输入动机108的一例)。或者,用户能够从例如从动机输入部101(参照图1)输入在乐曲中最先出现的B旋律的例如开头2小节的旋律作为图2B的动机B(图1的输入动机108的另一例)。或者,用户能够例如从动机输入部101(参照图1)输入在乐曲中最先出现的C旋律(副歌旋律)的例如开头2小节的旋律作为图2C的动机C(图1的输入动机108的又另一例)。
图3A是表示如上述那样输入的输入动机108的音符例的图。这样,作为输入动机108,例如指定2小节量的旋律。
相对于这样的输入,和弦进行选择部102(参照图1)从伴奏·和弦进行DB103所登记的和弦进行数据之中,提取例如到高位3位为止匹配的由和弦、调以及音阶构成的和弦进行数据。如图2F以及图2G所示,构成和弦进行数据的和弦、调以及音阶遍及乐曲整体地设定。
图3B是表示由到高位3位为止的和弦进行数据表示的和弦进行(和弦、调以及音阶)#0、#1、#2的例子的图。
图1的旋律生成部105基于这些信息,自动生成与输入了输入动机108的图2A、图2B、或者图2C的任意的片段部分以外的图2D所示的片段部分对应的旋律,并且与输入动机108的旋律一起作为旋律110进行输出。进而,图1的输出部107进行与自动生成的旋律110对应的乐谱显示或者播放声音。另外,关于伴奏,在伴奏·和弦进行DB103中,依次读取与最后选择的和弦进行对应并登记的伴奏用MIDI数据,并基于该数据如图2E所示那样遍及乐曲整体进行伴奏。
图4是表示在图1的动机输入部101中基于用户输入而生成的输入动机108的数据构成例的图。如图4A所示,输入动机108由称为#0,#1,···的多个音符数据构成,最后存储有结尾和弦。各音符数据与例如图3A例示的构成输入动机108的例如2小节量的音符的各个音符对应,该各音符数据是对成为动机的旋律音的发音进行指示的数据。如图4B所示,1个音符数据由将与该音符数据对应的音符的发音定时作为例如从输入动机108的开头开始的经过时间进行表示的“时间”数据、表示音符的长度的“长度”数据、表示音符的强度的“强度”数据、以及表示音符的音高的“音高(pitch)”数据构成。通过这些数据来表现如图3A例示那样的2小节量的输入动机108中的1个音符。
图5是表示图1的伴奏·和弦进行DB103的数据构成例的图。如图5A所示,在和弦进行DB存储有1个记录(图5A的1行)由和弦进行数据、伴奏用MIDI数据、以及曲构造数据构成的、称为#0,#1,···的多个记录,在最后存储有结尾和弦。
1个记录中的和弦进行数据表示乐曲的1曲量的和弦进行。在图5A所示的和弦进行DB中,例如,存储有50记录=50曲量的和弦进行数据。如图5B所示,1个记录中(=1曲量)的和弦进行数据由称为#0,#1,···的多个和弦数据构成,在最后存储有结尾和弦。在和弦数据中具有指定某定时中的调以及音阶的数据(图5C)、以及指定某定时中的和弦的数据(图5D)(图3B参照)。如图5C所示,指定调以及音阶的数据由表示该调以及音阶开始的定时的“时间”数据、“调”数据以及“音阶”数据构成。如图5D所示,指定和弦的数据由表示该和弦开始的定时的“时间”数据、表示和弦的根音(根音(root))的“根音”数据以及表示和弦的类型(种类)的“类型”数据构成。和弦进行数据例如作为MIDI规格的衍生数据被存储。
图5A所示的伴奏·和弦进行DB103的1个记录中(=1曲量)的曲构造数据具有图6所示的数据构成例。该曲构造数据按照1曲中的每个小节形成1个记录(图6的1行)。在曲构造数据中的1个记录中,存储有信息,该信息表示与该小节对应的片段的类别以及在该片段中是否存在旋律。
在图6所示的曲构造数据中,在“Measure”项目中登记有对各记录的数据是乐曲中的第几小节进行表示的值。以后,将“Measure”项目的值为M的记录设为第M记录,将该记录所示的小节设为第M+1小节。例如在“Measure”项目的值为0时,该记录为第0记录/第1小节,在该值为1时,该记录为第1记录/第2小节。
在图6所示的曲构造数据中,在“PartName[M]”项目以及“iPartID[M]”项目(“M”为“Measure”项目的值)中分别登记有表示第M记录/第M+1小节的片段的类别以及与该类别对应的识别值的数据。例如,第0记录(第1小节)的“PartName[M]”项目以及“iPartID[M]”项目的值“Null”以及“0”表示该小节为无音。第1、2记录(第2、3小节)的“PartName[M]”项目以及“iPartID[M]”项目的值“Intro”以及“1”表示该小节为前奏片段。第3~10、28~34记录(第4~11、29~35小节)的“PartName[M]”项目以及“iPartID[M]”项目的值“A”以及“11”表示该小节为A旋律的片段。第11~18记录(第12~19小节)的“PartName[M]”项目以及“iPartID[M]”项目的值“B”以及“12”表示该小节为B旋律的片段。第19~27记录(第20~28小节)的“PartName[M]”项目以及“iPartID[M]”项目的值“C”以及“13”表示该小节为C旋律(或者副歌旋律)的片段。第35记录(第36小节)的“PartName[M]”项目以及“iPartID[M]”项目的值“Ending”以及“3”表示该小节为后奏的片段。
另外,在图6所示的曲构造数据中,在“ExistMelody[M]”项目(“M”为“Measure”项目的值)中登记有表示对在第M记录(第M+1小节)的片段中是否存在旋律进行表示的值。在旋律存在时登记值“1”,在旋律不存在时登记值“0”。例如,作为M=0,1,2,或者35(第0,1,2,35记录(第1,2,3,36小节))的“PartName[M]”项目为“Null”、“Intro”、或者在“Ending”的各片段的“ExistMelody[M]”项目中登记有值“0”,表示旋律不存在。PartName[M]=“Null”的情况是无音,PartName[M]=“Intro”、或者“Ending”的情况只存在伴奏。
另外,在图6所示的曲构造数据中,在“iPartTime[M]”项目(“M”为“Measure”项目的值)中登记有与第M记录对应的第M+1小节的小节开始时间数据。在图6中成为空栏,但是,在各记录中存入有实际的时间值。
以上的图6所示的曲构造数据例如作为MIDI规格的衍生数据被存储。
如在图2中所述那样,用户能够例如从动机输入部101(参照图1)输入在图6的曲构造数据中最先出现的A旋律的例如开头2小节即第3、4记录(第4、5小节)的旋律作为动机A(图2A参照)。或者,用户能够例如从动机输入部101输入在图6的曲构造数据中最先出现的B旋律的例如开头2小节即第11、12记录(第12、13小节)的旋律作为动机B(图2B参照)。或者,用户能够例如从动机输入部101输入在图6的曲构造数据中最先出现的C旋律(副歌旋律)的例如开头2小节即第19、20记录(第20、21小节)的旋律作为动机C(图2C参照)。
和弦进行选择部102按照伴奏·和弦进行DB103所存储的每个和弦进行数据(以下记载为“评价对象的和弦进行数据”),算出匹配度,该匹配度表示该评价对象的和弦进行数据与从动机输入部101输入的输入动机108匹配到什么程度。
在本实施方式中,使用音乐理论中的可用的音符音阶的观念,算出评价对象的和弦进行数据相对于输入动机108的匹配度。在赋予了和弦进行时,可用的音符音阶是将能够用于旋律的音作为音阶进行表示的。作为构成可用的音符音阶的音符的种类(下面,称为“音符类型”),例如具有和弦音、可用的音符、音阶音符、和弦扩展音符、避免音符。和弦音是成为音阶来源的和弦的构成音,作为旋律,1音是希望使用的音符类型。可用的音符是一般能够用于旋律的音符类型。音阶音符是音阶的构成音,在将该音加上长的音等时,会与原本的和弦声音冲突,因此该音阶音符是需要处理中注意的音符类型。和弦扩展音符是叠加于和弦音的、在和弦的和弦扩展中所使用的音,是越进行高阶的和弦扩展越增加声音的紧张感且变成越丰富多彩的声音的音符类型。避免音符是与和弦不和谐的音,该避免音符是避免使用或希望以短的音符来使用的音符类型。在本实施方式中,关于构成输入动机108的各音符(图3A的各音符),基于与该音符的发音定时对应的评价对象的和弦进行数据中的调、音阶、和弦的根音以及和弦类型,算出该音符的该和弦进行上的音符类型。
为了取得上述的、构成输入动机108的各音符(图3A的各音符)的音符类型,在本实施方式中,使用标准音级集合表。图7是表示标准音级集合表的数据构成例的图。标准音级集合表置于和弦进行选择部102内的存储器区域(例如后述的图4的ROM1402内)。标准音级表由图7A所示的和弦音表、图7B所示的和弦扩展音符表、以及图7C所示的音阶音符表构成。
在图7A、图7B、或者图7C的表中,与其1行对应的1组音级集合由合计12比特的数据构成,该合计12比特的数据是相对构成将和弦或者音阶的根音作为第0音(第0比特)的音阶构成音时的1个八度音程量的半音阶的从第0音(第0比特)(图中的行的右端)开始到第11音(第11比特)(图中的行的左端)为止的音阶构成音分别赋予“0”或者“1”的值。在1组音级集合中,赋予了值“1”的音阶构成音表示其包含于音级集合的构成要素中,赋予了值“0”的音阶构成音表示其没有包含于音级集合的构成要素中。
图7A的和弦音表内的与各行对应的音级集合(下面,称为“和弦音音级集合”)存储有如下内容:关于在其右端记载的和弦类型,在其和弦根音作为第0音(第0比特)的音阶构成音被赋予时,哪个音阶构成音是其和弦类型的和弦构成音。例如,在图7A例示的和弦音表的第1行中,和弦音音级集合“000010010001”表示第0音(第0比特)、第4音(第4比特)、以及第7音(第7比特)的各音阶构成音是和弦类型“MAJ”的和弦构成音。
图1的和弦进行选择部102按照构成输入动机108的每个音符(下面,将该音符称为“当前音符”),算出相应前音符的音高相对于与相应前音符的发音定时对应的评价对象的和弦进行数据中的和弦根音而具有哪个音程(下面,将其称为“和弦音程”)。此时,和弦进行选择部102进行将当前音符的音高映射到将与相应前音符的发音定时对应的评价对象的和弦进行数据中的和弦根音作为第0音的音阶构成音时的、从第0音开始到第11音为止的1个八度音程内的音阶构成音的某一个中的运算,并算出其映射位置的音(从第0音开始到第11音的某一个)作为上述和弦音程。进而,和弦进行选择部102判断在上述发音定时中的评价对象的和弦进行数据中的和弦类型所对应的图7A所例示的和弦音表上的和弦音音级集合的和弦构成音中是否包含有上述被算出的和弦音程。
图7B的和弦扩展音符表内的与各行对应的音级集合(下面,称为“和弦扩展音符音级集合”)存储有如下内容:关于在其右端记载的和弦类型,其和弦根音作为第0音(第0比特)的音阶构成音被赋予时,哪个音阶构成音是与其和弦类型相对的和弦扩展。例如,在图7B例示的和弦扩展音符表的第1行中,和弦扩展音符音级集合“001001000100”表示第2音(第2比特)、第6音(第6比特)、以及第9音(第9比特)是相对于和弦类型“MAJ”(和弦根音=C)的和弦扩展。
图1的和弦进行选择部102判断在当前音符的发音定时中的评价对象的和弦进行数据中的和弦类型所对应的图7B所例示的和弦扩展音符表上的和弦扩展音符音级集合的和弦扩展音符中是否包含有与上述的当前音符的音高的和弦根音相对的和弦音程。
图7C的音阶音符表内的与各行对应的音级集合(下面,称为“音阶音符音级集合”)存储有如下内容:关于其右端记载的音阶,在其音阶的根音作为第0音(第0比特)的音阶构成音被赋予时,哪个音阶构成音是与其音阶对应的音阶构成音。例如,在图7C例示的音阶音符表的第1行中,音阶音符音级集合“101010110101”表示第0音(第0比特)、第2音(第2比特)、第4音(第4比特)、第5音(第5比特)、第7音(第7比特)、第9音(第9比特)、以及第11音(第11比特)是音阶“自然音”的音阶构成音。
图1的和弦进行选择部102算出当前音符的音高相对于与相应前音符的发音定时对应的评价对象的和弦进行数据中的调而具有哪个音程(下面,将其称为“调音程”)。此时,与和弦音程的算出的情况相同,和弦进行选择部102进行将当前音符的音高映射到将与相应前音符的发音定时对应的评价对象的和弦进行数据中的调作为第0音的音阶构成音时的、从第0音开始到第11音为止的1个八度音程内的音阶构成音的某一个中的运算,并算出其映射位置的音作为上述调音程。进而,和弦进行选择部102判断在上述发音定时中的评价对象的和弦进行数据中的音阶所对应的图7C例示的音阶音符表上的音阶音符音级集合的音阶构成音中是否包含有上述被算出的调音程。
如以上那样,和弦进行选择部102判断在输入动机108的当前音符的发音定时中的评价对象的和弦进行数据中的和弦类型所对应的图7A所例示的和弦音表上的和弦音音级集合的和弦构成音中是否包含有和弦音程。另外,和弦进行选择部102判断在与上述和弦类型对应的图7B所例示的和弦扩展音符表上的和弦扩展音符音级集合的和弦扩展音符中是否包含有和弦音程。进一步地,和弦进行选择部102判断在评价对象的和弦进行数据中的音阶所对应的图7C所例示的音阶音符表上的音阶音符音级集合的音阶构成音中是否包含有调音程。进而,和弦进行选择部102基于这些判断取得当前音符相当于和弦音、可用的音符、音阶音符、和弦扩展音符、或者避免音符的哪个,即取得音符类型的信息。关于音符类型取得处理的详细内容在图22的说明中详细叙述。
图8A是表示按照图3A例示的输入动机108的各音符的音高(图8A中的灰色的部分)的每个音高,针对从图1的伴奏·和弦进行DB103读取的如图3B例示的#0、#1、#2这3个评价对象的和弦进行数据的例子,分别由和弦进行选择部102取得的音符类型的例子的图。在图8A中,“C”是表示和弦音的音符类型的值,“A”是表示可用的音符的音符类型的值,“S”是表示音阶音符的音符类型的值,“V”是表示避免音符的音符类型的值。另外,虽然没有图示,但是,“T”是表示和弦扩展音符的音符类型的值。另外,在该图中,为了标记的简单化,使用罗马字母1字符来表示对各音符类型进行表示的值,但是,作为在实际的存储器中存储的各音符类型的值例如能使用ci_ChordTone(与标记“C”等价)作为表示和弦音的常数值,使用ci_AvailableNote(与标记“A”等价)作为表示可用的音符的常数值,使用ci_ScaleNote(与标记“S”等价)作为表示音阶音符的常数值,使用ci_TensionNote(与标记“T”等价)作为表示和弦扩展音符的常数值,使用ci_AvoidNote(与标记“V”等价)作为表示避免音符的常数值(参照后述的图15A)。
随后,和弦进行选择部102按照输入动机108的各音符的音高的每个音高,算出相邻的音高间的半音单位的音程(下面,称为“相邻音程”)。图8B的“相邻音程”是表示输入动机108各音符的音高(图8B中的灰色的部分)间的音程的算出结果的例子的图。
和弦进行选择部102相对于评价对象的和弦进行数据,生成交替地存入有如上述那样算出的音符类型和相邻音程的排列变量数据(下面,将该排列变量数据记载为“incon[i]”(“i”是排列号))。图8C是表示与从图1的伴奏·和弦进行DB103读取的如图3B例示的#0、#1、#2这3个评价对象的和弦进行数据的例子相对而分别被算出的排列变量数据incon[i]的例子的图。在图8C的和弦进行#0、#1、#2的各自的排列变量数据incon[i]中,图8A的和弦进行#0、#1、#2的各自的音符类型从开头依次复制到第偶数个排列号i=0,2,4,6,8,10,12,14,16,18的各要素中。另外,在和弦进行#0、#1、#2的各自的排列变量数据incon[i]中,图8B的相邻音程也从开头开始依次复制到第奇数个的排列号i=1,3,5,7,9,11,13,15,17的各要素中。
随后,和弦进行选择部102执行音符连接性检验处理,该音符连接性检验处理是,在相对当前的评价对象的和弦进行数据而存入有如上述所示那样能够算出的输入动机108的各音符的音符类型和相邻音程的排列变量数据incon[i](i=0,1,2,3,……)中,按照从排列号0开始按顺序例如每4组地评价音符类型与相邻音程的组合的规则(下面,将该规则称为“音符连接规则”)。在该音符连接性检验处理中,和弦进行选择部102参照在图1的规则DB104中存储的音符连接规则。
图9是表示规则DB104所存储的音符连接规则的数据构成例的图。在音符连接规则中存在3音的规则和4音的规则,为了容易说明,分别地记为例如,“和弦音”,“刺绣音”,“经过音”,“倚音”,“逸音”等的名称。另外,在各音符连接规则中给予用于评价在形成旋律后匹配到什么程度的评价点。进一步地,在本实施方式中,作为表示音符连接规则的变量,使用ci_NoteConnect[j][2k](0≦k≦3)以及ci_NoteConnect[j][2k+1](0≦k≦2)这样的排列变量数据。在此,变量数据“j”是指规则DB104中的第j号(图9中第j行)的音符连接规则的数据。另外,变量数据“k”取从0开始到3为止的值。进而,在ci_NoteConnect[j][2k]=ci_NoteConnect[j][0]、ci_NoteConnect[j][2]、ci_NoteConnect[j][4]、ci_NoteConnect[j][6]中分别存入有第j号的音符连接规则中的第1音符(音符类型#0)、第2音符(音符类型#1)、第3音符(音符类型#2)、以及第4音符(音符类型#3)的各音符类型。另外,第4音符(音符类型#3)成为“ci_NullNoteType”的从j=0开始到j=8为止的音符连接规则表示没有第4音符的音符类型,表示实质上是由3音构成音符连接规则。另外,在ci_NoteConnect[j][2k+1]=ci_NoteConnect[j][1]、ci_NoteConnect[j][3]、ci_NoteConnect[j][5]中分别存入有第j号的音符连接规则中的第1音符(#0)与第2音符(#1)的相邻音程、第2音符(#1)与第3音符(#2)的相邻音程、以及第3音符(#2)与第4音符(#3)的相邻音程。相邻音程的数值表示半音单位的音程,正值表示音程升高,负值表示音程下降。另外,值“99”表示音程可以为任意值,值“0”表示音程没有变化。另外,关于第4音符(音符类型#3)成为“ci_NullNoteType”的从j=0开始到j=8为止的音符连接规则,由于如上述那样没有第4音符的音符类型(值为“ci_NullNoteType”),因此,存入有第3音符(#2)与第4音符(#3)的相邻音程的ci_NoteConnect[j][5]的值为“0”。最后的ci_NoteConnect[j][7]中存入有第j号的音符连接规则的评价点。
作为具有如以上那样的数据构成的音符连接规则,如图9例示,从j=0开始到j=17为止的18规则预先登记到图1的规则DB104中。
和弦进行选择部102使用具有上述构成的音符连接规则,执行音符连接性检验处理。和弦进行选择部102从图10A所例示的2小节量的输入动机108的开头的音符开始按顺序,如图10B的i=0~6所示,对按每4音符与各音符对应地被存入于排列变量数据incon[i]的音符类型和相邻音程的组、与从j=0开始到j=17为止的根据音符连接规则从j=0开始按顺序选择的1组音符连接规则的音符类型和相邻音程的组是否一致进行比较。
例如,和弦进行选择部102对在图10B的i=0中,i=0的横向右侧的箭头所示那样,输入动机108的第1音符、第2音符、第3音符、第4音符(在图中,第1音、第2音、第3音、第4音)的音符类型以及相邻音程的各组是否与图9所例示的j=0,1,2,3,···的各音符连接规则的4组的音符类型以及相邻音程的组一致进行比较。
首先,在图9所例示的j=0的音符连接规则中,#0、#1以及#2的音符类型均为和弦音(ci_ChordTone)。与此相对,在例如评价对象的和弦进行数据为图3B所例示的#0的和弦进行的情况下,图3A所对应的图10A的输入动机108所对应的音符类型和相邻音程的排列变量数据incon[i]如图8的说明所述那样,成为图10C的和弦进行#0的横向右侧所示的数据。所以,输入动机108的第1音符、第2音符、第3音符、第4音符的音符类型成为和弦音(C)、可用的音符(A)、和弦音(C),与j=0的音符连接规则不一致。在这种情况下,不对j=0的音符连接规则的评价点进行加法。
随后,在图9所例示的j=1的音符连接规则中,#0、#1以及#2的音符类型成为和弦音(ci_ChordTone)、可用的音符(ci_AvailableNote)、和弦音(ci_ChordTone)。与此相对,在例如评价对象的和弦进行数据为图3B所例示的#0的和弦进行的情况下,与通过图10C的和弦进行#0的横向右侧所示的音符类型和相邻音程的排列变量数据incon[i]而得到的、输入动机108的第1音符、第2音符、第3音符、第4音符的音符类型一致。但是,j=1的音符连接规则中的第1音(#0)与第2音(#1)的相邻音程为“-1”,第2音(#1)与第3音(#2)的相邻音程为“1”,这与通过图10C的和弦进行#0的横向右侧所示的音符类型和相邻音程的排列变量数据incon[i]而得到的、输入动机108的第1音与第2音间的相邻音程“-2”以及第2音与第3音间的相邻音程“2”不一致。所以,j=1的情况也与j=0的情况相同,不对音符连接规则的评价点进行加法。
随后,在图9所例示的j=2的音符连接规则中,#0、#1以及#2的音符类型成为和弦音(ci_ChordTone)、可用的音符(ci_AvailableNote)、和弦音(ci_ChordTone)。与此相对,在例如评价对象的和弦进行数据为图3B所例示的#0的和弦进行的情况下,与通过图10C的和弦进行#0的横向右侧所示的音符类型和相邻音程的排列变量数据incon[i]而得到的、输入动机108的第1音符、第2音符、第3音符、第4音符的音符类型一致。另外,j=1的音符连接规则中的第1音(#0)与第2音(#1)的相邻音程为“-2”、第2音(#1)与第3音(#2)的相邻音程为“2”,这与通过图10C的和弦进行#0的横向右侧所示的音符类型和相邻音程的排列变量数据incon[i]而得到的、输入动机108的第1音与第2音间的相邻音程以及第2音与第3音间的相邻音程一致。进一步地,j=2的音符连接规则的第4音符(音符类型#3)为表示没有音符类型的值“ci_NullNoteType”,因此,输入动机108的第4音符可以不进行比较。由此,可知评价对象的和弦进行数据为#0的情况下的输入动机108的第1音、第2音、3音与图9的j=2的音符连接规则匹配,j=2的音符连接规则的评价点(ci_NoteConnect[2][7])=90点与评价对象的和弦进行数据#0所对应的总评价点进行加法。图10C的和弦进行#0记载的“<-No2:90->”的显示与其加法处理对应。
如以上那样,在找到音符连接规则时,关于该音符连接规则以后的音符连接规则,不实施与图10B的i=0的输入动机108的第1音符、第2音符、第3音符、第4音符的音符类型以及相邻音程的组相对的评价。
在与图10B的i=0的输入动机108的第1音符、第2音符、第3音符、第4音符的音符类型以及相邻音程的组相对的评价结束时,输入动机108上的评价对象的音符进1,成为图10B的i=1的状态,如i=1的横向右侧的箭头所示,对输入动机108的第2音符、第3音符、第4音符、第5音符的音符类型以及相邻音程的各组是否与图9所例示的j=0,1,2,3,···的各音符连接规则的4组的音符类型以及相邻音程的组一致进行比较。该结果是,关于图10C的评价对象的和弦进行数据#0所对应的输入动机108的第2音符、第3音符、第4音符、第5音符的音符类型以及相邻音程的各组,与所有的音符连接规则不一致,与图10B的i=1的输入动机108的第2音符、第3音符、第4音符、第5音符的音符类型以及相邻音程的组相对的评价点成为0点,不进行对评价对象的和弦进行数据#0所对应的总评价点的加法。
在与图10B的i=1的输入动机108的第2音符、第3音符、第4音符、第5音符的音符类型以及相邻音程的组相对的评价结束时,输入动机108上的评价对象的音符再进1,成为图10B的i=2的状态,如i=2的横向右侧的箭头所示那样,对输入动机108的第3音符、第4音符、第5音符、第6音符的音符类型以及相邻音程的各组是否与图9所例示的j=0,1,2,3,···的各音符连接规则的4组的音符类型以及相邻音程的组一致进行比较。该结果是,知道关于图10C的评价对象的和弦进行数据#0所对应的输入动机108的第3音符、第4音符、第5音符、第6音符的音符类型以及相邻音程的各组,图9的j=3的音符连接规则匹配,j=3的音符连接规则的评价点(ci_NoteConnect[3][7])=80点与评价对象的和弦进行数据#0所对应的总评价点进行相加。图10C的和弦进行#0记载的“<-No3:80->”的显示与其加法处理对应。该结果是,总评价点成为90点+80点=170点。
以后相同地进行,执行到与图10B的i=7的输入动机108的第8音符、第9音符、第10音符的音符类型以及相邻音程的组相对的评价为止。另外,在本实施方式中,评价是原则上每4音符进行,但是,只有最后的i=7的情况下,图9的从j=0开始到j=8为止的音符类型#3为“ci_NullNoteType”的3音的音符连接规则相对输入动机108的3音符进行比较。
如以上那样,在图10C的评价对象的和弦进行数据#0所对应的输入动机108的各音符的每个音符的评价处理结束时,在该时间点,与评价对象的和弦进行数据#0对应而算出的总评价点作为该评价对象的和弦进行数据#0的相对于输入动机108的匹配度。
在例如评价对象的和弦进行数据为图3B所例示的#1或者#2的各和弦进行的情况下,图3A所对应的图10A的输入动机108所对应的音符类型和相邻音程的排列变量数据incon[i]如图8的说明所述那样,成为图10C的和弦进行#1的横向右侧所示的数据或者#2的横向右侧所示的数据。关于这些排列变量数据incon[i],还执行与上述的和弦进行#0的情况相同的评价处理。例如,如图10C所示,和弦进行#1的情况没有与图9的音符连接规则匹配的部分,因此,其总评价点为0点,这是和弦进行#1的相对输入动机108的匹配度。另外,和弦进行#2的情况如图10C所示的那样,知道关于输入动机108的第5音符、第6音符、第7音符的音符类型以及相邻音程的各组,图9的j=5的音符连接规则匹配,j=5的音符连接规则的评价点(ci_NoteConnect[5][7])=95点与评价对象的和弦进行数据#2所对应的总评价点进行加法,这是和弦进行#2的相对输入动机108的匹配度。
图1的和弦进行选择部102相对伴奏·和弦进行DB103所存储的多个和弦进行数据,执行以上的匹配度的算出处理,并且输出分别对匹配度高的例如高位3个和弦进行数据进行指示的#0、#1、#2的和弦进行候补指示数据109。另外,在以上的处理中,对于输入动机108与伴奏·和弦进行DB103中的各和弦进行数据,并不限于调必须一致,因此,使各和弦进行数据调位移到构成1个八度音程的12阶段后的数据与输入动机108进行比较。
随后,关于图1的旋律生成部105的动作的概略进行说明。首先,图11是表示图1的片段集合DB106的数据构成例的图。如图11A所示,在片段集合DB106中存储有称为#0,#1,···的多个片段集合数据的记录,在最后存储有结尾和弦。
如图11B所示,1个记录量的片段集合数据由A旋律数据、B旋律数据、C旋律(副歌旋律)数据、后奏1数据、后奏2数据这多个片段数据构成。
如图11C所示,图11B的各片段数据由称为#0,#1,···的多个音符数据构成,在最后存储有结尾和弦。各音符数据与构成各片段的1小节量以上的音符的各个音符对应,该各音符数据是对各片段的旋律音的发音进行指示的数据。如图11D所示,1个音符数据由将与该音符数据对应的音符的发音定时作为例如从片段的开头开始的经过时间而进行表示的“时间”数据、表示音符的长度的“长度”数据、表示音符的强度的“强度”数据、以及表示音符的音高的“音高”数据构成。通过这些数据,表现构成片段的各音符。
图1的旋律生成部105从伴奏·和弦进行DB103读入从和弦进行选择部102输出的#0、#1、#2的和弦进行候补指示数据109所对应的3个和弦进行候补之中的1个中由用户指定的和弦进行候补、或者匹配度最高的和弦进行候补所对应的曲构造数据(参照图6)。旋律生成部105按照由该曲构造数据所示的小节的片段的每个片段,一边参照输入动机108和片段集合DB106所登记的片段集合(参照图11)、以及规则DB104(参照图9),一边自动生成该片段的旋律。
在这种情况下,旋律生成部105判断由曲构造数据所示的小节的片段是否是输入有输入动机108的片段,在是输入动机108的片段的情况下,将该输入动机108的旋律保持不变地作为图1的旋律110的一部分进行输出。
旋律生成部105在由曲构造数据所示的小节的片段既不是输入动机108的片段,也不是副歌旋律的开头片段的情况下,在相应的片段的旋律还未生成时,从片段集合DB106提取与输入动机108对应的片段集合,并复制该片段集合内的相应的片段的旋律,如果是已生成的,从该已生成的片段复制旋律。进而,旋律生成部105执行对复制的旋律进行变形的后述的旋律变形处理、以及进一步对构成该变形后的旋律的各音符的音高进行优化的后述的旋律优化处理,自动生成由曲构造数据所示的小节的片段的旋律,并作为旋律110的一部分进行输出。关于从已生成的片段复制旋律的处理的详细内容,在图25的说明中后述。
旋律生成部105在由曲构造数据所示的小节的片段是副歌旋律的开头片段的情况下,在相应的副歌旋律的开头片段不是已生成时,从片段集合DB106提取与输入动机108对应的片段集合,复制该片段集合内的相应的副歌旋律(C旋律)的开头片段的旋律,执行对构成该旋律的各音符的音高进行优化的旋律优化处理,自动生成副歌旋律的开头片段的旋律,并作为旋律110的一部分进行输出。另一方面,在相应的副歌旋律的开头片段是已生成时,从该已生成的片段复制旋律,并作为旋律110的一部分进行输出。
图12是旋律变形处理以及旋律优化处理的动作说明图。在具有预先生成的旋律时,旋律生成部105复制该旋律,例如如1201所示,执行对构成复制的旋律的各音符的音高进行例如向上2半音的音高位移的处理。或者,旋律生成部105例如如1202所示,执行使构成复制的旋律的各音符在小节内左右(再生顺序)反转的处理。旋律生成部105相对执行了这样的旋律变形处理后的小节的旋律,进一步执行1203或者1204所示的旋律优化处理,自动生成最终的旋律。
图13是旋律优化处理的详细动作说明图。当前,在变量iNoteCnt中存入有构成执行旋律变形处理后的小节的旋律的音符的数量,在排列数据note[0]->iPit,note[1]->iPit,note[2]->iPit,···,note[iNoteCnt-2]->iPit,note[iNoteCnt-1]->iPit中设为存入有上述各音符的音高数据。旋律生成部105首先,使各音符的音高数据note[i]->iPit(0≦i≦iNoteCnt-1)分别音高位移被称为ipitd[0]=0、ipitd[1]=1、ipitd[2]=-1、ipitd[3]=2、ipitd[4]=-2的5阶段的值,生成合计5iNoteCnt那样的音高序列。进而,旋律生成部105按照各音高序列的每个音高序列,使用图7~图10通过与上述相同的处理,关于和弦进行选择部102提取的和弦进行数据的上述小节所对应的部分,执行音符类型的取得、相邻音程的计算,执行音符连接性检验处理。该结果是,旋律生成部105对相对合计5iNoteCnt那样的音高序列而算出的匹配度之中、匹配度最高的音高序列进行修正,并作为该小节的各音符的音高数据note[i]->iPit(0≦i≦iNoteCnt-1)。旋律生成部105将包括这样生成的音高序列在内的该小节的各音符的数据note[i](0≦i≦iNoteCnt-1)作为旋律110进行输出。
关于上述的自动作曲装置100的更详细的构成以及动作,在下面进行说明。图14是表示图1的自动作曲装置100的硬件构成例的图。图14所例示的自动作曲装置100的硬件构成具备CPU(中央运算处理装置)1401、ROM(只读存储器)1402、RAM(随机接入存储器)1403、输入部1404、显示部1405、以及音源部1406,并且具有将这些通过***总线1408相互连接的构成。另外,音源部1406的输出被输入向声音***1407。
CPU1401将RAM1403作为工作存储器来使用,并且通过执行ROM1402所存储的自动作曲控制程序,来执行图1的101~107的各功能部分所对应的控制动作。
在ROM1402中除了上述自动作曲控制程序之外,还预先存储有图1的伴奏·和弦进行DB103(参照图5、图6)、规则DB104(参照图9)、片段集合DB106(参照图11)、以及标准音级集合表(参照图7)。
RAM1403临时存储从动机输入部101输入的输入动机108(参照图4)、和弦进行选择部102输出的和弦进行候补数据109、旋律生成部105输出的旋律数据110等。除此之外,在RAM1403中还临时存储有后述的各种变量数据等。
输入部1404与图1的动机输入部101的一部分的功能对应,例如,与键盘输入部101-1、音声输入部101-2、或者音符输入部101-3对应。在输入部1404具备键盘输入部101-1的情况下,该在输入部1404具备演奏键盘、以及检知该演奏键盘的按键状态并经由***总线1408向CPU1401通知的调矩阵电路。在输入部1404具备音声输入部101-2的情况下,该输入部1404具备歌声输入用的麦克风、以及在将从该麦克风输入的声音信号转换成数字信号后,提取歌声的音高信息并经由***总线1408向CPU1401通知的数字信号处理电路。另外,音高信息的提取还可以由CPU1401执行。在输入部1404具备音符输入部101-3的情况下,该输入部1404具备音符输入用的键盘、以及检知该键盘的音符输入状态并经由***总线1408向CPU1401通知的调矩阵电路。CPU1401与图1的动机输入部101的一部分的功能对应,并基于从图14的输入部1404输入的上述各种信息,对输入动机108进行检测并存储到RAM1403。
显示部1405与基于CPU1401的控制动作一起实现图1的输出部107具备的乐谱显示部107-1的功能。CPU1401生成与自动作曲后的旋律数据110对应的乐谱数据,并将该乐谱数据的显示指示给显示部1405。显示部1405是例如液晶显示器装置。
音源部1406与基于CPU1401的控制动作一起实现图1的乐音再生部107-2的功能。CPU1401基于自动生成后的旋律数据110、从伴奏·和弦进行DB103读取的伴奏用MIDI数据,生成用于再生旋律以及伴奏的发音控制数据,并供给到音源部1406。音源部1406基于该发音控制数据,生成旋律音以及伴奏音,并输出到声音***1407。声音***1407将从音源部1406输入的旋律音以及伴奏音的数字乐音数据转换成模拟乐音信号后,将该模拟乐音信号用内置的放大器进行放大并从内置的扬声器播放声音。
图15A以及图15B是表示ROM1402或者RAM1403所存储的各种变量数据、排列变量数据、以及常数数据的列表的图。这些数据在后述的各种处理中使用。
图16是表示本实施方式中的自动作曲处理的例子的流程图。通过自动作曲装置100的电源被接通,并且CPU1401开始执行ROM1402所存储的自动作曲处理程序,来开始该处理。
CPU1401首先相对RAM1403以及音源部1406进行初始化(步骤S1601)。之后,CPU1401反复执行从步骤S1602开始到S1608为止的一系列的处理。
在该反复处理中,CPU1401首先判断用户是否通过按下没有特别图示出的电源开关来指示自动作曲处理的结束(步骤S1602),在没有指示结束时(步骤S1602的判断为NO),继续反复处理,在指示结束时(步骤S1602的判断为YES),结束图16的流程图所例示的自动作曲处理。
在步骤S1602的判断为否的情况下,CPU1401判断用户是否从输入部1404指示了动机输入(步骤S1603)。在用户指示了动机输入的情况下(步骤S1603的判断为是的情况),CPU1401接受来自输入部1404的由用户进行的动机输入,其结果是将从输入部1404输入的输入动机108以例如图4的数据形式存储到RAM1403(步骤S1606)。之后,CPU1401返回到步骤S1602的处理。
在用户没有指示动机输入的情况下(步骤S1603的判断为否的情况),CPU1401判断用户是否通过没有特别图示出的开关来指示了自动作曲(步骤S1604)。在用户指定了自动作曲的情况下(步骤S1604的判断为是的情况),CPU1401执行和弦进行选择处理(步骤S1607),随后执行旋律生成处理(步骤S1608)。步骤S1607的和弦进行选择处理实现图1的和弦进行选择部102的功能。步骤S1608的旋律生成处理实现图1的旋律生成部105的功能。之后,CPU1401返回到步骤S1602的处理。
在用户没有指示自动作曲的情况下(步骤S1604的判断为否的情况),CPU1401判断用户是否通过没有特别图示出的开关来指示自动作曲后的旋律110的再生(步骤S1605)。在用户指示了旋律110的再生的情况下(步骤S1605的判断为是的情况),CPU1401执行再生处理(步骤S1609)。该处理如上述那样作为图1的输出部107内的乐谱显示部107-1以及乐音再生部107-2的动作。
在用户没有指示自动作曲的情况下(步骤S1604的判断为否的情况),CPU1401返回到步骤S1602的处理。
图17是表示图16的步骤S1607的和弦进行选择处理的详细例子的流程图。
首先,CPU1401对RAM1403上的变量数据以及排列变量数据进行初始化(步骤S1701)。
随后,CPU1401将用于控制针对伴奏·和弦进行DB103所存储的多个和弦进行数据的反复处理的RAM1403上的变量n初始化成“0”。之后,CPU1401一边在步骤S1714中使变量n的值每次加1递增,一边在判断为在步骤S1703中变量n的值比ROM1402所存储的常数数据MAX_CHORD_PROG的值小的期间,执行从步骤S1704开始到S1713为止的一系列的处理。常数数据MAX_CHORD_PROG的值是对伴奏·和弦进行DB103所存储和弦进行数据的数量进行表示的常数数据。CPU1401通过按图5所示的伴奏·和弦进行DB103的记录数量,反复执行从步骤S1704开始到S1713为止的一系列的处理,从而针对伴奏·和弦进行DB103所存储的多个和弦进行数据来执行匹配度的算出处理,并且输出分别对与输入动机108的匹配度高的例如高位3个和弦进行数据进行指示的#0、#1、#2的和弦进行候补指示数据109。
在从步骤S1703开始到S1713的反复处理中,步骤SCPU1401首先判断变量n的值是否比常数数据MAX_CHORD_PROG的值小(步骤S1703)。
在步骤S1703的判断为YES时,CPU1401将变量数据n所示的第n号和弦进行数据#n(参照图5A)从伴奏·和弦进行DB103读入到RAM1403内的和弦进行数据区域(步骤S1704)。该和弦进行数据#n的数据形式具有例如图5B、图5C、图5D所示的格式。
随后,CPU1401判断从伴奏·和弦进行DB103读入到RAM1403内的和弦进行数据#n用的排列变量数据要素iChordAttribute[n][0]中的、表示和弦进行数据#n的乐曲风格的值是否与由用户预先通过没有特别图示出的开关而设定且存储于RAM1403内的变量数据iJunleSelect的表示乐曲风格的值相等(步骤S1705)。在步骤S1705的判断为NO时,该和弦进行数据#n不符合用户希望的乐曲风格,因此,不选择,进入到步骤S1714。
在步骤S1705的判断为YES时,CPU1401判断从伴奏·和弦进行DB103读入到RAM1403内的和弦进行数据#n用的排列变量数据要素iChordAttribute[n][1]中的、表示和弦进行数据#n的观念的值是否与由用户预先通过没有特别图示出的开关而设定且存储于RAM1403内的变量数据iConnceptSelect的表示乐曲的观念的值相等(步骤S1706)。在步骤S1706的判断为NO时,该和弦进行数据#n不符合用户希望的乐曲概念,因此,不选择,进入到步骤S1714。
在步骤S1706的判断为YES时,CPU1401执行和弦设计数据生成处理(步骤S1707)。在该处理中,CPU1401执行如下处理:将通过和弦进行数据#n而沿着时间经过被依次指定的和弦进行的信息存入到RAM1403上的排列变量数据即后述的和弦设计数据cdesign[k]中。
随后,CPU1401将初始值“0”存入到RAM1403上的变量数据iKeyShift(步骤S1708)。该变量数据iKeyShift是在1个八度音程的半音阶中,在从初始值“0”开始到比ROM1402所存储的常数数据PITCH_CLASS_N小1的数为止的范围中,指定半音单位相对于和弦进行数据#n的调位移值。常数数据PITCH_CLASS_N的值通常是1个八度音程内的半音数12。
随后,CPU1401判断变量数据iKeyShift的值是否比常数数据PITCH_CLASS_N的值小(步骤S1709)。
在步骤S1709的判断为YES时,使和弦进行数据#n的调位移了变量数据iKeyShift表示的调位移值后,执行针对输入动机108和和弦进行#n的匹配度检验处理(步骤S1710)。通过该处理,在RAM1403上的变量数据doValue得出和弦进行#n相对输入动机108的匹配度。
随后,CPU1401判断变量数据doValue的值是否比RAM1403上的变量数据doMaxValue大(步骤S1711)。变量数据doMaxValue是在当前时间点存入有最高的匹配度的值的变量,在步骤S1701中被初始化为值“0”。
在步骤S1711的判断为YES时,CPU1401用变量数据doValue的值置换变量数据doMaxValue的值。另外,CPU1401在RAM1403内的排列变量数据iBestKeyShift[iBestUpdate]中存入有变量数据iKeyShift的当前值。另外,CPU1401在RAM1403内的排列变量数据iBestChordProg[iBestUpdate]中存入有对伴奏·和弦进行DB103上的和弦进行数据进行指示的变量数据n的当前值。之后,CPU1401使RAM1403内的变量数据iBestUpdate加1递增(以上,步骤S1712)。变量数据iBestUpdate表示是在步骤S1701中被初始化成值“0”后,按照每次在当前时间点找到匹配度最高的和弦进行数据而被加1递增的数据,是该值越大越高位的匹配度。排列变量数据iBestKeyShift[iBestUpdate]保持变量数据iBestUpdate所示的顺位中的调位移值。排列变量数据iBestChordProg[iBestUpdate]保持变量数据iBestUpdate所示的顺位中的伴奏·和弦进行DB103上的和弦进行的号码。
在步骤S1711的判断为NO时,CPU1401跳过上述步骤S1712的处理,不选择这次的和弦进行数据#n作为针对输入动机108的自动作曲用的和弦进行数据。
之后,CPU1401使变量数据iKeyShift的值加1递增(步骤S1713)。之后,CPU1401返回到步骤S1709的处理。
CPU1401在使变量数据iKeyShift的值加1递增并且反复执行从步骤S1709开始到S1713为止的处理后,在1个八度音程量的调位移值的指定结束且步骤S1709的判断为NO时,在步骤S1714进行处理。在步骤S1714中,CPU1401使伴奏·和弦进行DB103上的和弦进行数据的选择用的变量数据n加1递增。之后,CPU1401返回到步骤S1703的处理。
CPU1401在使变量数据n的值加1递增并且反复执行从步骤S1703开始到S1714为止的一系列的处理后,在结束与伴奏·和弦进行DB103内的所有的和弦进行数据相对的处理且步骤S1703的判断为NO时,结束图17的流程图的处理即图16的步骤S1607的和弦进行选择处理。该结果是,在将比变量数据iBestUpdate的当前值小1的值“iBestUpdate-1”作为要素号的排列变量数据iBestKeyShift[iBestUpdate-1]以及iBestChordProg[iBestUpdate-1]中,存入有相对于输入动机108匹配度最高的调位移值和和弦进行数据的号码。另外,在排列变量数据iBestKeyShift[iBestUpdate-2]以及iBestChordProg[iBestUpdate-2]中,存入有相对于输入动机108的匹配度第2高的调位移值和和弦进行数据的号码。进一步地,在排列变量数据iBestKeyShift[iBestUpdate-3]以及iBestChordProg[iBestUpdate-3]中,存入有相对于输入动机108的匹配度第3高的调位移值和和弦进行数据的号码。这些数据集合从高位开始按顺序与图1的#0、#1以及#2的和弦进行候补指示数据109对应。
图18是表示图17的步骤S1707的和弦设计数据生成处理的详细例的流程图。
首先,CPU1401将表示和弦进行信息的号码的变量数据iCDesignCnt设定成初始值“0”(步骤S1801)。
随后,CPU1401将在图17的步骤S1704中从伴奏·和弦进行DB103以例如图5B、图5C、图5D的数据形式被读入到RAM1403的向和弦进行数据#n的最开始的衍生事件(与图5B的和弦数据#0对应)的指针存入到RAM1403内的指针变量数据mt(步骤S1802)。
随后,CPU1401在步骤S1811中向指针变量数据mt依次存入向下一次衍生事件(图5B的和弦数据#1,#2,……)的指针,并且到在步骤S1803中判断为到达结尾(图5B的“结尾”)为止,相对和弦进行数据#n的各和弦数据(参照图5B)反复执行从步骤S1803开始到S1811的一系列的处理。
在上述反复处理中,CPU1401首先判断指针变量数据mt是否指结尾(步骤S1803)。
在步骤S1803的判断为NO时,CPU1401尝试提取指针变量数据mt所指的和弦数据(图5B)中的和弦根音(根音)和和弦类型(参照图5D)并且存入到RAM1403内的变量数据root和type(步骤S1804)。进而,CPU1401判断在步骤S1804中的存入处理是否成功(步骤S1805)。
在步骤S1804中的存入处理成功的情况下(步骤S1805的判断为是的情况),CPU1401将指针变量数据mt所指的存储区的时间信息mt->iTime(图5D的“时间”数据)存入到将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的时间项目cdesign[iCDesignCnt]->iTime。另外,CPU1401将在步骤S1804被存入到变量数据root的和弦根音信息存入到将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的和弦根音项目cdesign[iCDesignCnt]->iRoot。另外,CPU1401将在步骤S1804中被存入到变量数据type的和弦类型信息存入到将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的和弦类型项目cdesign[iCDesignCnt]->iType。进一步地,在将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的调项目cdesign[iCDesignCnt]->iKey和音阶项目cdesign[iCDesignCnt]->iScale中存入无效值“-1”(以上,步骤S1806)。之后,CPU1401移动到步骤S1810的处理,使变量数据iCDesignCnt的值加1递增。
在步骤S1804中的存入处理没有成功的情况下(步骤S1805的判断为否的情况),CPU1401尝试提取指针变量数据mt所指的和弦数据(图5B)中的音阶和调(参照图5C)并且存入到RAM1403内的变量数据scale和key(步骤S1807)。进而,CPU1401判断步骤S1807中的存入处理是否成功(步骤S1808)。
在步骤S1807中的存入处理成功的情况下(步骤S1808的判断为是的情况),CPU1401将指针变量数据mt所指的存储区的时间信息mt->iTime(图5C的“时间”数据)存入到将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的时间项目cdesign[iCDesignCnt]->iTime。另外,CPU1401将在步骤S1807中被存入到变量数据key的调信息存入到将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的调项目cdesign[iCDesignCnt]->iKey。另外,CPU1401将在步骤S1807中被存入到变量数据scale的音阶信息存入到将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的音阶项目cdesign[iCDesignCnt]->iScale。进一步地,在将变量数据iCDesignCnt的当前值作为要素号的和弦设计数据的和弦根音项目cdesign[iCDesignCnt]->iRoot和和弦类型项目cdesign[iCDesignCnt]->iType中存入无效值“-1”(以上,步骤S1809)。之后,CPU1401移动到步骤S1810的处理,并使变量数据iCDesignCnt的值加1递增。
CPU1401在步骤S1810中的变量数据iCDesignCnt的值的加1递增处理之后,或者在步骤S1807中的存入处理没有成功的情况下(步骤S1808的判断为否的情况),向指针变量数据mt存入向下一次衍生事件(图5B的和弦数据#1,#2,……)的指针(步骤S1811),返回到步骤S1803的判断处理。
从上述步骤S1803开始到S1811为止的反复处理的结果是,CPU1401在到结尾(参照图5B)为止读入相对于当前的和弦进行数据#n的和弦数据时,步骤S1803的判断成为YES,结束图18的流程图所例示的处理即图17的步骤S1707的和弦设计数据生成处理。在该时间点,在变量数据iCDesignCnt中得到构成当前的和弦进行数据#n的和弦信息的数量,得到从和弦设计数据cdesign[0]开始到cdesign[iCDesignCnt-1]各自的和弦信息。
图19是表示相对图17的步骤S1710的输入动机108和和弦进行#n的匹配度检验处理的详细例的流程图。
首先,CPU1401在表示匹配度的变量数据doValue中设置初始值“0”(步骤S1901)。
随后,CPU1401参照从伴奏·和弦进行DB103在步骤S1704中读入的与和弦进行数据#n对应的曲构造数据#n(参照图5A),读入与在输入动机108的输入时由用户指定的片段类别相同的片段类别被指定成“PartName[M]”项目(参照图6)的开头的小节的记录所存入的小节开始时间数据iPartTime[M],并存入到RAM1403内的变量数据sTime(步骤S1902)。
随后,CPU1401将变量数据iNoteCnt的值设定成初始值“0”,该变量数据iNoteCnt指构成输入动机108的音符的顺序(步骤S1903)。
随后,CPU1401将在图16的步骤S1606中以图4的数据形式输入到RAM1403的向输入动机108的最开始的音符数据(与图4A的音符数据#0对应)的指针存入到RAM1403内的指针变量数据me(步骤S1904)。
随后,CPU1401在步骤S1909中向指针变量数据me依次存入向输入动机108的下一个音符(图4A的音符数据#1,#2,……)的指针,并且到在步骤S1905中判断为到达了结尾(图4B的“结尾”)为止,相对输入动机108的各音符数据(参照图4A)反复执行从步骤S1905开始到S1909的一系列的处理。
在上述反复处理中,CPU1401首先判断指针变量数据me是否指结尾(步骤S1905)。
在步骤S1905的判断为NO时,CPU1401参照指针变量数据me所指的音符数据(图4B)中的“时间”数据即me->iTime,并将其与在步骤S1902得到的输入动机108的相应小节的小节开始时间sTime进行加法,将该结果新写入me->iTime(步骤S1906)。构成输入动机108的各音符数据中的“时间”数据是由2小节构成的从输入动机108的开头开始的时间,因此,为了将其转换成从乐曲的开头开始的时间,与在步骤S1902中根据曲构造数据而得到的输入动机108的相应小节的小节开始时间sTime进行加法。
随后,CPU1401将指针变量数据me的值存入到将变量数据iNoteCnt的当前值作为要素值的排列变量数据即音符指针排列数据note[iNoteCnt]中(步骤S1907)。
之后,CPU1401使变量数据iNoteCnt的值加1递增(步骤S1908)。进而,CPU1401向指针变量数据me存入向输入动机108中的下一个音符数据(图4A的音符数据#1,#2,……)的指针(步骤S1909),并返回到步骤S1905的判断处理。
从上述步骤S1905开始到S1909为止的反复处理的结果是,CPU1401在到结尾(参照图4A)为止读入输入动机108中的音符数据时,步骤S1905的判断成为YES,并进入到步骤S1910的检验处理。在该检验处理中,执行和弦进行#n相对输入动机108的匹配度的算出处理,该结果是,在变量数据doValue得到匹配度。之后,结束图19的流程图所例示的处理即图17的步骤S1710的输入动机108和和弦进行#n的匹配度检验处理。在该时间点,在变量数据iNoteCnt得到构成输入动机108的音符的数量(与图3A的音符的数量对应),在音符指针排列变量数据note[0]~note[iNoteCnt-1]得到向各自的音符数据的指针。
图20是表示图19的步骤S1910的检验处理的详细例的流程图。
首先,CPU1401将初始值“0”存入到对输入动机108的音符数量进行计数的RAM1403内的变量i中(步骤S2001)。之后,CPU1401在步骤S2008中使变量i的值每次加1递增,并且在步骤S2002中判断为变量i的值比在图19的处理中最终得到的对输入动机108的音符数量进行表示的变量数据iNoteCnt的值小的期间,执行从步骤S2002开始到S2008为止的一系列的处理。
在从步骤S2002开始到S2008的反复处理中,步骤SCPU1401首先判断变量i的值是否比变量数据iNoteCnt的值小(步骤S2002)。
在步骤S2002的判断为YES时,CPU1401根据由变量数据i指示的第i个处理对象音符所对应的音符指针排列变量数据note[i],读取音高项目值note[i]->iPit(指图4B的“音高”项目值),并将其存入到将变量数据i的值作为要素值的RAM1403内的音高信息序列排列变量数据ipit[i](步骤S2003)。
随后,CPU1401执行输入动机108的当前的处理对象音符的定时所对应的和弦信息的取得处理(步骤S2004)。在该处理中,在输入动机108的当前的处理对象音符的发音定时应被指定的和弦的和弦根音、和弦类型、音阶、以及调在变量数据root、type、scale、以及key得到。
接着,CPU1401执行音符类型的取得处理(步骤S2005)。在该处理中,在图8的说明中上述的、RAM1403内的音符类型和相邻音程的排列变量数据incon[i×2](第偶数个的要素)中,得到输入动机108的当前的第i个处理对象音符的、与音高ipit[i]的当前的评价对象的和弦进行数据#n相对的音符类型。
进一步地,CPU1401判断变量i的值是否比0大,即判断处理对象音符是否是开头以外的音符(步骤S2006)。
进而,在步骤S2006的判断为YES时,CPU1401通过从由变量数据i指示的与第i个处理对象音符对应的音高信息ipit[i]减去与第i-1个处理对象音符对应的音高信息ipit[i-1],从而在音符类型和相邻音程的排列变量数据incon[i×2-1](第奇数个的要素)中得到图8的说明中上述的相邻音程(步骤S2007)。
在步骤S2006的判断为NO时(开头的音符时),CPU1401跳过步骤S2007的处理。
之后,CPU1401使变量i的值加1递增(步骤S2008),移动到输入动机108中的下一个音符的处理,并返回到步骤S2002的判断处理。
CPU1401在使变量数据i的值加1递增并且反复执行从步骤S2002开始到S2008为止的一系列的处理后,结束与构成输入动机108的所有的音符数据相对的处理,并且在步骤S2002的判断变为NO时,进入到步骤S2009的音符连接性检验处理。在该时间点,在排列变量数据incon[i×2](0≦i≦iNoteCnt-1)以及incon[i×2-1](1≦i≦iNoteCnt-1)中,得到图8的说明等中上述的音符类型和相邻音程的集合。进而,CPU1401基于该数据,通过步骤S2009的音符连接性检验处理,在变量数据doValue中得到评价对象的和弦进行数据#n相对于输入动机108的匹配度。之后,CPU1401结束图20的流程图所例示的处理即图19的步骤S1910的检验处理。
图21是表示与图20的步骤S2004的输入动机108的当前的音符的定时n对应的和弦信息的取得处理的详细例的流程图。
首先,CPU1401将初始值“0”存入到对和弦设计数据的信息数进行计数的RAM1403内的变量k中(步骤S2101)。之后,CPU1401在步骤S2107中使变量k的值每次加1递增,并且在步骤S2102中判断为变量k的值比在图18的处理中最终得到的表示构成当前的评价对象的和弦进行数据#n的和弦信息的数量的变量数据iCDesignCnt的值小的期间,执行从步骤S2102开始到S2107的一系列的处理。
在从步骤S2102开始到S2107的反复处理中,步骤SCPU1401首先判断变量k的值是否比变量数据iCDesignCnt的值小(步骤S2102)。
在步骤S2102的判断为YES时,CPU1401判断当前的处理对象的音符的音符指针排列数据所指的时间项目值note[i]->iTime是否比由变量数据k指示的第k个和弦设计数据的时间项目cdesign[k]->iTime的值大,并比第k+1个和弦设计数据的时间项目cdesign[k+1]->iTime的值小,并且,第k个和弦设计数据的调项目cdesign[k]->iKey和音阶项目cdesign[k]->iScale的各值是否被设定成0以上且有意义的值(参照图18的步骤S1806、S1808)(步骤S2103)。
在步骤S2103的判断为YES时,能够判断为在输入动机108的当前的处理对象的音符note[i]的发音定时中,指定有基于第k个和弦设计数据cdesign[k]的和弦信息。因此,CPU1401分别将第k个和弦设计数据的调项目cdesign[k]->iKey和音阶项目cdesign[k]->iScale的各值存入到变量数据key和scale(步骤S2104)。
在步骤S2103的判断为NO时,CPU1401跳过步骤S2104的处理。
接着,CPU1401判断当前的处理对象的音符的音符指针排列数据所指的时间项目值note[i]->iTime是否比由变量数据k指示的第k个和弦设计数据的时间项目cdesign[k]->iTime的值大,并比第k+1个和弦设计数据的时间项目cdesign[k+1]->iTime的值小,并且,第k个和弦设计数据的和弦根音项目cdesign[k]->iRoot和和弦类型项目cdesign[k]->iType的各值是否被设定成0以上且有意义的值(参照图18的步骤S1806、S1808)(步骤S2105)。
在步骤S2105的判断为YES时,能够判断为在输入动机108的当前的处理对象的音符note[i]的发音定时中,指定有基于第k个和弦设计数据cdesign[k]的和弦信息。因此,CPU1401分别将第k个和弦设计数据的和弦根音项目cdesign[k]->iRoot和和弦类型项目cdesign[k]->iType的各值存入到变量数据root和type中(步骤S2106)。
在步骤S2105的判断为NO时,CPU1401跳过步骤S2106的处理。
以上的处理之后,CPU1401使变量k的值加1递增(步骤S2107),移动到下一个和弦设计数据cdesign[k]的处理,并返回到步骤S2102的判断处理。
CPU1401在使变量数据k的值加1递增并且反复执行从步骤S2102开始到S2107为止的一系列的处理后,结束针对所有的和弦设计数据的处理,并在步骤S2102的判断变为NO时,结束图21的流程图所例示的处理即图20的步骤S2004的处理。该结果是,在变量数据root和type以及变量数据scale和key中,得到输入动机108的当前的处理对象音符的发音定时所对应的和弦信息。
图22是表示图20的步骤S2005的音符类型取得处理的详细例的流程图。该处理是,如使用图7并进行上述说明那样,按照在图20的步骤S2003中设定的输入动机108的当前的音符notes[i]所对应的音高ipit[i]、以及构成在图20的步骤S2004中算出的输入动机108的当前的音符notes[i]的发音定时所对应的和弦进行的调key、音阶scale、和弦根音root、以及和弦类型type,取得输入动机108的当前的音符notes[i]的音符类型的处理。
首先,CPU1401根据ROM1402所存储的标准音级集合表中的具有图7A所例示的数据构成的和弦音表,取得在图20的步骤S2004中算出的和弦类型type所对应的和弦音音级集合,并存入到RAM1403上的变量数据pcs1(步骤S2201)。下面,将该变量数据pcs1的值称为和弦音音级集合pcs1。
随后,CPU1401根据ROM1402所存储的标准音级集合表中的具有图7B所例示的数据构成的和弦扩展音符表,取得上述和弦类型type所对应的和弦扩展音符音级集合,并存入到RAM1403上的变量数据pcs2(步骤S2202)。下面,将该变量数据pcs2的值称为和弦扩展音符音级集合pcs2。
随后,CPU1401根据ROM1402所存储的标准音级集合表中的具有图7C所例示的数据构成的音阶音符表,取得在图20的步骤S2004中得到的音阶scale所对应的音阶音符音级集合,并存入到RAM1403上的变量数据cs3(步骤S2203)。下面,将该变量数据pcs3的值称为音阶音符音级集合pcs3。
接着,CPU1401利用随后的算式算出将针对输入动机108的当前的处理对象的音符notes[i]而在图20的步骤S2003中得到的音高ipit[i]映射到将和弦根音root作为第0音的音阶构成音时的从第0音开始到第11音为止的1个八度音程量的音阶构成音的某一个时的、与音高ipit[i]的和弦根音root相对的音程,并存入到RAM1403上的变量数据pc1(步骤S2204)。下面,将变量数据pc1的值称为输入动机音级pc1。
pc1=(ipit[i]-root+12)mod12···(1)
另外,“mod12”是其左侧的括弧所对应的“值”除以12而得的余数。
相同地,CPU1401利用随后的算式算出将针对输入动机108的当前的音符notes[i]而在图20的步骤S2004中得到的音高ipit[i]映射到将调key作为第0音的音阶构成音时的从第0音开始到第11音为止的1个八度音程量的音阶构成音的某一个时的、与音高ipit[i]的调key相对的音程,并存入到RAM1403上的变量数据pc2(步骤S2205)。下面,将变量数据pc2的值称为输入动机音级pc2。
pc2=(ipit[i]-key+12)mod12···(2)
随后,CPU1401判断输入动机音级pc1是否包含于和弦音音级集合pcs1(步骤S2206)。该判断运算处理是作为取得2的pc1次方=2pc1与pcs1(图7A参照)的每比特的逻辑乘积并比较其是否与2pc1相等的运算处理而被实现。
CPU1401在步骤S2206的判断为YES时,将音符类型决定成和弦音,并且从ROM1402读取表示和弦音的常数数据ci_ChordTone的值并存入到音符类型和相邻音程的排列的音符类型要素的位置incon[i×2]中(步骤S2207)。之后,CPU1401结束图22的流程图所例示的处理即图20的步骤S2005的音符类型取得处理。
CPU1401在步骤S2206的判断为NO时,判断输入动机音级pc1是否包含于和弦扩展音符音级集合pcs2,且输入动机音级pc2是否包含于音阶音符音级集合pcs3(步骤S2208)。该判断运算处理是作为取得2的pc1次方=2pc1与pcs2(图7B参照)的每比特的逻辑乘积并比较其是否与2pc1相等,并且取得2的pc2次方=2pc2与pcs3(图7C参照)的每比特的逻辑乘积并比较其是否与2pc2相等的运算处理而被实现。
CPU1401在步骤S2208的判断为YES时,将音符类型决定成可用的音符,并且从ROM1402读取表示可用的音符的常数数据ci_AvailableNote的值并存入到音符类型与相邻音程的排列的音符类型要素的位置incon[i×2]中(步骤S2209)。之后,CPU1401结束图22的流程图所例示的处理即图20的步骤S2005的音符类型取得处理。
CPU1401在步骤S2208的判断为NO时,判断输入动机音级pc2是否包含于音阶音符音级集合pcs3(步骤S2210)。该判断运算处理作为取得2的pc2次方=2pc2与pcs3(图7C)参照)的每比特的逻辑乘积并比较其是否与2pc2相等的运算处理而被实现。
CPU1401在步骤S2210的判断为YES时,将音符类型决定成音阶音符,从ROM1402读取表示音阶音符的常数数据ci_ScaleNote的值并存入到音符类型与相邻音程的排列的音符类型要素的位置incon[i×2]中(步骤S2211)。之后,CPU1401结束图22的流程图所例示的处理即图20的步骤S2005的音符类型取得处理。
CPU1401在步骤S2210的判断为NO时,判断输入动机音级pc1是否包含于和弦扩展音符音级集合pcs2(步骤S2212)。该判断运算处理作为取得2的pc1次方=2pc1与pcs2(图7B参照)的每比特的逻辑乘积并比较其是否与2pc1相等的运算处理而被实现。
CPU1401在步骤S2212的判断为YES时,将音符类型决定成和弦扩展音符,从ROM1402读取表示和弦扩展音符的常数数据ci_TensionNote的值并存入到音符类型与相邻音程的排列的音符类型要素的位置incon[i×2]中(步骤S2213)。之后,CPU1401结束图22的流程图所例示的处理即图20的步骤S2005的音符类型取得处理。
最后,CPU1401在步骤S2212的判断也为NO时,将音符类型决定成避免音符,从ROM1402读取表示避免音符的常数数据ci_AvoidNote的值并存入到音符类型与相邻音程的排列的音符类型要素的位置incon[i×2]中(步骤S2214)。之后,CPU1401结束图22的流程图所例示的处理即图20的步骤S2005的音符类型取得处理。
通过以上说明的图22的流程图所例示的图20的步骤S2005的音符类型取得处理,在音符类型与相邻音程的排列的音符类型要素的位置incon[i×2](图7B参照)中取得输入动机108的当前的音符notes[i]的音符类型。
图23是表示图20的音符连接性检验处理的详细例的流程图。该处理使用图10实现上述的处理。
首先,CPU1401将初始值“0”存入到RAM1403内的变量数据iTotalValue(步骤S2301)。该数据保持用于算出关于当前的评价对象的和弦进行数据#n(参照图17的步骤S1704)的与输入动机108相对的匹配度的总评价点。
随后,CPU1401在关于变量数据i,在步骤S2302中存入初始值“0”后,在步骤S2321中每次加1递增,并且在步骤S2303的判断为YES,即在判断为变量数据i的值是比从变量数据iNoteCnt的值减去2后的值小的值的期间,反复执行从步骤S2303开始到S2321为止的一系列的处理。该反复处理与图10B的输入动机108中的每个音符的从i=0开始到7为止的反复处理对应。
在按照输入动机108中的每个第i个音符所执行的从步骤S2304开始到S2320为止的一系列的处理中,CPU1401首先将初始值“0”存入到RAM1403内的变量数据iValue中(步骤S2304)。接着,CPU1401在关于变量数据j,在步骤S2306中存入初始值“0”后,在步骤S2318中每次加1递增,并且在步骤S2307的判断为YES,即在变量数据j的值到达结尾值为止的期间,反复执行从步骤S2307开始到S2319为止的一系列的处理。该反复处理按照每个第i个音符,与由变量数据j的值所决定的图9的检验各音符连接规则的反复处理对应。
在按照输入动机108中的每个第i个音符,检测第j号的音符连接规则的步骤S2308开始到S2316为止的一系列的处理中,CPU1401在关于RAM1403内的变量数据k,在步骤S2308中存入初始值“0”后,在步骤S2315中每次加1递增,并且反复执行从步骤S2309开始到步骤S2315为止的一系列的处理。通过该反复处理,判断出输入动机108中的第i个音符开始4个连续的音符所对应的4个音符类型incon[i×2]、incon[i×2+2]、incon[i×2+4]、incon[i×2+6]的各自与图9所例示的第j号的音符连接规则内的4个音符类型ci_NoteConnect[j][0]、ci_NoteConnect[j][2]、ci_NoteConnect[j][4]、ci_NoteConnect[j][6]的各自有无一致。另外,判断出输入动机108内的第i个音符开始4个连续的音符间的3个相邻音程incon[i×2+1]、incon[i×2+3]、incon[i×2+5]的各自与图9所例示的第j号的音符连接规则内的3个相邻音程ci_NoteConnect[j][1]、ci_NoteConnect[j][3]、ci_NoteConnect[j][5]的各自有无一致。
在作为将输入动机108中的第i个音符开始4个连续的音符与图9的第j号的音符连接规则进行比较的处理,变量数据k的值从0开始加1递增到3为止而反复执行4次从步骤S2309开始到步骤S2315为止的一系列的处理过程中,在步骤S2310、S2312、或者S2314的任意1个中条件成立时,当前的第j号的音符连接规则相对于输入动机108不匹配,移动到步骤S2319,变量数据j的值加1递增且处理移动到随后的音符连接规则的匹配评价。
具体地讲,在步骤S2310中,CPU1401判断输入动机108的第i+k个音符的音符类型incon[i×2+k×2]与第j号的音符连接规则的第k个音符类型ci_NoteConnect[j][k×2]是否不一致。在步骤S2310的判断为YES时,由于该音符连接规则的至少1个音符类型与输入动机108内的当前的处理对象(第i个)的音符开始4个音符的音符类型的至少1个不一致,因此,CPU1401移动到步骤S2319。
在步骤S2310的判断为NO时,执行步骤S2311以及步骤S2312,关于这些在后叙述。在步骤S2311以及S2312的判断都为NO后,CPU1401在变量数据k的值小于3的情况下,步骤S2313的判断为YES,在步骤S2314中执行与相邻音程有关的判断处理。进行步骤S2313的判断是因为,关于k=3的输入动机108的第4音符,在其以后不存在相邻音程,因此,变量数据k的值只是在从0开始到2为止的范围,执行相邻音程的判断处理。在步骤S2314中,CPU1401判断输入动机108的第i+k个音符与第i+k+1个音符之间的相邻音程incon[i×2+k×2+1]同第j号的音符连接规则的第k个音符类型与第k+1个音符类型之间的相邻音程ci_NoteConnect[j][k×2+1]是否不一致,并且,ci_NoteConnect[j][k×2+1]的值是否与“99”不一致。相邻音程的值“99”表示该相邻音程可以是任意的值。在步骤S2314的判断为YES时,由于该音符连接规则的至少1个相邻音程与输入动机108内的当前的处理对象(第i个)的音符开始的4个音符的相邻音符间的相邻音程的至少1个一致,因此,CPU1401移动到步骤S2319。
在上述一系列的处理中,在步骤S2310中,对输入动机108的第i+k个音符的音符类型incon[i×2+k×2]与第j号的音符连接规则的第k个音符类型ci_NoteConnect[j][k×2]的一致进行检测并且在步骤S2310的判断为NO后,CPU1401判断第j号的音符连接规则的第k个随后的第k+1个音符类型ci_NoteConnect[j][k×2+2]是否是ci_NullNoteType(步骤S2311)。
设定ci_NullNoteType是针对图9的从j=0开始到8为止的音符连接规则中的k=3的情况的ci_NoteConnect[j][6]的。所以,步骤S2311的判断为是的情况是,变量数据j的值的范围在从0开始到8为止的期间,变量数据k的值关于0、1、2这3音,音符类型以及相邻音程一致且k=2的情况。如上述那样,j=0~8的范围的音符连接规则是3音的规则,因此,第4音为ci_NullNoteType,无需进行评价。所以,在步骤S2311的判断为是的情况下,此时的音符连接规则与输入动机108内的从第i个音符开始的3个音符匹配。因此,在步骤S2311的判断为YES时,CPU1401移动到步骤S2316,将该音符连接规则的评价点ci_NoteConnect[j][7](参照图9)累算到变量数据iValue。
另一方面,步骤S2311的判断为否的情况下,经过步骤S2312以及S2313而进入步骤S2314的相邻音程的评价处理。在此,CPU1401在步骤S2311的判断为NO之后的步骤S2312中,判断变量数据i的值是否与从表示输入动机108的音符数量的变量数据iNoteCnt的值减去3而得的值相等,并且变量数据k的值是否等于2。在这种情况下,成为处理对象的输入动机108的音符变成第i+k个,即第iNoteCnt-3+2=iNoteCnt-1个,也就是说,变成输入动机108中的最后的音符。在这种状态下,在步骤S2311中,ci_NoteConnect[j][k×2+2]=ci_NoteConnect[j][6]的值没有变成ci_NullNoteType的情况是对图9的j的值为9以上的音符连接规则进行处理的情况。也就是说,音符连接规则是关于4音的规则。另一方面,这种情况下的输入动机108中的处理对象的音符是从i=iNoteCnt-3开始到最终音符的i=iNoteCnt-1为止的3音。所以,在这种情况下,输入动机108中的处理对象的音符的数量与音符连接规则中的音的数量不一致,该音符连接规则与输入动机108不匹配。所以,步骤S2312的判断为是的情况下,CPU1401不进行与该音符连接规则相关的匹配评价,移动到步骤S2319。
在上述的步骤S2310、S2311、S2312、以及S2314的任意的条件也不成立,反复4次从步骤S2309开始到S2315为止的一系列的处理且步骤S2309的判断为NO时,关于输入动机108中的第i个音符开始4个连续的音符,音符类型和相邻音程与所有当前的第j号的音符连接规则的音符类型以及相邻音程匹配。在这种情况下,CPU1401移动到步骤S2316,将当前的第j号的音符连接规则的评价点ci_NoteConnect[j][7](参照图9)累算到变量数据iValue。
另外,不限于只有1个音符连接规则与输入动机108匹配,还具有例如与3音的音符连接规则匹配并且还与4音的音符连接规则匹配的情况。因此,CPU1401到在步骤S2319中变量数据j的值加1递增且在步骤S2307中与所有的音符连接规则有关的评价完成为止,每当步骤S2309的判断为NO或者步骤S2311的判断为YES而音符连接规则匹配时,在步骤S2316中,将新匹配的音符连接规则的评价点ci_NoteConnect[j][7]累算到变量数据iValue。
之后,CPU1401使变量数据j的值加1递增且移动到随后的音符连接规则的评价(步骤S2319),返回到步骤S2307的判断处理。
CPU1401在与所有的音符连接规则相对的评价完成且步骤S2307的判断为YES时,将累算到变量数据iValue的评价点累算到与当前的和弦进行数据#n对应的变量数据iTotalValue(步骤S2320)。
之后,CPU1401使变量i的值加1递增(步骤S2321),返回到步骤S2303的判断处理,将处理移动到输入动机108中的下一个音符(参照图10B)。
CPU1401在关于输入动机108中的所有的音符,结束所有的音符连接规则的匹配评价的处理时,步骤S2303的判断成为NO。在此,输入动机108中的处理对象的音符的结束位置是本来包括输入动机108中的最终音符在内的4音近前的音符,与其对应的变量数据i的值是“(iNoteCnt-1)-3=iNoteCnt-4”。但是,图10B的作为i=7所例示那样,最后的处理以3音进行,因此,与结束位置对应的变量数据i的值成为“iNoteCnt-3”。因此,步骤S2303的结束判断成为“i<iNoteCnt-2”变成NO的情况。
在步骤S2303的判断为NO时,CPU1401将变量数据iTotalValue的值除以输入动机108中的处理了的音符数量(iNoteCnt-2)并进行标准化,并且将该除法结果作为和弦进行#n相对输入动机108的匹配度,存入到变量数据doValue中(步骤S2322)。之后,CPU1401结束图23的流程图即图20的步骤S2009的音符连接性检验处理。
图24是表示在图16的自动作曲处理中,步骤S1607的和弦进行选择处理的随后执行的步骤S1608的旋律生成处理的详细例的流程图。
首先,CPU1401对RAM1403的变量区域进行初始化(步骤S2401)。
随后,CPU1401从伴奏·和弦进行DB103读取由图16的步骤S1607的和弦进行选择处理所选择的例如由用户指示的和弦进行候补所对应的曲构造数据(参照图6)(步骤S2402)。
之后,CPU1401在将变量数据i的值设定成初始值“0”后(步骤S2403),在步骤S2409中使i的值加1递增,并且到在步骤S2404中判断为到达了曲构造数据的结尾为止,按照由变量数据i指示的曲构造数据上的小节的片段的每个片段,一边参照输入动机108、ROM1402所存储的片段集合DB106所登记的片段集合(参照图11)、以及ROM1402所存储的规则DB104(参照图9),一边自动生成该片段的旋律。变量数据i通过该值在步骤S2409中从0开始每次加1递增,由此依次指定图6所例示的曲构造数据的“Measure”项目的值,并指定曲构造数据上的各记录。
具体地讲,首先,CPU1401判断是否到达了曲构造数据的结尾(步骤S2404)。
在步骤S2404的判断为NO时,CPU1401判断由变量数据i指定的曲构造数据的当前的小节是否与输入有输入动机108的小节一致(步骤S2405)。
在步骤S2405的判断为YES时,CPU1401将该输入动机108保持不变地作为旋律110(参照图1)的一部分,并输出到例如RAM1403上的输出旋律区域。
在步骤S2405的判断为NO时,CPU1401判断当前的小节是否是副歌旋律的开头小节(步骤S2406)。
在步骤S2406的判断为NO时,CPU1401执行旋律生成1处理(步骤S2407)。
另一方面,在步骤S2406的判断为YES时,CPU1401执行旋律生成2处理(步骤S2408)。
在步骤S2407或者S2408的处理之后,CPU1401使变量数据i加1递增(步骤S2409)。之后,CPU1401返回到步骤S2404的判断处理。
图25是表示图24的步骤S2407的旋律生成1处理的详细例的流程图。
CPU1401判断包含有当前的小节的片段的类别是否与输入动机108的片段的类别相同(步骤S2501)。包含有当前的小节的片段的类别能够通过在图6所例示的曲构造数据中,参照具有与变量数据i的值对应的“Measure”项目的记录中的“PartName[M]”项目或者“iPartID[M]”项目进行判断。输入动机108的片段的类别在用户输入输入动机108时进行指定。
在步骤S2501的判断为YES时,CPU1401将输入动机108的旋律作为当前的小节的旋律,并复制到RAM1403的规定区域。之后,CPU1401移动到步骤S2507的旋律变形处理。
在步骤S2501的判断为NO时,CPU1401判断针对包含有当前的小节的片段的类别,旋律是否已生成,并且小节的偶数/奇数是否一致(步骤S2503)。
在步骤S2503的判断为YES时,CPU1401将已生成的旋律作为当前的小节的旋律,并复制到RAM1403的规定区域(步骤S2504)。之后,CPU1401移动到步骤S2507的旋律变形处理。
在相应的片段的旋律尚未生成时(步骤S2503的判断为NO),CPU1401执行片段集合DB检索处理(步骤S2505)。在片段集合DB检索处理中,CPU1401从片段集合DB106提取与输入动机108对应的片段集合。
CPU1401将在步骤S2505中检索出的片段集合中的、与包含有当前的小节的片段的类别相同类别的片段的旋律复制到RAM1403的规定区域(步骤S2506)。之后,CPU1401移动到步骤S2507的旋律变形处理。
在步骤S2502、S2504、或者S2506的处理之后,CPU1401执行对复制的旋律进行变形的旋律变形处理(步骤S2507)。
进一步地,CPU1401执行对构成在步骤S2507中变形了的旋律的各音符的音高进行优化的旋律优化处理(步骤S2508)。该结果是,CPU1401自动生成由曲构造数据所示的小节的片段的旋律,并输出到RAM1403的输出旋律区域。
图26是表示图25的步骤S2505的片段集合DB检索处理的详细例的流程图。
首先,CPU1401取出输入动机108的音高序列,存入到RAM1403内的排列变量数据iMelodyB[0]~iMelodyB[iLengthB-1]中。在此,在变量数据iLengthB中,存入有输入动机108的音高序列的长度。
随后,CPU1401在将变量数据k的值设定成初始值“0”后(步骤S2602),在步骤S2609中使k的值增加,并且到在步骤S2603中判断为到达了片段集合DB106的结尾(参照图11A)为止,关于由变量数据k指示的片段集合(参照图11A),反复执行从步骤S2603开始到S2609的一系列的处理。
在该一系列的处理中,首先,CPU1401取出变量数据k所示的第k个片段集合内的、与输入动机108对应的片段的音高序列,并存入到RAM1403内的排列变量数据iMelodyA[0]~iMelodyA[iLengthA-1]中(步骤S2604)。在此,在变量数据iLengthA中,存入有片段集合DB106内的片段的音高序列的长度。
随后,CPU1401在步骤S2601中设定的输入动机108的音高序列的排列变量数据iMelodyB[0]~iMelodyB[iLengthB-1]与在步骤S2604中设定的片段集合DB106内的第k个片段集合内的相应片段的音高序列的排列变量数据iMelodyA[0]~iMelodyA[iLengthA-1]之间,执行DP(DynamicProgramming:动态规划)匹配处理,该结果是,将算出的两者间的距离评价值存入到RAM1403上的变量数据doDistance。
随后,CPU1401判断RAM1403上的变量数据doMin所示的最小距离评价值是否比通过步骤S2605的DP匹配处理新算出的距离评价值doDistance大(步骤S2606)。
在步骤S2606的判断为NO时,CPU1401将被存入变量数据doDistance的新的距离评价值存入到变量数据变量数据doMin(步骤S2607)。
另外,CPU1401将变量数据k的值存入到RAM1403上的变量数据iBestMochief中(步骤S2608)。
在步骤S2606的判断为YES时,CPU1401跳过步骤S2607以及S2608的处理。
之后,CPU1401使变量数据k的值加1递增并移动到与片段集合DB106内的下一个片段集合(参照图11A)相对的处理。
CPU1401结束输入动机108相对片段集合DB106内的所有的片段集合的DP匹配处理,在步骤S2603的判断为YES时,将变量数据iBestMochief所示的号码的片段集合DB106内的片段集合输出到RAM1403上的规定的区域(步骤S2610)。之后,CPU1401结束图26所例示的流程图的处理即图25的步骤S2505的片段集合DB检索处理。
图27是表示图25的步骤S2507的旋律变形处理的详细例的流程图。该处理执行基于图12的说明中上述的音高位移或者左右反转的旋律变形处理。
首先,CPU1401将初始值“0”存入到对通过图25的复制处理而得到的旋律的音符数量进行计数的RAM1403内的变量i中(步骤S2701)。之后,CPU1401在步骤S2709中使变量i的值每次加1递增,并且在步骤S2702中判断为变量i的值比表示旋律的音符数量的变量数据iNoteCnt的值小的期间,执行从步骤S2702开始到S2709为止的一系列的处理。
在从步骤S2702开始到S2709的反复处理中,步骤SCPU1401首先取得变形类型(步骤S2702)。变形类型包括音高位移或者左右反转,能够由用户通过没有特别图示出的开关进行指定。
在变形类型为音高位移的情况下,CPU1401通过将在排列变量数据note[i]的iPit项目中得到的音高数据note[i]->iPit与规定值进行加法,由此执行例如作为图12的1201进行说明那样的例如向上2半音的音高位移(步骤S2704)。
在变形类型为左右反转的情况下,CPU1401判断变量数据i的值是否比变量数据iNoteCnt的值除以2而得的值小(步骤S2705)。
在步骤S2705的判断为是的情况下,首先,CPU1401将排列变量数据note[i]的iPit项目上所得到的音高数据note[i]->iPit保存到RAM1403上的变量ip(步骤S2706)。
随后,CPU1401将第(iNoteCnt-i-1)个排列要素的音高项目note[iNoteCnt-i-1]->iPit的值存入到第i个排列要素的音高项目note[i]->iPit(步骤S2707)。
进而,CPU1401将被存回到变量数据ip的原来的音高项目值存入到第(iNoteCnt-i-1)个排列要素的音高项目note[iNoteCnt-i-1]->iPit(步骤S2708)。
在步骤S2705的判断为否的情况下,CPU1401跳过步骤S2706、S2707、S2708的处理。
在步骤S2704或者S2708的处理之后,或者步骤S2705的判断成为NO后,CPU1401在步骤S2709中使变量数据i的值加1递增,移动到针对下一个音符的处理,并返回到步骤S2702的判断处理。
通过以上的处理,实现了在图12的1202中说明的左右反转处理。
图28是表示图25的步骤S2508的旋律优化处理的详细例的流程图。该处理实现在图13的说明中上述的音高的优化处理。
首先,CPU1401通过随后的算式,算出其他音高候补的所有组合数量(步骤S2801)。
IWnum=MAX_NOTE_CANDIDATE^iNoteCnt
在此,算符“^”表示幂运算。另外,ROM1402上的常数数据MAX_NOTE_CANDIDATE表示与图13所示的1个音符相对的其他音高候补ipitd[0]~ipitd[4]的候补数量,在该例子中为5。
随后,CPU1401在将其他音高候补的计数用的变量数据iCnt设定成初始值“0”后(步骤S2802),在步骤S2818中使变量数据iCnt每次加1递增,并且在步骤S2803中在变量数据iCnt的值比在步骤S2801中算出的其他音高候补的所有组合数小的范围内,变更被输入的旋律的音高,并评价该旋律的有效性。
CPU1401每当变量数据iCnt的值加1递增时,执行从步骤S2805开始到S2817为止的一系列的处理。
首先,CPU1401将初始值“0”存入到对通过图25的复制处理而得到的旋律的音符数量进行计数的RAM1403内的变量i(步骤S2805)。之后,CPU1401在步骤S2813中使变量i的值每次加1递增,并且在步骤S2806中在判断为变量i的值比表示旋律的音符数的变量数据iNoteCnt的值小的期间,反复执行从步骤S2806开始到S2813为止的一系列的处理。通过该反复处理,针对旋律的所有的音符,通过步骤S2807、S2808、以及S2809来执行音高修正。
首先,CPU1401通过运算随后的算式,在RAM1403上的变量数据ipitdev中得到音高修正值(步骤S2807)。
ipitdev=ipitd[(iCnt/MAX_NOTE_CANDIDATE^i)modMAX_NOTE_CANDIDATE]
在此,“mod”表示求余运算。
随后,CPU1401将输入的旋律的音高项目值note[i]->iPit与在步骤S2807中算出的变量数据ipitdev的值进行加法,并将该结果存入到表示音高信息序列的排列变量数据ipit[i]中(步骤S2809)。
随后,与上述的图20的步骤S2005~S2007相同,相对表示音高信息序列的排列变量数据ipit[i],执行音符类型取得处理(步骤S2810)、以及相邻音程的算出处理(步骤S2811以及S2812)。
CPU1401在针对构成输入旋律的所有的音符,完成与当前的变量数据iCnt的值对应的音高修正时,步骤S2806的判断成为NO。该结果是,CPU1401在步骤S2814中,针对在步骤S2810~S2812中算出的构成旋律的每个音符的音符类型以及相邻音程,执行与上述的图23的处理相同的音符连接性检验处理(步骤S2814)。另外,此时,在输入的旋律的小节中提取相应的和弦进行数据中的和弦信息并使用。
CPU1401判断通过步骤S2814的音符连接性检验处理而在变量数据doValue中新得到的匹配度的值是否比在变量数据iMaxValue中保持的最佳匹配度的值大(步骤S2815)。
在步骤S2815的判断为YES时,CPU1401用变量数据doValue的值置换变量数据iMaxValue的值(步骤S2816),用变量数据iCnt的值置换变量数据iMaxCnt的值(步骤S2817)。
之后,CPU1401使变量数据iCnt的值加1递增(步骤S2818),返回到步骤S2803的判断处理。
针对依次加1递增的变量数据iCnt的值而反复执行以上的动作,其结果是,在针对其他音高候补的所有的组合完成了检验音符连接性的处理时,步骤S2803的判断成为NO。
该结果是,CPU1401在将初始值“0”存入到变量i后(步骤S2819),在步骤S2823中使变量i的值加1递增,在步骤S2820中判断为变量i的值比表示旋律的音符数的变量数据iNoteCnt的值小的期间,反复执行从步骤S2820开始到S2823为止的一系列的处理。通过该反复处理,针对旋律的所有的音符,使用在变量数据iMaxCnt中得到的最佳值来执行音高的修正即优化。
具体地讲,CPU1401在进行了步骤S2820的结束判断后,通过运算随后的算式,在音高信息序列的排列变量数据ipit[i]得到最匹配的音高修正值(步骤S2821)。
ipit[i]=note[i]->iPit+ipitd[(iMaxCnt/(MAX_NOTE_CANDIDATE^i)modMAX_NOTE_CANDIDATE)]
进而,CPU1401将音高信息序列的排列变量数据ipit[i]的值写入并复制到输入了的旋律的音符数据的音高项目值note[i]->iPit中(步骤S2822)。
最后,CPU1401使变量i的值加1递增(步骤S2823),之后返回到步骤S2820的判断处理。
CPU1401在与构成输入了的旋律的所有的音符数据相对的上述处理完成时,步骤S2820的判断成为NO,结束图28的流程图所例示的处理即图25的步骤S2508的旋律优化处理。
图29是表示图24的旋律生成2处理(副歌开头旋律生成处理)的详细例的流程图。
首先,CPU1401判断副歌开头旋律是否已生成(步骤S2901)。
在副歌开头旋律尚未生成,步骤S2901的判断为NO时,CPU1401执行片段集合DB检索处理(步骤S2902)。该处理与图25的步骤S2505所对应的图26的处理相同。通过该片段集合DB检索处理,CPU1401从片段集合DB106提取与输入动机108对应的片段集合。
随后,CPU1401将在步骤S2902中检索出的片段集合中的、副歌开头(C旋律)的片段的旋律复制到RAM1403的规定区域(步骤S2903)。
接着,CPU1401针对在步骤S2903得到的旋律,执行与图25的步骤S2508相同的以图28所示的旋律优化处理(步骤S2904)。
CPU1401将对在步骤S2904中得到的音高进行优化后的旋律数据作为旋律110的一部分,并存入到RAM1403的输出旋律区域。之后,CPU1401结束图29的流程图所例示的处理即图24的旋律生成2处理(副歌开头旋律生成处理)。
在副歌开头旋律被生成,步骤S2901的判断为YES时,CPU1401将已生成的副歌开头旋律作为当前的小节的旋律,并复制到RAM1403的输出旋律区域(步骤S2905)。之后,CPU1401结束图29的流程图所例示的处理即图24的旋律生成2处理(副歌开头旋律生成处理)。
根据以上说明的实施方式,能够将输入动机108与和弦进行数据的对应关系作为匹配度进行数值化,基于该匹配度,适当地选择与输入动机108匹配的和弦进行数据,因此,能够进行自然的乐曲生成。

Claims (14)

1.一种自动作曲装置,具备处理部,该处理部执行:
计算处理,参照用于规定连续的音符类型的连接关系的多种音符连接规则,计算多种和弦进行数据各自相对于包含多个音符数据的动机的匹配度;以及
旋律生成处理,基于被计算出了该匹配度的和弦进行数据和上述动机,生成旋律。
2.如权利要求1所述的自动作曲装置,
上述处理部进一步执行和弦进行选择处理,在该和弦进行选择处理中,基于所计算出的上述匹配度,从多种和弦进行数据之中选择和弦进行数据。
3.如权利要求2所述的自动作曲装置,
上述音符连接规则规定多个连续的音符类型的连接关系,并规定相邻的该音符类型间的音程,
上述和弦进行选择处理执行如下处理,该处理是,基于上述多种和弦进行数据的各和弦进行数据,针对构成上述动机的各音符数据,计算与该音符数据的发音定时对应的该和弦进行数据上的音符类型和相邻的该音符间的音程,并且,通过将该音符类型和音程与构成上述音符连接规则的音符类型和音程进行比较,计算该和弦进行数据相对于上述动机的匹配度。
4.如权利要求2所述的自动作曲装置,
作为和弦进行选择处理,上述处理部执行如下处理,该处理是,按照针对上述多个和弦进行数据的各和弦进行数据进行了调位移后的每个和弦进行数据,计算该和弦进行数据相对于上述动机的匹配度,基于所计算出的该匹配度,选择和弦进行数据以及调位移量。
5.如权利要求4所述的自动作曲装置,
作为和弦进行选择处理,上述处理部执行如下处理,该处理是,从所计算出的上述匹配度最高的一方开始按顺序选择多个和弦进行数据以及调位移量。
6.如权利要求5所述的自动作曲装置,
上述处理部通过上述和弦进行选择处理,进一步地,从所选择出的上述多个和弦进行数据以及调位移量之中,选择由用户指定的和弦进行数据和调位移量、以及匹配度最高的和弦进行数据和调位移量的至少一方。
7.如权利要求1所述的自动作曲装置,
上述动机与构成乐曲的旋律的多个类别的片段的某一片段对应而被输入,
上述自动作曲装置还具备片段数据库,该片段数据库存储了多种由构成上述乐曲的旋律的多个类别的片段的组合构成的片段集合,
作为旋律生成处理,上述处理部执行片段集合检索处理,在该片段集合检索处理中,针对多个上述片段集合的各个片段集合,通过将与上述动机的类别相同类别的片段与该动机进行比较,从上述片段数据库检索具有与上述动机类似的片段的片段集合,并且,上述处理部执行基于所检索出的上述片段集合中包含的各片段来生成旋律的处理。
8.如权利要求7所述的自动作曲装置,
作为上述旋律生成处理,上述处理部执行使所检索出的上述片段集合中包含的片段变形的变形处理。
9.如权利要求8所述的自动作曲装置,
作为上述变形处理,上述处理部执行使构成上述片段的各音符数据所包含的音高位移预先设定的值的处理。
10.如权利要求8所述的自动作曲装置,
作为上述变形处理,上述处理部执行变更构成上述片段的音符数据的排列顺序的处理。
11.如权利要求1所述的自动作曲装置,
上述自动作曲装置还具有存储上述多种和弦进行数据的和弦进行数据库、以及存储上述多种音符连接规则的规则数据库。
12.如权利要求1所述的自动作曲装置,
上述自动作曲装置还具有再生乐曲的再生部、以及显示用于表现该乐曲的乐谱的乐谱显示部的至少一方,该乐曲是基于由上述处理部生成的旋律的乐曲。
13.一种自动作曲方法,该自动作曲方法用于具有处理部的自动作曲装置,在上述自动作曲方法中,
上述处理部参照多种音符连接规则,计算多种和弦进行数据各自相对于包含多个音符数据的动机的匹配度,该多种音符连接规则规定连续的音符类型的连接关系,
上述处理部基于被计算出了上述匹配度的和弦进行数据和上述动机来生成旋律。
14.一种存储介质,使作为具有处理部的自动作曲装置使用的计算机执行如下步骤:
参照多种音符连接规则,计算多种和弦进行数据各自相对于包含多个音符数据的动机的匹配度的步骤,该多种音符连接规则规定连续的音符类型的连接关系,
基于被算出了上述匹配度的和弦进行数据和上述动机来生成旋律的步骤。
CN201510600154.9A 2014-11-20 2015-09-18 自动作曲装置、方法以及存储介质 Active CN105632474B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014235233A JP6160598B2 (ja) 2014-11-20 2014-11-20 自動作曲装置、方法、およびプログラム
JP2014-235233 2014-11-20

Publications (2)

Publication Number Publication Date
CN105632474A true CN105632474A (zh) 2016-06-01
CN105632474B CN105632474B (zh) 2019-12-03

Family

ID=54151107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510600154.9A Active CN105632474B (zh) 2014-11-20 2015-09-18 自动作曲装置、方法以及存储介质

Country Status (4)

Country Link
US (1) US9558726B2 (zh)
EP (1) EP3023976B1 (zh)
JP (1) JP6160598B2 (zh)
CN (1) CN105632474B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106205572A (zh) * 2016-06-28 2016-12-07 海信集团有限公司 音符序列生成方法及装置
CN107871489A (zh) * 2016-09-28 2018-04-03 卡西欧计算机株式会社 和弦判定装置、和弦判定方法以及非暂时性的记录介质
CN107871488A (zh) * 2016-09-28 2018-04-03 卡西欧计算机株式会社 和弦判定装置、和弦判定方法以及非暂时性记录介质
CN113557565A (zh) * 2019-03-22 2021-10-26 雅马哈株式会社 乐曲解析方法及乐曲解析装置
CN113767430A (zh) * 2019-03-26 2021-12-07 雅马哈株式会社 和弦处理方法及和弦处理装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6160599B2 (ja) * 2014-11-20 2017-07-12 カシオ計算機株式会社 自動作曲装置、方法、およびプログラム
NO340707B1 (en) * 2015-06-05 2017-06-06 Qluge As Methods, devices and computer program products for interactive musical improvisation guidance
US9734810B2 (en) * 2015-09-23 2017-08-15 The Melodic Progression Institute LLC Automatic harmony generation system
US9804818B2 (en) 2015-09-30 2017-10-31 Apple Inc. Musical analysis platform
US9824719B2 (en) 2015-09-30 2017-11-21 Apple Inc. Automatic music recording and authoring tool
US9852721B2 (en) * 2015-09-30 2017-12-26 Apple Inc. Musical analysis platform
US9672800B2 (en) 2015-09-30 2017-06-06 Apple Inc. Automatic composer
CN106663127A (zh) * 2016-07-07 2017-05-10 深圳狗尾草智能科技有限公司 一种虚拟机器人的交互方法、***及机器人
KR101807754B1 (ko) * 2016-09-21 2017-12-13 김기윤 자작곡 생성 서버 및 그 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4951544A (en) * 1988-04-06 1990-08-28 Cadio Computer Co., Ltd. Apparatus for producing a chord progression available for a melody
US5218153A (en) * 1990-08-30 1993-06-08 Casio Computer Co., Ltd. Technique for selecting a chord progression for a melody
CN1184997A (zh) * 1996-11-29 1998-06-17 雅马哈株式会社 根据旋律转换歌声信号的装置
US6060655A (en) * 1998-05-12 2000-05-09 Casio Computer Co., Ltd. Apparatus for composing chord progression by genetic operations
US20020007721A1 (en) * 2000-07-18 2002-01-24 Yamaha Corporation Automatic music composing apparatus that composes melody reflecting motif
US20020029685A1 (en) * 2000-07-18 2002-03-14 Yamaha Corporation Automatic chord progression correction apparatus and automatic composition apparatus
CN101399036A (zh) * 2007-09-30 2009-04-01 三星电子株式会社 将语音转换为说唱音乐的设备和方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926737A (en) * 1987-04-08 1990-05-22 Casio Computer Co., Ltd. Automatic composer using input motif information
US4982643A (en) * 1987-12-24 1991-01-08 Casio Computer Co., Ltd. Automatic composer
US5052267A (en) * 1988-09-28 1991-10-01 Casio Computer Co., Ltd. Apparatus for producing a chord progression by connecting chord patterns
JPH0782325B2 (ja) 1989-10-12 1995-09-06 株式会社河合楽器製作所 モチーフ演奏装置
US5182414A (en) 1989-12-28 1993-01-26 Kabushiki Kaisha Kawai Gakki Seisakusho Motif playing apparatus
US5451709A (en) 1991-12-30 1995-09-19 Casio Computer Co., Ltd. Automatic composer for composing a melody in real time
JP3718919B2 (ja) 1996-09-26 2005-11-24 ヤマハ株式会社 カラオケ装置
JP3704980B2 (ja) 1997-12-17 2005-10-12 ヤマハ株式会社 自動作曲装置と記録媒体
JP3799843B2 (ja) 1998-11-25 2006-07-19 ヤマハ株式会社 楽曲生成装置および楽曲生成プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3533975B2 (ja) 1999-01-29 2004-06-07 ヤマハ株式会社 自動作曲装置および記憶媒体
JP3528654B2 (ja) 1999-02-08 2004-05-17 ヤマハ株式会社 メロディ生成装置及びリズム生成装置と記録媒体
JP3620409B2 (ja) * 2000-05-25 2005-02-16 ヤマハ株式会社 携帯通信端末装置
JP2002032078A (ja) 2000-07-18 2002-01-31 Yamaha Corp 自動作曲装置、方法及び記録媒体
US6384310B2 (en) 2000-07-18 2002-05-07 Yamaha Corporation Automatic musical composition apparatus and method
JP3724347B2 (ja) 2000-07-18 2005-12-07 ヤマハ株式会社 自動作曲装置及び方法並びに記憶媒体
EP2180463A1 (de) * 2008-10-22 2010-04-28 Stefan M. Oertl Verfahren zur Erkennung von Notenmustern in Musikstücken
US9053695B2 (en) * 2010-03-04 2015-06-09 Avid Technology, Inc. Identifying musical elements with similar rhythms
TW201411601A (zh) 2012-09-13 2014-03-16 Univ Nat Taiwan 以情緒為基礎的自動配樂方法
US9798974B2 (en) 2013-09-19 2017-10-24 Microsoft Technology Licensing, Llc Recommending audio sample combinations
US9280313B2 (en) 2013-09-19 2016-03-08 Microsoft Technology Licensing, Llc Automatically expanding sets of audio samples
US9372925B2 (en) 2013-09-19 2016-06-21 Microsoft Technology Licensing, Llc Combining audio samples by automatically adjusting sample characteristics
JP2015206878A (ja) * 2014-04-18 2015-11-19 ソニー株式会社 情報処理装置および情報処理方法
JP6079753B2 (ja) 2014-11-20 2017-02-15 カシオ計算機株式会社 自動作曲装置、方法、およびプログラム
JP6160599B2 (ja) * 2014-11-20 2017-07-12 カシオ計算機株式会社 自動作曲装置、方法、およびプログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4951544A (en) * 1988-04-06 1990-08-28 Cadio Computer Co., Ltd. Apparatus for producing a chord progression available for a melody
US5218153A (en) * 1990-08-30 1993-06-08 Casio Computer Co., Ltd. Technique for selecting a chord progression for a melody
CN1184997A (zh) * 1996-11-29 1998-06-17 雅马哈株式会社 根据旋律转换歌声信号的装置
US6060655A (en) * 1998-05-12 2000-05-09 Casio Computer Co., Ltd. Apparatus for composing chord progression by genetic operations
US20020007721A1 (en) * 2000-07-18 2002-01-24 Yamaha Corporation Automatic music composing apparatus that composes melody reflecting motif
US20020029685A1 (en) * 2000-07-18 2002-03-14 Yamaha Corporation Automatic chord progression correction apparatus and automatic composition apparatus
CN101399036A (zh) * 2007-09-30 2009-04-01 三星电子株式会社 将语音转换为说唱音乐的设备和方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106205572A (zh) * 2016-06-28 2016-12-07 海信集团有限公司 音符序列生成方法及装置
CN106205572B (zh) * 2016-06-28 2019-09-20 海信集团有限公司 音符序列生成方法及装置
CN107871489A (zh) * 2016-09-28 2018-04-03 卡西欧计算机株式会社 和弦判定装置、和弦判定方法以及非暂时性的记录介质
CN107871488A (zh) * 2016-09-28 2018-04-03 卡西欧计算机株式会社 和弦判定装置、和弦判定方法以及非暂时性记录介质
CN107871488B (zh) * 2016-09-28 2021-12-31 卡西欧计算机株式会社 和弦判定装置、和弦判定方法以及非暂时性记录介质
CN113557565A (zh) * 2019-03-22 2021-10-26 雅马哈株式会社 乐曲解析方法及乐曲解析装置
CN113767430A (zh) * 2019-03-26 2021-12-07 雅马哈株式会社 和弦处理方法及和弦处理装置
CN113767430B (zh) * 2019-03-26 2024-02-23 雅马哈株式会社 和弦处理方法及和弦处理装置

Also Published As

Publication number Publication date
CN105632474B (zh) 2019-12-03
EP3023976A1 (en) 2016-05-25
US20160148604A1 (en) 2016-05-26
EP3023976B1 (en) 2019-01-09
US9558726B2 (en) 2017-01-31
JP6160598B2 (ja) 2017-07-12
JP2016099444A (ja) 2016-05-30

Similar Documents

Publication Publication Date Title
CN105632474A (zh) 自动作曲装置、方法以及存储介质
EP3023977B1 (en) Automatic composition apparatus and automatic composition method
CN105632480B (zh) 自动作曲装置、方法
Cohen Information theory and music
Kirke et al. A survey of computer systems for expressive music performance
Eerola et al. Expectancy-based model of melodic complexity
Bittner et al. Pitch contours as a mid-level representation for music informatics
JP6428853B2 (ja) 自動作曲装置、方法、およびプログラム
Miranda A-life for music: Music and computer models of living systems
Kirke et al. A multi-agent emotional society whose melodies represent its emergent social hierarchy and are generated by agent communications
Sajad et al. Music generation for novices using Recurrent Neural Network (RNN)
JP6428854B2 (ja) 自動作曲装置、方法、およびプログラム
Johnson The Standard, Power, and Color Model of Instrument Combination in Romantic-Era Symphonic Works.
Pfleiderer et al. The Jazzomat project. Issues and methods for the automatic analysis of jazz improvisations
Janssen Retained or Lost in Transmission? Analyzing and Predicting Stability in Dutch Folk Songs
Schuler Methods of computer-assisted music analysis: history, classification, and evaluation
Fiore Tuning Theory and Practice in James Tenney’s Works for Guitar
Ebert Transcribing Solo Piano Performances from Audio to MIDI Using a Neural Network
Persaud In Search of Computer Music Analysis: Music Information Retrieval, Optimization, and Machine Learning from 2000-2016
Židek Controlled music generation with deep learning
Kant Machine Listening as a Generative Model: Happy Valley Band
Borrel-Jensen et al. Computer-assisted music composition–a databasebacked algorithmic composition system
Naranjo de las Heras Music composition and interpretation using transformer networks
Mathews et al. The Acquisition of Musical Percepts with a New Scale
Jones Computer assisted application of stochastic structuring techniques in musical composition and control of digital sound synthesis systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant