(57)【特許請求の範囲】
【請求項１】
発音タイミングを設定する情報とその他の楽音の設定又は制御のための情報とを含む演奏データを供給する演奏データ供給手段と、
前記演奏データに対応した楽音を発音する発音手段と、
前記演奏データに対応した楽音の発音タイミングを、前記演奏データに含まれる前記制御のための情報のうち少なくとも音量情報、音高情報又は音長情報のいずれかの内容に応じて可変制御するタイミング変更手段と
を備えることを特徴とする自動演奏装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はシーケンサ等の自動演奏装置あるいは自動リズム演奏装置に係り、特に自動演奏中に発音タイミングを容易に変更できるタイミング変更機能を有する自動演奏装置に関する。
【０００２】
【従来の技術】
従来の自動演奏装置は、演奏順序に従って演奏データを記憶しており、その演奏データを順序に読み出して所定のタイミングで発音している。
一方、人間が同じ譜面を演奏する場合には、演奏の進行に連れて感情が変化したり、聴取者の反応にさらに演奏者が反応したりすることで、毎回演奏の表情が異なる。これが生演奏の音楽表現の良さでもある。
【０００３】
しかしながら、従来の自動演奏装置は、いわばレコードを再生するのと同様で、記録されている内容のものを毎回正確に再生することは可能だが、生演奏のような、その場での感情表現を行うことはできないため、単調な演奏しか行えないという問題があった。
そこで、最近は、特開平５−７３０３６号公報に記載されたような、演奏データの発音タイミングを微妙にずらすことによって人間味のある演奏を行えるようにした自動演奏装置がある。これは、所定の演奏タイミング毎（例えば、一拍毎、１クロック毎など）に発音タイミングをどれくらいずらすかを示した「ずれパターンデータ」を予め用意しておき、自動演奏の際にこの「ずれパターンデータ」に基づいて演奏データの発音タイミングをずらすようにしている。
【０００４】
【発明が解決しようとする課題】
従来の自動演奏装置は、演奏データの他に多数の「ずれパターンデータ」を用意しておかなければならないという問題がある。
また、従来の自動演奏装置は、予め用意しておいた「ずれパターンデータ」の通りにしか発音タイミングをずらすことができず、元の演奏データがどのようなものであっても、ずれ方がみな同じになってしまうという問題がある。
【０００５】
この発明は、このような従来技術の欠点に鑑み、微妙に発音タイミングをずらした生演奏のような感情表現の豊かな自動演奏を行うことができる自動演奏装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】この発明に係る自動演奏装置は、発音タイミングを設定する情報とその他の楽音の設定又は制御のための情報とを含む演奏データを供給する演奏データ供給手段と、前記演奏データに対応した楽音を発音する発音手段と、前記演奏データに対応した楽音の発音タイミングを、前記演奏データに含まれる前記制御のための情報のうち少なくとも音量情報、音高情報又は音長情報のいずれかの内容に応じて可変制御するタイミング変更手段とを備えることを特徴とする。
【０００７】
【作用】この発明によれば、前記演奏データに対応した楽音の発音タイミングを、前記演奏データに含まれる前記制御のための情報のうち少なくとも音量情報、音高情報又は音長情報のいずれかの内容に応じて可変制御するようにしたので、例えば音量情報の大きさに応じて発音タイミングを遅らせたり、進めたりすることができる。これによって、この発明の自動演奏装置は、従来のように「ずれパターンデータ」等を特別に設けなくても、微妙にタイミングをずらして発音することができるので、生演奏のような表現力ある演奏を行うことができる。
【０００８】
【実施例】
以下、添付図面を参照してこの発明の一実施例を詳細に説明する。
図２はこの発明に係る自動演奏装置を適用した電子楽器の一実施例を示すハード構成ブロック図である。この実施例においては、ＣＰＵ２０、プログラムＲＯＭ２１、データ及びワーキングＲＡＭ２２を含むマイクロコンピュータの制御の下に各種の処理が実行されるようになっている。
この実施例では１つのＣＰＵ２０によって押鍵検出処理や自動演奏処理等を行う電子楽器を例に説明する。
【０００９】
マイクロプロセッサユニット（ＣＰＵ）２０は、この電子楽器全体の動作を制御するものである。このＣＰＵ２０に対して、データ及びアドレスバス３７を介してプログラムＲＯＭ２１、データ及びワーキングＲＡＭ２２、押鍵検出回路２３、スイッチ検出回路２４、アナログ−デジタル変換器（ＡＤＣ）２５、ＭＩＤＩインターフェース（Ｉ／Ｆ）２６、音源回路２７、フロッピディスクドライブ２８及びタイマ２９が接続されている。
【００１０】
プログラムＲＯＭ２１はＣＰＵ２０のシステムプログラムや自動演奏パターンデータや楽音に関する各種パラメータや各種データを格納するものであり、リードオンリーメモリ（ＲＯＭ）で構成されている。
データ及びワーキングＲＡＭ２２は、演奏データやＣＰＵ２０がプログラムを実行する際に発生する各種の演奏データや各種データを一時的に記憶するものであり、ランダムアクセスメモリ（ＲＡＭ）の所定のアドレス領域がそれぞれ割り当てられ、レジスタやフラグ等として利用される。
フロッピディスク３６は、複数曲分の演奏データを記憶し、所望の曲の演奏データをデータ及びワーキングＲＡＭ２２に転送して、その曲の演奏を行えるようにする。このフロッピディスク３６は、フロッピディスクドライブ２８によって駆動される。
【００１１】
鍵盤３０は、発音すべき楽音の音高を選択するための複数の鍵を備えており、各鍵に対応したキースイッチを有しており、また必要に応じて押圧力検出装置等のタッチ検出手段を有している。鍵盤３０は音楽演奏のための基本的な操作子であり、これ以外の演奏操作子でもよいことはいうまでもない。
【００１２】
押鍵検出回路２３は、発生すべき楽音の音高を指定する鍵盤３０のそれぞれの鍵に対応して設けられたキースイッチ回路を含むものである。この押鍵検出回路２３は、鍵盤３０の離鍵状態から押鍵状態への変化を検出してキーオンイベントを出力し、押鍵状態から離鍵状態への変化を検出してキーオフイベントを出力すると共にそれぞれのキーオンイベント及びキーオフイベントに関する鍵の音高を示すキーコード（ノートナンバ）を出力する。押鍵検出回路２３は、この他にも鍵押し下げ時の押鍵操作速度や押圧力等を判別してベロシティデータやアフタタッチデータとして出力する。
【００１３】
スイッチ検出回路２４は、パネルスイッチ３１に設けられた各々の操作子（スイッチ）に対応して設けられており、各々の操作子の操作状況に応じた操作データをイベント情報として出力する。
パネルスイッチ３１は、発生すべき楽音の音色、音量、音高、効果等を選択、設定、制御するための各種の操作子を含むものである。
【００１４】
フットペダル３２は操作者の足によって操作される操作子の一種であり、可動部材と固定部材とから成り、可動部材の操作角度に応じたアナログの角度信号を出力する。
アナログ−デジタル変換器２５はフットペダル３２から出力されるアナログの角度信号を０〜１の値を示すデジタルのペダル信号に変換する。フットプダル３２の踏み込み量が最大の場合に大きさ『１』のペダル信号が、踏み込み量が最小、すなわち操作されていない場合に大きさ『０』のペダル信号が、踏み込み量が中間に位置する場合には『０』〜『１』の範囲の大きさのペダル信号がアナログ−デジタル変換器２５から出力される。
【００１５】
音源回路２７は、複数のチャンネルで楽音信号の同時発生が可能であり、データ及びアドレスバス３７を経由して与えられた演奏データ（ＭＩＤＩ規格に準拠したデータ）を入力し、この演奏データに基づき楽音信号を発生する。
音源回路２７における楽音信号発生方式はいかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出すメモリ読み出し方式、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるＦＭ方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるＡＭ方式等の公知の方式を適宜採用してもよい。
【００１６】
音源回路２７から発生される楽音信号は、デジタル−アナログ変換器（ＤＡＣ）３４及びサウンドシステム３５（アンプ及びスピーカからなる）を介して発音される。
ＭＩＤＩ機器３３は、ＭＩＤＩ規格に準拠した演奏データを発生するものであり、ＭＩＤＩキーボードや他の電子楽器等で構成される。ＭＩＤＩ機器３３からの演奏データは、ＭＩＤＩインターフェース（Ｉ／Ｆ）２６、データ及びアドレスバス３７を介してＣＰＵ２０に取り込まれる。
【００１７】
タイマ２９は時間間隔を計数したり、自動演奏のテンポを設定したりするためのテンポクロックパルスを発生するものであり、このテンポクロックパルスの周波数はパネルスイッチ３１上のテンポスイッチ（図示していない）によって調整される。発生したテンポクロックパルスはＣＰＵ２０に対してインタラプト命令として与えられ、ＣＰＵ２０はインタラプト処理により自動演奏の各種処理を実行する。この実施例においてはテンポクロックパルスは４分音符につき９６回発生されるものとする。
【００１８】
図３は、外部のＭＩＤＩ機器３３からＭＩＤＩインターフェース２６を介して供給された演奏データがＣＰＵ２０によってどのように検出され、どのように記録されるかを示す図である。図３（Ａ）はＣＰＵ２０によって検出された演奏データの構成を示し、図３（Ｂ）はＣＰＵ２０によって記録された演奏データの構成を示す図である。
この実施例では、各イベントＡ，Ｂ，Ｃのタイミングデータは、そのベロシティの大きさに応じて可変制御されて、記憶装置（ＲＡＭ２２又はフロッピディスク３６）に記憶される。
【００１９】
ＭＩＤＩ機器３３は演奏データをイベント方式で発生するので、ＣＰＵ２０はその発生イベント毎にノートナンバ及びベロシティを検出する。そして、ＣＰＵ２０はテンポクロックパルスに基づいてイベント検出のタイミングを決定し、これをタイミングデータとする。タイミングデータは、各楽音毎の発音タイミングを示すデータであり、前回のイベント検出時点から今回のイベント検出時点までの時間に対応する。ノートナンバは発音する楽音の音高を示すデータである。ベロシティは楽音の音量を示すデータである。
【００２０】
例えば、ＭＩＤＩ機器２３がイベントＡ，Ｂ，Ｃの順番で演奏データを発生すると、ＣＰＵ２０はノートナンバＮＮＡ及びベロシティＶＡ＝『６０』からなるイベントＡ、ノートナンバＮＮＢ及びベロシティＶＢ＝『１００』からなるイベントＢ、ノートナンバＮＮＣ及びベロシティＶＣ＝『３０』からなるイベントＣを順番に検出する。そして、各イベントを検出したタイミングに基づきタイミングデータを作成する。図３（Ａ）の例においては、各イベントの発生タイミングは共に『２４』である。この実施例では、４分音符に相当する時間が『９６』なので、イベントＡ，Ｂ，Ｃは、連続した１６分音符の発音イベントに対応する。
【００２１】
ＣＰＵ２０は検出した演奏データ（図３（Ａ）の各イベントＡ，Ｂ，Ｃ）を、後述の記録処理によってタイミングデータの可変制御されたものに変換してから記録する。すなわち、ＣＰＵ２０は、演奏データのノートナンバＮＮＡ，ＮＮＢ，ＮＮＣ及びベロシティＶＡ，ＶＢ，ＶＣに関しては、検出されたものをそのまま記録し、作成したタイミングデータをベロシティの大きさに応じてさらに可変制御して記録する。
【００２２】
図５は、横軸にベロシティ、縦軸にタイミングデータのずれ量を示すタイミングデータの変換特性図である。この変換特性は、基準ベロシティ（例えば『６０』）を中心として、ベロシティの値が大きいときはずれ量は正（＋）の値となり、逆に、ベロシティの値が基準ベロシティよりも小さいときはずれ量は負（−）の値となる。ずれ量が正の値の場合には、タイミンングデータの値がずれ量分だけ小さくなるので、通常の場合よりもやや早いタイミングで発音されるようになり、曲感としては突っ込みぎみの発音タイミングとなる。ずれ量が負の値の場合には、タイミングデータの値がずれ量分だけ大きくなるので、通常の場合よりもやや遅れたタイミングで発音されるようになり、曲感としては遅れぎみ（もったり感）の発音となる。
【００２３】
図５の変換特性は、ベロシティの大きさ『１〜５』でずれ量『−６』、『６〜１５』でずれ量『−５』、『１６〜２５』でずれ量『−４』、『２６〜３５』でずれ量『−３』、『３６〜４５』でずれ量『−２』、『４６〜５５』でずれ量『−１』、『５６〜６５』でずれ量『０』、『６６〜７５』でずれ量『＋１』、『７６〜８５』でずれ量『＋２』、『８６〜９５』でずれ量『＋３』、『９６〜１０５』でずれ量『＋４』、『１０６〜１１５』でずれ量『＋５』、『１１６〜１２７』でずれ量『＋６』となるように設定されている。なお、この変換特性は一例であり、この他にも適宜の変換特性を設定してもよいことはいうまでもない。
【００２４】
従って、図３（Ａ）のイベントＡに関しては、そのベロシティＶＡは『６０』なので、図５の変換特性からずれ量は『０』となり、タイミングデータＴＤＡは『２４』のままである。イベントＢのベロシティＶＢは『１００』なので、ずれ量は『＋４』となり、タイミングデータＴＤＢは『２０（＝２４−４）』となる。イベントＣのベロシティＶＣは『３０』なので、ずれ量は『−３』となり、タイミングデータＴＤＣは『３１（＝２４＋４＋３）』となる。
【００２５】
図４は、図３の各イベントＡ，Ｂ，Ｃに対応した演奏データの検出タイミングと、検出された演奏データが発音される発音タイミングとの関係を時間ｔを横軸に示した図である。図４の上側にはイベントＡ，Ｂ，Ｃの検出タイミングが示され、下側にはイベントＡ，Ｂ，Ｃの発音タイミングが示されている。
【００２６】
図４に示すように、ＣＰＵ２０はノートナンバＮＮＡ、ベロシティＶＡ＝『６０』のイベントＡを検出すると共に前回のイベント検出時点から今回のイベントＡの検出時点までの時間に対応するタイミングデータＴＤＡ＝『２４』を作成する。ＣＰＵ２０はイベントＡのベロシティＶＡ＝『６０』に基づいたずれ量『０』の値を得るので、所定時間に対応した値『６』だけ遅れたタイミングでイベントＡの楽音を発音する。ここで所定時間に対応した値『６』は最大ずれ量『６』が得られた場合にも不都合なく発音処理ができるようにするための補償時間分に相当する発音時間のオフセット値である。
【００２７】
次に、ＣＰＵ２０はノートナンバＮＮＢ、ベロシティＶＢ＝『１００』のイベントＢを検出すると共に前回のイベントＡの検出時点から今回のイベントＢの検出時点までの時間に対応するタイミングデータＴＤＢ＝『２４』を検出する。ＣＰＵ２０はイベントＢのベロシティＶＢ＝『１００』に基づいたずれ量『＋４』の値を得るので、所定時間に対応した値『６』だけ遅れたタイミングから『４』だけ早い時点でイベントＢの楽音を発音する。
【００２８】
さらに、ＣＰＵ２０はノートナンバＮＮＣ、ベロシティＶＣ＝『３０』のイベントＣを検出すると共に前回のイベントＢの検出時点から今回のイベントＣの検出時点までの時間に対応するタイミングデータＴＤＣ＝『２４』を作成する。ＣＰＵ２０はイベントＣのベロシティＶＣ＝『３０』に基づいたずれ量『−３』の値を得るので、所定時間に対応した値『６』だけ遅れたタイミングからさらに『３』だけ遅れた時点でイベントＣの楽音を発音する。
【００２９】
次に、マイクロコンピュータ（ＣＰＵ２０）によって実行される自動演奏装置の処理の一例を図１のフローチャートに基づいて説明する。
図１は、マイクロコンピュータが処理する記録処理の一例を示す図である。
この記録処理は、図３（Ａ）のような演奏データがＭＩＤＩインターフェース２６を介して供給された場合に、前回のイベント発生時点から今回のイベント発生時点の間隔を計測することによりタイミングデータを作成し、そのタイミングデータをベロシティの大きさに応じて変更制御して、データ及びワーキングＲＡＭ又はフロッピディスク３６に記録するまでの処理を示すものである。この記録処理は４分音符当たり９６回の割り込みで実行されるタイマインタラプト処理であり、次のステップで順番に実行される。
【００３０】
ステップ１１：イベントが検出されたかどうかを判定し、イベントが検出された（ＹＥＳ）場合は次のステップ１２に進み、検出されない（ＮＯ）場合はステップ１５にジャンプする。
ステップ１２：図５の変換特性に従ってベロシティの大きさに応じてタイミング修正値（ずれ量）を決定する。
【００３１】
ステップ１３：前ステップ１２で決定されたタイミング修正値を所定値から減算した値をカウントバッファＣＯＵＮＴに格納する。この所定値は、図４のようにイベント検出と同時に発音処理する場合には、プラスのずれ量の最大値よりも大きな値でなければならない。図４の例においては、ずれ量の最大値と同じ値となっている。
ステップ１４：イベントバッファにイベント情報とカウントバッファＣＯＵＮＴの値を書き込む。ここで、イベント情報はノートナンバとベロシティである。
ステップ１５：イベントバッファの中でカウント値が０のイベントが有るかどうかを判定し、有り（ＹＥＳ）の場合は次のステップ１６に進み、無し（ＮＯ）の場合はステップ１Ａにジャンプする。
【００３２】
ステップ１６：タイミングカウンタＴＩＭＥの値をメモリ（データ及びワーキングＲＡＭ２２又はフロッピディスク３６）に書き込む。すなわち、このステップは、前のステップ１５でイベントバッファのカウント値が『０』であると判定された時点におけるタイミングカウンタＴＩＭＥの値を書き込む。
ステップ１７：イベントバッファの中のイベント情報（ノートナンバ及びベロシティ）をメモリ（データ及びワーキングＲＡＭ２２又はフロッピディスク３６）に書き込む。
ステップ１８：前のステップ１７で読み出したイベント情報をイベントバッファの中から削除する。
【００３３】
ステップ１９：タイミングカウンタＴＩＭＥの値を『０』にクリアする。
ステップ１Ａ：タイミングカウンタＴＩＭＥを『１』だけインクリメント処理する。
ステップ１Ｂ：イベントバッファ内の存在する全てのカウント値を『１』だけデクリメント処理して、リターンする。
【００３４】
次に図１の記録処理のフローチャートに従った動作の一例を図６を用いて説明する。
図６は、図３（Ａ）のイベントＡ，Ｂ，Ｃのような演奏データが図１の記録処理によって図３（Ｂ）のように記録される場合に、イベントバッファ及びタイミングカウンタの内容が時間的にどのように変化するかを示す図である。
【００３５】
図６の最初の時刻ｔ０では、イベントは検出されず、イベントバッファ内も空なので、ステップ１１及び１５の判定は共にＮＯとなり、ステップ１Ａだけが実行される。ステップ１ＡではタイミングカウンタＴＩＭＥはインクリメント処理されて『１８』となる。イベントバッファは空なので、ステップ１Ｂの処理は実行されない。ここでタイミングカウンタＴＩＭＥの値として、時刻ｔ０において『１７』が格納されているが、この『１７』は一例であり、どんな値であってもよい。
【００３６】
時刻ｔ１では、イベントＡが検出されるので、ステップ１１の判定はＹＥＳとなり、ステップ１２〜１４が実行される。ステップ１２ではイベントＡのベロシティＶＡ＝『６０』に基づいて修正値『０』が決定される。ステップ１３ではカウントバッファＣＯＵＮＴに所定値『６』から修正値『０』を減算した値『６』が格納される。ステップ１４ではイベントＡのイベント情報（ノートナンバＮＮＡ及びベロシティＶＡ＝『６０』）及びカウントバッファＣＯＵＮＴのカウント値『６』がイベントバッファに書き込まれる。
イベントバッファのカウント値は『６』なので、ステップ１５の判定はＮＯとなり、ステップ１ＡではタイミングカウンタＴＩＭＥは『１９』となり、ステップ１Ｂではイベントバッファのカウント値は『５』となる。
【００３７】
時刻ｔ２では、イベントは検出されず、イベントバッファのカウント値は『５』なので、ステップ１１及び１５の判定は共にＮＯとなり、ステップ１Ａ及び１Ｂの処理によってタイミングカウンタＴＩＭＥは『２０』となり、イベントバッファのカウント値は『４』となる。
イベントバッファのカウント値が『０』になるまで、タイミングカウンタＴＩＭＥのインクリメント処理と、イベントバッファのカウント値のデクリメント処理が繰り返し実行される。そして、時刻ｔ４で、イベントバッファのカウント値は『０』となるので、ステップ１５の判定はＹＥＳとなり、ステップ１６〜１Ｂが実行される。ステップ１６及び１７ではタイミングカウンタＴＩＭＥの値『２４』とイベントバッファ内のイベントＡのイベント情報（ノートナンバＮＮＡ及びベロシティＶＡ＝『６０』）がメモリに書き込まれる。
【００３８】
ステップ１８では前ステップ１６で読み出されたイベント情報がイベントバッファ内から削除される。ステップ１９ではタイミングカウンタＴＩＭＥが『０』にクリアされる。ステップ１ＡではタイミングカウンタＴＩＭＥはインクリメント処理されて『１』となる。イベントバッファにカウント値が存在しないので、ステップ１Ｂの処理は実行されない。
【００３９】
時刻ｔ５では、イベントは検出されず、イベントバッファも空なので、ステップ１１及び１５の判定は共にＮＯとなり、ステップ１Ａの処理だけが実行され、タイミングカウンタＴＩＭＥは『２』となる。
【００４０】
イベントＢが検出されるまでの間、タイミングカウンタＴＩＭＥのインクリメント処理が繰り返し実行される。そして、時刻ｔ７で、イベントＢが検出されるので、ステップ１１の判定はＹＥＳとなり、ステップ１２〜１４が実行される。
【００４１】
ステップ１２ではイベントＢのベロシティＶＢ＝『１００』に基づいて修正値『＋４』が決定される。ステップ１３ではカウントバッファＣＯＵＮＴに所定値『６』から修正値『＋４』を減算した値『２』が格納される。ステップ１４ではイベントＢのイベント情報（ノートナンバＮＮＢ及びベロシティＶＢ＝『１００』）及びカウントバッファＣＯＵＮＴのカウント値『２』がイベントバッファに書き込まれる。
イベントバッファのカウント値は『２』なので、ステップ１５の判定はＮＯとなり、ステップ１ＡではタイミングカウンタＴＩＭＥは『１９』となり、ステップ１Ｂではイベントバッファのカウント値は『１』となる。
【００４２】
時刻ｔ８では、イベントは検出されず、イベントバッファのカウント値は『１』なので、ステップ１１及び１５の判定は共にＮＯとなり、ステップ１Ａ及び１Ｂの処理によってタイミングカウンタＴＩＭＥは『２０』となり、イベントバッファのカウント値は『０』となる。
そして、時刻ｔ９で、イベントバッファのカウント値は『０』であり、ステップ１５の判定はＹＥＳとなり、ステップ１６〜１Ｂが実行される。ステップ１６及び１７ではタイミングカウンタＴＩＭＥの値『２０』とイベントバッファ内のイベントＢのイベント情報（ノートナンバＮＮＢ及びベロシティＶＢ＝『１００』）がメモリに書き込まれる。
【００４３】
ステップ１８では前ステップ１６で読み出されたイベント情報がイベントバッファ内から削除される。ステップ１９ではタイミングカウンタＴＩＭＥが『０』にクリアされる。ステップ１ＡではタイミングカウンタＴＩＭＥはインクリメント処理されて『１』となる。イベントバッファにカウント値が存在しないので、ステップ１Ｂの処理は実行されない。
【００４４】
時刻ｔＡでは、イベントは検出されず、イベントバッファは空なので、ステップ１１及び１５の判定は共にＮＯとなり、ステップ１Ａの処理によってタイミングカウンタＴＩＭＥは『２』となる。
【００４５】
イベントＣが検出されるまでの間、タイミングカウンタＴＩＭＥのインクリメント処理が繰り返し実行される。そして、タイミングカウンタＴＩＭＥが『２２』の時刻ｔＣで、イベントＣが検出されるので、ステップ１１の判定はＹＥＳとなり、ステップ１２〜１４が実行される。
【００４６】
ステップ１２ではイベントＣのベロシティＶＣ＝『３０』に基づいて修正値『−３』が決定される。ステップ１３ではカウントバッファＣＯＵＮＴに所定値『６』から修正値『−３』を減算した値『９』が格納される。ステップ１４ではイベントＢのイベント情報（ノートナンバＮＮＣ及びベロシティＶＣ＝『３０』）及びカウントバッファＣＯＵＮＴのカウント値『９』がイベントバッファに書き込まれる。
イベントバッファのカウント値は『９』なので、ステップ１５の判定はＮＯとなり、ステップ１ＡではタイミングカウンタＴＩＭＥは『２３』となり、ステップ１Ｂではイベントバッファのカウント値は『８』となる。
【００４７】
時刻ｔＤでは、イベントは検出されず、イベントバッファのカウント値は『８』なので、ステップ１１及び１５の判定は共にＮＯとなり、ステップ１Ａ及び１Ｂの処理によってタイミングカウンタＴＩＭＥは『２３』となり、イベントバッファのカウント値は『７』となる。
そして、時刻ｔＦで、イベントバッファのカウント値は『０』であり、ステップ１５の判定はＹＥＳとなり、ステップ１６〜１Ｂが実行される。ステップ１６及び１７ではタイミングカウンタＴＩＭＥの値『３１』とイベントバッファ内のイベントＣのイベント情報（ノートナンバＮＮＣ及びベロシティＶＣ＝『３０』）がメモリに書き込まれる。
【００４８】
ステップ１８では前ステップ１６で読み出されたイベント情報がイベントバッファ内から削除される。ステップ１９ではタイミングカウンタＴＩＭＥが『０』にクリアされる。ステップ１ＡではタイミングカウンタＴＩＭＥはインクリメント処理されて『１』となる。イベントバッファにカウント値が存在しないので、ステップ１Ｂの処理は実行されない。
そして、次のイベントＤが検出されるまでの間、タイミングカウンタＴＩＭＥのインクリメント処理のデクリメント処理が繰り返し実行される。
【００４９】
このようにして、図３（Ａ）の検出された演奏データは図３（Ｂ）のようにベロシティの大きさに応じてタイミングデータが変更されて記録される。
【００５０】
次に、マイクロコンピュータ（ＣＰＵ２０）によって実行される自動演奏装置の処理の別の一例を図７のフローチャートに基づいて説明する。
図７は、マイクロコンピュータが処理する再生処理の一例を示す図である。
この再生処理は、図３（Ａ）のような演奏データがデータ及びワーキングＲＡＭ又はフロッピディスク３６に記録されている場合に、そのタイミングデータをベロシティに応じて可変制御して、再生発音する処理を示すものである。この再生処理は４分音符当たり９６回の割り込みで実行されるタイマインタラプト処理であり、次のステップで順番に実行される。
【００５１】
ステップ７１：タイミングカウンタＴＩＭＥが『０』かどうかを判定し、『０』（ＹＥＳ）の場合は次のステップ７２に進み、『０』以外の値（ＮＯ）の場合はステップ７８にジャンプする。
ステップ７２：メモリ（データ及びワーキングＲＡＭ又はフロッピディスク）からデータを順番に読み出す（メモリの読み出しアドレスを進め、そのアドレスに記憶されているデータを読み出す）。
【００５２】
ステップ７３：演奏データは図３（Ａ）のようにタイミングデータ、ノートナンバ、ベロシティの順番に記録されているので、ステップ７２で読み出されたデータがタイミングデータかこれ以外のデータかを判定し、タイミングデータの場合にはステップ７７に進み、これ以外のデータの場合にはステップ７４に進む。すなわち、このステップではタイミングデータが読み出されるまでステップ７４，７５，７６，７２の処理を繰り返し実行する。
【００５３】
ステップ７４：読み出されたデータがベロシティデータの場合には、図５の変換特性などに従ってベロシティに応じたタイミング修正値（ずれ量）を決定する。
ステップ７５：前ステップ７４で決定されたタイミング修正値（ずれ量）を所定値から減算し、その減算値をカウントバッファＣＯＵＮＴに格納する。この所定値は、プラスのずれ量の最大値よりも大きな値でなければならない。
【００５４】
ステップ７６：イベントバッファにイベント情報とカウントバッファＣＯＵＮＴの値を書き込む。ここで、イベント情報はノートナンバとベロシティである。
ステップ７７：ステップ７２で読み出されたタイミングデータをタイミングカウンタＴＩＭＥに書き込む。
ステップ７８：タイミングカウンタＴＩＭＥの値を『１』だけデクリメント処理する。
【００５５】
ステップ７９：イベントバッファの中のカウント値ＣＯＵＮＴが０のイベントが有るかどうかを判定し、有り（ＹＥＳ）の場合は次のステップ７Ａに進み、無し（ＮＯ）の場合はステップ７Ｃにジャンプする。
ステップ７Ａ：イベントバッファからイベント情報を読み出して発音処理を行う。
ステップ７Ｂ：前ステップ７Ａで読み出したイベント情報をイベントバッファの中から削除する。
ステップ７Ｃ：イベントバッファ内の全てのイベントのカウント値ＣＯＵＮＴを『１』だけデクリメント処理して、リターンする。
【００５６】
次に図７の再生処理のフローチャートに従った動作の一例を図８を用いて説明する。
図８は、図３（Ａ）のイベントＡ，Ｂ，Ｃのような演奏データが図７の再生処理によって再生される場合に、イベントバッファ及びタイミングカウンタの内容が時間的にどのように変化するかを示す図である。
【００５７】
図８の最初の時刻Ｔ０では、タイミングカウンタＴＩＭＥは『１』であり、イベントバッファ内にはカウント値『０』のイベントは存在しないので、ステップ７１及び７９の判定は共にＮＯとなり、ステップ７８が実行され、タイミングカウンタＴＩＭＥはデクリメント処理されて『０』となる。イベントバッファにカウント値が存在しないので、ステップ７Ｃの処理は実行されない。
【００５８】
時刻Ｔ１では、タイミングカウンタＴＩＭＥが『０』なので、ステップ７１の判定はＹＥＳとなり、ステップ７２〜７６が実行される。イベントＡのタイミングデータＴＤＡは前回のイベントＡの再生処理で読み出されているので、ステップ７２ではイベントＡのノートナンバＮＮＡが読み出される。読み出されたデータはノートナンバなので、ステップ７３の判定はＮＯとなり、ステップ７４〜７６を経て再びステップ７２のデータ読出処理が行われる。
【００５９】
ステップ７２ではイベントＡのベロシティＶＡ＝６０が読み出される。読み出されたデータはベロシティなので、ステップ７３の判定はＮＯとなり、ステップ７４〜７６が実行される。ステップ７４ではベロシティＶＡ＝『６０』に基づいてタイミング修正値『０』が決定される。ステップ７５ではカウントバッファＣＯＵＮＴに所定値『６』から修正値『０』を減算した値『６』が格納される。ステップ７６ではイベントＡのイベント情報（ノートナンバＮＮＡ及びベロシティＶＡ＝『６０』）及びカウントバッファＣＯＵＮＴのカウント値『６』がイベントバッファに書き込まれる。
【００６０】
そして、ステップ７２では、イベントＢのタイミングデータＴＤＢ＝『２４』が読み出される。読み出されたデータはタイミングデータなので、ステップ７３の判定はＹＥＳとなり、ステップ７７が実行される。ステップ７７ではタイミングカウンタＴＩＭＥに読み出されたタイミングデータＴＤＢ＝『２４』が格納される。そして、ステップ７８ではタイミングカウンタＴＩＭＥがデクリメント処理され、『２３』となる。ステップ７９の判定はＮＯとなり、ステップ７Ｃが実行される。ステップ７Ｃではイベントバッファ内の全イベントのカウント値がデクリメント処理され、『５』となる。
【００６１】
時刻Ｔ２では、タイミングカウンタＴＩＭＥは『２３』であり、イベントバッファ内にはカウント値『５』のイベントＡが存在するので、ステップ７１及び７９の判定は共にＮＯとなり、ステップ７８及び７Ｃのみが実行される。ステップ７８ではタイミングカウンタＴＩＭＥはデクリメント処理されて『２２』となり、イベントバッファ内のイベントＡのカウント値はデクリメント処理されて『４』となる。
【００６２】
イベントバッファのカウント値が『０』になるまで、ステップ７８のタイミングカウンタＴＩＭＥのデクリメント処理と、ステップ７Ｃのイベントバッファのカウント値のデクリメント処理が繰り返し実行される。そして、時刻Ｔ４でタイミングカウンタＴＩＭＥは『１８』、イベントバッファのカウント値は『０』なので、ステップ７９の判定はＹＥＳとなり、ステップ７Ａ，７Ｂが実行される。ステップ７ＡではイベントバッファからイベントＡに対応したイベント情報（ノートナンバＮＮＡ及びベロシティＶＡ＝『６０』）が読み出されて発音処理される。
【００６３】
ステップ７Ｂでは前ステップ７Ａで読み出されたイベント情報がイベントバッファ内から削除される。イベントバッファにカウント値が存在しないので、ステップ７Ｃの処理は実行されない。
時刻Ｔ５では、タイミングカウンタＴＩＭＥは『１７』であり、イベントバッファ内は空なので、ステップ７１及び７９の判定は共にＮＯとなり、ステップ７８のみが実行される。ステップ７８ではタイミングカウンタＴＩＭＥはデクリメント処理されて『１６』となる。
【００６４】
タイミングカウンタＴＩＭＥの値が『０』になるまで、ステップ７８のタイミングカウンタＴＩＭＥのデクリメント処理が繰り返し実行される。そして、時刻Ｔ７で、タイミングカウンタＴＩＭＥの値は『０』なので、ステップ７１の判定はＹＥＳとなり、ステップ７２〜７６が実行される。ステップ７２ではイベントＢのノートナンバＮＮＢが読み出される。読み出されたデータはノートナンバなので、ステップ７３の判定はＮＯとなり、ステップ７４〜７６を経て再びステップ７２のデータ読出処理が行われる。
【００６５】
ステップ７２ではイベントＢのベロシティＶＢ＝１００が読み出される。読み出されたデータはベロシティなので、ステップ７３の判定はＮＯとなり、ステップ７４〜７６が実行される。ステップ７４ではベロシティＶＢ＝『１００』に基づいてタイミング修正値『＋４』が決定される。ステップ７５ではカウントバッファＣＯＵＮＴに所定値『６』から修正値『＋４』を減算した値『２』が格納される。ステップ７６ではイベントＢのイベント情報（ノートナンバＮＮＢ及びベロシティＶＢ＝『１００』）及びカウントバッファＣＯＵＮＴのカウント値『２』がイベントバッファに書き込まれる。
【００６６】
そして、ステップ７２では、イベントＣのタイミングデータＴＤＢ＝『２４』が読み出される。読み出されたデータはタイミングデータなので、ステップ７３の判定はＹＥＳとなり、ステップ７７が実行される。ステップ７７ではタイミングカウンタＴＩＭＥに読み出されたタイミングデータＴＤＣ＝『２４』が格納される。そして、ステップ７８ではタイミングカウンタＴＩＭＥがデクリメント処理され、『２３』となる。ステップ７９の判定はＮＯとなり、ステップ７Ｃが実行される。ステップ７Ｃではイベントバッファ内の全イベントのカウント値がデクリメント処理され、『１』となる。
【００６７】
時刻Ｔ８では、タイミングカウンタＴＩＭＥは『２３』であり、イベントバッファ内にはカウント値『１』のイベントＢが存在するので、ステップ７１及び７９の判定は共にＮＯとなり、ステップ７８及び７Ｃのみが実行される。ステップ７８ではタイミングカウンタＴＩＭＥはデクリメント処理されて『２２』となり、イベントバッファ内のイベントＢのカウント値はデクリメント処理されて『０』となる。
【００６８】
時刻Ｔ９では、タイミングカウンタＴＩＭＥは『２２』、イベントバッファのカウント値は『０』なので、ステップ７１の判定はＮＯとなり、ステップ７８が実行され、ステップ７９の判定はＹＥＳとなり、ステップ７Ａ，７Ｂ，７Ｃが実行される。ステップ７８ではタイミングカウンタＴＩＭＥはデクリメント処理されて『２１』となる。ステップ７ＡではイベントバッファからイベントＢに対応したイベント情報（ノートナンバＮＮＢ及びベロシティＶＢ＝『１００』）が読み出されて発音処理される。ステップ７Ｂでは前ステップ７Ａで読み出されたイベント情報がイベントバッファ内から削除される。イベントバッファにカウント値が存在しないので、ステップ７Ｃの処理は実行されない。
【００６９】
時刻ＴＡでは、タイミングカウンタＴＩＭＥは『２１』であり、イベントバッファ内は空なので、ステップ７１及び７９の判定は共にＮＯとなり、ステップ７８のみが実行される。ステップ７８ではタイミングカウンタＴＩＭＥはデクリメント処理されて『２０』となる。
【００７０】
タイミングカウンタＴＩＭＥの値が『０』になるまで、ステップ７８のタイミングカウンタＴＩＭＥのデクリメント処理が繰り返し実行される。そして、時刻ＴＣで、タイミングカウンタＴＩＭＥの値は『０』なので、ステップ７１の判定はＹＥＳとなり、ステップ７２〜７６が実行される。ステップ７２ではイベントＣのノートナンバＮＮＣが読み出される。読み出されたデータはノートナンバなので、ステップ７３の判定はＮＯとなり、ステップ７４〜７６を経て再びステップ７２のデータ読出処理が行われる。
【００７１】
ステップ７２ではイベントＣのベロシティＶＣ＝『３０』が読み出される。読み出されたデータはベロシティなので、ステップ７３の判定はＮＯとなり、ステップ７４〜７６が実行される。ステップ７４ではベロシティＶＣ＝『３０』に基づいてタイミング修正値『−３』が決定される。ステップ７５ではカウントバッファＣＯＵＮＴに所定値『６』から修正値『−３』を減算した値『９』が格納される。ステップ７６ではイベントＣのイベント情報（ノートナンバＮＮＣ及びベロシティＶＣ＝『３０』）及びカウントバッファＣＯＵＮＴのカウント値『９』がイベントバッファに書き込まれる。
【００７２】
そして、ステップ７２では、次のイベントＤのタイミングデータＴＤＤが読み出される。読み出されたデータはタイミングデータなので、ステップ７３の判定はＹＥＳとなり、ステップ７７が実行される。ステップ７７ではタイミングカウンタＴＩＭＥに読み出されたタイミングデータＴＤＤが格納される。そして、ステップ７８ではタイミングカウンタＴＩＭＥがデクリメント処理され、『２３』となる。ステップ７９の判定はＮＯとなり、ステップ７Ｃが実行される。ステップ７Ｃではイベントバッファ内の全イベントのカウント値がデクリメント処理されて、『８』となる。
【００７３】
時刻ＴＤでは、タイミングカウンタＴＩＭＥは『２３』であり、イベントバッファ内にはカウント値『８』のイベントＢが存在するので、ステップ７１及び７９の判定は共にＮＯとなり、ステップ７８及び７Ｃのみが実行される。ステップ７８ではタイミングカウンタＴＩＭＥはデクリメント処理されて『２２』となり、イベントバッファ内のイベントＢのカウント値はデクリメント処理されて『７』となる。
【００７４】
イベントバッファのカウント値が『０』になるまで、ステップ７８のタイミングカウンタＴＩＭＥのデクリメント処理と、ステップ７Ｃのイベントバッファのカウント値のデクリメント処理が繰り返し実行される。そして、時刻ＴＦでタイミングカウンタＴＩＭＥは『１５』、イベントバッファのカウント値は『０』なので、ステップ７１の判定はＮＯとなり、ステップ７９の判定はＹＥＳとなり、ステップ７８，ステップ７Ａ，７Ｂが実行される。
【００７５】
ステップ７８ではタイミングカウンタはデクリメント処理されて『１４』となる。ステップ７ＡではイベントバッファからイベントＣに対応したイベント情報（ノートナンバＮＮＣ及びベロシティＶＣ＝『３０』）が読み出されて発音処理される。ステップ７Ｂでは前ステップ７Ａで読み出されたイベント情報がイベントバッファ内から削除される。イベントバッファにカウント値が存在しないので、ステップ７Ｃの処理は実行されない。
そして、次にタイミングカウンタＴＩＭＥが『０』となるまでの間、タイミングカウンタＴＩＭＥのデクリメント処理が繰り返し実行される。
このようにして、図３（Ａ）の演奏データはベロシティの大きさに応じてタイミングデータが変更されて再生され、発音処理される
【００７６】
なお、上述の実施例では、図５の変換特性に基づいてタイミンングデータを可変制御する場合について説明したが、これに限らず、図９（Ａ）〜（Ｈ）に示すような種々の変換特性を用いてもよい。以下、図９（Ａ）〜（Ｈ）の各変換特性について説明する。
【００７７】
図９（Ａ）の変換特性は図５に対応したものであり、ベロシティに応じてずれ量が線形的に変化する特性を示す。すなわち、図９（Ａ）の変換特性は、ベロシティの値が基準ベロシティよりも大きいときはずれ量は正（＋）の値となり、タイミンングデータの値がずれ量分だけ小さくなるので、通常の場合よりもやや早いタイミングで発音されるようになり、曲感としては突っ込みぎみの発音タイミングとなる。逆に、ベロシティの値が基準ベロシティよりも小さいときはずれ量は負（−）の値となり、タイミングデータの値がずれ量分だけ大きくなるので、通常の場合よりもやや遅れたタイミングで発音されるようになり、曲感としては遅れぎみ（もったり感）の発音となる。
【００７８】
図９（Ｂ）の変換特性はベロシティに応じて非線形的に変化する特性を示す。すなわち、図９（Ｃ）の変換特性は、ベロシティの値が基準ベロシティよりも大きいときはずれ量は正（＋）の値となり、ベロシティの値が基準ベロシティよりも小さいときはずれ量は負（−）の値となり、基準ベロシティの付近ではずれ量の変化が小さく、ベロシティの大きい部分及び小さい部分でずれ量の変化が大きくなっている。
【００７９】
図９（Ｃ）の変換特性はベロシティに応じてずれ量が線形的に変化する図９（Ａ）とは逆の特性を示す。すなわち、図９（Ｃ）の変換特性は、ベロシティの値が基準ベロシティよりも大きいときはずれ量は負（−）の値となり、ベロシティの値が基準ベロシティよりも小さいときはずれ量は正（＋）の値となる。
【００８０】
図９（Ｄ）の変換特性はベロシティに応じて非線形的に変化する図９（Ｂ）とは逆の特性を示す。すなわち、図９（Ｄ）の変換特性は、ベロシティの値が基準ベロシティよりも大きいときはずれ量は負（−）の値となり、ベロシティの値が基準ベロシティよりも小さいときはずれ量は正（＋）の値となり、基準ベロシティの付近ではずれ量の変化が小さく、ベロシティの大きい部分及び小さい部分でずれ量の変化が大きくなっている。
【００８１】
図９（Ｄ）の変換特性は、ベロシティが所定値よりも小さい場合にはずれ量は変化せず、所定値以上になるとずれ量が線形的に負（−）の値に変化するという特性を示す。
図９（Ｅ）の変換特性は、ベロシティが所定値よりも小さい場合にはずれ量は変化せず、所定値以上になるとずれ量が非線形的に負（−）の値に変化するという特性を示す。
【００８２】
図９（Ｆ）の変換特性は、ベロシティが所定値よりも小さい場合にはずれ量は変化せず、所定値以上になるとずれ量が線形的に正（＋）の値に変化するという特性を示す。
図９（Ｇ）の変換特性は、ベロシティが所定値よりも小さい場合にはずれ量は変化せず、所定値以上になるとずれ量が非線形的に正（＋）の値に変化するという特性を示す。
【００８３】
なお、上述の実施例では自動演奏装置を内蔵した電子楽器について説明したが、自動演奏処理を行うシーケンサモジュールと、押鍵検出回路や音源回路からなる音源モジュールとがそれぞれ別々に構成され、各モジュール間のデータの授受を周知のＭＩＤＩ規格で行うように構成されたものにも同様に適用できることは言うまでもない。
また、上述の実施例では、本発明を自動演奏に適用した場合について説明したが、これに限らず自動リズム演奏、自動伴奏にも適用してもよいことは言うまでもない。
【００８４】
上述の実施例では、ベロシティに応じて発音タイミングを修正する場合について説明したが、これに加えてさらにランダムにタイミングを修正するようにしてもよい。このようにすると、より自然な揺らぎを与えることができるようになる。また、タイミング修正の対象となる楽音のベロシティーだけでなく、その楽音の前、後又は前後の楽音のベロシティー、符長又は／及び音高等の楽音の設定又は制御のための情報に応じて発音タイミングを修正するようにしてもよい。
【００８５】
また、従来のずれパターンによるタイミングの変更に加え、本発明のベロシティによるタイミングの変更を付加するようにしてもよい。このようにすると、ずれパターンによる特定のずれをさらにベロシティによって微妙に変化させることができ、より音楽的に優れた変化を与えることができる。
【００８６】
上述の実施例では、記録時にずれを与える場合、再生時にずれを与える場合を例に説明したが、既に記憶されたずれのない演奏データに対してずれを付与し、再記録するようなものであってもよい。
また、上述の実施例では、演奏データの最少分解能単位（タイマ割り込みの間隔）でのずれを与えるようにしたが、さらにこれよりも細かいタイミングのずれを与えるようにしてもよい。
【００８７】
楽器音毎にずれ度合いやずれの有無を設定できるようにしてもよい。このようにすると、特に自動リズム演奏に対して有効となる。
ずれの有無やずれ度合いに関するデータを演奏データ中に入れ、演奏の進行に従ってずれの有無やずれ度合いが変化するようにしてもよい。
複数の演奏パターンを記憶し、演奏パターン毎にずれ度合いやずれの有無を設定できるようにしてもよい。
【００８８】
上述の実施例では、ベロシティとずれ量の関係として、図５及び図９にその一例を示したが、この関係はどのようなものであってもよい。また、有名演奏家の演奏データに基づいてベロシティとずれ量との関係を求めて、それに基づいて発音タイミングをずらすようにしてもよい。
【００８９】
上述の実施例では、ベロシティに応じてタイミング修正値を決定する場合について説明したが、このタイミング修正値をフットペダル３２からの出力に応じてリアルタイムに可変してもよい。また、フットペダルでリアルタイムに変化させる場合に限らず、ボリュームスライダ等のその他の操作子によってリアルタイム変化可能としてもよい。
上述の実施例では、演奏データとして発音のイベントがあるタイミングについてのみ、音高情報、発音制御情報を付与して記憶するイベント方式を例に説明したが、これに限らず、すべてのテンポクロックに対応するアドレスに音高情報、発音制御情報を順次記憶するベタ方式にも適用できることはいうまでもない。
【００９０】
【発明の効果】
この発明によれば、個々の楽音の発音タイミングに微妙な変化を与えたりすることができるという効果がある。
【図面の簡単な説明】
【図１】マイクロコンピュータが処理する記録処理の一例を示す図である。
【図２】この発明に係る自動演奏装置を適用した電子楽器の一実施例を示すハード構成ブロック図である。
【図３】外部のＭＩＤＩ機器からＭＩＤＩインターフェースを介して供給された演奏データがどのように検出され、どのように記録されるかを示すデータ構成図である。
【図４】図３の各イベントに対応した演奏データの検出タイミングと、検出された演奏データが発音される発音タイミングとの関係を時間を横軸に示した図である。
【図５】横軸にベロシティ、縦軸にタイミングデータのずれ量を示すタイミングデータの変換特性図である。
【図６】図３（Ａ）の演奏データが図１の記録処理によって図３（Ｂ）のように記録される場合に、イベントバッファ及びタイミングカウンタの内容が時間的にどのように変化するかを示す図である。
【図７】マイクロコンピュータが処理する再生処理の一例を示す図である。
【図８】図３（Ａ）の演奏データが図７の再生処理によって再生される場合に、イベントバッファ及びタイミングカウンタの内容が時間的にどのように変化するかを示す図である。
【図９】横軸にベロシティ、縦軸にタイミングデータのずれ量を示すタイミングデータの変換特性の別の例を複数示す図である。
【符号の説明】
２０…ＣＰＵ、２１…プログラムＲＯＭ、２２…データ及びワーキングＲＡＭ、２３…押鍵検出回路、２４…スイッチ検出回路、２５…アナログ−デジタル変換器、２６…ＭＩＤＩインターフェイス、２７…音源回路、２７…音源回路、２８…フロッピディスクドライブ、２９…タイマ、３０…鍵盤、３１…パネルスイッチ、３２…ペダル、３３…ＭＩＤＩ機器、３４…デジタル−アナログ変換器、３５…サウンドシステム、３６…フロッピディスク、３７…データ及びアドレスバス
【図１】
0003552264.tif 000002
【図２】
0003552264.tif 000003
【図５】
0003552264.tif 000004
【図３】
0003552264.tif 000005
【図４】
0003552264.tif 000006
【図６】
0003552264.tif 000007
【図７】
0003552264.tif 000008
【図８】
0003552264.tif 000009
【図９】
0003552264.tif 000010