(57)【要約】      （修正有）【課題】鍵盤等の操作子の操作に応じて歌声を再生する電子楽器、電子楽器の制御方法、及びプログラムに関し、演奏家に指定される各音高に基づいて学習された歌い手の歌声に応じた歌声で良好に歌う電子楽器を提供する。【解決手段】電子鍵盤楽器の制御システムにおいて、音声合成ＬＳＩは、演奏家による或る楽器による各学習用のフレーズの演奏をモデル化したスペクトルデータ６１８及び音源データ６１９を出力する学習済み音響モデル６０６を記憶しているメモリとを含み、ユーザによるフレーズ演奏として操作された操作子に対応付けられている音高列を含む音高データ２１５を、学習済み音響モデル６０６に入力し、楽器データの入力に応じて学習済み音響モデル６０６が出力した、スペクトルデータ６１８と、音源データ６１９と、に基づいて、或る演奏家による或る楽器のフレーズ演奏を推論したを示す推論楽器音を楽器音声出力データ２１７として出力する。【選択図】図６
2020190676.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる音高データにそれぞれ対応する複数の操作子と、
任意の音高データを入力することにより、或る演奏家による或る楽器演奏の音響特徴量を示す音響特徴量データを出力する学習済み音響モデルを記憶しているメモリと、
少なくとも１つのプロセッサと、
を含み、
前記少なくとも１つのプロセッサは、
前記複数の操作子のなかのいずれかの操作子へのユーザ操作に応じて、前記いずれかの操作子に対応する音高データを前記学習済み音響モデルに入力し、
入力に応じて前記学習済み音響モデルが出力した前記音響特徴量データに基づいて前記或る演奏家による前記或る楽器演奏を推論した楽器音声出力データを出力する、
電子楽器。
【請求項２】
請求項１に記載の電子楽器において、
前記学習済み音響モデルは、
或る演奏家による或る楽器の演奏結果を示す学習用楽器音声データと、前記学習用楽器音声データに応じた学習用音高データを含む学習用楽譜データと、を機械学習することにより得られた学習済み音響モデルである。
【請求項３】
請求項１または２に記載の電子楽器において、
前記楽器音声出力データは、ユーザが演奏していない演奏技法に応じた音を含む演奏表現音データを含む。
【請求項４】
請求項３に記載の電子楽器において、
前記演奏技法は、スラーを含むアーティキュレーションの演奏技法を含む。
【請求項５】
請求項１から４のいずれかに記載の電子楽器において、
前記少なくとも１つのプロセッサは、
第１ユーザ操作に応じて夫々タイミングが異なる複数の音高データのフレーズ第１データを前記学習済み音響モデルに第１入力し、
前記第１入力に応じて前記学習済み音響モデルが出力した音響特徴量データに基づいて前記或る演奏家による前記或る楽器のフレーズ第１演奏を推論した第１フレーズ楽器音声出力データを繰り返し第１出力し、
繰り返し出力しているときに、第２ユーザ操作に応じて夫々タイミングが異なる複数の音高データのフレーズ第２データを前記学習済み音響モデルに第２入力し、
前記第２入力に応じて前記学習済み音響モデルが出力した音響特徴量データに基づいて前記或る演奏家による前記或る楽器のフレーズ第２演奏を推論した第２フレーズ楽器音声出力データを、前記第１フレーズ楽器音声出力データの前記第１出力に重ね合わせて第２出力する。
【請求項６】
請求項５に記載の電子楽器において、
前記少なくとも１つのプロセッサは、
前記第１出力による前記第２フレーズ楽器音声出力データに含まれる各音それぞれの出力タイミングを、前記第１フレーズ楽器音声出力データの各音それぞれの出力タイミングに合うように、前記第２出力を調整する。
【請求項７】
請求項１から６のいずれかに記載の電子楽器において、
前記音響特徴量データは、前記或る楽器の共鳴部をモデル化したスペクトルデータと、前記或る楽器の振動源をモデル化した音源データと、を含み、
前記少なくとも１つのプロセッサは、
前記スペクトルデータと、前記音源データと、に基づいて、前記楽器音声出力データを出力する。
【請求項８】
請求項１から７のいずれかにに記載の電子楽器において、
前記学習済み音響モデルは、少なくともディープニューラルネットワーク及び隠れマルコフモデルのいずれかにより機械学習されている。
【請求項９】
互いに異なる音高データにそれぞれ対応する複数の操作子と、
任意の音高データを入力することにより、或る演奏家による或る楽器演奏の音響特徴量を示す音響特徴量データを出力する学習済み音響モデルを記憶しているメモリと、
を備える電子楽器に、
前記複数の操作子のなかのいずれかの操作子へのユーザ操作に応じて、前記いずれかの操作子に対応する音高データを前記学習済み音響モデルに入力させ、
入力に応じて前記学習済み音響モデルが出力した前記音響特徴量データに基づいて前記或る演奏家による前記或る楽器演奏を推論した楽器音声出力データを出力させる、方法。
【請求項１０】
互いに異なる音高データにそれぞれ対応する複数の操作子と、
任意の音高データを入力することにより、或る演奏家による或る楽器演奏の音響特徴量を示す音響特徴量データを出力する学習済み音響モデルを記憶しているメモリと、
を備える電子楽器に、
前記複数の操作子のなかのいずれかの操作子へのユーザ操作に応じて、前記いずれかの操作子に対応する音高データを前記学習済み音響モデルに入力させ、
入力に応じて前記学習済み音響モデルが出力した前記音響特徴量データに基づいて前記或る演奏家による前記或る楽器演奏を推論した楽器音声出力データを出力させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵盤等の操作子の操作に応じて楽器音声を再生する電子楽器、電子楽器の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
電子楽器の普及により、ユーザは、様々な楽器音で演奏を楽しむことができるようになった。例えば、初心者のユーザでも、光る鍵盤を追って押鍵を行ったり、或いは、ディスプレイに表示される演奏の操作ガイドを追って演奏を行ったりすることで、手軽に楽曲の演奏を楽しむことができる。ここで、ユーザが演奏する楽音の音高、音長、発音タイミング、拍の強弱などは、ユーザの演奏スキルに任されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−０５０２８７
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特にユーザが初心者であるような場合、様々な楽曲のフレーズを楽器演奏するときに、ユーザはなんとか楽譜の各音符の音高は追うことはできる。しかしながら、各楽器のプロフェッショナルの演奏家が演奏するような、楽器の種類毎に特有な各フレーズ内の各音符の発音タイミング、発音長、拍の強弱などの微妙な演奏は行うことが難しい。
【０００５】
本発明の目的は、ユーザによる演奏操作子への操作に応じて、まるでプロの演奏家により演奏操作されたかのような音を発音する電子楽器を提供することである。
【課題を解決するための手段】
【０００６】
態様の一例の電子楽器では、互いに異なる音高データにそれぞれ対応する複数の操作子と、任意の音高データを入力することにより、或る演奏家による或る楽器演奏の音響特徴量を示す音響特徴量データを出力する学習済み音響モデルを記憶しているメモリと、少なくとも１つのプロセッサと、を含み、少なくとも１つのプロセッサは、複数の操作子のなかのいずれかの操作子へのユーザ操作に応じて、いずれかの操作子に対応する音高データを学習済み音響モデルに入力し、入力に応じて学習済み音響モデルが出力した音響特徴量データに基づいて或る演奏家による或る楽器演奏を推論した楽器音声出力データを出力する。
【発明の効果】
【０００７】
本発明によれば、或る演奏家の演奏を学習した学習済みモデルを搭載することにより、ユーザによる演奏であっても、まるで前記或る演奏家の演奏であるかのように発音する電子楽器を提供できる。
【図面の簡単な説明】
【０００８】
【図１】電子鍵盤楽器の一実施形態の外観例を示す図である。
【図２】電子鍵盤楽器の制御システムの一実施形態のハードウェア構成例を示すブロック図である。
【図３】ルーパＬＳＩの構成例を示すブロックズである。
【図４】ループ録音／再生処理の第１の実施形態の動作説明図である。
【図５】クォンタイズ処理の動作説明図である。
【図６】音声学習部及び音声合成部の構成例を示すブロック図である。
【図７】統計的音声合成処理の第１の実施例の説明図である。
【図８】統計的音声合成処理の第２の実施例の説明図である。
【図９】ループ録音／再生処理の第２の実施形態における電子楽器の制御処理例を示すメインフローチャートである。
【図１０】初期化処理及びテンポ変更処理の詳細例を示すフローチャートである。
【図１１】スイッチ処理の詳細例を示すフローチャートである。
【図１２】ＴｉｃｋＴｉｍｅ割込み処理の詳細例を示すフローチャートである。
【図１３】ペダル制御処理の詳細例を示すフローチャートである。
【図１４】ルーパ制御処理の詳細例を示すフローチャート（その１）である。
【図１５】ルーパ制御処理の詳細例を示すフローチャート（その２）である。
【図１６】ループ録音／再生処理の第２の実施形態の動作説明図（その１）である。
【図１７】ループ録音／再生処理の第２の実施形態の動作説明図（その２）である。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
【００１０】
図１は、電子鍵盤楽器の一実施形態１００の外観例を示す図である。電子鍵盤楽器１００は、演奏操作子としての複数の鍵からなる鍵盤１０１と、音量の指定、ループ録音のテンポ設定等の各種設定を指示する第１のスイッチパネル１０２と、電子鍵盤楽器１００の音源の音色や音声合成される楽器音声の楽器種類の選択等を行う第２のスイッチパネル１０３と、各種設定データを表示するＬＣＤ１０４（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）等を備える。電子鍵盤楽器１００には、ループ録音や再生の指示を行うための足踏み式のペダル１０５がケーブルで接続される。また、電子鍵盤楽器１００は、特には図示しないが、演奏により生成された楽音を放音するスピーカを裏面部、側面部、又は背面部等に備える。
【００１１】
図２は、図１の電子鍵盤楽器１００の制御システム２００の一実施形態のハードウェア構成例を示す図である。図２において、制御システム２００は、ＣＰＵ（中央演算処理装置）２０１、ＲＯＭ（リードオンリーメモリ／大容量フラッシュメモリ）２０２、ＲＡＭ（ランダムアクセスメモリ）２０３、音源ＬＳＩ（大規模集積回路）２０４、音声合成ＬＳＩ２０５、ルーパＬＳＩ２２０、図１の鍵盤１０１、第１のスイッチパネル１０２、第２のスイッチパネル１０３、及びペダル１０５が接続されるキースキャナ２０６、図１のＬＣＤ１０４が接続されるＬＣＤコントローラ２０８が、それぞれシステムバス２０９に接続されている。また、ＣＰＵ２０１には、ルーパＬＳＩ２２０におけるループ録音・再生処理を制御するためのタイマ２１０が接続される。更に、音源ＬＳＩ２０４から出力される楽音出力データ２１８及びルーパＬＳＩ２２０から出力されるループ再生楽器音声出力データ２２２は、ミキサ２１３で混合された後、Ｄ／Ａコンバータ２１１によりアナログ出力信号に変換される。アナログ出力信号は、アンプ２１４で増幅された後に、特には図示しないスピーカ又は出力端子から出力される。
【００１２】
ＣＰＵ２０１は、ＲＡＭ２０３をワークメモリとして使用しながらＲＯＭ２０２に記憶された制御プログラムを実行することにより、図１の電子鍵盤楽器１００の制御動作を実行する。また、ＲＯＭ２０２は、上記制御プログラム及び各種固定データのほか、後述する機械学習の学習結果のモデルパラメータ等を記憶する。
【００１３】
ＣＰＵ２０１には、本実施形態で使用するタイマ２１０が実装されており、例えば電子鍵盤楽器１００におけるループ録音・再生の進行をカウントする。
【００１４】
音源ＬＳＩ２０４は、ＣＰＵ２０１からの発音制御指示に従って、例えば特には図示しない波形ＲＯＭから楽音波形データを読み出し、Ｄ／Ａコンバータ２１１に出力する。音源ＬＳＩ２０４は、同時に最大２５６ボイスを発振させる能力を有する。
【００１５】
音声合成ＬＳＩ２０５は、ＣＰＵ２０１から、予め楽器の種類を示すデータと、フレーズ毎の音高列を音高データ２１５として与えられると、それに対応するフレーズ毎の例えばスラーを含むアーティキュレーションの演奏技法のような、ユーザが演奏していない演奏技法に応じた音を示す演奏表現音を含む楽器音声出力データ２１７を合成し、ルーパＬＳＩ２２０に出力する。
【００１６】
ルーパＬＳＩ２２０は、図１のペダル１０５の操作に応じて、音声合成ＬＳＩ２０５が出力する楽器音声出力データ２１７をループ録音し、そのループ録音された後に繰り返し再生されるループ再生音に更に重ねてループ録音をし、最終的に得られたループ再生楽器音声出力データ２２２を繰り返しミキサ２１３に出力する。
【００１７】
キースキャナ２０６は、図１の鍵盤１０１の押鍵／離鍵状態、第１のスイッチパネル１０２と第２のスイッチパネル１０３のスイッチ操作状態、及びペダル１０５の操作状態を定常的に走査し、ＣＰＵ２０１に割り込みを掛けて状態変化を伝える。
【００１８】
ＬＣＤコントローラ２０８は、ＬＣＤ１０４の表示状態を制御するＩＣ（集積回路）である。
【００１９】
図３は、図２のルーパＬＳＩ２２０の構成例を示すブロック図である。ルーパＬＳＩ２２０は、繰り返し再生される繰返し区間のループ再生楽器音声出力データ２２２を記憶するための第１ループ記憶エリア３０１及び第２ループ記憶エリア３０２と、これらのいずれかのループ記憶エリアに音声合成ＬＳＩ２０５から出力されてくる楽器音声出力データ２１７をミキサ３０７を介して録音するためのループ録音部３０３と、上記いずれかのループ記憶エリアに記憶されている楽器音声出力データ２１７をループ再生音３１０として再生するためのループ再生部３０４と、そのループ再生音３１０を１フレーズ（１小節）分遅延させるフレーズ遅延部３０５と、フレーズ遅延部３０５から出力されるループ再生音遅延出力３１１を音声合成ＬＳＩ２０５から入力する楽器音声出力データ２１７と混合してループ録音部３０３に入力させるミキサ３０７と、ループ再生部３０４から出力されるループ再生音３１０から拍のタイミングを拍データ２２１として出力し、音声合成ＬＳＩ２０５に入力させる拍抽出部３０６とを備える。
【００２０】
本実施形態では、例えばユーザが図１の電子鍵盤楽器１００において、音源ＬＳＩ２０４から周知の技術により出力される自動リズムや自動伴奏音に追従して、鍵盤１０１においてフレーズ毎の音高列を、例えばある楽曲の楽譜に従って順次押鍵してゆく。このとき、周知の技術により鍵盤１０１上の鍵が自動的に光りながらユーザが押鍵すべき鍵がガイドされてもよい。このとき、ユーザは、各音符の鍵の押鍵タイミングや押鍵時間を正確に追う必要はなく、少なくとも音高を追う、即ち例えば次に光っている鍵を追いながら押鍵をすればよい。これに対して、図２のＣＰＵ２０１は、ユーザが１フレーズ分の押鍵を行う毎に、その押鍵の検出により得られる１フレーズ分の音高列をまとめて、音声合成ＬＳＩ２０５に送り込む。この結果、音声合成ＬＳＩ２０５は、１フレーズ遅れて、ユーザが単純に演奏した１フレーズ分の音高列から、あたかもユーザが指定した楽器の種類に対応する楽器をプロが演奏するような１フレーズ分の楽器音声出力データ２１７を出力することが可能となる。
【００２１】
このようにして音声合成ＬＳＩ２０５から出力される楽器音声出力データ２１７を活用した実施形態として、その楽器音声出力データ２１７を図２のルーパＬＳＩ２２０によるループ録音／再生処理に用いることができる。即ち、音声合成ＬＳＩ２０５から出力される楽器音声出力データ２１７を、ルーパＬＳＩ２２０に入力させてそこでループ録音し、そこからループ再生されるループ再生音を更に生成される楽器音声出力データ２１７に重ねて多重ループ録音し、そこから得られるループ再生音を演奏に用いること等ができる。
【００２２】
図４は、図３のルーパＬＳＩ２２０で実行されるループ録音／再生処理の基本的な動作であるループ録音／再生処理の第１の実施形態を説明する動作説明図である。ループ録音／再生処理の第１の実施形態では、説明をわかりやすくするため、ユーザが１フレーズ＝１小節分のループ録音／再生処理を実行する場合の概略動作について説明する。
【００２３】
まず、ユーザが図１のペダル１０５をタップすると、ルーパＬＳＩ２２０は、以下に説明するループ録音／再生処理を実行する。このループ録音／再生処理ではまず、ユーザがペダル１０５のタップに続いて、図１の鍵盤１０１上で繰返し再生（ループ再生）のための１フレーズ分の夫々タイミングが異なる複数の音高データ列を指定する第１ユーザ操作（演奏）を行う。この結果、図４（ａ）の例えば時刻ｔ０からｔ１までのフレーズにおいて、上記１フレーズ分の音高データ列（以下これを「フレーズ第１データ」と呼ぶ）が、鍵盤１０１からキースキャナ２０６及びＣＰＵ２０１を介して、音声合成ＬＳＩ２０５に、音高データ２１５として入力される（以下この入力を「第１入力」と呼ぶ）。
【００２４】
音声合成ＬＳＩ２０５は、ＣＰＵ２０１から、予め楽器の種類を示すデータと、上記第１入力（１フレーズ分の音高列を含む音高データ２１５）を与えられると、それに対応する１フレーズ分の楽器音声出力データ２１７を合成し、例えば図４（ｂ）の時刻ｔ１からｔ２までの期間で、ルーパＬＳＩ２２０に出力する。音声合成ＬＳＩ２０５は、図６で後述する学習済み音響モデル部６０６が出力する音響特徴量データ６１７に基づいて、或る演奏家による或る楽器のフレーズ演奏（以下これを「フレーズ第１演奏」と呼ぶ）を推論した、例えばスラーを含むアーティキュレーションの演奏技法のような、ユーザが演奏していない演奏技法に応じた音を示す演奏表現音を含む１フレーズ分の楽器音声出力データ２１７（以下これを「第１フレーズ楽器音声出力データ２１７」と呼ぶ）を出力する。
【００２５】
図３のルーパＬＳＩ２２０において、ループ録音部３０３は、図４（ｂ）の時刻ｔ１からｔ２までの期間で、図４（ａ）の時刻ｔ０からｔ１のフレーズの第１入力に基づいて音声合成ＬＳＩ２０５から出力される１フレーズ分の第１フレーズ楽器音声出力データ２１７を、例えば第１ループ記憶エリア３０１（Ａｒｅａ１）に順次録音（記憶）させる。
【００２６】
更に、図３のルーパＬＳＩ２２０において、ループ再生部３０４は、例えば図４（ｃ）の時刻ｔ１からｔ２、ｔ２からｔ３、ｔ４からｔ５、・・・というように、上記例えば第１ループ記憶エリア３０１（Ａｒｅａ１）に録音された第１フレーズ楽器音声出力データ２１７（図４（ｃ）では「第１データ」と記載）を、ループ再生音３１０として繰り返し出力する（以下この出力を「第１出力」と呼ぶ）。この繰り返される第１出力は、図２のルーパＬＳＩ２２０から、ループ再生楽器音声出力データ２２２として、ミキサ２１３からＤ／Ａコンバータ２１１及びアンプ２１４を介して特には図示しないスピーカから放音される。
【００２７】
続いて、図４（ｃ）のように第１出力の再生放音が繰り返されているときに、例えばフレーズの開始タイミング（例えば図４の時刻ｔ４）でユーザが図１のペダル１０５を更にタップする。そして、ユーザは、ペダル１０５のタップに続いて、図１の鍵盤１０１上でループ再生のための別の１フレーズ分の夫々タイミングが異なる複数の音高データ列を指定する第２ユーザ操作（演奏）を行う。この結果、図４（ｄ）の例えば時刻ｔ４からｔ５までのフレーズにおいて、上記別の１フレーズ分の音高データ列（以下これを「フレーズ第２データ」と呼ぶ）が、鍵盤１０１からキースキャナ２０６及びＣＰＵ２０１を介して、音声合成ＬＳＩ２０５に、音高データ２１５として入力される（以下この入力を「第２入力」と呼ぶ）。
【００２８】
音声合成ＬＳＩ２０５は、ＣＰＵ２０１から、予め楽器の種類を示すデータと、上記第２入力（１フレーズ分の音高列を含む音高データ２１５）を与えられると、それに対応する別の１フレーズ分の楽器音声出力データ２１７を合成し、例えば図４（ｅ）の時刻ｔ５からｔ６までの期間で、ルーパＬＳＩ２２０に出力する。音声合成ＬＳＩ２０５は、第１フレーズ楽器音声出力データ２１７の場合と同様に、図６で後述する学習済み音響モデル部６０６が出力する音響特徴量データ６１７に基づいて、或る演奏家による或る楽器の別のフレーズ演奏（以下これを「フレーズ第２演奏」と呼ぶ）を推論した、例えばスラーを含むアーティキュレーションの演奏技法のような、ユーザが演奏していない演奏技法に応じた音を示す演奏表現音を含む１フレーズ分の楽器音声出力データ２１７（以下これを「第２フレーズ楽器音声出力データ２１７」と呼ぶ）を出力する。
【００２９】
図３のルーパＬＳＩ２２０において、ミキサ３０７は、図４（ｅ）の時刻ｔ５からｔ６の期間で、図４（ｄ）の時刻ｔ４からｔ５のフレーズの第２入力に基づいて音声合成ＬＳＩ２０５から出力される１フレーズ分の第２フレーズ楽器音声出力データ２１７を、ループ再生部３０４から出力されるループ再生音３１０がフレーズ遅延部３０５を介してループ再生音遅延出力３１１として入力する図４（ｃ）の時刻ｔ４からｔ５の第１フレーズ楽器音声出力データの第１出力に重ね合わせる。そして、ループ録音部３０３は、図４（ｅ）の時刻ｔ５からｔ６の期間で、上述のように重ね合わされた第１出力と第２出力を、例えば第２ループ記憶エリア３０２（Ａｒｅａ２）に順次録音（記憶）させる。
【００３０】
更に、図３のルーパＬＳＩ２２０において、ループ再生部３０４は、例えば図４（ｆ）の時刻ｔ５からｔ６、ｔ６からｔ７、ｔ７からｔ８、・・・というように、上記例えば第２ループ記憶エリア３０２（Ａｒｅａ２）に録音された第１フレーズ楽器音声出力データ２１７と重ね合わされた第２フレーズ楽器音声出力データ２１７を、ループ再生音３１０として出力する（以下この出力を「第２出力」と呼ぶ）。この第１出力と第２出力が重ね合わされたフレーズ音列の繰返しは、図２のルーパＬＳＩ２２０から、ループ再生楽器音声出力データ２２２として、ミキサ２１３からＤ／Ａコンバータ２１１及びアンプ２１４を介して特には図示しないスピーカから放音される。
【００３１】
更に、フレーズのループ録音を重ねたい場合には、上記第２出力の繰返しを第１出力の繰返しに置き換えて、新たな第２入力に対して、同様の処理を実行すればよい。
【００３２】
以上のようにして、ルーパＬＳＩ２２０によるループ録音／再生処理の第１の実施形態によれば、ユーザが入力した１フレーズ分の音高データ列をフレーズ第１データとして、更にそれに重ねてフレーズ第２データとして順次指定するだけで、それらを音声合成ＬＳＩ２０５により或る演奏家による或る楽器のフレーズ演奏を推論した各楽器音声出力データ２１７に変換して重ね合わせることができ、例えばスラーを含むアーティキュレーションの演奏技法のような、ユーザが演奏していない演奏技法に応じた音を示す演奏表現音を含むループフレーズ音列を、ループ再生楽器音声出力データ２２２として再生出力することが可能となる。
【００３３】
上述のループ録音／再生処理の実施形態において、第１フレーズ楽器音声出力データ２１７と第２フレーズ楽器音声出力データ２１７とが重ね合わされるときに、重ね合わされるフレーズ毎の拍の進行タイミングなどがずれてしまうことが考えられる。そこで、本実施形態では、図３のルーパＬＳＩ２２０の構成において、拍抽出部３０６が、ループ再生部３０４から出力されるループ再生音３１０から拍のタイミングを拍データ２２１として出力し、その拍データ２２１を音声合成ＬＳＩ２０５に入力させることで、クォンタイズ処理を実行することができる。
【００３４】
図５は、クォンタイズ処理の説明図である。図５（ａ−１）において、ｔ０からｔ１のフレーズ期間で４つに分けて塗りつぶされたブロックは、図４（ａ）の時刻ｔ０からｔ１のフレーズ期間において、そのフレーズ内の各拍タイミング（４本の縦破線位置）において、模式的に示されている鍵盤１０１の各鍵に対応してユーザによって押鍵された４つの音高データ列であるフレーズ第１データを示している（図４（ａ）の「第１入力」に対応する）。これに対して、図５（ｂ−１）は、上記フレーズ第１データが、音高データ２１５として音声合成ＬＳＩ２０５に入力することにより、そこから出力される第１フレーズ楽器音声出力データを示しており、ａ１、ａ３、ａ５、及びａ７は、拍毎に演奏される音符に対応しており、ａ２、ａ４、及びａ６は、元々のユーザ演奏操作にはなかった音符と音符の間をつなぐような感じの演奏技法を模式的に示している。
【００３５】
一方、図５（ａ−２）の、ｔ４からｔ５のフレーズ期間で４つに分けて塗りつぶされたブロックは、図４（ｄ）の時刻ｔ４からｔ５のフレーズ期間において、そのフレーズ内の各拍タイミング（４本の縦破線位置）において、模式的に示されている鍵盤１０１の各鍵に対応してユーザによって押鍵された４つの音高データ列であるフレーズ第２データを示している（図４（ｄ）の「第２入力」に対応する）。このフレーズ第２データが音声合成ＬＳＩ２０５に入力して第２フレーズ楽器音声出力データ２１７が生成され、図４で説明したループ録音／再生処理により、第１フレーズ楽器音声出力データ２１７と重ね合わされるときに、２つの音高データ列は通常異なるため、２つの楽器音声出力データ２１７の拍の進行タイミングはずれてしまう可能性が高い。
【００３６】
そこで、本実施形態では、図３のルーパＬＳＩ２２０において、図５（ｂ−１）の第１フレーズ楽器音声出力データ２１７から生成されるループ再生音３１０から、拍抽出部３０６が、図５（ｂ−１）の各拍の音符音ａ１、ａ３、ａ５、及びａ７の各先頭タイミングを拍データ２２１として検出する。この検出は、例えば、ループ再生音３１０の波形の４つのピークパワーを検出することにより実現できる。この拍データ２２１は、ループ再生音３１０からフレーズ内の拍位置を検出したものであり、後述する図６の音声合成ＬＳＩ２０５内の発音モデル部６０８内の音源生成部６０９に入力される。後述する図６において、音源生成部６０９は、例えば音源データ６１９に含まれる基本周波数（Ｆ０）で周期的に繰り返されるパルス列を生成するときに、拍データ２２１に従って、各パルス位置を調整する、いわゆるクォンタイズ処理を実行する。
【００３７】
この制御のもとで、後述する図６の音声合成ＬＳＩ２０５において発音モデル部４０８が図４（ｅ）の時刻ｔ５からｔ６に対応するフレーズ期間で第２フレーズ楽器音声出力データ２１７を生成することにより、図５（ｂ−１）及び（ｂ−２）に示されるように、第２フレーズ楽器音声出力データ２１７の各拍毎の音符音の開始タイミングを、第１フレーズ楽器音声出力データ２１７の各音符音ａ１、ａ３、ａ５、及びａ７の各開始タイミングに良く同期させることが可能となる。これにより、即ち、後述する図６の発音モデル部６０８から出力される楽器音声出力データ２１７は、ルーパＬＳＩ２２０内で既に生成されているループ再生音３１０に良く同期したものとすることができ、多重ループ録音しても違和感のないループ再生音３１０を得ることが可能となる。
【００３８】
図６は、本実施形態における音声合成部６０２及び音声学習部６０１の構成例を示すブロック図である。ここで、音声合成部６０２は、図２の音声合成ＬＳＩ２０５が実行する一機能として電子鍵盤楽器１００に内蔵される。
【００３９】
音声合成部６０２は、後述するテンポ設定に基づいて認識されるフレーズ（小節）毎に、図１の鍵盤１０１上の押鍵に基づいて図２のキースキャナ２０６を介してＣＰＵ２０１から指示される音高列を含む音高データ２１５を入力することにより、楽器音声出力データ２１７を合成し出力する。このとき音声合成部６０２のプロセッサは、鍵盤１０１上の複数の鍵（操作子）のなかのいずれかの鍵への操作に応じて、学習済み音響モデル部６０６に設定されているユーザにより選択された楽器の種類に応じた学習済み音響モデルに対して、いずれかの鍵に対応付けられているフレーズ毎の音高列を含む音高データ２１５を入力するとともに、その入力に応じて学習済み音響モデル部６０６が出力したスペクトルデータ６１８と音源データ６１９とに基づいて、フレーズ毎の楽器演奏音を推論した楽器音声出力データ２１７を出力する処理を実行する。
【００４０】
音声学習部６０１は例えば、図６に示されるように、図１の電子鍵盤楽器１００とは別に外部に存在するサーバコンピュータ６００が実行する一機能として実装されてよい。或いは、図６には図示していないが、音声学習部６０１は、図２の音声合成ＬＳＩ２０５の処理能力に余裕があれば、音声合成ＬＳＩ２０５が実行する一機能として電子鍵盤楽器１００に内蔵されてもよい。
【００４１】
図２の音声学習部６０１及び音声合成部６０２は、例えば下記非特許文献１に記載の「深層学習に基づく統計的音声合成」の技術に基づいて実装される。
【００４２】
（非特許文献１）
橋本佳，高木信二「深層学習に基づく統計的音声合成」日本音響学会誌７３巻１号（２０１７），ｐｐ．５５−６２
【００４３】
図６に示されるように例えば外部のサーバコンピュータ６００が実行する機能である図２の音声学習部６０１は、学習用音響特徴量抽出部６０４とモデル学習部６０５とを含む。
【００４４】
音声学習部６０１において、学習用楽器音声データ６１２としては、例えば適当なジャンルの複数の楽曲を或る種類の楽器で演奏した音声を録音したものが使用される。また、学習用音高データである学習用楽譜データ６１１としては、各楽曲のフレーズ毎の音高列のテキストが用意される。
【００４５】
学習用音響特徴量抽出部６０４は、上記学習用楽譜データ６１１に含まれる１フレーズ分の音高列テキストの入力に合わせてその学習用楽譜データ６１１に対応する１フレーズ分の音高を例えばプロの演奏家が或る楽器で演奏することによりマイク等を介して集録された学習用楽器音声データ６１２を入力して分析する。この結果、学習用音響特徴量抽出部６０４は、学習用楽器音声データ６１２に対応する音声の特徴を表す学習用音響特徴量系列６１４を抽出して出力する。
【００４６】
モデル学習部６０５は、下記（１）式に従って、学習用楽譜データ６１１（これを
2020190676.tif 000003
と置く）と、音響モデル（これを
2020190676.tif 000004
と置く）とから、学習用音響特徴量系列６１４（これを
2020190676.tif 000005
と置く）が生成される確率（これを
2020190676.tif 000006
と置く）を最大にするような音響モデル
2020190676.tif 000007
を、機械学習により推定する。即ち、テキストである楽器音特徴量系列と音声である音響特徴量系列との関係が、音響モデルという統計モデルによって表現される。
【００４７】
【数１】
2020190676.tif 000008
【００４８】
ここで、
2020190676.tif 000009
は、その右側に記載される関数に関して最大値を与える、その下側に記載されている引数を算出する演算を示す。
【００４９】
モデル学習部６０５は、（１）式によって機械学習を行った結果算出される音響モデル
2020190676.tif 000010
を表現するモデルパラメータを学習結果６１５として出力する。
【００５０】
この学習結果６１５（モデルパラメータ）は例えば、図６に示されるように、図１の電子鍵盤楽器１００の工場出荷時に、図２の電子鍵盤楽器１００の制御システムのＲＯＭ２０２に記憶され、電子鍵盤楽器１００のパワーオン時に、図２のＲＯＭ２０２から音声合成ＬＳＩ２０５内の後述する学習済み音響モデル部６０６にロードされてよい。或いは、学習結果６１５は例えば、図６に示されるように、ユーザが電子鍵盤楽器１００の第２のスイッチパネル１０３を操作することにより、特には図示しないインターネットやＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ケーブル等のネットワークからネットワークインタフェース２１９を介して、音声合成ＬＳＩ２０５内の後述する学習済み音響モデル部６０６にダウンロードされてもよい。
【００５１】
音声合成ＬＳＩ２０５が実行する機能である音声合成部６０２は、学習済み音響モデル部６０６と発音モデル部６０８とを含む。音声合成部６０２は、１フレーズ分の音高列テキストを含む音高データ２１５に対応する楽器音声出力データ２１７を、学習済み音響モデル部６０６に設定された音響モデルという統計モデルを用いて予測することにより合成する、統計的音声合成処理を実行する。
【００５２】
学習済み音響モデル部６０６は、１フレーズ分の音高データ２１５を入力することにより、それに対応する音響特徴量系列６１７を推定して出力する。即ち学習済み音響モデル部６０６は、下記（２）式に従って、キースキャナ２０６及びＣＰＵ２０１を介して鍵盤１０１から入力する音高データ２１５（これを再度
2020190676.tif 000011
と置く）と、モデル学習部６０５での機械学習により学習結果６１５として設定された音響モデル
2020190676.tif 000012
とに基づいて、音響特徴量データである音響特徴量系列６１７（これを再度
2020190676.tif 000013
と置く）が生成される確率（これを
2020190676.tif 000014
と置く）を最大にするような音響特徴量系列６１７の推定値
2020190676.tif 000015
を推定する。
【００５３】
【数２】
2020190676.tif 000016
【００５４】
発音モデル部６０８は、音響特徴量系列６１７を入力することにより、ＣＰＵ２０１より指定される音高列を含む音高データ２１５に対応する楽器音声出力データ２１７を生成する。楽器音声出力データ２１７は、図２のルーパ２２０に入力する。
【００５５】
学習用音響特徴量系列６１４や音響特徴量系列６１７で表される音響特徴量は、楽器の発音又は共鳴機構をモデル化したスペクトルデータと、楽器の音源機構をモデル化した音源データとを含む。スペクトルデータ（スペクトルパラメータ）としては例えば、メルケプストラムや線スペクトル対（Ｌｉｎｅ  Ｓｐｅｃｔｒａｌ  Ｐａｉｒｓ：ＬＳＰ）等を採用できる。音源データとしては、楽器音の音高に対応するピッチ周波数を示す基本周波数（Ｆ０）及びパワー値を採用できる。発音モデル部６０８は、音源生成部６０９と合成フィルタ部６１０とを含む。音源生成部６０９は、楽器の音源機構をモデル化した部分であり、学習済み音響モデル部６０６から出力される音源データ６１９の系列を順次入力することにより、例えば、音源データ６１９に含まれる基本周波数（Ｆ０）及びパワー値で周期的に繰り返されるパルス列（有声音音符音の場合）、又は音源データ６１９に含まれるパワー値を有するホワイトノイズ（無声音音符音の場合）、或いはそれらが混合された信号からなる音源信号を生成する。合成フィルタ部６１０は、楽器の発音又は共鳴機構をモデル化した部分であり、学習済み音響モデル部６０６から順次入力するスペクトルデータ６１８の系列に基づいて楽器の発音又は共鳴機構をモデル化するデジタルフィルタを形成し、音源生成部６０９から入力する音源信号を励振源信号として、デジタル信号の楽器音声出力データ２１７を生成し出力する。
【００５６】
学習用楽器音声データ６１２に対するサンプリング周波数は、例えば１６ＫＨｚ（キロヘルツ）である。また、学習用音響特徴量系列６１４及び音響特徴量系列６１７に含まれるスペクトルパラメータとして、例えばメルケプストラム分析処理により得られるメルケプストラムパラメータが採用される場合、その更新フレーム周期は、例えば５ｍｓｅｃ（ミリ秒）である。更に、メルケプストラム分析処理の場合、分析窓長は２５ｍｓｅｃ、窓関数はブラックマン窓、分析次数は２４次である。
【００５７】
音声合成部６０２から出力される楽器音声出力データ３２１は、図２のルーパ２２０に入力する。
【００５８】
次に、図６の音声学習部６０１及び音声合成部６０２からなる統計的音声合成処理の第１の実施例について説明する。統計的音声合成処理の第１の実施例では、学習済み音響モデル部６０６に設定される学習結果６１５（モデルパラメータ）によって表現される音響モデルとして、前述した非特許文献１、及び下記非特許文献２に記載のＨＭＭ（Ｈｉｄｄｅｎ  Ｍａｒｋｏｖ  Ｍｏｄｅｌ：隠れマルコフモデル）を用いる。
【００５９】
（非特許文献２）
酒向慎司、才野慶二郎、南角吉彦、徳田恵一、北村正「声質と歌唱スタイルを自動学習可能な歌声合成システム」情報処理学会研究報告音楽情報科学（ＭＵＳ）２００８（１２（２００８−ＭＵＳ−０７４）），ｐｐ．３９−４４，２００８−０２−０８
【００６０】
統計的音声合成処理の第１の実施例では、或る種類の楽器音の１フレーズ分の音高列がユーザの演奏により与えられる際、楽器の音源や楽器の発音又は共鳴特性の楽器音の特徴パラメータがどのような時間変化をしながら発音されるかが、ＨＭＭ音響モデルによって学習される。より具体的には、ＨＭＭ音響モデルは、学習用楽器データ（図６の学習用楽譜データ６１１に対応）から求めたスペクトル、基本周波数（音高）、及びそれらの時間構造を音符音（楽譜の音符毎に発音される音）単位でモデル化したものである。
【００６１】
まず、ＨＭＭ音響モデルが採用される図６の音声学習部６０１の処理について説明する。音声学習部６０１内のモデル学習部６０５は、学習用楽譜データ６１１と、学習用音響特徴量抽出部６０４が出力する上記学習用音響特徴量系列６１４とを入力することにより、前述した（１）式に基づいて、尤度が最大となるＨＭＭ音響モデルの学習を行う。ＨＭＭ音響モデルの尤度関数は下記（３）式で示される。
【００６２】
【数３】
2020190676.tif 000017
【００６３】
ここで、
2020190676.tif 000018
はフレームｔにおける音響特徴量、Ｔはフレーム数、
2020190676.tif 000019
はＨＭＭ音響モデルの状態系列、
2020190676.tif 000020
はフレームｔにおけるＨＭＭ音響モデルの状態番号を表す。また、
2020190676.tif 000021
は状態
2020190676.tif 000022
から状態
2020190676.tif 000023
への状態遷移確率を表し、
2020190676.tif 000024
は平均ベクトル
2020190676.tif 000025
、共分散行列
2020190676.tif 000026
の正規分布であり、状態
2020190676.tif 000027
の出力確率分布を表す。尤度最大化基準によるＨＭＭ音響モデルの学習は、期待値最大化（Ｅｘｐｅｃｔａｔｉｏｎ  Ｍａｘｉｍｉｚａｔｉｏｎ：ＥＭ）アルゴリズムを利用することで効率良く行われる。
【００６４】
楽器音声のスペクトルパラメータは、連続ＨＭＭによってモデル化することができる。一方、対数基本周波数（Ｆ０）は楽器音の有声区間（音高が存在する区間）では連続値をとり、楽器音の無声区間（音高が存在しないブレス音等の区間）では値を持たない可変次元の時間系列信号であるため、通常の連続ＨＭＭや離散ＨＭＭで直接モデル化することはできない。そこで、可変次元に対応した多空間上の確率分布に基づくＨＭＭであるＭＳＤ−ＨＭＭ（Ｍｕｌｔｉ−Ｓｐａｃｅ  ｐｒｏｂａｂｉｌｉｔｙ  ＤｉｓｔｒｉｂｕｔｉｏｎＨＭＭ）を用い、スペクトルパラメータとしてメルケプストラムを多次元ガウス分布、対数基本周波数（Ｆ０）の楽器音の有声音を1次元空間、楽器音の無声音を0次元空間のガウス分布として同時にモデル化する。
【００６５】
また、楽器音を構成する音符音の音響的特徴（音符が発音されるときの音高、音長、発音の開始／終了タイミング、拍位置での強弱等）は、音符（例えば、音符が表す音高）は同一の音符音であっても、様々な要因の影響を受けて変動することが知られている。このような音符音毎の音響特徴量に影響を与える要因のことをコンテキストと呼ぶ。第１の実施例の統計的音声合成処理では、楽器の音符音の音響的な特徴を精度良くモデル化するために、コンテキストを考慮したＨＭＭ音響モデル（コンテキスト依存モデル）を採用することができる。具体的には、学習用楽譜データ６１１は、個々の音符音の音高だけでなく、フレーズ内の一連の音符列に対応する音高列や、楽器の種類等も考慮したものであってもよい。更に、モデル学習部６０５では、コンテキストの組合せの効率化のために、決定木に基づくコンテキストクラスタリングの手法が用いられてよい。これは、二分木を用いてＨＭＭ音響モデルの集合を木構造に分割することで、類似したコンテキストの組合せごとにＨＭＭ音響モデルをクラスタリングする手法である。木の各ノードには、「直前の音符音の音高はｘであるか？」「直後の音符音の音高はｙであるか？」「楽器の種類はｚであるか？」等のコンテキストを二分する質問があり、各リーフノードには、特定のＨＭＭ音響モデルに相当する学習結果６１５（モデルパラメータ）がある。任意のコンテキストの組合せは、ノードにある質問に沿って木を辿ることで、何れかのリーフノードに到達でき、そのリーフノードに対応する学習結果６１５（モデルパラメータ）を選択できる。適切な決定木構造を選択することで、高精度かつ汎化性能の高いＨＭＭ音響モデル（コンテキスト依存モデル）を推定することができる。
【００６６】
図７は、統計的音声合成処理の第１の実施例における、ＨＭＭの決定木についての説明図である。コンテキストに依存するそれぞれの音符音について、その音符音の各状態は、例えば図７（ａ）に示される＃１、＃２、＃３の３つの状態７０１からなるＨＭＭに対応付けられる。各状態に対して入出力する矢印は、状態遷移を示している。例えば、状態７０１（＃１）は、その音符音の発音開始付近をモデル化する状態である。また、状態７０１（＃２）は例えば、その音符音の発音中心付近をモデル化する状態である。更に、状態７０１（＃３）は例えば、その音符音の発音終了付近をモデル化する状態である。
【００６７】
また、音符音の発音長に依存して、図７（ａ）のＨＭＭが示す＃１から＃３の各状態７０１が継続する長さが、図７（ｂ）の状態継続長モデルにより決定される。図６のモデル学習部６０５は、図６の１フレーズを単位とする多数の音符音列のコンテキストに対応する学習用楽譜データ６１１から、状態継続長を決定するための状態継続長決定木７０２を学習により生成し、学習結果６１５として音声合成部６０２内の学習済み音響モデル部６０６に設定する。
【００６８】
また、図６のモデル学習部６０５は例えば、図６の学習用音響特徴量抽出部６０４が図６の学習用楽器音声データ６１２から抽出したメルケプストラムパラメータに関する１フレーズを単位とした多数の音符音列に対応する学習用音響特徴量系列６１４から、メルケプストラムパラメータを決定するためのメルケプストラムパラメータ決定木７０３を学習により生成し、学習結果６１５として音声合成部６０２内の学習済み音響モデル部６０６に設定する。
【００６９】
更に、図６のモデル学習部６０５は例えば、図６の学習用音響特徴量抽出部６０４が図６の学習用楽器音声データ６１２から抽出した対数基本周波数（Ｆ０）に関する１フレーズ分の多数の音符音列に対応する学習用音響特徴量系列６１４から、対数基本周波数（Ｆ０）を決定するための対数基本周波数決定木７０４を学習により生成し、学習結果６１５として音声合成部６０２内の学習済み音響モデル部６０６に設定する。なお、前述したように、対数基本周波数（Ｆ０）の有声区間と無声区間はそれぞれ、可変次元に対応したＭＳＤ−ＨＭＭにより、1次元及び0次元のガウス分布としてモデル化され、対数基本周波数決定木７０４が生成される。
【００７０】
その他、図６のモデル学習部６０５は、図７には図示しないが、１フレーズを単位とする多数の音符音列のコンテキストに対応する学習用楽譜データ６１１から、音符音の音高のアクセント（例えば拍の強弱）等のコンテキストを決定するための決定木を学習により生成し、学習結果６１５として音声合成部６０２内の学習済み音響モデル部６０６に設定してもよい。
【００７１】
次に、ＨＭＭ音響モデルが採用される図６の音声合成部６０２の処理について説明する。学習済み音響モデル部６０６は、キースキャナ２０６及びＣＰＵ２０１を介して鍵盤１０１から入力する或る楽器の種類の楽器音の１フレーズ分の音高列からなるコンテキストに関する音高データ２１５を入力することにより、コンテキスト毎に図７に例示される各決定木７０２、７０３、７０４等を参照してＨＭＭを連結し、連結した各ＨＭＭから出力確立が最大となる音響特徴量系列６１７（スペクトルデータ６１８と音源データ６１９）を予測する。
【００７２】
このとき、学習済み音響モデル部６０６は、前述した（２）式に従って、キースキャナ２０６及びＣＰＵ２０１を介して鍵盤１０１から入力する音高データ２１５（＝
2020190676.tif 000028
）と、モデル学習部６０５での機械学習により学習結果６１５として設定された音響モデル（＝
2020190676.tif 000029
）とに基づいて、音響特徴量系列６１７（＝
2020190676.tif 000030
）が生成される確率（＝
2020190676.tif 000031
）を最大にするような音響特徴量系列６１７の推定値（＝
2020190676.tif 000032
）を推定する。ここで、前述した（２）式は、図７（ｂ）の状態継続長モデルによって推定される状態系列
2020190676.tif 000033
を用いることで、下記（４）式により近似される。
【００７３】
【数４】
2020190676.tif 000034
【００７４】
ここで、
2020190676.tif 000035
2020190676.tif 000036
であり、
2020190676.tif 000037
と
2020190676.tif 000038
はそれぞれ状態
2020190676.tif 000039
における平均ベクトルと共分散行列である。楽器音特徴量系列
2020190676.tif 000040
を用い、学習済み音響モデル部６０６に設定された各決定木を辿ることにより、平均ベクトルと共分散行列が算出される。（４）式より、音響特徴量系列６１７の推定値（＝
2020190676.tif 000041
）は平均ベクトル（＝
2020190676.tif 000042
）によって得られるが、
2020190676.tif 000043
は状態が遷移する部分で階段状に変化する不連続な系列となる。このような不連続な音響特徴量系列６１７から合成フィルタ部６１０が楽器音声出力データ２１７を合成した場合、自然性という観点からは低品質な合成楽器音声となってしまう。そこで、統計的音声合成処理の第１の実施例では、モデル学習部６０５において動的特徴量を考慮した学習結果６１５（モデルパラメータ）の生成アルゴリズムが採用されてよい。静的特徴量
2020190676.tif 000044
と動的特徴量
2020190676.tif 000045
からフレームｔにおける音響特徴量系列（＝
2020190676.tif 000046
）が構成されるとき、各時刻の音響特徴量系列（＝
2020190676.tif 000047
）は、下記（５）式で示される。
【００７５】
【数５】
2020190676.tif 000048
【００７６】
ここで、
2020190676.tif 000049
は静的特徴量系列
2020190676.tif 000050
から動的特徴量を含む音響特徴量系列
2020190676.tif 000051
を求める行列である。モデル学習部６０５は、上述の（５）式を制約として前述の（４）式を、下記（６）式に示されるように解く。
【００７７】
【数６】
2020190676.tif 000052
【００７８】
ここで、
2020190676.tif 000053
は、動的特徴量を制約としながら出力確率が最大となる静的特徴量系列である。動的特徴量を考慮することで状態境界の不連続が解決され、滑らかに変化する音響特徴量系列６１７を得ることができ、合成フィルタ部６１０において、高品質な楽器音声出力データ２１７を生成することが可能となる。
【００７９】
次に、図６の音声学習部６０１及び音声合成部６０２からなる統計的音声合成処理の第２の実施例について説明する。統計的音声合成処理の第２の実施例では、音高データ２１５から音響特徴量系列６１７を予測するために、学習済み音響モデル部６０６がディープニューラルネットワーク（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＤＮＮ）により実装される。これに対応して、音声学習部６０１内のモデル学習部６０５は、楽器音特徴量（学習用楽譜データ６１１に対応）から音響特徴量（学習用音響特徴量系列６１４に対応）へのＤＮＮ内の各ニューロンの非線形変換関数を表すモデルパラメータを学習し、そのモデルパラメータを学習結果６１５として音声合成部６０２内の学習済み音響モデル部６０６のＤＮＮに出力する。
【００８０】
通常、音響特徴量は例えば５．１ｍｓｅｃ（ミリ秒）幅のフレームを単位として算出され、楽器音特徴量は音符を単位として算出される。従って、音響特徴量と楽器音特徴量は時間単位が異なる。ＨＭＭ音響モデルを採用した統計的音声合成処理の第１の実施例では、音響特徴量と楽器音特徴量の対応はＨＭＭの状態系列によって表現され，モデル学習部６０５は、音響特徴量と楽器音特徴量の対応関係を、図６の学習用楽譜データ６１１及び学習用楽器音声データ６１２に基づき自動学習した。これに対して、ＤＮＮを採用した統計的音声合成処理の第２の実施例では、学習済み音響モデル部６０６に設定されるＤＮＮは、入力である音高データ２１５と出力である音響特徴量系列６１７の一対一の対応関係を表すモデルであるため、時間単位の異なる入出力データ対を用いてＤＮＮを学習させることはできない。このため、統計的音声合成処理の第２の実施例では、予めフレーム単位の音響特徴量系列と音符単位の楽器音特徴量系列の対応関係が設定され、フレーム単位の音響特徴量と言語特徴量の対が生成される。
【００８１】
図８は、上述の対応関係を示す音声合成ＬＳＩ２０５の動作説明図である。例えば、或る楽曲のフレーズの音高系列（文字列）「Ｃ３」「Ｅ３」「Ｇ３」「Ｇ３」「Ｇ３」「Ｇ３」・・・（図８（ａ））に対応する楽器音特徴量系列である楽器音符列が得られているときに、これらの楽器音特徴量系列が、フレーム単位の音響特徴量系列（図８（ｂ））に対して、１対多の関係（図８の（ａ）と（ｂ）の関係）で対応付けられる。なお、楽器音特徴量は学習済み音響モデル部６０６におけるＤＮＮへの入力として使用されるため、数値データとして表現する必要がある。このため、楽器音特徴量系列としては、「直前の音符はｘであるか？」や「現在の音符の楽器の種類はｙであるか？」等のコンテキストに関する質問に対する二値のデータ（０又は１）、或いは、連続値での回答を連結して得られる数値データが用意される。
【００８２】
統計的音声合成処理の第２の実施例における図６の音声学習部６０１内のモデル学習部６０５は、図８の破線矢印群８０１として示されるように、フレーム単位で、図８（ｂ）に対応する１フレーズ分の音符列（音高列）である学習用楽譜データ６１１と図８（ｃ）に対応する１フレーズ分の学習用音響特徴量系列６１４の対を学習済み音響モデル部６０６のＤＮＮに順次与えて学習を行う。なお、学習済み音響モデル部６０６内のＤＮＮは、図８のグレー色の丸印群として示されるように、入力層、１つ以上の中間層、及び出力層からなるニューロン群を含む。
【００８３】
一方、音声合成時には、上記フレーム単位で、図８（ｂ）に対応する１フレーズ分の音符列（音高列）である音高データ２１５が学習済み音響モデル部６０６のＤＮＮに入力される。この結果、学習済み音響モデル部６０６のＤＮＮは、図８の太実線矢印群８０２として示されるように、上記フレーム単位で、１フレーズ分の音響特徴量系列６１７を出力する。従って、発音モデル部６０８においても、上述のフレーム単位で、１フレーズ分の音響特徴量系列６１７に含まれる音源データ６１９及びスペクトルデータ６１８がそれぞれ音源生成部６０９及び合成フィルタ部６１０に与えられて、音声合成が実行される。
【００８４】
この結果、発音モデル部６０８は、図８の太実線矢印群８０３として示されるように、フレーム毎に、例えば２２５サンプル（ｓａｍｐｌｅｓ）ずつの楽器音声出力データ２１７を、合計で１フレーズ分出力する。フレームは５．１ｍｓｅｃの時間幅を有するため、１サンプルは「５．１ｍｓｅｃ÷２２５≒０．０２２７ｍｓｅｃ」であり、従って、楽器音声出力データ２１７のサンプリング周波数は１／０．０２２７≒４４ｋＨｚ（キロヘルツ）である。
【００８５】
ＤＮＮの学習は、１フレーズ分の、フレーム単位の音響特徴量と楽器音特徴量の音高列＋楽器の種類の対を用いて、下記の（７）式で演算される二乗誤差最小化基準によって行われる。
【００８６】
【数７】
2020190676.tif 000054
【００８７】
ここで、
2020190676.tif 000055
と
2020190676.tif 000056
はそれぞれｔ番目のフレームｔにおける音響特徴量と
楽器音特徴量（音高＋楽器の種類）、
2020190676.tif 000057
は学習済み音響モデル部６０６のＤＮＮの
モデルパラメータ、
2020190676.tif 000058
はＤＮＮによって表される非線形変換関数である。ＤＮＮ
のモデルパラメータは誤差逆伝播法によって効率良く推定することができる。前述した（１）式によって表される統計的音声合成におけるモデル学習部６０５の処理との対応関係を考慮すると、ＤＮＮの学習は下記の（８）式のように表すことができる。
【００８８】
【数８】
2020190676.tif 000059
【００８９】
ここで、下記（９）式が成立する。
【数９】
2020190676.tif 000060
【００９０】
上記（８）式及び（９）式のように、音響特徴量と楽器音特徴量（音高＋楽器の種類）の関係は、ＤＮＮの出力を平均ベクトルとする正規分布
2020190676.tif 000061
によって表すことができる。ＤＮＮを用いた統計的音声合成処理の第２の実施例では、通常、楽器音特徴量系列
2020190676.tif 000062
に非依存な共分散行列、即ち全てのフレームにおいて同じ共分散行列
2020190676.tif 000063
が用いられる。また、共分散行列
2020190676.tif 000064
を単位行列とすると、（８）式は（７）式と等価な学習処理を示している。
【００９１】
図８で説明したように、学習済み音響モデル部６０６のＤＮＮは、フレーム毎に独立に音響特徴量系列６１７を推定する。このため、得られる音響特徴量系列６１７には、合成音声の品質を低下させるような不連続が含まれる。そこで、本実施例では例えば、統計的音声合成処理の第１の実施例の場合と同様な、動的特徴量を用いたパラメータ生成アルゴリズムを利用することにより、合成音声の品質を改善することができる。
【００９２】
図２の音声合成ＬＳＩ２０５が出力する楽器音声出力データ２１７を用いて、図２のルーパＬＳＩ２２０が行うループ録音／再生処理の第２の実施形態を実現するための、図１及び図２の電子鍵盤楽器１００の更に具体的な動作について、以下に詳細に説明する。ループ録音／再生処理の第２の実施形態は、複数の連続するフレーズをループ区間とすることができるものである。
【００９３】
ループ録音／再生処理の第２の実施形態では、ループ録音／再生処理が動作していない状態（以下「Ｍｏｄｅ０」と呼ぶ）において、ユーザが、図１のペダル１０５を１回タップすると、ルーパＬＳＩ２２０は、以下に説明するＭｏｄｅ１の動作に移行する。Ｍｏｄｅ１では、ユーザが図１の鍵盤１０１上でフレーズ毎に所望の音高列を指定する演奏を行うと、図２の音声合成ＬＳＩ２０５が１フレーズ（本実施例では、１小節）遅れて、図６〜図８を用いて前述したようにして、ユーザが演奏していない演奏技法に応じた音を含む演奏表現音データが付加された楽器音声出力データ２１７をフレーズ単位で出力する。図２のルーパＬＳＩ２２０内の図３に示されるループ録音部３０３は、上述のようにして音声合成ＬＳＩ２０５からフレーズ毎にユーザによって演奏される音高列に対応してフレーズ単位で出力される楽器音声出力データ２１７を、ミキサ３０７を介して第１ループ記憶エリア３０１に順次記憶させる処理を実行する。ユーザは、例えば音源ＬＳＩ２０４からミキサ２１３、Ｄ／Ａコンバータ２１１、アンプ２１４、及び特には図示しないスピーカから放音されるリズム音に合わせて、複数フレーズ（小節）をカウントしながら上述の演奏を行い、ルーパＬＳＩ２２０に上記Ｍｏｄｅ１の動作を実行させる。
【００９４】
その後、ユーザが、再度ペダル１０５を１回タップすると、ルーパＬＳＩ２２０は、以下に説明するＭｏｄｅ２の動作に移行する。Ｍｏｄｅ２では、図３のループ再生部３０４が、第１ループ記憶エリア３０１に記憶された上記複数フレーズ（小節）の区間（以下これを「ループ区間」と呼ぶ）の楽器音声出力データ２１７を、ループ再生音３１０として順次読み出す。このループ再生音３１０は、図２のループ再生楽器音声出力データ２２２として図２のミキサ２１３に入力し、Ｄ／Ａコンバータ２１１、アンプ２１４、及び特には図示しないスピーカから放音される。ユーザは更に、このループ再生音３１０に合わせて、図１の鍵盤１０１上で上記ループ区間内の各フレーズ毎にループ再生音３１０に重ねてループ録音したい楽音に対応する所望の音高列を指定する演奏を行う。この結果、図２の音声合成ＬＳＩ２０５が１フレーズ遅れて、Ｍｏｄｅ１の場合と同様に、豊かな音楽表現が付加された楽器音声出力データ２１７をフレーズ単位で出力する。図３のミキサ３０７は、上記音声合成ＬＳＩ２０５からユーザの演奏に１フレーズ遅れてフレーズ単位で入力する楽器音声出力データ２１７を、前述のループ再生部３０４が出力するループ再生音３１０をフレーズ遅延部３０５で１フレーズ分遅延させて得られるループ再生音遅延出力３１１とミックスして、ループ録音部３０３に入力させる。ループ録音部３０３は、このミックス（いわゆる多重ループ録音）された楽器音声出力データを、図３の第２ループ記憶エリア３０２に順次記憶させる処理を実行する。上述の多重ループ録音動作がループ区間の最後まで達すると、ループ再生部３０４は、ループ再生音３１０の読出しを第１ループ記憶エリア３０１のループ末尾から第２ループ記憶エリア３０２のループ先頭に切り替え、ループ録音部３０３は、楽器音声出力データの録音先を第２ループ記憶エリア３０２の末尾から第１ループ記憶エリア３０１の先頭に切り替える。更に、上述の動作がループ区間の最後まで達すると、ループ再生部３０４は、ループ再生音３１０の読出しを再度、第２ループ記憶エリア３０１の末尾から第１ループ記憶エリア３０２の先頭に切り替え、ループ録音部３０３は、楽器音声出力データの録音先を再度、第１ループ記憶エリア３０２の末尾から第２ループ記憶エリア３０１の先頭に切り替える。このような切替え制御動作が繰り返されることにより、ユーザは、ループ区間のループ再生音３１０に、自分の演奏に基づいて得られる楽器音声出力データ２１７を次々と多重ループ録音させながら、ループ区間のループ再生音３１０を生成してゆくことができる。
【００９５】
その後、ユーザが、再度ペダル１０５を１回タップすると、ルーパＬＳＩ２２０は、以下に説明するＭｏｄｅ３の動作に移行する。Ｍｏｄｅ３では、図３のループ再生部３０４が、第１ループ記憶エリア３０１又は第２ループ記憶エリア３０２のうち最後に録音が行われたほうからループ再生音３１０をループ区間で繰り返し再生し、それを楽器音声出力データ２２２として出力する。このループ再生される楽器音声出力データ２１７は、図２のミキサ２１３から、Ｄ／Ａコンバータ２１１、及びアンプ２１４を介して、特には図示しないスピーカから放音される。このようにして、ユーザは、図１の鍵盤１０１においてフレーズ単位で各音符の音高を指定する程度のたとえ単調な演奏を行ったとしても、音声合成ＬＳＩ２０５を介して生成される非常に豊かな音楽表現（演奏に応じて出力される音の強弱、音響効果やエフェクトの付与、演奏されていない音の追加）を有するループ再生音３１０を再生させることが可能となる。このときユーザは更に演奏を行うことにより、その演奏に基づいて図２の音源ＬＳＩ２０４から出力される楽音出力データを、図２のミキサ２１３でループ再生音３１０にミックスさせてから、そのミックス音を、Ｄ／Ａコンバータ２１１、及びアンプ２１４を介して、特には図示しないスピーカから放音させることができ、ループ再生と自分の演奏のアンサンブルを実現することができる。
【００９６】
その後、上記Ｍｏｄｅ３のループ再生状態で、ユーザが、再度ペダル１０５を１回タップすると、ルーパＬＳＩ２２０は、前述したＭｏｄｅ２の動作に戻り、更に重ねループ録音を行うことができる。
【００９７】
また、上記Ｍｏｄｅ２の多重ループ録音状態で、ユーザが、ペダル１０５を長押しタップすると、ルーパＬＳＩ２２０は、最後に録音中のループ録音をキャンセルしてＭｏｄｅ３に移行し、１つの前のループ再生状態に戻ることができる。この上で、ユーザが、再度ペダル１０５を１回タップすれば、ルーパＬＳＩ２２０は、前述したＭｏｄｅ２の動作に戻り、更に多重ループ録音を続行することができる。
【００９８】
上記Ｍｏｄｅ１、Ｍｏｄｅ２、又はＭｏｄｅ３の状態で、ユーザが、ペダル１０５をダブルタップ（素早く２回タップ）すると、ルーパＬＳＩ２２０は、Ｍｏｄｅ０ｎｏ停止状態に移行して、ループ録音／再生を終了することができる。
【００９９】
図９は、ループ録音／再生処理の第２の実施形態における電子楽器の制御処理例を示すメインフローチャートである。この制御処理は例えば、図２のＣＰＵ２０１が、ＲＯＭ２０２からＲＡＭ２０３にロードされた制御処理プログラムを実行する動作である。
【０１００】
ＣＰＵ２０１は、まず初期化処理を実行した後（ステップＳ９０１）、ステップＳ９０２からＳ９０７の一連の処理を繰り返し実行する。
【０１０１】
この繰返し処理において、ＣＰＵ２０１はまず、スイッチ処理を実行する（ステップＳ９０２）。ここでは、ＣＰＵ２０１は、図２のキースキャナ２０６からの割込みに基づいて、図１の第１のスイッチパネル１０２又は第２のスイッチパネル１０３のスイッチ操作に対応する処理を実行する。
【０１０２】
次に、ＣＰＵ２０１は、図２のキースキャナ２０６からの割込みに基づいて図１の鍵盤１０１の何れかの鍵が操作されたか否かを判定して処理する鍵盤処理を実行する（ステップＳ９０３）。この鍵盤処理では、ＣＰＵ２０１は、ユーザによる何れかの鍵の押鍵又は離鍵の操作に応じて、図２の音源ＬＳＩ２０４に対して、発音開始又は発音停止を指示する楽音制御データ２１６を出力する。また、ＣＰＵ２０１は、この鍵盤処理において、後述するＴｉｃｋＴｉｍｅ割込み処理におけるフレーズ単位での音高列の音声合成ＬＳＩ２０５への出力処理のために、押鍵が発生した鍵の各音高をＲＡＭ２０３上の配列変数であるフレーズバッファに順次記憶させる処理を実行する。
【０１０３】
次に、ＣＰＵ２０１は、図１のＬＣＤ１０４に表示すべきデータを処理し、そのデータを、図２のＬＣＤコントローラ２０８を介してＬＣＤ１０４に表示する表示処理を実行する（ステップＳ９０４）。ＬＣＤ１０４に表示されるデータとしては、例えば演奏される楽器音声出力データ２１７に対応する楽譜や、各種設定内容がある。
【０１０４】
次に、ＣＰＵ２０１は、ルーパ制御処理を実行する（ステップＳ９０５）。この処理においては、ＣＰＵ２０１が、図２のルーパＬＳＩ２２０を制御する処理であるルーパ制御処理（後述する図１４、図１５のフローチャートの処理）を実行する。
【０１０５】
続いて、ＣＰＵ２０１は、音源処理を実行する（ステップＳ９０６）。音源処理において、ＣＰＵ２０１は、音源ＬＳＩ２０４における発音中の楽音のエンベロープ制御等の制御処理を実行する。
【０１０６】
最後にＣＰＵ２０１は、ユーザが特には図示しないパワーオフスイッチを押してパワーオフしたか否かを判定する（ステップＳ９０７）。ステップＳ９０７の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ９０２の処理に戻る。ステップＳ９０７の判定がＹＥＳならば、ＣＰＵ２０１は、図９のフローチャートで示される制御処理を終了し、電子鍵盤楽器１００の電源を切る。
【０１０７】
図１０（ａ）及び（ｂ）はそれぞれ、図９のステップＳ９０１の初期化処理、図９のステップＳ９０２のスイッチ処理における後述する図１１のステップＳ１１０２のテンポ変更処理の詳細例を示すフローチャートである。
【０１０８】
まず、図９のステップＳ９０１の初期化処理の詳細例を示す図１０（ａ）において、ＣＰＵ２０１は、ＴｉｃｋＴｉｍｅの初期化処理を実行する。本実施形態において、ループ演奏の進行は、ＲＡＭ２０３に記憶されるＴｉｃｋＴｉｍｅ変数の値（以下この変数の値を変数名と同じ「ＴｉｃｋＴｉｍｅ」と呼ぶ）を単位として進行する。図２のＲＯＭ２０２内には、ＴｉｍｅＤｉｖｉｓｉｏｎ定数の値（以下この変数の値を変数名と同じ「ＴｉｍｅＤｉｖｉｓｉｏｎ」と呼ぶ）が予め設定されており、このＴｉｍｅＤｉｖｉｓｉｏｎは４分音符の分解能を示しており、この値が例えば４８０ならば、４分音符は４８０×ＴｉｃｋＴｉｍｅの時間長を有する。なお、このＴｉｍｅＤｉｖｉｓｉｏｎの値はＲＡＭ２０３に記憶されるようにして、ユーザが例えば図１の第１のスイッチパネル１０２上のスイッチで変更できるようにしてもよい。また、図２のＲＡＭ２０３に記憶される変数であって、ユーザが１フレーズ分の演奏を行ったことを判定するポインタ変数の値（後述するＰｈｒａｓｅＰｏｉｎｔｅｒ変数の値、以下この変数の値を変数名と同じ「ＰｈｒａｓｅＰｏｉｎｔｅｒ」と呼ぶ）と、ループ演奏の録音を進行させるためのポインタ変数の値（後述するＲｅｃＰｏｉｎｔｅｒ変数の値、以下この変数の値を変数名と同じ「ＲｅｃＰｏｉｎｔｅｒ」と呼ぶ）と、ループ再生を進行させるためのポインタ変数の値（後述するＰｌａｙＰｏｉｎｔｅｒ変数の値、以下この変数の値を変数名と同じを「ＰｌａｙＰｏｉｎｔｅｒ」と呼ぶ）も、ＴｉｃｋＴｉｍｅの時間単位によりカウントされる。ここで、１ＴｉｃｋＴｉｍｅが実際に何秒になるかは、曲データに対して指定されるテンポによって異なる。今、ユーザ設定に従ってＲＡＭ２０３上のＴｅｍｐｏ変数に設定される値をＴｅｍｐｏ［ビート／分］とすれば、１ＴｉｃｋＴｉｍｅの秒数は、次式により算出される。
【０１０９】
ＴｉｃｋＴｉｍｅ［秒］＝６０／Ｔｅｍｐｏ／ＴｉｍｅＤｉｖｉｓｉｏｎ
・・・（１０）
【０１１０】
そこで、図１０（ａ）のフローチャートで例示される初期化処理において、ＣＰＵ２０１はまず、上記（１０）式に対応する演算処理により、ＴｉｃｋＴｉｍｅ［秒］を算出し、ＲＡＭ２０３上の同名の変数に記憶させる（ステップＳ１００１）。なお、変数Ｔｅｍｐｏに設定されるＴｅｍｐｏの値としては、初期状態では図２のＲＯＭ２０２の定数から読み出した所定の値、例えば６０［ビート／秒］が、初期設定されてもよい。或いは、変数Ｔｅｍｐｏが不揮発性メモリに記憶され、電子鍵盤楽器１００の電源の再投入時に、前回終了時のＴｅｍｐｏ値がそのまま保持されていてもよい。
【０１１１】
次に、ＣＰＵ２０１は、図２のタイマ２１０に対して、ステップＳ１００１で算出したＴｉｃｋＴｉｍｅ［秒］によるタイマ割込みを設定する（ステップＳ１００２）。この結果、タイマ２１０において上記ＴｉｃｋＴｉｍｅ［秒］が経過する毎に、ＣＰＵ２０１に対して音声合成ＬＳＩ２０５のためのフレーズ進行と、ルーパＬＳＩ２２０のためのループ録音／再生進行のための割込み（以下「ＴｉｃｋＴｉｍｅ割込み」と記載）が発生する。従って、このＴｉｃｋＴｉｍｅ割込みに基づいてＣＰＵ２０１で実行されるＴｉｃｋＴｉｍｅ割込み処理（後述する図１２のフローチャートの処理）では、１ＴｉｃｋＴｉｍｅ毎にフレーズを判定し、ループ録音／再生を進行させる制御処理が実行されることになる。
【０１１２】
続いて、ＣＰＵ２０１は、図２のＲＡＭ２０３の初期化等のその他初期化処理を実行する（ステップＳ１００３）。その後、ＣＰＵ２０１は、図１０（ａ）のフローチャートで例示される図９のステップＳ９０１の初期化処理を終了する。
【０１１３】
図１０（ｂ）のフローチャートについては、後述する。図１１は、図９のステップＳ９０２のスイッチ処理の詳細例を示すフローチャートである。
【０１１４】
ＣＰＵ２０１はまず、図１の第１のスイッチパネル１０２内のテンポ変更スイッチによりフレーズ進行及びループ録音／再生進行のためのテンポが変更されたか否かを判定する（ステップＳ１１０１）。その判定がＹＥＳならば、ＣＰＵ２０１は、テンポ変更処理を実行する（ステップＳ１１０２）。この処理の詳細は、図１０（ｂ）を用いて後述する。ステップＳ１１０１の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１１０２の処理はスキップする。
【０１１５】
次に、ＣＰＵ２０１は、ルーパＬＳＩ２２０におけるループ録音／再生のために、ユーザが図１のペダル１０５を足等でタップ操作したか否かを、図２のキースキャナ２０６を介して判定する（ステップＳ１１０３）。その判定がＹＥＳならば、ＣＰＵ２０１は、ペダル制御処理を実行する（ステップＳ１１０４）。この処理の詳細は、図１４を用いて後述する。ステップＳ１１０３の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１１０３の処理はスキップする。
【０１１６】
最後に、ＣＰＵ２０１は、図１の第２のスイッチパネル１０３において電子鍵盤楽器１００の音源の音色や音声合成ＬＳＩ２０５で音声合成される楽器音声の楽器種類の選択等が行われた場合に対応するその他のスイッチ処理を実行する（ステップＳ１１０５）。ＣＰＵ２０１は、設定された音源の音色と音声合成の楽器種類を、ＲＡＭ２０３上の特には図示しない変数に記憶する（ステップＳ１１０４）。その後、ＣＰＵ２０１は、図１１のフローチャートで例示される図９のステップＳ９０２のスイッチ処理を終了する。
【０１１７】
図１０（ｂ）は、図１１のステップＳ１１０２のテンポ変更処理の詳細例を示すフローチャートである。前述したように、テンポ値が変更されるとＴｉｃｋＴｉｍｅ［秒］も変更になる。図１０（ｂ）のフローチャートでは、ＣＰＵ２０１は、このＴｉｃｋＴｉｍｅ［秒］の変更に関する制御処理を実行する。
【０１１８】
まず、ＣＰＵ２０１は、図９のステップＳ９０１の初期化処理で実行された図１０（ａ）のステップＳ１００１の場合と同様にして、前述した（１０）式に対応する演算処理により、ＴｉｃｋＴｉｍｅ［秒］を算出する（ステップＳ１０１１）。なお、テンポ値Ｔｅｍｐｏは、図１の第１のスイッチパネル１０２内のテンポ変更スイッチにより変更された後の値がＲＡＭ２０３等に記憶されているものとする。
【０１１９】
次に、ＣＰＵ２０１は、図９のステップＳ９０１の初期化処理で実行された図１０（ａ）のステップＳ１００２の場合と同様にして、図２のタイマ２１０に対して、ステップＳ１０１１で算出したＴｉｃｋＴｉｍｅ［秒］によるタイマ割込みを設定する（ステップＳ１０１２）。その後、ＣＰＵ２０１は、図１０（ｂ）のフローチャートで例示される図１１のステップＳ１１０２のテンポ変更処理を終了する。
【０１２０】
図１２は、図２のタイマ２１０においてＴｉｃｋＴｉｍｅ［秒］毎に発生するＴｉｃｋＴｉｍｅ割込み（図１０（ａ）のステップＳ１００２又は図１０（ｂ）のステップＳ１０１２を参照）に基づいて実行されるＴｉｃｋＴｉｍｅ割込み処理の詳細例を示すフローチャートである。
【０１２１】
まず、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＲｅｃＳｔａｒｔの値（以下この変数の値を変数名と同じ「ＲｅｃＳｔａｒｔ」と呼ぶ）が１であるか否か、即ちループ録音の進行が指示されているか否かを判定する（ステップＳ１２０１）。
【０１２２】
ループ録音の進行が指示されていないと判定した（ステップＳ１２０１の判定がＮＯである）場合には、ＣＰＵ２０１は、ステップＳ１２０２〜Ｓ１２０５のループ録音の進行を制御する処理は行わずに、ステップＳ１２０６の処理に移行する。
【０１２３】
ループ録音の進行が指示されていると判定した（ステップＳ１２０１の判定がＹＥＳである）場合には、ＣＰＵ２０１は、ＴｉｃｋｅＴｉｍｅ割込みが１単位だけ進行したのに対応して、図３の第１ループ記憶エリア３０１又は第２ループ記憶エリア３０２上での録音のためのループ区間内でのＴｉｃｋｅＴｉｍｅ単位の時間進行を制御するためのＲＡＭ２０３上の変数ＲｅｃＰｏｉｎｔｅｒの変数の値（以下この変数の値を変数名と同じ「ＲｅｃＰｏｉｎｔｅｒ」と呼ぶ）を値１だけインクリメントし、また、フレーズ区間のＴｉｃｋｅＴｉｍｅ単位での時間進行を制御するためのＲＡＭ２０３上の変数ＰｈｒａｓｅＰｏｉｎｔｅｒの変数の値（以下のこの変数の値を変数名と同じ「ＰｈｒａｓｅＰｏｉｎｔｅｒ」と呼ぶ）を値１だけインクリメントする（ステップＳ１２０２）。
【０１２４】
次に、ＣＰＵ２０１は、ＰｈｒａｓｅＰｏｉｎｔｅｒの値が、ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔで定まる値に等しくなったか否かを判定する（ステップＳ１２０３）。ＴｉｍｅＤｅｖｉｓｉｏｎの値は、前述したように、４分音符が何ＴｉｃｋｅＴｉｍｅにあたるかを示したＴｉｃｋｅＴｉｍｅを基準とする時間長である。また、Ｂｅａｔは、これからユーザが演奏を開始する楽曲が何拍子（１小節＝１フレーズに何個の４分音符が含まれるか）の楽曲であるかを示す値を格納するＲＡＭ２０３上の変数であり（以下この変数の値を変数名と同じ「Ｂｅａｔ」とする）、４拍子の楽曲であればＢｅａｔ＝４、３拍子の楽曲であればＢｅａｔ＝３である。このＢｅａｔの値は、例えば図１の第１のスイッチパネル１０２のスイッチによってユーザが設定できる。従って、ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔの値は、現在演奏中の楽曲の１小節のＴｉｃｋｅＴｉｍｅ長を示している。つまり、ステップＳ１２０３において、ＣＰＵ２０１は、ＰｈｒａｓｅＰｏｉｎｔｅｒの値が、ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔで定まる１小節＝１フレーズのＴｉｃｋｅＴｉｍｅ長に等しくなったか否かを判定している。
【０１２５】
ＰｈｒａｓｅＰｏｉｎｔｅｒの値が１小節のＴｉｃｋｅＴｉｍｅ長に達したと判定した（ステップＳ１２０３の判定がＹＥＳである）場合には、ＣＰＵ２０１は、上記１小節＝１フレーズのＴｉｃｋｅＴｉｍｅ長区間の間に、前述した図９のステップＳ９０３の鍵盤処理によりＲＡＭ２０３上のフレーズバッファに記憶されている図１の鍵盤１０１上でユーザにより押鍵された各鍵に基づく音高列を、ユーザにより予め指定されている音声合成のための楽器の種類（前述した図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０５のその他スイッチ処理の説明を参照）に関するデータと共に、図６で説明した１フレーズ分の音高データ２１５として、図２の音声合成ＬＳＩ２０５に送り、図６〜図８で説明した統計的音声合成処理に従って、１フレーズ分の楽器音声出力データ２１７を合成し、ルーパＬＳＩ２２０に出力させる指示を行う（ステップＳ１２０４）。
【０１２６】
その後、ＣＰＵ２０１は、ＰｈｒａｓｅＰｏｉｎｔｅｒの値を０にリセットする（ステップＳ１２０５）。
【０１２７】
ＰｈｒａｓｅＰｏｉｎｔｅｒの値が１小節のＴｉｃｋｅＴｉｍｅ長に達していないと判定した（ステップＳ１２０３の判定がＮＯである）場合には、ＣＰＵ２０１は、ステップＳ１２０４とＳ１２０５の処理は実行せずに、ステップＳ１２０２でのＲｅｃＰｏｉｎｔｅｒとＰｈｒａｓｅＰｏｉｎｔｅｒのインクリメント処理のみ実行して、ステップＳ１２０６の処理に移行する。
【０１２８】
続いて、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＰｌａｙＳｔａｒｔの値（以下この変数の値を変数名と同じ「ＰｌａｙＳｔａｒｔ」と呼ぶ）が１であるか否か、即ちループ再生の進行が指示されているか否かを判定する（ステップＳ１２０６）。
【０１２９】
ループ再生の進行が指示されていると判定した（ステップＳ１２０６の判定がＹＥＳである）場合には、ＣＰＵ２０１は、ＴｉｃｋｅＴｉｍｅ割込みが１単位だけ進行したのに対応して、図３の第１ループ記憶エリア３０１又は第２ループ記憶エリア３０２上でのループ再生のためのループ区間を制御するためのＲＡＭ２０３上の変数ＰｌａｙＰｏｉｎｔｅｒの変数の値（以下この変数の値を変数名と同じ「ＰｌａｙＰｏｉｎｔｅｒ」と呼ぶ）を値１だけインクリメントする。
【０１３０】
ループ再生の進行が指示されていないと判定した（ステップＳ１２０６の判定がＮＯである）場合には、ＣＰＵ２０１は、ステップＳ１２０７でのＰｌａｙＰｏｉｎｔｅｒのインクリメント処理は実行せずに、そのまま図１２のフローチャートで示されるＴｉｃｋＴｉｍｅ割込み処理を終了し、図９のメインフローチャートの何れかの処理の実行に戻る。
【０１３１】
次に、図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４のペダル制御処理と、図９のステップＳ９０５のルーパ制御処理に基づく、図２のルーパＬＳＩ２２０において実現される前述したＭｏｄｅ０からＭｏｄｅ３のループ録音／再生処理について、図１３〜図１５のフローチャートと、図１６及び図１７の動作説明図を用いて、詳細に説明する。
【０１３２】
図１６及び図１７の動作説明図において、図１６のｔ０〜図１７のｔ２２までは、ＴｉｃｋｅＴｉｍｅを単位として進行する１小節間隔＝１フレーズ間隔＝ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔ（図１２のステップＳ１２０３の説明を参照）の時間間隔を示している。以下、単に時刻ｔ０などと記載した場合には、ＴｉｃｋｅＴｉｍｅ単位の時刻を表しているものとする。また、以下の説明において、「小節」と「フレーズ」は同じ意味で用いるものとし、記載は「小節」で統一する。
【０１３３】
図１３は、図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４のペダル制御処理の詳細を示すフローチャートである。まず、電子鍵盤楽器１００がパワーオンされた直後は、図１３に示されるＲＡＭ２０３上の変数Ｍｏｄｅの値（以下この変数の値を変数名と同じ「Ｍｏｄｅ」と呼ぶ）と、同じく変数ＰｒｅｖＭｏｄｅの値（以下この変数の値を変数名と同じ「ＰｒｅｖＭｏｄｅ」と呼ぶ）と、同じく前述した変数ＲｅｃＳｔａｒｔの各値は、例えば図９のステップＳ９０１内の図１０（ａ）のステップＳ１００３のその他初期化処理において、０にリセットされているとする。
【０１３４】
図１３のペダル制御処理において、ＣＰＵ２０１はまず、図１１のステップＳ１１０３でペダル１０５の操作が検出された後、そのペダル操作の種類を、図２のキースキャナ２０６を介して検出する（ステップＳ１３０１）。
【０１３５】
ステップＳ１３０１において、ユーザによるペダル１０５の操作がペダル１０５を１回だけ足等でタップするシングルタップの操作であったと判定された場合、ＣＰＵ２０１は、更に、現在のＭｏｄｅの値を判定する。
【０１３６】
ＣＰＵ２０１は、現在のＭｏｄｅの値が０である、即ちループ録音／再生が動作していない状態であると判定した場合には、Ｍｏｄｅ０からＭｏｄｅ１に遷移するための、図１３のステップＳ１３０３からＳ１３０８までの一連の処理を実行する。これは、図１６の動作例では、時刻ｔ０においてＭｏｄｅ０からペダル１０５がタップされた状態である。
【０１３７】
ＣＰＵ２０１はまず、Ｍｏｄｅ変数の値をＭｏｄｅ１を表す値１にセットし、更に、１つ前のＭｏｄｅ０に対応するＭｏｄｅの値０を、ＰｒｅｖＭｏｄｅ変数にセットする（ステップＳ１３０３）。
【０１３８】
次に、ＣＰＵ２０１は、Ｍｏｄｅ１でのループ録音を開始させるために、ＲｅｃＳｔａｒｔ変数に値１をセットする（ステップＳ１３０４）。
【０１３９】
次に、ＣＰＵ２０１は、図３のルーパＬＳＩ２２０上でループ録音を行うループ記憶エリアを示すＲＡＭ２０３上の変数ＲｅｃＡｒｅａ（以下この変数の値を変数名と同じ「ＲｅｃＡｒｅａ」と呼ぶ）に、図３の第１ループ記憶エリア３０１を表す値Ａｒｅａ１を記憶する（ステップＳ１３０５）。
【０１４０】
次に、ＣＰＵ２０１は、ループ録音のＴｉｃｋｅＴｉｍｅ単位での記憶アドレスを示す変数ＲｅｃＰｏｉｎｔｅｒに、−ＴｉｍｅＤｉｖｉｓｉｏｎ×Ｂｅａｔの値をセットし、また、変数ＰｈｒａｓｅＰｏｉｎｔｅｒに値０をセットする（ステップＳ１３０６）。図１２のステップＳ１２０３で説明したように、ＴｉｍｅＤｉｖｉｓｉｏｎ×Ｂｅａｔは１小節のＴｉｃｋｅＴｉｍｅ長である。ＲｅｃＰｏｉｎｔｅｒの値は０が先頭の記憶アドレスであるため、−ＴｉｍｅＤｉｖｉｓｉｏｎ×Ｂｅａｔの値は記憶が開始されるまで１小節分手前のタイミングを示していることになる。これは、ユーザが１小節目のループ演奏を開始してから音声合成ＬＳＩ２０５がそれに対応する楽器音声出力データ２１７の出力を開始するまで１小節分の遅延があるため、前述したＴｉｃｋＴｉｍｅ割込み処理でＲｅｃＰｏｉｎｔｅｒの値を０から開始させるまで１小節分遅延させるためである。
【０１４１】
次に、ＣＰＵ２０１は、Ｍｏｄｅ１ではループ再生は行わないため、ＰｌａｙＳｔａｒｔ変数に値０をセットする（ステップＳ１３０７）。
【０１４２】
更に、ＣＰＵ２０１は、ループ録音の末尾を示すＲＡＭ２０３上のＬｏｏｐＥｎｄ変数の値（以下この変数の値を変数名と同じ「ＬｏｏｐＥｎｄ」と呼ぶ）を、図２のＲＯＭ２０２に記憶されている十分に大きな数Ｍａｘとする（ステップＳ１３０８）。
【０１４３】
上述のようにして図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４のペダル制御処理内の図１３のステップＳ１３０３〜Ｓ１３０８の一連の処理によってＭｏｄｅ０でのユーザによるペダル１０５のシングルタップ操作によりＭｏｄｅ１が設定された後、ＣＰＵ２０１は、図９のステップＳ９０５に対応する図１４のルーパ制御処理において、以下の処理を実行する。
【０１４４】
図１４において、ＣＰＵ２０１はまず、ＲｅｃＳｔａｒｔ値が１であるか否かを判定する（ステップＳ１４０１）。Ｍｏｄｅ０からＭｏｄｅ１に状態が遷移した場合、図１３のステップＳ１３０４においてＲｅｃＳｔａｒｔ＝１にセットされているため、ステップＳ１４０１の判定はＹＥＳになる。
【０１４５】
ステップＳ１４０１の判定がＹＥＳの場合は、次に、ＣＰＵ２０１は、ＲｅｃＰｏｉｎｔｅｒ値がＬｏｏｐＥｎｄ値以上となったか否かを判定する（ステップＳ１４０２）。図１３のステップＳ１３０８においてＬｏｏｐＥｎｄ変数には十分大きな値が格納されているため、最初はステップＳ１４０２の判定はＮＯである。
【０１４６】
ステップＳ１４０２の判定がＮＯの場合、ＣＰＵ２０１は、現在ループ録音が停止中で、かつＲｅｃＰｏｉｎｔｅｒ値が０以上になったか否かを判定する（ステップＳ１４１０）。
【０１４７】
図１３のステップＳ１３０６において、ＲｅｃＰｏｉｎｔｅｒ値は１小節分のマイナス値−ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔが格納されている。このため、図１２のＴｉｃｋＴｉｍｅ割込み処理によりＲｅｃＳｔａｒｔ＝１となった後にＲｅｃＰｏｉｎｔｅｒ値が−ＴｉｍｅＤｅｖｉｓｉｏｎ×ＢｅａｔからＴｉｃｋｅＴｉｍｅが経過する毎に１ずつ順次インクリメントされて（図１２のステップＳ１２０２参照）、１小節分のＴｉｃｋｅＴｉｍｅ時間が経過してＲｅｃＰｏｉｎｔｅｒ値が０になるまでは、図１４のステップＳ１４１０の判定はＮＯになり続け、それに続く図１５のステップＳ１４１２のＰｌａｙＳｔａｒｔ値が１であるか否かの判定もＮＯになり続けるため（図１３のステップＳ１３０７参照）、実質的に図１４のルーパ制御処理では何も実行されないで時間のみが経過してゆく。
【０１４８】
やがて、１小節分のＴｉｃｋｅＴｉｍｅ時間が経過してＲｅｃＰｏｉｎｔｅｒ値が０になると、ＣＰＵ２０１は、図２のルーパＬＳＩ２２０内の図３のループ録音部３０３に対して、変数ＲｅｃＡｒｅａが示す値Ａｒｅａ１に対応する図３の第１ループ記憶エリア３０１に対して、変数ＲｅｃＰｏｉｎｔｅｒが示す先頭アドレス０からのループ録音の動作を開始させる（ステップＳ１４１１）。
【０１４９】
図１６の動作説明図において、時刻ｔ０において、ユーザがペダル１０５をタップすることにより状態がＭｏｄｅ０からＭｏｄｅ１に遷移し、ユーザはこれに合わせて、図１６（ａ）の時刻ｔ０に示されるように、図１の鍵盤１０１による小節毎の音高列を指定する押鍵によるループ演奏を開始する。図１６（ａ）に示される時刻ｔ０以降のループ演奏は、その押鍵指定が鍵盤１０１からキースキャナ２０６及びＣＰＵ２０１を介して音源ＬＳＩ２０４に伝達されることにより、音源ＬＳＩ２０４から対応する楽音出力データ２１８が出力され、ミキサ２１３、Ｄ／Ａコンバータ２１１及びアンプ２１４を介して特には図示しないスピーカから、対応する楽音が放音される。
【０１５０】
その後、時間が経過して、時刻ｔ０から１小節分のＴｉｃｋｅＴｉｍｅ時間の経過後の時刻ｔ１に、図１６（ｂ）に示されるように、音声合成ＬＳＩ２０５から第１小節目に対応する楽器音声出力データ２１７が出力され始め、これに同期して、上述したステップＳ１４１１の処理により、時刻ｔ１以降、図１６（ｃ）に示されるように、音声合成ＬＳＩ２０５から順次出力される第１小節目以降の楽器音声出力データ２１７の第１ループ記憶エリア３０１（Ａｒｅａ１）へのループ録音が開始される。このとき、図１６（ａ）のタイミングで示される例えば第１小節から第４小節までの演奏入力に対して、音声合成ＬＳＩ２０５からの楽器音声出力データ２１７の出力タイミング及び第１ループ記憶エリア３０１へのループ録音のタイミングは、図１６（ｂ）及び（ｃ）に示されるように、１小節分遅延することになる。これは、音声合成ＬＳＩ２０５が音高データ２１５として入力する小節毎の音符列に対して、１小節分遅延して楽器音声出力データ２１７を出力するという制約によるものである。ユーザの押鍵演奏に対して１小節遅れた楽器音声出力データ２１７は、ルーパＬＳＩ２２０に入力されるが、ミキサ２１３側には出力されないため対応する発音は行われない。
【０１５１】
時刻ｔ１で第１小節からのループ録音が開始された後、ＲｅｃＰｏｉｎｔｅｒの値が後述するＬｏｏｐＥｎｄに達するまでの間は、ＣＰＵ２０１による図１４のルーパ制御処理において、ステップＳ１４０１の判定がＹＥＳ→ステップＳ１４０２の判定がＮＯ→ステップＳ１４１０の判定がＮＯという制御が繰り返される。これにより、図２のルーパＬＳＩ２２０内の図３のループ録音部３０３は、時刻ｔ１で前述した図１４のステップＳ１４１１でＲｅｃＡｒｅａ＝Ａｒｅａ１が示す図３の第１ループ記憶エリア３０１へのＲｅｃＰｏｉｎｔｅｒ＝０（先頭アドレス）から開始したループ録音を継続し、図１６（ｂ）の時刻ｔ１から後述する時刻ｔ５までの図２の音声合成ＬＳＩ２０５から出力される第１小節から第４小節までの楽器音声出力データ２１７を順次、図１６（ｃ）に示されるようにループ録音することになる。
【０１５２】
次に、ユーザが、図１６（ａ）に示されるループ演奏中に、第４小節の末尾の時刻ｔ４のタイミングで、ペダル１０５をタップしたとする。この結果、図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４に対応する図１３のペダル制御処理において、前述したステップＳ１３０１の判定がシングルタップ、ステップＳ１３０２の現在Ｍｏｄｅの判定がＭｏｄｅ＝１であると判定されることにより、ＣＰＵ２０１は、Ｍｏｄｅ１からＭｏｄｅ２に遷移するための、図１３のステップＳ１３０９からＳ１３１４までの一連の処理を実行する。
【０１５３】
ＣＰＵ２０１はまず、Ｍｏｄｅ変数の値をＭｏｄｅ２を表す値２にセットし、更に、１つ前のＭｏｄｅ１に対応するＭｏｄｅの値１を、変数ＰｒｅｖＭｏｄｅにセットする（ステップＳ１３０９）。
【０１５４】
次に、ＣＰＵ２０１は、ループ録音の末尾を示すＬｏｏｐＥｎｄ変数に、現在のＲｅｃＰｏｉｎｔｅｒ値に、１小節分のＴｉｃｋｅＴｉｍｅ時間長を示す値ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔを加算した値をセットする（ステップＳ１３１０）。図１６の例では、ＲｅｃＰｏｉｎｔｅｒ値は時刻ｔ４を示しているが、図１６（ｂ）及び（ｃ）に示されるように、楽器音声出力データ２１７の出力タイミング及びループ録音のタイミングとして、時刻ｔ４は第３小節の終わりのタイミングを示しており、図１６（ａ）に示される第４小節の終わりのタイミングに対して１小節分遅れている。そこで、現在のＲｅｃＰｏｉｎｔｅｒ値に対して１小節分遅れた時刻ｔ５のタイミングまでループ録音を続行させて第４小節の終わりまで録音が完了されるようにするために、ループ録音の末尾を示すＬｏｏｐＥｎｄ変数に、現在のＲｅｃＰｏｉｎｔｅｒ値に、１小節分のＴｉｃｋｅＴｉｍｅ時間長を示す値ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔ］を加算した値がセットされる。即ち、ＬｏｏｐＥｎｄ値は、４小節分のＴｉｃｋｅＴｉｍｅ時間長を有することになる。
【０１５５】
次に、ＣＰＵ２０１は、前述したＭｏｄｅ２による多重ループ録音のためのループ再生を有効にするために、変数ＰｌａｙＳｔａｒｔに値１をセットする（ステップＳ１３１１）。
【０１５６】
更に、ＣＰＵ２０１は、ループ再生のＴｉｃｋｅＴｉｍｅ単位でのアドレスを示すＰｌａｙＰｏｉｎｔｅｒ変数に、先頭アドレス０をセットする（ステップＳ１３１２）。
【０１５７】
また、ＣＰＵ２０１は、図３の第１ループ記憶エリア３０１及び第２ループ記憶エリア３０２のうち、ループ再生を行うループ記憶エリアを示す変数ＰｌａｙＡｒｅａに、いままでループ録音を行ってきている第１ループ記憶エリア３０１を示す値Ａｒｅａ１をセットする（ステップＳ１３１３）。
【０１５８】
そして、ＣＰＵ２０１は、図２のルーパＬＳＩ２２０内の図３のループ再生部３０４に対して、変数ＰｌａｙＡｒｅａが示す値Ａｒｅａ１に対応する図３の第１ループ記憶エリア３０１に対して、変数ＰｌａｙＰｏｉｎｔｅｒが示す先頭アドレス０からのループ再生の動作を開始させる（ステップＳ１３１４）。
【０１５９】
図１６の動作説明図において、時刻ｔ４において、ユーザがペダル１０５をタップすることにより状態がＭｏｄｅ１からＭｏｄｅ２に遷移する。図１６（ｅ）の時刻ｔ４からとして示されるように、いままでループ録音されていた図２のルーパＬＳＩ２２０内の第１ループ記憶エリア３０１の先頭アドレス＝第１小節からのループ再生音３１０の再生、及びこのループ再生音３１０がループ再生楽器音声出力データ２２２としてミキサ２１３から、Ｄ／Ａコンバータ２１１、アンプ２１４を介して特には図示しないスピーカから放音されるループ再生音に重ねて、ユーザは、図１６（ｄ）の時刻ｔ４からとして示されるように、再び第１小節からの小節毎の音高列を指定する押鍵演奏を開始する。図１６（ｄ）に示される時刻ｔ４以降のユーザの押鍵によるループ演奏は、その押鍵指定が鍵盤１０１からキースキャナ２０６及びＣＰＵ２０１を介して音源ＬＳＩ２０４に伝達されることにより、音源ＬＳＩ２０４から対応する楽音出力データ２１８が出力され、ミキサ２１３、Ｄ／Ａコンバータ２１１及びアンプ２１４を介して特には図示しないスピーカから、対応する楽音が放音される。これと同期して、上述したように、ルーパＬＳＩ２２０から出力されるループ再生楽器音声出力データ２２２も、ミキサ２１３でユーザのループ演奏による楽音出力データ２１８とミックスされて、放音される。このようにしてユーザは、直前に録音されたルーパＬＳＩ２２０からのループ再生楽器音声出力データ２２２を聞きながら、鍵盤１０１の押鍵によるループ演奏を行うことができる。
【０１６０】
一方、図１３のステップＳ１３１０の説明で前述したように、変数ＬｏｏｐＥｎｄには時刻ｔ５に対応する値が設定されている。従って、図９のステップＳ９０５に対応する図１４のルーパ制御処理において、ＣＰＵ２０１は、時刻ｔ４の後、図１２のＴｉｃｋＴｉｍｅ割込み処理のステップＳ１２０２によりＴｉｃｋｅＴｉｍｅ毎に順次インクリメントされるＲｅｃＰｏｉｎｔｅｒの値が時刻ｔ５に達するまでは、ステップＳ１４０１の判定がＹＥＳ、ステップＳ１４０２の判定がＮＯ、ステップＳ１４１０の判定がＮＯとなって、図１６（ｂ）に示されるように、音声合成ＬＳＩ２０５からの第４小節目の楽器音声出力データ２１７のルーパＬＳＩ２２０への入力と、図１６（ｃ）に示されるように、第１ループ記憶エリア３０１（Ａｒｅａ１）への（前述したステップＳ１４１１で開始された）第４小節目の楽器音声出力データ２１７のループ録音が続行される。
【０１６１】
その後、ＣＰＵ２０１は、図１２のＴｉｃｋＴｉｍｅ割込み処理のステップＳ１２０２によりＴｉｃｋｅＴｉｍｅ毎に順次インクリメントされるＲｅｃＰｏｉｎｔｅｒ値が時刻ｔ５に達すると、ステップＳ１４０１の判定がＹＥＳ、ステップＳ１４０２の判定もＹＥＳとなる。更に、現在はＭｏｄｅ＝１であるからステップＳ１４０３の判定はＮＯとなる。この結果、ＣＰＵ２０１は、まず変数ＲｅｃＡｒｅａに設定されている値が図３の第１ループ記憶エリア３０１を示すＡｒｅａ１であるか、そうでないか、つまりその値が図３の第２ループ記憶エリア３０２を示すＡｒｅａ２であるかを判定する（ステップＳ１４０４）。ステップＳ１４０４の判定がＹＥＳ（ＲｅｃＡｒｅａ＝Ａｒｅａ１）である場合、ＣＰＵ２０１は、変数ＲｅｃＡｒｅａの値をＡｒｅａ２に変更する（ステップＳ１４０５）。一方、ステップＳ１４０４の判定がＮＯ（ＲｅｃＡｒｅａ≠Ａｒｅａ１、つまりＲｅｃＡｒｅａ＝Ａｒｅａ２）である場合、ＣＰＵ２０１は、変数ＲｅｃＡｒｅａの値をＡｒｅａ１に変更する（ステップＳ１４０６）。図１６の動作例では、時刻ｔ５の時点で、ＲｅｃＡｒｅａの値は図１６（ｃ）に示されるようにＡｒｅａ１で図３の第１ループ記憶エリア３０１がループ録音の対象記憶エリアとなっていたが、時刻ｔ５以降はＲｅｃＡｒｅａの値が図１６（ｈ）に示されるようにＡｒｅａ２となって図３の第２ループ記憶エリア３０２が新たにループ録音の対象記憶エリアとなることになる。
【０１６２】
その後、ＣＰＵ２０１は、変数ＲｅｃＰｏｉｎｔｅｒの値を先頭アドレス０にセットする（ステップＳ１４０７）。
【０１６３】
そして、ＣＰＵ２０１は、図２のルーパＬＳＩ２２０内の図３のループ録音部３０３に対して、変数ＲｅｃＡｒｅａが示す値Ａｒｅａ２に対応する図３の第２ループ記憶エリア３０２に対して、変数ＲｅｃＰｏｉｎｔｅｒが示す先頭アドレス０からのループ録音の動作を開始させる（ステップＳ１４０８）。図１６の動作例では、図１６（ｈ）の時刻ｔ５以降がこれに対応する。
【０１６４】
次に、図１４の上記ステップＳ１４０８の後に実行される図１５のステップＳ１４１２では、ＣＰＵ２０１は、変数ＰｌａｙＳｔａｒｔの値が１であるか否かを判定する。図１６の動作例の時刻ｔ４の時点において、前述した図１３のステップＳ１３１１により変数ＰｌａｙＳｔａｒｔの値が１に設定されているため、ステップＳ１４１２の判定はＹＥＳとなる。
【０１６５】
続いて、ＣＰＵ２０１は、変数ＰｌａｙＰｏｉｎｔｅｒの値が変数ＬｏｏｐＥｎｄの値以上になったか否かを判定する（ステップＳ１４１３）。しかし、時刻ｔ４の時点ではまだ変数ＰｌａｙＰｏｉｎｔｅｒの値は０であるため（図１３のステップＳ１３１２参照）、ステップＳ１４１３の判定はＮＯとなる。この結果、ＣＰＵ２０１は、図１４及び図１５のフローチャートで示される図９のステップＳ９０５のルーパ制御処理を終了する。
【０１６６】
このようにして、時刻ｔ４で第１小節からのループ再生が開始された後、ＰｌａｙＰｏｉｎｔｅｒの値が前述したＬｏｏｐＥｎｄに達するまでの間は、ＣＰＵ２０１による図１５のルーパ制御処理において、ステップＳ１４１２の判定がＹＥＳ→ステップＳ１４１３の判定がＮＯというルーパ制御が繰り返される。これにより、図２のルーパＬＳＩ２２０内の図３のループ再生部３０４は、図１６（ｅ）の時刻ｔ４で前述した図１３のステップＳ１３１４でＰｌａｙＡｒｅａ＝Ａｒｅａ１が示す図３の第１ループ記憶エリア３０１からのＰｌａｙＰｏｉｎｔｅｒ＝０（先頭アドレス）から開始したループ再生を継続し、図１６（ｅ）の時刻ｔ４から後述する時刻ｔ８までの第１小節から第４小節までのループ再生音３１０を順次再生し、スピーカから放音することになる。
【０１６７】
このときユーザは、図１６（ｅ）の時刻ｔ４から後述する時刻ｔ８までスピーカから放音される第１小節から第４小節までのループ再生音に合わせて、図１６（ｄ）に示されるように、図１の鍵盤１０１の各鍵の押鍵による第１小節から第４小節までの小節毎のループ演奏を継続し、音源ＬＳＩ２０４がその演奏指定に対応する楽音出力データ２１８が放音出力される。
【０１６８】
この結果、上記第１小節から第４小節までの各小説の音高列と楽器の種類が、前述の図１２のステップＳ１２０４により、小節単位で音声合成ＬＳＩ２０５に入力される。この結果、音声合成ＬＳＩ２０５は、１小節遅延して、図１６（ｆ）の時刻ｔ５から後述する時刻ｔ９までのループ区間で、音楽表現が豊かに付加された楽器音声出力データ２１７を図２のルーパＬＳＩ２２０に出力する。
【０１６９】
一方、図１６（ｅ）に示される時刻ｔ４から後述する時刻ｔ８までの間にループ再生される図３のループ再生音３１０が図３のフレーズ遅延部３０５により１小節分遅延させられることにより、図１６（ｇ）に示されるように、時刻ｔ５から後述する時刻ｔ９までの間にミキサ３０７にループ再生音遅延出力３１１が入力する。そして、図１６（ｆ）に示されるように時刻ｔ５から時刻ｔ９の間にミキサ３０７に入力する楽器音声出力データ２１７と、図１６（ｇ）に示されるように時刻ｔ５から時刻ｔ９の間にミキサ３０７に入力するループ再生音遅延出力３１１は、第１小節から第４小節まで同じタイミングを有していることがわかる。そこで、ミキサ３０７は、楽器音声出力データ２１７とループ再生音遅延出力３１１とを混合して、図３のループ録音部３０３に入力させる。この結果、ループ録音部３０３は、時刻ｔ５の第１小節から時刻ｔ９の第４小節までの上記ミキシングデータを、ＲｅｃＡｒｅａ＝Ａｒｅａ２が示す図３の第２ループ記憶エリア３０２に順次多重ループ録音することになる。なお、フレーズ遅延部３０５の動作は、前述したＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔ値に同期しているものとする。
【０１７０】
ここで、図１６（ｅ）に示されるループ再生音３１０が、第４小節目の末尾のタイミング、即ちループ区間の末尾に対応する時刻ｔ８に達したとする。この場合、図９のステップＳ９０５に対応する図１４及び図１５のルーパ制御処理において、図１５のステップＳ１４１２の判定がＹＥＳとなった後、ＰｌａｙＰｏｉｎｔｅｒ値がＬｏｏｐＥｎｄ値に達したためにステップＳ１４１３の判定がＹＥＳとなる。更に、Ｍｏｄｅ値＝２であって、ＰｒｅｖＭｏｄｅ値＝１（図１３のステップＳ１３０９参照）であるから、ステップＳ１４１４の判定がＹＥＳとなる。この結果、ＣＰＵ２０１は、まず変数ＰｌａｙＡｒｅａに設定されている値が図３の第１ループ記憶エリア３０１を示すＡｒｅａ１であるか、そうでないか、つまりその値が図３の第２ループ記憶エリア３０２を示すＡｒｅａ２であるかを判定する（ステップＳ１４１５）。ステップＳ１４１５の判定がＹＥＳ（ＰｌａｙＡｒｅａ＝Ａｒｅａ１）である場合、ＣＰＵ２０１は、変数ＰｌａｙＡｒｅａの値をＡｒｅａ２に変更する（ステップＳ１４１６）。一方、ステップＳ１４１５の判定がＮＯ（ＰｌａｙＡｒｅａ≠Ａｒｅａ１、つまりＰｌａｙＡｒｅａ＝Ａｒｅａ２）である場合、ＣＰＵ２０１は、変数ＰｌａｙＡｒｅａの値をＡｒｅａ１に変更する（ステップＳ１４１７）。図１６の動作例では、時刻ｔ８の時点で、ＰｌａｙＡｒｅａの値は図１６（ｅ）に示されるようにＡｒｅａ１で図３の第１ループ記憶エリア３０１がループ再生の対象記憶エリアとなっていたが、時刻ｔ８以降はＰｌａｙＡｒｅａの値がＡｒｅａ２となって図１６（ｊ）に示されるように図３の第２ループ記憶エリア３０２が新たにループ再生の対象記憶エリアとなることになる。
【０１７１】
その後、ＣＰＵ２０１は、変数ＰｒｅｖＭｏｄｅの値を２にセットする（ステップＳ１４１８）。
【０１７２】
更に、ＣＰＵ２０１は、変数ＰｌａｙＰｏｉｎｔｅｒの値を先頭アドレス０にセットする（ステップＳ１４１９）。
【０１７３】
そして、ＣＰＵ２０１は、図２のルーパＬＳＩ２２０内の図３のループ再生部３０４に対して、変数ＰｌａｙＡｒｅａが示す値Ａｒｅａ２に対応する図３の第２ループ記憶エリア３０２に対して、変数ＰｌａｙＰｏｉｎｔｅｒが示す先頭アドレス０からのループ再生の動作を開始させる（ステップＳ１４２０）。図１６の動作例では、図１６（ｊ）の時刻ｔ８以降がこれに対応する。
【０１７４】
一方、図１６（ｈ）に示されるループ録音は、第４小節目の末尾のタイミングに対応する時刻ｔ９で、ループ区間の末尾に達する。この場合、図９のステップＳ９０５に対応する図１４及び図１５のルーパ制御処理において、図１４のステップＳ１４０１の判定がＹＥＳとなった後、ＲｅｃＰｏｉｎｔｅｒ値がＬｏｏｐＥｎｄ値に達したためにステップＳ１４０２の判定がＹＥＳとなる。更に、Ｍｏｄｅ値＝２であるから、ステップＳ１４０３の判定がＮＯとなる。この結果、ＣＰＵ２０１は、前述したステップＳ１４０４からＳ１４０６で、ループ録音するループ記憶エリアを交換する処理を実行する。この結果、図１６の動作例では、時刻ｔ９の時点で、ＲｅｃＡｒｅａの値は図１６（ｈ）に示されるようにＡｒｅａ２で図３の第２ループ記憶エリア３０２がループ録音の対象記憶エリアとなっていたが、時刻ｔ９以降はＲｅｃＡｒｅａの値がＡｒｅａ１となって図１６（ｍ）に示されるように図３の第１ループ記憶エリア３０１が新たにループ録音の対象記憶エリアとなることになる。
【０１７５】
その後、ＣＰＵ２０１は、ＲｅｃＰｏｉｎｔｅｒの値を０にセットする（ステップＳ１４０７）。
【０１７６】
そして、ＣＰＵ２０１は、図２のルーパＬＳＩ２２０内の図３のループ録音部３０３に対して、変数ＲｅｃＡｒｅａが示す値Ａｒｅａ１に対応する図３の第１ループ記憶エリア３０１に対して、変数ＲｅｃＰｏｉｎｔｅｒが示す先頭アドレス０からのループ録音の動作を開始させる（ステップＳ１４０８）。図１６の動作例では、図１６（ｍ）の時刻ｔ９以降がこれに対応する。
【０１７７】
以上説明したようにして、Ｍｏｄｅ＝２において、ループ再生及びそれに同期した多重ループ録音がループ区間の末尾まで達すると、第１ループ記憶エリア３０１と第２ループ記憶エリア３０２の間で、いままでループ録音していたループ記憶エリアといままでループ再生していたループ記憶エリアが交換されて、多重ループ録音が続行される。これにより、ユーザは、ループ区間のループ再生音３１０に、自分の演奏に基づいて得られる楽器音声出力データ２１７を次々と多重ループ録音させながら、ループ区間のループ再生音３１０を生成してゆくことができる。
【０１７８】
上述のＭｏｄｅ＝２における例えば図１６（ｉ）及び図１７（ｉ）のループ演奏中に、任意のタイミング、例えば第４小節の末尾の時刻ｔ１２のタイミングで、ユーザがペダル１０５をタップしたとする。この結果、図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４に対応する図１３のペダル制御処理において、前述したステップＳ１３０１の判定がシングルタップ、ステップＳ１３０２の現在Ｍｏｄｅの判定がＭｏｄｅ＝２であると判定されることにより、ＣＰＵ２０１は、Ｍｏｄｅ２からＭｏｄｅ３に遷移するための、図１３のステップＳ１３１５からＳ１３２１までの一連の処理を実行する。
【０１７９】
ＣＰＵ２０１はまず、Ｍｏｄｅ変数の値をＭｏｄｅ３を表す値３にセットし、更に、１つ前のＭｏｄｅ２に対応するＭｏｄｅの値２を、変数ＰｒｅｖＭｏｄｅにセットする（ステップＳ１３１５）。
【０１８０】
次に、ＣＰＵ２０１は、ループ再生のＴｉｃｋｅＴｉｍｅ単位でのアドレスを示すＰｌａｙＰｏｉｎｔｅｒ変数に、先頭アドレス０をセットする（ステップＳ１３１６）。
【０１８１】
続いて、ＣＰＵ２０１は、前述した図１５のステップＳ１４１５からＳ１４１７の一連の処理と同様の図１３のステップＳ１３１７〜Ｓ１３１９で、ループ再生するループ記憶エリアを交換する処理を実行する。この結果、図１６〜図１７の動作例では、時刻ｔ１２の時点で、ＰｌａｙＡｒｅａの値は図１７（ｊ）に示されるようにＡｒｅａ２で図３の第２ループ記憶エリア３０２がループ再生の対象記憶エリアとなっていたが、時刻ｔ１２以降はＰｌａｙＡｒｅａの値がＡｒｅａ１となって図１７（ｎ）に示されるようにいままで多重ループ録音の対象であった図３の第１ループ記憶エリア３０１が新たにループ再生の対象記憶エリアとなることになる。
【０１８２】
次に、ＣＰＵ２０１は、ループ録音の末尾を示すＬｏｏｐＥｎｄ変数に、現在のＲｅｃＰｏｉｎｔｅｒ値に、１小節分のＴｉｃｋｅＴｉｍｅ時間長を示す値ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔを加算した値をセットする（ステップＳ１３２０）。図１７の例では、ＲｅｃＰｏｉｎｔｅｒ値は時刻ｔ１２を示しているが、図１７（ｍ）に示されるように、ループ録音のタイミングとして、時刻ｔ１２は第３小節の終わりのタイミングを示しており、図１６（ｉ）に示される第４小節の終わりのタイミングに対して１小節分遅れている。そこで、現在のＲｅｃＰｏｉｎｔｅｒ値に対して１小節分遅れた時刻ｔ１３のタイミングまでループ録音を続行させて第４小節の終わりまで録音が完了されるようにするために、ループ録音の末尾を示すＬｏｏｐＥｎｄ変数に、現在のＲｅｃＰｏｉｎｔｅｒ値に、１小節分のＴｉｃｋｅＴｉｍｅ時間長を示す値ＴｉｍｅＤｅｖｉｓｉｏｎ×Ｂｅａｔ］を加算した値がセットされる。
【０１８３】
そして、ＣＰＵ２０１は、図２のルーパＬＳＩ２２０内の図３のループ再生部３０４に対して、変数ＰｌａｙＡｒｅａが示す値Ａｒｅａ１に対応する図３の第１ループ記憶エリア３０１に対して、変数ＰｌａｙＰｏｉｎｔｅｒが示す先頭アドレス０からのループ再生の動作を開始させる（ステップＳ１３２１）。
【０１８４】
ここで、図１５のステップＳ１４１２では、ＣＰＵ２０１は、変数ＰｌａｙＳｔａｒｔの値が１であるか否かを判定する。図１７の動作例の時刻ｔ１２の時点において、変数ＰｌａｙＳｔａｒｔの値はＭｏｄｅ２から継続して１に設定されているため、ステップＳ１４１２の判定はＹＥＳとなる。
【０１８５】
続いて、ＣＰＵ２０１は、変数ＰｌａｙＰｏｉｎｔｅｒの値が変数ＬｏｏｐＥｎｄの値以上になったか否かを判定する（ステップＳ１４１３）。しかし、時刻ｔ１２の時点ではまだ変数ＰｌａｙＰｏｉｎｔｅｒの値は０であるため（図１３のステップＳ１３１６参照）、ステップＳ１４１３の判定はＮＯとなる。この結果、ＣＰＵ２０１は、図１４及び図１５のフローチャートで示される図９のステップＳ９０５のルーパ制御処理を終了する。
【０１８６】
このようにして、図１７（ｎ）に示されるように、時刻ｔ１２で第１小節からのループ再生が開始された後、ＰｌａｙＰｏｉｎｔｅｒの値が前述したＬｏｏｐＥｎｄに達するまでの間は、ＣＰＵ２０１による図１５のルーパ制御処理において、ステップＳ１４１２の判定がＹＥＳ→ステップＳ１４１３の判定がＮＯというルーパ制御が繰り返される。これにより、図２のルーパＬＳＩ２２０内の図３のループ再生部３０４は、図１７（ｎ）の時刻ｔ１２で前述した図１３のステップＳ１３２１でＰｌａｙＡｒｅａ＝Ａｒｅａ１が示す図３の第１ループ記憶エリア３０１からのＰｌａｙＰｏｉｎｔｅｒ＝０（先頭アドレス）から開始したループ再生を継続し、図１７（ｎ）の時刻ｔ１２から後述する時刻ｔ１６までの第１小節から第４小節までのループ再生音３１０を順次再生し、スピーカから放音することになる。
【０１８７】
このときユーザは、図１７（ｎ）の時刻ｔ１２から後述する時刻ｔ１６までスピーカから放音される第１小節から第４小節までのループ再生音に合わせて、例えば自由に演奏を楽しむことができ、鍵盤１０１での押鍵演奏により図２の音源ＬＳＩ２０４で楽音出力データ２１８が生成される。この楽音出力データ２１８は、ミキサ２１３において上記ループ再生音３１０と混合され、Ｄ／Ａコンバータ２１１、アンプ２１４を介して特には図示しないスピーカから放音される。
【０１８８】
ここで、図１３のステップＳ１３１０の説明で前述したように、変数ＬｏｏｐＥｎｄには時刻ｔ１３に対応する値が設定されている。従って、図９のステップＳ９０５に対応する図１４のルーパ制御処理において、ＣＰＵ２０１は、時刻ｔ１２の後、図１２のＴｉｃｋＴｉｍｅ割込み処理のステップＳ１２０２によりＴｉｃｋｅＴｉｍｅ毎に順次インクリメントされるＲｅｃＰｏｉｎｔｅｒの値が時刻ｔ１３に達するまでは、ステップＳ１４０１の判定がＹＥＳ、ステップＳ１４０２の判定がＮＯ、ステップＳ１４１０の判定がＮＯとなって、図１６（ｋ）に示されるように、音声合成ＬＳＩ２０５からの第４小節目の楽器音声出力データ２１７のルーパＬＳＩ２２０への入力と、図１６（ｌ）に示されるように、ループ再生音遅延出力３１１の入力と、図１６（ｍ）に示されるように、第１ループ記憶エリア３０１（Ａｒｅａ１）への第４小節目の楽器音声出力データ２１７のループ録音が続行される。
【０１８９】
その後、ＣＰＵ２０１は、図１２のＴｉｃｋＴｉｍｅ割込み処理のステップＳ１２０２によりＴｉｃｋｅＴｉｍｅ毎に順次インクリメントされるＲｅｃＰｏｉｎｔｅｒ値が時刻ｔ１３に達すると、ステップＳ１４０１の判定がＹＥＳ、ステップＳ１４０２の判定もＹＥＳとなる。更に、現在はＭｏｄｅ＝３であるからステップＳ１４０３の判定がＹＥＳとなる。この結果、ＣＰＵ２０１は、ループ録音を停止させるために、ＲｅｃＳｔａｒｔ変数に値０をセットする（ステップＳ１４０９）。その後、ＣＰＵ２０１は、図１５のステップＳ１４１２に移行する。
【０１９０】
これにより、１小節分の遅延を考慮したループ録音の終了、及びループ録音が行わ１２１２の判定がＮＯ→Ｓ１４１３の判定がＹＥＳ→Ｓ１４１４の判定がＮＯ→Ｓ１４１９→Ｓ１４２０）。この結果、図１７（ｐ）に示されるように、ループ区間の末尾の時刻ｔ２０までループ再生が行われた後に、図１７（ｔ）に示されるように、時刻ｔ２０から、今までループ再生を行っていた第１ループ記憶エリア３０１からのループ再生を行うＭｏｄｅ３に移行する。
【０１９１】
ここで、図１７（ｎ）には図示していないが、図１７（ｎ）に示されるループ再生音３１０が、第４小節目の末尾のタイミング、即ちループ区間の末尾に対応する時刻ｔ１６に達したとする。図１７（ｎ）の場合とは異なるが、ここでユーザがタップ操作をしなかった場合、図９のステップＳ９０５に対応する図１４及び図１５のルーパ制御処理において、図１５のステップＳ１４１２の判定がＹＥＳとなった後、ＰｌａｙＰｏｉｎｔｅｒ値がＬｏｏｐＥｎｄ値に達したためにステップＳ１４１３の判定がＹＥＳとなる。更に、Ｍｏｄｅ値＝３であるため、ステップＳ１４１４の判定がＮＯとなる。この結果、ＣＰＵ２０１は、ステップＳ１４１９にジャンプして、ＰｌａｙＰｏｉｎｔｅｒの値を先頭アドレス０にリセットする（ステップＳ１４１９）。
【０１９２】
そして、ＣＰＵ２０１は、図２のルーパＬＳＩ２２０内の図３のループ再生部３０４に対して、変数ＰｌａｙＡｒｅａが示す値Ａｒｅａ１に対応する図３の第１ループ記憶エリア３０１に対して、変数ＰｌａｙＰｏｉｎｔｅｒが示す先頭アドレス０からのループ再生の動作を繰り返される（ステップＳ１４２０）。図１６（ｎ）の時刻ｔ１２〜時刻１６と同様の第１ループ記憶エリア３０１からのループ再生が、延々と繰り返されることになる。
【０１９３】
次に、ユーザが、図１７（ｎ）に示されるＭｏｄｅ３によるループ再生中に、例えば第４小節の末尾の時刻ｔ１６のタイミングで、ペダル１０５をタップしたとする。この結果、図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４に対応する図１３のペダル制御処理において、前述したステップＳ１３０１の判定がシングルタップ、ステップＳ１３０２の現在Ｍｏｄｅの判定がＭｏｄｅ＝３であると判定されることにより、ＣＰＵ２０１は、Ｍｏｄｅ３からＭｏｄｅ２に戻って遷移するための、図１３のステップＳ１３２２からＳ１３２３までの一連の処理を実行する。
【０１９４】
ＣＰＵ２０１はまず、Ｍｏｄｅ変数の値をＭｏｄｅ２を表す値２にセットし、更に、１つ前のＭｏｄｅ３に対応するＭｏｄｅの値３を、変数ＰｒｅｖＭｏｄｅにセットする（ステップＳ１３２２）。
【０１９５】
次に、ＣＰＵ２０１は、Ｍｏｄｅ２でのループ録音を開始させるために、ＲｅｃＳｔａｒｔ変数に値１をセットする（ステップＳ１３２３）。
【０１９６】
次に、ＣＰＵ２０１は、変数ＰｌａｙＡｒｅａに設定されている値が図３の第１ループ記憶エリア３０１を示すＡｒｅａ１であるか、そうでないか、つまりその値が図３の第２ループ記憶エリア３０２を示すＡｒｅａ２であるかを判定する（ステップＳ１３２４）。ステップＳ１３２４の判定がＹＥＳ（ＰｌａｙＡｒｅａ＝Ａｒｅａ１）、即ち今までＭｏｄｅ３でループ再生中であったループ再生音３１０の読出し元が第１ループ記憶エリア３０１であった場合、次のＭｏｄｅ２においてもそれをそのままループ再生音３１０として使用し、ループ録音のループ記憶エリアは第２ループ記憶エリア３０２にするために、ループ録音を行うループ記憶エリアを示す変数ＲｅｃＡｒｅａに、図３の第２ループ記憶エリア３０２を表す値Ａｒｅａ２を記憶する（ステップＳ１３２５）。逆に、ステップＳ１３２４の判定がＮＯ（ＰｌａｙＡｒｅａ≠Ａｒｅａ１、つまりＰｌａｙＡｒｅａ＝Ａｒｅａ２）、即ち今までＭｏｄｅ３でループ再生中であったループ再生音３１０の読出し元が第２ループ記憶エリア３０２であった場合、次のＭｏｄｅ２においてもそれをそのままループ再生音３１０として使用し、ループ録音のループ記憶エリアは第１ループ記憶エリア３０１にするために、ループ録音を行うループ記憶エリアを示す変数ＲｅｃＡｒｅａに、図３の第１ループ記憶エリア３０１を表す値Ａｒｅａ１を記憶する（ステップＳ１３２６）。
【０１９７】
次に、ＣＰＵ２０１は、ループ録音のＴｉｃｋｅＴｉｍｅ単位での記憶アドレスを示す変数ＲｅｃＰｏｉｎｔｅｒに、−ＴｉｍｅＤｉｖｉｓｉｏｎ×Ｂｅａｔの値をセットし、また、変数ＰｈｒａｓｅＰｏｉｎｔｅｒに値０をセットする（ステップＳ１３２７）。この処理は、Ｍｏｄｅ１におけるステップＳ１３０６の処理と同じである。
【０１９８】
以上のＭｏｄｅ３からＭｏｄｅ２への遷移処理の後の図１７の(o)、（ｐ）、（ｑ）、（ｒ）、及び（ｓ）の時刻ｔ１６以降の動作例は、前述した図１６の（ｄ）、（ｅ）、（ｆ）、（ｇ）、及び（ｈ）の時刻ｔ４以降の動作例と同様である。
【０１９９】
次に、ユーザが、例えば図１７（ｏ）、（ｐ）、（ｑ）、（ｒ）、及び（ｓ）に示されるＭｏｄｅ２による多重ループ録音中に、例えば第２小節まで演奏した時刻ｔ１９のタイミングで、ペダル１０５を長押しタップしたとする。この結果、図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４に対応する図１３のペダル制御処理において、前述したステップＳ１３０１の判定が長押しであると判定されることにより、ＣＰＵ２０１は、最後に録音していた多重ループ録音のみをキャンセルしてその１つ前までの多重ループ録音結果を再生するＭｏｄｅ３に移行遷移するための処理を実行する。
【０２００】
即ち、ＣＰＵ２０１はまず、Ｍｏｄｅ変数値を３にする（ステップＳ１３２７）。
【０２０１】
次に、ＣＰＵ２０１は、ＲｅｃＳｔａｒｔ変数に値０をセットする（ステップＳ１３２８）。
【０２０２】
以上の処理により、ＣＰＵ２０１は、図１４のルーパ制御処理において、ステップＳ１４０１の判定がＮＯとなることにより、ループ録音動作を即座に（時刻ｔ１９で）停止する。また、ＣＰＵ２０１は、ＰｌａｙＰｏｉｎｔｅｒ値がＬｏｏｐＥｎｄまで達するのを待った後に、現在ループ再生を行っているループ記憶エリアをそのままにして、ＰｌａｙＰｏｉｎｔｅｒ値を０に戻し、最初からループ再生を繰り返す（図１５のステップＳ１４１２の判定がＹＥＳ→Ｓ１４１３の判定がＹＥＳ→Ｓ１４１４の判定がＮＯ→Ｓ１４１９→Ｓ１４２０）。この結果、Ｍｏｄｅ２の動作において、図１７（ｑ）、（ｒ）、（ｓ）に示される最後の多重ループ録音が時刻ｔ１９で即座にキャンセルされ、図１７（ｐ）に示されるループ再生がループ区間の末尾であるｔ２０まで実行された後に、時刻ｔ２０からＭｏｄｅ３によって同じループ再生音３１０をループ再生することができる。ユーザは、その後、ペダル１０５を再度タップする等してＭｏｄｅ２に移行し、多重ループ録音を続行することができる。
【０２０３】
最後に、ユーザは任意のタイミングでペダル１０５をダブルタップすることにより、ループ動作を停止させることができる。この結果、図９のステップＳ９０２のスイッチ処理内の図１１のステップＳ１１０４に対応する図１３のペダル制御処理において、前述したステップＳ１３０１の判定がダブルタップであると判定されることにより、ＣＰＵ２０１は、まずＭｏｄｅ値を０にリセットした後（ステップＳ１３２９）、ＲｅｃＳｔａｒｔ値とＰｌａｙＳｔａｒｔ値を共に０にリセットする（ステップＳ１３３０）。この結果、図１４及び図１５のルーパ制御処理において、ステップＳ１４０１とステップＳ１４１２の判定が共にＮＯとなって、ＣＰＵ２０１は、ループ制御を停止する。
【０２０４】
以上説明した実施形態では、一般的には楽器演奏とループ録音／再生操作を自動に行うには高度な演奏技術が必要であるが、簡単なフレーズ演奏を行いながらループ録音／再生操作を行うことにより、豊かな音楽表現が付加された楽器音声出力データ２１７に基づくループ録音／再生演奏を、簡単に実現することが可能となる。
【０２０５】
以上、音声合成ＬＳＩ２０５から出力される楽器音声出力データ２１７を活用した実施形態として、その楽器音声出力データ２１７を図２のルーパＬＳＩ２２０によるループ録音／再生に用いる実施形態について説明した。音声合成ＬＳＩ２０５から出力される楽器音声出力データ２１７を活用した他の実施形態として、フレーズ毎の楽器音声出力データ２１７の出力を、自動伴奏や自動リズムなどと共に自動録音し、その後に、自動演奏を楽しむという実施形態も考えられる。これにより、ユーザは、単調なフレーズ演奏を、非常に音楽性豊かな演奏に変換して、自動演奏を楽しむことが可能となる。
【０２０６】
その他、本発明により実現される様々な実施形態によれば、ユーザによる楽器音の演奏フレーズをプロの演奏家による楽器音の演奏フレーズに変換して、その変換された楽音を出力したりその楽音の出力に基づいてループ演奏をしたりできるようにすることが可能となる。
【０２０７】
図６及び図７を用いて説明したＨＭＭ音響モデルを採用した統計的音声合成処理の第１の実施例では、特定の演奏家や演奏スタイルなどのフレーズ演奏に関する微妙な音楽表現を再現することが可能となり、接続歪みのない滑らかな楽器音質を実現することが可能となる。更に、学習結果６１５（モデルパラメータ）の変換により、別の演奏家への適応や、多様なフレーズ演奏を表現することが可能となる。更に、ＨＭＭ音響モデルにおける全てのモデルパラメータを、学習用楽譜データ６１１及び学習用楽器音声データ６１２からから自働学習できることにより、特定の演奏家の特徴をＨＭＭ音響モデルとして獲得し、合成時にそれらの特徴を再現するような楽器演奏システムを自動的に構築することが可能となる。楽器音声出力の基本周波数や長さは楽譜のフレーズに従うものであり、ピッチの時間変化やリズムの時間構造を楽譜から一意に定めることもできるが、そこから合成される歌声は単調で機械的なものになり，楽器音としての魅力に欠けるものである。実際の演奏には，楽譜通りの画一化されたものだけではなく，音符音の音高や発音タイミング、拍の強弱やそれらの時間的な構造の変化により、それぞれの演奏家及び楽器の種類独自のスタイルが存在している。ＨＭＭ音響モデルを採用する統計的音声合成処理の第１の実施例では、楽器演奏音におけるスペクトルデータと音源データであるピッチデータの時系列変化をコンテキストに基づいてモデル化することができ、実際のフレーズ演奏により近い楽器音声の再生が可能となる。更に、統計的音声合成処理の第１の実施例で採用されるＨＭＭ音響モデルは、あるフレーズを演奏する際、楽器の振動や共鳴特性等における楽器音の音響特徴量系列がどのような時間変化をしながら発声されるか、という生成モデルに相当する。更に、統計的音声合成処理の第１の実施例において、音符と歌声の「ずれ」のコンテキストを含むＨＭＭ音響モデルを用いることにより、演奏家の演奏技術に依存して複雑に変化する傾向を有する演奏法を正確に再現できる楽器音声の合成が実現される。このようなＨＭＭ音響モデルを採用する統計的音声合成処理の第１の実施例の技術が、例えば電子鍵盤楽器１００によるリアルタイムのフレーズ演奏の技術と融合されることにより、いままで不可能であった、モデルとなる演奏家のフレーズ演奏技術を正確に反映させることのでき、まるでその演奏家が実際に演奏しているようなフレーズ演奏を、電子鍵盤楽器１００の鍵盤演奏等に合わせて、実現することが可能となる。
【０２０８】
図６及び図８を用いて説明したＤＮＮ音響モデルを採用した統計的音声合成処理の第２の実施例では、楽器音特徴量系列と音響特徴量系列の関係の表現として、統計的音声合成処理の第１の実施例における決定木に基づくコンテキストに依存したＨＭＭ音響モデルが、ＤＮＮに置き換えられる。これにより、決定木では表現することが困難な複雑な非線形変換関数によって楽器音特徴量系列と音響特徴量系列の関係を表現することが可能となる。また、決定木に基づくコンテキストに依存したＨＭＭ音響モデルでは、決定木に基づいて対応する学習データも分類されるため、各コンテキストに依存したＨＭＭ音響モデルに割り当てられる学習データが減少してしまう。これに対し、ＤＮＮ音響モデルでは学習データ全体から単一のＤＮＮを学習するため、学習データを効率良く利用することが可能となる。このため、ＤＮＮ音響モデルはＨＭＭ音響モデルよりも高精度に音響特徴量を予測することが可能となり、合成される楽器音声の自然性を大幅に改善することが可能となる。更に、ＤＮＮ音響モデルでは、フレームに関する楽器音特徴量系列を利用可能することが可能となる。即ち、ＤＮＮ音響モデルでは、予め音響特徴量系列と楽器音特徴量系列の時間的な対応関係が決められるため、ＨＭＭ音響モデルでは考慮することが困難であった「現在の音符の継続フレーム数」、「現在のフレームの音符内位置」などのフレームに関する楽器音特徴量を利用することが可能となる。これにより、フレームに関する楽器特徴量を用いることで、より詳細な特徴をモデル化することが可能となり，合成される楽器音声の自然性を改善することが可能となる。このようなＤＮＮ音響モデルを採用する統計的音声合成処理の第２の実施例の技術が、例えば電子鍵盤楽器１００によるリアルタイム演奏の技術と融合されることにより、鍵盤演奏等に基づく歌声の演奏を、モデルとなる演奏家の演奏技術に更に自然に近づけることが可能となる。
【０２０９】
以上説明した実施形態は、電子鍵盤楽器について本発明を実施したものであるが、本発明は電子弦楽器や電子管楽器等の他の電子楽器にも適用することができる。
【０２１０】
また、電子楽器の一形態としてのルーパ装置単体としての実施形態も可能である。この場合、ユーザは、楽器の種類指定と共に音高指定をフレーズ毎に行う簡単な操作を実施形態として実現されるルーパ装置に入力させることで、プロの演奏家が行うようなループ録音／再生演奏を実現することが可能となる。
【０２１１】
また、図６の発音モデル部６０８として採用可能な音声合成方式は、ケプストラム音声合成方式には限定されず、ＬＳＰ音声合成方式をはじめとして様々な音声合成方式を採用することが可能である。
【０２１２】
更に、以上説明した実施形態では、ＨＭＭ音響モデルを用いた統計的音声合成処理の第１の実施例又はＤＮＮ音響モデルを用いた第２の実施例の音声合成方式について説明したが、本発明はこれに限られるものではなく、例えばＨＭＭとＤＮＮを組み合わせた音響モデル等、統計的音声合成処理を用いた技術であればどのような音声合成方式が採用されてもよい。
【０２１３】
以上説明した実施形態では、音高列と楽器種類からなるフレーズは、リアルタイムに与えられているが、自動演奏データの一部として与えられてもよい。
【０２１４】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
互いに異なる音高データにそれぞれ対応する複数の操作子と、
任意の音高データを入力することにより、或る演奏家による或る楽器演奏の音響特徴量を示す音響特徴量データを出力する学習済み音響モデルを記憶しているメモリと、
少なくとも１つのプロセッサと、
を含み、
前記少なくとも１つのプロセッサは、
前記複数の操作子のなかのいずれかの操作子へのユーザ操作に応じて、前記いずれかの操作子に対応する音高データを前記学習済み音響モデルに入力し、
入力に応じて前記学習済み音響モデルが出力した前記音響特徴量データに基づいて前記或る演奏家による前記或る楽器演奏を推論した楽器音声出力データを出力する、
電子楽器。
（付記２）
付記１に記載の電子楽器において、
前記学習済み音響モデルは、
或る演奏家による或る楽器の演奏結果を示す学習用楽器音声データと、前記学習用楽器音声データに応じた学習用音高データを含む学習用楽譜データと、を機械学習することにより得られた学習済み音響モデルである。
（付記３）
付記１または２に記載の電子楽器において、
前記楽器音声出力データは、ユーザが演奏していない演奏技法に応じた音を含む演奏表現音データを含む。
（付記４）
付記３に記載の電子楽器において、
前記演奏技法は、スラーを含むアーティキュレーションの演奏技法を含む。
（付記５）
付記１から４のいずれかに記載の電子楽器において、
前記少なくとも１つのプロセッサは、
第１ユーザ操作に応じて夫々タイミングが異なる複数の音高データのフレーズ第１データを前記学習済み音響モデルに第１入力し、
前記第１入力に応じて前記学習済み音響モデルが出力した音響特徴量データに基づいて前記或る演奏家による前記或る楽器のフレーズ第１演奏を推論した第１フレーズ楽器音声出力データを繰り返し第１出力し、
繰り返し出力しているときに、第２ユーザ操作に応じて夫々タイミングが異なる複数の音高データのフレーズ第２データを前記学習済み音響モデルに第２入力し、
前記第２入力に応じて前記学習済み音響モデルが出力した音響特徴量データに基づいて前記或る演奏家による前記或る楽器のフレーズ第２演奏を推論した第２フレーズ楽器音声出力データを、前記第１フレーズ楽器音声出力データの前記第１出力に重ね合わせて第２出力する。
（付記６）
付記５に記載の電子楽器において、
前記少なくとも１つのプロセッサは、
前記第１出力による前記第２フレーズ楽器音声出力データに含まれる各音それぞれの出力タイミングを、前記第１フレーズ楽器音声出力データの各音それぞれの出力タイミングに合うように、前記第２出力を調整する。
（付記７）
付記１から６のいずれかに記載の電子楽器において、
前記音響特徴量データは、前記或る楽器の共鳴部をモデル化したスペクトルデータと、前記或る楽器の振動源をモデル化した音源データと、を含み、
前記少なくとも１つのプロセッサは、
前記スペクトルデータと、前記音源データと、に基づいて、前記楽器音声出力データを出力する。
（付記８）
付記１から７のいずれかにに記載の電子楽器において、
前記学習済み音響モデルは、少なくともディープニューラルネットワーク及び隠れマルコフモデルのいずれかにより機械学習されている。
（付記９）
互いに異なる音高データにそれぞれ対応する複数の操作子と、
任意の音高データを入力することにより、或る演奏家による或る楽器演奏の音響特徴量を示す音響特徴量データを出力する学習済み音響モデルを記憶しているメモリと、
を備える電子楽器に、
前記複数の操作子のなかのいずれかの操作子へのユーザ操作に応じて、前記いずれかの操作子に対応する音高データを前記学習済み音響モデルに入力させ、
入力に応じて前記学習済み音響モデルが出力した前記音響特徴量データに基づいて前記或る演奏家による前記或る楽器演奏を推論した楽器音声出力データを出力させる、方法。
（付記１０）
互いに異なる音高データにそれぞれ対応する複数の操作子と、
任意の音高データを入力することにより、或る演奏家による或る楽器演奏の音響特徴量を示す音響特徴量データを出力する学習済み音響モデルを記憶しているメモリと、
を備える電子楽器に、
前記複数の操作子のなかのいずれかの操作子へのユーザ操作に応じて、前記いずれかの操作子に対応する音高データを前記学習済み音響モデルに入力させ、
入力に応じて前記学習済み音響モデルが出力した前記音響特徴量データに基づいて前記或る演奏家による前記或る楽器演奏を推論した楽器音声出力データを出力させる、プログラム。
【符号の説明】
【０２１５】
１００  電子鍵盤楽器
１０１  鍵盤
１０２  第１のスイッチパネル
１０３  第２のスイッチパネル
１０４  ＬＣＤ
１０５  ペダル
２００  制御システム
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  音源ＬＳＩ
２０５  音声合成ＬＳＩ
２０６  キースキャナ
２０８  ＬＣＤコントローラ
２０９  システムバス
２１０  タイマ
２１１  Ｄ／Ａコンバータ
２１３、３０７  ミキサ
２１４  アンプ
２１５  音高データ
２１６  発音制御データ
２１７  楽器音声出力データ
２１８  楽音出力データ
２１９  ネットワークインタフェース
２２０  ルーパＬＳＩ
２２１  拍データ
２２２  ループ再生楽器音声出力データ
３０１、Ａｒｅａ１  第１ループ記憶エリア
３０２、Ａｒｅａ２  第２ループ記憶エリア
３０３  ループ録音部
３０４  ループ再生部
３０５  フレーズ遅延部３０５
３０６  拍抽出部
３１０  ループ再生音
３１１  ループ再生音遅延出力
６００  サーバコンピュータ
６０１  音声学習部
６０２  音声合成部
６０４  学習用音響特徴量抽出部
６０５  モデル学習部
６０６  学習済み音響モデル部
６０８  発音モデル部
６０９  音源生成部
６１０  合成フィルタ部
６１１  学習用楽譜データ
６１２  学習用楽器音声データ
６１４  学習用音響特徴量系列
６１５  学習結果
６１７  音響特徴量系列
６１８  スペクトルデータ
６１９  音源データ
【図１】
2020190676.tif 000065
【図２】
2020190676.tif 000066
【図３】
2020190676.tif 000067
【図４】
2020190676.tif 000068
【図５】
2020190676.tif 000069
【図６】
2020190676.tif 000070
【図７】
2020190676.tif 000071
【図８】
2020190676.tif 000072
【図９】
2020190676.tif 000073
【図１０】
2020190676.tif 000074
【図１１】
2020190676.tif 000075
【図１２】
2020190676.tif 000076
【図１３】
2020190676.tif 000077
【図１４】
2020190676.tif 000078
【図１５】
2020190676.tif 000079
【図１６】
2020190676.tif 000080
【図１７】
2020190676.tif 000081