(57)【要約】      （修正有）【課題】ビートトラッキング技術に基づくコード自動演奏におけるコード演奏のタイミング指定技術に関し、次の音を弾くタイミングを自分で制御するという動作のみでタイミング情報を修正可能とする。【解決手段】選択したオーディオ曲データから小節、拍、およびコード情報を関連付けながら解析しＳ８０１、Ｓ８０２、解析した小節および拍を再生しながら演奏入力を受け付け、その発生したタイミングで再生される小節または拍に関連付けられているコード情報に基づいてコード演奏が行われるＳ８０３。曲データの再生中に外部から操作入力及び操作解除がなされた場合にそのタイミングが取得され、演奏操作がなされた場合に演奏操作のタイミングが取得され、取得されたタイミングに基づいて、コード情報の読出しタイミングが制御されるＳ８０４。制御されたタイミングに応答して読み出されたコード情報に基づいてコード音が再生される。【選択図】図８
2015184390.tif 000002
【特許請求の範囲】
【請求項１】
記憶されている曲データを順次読み出すとともに、当該曲データの複数の再生位置それぞれに関連付けて記憶されたコード情報を読み出す曲データ読み出し手段と、
前記読み出された曲データを再生する曲データ再生手段と、
前記曲データ再生手段による前記曲データの再生中に外部から操作入力及び操作解除がなされた場合に、当該操作入力及び操作解除のタイミングを取得する第１のタイミング取得手段と、
演奏操作がなされた場合に、当該演奏操作のタイミングを取得する第２のタイミング取得手段と、
前記第１及び第２のタイミング取得手段により取得されたタイミングに基づいて、前記曲データ読出し手段による前記コード情報の読出しタイミングを制御するタイミング制御手段と、
前記演奏操作のタイミングに応答して、前記読出し手段により読み出された前記コード情報に基づいたコード音を再生するコード再生手段と、
を備えることを特徴とするコード演奏タイミング指定装置。
【請求項２】
前記タイミング制御手段は、前記外部からの操作入力と操作解除との間に前記コード読出しタイミング及び前記演奏操作タイミングが存在する場合は、当該読出しタイミングにて読み出されるべきコード情報を、前記操作解除のタイミングで読み出すように制御する、請求項１に記載のコード演奏タイミング指定装置。
【請求項３】
前記タイミング制御手段は、前記外部からの操作入力と操作解除との間に前記コード読出しタイミング及び前記演奏操作タイミングのいずれもが存在せず、前記操作解除のタイミングの後に前記演奏操作タイミング、続いて前記コード情報の読み出しタイミングが到来する場合は、当該読出しタイミングにて読み出されるべきコード情報を前記演奏操作タイミングで読み出すように制御する、請求項１又は請求項２に記載のコード演奏タイミング指定装置。
【請求項４】
前記コード再生手段にて再生されるコード音を、前記操作入力のタイミングに応答してガイド表示するコードガイド表示手段を更に備える、
ことを特徴とする請求項１乃至請求項３のいずれかに記載のコード演奏タイミング指定装置。
【請求項５】
請求項１乃至請求項４のいずれかに記載のコード演奏タイミング指定装置と、
前記演奏操作を行う演奏入力操作子と、
前記曲データ再生手段及び前記コード再生手段によって再生される音を発音する楽音出力部とを備える電子楽器。
【請求項６】
コード演奏タイミング指定操作装置が、
記憶されている曲データを順次読み出すともに、当該曲データの複数の再生位置それぞれに関連付けて記憶されたコード情報を読み出し、
前記読み出された曲データを再生し、
前記曲データの再生中に外部から操作入力及び操作解除がなされた場合に、当該操作入力及び操作解除のタイミングを取得し、
演奏操作がなされた場合に、当該演奏操作のタイミングを取得し、
前記取得された操作入力タイミング、操作解除タイミング及び演奏操作のタイミングに基づいて、前記コード情報の読出しタイミングを制御し、
前記演奏操作のタイミングに応答して、前記読み出されたコード情報に基づいたコード音を再生する、コード演奏タイミング指定方法。
【請求項７】
コード演奏タイミング指定操作装置として用いられるコンピュータに、
記憶されている曲データを順次読み出すともに、当該曲データの複数の再生位置それぞれに関連付けて記憶されたコード情報を読み出すステップ、
前記読み出された曲データを再生するステップと、
前記曲データの再生中に外部から操作入力及び操作解除がなされた場合に、当該操作入力及び操作解除のタイミングを取得するステップと、
演奏操作がなされた場合に、当該演奏操作のタイミングを取得するステップと、
前記取得された操作入力タイミング、操作解除タイミング及び演奏操作のタイミングに基づいて、前記コード情報の読出しタイミングを制御するステップと、
前記演奏操作のタイミングに応答して、前記読み出されたコード情報に基づいたコード音を再生するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビートトラッキング技術に基づくコード自動演奏におけるコード演奏のタイミング指定技術に関する。
【背景技術】
【０００２】
ビートトラッキングと呼ばれる、オーディオ曲データ（音楽音響信号）から自動で小節と拍を検出する技術が知られている（例えば非特許文献１に記載の技術）。この技術を利用して、オーディオ曲データから小節と拍を認識することができる。そして、１小節あたりのコード数を手動または自動で決定することにより、その決定されたコード数に対応する範囲毎にコード解析技術によりコード付けを行うことができる。そして、このコードデータと曲を同期させて、ユーザーの入力操作タイミングに合わせてコード音を鳴らすことにより、簡単に擬似コード演奏を行う擬似コード演奏装置を実現することができる。
【０００３】
擬似コード演奏装置により、初心者でも簡単に擬似的なコード弾きを行うことができ、気軽に楽器演奏の楽しさを味わうことができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】後藤真孝、村岡洋一著「音楽音響信号を対象としたビートトラッキングシステム」一般社団法人情報処理学会研究報告．[音楽情報科学]２１−８、１９９７年７月２１日、ｐ．４５−５２
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、単純にコード解析の結果に基づいて演奏するだけでは、以下のような問題が生じ、演奏に違和感が生じる。
【０００６】
１．ビートトラッキング技術の性質上、解析で検出された小節と拍の位置は聴覚上感じる位置とわずかな誤差が生じる。例えば、人間は２０ｍｓｅｃ（ミリ秒）以上の遅れを検知できるとされているが、ビートトラッキングでは検出結果が正解と判定できる場合で、聴覚上の正解位置と検出結果の誤差が５０〜８０ｍｓｅｃ程度存在する。
【０００７】
２．音楽的表現のためのテンポ揺らぎは、正確なテンポを刻んだ場合と比較して数１００ｍｓｅｃオーダーの揺れがあり、テンポが完全に一定という条件で無い以上、揺らぎを検出するには数１００ｍｓｅｃの小節と拍の検出の揺れを許容する必要がある。これは逆に言えば、この時間範囲で小節と拍の検出誤差が発生する可能性がある。
【０００８】
以上の誤差により、曲の再生に同期して単純に擬似コード演奏を行う場合、コードの遷移部分（コードの先頭、終端付近）のユーザ入力操作で違和感が生じるという課題があった。具体的には、曲ではコードが変わっているのに、弾いた演奏側では変わっていないなどの問題が生じるおそれがある。
【０００９】
一方、コード解析の結果をすべて修正してから後に演奏を行うのでは、検出されたコードの量が膨大であるため気軽ではないし、擬似演奏を楽しむような初心者に対しては大きなストレスとなるという課題があった。
【００１０】
そこで、本発明は、実際のコード弾きのように次の音を弾くタイミングを自分で制御するという直感的な動作のみでタイミング情報を修正可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
態様の一例では、記憶されている曲データを順次読み出すとともに、その曲データの複数の再生位置それぞれに関連付けて記憶されたコード情報を読み出す曲データ読み出し手段と、読み出された曲データを再生する曲データ再生手段と、曲データ再生手段による曲データの再生中に外部から操作入力及び操作解除がなされた場合に、その操作入力及び操作解除のタイミングを取得する第１のタイミング取得手段と、演奏操作がなされた場合に、その演奏操作のタイミングを取得する第２のタイミング取得手段と、第１及び第２のタイミング取得手段により取得されたタイミングに基づいて、曲データ読出し手段によるコード情報の読出しタイミングを制御するタイミング制御手段と、演奏操作のタイミングに応答して、読出し手段により読み出されたコード情報に基づいたコード音を再生するコード再生手段と、を備える。
【発明の効果】
【００１２】
本発明によれば、実際のコード弾きのように次の音を弾くタイミングを自分で制御するという直感的な動作のみでタイミング情報を修正することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係るコード演奏タイミング指定装置１００のハードウェア構成例を示す図である。
【図２】本実施形態により図１の表示部１０５に表示される鳴音予告カーソルのガイド表示例を示す図（その１）である。
【図３】本実施形態により図１の表示部１０５に表示される鳴音予告カーソルのガイド表示例を示す図（その２）である。
【図４】本実施形態により図１の表示部１０５に表示される鳴音予告カーソルのガイド表示例を示す図（その３）である。
【図５】本実施形態によるコード演奏のシーケンス例を示す図である。
【図６】コードデータの構成例を示す図である。
【図７】コード差分データの構成例を示す図である。
【図８】オーディオ曲データのコード演奏処理の例を示すフローチャートである。
【図９】演奏およびタイミング修正処理の例を示すフローチャートである。
【図１０】鳴音コード変更処理の例を示すフローチャート（その１）である。
【図１１】鳴音コード変更処理の例を示すフローチャート（その２）である。
【図１２】鳴音コード変更処理の例を示すフローチャート（その３）である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図１は、本発明の実施形態に係るコード演奏タイミング指定装置１００のハードウェア構成例を示す図である。この演奏練習装置１００は、ＣＰＵ（中央演算処理装置）１０１、ＲＯＭ（リードオンリーメモリ）１０２、ＲＡＭ（ランダムアクセスメモリ）１０３、入力部１０４、表示部１０５、ＭＩＤＩインタフェース部（以下「ＭＩＤＩ  Ｉ／Ｆ」と表記する）１０６、および発音部１０８が、バス１０７によって相互に接続された構成を備える。ＭＩＤＩ  Ｉ／Ｆ１０６は、外部（内蔵でもよい）の電子楽器１０９に接続される。
【００１５】
ＣＰＵ１０１は、ＲＯＭ１０２に記憶された制御プログラムに従って、当該コード演奏タイミング指定装置１００の全体の制御を行う。
【００１６】
ＲＯＭ１０２は、後述する図８から図１２の各フローチャートで示される制御動作を実行する制御プログラムを記憶する。また、ＲＯＭ１０２は、プリセットされているオーディオ曲データを記憶する。
【００１７】
ＲＡＭ１０３は、制御プログラムの実行に必要な、後述する図６に例示されるコードデータや図７に例示されるコード差分データなどの各種制御データや、演奏対象となるオーディオ曲データ等を、一時的に記憶する。
【００１８】
入力部１０４は、例えばオーディオ曲データの再生に合わせたコード演奏時に、ユーザがコード演奏タイミングの予告入力を行うボタンスイッチ（予告入力ボタン）や、オーディオ曲データの曲を選択したり、コード解析の実行を指示したり、曲の再生を指示したりするスイッチ類による入力操作を検出し、その検出結果をＣＰＵ１０１に通知する。
【００１９】
表示部１０５は、ＣＰＵ１０１の制御によって送られてくるデータを液晶ディスプレイなどに出力する。例えば、表示部１０５は、後述する図２から図４のような表示形式で、鳴音予告カーソルによる鳴音コードのガイド表示を行う。
【００２０】
ＭＩＤＩ  Ｉ／Ｆ１０６は、ユーザが電子楽器１０８において演奏入力した演奏入力情報を取り込んで、ＲＡＭ１０３上の特には図示しないノートバッファに記憶させる。なお、電子楽器１０９は、いわゆるスマートフォンやタブレット端末のような、楽器インタフェースをアプリケーションによって実現したものであってもよい。
【００２１】
ＣＰＵ１０１は、例えばＲＯＭ１０２からＲＡＭ１０３に読み込まれたオーディオ曲データから小節、拍、およびコード情報を関連付けながら解析し、その解析した小節および拍を再生しながらユーザによる電子楽器１０９からの演奏入力の操作をＭＩＤＩ  Ｉ／Ｆ１０６を介して受け付ける。そして、ＣＰＵ１０１は、その演奏入力の操作が発生したタイミングで再生される小節または拍に関連付けられているコード情報に基づいて、演奏入力の操作タイミングに合わせてコード音データを生成し、そのコード音データを発音部１０８にて発音処理させて、コード演奏を行う。オーディオ曲データは、ユーザの曲選択動作に従って、例えばＲＯＭ１０２からＲＡＭ１０３に読み込まれるほか、特には図示しない可搬型記録媒体を介してＲＡＭ１０３に読み込まれてもよく、或いは特には図示しないネットワーク接続装置によりネットワークから取得されてＲＡＭ１０３に読み込まれてもよい。
【００２２】
このとき、ＣＰＵ１０１は、曲データの再生中に外部から操作入力及び操作解除がなされた場合に、その操作入力及び操作解除のタイミングを取得する（第１のタイミング取得手段）。また、ＣＰＵ１００１は、演奏操作がなされた場合に、演奏操作のタイミングを取得する（第２のタイミング取得手段）。
【００２３】
そして、ＣＰＵ１０１は、第１及び第２のタイミング取得手段の機能により取得されたタイミングに基づいて、コード情報の読出しタイミングを制御し（タイミング制御手段）、演奏操作のタイミングに応答して、読み出されたコード情報に基づいたコード音を再生する（コード再生手段）。
【００２４】
本実施形態による上述のコード演奏タイミング指定装置１００の動作は、後述する図８から図１２のフローチャート等で実現される制御プログラムを、ＣＰＵ１０１がＲＯＭ１０２から読み出して順次実行することで実現される。そのプログラムは、特には図示しない可搬型記録媒体を介して提供されてもよく、或いは特には図示しないネットワーク接続装置によりネットワークから取得できるようにしてもよい。
【００２５】
以下、図１のハードウェア構成を有する本実施形態によるコード演奏タイミング指定装置１００の動作について、以下に詳細に説明する。
【００２６】
図２から図４は、本実施形態により図１の表示部１０５に表示される鳴音予告カーソルのガイド表示例を示す図である。
【００２７】
例えば図２（ａ）に表示される縦向きの長い線２０１が小節、短い線２０２が拍に対応している。図２（ａ）は、４拍子の模式図である。図２（ｂ）、図３（ｃ）（ｄ）、図４（ｅ）（ｆ）についても同様である。また、白い四角２００は、現在時刻を示す鳴音予告カーソル２００である。表示部１０５上では、カーソルの位置が固定で、それ以外の部分が再生の進行に従って、画面に向かって右から左へと遷移するような表示がなされる。
【００２８】
図２（ａ）は、オーディオ曲データの再生の進行に従って、再生時刻に対応するコード（位置）に、鳴音予告カーソル２００が遷移することを表している。また、図２（ａ）は、鳴音予告カーソル２００の現在位置に対応するコードがコードＩであることも表している。ここで、鳴音予告カーソル２００の、現在の位置に対応するコードＩが割り当てられた区間について、図２（ａ）のＩで示す区間の上下に線表示をすることにより明示している。
【００２９】
図２（ｂ）は、コードIの拍タイミングに鳴音予告カーソル２００があるときに、ユーザが予告入力ボタンを押下し、その押下が継続している状態を表した模式図である。オーディオ曲データの再生時刻が拍タイミングIIの範囲に入っても、鳴らされる音は拍タイミングに対応するコードであることが、ガイド表示２０３によって示されている。また、この場合に、図２（ａ）ではコードIの区間の上下に表示されていた線表示が、次のコード区間であるコードＩＩの区間の上下にまで延長表示され、オーディオ曲データの再生時刻が拍タイミングIIの範囲に入っても、引き続きコードIが演奏されることが予告表示されている。
【００３０】
図３（ｃ）は、図２（ｂ）の状態からユーザがさらに予告入力を継続し、再生時刻が拍タイミングIIの範囲に入ったところを表した模式図である。現在時刻における鳴音予告カーソル２００内の点線３０１は、拍および小節のタイミング情報の変更後の位置が仮決め状態であることを表している。
【００３１】
図３（ｄ）は、図３（ｃ）の状態からユーザが演奏入力を行うことによってタイミング情報が仮決めの状態から修正された状態を表した模式図である。現在時刻の鳴音予告カーソル２００内の実線３０２は、拍および小節のタイミング情報の変更後の位置が修正後であることを表している。点線３０３は、変更前の位置を表している。
【００３２】
図４（ｅ）は、拍タイミングIに鳴音予告カーソル２００があるときに、ユーザが予告入力ボタンを押下し、演奏入力を行わずに予告入力ボタンを離したときの模式図である。再生時刻が拍タイミングIの範囲でも、鳴らされる音は拍タイミングIIに対応するコードとなることが、ガイド表示４０１によって示されている。現在時刻の鳴音予告カーソル２００内の点線４０２は、拍および小節のタイミング情報の変更後の位置が仮決め状態であることを表している。
【００３３】
図４（ｆ）は、図４（ｅ）の状態からユーザが演奏入力を行うことによってタイミング情報が仮決めの状態から修正された状態を表した模式図である。現在時刻の鳴音予告カーソル２００内の実線４０３は、拍および小節のタイミング情報の変更後の位置が修正後であることを表している。点線４０４は、変更前の位置を表している。
【００３４】
図５は、本実施形態によるコード演奏のシーケンス例を示す図である。同図において、（ａ）、（ｂ）、（ｃ）、（ｄ）、（e）の表示はそれぞれ、上述した図２から図４の（ａ）、（ｂ）、（ｃ）、（ｄ）、（e）の状態に対応している。また、図５の上部に示されている「Ｃ」「Ｇ」「Ａｍ」「Ｆ」はコード記号であり、６０１〜６０６の存在する各小節において、２拍ごとに区切られた区間に割り当てられているコードを表している。６０１〜６０６の存在する小節は、それぞれ４拍で１小節を構成する４拍子の場合の例であり、２拍ごとに和音が割り当てられている。
【００３５】
図５の６０１、６０３、または６０６の状態は、ユーザが、予告入力ボタンを押下した（「↓」のマーク）後に、元々はコードＣが鳴る拍タイミングにおいて演奏入力（「▼」のマーク）を行い、その後予告入力ボタンを離した（「↑」のマーク）状態を示している。この場合には、演奏入力が行われた「▼」の時点（位置）で、そのまま元のコードＣが鳴らされる。
【００３６】
図５の６０２の状態は、ユーザが、元々はコードＡｍが鳴る拍タイミングにおいて、予告入力ボタンを押下（６０２（ｂ））した後に、演奏入力を行わずに、Ａｍが鳴る拍タイミング内ですぐに予告入力ボタンを離し（６０２（ｅ））、その後Ａｍが鳴る拍タイミング内で演奏入力を行った（６０２（ｆ））状態を示している。この場合には、演奏入力を行った図５の６０２（ｆ）の時点で、本来はＡｍが鳴る拍タイミングであるにもかかわらず、次のコードＦが先行して鳴らされる。このように、ユーザは、予告入力ボタンを押下した後にすぐに離すことにより、次の拍タイミング（または小節タイミング）で鳴らされるコード音を演奏入力によって鳴らすことが可能となる。
【００３７】
図５の６０４の状態は、ユーザが予告入力ボタンを押しても（６０４（ｂ））、演奏入力を行わなければ状態は変化しないことを表している。
【００３８】
図５の６０５の状態は、ユーザが、元々はコードＡｍが鳴る拍タイミングにおいて、予告入力ボタンを押下（６０５（ｂ））した後に、演奏入力を行わずに、Ａｍが鳴る拍タイミング内ですぐに予告入力ボタンを離し（６０５（ｅ））、その後コードＦが鳴る拍タイミング内で演奏入力を行った（６０５の「▼」）状態を示している。この場合には、演奏入力を行った図５の６０５の「▼」マークの時点で、コードＦがそのまま鳴らされる。
【００３９】
以上の動作例を実現する本実施形態の詳細な制御動作について、以下に説明する。
【００４０】
図６は、図１のＣＰＵ１０１によるオーディオ曲データの解析の結果ＲＡＭ１０３上に生成されるコードデータの構成例を示す図である。コードデータ１〜ｎ（ｎはオーディオ曲データのコード数）のそれぞれは、コード種類と、コード開始時刻と、小節通し番号と、拍通し番号の各情報を有する。ＣＰＵ１０１は、ユーザによる演奏入力が行われた場合等に、現在演奏されているオーディオ曲データの再生位置に応じた小節および拍タイミングに対応する小節通し番号および拍通し番号を有するコードデータ中のコード種類のコード音を生成して、図１の発音部１０８から発音させる。
【００４１】
図７は、ユーザが予告入力ボタンを押下することにより、図２から図４または図５で説明したようにしてコードの演奏タイミングを変更させるために、ＣＰＵ１０１が生成するコード修正差分データの構成例を示す図である。コード修正差分データ１〜ｍ（ｍは修正箇所数）は、ユーザによる演奏入力が行われた小節および拍タイミングに対応する小節通し番号および拍通し番号を有する図６のコードデータについて、コード開始時刻を修正する情報が保持される。ＣＰＵ１０１は、このコード修正差分データを順次参照することにより、ユーザが予告入力ボタンを押下した後に操作された演奏入力が発生したタイミングで再生される小節または拍に関連付けて鳴音させるコードの再生タイミングを、その小節または拍より前のタイミングまたは後ろのタイミングにずらす変更を実現する。
【００４２】
図８は、図１のＣＰＵ１０１がＲＯＭ１０２に記憶された制御プログラム実行することにより実現されるオーディオ曲データのコード演奏処理の例を示すフローチャートである。
【００４３】
ＣＰＵ１０１はまず、入力部１０４からのユーザによるオーディオ曲データの選択動作を受け付ける（ステップＳ８０１）。この結果、ＣＰＵ１０１は、ユーザが選択したオーディオ曲データを、例えばＲＯＭ１０２からＲＡＭ１０３に読み込む。
【００４４】
次に、ＣＰＵ１０１は、ユーザによる入力部１０４での指示に従って、ＲＡＭ１０３に読み込んだオーディオ曲データに対して、コード解析処理を実行する（ステップＳ８０２）。この結果、図６に例示されるコードデータがＲＡＭ１０３上に生成される。
【００４５】
次に、ＣＰＵ１０１は、ユーザによる入力部１０４での指示に従って、ＲＡＭ１０３上のオーディオ曲データの再生を開始する（ステップＳ８０３）。
【００４６】
その後、ＣＰＵ１０１は、演奏およびタイミング修正処理を実行する（ステップ８０４）。
【００４７】
オーディオ曲データの再生が終了すると、ＣＰＵ１０１は、図８のフローチャートのコード演奏処理を終了する。
【００４８】
図９は、図８のステップＳ８０４の演奏およびタイミング修正処理の詳細な処理例を示すフローチャートである。
【００４９】
まず、ＣＰＵ１０１は、鳴音コード変更処理を実行する（ステップＳ９０１）。ここではＣＰＵ１０１は、解析した小節および拍の再生時に、その小節および拍に関連付けられているコード情報の再生タイミングをその小節または拍より前のタイミングまたは後ろのタイミングにずらすことを、図１の入力部１０４の予告入力ボタンを使ってユーザに予告入力させる。そして、ＣＰＵ１０１は、上述の予告入力の状態に基づいて、次に演奏入力の操作が発生したタイミングで再生される小節または拍に関連付けて鳴音させるコードを変更する。この処理の詳細については、図１０から図１２を用いて後述する。
【００５０】
次に、ＣＰＵ１０１は、ステップＳ９０１での鳴音コード変更処理の結果に基づいて、表示部１０５に表示する前述した図２から図４で例示される鳴音予告カーソル２００やガイド表示２０３、４０１による予告表示を更新する（ステップＳ９０２）。
【００５１】
続いて、ＣＰＵ１０１は、図１の電子楽器１０９からＭＩＤＩ  Ｉ／Ｆ１０６を介してＲＡＭ１０３のノートバッファに、演奏入力が有るか否かを判定する（ステップＳ９０３）。
【００５２】
演奏入力が無くステップＳ９０３の判定がＮＯならば、ＣＰＵ１０１は、ステップＳ９１１の再生終了の判定処理にジャンプする。
【００５３】
演奏入力が有ってステップＳ９０３の判定がＹＥＳになると、ＣＰＵ１０１は、ステップＳ９０１の鳴音コード変更処理によって、タイミング情報がＲＡＭ１０３に一時保存されているか否かを判定する（ステップＳ９０４）。このタイミング情報は、前述した図３（ｃ）の３０１や図３（ｄ）の３０２、３０３，または図４(e)の４０２や図４（ｆ）の４０３、４０４等の、タイミングのガイドを表示するための情報である。
【００５４】
タイミング情報がＲＡＭ１０３に一時保存されておらずステップＳ９０４の判定がＮＯならば、ＣＰＵ１０１は、ステップＳ９１０の発音処理にジャンプする。
【００５５】
タイミング情報がＲＡＭ１０３に一時保存されておりステップＳ９０４の判定がＹＥＳならば、ＣＰＵ１０１は、現在時刻がフレーズの先頭であるか否かを判定する（ステップＳ９０５）。
【００５６】
現在時刻がフレーズの先頭でステップＳ９０５の判定がＹＥＳならば、ＣＰＵ１０１は、ＲＡＭ１０３に一時保存されているタイミング情報を決定して（ステップＳ９０６）、タイミング表示を更新する（ステップＳ９０７）。すなわち、前述した図３（ｄ）の３０２、３０３や図４（ｆ）の４０３、４０４の状態が表示される。
【００５７】
現在時刻がフレーズの先頭ではなくステップＳ９０５の判定がＮＯならば、ＣＰＵ１０１はさらに、タイミング情報はまだ決定されていないか否かを判定する（ステップＳ９０８）。
【００５８】
タイミング情報はまだ決定されておらずステップＳ９０８の判定がＹＥＳならば、ＣＰＵ１０１は、ＲＡＭ１０３に一時保存されているタイミング情報に基づいて、タイミングを変更するための仮表示を更新する（ステップＳ９０９）。すなわち、前述した図３（ｃ）の３０１や図４（ｅ）の４０２の状態が表示される。タイミング情報が決定されておりステップＳ９０８の判定がＮＯならば、ステップＳ９０９の処理はスキップされる。
【００５９】
以上の一連の制御処理の後、ＣＰＵ１０１は、図６に例示されるコードデータまたは図７に例示されるコード修正差分データに基づくコード音の発音処理を実行する（ステップＳ９１０）。
【００６０】
最後に、ＣＰＵ１０１は、オーディオデータ曲の再生が終了したか否かを判定する（ステップＳ９１１）。再生が終了しておらずステップＳ９１１の判定がＮＯならば、ステップＳ９０１の処理に戻って、コード演奏が継続される。オーディオ曲データの末尾に達しているか、またはユーザによる入力部１０４からの指示により再生が終了し、ステップＳ９１１の判定がＹＥＳになると、図９のフローチャートの処理が終了して、図８のステップＳ８０４の演奏およびタイミング修正処理が終了し、全体の処理が終了する。
【００６１】
図１０から図１２は、図９のステップＳ９０１の鳴音コード変更処理の詳細な処理例を示すフローチャートである。
【００６２】
まず、ＣＰＵ１０１は、予告入力状態がオン（以下「ＯＮ」と記載する））か否かを判定する（ステップＳ１００１）。ユーザが入力部１０４の予告入力ボタンを押下すると、例えばＲＡＭ１０３上の予告入力状態を示すフラグである予告入力状態フラグがＯＮとなって、ステップＳ１００１の判定がＹＥＳになる。すなわち、ここでは、予告入力状態がＯＦＦからＯＮに変化したか否かが判定される。
【００６３】
ステップＳ１００１の判定がＹＥＳになると、ＣＰＵ１０１は、ＲＡＭ１０３の図６に例示されるコードデータのコード開始時刻を参照することにより、予告入力状態フラグがＯＮとなったタイミングにおいて鳴音されるコードがフラグＯＮ時のコードとしてＲＡＭ１０３に記憶される。
【００６４】
その後、ＣＰＵ１０１は、ＲＡＭ１０３上にタイミング情報が一時保存されていればそのタイミング情報をクリアする（ステップＳ１００３）。その後、ＣＰＵ１０１は、図１０から図１２のフローチャートの処理を終了して図９のステップＳ９０１の鳴音コード変更処理を終了する。この状態は、図２（ｂ）の状態に対応する。
【００６５】
なお、ステップＳ１００１で予告入力状態フラグがＯＮの状態が検出された後は、予告入力状態フラグは「継続」の状態に変更される。
【００６６】
次に、予告入力状態フラグがＯＮではなくステップＳ１００１の判定がＮＯならば、ＣＰＵ１０１は、予告入力状態フラグが「継続」を示しているか否かを判定する（ステップＳ１００４）。すなわち、ここでは、ユーザが入力部１０４の予告入力ボタンの押下を継続しているか否かが判定される。
【００６７】
予告入力状態フラグが「継続」を示しておりステップＳ１００４の判定がＹＥＳならば、ＣＰＵ１０１はさらに、ＲＡＭ１０３に記憶されているフラグＯＮ時のコードのコード開始時刻（図６参照）が、現在時刻において発音されるべきコードのコード開始時刻よりも前であるか否かを判定する（ステップＳ１００５）。すなわち、現在時刻におけるコードが、予告入力状態フラグがＯＮされた時点でのコードと異なり、次のコード区間を再生しているのか否かが判断される。
【００６８】
ＲＡＭ１０３に記憶されているフラグＯＮ時のコードのコード開始時刻が現在時刻において発音されるべきコードのコード開始時刻よりも前でステップＳ１００５の判定がＹＥＳならば、ＣＰＵ１０１は、図９のステップＳ９１０で発音されるべきＲＡＭ１０３上の鳴音コードの変数に、ＲＡＭ１０３に記憶されているフラグＯＮ時のコードをセットする（ステップＳ１００６）。そして、ＣＰＵ１０１は、そのときのタイミング情報をＲＡＭ１０３に一時保存する（ステップＳ１００７）。この状態は、図３（ｃ）の状態に対応する。
【００６９】
ＲＡＭ１０３に記憶されているフラグＯＮ時のコードのコード開始時刻が現在時刻において発音されるべきコードのコード開始時刻よりも前ではなくステップＳ１００５の判定がＮＯならば、ＣＰＵ１０１は、ＲＡＭ１０３上の鳴音コードの変数に、現在時刻で発音されるべきコードをセットする（ステップＳ１００８）。この状態は、図２（ｂ）の状態に対応する。
【００７０】
以上のステップＳ１００７またはＳ１００８の処理の後、ＣＰＵ１０１は、図１０から図１２のフローチャートの処理を終了して図９のステップＳ９０１の鳴音コード変更処理を終了する。
【００７１】
予告入力状態フラグが「継続」を示しておらずステップＳ１００４の判定がＮＯならば、ＣＰＵ１０１は図１１のフローチャートの処理に進んで、予告入力状態フラグが「継続」からＯＦＦに変化したか否かを判定する（ステップＳ１００９）。すなわち、ここでは、ユーザが入力部１０４の予告入力ボタンを離したか（押下を終了したか）否かが判定される。
【００７２】
予告入力状態フラグが「継続」からＯＦＦに変化しステップＳ１００９の判定がＹＥＳならば、ＣＰＵ１０１はさらに、ＲＡＭ１０３に記憶されているフラグＯＮ時のコードのコード開始時刻（図６参照）が、現在時刻において発音されるべきコードのコード開始時刻よりも前であるか否かを判定する（ステップＳ１０１０）。
【００７３】
ＲＡＭ１０３に記憶されているフラグＯＮ時のコードのコード開始時刻が現在時刻において発音されるべきコードのコード開始時刻よりも前でステップＳ１０１０の判定がＹＥＳならば、ＣＰＵ１０１はさらに、予告入力ボタンの押下の継続中にユーザにより演奏入力があったか否かを判定する（ステップＳ１０１１）。
【００７４】
ステップＳ１０１１の判定がＹＥＳならば、ＣＰＵ１０１は、ＲＡＭ１０３上の鳴音コードの変数に、現在時刻で発音されるべきコードをセットする（ステップＳ１０１２）。その後、ＲＡＭ１０３に一時保存されているタイミング情報を決定して（ステップＳ１０１３）、タイミング表示を更新する（ステップＳ１０１４）。すなわち、前述した図３（ｄ）の３０２、３０３の状態が表示される。その後、ＣＰＵ１０１は、図１０から図１２のフローチャートの処理を終了し、図９のステップＳ９０１の鳴音コード変更処理を終了する。
【００７５】
ステップＳ１０１１の判定がＮＯならば、ＣＰＵ１０１は、ＲＡＭ１０３上の鳴音コードの変数に、現在時刻で発音されるべきコードをセットする（ステップＳ１０１５）。そして、ＣＰＵ１０１は、そのときのタイミング情報をＲＡＭ１０３に一時保存する（ステップＳ１０１６）。この状態は、図３（ｃ）の状態に対応する。
【００７６】
ＲＡＭ１０３に記憶されているフラグＯＮ時のコードのコード開始時刻が、現在時刻において発音されるべきコードのコード開始時刻よりも前ではなくステップＳ１０１０の判定がＮＯならば、ＣＰＵ１０１は、ＲＡＭ１０３上の鳴音コードの変数に、図６に例示されるＲＡＭ１０３上のコードデータのコード開始時刻を参照することにより、現在時刻の次の時刻で発音されるべきコードをセットする（ステップＳ１０１７）。この状態は、図４（ｅ）の状態に対応する。
【００７７】
予告入力状態フラグが「継続」からＯＦＦに変化しておらず、すなわち、予告入力状態フラグがすでに「ＯＦＦ」になっていてそのままの状態でステップＳ１００９の判定がＮＯならば、ＣＰＵ１０１は、図１２のフローチャートの処理に進む。ＣＰＵ１０１は、現在時刻に鳴音されるべきコードのコード開始時刻が、ＲＡＭ１０３にセットされている鳴音コードのコード開始時刻よりも前であるか否かを判定する（ステップＳ１０１８）。
【００７８】
現在時刻に鳴音されるべきコードのコード開始時刻が鳴音コードのコード開始時刻よりも前でステップＳ１０１８の判定がＹＥＳならば、ＣＰＵ１０１は、現在時刻のタイミング情報をＲＡＭ１０３に一時保存する（ステップＳ１０１９）。この状態は、図４（ｅ）の状態に対応する。その後、ＣＰＵ１０１は、図１０から図１２のフローチャートの処理を終了し、図９のステップＳ９０１の鳴音コード変更処理を終了する。
【００７９】
現在時刻に鳴音されるべきコードのコード開始時刻が鳴音コードのコード開始時刻よりも前ではなくステップＳ１０１８の判定がＮＯならば、ＣＰＵ１０１は、現在時刻に鳴音されるべきコードのコード開始時刻が鳴音コードのコード開始時刻よりも後であるか否かを判定する（ステップＳ１０２０）。
【００８０】
ステップＳ１０２０の判定がＹＥＳならば、ＣＰＵ１０１は、ＲＡＭ１０３の鳴音コードの変数に、現在時刻で発音されるべきコードをセットし（ステップＳ１０２１）、ＲＡＭ１０３にタイミング情報が一時保存されていればそれをクリアする（ステップＳ１０２２）。ステップＳ１０２の判定がＮＯならば、ＣＰＵ１０１は、ステップＳ１０２１とＳ１０２２はスキップする。これらの状態は、図２（ａ）の状態に対応する。その後、図１０から図１２のフローチャートの処理を終了し、図９のステップＳ９０１の鳴音コード変更処理を終了する。
【００８１】
以上のようにして、本実施形態によれば、演奏入力中の簡単な予告入力ボタンの操作によって、実際のコード弾きのように次の音を弾くタイミングを自分で制御するという直感的な動作のみでタイミング情報を修正することが可能となる。
【００８２】
なお、上記の実施例については、様々な形での実現が可能である。すなわち、オーディオ曲データの再生の進行中に、まず予告入力ボタンが押下されると、その時点（再生時刻）に元々設定されているコードが保持されて、コードの切り替わりタイミングが後ろへずれる予告の状態となる。すなわち、図２（ｂ）で、コードＩが保持され（２０３）、コードＩＩの期間へ食い込んで、切り替わりタイミングが後ろにずれるモードとなる。
【００８３】
その後、予告入力ボタンの押下が継続されたままで、演奏入力があった場合、コードＩが発音される。ここで、その演奏入力の時点に元々設定されているコードがコードＩの期間であった場合には、元々設定されているコードＩと同じコードＩが発音されるに過ぎない。すなわち、予告入力ボタンの押下後、次のコードへの切り替わりタイミングを過ぎるまえに演奏入力された場合、演奏されるコードはコードＩであり、変化していない。一方、予告入力ボタンの押下後、押下が継続されたままで、次のコードへの切り替わりタイミングを過ぎてから演奏入力がなされた場合、元々設定されているコードＩＩではなく、コードＩが保持されたままコードＩが発音されることとなる。
【００８４】
この場合、一例として、このような、予告入力ボタンの押下が継続されたままで、演奏入力がなされた時点を、新たなコードＩからコードＩＩへの切り替わりタイミングとすることが出来る。ただし、この演奏入力の時点が、予告入力ボタンの押下後、元々設定されていた次のコードへの切り替わりタイミングを過ぎるまえに演奏入力された場合、「コードの切り替わりタイミングを後ろへずらす予告の状態」にもかかわらず、コードの切り替わりタイミングより前で演奏入力されたことから、このような場合には、この演奏入力がなされた時点を、新たなコードＩからコードＩＩへの切り替わりタイミングとはしないこととしても良い。この場合には、元々設定されているコードＩからコードＩＩへの切り替わりタイミングをそのまま保持するようにすればよい。
【００８５】
またさらに、このように予告入力ボタンが押下され、その押下が継続されたままで演奏入力がなされ、さらにその後予告入力ボタンが離された場合に、この予告入力ボタンを離した時点を、新たなコードＩからコードＩＩへの切り替わりタイミングとするようにしても良い。このようにする場合も、上記と同様、この予告入力ボタンの離されたタイミングが、元々設定されていた次のコードへの切り替わりタイミングを過ぎるよりも前であった場合には、「コードの切り替わりタイミングを後ろへずらす予告の状態」にもかかわらず、コードの切り替わりタイミングより前で予告入力ボタンが離されたことから、この予告入力ボタンが離されたタイミングを、新たなコードＩからコードＩＩへの切り替わりタイミングとはしないこととしても良い。この場合にも、元々設定されているコードＩからコードＩＩへの切り替わりタイミングをそのまま保持するようにすればよい。
【００８６】
他方、上記のように、オーディオ曲データの再生の進行中に、予告入力ボタンが押下されたが、演奏入力が行われないまま、予告入力ボタンが離された場合、すなわち、単に予告入力ボタンが押下されてから離された場合には、その時点（再生時刻）に元々設定されているコードの次のコードが前倒しされるモードになり、コードの切り替わりタイミングが前へずれる予告の状態となる。すなわち、図４（ｅ）で、コードＩＩが前倒しとなり（４０１）、コードＩの期間へ食い込んで、切り替わりタイミングが前にずれるモードとなる。
【００８７】
このように切り替わりタイミングが前にずれるモードとなった場合に、その後演奏入力があった場合は、その時点（再生時刻）に元々設定されているコードがコードＩの期間であっても、コードＩＩが発音され、この演奏入力があったタイミングが、新たなコードＩからコードＩＩへの切り替わりタイミングとされるようにすることができる。このようにすることで、その時点（再生時刻）に元々設定されているコードＩの次のコードＩＩが前倒しされることとなり、コードＩからコードＩＩへの切り替わりのタイミングが前へずれて設定できるようになる。
【００８８】
一方、切り替わりタイミングが前にずれるモードとなっていた場合であっても、元々設定されていた次のコードへの切り替わりタイミングを過ぎてしまってから演奏入力がなされた場合、「コードの切り替わりタイミングを前へずらす予告の状態」にもかかわらず、コードの切り替わりタイミングを過ぎてから演奏入力されたことから、このような場合には、この演奏入力がなされた時点を、新たなコードＩからコードＩＩへの切り替わりタイミングとはしないこととしても良い。この場合には、元々設定されているコードＩからコードＩＩへの切り替わりタイミングをそのまま保持するようにすればよい。
【００８９】
またさらに、オーディオ曲データの再生の進行中に、予告入力ボタンが押下されたが、演奏入力が行われないまま予告入力ボタンが離された場合であっても、例えばその予告入力ボタンが離されたタイミングが、元々設定されていた次のコードへの切り替わりタイミングを過ぎてしまっていたような場合は、「コードの切り替わりタイミングを前へずらす予告」とできない（既に切り替わりタイミングを過ぎてしまっている）ことから、このような場合にも、切り替わりタイミングが前にずれるモードにはしないこととしても良い。このような場合にも、元々設定されているコードＩからコードＩＩへの切り替わりタイミングをそのまま保持するようにすればよい。
【００９０】
あるいはまた、コードＩからコードＩＩへの新たな切り替わりタイミングを設定する場合、上記以外のタイミングで切り替わりタイミングを設定することも可能である。要するに、演奏入力が行われた際に発音させる和音が前後いずれの和音となるか、が適切に設定できれば差し支えない。従って、例えば、図５の６０２の場合に、演奏入力が行われた（ｆ）のタイミングで無く、予告入力ボタンが離された（ｅ）のタイミングを新たな切り替わりタイミングとして設定しても良い。あるいは、（ｅ）と（ｆ）の間、例えばちょうど真ん中にコードＩからＩＩへの切り替わりタイミングを設定するようにしても良い。同様に、図５の６０１や６０３の場合も、予告入力ボタンが離されたタイミングで無く、その前に演奏入力が行われた時点を新たなコード切り替わりタイミングとして設定しても良い。
【００９１】
また、本発明を、演奏操作子としての通常の鍵盤や、スピーカあるいはオーディオ出力端子等の楽音出力部を有するキーボードや電子ピアノ等の鍵盤楽器や、他の形態の演奏入力操作子を有する他の電子楽器等で実現することも可能である。
【００９２】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
記憶されている曲データを順次読み出すとともに、当該曲データの複数の再生位置それぞれに関連付けて記憶されたコード情報を読み出す曲データ読み出し手段と、
前記読み出された曲データを再生する曲データ再生手段と、
前記曲データ再生手段による前記曲データの再生中に外部から操作入力及び操作解除がなされた場合に、当該操作入力及び操作解除のタイミングを取得する第１のタイミング取得手段と、
演奏操作がなされた場合に、当該演奏操作のタイミングを取得する第２のタイミング取得手段と、
前記第１及び第２のタイミング取得手段により取得されたタイミングに基づいて、前記曲データ読出し手段による前記コード情報の読出しタイミングを制御するタイミング制御手段と、
前記演奏操作のタイミングに応答して、前記読出し手段により読み出された前記コード情報に基づいたコード音を再生するコード再生手段と、
を備えることを特徴とするコード演奏タイミング指定装置。
（付記２）
前記タイミング制御手段は、前記外部からの操作入力と操作解除との間に前記コード読出しタイミング及び前記演奏操作タイミングが存在する場合は、当該読出しタイミングにて読み出されるべきコード情報を、前記操作解除のタイミングで読み出すように制御する、付記１に記載のコード演奏タイミング指定装置。
（付記３）
前記タイミング制御手段は、前記外部からの操作入力と操作解除との間に前記コード読出しタイミング及び前記演奏操作タイミングのいずれもが存在せず、前記操作解除のタイミングの後に前記演奏操作タイミング、続いて前記コード情報の読み出しタイミングが到来する場合は、当該読出しタイミングにて読み出されるべきコード情報を前記演奏操作タイミングで読み出すように制御する、付記１又は付記２に記載のコード演奏タイミング指定装置。
（付記４）
前記コード再生手段にて再生されるコード音を、前記操作入力のタイミングに応答してガイド表示するコードガイド表示手段を更に備える、
ことを特徴とする付記１乃至付記３のいずれかに記載のコード演奏タイミング指定装置。
（付記５）
付記１乃至付記４のいずれかに記載のコード演奏タイミング指定装置と、
前記演奏操作を行う演奏入力操作子と、
前記曲データ再生手段及び前記コード再生手段によって再生される音を発音する楽音出力部とを備える電子楽器。
（付記６）
コード演奏タイミング指定操作装置が、
記憶されている曲データを順次読み出すともに、当該曲データの複数の再生位置それぞれに関連付けて記憶されたコード情報を読み出し、
前記読み出された曲データを再生し、
前記曲データの再生中に外部から操作入力及び操作解除がなされた場合に、当該操作入力及び操作解除のタイミングを取得し、
演奏操作がなされた場合に、当該演奏操作のタイミングを取得し、
前記取得された操作入力タイミング、操作解除タイミング及び演奏操作のタイミングに基づいて、前記コード情報の読出しタイミングを制御し、
前記演奏操作のタイミングに応答して、前記読み出されたコード情報に基づいたコード音を再生する、コード演奏タイミング指定方法。
（付記７）
コード演奏タイミング指定操作装置として用いられるコンピュータに、
記憶されている曲データを順次読み出すともに、当該曲データの複数の再生位置それぞれに関連付けて記憶されたコード情報を読み出すステップ、
前記読み出された曲データを再生するステップと、
前記曲データの再生中に外部から操作入力及び操作解除がなされた場合に、当該操作入力及び操作解除のタイミングを取得するステップと、
演奏操作がなされた場合に、当該演奏操作のタイミングを取得するステップと、
前記取得された操作入力タイミング、操作解除タイミング及び演奏操作のタイミングに基づいて、前記コード情報の読出しタイミングを制御するステップと、
前記演奏操作のタイミングに応答して、前記読み出されたコード情報に基づいたコード音を再生するステップと、
を実行させるプログラム。
【符号の説明】
【００９３】
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  入力部
１０５  表示部
１０６  ＭＩＤＩ  Ｉ／Ｆ（ＭＩＤＩインタフェース部）
１０７  バス
１１０  発音部
１０９  電子楽器
【図１】
2015184390.tif 000003
【図２】
2015184390.tif 000004
【図３】
2015184390.tif 000005
【図４】
2015184390.tif 000006
【図５】
2015184390.tif 000007
【図６】
2015184390.tif 000008
【図７】
2015184390.tif 000009
【図８】
2015184390.tif 000010
【図９】
2015184390.tif 000011
【図１０】
2015184390.tif 000012
【図１１】
2015184390.tif 000013
【図１２】
2015184390.tif 000014