以下、図面を参照しつつ、この発明の好適な実施例を詳述する。なお、以下の実施例は単なる一例であって、この発明の精神を逸脱しない範囲で種々の変更が可能である。
〔ハードウエア構成〕
図1は、この発明の一実施例による演奏データ作成装置のハードウエア構成のブロック図を示す。この例では、システムは、中央処理装置(CPU)1、読出専用メモリ(ROM)2、ランダムアクセスメモリ(RAM)3、第1及び第2の検出回路4,5、表示回路6、音源回路7、効果回路8、外部記憶装置9等を備え、これらの装置1〜9は、バス10を介して互いに接続されており、演奏データ作成処理を行うための演奏データ作成システムを構成している。
システム全体を制御するCPU1は、テンポクロックや割込みクロックの発生等に利用されるタイマ11を備え、所定のプログラムに従って種々の制御を行い、特に、後述する演奏データ作成処理を中枢的に遂行する。ROM2には、この演奏データ作成システムを制御するための所定の制御プログラムが記憶されており、これらの制御プログラムには、基本的な演奏情報処理と共に、この発明による自動メロディ生成処理を含む各種処理プログラムや、元メロディデータや再生用メロディデータのフォーマット等の各種テーブル、各種データを含ませることができる。RAM3は、これらの処理に際して必要なデータやパラメータを記憶し、また、各種レジスタやフラグ、元メロディデータや再生用メロディデータ等処理中の各種データを一時記憶するためのワーク領域として用いられる。
第1の検出回路4は鍵盤等の演奏操作子を備えた演奏操作装置12に接続され、第2の検出回路5に接続される操作スイッチ装置13は、自動メロディ生成処理モード等を指定するための各種モード・パラメータ・操作の設定を行うための操作子を備え、これらの操作子には、各種モード設定やデータ入力を行うためのパネル上のスイッチや文字/数字キー等の外、マウス等のポインティングデバイスが含まれる。表示回路6はディスプレイ14や各種インジケータを備えており、これらのディスプレイ14やインジケータは、スイッチ装置13の操作パネル上の各種操作子に並置することができる。また、ディスプレイ14には、各種設定画面や各種操作子ボタンを表示させ、上述のポインティングデバイスや文字/数字キー等を用いることにより、各種モードやデータ値の設定・表示を行うようにすることもできる。
DSP等で構成される効果回路8に接続されるサウンドシステム15は、音源回路7及び効果回路8と共に楽音出力部を構成し、この発明による自動メロディ生成処理中に作成された再生用メロディデータを含む各種演奏データに基づき、楽音を放音させることができる。
外部記憶装置9は、ハードディスクドライブ(HDD)、コンパクトディスク・リード・オンリィ・メモリ(CD−ROM)ドライブ、フロッピィディスクドライブ(FDD)、光磁気(MO)ディスクドライブ、ディジタル多目的ディスク(DVD)ドライブ等の記憶装置から成り、各種制御プログラムや各種データを記憶することができ、メロディ生成用の各種データベースを構成するのにも利用される。従って、演奏データの処理に必要なプログラムや各種データは、ROM2を利用するだけでなく、外部記憶装置9からRAM3内に読み込むことができ、必要に応じて、処理結果をRAM3を介して外部記憶装置9に記録しておくこともできる。
この例では、バス10にMIDIインターフェイス(I/F)16が接続され、システムは他のMIDI機器17と通信することができる。さらに、バス10には通信インターフェイス18も接続され、通信ネットワーク19を介してサーバコンピュータ20から制御プログラムや各種データを外部記憶装置9にストアすることもできる。
〔メロディデータフォーマット〕
図2及び図3は、この発明の一実施例において使用される元メロディデータ及び再生用メロディデータのデータフォーマットを示す。1曲分の元メロディデータは、図2(1)に示されるように、第1小節のデータMS1から、時系列的に、順次、第2小節、第3小節、第4小節、…と各小節のデータMS2,MS3,MS4,…が続き、エンドデータEDoで終わる。図2(2)は、図2(1)の第1小節分のデータフォーマットを例示しており、他の小節も同様のフォーマットになっている。
元メロディデータは、図2(2)に示されるように、所定音符(ノート)分毎の基本ノートデータNT及び表情データEXから成る。さらに、基本ノートデータNTは、音符(ノート)Nの打点の有無を表わす打点データBP及びノートナンバを表わすノートナンバデータNNから成り、表情データEXは、スタッカート、スラー及びしゃくりの有無をそれぞれ表わすスタッカートデータST、スラーデータSL及びしゃくりデータSYから成る。図2(2)は、最小音符が8分音符である場合のデータフォーマット例を示し、各行は8分音符分のデータを表わす。すなわち、元メロディデータは、1小節当り計8行のデータセットで表わされ、RAM3内の所定領域において、各行に対応する記憶エリア毎に記憶される。また、最小音符が16分音符である場合や3連8分音符である場合は、16分音符毎や3連8分音符分のデータとなり、記憶エリアも1小節につき16個或いは12個となる。
再生用メロディデータは、上述した元メロディデータを利用して後述する再生用メロディデータ作成処理により作成されRAM3内の所定領域に記憶されるデータであり、例えば、図3に示されるように、タイミングデータTM1,TM2,TM3,…及びイベントデータEV1,EV2,EV3,…が、交互に、時系列的に順次配列され、エンドデータEDpで終わる。
イベントデータEV1,EV2,EV3,…には、ノートオンを表わすノートオンイベントデータNONやノートオフを表わすノートオフイベントデータNOFから成るノートイベントデータの外、ピッチベンドを表わすピッチベンドイベントデータ等がある。タイミングデータTM1,TM2,TM3,…は、前のイベントデータが表わすイベントと次のイベントデータが表わすイベントとの時間間隔を表わし、最初のタイミングデータTM1は曲の開始時点からの経過時間を表わす。図3の例では、第1イベントデータEV1はノートオンイベントデータNONであり、第2及び第3イベントデータEV2,EV3はピッチベンドイベントデータである。
〔自動メロディ生成処理〕
図4〜図6は、この発明の一実施例による自動メロディ生成処理を示すフローチャートであり、この処理フローは、自動メロディ生成処理モードを指定するための操作スイッチ装置13の操作子スイッチ或いはディスプレイ14の画面上の操作子ボタンを操作することによりスタートする。この処理フローの最初のステップM1においては各種メロディ生成用データが供給される。このようなメロディ生成用データは、メロディ生成に必要な、拍子、小節数、楽節構成、音域、調、コード進行、テンポ、音色、「フィーリングパラメータ」等のデータであり、フィーリングパラメータは、「のんびり」、「素朴」、「やさしい」、「さわやか」、「うきうき」等に種別される曲趣や、「イキイキ度1」〜「イキイキ度5」に段階化された「イキイキ度」など、各種フィーリングを設定するためのパラメータである。
これらのメロディ生成用データの供給の仕方としては、操作スイッチ装置13の操作子やディスプレイ14画面上の操作子ボタン等を用いて、データ種類毎にユーザが値を指定する方法があり、楽節構成やコード進行については、典型的な楽節構成、典型的なコード進行を多数記憶しておき、ユーザがいずれかを選択するようにしてもよい。また、他のデータ供給手法としては、複数のデータ種類についての値のセットをテンプレートとして多数記憶しておき、ユーザがいずれかを選択する方法や、外部の機器17,20や外部記憶装置9から各データを供給する方法等が考えられる。
次のステップM2では、1曲全体の打点データBPを生成する。つまり、拍子、小節数、楽節構成、フィーリングパラメータ等に基づいて、ノート(音符)の存在位置を表わす打点データBPを、1曲分、生成する。このような打点データBPの生成の一例としては、拍子毎、最小音符に多数の1小節打点パターンを記憶しておき、拍子、フィーリングパラメータに基づいて、拍子とフィーリングに合致する打点パターン(最小音符はフィーリングに応じて選択する)を小節毎に選択し、これを小節数分つなぎ合せて1曲分の打点データとする。この時、楽節構成において前方の楽節と同一或いは類似であるとされている楽節については、打点データについても前方の楽節と同一或いは類似とする。そして、各打点データBPをRAM3中の元メロディデータの打点記憶領域へと書き込む。なお、これ以外の方法により打点データBPを生成してもよい。
第3のステップM3においては、ノートナンバデータNNを生成し、各打点(BP)に付与し、基本ノートデータNTを作成する。すなわち、音域、調、コード進行に基づいて、各打点に付与すべきノートナンバデータNNを生成し、各打点に付与する。このようなノートナンバデータNNの生成の一例としては、各打点データBPのうちの重要打点(例えば、強拍にある打点や、強拍に打点が無い場合はその近傍の打点など)に対して、これらの打点位置にあるコードの構成音のうちの音域内にある音の中から、いずれかをランダムに選択して当該打点に付与するとともに、残りの打点に対して、音域内にある調の音階音や、コードのアベイラブルノートスケールの音の中から、ランダムに選択して当該打点に付与する。この時、所定の音楽ルールを参照し、音楽ルールを満たす音のみを選択するようにしてもよい。また、フィーリングパラメータに応じて音程の上下動の範囲を規制してもよい。この場合、楽節構成において前方の楽節と同一或いは類似であるとされている楽節に関しては、ノートナンバデータNNについても前方の楽節と同一或いは類似とする。そして、各ノートナンバデータNNを元メロディデータのノートナンバ記憶領域へと書き込む。なお、これ以外の方法によりノートナンバデータNNを生成してもよい。
以上のようにして、打点データBP及びノートナンバNNから成る基本ノートデータNTが作成されると、次の第4〜第6ステップM4〜M6では、この基本ノートデータNTで表わされる基本ノートに対して、表情データEXを付与して行く。先ず、第4のステップM4においては、表情データEXとしてスタツカートデータSTを生成し、各打点即ち各基本ノートに付与する。つまり、楽節構成、フィーリングパラメータ等に基づいて、各ノートにスタッカートを付与するか否かを示すスタッカートデータST(スタッカートの有無を「1」、「0」で表わす)を生成し、各打点つまり各ノートに付与する。
ステップM4でのスタッカートデータSTの生成の一例として、「イキイキ度」の段階「イキイキ度1」〜「イキイキ度5」に応じてスタッカート音符の頻度(出現の割合)を決定し、この頻度に応じて、スタッカートを各ノート毎にランダムに付与する/付与しないを決定する方法を採ることができる(詳しくは後述)。この時、楽節構成において前方の楽節と同一或いは類似であるとされている楽節に関しては、スタッカートデータSTについても前方の楽節と同一或いは類似とする。そして、各スタッカートデータSTを元メロディデータのスタッカート記憶領域へと書き込む。なお、これ以外の方法によりスタッカートデータSTを生成してもよい。
第5のステップM5においては、表情データEXとしてスラーデータSLを生成し、各打点即ち各基本ノートに付与する。つまり、楽節構成、音色、スタッカートデータST等に基づいて、各ノートにスラーを付与するか否かを示すスラーデータSL(スラーの有無を「1」、「0」で表わす)を生成し、各ノートに付与する。このようなスラーデータSLの生成の一例として、音色に応じてスラー音符の頻度(出現の割合)を決定し、スタッカートデータSTが「0」である各ノート毎に、決定された頻度に応じてランダムに付与する/付与しないを決定する方法をとることができる(詳しくは後述)。この時、楽節構成において前方の楽節と同一或いは類似であるとされている楽節に関しては、スラーデータSLについても前方の楽節と同一或いは類似とする。そして、各スラーデータSLを元メロディデータのスタッカート記憶領域へと書き込む。なお、これ以外の方法によりスラーデータSLを生成してもよい。
第6のステップM6においては、表情データEXとしてしゃくりデータSYを生成し、各打点即ち各基本ノートに付与する。つまり、楽節構成、音色、スタッカートデータST等に基づいて各ノートにしゃくりを付与するか否かを示すしゃくりデータSY(しゃくりの有無を「1」、「0」で表わす)を生成し、各ノートに付与する。このようなしゃくりデータSYの生成の一例として、音色に応じてしゃくり音符の頻度(出現の割合)を決定し、スタッカートデータSTが「1」である各ノート毎に、決定された頻度に応じてランタムに付与する/付与しないを決定する方法をとることができる(詳しくは後述)。この時、楽節構成において前方の楽節と同一或いは類似であるとされている楽節に関しては、しゃくりデータSYについても前方の楽節と同一或いは類似とする。そして、各しゃくりデータSYを元メロティデークのしゃくり記憶領域へと書き込む。なお、これ以外の方法によりしゃくりデータSYを生成してもよい。
次のステップM7においては、ステップM2〜M6の処理により得られた各データBP,NN,ST,SL,SYから成る元メロディデータに基づいて再生用メロディデータを作成する。このステップM7においては、まず、スタッカートデータSTに基づいて、各再生用ノートのゲートタイムGT即ちノートオンからノートオフまでの期間を表わすデータを作成する。次に、スラーデータSLに基づいてスラーをかける2つのノートを結合し、両ノート間を滑らかなピッチ変化で結ぶためのピッチベンドイベントデータPBLを作成する。そして、しゃくリデータSYに基づいてしゃくりをかけるノートNの若干下のピッチから徐々にそのノートのピッチに変化するピッテベンドデータPBYを作成する。なお、これらのゲートタイムGT及びピッチベンドイベントデータPBL,PBYの詳しい作成手順については後述する。
このステップM7においては、必要に応じて、ボリュームデータを作成してもよく、例えば、楽節やフレーズ等の所定区間の最後の長い音符の最後はデクレッシェンドさせる等の処理を行うようにしてもよい。なお、各ノートデータNTに対するベロシティは、一定でもよいし、ランダム或いは所定のルールにしたがって変動させてもよい。例えば、各打点(ノートN)のノートナンバ(NN)に応じてベロシティを決定する(音高が高いほど大きくする)方法、楽節やフレーズ等の所定区間の平均ノートナンバに応じてベロシティを決定する(音高が高いほど大きくする)方法、小節内の打点位置に応じてベロシティを決定する(強拍は大きく、弱拍は小さい)方法などをとることができる。
続くステップM8においては、作成された再生用メロディデータを評価する。この評価を行うには、例えば、操作スイッチ装置13の操作子やディスプレイ14画面上の操作子ボタン等を操作して、音源回路7及び効果回路8を介してサウンドシステム12から放音される再生用メロディデータに基づく楽音を試聴したり、ディスプレイ14画面上に再生用メロディデータを楽譜等の形式で楽譜データを表示させる。ステップM8では、作成された再生用メロディデータをこのように試聴したり表示するなどして、メロディデータの良否をユーザが評価し、ステップM9に進む。
ステップM9では、前ステップM8での評価の結果、作成された再生用メロディデータが「OK」(良好)か「NG」(不良)かを判断し、「OK」(=YES)の場合はステップM10に進み、「NG」(=NO)の場合には、ステップM11に進み、ステップM11〜M18からなる表情データ再生成処理ルーチンの処理が実行される。なお、この良否判断のためには、一例として、操作スイッチ装置13又はディスプレイ14画面上の操作子として、「OK」/「NG」スイッチ又はボタンを設け、ユーザにいずれかを選択させるようにしてもよいし、「生成し直し」スイッチ又はボタンを設け、これを操作したときは「NG」と判断するようにしてもよい。或いは、「出力(再生、記録、外部へ出力等)」スイッチ又はボタンを設け、これを操作したときは「OK」と判断するようにしてもよい。
ステップM10に進んだ場合は、「OK」と判断された生成用メロディデータをサウンドシステム15から再生したり、外部記憶装置9に記録したり、或いは、外部装置17,19へと出力する等、出力動作を行った後、この自動メロディ生成処理をエンドとする。
一方、作成された再生用メロディデータがステップM9で「NG」と判断されステップM11に進んだ場合は、再生用メロディデータを作成し直すが、この時、各種メロディ生成用データをも新しく供給し直すか、以前の各種メロディ生成用データをそのまま使用するかを判断する。これは、各種メロディ生成用データが以前のままでも、再度メロディを作成したときに若干の変化はあるが、各種メロディ生成用データを新しくしてメロディを作成すれば、より変化が大きくなるからである。なお、この判断のためには、ステップM9での操作例と同様の操作により実施することができる。
ステップM11で各種メロディ生成用データを供給し直すと判断した場合は、ステップM12で新たな各種メロディ生成用データを供給した上、ステップM13に進むが、そうでない場合には直ちにステップM13に進む。なお、ステップM12で新たに供給する各種メロディ生成用は、ステップM1の説明で述べた全ての種類のデータでもよいし、そのうちの一部のみのデータであってもよい。
ステップM13以下の各ステップM13〜M18は、表情データEXとして既に生成されたスタッカートデータST、スラーデータSL及びしゃくりデータSYを生成し直すか否かを判断する判断ステップM13,M15,M17と、各表情データST,SL,SYを生成し直す場合に各データを所要値に生成し直す処理を実行する表情データ再生成ステップM14,M16,M18とから成る。
各判断ステップM13,M15,M17において各データST,SL,SYを生成し直すか否かは、ユーザがどのデータを生成し直すかを指定してもよいし、新たに供給したメロディ生成用データの種類に応じて自動的に指定してもよい。例えば、ステップM12にて音色データを供給し直したときは、スラーデータSLやしゃくりデータSYを生成し直し、スタッカートデータSTは生成し直さない、また、「イキイキ度」データを供給し直したときは、スタッカートデータSTを生成し直し、スラーデータSLやしゃくりデータSYは生成し直さない、などの方法を採ることができる。
各表情データ再生成ステップM14,M16,M18においては、スタッカートデータST、スラーデータSL及びしゃくりデータSYを生成し直して各打点即ち各基本ノートに付与し、元メロディデータのそれぞれ対応する記憶領域に書き込む。このように、基本ノートデータNTは、そのままで、表情データEXのみを生成し直すことができる。
これらのステップM13〜18を介して表情データEXの再生成処理を経た後は、ステップM7に戻って、生成し直した表情データEXに基づいて再生用メロディデータを作成し直す。作成し直した再生用メロディデータはステップM8で評価されステップM9で「OK」とするか否か判断される。「OK」の場合はステップM10に進んで出力処理を行いこの自動メロディ生成処理を終了するが、そうでない場合には、再度ステップM11〜18の表情データ再生成処理ルーチンの処理を行い、ステップM9で「OK」と判断される迄この再生成処理を繰り返す。
〔スタッカートデータの生成〕
自動メロディ生成処理(図4〜図6)のステップM4,M14においては、各打点(ノート)毎のスタッカート付与/非付与を決定するために、「イキイキ度」等のメロディ生成用データに応じてスタッカート音符の頻度が決定される。この決定に「イキイキ度」を利用する場合、例えば、図7に示されるように、生成するメロディ全体におけるスタッカートの頻度が「イキイキ度」データ値に応じて予め設定された「スタッカート頻度テーブル」をROM2又は外部記憶装置9内に用意しておく。そして、ステップM1,M12で供給された「イキイキ度1」〜「イキイキ度5」に応じて、このスタッカート頻度テーブルを参照することにより、メロディ全体におけるスタッカート頻度を得るようにすることができる。
すなわち、各ノートにおいて、スタッカート頻度テーブルの「イキイキ度」に対応したスタッカート頻度が示す割合でスタッカートを付与し、スタッカートを付与したノートのスタッカートデータSTを「1」とする。スタッカート付与の一例をあげると、先ず、ノート毎に値“0”〜“9”の乱数を発生させる。スタッカート頻度が40%の場合、乱数値が値“0”〜“3”の範囲ならスタッカートを付与し、値“4”〜“9”なら付与しないようにする。一方、スタッカート頻度が60%の場合、乱数が値“0”〜“5”ならスタッカートを付与し、値“6”〜“9”なら付与しない。また、スタッカート頻度が0%の場合、全てのノートについてスタッカートを付与しない。なお、これ以外の方法によってスタッカートデータSTを生成してもよい。
〔スラーデータの生成〕
ステップM5,M16においては、各打点(ノート)毎のスラー付与/非付与を決定するために音色等のメロディ生成用データに応じてスラーの頻度が決定される。この決定に音色を利用する場合には、例えば、図8に示されるように、生成するメロディ全体のうち、スタッカートでない全部の音符におけるスラーの頻度が、音色に応じて予め設定された「スラー頻度テーブル」を、ROM2又は外部記憶装置9内に用意しておく。そして、ステップM1,M12で供給された音色に応じて、このスラー頻度テーブルを参照することにより、メロディ中の非スタッカート音におけるスラー頻度を得るようにすることができる。
すなわち、スタッカートでない各ノートにおいて、スラー頻度テーブルの音色種類に対応したスラー頻度が示す割合でスラーを付与し、スラーを付与したノートのスラーデータSLを「1」とする。スラー付与の一例をあげると、先ず、スタッカートでないノート毎に値“0”〜“9”の乱数を発生させる。スラー頻度が20%の場合、乱数値が値“0”〜“1”の範囲ならスラーを付与し、値“2”〜“9”なら付与しないようにする。一方、スラー頻度が40%の場合、乱数が値“0”〜“3”ならスラーを付与し、値“4”〜“9”なら付与しない。また、スラー頻度が0%の場合、全てのスタッカートでないノートについてスラーを付与せず、スタッカートであるノートについてもスラーを付与しない。なお、これ以外の方法によってスラーデータSLを生成してもよい。
〔しゃくりデータの生成〕
ステップM6,M18においては、各打点(ノート)毎のしゃくり付与/非付与を決定するために音色等のメロディ生成用データに応じてしゃくりの頻度が決定される。この決定に音色を利用する場合には、例えば、図9に示されるように、生成するメロディ全体のうち、スタッカートである全部の音におけるしゃくりの頻度が、音色に対応して予め設定された「しゃくり頻度テーブル」を、ROM2又は外部記憶装置9内に用意しておく。そして、ステップM1,M12で供給された音色に応じて、このしゃくり頻度テーブルを参照することにより、メロディ中のスタッカート音におけるしゃくり頻度を得るようにすることができる。
すなわち、スタッカートである各ノートにおいて、しゃくり頻度テーブルの音色種類に対応したしゃくり頻度が示す割合でしゃくりを付与し、しゃくりを付与したノートのしゃくりデータSYを「1」とする。しゃくり付与の一例をあげると、先ず、スタッカートであるノート毎に値“0”〜“9”の乱数を発生させる。しゃくり頻度が30%の場合、乱数値が値“0”〜“2”の範囲ならしゃくりを付与し、値“3”〜“9”なら付与しないようにする。一方、しゃくり頻度が50%の場合、乱数が値“0”〜“4”ならしゃくりを付与し、値“5”〜“9”なら付与しない。また、しゃくり頻度が0%の場合、全てのスタッカートであるノートについてしゃくりを付与せず、スタッカートでないノートについてもしゃくりを付与しない。なお、これ以外の方法によってしゃくりデータSYを生成してもよい。
〔表情データによる効果〕
次に、複数の基本ノートN1,N2,N3の“ピッチ−時間”特性を示す図10により、スタッカート、スラー及びしゃくり等の表情データEXによる効果について説明する。図10において、各ノートN1,N2,N3のノートオンタイミングt1,t2,t3,…は、基本ノートデータNTの対応する各打点データBPにより示される打点開始タイミングを表わし、ピッチの値P1,P2,P3は、基本ノートデータNTの対応する各ノートナンバNNにより表わされるピッチを表わす。また、網目模様の各小円は、基本ノートデータNTにより表わされる各ノートN1,N2,N3のノートオン時のピッチ位置を表わし、各帯は、表情データEXにより各ノートの“ピッチ−時間特性”が変化させられる様子を表わしている。
図10(1)は、表情データEXのスタッカートデータSTによる効果を示しており、スタッカートデータSTが「1」でスタッカートがかかると、次の打点のタイミングまでの全基本ノート区間の所定割合分がゲートタイムGTとなる。ここでは、第1及び第3ノートN1,N3は、スタッカートデータSTが「1」で、スタッカート割合が夫々50%及び75%であり、一方、第2ノートN2のスタッカートデータSTは「0」である。従って、図10(1)に示すように、第1及び第3ノートN1,N3のゲートタイムGT1,GT3は、打点タイミングt1,t3から次の打点タイミングt2,t4までの全基本ノート区間t1〜t2,t3〜t4の夫々50%及び75%となる。一方、第2ノートN2にはスタッカートがかからない。
図10(2)は、表情データEXのスラーデータSLによる効果を示しており、スラーデータSLが「1」でスラーがかかると、次のノートと結合され、両ノートのピッチ間が滑らかに結ばれる。ここでは、第2ノートN2はスラーデータSLが「1」でありスラーがかかり、図10(2)に示すように、次の第3ノートN3と結合され、両ノートN2,N3のピッチP2,P3間が滑らかに結ばれる。
また、図10(3)は、表情データEXのしゃくりデータSYによる効果を示しており、しゃくりデータSYが「1」でしゃくりがかかると、予め設定されている「しゃくり深さ」に対応する所定ピッチ分Pyだけ下のピッチから発音を開始し、当該ノートのピッチP1へと徐々にピッチ変化する。ここでは、第1ノートN1はしゃくりデータSYが「1」でしゃくりがかかり、図10(3)に示すように、しゃくり深さPy分だけ下のピッチから発音を開始し、徐々に第1ノートN1のピッチP1へと変化する。
〔スタッカートに基づくゲートタイム処理〕
図11〜図12は、図4〜図6の自動メロディ生成処理のステップM7(図4)における再生用メロディデータ作成処理のうち、スタッカートデータSTに基づくゲートタイム作成処理のフローチャートを示す。最初のステップT1で新たな打点即ち基本ノートNiが選択されると〔以下、“i”(i=1,2,…)は、曲の始まりからの当該ノート番号を表わす添字記号として用られる。〕、ステップT2で当該打点(ノートNi)のスタッカートデータSTiが「1」であるか否かが調べられ、「1」の場合はステップT3に進み、そうでない場合にはステップT4に進む。ステップT3では、当該打点(ノートNi)がフレーズ或いは楽節の最後の打点(最終ノート)であるかが調べられ、最後の打点であればステップT4に進み、そうでないとステップT5に進む。そして、ステップT4に進んだ場合は、当該打点(ノートNi)の開始タイミングtiと次の打点(ノートNi+1)の開始タイミングti+1の間隔を当該ノートNiのゲートタイムGTiとする。
一方、ステップT5に進んだ場合は、順次、ステップT6〜T9を経てスタッカートをかけるための処理が行われる。先ず、ステップT5では、「のんびり」/「素朴」/…/「うきうき」等の曲趣を表わすデータに基づいて、スタッカート割合テーブルを参照し、第1スタッカート割合を得る。次のステップT6では、「イキイキ度」を表わすデータに基づいてスタッカート割合テーブルを参照し、第2スタッカート割合を得る。さらに、ステップT7でこれら第1及び第2スタッカート割合を合成する。
図13には、ステップT5,T6で利用されるスタッカート割合テーブルの例が示されている。図13(1)の第1のスタッカート割合テーブルは、例えば、「のんびり」、「素朴」、「やさしい」、「さわやか」及び「うきうき」といった各曲趣に対応して第1スタッカート割合を設定したものであり、図13(2)の第2のスタッカート割合テーブルは、例えば、「イキイキ度1」〜「イキイキ度5」と5段階に分けられた各「イキイキ度」に対応して第2スタッカート割合を設定したものである。なお、スタッカート割合テーブルは、このようにスタッカート割合を固定的に対応させたものに限らず、「のんびり」/「素朴」/…/「うきうき」や「イキイキ度」に応じてスタッカート割合の範囲を決定するようなもの(例えば、「イキイキ度」=3のとき「40〜60%」)とし、この範図内でランダムに決定するようにしてもよい。
また、ステップT7での第1及び第2スタッカート割合の合成については、例えば、ステップT5,T6で得られた第1及び第2スタッカート割合の平均値を取る(単純平均でもよいし、曲趣と「イキイキ度」の重視度に応じた重み付け平均でもよい)方法や、両スタッカート割合を掛け合わせる方法など、任意の方法を採用することができる。
このようにして合成されたスタッカート割合は、ステップT8で曲のテンポ(ステップM1:図4)に応じて修正される。例えば、所定のテンポ(例えば90)を基準(=修正なし)とし、これよりもテンポが早けれはスタッカート割合を大きくし、テンポが遅ければ小さくすることにより、このようなテンポに応じた修正を行うことができる。また、修正手法としては、計算式に基づいて修正する方法、テンポに応じた修正値テーブルを用意しておきこのテーブルを利用して修正する方法などが考えられる。
ステップT9においては、修正されたスタッカート割合を当該打点(ノートNi)及び次打点(ノートNi+1)の開始タイミングti,ti+1の間隔に乗算し、乗算結果を当該ノートNiのゲートタイムGTiとする。ステップT4或いはステップT9のゲートタイム取得処理後はステップT10に進む。なお、ステップT4及びステップT9で得られたゲートタイムGTは、所定の音符(例えば、16分音符や32分音符等)でクオンタイズ(量子化)して表わすようにしておいてもよい。
ステップT10では、打点開始タイミングtiを当該打点(ノートNi)に対応するノートオンイベントデータNONiのタイミングデータ(TM)とし、ノートオンイベントデータNONiとタイミングデータ(TM)をRAM3中の再生用メロディデータメモリに書込み、次のステップT11では、ゲートタイムGTiに基づいて当該打点(ノートNi)に対応するノートオフイベントデータNOFiのタイミングデータ(TM)を決定し、ノートオフデータNOFiとタイミングデータを同再生用メロディデータメモリに書込んだ上、ステップT12に進む。
ステップT12では、当該打点(ノートNi)が最終打点(最終ノート)であるかが判断され、最終打点の場合はこのゲートタイム作成処理を終了するが、そうでない場合には、再度ステップT1に戻りステップT1〜T11のゲートタイム取得のための処理を行い、ステップT12で最終打点まで処理が行われたと判断される迄このゲートタイム取得処理を繰り返す。
〔スラーに基づくピッチベンドイベントデータ作成及びノート結合処理〕
図14は、図4〜図6の自動メロディ生成処理のステップM7(図4)における再生用メロディデータ作成処理のうち、スラーに基づくピッチベンドイベントデータ作成及びノート結合処理のフローチャートを示す。最初のステップL1で新たな打点即ちノートNiが選択されると、ステップL2で当該打点(ノートNi)のスラーデータSLiが「1」であるか否かが調べられ、「1」の場合は、順次、ステップL3〜L5に進んで行き、そうでない場合にはステップL6に進む。
ステップL3では、RAM3中の再生用メロディデータメモリに記憶された当該打点(ノートNi)に対応するノートオフイベントデータNOFiのタイミング近傍から、次ノートNi+1のピッチPi+1に向かって徐々に変化するピッチベンドイベントデータPBLiを作成して挿入する。このようなスラーデータSLに基づき徐々に変化するピッチベンドイベントデータPBLの作成の詳細については後述する。
次のステップL4,L5は、2つのノートNi,Ni+1を結合するステップである。先ず、ステップL4では、当該打点(ノートNi)に対応するノートオフイベントデータNOFiのタイミングを次打点(ノートNi+1)に対応するノートオフイベントデ−タNOF+1のタイミングに修正し、次に、ステップL5にて、次打点(ノートNi+1)に対応するノートオンイベントデータNONi+1及びノートオフイベントデータNOFi+1並びにこれらのタイミングデータを消去し、ステップL6に進む。
ステップL6では、当該打点(ノートNi)が最終打点(最終ノート)であるかが判断され、最終打点の場合はこのピッチベンドイベントデータ作成及びノート結合処理を終了するが、そうでない場合には、再度ステップL1に戻りステップL1〜L5の処理を行い、ステップL6で最終打点まで処理が完了したと判断される迄これらの処理を繰り返す。
〔スラーにおけるピッチベンドイベントデータの作成手順〕
図15は、上述のステップL3においてスラーデータSLiにより徐々に変化するピッチベンドイベントデータPBLiを作成する手法を説明するための図であり、図16〜図17は、同ステップL3においてこのような手法に基づきスラーにおけるピッチベンドイベントデータPBLiを作成する処理を表わすフローチャートである。
スラーにおけるピッチベンドイベントデータ作成処理がスタートすると、先ず、最初のステップLB1において、当該ノートNiのピッチPi及び次ノートNi+1のピッチPi+1から、両ノートNi,Ni+1間のピッチ差Pdi〔単位:例えば:セント(cent)〕を算出し、次に、ステップLB2にて、ピッチ差に応じた標準遷移時間〔単位:例えば:ミリ秒(m.sec)〕を算出する。このようにピッチ数に応じて遷移時間を変えるには、例えば、ピッチ差が100セントの場合の遷移時間及びピッチ差が1200セントの場合の遷移時間を予め設定してROM2等に記憶しておき、両遷移時間の間を当該ピッチ差Pdiのセント値で直線補間することにより、当該ピッチ差Pdiに対応する標準遷移時間を算出するというような手法を採用することができる。
次のステップLB3では、ステップLB2で算出された標準遷移時間を曲のテンポ(ステップM1:図4)に応じて補正した上、ステップLB4に進む。テンポに応じて遷移時間を補正するには、例えば、テンポの値が「60」の場合のスラー遷移時間補正値(例えば、100〜150%)、及び、テンポの値が「120」の場合のスラー遷移時間補正値(例えば、66〜100%)を予め設定してROM2等に記憶しておき、ステップLB2で算出された標準遷移時間で、両スラー遷移時間補正値の間を直線補間することにより、算出された標準遷移時間に対応する補正後標準遷移時間を算出するというような手法を採用することができる。なお、このステップLB3でテンポに応じて補正した遷移時間値も、そのテンポにおける標準遷移時間を表わしているといえる
ステップLB4では、ステップLB3で補正された標準遷移時間に対応する遷移クロック数を算出し、ステップLB5に進み、ステップLB5〜LB9で遷移クロック数の修正処理等を行う。この遷移クロック数は、1クロックは4分音符の1/48であるという関係(本実施形態の場合)から、次式(1)により算出することができる。なお、この遷移クロック数にみられるように、以下、時間推移を表わすのにミリ秒等の時間単位に替えてクロック数を用いているが、クロック数も実質的に「時間」を表わしているということができる:
ステップLB5〜LB9のうち、ステップLB5,LB8は、標準遷移時間に基づいて、図15の階段状の破線で示されるようなピッチ遷移をさせた際に(図15では、説明の便のためにピッチ遷移が極めて粗く描かれている)、所定のピッチ安定期間を確保することができるか否かを判断する処理ブロックであり、ステップLB6,LB9は、ピッチ遷移の前後に所定のピッチ安定区間を確保することができない場合に遷移クロック数を短縮する処理ブロックである。
先ず、ステップLB5では、遷移クロック数が次ノートNi+1の発音長の1/2以上であるか否かを判断する。ここで、次ノート音長(ti+1〜ti+2)の1/2以上(YES)の場合は、ステップLB6に進み、次ノートNi+1の後半において、次ノートNi+1のピッチ安定区間即ち次ノートピッチPi+1が変化しない水平区間として、短音符でスラーが連続してもよいように、少なくとも次ノート音長の1/2を確保するために、
遷移クロック数 = 次ノートの音長の1/2 …(2)
として、遷移クロック数を短縮した上、ステップLB7に進む。一方、ステップLB5で「否」(NO)と判断された場合は、既に次ノートNi+1のピッチ安定区間が確保されているとして、直ちにステップLB7に進む。
ステップLB7では、次式(3)により、図15の時間ti〜tidに相当する遅延クロック数を算出し(ノートの音長はクロック数で表わし、これは以下においても同様である。)、ステップLB8に進む:
ステップLB8においては、遅延クロック数が当該ノートNiの発音長の1/2未満であるか否かを判断する。ここで、当該ノート音長(ti〜ti+1)の1/2未満(YES)の場合は、ステップLB9に進み遷移クロック数を短縮する。この短縮処理に当っては、当該ノートNiについては前半部のピッチが変化せず水平を保つようにし、次ノートNi+1については後半部のピッチが変化せず水平を保つようにするために、遅延クロック数を
遅延クロック数 = 当該ノートの音長の1/2 …(4)
と修正すると共に、次式(5)により遷移クロック数を算出する:
ステップLB8において遅延クロック数が当該ノート音長の1/2以上である(NO)場合、或いは、ステップLB9の処理を終えた後は、ステップLB10に進んで、1クロック当りの遷移ピッチを次式(6)により算出する:
そして、最終ステップLB11に進み、以上のようにして作成された遅延クロック数、遷移クロック数及び1クロック当りの遷移ピッチに基づいて、当ノートのノートオンタイミングtiから遅延クロック数だけ経過した時点tidから始まり、1クロック毎に、1クロック当りの遷移ピッチだけピッチ変化するピッチベンドイベントデータPBLiを作成し、このピッチベンドイベントデータを遷移クロック数分だけ挿入していく。
このようにして作成されるピッチベンドイベントデータPBLiによると、先ず、当該ノートNiのノートオンタイミングデータ(TM)により与えられるノートオンタイミングtiから遅延クロック数分が経過する時点tidまでは、当該ノートNiのノートオンイベントデータNONiにより与えられる当該ノートピッチpiが変化しないピッチ安定区間として、少なくとも当該ノートNiの音長の1/2の時間が確保される。
次に、時点tidから遷移クロック数分経過する時点tisまでの遷移区間の間は、当該ノートNiのピッチpiから次ノートNi+1のピッチpi+1に向かって、次ノートNi+1の1クロック毎に遷移ピッチだけ徐々にピッチ変化させることができる。なお、次ノートNi+1のノートオンイベントデータNONi+1のタイミングデータ(TM)により与えられるノートオンタイミングti+1は、図15に示すように、この遷移区間のほぼ中央のタイミングになる。
その後、次ノートNi+1のノートオンタイミングti+1より遅らされた時点tisで次ノートNi+1のノートオンイベントデータNONi+1により与えられる次ノートピッチpi+1に到達する。これにより、スラーに対応した自然な効果が得られる。そして、時点tisからノートオフタイミング(次々ノートのノートオンタイミング)ti+2までは、次ノートピッチpi+1が変化しないピッチ安定区間として、短音符でスラーが連続してもよいように、少なくとも次ノートNi+1の音長の1/2の時間が確保されている。従って、短音符でスラーが連続する場合は、基本ノートデータNTi(ノートオンタイミングti+1,ピッチpi+1)で表わされる次ノートNi+1に対して、前ノートNiと同様の処理を順次施すことにより、次ノートピッチpi+1に到達した後すぐに、次のピッチ遷移を開始させることができる。
〔しゃくりに基づくピッチベンドイベントデータ作成処理〕
図18は、図4〜図6の自動メロディ生成処理のステップM7(図4)における再生用メロディデータ作成処理のうち、しゃくりデータに基づくピッチベンドイベントデータ作成処理のフローチャートを示す。ステップY1で新たな打点即ちノートNiが選択されると、ステップT2で当該打点(ノートNi)のしゃくりデータSYiが「1」であるか否かが調べられ、「1」の場合はステップY3を経てステップY4に進み、そうでない場合には直接ステップY4に進む。
ステップY3においては、RAM3中の再生用メロディデータメモリに記憶された当該打点(ノート)Niに対応するノートオンイベントデータNONiのタイミング近傍から、しゃくり深さデータPyが示すしゃくり深さで始まり当該ノートNi+1のピッチPi+1に向かって徐々に変化するピッチベンドイベントデータPBYiを作成して挿入する。
ステップY4では、当該打点(ノートNi)が最終打点(最終ノート)であるかが判断され、最終打点の場合はこのピッチベンドイベントデータ1作成処理を終了するが、そうでない場合には、再度ステップY1に戻りステップY1〜Y3の処理を行い、ステップY4で最終打点まで処理が完了したと判断される迄これらの処理を繰り返す。
ここで、上述のステップY3においてしゃくりデータSYiにより徐々に変化するピッチベンドイベントデータPBYiを作成する手順について説明する。なお、このステップY3での処理は、図14のスラーに基づくデータ処理のステップL3においてスラーデータSLiによりピッチベンドイベントデータPBLiを作成する処理に類似しているので、図19を用いて手順の要点を列挙するにとどめ、図16及び図17のような具体的フローチャートは省略するが当業者にとって極く容易に実現することができるであろう。
〔1〕しゃくりにおいては、図19に示すように、当該ノートNiの本来のピッチPiより若干のしゃくり深さPyだけ低いピッチPi−Pyから発音を始め、徐々にピッチを上昇させてピッチ遷移を行い、所定のしゃくり遷移時間が経過した時点tisにて本来のピッチPiに到達させる。そこで、予め、しゃくり深さPy(セント)及びしゃくり遷移時間〔単位:例えば:ミリ秒(m.sec)〕を設定し、ROM2等に記憶しておき、ステップY2においてしゃくりデータSYi=「1」を検出すると、これに応じてこれらのデータを読み出す。
〔2〕次に、読み出されたしゃくり遷移時間をテンポで補正する。この補正には、スラーにおける場合と同様に、例えば、テンポの値が「60」の場合のしゃくり遷移時間補正値(例えば、100〜150%)、及び、テンポの値が「120」の場合のしゃくり遷移時間補正値(例えば、66〜100%)を予め設定してROM2等に記憶しておき、〔1〕で読み出したしゃくり遷移時間で、しゃくり遷移時間補正値の間を直線補間することにより、算出されたしゃくり遷移時間に対応する補正後しゃくり遷移時間を算出するというような手法を採用することができる。
〔3〕次式(7)により、〔2〕で補正されたしゃくり遷移時間に応じた遷移クロック数を算出する:
〔4〕算出された遷移クロック数が当該ノートNiの音長の1/2以上の場合は、遷移クロック数を短縮し、
遷移クロック数 = 当該ノートの音長の1/2 …(8)
とする。
〔5〕当該ノートNiが、図10(3)のように、スタッカートデータSTiにより実際の発音長が短縮されている等、当該ノートNiに対応する実際の発音長が短い場合は、しゃくりを止めたり、しゃくり遷移時間を短縮したりする。例えば、実際の発音長クロック数が“12”未満の場合はしゃくりを止め、また、実際の発音長クロック数が“12”以上であり、
遷移クロック数 > 発音長クロック数 − 6クロック …(9)
の場合は、次式(10)により遷移クロック数を短縮する:
遷移クロック数 = 実際の発音長クロック数 − 6クロック …(10)
〔6〕さらに、〔1〕で読み出されたしゃくり深さPy、及び、〔3〕〜〔5〕を経て決定された遷移クロック数から、次式(11)を用いて、1クロック当りの遷移ピッチを算出する:
遷移ピッチ = (しゃくり深さ)/(遷移クロック数) …(11)
〔7〕以上のようにして得られた遷移クロック数及び1クロック当りの遷移ピッチに基づいて、当該ノートNiのノートオンタイミングtiから始まり、1クロック毎に、1クロック当りの遷移ピッチだけ変化するピッチベンドデータPBYiを作成し、遷移クロック数分だけ挿入していく。
〔楽器条件を考慮したメロディ生成処理〕
この発明の一実施例によれば、楽器の演奏可能な条件を考慮したメロディ生成パラメータを設定することにより、発音する(演奏する)楽器にふさわしいメロディを生成することができる。図20は、この発明の一実施例による楽器演奏可能条件を考慮したメロディ生成システムの機能ブロック図である。このシステムでは、外部記憶装置9を利用して、楽器非依存性メロディ生成用データベースB1、楽器演奏可能条件データベースB2及び演奏可能条件変更用データベースB3が設けられる。そして、音楽条件を設定するために曲風等指定ブロックB4で曲風を指定し、楽器種類指定ブロックB5で楽器種類を指定すると、指定した曲風の音楽条件を備え、指定した種類の楽器にふさわしい所望のメロディが生成されるようになっている。
ここで、楽器非依存性メロディ生成用データベースB1は、曲風毎に、調、8分系/16分系/3連符系(音符分解能パラメータ)、拍子などの各種パラメータを楽器非依存性のメロディ生成用データとしてもっている。これに対して、楽器演奏可能条件データベースB2には、楽器種類毎に、生成音域、跳躍ピッチ幅(なお、「跳躍」とは、短3度以上隔てて演奏することをいう。)、跳躍頻度、表現奏法情報、調(管楽器のみ)などの、当該楽器で演奏可能、表現可能或いは演奏し易い各種条件パラメータ情報が、演奏可能条件データとして予め用意されている。なお、「生成音域」パラメータは楽器に依存するデータとするが「跳躍ピッチ幅」パラメータは楽器非依存性データにするという組み合わせにしてもよい。
また、演奏可能条件変更用データベースB3は、曲風毎に、この楽器演奏可能条件データを変更するための演奏可能条件変更用データをもっている。この演奏可能条件変更用データは、元データを基に変更するためのデータでもよいし、演奏に制約がない電子音源で演奏することを前提とした場合のために、絶対データとして与えてもよい。さらには、元データを拡大するデータであってもよい。
曲風等指定ブロックB4で曲風を指定し、楽器種類指定ブロックB5で楽器種類を指定して音楽条件を設定すると、第1抽出ブロックB6にて、指定された曲風に応じた楽器非依存性メロディ生成用データが抽出され、第2抽出ブロックB7にて、指定された楽器に応じた楽器演奏可能条件データが抽出される。また、曲風等指定ブロックB4での曲風指定に伴い、演奏可能条件変更用データベースB3から、指定された曲風に応じた演奏可能条件変更用データが取り出され、データ変更ブロックB8にて、第2抽出ブロックB7で抽出された楽器演奏可能条件データを演奏可能条件変更用データに応じて変更する。このデータ変更は、第2抽出ブロックB7からの元データを加工する場合には演算を行い、絶対データに変更する場合には単なる置き換えでよい。
そして、メロディ生成ブロックB9において、第1抽出ブロックB6で抽出された楽器非依存性メロディ生成用データとデータ変更ブロックB8で変更されたの楽器演奏可能条件データに基づいて、指定された曲風の音楽条件を備え指定された楽器に相応しい条件パラメータを満足する所定のリズムデータ、ピッチデータ、表情データなどで構成される所望のメロディが生成される。表情データを含むメロディの生成については、既に図2〜図19で詳述した具体的手法が用いられる。
メロディー生成用データには、演奏する楽器に依存するパラメータ群と楽器に依存しないパラメータ群がある。楽器に依存しないメロディー生成用データには、上述したように、「8分系」、「16分系」、「3連符系」というような、生成するメロディー音の分解能を表わすパラメータ、「3拍子」、「4拍子」などの拍子を表わすパラメータ、或いは、調などのパラメータがあり、楽器非依存性メロディ生成用データベースB1に予め用意される。このような楽器に依存しないメロディー生成用データは、曲風等指定ブロックB4で曲風を指定することにより設定することができるが、或いは、曲風の指定によらずブロックB4で直接設定してもよい。ただし、調については、楽器によって演奏し易い調と演奏しにくい調があるので、楽器種類によっては、楽器に依存するデータとして扱うこともできる。
図21は、この発明の一実施例による楽器演奏可能条件を考慮したメロディ生成システムにおいて用意されるメロディ生成用各種データの具体例を示す。図21(1)は、楽器非依存性データ(B1)の具体的な指定例である。「曲風指定」によると、図21(1)の上2段に示されるように、欄(A)〜(C)の各条件パラメータのセットが指定されるが、最下段の「直接指定」では、各欄(A)〜(C)の条件パラメータが個別的に指定される。
図21(2)は、楽器依存性データ即ち楽器演奏可能条件データ(B2)の具体例である。ここで、「レガート」とは、なめらかな演奏であり、音符から音符へ移るときに、一瞬、音を重ねる演奏をいい、「スタッカート」とは音を短く切る演奏をいう。また、「スラー」とは、ある音から次の音へ移るときに、発音は前のまま連続させピッチだけ変化させる演奏をいう。
図21(3)は、演奏可能条件変更用データ(B3)の具体例である。なお、「静かな」などの曲風指定に対応する演奏可能条件変更用データは楽器非依存としているが、「圧縮」率などは楽器に依存させてもよい。例えば、ピアノの場合、音域が広いので、「静かな」雰囲気にするために圧縮率を1/4にする。すなわち、同じ「静かな」曲風でも、楽器に応じて圧縮率の値を異ならせてもよい。
次に、演奏する楽器に依存するメロディ生成用データの処理について、楽器種類指定ブロックB5で「人声(ソプラノ)」を指定した場合を例にして具体的に説明する。生成音域については、第2抽出ブロックB7により、楽器演奏可能条件データベースB2から、例えば、「C4〜E5」の範囲に設定された音域条件パラメータが取り出される。ここで、曲風等指定ブロックB4で曲風を指定し、例えば、「静かな」というメロディー生成条件を与えたときには、演奏可能条件変更用データベースB3を介し、データ変更ブロックB8にて、この音域パラメータ「C4〜E5」を変更し、「E4〜C5」(=「C4〜E5」の中心を保持し範囲を1/2に圧縮)というように狭くして生成する。ここで、具体的な変更処理方法としては、絶対範囲で決めると元の範囲を逸脱する可能性があるので、「元の範囲の中心を保持して範囲を1/2に圧縮する」という処理方法などを採用するのがよい。この場合、完全に“1/2”とするのではなく、およそ“1/2”とするものでもよい。
また、跳躍距離(跳躍ピッチ幅)については、第2抽出ブロックB7により、楽器演奏可能条件データベースB2から、例えば、「1オクターブまで」に設定された跳躍距離条件データが取り出される。ここで、曲風等指定ブロックB4で曲風を指定し、例えば、「静かな」というメロディー生成条件を与えたときには、演奏可能条件変更用データベースB3を介し、データ変更ブロックB8にて、この跳躍距離「1オクターブまで」を変更し、「完全5度まで」というように狭くして生成する。ここで、具体的な変更処理方法としては、「元の距離を1/2に圧縮する」という処理方法などを採る。この場合、完全に“1/2”とするのではなく、およそ“1/2”とするものでもよい。
さらに、跳躍頻度については、第2抽出ブロックB7により、楽器演奏可能条件データベースB2から、例えば、全音符数の「30%」に設定された跳躍頻度条件データが取り出される。ここで、曲風等指定ブロックB4で曲風を指定し、例えば、「静かな」というメロディー生成条件を与えたときには、演奏可能条件変更用データベースB3を介し、データ変更ブロックB8にて、この跳躍頻度「30%」を変更し、全音符数の「15%」までというように狭くして生成する。ここで、具体的な変更処理方法としては、「元の数値を1/2に圧縮する」という処理方法などを採る。この場合、完全に“1/2”とするのではなく、およそ“1/2”とするものでもよい。
なお、生成されるメロディを電子音源で発音させるという前提では、楽器演奏可能条件データベースB2で設定される演奏可能条件データについて、本来、対応する自然楽器では演奏することができないような発音領域や跳躍状態に設定しても良い。
〔種々の実施態様〕
以上、この発明の演奏データ生成処理を実施例に従って説明してきたが、この発明は、自動作曲に限らず、通常の自動演奏装置に適用可能である。例えば、ステップ記録方式により記録された表情の無い演奏データ、或いは、楽譜認識や音声認識等により認識された表情の無い演奏データに対して、表情を付与する場合に適用することができる。
実施例においては、図2に示されるように、元メロディデータ中のスタッカートデータの有無を「1」/「0」で表わしたスタッカートデータSTを記憶しておき、ST=「1」(スタッカート有)のノートデータについてスタッカート割合テーブルを参照してスタッカート割合(%)を決定するようにしたが、全ノートデータに対してスタッカート割合〔スタッカート無しの場合は「100%」〕を直接記憶するようにしてもよい。
スタッカート頻度テーブルやスタッカート割合テーブルの内容(引数や数値)は、例示したものに限らない。スラー頻度テーブルについても同様である。
ピッチ変化を伴う表情は、一定タイミング毎にピッチベンドイベントデータを挿入することで実現したが、これに限らない。例えば、ピッチベンドイベントデータの挿入タイミングは一定でなくてもよい。具体的には、ピッチ変化カーブのテンプレートを用意しておき、これを指定するデータを挿入するようにしてもよい。この場合、異なる遷移時間への対応については、遷移時間の異なる複数のテンプレートを用意しておき遷移時間に応じてテンプレートを選択するようにしてもよいし、遷移時間に応じてテンプレートを変形させるようにしてもよい。或いは、ポルタメントコントロール等のピッチ変化を指定するコマンドを挿入するようにしてもよい。
なお、システムの形態については、電子楽器の形態に限らず、パソコン+アプリケーションソフトウェアの形態でもよい。電子楽器の形態を取った場合、その形態は、鍵盤楽器に限らず、弦楽器タイプ、管楽器タイプ、打楽器タイプ等の形態でもよい。また、音源装置、自動演奏装置等を1つの電子楽器本体に内蔵したものに限らず、それぞれが別体の装置であり、MIDIや各種ネットワーク等の通信手段を用いて各装置を接続するものであってもよい。
また、処理プログラムや処理に利用する各種データについては、外部記憶媒体から、或いは、通信インターフェースを介して外部装置から、電子楽器やパソコンに供給するようにしてもよい。
次に、自動演奏に関連していうと、作成された演奏データのフォーマットとしては、演奏イベントの発生時刻を1つ前のイベントからの時間で表した「イベント+相対時間」、演奏イベントの発生時刻を曲や小節内における絶対時間で表した「イベント+絶対時間」、音符の音高と符長あるいは休符と休符長で演奏データを表した「音高(休符)+符長」、演奏の最小分解能毎にメモリの領域を確保し、演奏イベントの発生する時刻に対応するメモリ領域に演奏イベントを記憶した「ベタ方式」等、どのような形式でもよい。
また、メモリ上において、時系列の演奏データが連続する領域に記憶されていてもよいし、飛び飛びの領域に散在して記憶されているデータを、連続するデータとして別途管理するようにしてもよい(すなわち、時系列的に連続するデータとして管理することができればよく、メモリ上で連続して記憶されているか否かは問題ではない)。
最後に、MIDIインターフェースに関連していうと、専用のMIDIインターフェースに限らず、RS−232C、USB(ユニバーサル・シリアル・バス)、IEEE1394(アイトリプルイー1394)等の汎用のインターフェースを用いてMIDIインターフェースを構成してもよい。この場合、MIDIメッセージ以外のデータをも同時に送受信するようにしてもよい。