(57)【特許請求の範囲】
【請求項１】
楽音の発音に関わるイベントの内容を表すイベントデータを複数、備えてなる演奏データを基に、演奏を行う演奏者に対して表示すべき楽音の強弱を指定する強弱記号の種類を示す教示データを生成する装置であって、
前記イベントデータ中の楽音の音量を指定する音量データから、最大音量データ値と最小音量データ値の間で該音量データの値域を複数の範囲に分割する値域分割手段と、
予め定めた曲の演奏単位毎に、前記値域分割手段による値域の分割結果、及び該演奏単位を構成するイベントデータの音量データに基づいて、前記教示データを生成するデータ生成手段と、
を具備したことを特徴とする教示データ生成装置。
【請求項２】
楽音の発音に関わるイベントの内容を表すイベントデータを複数、備えてなる演奏データを基に、演奏を行う演奏者に対して表示すべき楽音の強弱を指定する強弱記号の種類を示す教示データを生成する装置であって、
予め定めた曲の演奏単位毎に、該演奏単位を構成する複数の楽音毎の音量を指定するベロシティ値に当該楽音の発音時間を掛けて得られる値の合計値、及び前記複数の楽音の全発音時間を夫々算出すると共に、当該合計値を全発音時間で割って得られる平均値を参照して、該演奏単位で発音させるべき楽音の音量を解析する音量解析手段と、
前記音量変化解析手段の解析結果に基づいて、前記演奏単位毎に前記教示データを生成するデータ生成手段と、
を具備したことを特徴とする教示データ生成装置。
【請求項３】
演奏データを構成するイベントデータ中の楽音の音量を指定する音量データから、最大音量データ値と最小音量データ値の間で該音量データの値域を複数の範囲に分割する機能と、
予め定めた曲の演奏単位毎に、前記分割する機能による値域の分割結果、及び該演奏単位を構成するイベントデータの音量データに基づいて、楽音の強弱を指定する強弱記号の種類を示す教示データを生成する機能と、
をコンピュータにより実現させるプログラムを記録したことを特徴とする記録媒体。
【請求項４】
該演奏単位を構成する複数の楽音毎の音量を指定するベロシティ値に当該楽音の発音時間を掛けて得られる値の合計値、及び前記複数の楽音の全発音時間を夫々算出すると共に、当該合計値を全発音時間で割って得られる平均値を参照して、該演奏単位で発音させるべき楽音の音量を解析する機能と、
該解析する機能の解析結果に基づいて、前記演奏単位毎に楽音の強弱を指定する強弱記号の種類を示す教示データを生成する機能と、
をコンピュータにより実現させるプログラムを記録したことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音の音量を指定する音量データをイベントデータの一部として有する演奏データ（シーケンスデータ）を利用してユーザ（演奏者）の利便性を向上させるための技術に関する。
【０００２】
【従来の技術】
曲の演奏内容を表す演奏データ（シーケンスデータ）は、自動演奏（自動伴奏を含む）だけでなく、ナビゲート機能の実現といった他の用途にも用いられている。そのナビゲート機能は、鍵盤楽器等において、例えば鍵毎に設けられたＬＥＤ等の発光素子を順次、点灯させていくことにより、演奏者に押鍵（操作）すべき鍵を指示して演奏を誘導することを基本とする機能である。
【０００３】
技術的に未熟なユーザ（演奏者）は、ナビゲート機能を利用することによって、楽譜を見ることなく所望の曲を演奏することができる。しかし、ナビゲート機能で指示された演奏操作子を単に操作していくだけでは、当然のことながら、音楽的に豊かな表現を行うことはできない。音楽的な印象は、様々な高さの楽音が鳴るタイミングの他に、各楽音の音量やその違いによっても大きく変化する。このことから、鍵盤楽器のなかには、演奏者がより豊かな音楽的表現を行えるように、発音させるべき楽音の音量を指示する機能（強弱記号表示機能）を搭載したものがある。
【０００４】
これまで、その強弱記号表示機能は、例えば表示すべき強弱記号を指定するデータ（教示データ）を演奏データと別に用意することにより、自動演奏の進行に合わせて強弱記号を順次、表示するようになっていた。しかし、そのような方法では、予め用意した演奏データ以外では強弱記号を表示することができない。このことから、例えば、特開平１１−７２７８号公報に開示されているように、演奏の進行に応じて表示させるべき強弱記号を指定する教示データを生成する装置（教示データ生成装置）が創案されている。その装置では、演奏データを構成するイベントデータに含まれるベロシティを基に、自動演奏の進行に合わせて教示データを順次、生成している。このため、鍵盤楽器にその装置を搭載させた場合には、予め教示データが用意されていない演奏データであっても、演奏者は表示された強弱記号から発音させるべき楽音の音量の変化のさせ方を知ることができるようになる。
【０００５】
【発明が解決しようとする課題】
上記特開平１１−７２７８号公報に開示されている従来の教示データ生成装置は、楽音のベロシティ値（音量レベル）、或いは隣り合う楽音間のベロシティ値の差に注目して教示データを生成していた。より具体的には、ベロシティの値域を予め複数の範囲に分割しておくとともに、ベロシティ値の差の範囲を表示対象とする強弱記号毎に設定しておき、楽音のベロシティ値や楽音間のベロシティ値の差がどの範囲内となっているか判定することで教示データを生成していた。楽音のベロシティ値は、個々の楽音を対象にする強弱記号を指定する教示データの生成用であり、ベロシティ値の差は、複数の楽音で構成される部分を対象にする強弱記号を指定する教示データの生成用である。
【０００６】
しかし、比較的に静かな曲では強弱記号としてフォルテッシモ等が該当するきわめて強く発音させる楽音が無かったり、抑揚が小さい曲ではきわめて強く発音させる楽音が無いだけでなく、強弱記号としてピアニッシモ等が該当するきわめて弱く発音させる楽音も無いことがある。これは、ベロシティの実際の値域は、各曲（演奏データ）によって異なったり、偏りがあるということを意味する。このため、従来の教示データ生成装置のように、予め固定的に定めた基準を基に教示データを生成した場合、演奏データからそれによって表現される曲の演奏に合った教示データを生成することができないという問題点があった。
【０００７】
本来、音の強弱は、相対的に判断するものである。しかし、従来の教示データ生成装置では、上記問題点によって、他の楽音と比較して強く発音させる楽音でなくても強く発音させるべき楽音として教示データを生成するといったようなことが生じることになる。このため、演奏者に曲全体における音の強弱の抑揚を容易に把握させることができないだけでなく、演奏者を混乱させてしまう可能性も高かった。
【０００８】
従来の教示データ生成装置は、複数の楽音で構成される部分への強弱記号、具体的にはクレシェンドやデクレシェンドの教示データは、２つの楽音のベロシティ値の差に応じて生成している。しかし、２つの楽音のベロシティ値にだけ注目していることから、クレシェンド等の強弱記号が対象とする部分は２音という非常に狭い演奏範囲に限定されることになる。これは、拍による強弱の違いから本来は不要な教示データを生成させてしまったり、表示される強弱記号が目まぐるしく変わることがあるということを意味する。そのようなことは、演奏者を混乱させてしまうことから、確実に回避させる必要がある。
【０００９】
ところで、演奏データの本来の使い方である自動演奏では、これまで、演奏データを単に再生することしか行われていなかった。或るパートの演奏を省くマイナスワン演奏も、基本的には演奏データを単に再生するだけである。これは、自動演奏との合奏で行える音楽表現の幅が狭いことを意味する。このことから、演奏データから教示データをより適切に生成できるようにすることの一方では、演奏者（ユーザ）が自動演奏との合奏でより幅広い音楽表現を行えるようにすることも望まれていた。それらの何れを実現させても、演奏者（ユーザ）にとっての利便性を向上させることになる。
【００１０】
本発明の課題は、演奏データから適切な教示データを生成できるようにすることにある。
また、本発明の他の課題は、自動演奏との合奏で演奏者（ユーザ）がより幅広い音楽表現を行えるようにすることにある。
【００１１】
【課題を解決するための手段】
本発明の第１及び第２の態様の教示データ生成装置は、楽音の発音に関わるイベントの内容を表すイベントデータを複数、備えてなる演奏データを基に、演奏を行う演奏者に対して表示すべき楽音の強弱を指定する強弱記号の種類を示すデータを教示データとして生成することを前提とし、以下の手段を具備する。
【００１２】
第１の態様の教示データ生成装置は、イベントデータ中の楽音の音量を指定する音量データから、最大音量データ値と最小音量データ値の間で該音量データの値域を複数の範囲に分割する値域分割手段と、予め定めた曲の演奏単位毎に、値域分割手段による値域の分割結果、及び該演奏単位を構成するイベントデータの音量データに基づいて、教示データを生成するデータ生成手段と、を具備する。
【００１４】
第２の態様の教示データ生成装置は、予め定めた曲の演奏単位毎に、該演奏単位を構成する複数の楽音毎の音量を指定するベロシティ値に当該楽音の発音時間を掛けて得られる値の合計値、及び前記複数の楽音の全発音時間を夫々算出すると共に、当該合計値を全発音時間で割って得られる平均値を参照して、該演奏単位で発音させるべき楽音の音量を解析する音量解析手段と、前記音量変化解析手段の解析結果に基づいて、前記演奏単位毎に前記教示データを生成するデータ生成手段と、を具備する。
【００１８】
本発明の第１の態様の記録媒体は、演奏データを構成するイベントデータ中の楽音の音量を指定する音量データから、最大音量データ値と最小音量データ値の間で該音量データの値域を複数の範囲に分割する機能と、予め定めた曲の演奏単位毎に、前記分割する機能による値域の分割結果、及び該演奏単位を構成するイベントデータの音量データに基づいて、楽音の強弱を指定する強弱記号の種類を示す教示データを生成する機能と、をコンピュータにより実現させるプログラムを記録している。
【００２０】
本発明の第２の態様の記録媒体は、該演奏単位を構成する複数の楽音毎の音量を指定するベロシティ値に当該楽音の発音時間を掛けて得られる値の合計値、及び前記複数の楽音の全発音時間を夫々算出すると共に、当該合計値を全発音時間で割って得られる平均値を参照して、該演奏単位で発音させるべき楽音の音量を解析する機能と、該解析する機能の解析結果に基づいて、前記演奏単位毎に楽音の強弱を指定する強弱記号の種類を示す教示データを生成する機能と、をコンピュータにより実現させるプログラムを記録している。
【００２２】
本発明（第１の態様の教示データ生成装置）では、イベントデータ中の楽音の音量を指定する音量データを参照して、それの値域を最大音量データ値と最小音量データ値の間で、複数の範囲に分割することにより、演奏データ毎に、教示データを生成するうえでの基準を設定してその教示データを生成する。音量データの実際の値を参照して演奏データ毎に基準を設定することで、演奏データによって異なる楽音の音量の大きさのバラツキや偏り等に適切に対応することが可能となる。その結果、適切な教示データが生成されるようになる。
【００２６】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図１は、第１の実施の形態による教示データ生成装置、及び自動演奏装置を搭載した電子楽器の外観図である。
【００２７】
その電子楽器は、図１に示すように、多数の鍵１０１ａからなる鍵盤１０１と、各種スイッチが配設された操作パネル１０２と、各種強弱記号を含む様々な記号や情報を表示できるＬＣＤ（液晶表示器）１０３と、楽音を放音する２つのスピーカ１０４と、特には図示しないフロッピーディスク（ＦＤ）にアクセスするＦＤＤ（フロッピーディスク装置）１０５と、を備えて構成されている。
【００２８】
操作パネル１０２に配設されたスイッチとしては、特に図示していないが、自動演奏（自動伴奏を含む）のスタート／ストップを指示するためのスタート／ストップスイッチ、演奏をナビゲートするモード（以降、ナビゲートモードと呼ぶ）を設定するための表示スイッチ、自動演奏の実行時におけるチャネル間の関係の設定（変更）を行えるようにするためのチャネル設定スイッチ、ＬＣＤ１０３に表示されたカーソルを移動させるためのカーソルキー、自動演奏させる曲（演奏データ）や音色、或いは音響効果等の指定、更にはチャネル間の関係の設定に用いられるテンキー、などを始め、様々なスイッチが設けられている。鍵盤１０１の各鍵１０１ａには発光素子としてＬＥＤが設けられており、演奏のナビゲートは、そのＬＥＤを点灯させることで行うようになっている。他の楽器やシーケンサ等の外部装置とは、特に図示しないＭＩＤＩ端子を介してＭＩＤＩデータの送受信を行えるようになっている。
【００２９】
図２は、上記電子楽器の回路構成図である。
図１に示す外観を有する電子楽器は、図２に示すように、楽器全体の制御を行うＣＰＵ２０１と、そのＣＰＵ２０１が実行するプログラムや各種制御データ、及び複数の演奏データ等を格納したプログラムＲＯＭ２０２と、ＣＰＵ２０１がワークに用いるワークＲＡＭ２０３と、操作パネル１０２に配設された各種スイッチからなるスイッチ群２０４と、鍵盤１０１の各鍵１０１ａ毎に配設されたＬＥＤからなるＬＥＤ群２０５と、スイッチ群２０４、及び鍵盤１０１に対して演奏者が行った操作を検出するとともに、ＬＥＤ群２０５をＣＰＵ２０１の指示に従って駆動するインターフェイス２０６と、ＬＣＤ１０３を駆動して表示させるべき画像を表示させるＬＣＤコントローラー２０７と、ＦＤＤ１０５を制御するＦＤＤコントローラー２０８と、発音させるべき楽音の波形データを生成する音源２０９と、音色が異なる各種楽音の波形データを格納した波形ＲＯＭ２１０と、音源２１１が出力した波形データをアナログのオーディオ信号に変換するＤＡコンバータ２１１と、を備えて構成されている。そのＤＡコンバータ２１１が出力したオーディオ信号をスピーカ１０４に入力させることによって楽音が放音される。ＣＰＵ２０１とプログラムＲＯＭ２０２、ワークＲＡＭ２０３、インターフェース２０６、ＬＣＤコントローラー２０７、ＦＤＤコントローラー２０８、及び音源２０９とは、アドレスバス２１２、及びデータバス２１３を介して接続されている。
【００３０】
以上の構成において、動作を説明する。
ＣＰＵ２０１は、電源がオンされると、プログラムＲＯＭ２０２に格納されているプログラムを読み出して実行することにより、楽器全体の制御を開始する。その制御は、演奏者（ユーザ）の鍵盤１０１やスイッチ群２０４への操作に応じて、以下のように行う。
【００３１】
スイッチ群２０４、或いは鍵盤１０１に対して演奏者が行った操作を認識する場合、ＣＰＵ２０１はアドレスバス２１２、及びデータバス２１３を介してインターフェース２０６に、例えばスイッチ群２０４、或いは鍵盤１０１の走査を指示する制御コマンドを送出する。
【００３２】
インターフェース２０６は、その制御コマンドによる指示に従ってスイッチ群２０４、或いは鍵盤１０１を走査し、その走査結果を前回の走査結果と比較することにより、状態が変化したスイッチ、或いは鍵１０１ａ、更にはその状態変化の内容を検出（特定）する。ＣＰＵ２０１には、その検出結果を送出する。なお、その検出結果は、例えば状態が変化したスイッチ、或いは鍵１０１ａに割り当てた識別用コード、及びその状態変化の内容（オンかオフか等）を示すデータを少なくとも含むものであり、状態の変化を検出したスイッチ、或いは鍵１０１ａ毎に生成される。状態が変化したスイッチ、或いは鍵１０１ａを検出できなかったときには、その旨を示すデータが検出結果としてＣＰＵ２０１に送出される。以降、その検出結果については操作情報と呼ぶことにする。
【００３３】
インターフェース２０６が送出した操作情報によって鍵盤１０１を構成する何れかの鍵１０１ａの状態変化を認識した場合、ＣＰＵ２０１は、状態が変化した鍵１０１ａに割り当てた音高（ノートナンバー）、その状態変化の内容に応じて音源２０９に送出すべき制御コマンドを生成して送出する。本実施の形態では、その制御コマンドとしてＭＩＤＩデータを生成し送出するようになっている。
【００３４】
音源２０９は、ＣＰＵ２０１から送られたＭＩＤＩデータを受け取り、それを処理する。例えば、そのＭＩＤＩデータがノートオン・メッセージデータであれば、波形ＲＯＭ２１０に格納されている波形データを参照して、それが指示する楽音の波形データを生成し、必要に応じて音響効果を付加するといった操作を施した後、ＤＡコンバータ２１１に出力する。楽音の波形データの生成は、その楽音の消音を指示するＭＩＤＩデータを受け取るまで継続して行う。それにより、演奏者が鍵盤１０１に対して行った操作に応じてスピーカ１０４から楽音が放音されることになる。なお、波形データの生成は、時分割処理で行い、発音させるべき楽音が複数あれば、個別に生成した波形データの値の合計値が波形データの生成結果として扱われる。
【００３５】
一方、インターフェース２０６が送出した操作情報によってスイッチ群２０４を構成する何れかのスイッチの状態変化を認識した場合には、ＣＰＵ２０１は、その時点でそのスイッチに割り当てている機能、及びその状態変化の内容に応じた各種設定の変更を行う。ＬＣＤ１０３の制御やフロッピーデスクへのアクセスは、それと並行する形で必要に応じて行う。なお、各種設定の変更は、実際には、ワークＲＡＭ２０３に格納した対応する変数の内容を書き換えることで行われる。各種モードやテンポ、或いは音響効果等の設定、自動演奏の対象とする曲（演奏データ）や音色等の変更、自動演奏のスタート／ストップ等は、各種設定の変更によって実現される。
【００３６】
自動演奏の対象となる演奏データは、通常はプログラムＲＯＭ２０２に格納されている演奏データであるが、ＦＤＤ１０５にフロッピーディスクが装着されているときにはそれに格納されている演奏データが対象となる。ＦＤＤ１０５は、フロッピーディスクが装着されると、それを認識してフロッピーディスクが装着された旨をＦＤＤコントローラー２０８に通知する。コントローラー２０８は、そのことをＣＰＵ２０１に通知する。ＣＰＵ２０１は、その通知によりフロッピーディスクの装着の有無を認識する。なお、本実施の形態では、スタンダードＭＩＤＩファイル（ＳＭＦ）の形でまとめられた演奏データを再生の対象としており、プログラムＲＯＭ２０２にはＳＭＦの形で演奏データが格納されている。
【００３７】
演奏者がスタート／ストップスイッチを操作して自動演奏のスタートを指示した場合、ＣＰＵ２０１は、例えば、プログラムＲＯＭ２０２或いはフロッピーディスクの演奏データをワークＲＡＭ２０３に格納し、特には図示しないタイマの値をクリアし計時を開始させる。そのようにして自動演奏を実行するうえでの準備を行った後、演奏データを構成するＭＩＤＩデータ（イベントデータ）を順次、読み出し、それに付加されている時間データを基に決定したタイミングで音源２０９に送出する。それにより、ＭＩＤＩデータを処理させて自動演奏を行う。なお、フロッピーディスクに格納された演奏データのワークＲＡＭ２０３への格納は、ＦＤＤコントローラー２０８にフロッピーディスクの演奏データの読み出しを指示し、その指示によってＦＤＤ１０５がフロッピーディスクから読み出した演奏データをコントローラー２０８から受け取り、それをワークＲＡＭ２０３に格納することで行われる。上記タイマは、ハードウェアではなく、例えば所定の時間間隔毎に値を更新する変数でも良い。
【００３８】
ナビゲートモードが設定されているときには、ＭＩＤＩデータから特定される鍵１０１ａのＬＥＤの点灯を、それの音源２０９への送出に合わせて行う。それにより、自動演奏によって再生する曲の演奏を誘導する。それ以外には、自動演奏の進行に応じて順次、表示させるべき強弱記号をＬＣＤ１０３に表示させる。なお、ＬＥＤの点灯は、ＣＰＵ２０１がインターフェース２０６に、ＬＥＤの点灯を指示する命令コード、及び点灯させるべきＬＥＤを指定するデータを少なくとも有する制御コマンドを送出することで行われる。ＬＥＤの消灯は、同様に、ＬＥＤの消灯を指示する命令コード、及び消灯させるべきＬＥＤを指定するデータを少なくとも有する制御コマンドを送出することで行われる。
【００３９】
図３は、そのＬＣＤ１０３に表示される強弱記号を説明する図である。ＬＣＤ１０３の画面のなかで強弱記号の表示に用いられる部分を抜粋して、その部分に表示される内容を示したものである。同図（ａ）は全表示時、即ち強弱記号の表示に関わる全ての内容を表示させたときの状態を示し、同図（ｂ）〜同図（ｆ）はその内容によって表示可能な強弱記号を表示させたときの状態を各々示している。図３に示すように、本実施の形態では、強弱記号として、メゾピアノ、ピアニッシモ、クレシェンド、デクレシェンド、及びメゾフォルテを表示できるようにしている。それら以外には、ピアノ、フォルテ、及びフォルテッシモの各強弱記号を表示することができる。なお、当然のことながら、表示可能な強弱記号の組合せはそれに限定されるものではない。また、強弱記号を単に表示するのではなく、楽譜等と共に表示するようにしても良い。その強弱記号の代わりとなる別の記号を表示するようにしても良い。
【００４０】
プログラムＲＯＭ２０２に格納されている演奏データには、各演奏データ毎に、それの再生時に表示すべき強弱記号を指定する教示データが用意されている。例えば強弱記号を表示または消去させるべきタイミングに応じて演奏データ中に教示データを挿入するか、教示データ、及びそれが指定する強弱記号を表示または消去させるタイミングを指定する時間データを一つの単位として、演奏データとは別にまとめることで用意されている。前者の方法を採用する場合には、例えば未定となっている種類のチャンネルメッセージを強弱記号の表示用に割り当て、そのメッセージで強弱記号の種類、及び表示か消去かをそれぞれ指定するようにすれば良い。
【００４１】
ＣＰＵ２０１は、ナビゲートモードが設定されている場合、その教示データを参照して、自動演奏の進行に応じて強弱記号を順次、ＬＣＤ１０３に表示させる。なお、その表示は、ＣＰＵ２０１がＬＣＤコントローラー２０７に、例えば強弱記号の表示を指示する命令コード、及びその強弱記号の種類を指定するデータを少なくとも有する制御コマンドを送出することで行われる。その制御コマンドを受け取ったコントローラー２０７は、それの指示に従ってＬＣＤ１０３を駆動することにより、指定した強弱記号が表示される。それまで表示させていた強弱記号の消去は、ＣＰＵ２０１がＬＣＤコントローラー２０７に、例えば強弱記号の消去を指示する命令コード、及びその強弱記号の種類を指定するデータを少なくとも有する制御コマンドを送出することで行われる。
【００４２】
演奏者がプログラムＲＯＭ２０２に格納された演奏データを指定したのであれば、予め用意されている教示データによって強弱記号を自動演奏の進行に合わせて表示させることができる。しかし、フロッピーディスクに格納された演奏データには、通常、教示データが予め用意されていない。このことから、そのような演奏データを再生する場合には、以下のようにして教示データを生成することにより強弱記号を表示させる。
【００４３】
図５は、教示データの生成方法を説明する図である。そのなかに実線で描いた折れ線は、自動演奏の進行に応じて順次、発音させる楽音のベロシティ値を抜粋して表したものである。
【００４４】
本実施の形態では、楽音のベロシティの実際の値域を調べ、その値域を基に楽音の強弱を判別するうえでの基準を設定している。図５中のｖ１は値域を調べることで判明したベロシティの最小値、ｖ２はその最大値である。
【００４５】
教示データが用意されていない演奏データでは、ピアニッシモ、ピアノ、メゾピアノ、メゾフォルテ、フォルテ、及びフォルテッシモの計６種類の強弱記号を表示対象としている。それら強弱記号を表示させなくても良い状況もある。このことから、本実施の形態では、７（＝６＋１）つにベロシティの実際の値域を分け、楽音のベロシティ値がどの範囲内となっているか判定することにより教示データを生成している。
【００４６】
ベロシティの値域の分割は、本実施の形態では７等分することで行っている。それにより、楽音のベロシティ値がｖ１以上（ｖ２−ｖ１）／７＋ｖ１で求まる値未満であればピアニッシモを指定する教示データを生成する。以下、同様に、（ｖ２−ｖ１）／７＋ｖ１で求まる値以上２（ｖ２−ｖ１）／７＋ｖ１で求まる値未満であればピアノ、２（ｖ２−ｖ１）／７＋ｖ１で求まる値以上３（ｖ２−ｖ１）／７＋ｖ１で求まる値未満であればメゾピアノ、３（ｖ２−ｖ１）／７＋ｖ１で求まる値以上４（ｖ２−ｖ１）／７＋ｖ１で求まる値未満であれば標準（表示させるべき強弱記号なし）、４（ｖ２−ｖ１）／７＋ｖ１で求まる値以上５（ｖ２−ｖ１）／７＋ｖ１で求まる値未満であればメゾフォルテ、５（ｖ２−ｖ１）／７＋ｖ１で求まる値以上６（ｖ２−ｖ１）／７＋ｖ１で求まる値未満であればフォルテ、６（ｖ２−ｖ１）／７＋ｖ１で求まる値以上ｖ２以下であればフォルテッシモを指定する教示データをそれぞれ生成する。
【００４７】
なお、ベロシティの値域の分割は、当然のことながら、上記のような等分割でなくても良い。強弱記号の種類別に重みづけを行い、その重みに応じて強弱記号が対応する値域中の範囲、その幅を異ならせるようにしても良い。値域の他に、ベロシティの平均値（図５中のｖＨ）を求め、その平均値ｖＨを考慮しつつ値域を分割しても良い。これらのように、値域の分割には様々な方法を用いることができる。
【００４８】
例えば、或る楽音を強く鳴らすとしても、他の楽音も強く鳴らすのであれば、その楽音を鳴らす強さは普通である。特に強く鳴らすことにはならない。また、実際に発音される楽音の音量の範囲は曲（演奏データ）によって異なる。これは、強く、或いは弱く発音させると判断すべき楽音が曲（演奏データ）に応じて変化することを意味する。しかし、上述したように、ベロシティの実際の値域を調べ、その値域に応じて教示データを生成するうえでの基準を設定することで、実際に発音される楽音間の強弱関係に沿って基準を設定することになる。このため、適切な教示データを生成することができる。この結果、自動演奏の進行に合わせて、適切な強弱記号が必要に応じてＬＣＤ１０３に表示されることになる。
【００４９】
強弱記号は個々の楽音のベロシティ値に応じて表示させることを前提としている。このため、教示データの生成は、自動演奏と並行に行うようにしている。より具体的には、楽音の発音を指示するイベントデータの処理タイミングとなる度に、そのイベントデータ中のベロシティ値を参照して教示データを生成し、その生成結果に従ってＬＣＤ１０３に強弱記号を表示させている。それにより、演奏者には、押鍵すべき鍵１０１ａの他に、それを押鍵する強さを指示している。
【００５０】
ところで、これまで演奏データの再生は、イベントデータで指定される楽音を単に発音させることで行われていた。しかし、そのように演奏データを単に正確に再生するだけでは、自動演奏との合奏で行える音楽表現の幅は狭い。このことから、より幅広い音楽表現を行えるように、本実施の形態では、自動演奏上のパラメータを演奏者（ユーザ）が変更できるようにしている。そのことについて、図４を参照して説明する。
【００５１】
その図４は、チャネル間関係設定画面例を示す図である。その画面は、自動演奏上のパラメータの変更内容を演奏者（ユーザ）に設定させるために用意したものである。上記チャネル設定スイッチを操作する度にＬＣＤ１０３上に表示、或いはその表示が消去される。なお、その画面の画像データは、例えばＣＰＵ２０１が、ワークＲＡＭ２０３を用いて、プログラムＲＯＭ２０２から読み出した画像データを加工することで生成される。そのようにして生成した画像データをＬＣＤコントローラー２０７に送出して表示を指示することでＬＣＤ１０３上にその画面が表示されることになる。
【００５２】
チャネル間関係設定画面には、チャネル（ＣＨ）、マスターチャネル（ＣＨ）、反映の有無、及び同期センスの４つの項目が表形式で配置されている。チャネルの項目の欄には、１〜１６の数字が表示されている。それらの数字は、ＭＩＤＩデータで使うことができるチャネル番号を示している。それにより、チャネル番号毎に、マスターチャネル、反映の有無、及び同期センスを設定するようになっている。
【００５３】
本実施の形態では、変更の対象とするパラメータとして、イベントデータ中のベロシティ値を採用している。演奏データは、普通、複数のチャネルが使用されている。このことを利用して、ベロシティ値は、他のチャネルのベロシティ値を用いて変更させるようにしている。その他のチャネルがマスターチャネルである。設定画面のマスターチャネルの項目で○印が表示された欄のチャネル番号のチャネルがマスターチャネルとして設定される。反映の有無は、そのマスターチャネルのベロシティ値を用いてベロシティ値を変更させるチャネル（スレーブチャネル）を指定するための項目である。○印が表示された欄のチャネル番号のチャネルはマスターチャネルのベロシティ値を用いてベロシティ値が変更される。同期センスは、ベロシティ値の変更にマスターチャネルのベロシティ値を反映させる度合い、即ちスレーブチャネルのＭＩＤＩデータ中のベロシティ値の変更量を指定するための項目であり、その項目の欄には１〜５のうちの何れかの数値を入れることができる。その値が大きくなるほど、ベロシティ値の変更量は大きくなる傾向となっている。
【００５４】
ＣＰＵ２０１は、チャネル間関係設定画面を表示させる場合、設定対象としている欄を示すカーソルも合わせて表示させる。演奏者は、カーソルキーを操作して内容の変更を所望する欄にカーソルを移動させた後、テンキーを操作して所望する内容をその欄に入力する。カーソルキー、テンキーを用いて行った設定は、チャネル設定スイッチを操作すると保存される。その後にスタート／ストップスイッチを操作すると、自動演奏は設定された内容に従って行われる。
【００５５】
上述したようにしてベロシティ値をチャネル毎に変更できるようにすることで、各チャネル毎に音量、或いはその抑揚をアレンジすることができる。それによって、チャネル間の演奏上におけるバランスや主張の度合いもアレンジすることができる。このため、自動演奏との合奏において、演奏者はより幅広い音楽表現を行うことができる。
【００５６】
次に、上述したようにしてＣＰＵ２０１が行う制御動作について、図６〜図１０に示す各種動作フローチャートを参照して詳細に説明する。
図６は、全体処理の動作フローチャートである。始めに、図６を参照して、全体処理について詳細に説明する。なお、この全体処理は、ＣＰＵ２０１が、プログラムＲＯＭ２０２に格納されているプログラムを読み出して実行することで実現される。
【００５７】
先ず、ステップ６０１では、電子楽器を予め定めた初期状態に設定するイニシャル処理を行う。続くステップ６０２では、スイッチ群２０４を構成する各種スイッチの走査（スキャン）を指示してインターフェース２０６に状態変化したスイッチ、及びその変化の内容を検出させ、その検出結果に応じて各種の設定を行うスイッチ処理を実行する。それが終了した後、ステップ６０３に移行する。
【００５８】
ステップ６０３では、インターフェース２０６に鍵盤１０１の走査を指示して状態変化した鍵１０１ａ、及び、その変化の内容を検出させ、その結果に応じて音源２０９に送出すべきＭＩＤＩデータ（制御コマンド）を生成する鍵盤処理を実行する。生成したＭＩＤＩデータは、ワークＲＡＭ２０３に用意した領域（以降、バッファとも呼ぶことにする）に格納する。その後は、ステップ６０４に移行する。
【００５９】
ステップ６０４では、指定された演奏データの再生、更には点灯させるべきＬＥＤの点灯を行う自動演奏処理を実行する。ここでも鍵盤処理の実行時と同様に、音源２０９に送出すべきＭＩＤＩデータはワークＲＡＭ２０３のバッファに格納する。
【００６０】
ステップ６０４に続くステップ６０５では、ＭＩＤＩ端子を介して外部装置との間でＭＩＤＩデータを送受信するＭＩＤＩ処理を実行する。そのＭＩＤＩデータの送受信は、バッファに格納されたＭＩＤＩデータを外部装置に送信したり、外部装置から送信されたＭＩＤＩデータを受信してバッファに格納することで行われる。それが終了した後は、ステップ６０６に移行する。
【００６１】
ステップ６０６では、バッファに格納されているＭＩＤＩデータを音源２０９に送出して楽音を発音させる発音処理を実行する。続くステップ６０７では、再生対象とする演奏データから教示データを作成（生成）できるようにするための教示データ作成処理を実行する。マスターチャネルにおけるベロシティ値の最大値Ｖｍａｘ（図５におけるｖ２に対応）、最小値Ｖｍｉｎ（図５におけるｖ１に対応）は、それを実行することで抽出される。その後は、ステップ６０８に移行して、ＦＤＤコントローラー２０８やＬＣＤコントローラー２０７等の制御といったことを行うその他の処理を実行する。それが終了した後、上記ステップ６０２に戻る。
【００６２】
全体処理中のステップ６０２〜６０８は処理ループを形成しており、電子楽器の電源がオンとなっている間、それが繰り返し実行される。それにより、電子楽器は、鍵盤１０１やスイッチ群２０４に対して演奏者が行った操作に応じて動作することになる。
【００６３】
以降は、上記全体処理内で実行されるサブルーチン処理について説明する。始めに、その全体処理内でステップ６０２として実行されるスイッチ処理について、図７に示す動作フローチャートを参照して詳細に説明する。
【００６４】
先ず、ステップ７０１では、スイッチ群２０４を構成する各スイッチの走査（スキャン）をインターフェース２０６に指示する。そのインターフェース２０６から走査結果として操作情報を受け取った後、ステップ７０２に移行する。ステップ７０２以降では、その操作情報に対応するための処理が行われる。
【００６５】
ステップ７０２では、スタート／ストップスイッチがオンしたか否か判定する。そのスイッチがオンされたことを操作情報が示していた場合、判定はＹＥＳとなり、ステップ７０３で自動演奏の実行を管理するための変数ＪＥＦの値を反転（それまでの値が１であれば０に、その値が０であれば１に）させた後、ステップ７０４に移行する。反転によって変数ＪＥＦの値を１にさせたときには、タイマの値をクリアした後にその計時をスタートさせる。そうでない場合には、判定はＮＯとなって次にそのステップ７０４に移行する。なお、変数ＪＥＦに代入される１は、自動演奏が実行中であることを示す値である。タイマは、時間データ（直前のイベントとの時間差を示すデルタタイム）に沿ってそれが付加されたＭＩＤＩデータを処理する、即ちそのＭＩＤＩデータの処理タイミングを特定するためのものである。
【００６６】
ステップ７０４では、教示データ作成スイッチがオンしたか否か判定する。そのスイッチがオンされたことを操作情報が示していた場合、判定はＹＥＳとなり、ステップ７０５で教示データの作成を管理するための変数ＫＤＳＦに１を代入した後、ステップ７０６に移行する。そうでない場合には、判定はＮＯとなって次にそのステップ７０６に移行する。
【００６７】
ステップ７０６では、表示スイッチがオンしたか否か判定する。そのスイッチがオンされたことを操作情報が示していた場合、判定はＹＥＳとなり、ステップ７０７でナビゲートモードの設定の有無を管理するための変数ＨＦの値を反転（それまでの値が１であれば０に、その値が０であれば１に）させた後、ステップ７０８に移行する。そうでない場合には、判定はＮＯとなって次にそのステップ７０８に移行する。なお、変数ＨＦに代入される１は、ナビゲートモードが設定中であることを示す値である。
【００６８】
ステップ７０８では、チャネル設定スイッチがオンしたか否か判定する。そのスイッチがオンされたことを操作情報が示していた場合、判定はＹＥＳとなり、ステップ７０９で自動演奏上の設定変更の禁止を管理するための変数ＣＳＦの値を反転（それまでの値が１であれば０に、その値が０であれば１に）させた後、ステップ７１０に移行する。そうでない場合には、判定はＮＯとなって次にそのステップ７１０に移行する。なお、変数ＣＳＦに代入される１は、設定変更が可能、即ち図４のようなチャネル間関係設定画面をＬＣＤ１０３に表示すべきことを示す値である。
【００６９】
ステップ７１０では、変数ＣＳＦの値が１か否か判定する。上記チャネル間関係設定画面をＬＣＤ１０３上に表示させていた場合、判定はＹＥＳとなってステップ７１１に移行し、カーソルキーやテンキーのなかで状態変化が検出されたキーの種類、その状態変化の内容に応じて設定を変更した後、ステップ７１２に移行する。それにより、カーソルキーへの操作に応じてカーソルを移動させ、そのカーソルを表示させている欄の内容をテンキーへの操作に応じて変更させる。一方、そうでない場合には、判定はＮＯとなってステップ７１２に移行する。
【００７０】
ステップ７１２では、他のスイッチへの操作に応じた処理を行う。それを行った後、一連の処理が終了する。テンポ値や自動演奏の対象とする演奏データ（曲）の指定、或いは音響効果や他のモードの設定等は、ステップ７１２の処理を実行することで実現される。
【００７１】
図８及び図９は、全体処理内でステップ６０４として実行される自動演奏処理の動作フローチャートである。次に、図８及び図９を参照して、自動演奏処理について詳細に説明する。
【００７２】
図４に示すようなチャネル間関係設定画面を介して設定した内容（以降、演奏設定情報と呼ぶ）、演奏データから抽出したマスターチャネルのベロシティ値の最大値Ｖｍａｘ、最小値Ｖｍｉｎ、そのチャネルのキープレッシャー値の最大値Ｐｍａｘ（以降、抽出データとも呼ぶことにする）は、その演奏データと対応づけさせてワークＲＡＭ２０３に保存される。その設定情報、及び抽出データは、自動演奏を実行する際に、再生の対象とする演奏データに応じて読み出されて参照される。
【００７３】
先ず、ステップ８０１では、変数ＪＥＦの値が１か否か判定する。その変数には、自動演奏を実行している間、１が代入される。このことから、自動演奏の実行中の場合、判定はＹＥＳとなってステップ８０２に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７４】
ステップ８０２では、次のＭＩＤＩデータ（イベントデータ）の処理タイミングとなったか否か判定する。タイマの値はＭＩＤＩデータを処理する度にクリアすることから、そのタイマが計時した時間が、ＭＩＤＩデータに付加されている時間データが示す時間以上となると、それの処理タイミングということになる。このため、そのような状況となっていた場合、判定はＹＥＳとなってステップ８０３に移行する。そうでない場合には、判定はＮＯとなって一連の処理を終了する。
【００７５】
ステップ８０３では、処理タイミングとなったＭＩＤＩデータがマスターチャネルのものか否か判定する。そのＭＩＤＩデータ中のチャネル番号がマスターチャネルとして演奏者が図４に示すようなチャネル間関係設定画面で指定したチャネル番号（図４ではチャネル番号が１である）と一致していた場合、判定はＹＥＳとなってステップ８０４に移行する。そうでない場合には、判定はＮＯとなって図９のステップ８１０に移行する。
【００７６】
本実施の形態では、マスターチャネルのＭＩＤＩデータのみを対象にナビゲートを行うようにしている。そのナビゲート、即ちＬＥＤ群２０５を構成するＬＥＤの駆動は、ステップ８０４〜８０９の処理を実行することで実現される。
【００７７】
先ず、ステップ８０４では、イベントの種類を判定する。ナビゲートの対象とする操作子は、鍵盤１０１である。このことから、１バイト目と３バイト目のデータを参照して、イベントは、ノートオン、ノートオフ、及びその他の３種類に大別して判定している。１バイト目と３バイト目のデータからイベントの種類がノートオン、及びノートオフの何れでもないと判定した場合、図９のステップ８１０に移行する。
【００７８】
一方、１バイト目と３バイト目のデータからイベントの種類がノートオンと判定した場合には、ステップ８０５に移行する。そのステップ８０５では、変数ＨＦの値が１か否か、即ちナビゲートモードを演奏者が設定したか否か判定する。そのナビゲートモードを演奏者が指定した場合、判定はＹＥＳとなってステップ８０６に移行する。そうでない場合には、判定はＮＯとなって図９のステップ８１０に移行する。
【００７９】
ステップ８０６では、２バイト目のデータとして格納されているノートナンバーに対応する鍵１０１ａのＬＥＤを点灯させる。続くステップ８０７では、教示データ作成処理を実行することで取得したベロシティ値の最大値Ｖｍａｘ、最小値Ｖｍｉｎ、及びＭＩＤＩデータの３バイト目のデータとして格納されたベロシティ値に応じて表示すべき強弱記号を示す教示データを生成し、その教示データに従って強弱記号をＬＣＤ１０３に表示させる。その後、図９のステップ８１０に移行する。なお、ＬＥＤの点灯は、ＣＰＵ２０１がインターフェース２０６に、ＬＥＤの点灯を指示する命令コード、点灯させるＬＥＤを指定するデータを少なくとも有する制御コマンドを送出することで行われる。強弱記号の表示は、ＣＰＵ２０１がＬＣＤコントローラー２０７に、強弱記号の表示を指示する命令コード、及びその記号の種類を指定するデータを少なくとも有する制御コマンドを送出することで行われる。
【００８０】
１バイト目と３バイト目のデータからイベントの種類がノートオフと判定した場合には、ステップ８０８に移行する。そのステップ８０８では、変数ＨＦの値が１か否か判定する。ナビゲートモードを演奏者が指定した場合、判定はＹＥＳとなってステップ８０９に移行する。そうでない場合には、判定はＮＯとなって図９のステップ８１０に移行する。
【００８１】
ステップ８０９では、２バイト目のデータとして格納されているノートナンバーに対応する鍵１０１ａのＬＥＤを消灯させる。その後、図９のステップ８１０に移行する。なお、ＬＥＤの消灯は、ＣＰＵ２０１がインターフェース２０６に、ＬＥＤの消灯を指示する命令コード、消灯させるＬＥＤを指定するデータを少なくとも有する制御コマンドを送出することで行われる。
【００８２】
図９のステップ８１０では、変数ＨＦの値が１か否か判定する。それの値が１であった場合、判定はＹＥＳとなってステップ８１２に移行する。そうでない場合には、判定はＮＯとなり、ステップ８１１に移行して、処理対象となったＭＩＤＩデータ（イベントデータ）をワークＲＡＭ２０３のバッファ内に格納した後、ステップ８１６に移行する。
【００８３】
マスターチャネルのベロシティ値のスレーブチャネルへの反映は、ナビゲートモードの設定時に行うようにしている。その反映は、ステップ８１２〜８１５の処理を実行することにより実現される。
【００８４】
ステップ８１２では、処理タイミングとなったＭＩＤＩデータがスレーブチャネルのものか否か判定する。そのＭＩＤＩデータ中のチャネル番号がスレーブチャネルとして演奏者が図４に示すようなチャネル間関係設定画面で指定したチャネル番号（図４ではチャネル番号が２と３である）と一致していた場合、判定はＹＥＳとなってステップ８１３に移行する。そうでない場合には、判定はＮＯとなってステップ８１１に移行する。
【００８５】
ステップ８１３では、イベントの種類を判定する。音量は、ベロシティ値の他に、キープレッシャー値によっても変化する。このことから、１バイト目と３バイト目のデータを参照して、イベントは、ノートオン、キープレッシャー、及びその他の３種類に大別して判定している。１バイト目と３バイト目のデータからイベントの種類がノートオン、及びキープレッシャーの何れでもないと判定した場合、ＭＩＤＩデータの内容を操作する必要はないことから、ステップ８１１に移行する。
【００８６】
一方、１バイト目と３バイト目のデータからイベントの種類がノートオンと判定した場合には、ステップ８１４に移行する。そのステップ８１４では、マスターチャネルの最大値Ｖｍａｘ、同期センスの値に応じて、ＭＩＤＩデータのベロシティ値を変更してワークＲＡＭ２０３のバッファに格納する。当然のことながら、自動演奏の対象としている演奏データから最大値Ｖｍａｘ等を抽出していなければ、ベロシティ値は変更しない。そのようなベロシティ値の変更を行った後、ステップ８１６に移行する。
【００８７】
そのベロシティ値の変更、即ち新たなベロシティ値Ｖの算出は、以下の式を用いて行っている。
Ｖ  ＝  Ａ×（１−Ｂ）  ＋  （Ａ×Ｂ×Ｃ）
ここで、Ａは元のベロシティ値、Ｂは同期センス値に対応した値（例えば、センス値が１のときは０．２、その値が２のときは０．４、その値が３のときは０．６、その値が４のときは０．８、その値が５のときは１．０、である）、Ｃはマスターチャネルで直前に処理したＭＩＤＩデータのベロシティ値をマスターチャネルの最大値Ｖｍａｘで割って得られる値、である。この式から明らかなように、センス値が大きくなるほど、マスターチャネルのベロシティ値をスレーブチャネルのベロシティ値に反映させる度合いを大きくさせている。
【００８８】
なお、新たなベロシティ値の算出方法は、上記式を用いる方法に限定されるわけではない。他の式を用いても良く、マスターチャネルとスレーブチャネルの各ベロシティ値に応じて新たに設定すべきベロシティ値をデータとして予め用意しておいても良い。その他にも様々な方法を採用することができる。
【００８９】
１バイト目のデータからイベントの種類がキープレッシャーと判定した場合には、ステップ８１５に移行する。そのステップ８１５では、マスターチャネルのキープレッシャーにおける最大値Ｐｍａｘ、同期センスの値に応じて、ＭＩＤＩデータのプレッシャー値を変更してワークＲＡＭ２０３のバッファに格納する。当然のことながら、自動演奏の対象としている演奏データから最大値Ｐｍａｘ等を抽出していなければ、プレッシャー値は変更しない。そのようなプレッシャー値の変更を行った後、ステップ８１６に移行する。そのプレッシャー値の算出方法は、上述したベロシティ値の算出方法と基本的に同じである。このため、その詳細については省略する。
【００９０】
ステップ８１６では、次に処理すべきＭＩＤＩデータがあるか否か判定する。再生している演奏データに未処理のＭＩＤＩデータが残っていた場合、判定はＹＥＳとなってステップ８１７に移行する。そうでない場合には、即ち演奏データの再生が完了した場合には、判定はＮＯとなってステップ８１８に移行する。
【００９１】
ステップ８１７では、タイマの値をクリアし、処理対象を次のＭＩＤＩデータ（イベントデータ）に変更する。その後、一連の処理を終了する。
他方のステップ８１８では、全ての楽音の消音を指示するＭＩＤＩデータをワークＲＡＭ２０３のバッファに格納する。続くステップ８１９では、演奏データの再生が完了したことから、変数ＪＥＦに０を代入する。一連の処理はその後に終了する。
【００９２】
上述した自動演奏処理を実行することにより、演奏者がマスターチャネルの演奏を行ううえで押鍵の強さを指示する強弱記号が表示され、音量がアレンジされたスレーブチャネルの自動演奏が行われることになる。なお、特には図示していないが、自身が行ったマスターチャネルの演奏を演奏者がより明確に把握できるように、そのマスターチャネルのＭＩＤＩデータの処理を回避できる（即ちマイナスワン演奏できる）ようになっている。
【００９３】
図１０は、上記全体処理内でステップ６０７として実行される教示データ作成処理の動作フローチャートである。次に、図１０を参照して、教示データ作成処理について詳細に説明する。
【００９４】
先ず、ステップ１００１では、変数ＫＤＳＦの値が１か否か判定する。演奏者（ユーザ）が教示データ作成スイッチを操作して教示データの作成、即ち強弱記号の表示を行えるようにすることを指示した場合、判定はＹＥＳとなってステップ１００２に移行する。そうでない場合には、判定はＮＯとなって一連の処理を終了する。
【００９５】
ステップ１００２では、演奏者が教示データ作成スイッチを操作するまえに再生の対象となっていた演奏データをプログラムＲＯＭ２０２から読み出して、或いはフロッピーディスクから読み出させてワークＲＡＭ２０３に格納する。続くステップ１００３では、各種変数に初期値を代入する。具体的には、変数Ｖｍａｘ、Ｖｔｏｔ、Ｐｍａｘ、及びＮＩにそれぞれ０を代入し、変数Ｖｍｉｎには１２７を代入する。その後、ステップ１００４に移行する。なお、ベロシティ値、及びキープレッシャー値の値域は、０〜１２７である。
【００９６】
変数ＮＩは、ワークＲＡＭ２０３に格納した演奏データ中から読み出すＭＩＤＩデータ（イベントデータ）を管理するための変数である。ステップ１００４では、その変数ＮＩの値によって指定されるＭＩＤＩデータ（イベントデータ）をワークＲＡＭ２０３から読み出す。続くステップ１００５では、読み出したＭＩＤＩデータがマスターチャネルのものか否か判定する。そのＭＩＤＩデータのチャネル番号がマスターチャネルのチャネル番号と一致していた場合、判定はＹＥＳとなってステップ１００６に移行する。そうでない場合には、即ちそのＭＩＤＩデータが強弱記号の表示対象となっていないチャネルのものであった場合には、判定はＮＯとなってステップ１０１５に移行する。
【００９７】
上記変数Ｖｍａｘ、Ｖｔｏｔ、Ｐｍａｘ、及びＶｍｉｎは、教示データ作成に用いる各種データの抽出用に用意したものである。ステップ１００６〜１０１４では、ステップ１００４で読み出したＭＩＤＩデータに応じて、それら変数の値を更新するための処理が行われる。
【００９８】
先ず、ステップ１００６では、イベントの種類を判定する。イベントは、ノートオン、キープレッシャー、及びその他の３種類に大別して判定している。１バイト目と３バイト目のデータからイベントの種類がノートオン、及びキープレッシャーの何れでもないと判定した場合、強弱記号の表示や楽音の音量制御には関係しないことから、ステップ１０１５に移行する。
【００９９】
１バイト目と３バイト目のデータからイベントの種類がノートオンと判定した場合には、ステップ１００７に移行する。そのステップ１００７では、変数Ｖｔｏｔに、それまでの値にステップ１００４で読み出したＭＩＤＩデータのベロシティ値を加算して得られる値を代入する。続くステップ１００８では、変数ＮＩの値をインクリメントする。その後、ステップ１００９に移行する。
【０１００】
ステップ１００９では、ＭＩＤＩデータのベロシティ値が変数Ｖｍａｘの値より大きいか否か判定する。直前に実行したステップ１００４で読み出したＭＩＤＩデータのベロシティ値がそれまでに読み出したＭＩＤＩデータのなかで最大であった場合、判定はＹＥＳとなり、ステップ１０１０で変数Ｖｍａｘにそのベロシティ値を代入した後、ステップ１０１１に移行する。そうでない場合には、判定はＮＯとなってステップ１０１１に移行する。
【０１０１】
ステップ１０１１では、ＭＩＤＩデータのベロシティ値が変数Ｖｍｉｎの値より小さいか否か判定する。直前に実行したステップ１００４で読み出したＭＩＤＩデータのベロシティ値がそれまでに読み出したＭＩＤＩデータのなかで最小であった場合、判定はＹＥＳとなり、ステップ１０１２で変数Ｖｍｉｎにそのベロシティ値を代入した後、ステップ１０１５に移行する。そうでない場合には、判定はＮＯとなり、そのステップ１０１５に移行する。
【０１０２】
一方、１バイト目と３バイト目のデータからイベントの種類がキープレッシャーと判定した場合には、ステップ１０１３に移行する。そのステップ１０１３では、ＭＩＤＩデータのプレッシャー値が変数Ｐｍａｘの値より大きいか否か判定する。直前に実行したステップ１００４で読み出したＭＩＤＩデータのプレッシャー値がそれまでに読み出したＭＩＤＩデータのなかで最大であった場合、判定はＹＥＳとなり、ステップ１０１４で変数Ｐｍａｘにそのプレッシャー値を代入した後、ステップ１０１５に移行する。そうでない場合には、判定はＮＯとなってステップ１０１５に移行する。
【０１０３】
ステップ１０１５では、次に読み出すべきＭＩＤＩデータがあるか否か判定する。演奏データに未処理のＭＩＤＩデータが残っていた場合、判定はＹＥＳとなってステップ１００４に戻る。そうでない場合には、即ち演奏データから抽出すべきデータの抽出が完了した場合には、判定はＮＯとなってステップ１０１６に移行する。
【０１０４】
ステップ１０１６では、変数ＶＨに、変数Ｖｔｏｔの値を変数ＮＩの値で割って得られる値（＝Ｖｔｏｔ／ＮＩ）、即ちベロシティ値の平均値を代入する。続くステップ１０１７では、変数ＫＤＳＦに０を代入する。その後、一連の処理を終了する。
【０１０５】
ステップ１００４〜１０１５で形成される処理ループをステップ１０１５の判定がＮＯとなるまでの間、繰り返し実行することにより、ベロシティ値の最大値、最小値、及びプレッシャー値の最大値が抽出されることになる。そのようにして抽出したデータが、演奏データと対応づけてワークＲＡＭ２０３に保持される。それにより、自動演奏の実行時には、強弱記号の表示、マスターチャネルのベロシティ値のスレーブチャネルのベロシティ値への反映が実現される。
【０１０６】
なお、第１の実施の形態では、チャネル間の主従関係を演奏者（ユーザ）に設定させて、スレーブチャネル（従のチャネル）のＭＩＤＩデータのベロシティ値やキープレッシャー値をマスターチャネル（主のチャネル）のＭＩＤＩデータのベロシティ値やキープレッシャー値に応じて変更するようになっているが、その主従関係を演奏者に設定させなくても良い。単にそれら値の変更の対象とするチャネルを演奏者に設定させるようにしても良い。その主従関係を複数、設定できるようにしても良い。同期センス値については、演奏者に設定させないようにしても良い。元の値を変更させる度合いではなく、新たに求める値の算出方法を演奏者が任意に設定できるようにしても良い。それら以外の変更方法を採用しても良い。値の変更対象については、ベロシティ値、及びキープレッシャー値のうちの何れか一方のみとしても良い。音色等の音量制御に関わらない他のパラメータを変更できるようにしても良い。これらのように、自動演奏上のパラメータの変更については、様々な方法を採用することができる。
＜第２の実施の形態＞
上記第１の実施の形態では、基本的に、強弱記号の表示は個々の楽音を対象にしている。これに対し、第２の実施の形態は、予め設定された演奏単位（複数の楽音（音符）がまとまった部分）を対象に強弱記号を表示できるようにしたものである。
【０１０７】
その第２の実施の形態による教示データ生成装置、及び自動演奏装置を搭載した電子楽器の構成は、第１の実施の形態におけるそれと基本的に同じである。このため、第１の実施の形態の説明で用いた符号をそのまま用いて、その第１の実施の形態から異なる部分のみ説明することにする。
【０１０８】
図１１は、第２の実施の形態における教示データの生成方法を説明する図である。始めに、その図１１を参照して、教示データの生成方法について説明する。演奏単位としては、音符（例えば４分音符）や拍、小節、それらのうちの少なくとも一つを基本単位とする単位、或いは演奏者（ユーザ）が任意に設定した演奏範囲など、様々なものが考えられる。ここでは、混乱を避けて理解を容易とするために、演奏単位は小節であるとの前提で以降の説明を行うことにする。なお、小節に対応する時間は、例えば設定されている分解能、及びメタイベントとして演奏データ（ＳＭＦ）中で定義された拍子から特定することができる。
【０１０９】
図１１において、Ａ−１〜Ａ−４及びＢ−１〜Ｂ５は、それぞれ、小節を表している。音符は、発音される楽音の種類を示し、ベロシティは楽音のベロシティ、長さは拍で表した楽音の発音期間、差分は直前に発音される楽音との間のベロシティ値の差、を各々示している。
【０１１０】
本実施の形態では、その図１１に示すように、発音される楽音を各小節毎にまとめ、小節を構成する楽音の音量の大きさ、その音量変化から表示すべき強弱記号を示す教示データを生成するようにしている。具体的には、クレシェンドやデクレシェンド等のように段階的な楽音の音量変化を指定する強弱記号の教示データは、隣接する楽音間のベロシティ値の差分が全て所定の範囲内であり、且つ、ベロシティ値が変化していく方向が全体的に維持されているか否かに応じて生成している。ピアニッシモやピアノ、或いはフォルテ等の音量の大きさを指定する強弱記号の教示データは、ベロシティ値の平均値を求め、その平均値から第１の実施の形態と同様の手法を用いて生成している。そのようにして生成した教示データにはそれが対応する小節を表すデータを付加し、演奏データとは別に、それと対応づけてワークＲＡＭ２０３に格納している。教示データに付加するデータは、例えばそれが示す強弱記号を表示すべきタイミングを指定する時間データである。
【０１１１】
なお、楽音が鳴っていない時間が長くなるほど、演奏単位（小節）全体で受ける印象では音量が小さく感じられることから、フォルテ等の強弱記号の教示データは、各楽音の発音時間を考慮して生成しても良い。例えば、ベロシティ値に発音時間を掛けて得られる値の合計値、及び全発音時間をそれぞれ算出し、その合計値を全発音時間で割って得られる平均値を基に教示データを生成するようにしても良い（図１１参照）。
【０１１２】
フォルテ等の強弱記号の教示データは、第１の実施の形態と同様に、実際に発音される楽音間の強弱関係に沿って設定した基準を用いて生成されていることから、演奏にとって適切なものである。クレシェンド等の強弱記号の教示データは、予め定めた演奏単位（ここでは小節）で発音される楽音の音量変化を全体的に考慮して生成している。このため、隣接する楽音間のベロシティ値の差にのみ着目して教示データを生成している従来の教示データ生成装置とは異なり、その演奏単位の演奏時に表示すべき強弱記号を示す教示データを適切に生成することができる。
【０１１３】
上述したようにして教示データを生成するＣＰＵ２０１の動作は、図６に示す全体処理のなかでステップ６０４の自動演奏処理、及びステップ６０７の教示データ作成処理が第１の実施の形態から異なっている。他のステップの処理の内容は第１の実施の形態におけるそれと基本的に同じである。このことから、第２の実施の形態におけるステップ６０４の自動演奏処理、及びステップ６０７の教示データ作成処理についてのみ、図１２、及び図１３を参照して説明する。
【０１１４】
第２の実施の形態の自動演奏処理は、図８に示す動作フローチャートのなかで、ステップ８０７だけが第１の実施の形態から異なる。このことから、図１２を参照して、そのステップ８０７の代わりに実行される部分についてのみ説明する。その図１２は、その部分を抜粋した動作フローチャートである。
【０１１５】
図１２のステップ１２０１は、図８のステップ８０６の処理が終了した後に実行される。そのステップ１２０１では、演奏対象とする小節が移ったか否か判定する。
【０１１６】
教示データには、それが対応する小節を表すデータとして時間データが付加されている。その時間データは、例えば演奏開始からの時間、或いは直前の小節の先頭からの時間を示すデータである。本実施の形態では、後者を採用しており、タイマとは別の計時機能で教示データを処理すべきタイミングを計時している。このため、その計時機能で計時した時間が時間データで指定された時間以上であった場合、ステップ１２０１の判定はＹＥＳとなり、ステップ１２０２で教示データが示す強弱記号をＬＣＤ１０３に表示させた後、図９のステップ８１０に移行する。そうでない場合には、その判定はＮＯとなって図９のステップ８１０に移行する。
【０１１７】
このようにして、第２の実施の形態では、演奏が小節を移る度に、ＬＣＤ１０３に表示させる強弱記号を更新する。それにより、デクレシェンド、或いはデクレッシェンドといった強弱記号を必要に応じてＬＣＤ１０３に表示させている。なお、ＬＣＤ１０３に表示させる強弱記号の更新は、ＣＰＵ２０１がＬＣＤコントローラ−２０７に、アドレスバス２１２、及びデータバス２１３を介して、ＬＣＤ１０３に新たに表示させるべき強弱記号に応じて生成した制御コマンドを送出することで実現される。
【０１１８】
図１３は、図６に示す全体処理内でステップ６０７として実行される教示データ作成処理の動作フローチャートである。次に、図１３を参照して、第２の実施の形態における教示データ作成処理について詳細に説明する。
【０１１９】
第２の実施の形態でも第１の実施の形態と同じく、演奏データからベロシティ値の最大値Ｖｍａｘ、最小値Ｖｍｉｎ、キープレッシャー値の最大値Ｐｍａｘを抽出している。しかし、ここでは、説明の重複を避けるため、その部分の動作フローチャートは省いている。それにより、クレシェンド等の強弱記号の教示データの生成に関わる部分のみに注目して説明することにする。
【０１２０】
先ず、ステップ１３０１では、変数ＫＤＳＦの値が１か否か判定する。演奏者（ユーザ）が教示データ作成スイッチを操作して教示データの作成、即ち強弱記号の表示を行えるようにすることを指示した場合、判定はＹＥＳとなってステップ１３０２に移行する。そうでない場合には、判定はＮＯとなって一連の処理を終了する。
【０１２１】
ステップ１３０２では、演奏者が教示データ作成スイッチを操作するまえに再生の対象となっていた演奏データをプログラムＲＯＭ２０２から読み出して、或いはフロッピーディスクから読み出させてワークＲＡＭ２０３に格納する。続くステップ１３０３では、予め設定された演奏単位（期間）で演奏データを分割して、演奏単位毎に、そこで発音される楽音のベロシティ値、発音時間（拍を単位とした長さ）、及び隣接する楽音間のベロシティ値の差分を求める（図１１参照）。それが終了した後、ステップ１３０４に移行する。
【０１２２】
ステップ１３０４では、各演奏単位（小節）毎に、その単位で発音される楽音のベロシティ値の変化傾向を解析する。隣接する楽音間のベロシティ値の差分、その差分の変化に注目して全体的な変化傾向を解析する。続くステップ１３０５では、その解析結果を教示データとしてワークＲＡＭ２０３に格納する。そのようにして生成したのは、クレシェンド等の強弱記号の教示データである。その教示データには、時間データを付加してワークＲＡＭ２０３に演奏データとは別に格納する。それが終了すると、ステップ１３０６で変数ＫＤＳＦに０を代入した後、一連の処理を終了する。
【０１２３】
図１２のステップ１２０２では、上述したようにして生成された教示データに従って強弱記号をＬＣＤ１０３に表示させる。それにより、ＬＣＤ１０３に表示される強弱記号の小節単位での更新が実現されることになる。
【０１２４】
なお、第２の実施の形態では、演奏単位を予め定めているが、その演奏単位を予め定めずに、演奏内容に応じて任意、且つ自動的に変更するようにしても良い。そのようにした場合には、段階的な音量変化が続く演奏の範囲を検出して、その範囲の演奏時に表示すべき強弱記号を示す教示データを生成したり、一つだけ他と比較して大きく、或いは小さく鳴らすべき楽音用の教示データを生成するといったことが自動的に行われるようになる。このため、演奏データから生成すべき教示データをより適切に生成することができる。
【０１２５】
また、本実施の形態（第１および第２の実施の形態）の教示データ生成装置は、電子楽器に搭載されたものであるが、それを搭載できる装置は電子楽器に限定されるものではない。様々な装置に搭載することができる。既存の装置にも、ＣＰＵ２０１の上述したような動作を実現させるプログラムをロードすることで本発明を適用することができる。そのプログラムは、ＣＤ−ＲＯＭやフロッピーディスク、或いは光り磁気ディスク等の記録媒体に記録して配布しても良いが、公衆網等の通信回線を介して配信するようにしても良い。これは、他方の自動演奏装置においても同様である。
【０１２６】
その自動演奏装置では、コピーした演奏データの内容を変更（操作）して自動演奏を行うようになっているが、その演奏データの内容を変更する機能のみをプログラムに組み込むようにしても良い。言い換えれば、演奏データの内容を変更して得られる演奏データを新たに生成する装置（演奏データ生成装置）として実現させても良い。その装置には、通常の自動演奏装置や電子楽器、或いは音源装置等の楽音生成装置に演奏データを容易に供給できる機能を搭載することが望ましい。
【０１２７】
【発明の効果】
以上、説明したように本発明（第１の態様の教示データ生成装置）は、イベントデータ中の楽音の音量を指定する音量データを参照して、それの値域を最大音量データ値と最小音量データ値の間で複数の範囲に分割することにより、演奏データ毎に、教示データを生成するうえでの基準を設定してその教示データを生成する。このため、演奏データによって異なる楽音の音量の大きさのバラツキや偏り等に適切に対応することができる。それにより、適切な教示データを生成することができる。
【０１２８】
本発明（第２の態様の教示データ生成装置）は、該演奏単位を構成する複数の楽音毎の音量を指定するベロシティ値に当該楽音の発音時間を掛けて得られる値の合計値、及び前記複数の楽音の全発音時間を夫々算出すると共に、当該合計値を全発音時間で割って得られる平均値を参照して、該演奏単位で発音させるべき楽音の音量を解析し、その解析結果に基づいて、前記演奏単位毎に楽音の強弱を指定する強弱記号の種類を示す教示データを生成する。それにより、単に楽音間の音量の差に応じて教示データを生成するようなことが回避されるため、適切な教示データを生成することができる。
【０１３０】
本発明（第２の態様の自動演奏装置）は、演奏者（ユーザ）が指定したチャネルのイベントデータ中の音量データの値を変更して自動演奏を行う。それにより、演奏者はチャネル単位で楽音の音量における抑揚をアレンジできるため、自動演奏との合奏ではより幅広い音楽表現を行うことができる。
【図面の簡単な説明】
【図１】  第１の実施の形態による教示データ生成装置、及び自動演奏装置を搭載した電子楽器の外観図である。
【図２】  第１の実施の形態による教示データ生成装置、及び自動演奏装置を搭載した電子楽器の回路構成図である。
【図３】  ＬＣＤに表示される強弱記号を説明する図である。
【図４】  チャネル間関係設定画面例を示す図である。
【図５】  教示データの生成方法を説明する図である。
【図６】  全体処理の動作フローチャートである。
【図７】  スイッチ処理の動作フローチャートである。
【図８】  自動演奏処理の動作フローチャートである。
【図９】  自動演奏処理の動作フローチャートである（続き）。
【図１０】  教示データ作成処理の動作フローチャートである。
【図１１】  教示データの生成方法を説明する図である（第２の実施の形態）。
【図１２】  自動演奏処理の動作フローチャートである（第２の実施の形態：第１の実施の形態から変更される部分の抜粋）。
【図１３】  教示データ作成処理の動作フローチャートである（第２の実施の形態）。
【符号の説明】
１０１  鍵盤
１０１ａ  鍵
１０３  ＬＣＤ
１０５  ＦＤＤ
２０１  ＣＰＵ
２０２  プログラムＲＯＭ
２０３  ワークＲＡＭ
２０４  スイッチ群
２０６  インターフェース
２０７  ＬＣＤコントローラー
２０８  ＦＤＤコントローラー
２０９  音源
２１０  波形ＲＯＭ
２１１  ＤＡコンバータ
２１２  アドレスバス
２１３  データバス
【図１】
0004178661.tif 000002
【図２】
0004178661.tif 000003
【図３】
0004178661.tif 000004
【図４】
0004178661.tif 000005
【図５】
0004178661.tif 000006
【図６】
0004178661.tif 000007
【図７】
0004178661.tif 000008
【図８】
0004178661.tif 000009
【図９】
0004178661.tif 000010
【図１０】
0004178661.tif 000011
【図１１】
0004178661.tif 000012
【図１２】
0004178661.tif 000013
【図１３】
0004178661.tif 000014