(57)【要約】【課題】開始時点および終了時点が異なる同じ楽曲の音声データに対し、正しいタイミングで演奏データの同期再生を開始可能な記録装置、再生装置、記録方法、再生方法、およびプログラムを提供する。【解決手段】コントローラ部６は、音声データの再生に合わせて行われるピアノ３１を用いた演奏のデータを、ＳＭＦに記録する。その際、コントローラ部６は、楽曲の開始時点および終了時点の近辺に対応する音声データの一部を用いて参照用の音声データを生成し、参照用の音声データをＳＭＦに記録する。続いて、コントローラ部６は音声データの再生に合わせて、ＳＭＦに記録されたデータの再生を行う。その際、コントローラ部６は、音声データを用いて判定用の音声データを生成し、ＳＭＦに記録された参照用の音声データと判定用の音声データとの相関性に関する指標を算出し、その指標に基づいてＳＭＦのデータの再生タイミングを調整する。【選択図】        図１
2004151398.tif 000002
【特許請求の範囲】
【請求項１】
演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信手段と、
楽曲の音声波形を示す音声データを受信する音声データ受信手段と、
前記音声データから、前記楽曲の一部の音声波形を示す第１部分データを取り出す第１部分データ取得手段と、
前記第１部分データが表す音声波形を抽象化した第１参照用データを生成する第１参照用データ生成手段と、
前記音声データから、前記楽曲の一部とは異なる音声波形を示す第２部分データを取り出す第２部分データ取得手段と、
前記第２部分データが表す音声波形を抽象化した第２参照用データを生成する第２参照用データ生成手段と、
前記第１参照用データ、前記第１部分データの再生タイミングを示す第１基準タイミングデータ、前記第２参照用データおよび前記第２部分データの再生タイミングを示す第２基準タイミングデータを、前記演奏データと共に記録する記録手段と
を備えることを特徴とする記録装置。
【請求項２】
演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信手段と、
楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１基準タイミングデータを受信する第１参照用データ受信手段と、
前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２基準タイミングデータを受信する第２参照用データ受信手段と、
楽曲の音声波形を示す音声データを受信する音声データ受信手段と、
前記音声データの中から、前記第１参照用データが表す音声波形に類似する音声波形を示すデータを第１部分データとして選択する第１部分データ選択手段と、
前記音声データの中から、前記第２参照用データが表す音声波形に類似する音声波形を示すデータを第２部分データとして選択する第２部分データ選択手段と、
前記第１基準タイミングデータが示す第１基準時点を、前記第１部分データの再生タイミングに一致させ、かつ前記第２基準タイミングデータが示す第２基準時点を、前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整するタイミング調整手段と、
前記タイミング調整手段により調整された送信タイミングに基づき、前記制御データの送信を行う制御データ送信手段と
を備えることを特徴とする再生装置。
【請求項３】
演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信過程と、
楽曲の音声波形を示す音声データを受信する音声データ受信過程と、
前記音声データから、前記楽曲の一部の音声波形を示す第１部分データを取り出す第１部分データ取得過程と、
前記第１部分データが表す音声波形を抽象化した第１参照用データを生成する第１参照用データ生成過程と、
前記音声データから、前記楽曲の一部とは異なる音声波形を示す第２部分データを取り出す第２部分データ取得過程と、
前記第２部分データが表す音声波形を抽象化した第２参照用データを生成する第２参照用データ生成過程と、
前記第１参照用データ、前記第１部分データの再生タイミングを示す第１基準タイミングデータ、前記第２参照用データおよび前記第２部分データの再生タイミングを示す第２基準タイミングデータを、前記演奏データと共に記録する記録過程と
を備えることを特徴とする記録方法。
【請求項４】
演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信過程と、
楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１基準タイミングデータを受信する第１参照用データ受信過程と、
前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２基準タイミングデータを受信する第２参照用データ受信過程と、
楽曲の音声波形を示す音声データを受信する音声データ受信過程と、
前記音声データの中から、前記第１参照用データが表す音声波形に類似する音声波形を示すデータを第１部分データとして選択する第１部分データ選択過程と、
前記音声データの中から、前記第２参照用データが表す音声波形に類似する音声波形を示すデータを第２部分データとして選択する第２部分データ選択過程と、
前記第１基準タイミングデータが示す第１基準時点を、前記第１部分データの再生タイミングに一致させ、かつ前記第２基準タイミングデータが示す第２基準時点を、前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整するタイミング調整過程と、
前記タイミング調整過程において調整された送信タイミングに基づき、前記制御データの送信を行う制御データ送信過程と
を備えることを特徴とする再生方法。
【請求項５】
演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信処理と、
楽曲の音声波形を示す音声データを受信する音声データ受信処理と、
前記音声データから、前記楽曲の一部の音声波形を示す第１部分データを取り出す第１部分データ取得処理と、
前記第１部分データが表す音声波形を抽象化した第１参照用データを生成する第１参照用データ生成処理と、
前記音声データから、前記楽曲の一部とは異なる音声波形を示す第２部分データを取り出す第２部分データ取得処理と、
前記第２部分データが表す音声波形を抽象化した第２参照用データを生成する第２参照用データ生成処理と、
前記第１参照用データ、前記第１部分データの再生タイミングを示す第１基準タイミングデータ、前記第２参照用データおよび前記第２部分データの再生タイミングを示す第２基準タイミングデータを、前記演奏データと共に記録する記録処理と
をコンピュータに実行させるプログラム。
【請求項６】
演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信処理と、
楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１基準タイミングデータを受信する第１参照用データ受信処理と、
前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２基準タイミングデータを受信する第２参照用データ受信処理と、
楽曲の音声波形を示す音声データを受信する音声データ受信処理と、
前記音声データの中から、前記第１参照用データが表す音声波形に類似する音声波形を示すデータを第１部分データとして選択する第１部分データ選択処理と、
前記音声データの中から、前記第２参照用データが表す音声波形に類似する音声波形を示すデータを第２部分データとして選択する第２部分データ選択処理と、
前記第１基準タイミングデータが示す第１基準時点を、前記第１部分データの再生タイミングに一致させ、かつ前記第２基準タイミングデータが示す第２基準時点を、前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整するタイミング調整処理と、
前記タイミング調整処理において調整された送信タイミングに基づき、前記制御データの送信を行う制御データ送信処理と
をコンピュータに実行させるプログラム。
【請求項７】
演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データと、
楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１タイミングデータと、
前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２タイミングデータ
が記録された記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オーディオデータの再生に同期して、楽曲の演奏制御に関する情報を含む演奏データの再生を行う装置および方法に関する。
【０００２】
【従来の技術】
楽曲を再生するための手段として、音楽ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）などの記憶媒体から音声データを読み出し、読み出された音声データから音声を生成して出力する装置がある。また、楽曲を再生するための他の手段として、ＦＤ（Ｆｌｏｐｐｙ  Ｄｉｓｋ）などの記憶媒体から楽曲の演奏制御に関する情報を含むデータを読み出し、読み出されたデータを用いて音源装置の発音を制御することにより自動演奏を行う装置がある。楽曲の演奏制御に関する情報を含むデータとしては、ＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）規格に従って作成されたＭＩＤＩデータがある。
【０００３】
もし、一般に流通している音楽ＣＤに記録されている音声データの再生に対し、ＭＩＤＩデータによる自動演奏を同期させることが可能であれば、音楽ＣＤから再生される楽曲に対し、ＭＩＤＩデータにより好みの伴奏を付加でき、便利である。
【０００４】
一般に流通している音楽ＣＤとＭＩＤＩデータによる演奏の同期に関し、応用が可能と思われる従来技術として、演奏に付与する照明、画像、音響等の効果の内容を予め演奏データに記述しておき、演奏により発生するイベントに対応づけて演奏データに記録されたフラグを用いて各種効果の制御を正しいタイミングで行うものがある（例えば、特許文献１参照）。また、ＭＩＤＩデータの同期制御に関する従来技術として、非同期に発生するＭＩＤＩイベント間に同期用データを補充するものがある（例えば、特許文献２参照）。
【０００５】
【特許文献１】
特開２００１−１９５０６１号公報
【特許文献２】
特願２００１−２１５９５８号公報
【０００６】
【発明が解決しようとする課題】
従来の技術によれば、ＭＩＤＩデータに対し、正しいタイミングで音楽ＣＤの音声データの再生を開始することができる。しかしながら、単に音楽ＣＤの音声データの再生を正しいタイミングで開始するだけでは、ＭＩＤＩデータの記録に用いられたクロック速度とＭＩＤＩデータの再生に用いられるクロック速度とがわずかに異なる等の理由で、音楽ＣＤの再生による楽曲とＭＩＤＩデータの再生による演奏とが、曲が進むにつれずれてしまうという問題があった。
【０００７】
さらに、同じ楽曲に関し異なる版の音楽ＣＤが存在する場合、それぞれの版によって音声データの再生開始のタイミングから楽曲が実際に始まるタイミングまでの沈黙時間の長さが異なっていることがある。さらに、異なる版の音楽ＣＤの音声データは、記録に用いられたクロック速度がそれぞれ異なっていることがある。このため、それらを同じ再生装置により再生したとしても、楽曲の速度がわずかに異なることがある。このように沈黙時間や速度に差が生じるのは、多くの音楽ＣＤに記録されている音声データが、実際の演奏を記録したマスタデータに対し、音響効果等の編集作業を施した後に再度記録を行ったものであるためである。すなわち、その編集作業により沈黙時間の一部がカットされたり、編集作業後の音声データを再度記録する際に用いられるクロック速度が正確に同じではなかったりするため、版により沈黙時間や速度が異なる結果となる。
【０００８】
上述のように楽曲に関して複数の版の音楽ＣＤがある場合には、それぞれの版に対して異なる再生開始のタイミングを設定する必要がある。また、たとえＭＩＤＩデータの記録時および再生時のクロック速度等にずれが無くとも、版によってＭＩＤＩデータに対し音声データの楽曲が速く進行したり遅く進行したりする。従って、同じ楽曲であるにもかかわらず、それぞれの版に対し異なるＭＩＤＩデータを準備する必要があり、不便であった。
【０００９】
上述した状況に鑑み、本発明は、同じ楽曲に関する異なる複数の版の音声データに対し、同期再生が可能なＭＩＤＩデータ等の演奏データの記録装置、再生装置、記録方法、再生方法、プログラムおよび記録媒体を提供することを目的とする。
【００１０】
【課題を解決するための手段】
以上説明した課題を解決するため、本発明は、演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信手段と、楽曲の音声波形を示す音声データを受信する音声データ受信手段と、前記音声データから、前記楽曲の一部の音声波形を示す第１部分データを取り出す第１部分データ取得手段と、前記第１部分データが表す音声波形を抽象化した第１参照用データを生成する第１参照用データ生成手段と、前記音声データから、前記楽曲の一部とは異なる音声波形を示す第２部分データを取り出す第２部分データ取得手段と、前記第２部分データが表す音声波形を抽象化した第２参照用データを生成する第２参照用データ生成手段と、前記第１参照用データ、前記第１部分データの再生タイミングを示す第１基準タイミングデータ、前記第２参照用データおよび前記第２部分データの再生タイミングを示す第２基準タイミングデータを、前記演奏データと共に記録する記録手段とを備えることを特徴とする記録装置を提供する。
【００１１】
また好ましい態様において、本発明にかかる記録装置は、計時を行う計時手段をさらに有し、前記記録手段は、前記音声データ受信手段が前記第１部分データを受信する時点における前記計時の結果に基づき生成される前記第１基準タイミングデータと、前記音声データ受信手段が前記第２部分データを受信する時点における前記計時の結果に基づき生成される前記第２基準タイミングデータを記録することを特徴としている。
【００１２】
また別の好ましい態様において、本発明にかかる記録装置は、前記音声データの再生タイミングを示すタイムコードを受信するタイムコード受信手段をさらに有し、前記記録手段は、前記音声データ受信手段が前記第１部分データを受信する時点に前記タイムコード受信手段が受信するタイムコードに基づき生成される前記第１基準タイミングデータと、前記音声データ受信手段が前記第２部分データを受信する時点に前記タイムコード受信手段が受信するタイムコードに基づき生成される前記第２基準タイミングデータとを記録することを特徴としている。
【００１３】
また別の好ましい態様において、本発明にかかる記録装置は、前記音声データの所定期間の変化傾向を示す第１指標を生成する第１指標生成手段と、前記音声データの前記所定期間より長い期間の変化傾向を示す第２指標を生成する第２指標生成手段と、前記第１指標と前記第２指標とを比較して、前記音声データの急激な変化を検出する検出手段とをさらに有し、前記記録手段は、前記急激な変化のタイミングを示す変化タイミングデータをさらに記録する機能を有することを特徴としている。
【００１４】
また、本発明は、演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信手段と、楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１基準タイミングデータを受信する第１参照用データ受信手段と、前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２基準タイミングデータを受信する第２参照用データ受信手段と、楽曲の音声波形を示す音声データを受信する音声データ受信手段と、前記音声データの中から、前記第１参照用データが表す音声波形に類似する音声波形を示すデータを第１部分データとして選択する第１部分データ選択手段と、前記音声データの中から、前記第２参照用データが表す音声波形に類似する音声波形を示すデータを第２部分データとして選択する第２部分データ選択手段と、前記第１基準タイミングデータが示す第１基準時点を、前記第１部分データの再生タイミングに一致させ、かつ前記第２基準タイミングデータが示す第２基準時点を、前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整するタイミング調整手段と、前記タイミング調整手段により調整された送信タイミングに基づき、前記制御データの送信を行う制御データ送信手段とを備えることを特徴とする再生装置を提供する。
【００１５】
また好ましい態様において、本発明にかかる再生装置は、計時を行う計時手段をさらに有し、前記タイミング調整手段は、前記第１基準時点を、前記音声データ受信手段が前記第１部分データを受信する時点における前記計時の結果に基づく前記第１部分データの再生タイミングに一致させ、かつ前記第２基準時点を、前記音声データ受信手段が前記第２部分データを受信する時点における前記計時の結果に基づく前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整することを特徴としている。
【００１６】
また別の好ましい態様において、本発明にかかる再生装置は、前記音声データの再生タイミングを示すタイムコードを受信するタイムコード受信手段をさらに有し、前記タイミング調整手段は、前記第１基準時点を、前記音声データ受信手段が前記第１部分データを受信する時点に前記タイムコード受信手段が受信するタイムコードに基づく前記第１部分データの再生タイミングに一致させ、かつ前記第２基準時点を、前記音声データ受信手段が前記第２部分データを受信する時点に前記タイムコード受信手段が受信するタイムコードに基づく前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整することを特徴としている。
【００１７】
また別の好ましい態様において、本発明にかかる再生装置は、調整データを受信する調整データ受信手段をさらに有し、前記第１部分データ選択手段が前記第１部分データを選択できない場合、もしくは前記第２部分データ選択手段が前記第２部分データを選択できない場合、前記タイミング調整手段は、前記第１基準タイミングデータが示す第１基準時点もしくは前記第２基準タイミングデータが示す第２基準時点を、前記調整データが示すタイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整することを特徴としている。
【００１８】
また別の好ましい態様において、本発明にかかる再生装置は、楽曲の音声波形の急激な変化のタイミングを示す第１変化タイミングデータを受信する変化タイミングデータ受信手段と、前記音声データの所定期間の変化傾向を示す第１指標を生成する第１指標生成手段と、前記音声データの前記所定期間より長い期間の変化傾向を示す第２指標を生成する第２指標生成手段と、前記第１指標と前記第２指標とを比較して、前記音声データの急激な変化を検出し、前記急激な変化のタイミングを示す第２変化タイミングデータを生成する変化タイミングデータ生成手段と、前記第１変化タイミングデータおよび前記第２変化タイミングデータが示すタイミングに基づき、第１調整データおよび第２調整データを生成する調整データ生成手段とをさらに有し、前記第１部分データ選択手段が前記第１部分データを選択できない場合、もしくは前記第２部分データ選択手段が前記第２部分データを選択できない場合、前記タイミング調整手段は、前記第１基準タイミングデータが示す第１基準時点を前記第１調整データが示すタイミングに一致させ、かつ前記第２基準タイミングデータが示す第２基準時点を、前記第２調整データが示すタイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整することを特徴としている。
【００１９】
また、本発明は、演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信過程と、楽曲の音声波形を示す音声データを受信する音声データ受信過程と、前記音声データから、前記楽曲の一部の音声波形を示す第１部分データを取り出す第１部分データ取得過程と、前記第１部分データが表す音声波形を抽象化した第１参照用データを生成する第１参照用データ生成過程と、前記音声データから、前記楽曲の一部とは異なる音声波形を示す第２部分データを取り出す第２部分データ取得過程と、前記第２部分データが表す音声波形を抽象化した第２参照用データを生成する第２参照用データ生成過程と、前記第１参照用データ、前記第１部分データの再生タイミングを示す第１基準タイミングデータ、前記第２参照用データおよび前記第２部分データの再生タイミングを示す第２基準タイミングデータを、前記演奏データと共に記録する記録過程とを備えることを特徴とする記録方法を提供する。
【００２０】
また、本発明は、演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信過程と、楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１基準タイミングデータを受信する第１参照用データ受信過程と、前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２基準タイミングデータを受信する第２参照用データ受信過程と、楽曲の音声波形を示す音声データを受信する音声データ受信過程と、前記音声データの中から、前記第１参照用データが表す音声波形に類似する音声波形を示すデータを第１部分データとして選択する第１部分データ選択過程と、前記音声データの中から、前記第２参照用データが表す音声波形に類似する音声波形を示すデータを第２部分データとして選択する第２部分データ選択過程と、前記第１基準タイミングデータが示す第１基準時点を、前記第１部分データの再生タイミングに一致させ、かつ前記第２基準タイミングデータが示す第２基準時点を、前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整するタイミング調整過程と、前記タイミング調整過程において調整された送信タイミングに基づき、前記制御データの送信を行う制御データ送信過程とを備えることを特徴とする再生方法を提供する。
【００２１】
また、本発明は、演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信処理と、楽曲の音声波形を示す音声データを受信する音声データ受信処理と、前記音声データから、前記楽曲の一部の音声波形を示す第１部分データを取り出す第１部分データ取得処理と、前記第１部分データが表す音声波形を抽象化した第１参照用データを生成する第１参照用データ生成処理と、前記音声データから、前記楽曲の一部とは異なる音声波形を示す第２部分データを取り出す第２部分データ取得処理と、前記第２部分データが表す音声波形を抽象化した第２参照用データを生成する第２参照用データ生成処理と、前記第１参照用データ、前記第１部分データの再生タイミングを示す第１基準タイミングデータ、前記第２参照用データおよび前記第２部分データの再生タイミングを示す第２基準タイミングデータを、前記演奏データと共に記録する記録処理とをコンピュータに実行させるプログラムを提供する。
【００２２】
また、本発明は、演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データを受信する演奏データ受信処理と、楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１基準タイミングデータを受信する第１参照用データ受信処理と、前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２基準タイミングデータを受信する第２参照用データ受信処理と、楽曲の音声波形を示す音声データを受信する音声データ受信処理と、前記音声データの中から、前記第１参照用データが表す音声波形に類似する音声波形を示すデータを第１部分データとして選択する第１部分データ選択処理と、前記音声データの中から、前記第２参照用データが表す音声波形に類似する音声波形を示すデータを第２部分データとして選択する第２部分データ選択処理と、前記第１基準タイミングデータが示す第１基準時点を、前記第１部分データの再生タイミングに一致させ、かつ前記第２基準タイミングデータが示す第２基準時点を、前記第２部分データの再生タイミングに一致させるように、前記演奏タイミングデータにより示される前記制御データの各データの送信タイミングを調整するタイミング調整処理と、前記タイミング調整処理において調整された送信タイミングに基づき、前記制御データの送信を行う制御データ送信処理とをコンピュータに実行させるプログラムを提供する。
【００２３】
また、本発明は、演奏の制御を指示する制御データおよび該演奏の制御の実行タイミングを指示する演奏タイミングデータからなる演奏データと、楽曲の音声波形の一部を抽象化した第１参照用データおよび前記第１参照用データに対応づけられたタイミングデータである第１タイミングデータと、前記楽曲の音声波形の他の一部を抽象化した第２参照用データおよび前記第２参照用データに対応づけられたタイミングデータである第２タイミングデータが記録された記録媒体を提供する。
【００２４】
かかる構成による装置、方法、プログラム、および記録媒体を用いると、音声データを再生する場合、音声データが表す波形の類似性により、参照用データの音声データに対する時間的な位置を決定することができ、さらに参照用データの時間的な位置に基づき、制御データの再生のタイミングを決定することができる。その結果、音声データと制御データとの同期再生が実現される。
【００２５】
【発明の実施の形態】
［１：実施形態］
以下、本発明の好適な実施形態として、音楽ＣＤに記録された音声データの再生と、ＦＤに記録されたＭＩＤＩデータによる演奏との同期再生を実現する装置およびその装置の動作を説明する。なお、本発明において利用可能な音声データは音楽ＣＤに記録された音声データに限られず、あらゆる形態の音声データが利用可能である。さらに、本発明において利用可能な演奏データはＭＩＤＩデータに限られず、あらゆる形態の演奏データが利用可能である。
【００２６】
［１．１：構成、機能、およびデータフォーマット］
［１．１．１：全体構成］
図１は、本発明の実施形態に係る同期記録再生装置ＳＳの構成を示す図である。同期記録再生装置ＳＳは、ＣＤドライブ１、ＦＤドライブ２、自動演奏ピアノ部３、発音部４、操作表示部５およびコントローラ部６により構成されている。ＣＤドライブ１、ＦＤドライブ２、自動演奏ピアノ部３、発音部４および操作表示部５はそれぞれ通信線によりコントローラ部６と接続されている。また、自動演奏ピアノ部３と発音部４は、通信線により直接接続されている。
【００２７】
［１．１．２：ＣＤドライブ］
音楽ＣＤに記録されているオーディオデータは、音声情報を示す音声データ、音声データの再生のタイミングを示すタイムコード、および各音声データの開始時間等の目次情報を含んでいる。ＣＤドライブ１は、コントローラ部６からの指示に従って音声データを音楽ＣＤから読み出し、読み出した音声データを順次出力する装置である。ＣＤドライブ１は通信線により、コントローラ部６の通信インタフェース６５と接続されている。
【００２８】
ＣＤドライブ１から出力される音声データは、サンプリング周波数４４１００Ｈｚ、量子化ビット数１６の左右２チャンネルからなるデジタル音声データである。なお、ＣＤドライブ１から出力されるデータには、タイムコードは含まれていない。ＣＤドライブ１の構成は、音声データをデジタル出力可能な一般的なＣＤドライブと同様であるため、その説明は省略する。
【００２９】
［１．１．３：ＦＤドライブ］
ＦＤドライブ２は、ＳＭＦ（Ｓｔａｎｄａｒｄ  ＭＩＤＩ  Ｆｉｌｅ）をＦＤに記録し、またＦＤに記録されているＳＭＦを読み取り、読み取ったＳＭＦを送信する装置である。ＦＤドライブ２は通信線により、コントローラ部６の通信インタフェース６５と接続されている。なお、ＦＤドライブ２の構成は、一般的なＦＤドライブと同様であるため、その説明は省略する。
【００３０】
［１．１．４：イベントデータおよびＳＭＦ］
ＳＭＦは、ＭＩＤＩ規格に従った演奏制御の内容を示すデータであるイベントデータと、各イベントデータの実行タイミングを示すデータであるデルタタイムを含むファイルである。図２および図３を用いて、イベントデータおよびＳＭＦのフォーマットを説明する。
【００３１】
図２にはＳＭＦのフォーマットの概略が示されている。ＳＭＦはヘッダチャンクとトラックチャンクから成る。ヘッダチャンクには、トラックチャンネルに含まれるデータのフォーマットや時間単位等に関する制御データが含まれている。トラックチャンクには、イベントデータと、各イベントデータの実行タイミングを示すデルタタイムが含まれている。以下の説明においては、デルタタイムは、基準となる時点からの絶対的な時間とし、その単位を秒で表すこととするが、実際には、デルタタイムはＭＩＤＩ規格に従った表現形式により扱われる。また、デルタタイムは相対時間で表すようにしてもよいし、別の表現でもよい。
【００３２】
図３にはＳＭＦ中のイベントデータの例として、ノートオンイベント、ノートオフイベント、およびシステムエクスクルーシブイベントが示されている。以下、システムエクスクルーシブイベント以外のイベントデータをシステムエクスクルーシブイベントと区別する目的で、「演奏イベント」と呼ぶ。イベントデータは時間情報を持たず、リアルタイムに楽音の発音、消音、およびその他の制御を行う目的で利用される。
なお、本明細書においては、ＭＩＤＩデータとはＭＩＤＩ規格に従って作成されるデータの総称である。
【００３３】
［１．１．５：自動演奏ピアノ部］
自動演奏ピアノ部３は、同期記録再生装置ＳＳのユーザによる鍵操作およびペダル操作に応じて、音響的なピアノ音および電子的な楽音合成によるピアノ音を出力する楽音発生装置である。また、自動演奏ピアノ部３はユーザによる鍵操作およびペダル操作に応じて演奏イベントを生成し、生成した演奏イベントを送信する。さらに、自動演奏ピアノ部３は演奏イベントを受信して、受信した演奏イベントに応じて、音響的なピアノ音および電子的な楽音合成によるピアノ音による自動演奏を行う。
【００３４】
自動演奏ピアノ部３は、ピアノ３１、キーセンサ３２と、ペダルセンサ３３、ＭＩＤＩイベント制御回路３４、音源３５、および駆動部３６から構成されている。
【００３５】
キーセンサ３２およびペダルセンサ３３は、それぞれピアノ３１の複数の鍵および複数のペダルの各々に配設され、それぞれ鍵およびペダルの位置を検出する。キーセンサ３２およびペダルセンサ３３は、検出された位置情報を、それぞれの鍵およびペダルに対応した識別番号と検出の時間情報と共に、ＭＩＤＩイベント制御回路３４に送信する。
【００３６】
ＭＩＤＩイベント制御回路３４は、キーセンサ３２およびペダルセンサ３３から、それぞれの鍵およびペダルの位置情報を、鍵およびペダルの識別情報、および時間情報と共に受信し、これらの情報から即時にノートオンイベントやノートオフイベント等の演奏イベントを生成し、生成した演奏イベントをコントローラ部６および音源３５に出力する回路である。さらに、ＭＩＤＩイベント制御回路３４は、コントローラ部６から演奏イベントを受信し、受信した演奏イベントを音源３５もしくは駆動部３６に転送する機能も持つ。なお、ＭＩＤＩイベント制御回路３４が、コントローラ部６から受信する演奏イベントを音源３５と駆動部３６のいずれに転送するかは、コントローラ部６の指示による。
【００３７】
音源３５は、ＭＩＤＩイベント制御回路３４から演奏イベントを受信し、受信した演奏イベントに基づいて、各種楽器の音情報を左右２チャンネルのデジタル音声データとして出力する装置である。音源３５は受信した演奏イベントによって指示された音高のデジタル音声データを電子的に合成し、発音部４のミキサ４１に送信する。
【００３８】
駆動部３６は、ピアノ３１の各鍵および各ペダルに配設され、それらを駆動するソレノイド群およびそれらのソレノイド群を制御する制御回路から構成される。駆動部３６の制御回路は、ＭＩＤＩイベント制御回路から演奏イベントを受信すると、対応する鍵もしくはペダルに配設されたソレノイドへ供給する電流量を調節し、ソレノイドが発生する磁力を制御することにより、演奏イベントに応じた鍵もしくはペダルの動作を実現する。
【００３９】
［１．１．６：発音部］
発音部４は、自動演奏ピアノ部３およびコントローラ部６から音声データを受信し、受信した音声データを音に変換して出力する装置である。発音部４は、ミキサ４１、Ｄ／Ａコンバータ４２、アンプ４３、およびスピーカ４４から構成されている。
【００４０】
ミキサ４１は左右２チャンネルからなるデジタル音声データを複数受信し、それらを左右１組のデジタル音声データに変換するデジタルステレオミキサである。ミキサ４１は自動演奏ピアノ部３の音源３５からデジタル音声データを受信すると同時に、ＣＤドライブ１により音楽ＣＤから読み出されたデジタル音声データを、コントローラ部６を介して受信する。ミキサ４１は受信したこれらのデジタル音声データを算術平均し、左右１組のデジタル音声データとしてＤ／Ａコンバータ４２に送信する。
【００４１】
Ｄ／Ａコンバータ４２は、ミキサ４１からデジタル音声データを受信し、受信したデジタル音声データをアナログ音声信号に変換し、アンプ４３に出力する。アンプ４３は、Ｄ／Ａコンバータ４２から入力されるアナログ音声信号を増幅し、スピーカ４４に出力する。スピーカ４４は、アンプ４３から入力される増幅されたアナログ音声信号を音に変換する。その結果、音楽ＣＤに記録された音声データおよび音源３５が生成する音声データは、ステレオの音として発音部４から出力される。
【００４２】
［１．１．７：操作表示部］
操作表示部５は、同期記録再生装置ＳＳのユーザが同期記録再生装置ＳＳの各種操作を行う際に用いるユーザインタフェースである。操作表示部５はユーザが同期記録再生装置ＳＳに指示を与える際に押下するキーパッド、ユーザが同期記録再生装置ＳＳの状態を確認するための液晶ディスプレイ等を有している。ユーザによりキーパッドが押下されると、操作表示部５は押下されたキーパッドに対応する信号をコントローラ部６に出力する。また、操作表示部５はコントローラ部６から文字や図形の情報を含むビットマップデータを受信すると、受信したビットマップデータに基づき液晶ディスプレイに文字や図形を表示する。
【００４３】
［１．１．８：コントローラ部］
コントローラ部６は、同期記録再生装置ＳＳの全体を制御する装置であり、その構成は一般的なコンピュータ本体と同様である。すなわち、コントローラ部６はＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６１、ＣＰＵ（ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６２、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）６３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６４、および通信インタフェース６５から構成されている。これらの構成要素はバスにより相互に接続されている。また、コントローラ部６は図示せぬクロックを有し、コントローラ部６の各構成部の動作はこのクロックにより生成されるクロック信号に基づいて同期が取られている。
【００４４】
ＲＯＭ６１は各種の制御用プログラムを格納する不揮発性のメモリである。ＲＯＭ６１が格納する制御用プログラムには、一般的な制御処理を行うプログラムに加え、後述するＳＭＦの記録動作および再生動作における処理をＣＰＵ６２に実行させるプログラムが含まれている。ＣＰＵ６２は汎用的な処理を実行可能なマイクロプロセッサであり、ＲＯＭ６１から制御用プログラムを読み込み、読み込んだ制御用プログラムに従った制御処理を行う。ＤＳＰ６３はデジタル音声データを高速に処理可能なマイクロプロセッサであり、ＣＰＵ６２の制御に従い、ＣＤドライブ１やＦＤドライブ２からコントローラ部６が受信するデジタル音声データに対し、後述する相関判定用データ生成処理および相関判定処理において必要とされるフィルタ処理等の処理を施し、その結果得られるデータをＣＰＵ６２に送信する。ＲＡＭ６４は揮発性メモリであり、ＣＰＵ６２およびＤＳＰ６３が利用するデータを一時的に格納する。通信インタフェース６５は各種フォーマットのデジタルデータを送受信可能なインタフェースであり、ＣＤドライブ１、ＦＤドライブ２、自動演奏ピアノ部３、発音部４、および操作表示部５との間で送受信されるデジタルデータに対し必要なフォーマット変換を行い、それらの各装置とコントローラ部６との間のデータの中継を行う。
【００４５】
［１．２：動作］
続いて、同期記録再生装置ＳＳの動作を説明する。
［１．２．１：記録動作］
まず、同期記録再生装置ＳＳのユーザが市販の音楽ＣＤの再生に合わせてピアノを演奏し、その演奏の情報をＳＭＦとしてＦＤに記録する際の同期記録再生装置ＳＳにおける動作を説明する。なお、以下に説明する記録動作において用いられる音楽ＣＤを、後述する再生動作において用いられる音楽ＣＤと区別するために、音楽ＣＤ−Ａと呼ぶ。さらに、音楽ＣＤ−Ａには複数の楽曲の音声データが記録されているが、以下の説明においてはその中の１曲である楽曲Ｎに関する音声データＮＡについて、記録動作が行われるものとする。
【００４６】
［１．２．１．１：記録の開始操作］
ユーザは、音楽ＣＤ−ＡをＣＤドライブ１に、また十分な空き容量を持つＦＤをＦＤドライブ２にセットする。続いて、ユーザは音楽ＣＤ−Ａに含まれる楽曲Ｎに対する演奏データの記録開始を、操作表示部５のキーパッドを押下することにより指示する。操作表示部５は押下されたキーパッドに対応する信号をコントローラ部６に出力する。
【００４７】
コントローラ部６のＣＰＵ６２は操作表示部５から演奏データの記録開始に対応する信号を受信すると、ＣＤドライブ１に音声データＮＡの再生命令を送信する。この再生命令に応じて、ＣＤドライブ１は音楽ＣＤ−Ａから音声データＮＡを読み出し、読み出した音声データＮＡをコントローラ部６に順次送信する。
【００４８】
コントローラ部６はＣＤドライブ１から、１／４４１００秒ごとに左右１組のデータを受信する。以下、左右１組のデータの値を（Ｒ（ｎ），Ｌ（ｎ））と表し、この１組のデータの値、もしくは後述する相関判定用データ生成処理もしくは管理用イベント生成処理においてこの１組のデータから生成される各データの値を「サンプル値」と呼ぶ。また、異なるサンプル値を区別する場合には、サンプル値（ｎ）のように表す。ｎは音声データの順序を表す整数で、先頭のデータから順に０、１、２、・・・と増加する。Ｒ（ｎ）およびＬ（ｎ）はそれぞれ右チャンネルのデータおよび左チャンネルのデータの値を示し、−３２７６８〜３２７６７のいずれかの整数である。
【００４９】
［１．２．１．２：音声データの発音部への送信］
ＣＰＵ６２は、ＣＤドライブ１から音声データＮＡの最初のサンプル値、すなわちサンプル値（０）を受信すると、クロックから得られるクロック信号に基づき、その時点（以下、「基準時点Ｐ」と呼ぶ）を基準とする計時を開始する。すなわち、基準時点Ｐにおける時間は０．００秒である。
【００５０】
ＣＰＵ６２はサンプル値（０）に続き、サンプル値（１）、サンプル値（２）、・・・を順次受信する。ＣＰＵ６２は受信したサンプル値を順次、発音部４に送信する。発音部４はサンプル値を受信すると、これを音に変換し出力する。その結果、ユーザは楽曲Ｎを聴くことができる。なお、ＣＰＵ６２は楽曲Ｎの最後のサンプル値を発音部４に送信するまで、この送信処理を続ける。
【００５１】
［１．２．１．３：音声データのキューへの記録］
ＣＰＵ６２は受信したサンプル値を順次、発音部４に送信すると同時に、受信したサンプル値を、サンプル値の受信時刻を示す時間情報と共に、ＲＡＭ６４のキューに記録する。この時間情報は、基準時点Ｐからの経過時間である。以下、サンプル値（ｎ）に対応する時間情報を時間情報（ｎ）と呼ぶ。
【００５２】
本実施形態においては、例として、このキューに記録可能なサンプル値の数は１３２３０００組とし、ＣＰＵ６２はキューに記録されているサンプル値の数が１３２３０００組に達した後は、新たにサンプル値を受信すると、キューの先頭のサンプル値を削除し、キューの末尾に新たに受信したサンプル値を記録する。なお、キューに記録される１３２３０００組のサンプル値は３０秒間分の音声データである。ＣＰＵ６２は音声データＮＡの最後のサンプル値を受信するまで、サンプル値および時間情報をキューに記録する処理を続ける。
【００５３】
［１．２．１．４：先頭参照用未加工音声データの記録］
ＣＰＵ６２は、上述したサンプル値の発音部４への送信およびキューへの記録を継続する一方で、音声データにおいて実際に楽曲が始まる時点以降の一定時間に対応するサンプル値を別途、ＲＡＭ６４に記録する処理を行う。本実施形態においては、例として、この処理で記録されるサンプル値は２１６組、すなわち６５５３６組とする。なお、６５５３６組のサンプル値は約１．４９秒間分の音声データである。以下、この６５５３６組のサンプル値を「先頭参照用未加工音声データ」と呼ぶ。続いて、先頭参照用未加工音声データの記録処理を説明する。
【００５４】
まず、ＣＰＵ６２は受信した各サンプル値について、各サンプル値の左右いずれかの絶対値が予め定められた閾値を超えているか否かを、順次判定する。以下、この判定処理を「閾値判定処理」と呼ぶ。本実施形態においては、例として、その閾値を１０００とする。従って、Ｒ（ｎ）およびＬ（ｎ）のいずれかの絶対値が１０００より大きい場合、ＣＰＵ６２は閾値判定処理で肯定的な結果を得る。
【００５５】
例えば、音声データＮＡに関し、サンプル値（５０７６０）において初めて、これに対応したデータであるＲ（５０７６０）もしくはＬ（５０７６０）の絶対値が１０００を超えるものとする。この場合、サンプル値（０）〜サンプル値（５０７５９）に対するＣＰＵ６２の閾値判定処理は否定的な結果を得る。これは音声データＮＡの冒頭に約１．１５秒間の沈黙もしくは沈黙に近い部分が存在することを示す。
【００５６】
ＣＰＵ６２は受信したサンプル値に関する閾値判定処理について肯定的な結果を得ると、それ以降に受信するサンプル値に対する閾値判定処理は行わず、基準時点Ｐを基準としたそのサンプル値の受信時刻を示す時間情報をＲＡＭ６４に記録する。この時間情報を以下、「先頭時間情報」と呼ぶ。さらに、ＣＰＵ６２は閾値判定処理の結果が肯定的となったサンプル値以降に受信する６５５３６組のサンプル値を、先頭参照用未加工音声データとしてＲＡＭ６４に記録する。
【００５７】
例えば、サンプル値（５０７６０）において初めて閾値判定処理について肯定的な結果が得られた場合、先頭参照用未加工音声データはサンプル値（５０７６０）〜サンプル値（１１６２９５）となり、また先頭時間情報は、サンプル値（５０７６０）の受信時刻を示す時間情報、すなわち約１．１５秒となる。
【００５８】
［１．２．１．５：先頭参照用加工済音声データの生成］
ＣＰＵ６２は、先頭参照用未加工音声データのＲＡＭ６４への記録を終了すると、ＤＳＰ６３に、先頭参照用未加工音声データに対する相関判定用データ生成処理の実行命令を送信する。相関判定用データ生成処理とは、サンプリング周波数４４１００Ｈｚの音声データから、相関判定処理に用いるためのサンプリング周波数約１７２．２７Ｈｚの音声データを生成する処理である。相関判定処理とは、２組の音声データの類似性を判定する処理であり、詳細は後述する。以下、図４を参照しながら、相関判定用データ生成処理を説明する。
【００５９】
ＤＳＰ６３はＣＰＵ６２より先頭参照用未加工音声データに対する相関判定用データ生成処理の実行命令を受信すると、ＲＡＭ６４から先頭参照用未加工音声データを読み出す（ステップＳ１）。続いて、ＤＳＰ６３は先頭参照用未加工音声データの各サンプル値の左右の値を相加平均することにより、ステレオのデータをモノラルのデータに変換する（ステップＳ２）。このモノラルへの変換処理は、このステップより後の処理のＤＳＰ６３への負荷を軽減するための処理である。
【００６０】
続いて、ＤＳＰ６３はモノラルに変換された一連のサンプル値に対し、ハイパスフィルタ処理を行う（ステップＳ３）。このハイパスフィルタ処理により、一連のサンプル値が示す音声波形における直流成分が取り除かれ、サンプル値が正負の両側に均等に分布するようになる。相関判定処理においては２組の音声データの相互相関値を用いた比較判定が行われるが、相互相関値の比較の際、サンプル値は正負の両側に均等に分布すると判定の精度が高まる。すなわち、このステップにおける処理は、相関判定処理における判定の精度向上を目的とする処理である。
【００６１】
続いて、ＤＳＰ６３はハイパスフィルタ処理を施された各サンプル値について、絶対値を求める（ステップＳ４）。このステップにおける処理は、各サンプル値のパワーの代替値を求めるための処理である。絶対値はパワーを示す二乗値よりも値が小さく処理が容易であるため、本実施形態においては、各サンプル値の二乗値の代替値として絶対値が用いられる。従って、ＤＳＰ６３の処理能力が高い場合、このステップにおいて各サンプル値の絶対値の代わりに二乗値を算出してもよい。
【００６２】
続いて、ＤＳＰ６３はステップＳ４において絶対値に変換された一連のサンプル値に対し、櫛形フィルタを用いたフィルタ処理を行う（ステップＳ５）。このステップにおける処理は、一連のサンプル値が示す音声波形から、波形の変化を捉えやすい低周波数成分を取り出すための処理である。低周波数成分を取り出すためには、ローパスフィルタが通常用いられるが、櫛形フィルタはローパスフィルタと比較して、通常、ＤＳＰ６３への負荷が小さいため、本実施形態においてはローパスフィルタが櫛形フィルタで代用されている。
【００６３】
図５は、ステップＳ５において利用可能な櫛形フィルタの一例について、その構成を示している。図５において、四角形で示される処理は遅延処理を示し、ｚ−ｋにおけるｋは、その遅延処理における遅延時間が（サンプリング周期×ｋ）であることを意味する。前述のとおり、音楽ＣＤのサンプリング周波数は４４１００Ｈｚであるため、サンプリング周期は１／４４１００秒である。一方、三角形で示される処理は乗算処理を示し、三角形の中に示される値が乗算の係数を示す。図５において、Ｋは次の式（１）で表される。
【数１】
2004151398.tif 000003
【００６４】
このＫを係数とする乗算により、この櫛形フィルタは周波数ｆのハイパスフィルタの機能を持つ。その結果、このステップにおけるフィルタ処理によって、一連のサンプル値が示す音声波形における直流成分が再度、取り除かれる。なお、ｋおよびｆの値は任意に変更が可能であり、相関判定処理における判定精度が高くなるよう、経験的に求められる。
【００６５】
続いて、ＤＳＰ６３は図４におけるステップＳ５においてフィルタ処理を施された一連のサンプル値に対し、さらにローパスフィルタを用いたフィルタ処理を行う（ステップＳ６）。このステップにおける処理は、次のステップＳ７において行われるダウンサンプリング処理の結果、折り返し雑音が発生することを防止するための処理である。ステップＳ７においては４４１００Ｈｚのサンプリング周波数のデータを約１７２．２７Ｈｚのサンプリング周波数にダウンサンプリングするため、折り返し雑音の発生を防ぐには、その半分である約８６．１３Ｈｚ以上の周波数成分を取り除く必要がある。しかしながら、ステップＳ５における櫛形フィルタを用いたフィルタ処理においては、櫛形フィルタの特性により高周波数成分が十分に取り除かれない。従って、このステップにおいてローパスフィルタを用いたフィルタ処理を行うことにより、残存している約８６．１３Ｈｚ以上の周波数成分を取り除く。なお、ＤＳＰ６３の処理能力が高い場合、ステップＳ５とステップＳ６における２つのフィルタを用いたフィルタ処理の代わりに、精度の高いローパスフィルタを１つのみ用いたフィルタ処理を行ってもよい。
【００６６】
続いて、ＤＳＰ６３はステップＳ６においてフィルタ処理を施された一連のサンプル値に対し、１／２５６のダウンサンプリング処理を行う（ステップＳ７）。すなわち、ＤＳＰ６３は、２５６のサンプル値ごとにサンプル値を１つ抜き取る処理を行う。その結果、一連のサンプル値のデータ数は６５５３６から２５６に減少する。以下、ステップＳ７の処理によって得られる一連の２５６のサンプル値を「先頭参照用加工済音声データ」と呼ぶ。ＤＳＰ６３は、先頭参照用加工済音声データをＲＡＭ６４に記録する（ステップＳ８）。なお、ステップＳ７における処理は、後述する先頭参照用加工済音声データを利用した処理におけるＤＳＰ６３への負荷の軽減、および先頭参照用加工済音声データをＦＤ等に記録する際の記録容量の節減を目的とする処理である。従って、ＤＳＰ６３の処理能力が高い場合、もしくは利用可能な記録容量が十分である場合等はステップＳ７の処理を行わず、４４１００Ｈｚの音声データを示すサンプル値そのものを先頭参照用加工済音声データとしてもよい。
【００６７】
［１．２．１．６：管理用イベントの生成］
ＣＰＵ６２は先頭参照用未加工音声データの先頭のサンプル値を受信すると、上述した先頭参照用未加工音声データのＲＡＭ６４への記録を行うと同時に、ＤＳＰ６３に対し、管理用イベント生成処理の実行命令を送信する。管理用イベント生成処理とは、ＲＡＭ６４のキューに記録されている一連のサンプル値が示す音声波形に対し、ある周波数以下の周波数帯の成分を取り出すフィルタ処理と、その周波数よりさらに低いある周波数以下の周波数帯の成分を取り出すフィルタ処理とを行い、それら２つのフィルタ処理により得られる値の比較判定を行うことにより、管理用イベントを生成する処理である。なお管理用イベントとは、後述する演奏イベントのタイミング調整処理において用いられる時間情報を生成するためのフラグである。以下、図６を参照しながら、管理用イベント生成処理を説明する。
【００６８】
ＤＳＰ６３はＣＰＵ６２より管理用イベント生成処理の実行命令を受信すると、ＲＡＭ６４のキューに記録されているサンプル値の末尾から一定数のサンプルを読み出す（ステップＳ１１）。本実施形態においては、例として、ＤＳＰ６３はキューより４４１００組のサンプル値を読み出すこととする。以下、ＤＳＰ６３が管理用イベント生成処理においてキューから読み出す一連のサンプル値を「未加工音声データ」と呼び、複数組の未加工音声データを区別する必要がある場合には、サンプル値（ｎ）を末尾とする未加工音声データを「未加工音声データ（ｎ）」のように表す。
【００６９】
例えば、ＤＳＰ６３が管理用イベント生成処理の実行命令を受信した時点においてキューに記録されているサンプル値の末尾がサンプル値（５０７６０）である場合、最初の未加工音声データは未加工音声データ（５０７６０）、すなわちサンプル値（６６０１）〜サンプル値（５０７６０）である。
【００７０】
続いて、ＤＳＰ６３は読み出した未加工音声データの各サンプル値の左右の値を相加平均することにより、ステレオのデータをモノラルのデータに変換する（ステップＳ１２）。このモノラルへの変換処理は、このステップより後の処理のＤＳＰ６３への負荷を軽減するための処理である。
【００７１】
続いて、ＤＳＰ６３はモノラルに変換された一連のサンプル値について、絶対値を求める（ステップＳ１３）。このステップにおける処理は、各サンプル値のパワーの代替値を求めるための処理である。絶対値はパワーを示す二乗値よりも値が小さく処理が容易であるため、本実施形態においては、各サンプル値の二乗値の代替値として絶対値が用いられる。従って、ＤＳＰ６３の処理能力が高い場合、このステップにおいて各サンプル値の絶対値の代わりに二乗値を算出してもよい。
【００７２】
続いて、ＤＳＰ６３はステップＳ１３において絶対値に変換された一連のサンプル値に対し、さらにローパスフィルタを用いたフィルタ処理を行う（ステップＳ１４）。ステップＳ１１〜ステップＳ１４の処理の結果得られる値を以下、「中期指標」と呼び、サンプル値（ｎ）に対応する中期指標を「中期指標（ｎ）」と呼ぶ。以下、例として、ステップＳ１４において用いられるローパスフィルタの周波数は１００Ｈｚとする。中期指標（ｎ）は、一連のサンプル値が示す音声波形のサンプル値（ｎ）に対応する時点における中期的な変化の傾向を示す。すなわち、一連のサンプル値が示す音声波形は短期的に上下に変化するが、ローパスフィルタによるフィルタ処理を施された一連のサンプル値は、先行する複数のサンプル値により値の変化が抑制される。その結果、一連の中期指標が示す音声波形からは短期的な変動要素が取り除かれ、中期的および長期的な変動要素のみが残る。ステップＳ１４の処理により、中期指標（ｎ）を末尾とする一連の中期指標、すなわち・・・中期指標（ｎ−２）、中期指標（ｎ−１）、中期指標（ｎ）が作成される。ＤＳＰ６３はこれらの中期指標をＲＡＭ６４に記録する（ステップＳ１５）。
【００７３】
続いて、ＤＳＰ６３はステップＳ１４において得られる一連の中期指標に対し、櫛形フィルタを用いたフィルタ処理を行う（ステップＳ１６）。このステップにおける処理は、一連の中期指標が示す音声波形から、さらに、一定周波数以下の低周波数帯の成分を取り出すための処理である。このステップはステップＳ１４で用いるローパスフィルタの周波数よりも低い周波数のローパスフィルタを用いる処理と同様であるが、櫛形フィルタはローパスフィルタと比較して、通常、ＤＳＰ６３への負荷が小さいため、本実施形態においてはローパスフィルタが櫛形フィルタで代用されている。
【００７４】
図７は、ステップＳ１６において利用可能な櫛形フィルタの一例について、その構成を示している。図７において、四角形で示される処理は遅延処理を示し、ｚ−ｋにおけるｋは、その遅延処理における遅延時間が（サンプリング周期×ｋ）であることを意味する。前述のとおり、音楽ＣＤのサンプリング周波数は４４１００Ｈｚであるため、サンプリング周期は１／４４１００秒である。一方、三角形で示される処理は乗算処理を示し、三角形の中に示される値が乗算の係数を示す。以下、例として、ｋ＝２２０５０とし、その結果、ステップＳ１６のフィルタ処理により、１Ｈｚより高い周波数帯の成分がおおよそ取り除かれる。すなわち、ステップＳ１６の処理の結果得られる一連の値が示す音声波形は、一連の中期指標が示す音声波形から中期的な変動要素を取り除き、長期的な変動要素のみを取り出したものとなる。
【００７５】
続いて、ＤＳＰ６３は、図６のステップＳ１６のフィルタ処理により得られる一連の値のそれぞれに対し、正の定数ｈを乗ずる（ステップＳ１７）。このｈによる乗算処理は、次のステップＳ１８における比較判定処理において肯定的な結果が得られる頻度を調整する処理であり、一般的にｈの値が小さいと比較判定処理における肯定的な結果が得られる時間間隔が狭くなる。この時間間隔は、広すぎると以下のステップＳ２１における管理用イベントの生成の時間間隔が広くなり、その結果、後述する演奏イベントのタイミング調整処理における精度が低くなる。一方、比較判定処理における肯定的な結果が得られる時間間隔が狭すぎると、以下のステップＳ２０の処理により次々とそれらの肯定的な結果がキャンセルされてしまうため、やはり管理用イベントの生成の時間間隔が広くなり、その結果、演奏イベントのタイミング調整処理における精度が低くなる。従って、ｈの値としては、適度の頻度で管理用イベントが生成される値が経験的に用いられる。
【００７６】
ステップＳ１７の処理の結果得られる値を以下、「長期指標」と呼び、サンプル値（ｎ）に対応する長期指標を「長期指標（ｎ）」と呼ぶ。ステップＳ１７の処理により、長期指標（ｎ）を末尾とする一連の長期指標、すなわち・・・長期指標（ｎ−２）、長期指標（ｎ−１）、長期指標（ｎ）が作成される。ＤＳＰ６３はこれらの長期指標をＲＡＭ６４に記録する（ステップＳ１８）。
【００７７】
続いて、ＤＳＰ６３は、ＲＡＭ６４から、中期指標（ｎ）と長期指標（ｎ）を読み出し、中期指標（ｎ）が長期指標（ｎ）以上であるか否かの比較判定を行う（ステップＳ１９）。この比較判定処理は、未加工音声データが示す音声波形が、サンプル値（ｎ）に対応する時点において、中期的に大きく変動したことを示す。すなわち、楽曲の音声波形において、１Ｈｚ〜１００Ｈｚの周波数帯に含まれる音のボリュームが急速に大きくなると、中期指標の値が長期指標の値を上回り、ステップＳ１９における比較判定処理からは肯定的な結果（以下、「Ｙｅｓ」と呼ぶ）が得られる。
【００７８】
ステップＳ１９の比較判定処理によりＹｅｓが得られると、ＤＳＰ６３は基準時点Ｐを基準として計時されるその時点の時間情報をＲＡＭ６４に記録する。続いて、ＤＳＰ６３はＲＡＭ６４から、過去に行われたステップＳ１９における比較判定処理でＹｅｓが得られた時間情報の記録を読み出し、過去の期間τにＹｅｓが得られた記録があるか否かを判定する（ステップＳ２０）。このステップＳ２０における判定処理は、短い時間間隔でステップＳ１９における比較判定処理の結果がＹｅｓとなる場合、次のステップＳ２１において、同じく短い時間間隔で管理用イベントを生成することを防ぐための処理である。もし短い時間間隔で管理用イベントが生成されると、後述する演奏イベントのタイミング調整処理において、記録されている管理用イベントと、新たに得られる音声データにより生成される管理用イベントとを正しく対応づけることが困難となる。ステップＳ２０の処理により、期間τ以下の時間間隔で近接して管理用イベントが生成されることが回避される。τの値としては、生成される管理用イベントが適度の時間間隔となる値が経験的に用いられる。なお、ステップＳ２０における最初の判定処理においては、先行するステップＳ１９の比較判定処理がないため、判定結果はＮｏとなる。
【００７９】
ステップＳ２０における判定処理により否定的な結果（以下、「Ｎｏ」と呼ぶ）が得られた場合、ＤＳＰ６３は上記の一連の処理の結果、未加工音声データの示す音声波形が、サンプル値（ｎ）に対応する時点で所定の条件を満たしたことを示す管理用イベントをＣＰＵ６２に送信する（ステップＳ２１）。
【００８０】
ステップＳ１９における比較判定の結果がＮｏであった場合、ステップＳ２０における判定の結果がＹｅｓであった場合、およびステップＳ２１の処理を終了した場合、ＤＳＰ６３はＣＰＵ６２がＣＤドライブ１から新たなサンプル値、すなわちサンプル値（ｎ＋１）を受信し、そのサンプル値がＲＡＭ６４のキューに記録されるまで待機する。サンプル値（ｎ＋１）がキューに記録されると（ステップＳ２２）、ＤＳＰ６３はサンプル値（ｎ＋１）を末尾とする未加工音声データ（ｎ＋１）に対し、上述したステップＳ１１以下の処理を行う。
【００８１】
以上のステップＳ１１〜ステップＳ２２の処理は、音声データＮＡの最後のサンプル値を末尾とする未加工音声データに対する処理が終了するまで続けられる。以上が管理用イベント生成処理の説明である。
【００８２】
図８は、実際の音声データに対し、管理用イベント生成処理を行った場合の管理用イベント生成の様子を示す図である。なお、この図の作成においては、ステップＳ１４のローフィルタとして、１段のＩＩＲ（Ｉｎｆｉｎｉｔｅ  Ｉｍｐｌｕｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタが用いられている。また、ステップＳ１７における定数ｈとしては４を、またステップＳ２０における期間τとしては０．５５秒が用いられている。
【００８３】
図８において例示されている２つの管理用イベントのはじめの方に関し、管理用イベントが生成される時点Ａのすぐ後に、中期指標が長期指標を上回る時点としてＢおよびＣがあるが、管理用イベントはＡにおいてのみ生成される。なぜなら、ＢはＡから所定の期間、すなわち０．５５秒を経過しておらず、またＣはＢから所定の期間を経過していないため、ステップＳ２０の判定の結果がＹｅｓとなり、ステップＳ２１の処理が行われないためである。
【００８４】
［１．２．１．７：演奏イベントの生成］
上述したＤＳＰ６３による管理用イベント生成処理が行われる一方で、ユーザはピアノ３１を用いた演奏を開始する。すなわち、ユーザは発音部４から出力される楽曲Ｎに合わせて、ピアノ３１の打鍵およびペダル操作を行う。ユーザのピアノ３１を用いた演奏の情報は、キーセンサ３２およびペダルセンサ３３にて鍵およびペダルの動きとして検出され、ＭＩＤＩイベント制御回路３４にて演奏イベントに変換された後、コントローラ部６に送信される。
【００８５】
［１．２．１．８：イベントデータの記録］
上述したように、ＣＰＵ６２は音声データＮＡの再生の間、ＤＳＰ６３から管理用イベントを、また自動演奏ピアノ部３のＭＩＤＩイベント制御回路３４から演奏イベントをそれぞれ受信する。
【００８６】
図９は、管理用イベントの生成と演奏イベントの生成の時間的な関係を示す図である。この場合、ＣＰＵ６２は基準時点Ｐから、１．５１秒、２．３８秒、４．０４秒・・・の時間が経過した時点で管理用イベントを受信している。また、ＣＰＵ６２は基準時点Ｐから、２．１１秒、２．６２秒、３．６０秒・・・の時間が経過した時点で演奏イベントを受信している。なお、例えば１．７８秒の時点で中期指標が長期指標を上回っているが、１．５１秒の時点で中期指標が長期指標を上回った後、０．５５秒を経過していないので、１．７８秒の時点において管理用イベントは受信されない。
【００８７】
ＣＰＵ６２は管理用イベントを受信すると、管理用イベントを示すシステムエクスクルーシブイベントを生成し、生成したシステムエクスクルーシブイベントに対し、基準時点Ｐを基準とする管理用イベントの受信時刻を示す時間情報をデルタタイムとして付加し、ＲＡＭ６４に記録する。同様に、ＣＰＵ６２は演奏イベントを受信すると、受信した演奏イベントに対し、基準時点Ｐを基準とする演奏イベントの受信時刻を示す時間情報をデルタタイムとして付加し、ＲＡＭ６４に記録する。
【００８８】
［１．２．１．９：楽曲の末尾の特定］
ＣＤドライブ１は、音声データＮＡの最後のサンプル値をコントローラ部６に送信すると、音楽ＣＤ−Ａの再生を停止する。ＣＰＵ６２は、音声データＮＡの最後のサンプル値を受信し、そのサンプル値を末尾とする未加工音声データに対する管理用イベント生成処理を終了すると、続いて音声データＮＡにおける楽曲Ｎの実際の末尾を特定する処理を行う。
【００８９】
ＣＰＵ６２が音声データＮＡの最後のサンプル値を末尾とする未加工音声データに対する管理用イベント生成処理を終了した時点で、キューには音声データＮＡの最後のサンプル値を末尾とする１３２３０００組のサンプル値が、各サンプル値の受信時刻を示す時間情報と共に記録されている。例えば、音声データＮＡの末尾のサンプル値がサンプル値（７６７３３９９）である場合、キューにはサンプル値（６３５０４００）〜サンプル値（７６７３３９９）が、それぞれのサンプル値に対応する時間情報と共に記録されている。
【００９０】
ＣＰＵ６２はまず、キューに記録されている末尾のサンプル値を読み出し、読み出したサンプル値の左右いずれかの絶対値が予め定められた閾値である１０００を超えているか否かの判定処理、すなわち閾値判定処理を行う。閾値判定処理において否定的な結果が得られた場合、ＣＰＵ６２はキューの末尾から２番目に記録されているサンプル値を読み出して、読み出したサンプル値に対し閾値判定処理を行う。ＣＰＵ６２は閾値判定処理により肯定的な結果が得られるまで、キューの末尾から先頭に向けて順次サンプル値を読み出し、同様の処理を繰り返す。
【００９１】
例えば、サンプル値（７６７３３９９）を末尾とする音声データＮＡに関して、サンプル値（７６３４２９７）において初めて、Ｒ（７６３４２９７）もしくはＬ（７６３４２９７）の絶対値が１０００を超えるとすると、サンプル値（７６３４２９８）〜サンプル値（７６７３３９９）に対するＣＰＵ６２の閾値判定処理は否定的な結果を得る。これは音声データＮＡの末尾に約０．８９秒間の沈黙もしくは沈黙に近い部分が存在することを示す。
【００９２】
上述した閾値判定処理により肯定的な結果を与えるサンプル値を以下、サンプル値（Ｚ）とする。サンプル値（Ｚ）は楽曲Ｎの実際の末尾に対応するサンプル値である。ＣＰＵ６２は閾値判定処理の肯定的な結果を得ることによりサンプル値（Ｚ）を特定すると、それ以降の閾値判定処理は行わない。
【００９３】
［１．２．１．１０：末尾参照用加工済音声データの生成］
続いて、ＣＰＵ６２は以下に説明する末尾参照用加工済音声データの生成処理を行う。末尾参照用加工済音声データの生成処理とは、キューに記録されている音声データに対し、上述した相関判定用データ生成処理を行うことにより、後述する相関判定処理を行うための音声データを生成する処理である。
【００９４】
以下、図１０を参照しつつ、末尾参照用加工済音声データ生成処理を説明する。なお、以下の説明においてはキューに記録されているサンプル値の先頭をサンプル値（Ｗ）とする。また、説明をより具体的にするため、例としてＷ＝６３５０４００、Ｚ＝７６３４２９７とする。これは、キューにはサンプル値（６３５０４００）〜サンプル値（７６７３３９９）が記録されており、また楽曲Ｎの実際の末尾に対応するサンプル値がサンプル値（７６３４２９７）であることを意味する。また、サンプル値（ｎ）を末尾とする６５５３６組の一連のサンプル値を「参照用未加工音声データ（ｎ）」と呼ぶ。
【００９５】
ＣＰＵ６２はまず、カウンタｉおよびカウンタｊを生成し、初期値としてｉ＝Ｚ＝７６３４２９７、ｊ＝０をセットする（ステップＳ３１）。続いて、ＣＰＵ６２はＤＳＰ６３に対し、参照用未加工音声データ（ｉ−ｊ）に対する相関判定用データ生成処理の実行命令を送信する。相関判定用データ生成処理は図４を用いて既に説明した処理であるので、説明を省略する。この相関判定用データ生成処理の実行命令に応じ、ＤＳＰ６３は参照用未加工音声データ（ｉ−ｊ）を加工して得られる２５６の一連のサンプル値をＲＡＭ６４に記録する（ステップＳ３２）。以下、この２５６のサンプル値を「参照用加工済音声データ」と呼び、参照用未加工音声データ（ｎ）から得られる参照用加工済音声データを「参照用加工済音声データ（ｎ）」と呼ぶこととする。なお、最初にステップＳ３２が実行される際には、ｉ−ｊ＝７６３４２９７であるので、参照用加工済音声データ（７６３４２９７）がＲＡＭ６４に記録される。
【００９６】
続いて、ＣＰＵ６２はｊ＝８８１９９９であるか否かを判定する（ステップＳ３３）。この判定処理は、音声データＮＡの末尾の２０秒間分に対応する音声データに関し、末尾を１サンプルずつずらしながら一連の６５５３６組のサンプル値を読み出すことにより、８８２０００組の参照用未加工音声データを順に読み出すために行われる処理である。
【００９７】
ここで、ｊ＝０であるので、ステップＳ３３における判定処理の結果はＮｏとなる。その場合、ＣＰＵ６２はｊの値を１増加させ（ステップＳ３４）、上述したステップＳ３２の処理に戻る。ステップＳ３２、ステップＳ３３、ステップＳ３４の一連の処理は８８１９９９回繰り返され、ステップＳ３２の処理は８８２０００回実行される。その結果、ＲＡＭ６４には参照用加工済音声データ（７６３４２９７）、参照用加工済音声データ（７６３４２９６）、・・・、参照用加工済音声データ（６７５２２９８）が記録される。
【００９８】
８８２０００回目のステップＳ３３において、ｊ＝８８１９９９であるため、判定処理の結果がＹｅｓとなる。続いて、ＣＰＵ６２はＤＳＰ６３に対し、ＲＡＭ６４に記録されている参照用加工済音声データ（ｉ）の参照用加工済音声データ（ｉ−ｊ）に対する相関判定処理の実行命令を送信する（ステップＳ３５）。相関判定処理とは、２組の音声データの類似性を判定する処理である。以下、図１１を参照しつつ、相関判定処理を説明する。
【００９９】
ＣＰＵ６２は、ＤＳＰ６３に相関判定処理の実行命令を送信する際、類似性の判定における参照元となる音声データ（以下、「参照元音声データ」と呼ぶ）と、参照先となる音声データ（以下、「参照先音声データ」と呼ぶ）を指定する。この場合、参照元音声データは参照用加工済音声データ（ｉ）であり、参照先音声データは参照用加工済音声データ（ｉ−ｊ）である。以下、参照元音声データに含まれる２５６のデータをＸ（０）〜Ｘ（２５５）と表す。一方、参照先音声データに含まれる２５６のデータをＹｍ（０）〜Ｙｍ（２５５）と表す。ただし、ｍ＝ｉ−ｊであり、参照先音声データが生成された際に用いられた参照用未加工音声データの末尾に対応するサンプル値の番号を示す。
【０１００】
ＤＳＰ６３はＣＰＵ６２から相関判定処理の実行命令を受信すると、ＲＡＭ６４から参照用加工済音声データ（ｉ）を参照元音声データとして、また参照用加工済音声データ（ｉ−ｊ）を参照先音声データとして読み出し、以下の式（２）および式（３）で表される判定処理を行う（ステップＳ５１）。なお、最初に実行されるステップＳ５１の処理においては、ｉ＝７６３４２９７、ｍ＝ｉ−ｊ＝６７５２２９８である。
【数２】
2004151398.tif 000004
【数３】
2004151398.tif 000005
【０１０１】
式（２）の左辺はＸ（０）〜Ｘ（２５５）とＹｍ（０）〜Ｙｍ（２５５）を順に並べて同じ番号のデータを対にした時、各対のデータの値が合致すればする程、大きな値をとり、その値は１に近づく。以下の説明において、この左辺の値を「絶対相関指標」と呼ぶ。なお、ｐの値は０〜１の範囲で任意に変更が可能で、異なる版における同じ楽曲の同じ部分に対応する音声データに対し相関判定用データ生成処理を行うことにより得られる２組のデータに関しては上記の式（２）による判定の結果がＹｅｓとなり、たとえ類似していても楽曲における異なる部分に対応する音声データから得られる２組のデータに関しては、式（２）による判定の結果がＮｏとなるよう、経験的に定められる。
【０１０２】
式（３）の左辺は０〜１の範囲で値をとり、Ｘ（０）〜Ｘ（２５５）が示す音声波形とＹｍ（０）〜Ｙｍ（２５５）が示す音声波形の形状が相似形に近いほど、１に近づく。以下の説明において、この左辺の値を「相対相関指標」と呼ぶ。上記の絶対相関指標は、Ｘ（０）〜Ｘ（２５５）およびＹｍ（０）〜Ｙｍ（２５５）が示す音声波形の形状が類似していても、Ｘ（０）〜Ｘ（２５５）およびＹｍ（０）〜Ｙｍ（２５５）が示す音声波形が示す音声波形のレベルが互いに異なると、値が変動する。それに対し、相対相関指標はＸ（０）〜Ｘ（２５５）およびＹｍ（０）〜Ｙｍ（２５５）が示す音声波形のレベルの大小に影響を受けず、形状が類似していれば１に近い値をとるため、音楽ＣＤの異なる版において録音レベルが違う場合であっても、式（３）の判定はＹｅｓを与える。ｑの値は０〜１の範囲で任意に変更が可能で、ｐと同様に経験的に定められる。
【０１０３】
ステップＳ５１における２つの判定処理の結果の両方がＹｅｓである場合、ＤＳＰ６３は以下の式（４）および式（５）で表される判定処理を行う（ステップＳ５２）。
【数４】
2004151398.tif 000006
【数５】
2004151398.tif 000007
【０１０４】
式（４）の左辺はＸ（０）〜Ｘ（２５５）とＹｍ（０）〜Ｙｍ（２５５）の積和のサンプル値（ｍ）における変化率である。以下の説明において、Ｘ（０）〜Ｘ（２５５）とＹｍ（０）〜Ｙｍ（２５５）の積和を「相関値」と呼ぶ。相関値は、Ｘ（０）〜Ｘ（２５５）とＹｍ（０）〜Ｙｍ（２５５）を順に並べて同じ順番のデータを対にした時、各対のデータの値が近似すればする程、大きな値となる。そして、相関値が極値をとる場合、Ｘ（０）〜Ｘ（２５５）とＹｍ（０）〜Ｙｍ（２５５）に関する相関値をｍに関して時系列的に並べた際の変化率が０となる。従って、式（４）による判定処理は、相関値が極値であるかどうかを判定する処理である。また、式（５）による判定処理は、その極値が極大値であることを判定する処理である。
【０１０５】
より正確に説明すると、本実施形態においてはＸ（０）〜Ｘ（２５５）およびＹｍ（０）〜Ｙｍ（２５５）は離散値であるため、式（４）の左辺が厳密に０を取ることは極めてまれである。従って、ステップＳ５２の判定処理は、実際には次のように行われる。まず、ＤＳＰ６３はＸ（０）〜Ｘ（２５５）とＹｍ（０）〜Ｙｍ（２５５）の積和と、Ｘ（０）〜Ｘ（２５５）とＹｍ−１（０）〜Ｙｍ−１（２５５）の積和との差を取る。その値を以下、Ｄｍと呼ぶ。続いて、ＤＳＰ６３はＤｍ−１が０より大きく、かつＤｍが０以下であるか否かを判定する。ここでＤｍ−１が０より大きく、かつＤｍが０以下である場合、相関値の変化率はＤｍにおいて正の値から０になるか、０をまたがって変化しているので、その時点における相関値は極大値もしくは極大値の近似値である。従って、その場合、ステップＳ５２の判定処理の結果はＹｅｓとなる。それ以外の場合、ステップＳ５２の判定処理の結果はＮｏとなる。
【０１０６】
ステップＳ５２の判定処理の結果がＹｅｓである場合、ＤＳＰ６３はＣＰＵ６２に対し、参照先音声データが参照元音声データに極めて類似していることを示す成功通知を送信する（ステップＳ５３）。
【０１０７】
一方、ステップＳ５１の判定処理の結果がＮｏである場合、もしくはステップＳ５２の判定処理の結果がＮｏである場合、ＤＳＰ６３はＣＰＵ６２に対し、参照先音声データが参照元音声データにあまり類似していないことを示す失敗通知を送信する（ステップＳ５４）。
【０１０８】
図１２は、実際の音声データのサンプルに対し、ステップＳ５１およびステップＳ５２の判定処理において用いられる計算式の値を算出し、グラフに示したものである。なお、このグラフの作成においては、図４におけるステップＳ３においては周波数２５Ｈｚのハイパスフィルタとして、１段のＩＩＲフィルタを、またステップＳ５における櫛形フィルタの定数としては、ｋ＝４４１０およびｆ＝１を、また、ステップＳ６においては周波数２５Ｈｚのローパスフィルタとして、１段のＩＩＲフィルタを用いている。さらに、図１１のステップＳ５１における判定式の定数としては、ｐ＝０．５、ｑ＝０．８を用いている。
【０１０９】
図１２の上段のグラフには、ｍに対する、式（２）の左辺の分子の値と、左辺の分母を右辺に移項した式の値が示されている。図１２の中段のグラフには、ｍに対する、式（３）の左辺の分子の値と、左辺の分母を右辺に移項した式の値が示されている。また、図１２の下段のグラフには、式（４）の左辺の値が示されている。
【０１１０】
図１２によれば、ｍの値が区間Ａに位置する場合において、式（２）の左辺の分子の値が、左辺の分母を右辺に移項した式の値と等しいか、それを超えるため、式（２）の条件が満たされる。さらに、区間Ａのなかで、ｍの値が区間Ｂに位置する場合において、式（３）の左辺の分子の値が、左辺の分母を右辺に移項した式の値と等しいか、それを超えるため、式（３）の条件が満たされる。その結果、ステップＳ５１の判定処理において、Ｙｅｓの結果が得られる。区間Ｂのなかで、ｍの値が矢印Ｃで示される値をとる場合、式（４）の左辺の値が正の値から０となり、式（５）の条件も満たされるので、ステップＳ５２の判定処理において、Ｙｅｓの結果が得られる。
以上が相関判定処理の説明である。
【０１１１】
図１０のステップＳ３５において、上述したようにＤＳＰ６３は相関判定処理の結果として、成功通知もしくは失敗通知をＣＰＵ６２に送信する。ＣＰＵ６２は、ＤＳＰ６３からいずれかの通知を受信すると、その通知が成功通知であるか失敗通知であるかを判定する（ステップＳ３６）。
【０１１２】
通常、相関判定処理は楽曲の同じ部分に対応する２組の音声データを用いて行われる場合にのみ、式（２）〜式（５）で示した条件が全て満たされ、その結果、ＣＰＵ６２は成功通知を受信する。ステップＳ３５が最初に実行される場合、相関判定処理に用いられる参照元音声データは参照用加工済音声データ（７６３４２９７）であり、参照先音声データは参照用加工済音声データ（６７５２２９８）であるため、ＣＰＵ６２は通常、ステップＳ３５の結果として、失敗通知を受信する。その場合、ＣＰＵ６２はｊの値を１減少させ（ステップＳ３７）、上述したステップＳ３５の処理に戻る。
【０１１３】
音声データＮＡの末尾の２０秒間に関し、参照元音声データに対応する音声波形と極めて類似した音声波形が他に存在しない場合、ステップＳ３５、ステップＳ３６、ステップＳ３７の一連の処理は８８１９９９回繰り返され、ステップＳ３５の処理は８８２０００回実行される。その間、ｉの値は一定であるため、参照元音声データは変化しないが、参照先音声データはｊの値が減少するため、変化する。例えば、参照元音声データが参照用加工済音声データ（７６３４２９７）である場合、参照先音声データは参照用加工済音声データ（６７５２２９８）、参照用加工済音声データ（６７５２２９９）、参照用加工済音声データ（６７５２３００）、・・・と変化する。８８２０００回目のステップＳ３５の処理においては、ｊ＝０となるため、参照先音声データは参照元音声データと一致し、その結果、ＣＰＵ６２はステップＳ３５の結果として成功通知を受信する。
【０１１４】
ＣＰＵ６２がステップＳ３５の結果として成功通知を受信すると、続くステップＳ３６の判定処理の結果はＹｅｓとなる。その場合、ＣＰＵ６２はｊの値が０であるか否かを判定する（ステップＳ３８）。上述したように、もし音声データＮＡの末尾の２０秒間に関し、参照元音声データに対応する音声波形と極めて類似した音声波形が他に存在しないならば、ｊ＝０となる。その場合、ＣＰＵ６２はその際の参照元音声データである参照用加工済音声データ（ｉ）をＲＡＭ６４に記録する。さらに、ＣＰＵ６２は、ＲＡＭ６４のキューにおいてサンプル値（ｉ）に対応付けられて記録されている時間情報（ｉ）を読み出し、ＲＡＭ６４に記録する（ステップＳ３９）。以下、ステップＳ３９の処理においてＲＡＭ６４に記録される参照用加工済音声データを「末尾参照用加工済音声データ」、また時間情報（ｉ）を「末尾時間情報」と呼ぶ。例えば、初めて実行されるステップＳ３８における判定処理の結果がＹｅｓとなった場合、ｉ＝７６３４２９７であるので、末尾時間情報はサンプル値（７６３４２９７）に対応する時間情報（７６３４２９７）、すなわち約１７３．１１秒となる。
【０１１５】
一方、音声データＮＡの末尾の２０秒間に関し、参照元音声データに対応する音声波形と極めて類似した音声波形が他に存在する場合がある。その場合、上述したステップＳ３５、ステップＳ３６、ステップＳ３７の一連の処理が８８１９９９回繰り返される前に、ステップＳ３５において式（２）〜式（５）で示した条件が全て満たされ、その結果、ＣＰＵ６２は成功通知を受信する。その結果、ステップＳ３６における判定結果がＹｅｓとなり、ステップＳ３８に処理が移るが、その場合、まだｊ＝０となっていないため、ステップＳ３８の判定結果はＮｏとなる。
【０１１６】
ステップＳ３８の判定結果がＮｏである場合、ＣＰＵ６２は参照元音声データである参照用加工済音声データ（ｉ）を変更し、ステップＳ３２〜ステップＳ３８の処理を繰り返す。そのために、まずＣＰＵ６２は、ｉ＝Ｗ＋６５５３６＋８８１９９９＝Ｗ＋９４７５３５＝７２９７９３５であるか否かを判定する（ステップＳ４０）。もし、参照元音声データ（ｉ）を生成する際に用いられる参照用未加工音声データ（ｉ）が、キューの先頭から数えて８８２０００番目の参照用未加工音声データにあたると、ステップＳ４０の判定結果はＹｅｓとなる。ステップＳ４０が最初に実行される際、ｉ＝Ｚ＝７６３４２９７であるため、ステップＳ４０の判定結果はＮｏとなる。
【０１１７】
ステップＳ４０の判定結果がＮｏである場合、ＣＰＵ６２はｉを１減少させる。また、ＣＰＵ６２はｊに８８１９９９を設定する（ステップＳ４１）。その後、ＣＰＵ６２は処理をステップＳ３２に戻す。ステップＳ３２においては、ｉが１減少され、さらにｊ＝８８１９９９であるため、参照用未加工音声データ（ｉ−ｊ）として、先行するステップＳ３２において既に相関判定用データ生成処理が行われた参照用未加工音声データより、キューにおいて１サンプル値だけ先頭側に位置する参照用未加工音声データがキューより読み出される。例えば、ステップＳ４１の処理が最初に実行された直後に実行されるステップＳ３２においては、ｉ＝７６３４２９６であるため、参照用未加工音声データ（６７５２２９７）に対し、相関判定用データ生成処理が行われる。その結果、既にＲＡＭ６４に記録されている参照用加工済音声データ（７６３４２９７）〜参照用加工済音声データ（６７５２２９８）に加え、新たに参照用加工済音声データ（６７５２２９７）がＲＡＭ６４に記録される。
【０１１８】
続くステップＳ３３の判定処理において、ｊ＝８８１９９９であるため、判定結果はＹｅｓとなる。続いて、ＣＰＵ６２はステップＳ３５、ステップＳ３６、ステップＳ３７の一連の処理を繰り返す。ステップＳ３５の相関判定処理の結果として成功通知がＣＰＵ６２により受信され、ステップＳ３６の判定処理の結果がＹｅｓとなると、ＣＰＵ６２はステップＳ３８の判定処理を行う。
【０１１９】
既に上述したように、サンプル値（ｉ）を末尾とする音声データに対応する音声データＮＡの２０秒間の音声波形に関し、参照元音声データに対応する音声波形と極めて類似した音声波形が他に存在しない場合、ｊ＝０となる。従って、ＣＰＵ６２はステップＳ３９を実行し、その結果、ＲＡＭ６４には末尾参照用加工済音声データおよび末尾時間情報が記録される。一方、サンプル値（ｉ）を末尾とする音声データに対応する音声データＮＡの２０秒間の音声波形に関し、参照元音声データに対応する音声波形と極めて類似した音声波形が他に存在しない場合、ｊ＞０である。従って、ＣＰＵ６２はステップＳ４０の判定処理を行う。
【０１２０】
ステップＳ３８の判定処理の結果が繰り返しＮｏとなると、ステップＳ４０およびステップＳ４１の処理が繰り返されることにより、ｉの値は減少する。例えば、キューに記録されているサンプル値が示す音声波形が一定の値をとるような場合、ステップＳ３８の判定結果はＹｅｓになることはない。その結果、ｉ＝Ｗ＋９４７５３５＝７２９７９３５になり、ステップＳ４０の判定結果がＹｅｓとなる。これは、キューに記録されているサンプル値により得られる音声データＮＡの末尾付近の音声波形において、特徴的な形状を持つ音声波形が存在せず、その結果、末尾参照用加工済音声データの取得が失敗したことを意味する。従って、ＣＰＵ６２は操作表示部５にエラーメッセージを表示させ（ステップＳ４２）、一連の処理を終了する。
以上が、末尾参照用加工済音声データの生成処理である。
【０１２１】
［１．２．１．１１：ＳＭＦのＦＤへの記録］
上記の末尾参照用加工済音声データの生成処理におけるステップＳ３９の処理により、ＲＡＭ６４に末尾参照用加工済音声データおよび末尾時間情報が記録された場合、ＣＰＵ６２は続いてＳＭＦのＦＤへの記録処理を行う。
【０１２２】
まずＣＰＵ６２は、ＲＡＭ６４に記録されている以下のデータを読み出す。
（１）先頭参照用加工済音声データ
（２）先頭時間情報
（３）イベントデータ
（４）末尾参照用加工済音声データ
（５）末尾時間情報
【０１２３】
続いて、ＣＰＵ６２は読み出したこれらのデータを用いて、ＳＭＦのトラックチャンクを生成する。さらに、ＣＰＵ６２は作成したトラックチャンクに対し、これに応じたヘッダチャンクを付加し、ＳＭＦを生成する。
【０１２４】
図１３は、ＣＰＵ６２が生成するＳＭＦの概略を示す図である。トラックチャンクのデータ部分の先頭には、まず、先頭参照用加工済音声データと先頭時間情報を含むシステムエクスクルーシブイベントおよび、末尾参照用加工済音声データと末尾時間情報を含むシステムエクスクルーシブイベントが、対応するデルタタイムと共に記録されている。これらのシステムエクスクルーシブイベントのデルタタイムは任意であるが、本実施形態においては０．００秒とする。上述したシステムエクスクルーシブイベントに続き、管理用イベントおよび演奏イベントが、対応するデルタタイムと共に、デルタタイムの順に記録されている。
【０１２５】
ＣＰＵ６２は、ＳＭＦの生成を完了すると、生成したＳＭＦを書込命令と共にＦＤドライブ２に送信する。ＦＤドライブ２はＣＰＵ６２から書込命令およびＳＭＦを受信すると、セットされているＦＤにＳＭＦを書き込む。
【０１２６】
図１４は音声データＮＡと、ＳＭＦに書き込まれる時間情報およびデルタタイムを整理した図である。先頭参照用加工済音声データと共にＳＭＦに記録される先頭時間情報は、音声データＮＡのうち、楽曲Ｎが実際に開始する時刻を示している。また、末尾参照用加工済音声データと共にＳＭＦに記録される末尾時間情報は、音声データＮＡのうち、楽曲Ｎが実際に終了する時刻を示している。
【０１２７】
［１．２．２：再生動作］
続いて、上述した方法によって記録されたＳＭＦを用いて、音楽ＣＤに含まれる音声データとＳＭＦのＭＩＤＩデータを同期再生させる際の動作を説明する。以下の再生動作において用いられる音楽ＣＤは、上述した記録動作において用いられた楽曲Ｎの音声データを含んでいるが、版が異なっており、音楽データの再生開始の時点から実際に楽曲Ｎが開始するまでの時間や、音声データの示す音声波形のレベルが異なっている。また、楽曲Ｎのマスタデータから音楽ＣＤ用のデータが作成される際、音声データに対し音響効果等に関する編集が加えられているため、この音楽ＣＤに含まれる楽曲Ｎの音声データは、音楽ＣＤ−Ａに含まれる音声データＮＡと、その内容にわずかの差異がある。以下に説明する再生動作において用いられる音楽ＣＤを音楽ＣＤ−Ｂと呼び、音楽ＣＤ−Ｂに含まれる楽曲Ｎの音声データを音声データＮＢと呼ぶ。
【０１２８】
［１．２．２．１：再生の開始操作］
ユーザは、音楽ＣＤ−ＢをＣＤドライブ１に、またＳＭＦの記録されたＦＤをＦＤドライブ２にセットする。続いて、ユーザは音声データＮＢとＳＭＦの同期再生開始に対応する操作表示部５のキーパッドを押下する。操作表示部５は押下されたキーパッドに対応する信号をコントローラ部６に出力する。
【０１２９】
ＣＰＵ６２は操作表示部５から同期再生開始を指示する信号を受信すると、まずＦＤドライブ２に対しＳＭＦの送信命令を送信する。ＦＤドライブ２はこのＳＭＦの送信命令に応じて、ＦＤからＳＭＦを読み出し、読み出したＳＭＦをコントローラ部６に送信する。ＣＰＵ６２はＦＤドライブ２からＳＭＦを受信し、受信したＳＭＦをＲＡＭ６４に記録する。
【０１３０】
［１．２．２．２：演奏イベントのタイミング調整］
ＣＰＵ６２はＳＭＦをＲＡＭ６４に記録すると、演奏イベントのタイミング調整処理を行う。演奏イベントのタイミング調整処理とは、ＳＭＦの記録時に用いられた音声データＮＡと、ＳＭＦの再生時に用いられる音声データＮＢとの間の楽曲開始前の沈黙時間および楽曲終了後の沈黙時間の差、すなわち楽曲Ｎの開始時点および楽曲Ｎの再生速度の差により生ずる、音声データＮＢの楽曲Ｎの再生とＳＭＦのＭＩＤＩデータの再生とのタイミングのずれを調整する処理である。以下、図１５を用いて、演奏イベントのタイミング調整処理を説明する。
【０１３１】
ＣＰＵ６２は、カウンタｉを生成し、ｉに６５５３５をセットする（ステップＳ６１）。続いて、ＣＰＵ６２はＣＤドライブ１に音声データＮＢの再生命令を送信し、ＣＤドライブ１は音声データＮＢのサンプル値を、１／４４１００秒ごとに先頭から順にコントローラ部６に送信する。以下の説明において、音声データＮＢのサンプル値を、音声データＮＡの場合と同様に、先頭から、サンプル値（０）、サンプル値（１）、・・・のように表す。
【０１３２】
ＣＰＵ６２は、ＣＤドライブ１から音声データＮＢの最初のサンプル値、すなわちサンプル値（０）を受信すると、クロックから得られるクロック信号に基づき、その時点（以下、「基準時点Ｑ」と呼ぶ）を基準とする計時を開始する。
【０１３３】
ＣＰＵ６２は受信したサンプル値を、受信時刻を示す時間情報と共に、順次、ＲＡＭ６４のキューに記録する。この時間情報は、基準時点Ｑからの経過時間である。以下、上述した記録動作の場合と同様に、サンプル値（ｎ）に対応する時間情報を時間情報（ｎ）と呼ぶ。また、キューに記録可能なサンプル値の数は１３２３０００組とする。
【０１３４】
ＣＰＵ６２は、サンプル値（ｉ）をキューに記録すると、キューに記録されているサンプル値（ｉ）を末尾とする６５５３６組のサンプル値に対する相関判定用データ生成処理の実行命令を、ＤＳＰ６３に送信する。以下、サンプル値（ｎ）を末尾とする６５５３６組の一連のサンプル値を、上述した記録動作の場合と同様に、参照用未加工音声データ（ｎ）と呼ぶ。ＤＳＰ６３は、参照用未加工音声データ（ｉ）に対する相関判定用データ生成処理を実行する（ステップＳ６２）。ステップＳ６２における相関判定用データ生成処理は、図４を用いて既に説明した処理と同様であるので、説明を省略する。なお、ステップＳ６２が最初に実行される際、ｉ＝６５５３５であるので、参照用未加工音声データ（６５５３５）に対し、相関判定用データ生成処理が行われる。ステップＳ６２の処理の結果、ＲＡＭ６４には参照用加工済音声データ（ｉ）が記録される。
【０１３５】
続いて、ＣＰＵ６２はＤＳＰ６３に対し、先頭参照用加工済音声データの、参照用加工済音声データ（ｉ）に対する相関判定処理の実行命令を送信する。ＤＳＰ６３は、ＲＡＭ６４に記録されたＳＭＦに含まれる先頭参照用加工済音声データと、ステップＳ６２においてＲＡＭ６４に記録された参照用加工済音声データ（ｉ）を読み出し、相関判定処理を実行する（ステップＳ６３）。ステップＳ６３における相関判定処理は、図１１を用いて既に説明した処理と同様であるので、説明を省略する。ステップＳ６３の処理の結果として、ＤＳＰ６３はＣＰＵ６２に対し、失敗通知もしくは成功通知を送信する。
【０１３６】
ＣＰＵ６２はＤＳＰ６３から失敗通知もしくは成功通知を受信すると、受信した通知が成功通知であるか否かを判定する（ステップＳ６４）。音声データＮＢの先頭から楽曲Ｎが実際に開始することはまれであるので、通常、ステップＳ６４が初めて実行される場合、判定処理の結果はＮｏとなる。その場合、ＣＰＵ６２はｉ＝６５５３５＋８８２０００＝９４７５３５であるか否かを判定する（ステップＳ６５）。ステップＳ６５における判定処理は、音声データＮＢの冒頭の２０秒間分から得られる参照用加工済音声データ（ｉ）の全てに関し、ステップＳ６３における相関判定処理の結果が失敗であった場合、ステップＳ６２〜ステップＳ６６の一連の処理の繰り返しを中止するための判定処理である。ステップＳ６５が初めて実行される場合、ｉ＝６５５３５であるため、判定処理の結果はＮｏとなる。ＣＰＵ６２はｉを１増加させ（ステップＳ６６）、ステップＳ６２に処理を移動する。
【０１３７】
続いて、ＣＰＵ６２はステップＳ６２〜ステップＳ６６の一連の処理を繰り返し、参照元音声データとしての先頭参照用加工済音声データに対し、参照先音声データを参照用加工済音声データ（６５５３５）、参照用加工済音声データ（６５５３６）、参照用加工済音声データ（６５５３７）、・・・と順次、変更しながら、相関判定処理が実行される。その結果、通常は何回目かのステップＳ６２において用いられる参照用未加工音声データ（ｉ）が、先頭参照用加工済音声データに対応する楽曲Ｎの部分を示す音声データに達する。
【０１３８】
例えば、楽曲Ｎの先頭参照用加工済音声データに対応する部分が、音声データＮＢにおいてサンプル値（２８７４０）を先頭とする一連の音声データであったとすると、ステップＳ６２〜ステップＳ６６の一連の処理が２８７４０回繰り返された後、２８７４１回目のステップＳ６２において相関判定用データ生成処理の対象となる参照用未加工音声データ（９４２７５）は、音声データＮＢにおいて、楽曲Ｎの先頭参照用加工済音声データに対応する部分である。
【０１３９】
上記のように、ステップＳ６２で用いられる参照用未加工音声データ（ｉ）が、先頭参照用加工済音声データに対応する楽曲Ｎの部分を示す場合、ステップＳ６２で生成される参照用加工済音声データ（ｉ）と先頭参照用加工済音声データは、楽曲Ｎの同じ部分を示す音声データに対し、同じ相関判定用データ生成処理を施すことにより生成された音声データとなる。従って、これらの音声データの類似性は極めて高くなり、ステップＳ６３の相関判定処理の結果として、ＣＰＵ６２は成功通知を受信する。その結果、ステップＳ６４の判定処理の結果はＹｅｓとなる。
【０１４０】
ステップＳ６４の判定結果がＹｅｓである場合、ＣＰＵ６２はＣＤドライブ１に、音声データＮＢの再生の停止命令を送信し、ＣＤドライブ１は音声データＮＢの送信を停止する。続いて、ＣＰＵ６２は、（ｉ−６５５３５）／４４１００の値を求めることにより、参照用加工済音声データ（ｉ）の先頭に対応する時間情報を算出する。例えば、ステップＳ６４の判定処理の結果がＹｅｓとなった際、ｉ＝９４２７５であるとすると、（９４２７５−６５５３５）／４４１００＝約０．６５であるから、参照用加工済音声データ（ｉ）の先頭に対応する時間情報は約０．６５秒となる。続いて、ＣＰＵ６２はＲＡＭ６４に記録されているＳＭＦから先頭時間情報を読み出し、参照用加工済音声データ（ｉ）の先頭に対応する時間情報と、読み出した先頭時間情報とを用いて、時間差を算出する。以下、この時間差を「トップオフセット」と呼ぶ。トップオフセットは、音声データＮＡの楽曲Ｎに対し、音声データＮＢの楽曲Ｎの開始時点が早い場合に負、遅い場合に正の値をとる。例えば、参照用加工済音声データ（ｉ）の先頭に対応する時間情報が０．６５秒であり、先頭時間情報が１．１５秒である場合、トップオフセットは、０．６５−１．１５＝−０．５０より、−０．５０秒となる。ＣＰＵ６２は、トップオフセットをＲＡＭ６４に記録する（ステップＳ６７）。
【０１４１】
ＣＰＵ６２は、ステップＳ６７においてトップオフセットの記録を行った後、ＲＡＭ６４に記録されたＳＭＦから先頭時間情報および末尾時間情報を読み出し、その時間差を算出する。続いて、ＣＰＵ６２は、この時間差が示す時間に４４１００を乗算することにより、時間差に相当するサンプル値の数を算出する。このサンプル値の数は、先頭参照用加工済音声データの先頭から、末尾参照用加工済音声データの末尾までの時間に対応するサンプル値の数である。そこで、ＣＰＵ６２は、このサンプル値の数から６５５３６を減算することにより、先頭参照用加工済音声データの末尾から、末尾参照用加工済音声データの末尾までの時間に対応するサンプル値の数を求める。このようにして求められるサンプル値の数を以下、「Ｖ」とする。
【０１４２】
例えば、先頭時間情報が１．１５秒、末尾時間情報が１７３．１１秒である場合、先頭参照用加工済音声データの先頭から、末尾参照用加工済音声データの末尾までの時間は１７３．１１−１．１５＝１７１．９６（秒）となる。この時間に対応するサンプル値の数は、１７１．９６×４４１００＝７５８３４３６となる。従って、先頭参照用加工済音声データの末尾から、末尾参照用加工済音声データの末尾までの時間に対応するサンプル値の数、すなわちＶは、７５８３４３６−６５５３６＝７５１７９００となる。
【０１４３】
続いて、ＣＰＵ６２はカウンタｊを生成し、ｊ＝ｉ＋Ｖ−４４１０００をセットする（ステップＳ６８）。音声データＮＢにおいて、参照用未加工音声データ（ｉ）は楽曲Ｎの先頭部分の約１．４９秒に対応する音声データである。従って、楽曲Ｎの末尾部分の約１．４９秒に対応する音声データは、参照用未加工音声データ（ｉ＋Ｖ）の前後に位置することが推定される。そして、参照用未加工音声データ（ｊ）、すなわち参照用未加工音声データ（ｉ＋Ｖ−４４１０００）は、参照用未加工音声データ（ｉ＋Ｖ）から１０秒間だけ前に位置するデータである。
【０１４４】
続いて、ＣＰＵ６２はＣＤドライブ１に対し、音声データＮＢのサンプル値（ｊ−６５５３５）以降の再生命令を送信し、ＣＤドライブ１はサンプル値（ｊ−６５５３５）、サンプル値（ｊ−６５５３４）、・・・を順次、コントローラ部６に送信する。ＣＰＵ６２は受信したサンプル値を、受信時刻を示す時間情報と共に、順次、ＲＡＭ６４のキューに記録する。
【０１４５】
ＣＰＵ６２は、サンプル値（ｊ）をキューに記録すると、ＤＳＰ６３に対し、参照用未加工音声データ（ｊ）に対する相関判定用データ生成処理の実行命令を送信する。ＤＳＰ６３は、参照用未加工音声データ（ｊ）に対する相関判定用データ生成処理を実行する（ステップＳ６９）。ステップＳ６９における相関判定用データ生成処理は、図４を用いて既に説明した処理と同様であるので、説明を省略する。ステップＳ６９の処理の結果、ＲＡＭ６４には参照用加工済音声データ（ｊ）が記録される。
【０１４６】
続いて、ＣＰＵ６２はＤＳＰ６３に対し、末尾参照用加工済音声データの、参照用加工済音声データ（ｊ）に対する相関判定処理の実行命令を送信する。ＤＳＰ６３は、ＲＡＭ６４に記録されたＳＭＦに含まれる末尾参照用加工済音声データと、ステップＳ６９においてＲＡＭ６４に記録された参照用加工済音声データ（ｊ）を読み出し、相関判定処理を実行する（ステップＳ７０）。ステップＳ７０における相関判定処理は、図１１を用いて既に説明した処理と同様であるので、説明を省略する。ステップＳ７０の処理の結果として、ＤＳＰ６３はＣＰＵ６２に対し、失敗通知もしくは成功通知を送信する。
【０１４７】
ＣＰＵ６２はＤＳＰ６３から失敗通知もしくは成功通知を受信すると、受信した通知が成功通知であるか否かを判定する（ステップＳ７１）。音声データＮＢにおける楽曲Ｎの先頭から末尾までの時間が、音声データＮＡにおける楽曲Ｎの先頭から末尾までの時間と１０秒間ずれることはまれであるので、通常、ステップＳ７１が初めて実行される場合、判定処理の結果はＮｏとなる。その場合、ＣＰＵ６２はｊを１増加させ（ステップＳ７２）、ＤＳＰ６３に対し、次の参照用未加工音声データに対する相関判定用データ生成処理の実行命令を送信する。ここで、ｊの値が音声データＮＢのサンプル値の総数よりも大きい場合、すなわち、参照用未加工音声データ（ｊ−１）が既に音声データＮＢの最後に到達している場合、ＤＳＰ６３は参照用未加工音声データ（ｊ）のキューからの読み出しに失敗し、ＣＰＵ６２にエラー通知を送信する（ステップＳ７３）。ステップＳ７２が初めて実行される場合、サンプル値（ｊ）はまだ音声データＮＢの最後のサンプル値に達していないので、ＣＰＵ６２はステップＳ７３においてＤＳＰ６３からエラー通知を受信することなく、ＤＳＰ６３は新たな参照用未加工音声データ（ｊ）に対し相関判定用データ生成処理を実行する（ステップＳ６９）。
【０１４８】
その後、ＣＰＵ６２はステップＳ６９〜ステップＳ７３の一連の処理を繰り返し、参照元音声データとしての末尾参照用加工済音声データに対し、参照先音声データを参照用加工済音声データ（ｊ）を順次変更しながら、相関判定処理が実行される。その結果、通常は何回目かのステップＳ６９において用いられる参照用未加工音声データ（ｊ）が、末尾参照用加工済音声データに対応する楽曲Ｎの部分を示す音声データに達する。その結果、ステップＳ６９で生成される参照用加工済音声データ（ｊ）と末尾参照用加工済音声データは、楽曲Ｎの同じ部分を示す音声データに対し、同じ相関判定用データ生成処理を施すことにより生成された音声データとなる。従って、これらの音声データの類似性は極めて高くなり、ステップＳ７０の相関判定処理の結果として、ＣＰＵ６２は成功通知を受信する。その結果、ステップＳ７１の判定処理の結果はＹｅｓとなる。
【０１４９】
ステップＳ７１の判定結果がＹｅｓである場合、ＣＰＵ６２はＣＤドライブ１に、音声データＮＢの再生の停止命令を送信し、ＣＤドライブ１は音声データＮＢの送信を停止する。続いて、ＣＰＵ６２は、ｊ／４４１００の値を求めることにより、参照用加工済音声データ（ｊ）の末尾に対応する時間情報を算出する。例えば、ステップＳ７１の判定処理の結果がＹｅｓとなった際、ｉ＝７６５１７９０であるとすると、７６５１７９０／４４１００＝約１７３．５１であるから、参照用加工済音声データ（ｊ）の末尾に対応する時間情報は約１７３．５１秒となる。続いて、ＣＰＵ６２はＲＡＭ６４に記録されているＳＭＦから末尾時間情報を読み出し、参照用加工済音声データ（ｊ）の末尾に対応する時間情報と、読み出した末尾時間情報とを用いて、時間差を算出する。以下、この時間差を「エンドオフセット」と呼ぶ。エンドオフセットは、音声データＮＡの楽曲Ｎに対し、音声データＮＢの楽曲Ｎの終了時点が早い場合に負、遅い場合に正の値をとる。例えば、参照用加工済音声データ（ｊ）の末尾に対応する時間情報が１７３．５１秒であり、末尾時間情報が１７３．１１秒である場合、トップオフセットは、１７３．５１−１７３．１１＝０．４０より、０．４０秒となる。ＣＰＵ６２は、エンドオフセットをＲＡＭ６４に記録する（ステップＳ７４）。
【０１５０】
ＣＰＵ６２は、ステップＳ７４におけるエンドオフセットの記録を終了すると、ＲＡＭ６４に記録されたＳＭＦに、トップオフセットおよびエンドオフセットを含むシステムエクスクルーシブイベントを追加する（ステップＳ７５）。図１６は、トップオフセットおよびエンドオフセットが追加された後のＳＭＦの内容を示した図である。トップオフセットおよびエンドオフセットを含むシステムエクスクルーシブイベントのデルタタイムは任意であるが、本実施形態においては０．００秒とする。
【０１５１】
続いて、ＣＰＵ６２は、ＳＭＦから演奏イベントに関するデータを全て読み出し、それらのデルタタイムを用いた以下の式（６）に従い、調整後のデルタタイムを算出し、その結果をＲＡＭ６４に記録する（ステップＳ７６）。ただし、式（６）において、ｄ：調整後のデルタタイム、Ｄ：調整前のデルタタイム、ＮＴ：先頭時間情報、ＮＥ：末尾時間情報、ＯＴ：トップオフセット、ＯＥ：エンドオフセット、である。
【数６】
2004151398.tif 000008
【０１５２】
式（６）において、第１項の（ＮＴ＋ＯＴ）は音声データＮＢにおいて、音声データＮＢの最初のサンプル値の再生タイミングを基準とした楽曲Ｎの開始時点を示す。（Ｄ−ＮＴ）は、音声データＮＡにおいて、楽曲Ｎの開始時点を基準とした演奏イベントの実行タイミングを示す。（ＮＥ＋ＯＥ）−（ＮＴ＋ＯＴ）は音声データＮＢにおける楽曲Ｎ全体の時間を、また（ＮＥ−ＮＴ）は音声データＮＡにおける楽曲Ｎ全体の時間を示す。従って、第２項は音声データＮＢにおいて、楽曲Ｎの開始時点を基準とした演奏イベントの実行タイミングを示す。以上より、第１項と第２項の和、すなわちｄは、音声データＮＢの最初のサンプル値の再生タイミングを基準とした演奏イベントの実行タイミングを示す。
【０１５３】
例えば、図１６に例示されるＳＭＦのデータが用いられる場合、最初の演奏イベントに関しては、Ｄ＝２．１１、ＮＴ＝１．１５、ＮＥ＝１７３．１１、ＯＴ＝−０．５０、ＯＥ＝０．４０、であるので、式（６）に従った計算により、この演奏イベントに対応する調整後のデルタタイムは約１．６２秒となる。
【０１５４】
ＣＰＵ６２はステップＳ７６における演奏イベントに関するデルタタイムの調整処理を終了すると、以下に説明するように、音声データＮＢとＭＩＤＩデータの再生を行う（ステップＳ７７）。まず、ＣＰＵ６２はＣＤドライブ１に対し、音声データＮＢの再生命令を送信する。この再生命令に応じて、ＣＤドライブ１は音声データＮＢのサンプル値を１／４４１００秒ごとに順次、コントローラ部６に送信する。ＣＰＵ６２は、ＣＤドライブ１から音声データＮＢの最初のサンプル値、すなわちサンプル値（０）を受信すると、クロックから得られるクロック信号に基づき、その時点（以下、「基準時点Ｒ」と呼ぶ）を基準とする計時を開始する。
【０１５５】
その後、ＣＰＵ６２はサンプル値（０）に続き、サンプル値（１）、サンプル値（２）、・・・を順次受信する。ＣＰＵ６２は受信したサンプル値を順次、発音部４に送信する。発音部４はサンプル値を受信すると、これを音に変換し出力する。その結果、ユーザは楽曲Ｎを聴くことができる。
【０１５６】
ＣＰＵ６２は、サンプル値を発音部４に送信する処理を行うと同時に、ＲＡＭ６４に記録されている演奏イベントの調整後のデルタタイムと、基準時点Ｒを基準とする計時の結果とを順次比較し、計時の結果がデルタタイムと一致すると、そのデルタタイムに対応する演奏イベントを自動演奏ピアノ部３に送信する。
【０１５７】
自動演奏ピアノ部３において、ＭＩＤＩイベント制御回路３４は演奏イベントをＣＰＵ６２から受信すると、受信した演奏イベントを音源３５もしくは駆動部３６に送信する。音源３５に演奏イベントが送信される場合、音源３５は受信される演奏イベントに従い、楽器の音を示す音声データを順次、発音部４に送信する。発音部４は、既に再生が開始されている音声データＮＢの楽曲の音と共に、音源３５から受信される楽器音による演奏をスピーカ４４から出力する。一方、駆動部３６に演奏イベントが送信される場合、駆動部３６は受信される演奏イベントに従い、ピアノ３１の鍵およびペダルを動かす。いずれの場合においても、ユーザは音声データＮＢに記録された楽曲Ｎと、ＳＭＦに記録された演奏情報による楽器音による演奏とを同時に聴くことができる。その後、ＣＤドライブ１は、音声データＮＢの最後のサンプル値を送信し終えると音声データＮＢの再生を停止し、音声データＮＢとＭＩＤＩデータの再生が終了する。
【０１５８】
ＣＰＵ６２は、音声データＮＢの最後のサンプル値を受信し、ステップＳ７７の処理を終了すると、操作表示部５に対し、トップオフセットおよびエンドオフセットの保存を行うか否かの指示をユーザに促すメッセージの表示命令を送信する。この表示命令に応じて、操作表示部５はメッセージを表示する（ステップＳ７８）。ユーザがステップＳ７８のメッセージに対し、操作表示部５の「保存する」に対応するキーパッドを押下すると、ＣＰＵ６２は操作表示部５から受信する信号に応じて、図１６に示したＳＭＦをＲＡＭ６４から読み出し、読み出したＳＭＦを保存命令と共にＦＤドライブ２に送信する。ＦＤドライブ２は、ＳＭＦおよび保存命令を受信すると、ＦＤに保存されているＳＭＦを、新たに受信したＳＭＦで上書き保存する（ステップＳ７９）。ＣＰＵ６２は、ＦＤドライブ２によるＳＭＦの保存が終了すると、一連の演奏イベントのタイミング調整処理を終了する。一方、ユーザがステップＳ７８のメッセージに対し、操作表示部５の「保存しない」に対応するキーパッドを押下すると、ＣＰＵ６２は操作表示部５から受信する信号に応じて、ステップＳ７９の処理は行わず、一連の演奏イベントのタイミング調整処理を終了する。
【０１５９】
上述した処理は、ステップＳ６３およびステップＳ７０における相関判定処理が共に成功した場合の処理であるが、音声データＮＡと音声データＮＢの内容が大きく異なる等の理由で、これらの相関判定処理が成功しない場合がある。以下、それらの場合における処理について説明する。
【０１６０】
まず、音声データＮＢの冒頭の２０秒間分から得られる参照用加工済音声データ（ｉ）の全てに関し、ステップＳ６３における相関判定処理の結果が失敗であった場合、ステップＳ６５の判定処理の結果がＹｅｓとなる。その場合、ＣＰＵ６２は、ユーザの手動による調整処理を実行する（ステップＳ８０）。以下、図１７を用いて、手動による調整処理を説明する。
【０１６１】
まずＣＰＵ６２は、トップオフセットおよびエンドオフセットを記録する変数として、それぞれＯＴおよびＯＥを生成し、それらに０をセットする。続いて、ＣＰＵ６２はＣＤドライブ１に対し、音声データＮＢの再生の停止命令、および音声データＮＢの先頭からの再生命令を送信する。この再生命令に応じて、ＣＤドライブ１は音声データＮＢのサンプル値を先頭から、１／４４１００秒ごとに順次、コントローラ部６に送信する。ＣＰＵ６２は、ＣＤドライブ１から音声データＮＢの最初のサンプル値を受信すると、クロックから得られるクロック信号に基づき、その時点を基準とする計時を開始する。その後、ＣＰＵ６２は受信したサンプル値を順次、発音部４に送信する。その結果、ユーザは楽曲Ｎを聴くことができる。ＣＰＵ６２は、サンプル値を発音部４に送信すると同時に、ＲＡＭ６４に記録されているＳＭＦの演奏イベントのデルタタイムと計時結果に従い、演奏イベントを自動演奏ピアノ部３に送信する。その結果、ユーザは楽曲Ｎと同時に、ＭＩＤＩデータに従った楽器音による演奏を聴くことができる（ステップＳ９１）。
【０１６２】
ＣＰＵ６２は、ステップＳ９１における音声データＮＢおよびＭＩＤＩデータの再生を行う一方で、操作表示部５に対し、ユーザにトップオフセットの調整を促すメッセージの表示命令を送信する。ユーザは操作表示部５により表示されるメッセージに従い、楽曲Ｎに対しＭＩＤＩデータによる演奏が先行していると感じる場合には「−」に対応するキーパッドを、楽曲Ｎに対しＭＩＤＩデータによる演奏が遅れていると感じる場合には「＋」に対応するキーパッドを押下する。ＣＰＵ６２は、「−」に対応するキーパッドが押下された場合にはＯＴを（１／７５）だけ増加させ、「＋」に対応するキーパッドが押下された場合にはＯＴを（１／７５）だけ減少させる（ステップＳ９２）。（１／７５）は音楽ＣＤにおける１フレームの時間（秒）を示す値である。
【０１６３】
ＣＰＵ６２は、ステップＳ９２においてＯＴの値を更新すると、上述した式（６）に従い、ＲＡＭ６４のＳＭＦに記録されている演奏イベントに対応するデルタタイムを用いて、調整後のデルタタイムを算出する。そして、調整後のデルタタイムをＲＡＭ６４に記録する。以降、ＣＰＵ６２は、この調整後のデルタタイムに従い、演奏イベントの自動演奏ピアノ部３への送信を行う。その結果、ＭＩＤＩデータによる演奏は、ユーザの操作に応じて全体として時間的に前後に調整される。従って、ユーザはトップオフセットの調整が反映されたＭＩＤＩデータによる演奏を楽曲Ｎと同時に聴くことにより、調整の是非を即座に確認できる。ユーザは「終了」に対応するキーパッドを押下するまで、繰り返しステップＳ９２の調整操作を行うことができる（ステップＳ９３：Ｎｏ）。
【０１６４】
ユーザは、トップオフセットの調整が反映されたＭＩＤＩデータによる演奏と楽曲Ｎとの同期が取れたと感じると、「終了」に対応するキーパッドを押下する。ＣＰＵ６２は、「終了」に対応するキーパッドが押下されると（ステップＳ９３：Ｙｅｓ）、操作表示部５に対し、ユーザにエンドオフセットの調整を促すメッセージの表示命令を送信する。ユーザは操作表示部５により表示されるメッセージに従い、楽曲Ｎに対しＭＩＤＩデータによる演奏が徐々に早まっていると感じる場合には「−」に対応するキーパッドを、楽曲Ｎに対しＭＩＤＩデータによる演奏が徐々に遅れていると感じる場合には「＋」に対応するキーパッドを押下する。ＣＰＵ６２は、「−」に対応するキーパッドが押下された場合にはＯＥを（１／７５）だけ増加させ、「＋」に対応するキーパッドが押下された場合にはＯＥを（１／７５）だけ減少させる（ステップＳ９４）。
【０１６５】
ＣＰＵ６２は、ステップＳ９４においてＯＥの値を更新すると、上述した式（６）に従い、ＲＡＭ６４のＳＭＦに記録されている演奏イベントに対応するデルタタイムを用いて、調整後のデルタタイムを算出する。そして、調整後のデルタタイムをＲＡＭ６４に記録する。ＣＰＵ６２はこの調整後のデルタタイムに従い、ＭＩＤＩデータの再生を行う。その結果、ＭＩＤＩデータによる演奏速度が、ユーザの操作に応じて調整され、ユーザはエンドオフセットの調整が反映されたＭＩＤＩデータによる演奏を楽曲Ｎと同時に聴くことにより、調整の是非を即座に確認できる。ユーザは「終了」に対応するキーパッドを押下するまで、繰り返しステップＳ９４の調整操作を行うことができる（ステップＳ９５：Ｎｏ）。
【０１６６】
ユーザは、エンドオフセットの調整が反映されたＭＩＤＩデータによる演奏と楽曲Ｎとの同期が取れたと感じると、「終了」に対応するキーパッドを押下する。ＣＰＵ６２は、「終了」に対応するキーパッドが押下されると（ステップＳ９５：Ｙｅｓ）、手動による調整処理を終了する。
【０１６７】
手動による調整処理を終了した後、ＣＰＵ６２は図１５のステップＳ７６に処理を移し、手動により調整されたトップオフセットおよびエンドオフセットを用いて、ステップＳ７６〜ステップＳ７９を実行する。その結果、ユーザは音声データＮＢによる楽曲Ｎと、楽曲Ｎに正しく同期の取れたＭＩＤＩデータの再生による演奏とを同時に聴くことができる。
【０１６８】
一方、音声データＮＢの楽曲Ｎの終了時点から約１０秒手前から音声データＮＢの最後までの参照用加工済音声データ（ｉ）の全てに関し、ステップＳ７０における相関判定処理の結果が失敗であった場合、ステップＳ７３の判定処理の結果がＹｅｓとなる。その場合、ＣＰＵ６２は、ＳＭＦに含まれる管理用イベントによる調整処理を実行する（ステップＳ８１）。以下、管理用イベントによる調整処理を説明する。
【０１６９】
まずＣＰＵ６２はＣＤドライブ１に対し、音声データＮＢの先頭からの再生命令を送信する。この再生命令に応じて、ＣＤドライブ１は音声データＮＢのサンプル値を先頭から、１／４４１００秒ごとに順次、コントローラ部６に送信する。ＣＰＵ６２は、ＣＤドライブ１から音声データＮＢの最初のサンプル値を受信すると、クロックから得られるクロック信号に基づき、その時点を基準とする計時を開始する。
【０１７０】
ＣＰＵ６２はＣＤドライブ１からサンプル値を受信すると、サンプル値を、サンプル値の受信時刻を示す時間情報とともにＲＡＭ６４のキューに順次記録する。同時に、ＣＰＵ６２は受信したサンプル値の左右いずれかの絶対値が１０００を超えるか否かを判定する。受信したサンプル値の左右いずれかの絶対値が１０００を超えた場合、ＣＰＵ６２はＤＳＰ６３に対し、管理用イベント生成処理の実行命令を送信し、ＤＳＰ６３は管理用イベント生成処理を実行する。管理用イベント生成処理は、図６を用いて既に説明した処理と同じであるので、説明を省略する。
【０１７１】
管理用イベント生成処理により、ＣＰＵ６２はＤＳＰ６３から管理用イベントを受信する。ＣＰＵ６２は管理用イベントを受信すると、管理用イベントの受信時刻を示す時間情報と共に、ＲＡＭ６４に記録する。以下、ＲＡＭ６４に記録されているＳＭＦに含まれる管理用イベントを管理用イベントＡと呼び、音声データＮＢに対する管理用イベント生成処理によりＣＰＵ６２が受信する管理用イベントを管理用イベントＢと呼ぶ。
【０１７２】
ＣＤドライブ１による音声データＮＢの再生が終了し、最後の管理用イベントＢの時間情報をＲＡＭ６４に記録すると、ＣＰＵ６２は管理用イベントＡのデルタタイムと、管理用イベントＢの時間情報を用いて、管理用イベントＡと管理用イベントＢの対応付けの処理を行う。以下、データ例を用いて、管理用イベントＡと管理用イベントＢの対応付けの処理を説明する。
【０１７３】
図１８は、管理用イベントＡに対応するデルタタイムと、管理用イベントＢに対応して記録される時間情報のデータ例を示す表である。ただし、音声データＮＡの列の先頭の値は先頭時間情報を、また音声データＮＢの列の先頭の値は先頭時間情報にステップＳ６７においてＲＡＭ６４に記録されたトップオフセットを加えた時間情報を示している。以下、先頭時間情報にトップオフセットを加えた時間情報を先頭時間情報Ｂと呼び、音声データＮＡに関する先頭時間情報を先頭時間情報Ｂと区別するために、先頭時間情報Ａと呼ぶ。また、図１８における第１の管理用イベントＡを管理用イベントＡ１、第２の管理用イベントＡを管理用イベントＡ２、・・・のように呼ぶ。管理用イベントＢに関しても同様とする。
【０１７４】
図１８において、先頭時間情報Ａと先頭時間情報Ｂは対応している。まず、ＣＰＵ６２は（管理用イベントＡ１−先頭時間情報Ａ）／（管理用イベントＢ１−先頭時間情報Ｂ）を求める。その値は、（１．５１−１．１５）／（１．０１−０．６５）＝１．００である。続いて、ＣＰＵ６２は、求めた値が所定の値の範囲に入っているか否かを判定する。以下、例として、その範囲を０．９７〜１．０３とする。この判定処理は、管理用イベントＡ１と管理用イベントＢ１が対応していると仮定した場合、先頭時間情報Ａおよび先頭時間情報Ｂからの時間の誤差が３％以下であるか否かの判定処理である。この場合、誤差は０％であるので、ＣＰＵ６２は管理用イベントＡ１と管理用イベントＢ１を対応付ける。もし、上記の計算の結果が０．９７より小さい場合、管理用イベントＡ１のデルタタイムは管理用イベントＢ１の時間情報に対して早すぎるので、ＣＰＵ６２は管理用イベントＡ１に対応する管理用イベントＢは無いものと見なし、管理用イベントＡ２と管理用イベントＢ１において、上記と同様の判定処理および対応付けの処理を行う。一方、もし上記の計算の結果が１．０３より大きい場合、管理用イベントＡ１のデルタタイムは管理用イベントＢ１の時間情報に対して遅すぎるので、ＣＰＵ６２は管理用イベントＢ１に対応する管理用イベントＡは無いものと見なし、管理用イベントＡ１と管理用イベントＢ２において、上記と同様の判定処理および対応付けの処理を行う。以下、最後に対応付けられた管理用イベントＡと管理用イベントＢを、それぞれ管理用イベントＡｎ、管理用イベントＢｎと呼ぶ。
【０１７５】
続いて、ＣＰＵ６２は、先頭時間情報Ｂ＋（管理用イベントＡｎ＋１−先頭時間情報Ａ）×（管理用イベントＢｎ−先頭時間情報Ｂ）／（管理用イベントＡｎ−先頭時間情報Ａ）を計算することにより、管理用イベントＡｎ＋１のデルタタイムから、対応する管理用イベントＢの時間情報を推定する。図１９は、上記の計算式により算出される管理用イベントＢの時間情報の推定値を示している。例えば、管理用イベントＡｎが管理用イベントＡ１、管理用イベントＢｎが管理用イベントＢ１である場合、管理用イベントＢの推定値は、０．６５＋（２．３８−１．１５）×（１．０１−０．６５）／（１．５１−１．１５）＝約１．８８（秒）である。ＣＰＵ６２は、この推定値と、管理用イベントＢｎ＋１との差が所定の範囲に入っているか否かを判定する。以下、例として、この範囲を−０．２０〜０．２０とする。この判定処理は、管理用イベントＡｎ＋１のデルタタイムから推定された管理用イベントＢの時間情報と、管理用イベントＢｎ＋１の時間情報の示す時間の差が０．２０秒以下であるか否かを判定する処理である。ＣＰＵ６２は、推定値と管理用イベントＢｎ＋１との差が−０．２０〜０．２０の範囲に入っている場合、管理用イベントＡｎ＋１と管理用イベントＢｎ＋１とを対応付ける。
【０１７６】
一方、推定値から管理用イベントＢｎ＋１の時間情報を減じた値が−０．２０より小さい場合、ＣＰＵ６２は管理用イベントＡｎ＋１に対応する管理用イベントＢは存在しないものと見なし、管理用イベントＡｎ＋１の代わりに管理用イベントＡｎ＋２を用いて、上記の判定処理および対応付けの処理を行う。また、推定値から管理用イベントＢｎ＋１の時間情報を減じた値が０．２０より大きい場合、ＣＰＵ６２は管理用イベントＢｎ＋１に対応する管理用イベントＡは存在しないものと見なし、管理用イベントＢｎ＋１の代わりに管理用イベントＢｎ＋２を用いて、上記の判定処理および対応付けの処理を行う。
【０１７７】
例えば、管理用イベントＡｎが管理用イベントＡ５であり、管理用イベントＢｎが管理用イベントＢ５である場合、管理用イベントＡ６のデルタタイムから推定される管理用イベントＢの時間情報は約８．２５秒であるが、管理用イベントＢ６の時間情報は９．７６秒であり、その差は約−１．５１秒となる。従って、管理用イベントＡ６には対応する管理用イベントＢが存在しないと見なされる。また、管理用イベントＡｎが管理用イベントＡ９であり、管理用イベントＢｎが管理用イベントＢ８である場合、管理用イベントＡ１０のデルタタイムから推定される管理用イベントＢの時間情報は約１７．７９秒であるが、管理用イベントＢ９の時間情報は１５．５７秒であり、その差は約２．２２秒となる。従って、管理用イベントＢ９には対応する管理用イベントＡが存在しないと見なされる。
【０１７８】
ＣＰＵ６２は、全ての管理用イベントＡおよび管理用イベントＢに関し、上記の対応付けの処理を終えると、対応付けられた管理用イベントＡのデルタタイムと管理用イベントＢの時間情報との複数の対を用いて、管理用イベントＡのデルタタイムと管理用イベントＢの時間情報との間の関係式を推定する。図２０は図１９のデータ例を含むデータに関し、最小自乗法を用いて求めた回帰直線を示すグラフである。続いて、ＣＰＵ６２はＲＡＭ６４に記録されたＳＭＦから末尾時間情報を読み出し、読み出した末尾時間情報を推定した関係式に代入することにより、音声データＮＢにおける楽曲Ｎの最後に対応する時間情報を算出する。例えば、図２０に示した例においては、（管理用イベントＢの時間情報）＝（管理用イベントＡのデルタタイム）×１．００５３−０．５０７５の関係が推定されているので、末尾時間情報である１７３．１１秒をこの式に代入することにより、約１７３．５２秒が得られる。このようにして求められた音声データＮＢにおける楽曲Ｎの最後に対応する時間情報を、以下、末尾時間情報Ｂと呼び、音声データＮＡにおける末尾時間情報を末尾時間情報Ｂと区別するために、以下、末尾時間情報Ａと呼ぶ。
【０１７９】
ＣＰＵ６２は、末尾時間情報Ｂを算出すると、（末尾情報時間Ｂ−末尾情報時間Ａ）を算出し、算出した値をエンドオフセットとしてＲＡＭ６４に記録する。続いて、ＣＰＵ６２はＲＡＭ６４に記録されたＳＭＦに、トップオフセットおよびエンドオフセットを含むシステムエクスクルーシブイベントを追加する。
その後、ＣＰＵ６２は図１５のステップＳ７６〜ステップＳ７９を実行する。その結果、ユーザは音声データＮＢによる楽曲Ｎと、楽曲Ｎに正しく同期の取れたＭＩＤＩデータの再生による演奏とを同時に聴くことができる。
【０１８０】
図２１は、音声データＮＢ、音声データＮＢから生成される参照用加工済音声データにおいて先頭参照用加工済音声データおよび末尾参照用加工済音声データに対応する部分、音声データＮＢから生成される管理用イベント、および演奏イベントの時間的関係を整理した図である。図２１の下段に示されているように、演奏イベントはタイミング調整処理が行われない場合、音声データＮＢの開始時点から、２．１１秒、２．６２秒、３．６０秒、・・・が経過した時点で、それぞれ自動演奏ピアノ部３に送信される。その場合、音声データＮＢの楽曲Ｎの開始前の沈黙は、音声データＮＡの楽曲Ｎの開始前の沈黙よりも短いため、ＭＩＤＩデータによる演奏が遅れて始まる結果となる。また、音声データＮＢによる楽曲Ｎの全時間は、音声データＮＡによる楽曲Ｎの全時間よりも長いため、ＭＩＤＩデータによる演奏速度は楽曲Ｎに対して速く、楽曲Ｎの後半においてはＭＩＤＩデータによる演奏が楽曲Ｎに先行する結果となる。これに対し、タイミング調整処理が行われた場合は、トップオフセットおよびエンドオフセットを用いた式（６）による演奏イベントのタイミング調整により、正しいタイミングで演奏イベントが自動演奏ピアノ部３に送信される。
【０１８１】
［１．２．２．３：同期再生および手動による再度の調整］
上述した演奏イベントのタイミング調整処理において、ステップＳ７８でユーザがトップオフセットおよびエンドオフセットを含むＳＭＦのＦＤへの保存を指示した場合、ユーザが再度、音声データＮＢとＳＭＦとの同期再生を行う際には、図１５を用いて説明した演奏イベントのタイミング調整処理の全てを再度実行する必要はない。以下、トップオフセットおよびエンドオフセットを含むＳＭＦと音声データＮＢの同期再生における処理を説明する。
【０１８２】
ユーザが操作表示部５の所定のキーパッドを押下することにより、ＦＤに保存されているＳＭＦと音楽ＣＤ−Ｂに含まれる音声データＮＢとの同期再生を指示すると、まず、ＣＰＵ６２はＳＭＦを、ＦＤドライブ２を介してＦＤから読み出し、読み出したＳＭＦをＲＡＭ６４に記録する。続いて、ＣＰＵ６２はＳＭＦのトップオフセットおよびエンドオフセットを読み出し、ＳＭＦに含まれる演奏イベントのデルタタイムに対し、式（６）を用いた調整処理を行った後、ＲＡＭ６４に調整処理後のデルタタイムを記録する。
【０１８３】
続いて、ＣＰＵ６２はＣＤドライブ１に音声データＮＢの再生命令を送信し、ＣＤドライブ１は音声データＮＢのサンプル値を順次、コントローラ部６に送信する。ＣＰＵ６２は、最初のサンプル値を受信すると、そのサンプル値の受信時刻を基準として、計時を開始する。ＣＰＵ６２は、受信するサンプル値を順次、発音部４に送信し、ユーザは楽曲Ｎを聴くことができる。同時に、ＣＰＵ６２は調整処理後のデルタタイムと計時される時間とを順次比較し、調整処理後のデルタタイムと計時される時間とが一致した場合、そのデルタタイムに対応する演奏イベントを自動演奏ピアノ部３に送信する。その結果、ユーザはＳＭＦのＭＩＤＩデータによる演奏を、楽曲Ｎに対する正しいタイミングで聴くことができる。
【０１８４】
ユーザが楽曲ＮおよびＭＩＤＩデータによる演奏を同時に聴いている際、それらが正しく合っていないと感じた場合、ユーザは操作表示部５の所定のキーパッドを押下することにより、手動によるトップオフセットおよびエンドオフセットの調整処理を行うことができる。手動によるトップオフセットおよびエンドオフセットの調整処理は、図１７のステップＳ９１〜ステップＳ９５までの処理と同様であるので、説明を省略する。ユーザは手動によるトップオフセットおよびエンドオフセットの調整処理を終えた後、操作表示部５の所定のキーパッドを押下することにより、調整後のトップオフセットおよびエンドオフセットを含むＳＭＦをＦＤに保存することができる。ＣＰＵ６２は、操作表示部５を介して、ユーザよりＳＭＦのＦＤへの保存の指示を受信すると、調整後のトップオフセットおよびエンドオフセットを含むＳＭＦをＲＡＭ６４から読み出し、読み出したＳＭＦを保存命令と共にＦＤドライブ２に送信する。ＦＤドライブ２はＳＭＦを受信し、ＦＤに保存されているＳＭＦに対し、受信したＳＭＦを上書き保存する。その結果、再度ユーザが音声データＮＢとＳＭＦのＭＩＤＩデータとの同期再生を行う際、最終的に調整の行われたトップオフセットおよびエンドオフセットを用いて演奏イベントの送信タイミングが調整され、再度の手動による調整処理を要しない。
【０１８５】
［２：変形例］
上述した実施形態は本発明の実施形態の例示であり、上記実施形態に対しては、本発明の趣旨から逸脱しない範囲で様々な変形を加えることができる。以下、変形例を示す。
【０１８６】
［２．１：第１変形例］
上述した実施形態においては、ＳＭＦに記録される音声データＮＡに対する管理用イベントおよび演奏イベントのデルタタイム、先頭時間情報、および末尾時間情報は、ＣＰＵ６２が音声データＮＡの最初のサンプル値を受信した時点を基準とする、ＣＰＵ６２の計時により得られる時間情報であった。同様に、上述した実施形態においては、ＲＡＭ６４に記録される音声データＮＢに対する管理用イベントのデルタタイム、音声データＮＢにおいて楽曲Ｎの開始に対応する時間情報、および音声データＮＢにおいて楽曲Ｎの最後に対応する時間情報は、ＣＰＵ６２が音声データＮＢの最初のサンプル値を受信した時点を基準とする、ＣＰＵ６２の計時により得られる時間情報であった。
【０１８７】
これに対し、第１変形例においては、ＣＤドライブ１からコントローラ部６に送信される、音声データＮＡおよび音声データＮＢのタイムコードが、ＣＰＵ６２の計時による時間情報の代わりに用いられる。タイムコードとは、音楽ＣＤにおいて音声データのまとまりである１フレーム、すなわち５８８のサンプル値に対応して音楽ＣＤに記録されているデータであり、各タイムコードは、音声データの開始時点から当該タイムコードに対応した音声データの再生タイミングまでの経過時間を表している。
【０１８８】
第１変形例において、まずコントローラ部６はクロック信号を常時、ＣＤドライブ１に送信している。ＣＤドライブ１は、コントローラ部６から受信するクロック信号に従い、音声データのコントローラ部６への送信を行う。さらに、ＣＤドライブ１は、音声データの送信に際し、音声データに対応するタイムコードも送信する。ＣＰＵ６２はＲＡＭ６４のキューにサンプル値を記録する際、計時による時間情報ではなく、ＣＤドライブ１から送信されるタイムコードの示す時間情報をサンプル値と共に記録する。なお、より細かい精度で時間情報を扱う必要がある場合には、ＣＰＵ６２はタイムコードと、そのタイムコードに対応するフレームの先頭から数えた各サンプル値の番号から、各サンプル値に対応するより正確な時間情報を算出し、算出した時間情報をキューに記録する。
【０１８９】
ＣＰＵ６２は、音声データＮＡに対する管理用イベントや演奏イベント、および音声データＮＢに対する管理用イベントを受信すると、その時点で受信されたサンプル値に対応するタイムコードが示す時間情報を、それらのイベントデータに対応する時間情報とする。
第１変形例によれば、音楽ＣＤに記録されているタイムコードが利用され、ＣＰＵ６２が計時を行う必要がないため、ＣＰＵ６２の処理が簡便化される。
【０１９０】
［２．２：第２変形例］
第２変形例においては、同期記録再生装置ＳＳの各構成部は同じ装置の中に配置されておらず、グループごとに分離して配置されている。例えば、以下のそれぞれのグループに分離配置することが可能である。
（１）ＣＤドライブ１
（２）ＦＤドライブ２
（３）自動演奏ピアノ部３
（４）ミキサ４１およびＤ／Ａコンバータ４２
（５）アンプ４３
（６）スピーカ４４
（７）操作表示部５およびコントローラ部６
【０１９１】
さらに、コントローラ部６は、記録動作のみを行う装置と再生動作のみを行う装置とに別々に構成されていてもよい。これらの構成部のグループ間は、オーディオケーブル、ＭＩＤＩケーブル、オーディオ用光ケーブル、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ケーブル、および専用の制御用ケーブル等で接続される。また、ＦＤドライブ２、アンプ４３、スピーカ４４等は市販のものを利用してもよい。
【０１９２】
第２変形例によれば、同期記録再生装置ＳＳの配置の柔軟性が高まると同時に、ユーザは同期記録再生装置ＳＳの全てを新たに準備することなく、必要なコストを低減できる。
【０１９３】
［２．３：第３変形例］
第３変形例においては、同期記録再生装置ＳＳにおいてＣＤドライブ１およびＦＤドライブ２はない。その一方で、通信インタフェースはＬＡＮ（ＬｏｃａｌＡｒｅａ  Ｎｅｔｗｏｒｋ）に接続可能な機能を有し、外部の通信機器とＬＡＮおよびＷＡＮを介して接続されている。さらに、コントローラ部６はＨＤ（Ｈａｒｄ  Ｄｉｓｋ）を有している。
【０１９４】
コントローラ部６は、ＬＡＮを介して他の通信機器から、音声データを受信し、受信した音声データをＨＤに記録する。同様に、コントローラ部６は、ＬＡＮを介して他の通信機器から、音声データに対応して作成されたＳＭＦを受信し、受信したＳＭＦをＨＤに記録する。
【０１９５】
コントローラ部６はＣＤドライブ１から音声データを受信する代わりに、ＨＤから音声データを読み出す。また、コントローラ部６はＦＤドライブ２に対しＳＭＦの書込および読出を行う代わりに、ＨＤに対し同様の動作を行う。
【０１９６】
第３変形例によれば、ユーザは音声データおよびＳＭＦを、ＬＡＮを介して地理的に離れた通信機器との間で送受信することができる。なお、ＬＡＮはインターネット等の広域通信網と接続されていてもよい。
【０１９７】
［２．４：第４変形例］
上述した実施形態においては、相関判定処理のステップＳ５１およびステップＳ５２において、絶対相関指標による判定、相対相関指標による判定、および相関値による判定の全てが用いられているが、第４変形例においては、これらの判定の１つまたは複数の組み合わせにより相関判定処理が行われる。なお、これらの判定の１つまたは複数の組み合わせを、自由に選択可能としてもよい。
第４変形例によれば、より柔軟に必要とされる精度の判定結果を得ることができる。
【０１９８】
［２．５：第５変形例］
上述した実施形態においては、相関判定処理のステップＳ５２において、式（４）および式（５）で示される判定により、相関値の極大値が検出されているが、第５変形例においては、式（４）で示される判定のみが行われ、相関値の極値が検出される。
【０１９９】
より具体的には、ステップＳ５２において、ＤＳＰ６３はＤｍ−１とＤｍの積を求め、その積が０以下であるか否かを判定する。ここでその積が０以下である場合、相関値の変化率は０であるか、もしくは０をまたがって変化しているので、その時点における相関値は極値もしくは極値の近似値である。従って、Ｄｍ−１とＤｍの積が０以下である場合、ステップＳ５２の判定処理の結果をＹｅｓとする。
【０２００】
第５変形例によれば、極大値の近辺に極小値が現れる可能性が低い場合、上述した実施形態におけるステップＳ５２と同様の判定結果を、より簡易な判定処理により得ることができる。
【０２０１】
［２．６：第６変形例］
上述した実施形態においては、ＳＭＦに記録される先頭時間情報および末尾時間情報は、音声データＮＡのサンプル値の値が一定値を超えるか否かの判定に基づき決定されていた。従って、ＳＭＦに記録される先頭参照用加工済音声データおよび末尾参照用加工済音声データは、それぞれ、音声データＮＡにおいて楽曲Ｎの先頭付近および末尾付近に位置する音声データを用いて生成されるデータであった。
【０２０２】
しかしながら、第６変形例においては、先頭時間情報および末尾時間情報はそれぞれ、楽曲Ｎの任意の時点が選択される。例えば、ユーザが楽曲Ｎの内容に応じて適する時点をそれらの時間情報として指定することができる。また、音声データＮＡの先頭から一定時間経過後の時点を先頭時間情報とし、また、音声データＮＡの末尾から一定時間手前の時点を末尾時間情報とすることもできる。
【０２０３】
第６変形例によれば、例えばライブ演奏を収録した音楽ＣＤにおいて、楽曲の前後の拍手や歓声の部分を避けて、先頭参照用加工済音声データあるいは末尾参照用加工済音声データの生成用データを選択することが可能である。また、楽曲Ｎの先頭付近あるいは末尾付近に特定のパターンの繰り返しがある場合であっても、そのパターン部分を避けて、相関判定処理に用いるのに適した特徴的な部分の音声データを先頭参照用加工済音声データあるいは末尾参照用加工済音声データの生成用データとして選択することが可能である。
【０２０４】
［２．７：第７変形例］
第７変形例においては、トップオフセットおよびエンドオフセットを含むＳＭＦがＦＤに記録される際に、音声データＮＢを特定可能な識別情報がＳＭＦに追加される。音声データＮＢを特定可能な識別情報としては、例えば音楽ＣＤ−Ｂの識別データおよび音楽ＣＤ−Ｂにおいて音声データＮＢが記録されているトラック番号の組み合わせが考えられる。なお、音楽ＣＤ−Ｂの識別データは音楽ＣＤ−Ｂの目次情報として記録されており、ＣＰＵ６２はＣＤドライブ１を介して識別データを音楽ＣＤ−Ｂから読み出す。ＣＰＵ６２は、読み出した音楽ＣＤ−Ｂの識別データを、ユーザの指示により与えられている音声データＮＢのトラック番号と共に、ＲＡＭ６４に記録されているＳＭＦにシステムエクスクルーシブイベントとして追加する。その後、ＣＰＵ６２はＲＡＭ６４に記録されているＳＭＦをＦＤドライブ２に送信し、ＦＤドライブはそのＳＭＦをＦＤに保存する。
【０２０５】
ユーザが音楽ＣＤをＣＤドライブ１にセットし、再生を行う音声データが含まれるトラック番号を操作表示部５を用いて指定すると、ＣＰＵ６２はまず、ＣＤドライブ１を介して音楽ＣＤの識別データを読み出し、続いて読み出した音楽ＣＤの識別データとユーザにより指定されたトラック番号の組み合わせが記録されているＳＭＦを、ＦＤドライブ２を介して、ＦＤに記録されている複数のＳＭＦの中から検索する。ＣＰＵ６２は検索されたＳＭＦを読み出し、読み出したＳＭＦを用いて音声データとＭＩＤＩデータとの同期再生を開始する。ＳＭＦの検索において、ＣＤドライブ１にセットされた音楽ＣＤの識別データとユーザにより指定されたトラック番号の組み合わせを記録したＳＭＦがＦＤに記録されていない場合、ＣＰＵ６２は音声データとＭＩＤＩデータとの同期再生を行わず、操作表示部５を介してエラーメッセージを表示し、ユーザに正しいＦＤもしくは音楽ＣＤのセットを促す。
【０２０６】
第７変形例によれば、ユーザが正しくない組み合わせの音楽ＣＤとＳＭＦを用いて同期再生を試みた場合、組み合わせが正しくないことが即座にユーザに対して示されるので、音声データとＳＭＦの管理を容易に行うことができる。さらに、ＦＤに複数のＳＭＦが記録されている場合であっても、セットされた音楽ＣＤと指定されたトラック番号に基づき、自動的に適するＳＭＦが読み出されるため、ユーザはＳＭＦの指定を別途行う必要がない。
【０２０７】
【発明の効果】
本発明によれば、同じ楽曲であっても、楽曲の開始時点および終了時点が異なる音声データを記録した、異なる版の音声データのいずれに対しても、正しいタイミングでＭＩＤＩデータ等の演奏データの同期再生を行うことができる。従って、同じ楽曲の異なる版に対し異なる演奏データを準備する必要がなく、演奏データの作成および管理が簡便化される。
【０２０８】
なお、同じ楽曲の異なる版においては、楽曲の録音レベルが異なる場合があるが、本発明によれば、楽曲の開始時点および終了時点を決定する際に用いられる指標の一つとして、参照用の音声データの示す音声波形の形状と、実際の音声データの示す音声波形の形状との相似の度合いを示す指標を用いることが可能なため、録音レベルが異なる版のオーディオデータに対しても、正しく再生開始のタイミングを決定することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係る同期記録再生装置ＳＳの構成を示す図である。
【図２】ＳＭＦの構成を示す図である。
【図３】ＭＩＤＩイベントの構成を示す図である。
【図４】本発明の実施形態に係る相関判定用データ生成処理のフロー図である。
【図５】本発明の実施形態に係る相関判定用データ生成処理に用いられる櫛形フィルタの構成を示す図である。
【図６】本発明の実施形態に係る管理用イベント生成処理のフロー図である。
【図７】本発明の実施形態に係る管理用イベント生成処理に用いられる櫛形フィルタの構成を示す図である。
【図８】本発明の実施形態に係る中期指標、長期指標および管理用イベントの時間的関係を示す図である。
【図９】本発明の実施形態に係る管理用イベントと演奏イベントの時間的関係を示す図である。
【図１０】本発明の実施形態に係る末尾参照用加工済音声データ生成処理のフロー図である。
【図１１】本発明の実施形態に係る相関判定処理のフロー図である。
【図１２】本発明の実施形態に係る相関判定処理における、計算式の値の変化と判定結果との関係を示す図である。
【図１３】本発明の実施形態に係るＳＭＦを示す図である。
【図１４】本発明の実施形態に係る音声データ、先頭参照用加工済音声データ、末尾参照用加工済音声データ、管理用イベントおよび演奏イベントの時間情報およびデルタタイムの時間的関係を示す図である。
【図１５】本発明の実施形態に係る演奏イベントのタイミング調整処理のフロー図である。
【図１６】本発明の実施形態に係るＳＭＦを示す図である。
【図１７】本発明の実施形態に係る手動による調整処理のフロー図である。
【図１８】本発明の実施形態に係る、異なる音声データに対する管理用イベントのデルタタイムおよび時間情報のデータ例である。
【図１９】本発明の実施形態に係る管理用イベントの対応付け処理の様子を示すデータ例である。
【図２０】本発明の実施形態に係る、異なる音声データに対する管理用イベントのデルタタイムおよび時間情報の関係を示す図である。
【図２１】本発明の実施形態に係る音声データ、参照用加工済音声データ、管理用イベントおよび演奏イベントの時間情報およびデルタタイムの時間的関係を示す図である。
【符号の説明】
１・・・ＣＤドライブ、２・・・ＦＤドライブ、３・・・自動演奏ピアノ部、４・・・発音部、５・・・操作表示部、６・・・コントローラ部、３１・・・ピアノ、３２・・・キーセンサ、３３・・・ペダルセンサ、３４・・・ＭＩＤＩイベント制御回路、３５・・・音源、３６・・・駆動部、４１・・・ミキサ、４２・・・Ｄ／Ａコンバータ、４３・・・アンプ、４４・・・スピーカ、６１・・・ＲＯＭ、６２・・・ＣＰＵ、６３・・・ＤＳＰ、６４・・・ＲＡＭ、６５・・・通信インタフェース。
【図１】
2004151398.tif 000009
【図２】
2004151398.tif 000010
【図３】
2004151398.tif 000011
【図４】
2004151398.tif 000012
【図５】
2004151398.tif 000013
【図６】
2004151398.tif 000014
【図７】
2004151398.tif 000015
【図８】
2004151398.tif 000016
【図９】
2004151398.tif 000017
【図１０】
2004151398.tif 000018
【図１１】
2004151398.tif 000019
【図１２】
2004151398.tif 000020
【図１３】
2004151398.tif 000021
【図１４】
2004151398.tif 000022
【図１５】
2004151398.tif 000023
【図１６】
2004151398.tif 000024
【図１７】
2004151398.tif 000025
【図１８】
2004151398.tif 000026
【図１９】
2004151398.tif 000027
【図２０】
2004151398.tif 000028
【図２１】
2004151398.tif 000029