(57)【要約】  【課題】  波形データの各波形区間における時間軸上の圧縮又は伸長を行う際、演奏中に演奏テンポの変化があった場合に、そのテンポの変化に応じて、波形データの各区間毎に時間軸上での圧縮又は伸長を行うことのできる波形発生装置を提供すること。  【解決手段】  本発明の波形発生装置は、演奏データ入力手段より入力される第２演奏データのテンポの変化に応じて、第１演奏データを更新し、その更新に基づいて、記憶手段に記憶している波形データの各区間毎の時間圧伸率を求める。そして、その求めた時間圧伸率に応じた波形を波形生成手段にて生成する。よって、演奏テンポの変化があった場合にもテンポの変化に応じた波形データを生成することができ、それによって、発音時の違和感を軽減することができる。  【選択図】        図１２ 
2005121876.tif 000002
【特許請求の範囲】
【請求項１】
一連の複数区間に分割された波形データを記憶する波形データ記憶手段と、
演奏データを入力する演奏データ入力手段と、
前記演奏データ入力手段により入力された第１演奏データを記憶する演奏データ記憶手段と、
前記演奏データ入力手段により入力された第２演奏データの発音長を検出する演奏データ検出手段と、
前記演奏データ検出手段により検出された発音長に基づいて、前記演奏データ記憶手段に記憶した第１演奏データを更新する演奏データ更新手段と、
前記演奏データ更新手段により更新された第１演奏データに基づいて、前記波形データ記憶手段に記憶した波形データの各区間毎の時間圧伸率を取得する時間圧伸率取得手段と、
前記演奏データ入力手段により入力される第２演奏データに従って、前記時間圧伸率取得手段により取得した時間圧伸率に応じて波形を生成する波形生成手段とを備えていることを特徴とする波形発生装置。
【請求項２】
前記演奏データ検出手段は、検出した発音長に基づいて、前記第２演奏データのテンポを検出するテンポ検出手段を含み、
前記演奏データ更新手段は、前記テンポ検出手段により検出された前記第２演奏データのテンポに基づいて、前記第１演奏データを更新するものであることを特徴とする請求項１記載の波形発生装置。
【請求項３】
前記演奏データ更新手段は、前記演奏データ検出手段により検出された発音長に基づいて、前記第１演奏データのテンポを更新するものであることを特徴とする請求項１又は２記載の波形発生装置。
【請求項４】
前記演奏データ更新手段は、前記演奏データ検出手段により検出された発音長が、所定の変化をした場合に、前記第１演奏データを更新するものであることを特徴とする請求項１から３のいずれかに記載の波形発生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、波形発生装置に関し、特に、演奏中に演奏テンポの変化があった場合に、そのテンポ変化に応じて、波形データの時間軸上での圧縮又は伸長の制御をリアルタイムで行うことのできる波形発生装置に関する。
【背景技術】
【０００２】
特開平１０−２６０６８５号公報（特許文献１）には、波形データを時間軸上で圧縮または伸長し得る音源（以下、「オーディオ・フレーズ音源」と称する）が記載されている。この特許文献１に記載されたオーディオ・フレーズ音源では、ＣＰＵ（Central Processing Unit）からＤＳＰ（Digital Signal Processor）へ、時間圧伸率情報（波形データを時間軸上で圧縮または伸長させる割合を示す情報）と音高情報とがパラメータとして供給されることにより、波形データの時間軸上での圧縮処理または伸長処理が行われる。
【０００３】
図１は特許文献１に記載されるオーディオ・フレーズ音源の概念的なブロック図である。図１によれば、特許文献１のオーディオ・フレーズ音源は、波形データを記憶する記憶手段とその記憶手段から入力される波形データに対しＣＰＵから供給される時間圧伸率情報及び音高情報に基づいて出力波形生成処理を施す波形発生手段（ＤＳＰの一部）とを少なくとも備えている。
【０００４】
この特許文献１に記載されるオーディオ・フレーズ音源によれば、記憶手段に音節を有する波形データが記憶され、ユーザがその波形データにおける１の音節を延長させるような再生指示を与えた場合、波形発生手段において、その延長指示された音節に対応する波形データの末尾にループ再生区間を設けてループ再生が行われることにより、リアルタイムに再生時間が延長される。また、波形データにおける１の音節の発音を短縮されるように発音指示がされた場合は、波形発生手段において、現在発音中の音節の再生を中断し、次の音節に対応する波形データの先頭に再生位置を移動することにより、リアルタイムに再生時間の短縮が行われる。
【０００５】
しかし、特許文献１に記載されるオーディオ・フレーズ音源では、再生指示の操作が行われると、該当するオーディオ・フレーズの再生が開始され、再生指示時間に対応して発音することができるが、延長指示された音節の末尾のみがループ再生されることにより、ユーザに与える違和感が大きいという問題点があった。また、１の音節に対して短縮指示が出された場合も、その音節の途中までしか再生されないために、違和感を与える楽音が再生された。ポルタメント演奏を行う場合も、次の再生指示（例えば、押鍵）が行われるまでピッチや音量を変化させることができないため、ユーザに与える違和感は大きかった。
【０００６】
特許文献１の問題点を解決するために、特開２００３−１０８１３６号公報（特許文献２）において、予定演奏データとして記憶される演奏データとリアルタイムに手動演奏により入力される手動演奏データとに従って楽音を発生させる波形発生装置が提案されている。この特許文献２に記載される波形発生装置によれば、第２回目の演奏において、押鍵及び離鍵のタイミングにて発音が開始される。その際、発音開始時点から、予め記憶されている第１回目の演奏（第２回目の演奏の直前に行われた演奏）の演奏データに基づく時間圧伸率により、波形メモリに予め記憶されている元波形データに対し、圧縮又は伸長、或いは、音高又は音量のポルタメント変化を施す。そのため、元波形データに対し、各波形区間の発音長さ、音高変化又は音量変化の異なる演奏を行った場合にも、少なくとも２回の演奏を行うことにより自然な発音の演奏を行うことができる。
【特許文献１】特開平１０−２６０６８５号公報
【特許文献２】特開２００３−１０８１３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献２に記載される波形発生装置は、１の音節区間（波形区間）の発音長さ（即ち、１の音符の長さ）の変化、或いは、音高又は音量のポルタメント変化などの演奏における局所的な変化には対応できるが、例えば、テンポ変化のような演奏におけるマクロな変化にはリアルタイムに対応できなかった。
【０００８】
本発明は、上述した問題点を解決するためになされたものであり、波形データの時間軸上での圧縮又は伸長あるいは音高の制御をリアルタイムで行うことができる上に、波形区間における波形データの時間軸上での圧縮または伸長を行う際に、各波形区間における波形データを全て再生できる上に、演奏中に演奏テンポの変化があった場合に、テンポ変更後の新たなテンポに応じて、波形データの時間軸上での圧縮又は伸長をリアルタイムで行うことのできる波形発生装置を提供することを目的としている。
【課題を解決するための手段】
【０００９】
この目的を達成するために、請求項１記載の波形発生装置は、一連の複数区間に分割された波形データを記憶する波形データ記憶手段と、演奏データを入力する演奏データ入力手段と、前記演奏データ入力手段により入力された第１演奏データを記憶する演奏データ記憶手段と、前記演奏データ入力手段により入力された第２演奏データの発音長を検出する演奏データ検出手段と、前記演奏データ検出手段により検出された発音長に基づいて、前記演奏データ記憶手段に記憶した第１演奏データを更新する演奏データ更新手段と、前記演奏データ更新手段により更新された第１演奏データに基づいて、前記波形データ記憶手段に記憶した波形データの各区間毎の時間圧伸率を取得する時間圧伸率取得手段と、前記演奏データ入力手段により入力される第２演奏データに従って、前記時間圧伸率取得手段により取得した時間圧伸率に応じて波形を生成する波形生成手段とを備えている。
【００１０】
この請求項１記載の波形発生装置によれば、演奏データ入力手段から第２演奏データが入力されると、演奏データ検出手段により、その入力された第２演奏データの発音長が検出される。一方で、該第２演奏データの発音長が検出されると、その第２演奏データの発音長に基づいて、演奏データ更新手段により、演奏データ記憶手段に先に記憶されている第１演奏データが更新され、そのように更新された第１演奏データに基づいて、時間圧伸率取得手段により、波形データ記憶手段に記憶されている一連の複数区間に分割された波形データの各区間毎の時間圧伸率が取得される。そして、演奏データ入力手段により入力される第２演奏データに従って、波形生成手段により、該時間圧伸率取得手段により取得された時間圧伸率に応じた波形が生成される。
【００１１】
請求項２記載の波形発生装置は、請求項１記載の波形発生装置において、前記演奏データ検出手段は、検出した発音長に基づいて、前記第２演奏データのテンポを検出するテンポ検出手段を含み、前記演奏データ更新手段は、前記テンポ検出手段により検出された前記第２演奏データのテンポに基づいて、前記第１演奏データを更新するものである。
【００１２】
この請求項２記載の波形発生装置によれば、請求項１記載の波形発生装置と同様に作用する上、演奏データ検出手段において、発音長が検出されると、テンポ検出手段により、その検出された発音長に基づいて、第２演奏データのテンポが検出される。すると、そのように検出された第２演奏データのテンポに基づいて、演奏データ更新手段により、第１演奏データが更新される。
【００１３】
請求項３記載の波形発生装置は、請求項１又は２記載の波形発生装置において、前記演奏データ更新手段は、前記演奏データ検出手段により検出された発音長に基づいて、前記第１演奏データのテンポを更新するものである。
【００１４】
この請求項３記載の波形発生装置によれば、請求項１又は２記載の波形発生装置と同様に作用する上、演奏データ検出手段により検出された発音長に基づいて、演奏データ更新手段により、第１演奏データのテンポが更新される。
【００１５】
請求項４記載の波形発生装置は、請求項１から３のいずれかに記載の波形発生装置において、前記演奏データ更新手段は、前記演奏データ検出手段により検出された発音長が、所定の変化をした場合に、前記第１演奏データを更新するものである。
【発明の効果】
【００１６】
本発明の波形発生装置によれば、第２演奏（今回演奏）の途中に、第１演奏（前回演奏）と異なるテンポが検出された場合、そのテンポの変化に応じて波形データが圧縮伸長される。よって、演奏テンポの変化に対応した波形データをリアルタイムで生成することができる。従って、演奏テンポを変えた場合にも、ユーザに与える発音の違和感が軽減されるという効果がある。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の好ましい実施例について、添付図面を参照して説明する。図２は、本発明の波形発生装置１の構成を概略的に示したブロック図である。
【００１８】
波形発生装置１は、ＣＰＵ１０と、ＲＯＭ１４と、ＲＡＭ１６と、ＤＳＰ２０と、演奏データ入力手段２８と、それらの構成間を接続するバス（ＢＵＳ）１２と、演奏データ入力手段２８に接続され、この波形発生装置１に演奏データを入力するための鍵盤２２と自動演奏装置２４とを主に搭載している。
【００１９】
ＣＰＵ１０は、波形発生装置１全体を制御する中央演算処理装置である。後述する図７、図８、図１２のフローチャートに示される処理の制御はＣＰＵ１０により行われる。ＲＯＭ（Read Only Memory）１４は、ＣＰＵ１０により実行される各種の制御プログラムや、その実行の際に参照される固定値データが格納されている。
【００２０】
ＲＡＭ（Random Access Memory）１６は、ＲＯＭ１４内に記憶される制御プログラムの実行にあたって必要な各種レジスタや各種バッファ等が設定されたワーキングエリアや、処理中のデータを一時的に格納するテンポラリエリアや、鍵盤２２により入力された演奏データやその演奏データを記憶する記憶領域や、ＣＰＵ１０の制御により取得された時間圧伸率情報や音高情報などを記憶する記憶領域等を有し任意にアクセスできる書き換え可能なメモリである。なお、演奏データには、例えば、ノートオンやノートオフのような押鍵又は離鍵に関する情報、これらのノートオン又はノートオフに対する時刻情報、楽曲の進行とテンポの変化とを記述したデータであるテンポマップを含むテンポ情報、及び、時間圧伸率情報等が含まれている。
【００２１】
ＤＳＰ２０は、デジタル信号の波形データを演算処理するための演算装置であり、その演算処理の制御プログラム等を記憶するプログラムデータメモリやその制御プログラム実行時に使用されるワーキングメモリ等を含んでいる。また、このＤＳＰ２０は、特開平１０−２６０６８５号公報に開示されるオーディオ・フレーズ音源に搭載されるＤＳＰと同様の構成を備えている。即ち、記憶手段に記憶される複数の区間に区切られている一連の波形データをＤＳＰ２０へ読み出し、読み出された波形データに対し、波形発生手段により、ＣＰＵ１０から供給される時間圧伸率情報や音高情報に基づいて時間圧伸又は音高変更が施され、ＤＳＰ２０から出力する。
【００２２】
この波形発生装置１は、鍵盤２２及び自動演奏装置２４から入力された演奏データに従って、元波形データに対して必要に応じて時間圧伸や音高変更を施し、ユーザが意図する波形データ（以下、「目標波形データ」と称する）を生成するものである。
【００２３】
次に、図３を参照して、元波形データ３０とその元波形データ３０を時間圧伸することにより生成される目標波形データ３１とについて概念的に説明する。図３（ａ）は、元波形データ３０による発音の態様を概念的に示した図であり、図３（ｂ）は、元波形データ３０を時間圧伸することにより生成される目標波形データ３１による発音の態様を概念的に示した図である。なお、図３においては、本発明の理解を容易にするために、元波形データ３０から目標波形データ３１を生成する場合に音高の変化はないものとする。
【００２４】
図３（ａ）は、波形データ３０が３つに区切られた波形区間３０ａ〜３０ｃを備えており、第１波形区間３０ａは２分音符の長さで「アイ」と発音され、第２波形区間３０ｂは４分音符の長さで「ラブ」と発音され、第３波形区間３０ｃは４分音符の長さで「ユー」と発音されることを示している。
【００２５】
一方、図３（ｂ）は、目標とする発音形態にある目標波形データ３１を概念的に示しており、ここで、第１波形区間３１ａは、第１波形区間３０ａの半分である４分音符の発音長で「ア」ではなく「アイ」と発音させることを目標としている。また、第２波形区間３１ｂは、第２波形区間３０ｂの２倍の長さの２分音符の長さで「ラブ」と発音させるが、伸ばすことのできない「ヴ（ｖｅ）」の音を機械的に伸ばして「ラブー（「ー」は雑音）」とするのではなく、又は、伸ばすことのできない「ヴ（ｖｅ）」の音を伸ばさずに第２波形区間３０ｂに対して発音を不足させるのではなく、「ラーブ」とその第２波形区間内３０ｂにおいて時間的に均等に発音させることを目標としている。
【００２６】
次に、図４を参照して、本発明の波形発生装置１の第１実施例の動作について具体的に説明する。なお、図４においては、本発明の理解を容易にするために、音高の変化は表さないものとする。この第１実施例では、図４（ａ）に示される元波形データに対して、複数の波形区間を各々の圧伸率にて時間軸圧伸することで、目標の発音態様を得るために、同じ内容の演奏を２度行う。その場合、第１回目の演奏データを、次回の発音態様を予定する演奏データとして記憶しておき、その第１回目の演奏データを第２回目の演奏時に各波形区間の時間圧伸率情報の計算に用い、目標の発音態様を実現する。ここで、次回の発音態様を予定して記憶された演奏データを「予定演奏データ」と称する。
【００２７】
図４（ｂ）は、図４（ａ）の元波形データに対して行われた第１回目の演奏、即ち、図４（ｂ）に示される演奏データを入力した際の発音態様を示す図である。本実施例において、先ず、ユーザは、鍵盤２２の押鍵又は離鍵操作を行い、第１波形区間（区間１）と第２波形区間（区間２）と第３波形区間（区間３）との再生時間長が目標の発音態様と同じ時間長となるように、第１回目の演奏として手動演奏を行う。
【００２８】
第１回目の演奏において、鍵盤２２に含まれる鍵の１つが押鍵されると、第１波形区間の発音がその押鍵された鍵に従う音高で開始され、時間ａ’経過後に別の鍵が押鍵されると、第２波形区間の発音がその別の鍵の音高で開始される。これにより、鍵盤２２を構成する鍵が押鍵される度に、１の波形区間の再生が次の波形区間へ移行する。なお、この第１回目の演奏時には、第１波形区間、第２波形区間及び第３波形区間のいずれにおいても、時間圧伸率情報は、図４（ａ）の元波形データに対応して先に記憶されている図４（ａ）の元演奏データから波形データを圧縮も伸長もしないことを示す「１」として読み出され、ＣＰＵ１０よりＤＳＰ２０へ出力される。
【００２９】
その結果、図４（ｂ）に示すように、１つ目の押鍵により第１波形区間の発音を開始し、時間ａ’が経過した時点で２つ目の押鍵をしたため、図４（ａ）の元波形データの第１波形区間の再生は再生時間ａ’の時点から急速減衰され、時間ａ’以降の波形は再生されない。よって、図４（ａ）の元波形データの第１波形区間のほぼ半分の再生が行われた時点で次の第２波形区間の発音指示をしたため、図４（ａ）の元波形データの第１波形区間「アーイ」は、「アー」としか発音されない。
【００３０】
また、第１回目の演奏における第２波形区間の長さは、元波形データの第２波形区間のおよそ２倍の長さとなるため、図４（ａ）の元波形データにおける、第２波形区間の終了点近くに所定のループ区間を設定している場合は、そのループ区間まで再生を進めた後、そのままループ区間を繰り返して再生する。そして、次の第３波形区間の発音指示をうけると、第２波形区間の発音を急速減衰し、第３波形区間の発音を開始する。あるいは、図４（ａ）の元波形データの第２波形区間の終了点近くに所定のループ区間を設定していない場合は、第２波形区間をオリジナルの長さで再生し終わると消音し、そのまま無音で待機状態となり、次いで、第３波形区間の発音指示をうけて、第３波形区間の発音を開始する。
【００３１】
この第１回目の演奏は、予定演奏データとして記憶される。この予定演奏データにおいて、各区間の再生時間（演奏時間）ａ’、ｂ’…としては、計測した時間ａ’、ｂ’…を記憶してもよいし、各鍵の押鍵及び離鍵時刻を記憶し、１の押鍵をされてからその鍵が離鍵されるまでの時間、あるいは、レガート演奏をされた場合は、１の押鍵をされてから次の押鍵をされるまでの時間を計算することにより得られた時間ａ’、ｂ’…を記憶するようにしてもよい。
【００３２】
第１回目の演奏に基づいて記憶した予定演奏データを参照することにより、第２回目の演奏において、第２回目の演奏の演奏データが順々に入力される（演奏が進む）に従って、波形データを時間軸圧縮伸長しながら再生する。具体的には、第１波形区間の再生指示（鍵盤２２の押鍵、自動演奏データによる再生指示）があると、先ず、ＣＰＵ１０は、その再生指示に基づく音高情報と第１波形区間における時間圧伸率情報ａ’／ａとをＤＳＰ２０へ出力する。ＤＳＰ２０では、ＣＰＵ１０から入力された音高情報により指定される音高の楽音を、同じくＣＰＵ１０から入力された時間圧伸率情報に応じて圧伸して再生を開始する。そして、次の押鍵を検出すると、ＤＳＰ２０は、現在の波形区間（第１波形区間）の波形の再生を急速減衰することにより中止し、次の波形区間（第２波形区間）の波形に対し、ＣＰＵ１０から入力される再生指示に基づく音高情報と時間圧伸率情報（ｂ’／ｂ）とに従う再生を開始する。ここで、次の押鍵を検出する前に現在の波形区間（第１波形区間）の波形の読み出しているポイントがループ区間に入った場合には、次の再生指示があるまで所定のループ区間を繰り返し読み出して再生を延長する。又は、現在の波形区間にループ区間を設定していない場合には、その波形区間の波形の読み出しを終えると、次の再生指示を待つ。
【００３３】
第１回目の演奏では、元波形データに対応した元演奏データの各区間の長さと手動演奏等により入力される演奏データの各区間の長さとが大きく異なるため、第１波形区間に基づいて本来発音されるべき「アイ」における「イ」の音が発音されなかったり、第２波形区間に基づいて本来発音されるべき「ラブ」は、「ヴ（ｖｅ）」が「ラブー」と伸ばせない音であるために、その音を伸ばさずに演奏により指示された発音長さより短い発音時間となったり、又は、無理に伸ばすことにより「ラブー（「ー」は雑音）」にように雑音として発音されたりして、発音に不自然さが生じる。しかし、同じ内容の演奏を２度行う場合の、第２回目の演奏の際に、第１回目の演奏から得られた各区間毎の時間圧伸率情報を用いて波形データを時間軸圧伸しつつ再生すれば、上述のような演奏の不自然さを解消することができる。
【００３４】
一方、第１回目の演奏データと第２回目の演奏データとの間に大きな差がある場合、第１回目の演奏について上記した理由と同様の理由により、発音される楽音には不自然さが生じる。しかし、楽音をどのように発音させるかという演奏目標を定めた場合、その演奏目標に対応した演奏データを手動操作により続けて２回入力することによって、２回目の演奏時には、演奏目標に従う楽音を違和感なく発音再生することができる。即ち、１回目の演奏により、各々の波形区間毎の発音長さが目標の発音長さとなっている演奏データ（予定演奏データ）を記憶しているので、第２回目の演奏時には、各波形区間の発音長さを、先に記憶した予定演奏データより取得した各々の波形区間の時間圧伸率情報に応じた長さで発音することができる。
【００３５】
従って、演奏目標が定まった後、第２回目の演奏を行うと、第２回目の演奏が自動演奏である場合は全く誤差がなく（図４（ｃ）参照）、また、手動演奏である場合も微小な誤差で発音再生できるため（図４（ｄ）参照）、違和感のない演奏目標通りの発音再生をすることができる。
【００３６】
なお、第１回目の演奏により記録された予定演奏データと、それと同じ演奏内容で行われる第２回目の演奏による演奏データとの微細な誤差は、従来より公知の手法などにより対処することができる。図５は、予定演奏データより微細に早く波形区間を進めるような手動演奏（第２回目の演奏）が行われた場合の誤差の処理の一例を説明する図である。図５（ａ）は、波形区間を進める指示（次の波形区間の発音指示）が入力された時刻から予定演奏データにおける次の波形区間の先頭の開始予定時刻までの時間が所定時間（ジャンプ限度区間）を越える場合の誤差の処理の一例を説明する図である。この場合、次の波形区間の発音指示が入力された時点から現在発音中の波形データの発音を急速減衰させ、次いで、次の波形区間の先頭から波形データの再生を開始する。
【００３７】
また、図５（ｂ）は、波形区間を進める指示（次の波形区間の発音指示）が入力された時刻から予定演奏データにおける次の波形区間の先頭の開始予定時刻までの時間が所定時間（ジャンプ限度区間）以下である場合の誤差の処理の一例を説明する図である。この場合、次の波形区間の発音指示が行われても急速減衰することなく、現在の時間圧伸率を保ったまま再生を進め、次の波形区間の先頭に達したら次の波形区間の波形データの再生を開始する。
【００３８】
一方、図６は、予定演奏データより微細に遅く波形区間を進めるような手動演奏（第２回目の演奏）が行われた場合の誤差の処理の一例を説明する図である。図６（ａ）は、元波形データにおいて、予定演奏データにおける現在発音中の波形区間の終了点近くに所定の長さのループ区間を設けた場合の状態を示す図である。現在演奏中の波形区間の終了点近くに設けたループ区間に再生点を進め、ループ再生をする。現在演奏中の波形区間の再生時間が予定演奏データに予定された再生時間を超えても次の発音指示がされない場合には、図６（ａ）に示されるループ区間に含まれるいくつかの波形を繰り返し再生し、次の波形区間の発音指示を待機する。
【００３９】
図６（ｂ）は、予定演奏データより波形区間を進める手動演奏が遅くなった場合であり、現在演奏中の波形区間の再生時間が、予定演奏データに予定された再生時間を超えて所定時間（延長リミット）以上、次の波形区間の発音指示されない場合の処理の一例を示す図である。この場合、延長リミット区間の終端に到達した時点で、再生中の区間の波形データの発音を減衰し、再生を停止する。
【００４０】
図６（ｃ）は、予定演奏データより遅く波形区間を進める手動演奏が行われた場合であり、現在演奏中の波形区間の再生時間が、予定演奏データに予定された再生時間を越えて、所定時間（延長リミット）以内に、次の波形区間の発音指示がされる場合の処理の一例を示す図である。この場合、次の波形区間の発音指示があった時点で再生中の区間の波形データの発音を急速減衰し、次の波形区間の先頭から発音を開始する。
【００４１】
次に、図７及び図８のフローチャートを参照して、波形発生装置１において実行される時系列的な処理動作について説明する。なお、以下の説明においては、説明を簡略化して発明の理解を容易にするために、波形発生装置１はモノモードで単音のみの発音を行うものとし、鍵盤２２の押鍵又は離鍵操作に基づいて演奏データを入力するものとする。
【００４２】
なお、図７及び図８に示される処理ルーチンは、第１回目の演奏であっても第ｘ回目の演奏であっても共通して実行されるものである。第１回目の演奏の開始前において、記憶されている演奏データは元演奏データであるため、時間圧伸率情報は、全ての波形区間に対して「１」となる。また、波形データの先頭から再生する演奏の開始時点において、波形区間を指定する区間カウンタｎは「０」に初期化される。
【００４３】
第１実施例においては、鍵盤２２の鍵が押鍵される度に、波形区間が順次移行する。即ち、鍵盤２２の鍵が押鍵されると、その押鍵により演奏の開始される波形区間が、押鍵された鍵に対応する音高で発音開始され、次いで、押鍵されていた鍵が離鍵されると現在演奏中の区間の波形データの発音が停止される。続いて鍵盤２２の鍵が押鍵されると、同様に次の波形区間の発音が開始される。
【００４４】
なお、先に押鍵された鍵が離鍵される前に、新たな鍵が押鍵された場合（以下、このような演奏を「レガート演奏」と称する。）には、先の押鍵に対応する波形区間に基づく発音を停止し、次の波形区間に基づく発音が開始される。
【００４５】
図７（ａ）は、ＣＰＵ１０により実行されるこの第１実施例の押鍵時割り込み処理ルーチンのフローチャートである。この押鍵時割り込み処理ルーチンのプログラムは、鍵盤２２の鍵を押鍵されることにより、あるいは、演奏データの押鍵情報を入力されることにより起動される。鍵盤２２の押鍵によって押鍵時割り込み処理ルーチンが起動すると、先ず、新たな押鍵に基づき区間カウンタｎを「１」進め、次の波形区間を指定する（Ｓ１０１）。
【００４６】
Ｓ１０１の処理後、所定の記憶領域（ＲＡＭ１６など）に既に記憶されている演奏データの区間カウンタｎに対応した時間圧伸率情報と、鍵盤２２によって入力される音高情報及びベロシティ値とをＤＳＰ２０へ出力し（Ｓ１０２）、ＤＳＰ２０に対し発音開始を指示する（Ｓ１０３）。
【００４７】
Ｓ１０３の処理後、区間カウンタｎが「１」であるか否か、即ち、この押鍵時割り込み処理ルーチンが第１番目の押鍵であるか否かを確認する（Ｓ１０４）。Ｓ１０４の処理により確認した結果、第１番目の押鍵であれば（Ｓ１０４：Ｙｅｓ）、この押鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチン（図示せず）にリターンする。
【００４８】
一方、Ｓ１０４の処理により確認した結果、第１番目の押鍵でなければ（Ｓ１０４：Ｎｏ）、レガート演奏であるか否か、即ち、今回に押鍵された鍵が、前回に押鍵された鍵が離鍵される前に押鍵されたか否かを確認する（Ｓ１０５）。Ｓ１０５の処理により確認した結果、レガート演奏でなければ（Ｓ１０５：Ｎｏ）、この押鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチンにリターンする。
【００４９】
一方、Ｓ１０５の処理により確認した結果、レガート演奏であれば（Ｓ１０５：Ｙｅｓ）、前回の押鍵から今回の押鍵までの時間を求め、それに基づいて新たな時間圧伸率情報を演算し、演算により得られた時間圧伸率情報と、今回の演奏に関するテンポマップを含む演奏データとを所定の記憶領域（例えば、ＲＡＭ１６）に記憶する（Ｓ１０６）。Ｓ１０６の処理後、前回の押鍵により発音していた波形区間の発音を消音し（Ｓ１０７）、この押鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチンにリターンする。
【００５０】
次に、図８のフローチャートを参照して、ＣＰＵ１０により実行される離鍵時割り込み処理ルーチンについて説明する。この離鍵時割り込み処理ルーチンのプログラムは、鍵盤２２の鍵を離鍵されることにより、あるいは、演奏データの離鍵情報を入力されることにより起動される。鍵盤２２の離鍵によって離鍵時割り込み処理ルーチンが起動すると、先ず、レガート演奏であるか否か、即ち、今回に離鍵された時点に、他の押鍵されている鍵があるか否かを確認する（Ｓ２０１）。Ｓ２０１の処理で確認した結果、レガート演奏であれば（Ｓ２０１：Ｙｅｓ）、この離鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチン（図示せず）にリターンする。
【００５１】
一方、Ｓ２０１の処理で確認した結果、レガート演奏でなければ（Ｓ２０１：Ｎｏ）、今回離鍵された鍵の押鍵（前回の押鍵）に基づいて発音されていた楽音を消音する（Ｓ２０２）。Ｓ２０２の処理後、前回の押鍵時刻と離鍵時刻との差（押鍵時間）を求め、その押鍵時間に基づいて新たな時間圧伸率情報を演算し、演算により得られた時間圧伸率情報と、今回の演奏に関するテンポマップを含む演奏データとを所定の記憶領域（例えば、ＲＡＭ１６）に記憶し（Ｓ２０３）、この離鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチンにリターンする。
【００５２】
ここで、図９は、自動演奏される演奏データを入力する間、又は、鍵盤２２の押鍵又は離鍵操作に基づいて演奏データを入力する間、表示装置２６において表示される表示内容を示す図である。図９に示されるように、表示装置２６は、鍵盤２２の操作等により入力された演奏データにより確定し再生される各波形区間の音高や発音長さを、波形データの再生開始ポイントから現在再生ポイントに到るまで時々刻々と表示する。また、現在の再生ポイント以降については、それまでの表示形態とは異なる表示形態にて、予定演奏データを参照して各波形区間の音高や発音長さを表示する。
【００５３】
上述のように、本発明の波形発生装置１の第１実施例においては、第１回目の演奏に基づいた予定演奏データを、その予定演奏データより取得した各波形区間の時間圧伸率情報を含んだ形で、所定の記憶領域（ＲＡＭ１６など）に記憶している。そして、この予定演奏データ（即ち、第１回目の演奏データ）を参照して第２回目の演奏を行うと、発音の不自然さを回避することができる。
【００５４】
次に図１０及び図１１と図７（ｂ）及び図１２のフローチャートとを参照して、本発明の波形発生装置１の第２実施例について説明する。上記第１実施例では、第２回目の演奏を行うと、元波形データの各区間に対し、第１回目の演奏により取得された時間圧伸率情報に基づいて波形データを圧縮伸長させた。これに対し、第２実施例では、第２回目の演奏において、第１回目の演奏を記憶した演奏データの時間圧伸率情報に基づいて波形データを圧縮伸長すると共に、第２回目の演奏の演奏テンポと第１回目の演奏の演奏テンポとの相違を検出すると、その検出した時点で、所定の記憶領域に記憶した演奏データのテンポマップを更新し、更新したテンポマップに応じた新たなテンポに基づいて波形データの時間軸上での圧縮伸長を行う。ここで、テンポマップとは、楽曲の進行とテンポの変化を記述したデータであり、予定演奏データとして記憶されている。
【００５５】
図１０は楽譜データであり、図１０（ａ）は、元の演奏に従う楽譜データであり、図１０（ｂ）は、ユーザが目標とする演奏の楽譜データである。即ち、本実施例において、ユーザは、図１０（ａ）で示される楽譜に従う波形データに対し、図１０（ｂ）に示される楽譜データに従う演奏を行う。
【００５６】
図１１は、実際の演奏データである。演奏データは、ノートオンが順次入力される各楽音番号、ティック単位で表されるノートオン入力時刻（「Ｔｉｍｅ」）と、ノートオンが入力されたノートナンバ（「Ｎｏｔｅ  Ｎｏ．」）、ノートオンからノートオフまでの時間（レガート演奏でない場合）又はノートオンから次のノートオンまでの時間（レガート演奏である場合）（「Ｄｕｒａｔｉｏｎ」）、ベロシティなどから構成される。また、この演奏データは、ＲＡＭ１６内の所定の領域に記憶されており、ノートオン等が入力される毎に順次記憶される。なお、本実施例では、発明の理解を容易にするために、図１１に示される演奏データは、図１０の楽譜に示される音高に対応するノートナンバを誤りなく順次入力した場合について説明する。即ち、図１０の楽譜における各音符の楽音番号と、図１１の各楽音番号はそれぞれ対応している。
【００５７】
図１１（ａ）は、図１０（ａ）に示される楽譜データに従った演奏データであり、所定の記憶領域（例えば、ＲＡＭ１６）に記憶される元演奏データである。この元演奏データ（図１１（ａ））は、元演奏データの押鍵間隔（今回押鍵時刻（Ｔｉｍｅ）と次回押鍵時刻との差）及び押鍵時間（押鍵時刻と離鍵時刻との差（レガート演奏でない場合）又は押鍵時刻と次の押鍵時刻との差（レガート演奏である場合）、即ち、「Ｄｕｒａｔｉｏｎ」の値）が図１０（ａ）に示される楽譜データの原理的な音符長に従う演奏データとした。なお、本実施例では、４分の４拍子の単位音符（１拍）である４分音符を構成するティック（自動演奏装置で時間間隔を表すための最小時間単位）の数は「１２０」である。また、この元の演奏データにはテンポ情報としてテンポマップが付加されており、本実施例では、元の演奏データの開始時点の演奏テンポは「９０」であり、その後、演奏テンポは、「９０」にて一定であるとする。
【００５８】
ここで、先ず、図１１（ａ）に示される元波形データに従った元演奏データを予定演奏データとして、図１０（ｂ）の楽譜に沿った演奏を、第１回目の演奏として、手動演奏にて行う。図１１（ｂ）は、所定の記憶領域（例えば、ＲＡＭ１６）に記憶された、第１回目の演奏の演奏データを示す図である。図１１（ｂ）によれば、各々の押鍵間隔は、楽譜に示される対応する音符の長さにほぼ従うが、手動演奏であるため、楽譜に示される各々の音符の長さよりその音符のそれぞれに対応する、各々の波形区間となる押鍵時間（発音長さ）は、短くなる傾向にある。各小節のティック数（この例の場合、各小節の先頭の楽音の押鍵時刻と、次の小節の先頭の楽音の押鍵時刻との差）は、どれも約「４８０」であり、演奏のテンポは約「９０」のほぼ一定の状態で演奏されていることがわかる。なお、この演奏テンポ情報は、図１１（ｂ）に示される演奏データの一部として記憶される。
【００５９】
次に、図１１（ｃ）は、図１１（ｂ）に示される第１回目の演奏データを予定演奏データとして、その第１回目の演奏に次いで新たに行われた第２回目の演奏の演奏データを示す図である。図１１（ｃ）に示す演奏データによれば、第１小節目（楽音番号１〜５）及び第２小節目（楽音番号６〜１０）では、両小節のティック数は約「４８０」という値が計測されている。しかし、第３小節目（楽音番号１１〜１５）では「３９８」という値が計測され、演奏されたテンポは、第３小節全体として従来のテンポ「９０」より速くなっていることを示す。
【００６０】
この第２実施例において、波形発生装置１では、演奏開始時の演奏テンポとして、第１回目の演奏の演奏データのテンポ、又は、操作子等によりテンポの変更があった場合にはその変更したテンポを設定する。ここで、操作子等によりテンポの変更があった場合、その設定テンポの変化分（増加分又は減少分）により、所定の記憶領域（ＲＡＭ１６など）に記憶している前回の演奏データの、楽曲の進行とテンポの変化を記述したデータであるテンポマップを更新する。テンポマップの更新は、テンポマップにテンポの増加率又は減少率を掛ける、あるいは、テンポの増加量又は減少量を加えること、即ち、演奏データ全体のテンポマップに対して、そのテンポマップに含まれているテンポの移り変わりの様子を残したまま、テンポマップで表されるテンポの変化線を上下に平行移動させることによって行われる。第１回目の演奏と同じ演奏内容の第２回目の演奏時には、第１回目の演奏を記憶した演奏データの圧伸率に基づいて、波形データの各波形区間を圧伸する。更に、後述するテンポ変更処理（図１２）により、第１回目の演奏テンポに対して、第２回目の演奏のテンポに新たなテンポを検出すると、検出時点にて、先に記憶した第１回目の演奏データのテンポマップを更新し、更新した現在のテンポに応じて各音符（各区間）に対する波形データを圧縮又は伸長をする。従って、演奏中のテンポの変化に対応し得る。
【００６１】
図７（ｂ）は、ＣＰＵ１０により実行される第２実施例の押鍵時割り込み処理ルーチンのフローチャートである。この第２実施例の押鍵時割り込み処理ルーチンのプログラムもまた、第１実施例の押鍵割り込み処理ルーチン（図７（ａ））のプログラムと同様に、鍵盤２２の鍵を押鍵されることにより、あるいは、演奏データの押鍵情報を入力されることにより起動される。鍵盤２２の押鍵によって押鍵時割り込み処理ルーチンが起動すると、先ず、新たな押鍵に基づき区間カウンタｎを「１」進め、次の波形区間を指定する（Ｓ１０１）。
【００６２】
Ｓ１０１の処理後、テンポ変更処理（Ｓ１０８）を行う。ここで、図１２を参照して、テンポ変更処理（Ｓ１０８）について説明する。図１２は、ＣＰＵ１０により実行されるテンポ変更処理のフローチャートである。このテンポ変更処理では、先ず、押鍵されたノートナンバに基づいてノート列メモリを更新する（Ｓ３０１）。ここで、このノート列メモリは、ＲＡＭ１６内に構成される図示しないメモリであり、押鍵された順に最新の１０個のノートナンバを、それぞれの押鍵時刻と共に記憶するメモリである。Ｓ３０１の処理において、このノート列メモリに既に１０個のノートナンバが記憶されている場合、最も古い押鍵時刻に対応するノートナンバを削除し、今回押鍵されたノートナンバとその押鍵時刻Ｔ２を記憶する。なお、押鍵時刻Ｔ２は、波形データの先頭から演奏を開始する毎に「０」に初期化される。また、このノート列メモリは、ノートナンバと押鍵時刻Ｔ２とを記憶するだけでなく、上述の図１１に示される演奏データと同様に押鍵時間（Ｄｕｒａｔｉｏｎ）などの情報を含む構成にしてもよい。
【００６３】
Ｓ３０１の処理後、今回の押鍵時刻Ｔ２が、前回、テンポを算出した時刻Ｔ１（Ｓ３０５参照）から４拍以上経過しているか否かを確認する（Ｓ３０２）。なお、Ｓ３０５の処理においてテンポの更新をした時刻Ｔ１は、演奏が開始される毎に「０」に初期化される。Ｓ３０２の処理で確認した結果、今回の押鍵時刻が、時刻Ｔ１（前回にテンポの設定を行った時刻）から４拍以上経過していない、即ち、時間（Ｔ２−Ｔ１）が４拍に相当する時間に到達しない場合（Ｓ３０２：Ｎｏ）、このテンポ変更処理を終了する。
【００６４】
一方、Ｓ３０２の処理で確認した結果、今回の押鍵時刻がＳ３０５の処理によるテンポの算出から４拍以上経過していれば（Ｓ３０２：Ｙｅｓ）、前回演奏データ（第１回目の演奏データ）に対しマッチング判定を行う（Ｓ３０３）。Ｓ３０３の処理後、今回演奏（第２回目の演奏データ）において、時間（Ｔ２−Ｔ１）の間に押鍵されたノートナンバが、前回の演奏データにおけるいずれかの４拍分以上の区間と対応するか否かを判定する（Ｓ３０４）。
【００６５】
ここで、Ｓ３０３の処理で行われるマッチング判定は既に公知である。例えば、特開平９−２９２８８２号公報には、自動伴奏制御方法の一部として、連続して入力される複数の音高について楽譜のデータと一致する位置を検索し、その位置に応じてテンポを算出することにより、楽譜上の表示を追尾することが記載されている。この特開平９−２９２８８２号公報に記載されるマッチング方法によれば、間違って演奏した場合や、楽譜に記載される音符以外に押鍵した場合や、楽譜に記載される音符を意図的に押鍵しなかった場合などを考慮しつつ演奏データと楽譜とのマッチングを行うことができる。
【００６６】
Ｓ３０４の処理において、前回演奏データとのマッチングが取れないと判定された場合には（Ｓ３０４：Ｎｏ）、このテンポ変更処理ルーチンを終了する。一方、Ｓ３０４の処理により、今回演奏データと前回演奏データにおけるいずれかの４拍分以上（即ち、本実施例における１小節分以上）の領域とのマッチングが取れたと判定された場合（Ｓ３０４：Ｙｅｓ）、マッチングのとれた今回演奏データに対し、テンポの算出を行う（Ｓ３０５）。
【００６７】
Ｓ３０５の処理では、今回演奏データにおいて、前回演奏データに対してマッチングのとれた１小節分以上（４拍分以上）の押鍵計測時間（単位：ティック）を求め、その演奏計測時間とマッチングをとるために要した拍数分の理論ティック数（例えば、本実施例では、４拍分の理論ティック数＝「４８０」）に基づいてテンポを算出する。
【００６８】
例えば、図１１（ｃ）に示される今回演奏データ（第２回目の演奏データ）によれば、２小節目（楽音番号６〜１０）の演奏計測時間は「４７９」（＝９６１−４８２）であるので、今回演奏において、２小節目は「９０．２」（＝９０＊４８０／４７９）のテンポで演奏されたと計算される。なお、値「９０」は、本実施例における前回演奏（第１回目の演奏）時の演奏テンポであり、前回演奏データを予定演奏データとして所定の記憶領域（ＲＡＭ１６など）に記憶されている値である。Ｓ３０５の処理において、演奏テンポの算出が実行されたら、現在の押鍵時刻Ｔ２をＴ１として設定する。
【００６９】
Ｓ３０５の処理によりテンポが算出されたら、次いで、今回演奏時の算出されたテンポが現在のテンポを基準とする所定範囲内にあるか否かを確認する（Ｓ３０６）。Ｓ３０６の処理では、算出されたテンポと現在のテンポとの比を取り、その比（算出されたテンポ／現在のテンポ）が所定範囲内にあるか否かを確認する。Ｓ３０６において、例えば、本実施例では、算出されたテンポが現在のテンポに対して０．５〜０．９倍又は１．１倍から１．５倍の範囲にあるか否か、即ち、今回の演奏においてテンポ変化が所定の範囲内であったか否かを確認する。
【００７０】
Ｓ３０６の処理により確認した結果、Ｓ３０５の処理により算出されたテンポが所定範囲内になければ（Ｓ３０６：Ｎｏ）、このテンポ変更処理ルーチンを終了する。一方、Ｓ３０６の処理により確認した結果、Ｓ３０５の処理により算出されたテンポが所定範囲内にある場合（Ｓ３０６：Ｙｅｓ）、演奏テンポの変更があったと判定し、その演奏テンポの変更に基づくテンポマップの更新を行い、現在の演奏テンポを更新し（Ｓ３０７）、この演奏テンポ変更処理（Ｓ１０８）を終了する。
【００７１】
ここで、Ｓ３０７の処理では、現在のテンポから新たなテンポへの演奏テンポの変化分（増加分又は減少分）により、所定の記憶領域（ＲＡＭ１６など）に記憶されている前回の演奏データのテンポマップを更新し、現在の演奏テンポが更新される。なお、「演奏データのテンポマップの更新」とは、演奏データのテンポマップにテンポの増加率又は減少率を掛ける、あるいは、テンポの増加量又は減少量を加えること、即ち、演奏データ全体のテンポマップに対して、そのテンポマップに含まれているテンポの移り変わりの様子を残したまま、テンポマップで表されるテンポの変化線を上下に平行移動させることを意味する。また、この演奏データのテンポマップの更新は、上記のように更新されたテンポマップに対応するティックを発生するようにクロック信号発生回路（図示せず）の周期を制御することによって行われる。
【００７２】
本実施例では、第２回目の演奏時における１小節目（楽音番号１〜５）及び２小節目（楽音番号６〜１０）のテンポは、Ｓ３０５の処理により、それぞれ、「９０」及び「９０．２」であると算出される。よって、Ｓ３０６の処理によれば、第１小節目及び第２小節目についてはテンポの変化はなかったと判断される。
【００７３】
一方、Ｓ３０５の処理によれば、第２回目の演奏時における３小節目（楽音番号１１〜１５）のテンポが「１０９」と算出される（図１１（ｃ）参照）。このテンポは第１回目の演奏テンポの「１．２」倍であるので、Ｓ３０６の処理においてテンポが変化したと判断される。そして、Ｓ３０７の処理により、前回演奏を記憶した予定演奏データのテンポマップにおける４小節目以降（楽音番号１６以降）の部分を更新し、演奏テンポをＳ３０５の処理により算出された新たなテンポ「１０９」に変更し、その新たなテンポに基づいて波形データを圧縮する。
【００７４】
４小節目の波形データに対してテンポ「１０９」に同期するように圧縮したので、３小節目のテンポと変わりのないテンポで演奏された４小節目（楽音番号１６〜２０）のティック数は、理論的な４拍のティック数に対して誤差の少ない「４７９」として計測された。従って、第２回目の演奏中に、第１回目の演奏とは異なる演奏テンポとなった第３小節目では、新たなテンポと第１回目の演奏データとの誤差が大きいために、違和感のある音を発音したが、Ｓ３０７の処理により４小節目の演奏テンポを変更し、そのテンポに基づいて時間圧伸率情報を補正するため、４小節目における楽音の違和感はほとんどなくなった。
【００７５】
図７（ｂ）に戻って説明する。テンポ変更処理（Ｓ１０８）の終了後、Ｓ１０８の処理において変更された現在のテンポに基づいて、区間カウンタｎに対応する区間に対して設定するための時間圧伸率情報を算出する（Ｓ１０９）。Ｓ１０９の処理により算出された時間圧伸率情報と鍵盤２２により入力される音高情報及びベロシティ値とをＤＳＰ２０へ出力し（Ｓ１０２）、ＤＳＰ２０に対し発音開始を指示する（Ｓ１０３）。
【００７６】
Ｓ１０９及びＳ１０２〜Ｓ１０３の処理により、現在のテンポに応じた時間圧伸率情報が新たに取得され、その新たな時間圧伸率情報がＤＳＰへ出力され、その新たな時間圧伸率情報に応じた発音が開始される。
【００７７】
Ｓ１０３の処理後、区間カウンタｎが「１」であるか否かを確認し（Ｓ１０４）、区間カウンタｎが「１」であれば（Ｓ１０４：Ｙｅｓ）、この押鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチン（図示せず）へリターンする。
【００７８】
一方、Ｓ１０４の処理により確認した結果、区間カウンタｎが「１」でなければ（Ｓ１０４：Ｎｏ）、レガート演奏であるか否かを確認する（Ｓ１０５）。Ｓ１０５の処理により確認した結果、レガート演奏でなければ（Ｓ１０５：Ｎｏ）、この押鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチン（図示せず）へリターンする。
【００７９】
一方、Ｓ１０５の処理により確認した結果、レガート演奏であれば（Ｓ１０５：Ｙｅｓ）、前回の押鍵から今回の押鍵までの時間を求めて新たな時間圧伸率情報を演算し、演算により得られた時間圧伸率情報と、今回の演奏に関するテンポマップを含む演奏データとを所定の記憶領域（例えば、ＲＡＭ１６）に記憶する（Ｓ１０６）。ここで、Ｓ１０６の処理において演算される新たな時間圧伸率情報は、次回に演奏する際に音符毎の波形データを再生する際に参照される時間圧伸率情報である。Ｓ１０６の処理後、前回の押鍵により発音していた波形区間の音を消音し（Ｓ１０７）、この押鍵時割り込み処理ルーチンを終了し、波形発生装置１のメイン処理ルーチン（図示せず）にリターンする。
【００８０】
第２実施例において離鍵が確認された場合、第１実施例と同様に図８の離鍵時割り込み処理ルーチンが起動され、その離鍵時割り込み処理ルーチンに従う処理が実行される。ここで、離鍵時割り込み処理ルーチンにおけるＳ２０３の処理において演算される新たな時間圧伸率情報は、次回に演奏する際に、音符毎（各区間毎）の波形データを再生する際に参照される時間圧伸率情報である。
【００８１】
なお、上記第２実施例では、マッチングを得た４拍分あるいはそれ以上の拍数分の楽音の計測時間を基にＳ３０５の処理で第２回目の演奏テンポを算出した後、Ｓ３０６の処理により、そのテンポ値が所定範囲内にあるか否かを確認したが、第２回目の演奏テンポを求めることなく、マッチングを得た４拍分あるいはそれ以上の拍数分の楽音を計測した時間に相当するティック数とその拍数分に該当する理論的ティック数との比が所定範囲内にあるか否かを確認してもよい。
【００８２】
また、上記第２実施例におけるテンポ変更処理（図１２）のＳ３０３の処理では、現在演奏中の演奏データと前回の演奏データとをマッチング判定させるように構成したが、マッチングさせる対象は前回の演奏データに限られず、前々回の演奏データなどの過去の演奏データ全てを対象とするようにしてもよい。更に、マッチングさせる対象を、同じ楽曲の演奏データに限ることなく、違う楽曲の演奏データを対象とするようにしてもよい。また、この場合、マッチング対象とされる演奏データは、波形発生装置１に備えられている記憶手段（例えば、ＲＡＭ１６）に記憶されたものに限られず、例えば、ネットワーク上に存在する他の記憶媒体であってもよい。
【００８３】
また、上記第２実施例では、発明の理解を容易にするために、第１回目の演奏のテンポが一律「９０」であるとして説明したが、種々のテンポの演奏区間を含むような演奏データであってもよい。
【００８４】
上述のように、本発明の波形発生装置１の第２実施例においては、第２回目の演奏の途中で、第１回目の演奏と異なるテンポでの演奏が、所定区間（上記第２実施例では、４拍（１小節）分）経過後、その所定区間内の演奏データのマッチングが取れたことを検出すると共に、新たなテンポへの変化が所定範囲内の変化であると確認されたら、新たなテンポに従うように、記憶していた前回演奏データのテンポマップを更新し、新たなテンポに基づいた時間圧伸率情報が取得される。従って、テンポマップを更新した時点から、新たなテンポにより取得された時間圧伸率情報に基づいて、新たなテンポに同期した波形を生成する。これにより、演奏途中でのテンポ変化に対応し得、ユーザに感じさせる違和感を低減することができる。
【００８５】
次に、図１３を参照して、本発明の波形発生装置１の第３実施例について説明する。上記第１及び第２実施例では、元波形データの各発音区間（波形区間）の発音長さを時間軸上で圧縮伸長させた。これに対し、第３実施例では、元波形データの変化している音高（ピッチ）を指示される音高に基づいて変化させる。即ち、第３実施例では、音楽のポルタメント又はスラーと呼ばれる、発音する音高を徐々に変化させる奏法に対応し得る波形発生装置１について説明する。なお、前記した第１及び第２実施例と同一の部分には同一の符号を付して、その説明は省略する。
【００８６】
図１３は、元波形データのピッチ変化を滑らかに移行するように処理する場合のポルタメント（又はスラー）の音高変化を説明する図である。図１３（ａ）は、元波形データの音高変化の様子を模式的に示す図であり、標準ピッチ「Ｃ」の第１波形区間から標準ピッチ「Ｄ」の第２波形区間に向かう場合に、第１波形区間におけるポルタメント区間において、標準ピッチが「Ｃ」から「Ｄ」に向かって徐々に音高が高くなる様子を示している。
【００８７】
ここで、「標準ピッチ」とは、その区間の代表となるピッチを意味する。ある区間をあるピッチ（音高）で発音指示された場合、発音指示された区間において、その区間に元々含まれている自然なピッチの揺らぎを残しつつ、発音指示されたピッチでの発音が行われる。
【００８８】
図１３（ｂ）は、鍵盤２２の押鍵又は離鍵操作により、図１３（ａ）に示される元波形データに対して第１回目の演奏を行った場合の音高変化を示す図である。図１３（ｂ）に示すように、本実施例の第１回目の演奏では、標準ピッチが「Ｃ」から「Ｄ」へ向かうポルタメント演奏を表す元波形データに対し、第１波形区間に対して「Ｃ」、第２波形区間に対して「Ｂ♭」が押鍵される。この場合、「Ｃ」の押鍵により、第１波形区間では音高「Ｃ」で発音を開始し、ポルタメント区間において、音高は「Ｄ」に向かって徐々に変化するが、「Ｂ♭」の押鍵により、第２波形区間では「Ｂ♭」の音高で発音を開始する。従って、第１回目の演奏は非常に不自然な感じを与えるものとなる。
【００８９】
図１３（ｃ）は、第１回目の演奏データに基づく予定演奏データを参照して、第２回目の演奏を行った場合の音高変化を示す図である。図１３（ｃ）に示すように、第２回目の演奏では、第１回目の演奏と同じ演奏が行われ、予定演奏データとして記憶した第１回目の演奏データによりポルタメント区間の音高変化を補正する。即ち、予定演奏データでは、「Ｃ」の次に「Ｂ♭」を指定（押鍵）しているので、第２回目の演奏時には、第１波形区間のポルタメント区間において、音高を「Ｃ」から「Ｂ♭」へ徐々に変化するように制御する。従って、第２回目の演奏では、自然なポルタメント演奏を行うことができる。
【００９０】
上述のように、本発明の波形発生装置１の第３実施例においては、元波形データにおける各波形区間に対して、第１回目の演奏に基づいて音高情報を取得する。第１回目の演奏が目標とする演奏であれば、第２回目の演奏時の発音は、第１回目の演奏に基づいて取得された音高情報に従って発音されるために、ポルタメント（又はスラー）演奏時における各波形区間の音高変化の不自然さを回避することができる。
【００９１】
次に、図１４および図１５を参照して、本発明の波形発生装置１の第４実施例について説明する。上記第３実施例では、元波形データの変化している音高（ピッチ）を指示される音高に基づいて変化させた。これに対し、第４実施例では、元波形データの変化している音量を指示される音量に基づいて変化させる。なお、前記した第３実施例と同一の部分には同一の符号を付して、その説明は省略する。
【００９２】
図１４は、持続音系の楽音でポルタメント演奏（又は、スラー演奏）を行った場合の音量変化を説明する図である。図１４（ａ）は、元波形データの音量変化の様子を模式的に示す図である。また、図１４は、元波形データと、元波形データの各波形区間に対応した演奏データとを合わせて示した図である。第１波形区間の発音に対応した押鍵１と、第２波形区間の発音に対応した押鍵２とは、演奏データの音量指示となる各々の押鍵速度は、ほぼ同じとなっている。そして、第２波形区間の後半、音量が徐々に変化する区間を経て、第３波形区間の音量に到達している。従って、第３波形区間に対応した押鍵３の押鍵速度は、第１又は第２の押鍵速度より強く（速く）なっている。
【００９３】
図１４（ｂ）は、鍵盤２２の押鍵又は離鍵操作により、図１４（ａ）に示される元波形データと元演奏データに対して第１回目の演奏を行った場合の音量変化を示す図である。図１４（ｂ）に示すように、本実施例の第１回目の演奏では、押鍵１及び押鍵２においては、元演奏データと同等の速度で押鍵されたが、押鍵３において、元演奏データの押鍵速度より強く（速く）押鍵された。この場合、第１波形区間及び第２波形区間では元波形データとほぼ同じ音量で発音を開始し、音量変化区間では、元演奏データにおける音量変化区間の音量変化に従う音量変化、即ち、元演奏データの押鍵３の押鍵速度に従う音量へ徐々に向かう音量変化を行う（実線１５１）。ここで、第１回目の演奏において、元波形データの押鍵３より強い（速い）押鍵速度の押鍵３があると、第３波形区間はその押鍵３に応じた音量で発音されるため、非常に不自然な感じを与える演奏となる。
【００９４】
図１４（ｃ）は、第１回目の演奏データに基づく予定演奏データを参照して、第２回目の演奏を行った場合の音量変化を示す図である。図１４（ｃ）に示すように、第１回目の演奏と同じ演奏内容の第２回目の演奏では、第１回目の演奏データを記憶した予定演奏データに基づいて、音量変化区間の音量変化を破線１５２から実線１５３へ補正する。即ち、押鍵３の押鍵速度情報を含んだ予定演奏データにより、第２回目の演奏時には、押鍵２に応じた音量から次の押鍵３に応じた音量へ徐々に変化するように制御する（実線１５３）。従って、第２回目の演奏では、自然な音量変化をする演奏を行うことができる。
【００９５】
また、図１５は、減衰音系の楽音でポルタメント演奏（又は、スラー演奏）を行った場合の音量変化を説明する図である。図１５（ａ）は、元波形データの音量変化の様子を模式的に示す図である。図１５（ａ）によれば、スラー区間である第２波形区間の後半から音量が徐々に変化する区間を経て、第３波形区間の音量となっている。従って、第３波形区間に対応した押鍵３の押鍵速度は、第１又は第２の押鍵速度より強く（速く）なっている。
【００９６】
図１５（ｂ）は、予定演奏データに基づいてスラー区間の音量変化を行った場合を示す図である。第１回目の演奏では、押鍵３において、元演奏データにおける押鍵３の押鍵速度よりも強く（速く）押鍵されたので、持続音系の場合（図１４（ｂ））と同様に、音量変化は第２波形区間の音量から元演奏データの押鍵３の音量へ向かう変化となるために（破線１６１）、不自然な感じを与える演奏になる。しかし、第２回目の演奏では、図１５（ｂ）に示すように、第１回目の演奏を記憶した予定演奏データに基づいて、押鍵２から押鍵３への音量変化を、元波形データに従う破線１６１から実線１６２になるように補正する。従って、第２回目の演奏では、自然な音量変化をする演奏を行うことができる。
【００９７】
上述のように、本発明の波形発生装置１の第４実施例においては、元波形データにおける各波形区間に対して、第１回目の演奏に基づいて音量情報を取得する。第１回目の演奏が目標とする演奏であれば、第２回目の演奏時の発音は、第１回目の演奏に基づいて取得された音量情報に従って発音されるために、ポルタメント（又はスラー）演奏時おける各波形区間の音量変化の不自然さを回避することができる。
【００９８】
なお、請求項１記載の演奏データ検出手段としては、押鍵時割り込み処理ルーチン（図７（ａ）、図７（ｂ））におけるＳ１０６の処理と離鍵時割り込み処理ルーチン（図８）におけるＳ２０３の処理が該当し、演奏データ更新手段としては、テンポ変更処理（図１２）におけるＳ３０７の処理が該当する。また、請求項２記載のテンポ検出手段としては、テンポ変更処理（図１２）におけるＳ３０５の処理が該当する。
【００９９】
以上、実施例に基づき本発明を説明したが、本発明は上記実施例に何ら限定される物ではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変形が可能であることは容易に推察できるものである。
【０１００】
例えば、上記実施例では、波形発生装置１は、記憶手段（ＲＡＭ１６）に記憶される時間圧伸率情報を用いるように構成したが、記憶手段に記憶される各押鍵（ノートオン）や各離鍵（ノートオフ）の時刻情報から時間圧伸率情報を算出して用いるように構成してもよい。
【０１０１】
また、上記実施例では、レガート奏法の時を除いて、押鍵から離鍵までの発音長さに基づいて、各波形区間を時間軸上で圧縮又は伸長して再生したが、常に、押鍵から次の押鍵までの時間長さに基づいて各波形区間を圧伸して再生するように構成してもよい。
【０１０２】
また、上記実施例では、説明を簡略化して理解を容易にするために、複数の区間に分割された一連の波形データの詳細な構成についての説明を省略した。この「複数の区間に分割された一連の波形データ」は、例えば、各記憶単位毎に読出指定可能な記憶手段に記憶される波形データである。その場合、波形データを区間毎に区切るためのマーク情報が付加されるよう構成できる。又は、各記憶単位毎に読み出し指定可能な複数の記憶単位に波形データを区間毎に分割してそれぞれ記憶することによって、区間を区切るためのマーク情報を付加せずに構成してもよい。
【０１０３】
また、上記第２実施例において、４拍以上の演奏に対してマッチングを行い、１小節分を越える演奏区間のマッチングが取れた場合にテンポを算出するように構成したが、これに変えて、押鍵毎にマッチングを行い、マッチングが取れる毎に前回のマッチング取得時刻からの経過時間を元にテンポを算出するように構成してもよい。更に、上記第２実施例では、楽譜における小節線間に対応する１小節分のテンポ変化を検出するよう構成したが、任意のタイミングからの１小節分のテンポ変化を検出するよう構成してもよい。
【０１０４】
また、上記第２実施例において、１小節（４拍）を越える演奏区間についてマッチングが取れる毎に算出されるテンポが所定範囲内であれば、予定演奏データのテンポマップを更新するよう構成したが、これに代えて、連続する複数の音符や小節（又は、小節に代わる単位区間）毎に算出されるテンポを平均化し、その値が所定範囲内であった場合に、予定演奏データのテンポマップを更新するように構成してもよい。
【０１０５】
また、上記第２実施例では、１小節（４拍）を越える演奏区間についてマッチングが取れる毎にテンポを算出し、その値をそのまま用いて予定演奏データのテンポマップを更新するように構成したが、これに代えて、算出されたテンポに対し、更にフィルタリング処理を行うように構成してもよい。これにより、マッチングを取る最小範囲（上記実施例では、小節）の間のテンポ変化を平滑化することができる。
【０１０６】
また、算出されたテンポが所定範囲を越えて大きく変化した場合には、テンポマップを更新しないように構成したが、そのような大きなテンポ変化が数小節（又は、小節に変わる単位区間が数区間）続いた場合はテンポマップを更新するように構成してもよい。あるいは、１小節を越える演奏区間についてマッチングが取れた時に算出されるテンポが所定範囲内であれば、算出されたテンポで予定演奏データのテンポマップを更新するように構成したが、テンポマップを更新する場合に、その算出されたテンポが最終的なテンポになるように、その最終的なテンポへ向かって現在のテンポから徐々に変化するようにテンポマップを更新していってもよい。
【０１０７】
また、上記第２実施例では、テンポマップで表されるテンポの変化線を上下に平行移動することによってテンポマップを更新するように構成した。これに代えて、テンポマップで表されるテンポの変化線を上下に平行移動するだけでなく、平行移動後のテンポの変化線において、所定の第１閾値を越える領域では、平行移動後のテンポの変化線の最大値と最小値との差がより拡大（又は縮小）されるように平行移動後のテンポの変更線を補正し、一方で、所定の第２閾値（第２閾値＜第１閾値）を下回る領域においても、平行移動後のテンポの変化線の最大値と最小値との差がより拡大（又は縮小）されるように平行移動後のテンポの変化線を補正するように構成してもよい。
【０１０８】
また、上記第２実施例において、演奏開始前のタップテンポ操作により、演奏開始時点のテンポ値が決定されるように構成してもよい。
【０１０９】
また、上記第２実施例において、第１回目の演奏データに基づく自動演奏（第２回目の演奏）において、演奏開始の指示後、タップテンポ操作によりテンポをとり、そのテンポ変化を検出させるように構成してもよい。
【０１１０】
また、上記実施例では、鍵盤２２における音高に応じた鍵を楽曲のリズムに合わせて演奏するよう構成したが、鍵盤２２のうちのいずれかの鍵が楽曲のリズムに合わせて押鍵されると、次の発音態様を予定して記憶した予定演奏データの音高情報に応じて各波形区間を発音するように構成してもよい。この場合、上記実施例と同様に、鍵盤２２の押鍵時間と押鍵強さの各々、又は、その組み合わせに応じて、波形データの各波形区間を圧縮伸長して発音区間の発音長さを変化させるように、又は、音量を変化させるように構成すればよい。更に、楽曲のテンポを変化させるように押鍵された場合に、テンポ変化に応じて波形データの圧縮伸長を行うように構成してもよい。
【０１１１】
また、上記実施例において、複数区間に分割された波形データを、予定演奏データに基づいた完全な手動演奏で再生して発音するか、あるいは、予定演奏データをそのまま自動演奏により再生するように構成したが、ユーザが操作子などを操作することにより、完全な手動演奏、上記のような任意の鍵にてリズムだけ入力する演奏、同じく上記のような演奏中のタップテンポでテンポだけ入力する演奏、及び自動演奏等の複数の演奏方法から、任意の演奏方法を選択し、任意に切り換えるように構成してもよい。
【０１１２】
また、上記第２実施例において、押鍵の強弱又は音量に応じてテンポ制御するように構成してもよい。
【０１１３】
また、上記第２実施例において、１拍における前半の半拍と後半の半拍との時間的割合を所定区間を越える範囲において観測し、観測された時間的割合がスイング割合に対応すると判断されると、現在のスイング割合に応じて更新した予定演奏データに基づいて、波形データを圧縮伸長するように構成してもよい。
【０１１４】
また、上記第２実施例と同様の手法にて、移調などの調性変化をするよう構成してもよい。
【０１１５】
また、上記第１から第４実施例と上記変形例を適宜組み合わせるように構成してもよい。
【図面の簡単な説明】
【０１１６】
【図１】特開平１０−２６０６８５号公報に開示されるオーディオ・フレーズ音源の構成に概念的に示すブロック図である。
【図２】本発明の波形発生装置の構成を概略的に示したブロック図である。
【図３】元波形データとその元波形データを時間圧伸することにより生成される目標波形データとについて概念的に説明する図であり、図３（ａ）は、元波形データとそれに対応した元演奏データとを概念的に示した図であり、図３（ｂ）は、元波形データを時間圧伸することにより生成される目標波形データによる発音の態様を概念的に示した図である。
【図４】本発明の波形発生装置の第１実施例の動作を説明する図であり、（ａ）は、元波形データによる発音の態様を示す図であり、（ｂ）は、第１回目の演奏に基づく発音の態様を示す図であり、（ｃ）は、予定演奏データに基づいて行われるの自動演奏による発音の態様を示す図であり、（ｄ）は、予定演奏データに基づいて行われる手動演奏による発音の態様を示す図である。
【図５】予定演奏データより微細に早く波形区間を進めるような手動演奏が行われた場合の誤差の処理の一例を説明する図であり、（ａ）は、次の波形区間の発音指示が入力された時刻から予定演奏データにおける次の波形区間の先頭の開始予定時刻までの時間がジャンプ限度区間を越える場合の誤差の処理の一例を説明する図であり、（ｂ）は、次の波形区間の発音指示が入力された時刻から予定演奏データにおける次の波形区間の先頭の開始予定時刻までの時間がジャンプ限度区間以下である場合の誤差の処理の一例を説明する図である。
【図６】予定演奏データより微細に遅く波形区間を進めるような手動演奏が行われた場合の誤差の処理の一例を説明する図であり、（ａ）は、元波形データにおいて、予定演奏データにおける現在発音中の波形区間の終了点近くに所定の長さのループ区間を設けた場合の状態を示す図であり、（ｂ）は、予定演奏データより波形区間を進める手動演奏が遅くなった場合に、現在演奏中の波形区間の再生時間が、予定演奏データに予定された再生時間を越えて、所定時間以上次の波形区間の発音指示されない場合の一例を示す図であり、（ｃ）は、予定演奏データより遅く波形区間を進める手動演奏を行った場合に、現在演奏中の波形区間の再生時間が、予定演奏データに予定された再生時間を越えて、所定時間以内に次の波形区間の発音指示された場合の処理の一例を示す図である。
【図７】ＣＰＵにより実行される押鍵時割り込み処理ルーチンのフローチャートであり、（ａ）は、第１実施例の押鍵時割り込み処理ルーチンであり、（ｂ）は、第２実施例の押鍵時割り込み処理ルーチンである。
【図８】ＣＰＵにより実行される離鍵時割り込み処理ルーチンのフローチャートである。
【図９】自動演奏される演奏データを入力する間、又は、鍵盤の押鍵又は離鍵操作に基づいて演奏データを入力する間、表示装置において表示される表示内容を示す図である。
【図１０】演奏データを楽譜で表した図であり、（ａ）は、元の演奏データを表す楽譜であり、（ｂ）は、目標とする演奏データを表す楽譜である。
【図１１】演奏データを模式的に表す図であり、（ａ）は、図１０（ａ）に示される楽譜に従う元の演奏データであり、（ｂ）は、所定の記憶領域（例えば、ＲＡＭ１６）に記憶された、第１回目の演奏の演奏データを示す図であり、（ｃ）は、（ｂ）の第１回目の演奏データを予定演奏データとして、その第１回目の演奏に次いで新たに行われた第２回目の演奏の演奏データを示す図である。
【図１２】ＣＰＵにより実行されるテンポ変更処理ルーチンのフローチャートである。
【図１３】元波形データのピッチ変化を滑らかに移行するように処理する場合のポルタメント（又はスラー）の音高変化の一例を説明する図であり、（ａ）は、元波形データの音高変化の様子を模式的に示す図であり、（ｂ）は、元波形データに対して第１回目の演奏を行った場合の音高変化を示す図であり、（ｃ）は、第１回目の演奏データに基づく予定演奏データを参照して、第２回目の演奏を行った場合の音高変化を示す図である。
【図１４】持続音系の楽音でポルタメント演奏（又は、スラー演奏）を行った場合の音量変化を説明する図であり、（ａ）は、元波形データの音量変化の様子を模式的に示す図であり、（ｂ）は、元波形データに対して第１回目の演奏を行った場合の音量変化を示す図であり、（ｃ）は、第１回目の演奏データに基づく予定演奏データを参照して、第２回目の演奏を行った場合の音量変化を示す図である。
【図１５】減衰音系の楽音でポルタメント演奏（又は、スラー演奏）を行った場合の音量変化を説明する図であり、（ａ）は、元波形データの音量変化の様子を模式的に示す図であり、（ｂ）は、第１回目の演奏データに基づく予定演奏データを参照して、第２回目の演奏を行った場合の音量変化を示す図である。
【符号の説明】
【０１１７】
１                        波形発生装置
１０                      ＣＰＵ
１４                      ＲＯＭ
１６                      ＲＡＭ（波形データ記憶手段、演奏データ記憶手段）
２０                      ＤＳＰ（波形生成手段）
２８                      演奏データ入力手段
【図１】
2005121876.tif 000003
【図２】
2005121876.tif 000004
【図３】
2005121876.tif 000005
【図４】
2005121876.tif 000006
【図５】
2005121876.tif 000007
【図６】
2005121876.tif 000008
【図７】
2005121876.tif 000009
【図８】
2005121876.tif 000010
【図９】
2005121876.tif 000011
【図１０】
2005121876.tif 000012
【図１１】
2005121876.tif 000013
【図１２】
2005121876.tif 000014
【図１３】
2005121876.tif 000015
【図１４】
2005121876.tif 000016
【図１５】
2005121876.tif 000017