(57)【要約】【課題】アドリブ演奏時の、フレーズ間やコード変更時での音跳びを抑制すること。また、実演奏に近い演奏も可能にすること。【解決手段】ROM101は、ルート音をC音とするコード構成音から始まり、その音を最低音としたコードの転回形としてコードスケール音が配置された、複数の12音階からなるコードスケール音テーブルを格納する。CPU100は、フレーズの先頭音の場合、前回フレーズの最終音のキーナンバと先頭音の変換音のキーナンバとの音程が最小になるような12音階をコードスケール音テーブルから選択し、先頭音のキーナンバを該12音階の構成音のうちの対応する変換音に差し替える。また、フレーズ発音中にコード変更が有った場合も音を差し替えて音跳びを抑制する。前回の押鍵から今回の押鍵までの時間が所定時間を超えている場合には音跳びを抑制しない。【選択図】図１
2010092016.tif 000002
【特許請求の範囲】
【請求項１】
鍵盤上の特定音域の各鍵にアサインされた数小節のフレーズデータを格納しておき、前記各鍵のいずれかが押下されている間、該鍵に対応するフレーズデータを読み出して発音させるアドリブ演奏機能を有する電子楽器において、
ルート音をＣ音とするコード構成音から始まり、その音を最低音としたコードの転回形としてコードスケール音が配置された、複数の１２音階からなるコードスケール音テーブルと、
前記コードスケール音テーブルを用いてフレーズデータのキーナンバを変更することによって音跳びを抑制する制御手段を備えたことを特徴とするアドリブ演奏機能を有する電子楽器。
【請求項２】
前記制御手段は、フレーズの先頭音の場合、前回フレーズの最終音のキーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択し、前記先頭音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替えることを特徴とする請求項１に記載のアドリブ演奏機能を有する電子楽器。
【請求項３】
前記制御手段は、選択した１２音階が最大値となって想定している音域よりも高い音域に達した場合には、基準キーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から再選択し、前記先頭音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替えることを特徴とする請求項２に記載のアドリブ演奏機能を有する電子楽器。
【請求項４】
前記制御手段は、フレーズの発音中にコード変更が有った場合、フレーズの先頭音の場合に前回フレーズの最終音のキーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択した、また、選択した１２音階が最大値となって想定している音域よりも高い音域に達した場合には、基準キーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から再選択した、ことにより得られた１２音階の構成音のうち、コード構成音として配置された所定音の変換音のキーナンバと上記所定音に対応する変換音のキーナンバとの音程が最小になるような１２音階をコード変更後のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択し、コード変更後の音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替えることを特徴とする請求項１に記載のアドリブ演奏機能を有する電子楽器。
【請求項５】
前記制御手段は、前回の離鍵から今回の押鍵までの時間が所定時間を超えている場合、前回フレーズの最終音と今回フレーズの先頭音との間での音跳びを抑制せず、今回フレーズを所定音域で発音させることを特徴とする請求項１に記載のアドリブ演奏機能を有する電子楽器。
【請求項６】
鍵盤上の特定音域の各鍵にアサインされた数小節のフレーズデータのうち、前記各鍵のいずれかが押下されている間、該鍵に対応するフレーズデータを読み出して発音させるためのアドリブ演奏機能用プログラムであって、
電子楽器に、
ルート音をＣ音とするコード構成音から始まり、その音を最低音としたコードの転回形としてコードスケール音が配置された、複数の１２音階からなるコードスケール音テーブルを用いてフレーズデータのキーナンバを変更するステップを含む手順を実行させることにより、音跳びが抑制されたアドリブ演奏機能を実現させるアドリブ演奏機能用プログラム。
【請求項７】
前記ステップは、フレーズの先頭音の場合、前回フレーズの最終音のキーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択するステップと、前記先頭音のキーナンバを、該１２音階の構成音のうちの対応する変換音に差し替える請求項６に記載のアドリブ演奏機能用プログラム。
【請求項８】
前記ステップは、さらに、選択した１２音階が最大値となって想定している音域よりも高い音域に達した場合には、基準キーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から再選択し、前記先頭音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替える請求項７に記載のアドリブ演奏機能用プログラム。
【請求項９】
前記ステップは、フレーズの発音中にコード変更が有った場合、フレーズの先頭音の場合に前回フレーズの最終音のキーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択した、また、選択した１２音階が最大値となって想定している音域よりも高い音域に達した場合には、基準キーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から再選択した、ことにより得られた１２音階の構成音のうち、コード構成音として配置された所定音の変換音のキーナンバと上記所定音に対応する変換音のキーナンバとの音程が最小になるような１２音階をコード変更後のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択し、コード変更後の音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替える請求項６に記載のアドリブ演奏機能用プログラム。
【請求項１０】
前記ステップは、前回の離鍵から今回の押鍵までの時間が所定時間を超えている場合、前回フレーズの最終音と今回フレーズの先頭音との間での音跳びを抑制せず、今回フレーズを所定音域で発音させる請求項６に記載のアドリブ演奏機能用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アドリブ演奏機能を有する電子楽器およびアドリブ演奏機能用プログラムに関し、特に、鍵盤上の特定音域内の任意の鍵の押下によりアドリブ演奏を行うことができる、アドリブ演奏機能を有する電子楽器およびアドリブ演奏機能用プログラムに関する。
【背景技術】
【０００２】
自動伴奏機能あるいは自動演奏機能を備え、さらにアドリブ演奏機能を備えた電子楽器がある。アドリブ演奏機能は、予め数小節のフレーズデータを鍵盤上の特定音域内の各鍵にアサインして内蔵させておき、特定音域内の任意の鍵が押下されたとき、その押下中だけ該鍵に対応するフレーズデータを先頭から読み出して発音させることで実現される。
【０００３】
フレーズデータは、Cコードスケールに沿った基本フレーズのデータとして内蔵される。自動伴奏機能においては鍵盤操作によるコードが検出された時、自動演奏機能においては曲データ中のコード進行データにおいてコードが検出された時、基本フレーズの各音を、検出されたコードに該当するコードスケール音テーブル上の音に変換して発音させる。コードスケール音テーブルは、コードタイプ別にCルート音から始まる12音階のスケール音テーブルとして構成される。基本フレーズの各音は、検出されたコードのルート音分が加算されることで変換される。
【０００４】
特許文献１には、アドリブ演奏用に割り当てられた、鍵盤上の特定音域内の鍵に対応させて小単位のメロディの楽音波形の情報を予め記憶し、特定音域内の鍵が押下されたとき、該鍵に対応する楽音波形を読み出し、楽音を繰り返し発生させる、アドリブ演奏機能を有する電子楽器が記載されている。
【０００５】
特許文献２には、現在発音中のコードに対して自然な繋がりが得られる転回形を自動選択し、この転回形に従ってノートデータを修正することにより、コード進行に伴うコード変化の前後で音程が跳躍しないようにした自動伴奏装置が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平２−１５１８９７号公報
【特許文献２】特開平５−３５２７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
アドリブ演奏機能のための基本フレーズは、さまざまな音域で、上行フレーズ、下行フレーズ、あるいはこれらを組み合わせた形でフレージングされている。ユーザは、鍵盤上の特定音域内の任意の鍵を押下し、該鍵にアサインされたフレーズデータを読み出して発音させることができる。したがって、フレーズデータが読み出される順序、すなわち発音順序は、ユーザが鍵を押下する順序次第で異なったものになる。また、ユーザによる鍵の押下は、フレーズの最後までとは限らず、1拍の時もあれば1小節の時もあり、どの音域で発音が終わるのかは予測することができない。
【０００８】
このため、ユーザによる鍵の押下順序によっては大きく音跳びし、複数フレーズ全体としての楽音が安定して聴こえないことがある。例えば、低音域のフレーズが発音された後に高音域のフレーズが選ばれた場合、低音域のフレーズとそれに続く高音域のフレーズとの音程の繋がりが不自然になり、両フレーズ全体としての楽音が安定して聴こえないことがある。
【０００９】
また、ユーザにより特定音域内の鍵が押下され続けられていて、あるフレーズが発音されている途中で、自動伴奏あるいは自動演奏により、ルート音が異なるコードに変更された場合、そのフレーズは、途中からコードスケール音テーブルにより変換される。従来のコードスケール音テーブルは、コードタイプ別にCルート音から始まる12音階のみで構成されているので、フレーズが、途中から、コードスケール音テーブルに従ってルート音分だけ加算されて変換されると、コード変更時のルート音によってはフレーズが途中から大きく音跳びし安定して聴こえないことがある。
【００１０】
図１５は、従来のコードスケール音テーブルを示す図である。ここで、(/*[C,C#,D,・・・,B]*/)は、フレーズデータに含まれる各音からオクターブ情報を除いた12音階情報を示し、12音階情報の各音に対する列は、コードタイプ別の変換用加算値を示している。例えば、コードタイプがMajorの場合、フレーズデータのC#音は、"1"加算されてD音に変換される。
【００１１】
図１９は、フレーズデータによる楽譜の具体例であり、ここでは、1小節のフレーズ1,2から成る2小節の楽譜を示している。フレーズデータは、このようにCコードスケールに沿った基本フレーズのデータとして備えられている。フレーズ1,2は、鍵盤上の特定音域内の任意の別々の鍵にアサインされている。フレーズ1,2がアサインされた鍵が押下された時、対応するフレーズが先頭から読み出され、その鍵の押下中だけ発音される。図１９に示すように発音するには、フレーズ1がアサインされた鍵を1小節間押下し、次に、フレーズ2がアサインされた鍵を1小節の間、押下すればよい。
【００１２】
図２０は、図１６のフレーズ1,2が図１５のコードスケール音テーブルに従って変換された場合の楽譜を示す図である。ここでは、2拍ずつでC7,A7,Dm7,G7とコード変更された場合を例示している。
【００１３】
例えば、フレーズ1の1音目の"シ"(キーナンバ71)は、C7へのコード変更に従って"シ♭"(キーナンバ70)に変換される。フレーズ1の3音目の"ラ♯"(キーナンバ70)は、変更されない。フレーズ1の4音目の"シ"(キーナンバ71)は、フレーズ1の3拍目でコードがA7に変更されたことに伴って"ソ"(キーナンバ79)に変換される。フレーズ1の最終音(6音目)の"ソ"(キーナンバ67)は、"ミ"(キーナンバ76)に変換される。また、フレーズ2の先頭音(1音目)の"シ"(キーナンバ71)は、コードがDm7に変更されたことに伴って"ド"(キーナンバ72)に変換される。6音目の"ソ"(キーナンバ67)は、"ラ"(キーナンバ69)に変換される。さらに、7音目の"シ"(キーナンバ71)は、コードがG7に変更されたことに伴って"ファ"(キーナンバ77)に変換される。
【００１４】
この例では、フレーズ1,2の楽譜で、1つのフレーズの発音中(フレーズ1の3音と4音の間およびフレーズ2の6音と7音の間)に別のコードルートを持つコードが検出され、元のフレーズ1,2に比べると、加算されたルート音分だけ音跳びしている(丸枠で囲った部分)。また、フレーズ1の最終音(ミ)とフレーズ2の先頭音(ド)との間には、3度の音程の開きがある(四角枠で囲った部分)。コード進行の具合や個々のフレーズの音域や形などによって、この音程の開きは、さらに大きくなる場合もある。
【００１５】
特許文献１には、アドリブ演奏機能を有する電子楽器が記載されているが、上記したアドリブ演奏における課題およびその課題解決手段について記載されていない。また、特許文献２は、コード進行に伴うコード変化の前後での音程の跳躍を抑制する自動伴奏について記載されているが、これにも、上記したアドリブ演奏における課題およびその課題解決手段について記載されていない。
【００１６】
本発明の目的は、鍵盤上の特定音域内の任意の鍵が押下されてアドリブ演奏が行われた際、フレーズ間やコード変更時での音跳びを抑制することができる、アドリブ演奏機能を有する電子楽器およびアドリブ演奏機能用プログラムを提供することにある。
【課題を解決するための手段】
【００１７】
上記課題を解決するため、本発明は、鍵盤上の特定音域の各鍵にアサインされた数小節のフレーズデータを格納しておき、前記各鍵のいずれかが押下されている間、該鍵に対応するフレーズデータを読み出して発音させるアドリブ演奏機能を有する電子楽器において、ルート音をＣ音とするコード構成音から始まり、その音を最低音としたコードの転回形としてコードスケール音が配置された、複数の１２音階からなるコードスケール音テーブルと、前記コードスケール音テーブルを用いてフレーズデータのキーナンバを変更することによって音跳びを抑制する制御手段を備えた点を第１の特徴としている。
【００１８】
また、本発明は、前記制御手段が、フレーズの先頭音の場合、前回フレーズの最終音のキーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択し、前記先頭音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替える点を第２の特徴としている。
【００１９】
また、本発明は、前記制御手段が、選択した１２音階が最大値となって想定している音域よりも高い音域に達した場合には、基準キーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から再選択し、前記先頭音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替える点を第３の特徴としている。
【００２０】
また、本発明は、前記制御手段が、フレーズの発音中にコード変更が有った場合、フレーズの先頭音の場合に前回フレーズの最終音のキーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択した、また、選択した１２音階が最大値となって想定している音域よりも高い音域に達した場合には、基準キーナンバと先頭音に対応する変換音のキーナンバとの音程が最小になるような１２音階をその時点のコードタイプに該当するコードスケール音テーブルの複数の１２音階から再選択した、ことにより得られた１２音階の構成音のうち、コード構成音として配置された所定音の変換音のキーナンバと上記所定音に対応する変換音のキーナンバとの音程が最小になるような１２音階をコード変更後のコードタイプに該当するコードスケール音テーブルの複数の１２音階から選択し、コード変更後の音のキーナンバを該１２音階の構成音のうちの対応する変換音に差し替える点を第４の特徴としている。
【００２１】
さらに、本発明は、前記制御手段が、前回の離鍵から今回の押鍵までの時間が所定時間を超えている場合、前回フレーズの最終音と今回フレーズの先頭音との間での音跳びを抑制せず、今回フレーズを所定音域で発音させる点を第５の特徴としている。
【００２２】
本発明は、アドリブ演奏機能を有する電子楽器としてだけでなく、アドリブ演奏機能用プログラムとしても実現できる。このプログラムを電子楽器に搭載すれば、アドリブ演奏機能を有する電子楽器が得られる。
【発明の効果】
【００２３】
本発明によれば、数小節のフレーズデータがアサインされた鍵盤上の特定音域内の任意の鍵を押下してアドリブ演奏を行う際、今回のフレーズの先頭の音程が前回のフレーズの終わりの音程に繋がるようになるので、フレーズ間での音跳びを抑制することができる。また、フレーズ発音中にコードの変更があっても、その変更による音跳びを抑制することができる。これにより、音楽的に自然で安定して聞こえる楽音を発生させることができる。
【００２４】
前回の離鍵から今回の押鍵までの時間が所定時間を超えている場合には、フレーズ間やコード変更時での音跳びを抑制しない方が実演奏に近くなるので、好ましい場合もある。これは、前回の押鍵から今回の押鍵までの時間が所定時間を超えている場合、前回フレーズの最終音と今回フレーズの先頭音との間での音跳びを抑制せず、今回フレーズを所定音域で発音させることで達成される。
【図面の簡単な説明】
【００２５】
【図１】本発明の電子楽器の第１実施形態を示す機能ブロック図である。
【図２】鍵盤上の音域と各音域の鍵の機能の対応関係の一例を示す図である。
【図３】ROMに記憶されるフレーズデータの例を示す図である。
【図４】第１実施形態の動作を示すメインフローチャートである。
【図５】フレーズノート変換処理ルーチンで用いるコードスケール音テーブルの具体例を示す図である。
【図６】第１実施形態におけるフレーズノート変換処理ルーチンを示すフローチャートである。
【図７】図６の処理1(S52)を具体的に示すフローチャートである。
【図８】図６の処理2(S53)を具体的に示すフローチャートである。
【図９】図６の処理3(S55)を具体的に示すフローチャートである。
【図１０】図６の処理4(S61)を具体的に示すフローチャートである。
【図１１】図６の処理5(S62)を具体的に示すフローチャートである。
【図１２】図６の処理6(S57)を具体的に示すフローチャートである。
【図１３】図６の処理7(S58)を具体的に示すフローチャートである。
【図１４】図１９のフレーズを、図５のコードスケール音テーブルを用いてフレーズノート変換した場合の楽譜を示す図である。
【図１５】第２実施形態におけるキーイベント処理を示すフローチャートである。
【図１６】第２実施形態におけるフレーズノート変換処理ルーチンを示すフローチャートである。
【図１７】ROMに記憶されるフレーズデータの他の例を示す図である。
【図１８】従来のコードスケール音テーブルを示す図である。
【図１９】フレーズデータによる楽譜の具体例を示す図である。
【図２０】図１９のフレーズが図１８のコードスケール音テーブルに従って変換された場合の楽譜を示す図である。
【発明を実施するための形態】
【００２６】
以下、図面を参照して本発明を説明する。なお、以下では、本発明を電子楽器として実現した場合について説明するが、本発明は、電子楽器に搭載してアドリブ演奏機能を持たせるプログラムとしても実現できる。
【００２７】
図１は、本発明の電子楽器の第１実施形態を示す機能ブロック図である。図１において、CPU100は、ROM101に格納されている制御プログラムに従って電子楽器全体の制御を実行する。また、CPU100は、アドリブ演奏時の制御手段としても機能する。CPU100はタイマ割り込み回路を備えている。
【００２８】
ROM101は、電子楽器全体の制御を実行するプログラムや定数、曲データなどを記憶している。曲データには、ドラム、ベース、伴奏パートのほか、アドリブ演奏機能で必要なコード進行データが含まれる。また、ROM101の一部領域は、鍵盤104上の特定音域の各鍵にそれぞれアサインされた数小節のアドリブ用フレーズデータ(以下では、単にフレーズデータと称する。)を各鍵のキーナンバと対応して記憶している。フレーズデータは、ROM101とは別個のフレーズデータ用メモリ(ROM)に記憶してもよい。
【００２９】
RAM102は、CPU100のワークエリアおよびバッファとして使用され、また、楽器内の各種制御データ、MIDIデータなどを格納する。RAM102は、例えばバッテリによりバックアップされていてもよい。
【００３０】
I/F103は、CPU100と鍵盤104およびパネル105をバス113を介して接続するインタフェースである。鍵盤104は、複数の鍵と鍵盤スイッチとそのスキャン回路を含む。なお、鍵盤104は、上鍵盤や下鍵盤など、複数の鍵盤を有してもよい。
パネル105は、電子楽器の各種状態を設定する操作子(ボタン)、表示装置(LCD)およびそのアクセス回路を含む。パネル105の操作子には、音色選択ボタン、自動演奏機能での曲選択ボタン、曲の演奏/停止ボタン、演奏モード(ノーマル,自動,ドラム,ベース)を選択するためのモード選択ボタン、テンポ選択ボタン、アドリブ選択ボタンなどが含まれる。
【００３１】
アドリブ選択ボタンは、アドリブ演奏モードを設定するための操作子であり、これによりアドリブ演奏モードが設定されると、数小節のフレーズデータがアサインされた鍵盤上の特定音域内の任意の鍵の押下中、押下されている鍵に対応するフレーズデータが、テンポ選択ボタンにより選択されたテンポで読み出され、楽音が発生される。各鍵に割り当てられた機能は、キーアサイナ106によって管理される。
【００３２】
楽音発生器107は、デジタル楽音波形サンプル値が記憶されている波形メモリ108から、発音すべき音高に比例したアドレス間隔で順次波形データを読み出し、補間演算を行って楽音信号を発生させる。
【００３３】
DSP(digital signal processor)109は、楽音発生器107から出力される楽音信号に各種効果を付与する。DSP109にはD-RAMなども含まれる。
【００３４】
DSP109から発生されるデジタル楽音信号は、D/A変換器110によりアナログ楽音信号に変換された後、アンプ111を介してスピーカ112に供給される。バス113は、電子楽音発生装置の上記各部間を接続する。各構成要素間での楽音情報や制御情報のやり取りはバス113を介して行われる。
【００３５】
図２は、鍵盤上の音域と各音域の鍵の機能の対応関係の一例を示す。ここでは、鍵盤を３つの音域に分割し、中央の音域の鍵をアドリブ演奏用の鍵として機能させ、上側の音域の鍵を高音域用の上鍵、下側の音域の鍵を低音域用の下鍵として機能させている。このような機能は、パネル105上のアドリブ選択ボタンによりアドリブ演奏モードが設定された場合に得られる。
【００３６】
図３は、ROM101に記憶されるフレーズデータの例を示す。このフレーズデータは、中央の音域の各鍵に対応して記憶された数小節のフレーズデータ(1),(2),・・・からなり、中央の音域の任意の鍵が押下されたとき、その押下中だけ対応するフレーズデータが読み出される。フレーズデータの読み出しは、1回だけであり、繰り返されない。したがって、アドリブ演奏用の鍵を押下し続けてもフレーズデータ1回による発音だけで終了し、それ以後は自動演奏機能による伴奏曲だけがバックで演奏されている状態になる。これにより、意図的に休符小節を作ることができる。また、ある鍵を1拍だけ押下すると、先頭から1拍分のフレーズだけが読み出されて発音されるので、鍵を1拍ずつ押下することにより、1小節のフレーズとは違った雰囲気の演奏を意図的に行うことができる。このように、ユーザがアドリブ演奏用のどの鍵を何拍押下するかは、自由である。
【００３７】
図４は、第１実施形態の動作を示すメインフローチャートである。以下では、簡単化のため、自動演奏機能とアドリブ演奏機能による動作について説明するが、自動伴奏機能とアドリブ演奏機能による動作も同様である。
【００３８】
電子楽器の電源がオンされたとき、まず、装置全体の初期化(S10)を実行する。この初期化は、音色設定や曲設定などの初期化を含む。次に、キーイベントの有無を判定し(S11)、キーイベント有りと判定された場合にはキーイベント処理を実行する(S12)。キーイベント処理には、キー(鍵)が押下された場合のキーオンイベント処理とキーが離された場合のキーオフイベント処理がある。
【００３９】
S12でキーイベント処理を実行した後、あるいはS11でキーイベント無しと判定された場合には、パネルイベントの有無を判定し(S13)、パネルイベント有りと判定された場合にはパネルイベント処理を実行する。パネルイベント処理にも、ボタンがオンされた場合のパネルオンイベント処理とボタンがオフされた場合のパネルオフイベント処理がある。また、パネルイベント処理は、音色選択(S14)による音色選択処理(S15)、曲選択(S16)による曲選択処理(S17)、およびその他のパネルイベント処理(S18)を含む。S14でパネルキーイベント処理を実行した後、あるいはS13でパネルキーイベント無しと判定された場合には、自動演奏処理(S19)およびアドリブ演奏処理(S20)を実行し(S15)、S11にリターンする。
【００４０】
自動演奏は、パネル105上のモード選択ボタンで自動演奏モードが選択され、曲選択ボタンで曲が選択された場合に行われる。すなわち、曲選択ボタンが操作されると、ROM101に格納された曲データが選択され、曲の演奏ボタンが操作されると、その曲データが先頭から、テンポ選択ボタンにより選択されたテンポで順次読み出されて自動演奏される。
【００４１】
さらに、パネル105上のアドリブ選択ボタンによりアドリブ演奏モードが設定されている場合、アドリブ演奏用の鍵が押下されると、キーオンイベント処理でアドリブ演奏機能のスタートが指示され、アドリブ演奏処理(S20)で、押下された鍵に対応するフレーズデータが、テンポ選択ボタンにより選択されたテンポで読み出されて発音される。また、アドリブ演奏用の鍵が離されると、アドリブ演奏処理(S20)で、フレーズデータの読み出しがストップされる。すなわち、アドリブ演奏用の鍵が押下されると、該鍵に対応するフレーズデータがROM101から読み出され、自動演奏機能による曲をバックとしたアドリブ演奏が行われる。
【００４２】
アドリブ演奏処理(S20)はフレーズノート変換処理ルーチンを含む。フレーズノート変換処理ルーチンは、コードスケール音テーブルを用いて、ノートデータのキーナンバを、検出したコードのスケール音に変換する。コードスケール音テーブルは、ルート音をC音とするコード構成音から始まり、その音を最低音としたコードの転回形としてコードスケール音が配置された、複数の12音階からなっている。このコードスケール音テーブルを用いることにより、今回のフレーズの先頭の音程が前回のフレーズの終わりの音程に繋がるようになる。
【００４３】
以上により、通常演奏時には、鍵の押下により生成されるノートデータのキーナンバに従って楽音が発生され、自動演奏時には、内蔵の曲データに従って自動的に楽音が発生され、さらに、アドリブ演奏時には、フレーズノート変換処理ルーチンで変換されたフレーズデータに従って楽音が発生される。
【００４４】
図５は、フレーズノート変換処理ルーチンで用いるコードスケール音テーブルの具体例を示す。コードスケール音テーブルは、コードルートをC音とするコードタイプごとに分かれている。例えば、/*Major*/,/*m*/,/*m7*/,・・・の各コードタイプごとにコードスケール音テーブルがある。
【００４５】
例えば、Cm7コードのコード構成音は、C,E♭,G,B♭であり、コードスケール音テーブル上では、一番左の列に、これらの構成音が実音G_3(キーナンバ55),B♭3(58),C_4(60),・・・として並べられ、C、E♭、G、B♭の各音から始まり、最高音としてB♭、C、E♭、Gのコード構成音が配置される。コード構成音C,E♭,G,B♭を下からC,E♭,G,B♭と並べたものが基本形であり、E♭,G,B♭,C、G,B♭,C,E♭、B♭,C,E♭,Gと並べたものが転回形である。
【００４６】
コードスケール音は、コード構成音以外に、コード構成音に準じた付加音(準構成音)やコード構成外音を含んでいる。例えば、Cm7コードの場合、コード構成音はC,E♭,G,B♭であるが、準構成音としてAを含み、コード構成外音としてD,Fを含んでいる。準構成音やコード構成外音は、コード進行の状況によって変わる。
【００４７】
コードスケール音テーブルは、コードスケール音外の音も含め、12音階として作られている。コードスケール音外の音とは、コードスケール音に対し、半音下の音が主である。この半音下の音は、各コードスケール音に対する装飾音符となる。
【００４８】
図５のコードスケール音テーブルでは、コード構成音、準構成音、コード構成外音の順に12音階を埋めていき、残ったところを両側の音との兼ね合いでスケールが滑らかに繋がるようにコードスケール音外を埋めている。ここで、(/*[C,C#,D,・・・,B]*/)は、フレーズデータに含まれる各音からオクターブ情報を除いた12音階情報を示し、12音階情報の各音に対する列は、コードタイプ別の変換音を示している。例えば、コードタイプがMajorの場合、フレーズデータのC音は、C3,E3,G3,・・・,E5のいずれかに変換されることを示している。このコードスケール音テーブルは一例であり、この例に限られない。
【００４９】
本発明で用いるコードスケール音テーブルは、上述したように、コードタイプ別に、コードスケール音を並べたものを8つ持ち、従来の、コードタイプ別に、Cルート音から始まる単一の12音階からなるコードスケール音テーブルとは異なる。
【００５０】
図６は、第１実施形態におけるフレーズノート変換処理ルーチンを示す。以下、図６を参照し、アドリブ演奏機能における動作について説明する。まず、自動演奏機能での曲データとして、伴奏パートとこれに対応したコード進行パートのデータをROM101に格納する。伴奏パートのデータは、ノートデータを含み、コード進行パートのデータは、コードデータを含む。また、ROM101に複数のフレーズデータを予め格納する。フレーズデータは、Cコードスケールに沿った基本フレーズデータである。
【００５１】
自動演奏においては、曲データを、設定したテンポに従ってROM101から順次読み出し、この曲データに従って楽音を発生させる。すなわち、伴奏パートのノートデータを、設定したテンポに従ってROM101から順次読み出し、自動演奏処理(S19)のルーチンへ送る。自動演奏処理(S19)は、このノートデータに従って楽音信号を発生して楽音を出力する。同様に、コード進行パートのコードデータをROM101から読み出し、コードルートデータとコードタイプデータとしてRAM102に記憶・保持する。
【００５２】
フレーズノート変換処理ルーチン(図６)では、曲進行に伴ってRAM102に格納されるコードルートおよびコードタイプを参照し(S50)、以下のステップを実行する。まず、変換対象のデータが、フレーズの先頭ノートデータであるか否かを判定する(S51)。ここで、先頭のノートデータと判定された場合、コードスケール音テーブルの各12音階から、先頭音に対応する変換音を読み出し(S52：処理1)、続いて、先頭音に対応する変換音と前回のフレーズの最終音との音程が最小になる12音階を選択する(S53：処理2)。
【００５３】
次に、S53で選択された12音階がコードスケール音テーブルの最大値か否かを判定する(S54)。ここで、最大値と判定された場合、先頭音に対応する変換音と基準キーナンバ(=71)との音程が最小になる12音階を再選択して(S55：処理3)、S56に進み、最大値と判定されない場合には、直接S56に進む。S55は、選択した12音階が最大値の場合、つまり、想定している音域より高い音域に達した場合、これ以上に音域が高くならないよう基準となる音域に戻すため、基準キーナンバと、コードスケール音テーブルの複数の12音階から先頭のノートデータに対応する変換音のキーナンバとの音程が最小になるような12音階を選択するために設けられている。
【００５４】
S56では、選択された12音階のうち、B音に対応する変換音をフレーズ選択時変換最高音バッファ(RAM102)に記憶する(S56)。これは、フレーズ発音中のコード変更に対処するために必要とされる。
【００５５】
その後、S53あるいはS55で選択された12音階をコードスケール変換音バッファ(RAM102)に記憶し(S57：処理6)、フレーズノートをコードスケール変換音バッファの対応する変換音に差し替える(S58：処理7)。その後、さらに、差し替えたフレーズノートを前回発音フレーズ最終音バッファ(RAM102)に記憶し(S59)、リターンする。S59では、フレーズノート変換処理ルーチンで変換されたノートデータをその都度、記憶し、これを次の前回発音フレーズ最終音として用いる。
【００５６】
S60〜S62は、フレーズ発音中のコード変更に対処するためのフローである。すなわち、S51で、フレーズ変換対象のノートデータが、フレーズの先頭ノートデータでないと判定された場合、フレーズ発音中のコード変更の有無を判定する(S60)。ここで、コード変更有りと判定された場合、コードスケール音テーブルの各12音階から変換最高音を読み出し(S61)、さらに、この変換最高音とフレーズ選択時変換最高音(S56で記憶)との音程が最小になる12音階を選択し(S62)、S57に進む。S60で、フレーズ発音中のコード変更が無しと判定された場合には、S58に進み、フレーズノートをコードスケール変換音バッファの対応する変換音に差し替える。
【００５７】
図７は、図６の処理1(S52)を具体的に示すフローチャートである。ここでは、入力として、data(フレーズのノートイベント(キーナンバ))，chord_type(コードタイプ),chord_root(コードルート),pre_last_note(前回発音フレーズ最終音)が与えられ、出力として、top_nt[8](転回形番号ごとのフレーズ先頭音に対応する変換音),pre_last_note(前回発音フレーズ最終音(装飾音符をコード構成音扱いに処理したもの))が得られる。なお、scale_inv_table[6][8][12],inv_noはそれぞれ、コードスケール音テーブル，コードスケールの転回形番号であり、codn_sel[12]={0,0,0,4,4,4,7,7,7,11,11,11}、OCTAVE=12である。
【００５８】
図７のS71は、フレーズのノートイベント(キーナンバ)を、12(1オクターブに含まれる半音の数)で除算して余りを求め、コードスケール音テーブルの12音階に対応させる処理である。また、その後、取り得る値を上O,4,7,11の値に絞る。これによって、フレーズの先頭音がコード構成音以外の装飾音符の場合でもコード構成音として扱われる。装飾音符は、主に、フレーズにとって音楽的に大事であるコード構成音に向かって半音や全音で隣接する付加音であり、フレーズの前後の繋がりの中では余り意味がない。前回発音フレーズの最終音との音程が最小になる12音階を選択する処理では、このような装飾音をコード構成音として扱った方が音楽的に自然であるので、この処理を加えている。
【００５９】
S72は、前回発音したフレーズの最終音について、S71と同様の処理を行い、その後、オクターブ情報を持ったキーナンバにするため、codn_sel[ ]で絞り込んだ値に元のオクターブ情報を加える処理である。
【００６０】
S73は、S71で得られたフレーズのノートイベント(キーナンバ)と現時点でのコードタイプ、8種類のコードスケールの転回形番号を入力として、コードスケール音テーブルからコードスケールの転回形番号ごとにオクターブ情報を持ったキーナンバを得る処理である。
【００６１】
図８は、図６の処理2(S53)を具体的に示すフローチャートである。ここでは、入力として、top_nt[8](転回形番号ごとのフレーズ先頭音に対応する変換音),pre_last_note(前回発音フレーズ最終音)が与えられ、出力として、inv_no(先頭音の変換音と前回発音フレーズ最終音との音程が最小になる12音階の転回形番号)が得られる。なお、sub_min,sub,inv_noはそれぞれ、先頭音の変換音と前回発音フレーズ最終音との音程の最小値，先頭音の変換音と前回発音フレーズ最終音との音程(差分)，コードスケールの転回形番号である。
【００６２】
この処理では、コードスケールの転回形番号ごとの先頭音の変換音と前回発音フレーズ最終音との音程(差分)が同じ値になる場合がある。この場合は、2回目の方を無視することによって、コードスケールの12音階がより低い方を選択する。これにより、任意のフレーズを選択(フレーズがアサインされた鍵の押下)する度に音域が上がっていくのが防止される。これは、逆に言えば、任意のフレーズを選択する度に音域が下がっていくことを意味するが、音域の振れは、フレーズデータをあまり低い音域を使わないように作る、あるいは上行フレーズを多めに作ることで調整できる。なお、コードスケール音テーブルの各コードスケールは、転回形番号が大きいほど音域が高くなるように並べられている。
【００６３】
図９は、図６の処理3(S55)を具体的に示すフローチャートである。ここでは、入力として、top_nt[8](転回形番号ごとのフレーズ先頭音に対応する変換音)が与えられ、出力として、inv_no(先頭音の変換音と基準キーナンバとの音程が最小になる12音階の転回形番号)が得られる。なお、sub_min,sub,inv_no,BSC_NTはそれぞれ、先頭音の変換音と基準キーナンバとの音程の最小値，先頭音の変換音と基準キーナンバとの音程(差分)，コードスケールの転回形番号，基準キーナンバである。
【００６４】
図９のフローチャートの構造は、図８と変数が異なる以外は同じであるので、説明は省略する。これにより、フレーズの先頭音の変換音と基準キーナンバとの音程が最小になる12音階の転回形番号が得られる。
【００６５】
図１０は、図６の処理4(S61)を具体的に示すフローチャートである。ここでは、入力として、chord_type(コードタイプ),chord_root(コードルート)が与えられ、出力として、highest_nt[8](コードスケールの転回形番号ごとの変換最高音)が得られる。なお、scale_inv_table[6][8][12],inv_noはそれぞれ、コードスケール音テーブル，コードスケールの転回形番号であり、B_NT=11である。
【００６６】
図１０のフローチャートの構造は、図７と変数が異なる以外は同じであるので、説明は省略する。これにより、コードスケール音テーブルの各12音階から、変換最高音が読み出される。
【００６７】
図１１は、図６の処理5(S62)を具体的に示すフローチャートである。ここでは、入力として、highest_nt[8](コードスケールの転回形番号ごとの変換最高音),pre_highest_note(フレーズ選択時変換最高音)が与えられ、出力として、inv_no(各コードスケールの変換最高音とフレーズ選択時変換最高音との音程が最小になる12音階の転回形番号)が得られる。なお、sub_min,sub,inv_noはそれぞれ、コードスケールの変換最高音とフレーズ選択時変換最高音との音程の最小値，各コードスケールの変換最高音とフレーズ選択時変換最高音との音程(差分)，コードスケールの転回形番号である。
【００６８】
図１１のフローチャートの構造は、図８と変数が異なる以外は同じである。この処理でも、各コードスケールの変換最高音とフレーズ選択時変換最高音との音程(差分)が同じ値になる場合がある。この場合にも、2回目の方を無視することによって、コードスケールの12音階がより低い方を選択する。これは、選択された発音中のフレーズに対しコード変更により下行して発音を続けることで、該フレーズがより落ち着くようにすることを意図している。
【００６９】
処理4によるコード変更に対応したコードスケールの転回形番号ごとの変換最高音と、現在発音中のフレーズの先頭音を変換した際に選択されたフレーズ選択時変換最高音を比較し、両者の音程(差分)が最小になる新たなコードスケールをフレーズ変換音として使用することにより、コード変更された場合でも、そのフレーズが選択された時からほぼ同じ音域で発音し続けることができる。なお、ここでは、両者のコードスケールの最高音(12番目)を比較対象にしているが、比較対象は、コード構成音として配置された音、例えば、1番目、5番目、8番目のいずれの音であっても構わない。
【００７０】
図１２は、図６の処理6(S57)を具体的に示すフローチャートである。ここでは、入力として、chord_type(コードタイプ),chord_root(コードルート),inv_no(先頭音の変換音と前回発音フレーズ最終音との音程が最小になる12音階の転回形番号または先頭音の変換音と基準キーナンバとの音程が最小になる12音階の転回形番号または各コードスケールの変換最高音とフレーズ選択時変換最高音との音程が最小になる12音階の転回形番号)が与えられ、出力として、final_chd_scale[12](コードスケール変換音)が得られる。final_chd_scale[12]は、12音階のコードスケール変換音としてコードスケール変換音バッファに記憶される。なお、scale_inv_table[6][8][12],inv_noはそれぞれ、コードスケール音テーブル，コードスケールの転回形番号である。
【００７１】
図１３は、図６の処理7(S58)を具体的に示すフローチャートである。ここでは、入力として、data(フレーズのノートイベント(キーナンバ))が与えられ、出力として、data(変換されたノートイベント(キーナンバ))が得られる。フレーズノートは、このdataに差し替えられる。なお、oct_no,cnv_nt,final_chd_scale[12]はそれぞれ、オクターブ情報，フレーズノート変換音，コードスケール変換音であり、OCTAVE=12,BASE_C=60である。
【００７２】
フレーズノート変換音は、コードスケール音テーブルにより選択された12音階の音であり、コードスケール音テーブルは、中央のC4(キーナンバ60)を基準に作成されていて、オクターブ情報を持っている。図１３のフローチャートでは、この基準となるオクターブ情報を排除するために、フレーズノート変換音からキーナンバ60を引き算している。一方、フレーズのノートイベントに含まれるオクターブ情報は、フレーズが2オクターブ以上に跨って作成されている場合に個々のノートイベントの上下関係を示すものであり、変換されたフレーズにおいてもこの上下関係を維持するために必要となる。
【００７３】
図１４は、図１９のフレーズを、図５のコードスケール音テーブルを用いてフレーズノート変換した場合の楽譜を示す図である。図２０との比較を容易にするため、ここでは、図２０と同様に、フレーズ1,2が2拍ずつでC7,A7,Dm7,G7とコード変更された場合を示している。以下の説明では、図５〜図１３を適宜参照する。
【００７４】
まず、フレーズ1の1音目(先頭音)のシ(キーナンバ71)がフレーズ変換処理ルーチンに入力された時点を考える。S50(図６)では、この時点でのコードルート、コードタイプを参照する。コードルートは、例えば、C=0,C#=1,D=2,D#=3,E=4,F=5,F#=6,G=7,G#=8,A=9,A#=10,B=11に設定されている。この場合、コードルートは、C(chord_root=0)、コードタイプは、7th(chord_type=3)が参照される。
【００７５】
1音目のシは、先頭ノートデータであるので、処理1(S52)を実行し、data=11,chord_type=3,chord_root=0として、コードスケール音テーブルの各12音階から、先頭音に対応する変換音を読み出す。この場合、top_nt[8]として、E_4(キーナンバ64),G_4(67),B♭4(70),C_5(72),E_5(76),G_5(79),B♭5(82),C_6(84)が得られる。また、前回発音フレーズ最終音がないので、初期値として仮に与えられたキーナンバ76(E_5)がpre_last_noteとして得られる。
【００７６】
次に、処理2(S53)で、先頭音の変換音と前回発音フレーズ最終音との音程が最小になる12音階を選択する。処理2では、最終的に、inv_no=4,sub_min=0が得られる。
【００７７】
次に、S54でNOと判定されてS56に進み、S56では、選択された12音階のうち、B音に対応する変換音をフレーズ選択時変換最高音バッファに記憶する。この場合、76(E_5)(=scale_inv_table[3(chord_type)][4(inv_no)][11]+0(chord_root)))がフレーズ選択時変換最高音バッファpre_highest_noteに記憶される。
【００７８】
次に、処理6(S57)で上記12音階をコードスケール変換音バッファに記憶する。この場合、final_chd_scale[12]として、G_4(キーナンバ67),G♭4(66),G_4(67),A_4(69),B♭4(70),B♭4(70),B_4(71),C_5(72),C_5(72),E_5(76),E♭5(75),E_5(76)が得られる。
【００７９】
次に、処理7(S58)でフレーズノートをコードスケール変換音バッファの対応する変換音に差し替える。これにより、data=76(E_5)となり、先頭音のシ(キーナンバ71)は、最終的にミ(キーナンバ76)に変換される。この場合、先頭音は、初期値として設定した前回発音フレーズ最終音キーナンバ76(E_5)と同音で繋がっている。
【００８０】
次に、フレーズ1の4音目のシ(キーナンバ71)がフレーズ変換処理ルーチンに入力された時点を考える。S50では、この時点でのコードルート、コードタイプを参照する。この時点ではコードがC7からA7に変わるので、コードルートは、A(chord_root=9)、コードタイプは、7th(chord_type=3)が参照される。
【００８１】
4音目のシは、先頭ノートデータでなく、コード発音中のコード変更であるので、処理4(S61)および処理5(S62)を実行する。処理4では、コードスケール音テーブルの各12音階から変換最高音、すなわち、コードスケール音テーブルのC〜Bの12音階の最高音B音を読み出す。処理4により、highest_nt[8]として、C#5(キーナンバ73),E_5(76),G_5(79),A_5(81),C#6(85),E_6(88),G_6(91),A_6(93)が得られる。処理5では、上記変換最高音とフレーズ選択時変換最高音との音程が最小になる12音階を選択する。これにより、最終的に、inv_no=1,sub_min=0が得られる。
【００８２】
次に、処理6(S57)で上記12音階をコードスケール変換音バッファに記憶する。この場合、final_chd_scale[12]として、G_4(キーナンバ67),F#4(66),G_4(67),G#4(68),A_4(69),C#5(73),C_5(72),C#5(73),D#5(75),E_5(76),D#5(75),E_5(76)が得られる。
【００８３】
次に、処理7(S58)でフレーズノートをコードスケール変換音バッファの対応する変換音に差し替える。これにより、data=76(E_5)となり、4音目のシ(キーナンバ71)は、最終的にミ(キーナンバ76)に変換される。
【００８４】
上記コードC7時とA7時のコードスケール変換音final_chrd_scale[12]のどの列を比べてみても、両者の音程は、3つの半音内に収まっている。これは、コードC7で発音開始したフレーズ1が、どのタイミングでコードA7に変わっても、元のフレーズの形はそれほど変わらないことを意味する。つまり、フレーズ発音中のコード変更時に大きく音跳びしないことを意味する。
【００８５】
上記フレーズ変換の結果、フレーズ1の3音目と4音目は、C7コード時E♭5(=d#5,キーナンバ75)、A7コード時E_5(キーナンバ76)と半音で滑らかに繋がり、フレーズ2の6音目と7音目は、全音(2半音)で滑らかに繋がる(丸枠で囲った部分)。これは、ルート音をC音とするコード構成音から始まり、その音を最低音としたコードの転回形としてコードスケール音が配置された、複数の12音階からなるコードスケール音テーブルを用い、コード変更前後の音がなるべく近くなるように、コードスケール音テーブルからコードスケール音を選択し、このコードスケール音によりフレーズを変換することで実現される。
【００８６】
フレーズ2の1音目(先頭音)のシ(キーナンバ71)も、同様に、"ド"に変換され、フレーズ1の最終音"ド♯"と滑らかに繋がるようになる(四角枠で囲った部分)。これも、ルート音をC音とするコード構成音から始まり、その音を最低音としたコードの転回形としてコードスケール音が配置された、複数の12音階からなるコードスケール音テーブルを用い、前回発音されたフレーズの最終音がいずれの音高であれ、その音に今回発音するフレーズの先頭音がなるべく近くなるように、コードスケール音テーブルからコードスケール音を選択し、このコードスケール音によりフレーズを変換することで実現される。
【００８７】
以上のように、数小節のフレーズデータがアサインされた鍵盤上の特定音域内の任意の鍵が押下されてアドリブ演奏が行われた際、今回のフレーズの先頭の音程が前回のフレーズの終わりの音程に繋がるようにしているので、フレーズ間での大きな音跳びを抑制することができる。また、フレーズ発音中にコードの変更があっても、その変更による音跳びを抑制することができる。
【００８８】
次に、本発明の第２実施形態について説明する。第２実施形態では、前回の離鍵から今回の押鍵までの時間が所定時間を超えている場合、フレーズ間での音跳びを抑制しないようにして、実演奏に近い楽音を発生できるようにしている。以下では、第２実施形態が第１実施形態と異なる点だけについて説明する。
【００８９】
図１５は、第２実施形態におけるキーイベント処理を示すフローチャートである。これは、図４のS12内での処理である。
【００９０】
キーイベント処理では、まず、キーイベントによる通常のキーイベント処理を実行する(S80)。この通常のキーイベント処理は、第１実施形態でのキーイベント処理に相当する。
【００９１】
次に、キーイベントが押鍵か否かを判定する(S81)。S81で、押鍵と判定された場合、そのままリターンしてS13(図４)に進むが、押鍵でない、つまり離鍵と判定された場合には、キーオフ時間を計測するタイマをリセット(key_off_time←0)する(S82)。このタイマは、通常時にkey_off_timeをインクリメントしており、離鍵時にリセットされるので、key_off_timeは、離鍵時からの経過時間を示す。
【００９２】
図１６は、第２実施形態におけるフレーズノート変換処理ルーチンを示すフローチャートである。このフローチャートが図６と異なるのは、S52に続いて、key_off_timeが予め設定された所定時間THを超えているか否かを判定し(S63)、key_off_timeが予め設定された所定時間THを超えていないと判定された場合には、第１実施形態と同様に、S53(処理2)を実行した後にS54に進むが、超えていると判定された場合には、S53を実行せずに、フレーズデータを所定音域に設定(S64)してS54に進む点である。
【００９３】
所定時間THは、演奏の流れの点から、小節あるいは拍を単位として設定するのが好ましい。例えば、所定時間THは、2小節分に設定される。
【００９４】
S64で、転回形番号を5に設定している(inv_no←5)のは、フレーズデータを所定音域とするためである。なお、コードタイプは、S50で参照されたものである。これにより、アドリブ演奏の離鍵から押鍵までの時間が所定時間THを超えている場合、そのフレーズデータは、コードスケール音テーブルにおける転回形番号5の音域に変換される。S64では、5以外の他の転回形番号を設定してもよい。所定時間THや転回形番号は、工場出荷時などにデフォルトとして予め設定される。
【００９５】
以上実施形態を説明したが、本発明は、上記実施形態に限定されない。例えば、自動演奏の曲(グループ)毎、音色(グループ)毎、テンポ毎に細分化された複数セットのフレーズデータを記憶し、その中から1セットのフレーズデータを適宜選択して用いてもよい。
【００９６】
図１７は、複数セットのフレーズデータの例を示す。この例では、フレーズデータは、自動演奏の曲(グループ)毎、音色(グループ)毎、中低速テンポ用/高速テンポ用に細分化されている。自動演奏の曲は、曲のスタイル(音楽ジャンル)により、例えば、ジャズ、ラテン、ブルースなどにグループ化される。音色は、例えば、ピアノ、オルガンなどにグループ化される。また、テンポは、中低速、高速などにグループ化される。中低速か高速かは、例えば、180(BPM:beat per minute)以下か否かより判定される。
【００９７】
特定のセットのフレーズデータは、パネル105上の操作ボタンの操作に従ってRAM101から読み出される。すなわち、曲選択ボタンによる曲の選択、音色選択ボタンによる音色の選択、テンポ選択ボタンによるテンポの選択に従って1つのセットのフレーズデータが指定される。
【００９８】
図１７の例において、パネル105上の操作ボタンの操作により、例えば、曲(グループ)1、音色(グループ)2、180以下(中低速)のテンポが選択されたとすると、アドリブ演奏用の各鍵(キー(1),キー(2),キー(3),・・・)に対してフレーズデータ(1'),(2'),(3'),・・・が割り当てられる。また、曲(グループ)1、音色(グループ)1、180超(高速)のテンポが選択されたとすると、アドリブ演奏用の各鍵(キー(1),キー(2),キー(3),・・・)に対してフレーズデータ(1"),(2"),(3"),・・・が割り当てられる。
【００９９】
このようにフレーズデータを細分化することにより、自動演奏の曲のスタイル(音楽ジャンル)、音色およびテンポの速さに合ったフレーズをアドリブ演奏できる。例えば、音色をピアノに変更した場合、減衰音に合ったフレーズをアドリブ演奏でき、音色をオルガンに変更した場合、持続音に合ったフレーズをアドリブ演奏できる。また、例えば、テンポが低速の場合、音符数の少ないゆったりとしたフレーズをアドリブ演奏でき、テンポが高速の場合、音符数の多い歯切れのよいフレーズをアドリブ演奏できる。
【符号の説明】
【０１００】
100・・・CPU、101・・・ROM、102・・・RAM、103・・・I/F、104・・・鍵盤、105・・・パネル、106・・・キーアサイナ、107・・・楽音発生器、108・・・波形メモリ、109・・・DSP(digital signal processor)、110・・・D/A変換器、111・・・アンプ、112・・・スピーカ、113・・・バス
【図１】
2010092016.tif 000003
【図２】
2010092016.tif 000004
【図３】
2010092016.tif 000005
【図４】
2010092016.tif 000006
【図５】
2010092016.tif 000007
【図６】
2010092016.tif 000008
【図７】
2010092016.tif 000009
【図８】
2010092016.tif 000010
【図９】
2010092016.tif 000011
【図１０】
2010092016.tif 000012
【図１１】
2010092016.tif 000013
【図１２】
2010092016.tif 000014
【図１３】
2010092016.tif 000015
【図１４】
2010092016.tif 000016
【図１５】
2010092016.tif 000017
【図１６】
2010092016.tif 000018
【図１７】
2010092016.tif 000019
【図１８】
2010092016.tif 000020
【図１９】
2010092016.tif 000021
【図２０】
2010092016.tif 000022