以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本発明の実施の形態にかかる電子楽器の外観を示す図である。図1に示すように、本実施の形態にかかる電子楽器10は、演奏操作子としての鍵盤100を有する。また、鍵盤100の上部には、音色指定ボタン11、自動伴奏開始・終了指示ボタン12、リズムジャンル選択ボタン13、各リズムジャンルにおけるリズムのパターン(エレメント)の指定などを行なうためのリズムエレメント指定ボタン14や、演奏される楽曲に関する種々の情報、たとえば、音色、リズムパターン、コード名などを表示する表示部15を有する。また、本実施の形態にかかる電子楽器10は、ヘテロフォニー的な自動伴奏を付加する際のテンポを設定するテンポ設定ボタン16を有する。
また、本実施の形態にかかる電子楽器10は、たとえば、88個の鍵(A1〜C8)を有する。また、電子楽器10は、自動伴奏をオンする自動伴奏モード、および、自動伴奏をオフにする通常モードの2つの演奏モードのうち、何れかの下での演奏が可能である。この切り替えは、自動伴奏開始・終了指示ボタン12によって行うことができる。また、本実施の形態にかかるヘテロフォニー演奏を行う際には、鍵盤100が2つの領域101と102に分割(スプリット)される。101はユーザが主に左手で、現在のジンス(音律)を指定するジンス指定鍵盤、102はユーザが主に右手で、ヘテロフォニー音楽の主旋律を演奏するメロディ演奏用鍵盤である。さらに、本実施の形態にかかる電子楽器で、従来の西洋音楽的な自動伴奏等を実現するノーマルモードと、ヘテロフォニー音楽的な自動伴奏等を実現するヘテロフォニーモードとを切り替えるためのモード切替スイッチを備えていても良い。
図2は、本発明の実施の形態にかかる電子楽器のハードウェア構成を示すブロックダイヤグラムである。図2に示すように、本実施の形態にかかる電子楽器10は、CPU21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、サウンドシステム24、スイッチ群25、鍵盤100および表示部15を備える。
CPU21は、電子楽器10全体の制御、鍵盤100の鍵の押鍵やスイッチ群25を構成するスイッチの操作の検出とそれによる設定等のRAM23への一時記憶、鍵やスイッチの操作にしたがったサウンドシステム24の制御、自動伴奏パターンにしたがった自動伴奏の演奏など、種々の処理を実行する。また、CPU21は、本発明の実施の形態にかかる、メロディ逸脱の各条件を判定するメロディ逸脱トリガー検出処理を実行する逸脱条件判定部、それらの逸脱トリガーに基づいて実際のメロディ逸脱処理を行う逸脱処理部、さらにユーザ演奏メロディや逸脱処理された各種の楽器パートを実際に発音させる音源発音処理を行う発音指示部を備えている。
ROM22は、CPU21に実行させる種々の処理、たとえば、スイッチの操作、鍵盤の何れかの鍵の押鍵、押鍵に応じた楽音の発音、さらに上記のメロディ逸脱トリガー検出処理、メロディ逸脱処理、音源発音処理などの各種の処理を実行させるプログラムを記憶する。また、ROM22は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの楽音を生成するための波形データを格納した音色波形データ記憶部、および、本実施の形態にかかる逸脱などの条件を格納した伴奏フォーマットセット/逸脱方法指定表の記憶部、伴奏フォーマットセット/逸脱方法指定表で指定されるドラムパターンの実際のリズムパターンを記憶するドラムパターン記憶部、メロディ逸脱でフィルインを挿入する場合のフィルインパターンを記憶するフィルインパターン記憶部、伴奏用のドローンのパターンを記憶するドローンパターン記憶部、さらにプラルトリラーなどの所定の逸脱パターンを記憶する逸脱パターン記憶部などを備えている。これらのドラムパターンやフィルインパターン、ドローンパターン、逸脱パターンなどの各種パターンは、楽音の音色、音高、発音タイミング(発音時刻)、音長などを含むデータ形式(例えばMIDI(Musical Instrument Digital Interface)形式)のデータや、波形データ形式(例えばWAVデータやMP3データ等)のデータとして記憶することが可能である。また、ROM22は、予め定められた所定の音律パターン(トリコルド、テトラコルド、ペンタコルド)のデータと、前記音律パターンを組み合わせた旋律体系(マカーム/ジンス)のデータ(旋律体系データ)が格納されている。
RAM23は、ROM22から読み出されたプログラムや、処理の過程で生じたデータを記憶する。例えば、RAM23には、リズムジャンル選択ボタン13によって選択されたリズムジャンルを記憶するリズムジャンル記憶部、リズムエレメント指定ボタン14によって指定されたリズムのパターン(エレメント)を記憶するリズムパターン(エレメント)記憶部、テンポ設定ボタン16によって設定されたテンポを記憶するテンポ記憶部、メロディ逸脱トリガー検出処理によって判定された各逸脱条件のフラグを記憶する逸脱トリガー記憶部などを有する。
サウンドシステム24は、音源部26、オーディオ回路27およびスピーカ28を有する。音源部26は、たとえば、音色情報や、押鍵された鍵についての情報或いはリズムパターン、逸脱パターン等についての情報をCPU21から受信すると、ROM22の波形データエリアから所定の波形データを読み出して、所定の音高の楽音データを生成して出力する。また、音源部26は、CPU21から受信した波形データを、そのまま楽音データとして出力することもできる。オーディオ回路27は、楽音データをD/A変換して増幅する。これによりスピーカ28から音響信号が出力される。
スイッチ群25は、図1に示した、音色指定ボタン11、自動伴奏開始・終了指示ボタン12、リズムジャンル選択ボタン13、リズムエレメント指定ボタン14、テンポ設定ボタン16、などの種々のボタンを有し、これらのボタンのON/OFF操作を検知して、操作されたボタンの種類情報と共にCPU21に通知する。
本実施の形態にかかる電子楽器10は、通常モードの下においては、鍵盤100の鍵の押鍵に基づいて楽音を発生する。その一方、電子楽器10は、モード切替スイッチによってヘテロフォニー的な自動伴奏を行うヘテロフォニーモードにセットした上で、自動伴奏開始・終了指示ボタン12を操作することにより、ヘテロフォニー自動伴奏モードとなる。なお、この場合、例えば、リズムジャンル選択ボタン13によって選択されたリズムに応じて、自動的にヘテロフォニー自動伴奏モードになることとしてもよい。ヘテロフォニー自動伴奏モードにおいては、メロディ演奏用鍵盤102の鍵の押鍵によりユーザ演奏メロディが演奏されると、その鍵に応じた音高の楽音が発音される。その際、ジンス指定鍵盤101で指定されたジンスや、あらかじめ設定されているマカームに応じた音高で発音される。また、伴奏フォーマットセット/逸脱方法指定表等を参照して、各伴奏パートについて、通常時は基本的にユーザ演奏メロティとユニゾンで旋律を発音しつつ、逸脱条件が満たされた場合には、通常時の「ユニゾンによる伴奏」という条件からは逸脱して、ユーザ演奏メロディに基づいて以下に説明する各種の逸脱を施した逸脱パターンが発音される。これにより、ユーザがメロディを演奏すると、ヘテロフォニー的な伴奏を付加したヘテロフォニー音楽が簡単に演奏できることとなる。
以下、非西洋音楽の旋律体系、および、本実施の形態においてROM22に格納される伴奏フォーマットセット/逸脱方法指定表等のデータベース、音律パターンのデータおよび旋律体系のデータ、各種逸脱パターン等について説明する。なお、以下で説明しているマカームやジンスの各データについても、本実施の形態のROM22の所定の領域に、マカーム/ジンス用データベースとして記憶されているものとする。
西洋音楽においては、中世まではグレゴリオ聖歌に代表されるようなモノフォニー音楽であったが、その後、多声部から構成されるポリフォニー音楽を経て、現在では和声に裏打ちされた音楽が主流となっている。しかしながら、欧米以外、たとえば、中東、アジア、アフリカなどの地域では、モノフォニー音楽、およびそれが発展したヘテロフォニー音楽が現在でもしばしば演奏される。このモノフォニー音楽やヘテロフォニー音楽では、単旋律を細かい音律にしたがって変化させるスタイルが一般的である。
図3は、アラビア音楽における旋律体系であるマカーム(Maquam)のうち、「マカーム・バヤティ(Maquam Bayati)」にしたがった音律を示す楽譜である。この「マカーム・バヤティ」は、6つの4音音律(テトラコルド)に分解され得る。「マカーム」は、テトラコルド、トリコルドなどの一定の音律パターンである「ジンス(Jins)」を組み合わせて構成される。なお、音律パターンは、アラビア音楽においては「ジンス」と称され、他の地域(たとえば、旧ペルシャの地域)では「グーシェ」と称される。
図3に示す「マカーム・バヤティ」の場合は6つのジンスから構成される。図3の第1小節のジンス(第1ジンス)は「バヤティ(Bayati)」、第2小節のジンス(第2ジンス)は「ラスト(Rast)」、第3小節のジンス(第3ジンス)は「バヤティ」、第4小節のジンス(第4ジンス)は「バヤティ」、第5小節のジンス(第5ジンス)は「ナハワンド(Nahawand)」、第6小節のジンス(第6ジンス)は「バヤティ」である。また、第1ジンス〜第3ジンスは上行音型であり、第4ジンス〜第6ジンスは下行音型である。これらジンスは、4音音律であるテトラコルドである。
図3において、「♭(フラット)」に斜線が引かれている部分は(符号311〜315参照)、その音が単に♭が付されている場合と比較して約1/4音だけ高いことを意味している。たとえば、第1ジンスの第2音は、「E♭」より約1/4音だけ高い楽音である。したがって、全音の音の幅を「1」とすると、第1ジンスの第1音と第2音との間、第2音と第3音との間は、それぞれ、「3/4」となる。図3において、音符間の下に記載されている数字(たとえば、符号301、302参照)は、全音の幅を「1」としたときの、当該隣接する音符間の幅を示している。なお、実際の「マカーム・バヤティ」では、厳密には1/4音の変化ではないが、その変化はほぼ1/4音であることから、本明細書では、これを1/4音として表している。
このように、アラビア音楽におけるマカームにしたがって、電子楽器を演奏する場合には、上記ジンスにしたがって、必要に応じて押鍵された鍵より1/4音高い楽音を発音すれば良い。ところが、図3に示すように、「マカーム・バヤティ」では、使用するジンスによって、同一の鍵を押鍵した場合であっても異なる音高の楽音が発音されることがある。図3に示す「マカーム・バヤティ」において、第2ジンスの第3音(符号321参照)を演奏したい場合には、演奏者は、「B♭」の鍵を押鍵して、電子楽器では、「B♭」より1/4音だけ高い音高の楽音を発音する必要がある。その一方、第5ジンスの第2音(符号322参照)を演奏したい場合にも演奏者は「B♭」の鍵を押鍵し、電子楽器は押鍵されたとおりに「B♭」の音高の楽音を発音する必要がある。
図4は、「マカーム・バヤティ」で演奏される曲の例を示す図である。この曲では、第2小節は「ラスト」にしたがっており、その一方、第3小節は「ナハワンド」にしたがっている。したがって、第2小節の第3音の音高は、「B♭」より1/4音だけ高くなり(符号401参照)、第2小節の第1音の音高は、「B♭」となる(符号402参照)。
図5は、他のマカームにしたがった音律の例を示す図であり、図5(a)は、「マカーム・スィカ(Maquam Sikah)」、図5(b)は、「マカーム・フザム(Maquam Huzam)」を示す。図5(a)に示すように、「マカーム・スィカ」の第1小節のジンス(第1ジンス)は「スィカ(Sikah)」、第2小節のジンス(第2ジンス)は「ラスト(Rast)」、第3小節のジンス(第3ジンス)は「ラスト」、第4小節のジンス(第4ジンス)は「スィカ」、第5小節のジンス(第5ジンス)は「ナハワンド(Nahawand)」、第6小節のジンス(第6ジンス)は「スィカ」である。また、第1ジンス〜第3ジンスは上行音型であり、第4ジンス〜第6ジンスは下行音型である。ここでも、第2ジンスの第3音(符号501参照)と第5ジンスの第2音(符号502参照)との間で、同一の鍵を押鍵した場合の問題が生じ得る。
図5(b)に示すように、「マカーム・フザム」の第1小節のジンス(第1ジンス)は「スィカ(Sikah)」、第2小節のジンス(第2ジンス)は「ヒジャーズ(Hijaz)」、第3小節のジンス(第3ジンス)は「ラスト」、第4小節のジンス(第4ジンス)は「スィカ」、第5小節のジンス(第5ジンス)は「ナハワンド(Nahawand)」、第6小節のジンス(第6ジンス)は「スィカ」である。また、第1ジンス〜第3ジンスは上行音型であり、第4ジンス〜第6ジンスは下行音型である。
なお、「マカーム・スィカ」および「マカーム・フザム」にて用いられるジンス「スィカ」は、3音音律であるトリコルドである。また、図5(a)、(b)において「スィカ」が適用される小節の末尾の休符(たとえば、符号511、512参照)は、便宜上記載したもので、「スィカ」にしたがって演奏する際に末尾に休符を入れることを意味しているものではない。
このように、欧米以外の、中東(アラビア)、アジア、アフリカなどの地域でしばしば演奏されるモノフォニー音楽やヘテロフォニー音楽では、いくつかのジンスが組み合わされたマカームに従った音律で、楽曲が演奏される。
そしてさらに、このようなマカームに従って演奏される音楽のうちでも特に広く演奏されるヘテロフォニー音楽では、複数のパートにより基本的に同じ旋律を複数の楽器(声部)で演奏しつつ、一時的にある楽器が変形や装飾を施すために原旋律から離れた演奏を行うことによって、合奏的な演奏が行われるといったことが一般的に行われる。このようなヘテロフォニー音楽における伴奏の形態は、いわゆる西洋音楽における和声伴奏とは異なり、「旋律伴奏」といった形の伴奏が行われることが一般的である。
図6に、西洋音楽における和声伴奏を行っている楽曲の例を、また図7に、部分的に旋律伴奏的な部分を伴う楽曲の例を示す。
図6は、和声伴奏の例として、ドイツ国歌(ハイドン作曲の弦楽四重奏曲の一節)を示している。この楽曲では、最上音がメロディであり、これに対してその下の音によって和音が付加され、いわゆる西洋音楽的な和音伴奏を構成している。
これに対して、図7に示した「君が代」の例では、第1パート(上段の五線譜)の最上音がメロディであるのに対し、第2パートが、第1パートと同型の旋律を奏でつつ、ところどころで逸脱して伴奏を行っていることが見て取れる。なお、図7の「君が代」は、正確には「ヘテロフォニー音楽」とはいえないが、曲の一部において、ユニゾンの部分や旋律伴奏的な部分をもつことから、旋律伴奏的な部分をもつ広く知られた曲の例として、説明の便宜のためここで取り上げたものである。
例えば、図7の第1小節から第2小節では、第1パートと第2パートはそれぞれ同じ旋律をユニゾンで演奏しているのに対し、第3小節、第4小節などでは、第2パートは、第1パートのメロディ旋律からは逸脱して、第1パートとは異なる旋律によって伴奏的な役割を担っている。
そして、図7の場合は、第10小節の3拍目から第11小節めの曲の終わりにかけて、再び第1パートと第2パートがユニゾンで同じメロディ旋律を奏でる形に戻っている。
従来の自動伴奏を行う電子楽器では、もっぱら図6に示したような西洋音楽的な和音伴奏を行う電子楽器が主であり、この図7のような楽曲中の旋律伴奏を行っている部分において、ユーザが第1パートの最上音のメロディを演奏した場合に、他のパートを自動的に付加して自動伴奏を行うといった機能を実現することは困難であった。
本実施の形態にかかる電子楽器10においては、上記のヘテロフォニー音楽における自動伴奏を実現するために、伴奏フォーマットセット/逸脱方法指定表の各データベースをROM22に格納している。
図8から図10は、本実施の形態にかかる伴奏フォーマットセット/逸脱方法指定表の一例である。図8では、ノーマルパターン時の一例を、図9ではソロパターン時の一例を、図10ではフィルインパターン時の一例を、それぞれ示している。以下では、特に必要が無い場合は図8の場合を例に説明を行うが、図9や図10の場合も同様である。
図8から図10の各図に示すように、伴奏フォーマットセット/逸脱方法指定表のデータベース(符号800、900、1000参照)には、それぞれ、リズムジャンル名810およびパート名820ごとに、通常時(基本動作指定)の指定としての音色830、音域/ドラムパターン840、メロディとのdetune(デチューン)850、ドローン860などの項目のデータ(各楽器毎の伴奏情報生成の条件)を有しており、さらに、メロディ逸脱方法として、逸脱パターンごとに、その逸脱パターンを実行する場合の条件が定められるメロディ逸脱方法の項目のデータ870を有している。また、通常時にユニゾン伴奏を行うパート(楽器)について、オクターブ変更したユニゾン伴奏(ユーザ演奏メロディから所定オクターブ移動した音による伴奏)を行うよう条件設定がされていても良い。
図8の例では、メロディ逸脱方法870としてパターンaからパターンlの12パターンが例示されている。これらのメロディ逸脱方法の各パターンの具体的な内容については後述する。
また図8の例では、リズムジャンル名810として、「アダニ(adani)」、「バラディ(Baradi)」、「マルフーフ(Malfuf)」の例を示している。これらは、それぞれ、アラビア音楽におけるリズムパターンのジャンル(リズムの種類)を表すものである。本実施の形態にかかる電子楽器10は、リズムジャンル選択ボタン13によって所望のリズムジャンルが選択されると、その選ばれたリズムジャンルにかかる伴奏フォーマットセット/逸脱方法指定表のデータを参照して以下の動作を行う。
なお、このリズムジャンル選択ボタン13は、例えば、従来の自動伴奏機能の付いた電子楽器において、「ロック」や「バラード」「ポップス」などのリズムジャンルを選択するボタンと共用とすることができる。この場合、例えば、ノーマルモードと、ヘテロフォニーモード(アラブ音楽モード等でもよい)とを切り替えるスイッチを別に設け、このモード切替スイッチの操作状態に応じて、どちらかのリズムジャンルが選択されるように構成することが可能である。すなわち、同じリズムジャンル選択ボタン13が押下された場合に、モード切替スイッチの状態に応じて、例えば「ロック」と「adani」のいずれかのリズムジャンルが選択されるようにすることができる。他方、リズムジャンル選択ボタン13を共用とはせずに、リズムジャンル選択ボタン13によって選択されたリズムジャンルに応じて、自動的に、ヘテロフォニーモードになるようにしても良い。例えば、「ロック」ボタンが選択された場合はノーマルモード、「Baradi」ボタンが選択された場合は自動的にヘテロフォニーモードになる等である。
リズムジャンル選択ボタン13によって、ヘテロフォニーモードにおけるあるリズムジャンルが選択された後、ユーザが自動伴奏開始・終了指示ボタン12により自動伴奏の開始を指示すると、本実施の形態にかかる電子楽器10は、図8から図10のような伴奏フォーマットセット/逸脱方法指定表のデータベースを参照しながら、ユーザの演奏するメロディパートに合わせて他のパートの演奏を自動的に行って、ヘテロフォニー音楽の伴奏を行う。
すなわち、ドラムパートなどの所定のパートで、選択されたリズムジャンルのリズム演奏を行うとともに、他の伴奏パートでは、基本的にユーザの演奏するメロディと同じ旋律を演奏しつつ、ある条件が満たされた場合には、一時的にある楽器が変形や装飾を施すためにメロディ(原旋律)から逸脱した演奏を行って、ヘテロフォニー音楽を実現させる。
この場合において、ユーザが例えば右手でメロディの演奏を行いつつ、左手でリズムエレメント指定ボタン14を操作することにより、ノーマルパターン、ソロパターン、フィルインパターンなどのリズムのパターン(エレメント)を指定することができる。本実施の形態にかかる電子楽器10は、指定されたリズムのパターン(エレメント)に応じて、図8から図10の伴奏フォーマットセット/逸脱方法指定表のうち適切なものを参照して、指定されたリズムのパターン(エレメント)に合った演奏を行う。
また、伴奏を行う各パート名820とそれに対応する音色830として、図8の例では、各リズムジャンルごとに5つのパート(音色)で伴奏を行う場合の例が示されている。
例えば図8では、各リズムジャンルに共通して、ドラムに相当する打楽器として「ダルブッカ」という打楽器の音色を、また、ベースに相当する楽器として「ウッドベース」の音色を用いることが示されている。
また、伴奏パート1から3について、伴奏パート1は「ウード」という楽器の音色を、伴奏パート2は「ナイ」という楽器の音色を用いることが指定されている。さらに、伴奏パート3としては、リズムジャンルに応じて、「バイオリン」の音色と「ストリングス」の音色とを切り替えて用いることが指定されている。実際には、これらの各楽器音は、ROM22に格納されている音色のうち、いずれの音色であるかを指定する番号等が記憶されている等により音色が指定され、この指定された音色毎の波形を読み出して、メロディに合わせて、あるいは以下で説明する各種逸脱パターンで指定された音に調整されて、サウンドシステム24を通して発音される。
もちろん、これらの音色の指定は、リズムジャンル毎、またパート毎に、自由に指定することができる。また、伴奏を行うパート数についても、必ず一定のパート数でなければならないというものでもなく、リズムジャンルに応じて任意の数のパートを用いるよう指定しておくことが可能である。
また、図8では、「音域/ドラムパターン840」の項目において、各パートごとに音域(オクターブ)の指定や、ドラムパートについては使用するドラムパターンの指定が含まれている。ここで、音域として「0」と指定されているのは、通常通りの音域(ユーザ演奏メロディのオクターブにて登録されている音色のオクターブそのまま)で発音することを表している。
一方図9や図10では、リズムエレメント指定ボタン14によってソロパターンが指定された場合(図9)や、フィルインパターンが指定された場合(図10)などに、それぞれ表900や表1000に従って、音域を変化させて演奏することを示している。例えば、これらの表中の音域データが「−1」であった場合は、該当するパートの音を1オクターブ下げた音で発音するようにする。また、「+1」であった場合は1オクターブ上げて演奏し、「+2」の場合は2オクターブ上げて演奏し、「−2」の場合は2オクターブ下げて演奏することを表す。
例えば、図9の場合、リズムジャンル「adani」において、ソロパターンが指定された場合には、伴奏パート1の「ウード」と、ベースパートの「ウッドベース」が、それぞれ、1オクターブ低い音域で演奏されるということを表している。
また、ドラムパートについてのこの「音域/ドラムパターン840」の項目では、「ダルブッカ」の音色で演奏されるドラムパターンの番号が指定されている。ここで、「A02」、「A03」「A07」等で示されているのは、ドラムパターン番号である。このドラムパターンの例を図11に示す。
なお、図11において、音程の違いは、例えば一般的なMIDI音源におけるドラムセットなどのように、各音程に対応する音色(サンプリング音)が鳴るようになっているものとしてもよい。例えば、C4(ト音記号下第一線の音)は、ダルブッカをオープンにしたときの音色、F4(ト音記号第一間の音)は、ダルブッカをクローズにしたときの音色、などのようにしてリズムパターンのバラエティを付けることが可能である。
さらに、図8の「メロディとのdetune(デチューン)850」の項目において、各楽器のデチューン幅をあらかじめ設定しておくことが可能である。
デチューンとは、各楽器の音色の音高のチューニングの幅を指定するものである。従来より、電子楽器においては、半音の100分の1の音高幅(すなわち、半音の1%の音高幅)を「1セント」と称して、この値を指定することにより各楽器音のチューニングが可能となっている。図8の「メロディとのdetune850」の値は、この「セント」単位でのチューニング幅を表しているものである。
例えば、図8の「adani」のリズムパターンの場合、伴奏パート1の「ウード」はメロディより2セント低い音で演奏され、伴奏パート2の「ナイ」は3セント高い音で演奏され、伴奏パート3の「バイオリン」は5セント高い音で演奏されるよう指定されている。
上述のように、ヘテロフォニー音楽では、複数のパートにより基本的に同じ旋律を複数の楽器(声部)で演奏しつつ、一時的にある楽器が逸脱をするといった形式が一般的であるので、複数の楽器が同じ旋律を演奏する場合が多い。このため、図8のように各楽器毎に多少のチューニングの差異をつけて、音に広がりを持たせる等の効果を得るようにすることが望ましい場合があるからである。
また、図8には図示していないが、同様に、各楽器毎にパンの設定をする項目を設けて、各楽器の定位をパートごとに変えるように設定して、さらに音の広がりを得られるように設定することも可能である。この場合、楽器ごとに、例えば、センターを0として、左右に最大−64〜+63までの値によって定位の位置を指定するようにすることが可能である。
さらに図8の「ドローン860」の項目においては、民族音楽などによく見られる「ドローン」を演奏する場合のドローンのパターン番号が指定されている。
「ドローン」とは、比較的単調で持続する音を演奏することをいう。低音で演奏される場合が多く、インドの音楽でしばしばみられる主音と5度の音を繰り返し演奏して持続させる音などが該当する。また、バグパイプでは、ファ(F)の音等、一定の低音の持続音を鳴らし続ける場合があるが、これなどもドローンの一種と考えられる。さらに、オルゲンプンクトなども、ドローンの一種と言える。
このドローンのパターンの例を図12に示す。本実施の形態においては、図9のソロパターンの場合や、図10のフィルインパターンの場合にドローンが指定されている例を示している。ここで、「p10」、「p15」、「p12」は、ドローンのパターン番号を表している。実際には、例えば図12のドローンパターン(例1)がp10として、またドローンパターン(例2)がp15として、ROM22中のドローンパターン記憶エリアにMIDI形式で記憶される等して実現される。
また、図8の「メロディ逸脱方法870」の項目では、各種のメロディ逸脱パターンa〜lに対して、その逸脱を行う条件を示している。この「メロディ逸脱方法870」の、各メロディ逸脱パターンa〜lの具体例を図13に示す。また、図14に、各種メロディ逸脱パターンを実行する条件を細分化した、個別の「逸脱トリガー」の例を示す。
本実施の形態にかかる電子楽器10は、図8の「メロディ逸脱方法870」の欄を参照し、各マス目に条件として示されている「逸脱トリガー」の条件が満たされた場合に、該当するマス目の逸脱方法(a〜l)を該当するパートによって演奏する。
例えば、リズムジャンル選択ボタン13によってリズムジャンル「adani」が選択されている場合であって、リズムエレメント指定ボタン14により「ノーマルパターン」が指定されている場合、図8の表800における「adani」の「メロディ逸脱方法870」の欄が参照される。
そして、ユーザの演奏するメロディ等の状況が、例えば、図14に示す「逸脱トリガー」のうち、トリガーナンバー1「メロディVelocityが直前より大きくなった」の条件と、トリガーナンバー8「メロディが半拍以上延びている」の条件がともに満たされた場合に、伴奏パート1「ウード」の音色で、図13に示した逸脱パターン「i」、すなわち「同音連打」の逸脱を行うことが指定されている。
以下に、図13のメロディ逸脱パターンの各例a〜lの具体的な内容を説明する。
逸脱パターン「a」は、「detune 5%up」である。これは、当該逸脱パターンaが指定されたパートについて、図8でそのパートについて設定されている「メロディとのdetune850」の値を、5セント大きくするものである。
実際には、ユーザの演奏しているメロディとのdetuneを広げる方向に変更して該当パートを演奏する。すなわち、該当パートの元のdetune値がプラス値の場合、元のdetune値に+5したdetune値で該当パートを演奏する。一方、該当パートの元のdetune値がマイナス値の場合、元のdetune値に−5したdetune値で該当パートを演奏する。
また、この場合、detune値を変化させる幅は、必ず一定値(例えば5セント)でなくても良く、例えば元のdetune値の半分の値(元のdetune値が+4であれば、+2など)をさらに加えるようなこととしても良い。
逸脱パターン「b」は、「delay 16分音符分」である。これは、当該逸脱パターンbが指定されたパートについて、ユーザの演奏しているメロディから、16分音符分ずつ遅らせて発音させるものである。
この場合、遅らせるタイミングは必ずしも所定の音符長でなくともよい。例えば、自動伴奏について、テンポ設定ボタン16によりユーザが指定したテンポの設定に応じて、遅らせる音符の長さを変化させても良い。
逸脱パターン「c」は、「Velocity 10%up」である。これは、当該逸脱パターンcが指定されたパートについて、そのパートの通常時のベロシティ(打鍵強さ・音の強弱)の規定値より10%上げて演奏することにより、通常時よりも大きめの音で発音させるものである。
この場合、ベロシティを大きくする幅は、元の(通常時の規定値の)ベロシティ値に、MIDI規格におけるベロシティ値で「+10」したベロシティ値を用いることとしても良いし、または、ユーザの演奏したメロディのベロシティ値の10%をさらに加えることとしても良い。
通常時のベロシティ規定値は、例えば、各パターンごとにあらかじめ設定されているベロシティ値を用いても良いし、ユーザの演奏したベロシティ値に基づくベロシティ値を用いても良い。この場合、上記逸脱パターン「c」の「Velocity 10%up」の逸脱は、ユーザの演奏しているメロディのベロシティに基づいて、そこから+10%あるいはベロシティ値を+10したベロシティで演奏するようにすることができる。
逸脱パターン「d」は、「上からのプラルトリラー」である。これは、当該逸脱パターンdが指定されたパートについて、ユーザの演奏しているメロディの音に対するプラルトリラーまたはトリルを付加する装飾を行うものである。
図15にプラルトリラーの例を示す。プラルトリラーは、西洋音楽では一般的には、図15の上段に示すような記号で表される奏法を指し、原音の上または下の音を演奏してから原音に戻るような装飾を、音符の頭(始め)に付加する装飾を言う。実際には、例えば、図15の下段に示すように、原音「ド」に対して、上の音「レ」から「レドレド−」というように装飾をして演奏する逸脱パターンである。
他の逸脱パターンでも設定がされている場合があるが、本逸脱パターンdでは、想定楽器が「ナイ・フルート」と設定されている。この場合、当該想定楽器以外のパートで、かかる逸脱パターンを選択しようとした場合には、無効とするなどの処理を含めることも可能である。
例えば、図8の伴奏パートの楽器について、図8に設定されている楽器ではなく、ユーザが任意の楽器を選択できるようになっている場合等には、図8の「メロディ逸脱方法」のマトリクス部分に記載されている条件が満たされた場合であっても、図13の想定楽器以外の楽器では、逸脱パターンでの演奏に移行しないようにする、などの処理が可能である。このような「想定楽器」についての制限処理は、他の逸脱パターンの場合も同様である。
逸脱パターン「e」は、「指定パターンに合わせてメロディ音に到達するアルペジォ」である。これは、当該逸脱パターンeが指定されたパートについて、現在指定されているテトラコルド(ジンス、またはマカーム内の構成ジンス)に含まれている音を用いて、アルペジォでユーザの演奏しているメロディの音に到達するような装飾を行うものである。
逸脱パターン「f」は、「トレモロ/バッテリー奏法」である。これは、当該逸脱パターンfが指定されたパートについて、ユーザの演奏しているメロディの音と、特定の音とを所定の早さで交互に発音させて、トリルやトレモロ、あるいはバッテリー奏法と呼ばれる効果を付けて演奏するものである。この逸脱パターンfは、例えば、「サントゥール」と呼ばれる民族楽器の演奏形態によるメロディ装飾(逸脱)を行うものである。
具体的には、例えば、ユーザの演奏している音とその隣接音との間でのトリルを発音することが可能である。また、ユーザの演奏している音と、現在指定されているマカーム(またはジンス)の開始音や終止音との間でのトリルまたはトレモロを発音することが可能である。さらに、ユーザの演奏している音と、オクターブ異なる音との間でのトレモロを発音することとしてもよい。
逸脱パターン「g」は、「メロディの音価により、メロディと開始音を交互に発音」である。これは、当該逸脱パターンgが指定されたパートについて、ユーザの演奏しているメロディの音が所定以上長く延ばされた場合に、ユーザの演奏している音と、現在指定されているマカーム(またはジンス)の開始音とを、交互に発音させるように装飾するものである。
ここで、本例においては、この逸脱パターンgでは、比較的ゆっくりのリズムで、ユーザ演奏メロディ音と、マカーム(またはジンス)の開始音とを交互発音するものとし、逸脱パターンf、h等の「トリル」「トレモロ」は、比較的早いリズム(短い音)での装飾を行うものとする。
逸脱パターン「h」は、「持続メロディへのトリル挿入」である。これは、当該逸脱パターンhが指定されたパートについて、ユーザ演奏メロディ音が所定以上延ばされていた(同じ音で持続されている)場合に、トリルを挿入して装飾(逸脱)を行うものである。
逸脱パターン「i」は、「同音連打」である。これは、当該逸脱パターンiが指定されたパートについて、ユーザ演奏メロディ音を、短い音符に切って、連打する装飾(逸脱)を行うものである。
逸脱パターン「j」は、「メロディがない小節後半でフィルイン(おかず)挿入」である。これは、ユーザ演奏メロディ音が休み(演奏されていない)で、小節の後半に来ていると判断された場合に、当該逸脱パターンjが指定されたパートについて、所定のパターンでフィルイン(おかず)を挿入することによって装飾(逸脱)を行うものである。
この場合のフィルイン(おかず)のパターンは、現在指定されているテトラコルド(ジンス、またはマカーム内の構成ジンス)に従って、登録パターンから選択して発音するようにすることができる。
逸脱パターン「k」は、「音域指定」である。これは、当該逸脱パターンkが指定されたパートについて、通常と異なるオクターブでユーザの演奏するメロディ音と同じ旋律を演奏するようにするものである。ユーザの演奏するメロディ音と同じ旋律であっても、楽器によって音域を上げたり下げたりすることで、ヘテロフォニー演奏に厚みをもたせることができる。
例えば、曲が盛り上がったと判定される場合に、ある楽器について、通常より1オクターブ高い音で、ユーザの演奏するメロディ音と同じ旋律を演奏して、より曲調を盛り上げる自動伴奏を施すなどである。
逸脱パターン「l」は、「ジンスの倚音追加」である。これは、当該逸脱パターンlが指定されたパートについて、ユーザが演奏しているメロディ音に対して、倚音を付加して装飾(逸脱)するものである。
倚音とは、非和声音の一種であり、前打音ともいわれるものである。ここでは、ユーザが演奏しているメロディの音に対して、そのメロディ音に隣接する音等を先に発音した後に、ユーザのメロディ音に移行する形の装飾(逸脱)を行う。倚音の長さは、あらかじめ定められた所定の長さだけ倚音を発音した後に、ユーザの演奏するメロディ音に移行する。また、この倚音の長さは、自動伴奏についてテンポ設定ボタン16によりユーザが指定したテンポの設定に応じて、長さを変えるようにしても良い。
本実施の形態にかかる電子楽器10は、以上のような図13の各種の逸脱について、図8の「メロディ逸脱方法870」の欄を参照して、あるパートについてある逸脱を行うべきか否かを判断する。その際に逸脱条件として判断される個々の要素が、個別の「逸脱トリガー」として図14に示されている。なお、図8〜図10、図13、図14に示す逸脱条件や逸脱パターンは、一例としてのものであり、他の条件や他のトリガーを用いて逸脱条件を判断しても良いし、他の逸脱パターンを定義して、他の逸脱方法を実行することも可能である。
トリガーナンバー「1」は、「メロディベロシティが直前より大きくなった」か否かを示すフラグであり、例えば、ユーザの押鍵するメロディについて、MIDI形式データの「ベロシティ」の値に基づいて判断する。例えば、ユーザの押鍵メロディについて、現在の音のベロシティと、それより前の所定の期間の音のベロシティ値の大小を比較して、現在の音のベロシティ値の方が大きければ、ON(1)とする。
この場合、急激な変化や誤差(ノイズ)的な誤動作を避けるために、例えば、移動平均のように、直近数音のベロシティ値の平均値を比較するようにしてもよい。また、直前音と現在の音のベロシティ値について、単に大小をみるだけでなく、例えば直前値より20%上がっていたら本トリガーをON(1)とする等の判定を行ってもよい。
トリガーナンバー「2」は、「小節の頭」か否かを示すフラグである。これは、例えば、小節の1拍めの拍頭でのみON(1)とするようにしてもよいし、あるいは、小節の拍頭から所定の期間(例えば8分音符1個分等)だけON(1)となるようにしてもよいし、拍頭の前後の所定の期間(例えば拍頭の、16分音符1個分前から、8分音符1個分後まで等)でON(1)となるようにしてもよい。
トリガーナンバー「3」は、「前のメロディオフから4拍以上オンなし」か否かを示すフラグである。これは、メロディ音が4拍以上演奏されていない場合にON(1)となり、次にメロディ音が押鍵されたときにOFF(0)となるフラグである。この「4拍」との条件も、必要に応じて、他の拍数のフラグを必要な数だけもつようにしても良い。
トリガーナンバー「4」は、「メロディが2拍以上延びている」か否かを示すフラグであり、文字通り、ユーザの押鍵メロディ音が2拍以上延ばされているときにON(1)となり、当該メロディ音が離鍵されるとOFF(0)となる。
トリガーナンバー「5」は、「小節の後半」か否かを示すフラグである。ここでは、4拍子の演奏を想定しているので、小節の3拍目、4拍目にはON(1)となり、それ以外(小節の前半)にはOFF(0)となる。この「小節の後半」フラグは、リズムの拍子などに合わせて、適宜判断基準を変更させることも可能である。
トリガーナンバー「6」は、「メロディオフ」か否かを示すフラグであり、メロディ押鍵されている間はOFF(0)となり、メロディ押鍵が無い場合にON(1)となる。
トリガーナンバー「7」は、「メロディパターンが3回繰り返し」ているか否かを示すフラグである。実際には、例えば、現在の音を基準に、現在から過去の所定の拍数(半拍、1拍、2拍等)や、所定の音数(例えば、3音〜8音等)で区切ったときに、同じメロディのパターンが3回続けて現れているかどうかを判断して、同じメロディが3回繰り返されている場合にON(1)となり、この条件に合致しないメロディが押鍵されるとOFF(0)となる。繰り返し回数については、3回以外の回数としても良い。
トリガーナンバー「8」は、「メロディが半拍以上延びている」か否かを示すフラグであり、トリガーナンバー「4」と同様、ユーザの押鍵メロディ音が半拍以上延ばされているときにON(1)となり、当該メロディ音が離鍵されるとOFF(0)となるフラグである。
このように、各種のリズムジャンルおよびリズムパターン(エレメント)ごとに、その場合に用いられる各パートの基本の動作設定と、メロディの逸脱方法をROM22に格納しておき、ユーザのメロディ演奏に合わせて、基本的にユーザ演奏メロディと同じ旋律を演奏しつつ、ROM22のメロディ逸脱方法の条件に合致した場合に、適宜、ユーザの演奏するメロディに基づいたメロディの逸脱を行うことにより、本実施の形態にかかる電子楽器10は、ヘテロフォニー的な自動伴奏を付加した演奏を行うことができる。
以下、本実施の形態にかかる電子楽器10において実行される処理についてより詳細に説明する。
図16は、本実施の形態にかかる電子楽器10において実行されるメインフローの例を示すフローチャートである。電子楽器10のCPU21は、電子楽器10の電源が投入されると、RAM23中のデータの初期化や、表示部15の表示画面のクリアを含むイニシャル処理(初期化処理)を実行する(ステップSA1)。また、このイニシャル処理において、マカームおよびジンスのデータをROM22から読み出し、RAM23の所定の領域に格納する。
イニシャル処理(ステップSA1)が終了すると、CPU21は、リズムジャンル選択ボタン13によって、リズムジャンルの選択が指示されているか否かを調べる(ステップSA2)。リズムジャンル選択ボタン13によって、例えば図8のリズムジャンル名810として示されているような、「アダニ(adani)」、「バラディ(Baradi)」、「マルフーフ(Malfuf)」などのリズムジャンルが選択されている場合(ステップSA2:Yes)、CPU21は、その選択されたリズムジャンルを内部的にセットする(ステップSA3)。すなわち、RAM23の所定のリズムジャンル記憶エリアにリズムジャンルに対応する番号等の情報を記憶し、また、例えば、図8を参照して、選択されているリズムで用いられる楽器の音をプリセット音色リストの中から選択してセットし、また、選択されているリズムのリズムパターンをROM22から読み出す。
なお、本図16では、リズムジャンルの選択・セットについては、実際のヘテロフォニー演奏が始まる前に行われるものとして、ステップSA2とSA3の処理は、以下のステップSA5からステップSA12のループに入る前に行われることとなっているが、ループ中に変更可能なように構成することとしても差し支えない。
続いて、CPU21は、自動伴奏開始・終了指示ボタン12によって、自動伴奏の開始が指示されたか否かを判断する(ステップSA4)。自動伴奏の開始が指示されていない場合は(ステップSA4:No)、本発明に係るヘテロフォニー演奏モードが始動しないので、何もせずに終了する。
自動伴奏の開始が指示されると(ステップSA4:Yes)、CPU21は、以下のステップSA5からステップSA12の処理を繰り返し実行して、本発明に係るヘテロフォニー演奏を実現する。そして、ステップSA12において、自動伴奏開始・終了指示ボタン12によって自動伴奏の終了が指示されたと判定されるまで、ステップSA5からステップSA12のループを繰り返し実行する。
まず、CPU21は、リズムエレメント指定ボタン14が操作されて、リズムパターン(エレメント)の選択がされたか否かを判定する(ステップSA5)。ここで、本実施の形態にかかる電子楽器10では、前述のように、ユーザは、右手でメロディの演奏を行いつつ、左手でリズムエレメント指定ボタン14を操作することにより、ノーマルパターン、ソロパターン、フィルインパターンなどのリズムのパターン(エレメント)を指定することができる。このリズムパターン(エレメント)の指定が行われた場合(ステップSA5:Yes)、その指定されたリズムパターン(エレメント)のセットを行う(ステップSA6)。具体的には、RAM23の所定のリズムパターン(エレメント)記憶エリアに、リズムパターン(エレメント)に対応する番号等の情報を記憶し、また、これに基づいて、図8から図10のいずれのテーブルを使用するかを、指定されたリズムパターン(エレメント)に応じて切り替える。
また、CPU21は、テンポ設定ボタン16によって、テンポの設定がされたか(変更されたか)を調べ(ステップSA7)、テンポ変更操作がされた場合(ステップSA7:Yes)には、適宜指定されたテンポに変更する設定を行う(ステップSA8)。
次に、CPU21は、本実施の形態に係る電子楽器10でヘテロフォニー演奏を行うための、自動伴奏処理を行う(ステップSA9)。この自動伴奏処理については、図17以下を用いて後述する。
そして、CPU21は、この自動伴奏処理によってなされた種々の処理に基づいて、音源に発音する音色や音高、音長、あるいは波形ファイルの送受信等を行うことによって、サウンドシステム24から実際の音を発音させる処理を行う(ステップSA10)。以下で詳述するが、ここでは、例えば、ジンス指定鍵盤101によって指定されたジンスに基づいて、メロディ演奏用鍵盤102で演奏された主旋律を発音させる。さらに、例えば、ヘテロフォニー演奏に係るメロディの逸脱が指定された楽器について、指定された逸脱を行う音を発音させる等の処理を行う。
より詳細には、まず、ユーザの演奏しているメロディを、指定されたメロディ音色によって発音させる。さらに、図8〜図10を参照し、各パート(820等)ごとに、指定されている音色での発音を行う。この際、各パートごとに、RAM23上に記憶されている逸脱中フラグ[Part,Pattern]を参照し、あるパートが逸脱中であることが判明したら(フラグがON(1)であったら)、そのフラグの立っているPatternの数で示される逸脱パターンに応じた逸脱を行って発音する。また、そのような逸脱中フラグが立っていなければ(フラグがOFF(0)であったら)、そのパートについては、ユーザの演奏しているメロディとユニゾンで同じ旋律を発音させる。なお、各逸脱パターンに応じた逸脱を行った発音の具体的な方法については、以下の各逸脱パターンのフローチャートの説明の部分において詳細に説明する。
音源発音処理(ステップSA10)が終了すると、CPU21は、その他の処理(たとえば、表示部15への画像表示、LED(図示せず)の点灯、消灯など:ステップSA11)を実行する。
続いて、CPU21は、自動伴奏開始・終了指示ボタン12によって、自動伴奏の終了すなわちヘテロフォニーモードでの演奏の終了が指示されたか否かを判断する(ステップSA12)。そして、自動伴奏終了が指示されない間は(ステップSA12:No)、ステップSA5へ戻り、ループ処理を継続してヘテロフォニー演奏を継続し、自動伴奏の終了が指示されると(ステップSA12:Yes)、図16に示される一連の処理を終了する。
次に、上述したステップSA9で実行される、本実施の形態に係る電子楽器10でヘテロフォニー演奏を行うための自動伴奏処理について、図17を用いて詳細に説明する。
図16のメインフローから図17の自動伴奏処理が呼び出されると、CPU21は、伴奏鍵すなわちジンス指定鍵盤101の押鍵があるか否かを判定する(ステップSB1)。そして、伴奏鍵(ジンス指定鍵盤101)の押鍵があった場合(ステップSB1:Yes)その押鍵に応じて、ジンスの設定を変更する(ステップSB2)。
これは、前述のように、あるマカームの曲であっても、例えば上行音型時と下降音型時でジンスが変わり、同じ鍵を演奏していても発音すべき音が変化する等の、アラビア音楽の特性に合わせるために、適宜、ジンス指定鍵盤101でジンスを指定することができ、これに合わせてジンス設定を変更できるようにしているからである。
次に、CPU21は、メロディ演奏用鍵盤102の押鍵があるか否かを判定する(ステップSB3)。メロディ演奏用鍵盤102の押鍵があった場合には(ステップSB3:Yes)、押鍵されている鍵盤と、現在設定されているジンスとに応じた音高の音を、ユーザ演奏主旋律として発音する(ステップSB4)。
なお、このとき、ジンス指定鍵盤101によるジンスの指定と、メロディ演奏用鍵盤102によるメロディ演奏音とが矛盾しているような場合、例えば、指定されたジンスでは存在しない(割り当てがなされていない)音がメロディ演奏用鍵盤102で指定されたような場合には、元のマカーム通りに発音したり、あるいは、そのような音は無視することとして発音しない等と処理する。なお、マカームについては、例えば、図16のメインフローにおけるステップSA5からSA12のループ処理に入る前に、図示しない設定ボタンによって、例えばリズムジャンルの設定と同様に、あらかじめユーザが設定しておくことができる。あるいは、リズムジャンルの設定と同時に、自動的にそのリズムで頻用されるマカームが自動設定されるようにしても良い。
その後、CPU21は、メロディ逸脱トリガーの検出処理を行う(ステップSB5)。このメロディ逸脱トリガー検出処理については、図18、図19を用いて後述するが、ユーザに入力されているメロディの音などに基づいて、図14に示されている、個別の「逸脱トリガー」の条件が満たされたか否かを判別し、各トリガーのフラグ値をONまたはOFFにセットする。
個々の逸脱トリガーごとの判定とフラグのセットが行われた後、CPU21は、メロディ逸脱処理を行う(ステップSB6)。このメロディ逸脱処理については、図20以降の図を用いて後述するが、各逸脱トリガーのフラグ値等に基づいて、図8から図10のテーブルを適宜参照することにより、各パート毎に、逸脱を行う条件が成立しているか否かを個別に判断し、ある逸脱パターンを行う条件が満たされていた場合は、その条件が成立したパートについて、条件が成立した逸脱を行うように制御する。
そこで、まず、図18と図19を参照して、上記ステップSB5で実行される、メロディ逸脱トリガーの検出処理について説明する。なお、この図において、各トリガーナンバーの逸脱トリガーの判定結果(フラグ)は、RAM23の所定の領域に、Trigger[]の配列で記憶されるものとする。
まず、CPU21は、現在の演奏が、小節の頭であるか否かを判定し(ステップSC1)、小節の頭である場合(ステップSC1:Yes)は、トリガーナンバー2(小節の頭)のフラグTrigger[2]をON(1)にセットする(ステップSC2)。一方、小節の頭で無い場合には(ステップSC1:No)、トリガーナンバー2のフラグTrigger[2]をOFF(0)にセットする(ステップSC3)。
具体的には、自動伴奏がオンとなって自動伴奏モードである場合(ヘテロフォニー演奏モードである場合)には、現在選択されているリズムジャンル・リズムパターンに応じたリズムパターンが、テンポ設定ボタン16によって設定されたテンポで再生されているので、そのタイミング(テンポ)に応じて、現在の小節内の拍数位置が調べられる。そして、現在の小節内における拍数位置が、例えば1拍目の頭(小節の最初)から、2拍目の頭の前(1拍目の最後)までに存在する場合に、「小節の頭である」と判断されることとなる。
続いて、CPU21は、現在の演奏が、3拍目以降であるか否かを判定し(ステップSC4)、3拍目以降である場合(ステップSC4:Yes)は、トリガーナンバー5(小節の後半)のフラグTrigger[5]をON(1)にセットする(ステップSC5)。一方、小節の頭で無い場合には(ステップSC4:No)、トリガーナンバー5のフラグTrigger[5]をOFF(0)にセットする(ステップSC6)。
具体的には、ステップSC1と同様、現在のリズムパターンとテンポ設定に基づいて、現在のタイミングが、小節内のどの拍数位置であるかを判断する。そして、現在の小節内における拍数位置が、3拍目の頭(小節の最初)から、次の小節の直前までに存在する場合に、「3拍目以降である」と判断されることとなる。なお、例えばここで4拍のリズムパターンが演奏されているとすると、演奏位置がその3拍目と4拍目の間に存在する場合に、Trigger[5]がON(1)となる。
次に、CPU21は、現在、ユーザによってメロディ押鍵がある、すなわち、メロディ演奏用鍵盤102でメロディ入力がなされているか否かを判断する(ステップSC7)。各メロディ逸脱トリガーの中には、メロディが押鍵されているときにフラグONとなるもの、または逆に、メロディ押鍵が無い場合にフラグONとなるもの、が含まれているので、このステップSC7の判定によって、以下の処理を振り分けているものである。
すなわち、メロディ入力がされている場合(ステップSC7:Yes)には、まず、メロディ押鍵が無い場合にONとなる、トリガーナンバー3(前のメロディオフから4拍以上オンなし)および6(メロディオフ)のフラグTrigger[3]とTrigger[6]をOFF(0)とセットする(ステップSC8)。
他方、メロディ入力がされていない場合(ステップSC7:No)には、メロディ押鍵がある場合にONとなる、トリガーナンバー1(メロディベロシティが直前より大きくなった)、4(メロディが2拍以上延びている)、7(メロディパターンが3回繰り返し)、8(メロディが半拍以上延びている)の各フラグTrigger[1]、Trigger[4]、Trigger[7]、Trigger[8]をOFF(0)とセットする(ステップSC9)。
そして、メロディ入力がされていない場合(ステップSC7:No)、CPU21は、上述の各種逸脱トリガーのフラグOFF処理(ステップSC9)に続いて、メロディ押鍵が無い場合にONとなり得るフラグの判定を行う。まず、メロディ押鍵がないことから、トリガーナンバー6「メロディオフ」については、この時点で成立していると判定できるので、ステップSC10において、Trigger[6]がON(1)される(ステップSC10)。
次に、CPU21は、4拍以上休符であるか、すなわち、前回のメロディ離鍵から4拍以上、メロディの押鍵入力がされていないかどうかが調べられる(ステップSC11)。4拍以上休符であった場合(ステップSC11:Yes)、トリガーナンバー3「前のメロディオフから4拍以上オンなし」の条件が満たされているので、Trigger[3]がON(1)される(ステップSC12)。他方、前回のメロディ離鍵から4拍以上休符では無い場合には、Trigger[3]がOFF(0)とされる(ステップSC13)。
そして、これらの、メロディ入力がされていない場合にONとなり得るフラグ(ここでは、トリガーナンバー3及びトリガーナンバー6)についての判定が終了すると、ステップSD16へ処理を進める。これ以降の処理については後述する。
一方、メロディ入力がされている場合(ステップSC7:Yes)には、上述のように、ステップSC8における、トリガーナンバー3と6のOFF処理が行われた後、図19のステップSD1へ処理を進めて、メロディ押鍵がある場合にONとなり得るフラグの判定を行う。
まず、CPU21は、現在押鍵されているメロディ押鍵が、前回この判定処理が行われたときから後に、新たに押鍵されたものであるか、あるいは、前回の判定以降も押鍵が継続された音であるかを判定する(ステップSD1)。具体的には、例えば、RAM23上に、図示しないバッファを儲けて、毎回のこのステップSD1の処理ごとに、そのときに押鍵されている鍵盤の情報(音高、押鍵開始時刻等)を記憶しておき、次回のステップSD1の処理の際に、前回バッファに記憶された押鍵情報と、現在の押鍵情報とを比較すること等により判断を行うことが可能である。
現在押鍵されているメロディ押鍵が新たなメロディ押鍵である場合(ステップSD1:Yes)、トリガーナンバー4(メロディが2拍以上延びている)や、トリガーナンバー8(メロディが半拍以上延びている)の条件は成立しないので、これらのフラグTrigger[4]とTrigger[8]をOFF(0)にセットする(ステップSD2)。
続いて、CPU21は、現在のメロディ押鍵が新たなメロディ押鍵である場合に成立する可能性がある、トリガーナンバー1(メロディベロシティが直前より大きくなった)と、トリガーナンバー7(メロディパターンが3回繰り返し)について判定を行う(ステップSD3からステップSD9)。
まず、CPU21は、メロディのベロシティが直前の音のベロシティに比較して、20%以上アップ(強く押鍵された)か否かを判定する(ステップSD3)。また、この条件が成立していなかった場合(ステップSD3:No)には、さらに、メロディのベロシティが、前の小節の平均値より15%以上アップ(強く押鍵された)か否かを判定する(ステップSD5)。
ステップSD3の判定、またはステップSD5の判定のいずれかの条件が満たされていた場合(ステップSD3:Yes、ステップSD5:Yes)には、「メロディベロシティが直前より大きくなった」と判断して、トリガーナンバー1のフラグTrigger[1]をON(1)とする(ステップSD4)。一方、ステップSD3の判定条件、およびステップSD5の判定条件のいずれも満たされていなかった場合(ステップSD3:NoからステップSD5:No)には、トリガーナンバー1のフラグTrigger[1]をOFF(0)とする(ステップSD6)。
また、CPU21は、同じメロディパターンが3回繰り返されたか否かを判断する(ステップSD7)。具体的には、例えば、ユーザによって演奏(押鍵)されたメロディを、RAM23上の図示しないメロディ履歴記憶バッファ等に時系列に記憶しておき、現在押鍵されたメロディを含む数音について、その数音が3回繰り返されているか否かを判断することで判断することが可能である。また、その場合、繰り返しの「数音」の音数については、例えば3音程度から8音程度など、あらかじめ定められた音数でメロディ履歴記憶バッファのメロディ履歴を区切って、メロディ履歴記憶バッファのメロディを、上記の各繰り返し音数で区切った場合に繰り返しの条件が満たされるか否かを逐次調べることによって実現することが可能である。
このステップSD7での判定の結果に応じて、同じメロディパターンが3回繰り返されていた場合は(ステップSD7:Yes)、トリガーナンバー7のフラグTrigger[7]をON(1)とする(ステップSD8)。他方、同じメロディパターンが3回繰り返されていない場合は(ステップSD7:No)、トリガーナンバー7のフラグTrigger[7]をOFF(0)とする(ステップSD9)。その後、CPU21は、ステップSD16へ処理を進める。これ以降の処理については後述する。
一方、ステップSD1へ戻って、現在押鍵されているメロディ押鍵が新たなメロディ押鍵でなかった場合(ステップSD1:No)、CPU21は、トリガーナンバー4(メロディが2拍以上延びている)や、トリガーナンバー8(メロディが半拍以上延びている)について判定を行う(ステップSD10からステップSD15)。なお、この場合、新たな押鍵があったわけではないので、トリガーナンバー1(メロディベロシティが直前より大きくなった)と、トリガーナンバー7(メロディパターンが3回繰り返し)については、既になされている判定の結果をそのまま保持することとして、これらのフラグのOFF(0)クリアは行わない。
まず、CPU21は、現在押鍵されているメロディ音が、半拍以上延びている(継続して押鍵されている)音であるか否かを判定する(ステップSD10)。具体的には、前述した、現在押鍵されているメロディ音の押鍵タイミングと、現在のタイミングとを比較することにより、判断することができる。
現在押鍵されているメロディ音が、半拍以上延びていない場合(ステップSD10:No)は、トリガーナンバー8のフラグをTrigger[8]をOFF(0)とするとともに、当然、現在押鍵されているメロディ音が2拍以上延びていることもあり得ないので、トリガーナンバー4のフラグTrigger[4]もOFF(0)とする(ステップSD11)。
一方、現在押鍵されているメロディ音が、半拍以上延びている場合(ステップSD10:Yes)は、トリガーナンバー8のフラグをTrigger[8]をON(1)とし(ステップSD12)、さらに、現在押鍵されているメロディ音が2拍以上延びている(継続して押鍵されている)音であるか否かを判定する(ステップSD13)。
現在押鍵されているメロディ音が、2拍以上延びている場合(ステップSD13:Yes)は、トリガーナンバー4のフラグをTrigger[4]をON(1)とする(ステップSD14)。一方、現在押鍵されているメロディ音が、2拍以上延びていない場合(ステップSD13:No)は、トリガーナンバー4のフラグをTrigger[4]をOFF(0)とする(ステップSD15)。その後、CPU21は、ステップSD16へ処理を進める。
上記のようにそれぞれの逸脱トリガーについての判定およびフラグセットの処理が行われた後、ステップSC12、SC13、ステップSD8、SD9、SD14、SD15の各処理に続いて、CPU21はステップSD16に処理を進め、演奏が小節の終わりに到達したか否かを判断する(ステップSD16)。
そして、小節の終わりに到達していた場合(ステップSD16:Yes)には、小節ごとに判定が行われるフラグや、他の小節の位置である場合にON(1)となるフラグなどがOFF(0)にクリアされる。具体的には、ここでは、トリガーナンバー1(メロディベロシティが直前より大きくなった)のフラグTrigger[1]、トリガーナンバー2(小節の頭)のフラグTrigger[2]、および、トリガーナンバー5(小節の後半)のフラグTrigger[5]が、それぞれOFF(0)とされる。また、この際、ステップSD5で用いられる、「前の小節のベロシティ値の平均」を算出して、RAM22の所定のバッファに記録し、次の小節におけるステップSD5の処理で用いることとしても良い。
このようにして、図18から図19のフローにより、図17のステップSB5のメロディ逸脱トリガー検出処理がおこなわれると、次にCPU21は、ステップSB6のメロディ逸脱処理を行う。図20は、本実施の形態におけるメロディ逸脱処理の例である。
図20のフローチャートにおいて、CPU21は、まず、変数Patternに、第1番目の逸脱パターンとしての「逸脱パターンa」を示すデータを記憶させ(ステップSE1)、さらに変数Partに、最初のパートとしてのパート番号1を記憶させる(ステップSE2)。
そして、上述の図18から図19のフローにおいて、ユーザの演奏メロディ等の状況に応じて既にセットされた各種の逸脱トリガーに基づいて、変数Partで示されるパートでの、変数Patternで示される逸脱パターンの実行処理を行う(ステップSE3)。
実際には、このステップSE3では、変数Patternで表される逸脱パターンに対応した、メロディ逸脱の実行処理サブルーチンをコールする。各メロディ逸脱の実行処理サブルーチンについては後述するが、概略としては、変数Partで示されるパートにおいて、変数Patternで示される逸脱パターンの逸脱を行うか否かを、図8から図10の各テーブルに基づいて判断し、逸脱を行うべき場合には、当該Partで示されるパートが当該Patternの逸脱を行うよう処理を行うものである。
そして、この逸脱パターンの実行処理(ステップSE3)について、ステップSE4でPart番号を+1しながら(ステップSE4)、全パートが検査済みとなるまで上記のステップSE3の逸脱パターンの実行処理を繰り返して実行し(ステップSE5:No)、さらに、全パートの検査が終了すると(ステップSE5:Yes)、パターン変数Patternを+1して(ステップSE6)、再度Partを1から順に変化させながら逸脱パターンの実行処理(ステップSE3)を実行する。
そして、全ての逸脱パターンについて検査し終わったら、このメロディ逸脱処理を終了する(ステップSE7:Yes)。
このように、図20の処理では、このように、パート変数Partと逸脱パターン変数Patternを順次変化させながら、すべてのパターンについて全てのパートで逸脱パターンの実行処理(ステップSE3)を行うようになっている。
このステップSE3で実行される逸脱パターンの実行処理について、図13に示したそれぞれの逸脱パターン毎に、対応する逸脱パターン実行処理が備えられている。図21から図27は、逸脱パターン毎の対応する逸脱パターン実行処理を説明するフローチャートである。また、図28は、図27の逸脱パターンjの場合に選択されるフィルインパターンの特徴を示した図である。以下、これらの図を参照して、各逸脱パターンについての逸脱パターン実行処理を説明する。
図21は、図13の逸脱パターンa「デチューン5%アップ」、逸脱パターンb「16分音符分ディレイ」、逸脱パターンc「ベロシティ10%アップ」、逸脱パターンk「音域指定」の各逸脱パターンの実施例を示すフローチャートである。これらの各逸脱パターンについては、多くのステップで、同様の処理を行うことによって実現できることから、共通の図21を用いて説明する。
CPU21は、図20のステップSE3において、変数Patternが、逸脱パターンa、逸脱パターンb、逸脱パターンc、逸脱パターンk、のいずれかであった場合、図21のステップSF1に処理を移し、逸脱条件が成立しているか否かを判定する(ステップSF1)。この場合、図20のPattern変数と、Part変数の値については、引数の形で図21のサブルーチンに引き継がれて参照可能になるものとする。
具体的には、リズムエレメント指定ボタン14で指定されているリズムのパターン(エレメント)に対応した伴奏フォーマットセット/逸脱方法指定表のデータベース(図8、図9、図10のテーブルのいずれか)を参照して、リズムジャンル選択ボタン13で選択されているリズムジャンル(例えば、adani、Baradi、Malfufのいずれか)についてのデータ群のうちで、図20のフローで設定されているPart変数及びPattern変数に対応したパート名820の行およびメロディ逸脱方法(パターン)870の列に対応する位置の、逸脱条件を参照する。
例えば、リズムパターン(エレメント)がノーマルであれば、図8の伴奏フォーマットセット/逸脱方法指定表800を参照し、その中で、リズムジャンル選択ボタン13で選択されているリズムジャンルがadaniである場合、リズムジャンル名810にadaniと書かれている部分に対応する5行分のデータが対象となる。そして、Part変数がパート1で、Pattern変数が逸脱パターンaであれば、テーブルの801欄のデータを参照することとなる。
同様に、Part変数が1で、Pattern変数が逸脱パターンbであれば、802欄のデータを参照する。また、Part変数が2で、Pattern変数がパターンaであれば、803欄のデータを参照する。
ここで、例えばテーブル中の801欄のデータとしては何も記載されていない。このような場合は、当該パートでは、現在調査対象となっている逸脱パターンを行うことは無いということを表しているので、ステップSF1の判定はNoとなる。
仮に今、リズムパターン(エレメント)がノーマル、選択されているリズムジャンルがBaradiであり、Part変数が3(伴奏パート3)で、Pattern変数が逸脱パターンaの状態で、図21のサブルーチンが呼び出されたとすると、CPU21は、図8の804欄のデータ(データ804という)を参照して、ステップSF1の逸脱条件が成立しているか否かの判定を行う。
すると、データ804は「1+2」となっているので、図18と図19の処理で決定された、メロディ逸脱トリガーのトリガーナンバー1(Trigger[1])と、トリガーナンバー2(Trigger[2])とが参照される。そして、図8のデータ804のように逸脱条件が「1+2」となっている場合は、Trigger[1]とTrigger[2]とが、ともにON(1)となっている場合に、逸脱条件成立と判定する。
従って、この場合には、「メロディベロシティが直前より大きく」なっていて(トリガーナンバー1)、かつ、「小節の頭」である(トリガーナンバー2)場合に、ステップSF1の判定がYesとなり、伴奏パート3について、逸脱パターンaの逸脱を行うこととなる。
上記のような判定を行った結果、逸脱条件が成立していた場合(ステップSF1:Yes)、CPU21は、まずRAM23上の所定の領域に割り当てられた、逸脱中フラグ[Part,Pattern]の値をON(1)にセットする(ステップSF2)。その後、CPU21は、Pattern変数で示される逸脱パターンに応じた、具体的な逸脱を設定する(ステップSF4)。
すなわち、Pattern変数が逸脱パターンaである場合、Part変数で示されるパートのデチューンが5%アップされる。また、Pattern変数が逸脱パターンbである場合は、Part変数で示されるパートについて、ユーザ演奏のメロディから16分音符遅れて発音するようにセットされる。また、Pattern変数が逸脱パターンcである場合は、Part変数で示されるパートについて、ベロシティ値が10%アップされる。また、Pattern変数が逸脱パターンkである場合は、Part変数で示されるパートについて、音域指定(音域変更)が行われる。
これらの場合、本発明の実施の形態においては、ヘテロフォニー演奏としての「逸脱」を実現するため、いずれも、ユーザの演奏メロディ押鍵に基づいて上記の逸脱が行われる。
すなわち、例えば逸脱パターンaの場合、逸脱していないとき(通常時)は、図8の「メロディとのdetune」で示された、各パートのdetune(ピッチの差)値だけピッチをずらして、ユーザ演奏メロディとユニゾンに同じ旋律を演奏していたところが、逸脱パターンaの条件が成立すると、そのdetuneをさらに5%広げて、ユーザ演奏メロディとユニゾンの演奏を行う。すなわち、Part変数で指定されているパートについて、ややピッチの差を大きく広げてユーザ演奏の旋律とユニゾン演奏が行われることとなる。
また、逸脱パターンbの場合、ユーザ演奏のメロディから16分音符遅れて発音するようにセットされる。具体的には、例えば、Part変数で指定されているパートについて、16分音符遅れることを示すフラグをセットし、図16のSA10の、実際の発音処理の際に、ユーザの演奏メロディのバッファ(メロディ履歴記憶バッファ)の、16分音符前に演奏された音符の情報を参照して発音するようにすることができる。あるいは、遅延させるタイミング(ここでは16分音符)分の遅延用バッファを用意して、FIFO形式でユーザ演奏メロディを順次記憶すると共に16分音符分遅れた音を読み出して発音するようにしても良い。
また、逸脱パターンcの場合、ベロシティ値が10%アップされる。この場合、Part変数で指定されているパートについて、ベロシティ値を規定値より10%アップして発音する。すなわち、Part変数で指定されているパートについて、逸脱が行われていないときに比べて、やや強調して演奏されることとなる。
また、逸脱パターンkの場合、Part変数で指定されているパートの音域をオクターブ単位で変更する。この場合、音域を上げるか下げるか、また何オクターブ変更するか、については、楽器やパート毎に、当該逸脱パターンkで音域変更する場合のオクターブ数を、例えば+1オクターブや−2オクターブといった形のテーブルであらかじめ記憶させておくことができる。あるいは、ユーザ演奏メロディの音高と、あらかじめ設定されている各パートの音域とを比較して、各パートの音域のうち、メロディ音より高音の音数の方が多い場合には1オクターブ上げ、メロディ音より低音の音数の方が多い場合は1オクターブ下げる等のように音域変更することも可能である。
なお実際には、このステップSF4では、各パート/各逸脱に対応したフラグを立て、必要に応じて、各パートの発音に割り当てられているMIDIチャンネルごとの発音に関する設定等を変更し(例えばデチューン値を変更する逸脱が指定された場合、該当するチャンネルのデチューン値を変更する、あるいは、オクターブ値を変更する逸脱が指定された場合、オクターブ値を設定する等)、これを受けての実際の発音は、図16のSA10における発音処理の際に、これらのフラグ等を参照して,適宜逸脱した音の発音がなされるものとする。具体的には、SA10で、あるパートについて、本図にかかる逸脱パターンa、b、c、kのいずれかのフラグがON(1)だった場合には、本図ステップSF4でセットされたフラグ等を参照して逸脱発音を行うようにして、逸脱していない場合とは異なる発音をするようにすることができる。
また、ステップSF1に戻って、逸脱条件が成立していないと判断された場合は(ステップSF1:No)、現在のPart変数とPattern変数に対応する逸脱中フラグ[Part,Pattern]が、ON(1)であるか否かを判断する(ステップSF3)。これは、いったん逸脱条件が成立して逸脱パターンで演奏し始めたパートについて、例えば、その小節が終わるまでの間は逸脱を続けて演奏させる、等の処理を実現するために、ステップSF2で逸脱中フラグがセットされている場合、逸脱中の処理フローに処理を移させるためのものである。
逸脱中フラグ[Part,Pattern]がON(1)だった場合(ステップSF3:Yes)は、ステップSF5へ処理を進める。ここで、本図21に係る逸脱パターンの場合、逸脱条件が成立した際に、既にステップSF2で逸脱中のフラグを立ててあり、またステップSF4で、例えばデチューン値を設定する等の逸脱処理のための設定を行っているので、ステップSF5以降の処理においては、逸脱を終了する条件の判定と、逸脱を終了させる場合の処理を行っている。
一方、逸脱中フラグ[Part,Pattern]がOFF(0)だった場合(ステップSF3:No)は、本逸脱処理を終了して、図20に処理を戻す。
ステップSF4で逸脱の各種設定を行った後、または、ステップSF3で逸脱中フラグ[Part,Pattern]がON(1)だった場合、CPU21は、現在の再生位置が小節の終わりであるか否かを判断する(ステップSF5)。「小節の終わり」に関しては、前述のように、現在演奏されているリズムパターンとテンポに応じて、例えば、小節の終わり(次の小節との境目)から所定の期間前までの間であるか否かを調べることで判断される。
現在の再生位置が小節の終わりでなかった場合(ステップSF5:No)は、その小節の間は引き続き逸脱を続けるため、何もせずに図21の逸脱処理を終了する。
一方、現在の再生位置が小節の終わりであった場合、現在ユーザによってメロディが押鍵されているかどうかを判定する(ステップSF6)。メロディ押鍵中である場合(ステップSF6:Yes)は、当該メロディの押鍵が終了するまで(離鍵されるまで)は、現在の逸脱を続けるように設定を行う(ステップSF7)。実際には、押鍵終了まで逸脱すべきことを表すフラグ等を用いて、そのフラグをセットし、当該フラグがセットされている間は逸脱を実行し、その音が離鍵されたら当該フラグをクリアすることとして実現できる。
そして、CPU21は、この押鍵中のメロディ音が離鍵されたか否かを判定し(ステップSF8)、離鍵された場合には(ステップSF8:Yes)、ステップSF9へ処理を移して、逸脱終了のための処理を行う。一方、離鍵されていない場合には、逸脱終了せず、そのまま本図21の処理を終了して図20の処理へ戻る(ステップSF8:No)。
現在の再生位置が小節の終わりで(ステップSF5:Yes)メロディ押鍵がなかった場合(ステップSF6:No)、あるいは、当該メロディの押鍵が終了するまで逸脱を保持することとされた音の離鍵があった場合(ステップSF8:Yes)には、CPU21は、ステップSF9で、Pattern変数で示される逸脱パターンに応じて設定されていた逸脱設定を解除する(ステップSF9)。
具体的には、ステップSF4で行われた設定を解除すれば良く、例えば、各パートの発音に割り当てられているMIDIチャンネルごとの発音に関する設定を、元の、逸脱前の状態に戻すようにすれば良い。例えば、逸脱パターンaの場合は、該当チャンネルのデチューンを元に戻し、また、逸脱パターンcの場合は、ベロシティ値を元の基準値(標準値)に戻す等を行う。
そしてさらに、CPU21は、ステップSF2でセットしていた、逸脱中フラグ[Part,Pattern]の値をOFF(0)にクリアする(ステップSF10)。その後、本図21の逸脱処理を終了して、図20のフローに処理を戻す。
このようにして、逸脱パターンa、逸脱パターンb、逸脱パターンc、逸脱パターンk、の場合には、図20のステップSE3から図21の処理を実行することにより、これら各逸脱パターンを実行する。
図22は、図13の逸脱パターンf「トレモロ/バッテリー奏法」、逸脱パターンg「メロディと開始音を交互に発音」、逸脱パターンh「持続メロディへのトリル挿入」、逸脱パターンi「同音連打」の各逸脱パターンの実施例を示すフローチャートである。これらの各逸脱パターンについては、多くのステップで、同様の処理を行うことによって実現できることから、共通の図22を用いて説明する。また、図22の中で、図21の場合と同様の処理を行うステップについては、同一のステップ番号を付してあり、これらのステップでは基本的に図21で説明したのと同様の処理を行うことから、説明を省略する。
本図22においては、図21のステップSF4の代わりに、ステップSG4が実行される。図21によって実現された逸脱パターンa、b、c、kの場合は、逸脱条件が成立した際に、ステップSF4で、例えばデチューン値を設定したり、オクターブ値を設定したり、メロディからの遅れを設定したり、あるいはこれらに関するフラグをセットすることで逸脱が実現されていた。
これに対して、本図22によって処理される逸脱パターンf、g、h、iの場合は、逸脱条件が成立した場合に、逸脱した演奏を行わせるために、ステップSG4において実際の音型等の逸脱パターンを生成するようにしている。本図22によって実現される各逸脱パターンf、g、h、iの場合、トレモロやトリル、同音連打など、逸脱条件が満たされた場合にはその音が離鍵されるまでの間継続して当該逸脱を行うタイプの逸脱パターンであり、またその逸脱パターンも逸脱パターンa、b、c、kの場合のように、単純なパラメータの設定のみでは済まないものである。このため、本図22のステップSG4では、各逸脱パターンに応じて、その逸脱中に演奏させる実際の音型等の逸脱パターンを生成することとしている。
実際には、ステップSG4における逸脱パターン生成処理では、各逸脱パターンに応じた逸脱パターン生成処理を行う。この逸脱パターン生成の具体的な処理の例を図23、24に示した。
図23は、逸脱パターンf「トレモロ/バッテリー奏法」または逸脱パターンg「メロディと開始音を交互に発音」で図22が実行されている場合に、ステップSG4から呼び出されて実行される、逸脱パターン生成処理の例である。
図23で、CPU21はまず、現在指定されているジンスの開始音を読み出す(ステップSH1)。具体的には、ジンス指定鍵盤101で指定されているジンス、または、あらかじめ設定されているマカームの開始音(第1音)を、ROM22のマカーム/ジンス用データベースから読み出す。
次に、CPU21は、テンポ設定ボタン16によって設定された、現在の演奏におけるテンポの情報を読み出し、テンポが60BPMすなわち1分間に60拍のテンポ以下であるか否かを判断する(ステップSH2)。現在の演奏のテンポに応じて、スローテンポのときは短めの音符、アップテンポのときは長めの音符といった具合に、トレモロの音符の長さを変えるためである。
テンポが60BPM以下であった場合(ステップSH2:Yes)、トレモロ音形パターンを作成する音符長を32分音符にセットする(ステップSH3)。一方、テンポが60BPMより大きい場合(ステップSH2:No)、トレモロ音形パターンを作成する音符長を16分音符にセットする(ステップSH4)。なお、この音符長については、逸脱パターンごとに異なる長さで設定されるようにしても良い。
次に、ステップSH1で読み出されたジンスの開始音と、現在ユーザによって演奏されているメロディ音とを交互に繰り返すトレモロパターンを生成し、RAM23の所定の逸脱パターン記憶エリアに記憶する(ステップSH5)。この際、CPU21は、上記のステップSH3若しくはステップSH4でセットされた音符長のトレモロパターンを生成する。具体的には、例えばMIDIデータとして上記のステップで決定された音長・音高によるトレモロパターンが生成される。
さらにCPU21は、ステップSH5で生成されたトレモロパターンについて、ベロシティを設定する(ステップSH6)。図に示した例では、ステップSH5で一定の(例えば、MIDI規格におけるベロシティ値100)ベロシティ値でトレモロパターンが生成され、さらにステップSH6で、その一定のベロシティ値を変化させて、各音の強弱の変化を付けるようにする例が示されている。すなわち、第1音めと第3音めを、それぞれ、元の音量の20%、10%に、やや強調をして発音するように設定される。
なお、この場合、奇数音目にユーザ演奏メロディ、偶数音目にジンスの開始音という組み合わせの場合、ユーザ演奏メロディ音が若干強調されて、逸脱しながらも安定した印象を与えることができる。一方、奇数音目にジンスの開始音、偶数音目にユーザ演奏メロディという組み合わせの場合、ユーザ演奏メロディとは異なる音がやや強調され、逸脱した印象をより強く与えることができる。
図23の逸脱パターン生成(パターンf、g)が終了すると、CPU21は処理を図22へ戻し、ステップSF6へと処理を進める。このようにして図23で生成された逸脱パターンは、図16のステップSA10における音源発音処理の際に、順次読み出されて発音される。すなわち、ステップSA10で、あるパートについて、本逸脱パターンfまたはgの逸脱中フラグがON(1)だった場合、図23で生成されたトレモロパターンが発音される。その際の逸脱パターンの読み出し速度は、現在設定されているテンポに合わせて、読み出し位置を示すポインタ変数などを用いて、同期して順次発音される。この場合、当該パートについては、ユーザ演奏メロディと同じ旋律でのユニゾン演奏は行わず、代わりに逸脱パターンが発音される。また、図22で処理される逸脱パターンの場合、当該押鍵されている音が押鍵継続されている間は継続して逸脱パターンで発音を続けるため、図23で生成されたトレモロパターンについては、ループして繰り返し発音され、現在のユーザ押鍵メロディ音が離鍵されるまで繰り返してトレモロパターンが再生される。
また、図24は、逸脱パターンh「持続メロディへのトリル挿入」で図22が実行されている場合に、ステップSG4から呼び出されて実行される、逸脱パターン生成処理の例である。
図24で、CPU21はまず、ユーザ演奏メロディの音が、現在指定されているジンスの両端の音であるか否かを判断する(ステップSI1)。ユーザ演奏メロディがジンス両端の音であった場合(ステップSI1:Yes)、ジンス内の隣の音からメロディ音へと繰り返すトリル音形パターンを生成する(ステップSI2)。具体的には、例えばジンス内の隣の音からメロディ音へと繰り返すMIDIデータとしてトレモロパターンが生成される。
一方、ユーザ演奏メロディがジンス両端の音でない場合(ステップSI1:No)、ユーザ演奏メロディがジンス内の偶数番目の音であるか否かを判断する(ステップSI3)。そして、ユーザ演奏メロディがジンス内の偶数番目の音である場合(ステップSI3:Yes)は、ジンスのすぐ上の音からメロディ音へと繰り返すトリル音形パターンを生成する(ステップSI4)。一方、ユーザ演奏メロディがジンス内の偶数番目の音でない場合、すなわちジンス内の奇数番目の音である場合(ステップSI3:No)は、ジンスのすぐ下の音からメロディ音へと繰り返すトリル音形パターンを生成する(ステップSI5)。
以上のようにして、図24に示した逸脱パターンhの逸脱パターン生成処理においては、ユーザの演奏メロディに基づいて、ユーザ演奏メロディがジンスの中のいずれの位置の音であるかによって、トリル音形を構成する音を決定し、その音とメロディ音とからトリル音形パターンを生成するようになっている。
図24の逸脱パターン生成(パターンh)が終了すると、CPU21は処理を図22へ戻し、ステップSF6へと処理を進める。このようにして図24で生成された逸脱パターンは、図16のステップSA10における音源発音処理の際に、パターンf、gについて上述した処理と同様にして、順次読み出されて発音される。
また、逸脱パターンi「同音連打」で図22が実行されている場合には、ステップSG4から呼び出されて実行される逸脱パターン生成処理において、例えば、所定の音符(音長)で、ユーザ演奏メロディと同じ音を繰り返し発音する、同音連打のパターンが生成される。この場合において、例えば図23のステップSH2からSH4で説明したのと同様、テンポの値に応じて、同音連打する各音符の音長を変化させることとしても良い。
以上のように、図22のステップSG4では、図23や図24に例示したような、各逸脱 パターン番号に応じた逸脱パターン(逸脱用の再生パターン)が生成され、図16のステップSA10における音源発音処理の際に、これらの逸脱用の再生パターンが参照されて、逸脱が実現される。
図22へ戻って、ステップSG4における逸脱パターンの生成処理が終了すると、ステップSF6へ処理を移行し、既に説明した図21における処理と同様に処理が進められる。
ここで、本図22の場合、ステップSF6でNo、若しくはステップSF8でYesの場合、すなわち、逸脱を終了させる条件が満たされた場合、図21のステップSF9に替えてステップSG9の処理が実行される。すなわち、ステップSG9では、Pattern変数で示される逸脱パターンに応じて設定されていた逸脱設定を解除するが、その際、ステップSG4で生成された逸脱パターンをクリアし、またステップSA10においてループ再生に用いられるポインタ変数などがクリアされる。また、前述と同様にステップSF10で逸脱中フラグ[Part,Pattern]の値をOFF(0)にクリアする。
このようにして、逸脱パターンf、逸脱パターンg、逸脱パターンh、逸脱パターンi、の場合には、図20のステップSE3から図22の処理を実行することにより、これら各逸脱パターンを実行する。
さらに、図25は、図13の逸脱パターンd「上からのプラルトリラー」、逸脱パターンe「メロディ音に到達するアルペジォ」、逸脱パターンl「ジンスの倚音追加」の各逸脱パターンの実施例を示すフローチャートである。これらの各逸脱パターンについては、多くのステップで、同様の処理を行うことによって実現できることから、共通の図25を用いて説明する。また、図25の中で、図21の場合と同様の処理を行うステップについては、同一のステップ番号を付してあり、これらのステップでは基本的に図21で説明したのと同様の処理を行うことから、説明を省略する。
本図25においては、図21のステップSF4の代わりに、ステップSJ4が実行される。図21によって実現された逸脱パターンa、b、c、kの場合は、逸脱条件が成立した際に、ステップSF4で、例えばデチューン値を設定したり、オクターブ値を設定したり、メロディからの遅れを設定したり、あるいはこれらに関するフラグをセットすることで逸脱が実現されていた。
これに対して、本図25によって処理される逸脱パターンd、e、lの場合は、逸脱条件が成立した場合に、逸脱した演奏を行わせるために、ステップSJ4において実際の音型等の逸脱パターンを生成するようにしている。本図25によって実現される各逸脱パターンd、e、lの場合、プラルトリラーやアルペジォ、倚音など、逸脱条件が満たされた場合には、まずこのステップSJ4で生成された逸脱パターンを発音させた後に、ユーザ演奏メロディ音とユニゾンの演奏に戻るという形の逸脱を行う。このため、本図25のステップSJ4では、各逸脱パターンに応じて、その逸脱の際の最初に付加して演奏させる実際の音型等の逸脱パターンを生成することとしている。
実際には、ステップSJ4における逸脱パターン生成処理では、各逸脱パターンに応じた逸脱パターン生成処理を行う。図26は、逸脱パターンl「ジンスの倚音追加」で図25が実行されている場合に、ステップSJ4から呼び出されて実行される、逸脱パターン生成処理の例である。
図26で、CPU21はまず、ユーザ演奏メロディの音が、現在指定されているジンスの両端の音であるか否かを判断する(ステップSK1)。ユーザ演奏メロディがジンス両端の音であった場合(ステップSK1:Yes)、ジンス内の隣の音を8分音符ぶんの長さの倚音として発音した後に、メロディ音に戻り、以降メロディ音を発音する倚音の逸脱パターンを生成する(ステップSK2)。具体的には、例えばジンス内の隣の音を8分音符分発音した後にメロディ音へと移行するMIDIデータとして倚音パターンが生成される。
一方、ユーザ演奏メロディがジンス両端の音でない場合(ステップSK1:No)、ユーザ演奏メロディがジンス内の偶数番目の音であるか否かを判断する(ステップSK3)。そして、ユーザ演奏メロディがジンス内の偶数番目の音である場合(ステップSK3:Yes)は、ジンスのすぐ上の音を8分音符ぶんの長さの倚音として発音した後に、メロディ音に戻り、以降メロディ音を発音する倚音の逸脱パターンを生成する(ステップSK4)。一方、ユーザ演奏メロディがジンス内の偶数番目の音でない場合、すなわちジンス内の奇数番目の音である場合(ステップSK3:No)は、ジンスのすぐ下の音を8分音符ぶんの長さの倚音として発音した後に、メロディ音に戻り、以降メロディ音を発音する倚音の逸脱パターンを生成する(ステップSK5)。
以上のようにして、図26に示した逸脱パターンlの逸脱パターン生成処理においては、ユーザの演奏メロディに基づいて、ユーザ演奏メロディがジンスの中のいずれの位置の音であるかによって、倚音とする音を決定し、その音を所定の長さの倚音として発音した後に、メロディ音に戻り、以降メロディ音を発音する倚音の逸脱パターンを生成する。なお、倚音の音符長は任意の長さとして差し支えない。
図26の逸脱パターン生成(パターンl)が終了すると、CPU21は処理を図25へ戻し、ステップSJ5へと処理を進める。このようにして図26で生成された逸脱パターンは、図16のステップSA10における音源発音処理の際に、順次読み出されて発音される。なお、図26で生成される逸脱パターンが、倚音とその後に続くユーザ演奏メロディ音(ユニゾン演奏音)との両方を含む場合は、当該パターンを先頭から順次演奏すれば良い。他方、図26で生成される逸脱パターンが倚音部分のみである場合には、図16のステップSA10では、当該倚音部分のみの逸脱パターンを発音した後に、ユーザ演奏メロディ音をユニゾンで演奏する基本動作モードに復帰するように制御しても良い。
また、逸脱パターンe「アルペジォ」で図25が実行されている場合には、ステップSJ4から呼び出されて実行される逸脱パターン生成処理において、以下のようにしてアルペジォの逸脱パターンが生成される。まず、CPU21は、現在設定されているマカームまたはジンスから、ROM22のマカーム/ジンス用データベースを参照して、マカームまたはジンスの開始音と現在のメロディ音とのアルペジォ音数をカウントする。そして、所定のアルペジォ用の音長(例えば8分音符分など)の中に、このカウントされたアルペジォ音数がほぼ等しい長さで入るような連符数で、このアルペジォ用音長を分割し、マカームまたはジンスの音を順に発音させるアルペジォパターンを生成する。この場合、マカームまたはジンス上の開始音から上行音形または下行音形のいずれかで、ユーザ演奏メロディ音に到達するようなアルペジォの逸脱パターンが生成されるものとする。
また、逸脱パターンd「プラルトリラー」で図25が実行されている場合には、ステップSJ4から呼び出されて実行される逸脱パターン生成処理において、以下のようにしてアルペジォの逸脱パターンが生成される。まず、CPU21は、現在設定されているマカームまたはジンスから、ROM22のマカーム/ジンス用データベースを参照して、マカームまたはジンスの音のうち、現在のメロディ音と隣接する、一つ上の音を決定する。そして、所定の音長(例えば、図15の例では32分音符)で、上の音→メロディ音の繰り返しを所定回数繰り返すパターンを生成する。繰り返し回数は、例えば図15の例では、2回であるが、この回数は任意に決定して良い。そして、繰り返しの最後のメロディ音を持続して、ユーザのメロディ押鍵が終了するまで保持する。
図25へ戻って、ステップSJ4の処理が終了するか、またはステップSF3でYesすなわち逸脱中フラグ[Part,Pattern]がON(1)であった場合、CPU21は、ステップSJ5へ処理を進め、逸脱パターンの再生が終了したか否かを判断する(ステップSJ5)。前述のように、図26の処理で生成された倚音の逸脱パターンや、あるいはプラルトリラー、アルペジォの逸脱パターンについて、先頭から順次演奏した結果、それらの逸脱パターンの最後まで発音(再生)が終了していた場合には(ステップSJ5:Yes)、CPU21はステップSJ9へ処理を進める。
一方、逸脱パターンの再生がまだ終了していない場合(ステップSJ5:No)、ユーザによるメロディ音の押鍵中であるか否かが判定される(ステップSJ6)。ユーザによるメロディ音の押鍵がまだ継続している場合は(ステップSJ6:Yes)、本図25の処理を終了する。一方、逸脱パターンの再生がまだ終了していないがユーザによるメロディ音の押鍵が終了(離鍵)された場合には(ステップSJ5:Noの後にステップSJ6:No)、CPU21はステップSJ9へ処理を進める。
CPU21は、ステップSJ9で、逸脱パターンに応じた逸脱の解除処理を行う。具体的には、ステップSJ4で生成された逸脱パターンをクリアし、またステップSA10において逸脱パターンの再生に用いられるポインタ変数などがクリアされる。また、前述と同様にステップSF10で逸脱中フラグ[Part,Pattern]の値をOFF(0)にクリアする。
このようにして、逸脱パターンd、逸脱パターンe、逸脱パターンl、の場合には、図20のステップSE3から図25の処理を実行することにより、これら各逸脱パターンを実行する。
さらに、逸脱パターンがj(おかず挿入)の場合、図20のステップSE3から図27の処理が呼び出され得る。なお、ここでいう「おかず」とは、一般的に音楽において用いられる「おかず」を表し、合いの手に当たる対旋律や、フィルインなどをいう。
CPU21は、図20のステップSE3において、変数Patternが、逸脱パターンjであった場合、図27のステップSL1に処理を移し、逸脱条件が成立しているか否かを判定する(ステップSL1)。具体的には、前述と同様、図8〜図10の伴奏フォーマットセット/逸脱方法指定表のデータベースのいずれか、例えば図8を参照して、メロディ逸脱方法870のうちjに対応する列の、リズムジャンルとパートに対応する箇所(例えば、図8の805欄)を参照して、逸脱する条件が満たされたか否かを判定する。
逸脱条件が成立していた場合(ステップSL1:Yes)、CPU21は、逸脱中フラグ[Part,Pattern]をON(1)にセットして(ステップSL2)、ステップSL4へ進む。一方、逸脱条件が成立していない場合(ステップSL1:No)、既にステップSL2で逸脱中フラグ[Part,Pattern]がON(1)にセットされているか否かを判定し(ステップSL3)、逸脱中フラグ[Part,Pattern]がON(1)の場合(ステップSL3:Yes)は、やはりステップSL4へ進む。逸脱中フラグ[Part,Pattern]がON(1)でなかった場合には、図27のメロディ逸脱(パターンj)の処理を終了して図20へ戻る(ステップSL3:No)。
ステップSL4に処理が進められると、CPU21は、現在設定されているテンポ情報を参照して、現在のテンポが60以下であるか否かを判断する(ステップSL4)。これは、テンポに応じて、通常テンポ用のフィルインとスローテンポ用のフィルインのパターンを使い分けるためであり、他にも、アップテンポ用のフィルインパターンを備えていたり、より細かく区切ったテンポごとにフィルインパターンを備えるようにしても良い。
現在のテンポが60以下であった場合(ステップSL4:Yes)、現在の拍の位置が3拍中であれば(ステップSL5:Yes)、スローテンポ用の3拍用のフィルインパターンを読み出す(ステップSL6)。また、現在の拍の位置が3拍中でない場合(ステップSL5:No)、スローテンポ用の4拍用のフィルインパターンを読み出す(ステップSL7)。
なお、ここではリズムは4拍子のリズムを想定しており、また、逸脱条件として、図8の伴奏フォーマットセット/逸脱方法指定表の805欄のデータからも判るように、メロディ逸脱トリガーのトリガーナンバー5(Trigger[5])の「小節の後半」を含める事などにより、現在の拍の位置が3拍中でない場合は、4拍中に該当しているものとする。
一方、現在のテンポが60以下ではなかった場合(ステップSL4:No)、現在の拍の位置が3拍中であれば(ステップSL8:Yes)、通常テンポ用の3拍用のフィルインパターンを読み出す(ステップSL9)。また、現在の拍の位置が3拍中でない場合(ステップSL8:No)、通常テンポ用の4拍用のフィルインパターンを読み出す(ステップSL10)。
フィルインパターンは、図28のフィルインテーブル2800に例示したような特徴を有するMIDIパターンとして、ROM22の所定の領域(フィルインパターン記憶領域)に記憶されているフィルインパターンを読み出すことで取得される。
すなわち、ステップSL6では図28の2820の列のいずれかのフィルインパターンが、ステップSL7では図28の2830の列のいずれかのフィルインパターンが、ステップSL9では図28の2840の列のいずれかのフィルインパターンが、ステップSL10では図28の2850の列のいずれかのフィルインパターンが読み出される。なお、図28のa〜fまで例示したフィルインパターンのいずれを選択して発音させるかは、例えば逸脱条件が満たされたパートあるいは楽器に応じて、図28の想定楽器2810の欄の情報を照合して決定するほか、他により詳細な条件をあらかじめ設定しておき、諸々の条件に応じていずれかのパターンを選択するように構成しても良い。
このようにステップSL4からステップSL10の処理によって、ふさわしいフィルインパターンが選択されて読み出されると、CPU21はステップSL11へ処理を進め、ユーザによる新たなメロディ押鍵があったか否かを判断する(ステップSL11)。図8の伴奏フォーマットセット/逸脱方法指定表の805欄のデータのように、メロディ逸脱トリガーのトリガーナンバー6(Trigger[6])の「メロディオフ」が逸脱の条件となっていることから、ユーザによる新たなメロディ押鍵があった場合は逸脱を終了させるためである。
ユーザによる新たなメロディ押鍵があった場合(ステップSL11:Yes)は、逸脱発音中の音の発音を中断して、ジンスの開始音に発音する音を変更し、小節の終わりまで伸ばして発音するようにセットする(ステップSL12)。具体的には、例えば、ステップSL6、SL7、SL9、SL10で読み出されたフィルインパターンの、現在再生中の位置より先の部分(未再生の部分)に、ジンスの開始音を発音するようMIDIデータを上書きすること等により、図16のSA10で再生される音として、逸脱パターンを中断してジンスの開始音を発音するようにすることができる。
さらに、CPU21は、小節の終わりに到達したか否かを判断する(ステップSL13)。小節の終わりに到達していたら(ステップSL13:Yes)、CPU21は、逸脱パターンjに対応した逸脱設定解除の処理を行う(SL14)。具体的には、例えば、読み出されてRAM23に記憶されていたフィルインパターンをクリアし、またステップSA10において逸脱パターンの再生に用いられるポインタ変数などがクリアされる。さらに、逸脱中フラグ[Part,Pattern]の値をOFF(0)にクリアする(ステップSL15)。
このようにして、逸脱パターンj(おかず挿入)の場合には、図20のステップSE3から図27の処理を実行することにより、逸脱パターンの実行を行う。
以上のように、図20のメロディ逸脱処理のフローチャートにより、パート変数Partと逸脱パターン変数Patternを順次変化させながら、すべてのパターンについて全てのパートで、逸脱パターンの実行処理(ステップSE3)を、パターンに応じたそれぞれの処理(図21から図27等)を呼び出して実行し、ヘテロフォニー音楽における、ユーザ演奏メロディに対しての伴奏パート等の各パートの発音すべき音を決定する。そして、メインフロー図16のステップSA10において、ユーザの演奏メロディ音を発音すると共に、他の伴奏楽器について、基本的にユーザ演奏メロディと同じ旋律を演奏しつつ、図20で逸脱が指定された場合には、ユーザ演奏メロディに基づきつつ逸脱をした音の発音を行う。これにより、ユーザの演奏メロディに応じたヘテロフォニー的な伴奏を行う電子楽器が実現される。
以上説明したように、本実施形態では、各伴奏パートについて、ユーザ演奏メロディに合わせて、通常時はユーザ演奏メロディとユニゾンをベースとしたオクターブ違い等の旋律を発音しつつ、図8〜図10の伴奏フォーマットセット/逸脱方法指定表で設定された所定の逸脱条件が満たされた場合は、ユーザ演奏メロディに基づき、通常時のユニゾン伴奏からは逸脱した種々の逸脱パターンを発音する。これにより、ユーザがメロディを演奏すると、ヘテロフォニー的な伴奏を付加したヘテロフォニー音楽が簡単に演奏できることとなる。これにより、いわゆる西洋音楽とは異なる旋律伴奏によるヘテロフォニー的音楽の伴奏を行って、ユーザが簡単にヘテロフォニー音楽の演奏を行うことができるようになる。
なお、上記実施形態では、電子楽器10に備えられたCPU21によって、逸脱条件判定部、逸脱処理部、発音指示部の機能が実現される例を説明したが、これらの各部については、適宜、外部接続されたパーソナルコンピュータにおけるソフトウェアによって実現されることとしても良い。この場合、必要に応じて、例えば伴奏フォーマットセット/逸脱方法指定表を記憶する部分は、パーソナルコンピュータ内の記憶装置や、ネットワークを介して接続された外部サーバ等であっても良い。また、サウンドシステム24やROM22内の音色波形データ記憶部は、外部ハードウェア音源あるいはソフトウェア音源モジュールを用いる構成であっても良い。
要するに、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段などより構成される全体的な装置を意味するものとする。
以上の実施形態に関して、さらに以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[付記1]
入力される演奏情報から、所定の条件に基づいて伴奏情報を生成する伴奏情報生成手段と、
前記入力された演奏情報が所定の状態にあるか否かを判定する判定手段と、
前記所定の状態にあると判定された場合に、前記所定の条件から逸脱した条件に基づいて伴奏情報を生成するように、前記伴奏情報生成手段を制御する制御手段と、
を備える伴奏装置。
[付記2]
前記伴奏情報生成手段は、夫々異なる所定の条件に基づいて複数のパート夫々に対応する伴奏情報を生成し、
前記判定手段は、前記入力された演奏情報の状態が、前記複数のパート夫々に対応する所定の状態にあるか否かを判定し、
前記制御手段は、前記入力された演奏情報の状態が前記複数のパート夫々に対応する所定の状態のいずれかに対応すると判定された場合に、前記対応する所定の条件から逸脱した条件に基づいて伴奏情報を生成するように制御する、付記1に記載の伴奏装置。
[付記3]
前記伴奏装置はさらに、リズムジャンルを指定するリズムジャンル指定手段と、当該リズムジャンル指定手段により指定されるリズムジャンルに基づいたリズム情報を生成するリズム情報生成手段と、を備え、
前記判定手段は、前記入力された演奏情報の状態が、前記指定されたリズムジャンルに対応する所定の状態にあるか否かを判定し、
前記制御手段は、前記リズムジャンルに対応する所定の状態にあると判定された場合に、前記所定の条件から、前記指定されたリズムジャンルに対応して逸脱した条件に基づいて伴奏情報を生成するように制御する、付記1または2に記載の伴奏装置。
[付記4]
前記伴奏装置はさらに、入力される演奏情報に基づいてメロディ情報を生成するメロディ情報生成手段をさらに有する、付記1乃至3のいずれかに記載の伴奏装置。
[付記5]
前記制御手段は、前記所定の条件から逸脱した条件に基づく伴奏情報として、所定の効果を付与した伴奏情報を生成するように、前記伴奏情報生成手段を制御する、付記1乃至4のいずれかに記載の伴奏装置。
[付記6]
前記制御手段は、前記所定の条件から逸脱した条件に基づく伴奏情報として、前記入力された演奏情報と、所定の音情報とを組み合わせて伴奏情報を生成するように、前記伴奏情報生成手段を制御する、付記1乃至5のいずれかに記載の伴奏装置。
[付記7]
前記伴奏装置はさらに、音律を指定する音律指定手段を有し、
前記所定の音情報は、前記音律指定手段にて指定された音律に含まれるいずれかの音情報である、付記6に記載の伴奏装置。
[付記8]
前記伴奏情報生成手段は、前記生成される伴奏情報として、前記入力される演奏情報のユニゾンの伴奏情報を生成する、付記1乃至7のいずれかに記載の伴奏装置。
[付記9]
前記制御手段は、前記入力された演奏情報が所定の状態にあると判定された時点から、当該演奏情報の入力が終了する時点まで、前記対応する所定の条件から逸脱した条件に基づいて伴奏情報を生成するように制御する、付記1乃至8のいずれかに記載の伴奏装置。
[付記10]
前記制御手段は、前記入力された演奏情報が所定の状態にあると判定された時点から、予め定められたタイミングまで、前記対応する所定の条件から逸脱した条件に基づいて伴奏情報を生成するように制御する、付記1乃至8のいずれかに記載の伴奏装置。
[付記11]
前記判定手段は、前記入力される演奏情報の複数の状態夫々を判定可能に構成され、前記所定の状態として、前記複数種の状態を組み合わせた状態にあるか否かを判定する、付記1乃至10のいずれかに記載の伴奏装置。
[付記12]
前記付記1から11のいずれかに記載の伴奏装置と、
前記伴奏装置によって生成された伴奏情報に基づく楽音を発音する音源手段と、
を備える電子楽器。
[付記13]
伴奏装置に用いられる伴奏生成方法であって、前記伴奏装置が、
入力される演奏情報から、所定の条件に基づいて伴奏情報を生成し、
前記入力された演奏情報が所定の状態にあるか否かを判定し、
前記所定の状態にあると判定された場合に、前記所定の条件から逸脱した条件に基づいて伴奏情報を生成するように制御する、伴奏生成方法。
[付記14]
伴奏装置として用いられるコンピュータに、
入力される演奏情報から、所定の条件に基づいて伴奏情報を生成するステップと、
前記入力された演奏情報が所定の状態にあるか否かを判定するステップと、
前記所定の状態にあると判定された場合に、前記所定の条件から逸脱した条件に基づいて伴奏情報を生成するように制御するステップと、
を実行させるプログラム。