Warning: copy(.htaccess): failed to open stream: Permission denied in /home/jp321/public_html/header.php on line 8
楽譜表示装置および楽譜表示プログラム - カシオ計算機株式会社
米国特許情報 | 欧州特許情報 | 国際公開(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−171672(P2007−171672A)
公開日 平成19年7月5日(2007.7.5)
出願番号 特願2005−370633(P2005−370633)
出願日 平成17年12月22日(2005.12.22)
代理人 【識別番号】100096699
【弁理士】
【氏名又は名称】鹿嶋 英實
発明者 南高 純一
要約 課題
ラインの帰属を判りやすく楽譜表示する楽譜表示装置を実現する。

解決手段
ステップSK5〜SK9では、ノートポインタmeで指定される曲データ[me]と同じラインであって、かつ発音時刻および音長が共通する和音構成音(曲データ[ne])の内、曲データ[me]より音高の低い和音構成音(曲データ[ne])を探し出す。そして、該当する和音構成音(曲データ[ne])を曲データ[me]とは異なるラインに分離する。この結果、楽譜化する曲データが和音を形成する場合であっても、ラインの帰属を判りやすく楽譜表示することができる。
特許請求の範囲
【請求項1】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索手段と、
前記曲データ記憶手段に記憶される曲データを順次指定する指定手段と、
前記和音検索手段により検索される和音構成音の内、前記指定手段により指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離手段と
を具備することを特徴とする楽譜表示装置。
【請求項2】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データから挿入すべき休符を判定する休符判定手段と、
前記休符判定手段が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索手段と、
前記検索手段が該当する音を検索した場合、前記前記休符判定手段が判定した挿入すべき休符を省略する休符省略手段と
を具備することを特徴とする楽譜表示装置。
【請求項3】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第1および第2のラインに分離するライン分離手段と、
前記ライン分離手段により第1および第2のラインに分離された曲データの音高に応じて、当該第1および第2のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当手段と
を具備することを特徴とする楽譜表示装置。
【請求項4】
曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データにおいて第1のラインを形成する各音の平均音高を表す第1平均音高と、第2のラインを形成する各音の平均音高を表す第2平均音高とを小節毎に抽出する抽出手段と、
前記曲データ記憶手段に記憶される曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第1平均音高との差分を表す第1差分と、当該独立音と前記第2平均音高との差分を表す第2差分とを発生する差分発生手段と、
前記差分発生手段により生成される第1差分と第2差分との大小比較結果に応じて、その独立音を第1のライン又は第2のラインのいずれかに含めるかを調整する調整手段と
を具備することを特徴とする楽譜表示装置。
【請求項5】
曲を構成する各音を表す曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索処理と、
曲を構成する各音を表す曲データを順次指定する指定処理と、
前記和音検索処理により検索される和音構成音の内、前記指定処理にて指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項6】
曲を構成する各音を表す曲データから挿入すべき休符を判定する休符判定処理と、
前記休符判定処理が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索処理と、
前記検索処理が該当する音を検索した場合、前記前記休符判定処理にて判定された挿入すべき休符を省略する休符省略処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項7】
曲を構成する各音を表す曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第1および第2のラインに分離するライン分離処理と、
前記ライン分離処理にて第1および第2のラインに分離された曲データの音高に応じて、当該第1および第2のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
【請求項8】
曲を構成する各音を表す曲データにおいて第1のラインを形成する各音の平均音高を表す第1平均音高と、第2のラインを形成する各音の平均音高を表す第2平均音高とを小節毎に抽出する抽出処理と、
曲を構成する各音を表す曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第1平均音高との差分を表す第1差分と、当該独立音と前記第2平均音高との差分を表す第2差分とを発生する差分発生処理と、
前記差分発生処理にて生成される第1差分と第2差分との大小比較結果に応じて、その独立音を第1のライン又は第2のラインのいずれかに含めるかを調整する調整処理と
をコンピュータで実行させることを特徴とする楽譜表示プログラム。
発明の詳細な説明
【技術分野】
【0001】
本発明は、ライン(演奏パート)の帰属を判りやすく楽譜表示する楽譜表示装置および楽譜表示プログラムに関する。
【背景技術】
【0002】
曲を構成する各音を表す曲データを楽譜化して表示する楽譜表示装置が知られている。この種の装置としては、例えば特許文献1には、色彩と楽曲の演奏の仕方に関する指示との対応関係を示す関係情報を用いて、楽譜中で演奏指示する部分を指定色で表示して演奏練習を効果的に行えるようにした楽譜表示装置が開示され、また特許文献2には、連桁(ビーム)で繋ぐ音の両端の音の符頭表示位置の差を検出し、検出した符頭表示位置の差(音高差)が所定値より小さければ、連桁の傾きを水平に設定し、一方、符頭表示位置の差(音高差)が所定値より大きければ、連桁の傾きを所定に傾きに設定することによって、連桁で繋ぐ両端の音の音程が小さい場合や音程が極端に大きい場合でも演奏者が見易いように連桁を表示する楽譜表示方法が開示されている。
【0003】
【特許文献1】特開2003−5743号公報
【特許文献2】特開平10−74082号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、従来の楽譜表示装置には、次のような問題がある。
(1)楽譜化する曲データが和音を形成する場合、ライン(演奏パート)の帰属が判り難い楽譜になるという弊害がある。
(2)休符をライン毎に設けることから、曲内容によっては表示すべき休符が多くなり過ぎ、見難い楽譜になるという弊害がある。
(3)複数のラインが存在する小節の中に単独に存在する音符があると、どのラインに帰属するのかが不明な判り難い楽譜になるという弊害がある。
(4)両手各パートに対応するラインが混在した曲データの場合、ライン(演奏パート)の帰属が判り難い楽譜になるという弊害がある。
【0005】
そこで本発明は、このような事情に鑑みてなされたもので、ライン(演奏パート)の帰属を判りやすく楽譜表示することができる楽譜表示装置および楽譜表示プログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
上記目的を達成するため、請求項1に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索手段と、前記曲データ記憶手段に記憶される曲データを順次指定する指定手段と、前記和音検索手段により検索される和音構成音の内、前記指定手段により指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離手段とを具備することを特徴とする。
【0007】
請求項2に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データから挿入すべき休符を判定する休符判定手段と、前記休符判定手段が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索手段と、前記検索手段が該当する音を検索した場合、前記前記休符判定手段が判定した挿入すべき休符を省略する休符省略手段とを具備することを特徴とする。
【0008】
請求項3に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第1および第2のラインに分離するライン分離手段と、前記ライン分離手段により第1および第2のラインに分離された曲データの音高に応じて、当該第1および第2のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当手段とを具備することを特徴とする。
【0009】
請求項4に記載の発明では、曲を構成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データにおいて第1のラインを形成する各音の平均音高を表す第1平均音高と、第2のラインを形成する各音の平均音高を表す第2平均音高とを小節毎に抽出する抽出手段と、前記曲データ記憶手段に記憶される曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第1平均音高との差分を表す第1差分と、当該独立音と前記第2平均音高との差分を表す第2差分とを発生する差分発生手段と、前記差分発生手段により生成される第1差分と第2差分との大小比較結果に応じて、その独立音を第1のライン又は第2のラインのいずれかに含めるかを調整する調整手段とを具備することを特徴とする。
【0010】
請求項5に記載の発明では、曲を構成する各音を表す曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索する和音検索処理と、曲を構成する各音を表す曲データを順次指定する指定処理と、前記和音検索処理により検索される和音構成音の内、前記指定処理にて指定される曲データより音高の低い和音構成音を抽出し、当該曲データとは異なるラインに分離するライン分離処理とをコンピュータで実行させることを特徴とする。
【0011】
請求項6に記載の発明では、曲を構成する各音を表す曲データから挿入すべき休符を判定する休符判定処理と、前記休符判定処理が判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する検索処理と、前記検索処理が該当する音を検索した場合、前記前記休符判定処理にて判定された挿入すべき休符を省略する休符省略処理とをコンピュータで実行させることを特徴とする。
【0012】
請求項7に記載の発明では、曲を構成する各音を表す曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第1および第2のラインに分離するライン分離処理と、前記ライン分離処理にて第1および第2のラインに分離された曲データの音高に応じて、当該第1および第2のラインに分離された曲データを左手パートもしくは右手パートに割り当てるパート割当処理とをコンピュータで実行させることを特徴とする。
【0013】
請求項8に記載の発明では、曲を構成する各音を表す曲データにおいて第1のラインを形成する各音の平均音高を表す第1平均音高と、第2のラインを形成する各音の平均音高を表す第2平均音高とを小節毎に抽出する抽出処理と、曲を構成する各音を表す曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第1平均音高との差分を表す第1差分と、当該独立音と前記第2平均音高との差分を表す第2差分とを発生する差分発生処理と、前記差分発生処理にて生成される第1差分と第2差分との大小比較結果に応じて、その独立音を第1のライン又は第2のラインのいずれかに含めるかを調整する調整処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【0014】
請求項1、5に記載の発明によれば、曲を構成する各音を表す曲データの中から同じラインであって、かつ発音時刻および音長が共通する和音構成音を検索し、検索される和音構成音の内、指定処理にて順番に指定される曲データより音高の低い和音構成音を抽出し、抽出した和音構成音を当該曲データとは異なるラインに分離するので、楽譜化する曲データが和音を形成する場合であっても、ラインの帰属を判りやすく楽譜表示することができる。
【0015】
請求項2、6に記載の発明によれば、曲を構成する各音を表す曲データから挿入すべき休符を判定し、判定した挿入すべき休符の時刻と、この休符の次の音の発音時刻とが一致する場合に、休符の次の音の発音時刻と同じ時刻に発音する音を前記曲データ中の対のラインから検索する。該当する音が検索された場合に挿入すべき休符を省略する。したがって、曲内容によっては表示すべき休符が多くなり過ぎ、見難い楽譜になるという従来の弊害を解消でき、ラインの帰属を判りやすく楽譜表示することができる。
【0016】
請求項3、7に記載の発明によれば、曲を構成する各音を表す曲データの内、発音時刻又は消音時刻の少なくともいずれか一方が異なり、発音期間が重複する曲データ同士を、音高の大小に応じて第1および第2のラインに分離し、第1および第2のラインに分離された曲データの音高に応じて、当該第1および第2のラインに分離された曲データを左手パートもしくは右手パートに割り当てるので、両手各パートに対応するラインが混在した曲データの場合、ラインの帰属が判り難い楽譜になるという弊害を回避し、ラインの帰属を判りやすく楽譜表示することができる。
【0017】
請求項4、8に記載の発明によれば、曲を構成する各音を表す曲データにおいて第1のラインを形成する各音の平均音高を表す第1平均音高と、第2のラインを形成する各音の平均音高を表す第2平均音高とを小節毎に抽出する。そして、曲を構成する各音を表す曲データの中に、小節中の他音と重複せずに単独で存在する独立音が有る場合、当該独立音と前記第1平均音高との差分を表す第1差分と、当該独立音と前記第2平均音高との差分を表す第2差分とを発生し、この第1差分と第2差分との大小比較結果に応じて、その独立音を第1のライン又は第2のラインのいずれかに含めるかを調整する。この結果、複数のラインが存在する小節の中に単独に存在する音符があると、どのラインに帰属するのかが不明な判り難い楽譜になるという従来の弊害を解消でき、ラインの帰属を判りやすく楽譜表示することができる。
【発明を実施するための最良の形態】
【0018】
以下、図面を参照して本発明の実施の形態について説明する。
[第1実施形態]
A.構成
図1は、本発明の実施の一形態による楽譜表示装置の構成を示すブロック図である。この図において、操作部10は、電源スイッチの他、キー入力用のキーボードやマウス等の入力操作子を備え、入力操作に対応したイベントを発生する。このイベントはCPU11に取り込まれる。CPU11は、ROM12に記憶される各種制御プログラムを実行し、操作部10が発生するイベントに対応して装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。
【0019】
ROM12は、プログラムエリアおよびデータエリアを備える。ROM12のプログラムエリアには、CPU11にロードされる各種制御プログラムが記憶される。各種制御プログラムとは、後述するメインルーチン、楽譜情報生成処理、個別情報生成処理、和音処理、連桁グループ処理、連桁処理、楽譜表示処理およびライン分離処理を含む。ROM12のデータエリアには、音符や休符、譜表などを表示するための楽譜表示データやGUI画面を形成する各種画面データが記憶される。
【0020】
RAM13は、ワークエリアおよびデータエリアを備える。RAM13のワークエリアには、CPU11の処理に用いられる各種レジスタ/フラグデータが一時記憶される。RAM13のデータエリアは、曲データエリアおよび楽譜情報エリアから構成される。RAM13の曲データエリアには複数曲分の曲情報が格納される。曲情報は、図2に図示するように、演奏パートに対応する複数の演奏トラック[0]〜[N]から構成される。1つの演奏トラックは、対応する演奏パートを形成する各音を表す曲データ[0]〜[N]を有し、その終端には曲の終わりを表すENDデータを備える。曲データは、演奏開始時点からの経過時間(絶対時間)で表される発音開始時刻ITime、音長lGate、音高Pitchおよび次の曲データを指定するポインタpNextから構成される。
【0021】
RAM13の楽譜情報エリアには、後述する楽譜情報生成処理によって上述の曲データ[0]〜[N]から派生される音符データ[0]〜[N]が格納される。曲データ[0]〜[N]に対応して生成される音符データ[0]〜[N]は、図3に図示するように、ポインタnext、ポインタprev、ポインタmEvent、発音開始時刻ITime、小節番号sMeas、拍番号sBeat、座標(ix,iy)、ノートタイプcNoteType、コードcChord、連桁パターン始点cRenKouS、連桁パターン終点cRenKouE、ライン番号cLineおよび段交叉フラグcDanCrossから構成される。
【0022】
ポインタnextは、次の音符データを指定する。ポインタprevは、1つ前の音符データを指定する。ポインタmEventは、対応する曲データ[mEvent]を指定する。発音開始時刻ITimeは、音符データの発音タイミングを演奏開始時点からの経過時間で表す。小節番号sMeasは、音符データが含まれる小節の番号を表す。拍番号sBeatは、音符データの拍番号を表す。座標(ix,iy)は、背景画像となる五線譜上における音符データの表示位置を表す。ノートタイプcNoteTypeは、音符の種類を表す。例えば、「1」の場合には全音符、「2」の場合には2分音符、「4」の場合には4分音符を表す。
【0023】
コードcChordは、「0」の場合に非和音を、「1」の場合に和音開始音を、「2」の場合に和音開始音および和音終了音以外の和音構成音を意味する和音途中音を、「3」の場合に和音終了音を表す。連桁パターン始点cRenkouSは、選択された連桁パターン(後述する)の始点を表す。連桁パターン終点RenkouEは、選択された連桁パターンの終点を表す。ライン番号cLineは、ラインの番号を表す。段交叉フラグDanCrossは、段交叉の有無を表すフラグである。
【0024】
図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の曲データエリアに格納されるようになっている。
【0025】
B.動作
次に、図4〜図13を参照して第1実施形態の動作について説明する。以下では、先ず最初に全体動作としてメインルーチンの動作を説明した後、続いてメインルーチンからコールされる楽譜情報生成処理および楽譜表示処理の各動作並びに楽譜情報生成処理を構成する個別情報生成処理、和音処理、連桁グループ処理、連桁処理およびライン分離処理の各動作を説明する。
【0026】
(1)メインルーチンの動作
装置電源の投入に応じて、CPU11は図4に図示するメインルーチンを実行してステップSA1に処理を進め、RAM13のワークエリアに設けられる各種レジスタ/フラグ類をリセットしたり、初期値セットする初期化を実行する。この後、ステップSA2に進み、ユーザによるキー操作入力待ち状態となる。そして、ステップSA3〜SA5では、キー操作入力待ち状態下で「曲選択」、「設定」および「再生」の実行を指示するキー操作入力の有無を判断する。
【0027】
「曲選択」を指示するキー操作入力、すなわちRAM13の曲データエリアに記憶される複数曲の曲情報のいずれかを選択すると、ステップSA3の判断結果が「YES」になり、ステップSA6を介して楽譜情報生成処理(後述する)を実行した後、ステップSA9を介して楽譜表示処理(後述する)を実行する。そして、上述のステップSA2に処理を戻してキー操作入力待ちの状態に復帰する。
【0028】
「設定」を指示するキー操作入力が行われた場合には、ステップSA4の判断結果が「YES」になり、ステップSA7を介して設定処理を実行する。設定処理では、曲選択された曲データを楽譜として表示するための小節情報を設定する。小節情報とは、例えば音部記号や拍子記号、調記号を指定する他、曲選択された曲データの各小節位置および各段位置を指定する情報である。こうした設定処理を実行した後は、ステップSA9を介して楽譜表示処理(後述する)を実行してから上述のステップSA2に処理を戻し、キー操作入力待ちの状態に復帰する。
【0029】
「再生」を指示するキー操作入力が行われた場合には、ステップSA5の判断結果が「YES」になり、ステップSA8に進む。ステップSA8では、上記ステップSA3にて選択された曲データを再生する再生処理を実行する。この後、ステップSA9を介して楽譜表示処理(後述する)を実行してから上述のステップSA2に処理を戻してキー操作入力待ち状態に復帰する。
【0030】
(2)楽譜情報生成処理の動作
次に、図5を参照して楽譜情報生成処理の動作を説明する。上述したメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11はステップSB1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、曲データ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSB2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
【0031】
続いて、ステップSB3〜SB8では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて「個別情報生成処理(ステップSB4)」、「和音処理(ステップSB5)」、「連桁グループ処理(ステップSB6)」および「連桁処理(ステップSB7)」を施す。そして、全ての演奏トラックについて処理し終え、ステップSB8において歩進されるトラックポインタTrptrの値がendになると、ステップSB3の判断結果が「YES」になり、ステップSB9に進む。
【0032】
ステップSB9では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。次いで、ステップSB10〜SB12では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて「ライン分離処理(ステップSB11)」を施す。そして、全ての演奏トラックについて「ライン分離処理(ステップSB11)」を行い、ステップSB12で歩進されるトラックポインタTrptrの値がendになると、ステップSB10の判断結果が「YES」になり、本処理を完了させる。
【0033】
(3)個別情報生成処理の動作
次に、図6を参照して個別情報生成処理の動作を説明する。上述した楽譜情報生成処理のステップSB4(図5参照)を介して本処理が実行されると、CPU11は図6に図示するステップSC1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSC2では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSC3に進む。
【0034】
ステップSC3では、ノートポインタnptrで現在指定される曲データ[nptr]中の発音開始時刻ITimeに音長lGateを加算した時刻と、ポインタpNextで指定される次の曲データ[pNext]中の発音開始時刻ITimeとの時間差から休符が必要か否かを判断する。休符が必要ならば、判断結果は「YES」になり、ステップSC4に進み、上記ステップSC3で得た時間差に対応する休符を決定し、続くステップSC5では、決定した休符を表示する小節内での表示位置を決めた後、ステップSC6に進む。
【0035】
一方、休符が不必要な場合には、上記ステップSC3の判断結果が「NO」になり、ステップSC6に進む。ステップSC6では、ノートポインタnptrで現在指定される曲データ[nptr]中の音長lGateに対応するノートタイプcNoteType(音符種類)を決定する。ステップSC7では、その決定したノートタイプcNoteType(音符種類)を表示する小節内での表示位置を決定する。そして、ステップSC8では、例えば次の音符とタイで繋ぐ等の、その他の付帯情報を設定する。次いで、ステップSC9では、ノートポインタnptrを歩進させた後、上記ステップSC2に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、上記ステップSC2〜SC9を繰り返し、ノートポインタnptrが曲終端endに達すると、ステップSC2の判断結果が「YES」になり、本処理を終える。
【0036】
(4)和音処理の動作
次に、図7を参照して和音処理の動作を説明する。上述した楽譜情報生成処理のステップSB5(図5参照)を介して本処理が実行されると、CPU11は図7に図示するステップSD1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSD2では、和音検出の有無を表すフラグInChordに「0」をセットして未検出状態を表す。次いで、ステップSD3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSD4に進む。
【0037】
ステップSD4では、ノートポインタnptrで現在指定される曲データ[nptr]中の発音開始時刻ITimeと、当該曲データ[nptr]中のポインタpNextで指定される次の曲データ[pNext]中の発音開始時刻ITimeとが同一であるか否かを判断する。以下、次の音の発音時刻と同一の場合と、そうでない場合とに分けて動作説明を進める。
【0038】
<次の音の発音時刻と同一の場合>
次の音の発音時刻と同一であると、ステップSD4の判断結果が「YES」になり、ステップSD5に進む。ステップSD5では、上述したフラグInChordが「0」、つまり和音未検出状態であるか否かを判断する。和音未検出状態であると、判断結果は「YES」になり、ステップSD7に進み、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音開始音を表す値「1」をストアする。次いで、ステップSD8では、和音の検出に伴い、フラグInChordに「1」をセットする。そして、ステップSD9に進み、ノートポインタnptrをインクリメントして歩進させた後、上述のステップSD3に処理を戻す。
【0039】
一方、すでに和音を検出した状態であると、上記ステップSD5の判断結果は「NO」になり、ステップSD6に進む。ステップSD6では、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音途中音を表す値「2」をストアする。そして、ステップSD8に進み、フラグInChordに「1」をセットした後、ステップSD9においてノートポインタnptrを歩進させてから上述のステップSD3に処理を戻す。
【0040】
<次の音の発音時刻と同一でない場合>
次の音の発音時刻と同一でなければ、前述したステップSD4の判断結果は「NO」になり、ステップSD10に進む。ステップSD10では、フラグInChordが「1」、つまり和音検出状態であるか否かを判断する。和音検出状態であると、判断結果が「YES」になり、ステップSD11に進み、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、和音終了音を表す値「3」をストアする。そして、ステップSD13に進み、フラグInChordをゼロリセットし、続くステップSD9において、ノートポインタnptrをインクリメントして歩進させてから上述のステップSD3に処理を戻す。
【0041】
一方、和音未検出状態であれば、上記ステップSD10の判断結果が「NO」になり、ステップSD12に進む。ステップSD12では、ノートポインタnptrで指定される曲データ[nptr]に対応して派生する音符データ[nptr]中のコードcChordに、非和音を表す値「0」をストアする。そして、ステップSD13に進み、フラグInChordをゼロリセットした後、ステップSD9においてノートポインタnptrを歩進させてから上述のステップSD3に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、ステップSD3以降の処理を繰り返し、歩進されたノートポインタnptrが曲終端endに達すると、ステップSD3の判断結果が「YES」になり、本処理を終える。
【0042】
(5)連桁グループ処理の動作
次に、図8を参照して連桁グループ処理の動作を説明する。上述した楽譜情報生成処理のステップSB6(図5参照)を介して本処理が実行されると、CPU11は図8に図示するステップSE1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSE2では、ノートポインタnptrで指定される曲データ[nptr]をレジスタvnにストアする。次いで、ステップSE3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSE4に進む。
【0043】
ステップSE4では、レジスタvnに格納される曲データ[nptr]が連桁の先頭音となる先頭音条件を満たすかどうかを判断する。ここで言う先頭音条件とは、直前の音の旗(符尾)の無い音符長、つまり4分音符長以上であって、今回判定対象とする音が旗のある8分音符長以下であることを指す。こうした先頭音条件を満たさない場合には、ここでの判断結果は「NO」になり、ステップSE12に進む。ステップSE12では、連桁開始音をサーチし始める音を指定するポインタをノートポインタnptrにセットする。つまり、先頭音条件を満たさずにステップSE12に進んだ場合には、次の音を指定させるべく、ノートポインタnptrを歩進させた後、上述のステップSE2に処理を戻す。
【0044】
そして、歩進されたノートポインタnptrで指定される曲データ[nptr]が曲終端endに達しておらず、しかも連桁の先頭音となる条件を満たしたとする。そうすると、ステップSE3、SE4の各判断結果はいずれも「YES」になり、ステップSE5に進む。ステップSE5では、レジスタvnに格納される曲データ[nptr]を連桁バッファに保存する。
【0045】
続いて、ステップSE6では、レジスタvnに格納される曲データ[nptr]中のポインタpNextで指定される次の曲データ[pNext]をレジスタvnxにストアする。次に、ステップSE7では、レジスタvnxに格納された曲データ[pNext]が、レジスタvnに格納される曲データ[nptr]に対して連桁音条件を満たしているか否かを判断する。連桁音条件とは、直前および直後の音と今回判定対象の音とがいずれも旗のある音符長であることを指す。この連桁音条件を満たしていると、ここでの判断結果は「YES」になり、ステップSE8に進む。ステップSE8では、レジスタvnxに格納された曲データ[pNext]を連桁バッファに保存すると共に、レジスタvnxに格納された曲データ[pNext]をレジスタvnにストアした後、ステップSE9に進む。
【0046】
これに対し、レジスタvnxに格納された曲データ[pNext]が、レジスタvnに格納される曲データ[nptr]に連桁する条件を満たしていないと、上記ステップSE7の判断結果は「NO」になり、ステップSE9に進む。ステップSE9では、レジスタvnxに格納された曲データ[pNext]が連桁の終端音となる連桁終端条件を満たすか否かを判断する。連桁終端条件とは、直前の音と今回判定対象の音とがいずれも旗のある音符長であって、直後の音が旗の無い音符長であることを指す。そして、この連桁終端条件を満たさなければ、判断結果は「NO」になり、上記ステップSE6に処理を戻す。
【0047】
以後、連桁の終端となる音が検索される迄、ステップSE6〜SE9を繰り返し、連桁の先頭音に続いて連桁される音を検索し、該当する音(曲データ)を連桁バッファに保存する。そして、連桁の終端となる音が検索されると、ステップSE9の判断結果が「YES」になり、ステップSE10に進む。ステップSE10では、予め設定される各種連桁パターン(連桁形状)の内、連桁バッファに保存された連桁の先頭音から終端音に適合する連桁パターンを選択する。そして、ステップSE11では、連桁バッファに保存された連桁の先頭音に対応する音符データ中の連桁パターン始点cRenkouS(図3参照)に、選択された連桁パターンを表す値をセットする一方、連桁バッファに保存された連桁の後端音に対応する音符データ中の連桁パターン終点cRenkouE(図3参照)に、選択された連桁パターンを表す値をセットする。
【0048】
この後、ステップSE12に進み、次の連桁開始音をサーチし始める音を指定するポインタをノートポインタnptrにセットする。すなわち、この場合、連桁の後端音の次の音を指定するポインタをノートポインタnptrにセットした後、ステップSE2に処理を戻す。以後、ノートポインタnptrが曲終端endに達する迄、上述したステップSE3以降を繰り返す。そして、曲データ[0]〜[N]から探し出された連桁グループ(連桁の開始音から終端音までの一連の音列)毎の連桁パターン始点cRenkouSおよび連桁パターン終点cRenkouEを対応する音符データに設定し終えると、ステップSE3の判断結果が「YES」になり、本処理を終える。
【0049】
(6)連桁処理の動作
次に、図9〜図10を参照して連桁処理の動作を説明する。上述した楽譜情報生成処理のステップSB7(図5参照)を介して本処理が実行されると、CPU11は図9に図示するステップSF1に処理を進め、曲データ[0]〜[N]を指定するノートポインタnptrをゼロリセットする。続いて、ステップSF2では、連桁フラグInRenkouをゼロリセットする。連桁フラグInRenkouは、ノートポインタnptrで指定される曲データ[nptr]が連桁される音であるか否かを表すフラグであり、「1」の場合に連桁音を表し、「0」の場合に非連桁音を表す。
【0050】
そして、ステップSF3では、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSF4に進む。ステップSF4以降では、ノートポインタnptrで指定される曲データ[nptr]が非連桁音、連桁開始音、連桁中の音および連桁終了音のいずれであるかを判断した結果に応じた処理を実行する。以下、非連桁音、連桁開始音、連桁中の音および連桁終了音の各場合の処理に分けて動作説明を進める。
【0051】
<非連桁音の場合>
非連桁音とは、連桁の対象とならない音を指す。そのような音の場合には、後述するステップSF4、SF8、SF9の各判断結果が「NO」になり、図10に図示するステップSF12に進み、ノートポインタnptrをインクリメントして歩進させた後、図9に図示するステップSF3に処理を戻す。
【0052】
<連桁開始音の場合>
ステップSF4では、ノートポインタnptrで指定される曲データ[nptr]が連桁開始音であるか否かを判断する。具体的には、ノートポインタnptrで指定される曲データ[nptr]に対応する音符データ中の連桁パターン始点cRenkouS(図3参照)に、連桁パターンを表す値がセットされているかどうかを判断する。そして、連桁開始音であると、このステップSF4の判断結果が「YES」になり、ステップSF5に進み、連桁フラグInRenkouに「1」をセットする。次いで、ステップSF6では、連桁開始音を指定するノートポインタnptrをレジスタvnsにストアする。そして、ステップSF7では、連桁傾き補正値を一時記憶するレジスタiSlopeAdj(以後、連桁傾き補正値iSlopeAdjと称す)をゼロリセットした後、図10に図示するステップSF8に進む。
【0053】
<連桁中の音の場合>
ステップSF8では、ノートポインタnptrで指定される曲データ[nptr]が連桁終了音であるか否かを判断する。具体的には、ノートポインタnptrで指定される曲データ[nptr]に対応する音符データ中の連桁パターン始点cRenkouE(図3参照)に、連桁パターンを表す値がセットされているかどうかを判断する。連桁終了音ではなく、連桁中の音であると、判断結果は「NO」になり、ステップSF9に進む。ステップSF9では、連桁フラグInRenkouが「1」であるか否か、つまり連桁中の音であるかどうかを判断する。
【0054】
連桁中の音であると、ここでの判断結果が「YES」になり、ステップSF10に進む。ステップSF10では、次音との音高差が正であるか否かを判断する。次音との音高差が正であると、判断結果は「YES」になり、ステップSF15に進み、連桁傾き補正値iSlopeAdjをインクリメントした後、ステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。
【0055】
一方、次音との音高差が正でない場合には、上記ステップSF10の判断結果が「NO」になり、ステップSF11に進む。ステップSF11では、次音との音高差が負であるか否かを判断する。次音との音高差が負であると、判断結果は「YES」になり、ステップSF16に進み、連桁傾き補正値iSlopeAdjをデクリメントした後、ステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。これに対し、次音との音高差が負でない場合、つまり次音との音高差が無ければ、上記ステップSF11の判断結果は「NO」になり、ステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。
【0056】
<連桁終了音の場合>
さて、歩進されたノートポインタnptrで指定される曲データ[nptr]が連桁終了音になると、上述したステップSF8の判断結果が「YES」になり、ステップSF13に進み、連桁の傾きを算出する。連桁の傾きは、連桁開始音と連桁終了音との音高差と、レジスタiSlopeAdjの連桁傾き補正値とを勘案して算出する。すなわち、連桁する音列において、隣り合う音同士の音高差の正負に応じてインクリメント又はデクリメントされる連桁傾き補正値iSlopeAdjを、連桁開始音と連桁終了音との音高差に乗算して得た値が「0」以下の場合に、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値iSlopeAdjにて補正する。これにより、簡単な処理で自然な傾きの連桁にすることが可能になる。なお、ステップSF13にて算出される連桁傾きは、連桁開始音および連桁終了音の属性として、これら各音に対応する音符データに登録されるようになっている。
【0057】
また、上記ステップSF13では、連桁開始音と連桁終了音との音高差に対応する連桁の傾きを、連桁傾き補正値iSlopeAdjにて補正するようにしたが、これに替えて、連桁開始音から連桁終了音までの連桁グループを形成する各音の音高に基づき最小自乗近似を施して連桁の傾きを算出する態様としても自然な傾きの連桁にすることも可能である。
【0058】
さて、こうした連桁傾き算出を終えると、CPU11はステップSF14に処理を進め、連桁フラグInRenkouをゼロリセットしてからステップSF12に進み、ノートポインタnptrをインクリメントして歩進させてから図9のステップSF3に処理を戻す。以後、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達する迄、上述したステップSF3以降の処理を繰り返す。そして、ノートポインタnptrで指定される曲データ[nptr]が曲終端endに達すると、ステップSF3の判断結果が「YES」になり、本処理を終える。
【0059】
(7)楽譜表示処理の動作
次に、図11〜図12を参照して楽譜表示処理の動作を説明する。前述したメインルーチンのステップSA9(図4参照)を介して楽譜表示処理が実行されると、CPU11は図11に図示するステップSG1に進み、背景画像(五線譜)を表示部16の表示面に描画する。続いて、ステップSG2では、小節数を計数する小節カウンタを初期化する。次いで、ステップSG3では、小節カウンタの値が終端endに達したか否か、つまり曲を形成する全ての小節について楽譜表示し終えたかどうかを判断する。全ての小節について楽譜表示し終えていなければ、判断結果は「NO」になり、ステップSG4に進む。ステップSG4では、五線譜上で小節カウンタの値で指定される小節情報に基づき、例えば五線譜上に音部記号や調記号、小節線などを描画する。
【0060】
そして、ステップSG5では、音符データを指定するノートポインタnptrをゼロリセットする。続いて、ステップSG6では、ノートポインタnptrが1小節分の音を指定し終えた否かを判断する。1小節分の音を指定し終えていなければ、判断結果は「NO」になり、ステップSG7に進み、ノートポインタnptrが現在指定する音符データの表示位置を計算する。次いで、ステップSG8では、上記ステップSG7にて算出した表示位置に、ノートポインタnptrが現在指定する音符データを描画する。この後、ステップSG9に進み、ノートポインタnptrを歩進させてから上記ステップSG6に処理を戻す。
【0061】
こうして、小節カウンタの値で指定される小節を形成する各音の表示位置を順次算出し、それら表示位置に各音符を描画し終えると、上記ステップSG6の判断結果が「YES」になり、ステップSG10に進み、小節カウンタを歩進させた後、上述のステップSG3に処理を戻す。以後、各小節毎に音符の表示位置を算出し、算出した表示位置に対応する音符を描画して行き、全ての小節について音符を描画し終えると、上記ステップSG3の判断結果が「YES」になり、本処理を終える。
【0062】
なお、音符描画に際しては、対応する音符データが備える属性を参照する。音符データが備える属性とは、前述したノートタイプcNoteType、連桁パターン始点cRenkouSおよび連桁パターン終点RenkouEの他、上述した連桁処理(図9〜図10参照)において算出される連桁傾きを含む。
【0063】
図12は、楽譜表示処理によって画面表示される楽譜の一例を示す図である。図12(a)は、前述した連桁処理による連桁傾きの補正を行わない場合の譜例である。この譜例では、連桁傾きの補正が行われず、連桁開始音と連桁終了音との音高差だけで連桁の傾きを決めるため、不揃いとなり連桁する音符が見難いものとなっている。これに対し、同図(b)は、前述した連桁処理による連桁傾きの補正を行った譜例である。この譜例では、前述した補正により連桁の傾きが不揃いにならず、連桁する音符を見易く表示できるようになっている。
【0064】
(8)ライン分離処理の動作
次に、図13を参照してライン分離処理の動作を説明する。前述した楽譜情報生成処理のステップSB11(図5参照)を介して本処理が実行されると、CPU11は図13に図示するステップSH1に処理を進め、曲データ[0]〜[N]を指定するノートポインタmeをゼロリセットする。続いて、ステップSH2では、ノートポインタmeで指定される曲データ[me]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSH3に進む。ステップSH3では、ノートポインタmeで指定される曲データ[me]の次のノート(曲データ[me+1])を指定するポインタ値を、ノートポインタneにストアする。
【0065】
次いで、ステップSH4では、ノートポインタmeで指定される曲データ[me]の発音時刻me(ON)がノートポインタneで指定される曲データ[ne]の発音時刻ne(ON)に一致しないか、あるいはノートポインタmeで指定される曲データ[me]の消音時刻me(OFF)がノートポインタneで指定される曲データ[ne]の発音時刻ne(OFF)に一致しないか、つまり隣り合う音同士が同時発音するかどうかを判断している。同時発音する場合には、ここでの判断結果は「NO」になり、後述するステップSH12に進む。
【0066】
一方、隣り合う音同士が同時発音しなければ、上記ステップSH4の判断結果は「YES」になり、ステップSH5に進む。ステップSH5〜SH7では、ノートポインタmeで指定される曲データ[me]の発音時刻me(ON)から消音時刻me(OFF)まで、つまり曲データ[me]の音が発音中に、次の音(曲データ[ne])が発音あるいは消音したかどうかを判断する。この条件に合致する場合には、ステップSH6又はステップSH7のいずれかの判断結果が「YES」になり、ステップSH8に進む。これに対し、曲データ[me]の音が発音中に、次の音(曲データ[ne])が発音あるいは消音しない場合には、ステップSH6又はステップSH7のいずれかの判断結果が「NO」になり、ステップSH12に進む。
【0067】
そして、ステップSH8では、フラグcPolyに「1」をセットする。次いで、ステップSH9では、曲データ[me]の音高Pitchが曲データ[ne]の音高Pitchより高いか否かを判断する。曲データ[me]の音高Pitchが曲データ[ne]の音高Pitchより高ければ、判断結果は「YES」になり、ステップSH10に進み、曲データ[me]に対応する音符データのライン番号cLineとして、フラグcPolyの値をセットする。
【0068】
一方、曲データ[ne]の音高Pitchが曲データ[me]の音高Pitchより高ければ、上記ステップSH9の判断結果は「NO」になり、ステップSH11に進み、曲データ[ne]に対応する音符データのライン番号cLineとして、フラグcPolyの値をセットする。
【0069】
この後、ステップSH12に進み、曲データ[me]の消音時刻me(OFF)が曲データ[ne]の発音時刻ne(ON)より先か否かを判断する。ここで、消音時刻me(OFF)が発音時刻ne(ON)より後であると、判断結果は「NO」になり、ステップSH14に進み、ノートポインタneを歩進させた後、上述のステップSH4に処理を戻し、歩進されたノートポインタneにて指定される曲データ[ne]について、曲データ[me]との発音重複の有無を再度判定する。
【0070】
一方、消音時刻me(OFF)が発音時刻ne(ON)より先であると、上記ステップSH12の判断結果が「YES」になり、ステップSH13に進み、ノートポインタmeをインクリメントして歩進させた後、上述のステップSH2に処理を戻す。以後、ノートポインタmeで指定される曲データ[me]が曲終端endに達する迄、上述したステップSH3以降の処理を繰り返して上述した発音重複の判定を行い、曲データ[me]の音が発音中に、次の音(曲データ[ne])が発音あるいは消音する場合、すなわち発音期間が重複すれば、音高の大小に応じて異なるラインとして分離する。そして、ノートポインタmeで指定される曲データ[me]が曲終端endに達すると、ステップSH2の判断結果が「YES」になり、本処理を終える。
【0071】
このように、第1実施形態では、発音時刻(オン時刻)又は消音時刻(オフ時刻)の少なくともいずれか一方が異なり、発音期間が重複する音符同士を、音高の大小に応じて2つのラインに分離するようにしたので、ライン(演奏パート)の帰属を判りやすく楽譜表示することが可能になっている。
【0072】
C.第2実施形態
次に、図14〜図16を参照して第2実施形態について説明する。第2実施形態の構成は、上述した第1実施形態と共通するので、その説明を省略する。以下では、第1実施形態と相違する楽譜情報生成処理および和音分離処理の動作について説明する。
【0073】
(1)楽譜情報生成処理の動作
第1実施形態と同様にメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11は図14に図示するステップSJ1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、曲データ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSJ2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
【0074】
続いて、ステップSJ3〜SJ8では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて、ステップSJ4を介して前述した個別情報生成処理(図6参照)、ステップSJ5を介して前述した和音処理(図7参照)、ステップSJ6を介して前述した連桁グループ処理(図8参照)およびステップSJ7を介して前述した連桁処理(図9〜図10参照)を実行する。そして、全ての演奏トラックについて処理し終え、ステップSJ8において歩進されるトラックポインタTrptrの値がendになると、ステップSJ3の判断結果が「YES」になり、ステップSJ9に進む。
【0075】
ステップSJ9では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。次いで、ステップSJ10〜SJ12では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて「和音分離処理(ステップSJ11)」を施す。そして、全ての演奏トラックについて「和音分離処理(ステップSJ11)」を行い、ステップSJ12で歩進されるトラックポインタTrptrの値がendになると、ステップSJ10の判断結果が「YES」になり、本処理を完了させる。
【0076】
(2)和音分離処理の動作
次に、図15を参照して和音分離処理の動作を説明する。上述した第2実施形態による楽譜情報生成処理のステップSJ11を介して本処理が実行されると、CPU11は図15に図示するステップSK1に進み、曲データ[0]〜[N]を指定するノートポインタmeをゼロリセットする。次いで、ステップSK2では、ノートポインタmeで指定される曲データ[me]が曲終端endに達したかどうかを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSK3に進む。ステップSK3では、ノートポインタmeで指定される曲データ[me]の次のノート(曲データ[me+1])を指定するポインタ値を、ノートポインタneにストアする。
【0077】
続いて、ステップSK4では、ノートポインタneで指定される曲データ[ne]が曲終端endに達したかどうかを判断する。曲終端endに達した場合には、判断結果が「YES」になり、ステップSK11に進み、ノートポインタmeをインクリメントして歩進させた後、上述のステップSK2に処理を戻す。一方、ノートポインタneで指定される曲データ[ne]が曲終端endに達していなければ、上記ステップSK4の判断結果は「NO」になり、ステップSK5に進む。
【0078】
ステップSK5以降では、ノートポインタneを歩進させながら、ノートポインタmeで指定される曲データ[me]と同じラインであって、かつ発音時刻および音長が共通する和音構成音(曲データ[ne])の内、曲データ[me]より音高の低い和音構成音(曲データ[ne])を探し出し、該当する和音構成音(曲データ[ne])を曲データ[me]とは異なるラインに分離する。すなわち、先ずステップSK5では、ノートポインタneで指定される曲データ[ne]のライン番号cLineが「0」であるか否かを判断する。ここで、ライン番号cLineが「0」であると、判断結果は「YES」になり、次のステップSK6に進むが、ライン番号cLineが「0」でなければ、判断結果は「NO」となり、後述のステップSK10に進む。
【0079】
次に、ステップSK6では、ノートポインタmeで指定される曲データ[me]の発音開始時刻ITimeと、ノートポインタneで指定される曲データ[ne]の発音開始時刻ITimeとが一致するか否かを判断する。一致する場合には、判断結果が「YES」になり、次のステップSK7に進むが、不一致であれば、判断結果は「NO」となり、後述のステップSK10に進む。続いて、ステップSK7では、ノートポインタmeで指定される曲データ[me]の音長lGateと、ノートポインタneで指定される曲データ[ne]の音長lGateとが一致するか否かを判断する。一致する場合には、判断結果が「YES」になり、次のステップSK7に進むが、不一致であれば、判断結果は「NO」となり、後述のステップSK10に進む。
【0080】
次いで、ステップSK8では、ノートポインタmeで指定される曲データ[me]の音高Pitchが、ノートポインタneで指定される曲データ[ne]の音高Pitchより低いか否かを判断する。ここで、曲データ[ne]の音高Pitchが曲データ[me]より高いと、判断結果が「YES」になり、次のステップSK9に進むが、低ければ、判断結果は「NO」となり、後述のステップSK10に進む。そして、ステップSK9では、ノートポインタneで指定される曲データ[ne]のライン番号cLineに「1」をセットし、続くステップSK10では、ノートポインタneをインクリメントして歩進させた後、上述のステップSK4に処理を戻す。
【0081】
このように、第2実施形態では、ノートポインタmeで指定される曲データ[me]と同じラインであって、かつ発音時刻および音長が共通する和音構成音(曲データ[ne])の内、曲データ[me]より音高の低い和音構成音(曲データ[ne])を探し出し、該当する和音構成音(曲データ[ne])を曲データ[me]とは異なるラインに分離するので、楽譜化する曲データが和音を形成する場合であっても、ラインの帰属を判りやすく楽譜表示することができる。例えば図16(a)に図示する譜例のように、和音分離をしないと、第7音目の和音のラインの帰属が不明瞭であるが、上述した和音分離処理を施すことにより、同図(b)に図示する通り、第7音目の和音のラインの帰属が明確になる。
【0082】
D.第3実施形態
次に、図17〜図19を参照して第3実施形態について説明する。第3実施形態の構成は、上述した第1実施形態と共通するので、その説明を省略する。以下では、第1実施形態と相違する楽譜情報生成処理および休符省略処理の動作について説明する。
【0083】
(1)楽譜情報生成処理の動作
第1実施形態と同様にメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11は図17に図示するステップSL1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、曲データ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSL2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
【0084】
続いて、ステップSL3〜SL8では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて、ステップSL4を介して前述した個別情報生成処理(図6参照)、ステップSL5を介して前述した和音処理(図7参照)、ステップSL6を介して前述した連桁グループ処理(図8参照)およびステップSJ7を介して前述した連桁処理(図9〜図10参照)を実行する。そして、全ての演奏トラックについて処理し終え、ステップSL8において歩進されるトラックポインタTrptrの値がendになると、ステップSL3の判断結果が「YES」になり、ステップSL9に進む。
【0085】
ステップSL9では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。次いで、ステップSL10〜SL12では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて「休符省略処理(ステップSL11)」を施す。そして、全ての演奏トラックについて「休符省略処理(ステップSL11)」を行い、ステップSL12で歩進されるトラックポインタTrptrの値がendになると、ステップSL10の判断結果が「YES」になり、本処理を完了させる。
【0086】
(2)休符省略処理の動作
次に、図18を参照して休符省略処理の動作を説明する。上述した第3実施形態による楽譜情報生成処理のステップSL11を介して本処理が実行されると、CPU11は図18に図示するステップSM1に進み、小節ポインタBrptrをゼロリセットする。続いて、ステップSM2では、全ての小節について処理し終えたかどうかを判断する。全ての小節について処理し終えたならば、判断結果は「YES」になり、本処理を終えるが、そうでなければ、判断結果が「NO」になり、ステップSM3に進む。ステップSM3では、小節ポインタBrptrで指定される小節の休符省略フラグiOmit[Brptr]をゼロリセットする。
【0087】
次いで、ステップSM4では、レジスタiMには、小節ポインタBrptrで指定される小節最初の休符時刻をストアする。休符時刻は、前述した個別情報生成処理(図6参照)にて得られる。続いて、ステップSM5では、休符の次の音のオン時刻(発音開始時刻lTime)をレジスタiMNにストアする。そして、ステップSM6では、レジスタiMの休符時刻とレジスタiMNのオン時刻が一致するか否かを判断する。不一致ならば、休符省略する必要がないので、判断結果は「NO」になり、ステップSM13に進み、小節ポインタBrptrをインクリメントして歩進させた後、上記ステップSM2に処理を戻す。
【0088】
一方、休符時刻と次の音のオン時刻とが一致した場合には、上記ステップSM6の判断結果が「YES」になり、ステップSM7に進む。ステップSM7では、レジスタiMの休符時刻を有する休符と同じライン上で最初に発音される音のノートポインタを、ノートポインタmeに設定する。続いて、ステップSM8では、対のラインの音を指定するノートポインタmmをゼロリセットする。そして、ステップSM9〜SM11では、ノートポインタmmを歩進させながら、休符の次の音の発音時刻と同じ時刻に発音する音を対のラインから探し出す。
【0089】
すなわち、ステップSM9では、ノートポインタmmで指定される対のラインの音が曲終端endに達したかどうかを判断する。曲終端endに達すると、判断結果は「YES」になり、ステップSM13に進み、小節ポインタBrptrをインクリメントして歩進させた後、上記ステップSM2に処理を戻す。これに対し、曲終端endに達していなければ、上記ステップSM9判断結果は「NO」になり、ステップSM10に進む。
【0090】
ステップSM10では、ノートポインタmmで指定される対のラインの音の発音時刻と、ノートポインタmeで指定される音の発音時刻とが一致するかどうかを判断する。そして、不一致ならば、判断結果は「NO」になり、ステップSM11に進み、ノートポインタmmを歩進させた後、上述のステップSM9に処理を戻す。一方、一致する場合には、判断結果が「YES」になり、ステップSM12に進み、小節ポインタBrptrで指定される小節の休符省略フラグiOmit[Brptr]に「1」をセットして休符省略する旨を表す。この後、ステップSM13にて小節ポインタBrptrを歩進させてから上述のステップSM2に処理を戻す。以後、小節ポインタBrptrが最終小節に達するまで上述した過程を繰り返す。
【0091】
したがって、例えば図19(a)は、休符省略しない譜例であるが、これに本処理を適用すると、同図(b)に図示する通り、第1小節第1音目および第2小節第1音目に対応する休符が省略される。これにより、休符をライン毎に設けることから、曲内容によっては表示すべき休符が多くなり過ぎ、見難い楽譜になるという従来の弊害を解消でき、ライン(演奏パート)の帰属を判りやすく楽譜表示することが可能になっている。
【0092】
E.第4実施形態
次に、図20〜図21を参照して第4実施形態について説明する。第4実施形態の構成は、上述した第1実施形態と共通するので、その説明を省略する。以下では、第1実施形態と相違する楽譜情報生成処理および両手分離処理の動作について説明する。
【0093】
(1)楽譜情報生成処理の動作
第1実施形態と同様にメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11は図20に図示するステップSN1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、曲データ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSN2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
【0094】
続いて、ステップSN3〜SN8では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて、ステップSN4を介して前述した個別情報生成処理(図6参照)、ステップSN5を介して前述した和音処理(図7参照)、ステップSN6を介して前述した連桁グループ処理(図8参照)およびステップSN7を介して前述した連桁処理(図9〜図10参照)を実行する。そして、全ての演奏トラックについて処理し終え、ステップSN8において歩進されるトラックポインタTrptrの値がendになると、ステップSN3の判断結果が「YES」になり、ステップSN9に進む。
【0095】
ステップSN9では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。次いで、ステップSN10〜SN12では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて「両手分離処理(ステップSN11)」を施す。そして、全ての演奏トラックについて「両手分離処理(ステップSN11)」を行い、ステップSL12で歩進されるトラックポインタTrptrの値がendになると、ステップSL10の判断結果が「YES」になり、本処理を完了させる。
【0096】
(2)両手分離処理の動作
次に、図21を参照して両手分離処理の動作を説明する。上述した第4実施形態による楽譜情報生成処理のステップSN11を介して本処理が実行されると、CPU11は図21に図示するステップSP1に進み、第1実施形態によるライン分離処理(図13参照)を実行する。ライン分離処理では、前述したように、発音時刻(オン時刻)又は消音時刻(オフ時刻)の少なくともいずれか一方が異なり、発音期間が重複する音符同士を、音高の大小に応じて2つのラインに分離する。
【0097】
そして、ステップSP2以降では、上記ステップSP1にて分離されたラインを左右パートに選り分ける。すなわち、ステップSP2では、ノートポインタmeをゼロリセットする。次いで、ステップSP3では、ノートポインタmeにて指定される曲データ[me]が曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSP4に進む。ステップSP4では、ノートポインタmeで指定される曲データ[me]の音高Pitchが所定値Aより大きいか否かを判断する。所定値Aより大きい場合には、判断結果が「YES」になり、ステップSP7に進み、その音を右手パートにアサインする。そして、ステップSP9に進み、ノートポインタmeをインクリメントして歩進させた後、上述のステップSP3に処理を戻す。
【0098】
一方、ノートポインタmeで指定される曲データ[me]の音高Pitchが所定値Aより小さければ、上記ステップSP4の判断結果は「NO」になり、ステップSP5に進む。ステップSP5では、ノートポインタmeで指定される曲データ[me]の音高Pitchが所定値Bより小さいか否かを判断する。所定値Bより小さいと、判断結果は「YES」になり、ステップSP8に進み、その音を右手パートにアサインする。そして、ステップSP9に進み、ノートポインタmeをインクリメントして歩進させた後、上述のステップSP3に処理を戻す。
【0099】
これに対し、ノートポインタmeで指定される曲データ[me]の音高Pitchが所定値Bより大きいと、上記ステップSP5の判断結果が「NO」になり、ステップSP6に進む。ステップSP6では、ノートポインタmeで指定される曲データ[me]のライン番号cLineが「1」であるかどうかを判断する。ライン番号cLineが「1」であると、判断結果は「YES」になり、ステップSP7に進み、右手パートにアサインする。一方、ライン番号cLineが「0」ならば、上記ステップSP6の判断結果は「NO」になり、ステップSP8に進み、左手パートにアサインする。
【0100】
この後、ステップSP9にてノートポインタmeを歩進させてから、上述のステップSP3に処理を戻す。以後、歩進されたノートポインタmeが曲終端endに達する迄、上述したステップSP4以降を繰り返す。こうして、各音を左右パートにアサインすることによって、両手各パートに対応するラインが混在した曲データの場合、ラインの帰属が判り難い楽譜になるという弊害を回避することができる。
【0101】
F.第5実施形態
次に、図22〜図25を参照して第5実施形態について説明する。第5実施形態の構成は、上述した第1実施形態と共通するので、その説明を省略する。以下では、第1実施形態と相違する楽譜情報生成処理およびライン間調整処理の動作について説明する。
【0102】
(1)楽譜情報生成処理の動作
第1実施形態と同様にメインルーチンのステップSA6(図4参照)を介して本処理が実行されると、CPU11は図22に図示するステップSQ1に処理を進め、選択された曲情報、すなわち各演奏トラック毎の曲データ[0]〜[N]について周知のクオンタイズ(時間軸の量子化)を施す。クオンタイズにより、曲データ[0]〜[N]の発音開始時刻ITimeのずれが補正される。次いで、ステップSQ2では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。
【0103】
続いて、ステップSQ3〜SQ8では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて、ステップSQ4を介して前述した個別情報生成処理(図6参照)、ステップSQ5を介して前述した和音処理(図7参照)、ステップSQ6を介して前述した連桁グループ処理(図8参照)およびステップSQ7を介して前述した連桁処理(図9〜図10参照)を実行する。そして、全ての演奏トラックについて処理し終え、ステップSQ8において歩進されるトラックポインタTrptrの値がendになると、ステップSQ3の判断結果が「YES」になり、ステップSQ9に進む。
【0104】
ステップSQ9では、演奏トラックを指定するトラックポインタTrptrをゼロリセットする。次いで、ステップSQ10〜SQ12では、全ての演奏トラックを指定し終える迄、トラックポインタTrptrを歩進させつつ、その歩進されるトラックポインタTrptrで指定される演奏トラックの曲データについて「ライン間調整処理(ステップSQ11)」を施す。そして、全ての演奏トラックについて「ライン間調整処理(ステップSQ11)」を行い、ステップSQ12で歩進されるトラックポインタTrptrの値がendになると、ステップSQ10の判断結果が「YES」になり、本処理を完了させる。
【0105】
(2)ライン間調整処理の動作
次に、図23を参照してライン間調整処理の動作を説明する。上述した第5実施形態による楽譜情報生成処理のステップSQ11を介して本処理が実行されると、CPU11は図23に図示するステップSR1に進み、小節カウンタiMを初期化する。次いで、ステップSR2では、小節カウンタiMにてカウントされる小節番号が曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSR3に進む。ステップSR3では、小節カウンタiMの値で指定される小節(iM)先端の時刻をレジスタlTickSに、当該小節(iM)後端の時刻をレジスタlTickEにそれぞれストアする。
【0106】
続いて、ステップSR4では、レジスタiSum0、レジスタiSum1、レジスタiNoteN0およびレジスタiNoteN1をそれぞれゼロリセットする。次に、ステップSR5に進み、ノートポインタmeをゼロリセットする。ステップSR6では、ノートポインタmeで指定される曲データ[me]が曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSR7に進む。ステップSR7では、ノートポインタmeで指定される曲データ[me]が、小節カウンタiMの値で指定される小節(iM)に含まれるか否かを判断する。曲データ[me]が小節(iM)に含まれていなければ、判断結果は「NO」になり、ステップSR11に進み、ノートポインタmeを歩進させた後、上述のステップSR6に処理を戻す。
【0107】
一方、曲データ[me]が小節(iM)に含まれていれば、上記ステップSR7の判断結果は「YES」になり、ステップSR8に進む。ステップSR8では、ノートポインタmeで指定される曲データ[me]のライン番号cLineが「0」であるか否かを判断する。ライン番号cLineが「0」であると、判断結果は「YES」になり、ステップSR9に進み、当該曲データ[me]の音高PitchをレジスタiSum0に加算すると共に、レジスタiNoteN0をインクリメントした後、ステップSR11にてノートポインタmeを歩進させてから上述のステップSR6に処理を戻す。
【0108】
これに対し、ノートポインタmeで指定される曲データ[me]のライン番号cLineが「0」でなければ、上記ステップSR8の判断結果が「NO」になり、ステップSR10に進む。ステップSR10では、当該曲データ[me]の音高PitchをレジスタiSum1に加算すると共に、レジスタiNoteN1をインクリメントした後、ステップSR11にてノートポインタmeを歩進させてから上述のステップSR6に処理を戻す。
【0109】
こうして、小節カウンタiMの値で指定される小節(iM)において、ライン番号cLine「0」の音の音高累算値iSum0およびその音数iNoteN0と、ライン番号cLine「1」の音の音高累算値iSum1およびその音数iNoteN1とを求めた後、ステップSR6の判断結果が「YES」になると、図24に図示するステップSR12に処理を進める。ステップSR12では、ライン番号cLine「0」の音数iNoteN0と、ライン番号cLine「1」の音数iNoteN1とが共に「0」より大きいか否かを判断する。音数iNoteN0もしくは音数iNoteN1のいずれか又は双方が「0」であると、判断結果は「NO」になり、ステップSR23に進み、小節カウンタiMを歩進させた後、前述したステップSR2(図23参照)に処理を戻す。
【0110】
一方、ライン番号cLine「0」の音数iNoteN0およびライン番号cLine「1」の音数iNoteN1が共に「0」より大きければ、上記ステップSR12の判断結果は「YES」になり、ステップSR13に進み、ノートポインタmeをゼロリセットする。そして、ステップSR14では、ノートポインタmeで指定される曲データ[me]が曲終端endに達したか否かを判断する。曲終端endに達していなければ、判断結果は「NO」になり、ステップSR15に進む。ステップSR15では、ノートポインタmeで指定される曲データ[me]が、小節カウンタiMの値で指定される小節(iM)に含まれるか否かを判断する。
【0111】
曲データ[me]が小節(iM)に含まれていなければ、判断結果は「NO」になり、ステップSR22に進み、ノートポインタmeを歩進させた後、上述のステップSR14に処理を戻す。一方、曲データ[me]が小節(iM)に含まれていれば、上記ステップSR15の判断結果は「YES」になり、ステップSR16に進む。ステップSR16では、ノートポインタmeで指定される曲データ[me]と発音重複する音の有無を判断する。ノートポインタmeで指定される曲データ[me]と発音重複する音が有ると、判断結果は「NO」になり、ステップSR22に進み、ノートポインタmeを歩進させた後、上述のステップSR14に処理を戻す。
【0112】
これに対し、ノートポインタmeで指定される曲データ[me]と発音重複する音が無ければ、上記ステップSR16の判断結果が「YES」になり、ステップSR17に進む。ステップSR17〜SR18では、ノートポインタmeで指定される曲データ[me]の音高Pitchと平均音高iSum0/iNoteN0との差分iDev0と、ノートポインタmeで指定される曲データ[me]の音高Pitchと平均音高iSum1/iNoteN1との差分iDev1とを算出する。
【0113】
ここで、平均音高iSum0/iNoteN0は、ライン番号cLine「0」の音の音高累算値iSum0およびその音数iNoteN0から得られる。したがって、差分iDev0は、ライン番号cLine「0」の音の平均音高との差分を表す。また、平均音高iSum1/iNoteN1は、ライン番号cLine「1」の音の音高累算値iSum1およびその音数iNoteN1から得られる。したがって、差分iDev1は、ライン番号cLine「1」の音の平均音高との差分を表す。
【0114】
そして、ステップSR19では、差分iDev0が差分iDev1より小さいか否かを判断する。差分iDev0が差分iDev1より小さければ、判断結果は「YES」になり、ステップSR20に進み、ライン番号cLineを「0」にセットした後、ステップSR22に進む。一方、差分iDev0が差分iDev1より大きいと、上記ステップSR21の判断結果が「NO」になり、ステップSR22に進み、ライン番号cLineを「1」にセットした後、ステップSR22に進む。
【0115】
このように、ライン間調整処理では、小節毎にライン番号cLine「0」の音の平均音高と、ライン番号cLine「1」の音の平均音高とを求めておき、小節中に他音と重複せずに単独で存在する独立音が有る場合、その独立音とライン番号cLine「0」の音の平均音高との差分iDev0と、独立音とライン番号cLine「1」の音の平均音高との差分iDev1との大小比較結果に応じて、その独立音をライン番号cLine「0」又は「1」のいずれかにするのかを調整する。これにより、例えば図25(a)に図示する譜例であれば、同図(b)に図示するようにライン間調整される。この結果、複数のラインが存在する小節の中に単独に存在する音符があると、どのラインに帰属するのかが不明な判り難い楽譜になるという従来の弊害を解消でき、ラインの帰属を判りやすく楽譜表示することが可能になっている。
【図面の簡単な説明】
【0116】
【図1】本発明による第1実施形態の構成を示すブロック図である。
【図2】曲データの構成を示す図である。
【図3】音符データの構成を示す図である。
【図4】第1実施形態によるメインルーチンの動作を示すフローチャートである。
【図5】第1実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図6】第1実施形態による個別情報生成処理の動作を示すフローチャートである。
【図7】第1実施形態による和音処理の動作を示すフローチャートである。
【図8】第1実施形態による連桁グループ処理の動作を示すフローチャートである。
【図9】第1実施形態による連桁処理の動作を示すフローチャートである。
【図10】第1実施形態による連桁処理の動作を示すフローチャートである。
【図11】第1実施形態による楽譜表示処理の動作を示すフローチャートである。
【図12】第1実施形態による楽譜表示処理によって画面表示される楽譜の一例を示す図である。
【図13】第1実施形態によるライン分離処理の動作を示すフローチャートである。
【図14】第2実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図15】第2実施形態による和音分離処理の動作を示すフローチャートである。
【図16】和音分離処理の動作を説明するための楽譜の一例である。
【図17】第3実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図18】第3実施形態による休符省略処理の動作を示すフローチャートである。
【図19】休符省略処理の動作を説明するための楽譜の一例である。
【図20】第4実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図21】第4実施形態による両手分離処理の動作を示すフローチャートである。
【図22】第5実施形態による楽譜情報生成処理の動作を示すフローチャートである。
【図23】第5実施形態によるライン間調整処理の動作を示すフローチャートである。
【図24】第5実施形態によるライン間調整処理の動作を示すフローチャートである。
【図25】ライン間調整処理の動作を説明するための楽譜の一例である。
【符号の説明】
【0117】
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