JP3364941B2 - 自動作曲機 - Google Patents

自動作曲機

Info

Publication number
JP3364941B2
JP3364941B2 JP36054691A JP36054691A JP3364941B2 JP 3364941 B2 JP3364941 B2 JP 3364941B2 JP 36054691 A JP36054691 A JP 36054691A JP 36054691 A JP36054691 A JP 36054691A JP 3364941 B2 JP3364941 B2 JP 3364941B2
Authority
JP
Japan
Prior art keywords
melody
rhythm
pitch
pattern
setting
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.)
Expired - Fee Related
Application number
JP36054691A
Other languages
English (en)
Other versions
JPH05181409A (ja
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
Priority to JP36054691A priority Critical patent/JP3364941B2/ja
Priority to US07/998,561 priority patent/US5451709A/en
Publication of JPH05181409A publication Critical patent/JPH05181409A/ja
Application granted granted Critical
Publication of JP3364941B2 publication Critical patent/JP3364941B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Auxiliary Devices For Music (AREA)
  • Electrophonic Musical Instruments (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は音楽装置に関し、特に
メロディを自動的に生成(compose)する自動作
曲機に関する。
【0002】
【従来の技術】従来において、メロディを自動生成する
いくつかの自動作曲機が知られている(USP4,399,73
1、USP4,664,010、WO NO.86/05619、特開昭62-187
876)。USP4,399,731の自動作曲機はメロディ音高列
の生成に乱数を用いた試行錯誤方式をメロディ生成原理
としている。したがってメロディ生成空間は無限である
が、作曲知識を欠くため、好ましいメロディを得るため
の効率があまりにも低い。USP4,664,010とWO NO.8
6/05619の作曲機は与えられたメロディを変換するタイ
プのメロディ生成装置であり、変換のために数学的手法
(音高列の鏡象変換、音高・音長列の2次元空間に対す
る線形的変換)を使用する。したがって変換空間は限定
されており、固定的で数学的な(音楽的とはいえない)
作曲能力しかもたない。特開昭62-187876の作曲機は音
高列の生成にマルコフモデルを利用したメロディ生成装
置である。音高列のマルコフ過程を表わす音高の遷移表
から作成されるメロディは、遷移表に内在する音楽スタ
イルに束縛される。したがってこのメロディ生成装置
は、比較的よい効率で音楽的なメロディを生成できるも
のの、限られたスタイルのメロディしか生成できず、提
供できる作曲空間は狭い。以上の従来技術に共通してい
ることは、(1)音楽の背景や音楽の進行(例えば曲
風、音楽構造、コード進行)を考慮しない作曲機である
こと、(2)作曲機にメロディの分析、評価能力、知識
が欠けていること、(3)したがって、音楽的なメロデ
ィを生成する能力が低いこと、である。
【0003】このような点に鑑み、本件発明者は特開昭
63-250696号、特開昭63-286883号において、機械的でな
く人間的な音楽の作曲能力を課題とする自動作曲機を提
案している。この自動作曲機は音楽の進行に従ってメロ
ディを生成するタイプの先駆である。この作曲機はメロ
ディの音列を和声音と非和声音の混合列としてとらえ、
非和声音が和声音との間に形成する特徴的な関係によっ
て非和声音を分類する音楽知識を有しており、この音楽
知識をユーザーからの入力メロディ(モチーフ)の分析
に用いるとともに、モチーフに続くメロディの生成(合
成)にも利用している。更にこの作曲機は基本リズム
(モチーフのリズム)に発音タイミングを挿入あるいは
削除することにより、即ち基本リズムを変形してメロデ
ィのリズム(音長列)を生成する。基本リズムの変形は
パルススケールと呼ばれるリズム制御データ(小節のよ
うな音間区間内の各タイミングに重みをつけたデータ)
に基づいて処理している。この作曲機はモチーフの特徴
を展開した音楽的なメロディを生成することができるが
次のような欠点がある。 (A)作曲のためのデータ処理量が多い。 (B)したがって限られた処理能力のコンピュータで作
曲機を実現した場合に、応答が遅く作曲は非実時間ペー
スで行われる。 (C)リズムパターンの生成能力に限界がある(音数が
同一でも、微妙に異なるリズムパターンの生成等)。 (D)コード進行は入力装置から入力しており、音楽知
識の乏しいユーザー向きでない。 (E)作曲の条件付けに本来、作曲の一部であるべきモ
チーフとコード進行(共にユーザー入力)を必要する。
【0004】
【発明が解決しようとする課題】したがって、この発明
の主目的は音楽的な作曲能力と応答性能との総合力を従
来技術が達成し得ないレベルで達成する自動作曲機を提
供することである。更にこの発明の目的は実時間ベース
でメロディを生成、演奏可能な自動作曲機を提供するこ
とである。この発明の特定の目的はユーザーが関与して
設定される作曲条件に合わせた作曲をすばやく行える自
動作曲機を提供することである。更にこの発明の特定の
目的は自然でユーザーの要求に沿うようなリズムをもつ
メロディを少ないデータ処理量で生成できる自動作曲機
を提供することである。更にこの発明の特定の目的はユ
ーザーに格別の音楽知識を必要とすることなしに、自然
でユーザーの要求に沿うようなコード進行を効率よく生
成できる自動作曲機を提供することである。
【0005】
【課題を解決するための手段、作用】この発明によれ
ば、メロディを自動生成する自動作曲機において、生成
するメロディの曲風を設定する曲風設定手段と、生成す
るメロディの音楽構造を設定する音楽構造設定手段と、
複数種類のリズムパターンを記憶するデータベース手段
と、曲風設定手段で設定された曲風及び音楽構造設定手
段で設定された音楽構造に適合するリズムパターンを、
データベース手段から選択する選択手段と、上記選択手
段で選択されたリズムパターンを、メロディ生成時の一
要素として用い、メロディを自動生成するメロディ生成
手段と、を有することを特徴とする自動作曲機が提供さ
れる。この構成によれば、曲風及び音楽構造といった
曲条件に合う音楽素材、つまりリズムパターンを作曲の
一部として提供できる。また、この構成は多くのデータ
処理量を必要とせず、素速い(例えば完全実時間ベー
スでの)システム応答を可能にする。
【0006】好ましい構成としては、曲風としてリズム
の種類及びテンポ又はビートを設定可能とし、選択され
たリズムパターンをメロディの音長列とするとよい。
の構成の場合、従来のパルススケールによるメロディ音
長列生成方式(特開昭63-286883号)に比べ、音長列生
成のためのデータ処理量を格段に少なくできる。かつ、
生成音長列はリズムパターンデータベースから取り出
されるので、リズムの自然さを確保することができる。
更に、リズムの種類及びテンポ又はビートといった具体
的な作曲条件の設定により、ユーザーの意図により沿う
ようなメロディリズムを効率良く提供できる。
【0007】更にこの発明の一態様によれば、メロディ
を自動生成する自動作曲機において、生成するメロディ
のテンポを設定するテンポ設定手段と、このテンポ設定
手段で設定されたテンポに応じて、生成するメロディの
ビートを設定するビート設定手段と、生成するメロディ
のリズムの種類を設定するリズム種類設定手段と、生成
するメロディの楽節構造を設定する上位構造設定手段
と、この上位構造設定手段で設定された楽節構造に応じ
て、生成するメロディの小節構造を設定する下位構造設
定手段と、複数種類のリズムパターンを記憶するリズム
パターン記憶手段と、複数種類のコード進行を記憶する
コード進行記憶手段と、リズム種類設定手段で設定され
たリズム種類、ビート設定手段で設定されたビート、及
び下位構造設定手段で設定された小節構造に適合するリ
ズムパターンを、リズムパターン記憶手段から選択する
リズムパターン選択手段と、リズム種類設定手段で設定
されたリズム種類及び上位構造設定手段で設定された楽
節構造に適合するコード進行を、コード進行記憶手段か
ら選択するコード進行選択手段と、リズムパターン選択
手段で選択されたリズムパターンをメロディの音長列と
し、コード進行選択手段で選択されたコード進行をメロ
ディの音高列生成時の一要素として、メロディを自動生
成するメロディ生成手段と、を有することを特徴とする
自動作曲機が提供される。この構成によれば、選択され
るリズムパターンの音楽構造と適合し、かつユーザーの
要求に沿うような自然で変化に富むコード進行を、作曲
の一部として効率良く提供できる。
【0008】
【実施例】以下、図面を参照してこの発明の実施例を説
明する。特徴 本実施例にかかる自動作曲機(自動メロディ生成装置)
の主な特徴は作曲の条件付機能、メロディの音高列生成
機能、及びメロディパターンルールの拡張機能である。
以下、それぞれの特徴について述べる。作曲条件付装置(図1A) 実施例に組み込まれる作曲条件付装置100の機能ブロ
ック図を図1Aに示す。作曲条件付装置100は音楽構
造データベース110とコード進行データベース(CP
DB)に基づいて選択コード進行(CP)160を生成
する。更に作曲条件付装置100は音楽構造データ11
0、曲風入力130及びリズムパターンデータベース1
50とに基づき選択リズムパターン170を生成する。
選択コード進行160の列は作曲される曲のコード進行
を表わす。選択リズムパターン170の列は作曲される
メロディのリズム(音長列)を表わす。選択コード進行
160はコード進行データベース140の中から選択音
楽構造120に適したコード進行を取ることによって得
られる。選択リズムパターン170はリズムパターンデ
ータベース150から選択音楽構造120と曲風入力1
30とに合うリズムパターンを取り出すことによって得
られる。図1Aにおいて、音楽構造データベース110
は、上位構造データベース111と下位構造データベー
ス112とからなる。上位構造データベース111は音
楽の上位構造(例えば楽節)のデータベースを記憶す
る。下位構造データベース112は音楽の下位構造(例
えば楽節内部構造)のデータベースを記憶する。例えば
下位構造データベース112の各階構造エントリーは上
位構造を8小節の楽節とみたときの8小節構造を表わす
情報をもっている。選択モジュール116は上位構造デ
ータベース111から上位構造データを取りそれを選
択上位構造121として選択音楽構造120に記憶す
る。適モジュール145は選択上位構造121に合う
コード進行をコード進行データベース140から取り出
それを選択コード進行160として生成する。適性
モジュール117は下位構造データベース112の中か
ら選択上位構造121に合う属性をもつ下位構造列(例
えば8小節構造)を取り出しそれを選択下位構造12
2として選択音楽構造120に設定する。選択下位構造
122は適性モジュール155に属性テストのために与
えられる。曲風入力130は指定リズム131と指定ビ
ート(又はテンポ)132とからなる。指定リズム13
1と指定ビート(又はテンポ)132は共に適性モジュ
ール155に属性テストのために与えられる。適性モジ
ュール155はリズムパターンデータベース150の中
から選択下位構造122に適合し、かつ指定リズム13
1と指定ビート(又はテンポ)132に適合する属性を
もつリズムパターンを探し出しそれを選択リズムパタ
ーン170として生成する。このようにして生成される
選択リズムパターン170は自動メロディの音長列(各
メロディ音の発音、消音タイミング)を定める。このよ
うにして作曲条件付装置100は知識の資源である各種
データベースとユーザーからの曲風入力に基づき適正な
条件付がなされた音楽情報(選択コード進行、選択リズ
ムパターン)を作曲の一部として生成するものである。
メロディの音長列は選択リズムパターン170から得ら
れるので、後はメロディの音高列を生成することでメロ
ディが出来上がる。なお、図1Aの音楽構造データ11
0では構造の階層レベルを上位と下位の2レベルとして
いるが階層レベル数が1或いは3以上であってもよ
い。したがって、選択音楽構造の階層レベル数も1以上
任意の数であり得る。また、曲風入力を図1Aでは指定
リズム131と指定ビート(テンポ)132とによって
与えているが他の曲風パラメータを用いてもよい。
【0009】音高列生成装置(図1B) 本自動作曲機に組み込まれるメロディの音高列生成装置
200を図1Bに機能ブロックで示す。音高列生成装置
200の目的はメロディの音高列を生成することであ
る。音高列生成装置200は図1Aに示すような作曲条
件付装置100と組み合わせることが出来る(必ずしも
これには限定されないが)。その場合音高列生成装置
200は選択リズムパターン170がメロディ音の発音
タイミングを指示する都度、決定現ピッチ224を生成
する。決定現ピッチ224の列がメロディの音高列を定
める。図1Bにおいて決定現ピッチ224を生成する
際、音高列生成装置200は加算器206において前ピ
ッチ202乱数発生モジュール204からの乱数とを
加算して最初の現ピッチ候補をマルコフ生成する。現ピ
ッチ候補が入力される音種・音程列生成モジュール20
8は生成された音高列に現ピッチ候補を加えた音高列の
音種と音程の列を生成する。音種・音程列生成モジュー
ル208は現ピッチ候補の音種と音程を分類するため現
調性210(キー、スケール)と現コード212の情報
を利用する。音種・音程列生成モジュール208の出力
は現ピッチ候補までのメロディ音列のパターンを表わ
し、その情報がマッチングモジュール214に与えられ
る。マッチングモジュール214は与えられるメロディ
(音列)パターンについてメロディパターンルール(デ
ータ)ベース216を検索する。検索の結果、メロディ
パターンルールベース216にモジュール208の出力
が定めるメロディパターンに相当するエントリーが含ま
れない場合、検索結果判定モジュール218でNOとな
り、次候補生成モジュール220で次の現ピッチ候補が
生成される。次候補生成モジュール220は222に示
ピッチ+乱数の情報を用いて次の現ピッチ候補を生
成する。再び音種・音程列生成モジュール208とマッ
チングモジュール214の動作が繰り返され、この新た
な現ピッチ候補についてその妥当性が評価される。メロ
ディパターンルールベース216に音種・音程列生成モ
ジュール208の出力が相当するメロディパターンがエ
ントリーされていれば検索結果判定モジュール218
でYESが成立し、その時の現ピッチ候補が決定現ピッ
チ224として生成される。次のメロディ音の生成時
決定現ピッチ224は前ピッチ202となり上述
した動作が繰り返されて新たな現ピッチが決定される。
このようにして音高列生成装置200はメロディパター
ンルールベース216を利用することにより、メロディ
の音高をリアルタイムで順次生成することが出来る。し
たがって音高列生成装置200の出力(決定ピッチ2
24)を実時間演奏系228(電子音源を含み、リズム
パターンが与えられている)に与えることにより作曲
と演奏とを同時にリアルタイムで実行することが出来
る。すなわち音高列生成装置200はリアルタイムの作
曲能力を有するものである。
【0010】メロディパターンルール拡張装置(図1C) 図1Cにメロディパターンルール拡張装置300の機能
ブロック図を示す。メロディパターンルール拡張装置3
00は図1Bに示すような音高列生成装置(自動メロデ
ィ生成装置)が参照するメロディパターンルールベース
216を拡張する機能を実現するものである。メロディ
パターンルール(データ)ベース330(216)のう
ち330Fは自動作曲機に固定的に組み込まれた固定メ
ロディパターンルールベースであり、330Eの部分が
メロディパターンルールベースの拡張部である。メロデ
ィパターンルール拡張装置300によれば、この拡張部
330Eのメロディパターンルールをユーザー入力メロ
ディ302に基づいて作成することが出来る。このルー
ル作成を行う部分がメロディパターン(音種・音程列)
生成ブロック310である。ユーザー入力メロディ30
2はメロディパターン生成ブロック310の音程分類モ
ジュール312と音種分類モジュール316に入力され
る。音程分類モジュール312はユーザー入力メロディ
302の隣り合う音の間に形成される音程を評価して音
程列を形成する。例えば314に示すように音程分類
モジュールは音が同音(モーションなし)か上行順次
進行か下行順次進行か上行跳躍進行か下行跳躍進行かと
いったように音程を分類する。316はユーザー入力メ
ロディ302の各音の音種を分類して音種列を形成す
る。音種分類モジュール316はメロディ音の音種を分
類するためにキー・スケール・コード318の情報と
各音種の標準ピッチクラスセット(PCS)メモリ32
0の情報を利用する。例えば322に示すように音種
分類モジュール316はメロディ音の音種がコードトー
ンかスケールノートかアェイラブルノートかテンショ
ンノートかアヴォイドノートかといったようにして音種
を分類する。音程分類モジュール312の音程列出力と
音種分類モジュール316の音種列出力はユーザー入力
メロディ302のパターン即ちユーザー入力メロディか
ら導かれるメロディパターンのルールを表わす。このル
ールはメロディパターンルールベースの拡張部330E
に記憶される。メロディ生成の際、自動メロディ生成モ
ジュール340(例えば図1Bの音高列生成装置20
0)は拡張部330Eを含むメロディパターンルールベ
ース330の全体を利用してメロディを生成する。この
ようなメロディパターンルール拡張装置300を設ける
ことによりユーザーが希望するメロディを生成する能
力が高い自動作曲機を提供することが出来る。
【0011】ハードウェア構成(図2) 図1A、図1B、図1Cで述べたような機能を実現する
代表的なハードウェア構成を図2に示す。CPU2はR
OM4に記憶されるプログラムに従ってシステム全体を
制御する。ROM4はプログラムの他各種固定データ
(上述したデータベース等)を記憶するRAM6は種
々の変数一時データを記憶するものでCPU2のワ
ーキングメモリとして使用される。鍵盤8は通常の電子
鍵盤楽器の鍵盤で構成できユーザーのメロディ入力に
使用される。入力装置10には曲風入力装置や自動メロ
ディ生成の開始、停止入力装置等まれる。鍵盤8と
入力装置10の状態は適宜CPU2に読み取られ対応
する処理が行われる。音源12はCPU2の制御のもと
に楽音信号を発生する。サウンドシステム14は音源1
2からの楽音信号を受けそのサウンドを再生する。表
示装置16はCPU2の制御のもとにシステムの機能や
メッセージ等を表示する。表示装置16にはLEDや液
晶ディスプレイ等が含まれる。クロック発振器18は音
楽分解能時間が経過する毎にパルスを発生してCPU2
に割込みをかけ、割込みプログラム(後述するインター
ラプトルーチン)を実行させる。
【0012】自動メロディ生成機能(図3) 図2の構成に組み込まれる自動メロディ生成機能のブロ
ック図を図3に示す。自動メロディ生成機能はメロディ
生成に必要な情報を入力する入力手段20、音楽データ
を生成する手段30、メロディの分析評価を行う分析評
価手段40、クロック発振器60、リズムカウンタ7
0、メロディメモリ80、音源50を含む。入力手段2
0には指定リズム種RHYを入力するリズムセレクタ2
1、キーコードKCを入力する鍵盤装置22、指定テン
ポTMPを入力するテンポ設定手段23を含む。なお、
入力手段20にはこの他に自動メロディ生成開始停止を
指示する手段含むが図示省略してある。生成手段3
0において構造生成手段32は音楽構造データベース3
1から音楽構造データを取り出す。取り出された音楽構
造データは上位構造データとそれに合う下位構造データ
からなる。コード生成手段34はコード進行データベー
ス33から音楽構造と曲風(指定リズム種RHY)に合
うコード進行を取り出しリズムカウンタ70からの現
時刻TにおけるコードCHOを出力する。リズムパター
ン生成手段36はリズムパターンデータベース35から
音楽構造と曲風(指定リズム種RHYと指定テンポTM
P)に合うリズムパターンPATを取り出す。詳細には
指定テンポTMPはテンポビート対応マップ48によ
りビート種BEAT変換され、これがリズムパターン生
成手段36におけるリズムパターン生成の条件付の1つ
としてリズムパターン生成手段36に与えられる。この
ようにコード生成手段34、構造生成手段32、リズム
パターン生成手段36は図1Aで述べたような適性モジ
ュールの機能を有している。乱数発生手段38は乱数メ
モリ手段37からの乱数データをRANとして音高デー
タ生成手段39に与える。音高データ生成手段39は乱
数データRANと前ピッチとから現音高(ピッチ)候補
PITを生成する。分析評価手段40において音種分類
手段42は(現調性の)キーと(現)コードCHOと音
高データ(音高データ生成手段39の出力或いは鍵盤装
置22の出力)を受けてその音種NTを標準ピッチク
ラスセットメモリ41を参照して分類する。音程分類手
段43は前音高と現音高(候補)の間に形成される音程
Tとして分類する。音種分類手段42と音程分類手
段43の分類結果は音種、音程列メモリ47に記憶され
る。固定メロディパターンデータベースメモリ45は図
2のROM4におかれる。拡張メロディパターンデータ
ベースメモリ46はメロディパターンデータ(ルール)
ベースの拡張用としてRAM6におかれる。評価手段4
4は音種、音程列メモリ47からの音種、音程列(メロ
ディパターン)について固定メロディパターンデータベ
ースメモリ45と拡張メロディパターンデータベースメ
モリ46を検索し、検索の結果、該当するルールがあれ
OKとの評価結果JDGを出力する。これにより現
音高PIT(またはKC)が確定する。リズムカウンタ
70はクロック発振器60から音楽分解能時間毎に与え
られクロックパルスをカウントして現時刻データTを
出力するメロディメモリ80にはPIT(音高)とT
(タイミング)の列であるメロディ音列のデータが記憶
される。音源50はメロディ音の発音タイミングの都
度、その音高データPITを受け対応する楽音信号を
発生する。
【0013】各種音楽要素の表現形式(図4〜図6) 以下の実施例の説明(特にフローの説明)において各種
音楽要素は主として文字表現(記号表現)を使用し、必
要に応じて数値表現を使用してある。以下に各種音楽要
素の文字表現と数値表現(マシンレベルの表現)との対
応関係を図4〜図6に参照して説明する。コードタイプ
の文字表現はCHO(TYPE)である。コードタイプ
MAJは数値0、MINは数値1、7THは数値2、M
IN7は数値、MAJ7は数値4でそれぞれ数値表現
される。マシンにおけるコードタイプのデータ長は例え
ば6ビットであり、これにより最大64種類のコードタ
イプを表現可能である。コードルートとキーの文字表現
はそれぞれCHO(ROOT)とKEYである。コード
ルート又はキーはそのピッチクラス(音名)によって特
定される。ピッチクラスCは数値0、C#は1、Dは
以下同様にしてBは11で数値表現される。従っ
て、コードルートとキーの有効データ調は4ビットであ
る。音楽構造(上位/下位)における上位音楽構造はS
TR1Dで文字表現され、下位音楽構造はSTR2Dで
文字表現される。AAの上位音楽構造は1H、BBは2
H、CCは4H……によって数値表現される。下位音楽
構造aaは1H、bbは2H、ccは4H……により数
値表現される。実施例の装置では構造データの有効長を
4ビット(ニブル)で表現している。リズム種はRHY
で文字表現する、リズム種ROCK(ロック)は1H、
DISC(ディスコ)は2H、16BE(16ビート)
は4H、SWIN(スウィング)は8H、WALT(ワ
ルツ)は10Hでそれぞれ数値表現される。音高データ
とキーコードはそれぞれPITとKCによって表現され
る。音高データとキーコードはピッチクラスとオクター
ブとによって特定される。実施例では数値0がC2(ピ
ッチクラスがCでオクターブが第2オクターブ)のピッ
チを表わしピッチが半音上がるごとに+1する数値でピ
ッチを表現している。音種はNTで文字表現される音種
コードトーン(CHOT)は数値0、アェイラブルノ
ート(AVAI)は数値1、スケールノート(SCA
L)は数値2、テンションノート(TENS)は数値
3、アヴォイドノート(AVOI)は数値4で表現さ
れ、エンドマーク(END)はHで表現される、音程
の記号表現はMTである、同音(SAME)は数値0、
上行順次進行(+STEP)は数値1、下行順次進行
(−STEP)は数値2、上行跳躍進行(+JUNP)
は数値3、下行跳躍進行(−JUNP)は数値4で表現
され区切りマーク(SEP)はHで表現される。評価
結果はJDG(フラグJDG)で文字表現され、NGの
評価結果は数値0、GOODの評価結果は数値1で表現
される。USER_MELはNOを数値0、YESを数
値1で表現する。ピッチクラスセットの要素(ピッチク
ラス)は次のように表現される。ピッチクラスCが1
H、C#が2H、Dが4H以下同様にしてBが800
Hで表現される。即ちピッチクラスは12ビット中のビ
ット位置(例えば最下位即ち第0ビット位置がC)にお
けるビット値“1”によって表わされる。ピッチクラス
の集合であるピッチクラスセットはこのような12ビッ
トデータ表現間のビットごとの論理和で表現される。例
えばCとDからなるピッチクラスセットは1Hと4Hと
の論理和即ち5Hによって表現される。ピッチクラスセ
ットの各文字表現はコードトーンのピッチクラスセット
はPCS(CT)であり、CTの代りにN、SN、A
N、AVを用いればそれぞれテンションノート、スケ
ールノート、アェイラブルノート、アヴォイドノート
のピッチクラスセットを文字表現する。リズムパターン
の文字表現はPATである。リズムパターンの要素は1
6ビットデータで表現され、各ビット位置が1小節を1
6分割したときの各タイミングを表わす。リズムパター
ンはキーオンパターン(発音タイミングのパターン)と
キーオフパターン(消音タイミングのパターン)とから
なる。小節線における発音タイミング或いは消音タイミ
ングは1Hで数値表現される。小節線から1/16小節
後における発音・消音タイミングは2Hで表現される。
以下同様である。リズムパターンの要素の集合であるキ
ーオンパターン或いはキーオフパターンは16ビットデ
ータ要素間のビットごとの論理和によって表現される。
例えば1小節が4拍の拍子において1拍目と2拍目が発
音タイミングとなるキーオンパターンは1Hと10Hの
論理和11Hによって表現される。ビート種は4BEA
Tが1H、8BEATが2H、16BEATが4Hでそ
れぞれ数値表現される。
【0014】各種データの記憶形式(図7〜図14) 次に各種データの例を図7〜図14を参照して説明す
る。データ長(1ワード)は16ビットである。データ
メモリの呼び名とデータメモリの先頭アドレス(先頭記
号番地)は同じ呼び名で呼ぶ。例えばコード進行データ
メモリはCPMで呼ばれ、コード進行データメモリの先
頭アドレスも同じくCPMで呼ばれる。図7に標準ピッ
チクラスセットデータベースメモリを示す。標準ピッチ
クラスセットデータベースメモリはコードトーンメモリ
CT、テンションノートメモリN、スケールノート
モリSNとからなる。コードトーンメモリCTはコード
タイプを受けてそのコードタイプの標準ピッチクラス
セットをかえすテーブルである。例えばコードトーンメ
モリCTの記号番地MAJにあるデータ91Hはコード
タイプMAJの標準ピッチクラスセットがC、E、Gで
あることを示している。ここに標準ピッチクラスセット
とはコードルートをCとした時のピッチクラスセットの
ことである。言すると、標準ピッチクラスセットデー
タベースメモリは各音種のピッチクラスセットを相対的
な音程(音程構造)で表現したものである。テンション
ノートメモリNはコードタイプに対してテンションノ
ートの標準ピッチクラスセットをかえすテーブルであ
る。例えばコードタイプMAJに対してテンションノー
トメモリPNは、F#、A、Bが標準ピッチクラスセ
ットであることを示すデータ44Hをかえす。スケー
ルノートメモリSNはリズム種(又はスケールの種類)
に対してスケールノートの標準ピッチクラスセットデー
タベースメモリをかえすテーブルである。例えばリズム
種ロック(ROCK)に対してスケールノートメモリS
Nはデータab5Hをかえしてスケールノートの標準ピ
ッチクラスセットデータベースメモリがC、、E、
F、G、A、Bであることを知らせる。図8に固定メロ
ディパターンデータ(ルール)ベースメモリMPM1
と、音種、音程データメモリNTM、MTMを示す
定メロディパターンデータベースメモリMPM1は図2
のROM4におかれる。メモリMPM1はメロディパタ
ーンのルールベースを実現するものであり、各ルールは
2ワード(32ビット)で表現される。各ルールは音種
列と音程列からなる。例えばメモリMPM1の最初のル
ールはコードトーン(CHOT)から上方向(上行)
次進行(+STEP)によりアヴェイラブルノート(A
VAI)に進み、アヴェイラブルノートから上方向順次
進行(+STEP)によりコードトーン(CHOT)に
進むパターンを表わしている。2ワードのルールデータ
において各音種、各音程は4ビット(1ニブル)で表現
される。従ってこの記憶形式の場合ルールで表現され
るメロディパターンの音の数は最大で4つである。ルー
ルの第2ワードである音程列ワードのSEPニブルはル
ールの終了マーク(ルールエントリー間の区切りマー
ク)である。メモリMPM1の最終アドレスには固定メ
ロディパターンルールベースの終端を示すコードEND
が書かれている。MPM1と同様の記憶形式をもつメモ
リMPM2はRAM6にメロディパターンルールベース
の拡張用として設けられる。
【0015】音種列メモリNMと音程列メモリM
は入力メロディパターン(鍵盤8からのユーザー入力メ
ロディから導かれるメロディパターン、又は自動生成メ
ロディから導かれるメロディパターン)を表現するもの
である。NMとMMは共にRAM6に形成される1
ワード(16ビット)音種列メモリNMにおいて、各
音種は1ニブル(4ビット)で表わされ同様に1ワード
(16ビット)の音程列メモリMMにおいて、各音程
データ項目は1ニブル(4ビット)で表現される。従っ
てNM、MMにより最大4音分の入力メロディパタ
ーンが表現される。後述するように新たなメロディ音の
生成(自動生成或いは鍵盤8からの新しいメロディ音の
入力)に対してNMとMMはニブルを単位とする右
シフトレジスタとして操作される。生成開始の際或い
は小節線のタイミングでNTMとMTMの内容は右端の
ニブルがENDニブルとなるように初期化される。従っ
て図8に示すNTMとMTMは初期化の後3音までの
パターンが入った状態を示している。メロディパターン
ルールベースの拡張処理においてNTMとMTMの内容
は追加ルールとしてRAM6内の拡張メロディパターン
ルールベースに追加される。メロディの自動生成処理に
おいてNTMとMTMの内容はメロディパターンルール
ベースから対応するルールエントリーの有無を検索する
ために用いられる。図9にテンポ・ビト変換マップT
BTMと乱数メモリRANMを示す。TBTMとRAN
Mは共にROM4におかれる。テンポ・ビト変換マッ
プTBTMは入力装置10からの指定テンポに対してビ
ート種(例えば16ビット)をかえすテーブルである。
テンポ・ビト変換マップTBTMの出力は図1Aで述
べたようにリズムパターンの条件付に使用される。乱数
メモリRANMは乱数データを記憶する。乱数メモリR
ANMはメロディの自動生成モードにおいて新たなメロ
ディ音の音高候補を得る際に利用される。乱数メモリR
ANMの最終アドレスには乱数データの終端を示すエン
ドマーク(ffffH)が記憶される。図10にコード
進行データベースメモリCPMを示す。このメモリCP
Mは図2のROM4におかれる。メモリCPMはコード
進行のデータベースを実現するものである。データベー
スCPMの各コード進行エントリーは次のデータ項目か
らなる。第1ワードがリズム種の属性を表わす。例えば
00111の属性データはそのコード進行がリズム種ロ
ック(ROCK)、ディスコ(DISC)、16ビート
(16BE)に合う属性を有することを示している。コ
ード進行エントリーのリズム種属性データ項目は図1A
で述べたように指定リズム種との間の属性テストに用い
られる。コード進行エントリーの第2ワードには上位に
長さ、下位に音楽構造属性が記憶される。例えば音楽構
造属性データ項目が101ならばそのコード進行が上
位構造AA又はCCには合う属性をもつが上位構造B
Bには適さない属性をもつことを表わす。音楽構造属性
データ項目は図1Aで述べたように選択上位構造に関す
るコード進行の属性テストで用いられる。コード進行エ
ントリーの第3ワード以降にはコード進行のデータ本体
が記憶される。各ワードは上位ワード(1ニブル)にコ
ードのルート、中位(2ニブル)にコードタイプ、下位
(1ニブル)にコードを記憶する。各コード進行エン
トリーの終端にはエントリー間のセパレータ(区切りマ
ーク)としてワード0000Hが記憶される。コード進
行データベースメモリCPMの終端にはデータベースの
終端マークを表わすワードffffHが記憶される。
【0016】図11に音楽構造データベースメモリを示
す。音楽構造データベースメモリは図2のROM4にお
かれる。音楽構造データベースメモリは上位構造データ
ベースメモリSTR1と下位構造データベースメモリS
TR2とからなる。上位構造データベースメモリSTR
1は曲の構造を楽節構造列として表現した上位構造列の
データベースを記憶する。従って各ワードに最大4楽節
の上位構造列データが記憶される例えば第1ニブルがA
A、第2ニブルがBB、第3ニブルがAA、第4ニブル
がENDの曲構造ワードは第1楽節がAA、第2楽節が
BB、第3楽節(最終楽節)がAAであることを示す。
上位構造データベースメモリSTR1の終端にはデータ
ベースの終端を示すワードffffHが記憶される。下
位構造データベースメモリSTR2は楽節内部構造(8
小節構造)のデータベースを記憶する。下位構造データ
ベースメモリSTR2の各下位構造エントリーは3ワー
ドからなり第1ワードが属性に割り当てられ、第2と第
3ワードが8小節の構造表現に割り当てられる。属性ワ
ード(第1ワード)はそのエントリーの楽節内部構造
(8小節の構造列)が適合する上位構造を示す情報をも
つ。例えば1100の属性データ項目はその楽節内部構
造がCCかDDの楽節には適合するがAAやBBの楽節
には適合しないものであることを表わす。下位構造デー
タベースメモリにおける属性データは図1Aで述べたよ
うに上位構造に適合する下位構造を選択するための属性
テストで用いられる。下位構造エントリーの第2と第3
ワードにおいて各小節の構造は1ニブル(4ビット)で
表現される。詳細には第2ワードの第1ニブル(最上位
4ビット)が第1小節の構造、第2ニブルは第2小節の
構造、以下同様にして第3ワードの第1ニブルは第5小
節の構造、第3ワードの第4ニブル(最下位4ビット)
が第8小節の構造を表わす。下位構造データベースメモ
リSTR2の最終アドレスにはエンドマークを示すワー
ドffffHが記憶される。
【0017】図12にリズムパターンデータベースメモ
リRPMを示す。リズムパターンデータベースメモリR
PMは図2のROM4におかれる。リズムパターンデー
タベースメモリRPMは自動生成されるメロディのリズ
ムパターン(音列)のデータベースを実現するもので
ある。リズムパターンデータベースメモリRPMの各エ
ントリーは4ワードからなり第1ワードがリズム種に関
する属性を表わし、第2ワードが上位にビート種の属
性、下位に音楽の下位構造に関する属性を記憶し、第3
ワードがキーオンパターンを表わし、第4ワードがキー
オフパターンを表わす。エントリーの第1ワードにおか
れるリズム種属性データ項目が00111ならばそのエ
ントリーのリズムパターンがリズム種ロック(ROC
K)、ディスコ(DISC)、16ビート(16BE)
には適するが、スウィング(SWIN)ワルツ(WA
LT)には適さないことを表わす。又、リズムパターン
エントリーの第2ワード下位におかれる構造属性データ
項目が101であればそのエントリーのリズムパター
ンがaa又はccの小節構造には適するがbbの小節構
造には適さないことを表わす。エントリーの第3ワード
に記憶されるキーオンパターンは1小節における各音の
発音タイミングを記述する。第4ワードにおかれるキー
オフパターンは1小節内の各音の消音タイミングを記述
する。リズムパターンデータベースメモリRPMの最終
アドレスには終端マークを表わすワードffffHが記
憶される、各リズムパターンエントリーの第1と第2ワ
ードにある属性データは図1Aで述べたようにリズムパ
ターンデータベースから選択下位構造、指定リズム、指
定ビート(テンポ)に合うリズムパターンを検索する際
性テストで使用される。実施例で使用されるその他
の定数、変数について図13と図14を参照して説明す
る。MPM2はユーザー演奏による拡張メロディパター
ンデータ(ルール)ベースないしその先頭アドレスを表
わす。拡張メロディパターンデータベースMPM2は図
2のRAM6に作成される、MPM2SIZEは拡張メ
ロディパターンデータベースのメモリサイズを表わす。
MEASは1小節の長さを表わすCP_Cはコード進
行の長さのカウンタ(コード長のアキュムレータ)であ
Tは現時刻を表わすリズムカウンタであるBAR
は小節カウンタであ、小節カウンタBARの値はT/
MEASの整数部で定められる。TMPは指定テンポを
表わすBEATは指定ビート種を表わすもので指定
テンポMPをテンポ・ビート変換マップに通すことに
よって得られる。STR1Dは上位構造データベースメ
モリSTR1から選択された上位構造(例えばAAの楽
節構造)を表わすSTR2Dは下位構造データベースメ
モリSTR2から選択した下位構造(小節構造例えばa
a)を表わす。PITは現在の音高を表わしPREV_
PITは前音高を表わす。
【0018】STR1_Pは上位構造データベースのワ
ード(アドレス)ポインタであるSTR2_Pは下位
構造データベースのワード(アドレス)ポインタであ
る。STR1_Pは上位構造要素のカウンタ(上位構
造データベースメモリにおける曲構造を表わすワード内
の楽節カウンタ)であるSTR2_Pは下位構造要
素のカウンタ(下位構造データベースメモリのエントリ
ーにおける第2、第3ワードにしめる8小節構造への小
節カウンタ)である。カウンタSTR1D_Pはデータ
ベースSTR1から選択した曲構造ワードの中から現在
の時刻における楽節構造を取り出す際に使用される。カ
ウンタSTR2D_PはデータベースSTR2の中から
選択したエントリーに対し現在の時刻における小節構
造を取り出す際に用いられる。RPM_Pはリズムパタ
ーンデータベースメモリRPMへのワード(アドレス)
ポインタである。CPM_Pはコード進行データベース
CPMへのワード(アドレス)ポインタである。RAN
M_Pは乱数データメモリRANMへのワード(アドレ
ス)ポインタである。MODEは自動作曲機のモードを
表わす。メロディを自動生成しない通常のモードはNO
RMALで示され、メロディが自動生成されるモードは
RMELODYで示されるKEYONは押鍵状態のフ
ラグであ、このフラグKEYONは押鍵状態をYE
S、離鍵状態をNOで示すPKEYONは直前のタイ
ミングでの押鍵状態を示すフラグであり押鍵状態をY
ES、離鍵状態をNOで示す。USER_MELはユー
ザーの演奏が小節内にあったかどうかを示すフラグであ
る。このフラグUSER_MELは自動生成モードRM
ELODYにおいてユーザーのメロディ演奏によるメロ
ディパターンをメロディパターンデータベースに追加す
るためのメロディパターンルール拡張モード(その間メ
ロディの自動生成は禁止される)を設定するためのフラ
グとして用いられる。
【0019】実施例の動作概要 実施例の自動作曲機はリアルタイムで作曲を行い作曲作
業と平行して作曲したものをリアルタイム演奏する。入
力装置からの生成開始指示に対し自動作曲機の動作モー
ドは自動メロディ生成モードに移行し、生成開始指示に
応答して自動作曲機は作曲にかかる曲の構造を決定す
る。この決定は音楽構造データベースから曲構造ワード
を取り出すことによって始められる。更に曲構造ワード
に含まれる最初の楽節の構造を生成開始時の構造として
選択して、選択楽節構造に適した楽節内部構造(小節構
造、下位構造)を下位構造データベースから取り出し
その最初の小節構造を曲の最初の小節構造として選択す
る。更に自動作曲機はコード進行データベースから楽節
の構造(上位構造)に適し、かつ入力装置からの指定リ
ズムに適したコード進行を取り出し、そのコード進行の
最初のコードを曲の最初のコードとして決定する。更に
自動作曲機は小節構造(下位構造)に合い、かつ、入力
装置からの指定リズムと指定ビートに合うリズムパター
ンをリズムパターンデータベースから取り出す。取り出
したリズムパターンは1小節の長さをもっており、その
1小節における自動生成メロディ音の発音タイミング情
報と消音タイミング情報がそれぞれキーオンパターン、
キーオフパターンとして書かれている。指定テンポに従
う音楽時間の進行に伴い取り出したリズムパターンから
各音楽時点における情報が読み出される。読み出した情
報が自動生成メロディ音の発音タイミングを示す時に自
動作曲機はメロディ音の音高を決定する。自動生成メロ
ディ音の決定は次のようにして行われる。自動作曲機は
乱数データメモリから乱数データを取り出しそれに前
メロディ音を加え(又は減じ)て新たに生成すべきメロ
ディ音の音高候補を作る。次に自動作曲機は音高候補ま
でのメロディパターン(音種列NTMと音程列MTMと
で定められる)を作成し、そのメロディパターンについ
てメロディパターンルール(データ)ベースMP1、
MP2を検索する。検索が失敗すれば別の音高候補を
生成して検索を繰り返す。検索が成功すればその時の候
補が新たなメロディ音の音高となる、このようにして新
たに生成されたメロディ音の音高データは音源を通して
サウンドとして再生される(演奏される)。現在の時刻
におけるリズムパターンのタイミング情報がメロディ音
の消音タイミングを示している場合には発音中のメロデ
ィ音を音源を介して消音する。リズムパターンデータベ
ースから取り出したリズムパターンは1小節の長さなの
作曲機は1小節の音楽時間が経過する毎に再度リズ
ムパターンデータベースから音楽の進行に合う適当なリ
ズムパターンを取り出す。即ちリズムパターンデータベ
ースから指定リズム、指定ビートに合い、かつ新たな小
節の構造に合うリズムパターンを取り出す。作曲機は、
コード進行データベースから取り出したコード進行をリ
ズムカウンタからの現時刻に従って走査する。本実施例
ではコード進行の長さは上位構造(楽節)の長さと同じ
である。選択中のコード進行が終了すると(1つの楽節
が終了すると)、自動作曲機は曲構造ワードの中から次
の楽節構造(上位構造)を取り出しその楽節構造に合
うコード進行をコード進行データベースから取り出す。
以上の様にしてメロディの自動生成が行われる。なお、
コード進行データベースから取り出したコード進行に基
づいて自動伴奏を行うことは容易である。本実施例の自
動作曲機は自動メロディ生成モードにおいて鍵盤からユ
ーザーのメロディ入力が行われた場合にそのメロディ
をパターン化(ルール化)し、それを追加ルールとして
メロディパターンルールベースに追加することが出来
る。これをメロディパターンルール拡張機能と呼ぶ。即
ち1小節中に鍵盤で最初の押鍵が発生すると自動作曲機
のモードはメロディルールベース拡張モード(USER
_MEL=YESで示される)に移行する。自動作曲機
は鍵盤からのユーザーメロディ音に対しその音種と音
程を評価する。評価した音種と音程はそれぞれ音程列メ
モリMTMと音種列メモリNTMに右シフト方式でロー
ドされる。次の小節線のタイミングでNTMとMTMに
は1小節の間に入力したユーザーのメロディをルール化
したメロディパターン情報が記憶される。そこで自動作
曲機はNTMとMTMにあるメロディパターン情報を拡
張メロディパターンルールベースMPM2に書き込んで
メロディパターンルールベースの拡張を実現する。小節
線タイミングでメロディパターンルールベース拡張モー
ドは自動的に解除され、メロディの自動生成が行われる
自動生成モードに復帰する。
【0020】フローの説明 以下、図15〜図36を参照して実施例を更に詳細に説
明する。メインフロー(図15) 図2のCPUが実行するメインルーチンのフローを図1
5に示す。先ず、メインルーチンはステップ15−1で
システムを初期化する。メインループ15−2〜15−
16のエントリー15−2でキースキャンを実行して鍵
盤8と入力装置10の状態を読み込む。続いて操作され
た各キーに対応して所要の処理を実行する即ち、生成
開始指示があった場合には(ステップ15−3)、生成
開始処理15−4(図18)を実行し、停止指示があっ
た時には(ステップ15−5)、停止処理15−6(図
24)を実行し、鍵盤で押鍵があった時には(ステップ
15−7)、押鍵処理15−8(図25)を実行し、鍵
盤で離鍵があった時には(ステップ15−9)、離鍵処
理15−10(図26)を実行し、入力装置10からリ
ズム切換が指示された時には(ステップ15−11)、
リズム切換15−12を実行してリズム種レジスタRH
Yに指定されたリズム種を設定し、入力装置10からテ
ンポ設定が入力された時には(15−13)、テンポ設
定15−14を実行してテンポレジスタテンポに指定さ
れたテンポを設定しその他の入力に対しては(ステッ
プ15−15)、その他の処理15−16を実行する。インタラプトルーチン(図16) 図16にインターラプトルーチンのフローを示す。イン
ターラプトルーチンは図2のロック発振器18から音
楽分解能時間の経過を表わす信号が発生する都度起動さ
れる。先ず16−1でMODE=NORMALかどう
即ちモードがノーマルかどうかを判定する。モード
がノーマルならばそのままリターンしノーマルでな
いならば(自動メロディ生成モードならば)、以下の処
理を行う。即ち、ステップ16−2で押鍵中かどうかを
調べ押鍵中なら押鍵中の処理16−3(図27)を実
行してからステップ16−9に進む。押鍵中でなけれ
ステップ16−4でUSER_MEL=YESかど
うか即ち現在の小節でユーザーからのメロディ入力が
あったかどうか(メロディパターンルールベース拡張モ
ードかどうか)を判定しUSER_MEL=YESが
そのままステップ16−9に進み、USER_MEL=
NOが成立するなら、ステップ16−5に進んでGet
B(*(RPM_P+1),TmodMEAS,1)=
1かどうか即ち自動生成メロディ音の発音時刻かどう
かを判定する自動生成メロディ音の発音時刻であれ
発音時刻の処理16−6(図33)を実行してから
ステップ16−9に進む発音時刻でなければステッ
プ16−7に進みGetB(*(RPM_P+2),
TmodMEAS,1)=1かどうか即ち自動生成
ロディ音の消音時刻かどうかを判定する自動生成メロ
ディ音の消音時刻であれば消音時刻の処理16−8
(図35)を実行してからステップ16−9に進み
音時刻でなければ直ちにステップ16−9に進む。ステ
ップ16−9ではInc CP_C,T PKEYON
=KEYONを実行してコード進行のカウンタ、リズ
ムカウンタを更新し現在の鍵状態レジスタの内容を直
前の鍵状態レジスタに写し取る。次にステップ16−1
0でコード進行の終端かどうかを調べ、終端に達して
ればステップ16−11を実行して、上位構造生成処理
(図19)及びコード進行生成処理(図2)を行う
そしてステップ16−12で小節線位置かどうかをTm
odMEAS=0から判定し小節線タイムであればス
テップ16−13を実行して下位構造生成処理(図2
0)リズムパターン生成処理(図23)及びメロディ
パターンDB拡張処理(図36)を実行する。
【0021】初期化(図17) メインルーチンの初期化15−1の詳細を図17に示
す。17−1でSTR1_P=STR1、STR2_P
=STR2、RPM_P=RPM、CPM_P=CP
M、STR1D_P=0、STR2D_P=0、CPM
D_P=0、RANM_P=RANMを実行して各種ポ
インタを初期化し、17−2でRHY=ROCK、ME
AS=16、TMP=120、BEAT=*(TBTM
+TMP)、*MPM2=f000H、KEY=C(=
0)、PREV_PIT=24(=C4)を実行し
7−3でMODE=NOMAL、KEYON=NOを
実行してセットし、最後に17−4でNTM=f000
H、MTM=f000Hを実行して音種と音程データメ
モリを初期化する。生成開始処理(図18) 生成開始処理ルーチンの詳細を18に示す。このルー
チンは入力装置生成開始指示があった時に行われるルー
チンである。先ず(18−1)音楽構造を選択するため
音楽の上位構造生成(図19)と下位構造生成(図
20)を実行する。次にコード進行生成処理18−2
(図22)を実行してコード進行データベースから上位
構造に合い、かつ指定リズムに合うコード進行を選択す
る。次にリズムパターン生成処理18−3(図23)を
実行してリズムパターンデータベースから音楽の下位
構造に合い、指定リズムに合い、かつ指定ビートに合う
リズムパターンを選択する。次にステップ18−4でT
=0によりリズムカウンタを初期化し18−5で*N
TM=f000Hにより音種メモリを初期化しステップ
18−6で*MTM=f000Hにより音程メモリを初
期化しステップ18−7でMODE=RMELODYに
より状態フラグを生成モードに設定する。上位構造生成(図19) 図19に上位構造生成ルーチンの詳細なフローを示す。
このルーチンは入力装置10から生成開始指示があった
場合、或いはコード進行の終端に達したときに実行され
る。上位構造生成ルーチンの目的は、楽曲の上位構造を
生成し且つ上位構造に合う下位構造を設定することであ
る。上位構造の生成は上位構造データベースSTR1か
ら上位構造データを取り出すことで行われる。詳細に述
べると、ステップ19−1でpost=STR1D_P
×4+3、STR1D=GetB(*STR1_P,p
ost,4)を実行して上位構造データベースSTR1
から上位構造(楽節構造)データSTR1Dを取り出
す。続いて19−2から19−5(19A)で次回の上
位構造生成ルーチンのために次の上位構造をロケートす
る。即ち19−2でSTR1D_Pをインクリメント
し、STR1D_P=4(ステップ19−3)、或いは
*STR1D_P=END(ステップ19−4)であれ
STR1D_P=0、Increment STR
1_P(ステップ19−5)を実行する。次に19−6
〜19−10(19B)において、19−1で取り出し
た上位構造に合う下位構造列をロケートする。ここでロ
ケートされた下位構造列の中から個々の下位構造が取り
出される(図20参照)。詳細に述べると、ステップ1
9−6でSTR2_P=STR2_P+3を実行し、そ
の結果*STR2_P=ffffH(ステップ19−
7)が成立するならSTR2_P=STR2(ステップ
19−8)を実行し、属性テスト19−9でGetB
(*STR2_P,STR1D,1)=1が成立するか
どうかを調べる。GetB(*STR2_P,STR
,1)=1が成立するならばSTR2D_P=0(ス
テップ19−10)を実行する。図11に示すように、
下位構造データベースSTR2にエントリーされる8個
の下位構造列(8小節構造)が選択上位構造に合うかど
うかはその下位構造エントリーの属性データを選択上
位構造データSTR1D(例えばAA)と比較すること
で判定される。
【0022】下位構造生成(図20) 図20に下位構造生成ルーチンの詳細フローを示す。こ
のルーチンは生成開始処理の最初のステップ18−1の
中で上位構造の生成ルーチンに続いて呼び出される。
又、現時刻が小節線タイムのときインターラプトルーチ
ン(図16)のステップ16−1の中で呼び出され
る。下位構造生成ルーチンの目的は新しい下位構造デー
タ(新しい小節構造データ)を得ることである。詳細に
述べると、ステップ20−1でpost=(STR2D
_P×4+3)mod16、STR2D=GetB(*
(STR2_P+STR2_P/4+1),post,
4)を実行して下位構造を得ている。20−2〜20−
4(20A)において下位構造生成ルーチンの次回の実
行のために次の下位構造をロケートしている。即ちステ
ップ20−2で下位構造要素カウンタSTR2D_P
(8小節楽節内の小節構造へのポインタ)をインクリメ
ントしSTR2D_P=8(ステップ20−3)が成立
すればSTR2D_P=0(ステップ20−4)を実行
している。GetB(図21) 図21は関数命令GetBの詳細なフローである。関数
命令GetB(data、post、nbit)は1ワ
ード中の所望の部分データ項目を得る関数である。即
ち、GetB(data、post、nbit)は16
ビットの1ワードdataのpostビット目から右に
nビットのデータをとる関数命令であり、既に述べた上
位構造生成ルーチンのステップ19−1など各種ルーチ
ンにおいて適宜呼び出されて実行される。先ず、ステッ
プ21−1でx1=dataを実行し、ステップ21−
2でX1を右に(post+1−nbit)シフトし、
ステップ21−3でx2=ffffhを実行し、21−
4でX2を左にnbitシフトし、ステップ21−5で
X2を反転し、ステップ21−6でX1とX2のビット
ごとの論理積をとる。図21の動作例では16ビットの
1ワードデータからその第8ビットから右に2ビット分
(01)を取り出している。GetB関数命令の実行の
結果、この01の2ビットは16ビットワードの第1ビ
ットと第0(最下位)ビット位置に取り出される。コード進行生成ルーチン(図22) コード進行生成ルーチンの詳細を図22に示す。このル
ーチンは生成開始処理のステップ18−2、或いは1つ
のコード進行が終了する都度ステップ16−1中で呼
び出される。コード進行生成ルーチンではコード進行デ
ータベースメモリCPMの中から指定リズム種に合い
且つ上位構造に合うコード進行を取り出している。詳細
に述べると、ステップ22−1でGetB(*CPM_
P,RHY,1)=1をチェックしてアクセスしたコ
ード進行が指定リズム種に合うかどうかの属性テストを
行ないこの属性テストに合えばステップ22−2でG
etB((*(CPM_P+1),STR1D,1)=
1をチェックしてそのコード進行が上位構造に合うか
どうかを判定している。22−1、22−2のいずれか
の属性テストに失敗した場合には、22−3〜22−6
においてコード進行データベースメモリCPMから次の
コード進行をロケートしている。即ち、22−3でコー
ド進行データメモリのワードポインタCPM_Pをイン
クリメントし22−4で*CPM_P=ffffH
(コード進行データベースの終端)かどうかをチェック
し、ステップ22−6で*(CPM_P−1)=0H
(コード進行エントリーの初め)かどうかをチェック
し、*(CPM_P−1)=0Hが不成立なら22−3
に戻り、22−4で*CPM_P=ffffHが成立す
るならポインタCPM_Pをコード進行データメモリの
先頭CPMに戻してステップ22−1に戻り、ステップ
22−6で*(CPM_P−1)=0Hが成立すれば同
じくステップ22−1に戻る。ステップ22−1と22
−2の両方の属性テストに合格した時はポインタCPM
_Pは適正なコード進行をロケートしている。そこで、
コードポインタがコード進行の最初のコードを指すよう
に設定し、ステップ22−7でCP_C=0(コード進
行長カウンタの0リセット処理)を実行している。
【0023】リズムパターン生成ルーチン(図23) リズムパターン生成ルーチンの詳細フローを図23に示
す。リズムパターン生成ルーチンは生成開始処理のステ
ップ18−3、小節線タイムに対するステップ16−1
3の中で呼びだされる。リズムパターン生成ルーチンの
目的はリズムパターンデータベースメモリRPMの中か
ら指定リズム種に合い、下位構造に合い、且つテンポ乃
至ビート種に合うリズムパターン(1小節リズムパター
ン)を取り出すことである。取り出されたリズムパター
ンは自動生成される1小節メロディのリズムパターン
(音長列)を定めるものである。詳細に述べると、ステ
ップ23−1でGetB(*RPM_P,RHY,1)
=1が成立するかどうかを見ることでアクセスしたリ
ズムパターンが指定リズム種に合うかどうかを調べてい
る。ステップ23−2ではGetB(*(RPM_P+
1),STR2D,1)をチェックすることにより、リ
ズムパターンが下位構造に合うかどうかを調べている。
23−3と23−4(23A)ではリズムパターンがテ
ンポに対応するリズム種に合うかどうかを調べている。
即ち、23−3でdata=*(RPM_P+1)、p
ost=*(TBTM+TMP)を実行し、23−4で
GetB(data,15,4)=postが成立する
かどうかをチェックする。23−1、23−2、23A
のいずれかの属性テストに失敗した場合は23B(23
−5〜23−7)においてリズムパターンデータベース
の次のリズムパターンをロケートしている。即ち、23
−5でRPM_P=RPM_P+4を実行し23−6
で*RPM_P=ffffHが成立してリズムパターン
データベースの終端が検出された時は23−7でRP
M_P=RPMを実行してリズムパターンポインタRP
M_Pをリズムパターンデータベースの先頭RPMに戻
している。全ての属性テスト(23−1、23−2、2
3A)に合格した時にはステップ23−8に進みUS
ER_MEL=NOを実行してメロディパターンルール
データベース拡張モードを解除する。停止処理ルーチン(図24) 図24は停止指示15−5に応答して行なわれる停止処
理15−6の詳細である。24−1に示すようにMOD
E=NORMALを実行してシステムの状態を通常のモ
ード(メロディの自動生成が行なわれない通常の状態)
に戻している。押鍵処理ルーチン(図25) 押鍵15−7に応答して実行される押鍵処理15−8の
詳細を図25に示す。25−1でKEYON=YESを
実行して押鍵フラグを設定し25−2でKEYBUF
=KC、PIT=KCを実行し25−3でPITを発
音する。このように鍵盤8の押鍵に対する音源12の発
音処理はメインルーチン(図15)内の押鍵処理ステッ
プ15−8内で行なわれる。
【0024】離鍵処理ルーチン(図26) 鍵盤8での離鍵15−9に対して行なわれる離鍵処理ス
テップ15−10の詳細を図26に示す。26−1でK
EYON=NOを実行して押鍵フラグを離鍵状態に設定
26−2でPITを消音する。押鍵中の処理ルーチン(図27) 図27に押鍵中の処理ルーチンの詳細を示す。このルー
チンはインターラプトルーチン(図16)の中で押鍵中
16−2(KEYON=YES)が検出されたときに呼
びだされるルーチンである。押鍵中の処理ルーチンでは
小節内の最初の押鍵を合図とするメロディパターン
ルールベース拡張モードの設定及び拡張モードにおける
ユーザー入力メロディのパターン化(音種列、音程列の
作成作業)を行なう。詳細に述べると、27−1でMO
DE=NORMALが成立すれば直ちに27−12にジ
ャンプしてPREV_PIT=PITを実行する。MO
DE=NORMAL(ステップ27−1)が不成立の場
合、即ちモードが生成モード(RMELODY)の場
ステップ27−2に進みPKEYON=NOかど
うか即ち鍵盤8で新たに押鍵が発生したかどうかを見
る。押鍵が続いている場合はステップ27−12にジャ
ンプする。新たな押鍵の発生時にはステップ27−3に
進みUSER_MEL=YESかどうか即ち既に拡
張モードになっているかどうかを調べる。既に拡張モー
ドならばステップ27−7にジャンプする。拡張モー
ドになってなければステップ27−4に進みUSER
_MEL=YESを実行して小節中にユーザーからのメ
ロディ入力があったことを記録する。次に27−5で*
NTM=f000H、*MTM=f000Hを実行して
音種と音程列のメモリを初期化する。続いて27−6で
消音命令を実行し、発音中の自動生成メロディ音を消音
する。27−3〜27−6が拡張モード設定処理27A
を定める。27−7でコード情報作成(図28)により
現在のコード情報を求め、27−8で音種分類(図2
9)を行なって押鍵されたメロディ音の音種を分類す
る。27−9で分類された結果を音種列メモリNTMに
ストアする(図30の音種ストア)。27−10で音程
分類(図31)を実行して押鍵にかかるメロディ音の前
音からの音程を分類しその結果を27−11で音程
メモリMTMにストアする(図32の音程ストア)。し
かる後、27−12に進みPREV_PIT=PITを
実行して現ピッチレジスタの内容を前回ピッチレジスタ
に移す。
【0025】コード情報作成ルーチン(図28) 図28にコード情報作成ルーチンの詳細フローを示す。
このルーチンはユーザーの入力メロディをパターン化す
るために押鍵中の処理ルーチン(図27)のステップ2
7−7で呼びだされると共に、自動メロディ生成のため
に後述する発音時刻の処理ルーチン(図33)のステッ
プ33−6で呼びだされる。コード情報作成ルーチンの
目的はコード進行データベースから選択しているコード
進行の中から現在の時刻におけるコード情報を取り出す
ことである。詳細に述べると、28−1でi=0により
コード長のアキュムレータを初期化し、28−2でj=
CPM_P+2により選択コード進行データの先頭コー
ドをロケートする。次に28A(28−3〜28−5)
において現コード(現在時刻におけるコード)をロケー
トする。即ち、28−3でi=i+GetB(*j,
5,6)を実行し28−4でi>CP_Cかどうかを
チェックし、不成立なら28−5でJをインクリメント
する。現コードをロケートしたらステップ28−6に進
みCHO=*jにより現コードのデータをCHOレジス
タに取り込む。続いて28−7でCHO(ROOT)=
(GetB(CHO,15,4)+KEY)mod1
2、CHO(TYPE)=GetB(CHO,11,
6)を実行して現コードのルートとタイプの情報を得
る。音種分類ルーチン(図29) 音種分類ルーチンの詳細を図29に示す。このルーチン
はユーザ入力メロディのパターン化のためにステップ2
7−8で呼びだされると共に、自動メロディの生成のた
めに後述する発音時刻の処理ルーチン(図33)のステ
ップ33−7の中で呼びだされる。音種分類ルーチンの
目的は着目しているメロディ音(押鍵にかかるメロディ
音或いは自動生成メロディ音のための音候補)の音種を
分類することである。このような音種分類のためのコー
ド情報作成ルーチン(図28)からのコード情報、キー
情報KEY指定リズム種情報RHY及びコードトー
スケールノート、テンションノートの標準ピッチク
ラスセットが使用される。詳細に述べると、ステップ2
9−1でpos1=(12+PIT−CHO(ROO
T))mod12、pos2=(12+PIT−KE
Y)mod12を実行する。ここにPOS1は音高PI
Tのコードルートからの音程を表わしPOS2は音高P
ITのキーからの音程を表わす。次に29−2でx1
PCS(CT)=*(CT+CHO(TYPE))、x
=PCS(TN)=*(TN+CHO(TYP
E))、x3=PCS(SN)=*(SN+RHY)に
よりコード、テンション、スケールの各ピッチクラスセ
ット(PCS)を得る。次に29−3でGetB(x
1,pos1,1)=1(コードトーン)かどうかを調
べ、成立するなら29−4でNT=CHOTを実行す
NT=CHOTは音高PITを有するメロディ音が
コードトーンであることを宣言したものである。ステッ
プ29−5ではGetB(x2,pos1,1)=1a
ndGetB(x3,pos2,1)=1が成立するか
どうか即ちアヴェイラブルノートかどうかを調べ成立
するならば29−6でNT=AVAIを実行する。NT
=AVAIは着目しているメロディ音がアヴェイラブル
ノートであることを宣言したものである。ステップ29
−7でGetB(x3,pos2,1)=1により着目
している音がスケールノートかどうかをチェックし、成
立すればその旨を宣言するため29−8でNT=SCA
Lを実行する。ステップ29−9ではGetB(x2,
pos1,1)=1によりメロディ音がテンションノー
トかどうかをチェックし、成立すればその旨を宣言する
ために29−10でNT=TENSを実行する。29−
3、29−5、29−7、29−9がいずれも不成立で
あれば29−11でNT=AVOIによりメロディ音が
アヴォイドノートであることを宣言する。参照番号29
0の動作例ではコードがD MAJORの時PITがF
#3の音がコードトーンとして分類される様子を示して
いる。ベン(Venn)図291に示すように円X1は
コードトーンのPCS(CT)、円X2はテンションノ
ートのPCS(TN)、円X3はスケールノートのPC
(SN)である。X1の要素と判定されるメロディ音
はコードトーンである。集合X2とX3とが重なる部分
はアヴェイラブルノートとして判定される。集合X3の
うち集合X1と重ならず且つ集合X2と重ならない部
分がスケールノートと判定される領域である。集合X2
のうち集合X3と重ならない部分がテンションノートと
判定される領域である。集合円X1、X2、X3の外部
がアヴォイドノートとして判定される領域である。
【0026】音種ストアルーチン(図30) 図30に音種ストアルーチンの詳細を示す。このルーチ
ンはユーザー入力メロディのパターン化(ステップ27
)と自動メロディ音の評価のための処理(ステップ
33−8内)において呼びだされる。音種ストアルーチ
ンでは音種メモリNTMを右シフトレジスタとして音
種分類NTをNTMにストアしている即ち30−1で
NTMを4ビット右シフトし30−2でNTを12ビ
ット左シフトし30−3でNTとNTMの論理和をN
TMに代入している。音程分類ルーチン(図31) 図31に音程分類ルーチンの詳細を示す。音程分類ルー
チンはステップ27−1と33−7内で呼びだされ
る。音程分類ルーチンでは現ピッチPITを前ピッチP
REV_PITと比較して両音の間に形成される音程
(モーション)を分類している。即ちPIT=PREV
_PIT(ステップ31−1)ならMT=SAME(ス
テップ31−2)としてモーションなしを宣言しPI
T−PREV_PIT>2(ステップ31−3)ならM
T=+JUMP(ステップ31−4)により上方向の跳
躍進行を宣言しPREV_PIT−PIT>2(ステ
ップ31−5)ならMT=−JUMP(ステップ31−
6)により下方向の跳躍進行を宣言しPIT−PRE
V_PIT>0(ステップ31−7)ならMT=+ST
EP(ステップ31−8)により上方向の順次進行と宣
言しPREV_PIT−PIT>0(ステップ31−
9)ならMT=−STEP(ステップ31−10)によ
り下方向の順次進行と宣言する。音程ストアルーチン(図32) 図32に音程ストアルーチンの詳細を示す。このルーチ
ンはステップ27−1(メロディパターンルールベー
ス拡張系)とステップ33−8(自動メロディ音生成
系)の中で呼びだされる。音程ストアルーチンは音程列
メモリMTMを右シフトレジスタとして操作し、分類結
果である音程データTをTMにストアする。即ち3
−1でTMを4ビット右シフトし−2で
を12ビット左シフトし−3でTとTMの論
理和をTMに代入する。
【0027】発音時刻の処理ルーチン(図33) 図33に発音時刻の処理ルーチンの詳細を示す。このル
ーチンは自動生成メロディ音の発音時刻(16−)の
時に実行されるルーチンである。即ち、現時刻がリズム
パターンのキーオンパターン中のビット“1”のタイミ
ングの時に呼びだされるルーチンである。発音時刻の処
理ルーチンの目的はメロディ音の音高を決定し発音する
ことである。このために発音時刻の処理ルーチンでは乱
数メモリRANMからの乱数を前メロディ音のピッチに
加えて現メロディ音の音高候補を作りその候補までの
メロディパターンをメロディパターンルールベースによ
って検査する。現音高候補までのパターンに一致するエ
ントリーをルールベースがもてばその現メロディ音候
補は現音のピッチとして決定される。メロディパターン
ルールベースに該当するエントリーがない場合は別の音
高候補を作りルールベースにより検査を繰り返され
る。詳細に述べると、33−1で音種音程メモリNT
M、MTNを4ビット右シフトする。33−2により音
高候補の乱数マルコフ生成を行なう。即ち、乱数メモリ
からの乱数*RANM_Pに前音のピッチPREV_P
ITを加えて現音候補を生成する。次に、33A(33
−3〜33−5)において次回のルーチン実行のために
次の乱数をロケートする。即ち、33−3で乱数ポイン
タRANM_Pをインクリメントし、33−4で*RA
NM_P=fffHにより乱数メモリの終端が検出され
た時はRANM_P=RANM(ステップ33−5)に
より乱数ポインタを乱数メモリの先頭に戻す。33−6
でコード情報作成ルーチンを呼びだす。ループ33−7
〜33−12の入口33−7で音種分類ルーチン(図2
9)と音程分類ルーチン(図31)を呼び出して音高
候補PITについてその音種と音程を分類する。33−
8で音種ストアルーチン(図30)と音程ストアルーチ
ン(図32)を呼び出して音種と音程の分類結果をそ
れぞれ音種メモリNTM、音程列メモリMTMにその
右端のニブルとしてロードする。ステップ33−9で評
価ルーチン(図34)を呼び出してNTMとMTMに
よって定められる現音高候補PITまでのメロディパタ
ーンがメロディパターンルールベースにあるかどうかを
検査する。ルールベースにエントーされてなければN
Gとなり33B(33−10〜33−12)において
次の音高候補を生成する。即ち、33−10でをイン
クリメントし33−12でZ=−1×Zを実行する。
そして、ステップ33−7に戻り、33Bで生成された
音高候補について処理を繰り返す。33Bは実行の都度
33−2で得た最初の音高候補±1、±2、±3……と
いうように順次音高候補を生成していく(ここに+1は
半音上、−1は半音下、+2は2半音上、−2は2半音
下……を表わす)。評価ルーチン33−9で音高候補ま
でのメロディパターンに一致するエントリーがルールベ
ースから見つかった場合にはGOODと成り、PREV
_PIT=PIT(ステップ33−13)を実行し、3
3−14でKEYON=YESによりキーオンフラグを
オンに設定し決定した音高PITを発音する。このよう
に自動メロディ生成モードにおいてキーオンパターンか
らキーオンの合図があるとメロディパターンルールベ
ースのルールに従うメロディ音が決定され、発音され
る。
【0028】評価ルーチン(図34) 図33のステップ33−9で呼び出される評価ルーチン
の詳細を図34に示す。評価ルーチンの目的は音種列N
TMと音程列MTMとによって定められるメロディパタ
ーンがメロディパターンルールに従うかどうかを判定す
る(メロディパターンルールベースにエントリーされた
ルールに一致するかどうかを判定する)ことである。こ
こにメロディパターンルールベースはROM4に置かれ
る固定メロディパターンルールベースMPM1とRAM
6に形成される拡張メロディパターンルールベースMP
M2とがある。評価ルーチンではこの両方のルーチンを
検索してNTMとMTMのパターンに合うルールを探し
ている。34A(34−1〜34−4)は固定メロディ
パターンルールベースの検索であり、34B(34−5
〜34−8)は拡張メロディパターンルールベースの検
索である、34−1でi=MPM1により固定メロディ
パターンルールベースの先頭をロケートし、ループ34
−2〜34−4の入口で*i=NTMand*(i+
1)=MTM(ステップ34−2)によりアクセスし
たルールの音種列と音程列がそれぞれNMとMMに
一致するかどうかをチェックしている。一致しなけれ
i=i+2(ステップ34−3)により次のルール
をロケートしステップ34−4で固定メロディパター
ンルールベースの終端(GetB(*i,15,4)=
END)が検出されないうちは34−2以下の処理を繰
り返す。ステップ34−2の(*i=NTMand*
(i+1)=MTM)が成立すればGOODを返す、3
4−で固定メロディパターンルールベースの終端が検
出されたら34−5でi=MPM2により拡張メロディ
パターンルールベースの先頭をロケートしループ34
−6〜34−8の入口(34−6)でアクセスしたル
ールの音種列と音程列がそれぞれNTMとMTMに一致
するかどうかを調べる。一致しなければi=i+2(ス
テップ34−7)により次のルールをロケートし、ステ
ップ34−8で拡張メロディパターンルールベースの終
端(GetB(*i,15,4)=END)が検出され
なければ34−6に戻る、34−6の条件が成立すれば
GOODを返す、34−8で拡張メロディパターンルー
ルベースの終端に達したらNGをかえす。消音時刻の処理ルーチン(図35) 自動メロディ音の消音時刻(キーオフパターンからキー
オフを表わすビット“1”が与えられる時刻)の時にス
テップ16−8で呼びだされる消音時刻の処理ルーチン
の詳細を図35に示す。KEYON=YES(ステップ
35−1)ならば発音中なのでその音PITを消音し
キーオンフラグをKEYON=NOに設定する(35−
2)。メロディパターンDB拡張ルーチン(図36) 小節線タイムでステップ16−13の中で呼び出される
メロディパターンデータベース拡張ルーチンの詳細を図
36に示す。このルーチンの目的はユーザーから入力
されたメロディのパターン(1小節の間に入力されたメ
ロディのパターン)をRAM6のメロディパターンルー
ルベースMPM2に追加することである。詳しく述べる
と、USER_MEL=YES(ステップ36−1)が
不成立であれば1小節の間にユーザーからのメロディ
入力はないのでそのままリターンするUSER_M
EL=YES(36−1)が成立する時は36A(3
6−2〜36−7)において拡張メロディパターンルー
ルベースMPM2の終端を検出する。即ちi=MPM2
(36−2)によりポインターを拡張メロディパターン
ルールベースの先頭にロケートし、ループの入口で*i
=ffffH(36−3)が不成立ならiをインクリメ
ントし(36−6)、36−7でメモリーオーバー(i
>MPM2+MPM2SIZE)かどうかをチェックす
る、*i=ffffH(36−3)が成立すれば*i=
*NTM、*(i+1)=*MTM、*(i+2)=f
fffH(ステップ36−4)を実行してユーザーメロ
ディパターンをメロディパターンデータベースMPM2
に書き込み*NTM=f000H、*MTM=f000
H(ステップ36−5)により音種と音程列メモリを再
初期化する。
【0029】パターンのデータフォーマット調整(図3
7〜図39) 図37〜図39のフローはNTM、MTMとメロディパ
ターンルールベースMPM1、MPM2との間のフォー
マット調整に関する処理である。図37のルーチンは評
価ルーチン(図34)の最初のステップ(図34の34
−1)及びメロディパターンルールベース拡張ルーチン
(図36)のステップ36−4のなかで呼び出される
(ステップ36−4の詳細なフローである図39参
照)。図37のルーチンはNTMとMTMによる入力な
いし評価対象のメロディパターンのフォーマットをルー
ルベースMPM1、MPM2のルールのフォーマットに
合わせるためのものである。実施例の場合、評価ルーチ
ンの入力ないしメロディパターンルールベース拡張ルー
チンの入力でMTMにはNTM上で捨てられた過去のメ
ロディ音種からの音程データ項目が1つだけ余分に入っ
ている。これをルールベースのルールの音程列のフォー
マットに合わせるには、この余分な音程データ項目(ニ
ブル)をENDニブルに変換する必要がある。この処理
を図37のルーチンは行っている。図中、記号“∨”は
ビット毎の論理和、“∧”はビット毎の論理積を表わし
ている。図38のルーチンは評価ルーチン(図34)の
ステップ34−2、34−6の評価である。このルーチ
ン(図38)では、ルールベースMPM1、MPM2か
らのルールが示すメロディパターンの全体でなくても、
その部分パターンが評価対象のメロディパターン(NT
MとMTMとで定められる)に一致すれば、評価対象の
メロディパターンはルールに従うものとする(YESを
返す)処理を行っている(これはルールベース内のルー
ル数を節約するのに有効である)。図39はメロディパ
ターンデータベース拡張ルーチンのステップ36−4の
詳細である。以上の説明、図37〜図39自体の記載、
その他の図面の記載と明細書での説明から図37〜図3
9のルーチンの詳細は明らかであるので、これ以上の説
明は省略する。
【0030】
【変形例】以上で実施例の説明を終えるが、この発明の
範囲内で種々の変形、変更が可能である。例えば、メロ
ディパターンルールベース216は音楽スタイル別にメ
ロディパターン(MP)ルールベースをもつものであっ
てもよい。図40に音楽スタイル別のメロディパターン
ルールベースとその関連構成を示す。メロディパターン
ルールベースは複数(図40では3つ)の音楽スタイル
の各々に対するルールベースを有する。図40におい
て、216AはスタイルNo.1〜No.3に共通の
(いずれのスタイルでも使用できる)MPルールグルー
プを表わし、216BはスタイルNo.1とNo.2に
共通のMPルールグループを表わし、216Cはスタイ
ルNo.1に固有のMPルールグループを表わし、21
6DはスタイルNo.2に固有のMPルールグループを
表わしている。スタイルNo.3に固有のMPルールグ
ループはない。したがって、スタイルNo.1のメロデ
ィパターンルールベースは216Aと216Bと216
Cの組合せで定められ、スタイルNo.2のメロディパ
ターンルールベースは216Aと216Bと216Dと
で定められ、スタイルNo.3のメロディパターンルー
ルベースは216Aによって定められる。自動作曲機の
動作において、選択モジュール230は曲風入力(例え
ば図1の指定リズム131)に従い、指定された音楽ス
タイルに対する選択MPルールベース232を作成する
(ルールベース216から選択する)。選択MPルール
ベース232は図1Bのメロディ音高列生成装置200
のマッチング214のような評価モジュールによってア
クセスされる。図40のような構成を用いることによ
り、自動作曲機は曲風に合うメロディを更に効率よく生
成することが容易となる。また、作曲の完全なリアルタ
イム応答を支援するために、データベースからのデータ
検索を高速化することは容易である。例を図41と図4
2に示す。図41に音楽素材データベースとその検索方
式の変形例400を示す。図41において、音楽素材
(例えばリズムパターン、コード進行)のデータベース
は、インデクステーブル403と素材データベース本体
405から成る。作曲条件として401に示すように第
1属性(例えば音楽構造)が“α”、第2属性(例えば
曲風)が“β”が与えられたとする(なお属性項目数は
2に限られないが図示の便宜上、属性項目数を2として
いる)。第1属性はM種類、第2属性はN種類あるもの
とする。インデクステーブル403は素材データベース
本体405へのインデクス情報を与えるもので、各作曲
条件(属性の組み合わせ)に対して、素材データベース
本体405に置かれる、その作曲条件に合う素材の記憶
場所(の先頭アドレス)と、その素材のエントリ数を記
憶する。動作において、作曲条件4−1からブロック4
02に示すように、INDEX+(N×α+β)×2を
計算して、インデクステーブル403をアドレッシング
し、それに書かれている素材データベース本体405へ
のアドレスX(例えば第1属性が“1”で第2属性が
“1”の素材エントリ群の先頭アドレスX1)と、次ア
ドレスに書かれているエントリ数S(例えばS1)を読
む。次に検索モジュール410の411で示すように0
〜1の乱数RANを生成し、アドレスXとエントリ数S
とデータベース本体405におけるワード数/エント
リ、例えば3を用いて、412〜414により、(RA
N×S)×3+Xを計算して検索すべき音楽素材エント
リのアドレスADDRを生成する。このアドレスADD
R(及びワードル数/エントリ分の連続後続アドレス)
で音楽素材データベース本体405をアクセスすること
により所望の音楽素材、即ち作曲条件401に合う音楽
素材をデータベースから検索出来、それを作曲の一部と
して生成できる。
【0031】図41の構成によれば、音楽素材データベ
ース405に対する所望のデータ検索を非常に高速に行
える。ただし、データベース本体405は重複したデー
タを含むことになり、メモリ効率はよくない。図42に
音楽素材データベースとその検索方式のもう1つの変形
例500を示す。この変形例500では音楽素材データ
ベースは第1と第2のインデクステーブル503、50
4とデータベース本体505から成る。この場合、デー
タベース本体405上でデータは重複しない。第1イン
デクステーブル503には第2インデクステーブル50
4へのインデクス(アドレス)情報が書き込まれる。第
1インデクステーブル503へのアクセスは、作曲条件
(第1属性=α、第2属性=β)からただちに行える。
即ち502に示すようにINDEX=1(第1インデク
ステーブル503の先頭アドレス)+(N×α+β)の
計算でただちにテーブル503をアドレッシングでき
る。511に示すように第1インデクステーブル503
から読んだデータXで第2インデクステーブル504を
アクセスする。第2インデクステーブル504には作曲
別条件にデータベース本体505における素材エントリ
数S(例えば条件1、1に対してS1)と各素材エント
リのアドレスリストが書かれている。したがって、51
2に示すようにアドレスリストの(RAN×S)番目
(ここにRANは0〜1の乱数)の項目を読み、それで
素材データベース本体505をアクセスすることにより
所望の作曲条件401に合う素材をただちに取り出すこ
とができる。図42の構成によればデータベース本体5
05におけるデータ重複を回避しつつ、設定した作曲条
件に合う音楽素材(例えばメロディのリズム、コード進
行)を高速に生成することができる。その他、種々の変
形、応用が可能である。
【0032】
【発明の効果】以上詳細に述べたように、この発明で
は、音楽素材(例えばリズムパターン、コード進行)の
データベースを用意し(データベース中の各素材の音楽
性は予め確保できる)、設定した作曲条件(例えば曲
風、音楽構造)により、条件に合う音楽素材をデータベ
ースから検索し、検索結果を作曲の一部として生成して
いるので、作曲のリアルタイム化を実現可能にするとと
もに、音楽性がありかつユーザーの好みに沿う内容をも
つ作曲を効率よく提供できる。
【図面の簡単な説明】
【図1A】この発明による自動作曲機に組み込まれる作
曲条件付け装置の機能ブロック図。
【図1B】自動作曲機に組み込まれるリアルタイムメロ
ディ音高列生成装置の機能ブロック図。
【図1C】自動作曲機に組み込まれるメロディパターン
ルールベース拡張装置の機能ブロック図。
【図2】自動作曲機を実現する代表的なハードウェアの
ブロック図。
【図3】図2の自動作曲機に組み込まれる自動メロディ
生成装置の機能ブロック図。
【図4】実施例で使用する音楽要素の文字(記号)表現
と数値表現を示す図。
【図5】さらに別の音楽要素の文字及び数値表現を示す
図。
【図6】さらに別の音楽要素の文字及び数値表現を示す
図。
【図7】標準ピッチクラスセットメモリを示す図。
【図8】固定メロディパターンデータベースメモリと音
種・音程データメモリを示す図。
【図9】テンポ・ビット変換マップと乱数メモリを示す
図。
【図10】コード進行データベースメモリを示す図。
【図11】音楽構造データベースメモリを示す図。
【図12】リズムパターンデータベースメモリを示す
図。
【図13】その他の定数及び変数を説明する図。
【図14】さらにその他の変数を説明する図。
【図15】図2のCPUが実行するメインルーチンのフ
ローチャート。
【図16】図2のCPUが実行するインターラプトルー
チンのフローチャート。
【図17】初期化の詳細なフローチャート。
【図18】生成開始処理ルーチンのフローチャート。
【図19】上位構造生成ルーチンの詳細なフローチャー
ト。
【図20】下位構造生成ルーチンの詳細なフローチャー
ト。
【図21】GetBの詳細なフローチャートと動作例を
示す図。
【図22】コード進行生成ルーチンの詳細なフローチャ
ート。
【図23】リズムパターン生成ルーチンの詳細なフロー
チャート。
【図24】停止処理のフローチャート。
【図25】押鍵処理のフローチャート。
【図26】離鍵処理のフローチャート。
【図27】押鍵中の処理のフローチャート。
【図28】コード情報作成ルーチンの詳細なフローチャ
ート。
【図29】音種分類の詳細なフローチャート。
【図30】音種ストアの詳細なフローチャート。
【図31】音程分類の詳細なフローチャート。
【図32】音程ストアの詳細なフローチャート。
【図33】発音時刻の処理の詳細なフローチャート。
【図34】評価ルーチンの詳細なフローチャート。
【図35】消音時刻の処理のフローチャート。
【図36】メロディパターンデータベース拡張ルーチン
の詳細なフローチャート。
【図37】MTMフォーマット変更の詳細なフローチャ
ート。
【図38】ステップ34−2、34−6の詳細なフロー
チャート。
【図39】ステップ36−4の詳細なフローチャート。
【図40】音楽スタイル別メロディパターンルールベー
スとそれに関連する構成を示す図。
【図41】音楽素材データベースとその検索方式の変形
例を示す図。
【図42】音楽素材データベースとその検索方式のさら
に別の変形例を示す図。
【符号の説明】
150 リズムパターンデータベース(リズムパターン
データベース手段、音楽素材データベース手段) 110、116、117、120、130 (属性設定
手段;作曲条件設定手段) 110 音楽構造データベース 116 選択モジュール 117 適性検査モジュール 120 選択音楽構造 110、116、117、120 (音楽構造設定手
段) 130 曲風入力(曲風設定手段) 155、170 (メロディ音長列生成手段;検索手
段;生成手段) 155 適性(属性)検査モジュール(リズムパターン
アクセス手段、属性検査手段、繰返手段、決定手段;ア
クセス手段、属性検査手段、繰返手段、生成手段) 170 選択リズムパターン 140 コード進行データベース(コード進行データベ
ース手段;音楽素材データベース手段) 145、160 (コード進行生成手段;検索手段;生
成手段) 145 適性(属性)検査モジュール(コード進行アク
セス手段、属性検査手段、繰返手段、決定手段;アクセ
ス手段、検査手段、繰返手段、生成手段) 160 選択コード進行 23−1〜23−8 リズムパターン生成ルーチン 22−1〜22−7 コード進行生成ルーチン
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G10H 1/00 - 7/12 G09B 15/00 - 15/08 G10G 1/00 - 7/02

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 メロディを自動生成する自動作曲機にお
    いて、生成するメロディの曲風を設定する曲風設定手段と、 生成するメロディの音楽構造を設定する音楽構造設定手
    段と、 複数種類の リズムパターンを記憶するデータベース手段
    と、上記曲風設定手段で設定された曲風及び上記音楽構造設
    定手段で設定された音楽構造に適合するリズムパターン
    を、上記データベース手段から選択する選択手段と、 上記選択手段で選択されたリズムパターンを、メロディ
    生成時の一要素として用い、メロディを自動 生成するメ
    ロディ生成手段と、 を有することを特徴とする自動作曲機。
  2. 【請求項2】 メロディを自動生成する自動作曲機にお
    いて、生成するメロディのテンポ及びビートの一方を設定する
    テンポ/ビート設定手段と、 生成するメロディのリズムの種類を設定するリズム種類
    設定手段と、 生成するメロディの 音楽構造を設定する音楽構造設定手
    段と、複数種類のリズムパターンを記憶するリズムパターン記
    憶手段と、 上記リズム種類設定手段で設定されたリズム種類、上記
    テンポ/ビート設定手段で設定されたテンポ又はビー
    ト、及び上記音楽構造設定手段で設定された音楽構造に
    適合するリズムパターンを、上記リズムパターン記憶手
    段から選択するリズムパターン選択手段と、 上記リズムパターン選択手段で選択されたリズムパター
    ンをメロディの音長列として、メロディを自動生成する
    メロディ生成手段と、 を有することを特徴とする自動作曲機。
  3. 【請求項3】 メロディを自動生成する自動作曲機にお
    いて、生成するメロディのテンポを設定するテンポ設定手段
    と、 該テンポ設定手段で設定されたテンポに応じて、生成す
    るメロディのビートを設定するビート設定手段と、 生成するメロディのリズムの種類を設定するリズム種類
    設定手段と、 生成するメロディの楽節構造を設定する上位構造設定手
    段と、 該上位構造設定手段で設定された楽節構造に応じて、生
    成するメロディの小節構造を設定する下位構造設定手段
    と、 複数種類のリズムパターンを記憶するリズムパターン記
    憶手段と、 複数種類のコード進行を記憶するコード進行記憶手段
    と、 上記リズム種類設定手段で設定されたリズム種類、上記
    ビート設定手段で設定されたビート、及び上記下位構造
    設定手段で設定された小節構造に適合するリズムパター
    ンを、上記リズムパターン記憶手段から選択するリズム
    パターン選択手段と、 上記リズム種類設定手段で設定されたリズム種類及び上
    記上位構造設定手段で設定された楽節構造に適合するコ
    ード進行を、上記コード進行記憶手段から選択するコー
    ド進行選択手段と、 上記リズムパターン選択手段で選択されたリズムパター
    ンをメロディの音長列とし、上記コード進行選択手段で
    選択されたコード進行をメロディの音高列生成時の一要
    素として、メロディを自動生成するメロディ生成手段
    と、 を有することを特徴とする自動作曲機。
JP36054691A 1991-12-30 1991-12-30 自動作曲機 Expired - Fee Related JP3364941B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP36054691A JP3364941B2 (ja) 1991-12-30 1991-12-30 自動作曲機
US07/998,561 US5451709A (en) 1991-12-30 1992-12-29 Automatic composer for composing a melody in real time

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP36054691A JP3364941B2 (ja) 1991-12-30 1991-12-30 自動作曲機

Publications (2)

Publication Number Publication Date
JPH05181409A JPH05181409A (ja) 1993-07-23
JP3364941B2 true JP3364941B2 (ja) 2003-01-08

Family

ID=18469866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP36054691A Expired - Fee Related JP3364941B2 (ja) 1991-12-30 1991-12-30 自動作曲機

Country Status (1)

Country Link
JP (1) JP3364941B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3620240B2 (ja) * 1997-10-14 2005-02-16 ヤマハ株式会社 自動作曲装置および記録媒体
SE527425C2 (sv) * 2004-07-08 2006-02-28 Jonas Edlund Förfarande och anordning för musikalisk avbildning av en extern process
JP5959472B2 (ja) * 2013-05-09 2016-08-02 和彦 外山 環境音生成装置、環境音生成プログラム及び音環境形成方法
JP6081624B2 (ja) * 2016-01-22 2017-02-15 和彦 外山 環境音生成装置、環境音生成プログラム及び音環境形成方法
JP6333422B2 (ja) * 2017-01-18 2018-05-30 和彦 外山 環境音生成装置、環境音生成プログラム及び音環境形成方法
CN109785818A (zh) * 2018-12-18 2019-05-21 武汉西山艺创文化有限公司 一种基于深度学习的音乐编曲方法和系统
CN113035159A (zh) * 2021-02-26 2021-06-25 王福庆 一种智能作曲系统

Also Published As

Publication number Publication date
JPH05181409A (ja) 1993-07-23

Similar Documents

Publication Publication Date Title
US5451709A (en) Automatic composer for composing a melody in real time
USRE40543E1 (en) Method and device for automatic music composition employing music template information
JP3704980B2 (ja) 自動作曲装置と記録媒体
JP2638021B2 (ja) 自動伴奏装置
JP2562370B2 (ja) 自動伴奏装置
US6294720B1 (en) Apparatus and method for creating melody and rhythm by extracting characteristic features from given motif
US6100462A (en) Apparatus and method for generating melody
JP3364941B2 (ja) 自動作曲機
JPH079586B2 (ja) 電子楽器の自動伴奏装置
JP3152123B2 (ja) 自動作曲機
US6486390B2 (en) Apparatus and method for creating melody data having forward-syncopated rhythm pattern
US4887503A (en) Automatic accompaniment apparatus for electronic musical instrument
JP3364940B2 (ja) 自動作曲機
JP3531507B2 (ja) 楽曲生成装置および楽曲生成プログラムを記録したコンピュータで読み取り可能な記録媒体
JP3801005B2 (ja) 作詞作曲装置及び作詞作曲プログラム
JP3216529B2 (ja) 演奏データ分析装置および演奏データ分析方法
JP3591444B2 (ja) 演奏データ分析装置
JP3807333B2 (ja) メロディ検索装置およびメロディ検索プログラム
JP3195111B2 (ja) 自動演奏装置
JPH05346781A (ja) 調検出装置および自動編曲装置
JP3163654B2 (ja) 自動伴奏装置
JP3158918B2 (ja) 自動伴奏装置
JP2666063B2 (ja) 自動作曲機
JP3271332B2 (ja) 和音付装置
JP2929498B2 (ja) 電子楽器

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081101

Year of fee payment: 6

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091101

Year of fee payment: 7

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101101

Year of fee payment: 8

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111101

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees