(57)【要約】【課題】練習曲の曲データそのものを変化させて各様な練習形態を提供する演奏練習装置を実現する。【解決手段】ステップＳＡ９の練習データ生成処理では、曲データのノート遷移を継承するよう曲データの音高をシフトさせて練習データを生成したり、あるいは曲データを構成する各音のノートオン／ノートオフタイミングを維持しながら、それら各音の音高を、曲データの最高音高値から最低音高値を逸脱しない範囲でランダムに変化させた練習データを生成する。これにより、練習データで演奏練習すると、練習曲の演奏操作に近い形の指使いを練習したり、練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することが出来、練習曲の曲データそのものを変化させて各様な練習形態を提供できる。【選択図】  図３
2004212502.tif 000002
【特許請求の範囲】
【請求項１】
練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成手段と
を具備することを特徴とする演奏練習装置。
【請求項２】
練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの範囲を指定する範囲指定手段と、
前記範囲指定手段によって範囲指定された曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成手段と
を具備することを特徴とする演奏練習装置。
【請求項３】
練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの最高音高値および最低音高値を抽出する抽出手段と、
前記曲データ記憶手段に記憶される曲データが表す各音の発音タイミングを維持しつつ、前記抽出手段によって抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成手段と
を具備することを特徴とする演奏練習装置。
【請求項４】
練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの範囲を指定する範囲指定手段と、
前記範囲指定手段によって範囲指定された曲データの最高音高値および最低音高値を抽出する抽出手段と、
前記範囲指定手段によって範囲指定された曲データが表す各音の発音タイミングを維持しつつ、前記抽出手段によって抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成手段と
を具備することを特徴とする演奏練習装置。
【請求項５】
練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶される曲データの範囲を指定する範囲指定手段と、
前記範囲指定手段によって範囲指定された曲データが表す各音の発音タイミングを維持しつつ、それら各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成手段と
を具備することを特徴とする演奏練習装置。
【請求項６】
予め記憶されたデータであって、練習曲を形成する各音を表す曲データの各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成処理をコンピュータで実行させることを特徴とする演奏練習プログラム。
【請求項７】
予め記憶されたデータであって、練習曲を形成する各音を表す曲データの範囲を指定する範囲指定ステップと、
前記範囲指定ステップにて範囲指定された曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成ステップと
をコンピュータで実行させることを特徴とする演奏練習プログラム。
【請求項８】
予め記憶されたデータであって、練習曲を形成する各音を表す曲データの最高音高値および最低音高値を抽出する抽出ステップと、
前記曲データが表す各音の発音タイミングを維持しつつ、前記抽出ステップによって抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成ステップと
をコンピュータで実行させることを特徴とする演奏練習プログラム。
【請求項９】
予め記憶されたデータであって、練習曲を形成する各音を表す曲データの範囲を指定する範囲指定ステップと、
前記範囲指定ステップにて範囲指定された曲データの最高音高値および最低音高値を抽出する抽出ステップと、
前記範囲指定ステップにて範囲指定された曲データが表す各音の発音タイミングを維持しつつ、前記抽出ステップにて抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成ステップと
をコンピュータで実行させることを特徴とする演奏練習プログラム。
【請求項１０】
予め記憶されたデータであって、練習曲を形成する各音を表す曲データの範囲を指定する範囲指定ステップと、
前記範囲指定ステップにて範囲指定された曲データが表す各音の発音タイミングを維持しつつ、それら各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成ステップと
をコンピュータで実行させることを特徴とする演奏練習プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パーソナルコンピュータを用いたＤＴＭ（デスクトップミュージック）装置や電子楽器などに用いて好適な演奏練習装置および演奏練習プログラムに関する。
【０００２】
【従来の技術】
従来より、練習曲の曲データを再生して演奏操作を練習させる演奏練習装置が知られている。この種の装置として、例えば特許文献１には、１曲分の曲データと演奏操作に応じて入力される演奏データとを比較して両データの不一致部分を抽出しておき、この曲データの抽出部分を繰り返して演奏データと比較し、両データの一致が検出された時に抽出部分の出力を停止させて１曲分の曲データを出力させるようにして、演奏ミスした部分を間違えなく演奏できるようになるまで繰り返し練習させる技術が開示されている。
また、特許文献２には、曲データを複数の区間に分割して読み出し、各区間毎に曲データと演奏操作に応じて入力される演奏データとを比較して、両データが一致したとき次の区間の曲データを読み出させ、一方、不一致であるときは同一区間の曲データを再び読み出すようにして、演奏ミスした区間をミスせず演奏し得るようになるまで繰り返し練習させてから次の区間に進むようにした技術が開示されている。
【０００３】
【特許文献１】
特許公開平５−２９７７９４号公報
【特許文献２】
特許公開平５−２９７７９５号公報
【０００４】
【発明が解決しようとする課題】
ところで、上述した従来の演奏練習装置は、曲データの読み出し形態を変化させて、間違えなく演奏できるようになるまで繰り返し練習させる等の練習環境を提供するものであり、練習曲の曲データそのものを変化させてバリエーションに富んだ練習形態を具現することができない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる演奏練習装置および演奏練習プログラムを提供することを目的としている。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成手段とを具備することを特徴とする。
【０００６】
請求項２に記載の発明では、練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの範囲を指定する範囲指定手段と、前記範囲指定手段によって範囲指定された曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成手段とを具備することを特徴とする。
【０００７】
請求項３に記載の発明では、練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの最高音高値および最低音高値を抽出する抽出手段と、前記曲データ記憶手段に記憶される曲データが表す各音の発音タイミングを維持しつつ、前記抽出手段によって抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成手段とを具備することを特徴とする。
【０００８】
請求項４に記載の発明では、練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの範囲を指定する範囲指定手段と、前記範囲指定手段によって範囲指定された曲データの最高音高値および最低音高値を抽出する抽出手段と、前記範囲指定手段によって範囲指定された曲データが表す各音の発音タイミングを維持しつつ、前記抽出手段によって抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成手段とを具備することを特徴とする。
【０００９】
請求項５に記載の発明では、練習曲を形成する各音を表す曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶される曲データの範囲を指定する範囲指定手段と、前記範囲指定手段によって範囲指定された曲データが表す各音の発音タイミングを維持しつつ、それら各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成手段とを具備することを特徴とする。
【００１０】
請求項６に記載の発明では、予め記憶されたデータであって、練習曲を形成する各音を表す曲データの各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成処理をコンピュータで実行させることを特徴とする。
【００１１】
請求項７に記載の発明では、予め記憶されたデータであって、練習曲を形成する各音を表す曲データの範囲を指定する範囲指定ステップと、前記範囲指定ステップにて範囲指定された曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成ステップとをコンピュータで実行させることを特徴とする。
【００１２】
請求項８に記載の発明では、予め記憶されたデータであって、練習曲を形成する各音を表す曲データの最高音高値および最低音高値を抽出する抽出ステップと、前記曲データが表す各音の発音タイミングを維持しつつ、前記抽出ステップによって抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成ステップとをコンピュータで実行させることを特徴とする。
【００１３】
請求項９に記載の発明では、予め記憶されたデータであって、練習曲を形成する各音を表す曲データの範囲を指定する範囲指定ステップと、前記範囲指定ステップにて範囲指定された曲データの最高音高値および最低音高値を抽出する抽出ステップと、前記範囲指定ステップにて範囲指定された曲データが表す各音の発音タイミングを維持しつつ、前記抽出ステップにて抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成する練習データ生成ステップとをコンピュータで実行させることを特徴とする。
【００１４】
請求項１０に記載の発明では、予め記憶されたデータであって、練習曲を形成する各音を表す曲データの範囲を指定する範囲指定ステップと、前記範囲指定ステップにて範囲指定された曲データが表す各音の発音タイミングを維持しつつ、それら各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成する練習データ生成ステップとをコンピュータで実行させることを特徴とする。
【００１５】
本発明では、練習曲を形成する各音を表す曲データの各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、この練習データで演奏練習すると、練習曲の演奏操作に近い形の指使いを練習し得るようになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することが可能になる。
また、本発明では、練習曲を形成する各音を表す曲データの最高音高値および最低音高値を抽出した後、曲データが表す各音の発音タイミングを維持しつつ、抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成するので、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することが可能になる。
【００１６】
【発明の実施の形態】
以下、本発明の実施の一形態による演奏練習装置が搭載されたＤＴＭ装置を実施例とし、これについて図面を参照して説明する。
Ａ．第１実施例の構成
（１）全体構成
図１は、本発明による第１実施例の構成を示すブロック図である。この図において、１０は構成要素１〜８を備えたＤＴＭ（デクストップミュージック）装置、２０はＤＴＭ装置１０とＭＩＤＩ接続される電子楽器である。ＤＴＭ装置１０は、通常モードと強化モードとを備える。ＤＴＭ装置１０は、通常モードに設定された場合、複数の練習曲の内から選択された曲の曲データを電子楽器２０にＭＩＤＩ出力する。強化モードに設定された場合には、選択された曲の曲データの内から、例えば指定小節区間やフレーズ区間など範囲指定された曲データを変化させて練習データを生成し、生成した練習データを電子楽器２０にＭＩＤＩ出力する。
【００１７】
電子楽器２０は、ＤＴＭ装置１０からＭＩＤＩ入力される曲データあるいは練習データに応じて、弾くべき鍵を案内する所謂ガイド表示（押鍵案内）を行い、そのガイド表示に従った演奏操作（押離鍵操作）に対応した楽音を発生させてユーザに演奏練習する環境を提供する。
固定的な曲データに従って演奏練習を繰り返し行った場合、ユーザはその曲の演奏に慣れてしまい練習効果が薄れることも有り得る。そこで、本実施例では、ＤＴＭ装置１０を強化モードに設定した場合に、練習曲の曲データそのものを変化させた練習データを生成して、電子楽器２０側でユーザが行う演奏練習の形態を変化させるようになっている。
【００１８】
（２）ＤＴＭ装置１０の構成
次に、図１を参照してＤＴＭ装置１０の構成を説明する。図１において、１は後述する演奏練習処理を実行して練習曲の曲データあるいは練習曲の曲データを変化させて得る練習データを、ＭＩＤＩインタフェース４を介して電子楽器２０にＭＩＤＩ出力するＣＰＵである。２は後述の演奏練習処理および練習データ生成処理を含む各種制御プログラムや各種データを記憶するＲＯＭである。ＲＯＭ２に記憶される各種データには、後述の演奏練習処理を起動した際に表示部８に画面表示されるメニュー画面（不図示）の画面データが含まれる。３はワークエリアおよびバッファエリアを備えるＲＡＭである。ＲＡＭ３のワークエリアには、各種レジスタ・フラグデータが一時記憶される。
【００１９】
ＲＡＭ３のバッファエリアは、曲データバッファおよび練習データバッファを備える。曲データバッファには、通常モードに設定された場合に、曲選択に応じてＲＯＭ２から読み出される曲データが格納される。曲データバッファに格納される曲データは、図２（ａ）に図示するように、曲を形成する各音を表す演奏ノート情報（０）〜（ｎ）からなる。
演奏ノート情報は、曲開始時点からの経過時間で発音タイミングを表すデータｔｉｃｋ、音高を表すデータＮｏｔｅ＃および音長（発音期間）を表すデータＧａｔｅＴｉｍｅを備える。曲データバッファに格納される演奏ノート情報は、ＯｒｇＮｏｔｅｓ［ｉ］［ｊ］に応じて読み出される。ここで、ｉは演奏ノート情報（ｉ）を指定する値（０〜ｎ）、ｊはｉによって指定される演奏ノート情報（ｉ）中のデータを指定する値であり、ｊが「０」の場合にデータｔｉｃｋを、ｊが「１」の場合にデータＮｏｔｅ＃を、ｊが「２」の場合にデータＧａｔｅＴｉｍｅをそれぞれ指定する。
【００２０】
一方、練習データバッファには、強化モードに設定された場合に、上記曲データバッファに格納された曲データの内から範囲指定された曲データを変化させて得る練習データが格納される。練習データバッファに格納される練習データは、図２（ｂ）に図示するように、練習ノート情報（０）〜（ｎ）からなる。
練習ノート情報は、範囲指定された曲の始端からの経過時間で発音タイミングを表すデータｔｉｃｋ、元の音高（対応する演奏ノート情報中の音高）を表すデータＯｒｇＮｏｔｅ＃、元の音高を変更したデータＮｏｔｅ＃および音長を表すデータＧａｔｅＴｉｍｅを備える。練習データバッファに格納される練習ノート情報は、ＴｒａｉｎＮｏｔｅｓ［ｉ］［ｊ］に応じて読み出される。ここで、ｉは練習ノート情報（ｉ）を指定する値（０〜ｎ）、ｊはｉによって指定される練習ノート情報（ｉ）中のデータを指定する値であり、ｊが「０」の場合にデータｔｉｃｋを、ｊが「１」の場合にデータＯｒｇＮｏｔｅ＃を、ｊが「２」の場合にデータＮｏｔｅ＃を、ｊが「３」の場合にデータＧａｔｅＴｉｍｅをそれぞれ指定する。
【００２１】
ＭＩＤＩインタフェース４は、ＣＰＵ１の制御の下に、電子楽器２０にＭＩＤＩデータをシリアル転送する。マウス６は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生させたり、左ボタンを押しながらマウスカーソルを移動させて範囲指定する周知のドラッグ操作に応じたイベントを発生する。７はキー入力操作に応じたキーイベントを発生するキーボードである。表示部８はＬＣＤパネル等から構成され、ＣＰＵ１から供給される表示制御信号に応じて、メニュー画面や選択された練習曲の楽譜を画面表示する。
【００２２】
Ｂ．第１実施例の動作
次に、図３〜図５を参照して第１実施例の動作について説明する。以下では、最初に全体動作として演奏練習処理の動作について説明し、続いて演奏練習処理からコールされる練習データ生成処理の動作について順次説明する。
【００２３】
（１）演奏練習処理の動作
ＤＴＭ装置１０の起動に応じて表示部８に表示されるメインメニュー画面（不図示）から演奏練習処理の実行が指示されると、ＣＰＵ１は図３に示す演奏練習処理を実行してステップＳＡ１に処理を進め、演奏練習処理下のメニュー画面を表示部８に表示する。図示していないが、メニュー画面には通常モードアイコン、強化モードアイコンおよび終了アイコンが設けられており、これらアイコンにマウス６のマウスカーソルをポインティングさせてクリック操作することで、クリック操作されたアイコンに対応する処理が実行されるようになっている。
【００２４】
メニュー画面でアイコンがクリック操作されなければ、ステップＳＡ２〜ＳＡ４の各判断結果は「ＮＯ」となり、表示部８にメニュー画面を画面表示する状態を維持し続けるが、終了アイコンをクリック操作した場合には、そのクリックイベントに基づきステップＳＡ４の判断結果が「ＹＥＳ」となり、本処理を終えてメインメニュー画面（不図示）の表示状態に復帰する。
【００２５】
メニュー画面中の通常モードアイコンをクリック操作した場合には、そのクリックイベントに基づきステップＳＡ２の判断結果が「ＹＥＳ」となり、ステップＳＡ５に進む。ステップＳＡ５では、ＲＯＭ２に記憶される練習曲の曲目を画面表示し、その中で選択された曲目の曲データをＲＯＭ２から読み出してＲＡＭ３の曲データバッファに格納する曲選択処理を実行する。
【００２６】
次いで、ステップＳＡ６に進むと、ＣＰＵ１は曲データバッファに格納された曲データ、すなわち演奏ノート情報（０）〜（ｎ）を、曲進行に同期して順次読み出し、これをＭＩＤＩインタフェース４に接続される電子楽器２０にＭＩＤＩ出力する曲データ再生処理を実行する。これにより、電子楽器２０は、ＤＴＭ装置１０からＭＩＤＩ入力される曲データに従い、弾くべき鍵を案内する押鍵案内を行ってユーザに演奏練習を促す。
【００２７】
次に、メニュー画面中の強化モードアイコンをクリック操作した場合には、そのクリックイベントに基づきステップＳＡ３の判断結果が「ＹＥＳ」となり、ステップＳＡ７に進む。ステップＳＡ７では、上記ステップＳＡ５と同様、選択された曲目の曲データをＲＯＭ２から読み出してＲＡＭ３の曲データバッファに格納する曲選択処理を実行する。続いて、ステップＳＡ８に進むと、選択された曲データを表示部８に楽譜として表示し、その楽譜上で練習データに変化させる範囲、つまり曲データ始端と曲データ終端とをマウス６のドラッグ操作で指定する範囲指定処理を実行する。
【００２８】
こうして、曲データ中から練習データに変化させる範囲を指定し終えると、ＣＰＵ１はステップＳＡ９に進み、指定範囲の曲データを変化させた練習データをＲＡＭ３の練習データバッファに格納する練習データ生成処理（後述する）を実行する。この後、ステップＳＡ１０に進み、練習データバッファに格納された練習データ、すなわち練習ノート情報（０）〜（ｎ）を、曲進行に同期して順次読み出し、これをＭＩＤＩインタフェース４に接続される電子楽器２０にＭＩＤＩ出力する練習データ再生処理を実行する。電子楽器２０では、ＤＴＭ装置１０からＭＩＤＩ入力される練習データに従い、弾くべき鍵を案内する押鍵案内を行ってユーザに演奏練習を促す。これにより、練習曲の曲データそのものを変化させて練習形態を変化させることが可能になる。
【００２９】
（２）練習データ生成処理の動作
次に、図４〜図５を参照して練習データ生成処理の動作を説明する。上述したステップＳＡ９を介して本処理が実行されると、ＣＰＵ１は図４のステップＳＢ１に処理を進める。ステップＳＢ１では、上述の範囲指定処理（ステップＳＡ８）にて指定された曲データ始端の時間を表す始端ｔｉｃｋをレジスタＴＳに、曲データ終端の時間を表す終端ｔｉｃｋをレジスタＴＥにストアする。続いて、ステップＳＢ２に進み、ポインタｉＯｒｇおよびポインタｉＴｒａｉｎをゼロリセットする。
【００３０】
次いで、ステップＳＢ３では、ＯｒｇＮｏｔｅｓ［ｉＯｒｇ］が無効、つまりポインタｉＯｒｇで指定される曲データバッファ中の演奏ノート情報（ｉＯｒｇ）が曲終端に達したか、あるいはＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＥに格納される終端ｔｉｃｋを超えたか否かを判断する。曲終端にも達せず、終端ｔｉｃｋも超えていなければ、判断結果は「ＮＯ」となり、次のステップＳＢ４に進む。ステップＳＢ４では、ＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＳに格納される始端ｔｉｃｋ以上であるか否かを判断する。ここで、データｔｉｃｋが始端ｔｉｃｋ以上でなければ、判断結果は「ＮＯ」になり、ステップＳＢ８に進み、ポインタｉＯｒｇをインクリメントして歩進させた後、上記ステップＳＢ３に戻る。
【００３１】
要するに、ステップＳＢ３、ＳＢ４では、始端ｔｉｃｋから終端ｔｉｃｋの範囲に対応するポインタｉＯｒｇを探し出す。始端ｔｉｃｋ以上のポインタｉＯｒｇが検索されると、ステップＳＢ４の判断結果が「ＹＥＳ」になり、ステップＳＢ５に進む。ステップＳＢ５では、検索されたポインタｉＯｒｇに応じて曲データバッファより読み出されるＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］（データｔｉｃｋ）からレジスタＴＳに格納される始端ｔｉｃｋを減算した結果を、ポインタｉＴｒａｉｎに応じて、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［０］に書き込む。
【００３２】
続いて、ステップＳＢ６では、ポインタｉＯｒｇに応じて曲データバッファより読み出されるＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［１］（データＮｏｔｅ＃）を、ポインタｉＴｒａｉｎに応じて、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）に書き込む。
こうして、範囲指定された曲データの始端に対応した演奏ノート情報のデータｔｉｃｋおよびデータＮｏｔｅ＃が、練習データを構成する練習ノート情報のデータｔｉｃｋおよびデータＯｒｇＮｏｔｅ＃として練習データバッファにコピーされると、ステップＳＢ７、ＳＢ８にてポインタｉＯｒｇおよびポインタｉＴｒａｉｎを歩進させた後、ステップＳＢ３に処理を戻す。
【００３３】
以後、範囲指定された曲データの終端に達するまで、ステップＳＢ３〜ＳＢ８を繰り返し、曲データを構成する演奏ノート情報のデータｔｉｃｋおよびデータＮｏｔｅ＃を、練習データを構成する練習ノート情報のデータｔｉｃｋおよびデータＯｒｇＮｏｔｅ＃として練習データバッファにコピーして行く。
そして、ポインタｉＯｒｇで指定される曲データバッファ中の演奏ノート情報（ｉＯｒｇ）が曲終端に達するか、あるいはＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＥに格納される終端ｔｉｃｋを超えると、ステップＳＢ３の判断結果が「ＹＥＳ」になり、ステップＳＢ９に進む。
【００３４】
ステップＳＢ９では、ポインタｉＯｒｇが曲終端に達した時点のポインタｉＴｒａｉｎの値、あるいはＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＥに格納される終端ｔｉｃｋを超えた時点のポインタｉＴｒａｉｎの値をレジスタｉＴｒａｉｎＭａｘにストアする。次いで、ステップＳＢ１０では、レジスタＮｏｔｅＯｆｆｓｅｔに所定値（音高シフト値）をストアし、続くステップＳＢ１１では、ポインタｉＴｒａｉｎをゼロリセットする。
この後、図５に示すステップＳＢ１２に進み、ポインタｉＴｒａｉｎがレジスタｉＴｒａｉｎＭａｘを超えたか否か、つまり練習データの終端に達したかどうかを判断するが、この場合、ポインタｉＴｒａｉｎをゼロリセットした直後なので、判断結果は「ＮＯ」になり、次のステップＳＢ１３に進む。
【００３５】
ステップＳＢ１３では、レジスタＮｏｔｅＯｆｆｓｅｔに格納される所定値（音高シフト値）を練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）に加算し、それをＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［２］（データＮｏｔｅ＃）として書き込む。
次に、ステップＳＢ１４に進むと、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）に対する「１２」の剰余値をレジスタＯｒｇＢｏｒＷにストアする。レジスタＯｒｇＢｏｒＷに格納される値は、練習データ用に音高シフトさせる前の、曲データの音高を１オクターブ中のどの鍵に対応するかを表すように音名変換したものである。後述するように、データＯｒｇＮｏｔｅ＃の「１２」の剰余値が「１（Ｃ＃），３（Ｄ＃），６（Ｆ＃），８（Ｇ＃），１０（Ａ＃）」の場合、レジスタＯｒｇＢｏｒＷは黒鍵に対応し、上記以外の場合、レジスタＯｒｇＢｏｒＷは白鍵に対応するものとしている。
【００３６】
また、ステップＳＢ１４では、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［２］（データＮｏｔｅ＃）に対する「１２」の剰余値をレジスタＴｒａｉｎＢｏｒＷにストアする。レジスタＴｒａｉｎＢｏｒＷに格納される値は、曲データの音高をシフトさせた練習データの音高を音名変換したものであり、上記と同様、データＮｏｔｅ＃の「１２」の剰余値が「１（Ｃ＃），３（Ｄ＃），６（Ｆ＃），８（Ｇ＃），１０（Ａ＃）」であれば、レジスタＴｒａｉｎＢｏｒＷは黒鍵に対応し、上記以外の場合、レジスタＴｒａｉｎＢｏｒＷは白鍵に対応するものとしている。
【００３７】
ステップＳＢ１５では、レジスタＯｒｇＢｏｒＷに格納される値が黒鍵に対応するかどうかを判断する。以下、データＯｒｇＮｏｔｅ＃が黒鍵に対応する場合と白鍵に対応する場合とに分けて動作を説明する。
＜データＯｒｇＮｏｔｅ＃が黒鍵に対応する場合＞
この場合、ステップＳＢ１５の判断結果が「ＹＥＳ」になり、ステップＳＢ１６に進む。ステップＳＢ１６では、レジスタＴｒａｉｎＢｏｒＷに格納される値、つまりデータＮｏｔｅ＃が黒鍵に対応するかどうかを判断する。データＮｏｔｅ＃が黒鍵に対応していれば、データＯｒｇＮｏｔｅ＃（元の音高）とデータＮｏｔｅ＃（音高シフトされた音高）とが共に黒鍵となり、鍵盤上の対応関係が維持されているとして、判断結果は「ＹＥＳ」になり、ステップＳＢ２１に進み、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［３］（データＧａｔｅＴｉｍｅ）に、４分音符（４８０）あるいは８分音符（２４０）のいずれかの音長に対応する値をストアする。そして、ステップＳＢ２２に進み、ポインタｉＴｒａｉｎをインクリメントして歩進させた値、上述のステップＳＢ１２に処理を戻す。
【００３８】
一方、データＮｏｔｅ＃が白鍵に対応する場合には、上記ステップＳＢ１６の判断結果が「ＮＯ」となり、ステップＳＢ１７に進む。ステップＳＢ１７〜ＳＢ１８では、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［２］（データＮｏｔｅ＃）が黒鍵に対応するまで、データＮｏｔｅ＃をデクリメントして音高シフトさせる。そして、音高シフトされたデータＮｏｔｅ＃が黒鍵に対応すると、ステップＳＢ１７の判断結果が「ＹＥＳ」となり、ステップＳＢ２１に進み、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［３］（データＧａｔｅＴｉｍｅ）に、４分音符（４８０）あるいは８分音符（２４０）のいずれかの音長に対応する値をストアする。そして、ステップＳＢ２２に進み、ポインタｉＴｒａｉｎをインクリメントして歩進させた後、上述のステップＳＢ１２に処理を戻す。
【００３９】
＜データＯｒｇＮｏｔｅ＃が白鍵に対応する場合＞
この場合、ステップＳＢ１５の判断結果が「ＮＯ」になり、ステップＳＢ１９に進む。ステップＳＢ１９では、レジスタＴｒａｉｎＢｏｒＷに格納される値、つまりデータＮｏｔｅ＃が黒鍵に対応するかどうかを判断する。データＮｏｔｅ＃が白鍵に対応していれば、データＯｒｇＮｏｔｅ＃（元の音高）とデータＮｏｔｅ＃（音高シフトされた音高）とが共に白鍵となり、鍵盤上の対応関係が維持されているとして、判断結果は「ＮＯ」になり、ステップＳＢ２１に進み、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［３］（データＧａｔｅＴｉｍｅ）に、４分音符（４８０）あるいは８分音符（２４０）のいずれかの音長に対応する値をストアする。そして、ステップＳＢ２２に進み、ポインタｉＴｒａｉｎをインクリメントして歩進させた値、上述のステップＳＢ１２に処理を戻す。
【００４０】
一方、データＮｏｔｅ＃が黒鍵に対応すると、上記ステップＳＢ１９の判断結果が「ＹＥＳ」となり、ステップＳＢ２０に進み、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［２］（データＮｏｔｅ＃）をデクリメントして黒鍵に対応させるよう音高シフトさせる。この後、ステップＳＢ２１に進み、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［３］（データＧａｔｅＴｉｍｅ）に、４分音符（４８０）あるいは８分音符（２４０）のいずれかの音長に対応する値をストアする。そして、ステップＳＢ２２に進み、ポインタｉＴｒａｉｎをインクリメントして歩進させてから上述のステップＳＢ１２に処理を戻す。
【００４１】
こうして、データＯｒｇＮｏｔｅ＃とデータＮｏｔｅ＃との鍵盤上の対応関係が維持されるように、データＮｏｔｅ＃の音高を設定しながら、データＧａｔｅＴｉｍｅを４分音符あるいは８分音符の音長に設定して練習ノート情報を生成して行き、ポインタｉＴｒａｉｎがレジスタｉＴｒａｉｎＭａｘを超えると、上述したステップＳＢ１２の判断結果が「ＹＥＳ」になり、本処理を完了させて演奏練習処理に復帰する。
【００４２】
以上のように、第１実施例によれば、曲データと練習データとの鍵盤上の対応関係が維持されるように、つまり換言すれば曲データのノート遷移を継承するよう曲データの音高をシフトさせて練習データを生成する結果、練習データで演奏練習すると、練習曲の演奏操作に近い形の指使いを練習することになる為、練習曲の曲データそのものを変化させて、曲データとは異なる練習形態を提供することが可能になっている。
【００４３】
Ｃ．第２実施例の動作
次に、図６〜図７を参照して第２実施例による練習データ生成処理の動作について説明する。第１実施例と同様に、演奏練習処理のステップＳＡ９（図３参照）を介して第２実施例による練習データ生成処理が実行されると、ＣＰＵ１は図６のステップＳＣ１に処理を進める。ステップＳＣ１では、範囲指定処理（ステップＳＡ８）にて指定された曲データ始端の時間を表す始端ｔｉｃｋをレジスタＴＳに、曲データ終端の時間を表す終端ｔｉｃｋをレジスタＴＥにストアする。続いて、ステップＳＣ２では、ポインタｉＯｒｇおよびポインタｉＴｒａｉｎをゼロリセットする。次いで、ステップＳＣ３では、レジスタＮｏｔｅＭａｘおよびレジスタＮｏｔｅｍｉｎをゼロリセットする。
なお、レジスタＮｏｔｅＭａｘおよびレジスタＮｏｔｅｍｉｎとは、範囲指定された曲データから抽出される最高音高値および最低音高値を一時記憶するためのレジスタである。
【００４４】
続いて、ステップＳＣ４に進むと、ＯｒｇＮｏｔｅｓ［ｉＯｒｇ］が無効、つまりポインタｉＯｒｇで指定される曲データバッファ中の演奏ノート情報（ｉＯｒｇ）が曲終端に達したか、あるいはＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＥに格納される終端ｔｉｃｋを超えたか否かを判断する。曲終端にも達せず、終端ｔｉｃｋも超えていなければ、判断結果は「ＮＯ」となり、図７に示すステップＳＣ５に進む。ステップＳＣ５では、ＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＳに格納される始端ｔｉｃｋ以上であるか否かを判断する。ここで、データｔｉｃｋが始端ｔｉｃｋ以上でなければ、判断結果は「ＮＯ」になり、ステップＳＣ１４に進み、ポインタｉＯｒｇをインクリメントして歩進させた後、図６のステップＳＣ４に戻る。
【００４５】
要するに、ステップＳＣ４、ＳＣ５では、始端ｔｉｃｋから終端ｔｉｃｋの範囲に対応するポインタｉＯｒｇを探し出す。始端ｔｉｃｋ以上のポインタｉＯｒｇが検索されると、ステップＳＣ５の判断結果が「ＹＥＳ」になり、ステップＳＣ６に進む。ステップＳＣ６では、検索されたポインタｉＯｒｇに応じて曲データバッファより読み出されるＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］（データｔｉｃｋ）からレジスタＴＳに格納される始端ｔｉｃｋを減算した結果を、ポインタｉＴｒａｉｎに応じて、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［０］に書き込む。
【００４６】
続いて、ステップＳＣ７では、ポインタｉＯｒｇに応じて曲データバッファより読み出されるＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［１］（データＮｏｔｅ＃）を、ポインタｉＴｒａｉｎに応じて、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）に書き込む。そして、ステップＳＣ８では、ポインタｉＯｒｇに応じて曲データバッファより読み出されるＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［２］（データＧａｔｅＴｉｍｅ）を、ポインタｉＴｒａｉｎに応じて、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［３］（データＧａｔｅＴｉｍｅ）に書き込む。
【００４７】
こうして、範囲指定された曲データの始端に対応した演奏ノート情報のデータｔｉｃｋ、データＮｏｔｅ＃およびデータＧａｔｅＴｉｍｅを、練習データを構成する練習ノート情報のデータｔｉｃｋ、データＯｒｇＮｏｔｅ＃およびデータＧａｔｅＴｉｍｅとして練習データバッファにコピーし終えると、ステップＳＣ９に進み、ポインタｉＴｒａｉｎに応じて練習データバッファより読み出されるＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）が、レジスタＮｏｔｅＭａｘより大きいか否かを判断する。大きければ、判断結果は「ＹＥＳ」になり、次のステップＳＣ１０に進み、ＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）をレジスタＮｏｔｅＭａｘにストアする。一方、小さければ、判断結果が「ＮＯ」になり、ステップＳＣ１１に進む。
【００４８】
ステップＳＣ１１では、ポインタｉＴｒａｉｎに応じて練習データバッファより読み出されるＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）が、レジスタＮｏｔｅｍｉｎより小さいか否かを判断する。小さければ、判断結果は「ＹＥＳ」になり、次のステップＳＣ１２に進み、ＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［１］（データＯｒｇＮｏｔｅ＃）をレジスタＮｏｔｅｍｉｎにストアする。一方、大きければ、判断結果が「ＮＯ」になり、ステップＳＣ１３に進む。そして、ステップＳＣ１３、ＳＣ１４にてポインタｉＯｒｇおよびポインタｉＴｒａｉｎを歩進させてから図６のステップＳＣ４に処理を戻す。
【００４９】
このように、ステップＳＣ９〜ＳＣ１２では、ポインタｉＴｒａｉｎが歩進される毎に、練習データバッファから読み出すデータＯｒｇＮｏｔｅ＃が、レジスタＮｏｔｅＭａｘに格納される値より大きければ、そのデータＯｒｇＮｏｔｅ＃をレジスタＮｏｔｅＭａｘに格納し、データＯｒｇＮｏｔｅ＃がレジスタＮｏｔｅｍｉｎに格納される値より小さければ、そのデータＯｒｇＮｏｔｅ＃をレジスタＮｏｔｅｍｉｎに格納することによって、レジスタＮｏｔｅＭａｘに最高音高値を、レジスタＮｏｔｅｍｉｎに最低音高値を保持させるようになっている。
【００５０】
以後、範囲指定された曲データの終端に達するまで、ステップＳＣ４〜ＳＣ１４を繰り返し、曲データを構成する演奏ノート情報のデータｔｉｃｋ、データＮｏｔｅ＃およびデータＧａｔｅＴｉｍｅを、練習データを構成する練習ノート情報のデータｔｉｃｋ、データＯｒｇＮｏｔｅ＃およびデータＧａｔｅＴｉｍｅとして練習データバッファにコピーしながら、その過程で検索したデータＯｒｇＮｏｔｅ＃の最高音高値をレジスタＮｏｔｅＭａｘに、最低音高値をレジスタＮｏｔｅｍｉｎに格納する。
そして、ポインタｉＯｒｇで指定される曲データバッファ中の演奏ノート情報（ｉＯｒｇ）が曲終端に達するか、あるいはＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＥに格納される終端ｔｉｃｋを超えると、図６に示すステップＳＣ４の判断結果が「ＹＥＳ」になり、図６のステップＳＣ１５に進む。
【００５１】
ステップＳＣ１５では、ポインタｉＯｒｇが曲終端に達した時点のポインタｉＴｒａｉｎの値、あるいはＯｒｇＮｏｔｅｓ［ｉＯｒｇ］［０］のデータｔｉｃｋがレジスタＴＥに格納される終端ｔｉｃｋを超えた時点のポインタｉＴｒａｉｎの値をレジスタｉＴｒａｉｎＭａｘにストアする。次いで、ステップＳＣ１６では、ポインタｉＴｒａｉｎをゼロリセットする。
続いて、ステップＳＣ１７〜ＳＣ１９では、ポインタｉＴｒａｉｎがレジスタｉＴｒａｉｎＭａｘを超える迄、ポインタｉＴｒａｉｎを歩進させながら、ポインタｉＴｒａｉｎに応じて、練習データバッファのＴｒａｉｎＮｏｔｅｓ［ｉＴｒａｉｎ］［２］（データＮｏｔｅ＃）に、Ｎｏｔｅｍｉｎ＋ＲＡＮＤＡＭ  ｍｏｄ（ＮｏｔｅＭａｘ−Ｎｏｔｅｍｉｎ）を書込んで行く。
【００５２】
ＲＡＮＤＡＭ  ｍｏｄ（ＮｏｔｅＭａｘ−Ｎｏｔｅｍｉｎ）とは、ＲＡＮＤＡＭ関数にて生成される整数乱数値の、（ＮｏｔｅＭａｘ−Ｎｏｔｅｍｉｎ）の剰余、つまり「０」から「ＮｏｔｅＭａｘ−Ｎｏｔｅｍｉｎ」の範囲でランダムに変化する値となる。これ故、Ｎｏｔｅｍｉｎ＋ＲＡＮＤＡＭ  ｍｏｄ（ＮｏｔｅＭａｘ−Ｎｏｔｅｍｉｎ）は、最低音高値Ｎｏｔｅｍｉｎから最高音高値ＮｏｔｅＭａｘの間でランダムに変化する音高値となる。
したがって、ステップＳＣ１８では、最低音高値Ｎｏｔｅｍｉｎから最高音高値ＮｏｔｅＭａｘの間でランダムに変化する音高値を、データＮｏｔｅ＃として設定するようになっている。
そして、歩進されたポインタｉＴｒａｉｎがレジスタｉＴｒａｉｎＭａｘを超えて練習データの終端に達すると、ステップＳＣ１７の判断結果が「ＹＥＳ」となり、本処理を終える。
【００５３】
このように、第２実施例によれば、範囲指定された曲データを構成する各音のノートオン／ノートオフタイミングを維持しながら、それら各音の音高を、曲データの最高音高値から最低音高値を逸脱しない範囲でランダムに変化させた練習データを生成する結果、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる為、練習曲の曲データそのものを変化させて、曲データとは異なる練習形態を提供することが可能になっている。
【００５４】
なお、曲データのノート遷移を継承するよう曲データの音高をシフトさせて練習データを生成する第１実施例と、曲データを構成する各音のノートオン／ノートオフタイミングを維持しながら、それら各音の音高を、曲データの最高音高値から最低音高値を逸脱しない範囲でランダムに変化させた練習データを生成する第２実施例とを組合せ、曲データを構成する各音のノートオン／ノートオフタイミングを維持しつつ、曲データのノート遷移を継承するよう曲データの音高をシフトさせた練習データを生成する態様としても構わず、このようにしても練習曲の押離鍵タイミングで曲データに近い形の指使いを練習することが可能になる。
【００５５】
さらに、上述した第１および第２実施例では、曲データを変化させて得た練習データに従って演奏練習するが、これに替えて、曲データを変化させて得た練習データを新たな曲データとして記憶しておき、その新たな曲データを変化させてさらなる練習データを生成する態様にすることもできる。このようにすれば、１つの練習曲の曲データから幾つものバリエーションに富んだ練習データを生成して様々な練習形態による演奏練習を提供し得るようになる。
【００５６】
【発明の効果】
請求項１，６に記載の発明によれば、練習曲を形成する各音を表す曲データの各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、この練習データで演奏練習すると、練習曲の演奏操作に近い形の指使いを練習し得るようになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
請求項２，７に記載の発明によれば、練習曲を形成する各音を表す曲データの範囲を指定し、範囲指定された曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、範囲指定された曲データの演奏操作に近い形の指使いを練習し得るようになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
請求項３，８に記載の発明によれば、練習曲を形成する各音を表す曲データの最高音高値および最低音高値を抽出した後、曲データが表す各音の発音タイミングを維持しつつ、抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成するので、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
請求項４，９に記載の発明によれば、練習曲を形成する各音を表す曲データの範囲を指定し、範囲指定された曲データの最高音高値および最低音高値を抽出した後、範囲指定された曲データが表す各音の発音タイミングを維持しつつ、抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成するので、この練習データで演奏練習すると、範囲指定された練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる
請求項５，１０に記載の発明によれば、練習曲を形成する各音を表す曲データの範囲を指定し、範囲指定された曲データが表す各音の発音タイミングを維持しつつ、それら各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データに近い形の指使いを練習する結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
【図面の簡単な説明】
【図１】本発明による第１実施例の構成を示すブロック図である。
【図２】ＲＡＭ３に設けられる曲データバッファおよび練習データバッファの構成を説明するための図である。
【図３】演奏練習処理の動作を示すフローチャートである。
【図４】練習データ生成処理の動作を示すフローチャートである。
【図５】練習データ生成処理の動作を示すフローチャートである。
【図６】第２実施例による練習データ生成処理の動作を示すフローチャートである。
【図７】第２実施例による練習データ生成処理の動作を示すフローチャートである。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＭＩＤＩインタフェース
６  マウス
７  キーボード
８  表示部
１０  ＤＴＭ装置
２０  電子楽器
【図１】
2004212502.tif 000003
【図２】
2004212502.tif 000004
【図３】
2004212502.tif 000005
【図４】
2004212502.tif 000006
【図５】
2004212502.tif 000007
【図６】
2004212502.tif 000008
【図７】
2004212502.tif 000009