CN105632476A - 自动作曲装置、方法 - Google Patents

自动作曲装置、方法 Download PDF

Info

Publication number
CN105632476A
CN105632476A CN201510589523.9A CN201510589523A CN105632476A CN 105632476 A CN105632476 A CN 105632476A CN 201510589523 A CN201510589523 A CN 201510589523A CN 105632476 A CN105632476 A CN 105632476A
Authority
CN
China
Prior art keywords
note
data
melody
chord
phrase
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
CN201510589523.9A
Other languages
English (en)
Other versions
CN105632476B (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 CN105632476A publication Critical patent/CN105632476A/zh
Application granted granted Critical
Publication of CN105632476B publication Critical patent/CN105632476B/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
    • 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/101Music Composition or musical creation; Tools or processes therefor
    • G10H2210/111Automatic composing, i.e. using predefined musical rules
    • 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
    • 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
    • G10H2220/00Input/output interfacing specifically adapted for electrophonic musical tools or instruments
    • G10H2220/005Non-interactive screen display of musical or status data
    • G10H2220/015Musical staff, tablature or score displays, e.g. for score reading during a performance.

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中存储的多个音符连接规则,计算旋律数据相对于从乐旨/和弦进行适当评价部等指定的和弦进行数据的适合度,将该适合度最高时的进行了音高偏移的旋律数据作为自动生成的旋律输出。

Description

自动作曲装置、方法
本申请基于2014年11月20日提出申请的日本申请第2014-235236号主张优先权,并援引该在先申请的全部内容。
技术领域
本发明涉及自动作曲装置以及方法。
背景技术
已知根据由多个音符(note)数据构成的乐旨旋律(motifmelody)进行自动作曲的技术。例如,已知如下那样的现有技术(例如特开2002-32080号公报中记载的技术)。如果从存储有特定调的和弦进行(chordprogression)的数据库中选择规定的和弦进行,并将乐旨(motif)以规定的调输入,则从输入乐旨检测出乐旨调(motifkey)。基于检测出的乐旨调将和弦进行数据变调为乐旨调,在旋律生成中,基于输入乐旨以及向乐旨调变调后的和弦进行,生成乐旨调的旋律。此外,基于检测出的乐旨调将乐旨变调为特定调,根据特定调的和弦进行以及变调后乐旨生成特定调的旋律,然后,变调为乐旨调的旋律。
此外,还已知如下那样的现有技术(例如特开平10-105169号公报中记载的技术)。从乐曲数据的卡拉OK演奏用数据和引导(guide)旋律数据提取4分音符以上的长度的音符,统计其音调名称(pitchname)(C~B)的出现频度的分布。比较该频度分布和大调判断音阶及小调判断音阶,将分布形状最一致处判断为作为主音(音阶音(scalenote))的调,根据该调判断结果和引导旋律数据生成和声数据,并根据该和声数据形成和声声音信号。
但是,在上述的一个现有技术中,具有从参照源的旋律提取音乐信息而生成整体的机构,但无法保障生成的旋律是否是最优化的。具有的课题是,这样的旋律是遵循某种规则生成的,虽然有可能是自然的旋律但也有可能是局部适当的。此外,在上述的另一个现有技术中,提出了将用于旋律生成的参数生成随机地生成的方法,但该***也是局部适当的,还具有用户难以控制的课题。
发明内容
因此,本发明的目的在于对和弦与音阶保障适当的旋律(音序列)。
根据实施方式的一例,具备自动作曲装置,其具备处理部,该处理部执行以下处理:音符音高偏移处理,使输入的乐句中包含的各音符数据的音高依次进行音高偏移;适合度计算处理,每当上述音高偏移被执行,则参照规定分别连续的音符类型的连接关系的多种音符连接规则,计算指定的和弦进行数据与包含进行了上述音高偏移的音符数据的乐句之间的适合度;以及旋律生成处理,根据基于计算出的上述适合度而选择的包含进行了上述音高偏移的音符数据的乐句,生成旋律。
附图说明
图1是自动作曲装置的实施方式的框图。
图2是表示本实施方式中被自动作曲的乐曲的构造例的图。
图3是输入乐旨108与和弦进行数据的适合动作例。
图4是表示输入乐旨的数据结构例的图。
图5是表示伴奏/和弦进行DB的数据结构例的图。
图6是表示1个记录中的曲构造数据的数据结构例的图。
图7是表示标准音级集合表(tandardpitchclasssettable)的数据结构例的图。
图8是有关音符类型、邻接音程(adjacenttone)、以及音符类型与邻接音程的数组变量(arrayvariable)数据的说明图。
图9是表示音符连接规则的数据结构例的图。
图10是和弦进行选择部102的动作说明图。
图11是表示乐句集合DB的数据结构例的图。
图12是旋律变形处理以及旋律优化处理的动作说明图。
图13是旋律优化处理的详细动作说明图。
图14是表示自动作曲装置的硬件结构例的图。
图15A是表示各种变量数据、数组变量数据、以及常数数据的列表的图(其1)。
图15B是表示各种变量数据、数组变量数据、以及常数数据的列表的图(其2)。
图16是表示自动作曲处理的例子的流程图。
图17是表示和弦进行选择处理的详细例的流程图。
图18是表示和弦设计数据制作处理的详细例的流程图。
图19是表示输入乐旨与和弦进行的适合度(matchinglevel)检查处理的详细例的流程图。
图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旋律(Amelody)、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,一边计算表示该和弦进行数据与从乐旨输入部101输入的输入乐旨108以何种程度适合的适合度,输出适合度高的例如分别指示上位3个和弦进行数据的#0、#1、#2的和弦进行候选指示数据(图1中显示为“和弦进行候选”)109。
旋律生成部105例如使用户选择与和弦进行选择部102输出的#0、#1、#2的和弦进行候选指示数据109对应的3个和弦进行候选中的1个。或者,旋律生成部105也可以使得自动地按顺序选择与#0、#1、#2的和弦进行候选指示数据109的某一个对应的和弦进行候选。结果,旋律生成部105将与所选择的和弦进行候选对应的曲构造数据从伴奏/和弦进行DB103读入。旋律生成部105按照由该曲构造数据表示的小节的每个乐句,一边参照输入乐旨108和登记在乐句集合DB106中的乐句集合、以及规则DB104,一边自动生成该乐句的旋律。旋律生成部105遍及乐曲整体的小节而执行旋律的自动生成处理,将自动生成的旋律110输出。
输出部107具备:乐谱显示部107-1,根据旋律生成部105自动生成的旋律数据110来显示旋律的乐谱;乐音再现部107-2,根据旋律数据110以及从伴奏/和弦进行DB103取得的伴奏用MIDI(MusicalInstrumentDigitalInterface)数据,执行旋律及伴奏的再现。
接着,对具有图1的功能结构的自动作曲装置100的动作概略进行说明。图2是表示在本实施方式中被自动作曲的乐曲的构造例的图。乐曲通常由序曲(introduction)、A旋律、B旋律、间奏、C旋律(副歌旋律)、尾声(ending)等的乐句构成。序曲是仅由旋律开始前的伴奏构成的前奏部分。A旋律通常是指在序曲之后出现的乐句,在曲中通常演奏平稳后的旋律。B旋律是指在A旋律之后出现的乐句,多为与A旋律相比稍微激烈的曲调。对于C旋律而言,在B旋律之后出现的乐句的情况较多,日本的曲子中C旋律为曲子中最激烈的副歌旋律的情况较多。尾声与序曲相反,是指曲子的结尾的乐句。间奏例如是1曲目和2曲目之间的不存在旋律的仅乐器演奏的乐句。图2所示的乐曲的构造例中,按照序曲、A旋律、B旋律、A旋律、间奏、A旋律、B旋律、C旋律、尾声的顺序构成乐曲。
本实施方式中,用户例如能够将乐曲中最初出现的A旋律的例如开头2小节的旋律从乐旨输入部101(参照图1)输入以作为图2的(a)的乐旨A(图1的输入乐旨108的一例)。或者,用户例如能够将乐曲中最初出现的B旋律的例如开头2小节的旋律从乐旨输入部101(参照图1)输入以作为图2的(b)的乐旨B(图1的输入乐旨108的另一例)。或者,用户例如能够将乐曲中最初出现的C旋律(副歌旋律)的例如开头2小节的旋律从乐旨输入部101(参照图1)输入以作为图2的(c)的乐旨C(图1的输入乐旨108的又一例)。
图3A是表示如上述那样输入的输入乐旨108的音符例的图。这样,作为输入乐旨108,例如被指定2小节的旋律。
对于这样的输入,和弦进行选择部102(参照图1)从在伴奏/和弦进行DB103中登记的和弦进行数据之中,提取例如上位3位的由适合的和弦及调、音阶构成的和弦进行数据。构成和弦进行数据的和弦以及调、音阶如图2的(f)以及图2的(g)所示,遍及乐曲整体被设定。
图3B是表示由到上位3位为止的和弦进行数据表示的和弦进行(和弦以及调、音阶)#0,#1,#2的例子的图。
图1的旋律生成部105根据这些信息,将输入乐旨108被输入的图2的(a)、图2的(b)、或图2的(c)的某一个的乐句部分以外的图2的(d)所示的乐句部分对应的旋律自动生成,并与输入乐旨108的旋律一起作为旋律110输出。并且,图1的输出部107进行与自动生成的旋律110对应的乐谱显示或放音。另外,关于伴奏,与伴奏/和弦进行DB103中被最终选择的和弦进行对应地登记的伴奏用MIDI数据被依次读出,基于该数据如图2的(e)所示那样遍及乐曲整体进行伴奏。
图4是表示在图1的乐旨输入部101中基于用户输入而生成的输入乐旨108的数据结构例的图。如图4A所示,输入乐旨108由#0、#1、···等多个音符数据构成,在最后存储终端和弦。各音符数据例如对应于构成图3A中例示的输入乐旨108的例如2小节的各个音符,是指示成为乐旨的旋律音的发音的数据。如图4B所示,1个音符数据由以下数据构成:将与该音符数据对应的音符的发音定时例如作为从输入乐旨108的开头起的经过时间而表示的“时间”数据、表示音符的长度的“长度”数据、表示音符的强度的“强度”数据、和表示音符的音高的“音高”数据。通过这些数据,表示图3A中例示那样的2小节的输入乐旨108中的1个音符。
图5是表示图1的伴奏/和弦进行DB103的数据结构例的图。如图5A所示,和弦进行DB中,存储有1个记录(record)(图5A的1行)由和弦进行数据、伴奏用MIDI数据以及曲构造数据构成的、#0、#1、···等多个记录,在最后存储有终端和弦。
1个记录中的和弦进行数据表示乐曲的1曲的和弦进行。图5A所示的和弦进行DB中,例如存储有50记录=50曲的和弦进行数据。1记录中(=1曲)的和弦进行数据如图5B所示,由#0、#1、···等多个和弦数据构成,在最后存储有终端和弦。和弦数据中,有指定某定时中的调以及音阶的数据(图5C)、和指定某定时中的和弦的数据(图5D)(参照图3B)。指定调以及音阶的数据如图5C所示,由表示该调以及音阶开始的定时的“时间”数据、“调”数据、和“音阶”数据构成。指定和弦的数据如图5D所示,由表示该和弦开始的定时的“时间”数据、表示和弦的基音(root)的“基音”数据、以及表示和弦的类型(种类)的“类型”数据构成。和弦进行数据例如作为MIDI规格的元数据(metadata)被存储。
图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中描述过的那样,用户例如能够将在图6的曲构造数据中最初出现的A旋律的例如开头2小节即第3、4记录(第4、5小节)的旋律作为乐旨A(参照图2的(a))从乐旨输入部101(参照图1)输入。或者,用户例如能够将在图6的曲构造数据中最初出现的B旋律的例如开头2小节即第11、12记录(第12、13小节)的旋律作为乐旨B(参照图2的(b))从乐旨输入部101输入。或者,用户例如能够将在图6的曲构造数据中最初出现的C旋律(副歌旋律)的例如开头2小节即第19、20记录(第20、21小节)的旋律作为乐旨C(参照图2的(c))从乐旨输入部101输入。
和弦进行选择部102按照在伴奏/和弦进行DB103中存储的每个和弦进行数据(以下记作“评价对象和弦进行数据”),计算表示该评价对象和弦进行数据与从乐旨输入部101输入的输入乐旨108以何种程度相适合的适合度。
在本实施方式中,将评价对象和弦进行数据对输入乐旨108的适合度,使用音乐理论中的有效音符音阶(availablenotescale)的概念来计算。有效音符音阶在提供了和弦进行时将能够在旋律中使用的音表示为音阶。作为构成有效音符音阶的音符的种类(以下称作“音符类型”),例如有和弦音(chordtone)、有效音符(availablenote)、音阶音符(scalenote)、延伸音符(tensionnote)、避免音符(avoidnote)。和弦音是成为音阶的基础的和弦的构成音,是优选使用1个音作为旋律的音符类型。有效音符是在旋律中通常能够使用的音符类型。音阶音符是音阶的构成音,如果将该音用较长的音等相加,则会与原本的和弦声冲突,所以是在处理中需要注意的音符类型。延伸音符是叠加于和弦音的在和弦的延伸中使用的音,是越是高次的延伸则声的紧张感越增加而成为色彩丰富的声的音符类型。避免音符是与和弦不和谐的音,是希望避免使用或在较短的音符中使用的音符类型。本实施方式中,关于构成输入乐旨108的各音符(图3A的各音符),根据与该音符的发音定时对应的评价对象和弦进行数据中的调及音阶与和弦的基音及和弦类型,计算该音符的该和弦进行上的音符类型。
为了取得上述的构成输入乐旨108的各音符(图3A的各音符)的音符类型,在本实施方式中,使用标准音级集合表(standardpitchclasssettable)。图7是表示标准音级集合表的数据结构例的图。标准音级集合表设置在和弦进行选择部102内的存储区域(例如后述的图4的ROM1402内)。标准音级表由图7A中例示的和弦音表、图7B中例示的延伸音符表、以及图7C中例示的音阶音符表构成。
在图7A、图7B或图7C的表中,与其1行对应的1组的音级集合由对将和弦或音阶的基音设为第0音(第0位)的音阶构成音时的构成1个八度(octave)的半音阶的第0音(第0位)(图中的行的右端)到第11音(第11位)(图中的行的左端)的各个音阶构成音赋予“0”或“1”的值的合计12位的数据构成。在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位)是音阶“全音阶(diatonic)”的音阶构成音。
图1的和弦进行选择部102计算当前音符的音高对于与该当前音符的发音定时对应的评价对象和弦进行数据中的调具有哪个音程(以下将其称为“调音程”)。此时,和弦进行选择部102与和弦音程的计算的情况同样地,进行使当前音符的音高向将与该当前音符的发音定时对应的评价对象和弦进行数据中的调设为第0音的音阶构成音时的第0音到第11音的1八度内的音阶构成音的某一个映射的运算,将该映射位置的音作为上述调音程来计算。并且,和弦进行选择部102判断与上述发音定时中的评价对象和弦进行数据中的音阶对应的在图7C中例示的音阶音符表上的音阶音符音级集合的音阶构成音中是否含有计算出的上述调音程。
如以上那样,和弦进行选择部102判断与输入乐旨108的当前音符的发音定时中的评价对象和弦进行数据中的和弦类型对应的在图7A中例示的和弦音表上的和弦音音级集合的和弦构成音中是否含有和弦音程。此外,和弦进行选择部102判断与上述和弦类型对应的在图7B中例示的延伸音符表上的延伸音符音级集合的延伸音符中是否含有和弦音程。进而,和弦进行选择部102判断与评价对象和弦进行数据中的音阶对应的在图7C中例示的音阶音符表上的音阶音符音级集合的音阶构成音中是否含有调音程。并且,和弦进行选择部102基于这些判断,取得当前音符对应于和弦音、有效音符、音阶音符、延伸音符、或者避免音符中的哪一个、即音符类型的信息。关于音符类型取得处理的详细情况,在图22的说明中详述。
图8的(a)是按照图3A例示的输入乐旨108的各音符的每个音高(图8的(a)中的灰色的部分)、对于从图1的伴奏/和弦进行DB103读出的在图3B中例示的#0、#1、#2这3个评价对象和弦进行数据的例子中的每一个、表示和弦进行选择部102取得的音符类型的例子的图。图8的(a)中,「C」是表示和弦音的音符类型的值,「A」是表示有效音符的音符类型的值,「S」是表示音阶音符的音符类型的值,「V」是表示避免音符的音符类型的值。此外,虽未图示,「T」是表示延伸音符的音符类型的值。另外,该图中,为了记载的简略化,将表示各音符类型的值用字母表的1个字符表示,但作为实际在存储器中存储的各音符类型的值,例如,作为表示和弦音的常数值而使用ci_ChordTone(与标记「C」等价),作为表示有效音符的常数值而使用ci_AvailableNote(与标记「A」等价),作为表示音阶音符的常数值而使用ci_ScaleNote(与标记「S」等价),作为表示延伸音符的常数值而使用ci_TensionNote(与标记「T」等价),作为表示避免音符的常数值而使用ci_AvoidNote(与标记「V」等价)(参照后述的图15A)。
接着,和弦进行选择部102按照输入乐旨108的各音符的每个音高,计算邻接的音高间的半音单位的音程(以下称为“邻接音程”)。图8的(b)的“邻接音程”是表示输入乐旨108的各音符的音高(图8的(b)中的灰色部分)间的音程的计算结果的例子的图。
和弦进行选择部102对评价对象和弦进行数据生成将如上述那样计算出的音符类型和邻接音程交替保存的数组变量数据(以下,将该数组变量数据记作「incon[i]」(「i」是数组号码))。图8的(c)是表示对从图1的伴奏/和弦进行DB103读出的在图3B中例示的#0、#1、#2这3个评价对象和弦进行数据的例子的每一个计算出的数组变量数据incon[i]的例子的图。图8的(c)的和弦进行#0、#1、#2各自的数组变量数据incon[i]中,在第偶数个数组号码i=0,2,4,6,8,10,12,14,16,18的各要素中,将图8的(a)的和弦进行#0、#1、#2各自的音符类型从开头起依次拷贝。此外,和弦进行#0,#1,#2各自的数组变量数据incon[i]中,在第奇数个数组号码i=1,3,5,7,9,11,13,15,17的各要素中,一并将图8的(b)的邻接音程从开头起依次拷贝。
接着,和弦进行选择部102在对当前的评价对象和弦进行数据保存有如上述那样计算出的输入乐旨108的各音符的音符类型和邻接音程的数组变量数据incon[i](i=0,1,2,3,···)中,从数组号码0起依次例如按每4组执行对音符类型和邻接音程的组合的规则(以下,将该规则称为“音符连接规则”)进行评价的音符连接性检查处理。该音符连接性检查处理中,和弦进行选择部102参照在图1的规则DB104中存储的音符连接规则。
图9是表示在规则DB104中存储的音符连接规则的数据结构例的图。音符连接规则中,有3个音的规则和4个音的规则,为了说明的方便,分别赋予例如“和弦音”、“辅助音(neighboringnote)”、“经过音”、“倚音(appoggiatura)”、“逸音(escapenote)”等名称。此外,各音符连接规则被赋予用于评价在形成旋律方面有多适合的评价点。进而,在本实施方式中,作为表示音符连接规则的变量,使用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的情况下,对于输入乐旨108的3个音符,比较图9的j=0到j=8的音符类型#3为「ci_NullNoteType」的3个音的音符连接规则。
如以上那样,如果与图10C的评价对象和弦进行数据#0对应的输入乐旨108的各音符的评价处理结束,则在该时间点对应于评价对象和弦进行数据#0而计算的综合评价点被作为该评价对象和弦进行数据#0对输入乐旨108的适合度。
例如评价对象和弦进行数据为图3B例示的#1或#2的各和弦进行的情况下,图3A对应的图10A的输入乐旨108对应的音符类型和邻接音程的数组变量数据incon[i],如通过图8的说明叙述过的那样,成为图10C的和弦进行#1的横向向右所示的数据或#2的横向向右所示的数据。对于这些数组变量数据incon[i],也执行与上述的和弦进行#0的情况同样的评价处理。例如,和弦进行#1的情况下,如图10C所示,由于没有与图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级(step)中移调后的数据与输入乐旨108进行比较。
接着,说明图1的旋律生成部105的动作的概略。首先,图11是表示图1的乐句集合DB106的数据结构例的图。如图11A所示,乐句集合DB106中,存储#0,#1,···等多个乐句集合数据的记录,在最后存储终端和弦。
1个记录的乐句集合数据如图11B所示,由A旋律数据、B旋律数据、C旋律(副歌旋律)数据、尾声1数据、尾声2数据的、多个乐句数据构成。
图11B的各乐句数据如图11C所示,由#0,#1,···等多个音符数据构成,在最后存储终端和弦。各音符数据对应于构成各乐句的1小节以上的各个音符,是指示各乐句的旋律音的发音的数据。如图11D所示,1个音符数据由以下数据构成:将与该音符数据对应的音符的发音定时例如表示为从乐句的开头起的经过时间的“时间”数据、表示音符的长度的“长度”数据、表示音符的强度的“强度”数据、以及表示音符的音高的“音高”数据。通过这些数据,表现构成乐句的各音符。
图1的旋律生成部105从和弦进行选择部102输出的#0,#1,#2的和弦进行候选指示数据109所对应的3个和弦进行候选中的1个中,将与用户指定的和弦进行候选、或者适合度最高的和弦进行候选对应的曲构造数据(参照图6),从伴奏/和弦进行DB103读入。旋律生成部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的情况下,具备演奏键盘和检测该演奏键盘的按键状态并经由***总线1408通知CPU1401的键矩阵电路。输入部1404具备声音输入部101-2的情况下,具备歌声输入用的麦克风和在将从该麦克风输入的声音信号变换为数字信号后将歌声的音高信息提取并经由***总线1408通知CPU1401的数字信号处理电路。另外,音高信息的提取也可以由CPU1401执行。输入部1404具备音符输入部101-3的情况下,具备音符输入用的键盘和检测该键盘的音符输入状态并经由***总线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的判断是“否”),则继续重复处理,如果指示了结束(步骤S1602的判断是“是”),则结束图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中存储的多个和弦进行数据的重复处理(repetitiveprocess)的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的判断是“是”,则CPU1401将变量数据n表示的第n个和弦进行数据#n(图5A参照)从伴奏/和弦进行DB103读入RAM1403内的和弦进行数据区域(步骤S1704)。该和弦进行数据#n的数据形式具有例如图5B、图5C、图5D中示出的格式。
接着,CPU1401判断从伴奏/和弦进行DB103读入RAM1403内的和弦进行数据#n用的数组变量数据要素iChordAttribute[n][0]的、表示和弦进行数据#n的乐曲流派(musicgenre)的值,是否与用户事先通过没有特别图示的开关设定的、RAM1403内的变量数据iJunleSelect中存储的表示乐曲流派的值相等(步骤S1705)。如果步骤S1705的判断是“否”,则该和弦进行数据#n与用户希望的乐曲流派不一致,所以不选择而前进至步骤S1714。
如果步骤S1705的判断是“是”,则CPU1401判断从伴奏/和弦进行DB103读入RAM1403内的和弦进行数据#n用的数组变量数据要素iChordAttribute[n][1]中的、表示和弦进行数据#n的理念(concept)的值,是否与用户事先通过没有特别图示的开关设定的、在RAM1403内的变量数据iConnceptSelect中存储的表示乐曲的理念的值相等(步骤S1706)。如果步骤S1706的判断是“否”,则该和弦进行数据#n与用户希望的乐曲理念不一致,因此不选择而前进至步骤S1714。
如果步骤S1706的判断是“是”,则CPU1401执行和弦设计数据制作处理(步骤S1707)。该处理中,CPU1401执行将通过和弦进行数据#n随着时间经过依次指定的和弦进行的信息保存在RAM1403上的数组变量数据即后述的和弦设计数据cdesign[k]中的处理。
接着,CPU1401在RAM1403上的变量数据iKeyShift中保存初始值「0」(步骤S1708)。该变量数据iKeyShift在1个八度的半音阶中在从初始值「0」开始到比在ROM1402中存储的常数数据PITCH_CLASS_N小1的数为止的范围内指定针对和弦进行数据#n的半音单位的移调(keyshift)值。常数数据PITCH_CLASS_N的值通常是1个八度内的半音数12。
接着,CPU1401判断变量数据iKeyShift的值是否比常数数据PITCH_CLASS_N的值小(步骤S1709)。
如果步骤S1709的判断是“是”,则在使和弦进行数据#n的调偏移了变量数据iKeyShift表示的移调值后,执行对输入乐旨108与和弦进行#n的适合度检查处理(步骤S1710)。通过该处理,在RAM1403上的变量数据doValue中得到和弦进行#n对输入乐旨108的适合度。
接着,CPU1401判断变量数据doValue的值是否比RAM1403上的变量数据doMaxValue大(步骤S1711)。变量数据doMaxValue是保存在当前时间点最高的适合度的值的变量,在步骤S1701中被初始化为值「0」。
如果步骤S1711的判断是“是”,则CPU1401将变量数据doMaxValue的值用变量数据doValue的值替换。此外,CPU1401在RAM1403内的数组变量数据iBestKeyShift[iBestUpdate]中保存变量数据iKeyShift的当前值。此外,CPU1401在RAM1403内的数组变量数据iBestChordProg[iBestUpdate]中保存指示伴奏/和弦进行DB103上的和弦进行数据的变量数据n的当前值。然后,CPU1401将RAM1403内的变量数据iBestUpdate增加1(以上,步骤S1712)。变量数据iBestUpdate是在步骤S1701中初始化为值「0」后、每当找到在当前时间点适合度最高的和弦进行数据则增加的数据,其值越大则表示是越上位的适合度。数组变量数据iBestKeyShift[iBestUpdate]保持变量数据iBestUpdate表示的位次中的移调值。数组变量数据iBestChordProg[iBestUpdate]保持变量数据iBestUpdate表示的位次中的伴奏/和弦进行DB103上的和弦进行的号码。
如果步骤S1711的判断是“否”,则CPU1401跳过上述步骤S1712的处理,本次的和弦进行数据#n不选择为针对输入乐旨108的自动作曲用的和弦进行数据。
然后,CPU1401将变量数据iKeyShift的值增加1(步骤S1713)。然后,CPU1401返回步骤S1709的处理。
CPU1401在一边将变量数据iKeyShift的值增加一边重复执行步骤S1709到S1713的处理后,如果1个八度的移调值的指定结束、步骤S1709的判断为“否”,则使处理前进至步骤S1714。步骤S1714中,CPU1401将伴奏/和弦进行DB103上的和弦进行数据的选择用的变量数据n增加1。然后,CPU1401返回步骤S1703的处理。
CPU1401在一边将变量数据n的值增加一边重复执行步骤S1703到S1714的一系列处理后,如果结束针对伴奏/和弦进行DB103内的全部和弦进行数据的处理、步骤S1703的判断为“否”,则结束图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向RAM1403例如以图5B、图5C、图5D的数据形式读入的和弦进行数据#n的最初的元事件(meta-event)(与图5B的和弦数据#0对应)的指针(pointer)保存在RAM1403内的指针变量数据mt中(步骤S1802)。
接着,CPU1401对和弦进行数据#n的各和弦数据(参照图5B)重复执行步骤S1803到S1811的一系列处理,直到在步骤S1811中在指针变量数据mt中顺次保存向后续元事件(图5B的和弦数据#1,#2,···)的指针并且在步骤S1803中判断为到达了终端(图5B的「终端」)。
在上述重复处理中,CPU1401首先判断指针变量数据mt是否指示终端(步骤S1803)。
如果步骤S1803的判断是“否”,则CPU1401提取指针变量数据mt指示的和弦数据(图5B)中的和弦基音(root)与和弦类型(参照图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的值的增加处理后,或者在步骤S1807的保存处理没有成功的情况(步骤S1808的判断是“否”的情况)下,在指针变量数据mt中保存向后续元事件(图5B的和弦数据#1,#2,···)的指针(步骤S1811),返回步骤S1803的判断处理。
如果上述步骤S1803到S1811的重复处理的结果是CPU1401将针对当前的和弦进行数据#n的和弦数据一直读入到终端(参照图5B),则步骤S1803的判断为“是”,结束图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),读入在「PartName[M]」项目(参照图6)中被指定了与在输入乐旨108的输入时由用户指定的乐句类别相同的乐句类别的在开头的小节的记录中保存的小节开始时间数据iPartTime[M],并保存在RAM1403内的变量数据sTime中(步骤S1902)。
接着,CPU1401将指示构成输入乐旨108的音符的次序的变量数据iNoteCnt的值设定为初始值「0」(步骤S1903)。
接着,CPU1401将向通过图16的步骤S1606在RAM1403中以图4的数据形式输入的输入乐旨108的最初的音符数据(与图4A的音符数据#0对应)的指针保存在RAM1403内的指针变量数据me中(步骤S1904)。
接着,CPU1401对输入乐旨108的各音符数据(参照图4A)重复执行步骤S1905到S1909的一系列处理,直到通过步骤S1909在指针变量数据me中依次保存向输入乐旨108的后续音符(图4A的音符数据#1,#2,···)的指针、并且通过步骤S1905判断为到达了终端(图4B的「终端」)。
在上述重复处理中,CPU1401首先判断指针变量数据me是否指示终端(步骤S1905)。
如果步骤S1905的判断是“否”,则CPU1401参照指针变量数据me指示的音符数据(图4B)中的作为「时间」数据的me->iTime,对其加上在步骤S1902中得到的输入乐旨108的对应小节的小节开始时间sTime,将其结果新改写(overwrite)在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将输入乐旨108中的音符数据一直读入到终端(参照图4A),则步骤S1905的判断为“是”,前进至步骤S1910的检查处理。该检查处理中,执行计算和弦进行#n对输入乐旨108的适合度的处理,结果在变量数据doValue中得到适合度。然后,结束图19的流程图中例示的处理即图17的步骤S1710的输入乐旨108与和弦进行#n的适合度检查处理。在该时间点,在变量数据iNoteCnt中得到构成输入乐旨108的音符的数量(与图3A的音符的数量对应),在音符指针数组变量数据note[0]~note[iNoteCnt-1]中得到向各个音符数据的指针。
图20是表示图19的步骤S1910的检查处理的详细例的流程图。
首先,CPU1401在对输入乐旨108的音符数进行计数的RAM1403内的变量i中保存初始值「0」(步骤S2001)。然后,CPU1401在通过步骤S2008使变量i的值每次增加1、并且通过步骤S2002判断为变量i的值比在图19的处理中最终得到的表示输入乐旨108的音符数的变量数据iNoteCnt的值小的期间,执行步骤S2002到S2008的一系列处理。
步骤S2002到S2008的重复处理中,CPU1401首先判断变量i的值是否比变量数据iNoteCnt的值小(步骤S2002)。
如果步骤S2002的判断是“是”,则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的判断是“是”时,CPU1401通过从由变量数据i指示的第i个处理对象音符所对应的音高信息ipit[i]中减去第i-1个处理对象音符所对应的音高信息ipit[i-1],从而在音符类型和邻接音程的数组变量数据incon[i×2-1](第奇数个要素)中得到通过图8的说明而叙述过的邻接音程(步骤S2007)。
当步骤S2006的判断是“否”时(开头的音符时),CPU1401跳过步骤S2007的处理。
然后,CPU1401将变量i的值增加1(步骤S2008),向输入乐旨108中的后续的音符的处理转移,返回步骤S2002的判断处理。
CPU1401在一边使变量数据i的值增加一边重复执行步骤S2002到S2008的一系列处理后,如果结束对构成输入乐旨108的全部音符数据的处理、步骤S2002的判断成为“否”,则前进至步骤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的当前的音符的定时对应的和弦信息的取得处理的详细例的流程图。
首先,CPU1401在对和弦设计数据的信息数进行计数的RAM1403内的变量k中保存初始值「0」(步骤S2101)。然后,CPU1401在一边通过步骤S2107使变量k的值每次增加1、一边通过步骤S2102判断为变量k的值比通过图18的处理最终得到的表示当前的构成评价对象和弦进行数据#n的和弦信息的数量的变量数据iCDesignCnt的值小的期间,执行步骤S2102到S2107的一系列处理。
在步骤S2102到S2107的重复处理中,CPU1401首先判断变量k的值是否比变量数据iCDesignCnt的值小(步骤S2102)。
如果步骤S2102的判断是“是”,则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的判断是“是”,则能够判断为在输入乐旨108的当前的处理对象的音符note[i]的发音定时指定了基于第k个和弦设计数据cdesign[k]的和弦信息。因此,CPU1401在变量数据key和scale中,分别保存第k个和弦设计数据的调项目cdesign[k]->iKey和音阶项目cdesign[k]->iScale的各值(步骤S2104)。
如果步骤S2103的判断是“否”,则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的判断是“是”,则能够判断为在输入乐旨108的当前的处理对象的音符note[i]的发音定时指定了基于第k个和弦设计数据cdesign[k]的和弦信息。因此,CPU1401在变量数据root和type中分别保存第k个和弦设计数据的和弦基音项目cdesign[k]->iRoot与和弦类型项目cdesign[k]->iType的各值(步骤S2106)。
如果步骤S2105的判断是“否”,则CPU1401跳过步骤S2106的处理。
在以上的处理之后,CPU1401将变量k的值增加1(步骤S2107),向后续的和弦设计数据cdesign[k]的处理转移,返回步骤S2102的判断处理。
CPU1401在一边使变量数据k的值增加一边重复执行步骤S2102到S2107的一系列处理后,如果结束对全部和弦设计数据的处理、步骤S2102的判断成为“否”,则结束图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是否相等的运算处理来实现。
如果步骤S2206的判断是“是”,则CPU1401将音符类型决定为和弦音,从ROM1402读出表示和弦音的常数数据ci_ChordTone的值并保存在音符类型与邻接音程的数组的音符类型要素的位置incon[i×2]中(步骤S2207)。然后,CPU1401结束图22的流程图中例示的处理即图20的步骤S2005的音符类型取得处理。
如果步骤S2206的判断是“否”,则CPU1401判断输入乐旨音级pc1是否包含在延伸音符音级集合pcs2中且输入乐旨音级pc2是否包含在音阶音符音级集合pcs3中(步骤S2208)。该判断运算处理作为取2的pc1次方=2pc1与pcs2(参照图7B)的每比特的逻辑与并比较其与2pc1是否相等、并且取2的pc2次方=2pc2与pcs3(参照图7C)的每比特的逻辑与并比较其与2pc2是否相等的运算处理来实现。
如果步骤S2208的判断是“是”,则CPU1401将音符类型决定为有效音符,从ROM1402读出表示有效音符的常数数据ci_AvailableNote的值并保存在音符类型与邻接音程的数组的音符类型要素的位置incon[i×2]中(步骤S2209)。然后,CPU1401结束图22的流程图中例示的处理即图20的步骤S2005的音符类型取得处理。
如果步骤S2208的判断是“否”,则CPU1401判断输入乐旨音级pc2是否包含在音阶音符音级集合pcs3中(步骤S2210)。该判断运算处理作为取2的pc2次方=2pc2与pcs3(参照图7C)的每比特的逻辑与并比较其与2pc2是否相等的运算处理来实现。
如果步骤S2210的判断是“是”,则CPU1401将音符类型决定为音阶音符,从ROM1402读出表示音阶音符的常数数据ci_ScaleNote的值并保存在音符类型与邻接音程的数组的音符类型要素的位置incon[i×2]中(步骤S2211)。然后,CPU1401结束图22的流程图所例示的处理即图20的步骤S2005的音符类型取得处理。
如果步骤S2210的判断是“否”,则CPU1401判断输入乐旨音级pc1是否包含在延伸音符音级集合pcs2中(步骤S2212)。该判断运算处理作为取2的pc1次方=2pc1与pcs2(参照图7B)的每比特的逻辑与并比较其与2pc1是否相等的运算处理来实现。
如果步骤S2212的判断是“是”,则CPU1401将音符类型决定为延伸音符,从ROM1402读出表示延伸音符的常数数据ci_TensionNote的值并保存在音符类型与邻接音程的数组的音符类型要素的位置incon[i×2]中(步骤S2213)。然后,CPU1401结束图22的流程图所例示的处理即图20的步骤S2005的音符类型取得处理。
最后,如果步骤S2212的判断也是“否”,则CPU1401将音符类型决定为避免音符,从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在RAM1403内的变量数据iTotalValue中保存初始值「0」(步骤S2301)。该数据保持用于计算关于当前的评价对象和弦进行数据#n(参照图17的步骤S1704)的相对于输入乐旨108的适合度的综合评价点。
接着,CPU1401对于变量数据i,在通过步骤S2302保存了初始值「0」后,在一边通过步骤S2321每次增加1、一边通过步骤S2303的判断为“是”即判断为变量数据i的值是比从变量数据iNoteCnt的值中减去2得到的值小的值的期间,重复执行步骤S2303到S2321的一系列处理。该重复处理对应于图10B的输入乐旨108中的每音符的i=0到7的重复处理。
在按照输入乐旨108中的每个第i个音符执行的步骤S2304到S2320的一系列处理中,CPU1401首先在RAM1403内的变量数据iValue中保存初始值「0」(步骤S2304)。接着,CPU1401对于变量数据j,通过步骤S2306保存了初始值「0」后,在一边通过步骤S2318每次增加1、一边通过步骤S2307判断为“是”即变量数据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增加到3一边将步骤S2309到步骤S2315的一系列处理重复实行4次的期间,如果步骤S2310、S2312、或S2314的中的任一个条件成立,则当前的第j个音符连接规则相对于输入乐旨108不适合,向步骤S2319转移,将变量数据j的值增加,处理向后续的音符连接规则的适合评价转移。
具体而言,步骤S2310中,CPU1401判断输入乐旨108的第i+k个音符的音符类型incon[i×2+k×2]与第j个音符连接规则的第k个音符类型ci_NoteConnect[j][k×2]是否不一致。如果步骤S2310的判断为“是”,则CPU1401由于该音符连接规则的至少1个音符类型与从输入乐旨108内的当前的处理对象(第i个)的音符开始的4个音符的音符类型的至少1个不一致,所以向步骤S2319转移。
如果步骤S2310的判断是“否”,则执行步骤S2311以及步骤S2312,对此后述。在步骤S2311以及S2312的判断都为“否”后,CPU1401在变量数据k的值比3小的情况下,步骤S2313的判断为“是”,在步骤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的判断为“是”,则CPU1401由于该音符连接规则的至少1个邻接音程与从输入乐旨108内的当前的处理对象(第i个)的音符开始的4个音符的邻接音符间的邻接音程的至少1个不一致,所以向步骤S2319转移。
通过上述一系列处理,在通过步骤S2310检测出输入乐旨108的第i+k个音符的音符类型incon[i×2+k×2]与第j个音符连接规则的第k个音符类型ci_NoteConnect[j][k×2]的一致、步骤S2310的判断为“否”后,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的判断是“是”,则CPU1401向步骤S2316转移,在变量数据iValue中,将该音符连接规则的评价点ci_NoteConnect[j][7](参照图9)累计。
另一方面,在步骤S2311的判断为“否”的情况下,经步骤S2312以及S2313前进至步骤S2314的邻接音程的评价处理。这里,CPU1401通过步骤S2311的判断为“否”后的紧接着的步骤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的判断为“否”,则关于输入乐旨108中的从第i个音符起4个连续的音符,音符类型和邻接音程全部与当前的第j个音符连接规则的音符类型以及邻接音程相适合。该情况下,CPU1401向步骤S2316转移,在变量数据iValue中,将当前的第j个音符连接规则的评价点ci_NoteConnect[j][7](参照图9)累计。
另外,不限于仅1个音符连接规则适合于输入乐旨108,例如也有与3个音的音符连接规则适合且还与4个音的音符连接规则适合的情况。因此,CPU1401在通过步骤S2319将变量数据j的值增加并且通过步骤S2307完成与全部的音符连接规则相关的评价之前,每当步骤S2309的判断为“否”或步骤S2311的判断为“是”而音符连接规则适合,则在步骤S2316中,新将适合的音符连接规则的评价点ci_NoteConnect[j][7]在变量数据iValue中累计。
然后,CPU1401将变量数据j的值增加1,向后续的音符连接规则的评价转移(步骤S2319),返回步骤S2307的判断处理。
如果对全部的音符连接规则的评价完成、步骤S2307的判断为“是”,则CPU1401在与当前的和弦进行数据#n对应的变量数据iTotalValue中,累计在变量数据iValue中累计的评价点(步骤S2320)。
然后,CPU1401将变量i的值增加1(步骤S2321),返回步骤S2303的判断处理,将处理向输入乐旨108中的后续音符转移(参照图10B)。
如果CPU1401对于输入乐旨108中的全部的音符结束全部的音符连接规则的适合评价的处理,则步骤S2303的判断为“否”。这里,输入乐旨108中的处理对象的音符的结束位置本来是输入乐旨108中的包含最终音符的4音前的音符,与之对应的变量数据i的值是「(iNoteCnt-1)-3=iNoteCnt-4」。但是,如图10B作为i=7例示的那样,最后的处理在3个音中进行,所以与结束位置对应的变量数据i的值为「iNoteCnt-3」。由此,步骤S2303的结束判断为「i<iNoteCnt-2」为“否”的情况。
如果步骤S2303的判断为“否”,则CPU1401将变量数据iTotalValue的值除以输入乐旨108中的处理过的音符数(iNoteCnt-2)而进行正规化(normalization),将该除法结果作为和弦进行#n对输入乐旨108的适合度,保存在变量数据doValue中(步骤S2322)。然后,CPU1401结束图23的流程图即图20的步骤S2009的音符连接性检查处理。
图24是表示在图16的自动作曲处理中、在步骤S1607的和弦进行选择处理之后执行的步骤S1608的旋律生成处理的详细例的流程图。
首先,CPU1401将RAM1403的变量区域初始化(步骤S2401)。
接着,CPU1401将通过图16的步骤S1607的和弦进行选择处理选择的、例如用户指示的和弦进行候选所对应的曲构造数据(参照图6),从伴奏/和弦进行DB103读入(步骤S2402)。
然后,CPU1401在将变量数据i的值设定为初始值「0」后(步骤S2403),在一边通过步骤S2409将i的值增加一边通过步骤S2404判断为到达了曲构造数据的终端之前,按由变量数据i指示的曲构造数据上的小节的每个乐句,一边参照输入乐旨108、在ROM1402中存储的乐句集合DB106中登记的乐句集合(参照图11)、以及在ROM1402中存储的规则DB104(参照图9),一边自动生成该乐句的旋律。变量数据i通过将其值通过步骤S2409从0开始每次增加1,从而依次指定图6例示的曲构造数据的「Measure」项目的值,指定曲构造数据上的各记录。
具体而言,首先,CPU1401判断是否达到了曲构造数据的终端(步骤S2404)。
如果步骤S2404的判断是“否”,则CPU1401判断由变量数据i指定的曲构造数据的当前小节是否与输入乐旨108被输入的小节一致(步骤S2405)。
如果步骤S2405的判断是“是”,则CPU1401将该输入乐旨108直接作为旋律110(参照图1)的一部分,向例如RAM1403上的输出旋律区域输出。
如果步骤S2405的判断是“否”,则CPU1401判断当前的小节是否是副歌旋律的开头小节(步骤S2406)。
如果步骤S2406的判断是“否”,则CPU1401执行旋律生成1处理(步骤S2407)。
另一方面,如果步骤S2406的判断是“是”,则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的判断是“是”,则CPU1401将输入乐旨108的旋律作为当前的小节的旋律拷贝到RAM1403的规定区域中。然后,CPU1401向步骤S2507的旋律变形处理转移。
如果步骤S2501的判断是“否”,则CPU1401对于含有当前的小节的乐句的类别,判断是否旋律已生成且小节的偶数/奇数一致(步骤S2503)。
如果步骤S2503的判断是“是”,则CPU1401将已生成的旋律作为当前的小节的旋律拷贝到RAM1403的规定区域中(步骤S2504)。然后,CPU1401向步骤S2507的旋律变形处理转移。
如果相应的乐句的旋律尚未生成(步骤S2503的判断是“否”),则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:动态规划)匹配(matching)处理,将由此算出的两者间的距离评价值保存在RAM1403上的变量数据doDistance中。
接着,CPU1401判断RAM1403上的变量数据doMin表示的最小距离评价值是否大于通过步骤S2605的DP匹配处理新计算出的距离评价值doDistance(步骤S2606)。
如果步骤S2606的判断是“否”,则CPU1401将变量数据doDistance中保存的新的距离评价值保存在变量数据doMin中(步骤S2607)。
此外,CPU1401将变量数据k的值保存在RAM1403上的变量数据iBestMochief中(步骤S2608)。
如果步骤S2606的判断是“是”,则CPU1401跳过步骤S2607以及S2608的处理。
然后,CPU1401将变量数据k的值增加1,向对乐句集合DB106内的后续乐句集合(参照图11A)的处理转移。
CPU1401如果结束对乐句集合DB106内的全部乐句集合的与输入乐旨108的DP匹配处理、步骤S2603的判断为“是”,则将变量数据iBestMochief表示的号码的乐句集合DB106内的乐句集合向RAM1403上的规定的区域输出(步骤S2610)。然后,CPU1401结束图26例示的流程图的处理即图25的步骤S2505的乐句集合DB检索处理。
图27是表示图25的步骤S2507的旋律变形处理的详细例的流程图。该处理执行通过图12的说明叙述过的基于音高偏移(pitchshift)或左右反转的旋律变形处理。
首先,CPU1401对将通过图25的拷贝处理得到的旋律的音符数进行计数的RAM1403内的变量i保存初始值「0」(步骤S2701)。然后,CPU1401在一边通过步骤S2709将变量i的值每次增加1一边通过步骤S2702判断为变量i的值比表示旋律的音符数的变量数据iNoteCnt的值小的期间,执行步骤S2702到S2709的一系列处理。
在步骤S2702到S2709的重复处理中,CPU1401首先取得变形类型(步骤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的判断为“否”后,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的值增加,则执行步骤S2805到S2817的一系列处理。
首先,CPU1401在对通过图25的拷贝处理得到的旋律的音符数进行计数的RAM1403内的变量i中保存初始值「0」(步骤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」表示余数运算(remaindercalculation)。
接着,CPU1401在输入的旋律的音高项目值note[i]->iPit中加上通过步骤S2807计算出的变量数据ipitdev的值,将其结果保存在表示音高信息列的数组变量数据ipit[i]中(步骤S2809)。
接着,与上述的图20的步骤S2005~S2007同样,对表示音高信息列的数组变量数据ipit[i],执行音符类型取得处理(步骤S2810)和邻接音程的计算处理(步骤S2811以及S2812)。
CPU1401如果对构成输入旋律的全部音符结束了与当前的变量数据iCnt的值对应的音高修正,则步骤S2806的判断为“否”。结果,CPU1401在步骤S2814中,对通过步骤S2810~S2812计算出的构成旋律的每个音符的音符类型以及邻接音程,执行与上述的图23的处理相同的音符连接性检查处理(步骤S2814)。另外,此时,提取并使用与所输入的旋律的小节对应的和弦进行数据中的和弦信息。
CPU1401判断通过步骤S2814的音符连接性检查处理在变量数据doValue中新得到的适合度的值是否比在变量数据iMaxValue中保持的最佳适合度的值大(步骤S2815)。
如果步骤S2815的判断为“是”,则CPU1401将变量数据iMaxValue的值用变量数据doValue的值替换(步骤S2816),将变量数据iMaxCnt的值用变量数据iCnt的值替换(步骤S2817)。
然后,CPU1401将变量数据iCnt的值增加1(步骤S2818),返回步骤S2803的判断处理。
将以上的动作对被依次增加的变量数据iCnt的值重复执行的结果是,如果对不同音高候选的全部的组合检查音符连接性的处理结束,则步骤S2803的判断为“否”。
结果,CPU1401在对变量i保存初始值「0」后(步骤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的值增加(步骤S2823),之后返回步骤S2820的判断处理。
CPU1401如果对构成所输入的旋律的全部音符数据的上述处理结束,则步骤S2820的判断为“否”,结束图28的流程图例示的处理即图25的步骤S2508的旋律优化处理。
图29是表示图24的旋律生成2处理(副歌开头旋律生成处理)的详细例的流程图。
首先,CPU1401判断副歌开头旋律是否已生成(步骤S2901)。
如果副歌开头旋律尚未生成而步骤S2901的判断为“否”,则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的判断为“是”,则CPU1401将已生成的副歌开头旋律作为当前的小节的旋律,拷贝到RAM1403的输出旋律区域(步骤S2905)。然后,CPU1401结束图29的流程图例示的处理即图24的旋律生成2处理(副歌开头旋律生成处理)。
根据以上说明的实施方式,能够将输入乐旨108与和弦进行数据的对应关系作为适合度并进行数值化,能够根据该适合度适当地选择与输入乐旨108相适合的和弦进行数据,从而能够实现自然的乐曲生成。

Claims (11)

1.一种自动作曲装置,具备处理部,该处理部执行以下处理:
音符音高偏移处理,使输入的乐句中包含的各音符数据的音高依次进行音高偏移;
适合度计算处理,每当上述音高偏移被执行,则参照规定分别连续的音符类型的连接关系的多种音符连接规则,计算指定的和弦进行数据与包含进行了上述音高偏移的音符数据的乐句之间的适合度;以及
旋律生成处理,根据基于计算出的上述适合度而选择的包含进行了上述音高偏移的音符数据的乐句,生成旋律。
2.如权利要求1记载的自动作曲装置,
作为上述旋律生成处理,上述处理部执行如下处理:
选择包含以计算出的上述适合度为最高的偏移量进行了音高偏移的音符数据的乐句,并且根据选择的该乐句生成旋律。
3.如权利要求1记载的自动作曲装置,
上述自动作曲装置还具有:
乐句输入部,输入上述乐句;以及
音符连接规则数据库,存储有上述多种音符连接规则。
4.如权利要求1记载的自动作曲装置,
上述自动作曲装置还具有乐句集合数据库,该乐句集合数据库存储有将类别分别不同的乐句进行了组合的多种乐句集合,
上述处理部还执行检索处理,该检索处理中,从包含与从外部输入的乐句相同类别并且与上述输入的乐句类似的乐句的乐句集合中,检索事先指定的类别的乐句。
5.如权利要求4记载的自动作曲装置,
上述乐句集合数据库中,作为类别分别不同的乐句而具有包含A旋律、B旋律以及副歌旋律中的某一个的乐句。
6.如权利要求4记载的自动作曲装置,
上述处理部还执行使所检索的上述乐句变形的变形处理,
作为上述音符音高偏移处理,上述处理部执行使构成进行了变形的上述乐句的各音符数据的音高在事先规定的范围内依次进行音高偏移的处理。
7.如权利要求6记载的自动作曲装置,
作为上述变形处理,上述处理部执行将构成上述乐句的各音符数据中包含的音高偏移事先规定的值的处理。
8.如权利要求6记载的自动作曲装置,
作为上述变形处理,上述处理部执行将构成上述乐句的音符数据的排列顺序变更的处理。
9.如权利要求1记载的自动作曲装置,
上述音符连接规则还规定邻接的该音符类型间的音程,
作为上述旋律生成处理,上述处理部执行以下处理:
对于构成上述输入的乐句的各音符数据,计算与该音符数据的发音定时对应的在上述和弦进行数据上的音符类型、和邻接的该音符间的音程,并且,将该音符类型及音程与构成上述音符连接规则的音符类型及音程进行比较,从而计算上述和弦进行数据相对于上述输入的乐句的适合度。
10.如权利要求1记载的自动作曲装置,
上述自动作曲装置还具有将基于由上述处理部生成的旋律的乐曲进行再现的再现部、以及显示表示该乐曲的乐谱的乐谱显示部中的至少一方。
11.一种自动作曲方法,在具有处理部的自动作曲装置中使用,上述处理部执行以下处理:
使输入的乐句中包含的各音符数据的音高依次进行音高偏移;
每当上述音高偏移被执行,则参照规定分别连续的音符类型的连接关系的多种音符连接规则,计算指定的和弦进行数据与包含进行了上述音高偏移的音符数据的乐句之间的适合度;以及
根据基于计算出的上述适合度而选择的包含进行了上述音高偏移的音符数据的乐句,生成旋律。
CN201510589523.9A 2014-11-20 2015-09-16 自动作曲装置、方法 Active CN105632476B (zh)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
CN105632476A true CN105632476A (zh) 2016-06-01
CN105632476B CN105632476B (zh) 2020-01-14

Family

ID=54150269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510589523.9A Active CN105632476B (zh) 2014-11-20 2015-09-16 自动作曲装置、方法

Country Status (4)

Country Link
US (1) US9607593B2 (zh)
EP (1) EP3023977B1 (zh)
JP (1) JP6160599B2 (zh)
CN (1) CN105632476B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106205572A (zh) * 2016-06-28 2016-12-07 海信集团有限公司 音符序列生成方法及装置
CN112820255A (zh) * 2020-12-30 2021-05-18 北京达佳互联信息技术有限公司 音频处理方法及装置

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6160598B2 (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
US10854180B2 (en) * 2015-09-29 2020-12-01 Amper Music, Inc. Method of and system for controlling the qualities of musical energy embodied in and expressed by digital music to be automatically composed and generated by an automated music composition and generation engine
US9721551B2 (en) 2015-09-29 2017-08-01 Amper Music, Inc. Machines, systems, processes for automated music composition and generation employing linguistic and/or graphical icon based musical experience descriptions
CN106448630B (zh) * 2016-09-09 2020-08-04 腾讯科技(深圳)有限公司 歌曲的数字乐谱文件的生成方法和装置
JP6500869B2 (ja) * 2016-09-28 2019-04-17 カシオ計算機株式会社 コード解析装置、方法、及びプログラム
JP6500870B2 (ja) * 2016-09-28 2019-04-17 カシオ計算機株式会社 コード解析装置、方法、及びプログラム
CN107248406B (zh) * 2017-06-29 2020-11-13 义乌市美杰包装制品有限公司 一种自动生成鬼畜类歌曲的方法
JP6889420B2 (ja) * 2017-09-07 2021-06-18 ヤマハ株式会社 コード情報抽出装置、コード情報抽出方法およびコード情報抽出プログラム
CN108281130B (zh) * 2018-01-19 2021-02-09 北京小唱科技有限公司 音频修正方法及装置
US10593313B1 (en) * 2019-02-14 2020-03-17 Peter Bacigalupo Platter based electronic musical instrument
US11037538B2 (en) 2019-10-15 2021-06-15 Shutterstock, Inc. Method of and system for automated musical arrangement and musical instrument performance style transformation supported within an automated music performance system
US10964299B1 (en) 2019-10-15 2021-03-30 Shutterstock, Inc. Method of and system for automatically generating digital performances of music compositions using notes selected from virtual musical instruments based on the music-theoretic states of the music compositions
US11024275B2 (en) 2019-10-15 2021-06-01 Shutterstock, Inc. Method of digitally performing a music composition using virtual musical instruments having performance logic executing within a virtual musical instrument (VMI) library management system
JP7475993B2 (ja) * 2020-06-30 2024-04-30 ローランド株式会社 自動編曲プログラム及び自動編曲装置
CN112863465B (zh) * 2021-01-27 2023-05-23 中山大学 基于上下文信息的音乐生成方法、装置及存储介质

Citations (13)

* 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
US5235125A (en) * 1989-09-29 1993-08-10 Casio Computer Co., Ltd. Apparatus for cross-correlating additional musical part with principal part through time
US5403967A (en) * 1992-10-05 1995-04-04 Kabushiki Kaisha Kawai Gakki Seisakusho Electronic musical instrument having melody correction capabilities
CN1134580A (zh) * 1995-02-02 1996-10-30 雅马哈株式会社 产生从演唱声导出的合唱声的和声合唱装置
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
US6124543A (en) * 1997-12-17 2000-09-26 Yamaha Corporation Apparatus and method for automatically composing music according to a user-inputted theme melody
US20020007721A1 (en) * 2000-07-18 2002-01-24 Yamaha Corporation Automatic music composing apparatus that composes melody reflecting motif
JP2004171019A (ja) * 1998-09-09 2004-06-17 Yamaha Corp 自動作曲装置および記憶媒体
CN101719366A (zh) * 2009-12-16 2010-06-02 德恩资讯股份有限公司 一种音乐符号与音谱记号的编辑及显示方法及伴唱机***
JP2013104878A (ja) * 2011-11-10 2013-05-30 Yamaha Corp 楽曲生成装置
US20140069263A1 (en) * 2012-09-13 2014-03-13 National Taiwan University Method for automatic accompaniment generation to evoke specific emotion

Family Cites Families (25)

* 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
JP3234593B2 (ja) * 1992-10-05 2001-12-04 株式会社河合楽器製作所 電子楽器
JP3152123B2 (ja) * 1995-09-11 2001-04-03 カシオ計算機株式会社 自動作曲機
JP3718919B2 (ja) 1996-09-26 2005-11-24 ヤマハ株式会社 カラオケ装置
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 ヤマハ株式会社 携帯通信端末装置
JP3724347B2 (ja) 2000-07-18 2005-12-07 ヤマハ株式会社 自動作曲装置及び方法並びに記憶媒体
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
JP3666577B2 (ja) 2000-07-18 2005-06-29 ヤマハ株式会社 コード進行修正装置、コード進行修正方法及び同装置に適用されるプログラムを記録したコンピュータ読取り可能な記録媒体
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
US9372925B2 (en) * 2013-09-19 2016-06-21 Microsoft Technology Licensing, Llc Combining audio samples by automatically adjusting sample characteristics
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
JP2015206878A (ja) 2014-04-18 2015-11-19 ソニー株式会社 情報処理装置および情報処理方法
JP6079753B2 (ja) * 2014-11-20 2017-02-15 カシオ計算機株式会社 自動作曲装置、方法、およびプログラム
JP6160598B2 (ja) * 2014-11-20 2017-07-12 カシオ計算機株式会社 自動作曲装置、方法、およびプログラム

Patent Citations (13)

* 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
US5235125A (en) * 1989-09-29 1993-08-10 Casio Computer Co., Ltd. Apparatus for cross-correlating additional musical part with principal part through time
US5218153A (en) * 1990-08-30 1993-06-08 Casio Computer Co., Ltd. Technique for selecting a chord progression for a melody
US5403967A (en) * 1992-10-05 1995-04-04 Kabushiki Kaisha Kawai Gakki Seisakusho Electronic musical instrument having melody correction capabilities
CN1134580A (zh) * 1995-02-02 1996-10-30 雅马哈株式会社 产生从演唱声导出的合唱声的和声合唱装置
CN1184997A (zh) * 1996-11-29 1998-06-17 雅马哈株式会社 根据旋律转换歌声信号的装置
US6124543A (en) * 1997-12-17 2000-09-26 Yamaha Corporation Apparatus and method for automatically composing music according to a user-inputted theme melody
US6060655A (en) * 1998-05-12 2000-05-09 Casio Computer Co., Ltd. Apparatus for composing chord progression by genetic operations
JP2004171019A (ja) * 1998-09-09 2004-06-17 Yamaha Corp 自動作曲装置および記憶媒体
US20020007721A1 (en) * 2000-07-18 2002-01-24 Yamaha Corporation Automatic music composing apparatus that composes melody reflecting motif
CN101719366A (zh) * 2009-12-16 2010-06-02 德恩资讯股份有限公司 一种音乐符号与音谱记号的编辑及显示方法及伴唱机***
JP2013104878A (ja) * 2011-11-10 2013-05-30 Yamaha Corp 楽曲生成装置
US20140069263A1 (en) * 2012-09-13 2014-03-13 National Taiwan University Method for automatic accompaniment generation to evoke specific emotion

Cited By (3)

* 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 海信集团有限公司 音符序列生成方法及装置
CN112820255A (zh) * 2020-12-30 2021-05-18 北京达佳互联信息技术有限公司 音频处理方法及装置

Also Published As

Publication number Publication date
US20160148606A1 (en) 2016-05-26
JP6160599B2 (ja) 2017-07-12
EP3023977A1 (en) 2016-05-25
EP3023977B1 (en) 2019-05-01
JP2016099446A (ja) 2016-05-30
US9607593B2 (en) 2017-03-28
CN105632476B (zh) 2020-01-14

Similar Documents

Publication Publication Date Title
CN105632476A (zh) 自动作曲装置、方法
CN105632480A (zh) 自动作曲装置、方法
CN105632474B (zh) 自动作曲装置、方法以及存储介质
Kirke et al. A survey of computer systems for expressive music performance
JP6428853B2 (ja) 自動作曲装置、方法、およびプログラム
Doush et al. Automatic music composition using genetic algorithm and artificial neural networks
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
Vatolkin Improving supervised music classification by means of multi-objective evolutionary feature selection
McAdams et al. Similarity, invariance, and musical variation
Armitage Subtlety and detail in digital musical instrument design
JP6428854B2 (ja) 自動作曲装置、方法、およびプログラム
Janssen Retained or Lost in Transmission? Analyzing and Predicting Stability in Dutch Folk Songs
Collins et al. Chopin, mazurkas and Markov: Making music in style with statistics
Sabitha et al. Artificial intelligence based music composition system-multi algorithmic music arranger (MAGMA)
Bakker et al. The order of things. Analysis and sketch study in two works by Steve Reich
Bountouridis et al. A data-driven approach to chord similarity and chord mutability
Fiore Tuning Theory and Practice in James Tenney’s Works for Guitar
Kirke et al. Performance Creativity in Computer Systems for Expressive Performance of Music
Yelkenci Algorithmic Music Composition Using Linear Algebra
Schuler Methods of computer-assisted music analysis: history, classification, and evaluation
Seiça et al. Computer Generation and Perception Evaluation of Music-Emotion Associations
Ebert Transcribing Solo Piano Performances from Audio to MIDI Using a Neural Network
Arshi et al. Generating synthetic Persian music
Papageorgiou Bard: software development for algorithmic composition

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