(57)【特許請求の範囲】
【請求項１】
表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御手段と、
前記音符の音高に応じて、前記音符表示領域自体を変化させることなく前記音符が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減する音高差決定手段を有する、
ことを特徴とする音符表示制御装置。
【請求項２】
前記音高差決定手段は、
演奏開始時に入力された前記音符の音高が初期設定状態における前記音符表示領域内にないときには、前記音符の音高に応じて、前記音符表示領域自体を変化させることなく前記音符が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減し、
前記演奏開始時に入力された音符の音高が前記初期設定状態における音符表示領域内にあるときには、前記音符表示領域内に表示される音高差を保持する、
ことを特徴とする請求項１に記載の音符表示制御装置。
【請求項３】
表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御手段と、
演奏中に入力された前記音符の音高が前記音符表示領域内にないときには、前記演奏中に入力された前記音符を含む、前記演奏データの所定期間内に含まれた音符群の前記音高に応じて、前記音符表示領域自体を変化させることなく前記音符群が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減する音高差決定手段、
を有することを特徴とする音符表示制御装置。
【請求項４】
前記音高差決定手段は、
演奏中に入力された前記音符の音高が前記音符表示領域を超えるときには、前記演奏中に入力された前記音符が最高音として表示されるように前記音符表示領域内に表示される音高差を増減し、
前記演奏中に入力された音符の音高が前記音符表示領域未満のときには、前記演奏中に入力された音符が最低音として表示されるように前記音符表示領域内に表示される音高差を増減する、
ことを特徴とする請求項３に記載の音符表示制御装置。
【請求項５】
演奏中に入力された前記音符の音高が前記音符表示領域内にないときには、前記演奏中に入力された前記音符を含む、前記演奏データの所定期間内に含まれた音符群の音高に応じて代表音高を計算し、該代表音高が前記音符表示領域内に表示される音高の中心となるようにする音高中心決定手段、
を有することを特徴とする請求項３または４に記載の音符表示制御装置。
【請求項６】
前記音高差決定手段は、
前記演奏中に入力された音符の音高が前記音符表示領域内にあり、かつ、前記音符群の中の最大音高差に比べて前記音符表示領域内に表示される音高差が所定値以上であるときには、前記音符群の音高に応じて、前記音符表示領域自体を変化させることなく前記音符群が前記音符表示領域内に入り得る限度内で、前記音符表示領域内に表示される音高差を小さくし、
前記演奏中に入力された音符の音高が前記音符表示領域内にあり、かつ、前記音符群の中の最大音高差に比べて前記音符表示領域内に表示される音高差が前記所定値未満であるときには、前記音符表示領域内に表示される音高差を保持する、
ことを特徴とする請求項３に記載の音符表示制御装置。
【請求項７】
表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御ステップと、
前記音符の音高に応じて、前記音符表示領域自体を変化させることなく前記音符が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減する音高差決定ステップを、
コンピュータに実行させる音符表示制御プログラム。
【請求項８】
表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御ステップと、
演奏中に入力された前記音符の音高が前記音符表示領域内にないときには、前記演奏中に入力された前記音符を含む、前記演奏データの所定期間内に含まれた音符群の前記音高に応じて、前記音符表示領域自体を変化させることなく前記音符群が前記音符表示領域内に入るように前記音符表示領域内に表示される音高差を増減する音高差決定ステップを、
コンピュータに実行させる音符表示制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、鍵盤や楽曲データ記憶装置から演奏データの提供を受け、演奏データの音符を表示器に表示させるための音符表示制御に関するものである。
【０００２】
【従来の技術】
シーケンサー・ソフトウェアが、表示器に演奏データの音符を表示させる方法として、ピアノロール表示やスタッフ表示等が使用されている。
図１０は、従来の音符表示の具体例を示す説明図である。
図１０（ａ）はピアノロール・ウインドウの画面である。アプリケーション・ウインドウ内部にこのようなウインドウ画面が表示される。
ピアノロール表示では、音符５をその音長（ゲートタイム）を表す棒線（バー）で表し、水平方向に時系列に沿って表示するとともに、その音高（ノートナンバ）順に垂直方向に配列する。１１１は演奏進行上の現時点（ソングポジション）を示すポインタ/ラインであり、演奏時間の進行ととともに右方に移動する。演奏進行上の現時点を示すポインタ/ライン１１１が右端に到達すると、次の表示期間になるように音符表示領域６が切り替わる。楽曲データを記憶装置から再生する場合を示しているので、演奏進行上の現時点を示すポインタ/ライン１１１よりも未来側においても音符５が表示されている。
図１０（ｂ）はスタッフ・ウインドウ画面である。スタッフ表示では、音符５をその音楽記号で表し、５線譜上に表示する。
【０００３】
アプリケーション・ウインドウの内部には、他のウインドウも同時表示する関係上、表示画面上に設けられた音符表示領域６の表示範囲（水平幅の長さおよび垂直幅の長さ）が小さく設定される場合がある。このような場合、音高表示範囲（表示可能な音高の上限から下限までの範囲）８の幅が限られてしまう。そのため、全ての音高、８８鍵ではＡ0（ノートナンバ21)からＣ8(ノートナンバ108)までを、表示できない。
鍵盤を弾きながら、音符を録音する場合を考える。録音した音符５をリアルタイムで表示させる場合、音高表示範囲８の位置が上過ぎたり下過ぎたりすると、録音した音符５が見えなくなるので不便であり、録音再生している音を目視で確認できない不安もあった。
【０００４】
そのため、従来は、ウィンドウ枠を設けて、垂直スクロール・バーのボタン１１２，１１３，１１４によって、音高表示範囲８をスクロールさせる。その間、音符表示領域６の表示幅は一定である。しかし、使用者が、手動調整してから録音しなければならず、面倒であった。
また、録音開始とウインドウ・オープンとをまとめて呼び出すようにする場合、録音開始直後に音高表示範囲８を調整できないために、最初に録音した音符５が見えない場合がある。そのため、録音開始前に、曲の音高を確認する作業が必要となるので、初心者は戸惑ってしまう。
上述した事情は、記憶装置から自動演奏データを再生しながら、音符５を表示させる場合も同様である。表示された音符を手本として演奏する場合には、これから弾くべき音符が見えないことになる。
また、使用者の歌声をマイクロホンで取り込み、音符化して録音しながら表示する場合、自分の歌の音高が分からない場合が多いので、思ったように音符を表示できない。
【０００５】
【発明が解決しようとする課題】
本発明は、上述した問題点を解決するためになされたもので、音符の音高が音高表示範囲を外れて音符が見えなくなる状態を回避するように音高表示範囲を自動的に決定する音符表示制御装置、および、音符表示制御プログラムを提供することを目的とするものである。
【０００６】
【課題を解決するための手段】
本発明は、請求項１に記載の発明においては、音符表示制御装置において、表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御手段と、前記音符の音高に応じて、前記音符表示領域自体を変化させることなく前記音符が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減する音高差決定手段を有するものである。
従って、予め設定された音符表示領域の表示幅が狭くても、音符が見えなくなる状態を回避できる。
音高表示範囲を変更するための具体的方法としては、第１に、平行移動（スクロール）がある。表示される音符の音高間隔を一定にして変更されるので、音符が見やすい。第２に、音高表示範囲の幅の変更がある。音符の音高分布が広すぎても対応できる。第３に、音符表示領域の表示幅の変更がある。音高分布が広すぎても対応できるが、同時表示されているウインドウ画面がある場合に、このウインドウ画面に影響を与えて、見なくなさせる場合が生じる。これらの変更方法を任意に組み合わせて音符を表示させるようにしてもよい。例えば、音高表示範囲の幅の変更と平行移動とを組み合わせて音符を表示させる。
上述した請求項１における、音符表示領域内に表示される音高差を増減するとは、音高表示範囲の幅を変更することを意味する。
また、表示期間に関しては、第１に、演奏進行上の現時点の音符のみは必ず表示できるようにしたり、第２に、演奏進行上の現時点を起点とする所定の期間の音符は必ず表示できるようにしたり、第３に、表示期間を平行移動させるときにも、表示期間の範囲内にある音符は必ず表示できるようにしたりすることができる。
【０００７】
請求項２に記載の発明においては、請求項１に記載の音符表示制御装置において、前記音高差決定手段は、演奏開始時に入力された前記音符の音高が初期設定状態における前記音符表示領域内にないときには、前記音符の音高に応じて、前記音符表示領域自体を変化させることなく前記音符が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減し、前記演奏開始時に入力された音符の音高が前記初期設定状態における音符表示領域内にあるときには、前記音符表示領域内に表示される音高差を保持するものである。
従って、演奏開始時に音符が見えない状態を回避ができる。
初期設定状態のままでも音符が見えるときには、音高表示範囲をそのまま保持するようにして変更を極力少なくしたので、音符表示が見にくくならない。
演奏開始時に入力された音符の音高は、例えば、音高表示範囲の中心に位置するようにすれば、音符表示領域が見やすくなるとともに、音高の連続性があれば、以降に入力される音符についても、音高表示範囲を保持したままで見える可能性が高くなるので、この点からも音符表示が見にくくならない。
【０００８】
請求項３に記載の発明においては、音符表示制御装置において、表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御手段と、演奏中に入力された前記音符の音高が前記音符表示領域内にないときには、前記演奏中に入力された前記音符を含む、前記演奏データの所定期間内に含まれた音符群の前記音高に応じて、前記音符表示領域自体を変化させることなく前記音符群が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減する音高差決定手段を有するものである。
従って、音符表示領域の表示幅が狭くても、この音符表示領域内に表示される音高差を増減することにより、音高差が変更されて表示される。その結果、音符が音高表示範囲を外れて音符が見えなくなる状態を回避できる。音符の音高分布が広すぎても対応できる。
【０００９】
請求項４に記載の発明においては、請求項３に記載の音符表示制御装置において、前記音高差決定手段は、演奏中に入力された前記音符の音高が前記音符表示領域を超えるときには、前記演奏中に入力された前記音符が最高音として表示されるように前記音符表示領域内に表示される音高差を増減し、前記演奏中に入力された音符の音高が前記音符表示領域未満のときには、前記演奏中に入力された音符が最低音として表示されるように前記音符表示領域内に表示される音高差を増減するものである。
従って、演奏中に入力された音符が見えない状態を確実に回避できる。
音高表示範囲を変更させるための計算に、音符の音長を用いないため、リアルタイムで演奏データを入力した場合でも、演奏中に入力された音符のノートオン時に音高表示範囲を調整できる。音高表示範囲を移動させる場合を極力少なくしたので、音符表示が見にくくならない。
【００１０】
請求項５に記載の発明においては、請求項３または４に記載の音符表示制御装置において、演奏中に入力された前記音符の音高が前記音符表示領域内にないときには、前記演奏中に入力された前記音符を含む、前記演奏データの所定期間内に含まれた音符群の音高に応じて代表音高を計算し、該代表音高が前記音符表示領域内に表示される音高の中心となるようにする音高中心決定手段を有するものである。
従って、代表音高が音高表示範囲の中心となるように制御するので、見やすい位置に音符群が表示される。
【００１１】
請求項６に記載の発明においては、請求項３に記載の音符表示制御装置において、前記音高差決定手段は、前記演奏中に入力された音符の音高が前記音符表示領域内にあり、かつ、前記音符群の中の最大音高差に比べて前記音符表示領域内に表示される音高差が所定値以上であるときには、前記音符群の音高に応じて、前記音符表示領域自体を変化させることなく前記音符群が前記音符表示領域内に入り得る限度内で、前記音符表示領域内に表示される音高差を小さくし、前記演奏中に入力された音符の音高が前記音符表示領域内にあり、かつ、前記音符群の中の最大音高差に比べて前記音符表示領域内に表示される音高差が前記所定値未満であるときには、前記音符表示領域内に表示される音高差を保持するものである。
従って、演奏中に入力された音符が表示されていても、音符群の分布に比べて音高表示範囲が広すぎる、言い換えれば、余裕のあるときには、音高表示範囲の幅を小さくするので、表示される音高の間隔が拡大されるので、音符１つ１つの身幅を確保することで見やすくなるという効果がある。
一方、音符群の分布に比べて音高表示範囲が広すぎないときには、音高表示範囲をそのまま保持して、音高表示範囲の幅を変更する場合を極力少なくしたので、音符表示が見にくくならない。
【００１２】
請求項７に記載の発明においては、コンピュータに実行させる音符表示制御プログラムにおいて、表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御ステップと、前記音符の音高に応じて、前記音符表示領域自体を変化させることなく前記音符が前記音符表示領域内に入るように、前記音符表示領域内に表示される音高差を増減する音高差決定ステップを有するものである。
従って、請求項１に記載の音符表示制御装置をコンピュータを用いて実現することができる。
【００１３】
請求項８に記載の発明においては、コンピュータに実行させる音符表示制御プログラムにおいて、表示器の音符表示領域内において、入力された演奏データに含まれた音符を、前記音符の音高およびタイミングと前記音符表示領域内に表示される音高に基づいて、前記音符の音高およびタイミングに応じた位置に表示させる音符表示位置制御ステップと、演奏中に入力された前記音符の音高が前記音符表示領域内にないときには、前記演奏中に入力された前記音符を含む、前記演奏データの所定期間内に含まれた音符群の前記音高に応じて、前記音符表示領域自体を変化させることなく前記音符群が前記音符表示領域内に入るように前記音符表示領域内に表示される音高差を増減する音高差決定ステップを有するものである。
従って、請求項３に記載の音符表示制御装置をコンピュータを用いて実現することができる。
【００１４】
【発明の実施の形態】
図１は、本発明の音符表示制御装置の実施の一形態のブロック構成および音符表示領域の説明図である。
図１（ａ）はブロック構成図であり、図中、１は音高表示範囲決定部、２は音符表示位置制御部、３は表示器である。
図１（ｂ）は音符表示領域を模式的に示す説明図である。図１０と同様な部分には同じ符号を付して説明を省略する。
音符表示制御装置は、演奏データ提供部から演奏データを入力する。
音符表示位置制御部２は、表示器３の所定の音符表示領域６内において、入力された演奏データに含まれた音符を、その音高およびタイミングと所定の音符表示領域６の音高表示範囲８に基づいて、音符の音高およびタイミングに応じた位置に「音符５」として表示させる。なお、音符表示領域６の表示幅は、水平垂直方向とも、所定値に予め設定されている。音高表示範囲決定部１は、入力された演奏データに含まれた音符の音高に応じて、前記音符が前記音高表示範囲内に入るように、前記音高表示範囲を変更、例えば、平行移動（スクロール）させる。
【００１５】
図１（ｂ）を参照して動作を説明する。図中、４は全ての音符が表示される仮想画面を表し、横軸は時間、小節、または、拍番号を示し、縦軸は音高（ノートナンバ）を示す。なお、横軸と縦軸に割り当てるものを逆にしてもよい。音符表示領域６は、この仮想画面６の一部を表示する。表示期間７は、演奏の時間進行とともに矢印９の方向に平行移動する。図１０を参照して説明したように、表示期間７が、数小節単位で切り替わるように移動するとともに、図示しない、演奏進行上の現時点を示すポインタ/ライン（図１０の１１１）が連続的に移動する場合もある。
音高表示範囲決定部１は、音符５が音符表示領域６内に表示されるように、演奏データの音符の音高、あるいは、音高および音長に基づいて、音高表示範囲８を、矢印１０，１１で示す方向に平行移動させる。移動速度が遅い場合は、音符表示領域６内の表示内容が縦（垂直）方向にスクロールされるように見え、移動が瞬間的であれば、表示内容が切り替わったように見える。
【００１６】
演奏開始時に最初に入力された音符の音高が、初期設定状態における音高表示範囲８内に存在しないときには、この音符が表示されるように音高表示範囲８を平行移動させる。演奏中は、時間の経過、演奏の進行に従って、音符毎のタイミングまたは小節などの所定のタイミングで、音高表示範囲８の位置を決定することによって、なるべく音符５が見える状態を継続させる。
上述した説明では、音高表示範囲８の幅を一定にした状態で、音高表示範囲８を縦方向に平行移動させた。これに代えて、音高表示範囲８の幅を変化させるようにしてもよい。その際、音高表示範囲８の境界の移動を伴う。
【００１７】
すなわち、演奏進行上の現時点において入力された音符の音高が音符表示領域６の音高表示範囲８内にないときには、演奏中に入力された音符を含む、演奏データの所定期間内に含まれた音符群の音高に応じて、この音符群が音高表示範囲８内に入るように音高表示範囲の幅を変更する。
また、入力された音符の音高が音高表示範囲８内にあり、かつ、音符群の中の最大音高差に比べて音高表示範囲８の幅が所定値以上であるときには、音符群の音高に応じて、音符群が音高表示範囲８内に入り得る限度内で、音高表示範囲８の幅を小さくし、入力された音符の音高が音高表示範囲８内にあり、かつ、音符群の中の最大音高差に比べて音高表示範囲８の幅が所定値未満であるときには、音高表示範囲８を保持する。
この場合、図１０に示したウインドウ画面において、音符表示領域６の表示幅（垂直方向の幅）は所定値に予め設定されていることが前提であるので、音符表示領域６の表示内容の縮小、拡大を伴う。ただし、音符５自体はそのままで、音高差の表示幅のみを拡大縮小するだけでよい。
【００１８】
上述したいずれの場合も、所定の音符表示領域６内に、演奏進行上の現時点の演奏データの音符が必ず表示できるようにすることが望ましい。この現時点を含む所定の期間の音符が必ず表示できるようにするとよい。ここで、所定期間とは、この現時点を起点とした過去の所定期間とする。
記憶装置に予め記憶されて楽曲データを読み出す場合は、演奏進行上の現時点よりも先の音符を先読みできる。したがって、所定期間をこの現時点の新規入力音高を起点とする過去の所定期間とせずに、この現時点の新規入力音高よりも先読みの期間を所定期間としたり、先読みと過去とを含む所定期間としてもよい。また、音符表示領域６は、図１０に示したように、演奏進行上の現時点のタイミングが右端に到達したときに、表示期間を切り替える場合がある。このような場合には、表示期間７の最も先行する最新の時点を起点として過去側の所定期間とすることもできる。
【００１９】
所定期間は、例えば、１小節程度とすればよい。表示期間７と一致させたり、表示期間７の設定幅に応じて、1.5小節あるいは2小節にするなど、自動調整するようにしてもよく、また、対象となる現時点の入力音符を基準にしてその直前の5個の音符までというように、音符の数で決めてもよい。
音高表示範囲８を決定するための処理は、新たに音符が入力される毎に行ってもよいが、１小節単位など、所定時間単位で行ってもよい。より具体的には、小節の最後あるいは小節線をまたいだ音符の終端（ノートオフ）、または、小節の最初の音符の始端や終端で制御を行えばよい。
また、音符表示領域６は、演奏進行上の現時点のタイミング位置とは無関係に、水平スクロールバーにあるボタンによって、表示期間７を自由に平行移動（スクロール）させることができる。記憶されている楽曲データの音符を表示さて、表示期間を移動させる場合、表示期間７を、上述した「所定期間」として、この表示期間７内の音符が音高表示範囲に入るように音高表示範囲を変更するようにしてもよい。
【００２０】
演奏データ提供部として、使用者によって実演奏される鍵盤がある。この演奏データでは、音符が入力されたタイミングそのものが、この音符のタイミングデータとなる。
演奏データ提供部として、SMF（Standard MIDI File）形式などの楽曲データが記憶されたROM（Read Only Memory）や半導体メモリカード、ハード磁気ディスク等の記憶装置がある。この場合、楽曲データは、タイミングデータを含む。さらにまた、従来技術でも説明したように、使用者の歌唱を入力して音符データに変換して入力する場合もある。
【００２１】
図２は、本発明の実施の一形態を実現するためのハードウエア構成の一例を示すブロック図である。パーソナルコンピュータにおいて、アプリケーション・プログラムをインストールして音符表示機能を実現する場合を説明する。
図中、２１はバス、２２はCPU（Central Processing Unit）、２３はROM、２４はRAM（Random Access Memory）である。２５はタイマであって、プログラムの割り込み時間や各種時間、時刻を計時する。２６はキーボードやマウス等の操作子である。２７は表示回路であって、表示器３を駆動および制御する。
２８は音源回路、２９はD/A変換器、３０はサウンドシステムである。３１は外部記憶装置であって、HDD（ハード磁気ディスクドライブ）やFDD（フレキシブル磁気ディスクドライブ）、CD-ROM（Compact Disc Read Only Memory）等の光ディスクドライブ、半導体メモリカード等である。３２はMIDI（Musical Instrument Digital Interface）インターフェースであって、外部の電子鍵盤楽器３３等に接続される。
【００２２】
演奏データは、ROM２３あるいは外部記憶装置３１から読み出されたり、外部の電子鍵盤楽器３３などから入力されて、RAM２４のワークエリアに記憶される。
３４は通信インターフェースであって、通信ネットワーク３５を介してインターネット上のサーバに接続したり、LAN（ Local Area Network）等を介してサーバに接続したりして、演奏データをリアルタイムで入力したり、楽曲データファイルを入力（ストリーミング再生あるいはダウンロード）したりする。
【００２３】
CPU２２は、オペレーティングシステム・プログラムの制御下で、外部記憶装置３１の１つであるハード磁気ディスクに記憶されたアプリケーション・プログラムをRAM２４にロードし、音符表示制御を行う。音符表示制御を行うプログラムは、単独で使用されるほか、シーケンサー・ソフトウエア・プログラム内に組み込まれて実行される。アプリケーション・プログラムは、CD-ROMを介して供給されたり、通信ネットワーク３５上のサーバからダウンロードされる。
音源回路２８は、演奏データに応じて楽音信号を生成する。楽音信号は、D/A変換器２９によりアナログ波形に変換された後、サウンドシステム３０に供給されて、スピーカから出力される。
上述した構成では音源回路２８を有している。しかし、MIDIインターフェース３２に接続された外部の音源装置を用いたり、CPU２２にソフトウエア音源の機能を持たせて音源機能を実行させてもよい。
なお、ハードウエア構成は異なるが、CPUを内蔵した電子楽器においても実現できる。パネルに設けられた表示器に音符を表示させたり、MIDIインターフェース３２等を介してパーソナルコンピュータに接続された表示器に音符を表示する
。
【００２４】
図３は、図２中のRAM２４に記憶されるプログラムやデータの説明図である。  RAM２４の記憶領域４１には、オペレーティングシステム・プログラムやアプリケーション・プログラムなどの実行プログラム等の領域のほか、プログラムの実行に必要な各種のパラメータや、処理中のデータを記憶するレジスタ領域がある。また、外部記憶装置３１から入力された楽曲Ａの演奏データ、楽曲Ｂの演奏データの他、演奏データの録音部、すなわち、外部接続された電子鍵盤楽器３３等から転送されてくるMIDIデータを格納する領域などがある。
楽曲Ａの演奏データ４２は、例えば、複数のMIDIチャンネルからなり、チャンネル別に演奏データが格納されている。各チャンネルは、例えば、デュレーションおよびノートデータからなる複数の組み合わせと初期値を有している。
デュレーションは、直前のイベントからの時間経過を表すデータである。ノートデータは、音符を表すデータであり、一例として、音符の音高を示すノートナンバ、音の強さを示すベロシティ、音符の長さを示すゲートタイムで構成される。このデュレーションおよびゲートタイムがタイミングデータである。
ノートデータは、ノートオン，ノートオフの２つのイベントデータの組み合わせて記述される場合もある。この場合、ノートオンイベントおよびノートオフイベントの各デュレーションがタイミングデータとなる。
【００２５】
以下、本発明の実施の一形態の動作をフローチャートを用いて説明する。
図４は、音符表示制御プログラムの全体動作を示すフローチャートである。
Ｓ４１において、アプリケーション・プログラムを起動して初期設定を行う。SS（スタートストップフラグ）をSS＝0としておく。
Ｓ４２においてキーボート，マウス等の操作イベントを検出して、後述するような、対応する処理を行う。既存の楽曲データ再生の場合と、鍵盤演奏録音の場合とがあるが、ここでは区別しないで説明する。
Ｓ４３において、Ｓ４２で検出された操作イベントがトラックビューウインドウをオープンさせるものであったか否かを判定し、Ｓ４４またはＳ４５に処理を進める。
Ｓ４４において、トラックビュー・ウインドウを表示する。現時点を含む表示期間における16チャンネルトラックが表示され、各トラックにはブロックを示す棒線が表示されている。その際、SS＝1のときには時間進行に従って表示画面を移動させ、SS＝０のときには停止させる。
このトラックビュー・ウインドウにおいては、マウス操作等で１つのブロックを選択する操作を検出したときに、後述するピアノロール・ウインドウあるいはスタッフ・ウインドウにおける表示チャンネルが指定される。
【００２６】
Ｓ４５においては、操作イベントがピアノロール・ウインドウをオープンさせるものであったか否かを判定し、Ｓ４６またはＳ４７に処理を進める。
Ｓ４６において、ピアノロール・ウインドウを表示する。予め選択されたチャンネルについて、演奏進行上の現時点を含む所定の期間におけるピアノロール・ウインドウが表示される。その際、SS＝1であるときには、時間進行に従って音符表示領域６が移動する。SS＝０であるときには、移動を停止させる。
Ｓ４７においては、操作イベントがスタッフ・ウインドウをオープンさせるものであったか否かを判定し、Ｓ４８またはＳ４９に処理を進める。
Ｓ４８において、スタッフ・ウインドウを表示し、Ｓ４６と同様な処理を行う。
Ｓ４９において、楽曲データに基づき、発音がオンとなるべきタイミングであるか否かを判定し、Ｓ５０またはＳ５１に処理を進める。Ｓ５０において、SS＝1であれば、楽曲データを順に音源回路２８に転送して発音させる。SS＝0であれば、転送を停止する。
【００２７】
Ｓ５１においては、Ｓ４２で検出された操作イベントがスタート・ストップ・スイッチの切り替え動作であったか否かを判定し、Ｓ５２またはＳ５３に処理を進める。
Ｓ５２においては、スタートストップの切り替えを行う。SS＝1であればSS＝0とし、SS＝0であればSS＝1とする。
Ｓ５３においては、Ｓ４２で検出された操作イベントが、アプリケーション・プログラムを終了指示するものであったか否かを判定する。そうであれば終了し、そうでなければ再びＳ４２に処理を戻す。
【００２８】
図５は、音符表示の開始動作の説明図である。
図５（ａ）は、図４におけるＳ４４あるいはＳ４６における音符表示の開始動作を説明するフローチャートである。
Ｓ４４のピアノロール・ウインドウについて説明するが、Ｓ４６のスタッフ・ウインドウにおいても同様である。表示期間の制御については省略している。
Ｓ６１において、音高表示範囲８を初期状態に設定する。Ｓ６２において、演奏データの録音あるいは再生を開始する。Ｓ６３において、演奏開始時に入力された最初の音符の音高データを取得する。
Ｓ６４において、最初の音符の音高が音高表示範囲８内にあるか否かを判定する。そうであれば最初の音符に関する処理を終了するので、音高表示範囲８の位置をそのまま保持する。そうでなければＳ６５に処理を進める。
Ｓ６５において最初の音符の音高を中心とする音高表示範囲８を計算する。Ｓ６６において音高表示範囲８を修正した音符表示領域６を作成して、最初の音符に関する処理を終了する。オペレーティングシステム・プログラムは、作成された音符表示領域６を表示器３に表示させる。
なお、上述した音符表示領域６の幅（表示幅）および音高表示範囲８の幅（音高の範囲）は変えないで、音高表示範囲８を決定している。
【００２９】
図５（ｂ），図５（ｃ）は、音符表示の開始動作を説明するための音符表示領域６を示す図である。
図５（ｂ）は初期状態における音符表示領域６を示し、図５（ｃ）は音高表示範囲８を修正した後の音符表示領域６を示す。
縦軸の数値はノートナンバを示す。説明を簡単にするために、演奏進行上の現時点を音高表示範囲の右端に固定している。
音高表示範囲８の幅を表示可能な音高の数で表すこととし、これを「スケール」と定義する。ただし、音高表示範囲８の中心に、あるノートナンバが位置し、「スケール」が偶数の時には、表示可能な音高の数が「スケール」の値よりも１つ減る。図５（ｂ），図５（ｃ）における例では、スケール＝8である。図５（ｂ）において、中心音高＝72、音高表示範囲は68.5〜75.5である。
最初の音符の音高が、例えば89であったとすると、表示不可能であるので、この音高89が音高表示範囲８の中心となるように平行移動させることにより、図５（ｃ）に示すように、音高表示範囲は85.5〜92.5となる。
【００３０】
図６は、音符表示の開始に続く２音符目以降の処理の第１の例を示す説明図である。少なくとも１つの音符は表示されている。
図６（ａ）はフローチャート、図６（ｂ）は演奏進行上の現時点において音符が入力されたときに音符表示領域６を修正しない場合の、図６（ｃ）は修正した場合の、音符表示領域６を示す説明図である。
図６（ａ）のＳ７１において、演奏進行上の現時点において入力された音符の音高データを、例えば、入力音符の発音終了時点において取得する。後述するＳ７３での代表音高の計算に、音長を用いる場合は、音長データも取得する。
Ｓ７２において、入力音符の音高が音高表示範囲８内にあるか否かを判定する。そうであれば、この入力音符に関する処理を終了するので、音高表示範囲８の位置をそのまま保持する。そうでなければＳ７３に処理を進める。
【００３１】
Ｓ７３において、上述した入力音符の音高を含む「過去の所定期間」内にある音符群の音高に基づいて、「代表音高」を計算する。
「過去の所定期間」の起点は、演奏進行上の現時点とする。「代表音高」は、後述するように、この過去の所定期間内にある音符群に対する統計的に中心となる音高である。
Ｓ７４において代表音高を中心とする音高表示範囲８を計算する。
Ｓ７５において音高表示範囲８を修正した音符表示領域６を作成して、この新規入力音符に関する処理を終了する。音符表示領域６の幅（表示幅）および音高表示範囲８の幅（音高の範囲）は変えないので、音高表示範囲８は平行移動される。
【００３２】
図６（ｂ）は演奏進行上の現時点において音符が入力されたときに、音符表示領域６を修正しない場合の、図６（ｃ）は音符表示領域６を修正した場合の、音符表示領域６を示す説明図である。
図６（ｂ）において、音高表示範囲８が仮に71〜78である状態において、所定期間内に音符Ａ，Ｂ，Ｃ，Ｄがあり、音符Ｅが入力される場合を示している。
各音符の長さをTickで表現する。4分音符は480Tickに相当する。
音符Ａは、音高が78の付点四分音符であるが、所定期間内にある長さは240Tickである。音符Ｂは音高が76の８分音符であるので240Tickである。音符Ｃは音高が77の８分音符であるので240Tickである。音符Ｄは音高が74の付点八分音符であるので360Tickである。音符Ｅは音高が80の付点八分音符であるので360Tickである。
【００３３】
上述した代表音高の決め方は種々の方法がある。ここでは２例を説明する。
手法Ａでは、所定期間内の音符群の各音高を、各音符の長さ（ゲートタイム）で重み付けをした平均値を代表音高とする。計算過程を示すと次式のようになる。
0003843858.tif 000002
従って、図６（ｃ）に示すように、表示可能範囲は、73.5〜80.5となる。
【００３４】
この手法Ａでは、所定期間内の音符群の音長に基づいて音高を重み付けしていることから、曲の流れの中でより重要な音符（音長が長い）が優先的に表示されることになり、曲の流れをつかみやすい。ただし、演奏進行上の現時点で入力された音符であっても、その音長が短ければ表示できない場合がある。
手法Ｂでは、過去の所定期間内の音符群を検索し、最高音高と最低音高の中間音高を代表音高とする。
図示の例では、最低音高が74、最高音高が80であるので、
中間音高＝（74＋80）÷2＝77となる。
この手法Ｂでは計算が非常に簡単である。ただし、演奏進行上の現時点で入力された音符であっても、その音高が代表音高から離れすぎていれば表示できない場合がある。
【００３５】
図７は、２音符目以降の処理の第２の例の説明図である。
図７（ａ）はフローチャート、図７（ｂ）は演奏進行上の現時点において音符が入力されたときに、音符表示領域６を修正しない場合の、図７（ｃ）は音符表示領域６を修正した場合の、音符表示領域６を示す説明図である。
Ｓ８１において、演奏進行上の現時点において入力された音符の音高データを、例えば、入力音符の発音終了時点において取得する。
Ｓ８２において、新規入力音符の音高が音高表示範囲８内にあるか否かを判定する。そうであればこの新規入力音符に関する処理を終了し、そうでなければＳ８３に処理を進める。
Ｓ８３においては、入力音符を含む過去の所定期間内にある音符群の音高に基づいて、新規入力音符は必ず表示されるように、新規入力音符の音高を最高音高または最低音高とするような音高表示範囲８を計算する。
すなわち、演奏中における新規の音符の音高が、音高表示範囲８を超えるときには、新規の音符が最高音高の音符として表示されるように音高表示範囲８の位置を平行移動させ、音高表示範囲未満のときには、新規の音符が最低音高の音符として表示されるように音高表示範囲８を平行移動させる。音符表示領域６の表示幅および音高表示範囲８の幅は変えない。
Ｓ８４において、音高表示範囲８を修正した音符表示領域６を作成して、この新規入力音符に関する処理を終了する。
【００３６】
図７（ｂ）において、音高表示範囲が仮に72〜79である状態において、所定期間内に音符Ａ〜Ｈがあり、新規に音符Ｉが入力された場合を示している。
新規入力された音符Iの音高は80であるので、音高表示範囲８を超えている。
したがって、音符Ｉの音高が最高音高の音符として表示されるように、図７（ｃ）に示されたように、音高表示範囲８を平行移動させて、例えば、音高表示範囲を73〜80にする。
【００３７】
図８は、２音符目以降の処理の第３の例のフローチャートである。
Ｓ９１において、演奏進行上の現時点において入力された音符の音高データを、例えば、入力音符の発音終了時点において取得する。後述するＳ１０３における代表音高の計算に、音長を用いる場合は、これも取得する。
Ｓ９２において、入力音符の音高が音高表示範囲８内にあるか否かを判定する。そうであればＳ９３に、そうでなければＳ９４に処理を進める。
Ｓ９４において、入力音符を含む、過去の所定期間内にある音符群の中で最高音高と最低音高とを検索する。
Ｓ９５において、最高音高と最低音高との差である最大音高差を計算する。
【００３８】
Ｓ９６において、この最高音高から最低音高までを表示できるように音高表示範囲の幅を変更する。ただし、音符表示領域６の表示幅は変えない。
その際、音高表示範囲の中心は、入力音符を含む演奏データの過去の所定期間内にある音符群に基づいて、既に図６を参照して説明したような、手法Ａまたは手法Ｂ等の代表音高になるように制御する。手法Ａの場合は、所定期間内の音符群の各音高を、各音符の長さで重み付けした平均値とする。手法Ｂの場合は、所定期間内の音符群の中の最高音高と最低音高との中間値とする。
Ｓ９７において、音高表示範囲を修正した音符表示領域６を作成して、この新規入力音符に関する処理を終了する。オペレーティングシステム・プログラムは、作成された音符表示領域６を表示器３に表示させる。
【００３９】
一方、Ｓ９２において、入力音符の音高が音高表示範囲８内にあるときに進められるＳ９３，Ｓ９８においては、Ｓ９４，Ｓ９５と同様の処理がなされる。
Ｓ９９において、最大音高差に比べて［音高表示範囲の幅］の［最大音高差」に対する比率を計算する。
Ｓ１００において、この比率が、所定値、例えば２倍以上であるか否かを判定する。２倍以上であればＳ１０１に処理を進め、そうでなければ、この新規入力音符に対する処理を終了し、音高表示範囲を保持する。
ここで、２倍以上であるということは、音高表示範囲８の幅の半分にしか音符群が分布していないことを意味する。そこで、表示される音高間の幅が拡大表示されるようにして音符を見やすくする。
【００４０】
Ｓ１０１において、音高表示範囲８の幅を、所定値、例えば２５％小さくする。ただし、音符群が音高表示範囲内に入り得る限度内で、音高表示範囲の幅を小さくする。音符表示領域６の表示幅は変えない。
Ｓ１０２において、新規入力音符の音高を含む過去の所定期間内の音高に基づいて、図６を参照して説明した代表音高を計算する。
Ｓ１０３においては、代表音高を中心とする音高表示範囲８を計算する。
Ｓ１０４においては音高表示範囲８を修正した表示画面を作成して、この新規入力音符に関する処理を終了する。オペレーティングシステム・プログラムは、作成された音符表示領域６を表示器３に表示させる。
なお、上述したＳ９５，Ｓ９６、あるいは、Ｓ９８〜Ｓ１０２においては、音高表示範囲の幅を先に設定してから代表音高が音高表示範囲８の中心になるように制御している。これに代えて、代表音高を先に計算し、この代表音高が音高表示範囲８の中心になるようにして、新規入力音符を含む、過去の所定期間内の最高音高から最低音高までが表示されるように、音高表示範囲の幅を制御するようにしてもよい。
【００４１】
図９は、図８に示した、音符表示の開始動作に続く２音符目以降の音符表示動作の第３の例の説明図である。
図９（ａ）は演奏進行上の現時点における音符が入力されたときに、音符表示領域６を修正しない場合の、図９（ｂ）は修正した場合の、音符表示領域６を示す。
図９（ｃ）は演奏進行上の現時点における音符が入力されたときに、音符表示領域６を修正しない場合の、図９（ｄ）は修正した場合の、音符表示領域６を他の例を示す。
図９（ａ）の例では、音高表示範囲が仮に72〜79（スケール8）である状態において、所定期間内に音符Ａ，Ｂ，Ｃがあり、新規に音符Ｄが入力された場合を示している。
音符Ａは音高が79、音符Ｂは音高が76、音符Ｃは音高が72である。新規入力音符Ｄの音高が81であるので、音高表示範囲８を超えている。
従って、図８のＳ９７において、音符Ｄの音高を最高音高、音符Ｃの音高を最低音高とする、修正された音高表示範囲72〜81の音符表示領域６が作成される。音高表示範囲８の幅は拡大されて、スケール10となる。
【００４２】
一方、図９（ｃ）の例では、音高表示範囲が仮に73〜80（スケール8）である状態において、所定期間内に音符Ｂ，Ｃ，Ｄがあり、新規に音符Ｅが入力された場合を示している。
音符Ｂは音高が76、音符Ｃは音高が74、音符Ｄは音高が76である。新規入力音符Ｅの音高が74であるので、Ｓ９２からＳ９３に進み、Ｓ９８において最大音高差＝2が計算される。音高表示範囲８のスケール＝8であるので、Ｓ９９において比率＝4が計算されるので、Ｓ１０１において、音高表示範囲８をスケール＝6とする。
代表音高は、手法Ａ、手法Ｂともに、75となる。従って、音高表示範囲は72.5〜77.5となる。
音高表示範囲８の幅は、原則として、上述したＳ９６において拡大され、Ｓ１０１において縮小され、演奏の進行とともに、拡大と縮小とを任意に繰り返す。しかし、Ｓ１００における比率の閾値とＳ１０１における縮小率との関係で、Ｓ９６において縮小される場合もある。
【００４３】
図５ないし図９を参照した動作説明では、演奏進行上の現時点において、入力音符の終端（ノートオフ）が入力されたときに、その音高、または音高および音長を取得して計算を行い、音高表示範囲８の制御を行った。これに対し手法Ｂのように、音長を考慮しない代表音高を用いる場合は、新規入力音符の始端（ノートオン）で、音高表示範囲８を決定することができる。
上述した説明では、音高表示領域６の表示幅（垂直方向）は所定値に予め設定されて、変化させないことを前提にしていた。しかし、この表示幅を変更することにより、見えない音符を見えるようにしてもよい。
すなわち、演奏中に入力された音符の音高が音符表示領域の音高表示範囲内にないときには、演奏中に入力された音符を含む、演奏データの所定期間内に含まれた音符群の音高に応じて、音符群が音高表示範囲内に入るように音符表示領域の音高方向の表示幅を変更する。演奏中に入力された音符の音高が音高表示範囲内にあり、かつ、音符群の中の最大音高差に比べて音高表示範囲の幅が所定値以上であるときには、音符群の音高に応じて、音符群が前記音高表示範囲内に入り得る限度内で、音符表示領域の音高方向の表示幅を小さくすればよい。
本発明は、上述したピアノロール・ウインドウやスタッフ・ウインドウに限らず、一方の座標軸に時間に相当する情報、もう一方の座標軸に音高に相当する情報を表示する、任意の音符表示領域の音符表示制御に適用できる。音符の表示を、例えば、音名あるいは階名によって、絵柄や色が異なる表示にしてもよい。
上述した説明では、パーソナルコンピュータや電子楽器で実現する場合について説明したが、カラオケ装置、ゲーム装置、携帯電話端末等に備えられた表示器に音符を表示させる場合についても同様に適用できる。
【００４４】
【発明の効果】
本発明は、上述した説明から明らかなように、入力された音符の音高を考慮して音高表示範囲を決定するため、入力された音符や、入力された音符を含む所定期間内の音符を、できるだけ見えるようにしたり、常に見えるようにしたりすることができるという効果がある。
【図面の簡単な説明】
【図１】  本発明の実施の一形態のブロック構成図および音符表示領域の説明図である。
【図２】  本発明の実施の一形態を実現するためのハードウエア構成の一例を示すブロック図である。
【図３】  図２中のRAMに記憶されるプログラムやデータの説明図である。
【図４】  音符表示制御装置の全体動作を示すフローチャートである。
【図５】  音符表示の開始動作の説明図である。
【図６】  ２音符目以降の処理の第１の例の説明図である。
【図７】  ２音符目以降の処理の第２の例の説明図である。
【図８】  ２音符目以降の処理の第３の例のフローチャートである。
【図９】  図８に示した第３の例を説明するための説明図である。
【図１０】  従来の音符の可視表示の具体例を示す説明図である。
【符号の説明】
１…音高表示範囲決定部、２…音符表示位置制御部、３…表示器、４…仮想画面、５…音符、６…音符表示領域、７…表示期間、８…音高表示範囲
【図１】
0003843858.tif 000003
【図２】
0003843858.tif 000004
【図３】
0003843858.tif 000005
【図４】
0003843858.tif 000006
【図５】
0003843858.tif 000007
【図６】
0003843858.tif 000008
【図７】
0003843858.tif 000009
【図８】
0003843858.tif 000010
【図９】
0003843858.tif 000011
【図１０】
0003843858.tif 000012