米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 楽器;音響 -> カシオ計算機株式会社

発明の名称 楽譜表示装置および楽譜表示プログラム
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−147763(P2007−147763A)
公開日 平成19年6月14日(2007.6.14)
出願番号 特願2005−339218(P2005−339218)
出願日 平成17年11月24日(2005.11.24)
代理人 【識別番号】100096699
【弁理士】
【氏名又は名称】鹿嶋 英實
発明者 南高 純一
要約 課題
連桁する音符を見易く表示できる楽譜表示装置を実現する。

解決手段
曲を構成する各音を表す曲データから連桁する音列(連桁グループ)を探し出し、この連桁する音列において隣り合う音同士の音高差の正負に応じてインクリメント又はデクリメントされる連桁傾き補正値iSlopeAdjを生成する。そして、これを連桁する音列における連桁開始音と連桁終了音との音高差に乗算して得た値が「0」以下の場合に、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値iSlopeAdjにて補正する。これにより、自然な傾きの連桁になる為、連桁する音符を見易く表示できる。
特許請求の範囲
【請求項1】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから連桁する音列を検出する連桁検出手段と、
前記連桁検出手段が検出した連桁する音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生手段と、
前記連桁検出手段が検出した連桁する音列の先頭音と後端音との音高差に応じた傾きを、前記補正値発生手段により生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定手段と
を具備することを特徴とする楽譜表示装置。
【請求項2】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから段交叉する音を含む小節を検出する段交叉検出手段と、
前記段交叉検出手段が検出した段交叉する音を含む小節に対向する段の小節に含まれる音符の符幹の向きを変更する変更手段と
を具備することを特徴とする楽譜表示装置。
【請求項3】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから連桁する和音列を検出する連桁検出手段と、
前記連桁検出手段が検出した連桁する和音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生手段と、
前記連桁検出手段が検出した連桁する和音列の内、先頭の和音の最低音と後端の和音の最低音との音高差に応じた第1の傾きと、先頭の和音の最高音と後端の和音の最高音との音高差に応じた第2の傾きを算出する傾き算出手段と、
前記傾き算出手段により算出される第1および第2の傾きを平均し、平均した傾きを前記補正値発生手段により生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定手段と
を具備することを特徴とする楽譜表示装置。
【請求項4】
前記補正値発生手段は、ユーザ設定される重み係数に応じて傾き補正値を調節する調節手段を具備することを特徴とする請求項1又は請求項3のいずれかに記載の楽譜表示装置。
【請求項5】
曲を構成する各音を表す曲データから連桁する音列を検出する連桁検出処理と、
前記連桁検出処理が検出した連桁する音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生処理と、
前記連桁検出処理が検出した連桁する音列の先頭音と後端音との音高差に応じた傾きを、前記補正値発生処理にて生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項6】
曲を構成する各音を表す曲データから段交叉する音を含む小節を検出する段交叉検出処理と、
前記段交叉検出処理が検出した段交叉する音を含む小節に対向する段の小節に含まれる音符の符幹の向きを変更する変更処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項7】
曲を構成する各音を表す曲データから連桁する和音列を検出する連桁検出処理と、
前記連桁検出処理が検出した連桁する和音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生処理と、
前記連桁検出処理が検出した連桁する和音列の内、先頭の和音の最低音と後端の和音の最低音との音高差に応じた第1の傾きと、先頭の和音の最高音と後端の和音の最高音との音高差に応じた第2の傾きを算出する傾き算出処理と、
前記傾き算出処理により算出される第1および第2の傾きを平均し、平均した傾きを前記補正値発生処理にて生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項8】
前記補正値発生処理は、ユーザ設定される重み係数に応じて傾き補正値を調節する調節処理を具備することを特徴とする請求項5又は請求項7のいずれかに記載の楽譜表示プログラム。
発明の詳細な説明
【技術分野】
【0001】
本発明は、連桁する音符を見易く表示する楽譜表示装置および楽譜表示プログラムに関する。
【背景技術】
【0002】
曲を構成する各音を表す曲データを楽譜化して表示する楽譜表示装置が知られている。例えば、特許文献1には、連桁(ビーム)で繋ぐ音の両端の音の符頭表示位置の差を検出し、検出した符頭表示位置の差(音高差)が所定値より小さければ、連桁の傾きを水平に設定し、一方、符頭表示位置の差(音高差)が所定値より大きければ、連桁の傾きを所定に傾きに設定することによって、連桁で繋ぐ両端の音の音程が小さい場合や音程が極端に大きい場合でも演奏者が見易いように連桁を表示する楽譜表示方法が開示されている。
【0003】
【特許文献1】特開平10−74082号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記特許文献1に開示の楽譜表示方法では、連桁で繋ぐ音の両端の音の音高差で連桁の傾きを設定している。したがって、3つ以上の音を連桁で繋ぐ場合には、連桁される一連の音のうち両端以外の音の音高が考慮されない為、その両端以外の音の音高によっては、連桁の傾きと連桁される一連の音の符頭表示位置とが調和せず見た目のバランスが悪くなるという問題が生じる。
【0005】
また、上記特許文献1に開示の楽譜表示方法では、連桁で繋ぐ音が和音である場合には和音構成音中の最高音のみを用いて連桁の傾きを設定している。ところが、和音の最高音と最低音との音高差は必ずしも一定ではない為、この場合もやはり連桁の傾きと連桁される和音構成音の符頭表示位置とが調和せずバランスの悪い傾きの連桁になってしまう。
【0006】
さらに、上記特許文献1に開示の楽譜表示方法では、例えばト音記号の段に表示される音符とヘ音記号の段に表示される音符とを繋ぐ所謂段交叉の連桁を表示できない上、ユーザ好みに応じて連桁の表示形態を調整することができない、という問題もある。
【0007】
そこで本発明は、このような事情に鑑みてなされたもので、連桁する音符を見易く表示出来、しかも段交叉の連桁を表示したり、ユーザ好みに応じて連桁の表示形態を調整することができる楽譜表示装置および楽譜表示プログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
上記目的を達成するため、請求項1に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから連桁する音列を検出する連桁検出手段と、前記連桁検出手段が検出した連桁する音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生手段と、前記連桁検出手段が検出した連桁する音列の先頭音と後端音との音高差に応じた傾きを、前記補正値発生手段により生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定手段とを具備することを特徴とする。
【0009】
請求項2に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから段交叉する音を含む小節を検出する段交叉検出手段と、前記段交叉検出手段が検出した段交叉する音を含む小節に対向する段の小節に含まれる音符の符幹の向きを変更する変更手段とを具備することを特徴とする。
【0010】
請求項3に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから連桁する和音列を検出する連桁検出手段と、前記連桁検出手段が検出した連桁する和音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生手段と、前記連桁検出手段が検出した連桁する和音列の内、先頭の和音の最低音と後端の和音の最低音との音高差に応じた第1の傾きと、先頭の和音の最高音と後端の和音の最高音との音高差に応じた第2の傾きを算出する傾き算出手段と、前記傾き算出手段により算出される第1および第2の傾きを平均し、平均した傾きを前記補正値発生手段により生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定手段とを具備することを特徴とする。
【0011】
請求項1又は請求項3のいずれかに従属する請求項4に記載の発明では、前記補正値発生手段は、ユーザ設定される重み係数に応じて傾き補正値を調節する調節手段を具備することを特徴とする。
【0012】
請求項5に記載の発明では、曲を構成する各音を表す曲データから連桁する音列を検出する連桁検出処理と、前記連桁検出処理が検出した連桁する音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生処理と、前記連桁検出処理が検出した連桁する音列の先頭音と後端音との音高差に応じた傾きを、前記補正値発生処理にて生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定処理とをコンピュータで実行させることを特徴とする。
【0013】
請求項6に記載の発明では、曲を構成する各音を表す曲データから段交叉する音を含む小節を検出する段交叉検出処理と、前記段交叉検出処理が検出した段交叉する音を含む小節に対向する段の小節に含まれる音符の符幹の向きを変更する変更処理とをコンピュータで実行させることを特徴とする。
【0014】
請求項7に記載の発明では、曲を構成する各音を表す曲データから連桁する和音列を検出する連桁検出処理と、前記連桁検出処理が検出した連桁する和音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する補正値発生処理と、前記連桁検出処理が検出した連桁する和音列の内、先頭の和音の最低音と後端の和音の最低音との音高差に応じた第1の傾きと、先頭の和音の最高音と後端の和音の最高音との音高差に応じた第2の傾きを算出する傾き算出処理と、前記傾き算出処理により算出される第1および第2の傾きを平均し、平均した傾きを前記補正値発生処理にて生成される傾き補正値にて補正して連桁傾きを決定する連桁傾き決定処理とをコンピュータで実行させることを特徴とする。
【0015】
請求項5又は請求項7のいずれかに従属する請求項8に記載の発明では、前記補正値発生処理は、ユーザ設定される重み係数に応じて傾き補正値を調節する調節処理を具備することを特徴とする記載の楽譜表示プログラム。
【発明の効果】
【0016】
請求項1、5に記載の発明によれば、曲を構成する各音を表す曲データから連桁する音列を検出し、検出した連桁する音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する。そして、検出した連桁する音列の先頭音と後端音との音高差に応じた傾きを、上記傾き補正値にて補正して連桁傾きを決定するので、連桁する音符を見易く表示することができる。
【0017】
請求項2、6に記載の発明によれば、曲を構成する各音を表す曲データから段交叉する音を含む小節を検出し、検出した段交叉する音を含む小節に対向する段の小節に含まれる音符の符幹の向きを変更するので、段交叉の連桁を表示することができる。
【0018】
請求項3、7に記載の発明によれば、曲を構成する各音を表す曲データから連桁する和音列を検出し、検出した連桁する和音列において隣り合う音同士の音高差の正負に応じて増減される傾き補正値を発生する。そして、検出した連桁する和音列の内、先頭の和音の最低音と後端の和音の最低音との音高差に応じた第1の傾きと、先頭の和音の最高音と後端の和音の最高音との音高差に応じた第2の傾きを算出すると共に、これら第1および第2の傾きを平均し、平均した傾きを上記傾き補正値にて補正して連桁傾きを決定するので、連桁する音符を見易く表示することができる。
【0019】
請求項4、8に記載の発明によれば、ユーザ設定される重み係数に応じて傾き補正値を調節するので、ユーザ好みに応じて連桁の表示形態を調整することができる。
【発明を実施するための最良の形態】
【0020】
以下、図面を参照して本発明の実施の形態について説明する。
A.構成
図1は、本発明の実施の一形態による楽譜表示装置の構成を示すブロック図である。この図において、操作部10は、電源スイッチの他、キー入力用のキーボードやマウス等の入力操作子を備え、入力操作に対応したイベントを発生する。このイベントはCPU11に取り込まれる。CPU11は、ROM12に記憶される各種制御プログラムを実行し、操作部10が発生するイベントに対応して装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。
【0021】
ROM12は、プログラムエリアおよびデータエリアを備える。ROM12のプログラムエリアには、CPU11にロードされる各種制御プログラムが記憶される。各種制御プログラムとは、後述するメインルーチン、楽譜情報生成処理、個別情報生成処理、和音処理、連桁グループ処理、連桁処理、段交叉連桁処理および楽譜表示処理を含む。ROM12のデータエリアには、音符や休符、譜表などを表示するための楽譜表示データやGUI画面を形成する各種画面データが記憶される。
【0022】
RAM13は、ワークエリア、曲データエリアおよび音符データエリアを備える。RAM13のワークエリアには、CPU11の処理に用いられる各種レジスタ/フラグデータが一時記憶される。RAM13の曲データエリアには複数曲分の曲データが格納される。曲データは、演奏用の演奏データおよび表示用の楽譜データから構成される。演奏データは、図2に図示するように、演奏パートに対応する複数の演奏トラック[0]〜[N]から構成される。1つの演奏トラックは、対応する演奏パートを形成する各音を表す演奏用ノートデータ[0]〜[N]を有する。1つの演奏用ノートデータは、演奏開始時点からの経過時間(絶対時間)で表される発音開始時刻ITime、音長lGateおよび音高Pitchから構成される。
【0023】
RAM13の音符データエリアには、後述する楽譜情報生成処理によって上述の演奏用ノートデータ[0]〜[N]から派生され、楽譜表示用の音符データ[0]〜[N]が格納される。演奏用ノートデータ[0]〜[N]に対応して生成される音符データ[0]〜[N]は、図3に図示するように、ポインタmEvent、発音開始時刻ITime、小節番号sMeas、拍番号sBeat、座標(ix,iy)、ノートタイプcNoteType、コードcChord、連桁パターン始点cRenKouS、連桁パターン終点cRenKouE、タイcTieおよび段交叉フラグcDanCrossから構成される。
【0024】
ポインタmEventは、対応する演奏用ノートデータを指定する。発音開始時刻ITimeは、音符データの発音タイミングを演奏開始時点からの経過時間で表す。小節番号sMeasは、音符データが含まれる小節の番号を表す。拍番号sBeatは、音符データの拍番号を表す。座標(ix,iy)は、背景画像となる五線譜上における音符データの表示位置を表す。ノートタイプcNoteTypeは、音符の種類を表す。例えば、「1」の場合には全音符、「2」の場合には2分音符、「4」の場合には4分音符を表す。
【0025】
コードcChordは、「0」の場合に非和音を、「1」の場合に和音開始音を、「2」の場合に和音開始音および和音終了音以外の和音構成音を意味する和音途中音を、「3」の場合に和音終了音を表す。連桁パターン始点cRenkouSは、選択された連桁パターン(後述する)の始点を表す。連桁パターン終点RenkouEは、選択された連桁パターンの終点を表す。フラグcTieは、タイ記号を付与するか否かを表す。段交叉フラグDanCrossは、段交叉の有無を表すフラグである。
【0026】
図1において、音源14は、周知の波形メモリ読み出し方式で構成され、RAM13の曲データエリアからCPU11が読み出す曲データを、指定テンポに同期して再生して楽音信号を出力する。サウンドシステム15は、音源14から出力される楽音信号をD/A変換した後に増幅してスピーカSPから発音する。表示部16は、CPU11から供給される表示制御信号に応じて楽譜表示したり、装置の動作状態を表示する。インタフェース(I/F)部17は、CPU11の制御の下に外部MIDI機器とMIDI形式の曲データを授受するMIDIインタフェースを備える。なお、図1には図示していないが、インタフェース(I/F)部17のMIDIインタフェースに、外部MIDI機器としてキーボード装置が接続される場合、当該キーボード装置の押離鍵操作に対応して生じる曲データは、MIDIインタフェースを介してRAM13の曲データエリアに格納されるようになっている。
【0027】
B.動作
次に、図4〜図16を参照して上記構成による実施形態の動作について説明する。以下では、先ず最初に全体動作としてメインルーチンの動作を説明した後、続いてメインルーチンからコールされる楽譜情報生成処理および楽譜表示処理の各動作並びに楽譜情報生成処理を構成する個別情報生成処理、和音処理、連桁グループ処理、連桁処理および段交叉連桁処理の各動作を説明する。
【0028】
(1)メインルーチンの動作
装置電源の投入に応じて、CPU11は図4に図示するメインルーチンを実行してステップSA1に処理を進め、RAM13のワークエリアに設けられる各種レジスタ/フラグ類をリセットしたり、初期値セットする初期化を実行する。この後、ステップSA2に進み、ユーザによるキー操作入力待ち状態となる。そして、ステップSA3〜SA5では、キー操作入力待ち状態下で「曲選択」、「設定」および「再生」の実行を指示するキー操作入力の有無を判断する。
【0029】
「曲選択」を指示するキー操作入力、すなわちRAM13の曲データエリアに記憶される複数曲の曲データのいずれかを選択すると、ステップSA3の判断結果が「YES」になり、ステップSA6を介して楽譜情報生成処理(後述する)を実行した後、ステップSA9を介して楽譜表示処理(後述する)を実行する。そして、上述のステップSA2に処理を戻してキー操作入力待ちの状態に復帰する。
【0030】
「設定」を指示するキー操作入力が行われた場合には、ステップSA4の判断結果が「YES」になり、ステップSA7を介して設定処理を実行する。設定処理では、曲選択された曲データを楽譜として表示するための小節情報を設定する。小節情報とは、例えば音部記号や拍子記号、調記号を指定する他、曲選択された曲データの各小節位置および各段位置を指定する情報である。こうした設定処理を実行した後は、ステップSA9を介して楽譜表示処理(後述する)を実行してから上述のステップSA2に処理を戻し、キー操作入力待ちの状態に復帰する。
【0031】
「再生」を指示するキー操作入力が行われた場合には、ステップSA5の判断結果が「YES」になり、ステップSA8に進む。ステップSA8では、上記ステップSA3にて選択された曲データを再生する再生処理を実行する。この後、ステップSA9を介して楽譜表示処理(後述する)を実行してから上述のステップSA2に処理を戻してキー操作入力待ち状態に復帰する。
【0032】
(2)楽譜情報生成処理の動作
次に、図5を参照して楽譜情報生成処理の動作を説明する。上述したメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11はステップSB1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の演奏用ノートデータ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、演奏用ノートデータ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSB2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
【0033】
続いて、ステップSB3〜SB7では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの演奏用ノートデータについて「個別情報生成処理(ステップSB4)」および「和音処理(ステップSB5)」、「連桁グループ処理(ステップSB6)」を施す。そして、全ての演奏トラックについて処理を終え、ステップSB7において歩進されるトラックポインタTrptrの値がendになると、ステップSB3の判断結果が「YES」になり、ステップSB8に進む。
【0034】
ステップSB8では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。次いで、ステップSB9〜SB11では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの演奏用ノートデータについて「段交叉連桁処理(ステップSB10)」を施す。そして、全ての演奏トラックについて「段交叉連桁処理(ステップSB10)」を行い、ステップSB11で歩進されるトラックポインタTrptrの値がendになると、ステップSB9の判断結果が「YES」になり、本処理を完了させる。
【0035】
(3)個別情報生成処理の動作
次に、図6を参照して個別情報生成処理の動作を説明する。上述した楽譜情報生成処理のステップSB4(図5参照)を介して本処理が実行されると、CPU11は図6に図示するステップSC1に処理を進め、演奏用ノートデータ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSC2では、ノートポインタnptrで指定される演奏用ノートデータ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSC3に進む。
【0036】
ステップSC3では、ノートポインタnptrで現在指定される演奏用ノートデータ[nptr]中の発音開始時刻ITimeに音長lGateを加算した時刻と、次の演奏用ノートデータ[nptr+1]中の発音開始時刻ITimeとの時間差から休符が必要か否かを判断する。休符が必要ならば、判断結果は「YES」になり、ステップSC4に進み、上記ステップSC3で得た時間差に対応する休符を決定し、続くステップSC5では、決定した休符を表示する小節内での表示位置を決めた後、ステップSC6に進む。
【0037】
一方、休符が不必要な場合には、上記ステップSC3の判断結果が「NO」になり、ステップSC6に進む。ステップSC6では、ノートポインタnptrで現在指定される演奏用ノートデータ[nptr]中の音長lGateに対応するノートタイプcNoteType(音符種類)を決定する。ステップSC7では、その決定したノートタイプcNoteType(音符種類)を表示する小節内での表示位置を決定する。そして、ステップSC8では、例えば次の音符とタイで繋ぐ等の、その他の付帯情報を設定する。次いで、ステップSC9では、ノートポインタnptrを歩進させた後、上記ステップSC2に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、上記ステップSC2〜SC9を繰り返し、ノートポインタnptrが曲終端endに達すると、ステップSC2の判断結果が「YES」になり、本処理を終える。
【0038】
(4)和音処理の動作
次に、図7を参照して和音処理の動作を説明する。上述した楽譜情報生成処理のステップSB5(図5参照)を介して本処理が実行されると、CPU11は図7に図示するステップSD1に処理を進め、演奏用ノートデータ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSD2では、和音検出の有無を表すフラグInChordに「0」をセットして未検出状態を表す。次いで、ステップSD3では、ノートポインタnptrで指定される演奏用ノートデータ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSD4に進む。
【0039】
ステップSD4では、ノートポインタnptrで現在指定される演奏用ノートデータ[nptr]中の発音開始時刻ITimeと、次の演奏用ノートデータ[nptr+1]中の発音開始時刻ITimeとが同一であるか否かを判断する。以下、次の音の発音時刻と同一の場合と、そうでない場合とに分けて動作説明を進める。
【0040】
<次の音の発音時刻と同一の場合>
次の音の発音時刻と同一であると、ステップSD4の判断結果が「YES」になり、ステップSD5に進む。ステップSD5では、上述したフラグInChordが「0」、つまり和音未検出状態であるか否かを判断する。和音未検出状態であると、判断結果は「YES」になり、ステップSD7に進み、ノートポインタnptrで指定される演奏用ノートデータ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音開始音を表す値「1」をストアする。次いで、ステップSD8では、和音の検出に伴い、フラグInChordに「1」をセットする。そして、ステップSD9に進み、ノートポインタnptrをインクリメントして歩進させた後、上述のステップSD3に処理を戻す。
【0041】
一方、すでに和音を検出した状態であると、上記ステップSD5の判断結果は「NO」になり、ステップSD6に進む。ステップSD6では、ノートポインタnptrで指定される演奏用ノートデータ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音途中音を表す値「2」をストアする。そして、ステップSD8に進み、フラグInChordに「1」をセットした後、ステップSD9においてノートポインタnptrを歩進させてから上述のステップSD3に処理を戻す。
【0042】
<次の音の発音時刻と同一でない場合>
次の音の発音時刻と同一でなければ、前述したステップSD4の判断結果は「NO」になり、ステップSD10に進む。ステップSD10では、フラグInChordが「1」、つまり和音検出状態であるか否かを判断する。和音検出状態であると、判断結果が「YES」になり、ステップSD11に進み、ノートポインタnptrで指定される演奏用ノートデータ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音終了音を表す値「3」をストアする。そして、ステップSD13に進み、フラグInChordをゼロリセットし、続くステップSD9において、ノートポインタnptrをインクリメントして歩進させてから上述のステップSD3に処理を戻す。
【0043】
一方、和音未検出状態であれば、上記ステップSD10の判断結果が「NO」になり、ステップSD12に進む。ステップSD12では、ノートポインタnptrで指定される演奏用ノートデータ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、非和音を表す値「0」をストアする。そして、ステップSD13に進み、フラグInChordをゼロリセットした後、ステップSD9においてノートポインタnptrを歩進させてから上述のステップSD3に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、ステップSD3以降の処理を繰り返し、歩進されたノートポインタnptrが曲終端endに達すると、ステップSD3の判断結果が「YES」になり、本処理を終える。
【0044】
(5)連桁グループ処理の動作
次に、図8〜図9を参照して連桁グループ処理の動作を説明する。上述した楽譜情報生成処理のステップSB6(図5参照)を介して本処理が実行されると、CPU11は図8に図示するステップSE1に処理を進め、演奏用ノートデータ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSE2では、ノートポインタnptrが曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSE3に進む。
【0045】
ステップSE3では、ノートポインタnptr指定される演奏用ノートデータ[nptr]が連桁の先頭音となる先頭音条件を満たすかどうかを判断する。ここで言う先頭音条件とは、直前の音が旗(符尾)の無い音符長、つまり4分音符長以上であって、今回判定対象とする音が旗のある8分音符長以下であることを指す。こうした先頭音条件を満たさない場合には、判断結果が「NO」になり、ステップSE11に進み、ノートポインタnptrを歩進させた後、さらに連桁開始音をサーチする為に上述のステップSE2に処理を戻す。
【0046】
そして、歩進されたノートポインタnptrで指定される演奏用ノートデータ[nptr]が曲終端endに達しておらず、しかも連桁の先頭音となる条件を満たしたとする。そうすると、上記ステップSE2、SE3の各判断結果はいずれも「YES」になり、ステップSE4に進み、演奏用ノートデータ[nptr]を連桁バッファに保存する。
【0047】
次に、ステップSE5では、ノートポインタnptrを歩進させ、続くステップSE6では、ノートポインタnptrで指定される演奏用ノートデータ[nptr]が連桁音条件を満たしているか否かを判断する。連桁音条件とは、直前および直後の音と今回判定対象の音とがいずれも旗のある音符長であることを指す。演奏用ノートデータ[nptr]が連桁音条件を満たしていなければ、上記ステップSE7の判断結果は「NO」になり、ステップSE11に進み、ノートポインタnptrを歩進させて上述のステップSE2に処理を戻す。
【0048】
一方、連桁音条件を満たしていると、上記ステップSE6の判断結果が「YES」になり、ステップSE7に進み、演奏用ノートデータ[nptr]を連桁バッファに保存する。次いで、ステップSE8では、連桁バッファに格納した演奏用ノートデータ[nptr]が連桁終端条件を満たすか否かを判断する。連桁終端条件とは、直前の音と今回判定対象の音とがいずれも旗のある音符長であって、直後の音が旗の無い音符長であることを指す。そして、この連桁終端条件を満たさなければ、判断結果は「NO」になり、上記ステップSE5に処理を戻す。
【0049】
以後、連桁の終端となる音が検索される迄、ステップSE5〜SE8を繰り返し、連桁の先頭音に続いて連桁される音を検索し、該当する音(演奏用ノートデータ)を連桁バッファに保存する。そして、連桁の終端となる音が検索されると、ステップSE8の判断結果が「YES」になり、ステップSE9に進む。ステップSE9では、予め設定される各種連桁パターン(連桁形状)の内、連桁バッファに保存された連桁の先頭音から終端音に適合する連桁パターンを選択する。そして、ステップSE10では、連桁バッファに保存された連桁の先頭音に対応する音符データ中の連桁パターン始点cRenkouS(図3参照)に、選択された連桁パターンを表す値をセットする一方、連桁バッファに保存された連桁の後端音に対応する音符データ中の連桁パターン終点cRenkouE(図3参照)に、選択された連桁パターンを表す値をセットする。
【0050】
この後、図9に図示するステップSE12に進み、連桁バッファ最後尾音音高から連桁バッファ先頭音音高を減算した音高差を傾きとしてレジスタiSlopeにストアする。以後、レジスタiSlopeを傾きiSlopeと記す。
次いで、ステップSE13では、連桁傾き補正値を一時記憶するレジスタiSlopeAdj(以後、連桁傾き補正値iSlopeAdjと称す)をゼロリセットする。続いて、ステップSE14では、ポインタbptrをゼロリセットする。
【0051】
そして、ステップSE15では、ポインタbptrで指定される連桁バッファ[bptr+1]が空きであるか否かを判断する。空いていなければ、判断結果は「NO」になり、ステップSE16に進む。ステップSE16では、連桁バッファ[bptr+1]に格納される演奏用ノートデータの音高から連桁バッファ[bptr]に格納される1つ前の演奏用ノートデータの音高を減算した音高差が「0」より大きいか否かを判断する。その音高差が「0」より大きければ、判断結果は「YES」になり、ステップSE17に進み、連桁傾き補正値iSlopeAdjをインクリメントした後、ステップSE20に進み、ポインタbptrを歩進させてから上記ステップSE15に処理を戻す。
【0052】
一方、上記ステップSE16において算出した音高差が「0」より小さいと、判断結果は「NO」になり、ステップSE18に進む。ステップSE18では、連桁バッファ[bptr+1]に格納される演奏用ノートデータの音高から連桁バッファ[bptr+1]に格納される1つ前の演奏用ノートデータの音高を減算した音高差が「0」より小さいか否かを判断する。その音高差が「0」より小さければ、判断結果は「YES」になり、ステップSE19に進み、連桁傾き補正値iSlopeAdjをデクリメントした後、ステップSE20に進む。
【0053】
なお、連桁バッファ[bptr+1]に格納される演奏用ノートデータの音高と、連桁バッファ[bptr+1]に格納される1つ前の演奏用ノートデータの音高とが同じ音高であると、上記ステップSE16、SE18の各判断結果は「NO」になり、ステップSE20に進み、ポインタbptrを歩進させてからステップSE15に処理を戻す。
【0054】
そして、歩進されたポインタbptrで指定される連桁バッファ[bptr+1]が空きになると、上記ステップSE15の判断結果が「NO」になり、ステップSE21に進む。ステップSE21では、上記ステップSE12において算出された傾きiSlopeに連桁傾き補正値iSlopeAdjを乗算し、その乗算値が「0」以下であるかどうかを判断する。乗算値が「0」以下でなければ、つまり、iSlopeとiSlopeAdjが同じ向きに傾いていれば、ここでの判断結果は「NO」になり、図8に図示するステップSE11に進む。
【0055】
これに対し、乗算値が「0」以下である場合、つまり、傾きiSlopeと連桁傾き補正値iSlopeAdjが逆の向きに傾いていれば、判断結果が「YES」になり、ステップSE22に進む。ステップSE22では、ユーザ設定される重み係数Aを連桁傾き補正値iSlopeAdjに乗算した値を、上記ステップSE12において算出された傾きiSlopeに加算して補正された傾きiSlopeを「連桁傾き」として本処理を終える。これにより、簡単な処理で自然な傾きの連桁にすることが可能になる。なお、こうして算出される「連桁傾き」は、連桁開始音および連桁終了音の属性として、これら各音に対応する音符データに登録されるようになっている。
【0056】
(6)楽譜表示処理の動作
次に、図10〜図11を参照して楽譜表示処理の動作を説明する。前述したメインルーチンのステップSA9(図4参照)を介して楽譜表示処理が実行されると、CPU11は図10に図示するステップSG1に進み、背景画像(五線譜)を表示部16の表示面に描画する。続いて、ステップSG2では、小節数を計数する小節カウンタを初期化する。次いで、ステップSG3では、小節カウンタの値が終端endに達したか否か、つまり曲を形成する全ての小節について楽譜表示し終えたかどうかを判断する。全ての小節について楽譜表示し終えていなければ、判断結果は「NO」になり、ステップSG4に進む。ステップSG4では、五線譜上で小節カウンタの値で指定される小節情報に基づき、例えば五線譜上に音部記号や調記号、小節線などを描画する。
【0057】
そして、ステップSG5では、音符データを指定するノートポインタnptrをゼロリセットする。続いて、ステップSG6では、ノートポインタnptrが1小節分の音を指定し終えた否かを判断する。1小節分の音を指定し終えていなければ、判断結果は「NO」になり、ステップSG7に進み、ノートポインタnptrが現在指定する音符データの表示位置を計算する。次いで、ステップSG8では、上記ステップSG7にて算出した表示位置に、ノートポインタnptrが現在指定する音符データを描画する。この後、ステップSG9に進み、ノートポインタnptrを歩進させてから上記ステップSG6に処理を戻す。
【0058】
こうして、小節カウンタの値で指定される小節を形成する各音の表示位置を順次算出し、それら表示位置に各音符を描画し終えると、上記ステップSG6の判断結果が「YES」になり、ステップSG10に進み、小節カウンタを歩進させた後、上述のステップSG3に処理を戻す。以後、各小節毎に音符の表示位置を算出し、算出した表示位置に対応する音符を描画して行き、全ての小節について音符を描画し終えると、上記ステップSG3の判断結果が「YES」になり、本処理を終える。
【0059】
なお、音符描画に際しては、対応する音符データが備える属性を参照する。音符データが備える属性とは、前述したノートタイプcNoteType、連桁パターン始点cRenkouSおよび連桁パターン終点RenkouEの他、上述した連桁グループ処理(図8〜図9参照)において算出される連桁傾きを含む。
【0060】
図11は、楽譜表示処理によって画面表示される楽譜の一例を示す図である。図11(a)は、前述した連桁グループ処理による連桁傾きの補正を行わない場合、つまり重み係数A=0とした場合の譜例である。この譜例では、連桁傾きの補正が行われず、従来と同様に連桁開始音と連桁終了音との音高差だけで連桁の傾きを決めるため、上段小節後半部の連桁が水平となりその間の音程が変化していないかのような印象を与える。
【0061】
これに対し、同図(b)は、前述した連桁グループ処理による連桁傾きの補正を重み係数A=3として行った譜例である。この譜例では、前述した上段小節後半部の連桁が後下がりとなり、音程変化を直感的にとらえることができる。さらに同図(c)は前述した連桁グループ処理による連桁傾きの補正を重み係数A=6として行った譜例である。この譜例では、上段小節前半部の連桁が前下がりに変化している。これは連桁された音の間で音程が上がる方向で変化する回数と下がる方向で変化する回数のどちらが支配的であったかを示す変数を、連桁開始音と連桁終了音との音高差よりも強く反映した結果である。この上段小節前半部のように連行された音の音程関係に相反する要素がある場合には、どちらをより強く反映させるべきかはユーザの嗜好によるところがあるが、これは重み係数Aの選択をユーザにゆだねることで解決できる。
【0062】
(7)段交叉連桁処理の動作
次に、図12を参照して段交叉連桁処理の動作を説明する。前述した楽譜情報生成処理のステップSB10(図5参照)を介して実行される段交叉連桁処理は、図12に図示するように、ステップSH1を介して実行される交叉判定処理と、ステップSH2を介して実行される交叉連桁処理とから構成される。以下、交叉判定処理および交叉連桁処理の各動作について述べる。
【0063】
(8)交叉判定処理の動作
図12のステップSH1を介して交叉判定処理が実行されると、CPU11は図13に図示するステップSJ1に処理を進め、演奏用ノートデータ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSJ2では、ノートポインタnptrで指定される演奏用ノートデータ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSJ3に進む。ステップSJ3では、対象音(ノートポインタnptrで指定される演奏用ノートデータ[nptr])が右手トラックであるか否かを判断する。
【0064】
右手トラックならば、判断結果は「YES」になり、ステップSJ4に進み、対象音のピッチが所定値1より低いかどうかを判断する。所定値1より低くなければ、判断結果は「NO」になり、ステップSJ9にてノートポインタnptrを歩進させた後、上述のステップSJ2に処理を戻す。
【0065】
一方、対象音のピッチが所定値1より低い場合には、上記ステップSJ4の判断結果が「YES」になり、ステップSJ5に進み、下段での音符表示位置を計算する。この後、ステップSJ8に進み、対象音に対応する音符データ(該当音)の段交叉フラグDanCrossに「1」をセットして段交叉する旨を表した後、ステップSJ9においてノートポインタnptrを歩進させてから上記ステップSJ2に処理を戻す。
【0066】
これに対し、対象音が左手トラックであると、上述したステップSJ3の判断結果が「NO」になり、ステップSJ6に進む。ステップSJ6では、対象音のピッチが所定値2より高いかどうかを判断する。所定値2より高くなければ、判断結果は「NO」になり、ステップSJ9にてノートポインタnptrを歩進させた後、上述のステップSJ2に処理を戻す。
【0067】
一方、対象音のピッチが所定値2より高い場合には、上記ステップSJ6の判断結果が「YES」になり、ステップSJ7に進み、上段での音符表示位置を計算する。この後、ステップSJ8に進み、対象音に対応する音符データ(該当音)の段交叉フラグDanCrossに「1」をセットして段交叉する旨を表した後、ステップSJ9においてノートポインタnptrを歩進させてから上記ステップSJ2に処理を戻す。
【0068】
以後、ノートポインタnptrが曲終端endに達する迄、ノートポインタnptrを歩進させながら、その歩進されるノートポインタnptrで指定される演奏用ノートデータ[nptr]中の音高Pitchが所定範囲を超えるかどうかで段交叉の判定を行い、段交叉する音については対応する音符データの段交叉フラグDanCrossに「1」をセットする。そして、ノートポインタnptrが曲終端endに達すると、ステップSJ2の判断結果が「YES」になり、本処理を終える。
【0069】
(9)交叉連桁処理の動作
図12のステップSH2を介して交叉連桁処理が実行されると、CPU11は図14に図示するステップSK1に処理を進め、小節ポインタを初期化する。次いで、ステップSH2では、小節ポインタが終端endに達したか否かを判断する。小節ポインタが終端endに達していなければ、判断結果は「NO」になり、ステップSK3に進み、右手トラックであるか否かを判断する。右手トラックならば、判断結果は「YES」になり、ステップSK4に進む。ステップSK4では、小節ポインタで指定される小節における段交叉の有無を判断する。段交叉の有無は小節情報に含まれる段交叉フラグの値で判断する。段交叉しなければ、判断結果は「NO」になり、ステップSK8に進み、小節ポインタをインクリメントして上記ステップSK2に処理を戻す。
【0070】
一方、小節ポインタで指定される小節で段交叉が有る場合には、上記ステップSK4の判断結果は「YES」になり、ステップSK5に進む。ステップSK5では、段交叉する小節に含まれ、段交叉フラグDanCrossが「1」の音符データに対応する音符の棒の向きを全て上向きに変更する。この後、ステップSK8に進み、小節ポインタをインクリメントして上記ステップSK2に処理を戻す。
【0071】
一方、左手トラックであると、上記ステップSK3の判断結果が「NO」になり、ステップSK6に進む。ステップSK6では、小節ポインタで指定される小節における段交叉の有無を判断する。段交叉の有無は小節情報に含まれる段交叉フラグの値で判断する。段交叉しなければ、判断結果は「NO」になり、ステップSK8に進み、小節ポインタをインクリメントして上記ステップSK2に処理を戻すが、段交叉が有ると、上記ステップSK6の判断結果は「YES」になり、ステップSK7に進む。ステップSK7では、段交叉する小節に含まれ、段交叉フラグDanCrossが「1」の音符データに対応する音符の棒の向きを全て下向きに変更する。この後、ステップSK8に進み、小節ポインタをインクリメントして上記ステップSK2に処理を戻す。
【0072】
以後、小節ポインタが終端endに達する迄、上述したステップSK2〜SK8を繰り返し、小節ポインタが指定する小節において段交叉が有る場合には、段交叉フラグDanCrossが「1」の音符データに対応する音符の棒の向きを反対向きに変更する。
【0073】
これにより、例えば図15(a)に図示する譜例において、上段第1小節の第1および第2音が段交叉の対象音となると、同図(b)に図示するように、上段第1小節の第1および第2音の音高に対応してこれらの音符位置を下段側にシフトさせる一方、下段側の対応する音符の向きを下向きに変更する。この結果、自然で見易い段交叉連桁した楽譜表示となる。
【0074】
次に、図16を参照して、和音が含まれる場合の連桁の傾きについて述べる。演奏者にルートの動きを意識させたい場合には、図16(a)に図示するように、和音開始音に従った形態とし、上声部の変化を意識させたい場合には、同図(b)に図示するように、和音終了音に従った形態にすると有効である。さらに、全体的な音域の変化を意識させたい場合には、図16(a)に図示した連桁の傾斜と、図16(b)に図示した連桁の傾斜との平均の傾きによる連桁とすることが望ましい。
【0075】
なお、本実施形態においては演奏データをもとに楽譜データを一から生成するようにしたが、すでに生成された楽譜データを読み込んでこれに対し上記の連桁グループ処理、段交叉連桁処理を施してより見やすい楽譜を作成することもできる。
【図面の簡単な説明】
【0076】
【図1】本発明による実施の一形態の構成を示すブロック図である。
【図2】曲データの構成を示す図である。
【図3】音符データの構成を示す図である。
【図4】メインルーチンの動作を示すフローチャートである。
【図5】楽譜情報生成処理の動作を示すフローチャートである。
【図6】個別情報生成処理の動作を示すフローチャートである。
【図7】和音処理の動作を示すフローチャートである。
【図8】連桁グループ処理の動作を示すフローチャートである。
【図9】連桁グループ処理の動作を示すフローチャートである。
【図10】楽譜表示処理の動作を示すフローチャートである。
【図11】楽譜表示処理によって画面表示される楽譜の一例を示す図である。
【図12】段交叉連桁処理の動作を示すフローチャートである。
【図13】交叉判定処理の動作を示すフローチャートである。
【図14】交叉連桁処理の動作を示すフローチャートである。
【図15】段交叉連桁の一例を示す図である。
【図16】和音が含まれる場合の連桁の傾き例を示す図である。
【符号の説明】
【0077】
10 操作部
11 CPU
12 ROM
13 RAM
14 音源
15 サウンドシステム
16 表示部
17 インタフェース部




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013