(57)【特許請求の範囲】
【請求項１】
曲を構成する各音毎に臨時記号の要否を判定する要否判定手段と、
前記要否判定手段により臨時記号を必要とする対象音と判定された場合、その対象音と時間的に対応する和音を検索するとともに、当該検索された和音の構成音から、当該対象音と同音高の該当音を検索する検索手段と、
前記検索手段により該当音が検索された場合に、その該当音に付与されている臨時記号を、対象音の臨時記号に設定する臨時記号設定手段と、
前記臨時記号設定手段により対象音に設定された臨時記号を、曲を構成する各音と共に楽譜上に表示する表示手段と
を具備することを特徴とする臨時記号表示装置。
【請求項２】
曲を構成する各音毎に臨時記号の要否を判定する要否判定処理と、
前記要否判定処理により臨時記号を必要とする対象音と判定された場合、その対象音と時間的に対応する和音を検索するとともに、当該検索された和音の構成音から、当該対象音と同音高の該当音を検索する検索処理と、
前記検索処理により該当音が検索された場合に、その該当音に付与されている臨時記号を、対象音の臨時記号に設定する臨時記号設定処理と、
前記臨時記号設定処理により対象音に設定された臨時記号を、曲を構成する各音と共に楽譜上に表示する表示処理と
をコンピュータで実行させることを特徴とする臨時記号表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽譜表示機能を備える電子楽器などに用いて好適な臨時記号表示装置および臨時記号表示プログラムに関する。
【背景技術】
【０００２】
曲を構成する各音符を表すＭＩＤＩイベントと、調号および長調／短調を指定する調性メタイベントとを含むＳＭＦ形式の曲データに基づき、調号や必要な音符に自動的に付加した臨時記号を含む楽譜を表示可能にする装置が知られており、この種の装置については、例えば特許文献１に開示されている。
【０００３】
【特許文献１】特開２００２−２６８６３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の装置のように、曲データ中の調性メタイベントに従って調号を楽譜上に表示するものでは、各調ごとにフラットやシャープを付与する音が固定的に決っている。この為、曲の途中で転調があった時に、例えば転調前に「Ｃ３シャープ」で表示されていた音（ＭＩＤＩノートナンバで「６１」に相当する音高）が、転調後から「Ｄ３フラット」で表記されるような事態が生じて楽譜表記の統一性を失う結果、楽譜が見難く分りづらいものになってしまうという問題がある。
【０００５】
本発明は、このような事情に鑑みてなされたもので、臨時記号を見易く表示させることができる臨時記号表示装置および臨時記号表示プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
請求項１に記載の発明では、曲を構成する各音毎に臨時記号の要否を判定する要否判定手段と、前記要否判定手段により臨時記号を必要とする対象音と判定された場合、その対象音と時間的に対応する和音を検索するとともに、当該検索された和音の構成音から、当該対象音と同音高の該当音を検索する検索手段と、前記検索手段により該当音が検索された場合に、その該当音に付与されている臨時記号を、対象音の臨時記号に設定する臨時記号設定手段と、前記臨時記号設定手段により対象音に設定された臨時記号を、曲を構成する各音と共に楽譜上に表示する表示手段とを具備することを特徴とする。
【００１５】
請求項２に記載の発明では、曲を構成する各音毎に臨時記号の要否を判定する要否判定処理と、前記要否判定処理により臨時記号を必要とする対象音と判定された場合、その対象音と時間的に対応する和音を検索するとともに、当該検索された和音の構成音から、当該対象音と同音高の該当音を検索する検索処理と、前記検索処理により該当音が検索された場合に、その該当音に付与されている臨時記号を、対象音の臨時記号に設定する臨時記号設定処理と、前記臨時記号設定処理により対象音に設定された臨時記号を、曲を構成する各音と共に楽譜上に表示する表示処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００２０】
請求項１、５に記載の発明によれば、曲を構成する各音毎に臨時記号の要否を判定し、臨時記号を必要とする対象音と判定されると、その対象音より時間的に前方に存在し、かつ当該対象音と同じ小節内で同音高の該当音を検索し、該当音が検索されると、その該当音に付与されている臨時記号を、対象音の臨時記号に設定する。そして、対象音に設定された臨時記号を、曲を構成する各音と共に楽譜上に表示するので、臨時記号を見易く表示させることができる。
【００２１】
請求項２、６に記載の発明によれば、曲を構成する各音毎に臨時記号の要否を判定し、臨時記号を必要とする対象音と判定されると、その対象音より時間的に前方に存在し、当該対象音と同音高の該当音を検索し、該当音が検索されると、その該当音に付与されている臨時記号を、対象音の臨時記号に設定する。そして、対象音に設定された臨時記号を、曲を構成する各音と共に楽譜上に表示するので、臨時記号を見易く表示させることができる。
【００２２】
請求項１、２に記載の発明によれば、曲を構成する各音毎に臨時記号の要否を判定し、臨時記号を必要とする対象音と判定されると、その対象音と時間的に対応する和音を検索するとともに、当該検索された和音の構成音から、当該対象音と同音高の該当音を検索し、該当音が検索されると、その該当音に付与されている臨時記号を、対象音の臨時記号に設定する。そして、対象音に設定された臨時記号を、曲を構成する各音と共に楽譜上に表示するので、臨時記号を見易く表示させることができる。
【発明を実施するための最良の形態】
【００２７】
以下、図面を参照して本発明の実施形態について説明する。
Ａ．構成
図１は、本発明の実施の一形態による臨時記号表示装置の全体構成を示すブロック図である。この図に示す臨時記号表示装置は、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、操作部４、表示部５および入力手段６から構成される。ＣＰＵ１は、操作部４が発生するスイッチイベントに応じて装置各部を制御するものであり、その特徴的な処理動作については追って詳述する。ＲＯＭ２は、ＣＰＵ１にロードされる各種制御プログラムやデータテーブル等を記憶する。ここで言う各種制御プログラムとは、後述するメインルーチン、臨時記号判定処理および表示処理を含む。また、ＲＯＭ２に記憶されるデータテーブルとは、例えば図２に図示するコードテーブルＣＴを指す。
【００２８】
コードテーブルＣＴは、ルート（根音）およびタイプ（コード種）で決るコードに応じて、当該コードのノート（構成音）に付与する臨時記号を読み出すテーブルである。なお、コードテーブルＣＴにおいて、ルートやノートは音名に対応する値（０〜１１）で表される。タイプは、例えば「０：メジャー」、「１：マイナー」、「２：セブンス」で表される。臨時記号は、「０：無」、「１：シャープ」、「３：フラット」で表されるようになっている。
【００２９】
ＲＡＭ３は、データエリアおよびワークエリアを備える。ＲＡＭ３のワークエリアには、ＣＰＵ１の処理に用いられる各種レジスタ・フラグデータが一時記憶される。ＲＡＭ３のデータエリアには、後述する入力手段６を介して入力される曲データが格納される。ここで、図３を参照してＲＡＭ３のデータエリアに格納される曲データの構成を説明する。
【００３０】
図３に図示するように、曲データは、曲を構成する各音を表すノートデータＮＤと、曲中のコードを表すコードデータＣＤとから構成される。ノートデータＮＤは、発音時刻を表すタイミングＴｉｍｅ［０］〜［Ｎ］に対応するノート番号ＮｏｔｅＮｏ［０］〜［Ｎ］および臨時記号Ａｃｃ［０］〜［Ｎ］を備える。ノート番号ＮｏｔｅＮｏ［０］〜［Ｎ］は発音音高を表す。臨時記号Ａｃｃ［０］〜［Ｎ］は、対応する音に付与する臨時記号を表すものであり、後述の臨時記号判定処理（図５〜図８参照）によりデータセットされる。臨時記号Ａｃｃとしてデータセットされる値は、「０」の場合に臨時記号無しを、「１」の場合にシャープを、「３」の場合にフラットをそれぞれ表す。
【００３１】
一方、コードデータＣＤは、発音時刻を表すタイミングＴｉｍｅ［０］〜［Ｎ］に対応して、ルートを表すＣｈｏｒｄＲ［０］〜［Ｎ］と、タイプを表すＣｈｏｒｄＴ［０］〜［Ｎ］とから構成される。なお、ノートデータＮＤおよびコードデータＣＤの終端には、曲の終わりを表すデータＥＮＤが設けられる。
【００３２】
操作部４は、各種操作スイッチを備え、ユーザのスイッチ操作に応じたスイッチイベントを発生する。この操作部４には、図示されていないが、例えば楽譜表示する曲を選択する曲選択スイッチや、後述する入力手段６を介して曲データをＲＡＭ３のデータエリアに格納するよう指示する曲入力スイッチ等が設けられている。
【００３３】
表示部５は、ＣＰＵ１から供給される表示制御信号に応じて、例えば選択された曲データの楽譜、調号および臨時記号を画面に表示する。入力手段６は、例えば入力インタフェースやＭＩＤＩインタフェースを備え、ＣＰＵ１の制御の下に、いずれかのインタフェースを介して上述した曲データをＲＡＭ３のデータエリアに格納する。
【００３４】
Ｂ．動作
次に、図４〜図１０を参照して実施形態の動作を説明する。以下では、最初に概略動作としてＣＰＵ１が実行するメインルーチンの動作について述べた後、このメインルーチンを構成する臨時記号判定処理および表示処理の各動作を説明する。
【００３５】
（１）メインルーチンの動作
装置電源の投入に応じて、ＣＰＵ１は図４に図示するメインルーチンを実行してステップＳＡ１に処理を進め、ＲＡＭ３のワークエリアに設けられる各種レジスタ・フラグデータをイニシャライズする初期化処理を行う。次いで、ステップＳＡ２では、入力手段６を介して曲データを取込み、ＲＡＭ３のデータエリアに格納する。そして、ステップＳＡ３では、ポインタｉをゼロリセットする。続いて、ステップＳＡ４〜ＳＡ７では、曲終端ＥＮＤに達するまでポインタｉを歩進させながら、この歩進されるポインタｉで指定されるノートデータ中のノート番号ＮｏｔｅＮｏ［ｉ］の内、臨時記号が必要となる音について付与すべき臨時記号を判定する臨時記号判定処理（後述する）を実行する。
【００３６】
すなわち、ステップＳＡ４では、ポインタｉで指定されるノート番号ＮｏｔｅＮｏ［ｉ］が黒鍵音高であるか否か、つまり臨時記号が必要な黒鍵音（派生音）であるか、又は臨時記号を必要としない白鍵音（幹音）のいずれであるかを判断する。臨時記号を必要としない白鍵音（幹音）ならば、判断結果は「ＮＯ」になり、ステップＳＡ６に進む。これに対し、臨時記号が必要な黒鍵音（派生音）であると、判断結果が「ＹＥＳ」になり、次のステップＳＡ５に進む。なお、上記ステップＳＡ４では、ポインタｉで指定されるノート番号ＮｏｔｅＮｏ［ｉ］が黒鍵音高であるか否かで臨時記号の要否を判断しているが、これに限らず、スケール音か否かを判定する態様としても構わない。
【００３７】
ステップＳＡ５では、臨時記号が必要となる音について付与すべき臨時記号を判定する臨時記号判定処理（後述する）を実行する。次いで、ステップＳＡ６では、ポインタｉをインクリメントして歩進させ、続くステップＳＡ７では、歩進されたポインタｉが曲終端ＥＮＤに達したかどうかを判断する。曲終端ＥＮＤに達していなければ、判断結果は「ＮＯ」になり、上記ステップＳＡ４に処理を戻す。以後、曲終端ＥＮＤに達するまで上記ステップＳＡ４〜ＳＡ７を繰り返し、曲データを構成する各音の内、臨時記号が必要となる音について付与すべき臨時記号を判定する。そして、ポインタｉが曲終端ＥＮＤに達すると、上記ステップＳＡ７の判断結果が「ＹＥＳ」になり、ステップＳＡ８に進み、臨時記号が付与された各音を楽譜として表示する表示処理（後述する）を実行して本処理を終える。
【００３８】
（２）臨時記号判定処理の動作
次に、図５〜図８を参照して臨時記号判定処理の動作を説明する。上述したメインルーチンのステップＳＡ５（図４参照）を介して本処理が実行されると、ＣＰＵ１は図５に図示するステップＳＢ１に進む。ステップＳＢ１では、臨時記号が必要となる音を指定するポインタｉをポインタｋにストアする。続いて、ステップＳＢ２では、ポインタｋをデクリメントする。つまり、臨時記号が必要となる音の１つ前の音を指定する。次いで、ステップＳＢ３では、デクリメントされたポインタｋで指定されるタイミングＴｉｍｅ［ｋ］が、臨時記号を必要とする音を含む小節を超えて前小節まで遡っていないかどうかを判断する。
【００３９】
前小節まで遡っていなければ、判断結果は「ＹＥＳ」になり、次のステップＳＢ４に進む。ステップＳＢ４では、ポインタｉで指定されるノート番号ＮｏｔｅＮｏ［ｉ］と、ポインタｋで指定されるノート番号ＮｏｔｅＮｏ［ｋ］とが一致するか否かを判断する。一致しなければ、判断結果は「ＮＯ」になり、ステップＳＢ２に処理を戻す。
【００４０】
以後、ステップＳＢ２〜ＳＢ４を繰り返すことによって、臨時記号を必要とする音（対象音と記す）を含む小節内において、対象音から１音ずつ遡りながら、当該対象音と同じ音高の音を検索する。そして、対象音と同じ音高の音（ノート番号ＮｏｔｅＮｏ［ｋ］）が検索されると、ステップＳＢ４の判断結果が「ＹＥＳ」になり、ステップＳＢ５に進み、同音高のノート番号ＮｏｔｅＮｏ［ｋ］に付与されている臨時記号Ａｃｃ［ｋ］を、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］にセットして本処理を終える。
【００４１】
一方、対象音から１音ずつ前方へ遡りながら、当該対象音と同じ音高の音を検索する過程で、対象音を含む小節を超えて前小節まで遡ると、上記ステップＳＢ３の判断結果が「ＮＯ」になり、図６に図示するステップＳＢ６に進む。ステップＳＢ６では、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）と同じ発音時刻を有するコードデータを検索する。次いで、ステップＳＢ７では、ＲＯＭ６に格納されるコードテーブルＣＴを参照し、コードデータ（ルートＣｈｏｒｄＲ、タイプＣｈｏｒｄＴ）に対応するノート（構成音）およびそれに付与する臨時記号を読み出す。
【００４２】
ステップＳＢ８では、コードテーブルＣＴから読み出したノート（構成音）と、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）との音名が一致するか否かを判断する。一致する場合には、判断結果が「ＹＥＳ」となり、ステップＳＢ９に進む。ステップＳＢ９では、上記ステップＳＢ７においてコードテーブルＣＴから読み出された臨時記号が「シャープ」又は「フラット」のいずれであるかを判断する。コードテーブルＣＴから読み出された臨時記号が「シャープ」ならば、ステップＳＢ１０に進み、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］に「１」をストアして本処理を終える。一方、コードテーブルＣＴから読み出された臨時記号が「フラット」ならば、ステップＳＢ１１に進み、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］に「３」をストアして本処理を終える。
【００４３】
これに対し、コードテーブルＣＴから読み出したノート（構成音）と、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）との音名が一致しない場合には、上記ステップＳＢ８の判断結果が「ＮＯ」になり、図７に図示するステップＳＢ１２に進む。ステップＳＢ１２では、臨時記号が必要となる音を指定するポインタｉをポインタｋにストアする。次に、ステップＳＢ１３〜ＳＢ１６では、臨時記号を必要とする音（対象音）を含む小節内で、この対象音以降であって、対象音より半音高い音高もしくは半音低い音高の音を検索する。
【００４４】
すなわち、ステップＳＢ１３では、ポインタｋをインクリメントして歩進させ、続くステップＳＢ１４では、歩進されたポインタｋで指定されるタイミングＴｉｍｅ［ｋ］が、対象音を含む小節を超えて次小節まで進んでいないかどうかを判断する。次小節まで進んでいなければ、判断結果は「ＹＥＳ」になり、ステップＳＢ１５に進む。ステップＳＢ１５では、ポインタｋで指定されるノート番号ＮｏｔｅＮｏ［ｋ］とノート番号ＮｏｔｅＮｏ［ｉ］＋１とが一致するか、つまりポインタｋで指定される音の音高が対象音の音高より半音高いか否かを判断する。対象音の音高より半音高い音でなければ、判断結果は「ＮＯ」になり、ステップＳＢ１６に進む。
【００４５】
ステップＳＢ１６では、ポインタｋで指定されるノート番号ＮｏｔｅＮｏ［ｋ］とノート番号ＮｏｔｅＮｏ［ｉ］−１とが一致するか、つまりポインタｋで指定される音の音高が対象音の音高より半音低いか否かを判断する。対象音の音高より半音低い音でなければ、判断結果は「ＮＯ」になり、上記ステップＳＢ１３に処理を戻す。以後、次小節に達するまでステップＳＢ１３〜ＳＢ１６を繰り返し、対象音を含む小節内で対象音より半音高い音高もしくは半音低い音高の音を検索する。
【００４６】
そして、対象音より半音高い音高の音が検索された場合には、上記ステップＳＢ１５の判断結果が「ＹＥＳ」になり、ステップＳＢ１７に進み、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］に「１」をストアして本処理を終える。一方、対象音より半音低い音高の音が検索された場合には、上記ステップＳＢ１６の判断結果が「ＹＥＳ」になり、ステップＳＢ１８に進み、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］に「３」をストアして本処理を終える。
【００４７】
これに対し、対象音を含む小節を超えて次小節に達した場合には、上記ステップＳＢ１４の判断結果が「ＮＯ」になり、図８に図示するステップＳＢ１９に進む。ステップＳＢ１９〜ＳＢ２３では、曲頭から対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）の直前まで音の内から、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）と同じ音高の音を探し出す。すなわち、ステップＳＢ１９では、ポインタｋをゼロリセットし、続くステップＳＢ２０では、ポインタｋで指定されるノート番号ＮｏｔｅＮｏ［ｋ］とノート番号ＮｏｔｅＮｏ［ｉ］とが一致するか否か、つまりポインタｋで指定される音の音高が対象音の音高と一致するかどうかを判断する。
【００４８】
一致しなければ、判断結果は「ＮＯ」になり、ステップＳＢ２２に進み、ポインタｋをインクリメントして歩進させる。そして、ステップＳＢ２３では、歩進されたポインタｋで指定されるタイミングＴｉｍｅ［ｋ］が、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）のタイミングＴｉｍｅ［ｉ］以前であるか否かを判断する。タイミングＴｉｍｅ［ｋ］がタイミングＴｉｍｅ［ｉ］以前であれば、判断結果は「ＹＥＳ」になり、上記ステップＳＢ２０に処理を戻す。
【００４９】
以後、上記ステップＳＢ２０〜ＳＢ２２を繰り返し、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）と同じ音高の音を探し出す。そして、該当する音が検索されると、ステップＳＢ２０の判断結果が「ＹＥＳ」になり、ステップＳＢ２３に進み、同音高のノート番号ＮｏｔｅＮｏ［ｋ］に付与されている臨時記号Ａｃｃ［ｋ］を、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］にセットして本処理を終える。
【００５０】
一方、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）と同じ音高の音が見つからなかった場合には、上記ステップＳＢ２２の判断結果が「ＮＯ」となり、図７に図示するステップＳＢ１７に進み、強制的に対象音に「シャープ」を付与する。すなわち、臨時記号Ａｃｃ［ｉ］に「１」をストアして本処理を終える。
【００５１】
（３）表示処理の動作
次に、図９〜図１０を参照して表示処理の動作を説明する。前述したメインルーチンのステップＳＡ８（図４参照）を介して本処理が実行されると、ＣＰＵ１は図９に図示するステップＳＣ１に進み、ポインタｉをポインタｋにストアする。次いで、ステップＳＣ２〜ＳＣ６（図１０参照）では、ポインタｉで指定される音を含む小節において、ポインタｉが指定する音と同じ音高の音もしくは半音差（半音低い又は半音高い）の音高の音を、ポインタｋのデクリメントにより小節内を遡りながら検索する。以下、「同じ音高の音が検索された場合」、「半音低い音が検索された場合」、「半音高い音が検索された場合」に分けて動作を説明する。
【００５２】
＜同じ音高の音が検索された場合＞
この場合、ポインタｉで指定されるノート番号ＮｏｔｅＮｏ［ｉ］と、ポインタｋで指定されるノート番号ＮｏｔｅＮｏ［ｋ］とが一致するので、ステップＳＣ４の判断結果が「ＹＥＳ」になり、ステップＳＣ７に進み、ノート番号ＮｏｔｅＮｏ［ｉ］の臨時記号Ａｃｃ［ｉ］を非表示とした後、後述のステップＳＣ１４に進む。
【００５３】
＜半音低い音が検索された場合＞
この場合、ポインタｋで指定されるノート番号ＮｏｔｅＮｏ［ｋ］が、ポインタｉで指定されるノート番号ＮｏｔｅＮｏ［ｉ］より半音低くなるので、図１０に図示するステップＳＣ５の判断結果が「ＹＥＳ」になり、ステップＳＣ８に進む。ステップＳＣ８〜ＳＣ９では、ノート番号ＮｏｔｅＮｏ［ｉ］の臨時記号Ａｃｃ［ｉ］とノート番号ＮｏｔｅＮｏ［ｋ］の臨時記号Ａｃｃ［ｋ］との関係に応じた表示態様になる。
【００５４】
例えばＦシャープとＧの関係のように、五線譜上で高さ位置が異なる場合、すなわち、臨時記号Ａｃｃ［ｉ］が「無」で、臨時記号Ａｃｃ［ｋ］が「シャープ」であると、図９に図示するステップＳＣ２に処理を戻して前方向検索を進める。
【００５５】
また、例えばＧフラットとＧの関係のように、五線譜上で高さ位置が同じで、かつ見つかった音の側に臨時記号が付いている場合、すなわち臨時記号Ａｃｃ［ｉ］が「無」で、臨時記号Ａｃｃ［ｋ］が「フラット」であると、ステップＳＣ１０に進み、ナチュラル記号を表示した後、図９に図示するステップＳＣ１４に処理を進める。
【００５６】
さらに、例えばＧとＧシャープの関係のように、五線譜上で高さ位置が同じで、かつ見つかった音の側に臨時記号が付いていない場合、すなわち臨時記号Ａｃｃ［ｉ］が「シャープ」で、臨時記号Ａｃｃ［ｋ］が「無」であると、図９に図示するステップＳＣ１３に進み、臨時記号Ａｃｃ［ｉ］をそのまま表示する。
【００５７】
＜半音高い音が検索された場合＞
この場合、ポインタｋで指定されるノート番号ＮｏｔｅＮｏ［ｋ］が、ポインタｉで指定されるノート番号ＮｏｔｅＮｏ［ｉ］より半音高くなるので、図１０に図示するステップＳＣ６の判断結果が「ＹＥＳ」になり、ステップＳＣ１１に進む。ステップＳＣ１１〜ＳＣ１２では、ノート番号ＮｏｔｅＮｏ［ｉ］の臨時記号Ａｃｃ［ｉ］とノート番号ＮｏｔｅＮｏ［ｋ］の臨時記号Ａｃｃ［ｋ］との関係に応じた表示態様になる。
【００５８】
例えばＡとＧシャープの関係のように、五線譜上で高さ位置が異なる場合、すなわち、臨時記号Ａｃｃ［ｉ］が「シャープ」で、臨時記号Ａｃｃ［ｋ］が「無」であると、図９に図示するステップＳＣ２に処理を戻して前方向検索を進める。
【００５９】
また、例えばＧシャープとＧの関係のように、五線譜上で高さ位置が同じで、かつ見つかった音の側に臨時記号が付いている場合、すなわち臨時記号Ａｃｃ［ｉ］が「無」で、臨時記号Ａｃｃ［ｋ］が「シャープ」であると、ステップＳＣ１０に進み、ナチュラル記号を表示した後、図９に図示するステップＳＣ１４に処理を進める。
【００６０】
さらに、例えばＧとＧフラットの関係のように、五線譜上で高さ位置が同じで、かつ見つかった音の側に臨時記号が付いていない場合、すなわち臨時記号Ａｃｃ［ｉ］が「フラット」で、臨時記号Ａｃｃ［ｋ］が「無」であると、図９に図示するステップＳＣ１３に進み、臨時記号Ａｃｃ［ｉ］をそのまま表示する。
【００６１】
さて一方、ポインタｋで指定されるタイミングＴｉｍｅ［ｋ］が前小節の終端を超えると、上記ステップＳＣ３の判断結果が「ＮＯ」になり、ステップＳＣ１３に進み、ノート番号ＮｏｔｅＮｏ［ｉ］の臨時記号Ａｃｃ［ｉ］をそのまま表示する。そして、ステップＳＣ１４では、ポインタｉをインクリメントして歩進させる。次いで、ステップＳＣ１５では、歩進されたポインタｉが曲終端ＥＮＤに達したか否かを判断する。曲終端ＥＮＤに達していなければ、判断結果は「ＮＯ」になり、ステップＳＣ１に処理を戻して上述した過程を繰り返す。一方、歩進されたポインタｉが曲終端ＥＮＤに達した場合には、本処理を終える。
【００６２】
このように、本実施の形態では、曲を構成する各音について、臨時記号が必要か否かを判断し、臨時記号を必要とする場合には、臨時記号を必要とする音（対象音）を含む小節内において、対象音から１音ずつ遡りながら、当該対象音と同じ音高の音を検索し、対象音と同じ音高の音（ノート番号ＮｏｔｅＮｏ［ｋ］）が検索されると、同音高のノート番号ＮｏｔｅＮｏ［ｋ］に付与されている臨時記号Ａｃｃ［ｋ］を、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］にセットする。
【００６３】
また、臨時記号を必要とする音（対象音）を含む小節内において、対象音と同じ音高の音（ノート番号ＮｏｔｅＮｏ［ｋ］）が見つからない場合には、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）と同じ発音時刻を有するコードデータ（ルートＣｈｏｒｄＲ、タイプＣｈｏｒｄＴ）に対応するノート（構成音）およびそれに付与する臨時記号をＲＯＭ６に格納されるコードテーブルＣＴから読み出し、読み出したノート（構成音）と、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）との音名が一致すれば、コードテーブルＣＴから読み出された臨時記号を、臨時記号Ａｃｃ［ｉ］にストアする。
【００６４】
さらに、コードテーブルＣＴから読み出したノート（構成音）と、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）との音名が一致しない場合には、臨時記号を必要とする音（対象音）を含む小節内で、この対象音以降であって、対象音より半音高い音高もしくは半音低い音高の音を検索する。そして、対象音より半音高い音高の音が見つかれば、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］に「１」をストアし、一方、対象音より半音低い音高の音が見つかれば、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）に付与する臨時記号Ａｃｃ［ｉ］に「３」をストアする。
【００６５】
加えて、臨時記号を必要とする音（対象音）を含む小節内で、この対象音以降であって、対象音より半音高い音高もしくは半音低い音高の音を検索する過程で該当する音が見つからずに次小節に達した場合には、曲頭から対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）の直前まで音の内から、対象音（ノート番号ＮｏｔｅＮｏ［ｉ］）と同じ音高の音を検索し、該当する音が検索されると、同音高のノート番号ＮｏｔｅＮｏ［ｋ］に付与されている臨時記号Ａｃｃ［ｋ］を、対象音の臨時記号Ａｃｃ［ｉ］にセットする。そして、以上のようにして得た臨時記号Ａｃｃ［ｉ］を、通常の楽譜表記規則に従って楽譜表示することにより、臨時記号を見易く表示させることが可能になる。
【図面の簡単な説明】
【００６６】
【図１】本発明による実施の一形態の構成を示すブロック図である。
【図２】ＲＯＭ６に格納されるコードテーブルＣＴの一構成例を示す図である。
【図３】曲データの構成を示す図である。
【図４】メインルーチンの動作を示すフローチャートである。
【図５】臨時記号判定処理の動作を示すフローチャートである。
【図６】臨時記号判定処理の動作を示すフローチャートである。
【図７】臨時記号判定処理の動作を示すフローチャートである。
【図８】臨時記号判定処理の動作を示すフローチャートである。
【図９】表示処理の動作を示すフローチャートである。
【図１０】表示処理の動作を示すフローチャートである。
【符号の説明】
【００６７】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  操作部
５  表示部
６  入力手段
【図１】
0004696808.tif 000002
【図２】
0004696808.tif 000003
【図３】
0004696808.tif 000004
【図４】
0004696808.tif 000005
【図５】
0004696808.tif 000006
【図６】
0004696808.tif 000007
【図７】
0004696808.tif 000008
【図８】
0004696808.tif 000009
【図９】
0004696808.tif 000010
【図１０】
0004696808.tif 000011