(57)【要約】【課題】性能劣化を引き起こすことなく波形データの大容量化に対応できる楽音発生装置を実現する。【解決手段】サンプルローダ処理がフラッシュメモリ１６から読み出した波形データを波形メモリ１７にロードすると同時に、ゲートスタート／エンド処理の指示に従って音源処理が当該波形メモリ１７にロードされた波形データを再生して楽音波形Ｗを生成するので、フラッシュメモリからＲＡＭ（波形メモリ）に波形データをロードする際のロード待ち時間を無くす。これにより、フラッシュメモリに格納する波形データの大容量化に伴ってロード待ち時間が増大して発音資源（発音チャンネル）の使用効率が低下するという弊害を回避する結果、性能劣化を引き起こすことなく波形データの大容量化に対応することが出来る。【選択図】図６
2008015315.tif 000002
【特許請求の範囲】
【請求項１】
各種音色の波形データを記憶する第１の波形記憶手段と、
発音指示を発生する発音指示手段と、
前記発音指示手段が発生する発音指示に応じて、前記第１の波形記憶手段に記憶される各種音色の波形データの内から発音割当てされた音色の波形データを読み出して第２の波形記憶手段にロードする波形ロード手段と、
発音割当てされた音色の波形データが、前記波形ロード手段により前記第２の波形記憶手段にロードされると同時に、そのロードされた波形データを当該第２の波形記憶手段から読み出して楽音生成する楽音生成手段と
を具備することを特徴とする楽音発生装置。
【請求項２】
前記楽音生成手段は、第２の波形記憶手段にロードされた波形データを終端のエンドアドレスまで読み出し終えた場合、ループアドレスに遡って当該ループアドレスからエンドアドレスまでの波形データを繰り返し読み出すループ再生を行うことを特徴とする請求項１記載の楽音発生装置。
【請求項３】
前記波形ロード手段は、同一音色の発音が連続した場合に、先の発音に際して前記第２の波形記憶手段にロードした波形データを、次の発音にも使用するよう前記楽音生成手段に指示することを特徴とする請求項１記載の楽音発生装置。
【請求項４】
前記楽音生成手段は、同一音色の発音が連続した時に前記波形ロード手段から先の発音に際して前記第２の波形記憶手段にロードした波形データを、次の発音にも使用するよう指示された場合、当該第２の波形記憶手段にロード済みの波形データを、ループアドレスからエンドアドレスまで繰り返し読み出すループ再生を行うことを特徴とする請求項１記載の楽音発生装置。
【請求項５】
発音指示を発生する発音指示処理と、
前記発音指示処理が発生する発音指示に応じて、第１のメモリに記憶される各種音色の波形データの内から発音割当てされた音色の波形データを読み出して第２のメモリにロードする波形ロード処理と、
発音割当てされた音色の波形データが、前記波形ロード処理により第２のメモリにロードされると同時に、そのロードされた波形データを当該第２のメモリから読み出して楽音生成する楽音生成処理と
をコンピュータで実行させることを特徴とする楽音発生処理プログラム。
【請求項６】
前記楽音生成処理は、第２のメモリにロードされた波形データを終端のエンドアドレスまで読み出し終えた場合、ループアドレスに遡って当該ループアドレスからエンドアドレスまでの波形データを繰り返し読み出すループ再生を行うことを特徴とする請求項５記載の楽音発生処理プログラム。
【請求項７】
前記波形ロード処理は、同一音色の発音が連続した場合に、先の発音に際して第２のメモリにロードした波形データを、次の発音にも使用するよう前記楽音生成処理に指示することを特徴とする請求項５記載の楽音発生処理プログラム。
【請求項８】
前記楽音生成処理は、同一音色の発音が連続した時に前記波形ロード処理から先の発音に際して第２のメモリにロードした波形データを、次の発音にも使用するよう指示された場合、当該第２のメモリにロード済みの波形データを、ループアドレスからエンドアドレスまで繰り返し読み出すループ再生を行うことを特徴とする請求項５記載の楽音発生処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器に用いて好適な楽音発生装置および楽音発生処理プログラムに関する。
【背景技術】
【０００２】
従来より波形メモリ読み出し方式で構成される楽音発生装置が知られている。この種の装置として、例えば特許文献１には、電気的に書き換え可能な不揮発性メモリであるフラッシュメモリに各種波形データを登録しておき、それらの内から楽音生成に必要な種類の波形データをフラッシュメモリから読み出してＲＡＭにロードした後、このＲＡＭにロードした波形データを使用して楽音生成する技術が開示されている。
【０００３】
【特許文献１】特開２０００−２８４７８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の装置では、楽音の生成に必要な全ての波形データを、フラッシュメモリから一旦ＲＡＭにロードしておく必要がある。したがって、発音品質の向上や音色数の増加に伴い波形データの大容量化が進むと、必然的にＲＡＭの記憶容量も増大させる必要が生じる。しかしながら、ＲＡＭの大容量化は、製品コスト高を招致したり、フラッシュメモリからＲＡＭに波形データをロードする際のロード待ち時間の増大を招く。とりわけロード待ち時間の増大は、発音資源（発音チャンネル）の使用効率を低下させ、例えば同時発音数が少なくなる等の性能劣化を引き起こす問題が生じる。
【０００５】
本発明は、このような事情に鑑みてなされたもので、性能劣化を引き起こすことなく波形データの大容量化に対応することができる楽音発生装置および楽音発生処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、各種音色の波形データを記憶する第１の波形記憶手段と、発音指示を発生する発音指示手段と、前記発音指示手段が発生する発音指示に応じて、前記第１の波形記憶手段に記憶される各種音色の波形データの内から発音割当てされた音色の波形データを読み出して第２の波形記憶手段にロードする波形ロード手段と、発音割当てされた音色の波形データが、前記波形ロード手段により前記第２の波形記憶手段にロードされると同時に、そのロードされた波形データを当該第２の波形記憶手段から読み出して楽音生成する楽音生成手段とを具備することを特徴とする。
【０００７】
上記請求項１に従属する請求項２に記載の発明では、前記楽音生成手段は、第２の波形記憶手段にロードされた波形データを終端のエンドアドレスまで読み出し終えた場合、ループアドレスに遡って当該ループアドレスからエンドアドレスまでの波形データを繰り返し読み出すループ再生を行うことを特徴とする。
【０００８】
上記請求項１に従属する請求項３に記載の発明では、前記波形ロード手段は、同一音色の発音が連続した場合に、先の発音に際して前記第２の波形記憶手段にロードした波形データを、次の発音にも使用するよう前記楽音生成手段に指示することを特徴とする。
【０００９】
上記請求項１に従属する請求項４に記載の発明では、前記楽音生成手段は、同一音色の発音が連続した時に前記波形ロード手段から先の発音に際して前記第２の波形記憶手段にロードした波形データを、次の発音にも使用するよう指示された場合、当該第２の波形記憶手段にロード済みの波形データを、ループアドレスからエンドアドレスまで繰り返し読み出すループ再生を行うことを特徴とする。
【００１０】
請求項５に記載の発明では、発音指示を発生する発音指示処理と、前記発音指示処理が発生する発音指示に応じて、第１のメモリに記憶される各種音色の波形データの内から発音割当てされた音色の波形データを読み出して第２のメモリにロードする波形ロード処理と、発音割当てされた音色の波形データが、前記波形ロード処理により第２のメモリにロードされると同時に、そのロードされた波形データを当該第２のメモリから読み出して楽音生成する楽音生成処理とをコンピュータで実行させることを特徴とする。
【００１１】
上記請求項５に従属する請求項６に記載の発明では、前記楽音生成処理は、第２のメモリにロードされた波形データを終端のエンドアドレスまで読み出し終えた場合、ループアドレスに遡って当該ループアドレスからエンドアドレスまでの波形データを繰り返し読み出すループ再生を行うことを特徴とする。
【００１２】
上記請求項５に従属する請求項７に記載の発明では、前記波形ロード処理は、同一音色の発音が連続した場合に、先の発音に際して第２のメモリにロードした波形データを、次の発音にも使用するよう前記楽音生成処理に指示することを特徴とする。
【００１３】
上記請求項５に従属する請求項８に記載の発明では、前記楽音生成処理は、同一音色の発音が連続した時に前記波形ロード処理から先の発音に際して第２のメモリにロードした波形データを、次の発音にも使用するよう指示された場合、当該第２のメモリにロード済みの波形データを、ループアドレスからエンドアドレスまで繰り返し読み出すループ再生を行うことを特徴とする。
【発明の効果】
【００１４】
本発明では、発音指示に応じて、第１の波形記憶手段に記憶される各種音色の波形データの内から発音割当てされた音色の波形データを読み出して第２の波形記憶手段にロードすると同時に、そのロードされた波形データを当該第２の波形記憶手段から読み出して楽音生成するので、フラッシュメモリからＲＡＭ（波形メモリ）に波形データをロードする際のロード待ち時間を無くし、これにより、フラッシュメモリに格納する波形データの大容量化に伴ってロード待ち時間が増大して発音資源（発音チャンネル）の使用効率が低下するという弊害を回避する結果、性能劣化を引き起こすことなく波形データの大容量化に対応することが出来る。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態について説明する。
［第１実施形態］  
Ａ．構成  
（１）全体構成  
図１は、本発明の第１実施形態による楽音発生装置の構成を示すブロック図である。この図において、鍵盤１０は、押離鍵操作（演奏操作）に応じたキーオン／キーオフイベント、鍵番号およびベロシティ等からなる演奏情報を発生する。スイッチ部１１は、例えばパワーオンオフ設定する電源スイッチの他、発生楽音の音色を選択する音色選択スイッチなど複数の操作スイッチを備え、これらスイッチの操作に応じたスイッチイベントを発生してＣＰＵ１３に供給する。表示部１２は、ＬＣＤパネル等から構成され、ＣＰＵ１３から供給される表示制御信号に応じて装置各部の設定状態や動作状態などを表示する。
【００１６】
ＣＰＵ１３は、プログラムＲＯＭ１４からロードした各種制御プログラムをマルチタスキングにより時分割に実行させて並列的に処理する。本発明の要旨に係わるＣＰＵ１３の処理機能および処理動作については追って述べる。プログラムＲＯＭ１４は、上記ＣＰＵ１３にロードされる各種制御プログラムや制御データを記憶する。プログラムＲＯＭ１４に記憶される各種制御プログラムとは、後述するメインルーチン、サンプルローダ処理およびゲートスタート／エンド処理を含む。
【００１７】
ＲＡＭ１５は、ＣＰＵ１３のワークエリアとして用いられ、各種レジスタ・フラグデータを一時記憶する。ＲＡＭ１５には、各種レジスタ・フラグデータから構成される状態テーブルＴＢＬが設けられる。状態テーブルＴＢＬの構成については後述する。第１の波形記憶手段であるフラッシュメモリ１６は、例えば装置本体から挿脱自在な記憶媒体であり、波形番号ＴＯＮＥで指定される各種音色の波形データを記憶する。１つの音色の波形データは、楽音立上がり部分を形成するアタック波形データと、アタック以降の持続音を形成するためのループ波形データから構成される。
【００１８】
第２の波形記憶手段である波形メモリ１７は、リード／ライト速度が高速なＳＤＲＡＭ等から構成され、図２に図示するように、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７にそれぞれ１対１に対応するチャンネルエリアＣＨ０〜ＣＨ１２７を備える。これら波形エリアＣＨ０〜ＣＨ１２７には、ＣＰＵ１３が実行するサンプルローダ処理（後述する）によって、フラッシュメモリ１６から読み出される波形番号ＴＯＮＥの音色の波形データがロードされる。１つのチャンネルエリアＣＨには、スタートアドレスＳＡＤからアタック波形データが格納され、ループアドレスＬＡＤからエンドアドレスＥＡＤまでにループ波形データが格納される。
【００１９】
音源１８は、周知の波形メモリ読み出し方式にて構成され、時分割動作する発音チャンネルＣＨ０〜ＣＨ１２７を備える。音源１８は、ＤＳＰ（デジタルシグナルプロセッサ）と呼ばれる論理演算素子を有し、当該ＤＳＰが音源処理を実行する。音源処理は、後述するように、ＣＰＵ１３が実行するゲートスタート／エンド処理から与えられるスタートコマンド又はストップコマンドに応じて、楽音波形Ｗを発音又は消音する。すなわち、スタートコマンド含まれるパラメータで指定される発音チャンネルにおいて、当該発音チャンネルにアサインされた音色の波形データを波形メモリ１７から読み出して楽音波形Ｗを生成し、ストップコマンド含まれるパラメータで指定される発音チャンネルを消音する。
【００２０】
サウンドシステム１９は、音源１８から出力される楽音波形Ｗをアナログ形式の楽音信号にＤ／Ａ変換し、Ｄ／Ａ変換した楽音信号から不要ノイズを除去する等のフィルタリングを施してから信号増幅してスピーカから放音する。
【００２１】
なお、音源１８では、最大発音数と最大発音開始可能数とが定義される。最大発音数とは、波形メモリ１７の全てのチャンネルエリアＣＨ０〜ＣＨ１２７に波形データがロード済みの場合に同時発音可能な音の数であり、本実施形態の場合、発音チャンネルＣＨ０〜ＣＨ１２７を使用することで１２８音となる。一方、最大発音開始可能数とは、波形メモリ１７のチャンネルエリアＣＨ０〜ＣＨ１２７に波形データがロードされておらず、フラッシュメモリ１６から直接波形データを読み出して楽音波形Ｗを発生させる場合に発音開始できる音の数であり、本実施形態の場合、６４音となる。
【００２２】
つまり、波形メモリ１７のリード・ライト速度は、フラッシュメモリ１６よりも高速であるから、フラッシュメモリ１６から波形データを読み出して波形メモリ１７にストアする際の書き込みアドレスが、発音時に波形メモリ１７から波形データを読み出す読み出しアドレスを超えないことが音源１８の適正発音条件となる。この条件下では、最大発音数１２８音に対し、半分の６４音が最大発音開始可能数となる。
【００２３】
（２）状態テーブルＴＢＬの構成  
図３は、ＲＡＭ１５に設けられる状態テーブルＴＢＬの構成を示す図である。状態テーブルＴＢＬは、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７毎に発音割当てされた楽音の音高を表すピッチと、発音チャンネルＣＨ０〜ＣＨ１２７毎のチャンネル状態を表すフラグとを備える。チャンネル状態を表すフラグは、未使用状態を表す「ｄｅａｄ」、ロード発音中を表す「ｓｔｒｅａｍ」およびループ再生中を表す「ｌｏｏｐ」からなる。
【００２４】
なお、ここで言うロード発音中とは、サンプルローダ処理（後述する）がフラッシュメモリ１６から読み出した波形データを波形メモリ１７のチャンネルエリアＣＨ（図２参照）に書き込む一方、音源処理（後述する）がそのチャンネルエリアＣＨのスタートアドレスＳＡＤからエンドアドレスＥＡＤまでの波形データを読み出して波形再生する期間を指す。また、ループ再生中とは、波形読み出しがエンドアドレスＥＡＤに達した後にループアドレスＬＡＤに戻り、以後、ループアドレスＬＡＤからエンドアドレスＥＡＤまでの波形データを繰り返し読み出す期間を指す。
【００２５】
また、状態テーブルＴＢＬは、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７に各々対応付けられた波形メモリ１７のチャンネルエリアＣＨ０〜ＣＨ１２７に格納される波形データの音色を表す波形番号ＴＯＮＥ、この波形番号ＴＯＮＥで指定される音色の波形データ（アタック波形データおよびループ波形データ）の格納位置を表すスタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤを記憶する。
【００２６】
このように、状態テーブルＴＢＬは、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７の発音属性（ピッチ、フラグ）を表すと共に、これら発音チャンネルＣＨ０〜ＣＨ１２７に対応付けられた波形メモリ１７のチャンネルエリアＣＨ０〜ＣＨ１２７の波形属性（波形番号ＴＯＮＥ、スタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤ）を表すようになっている。そして、状態テーブルＴＢＬの内容は、後述するように、ＣＰＵ１３がマルチタスクにより並列処理するメインルーチン、サンプルローダ処理およびゲートスタート／エンド処理によって随時更新される。
【００２７】
（３）機能構成  
図４は、ＣＰＵ１３および音源１８の機能を示すブロック図である。以下、本図を参照してＣＰＵ１３がマルチタスクにより並列処理するメインルーチン、サンプルローダ処理およびゲートスタート／エンド処理の各機能と、音源１８が実行する音源処理の機能とについて説明する。
【００２８】
ａ．メインルーチンの機能
メインルーチンでは、鍵盤１０の押鍵操作でキーオンイベントが発生した場合に、ＲＡＭ１５の状態テーブルＴＢＬ（図３参照）を参照して、押鍵された鍵の音高の楽音（押鍵音と記す）の発音割当てを行い、これに応じて更新した状態テーブルＴＢＬの内容に基づきスタートストリームコマンドおよびスタートジェネレータコマンドを生成する。
【００２９】
スタートストリームコマンドとは、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するコマンドである。スタートストリームコマンドは、押鍵音を割当てた発音チャンネルＣＨ、押鍵された鍵の鍵番号で定まる波形番号ＴＯＮＥ、押鍵音を割当てた発音チャンネルＣＨに対応付けられた波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤを含む。スタートジェネレータコマンドは、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するコマンドであり、押鍵音を割当てた発音チャンネルＣＨを含む。
【００３０】
また、メインルーチンでは、鍵盤１０の離鍵操作でキーオフイベントが発生した場合に、ＲＡＭ１５の状態テーブルＴＢＬを参照して、離鍵された鍵の音高の楽音（離鍵音と記す）を消音させるストップストリームコマンドおよびストップジェレータコマンドを生成する。
【００３１】
ストップストリームコマンドは、フラッシュメモリ１６から波形データの読み出しを停止させ、波形メモリ１７への書き込みを中止するようサンプルローダ処理に指示するコマンドであり、離鍵音の発音チャンネルＣＨおよび離鍵された鍵の鍵番号で定まる波形番号ＴＯＮＥを含む。ストップジェネレータコマンドは、ゲートスタート／エンド処理に対してストップコマンドの発生を指示するコマンドであり、離鍵音の発音チャンネルＣＨを含む。
【００３２】
ｂ．サンプルローダ処理の機能  
サンプルローダ処理では、発音チャンネルＣＨ、波形番号ＴＯＮＥ、波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤを含むスタートストリームコマンドをメインルーチンから受領した場合、波形番号ＴＯＮＥの波形データをフラッシュメモリ１６から読み出して波形メモリ１７のチャンネルエリアＣＨにロードする。チャンネルエリアＣＨのエンドアドレスＥＡＤまで波形データをロードし終えた時に、ＲＡＭ１５の状態テーブルＴＢＬにおける発音チャンネルＣＨのフラグを「ｌｏｏｐ」に更新する。
【００３３】
また、サンプルローダ処理では、発音チャンネルＣＨおよび波形番号ＴＯＮＥを含むストップストリームコマンドをメインルーチンから受領した場合、フラッシュメモリ１６から波形番号ＴＯＮＥの波形データの読み出しを停止させ、波形メモリ１７のチャンネルエリアＣＨへの書き込みを中止する一方、ＲＡＭ１５の状態テーブルＴＢＬにおける発音チャンネルＣＨのフラグを「ｄｅａｄ」に更新する。
【００３４】
ｃ．ゲートスタート／エンド処理の機能  
ゲートスタート／エンド処理では、押鍵音を割当てた発音チャンネルＣＨを含むスタートジェネレータコマンドをメインルーチンから受領した場合、ＲＡＭ１５の状態テーブルＴＢＬを参照して、押鍵音を割当てた発音チャンネルＣＨに対応する波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤ、エンドアドレスＥＡＤおよびピッチを含むスタートコマンドを生成して音源１８に供給する。
【００３５】
また、ゲートスタート／エンド処理では、離鍵音の発音チャンネルＣＨを含むストップジェネレータコマンドをメインルーチンから受領した場合、離鍵音の発音チャンネルＣＨを含むストップコマンドを生成して音源１８に供給する一方、ＲＡＭ１５の状態テーブルＴＢＬにおける当該発音チャンネルＣＨのフラグを「ｄｅａｄ」に更新する。
【００３６】
ｄ．音源処理の機能  
音源１８が実行する音源処理では、ゲートスタート／エンド処理からのコマンドを随時受信しており、スタートコマンドを受信した場合には、当該コマンドに含まれる波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤ、エンドアドレスＥＡＤおよびピッチに基づき、波形メモリ１７のチャンネルエリアＣＨに格納される波形データを、ピッチに応じた読み出し速度で読み出して発音チャンネルＣＨの楽音波形Ｗを生成する。こうした処理をスタートコマンドを受信した全ての発音チャンネルＣＨについて時分割に実行する。
【００３７】
Ｂ．動作
次に、図５〜図１２を参照して、ＣＰＵ１３が実行するメインルーチン、サンプルローダ処理およびゲートスタート／エンド処理の各動作と、音源１８が実行する音源処理の動作とを説明する。
【００３８】
（１）メインルーチンの動作
ＣＰＵ１３は、装置電源の投入に応じて、図５に図示するメインルーチンを実行してステップＳＡ１に処理を進める。ステップＳＡ１では、ＲＡＭ１５の状態テーブルＴＢＬ（図３参照）や、その他のレジスタ・フラグデータをリセットしたり初期値をセットするイニシャライズを行う。そして、イニシャライズ完了後、ステップＳＡ２に進み、押離鍵操作（演奏操作）に応じて鍵盤１０が発生する演奏情報（キーオン／キーオフイベントおよび鍵番号）を抽出する。
【００３９】
次いで、ステップＳＡ３では、上記ステップＳＡ２において抽出した演奏情報中に鍵イベントが有るか否か、鍵イベントが有る場合にはキーオンイベントもしくはキーオフイベントのいずれであるかを判断する。押離鍵操作が行われず、鍵イベントが発生しなければ、上記ステップＳＡ２に処理を戻す。押鍵操作に応じたキーオンイベントが発生した場合には、ステップＳＡ４を介して後述のノートオン処理を実行してから上記ステップＳＡ２に処理を戻す。離鍵操作に応じたキーオフイベントが発生した場合には、ステップＳＡ５を介して後述のノートオフ処理を実行してから上記ステップＳＡ２に処理を戻す。
【００４０】
（２）ノートオン処理の動作
次に、図６〜図７を参照してノートオン処理の動作を説明する。上述したメインルーチンのステップＳＡ４（図５参照）を介して本処理が実行されると、ＣＰＵ１３は図６に図示するステップＳＢ１に進む。ステップＳＢ１では、前述したステップＳＡ２において抽出した演奏情報に含まれ、押鍵された鍵の鍵番号（押鍵番号と称す）に対応するピッチ（音高）を検出する。
【００４１】
続いて、ステップＳＢ２では、押鍵番号に応じた波形番号ＴＯＮＥを検出する。すなわち、本実施の形態では、鍵盤１０の各鍵域毎に異なる音色の波形番号ＴＯＮＥを対応付けたデータテーブル（不図示）を備えている。したがって、ステップＳＢ２では、押鍵番号を読み出しアドレスとして、そのデータテーブルから対応する音色の波形番号ＴＯＮＥを読み出すようになっている。
【００４２】
次いで、ステップＳＢ３では、ＲＡＭ１５の状態テーブルＴＢＬ（図３参照）を参照し、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７の内からロード発音中を表す「ｓｔｒｅａｍ」のフラグを有するチャンネル数を検出する。そして、ステップＳＢ４では、検出したチャンネル数が最大発音開始可能数ＭＡＸより少ないか否かを判断する。つまり、現在発音中のチャンネルの数が、波形メモリ１７のチャンネルエリアＣＨ０〜ＣＨ１２７に波形データが格納されていない場合に発音開始できる最大音数（本実施形態の場合は６４音）より少ないかどうかを判断する。以下、現在発音中のチャンネルの数が最大発音開始可能数ＭＡＸを超えていない場合と、超えている場合とに分けて動作説明を進める。
【００４３】
ａ．最大発音開始可能数ＭＡＸを超えていない場合  
現在発音中のチャンネルの数が最大発音開始可能数ＭＡＸを超えていなければ、上記ステップＳＢ４の判断結果は「ＹＥＳ」になり、ステップＳＢ５に進む。ステップＳＢ５では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７の内から未使用状態を表す「ｄｅａｄ」のフラグを有するチャンネルを検索する。次いで、ステップＳＢ６では、該当する発音チャンネル（現在未使用の発音チャンネル）の有無を判断する。以下、未使用の発音チャンネルが有る場合と、無い場合とに分けて動作を説明する。
【００４４】
＜未使用の発音チャンネルが有る場合＞
未使用の発音チャンネルが有ると、上記ステップＳＢ６の判断結果は「ＹＥＳ」になり、図７に図示するステップＳＢ７に進み、現在未使用のチャンネル番号をレジスタＣＨ（以下、チャンネル番号ＣＨと記す）にストアする。次いで、ステップＳＢ８では、チャンネル番号ＣＨで指定されるＲＡＭ１５の状態テーブルＴＢＬ中の発音チャンネルＣＨのフラグを「ｓｔｅｒａｍ」にセットする。続いて、ステップＳＢ９では、チャンネル番号ＣＨで指定されるＲＡＭ１５の状態テーブルＴＢＬ中の発音チャンネルＣＨの波形番号として、上記ステップＳＢ２（図６参照）にて検出した波形番号ＴＯＮＥをセットする。これにより、現在未使用の発音チャンネルに波形番号ＴＯＮＥの押鍵音が発音割当てされる。
【００４５】
こうして、押鍵音の発音割当てが行われると、ＣＰＵ１３はステップＳＢ１０に進み、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するスタートストリームコマンドを発生する。なお、上述したように、スタートストリームコマンドは、押鍵音を割当てた発音チャンネルＣＨ、押鍵された鍵の鍵番号で定まる波形番号ＴＯＮＥ、押鍵音を割当てた発音チャンネルＣＨに対応付けられた波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤを含む。続いて、ステップＳＢ１１では、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するコマンドであって、押鍵音を割当てた発音チャンネルＣＨを含むスタートジェネレータコマンドを発生させた後、本処理を終える。
【００４６】
このように、現在発音中のチャンネルの数が最大発音開始可能数ＭＡＸを超えておらず、しかも未使用の発音チャンネルが存在する場合には、その未使用の発音チャンネルに押鍵音の発音を割当て、この割当てに応じてＲＡＭ１５の状態テーブルＴＢＬを更新すると共に、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するスタートストリームコマンドと、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するスタートジェネレータコマンドとを生成する。
【００４７】
＜未使用の発音チャンネルが無い場合＞
一方、未使用の発音チャンネルが無ければ、図６に図示したステップＳＢ６の判断結果は「ＮＯ」になり、図７に図示するステップＳＢ１２に進む。ステップＳＢ１２では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７の内からループ再生中を表す「ｌｏｏｐ」のフラグを有するチャンネルを検索する。次いで、ステップＳＢ６では、該当する発音チャンネル（ループ再生中の発音チャンネル）の有無を判断する。ループ再生中の発音チャンネルが有れば、ここでの判断結果は「ＹＥＳ」になり、ステップＳＢ１４に進む。
【００４８】
ステップＳＢ１４では、ループ再生中の発音チャンネルの番号をレジスタＣＨにストアする。そして、ステップＳＢ１５では、ループ再生中の発音チャンネルＣＨを含むストップジェネレータコマンドを発生する。これにより、後述するゲートスタート／エンド処理がストップコマンドを発生して音源１８に供給するので、音源１８はループ再生中の発音チャンネルＣＨを消音する。
【００４９】
ループ再生中の発音チャンネルＣＨを一旦消音させると、ＣＰＵ１３は前述したステップＳＢ８〜ＳＢ１１を実行して、その消音させた発音チャンネルに新たに押鍵音の発音を割当て、それに応じてＲＡＭ１５の状態テーブルＴＢＬを更新すると共に、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するスタートストリームコマンドと、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するスタートジェネレータコマンドとを生成して本処理を終える。
【００５０】
一方、ループ再生中の発音チャンネルが無ければ、上記ステップＳＢ１３（図７参照）の判断結果は「ＮＯ」になり、図６に図示するステップＳＢ１６以降を実行する。ステップＳＢ１６以降は、現在発音中のチャンネルの数が最大発音開始可能数ＭＡＸを超えている場合の動作と同一である。したがって、ステップＳＢ１６以降の動作については、最大発音開始可能数ＭＡＸを超えている場合の動作の説明に譲る。
【００５１】
ｂ．最大発音開始可能数ＭＡＸを超えている場合  
現在発音中のチャンネルの数が最大発音開始可能数ＭＡＸを超えていると、前述したステップＳＢ４の判断結果が「ＮＯ」になり、ステップＳＢ１６に進む。また、最大発音開始可能数ＭＡＸを超えていない場合であっても、現在未使用の発音チャンネルが無く、かつループ再生中の発音チャンネルも無ければ、上記ステップＳＢ１３の判断結果が「ＮＯ」になり、ステップＳＢ１６に進む。
【００５２】
ステップＳＢ１６以降では、周知の後着優先によるトランケートを行う。すなわち、ステップＳＢ１６では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７の内から最古の「ｓｔｒｅａｍ」のフラグを有する発音チャンネルの番号を検索する。そして、ステップＳＢ１７に進み、最古の「ｓｔｒｅａｍ」のフラグを有する発音チャンネルの番号をレジスタＣＨにストアする。
【００５３】
次いで、ステップＳＢ１８では、最古の「ｓｔｒｅａｍ」のフラグを有する発音チャンネルＣＨと、当該発音チャンネルＣＨに割当てられた波形番号ＴＯＮＥをとを含むストップストリームコマンドを発生する。これにより、後述するサンプルローダ処理は、フラッシュメモリ１６から波形番号ＴＯＮＥの波形データの読み出しを停止させ、波形メモリ１７のチャンネルエリアＣＨへの書き込みを中止する。
【００５４】
この後、図７に図示するステップＳＢ１５に進み、最古の「ｓｔｒｅａｍ」のフラグを有する発音チャンネルＣＨを含むストップジェネレータコマンドを発生する。そうすると、後述するゲートスタート／エンド処理がストップコマンドを発生して音源１８に供給するので、音源１８は最古の「ｓｔｒｅａｍ」のフラグを有する発音チャンネルＣＨの発音を停止させる。
【００５５】
こうして、最古の「ｓｔｒｅａｍ」のフラグを有する発音チャンネルＣＨを一旦消音させると、ＣＰＵ１３は前述したステップＳＢ８〜ＳＢ１１を実行して、その消音させた発音チャンネルＣＨに新たな押鍵音の発音を割当て、これに応じてＲＡＭ１５の状態テーブルＴＢＬを更新すると共に、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するスタートストリームコマンドと、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するスタートジェネレータコマンドとを生成して本処理を完了させる。
【００５６】
（３）ノートオフ処理の動作  
次に、図８を参照してノートオフ処理の動作を説明する。前述したメインルーチンのステップＳＡ５（図５参照）を介して本処理が実行されると、ＣＰＵ１３は図７に図示するステップＳＣ１に処理を進め、離鍵された鍵の鍵番号（離鍵番号と称す）に対応するピッチ（音高）を検出する。なお、離鍵番号は前述したステップＳＡ２（図５参照）において抽出した演奏情報に含まれる。続いて、ステップＳＣ２では、上記ステップＳＣ１にて検出したピッチを有する発音チャンネルの番号をＲＡＭ１５の状態テーブルＴＢＬ（図３参照）から検索する。
【００５７】
そして、ステップＳＣ３では、その検索した発音チャンネルの番号をレジスタＣＨ（チャンネル番号ＣＨ）にストアし、続くステップＳＣ４では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７の内でチャンネル番号ＣＨで指定される発音チャンネルＣＨのフラグが、ロード発音中を表す「ｓｔｒｅａｍ」もしくはループ再生中を表す「ｌｏｏｐ」のいずれであるかを判断する。発音チャンネルＣＨのフラグが「ｓｔｒｅａｍ」ならば、ステップＳＣ５に進む。
【００５８】
ステップＳＣ５では、チャンネル番号ＣＨ（「ｓｔｒｅａｍ」のフラグを有する発音チャンネルＣＨ）と、当該発音チャンネルＣＨに割当てられた波形番号ＴＯＮＥとを含むストップストリームコマンドを発生する。これにより、後述するサンプルローダ処理は、フラッシュメモリ１６から波形番号ＴＯＮＥの波形データの読み出しを停止させ、波形メモリ１７のチャンネルエリアＣＨへの書き込みを中止する。
【００５９】
次いで、ステップＳＣ６では、チャンネル番号ＣＨ（「ｓｔｒｅａｍ」のフラグを有する発音チャンネルＣＨ）を含むストップジェネレータコマンドを発生する。これにより、後述するゲートスタート／エンド処理がストップコマンドを発生して音源１８に供給して発音を停止させる。そして、ステップＳＣ７では、発音停止に伴い、チャンネル番号ＣＨで指定されるＲＡＭ１５の状態テーブルＴＢＬ中の発音チャンネルＣＨのフラグを「ｄｅａｄ」にセットして本処理を終える。
【００６０】
一方、チャンネル番号ＣＨで指定される発音チャンネルＣＨのフラグがループ再生中を表す「ｌｏｏｐ」であると、上記ステップＳＣ４からステップＳＣ６に進み、チャンネル番号ＣＨ（「ｌｏｏｐ」のフラグを有する発音チャンネルＣＨ）を含むストップジェネレータコマンドを発生して音源１８に発音停止を指示する。そして、ステップＳＣ７において、チャンネル番号ＣＨで指定されるＲＡＭ１５の状態テーブルＴＢＬ中の発音チャンネルＣＨのフラグを「ｄｅａｄ」にセットして本処理を終える。
【００６１】
このように、ノートオフ処理では、離鍵された鍵の音高に対応する発音チャンネルＣＨをＲＡＭ１５の状態テーブルＴＢＬを参照して検索し、該当する発音チャンネルＣＨがロード発音中を表す「ｓｔｒｅａｍ」あるいはループ再生中を表す「ｌｏｏｐ」のいずれであるかを判断する。そして、ロード発音中ならば、ストップストリームコマンドを発生してフラッシュメモリ１６から波形番号ＴＯＮＥの波形データの読み出しを停止させると共に、波形メモリ１７のチャンネルエリアＣＨへの書き込みを中止させてからストップジェネレータコマンドを発生して音源１８に発音停止を指示した後、ＲＡＭ１５の状態テーブルＴＢＬ中の該当発音チャンネルＣＨのフラグを「ｄｅａｄ」にセットして未使用状態に設定する。一方、ループ再生中の場合には、ストップジェネレータコマンドを発生して音源１８に発音停止を指示した後、ＲＡＭ１５の状態テーブルＴＢＬ中の該当発音チャンネルＣＨのフラグを「ｄｅａｄ」にセットして未使用状態に設定する。
【００６２】
（４）サンプルローダ処理の動作
ＣＰＵ１３は、装置電源の投入に応じて、図９に図示するサンプルローダ処理を実行してステップＳＤ１に処理を進め、本処理に用いる各種レジスタを初期化するイニシャライズを行う。そして、イニシャライズが完了すると、ステップＳＤ２に進み、上述したメインルーチンからのコマンドを受信するまで待機する。コマンドを受信すると、上記ステップＳＤ２の判断結果は「ＹＥＳ」になり、ステップＳＤ３以降に処理を進める。ステップＳＤ３以降では、受信したコマンド種類の応じた処理を実行する。以下、スタートストリームコマンドを受信した場合と、ストップストリームコマンドを受信した場合とに分けて動作を説明する。
【００６３】
＜スタートストリームコマンドを受信した場合＞
発音チャンネルＣＨ、波形番号ＴＯＮＥ、波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤを含むスタートストリームコマンドを受信すると、ステップＳＤ３の判断結果が「ＹＥＳ」になり、ステップＳＤ４に進む。ステップＳＤ４では、フラッシュメモリ１６から波形番号ＴＯＮＥの波形データを読み出す。次いで、ステップＳＤ５では、フラッシュメモリ１６から読み出した波形番号ＴＯＮＥの波形データを、波形メモリ１７のチャンネルエリアＣＨに書き込む。
【００６４】
続いて、ステップＳＤ６では、波形メモリ１７のチャンネルエリアＣＨのエンドアドレスＥＡＤまで波形データを書き込み終えたか否かを判断する。エンドアドレスＥＡＤまで書き込み終えていなければ、判断結果は「ＮＯ」になり、上記ステップＳＤ４に処理を戻す。以後、波形データをエンドアドレスＥＡＤまで書き込み終える迄、上述したステップＳＤ４〜ＳＤ６を繰り返す。
【００６５】
そして、波形メモリ１７のチャンネルエリアＣＨのエンドアドレスＥＡＤまで波形番号ＴＯＮＥの波形データを書き込み終えると、上記ステップＳＤ６の判断結果が「ＹＥＳ」になり、ステップＳＤ７に進む。ステップＳＤ７では、ＲＡＭ１５の状態テーブルＴＢＬにおける発音チャンネルＣＨのフラグを「ｌｏｏｐ」に更新した後、上記ステップＳＤ２のコマンド受信待ちの状態に復帰する。
【００６６】
＜ストップストリームコマンドを受信した場合＞
発音チャンネルＣＨおよび波形番号ＴＯＮＥを含むストップストリームコマンドを受信すると、ステップＳＤ８の判断結果が「ＹＥＳ」になり、ステップＳＤ９に進み、フラッシュメモリ１６から波形番号ＴＯＮＥの波形データの読み出しを停止させ、続くステップＳＤ１０では、波形メモリ１７のチャンネルエリアＣＨへの書き込みを中止する。そして、ステップＳＤ１１に進み、ＲＡＭ１５の状態テーブルＴＢＬにおける発音チャンネルＣＨのフラグを「ｄｅａｄ」に更新した後、上記ステップＳＤ２のコマンド受信待ちの状態に復帰する。
【００６７】
（５）ゲートスタート／エンド処理の動作
ＣＰＵ１３は、装置電源の投入に応じて、図１０に図示するゲートスタート／エンド処理を実行してステップＳＥ１に処理を進め、本処理に用いる各種レジスタを初期化するイニシャライズを行う。そして、イニシャライズが完了すると、ステップＳＥ２に進み、上述したメインルーチンからのコマンドを受信するまで待機する。コマンドを受信すると、上記ステップＳＥ２の判断結果が「ＹＥＳ」になり、ステップＳＥ３以降に処理を進める。ステップＳＥ３以降では、受信したコマンド種類の応じた処理を実行する。以下、スタートジェネレータコマンドを受信した場合と、ストップジェネレータコマンドを受信した場合とに分けて動作を説明する。
【００６８】
＜スタートジェネレータコマンドを受信した場合＞
押鍵音を割当てた発音チャンネルＣＨを含むスタートジェネレータコマンドを受信すると、ステップＳＥ３の判断結果が「ＹＥＳ」になり、ステップＳＥ４に進む。ステップＳＥ４では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、押鍵音を割当てた発音チャンネルＣＨに対応する波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤ、エンドアドレスＥＡＤおよびピッチを含むスタートコマンドを生成して音源１８に送付した後、上記ステップＳＥ２に処理を戻し、コマンド受信待ちの状態に復帰する。
【００６９】
＜ストップジェネレータコマンドを受信した場合＞
離鍵音の発音チャンネルＣＨを含むストップジェネレータコマンドを受信すると、ステップＳＥ５の判断結果が「ＹＥＳ」になり、ステップＳＥ６に進む。ステップＳＥ６では、離鍵音の発音チャンネルＣＨを含むストップコマンドを生成して音源１８に送付し、続くステップＳＥ７では、ＲＡＭ１５の状態テーブルＴＢＬにおける当該発音チャンネルＣＨのフラグを「ｄｅａｄ」に更新した後、上記ステップＳＥ２に処理を戻し、コマンド受信待ちの状態に復帰する。
【００７０】
（６）音源処理の動作
音源１８は、装置電源の投入に応じて、図１１に図示する音源処理を実行してステップＳＦ１に処理を進め、本処理に用いる各種レジスタを初期化するイニシャライズを行う。そして、イニシャライズが完了すると、ステップＳＦ２に進み、上述したゲートスタート／エンド処理（図１０参照）からのコマンドを受信した否かを判断する。コマンドを受信すると、上記ステップＳＦ２の判断結果は「ＹＥＳ」になり、ステップＳＦ３以降に処理を進める。ステップＳＦ３以降では、受信したコマンド種類の応じた処理を実行する。以下、スタートコマンドを受信した場合と、ストップコマンドを受信した場合とに分けて動作を説明する。
【００７１】
＜スタートコマンドを受信した場合＞
発音割当てした発音チャンネルＣＨに対応する波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤ、エンドアドレスＥＡＤおよびピッチを含むスタートコマンドをゲートスタート／エンド処理から受信すると、ステップＳＦ３の判断結果が「ＹＥＳ」になり、ステップＳＦ４に進む。ステップＳＦ４では、発音チャンネルＣＨに対応するオンフラグＯＮ（ＣＨ）に「１」をセットして、当該発音チャンネルＣＨの発音を表す。
【００７２】
次いで、ステップＳＦ５では、受信したスタートコマンドから抽出したスタートアドレスＳＡＤを、発音チャンネルＣＨの読み出しアドレスＡＤ（ＣＨ）に設定する。また、受信したスタートコマンドから抽出したループアドレスＬＡＤを、発音チャンネルＣＨのループアドレスＬＡＤ（ＣＨ）に設定する。さらに、受信したスタートコマンドから抽出したエンドアドレスＥＡＤを、発音チャンネルＣＨのエンドアドレスＥＡＤ（ＣＨ）に設定する。続いて、ステップＳＦ６では、受信したスタートコマンドから抽出したピッチに対応するアドレス増加分をレジスタΔＡＤ（ＣＨ）にストアした後、後述するステップＳＦ９に進む。
【００７３】
＜ストップコマンドを受信した場合＞
一方、離鍵音の発音チャンネルＣＨを含むストップコマンドをゲートスタート／エンド処理から受信すると、ステップＳＦ７の判断結果が「ＹＥＳ」になり、ステップＳＦ８に進み、発音チャンネルＣＨに対応するオンフラグＯＮ（ＣＨ）をゼロリセットして、当該発音チャンネルＣＨの消音を表す。この後、ステップＳＦ９に進む。
【００７４】
そして、ステップＳＦ９では、発音チャンネルを指定するポインタｎをゼロリセットし、続くステップＳＦ１０では、ポインタｎで指定される発音チャンネルｎのオンフラグＯＮ（ｎ）が「１」、つまり発音割当てされた発音チャンネルｎにおいて楽音波形を発生させるｎチャンネル処理（後述する）を実行する。この後、ステップＳＦ１１に進み、ポインタｎをインクリメントして歩進させる。次いで、ステップＳＦ１２では、歩進されたポインタｎの値が最大発音数を超えているか否かを判断する。
【００７５】
歩進されたポインタｎの値が最大発音数を超えていなければ、上記ステップＳＦ１２の判断結果は「ＮＯ」になり、上述のステップＳＦ１０に処理を戻す。以後、歩進されたポインタｎの値が最大発音数を超えるまでステップＳＦ１０〜ＳＦ１２を繰り返す。そして、歩進されたポインタｎの値が最大発音数を超えると、ステップＳＦ１２の判断結果が「ＹＥＳ」になり、上述のステップＳＦ２に処理を戻す。そして、ステップＳＦ２において、ゲートスタート／エンド処理からのコマンドを受信しなければ、判断結果が「ＮＯ」になり、上記ステップＳＦ９以降を実行して、発音割当てされた各発音チャンネルｎ毎の楽音波形を生成させるようになっている。
【００７６】
（７）ｎチャンネル処理の動作
次に、図１２を参照してｎチャンネル処理の動作を説明する。上述した音源処理のステップＳＦ１０（図１１参照）を介して本処理が実行されると、音源１８は図１２に図示するステップＳＧ１に進み、ポインタｎで指定される発音チャンネルｎのオンフラグＯＮ（ｎ）が「１」、つまり発音割当てされた発音チャンネルｎであるかどうかを判断する。ここで、オンフラグＯＮ（ｎ）が「０」、つまり消音する発音チャンネルｎならば、判断結果は「ＮＯ」となり、何も行わずに本処理を終える。
【００７７】
一方、発音割当てされた発音チャンネルｎならば、上記ステップＳＧ１の判断結果は「ＹＥＳ」になり、ステップＳＧ２に進む。ステップＳＧ２では、ポインタｎで指定される発音チャンネルｎの読み出しアドレスＡＤ（ｎ）に応じて、波形メモリ１７のチャンネルエリアｎから波形データを読み出し、続くステップＳＧ３では、読み出した波形データに基づいて楽音波形Ｗを生成して出力する。そして、ステップＳＧ４では、ピッチに対応するアドレス増加分ΔＡＤ（ｎ）を加算して読み出しアドレスＡＤ（ｎ）を更新する。
【００７８】
次いで、ステップＳＧ５では、更新された読み出しアドレスＡＤ（ｎ）がエンドアドレスＥＡＤ（ｎ）に達したか否かを判断する。読み出しアドレスＡＤ（ｎ）がエンドアドレスＥＡＤ（ｎ）に達していなければ、判断結果は「ＮＯ」になり、本処理を終える。
【００７９】
これに対し、更新された読み出しアドレスＡＤ（ｎ）がエンドアドレスＥＡＤ（ｎ）に達していると、上記ステップＳＧ５の判断結果が「ＹＥＳ」になり、ステップＳＧ６に進み、読み出しアドレスＡＤ（ｎ）をループアドレスＬＡＤ（ｎ）に設定して本処理を終える。これにより、発音チャンネルｎでは、ループアドレスＬＡＤ（ｎ）からエンドアドレスＥＡＤ（ｎ）の間の波形データを繰り返し読み出して楽音波形Ｗを生成するループ再生が行われる。
【００８０】
以上のように、本実施の形態では、キーオンイベントに応じて、メインルーチンがＲＡＭ１５の状態テーブルＴＢＬ（図３参照）を参照して押鍵音の発音割当てを行ってスタートストリームコマンドおよびスタートジェネレータコマンドを発生する。そうすると、スタートストリームコマンドを受信したサンプルローダ処理が、波形番号ＴＯＮＥの波形データをフラッシュメモリ１６から読み出して波形メモリ１７のチャンネルエリアＣＨにストアする。これと同時に、スタートジェネレータコマンドを受信したゲートスタート／エンド処理が、押鍵音を割当てた発音チャンネルＣＨに対応する波形メモリ１７のチャンネルエリアＣＨのスタートアドレスＳＡＤ、ループアドレスＬＡＤ、エンドアドレスＥＡＤおよびピッチを含むスタートコマンドを音源１８に送付する。そして、スタートコマンドを受信した音源１８の音源処理が、受信したスタートコマンドに含まれるパラメータに従って波形メモリ１７のチャンネルエリアＣＨに格納される波形データを、ピッチに応じた読み出し速度で読み出して発音チャンネルＣＨの楽音波形Ｗを生成する。
【００８１】
つまり、フラッシュメモリ１６から読み出した波形データを波形メモリ１７にロードすると同時に、当該波形メモリ１７にロードした波形データを再生して楽音波形Ｗを生成するので、フラッシュメモリからＲＡＭ（波形メモリ）に波形データをロードする際のロード待ち時間を無くし、これにより、フラッシュメモリに格納する波形データの大容量化に伴ってロード待ち時間が増大して発音資源（発音チャンネル）の使用効率が低下するという弊害を回避する結果、性能劣化を引き起こすことなく波形データの大容量化に対応することが出来る。
【００８２】
なお、上述した実施形態では、ＣＰＵ１３がマルチタスクによりメインルーチン、サンプルローダ処理およびゲートスタート／エンド処理を並列処理するようにしたが、これに替えて、ＣＰＵ１３ではメインルーチンのみを実行し、音源１８側でサンプルローダ処理、ゲートスタート／エンド処理および音源処理を並列処理する態様としても構わない。そのような態様としても、フラッシュメモリ１６から読み出した波形データを波形メモリ１７にロードすると同時に、当該波形メモリ１７にロードした波形データを再生して楽音波形Ｗを生成し得るようになる。
【００８３】
［第２実施形態］
上述した第１実施形態では、複数の鍵域に分割された鍵盤１０の各鍵域毎にそれぞれ異なる波形番号ＴＯＮＥの音色の波形データを割当てておき、同一鍵域で異なる音高（鍵番号）の鍵が連続して押鍵されると、同じ音色の波形データであっても、押鍵音毎にフラッシュメモリ１６から波形メモリ１７にロードするようにした。こうした波形ロードの重複は、発音資源（発音チャンネル）の使用効率低下を招く。
【００８４】
そこで、第２実施形態では、同じ鍵域で異なる押鍵音が連続する場合、すなわち同一音色の発音が連続する場合に、最初の押鍵音を発音させるべくフラッシュメモリ１６から波形メモリ１７にロードした波形データを、次の押鍵音の発音にも使用してロード済み波形データの共用を図ることによって、発音資源（発音チャンネル）の使用効率低下を回避する。
【００８５】
第２実施形態の構成が第１実施形態と相違する点は、波形チャンネルＣＨ０〜ＣＨ１２７を有する波形メモリ１７を備えると共に、それら波形チャンネルＣＨ０〜ＣＨ１２７毎に設けられ、各波形チャンネル毎の使用状態を表すセマフォカウンタを有することにある。セマフォカウンタは「０」の場合に対応する波形チャンネルの未使用状態を表し、「１」の場合に使用状態（波形ロード）を表し、「２」の場合に波形共有状態を表す。
【００８６】
また、上述した第１実施形態では、ＲＡＭ１５に設けられる状態テーブルＴＢＬが、音源１８の発音チャンネルＣＨ０〜ＣＨ１２７の発音属性（ピッチ、フラグ）を表すと共に、これら発音チャンネルＣＨ０〜ＣＨ１２７に対応付けられた波形メモリ１７のチャンネルエリアＣＨ０〜ＣＨ１２７の波形属性（波形番号ＴＯＮＥ、スタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤ）を表すようにしたが、第２実施形態による状態テーブルＴＢＬは、波形チャンネルＣＨ０〜ＣＨ１２７の発音属性（ピッチ、フラグ）および波形属性（波形番号ＴＯＮＥ、スタートアドレスＳＡＤ、ループアドレスＬＡＤおよびエンドアドレスＥＡＤ）を表す。
【００８７】
以下では、セマフォカウンタを設けたことによって第１実施形態と相違する、第２実施形態によるノートオン処理およびノートオフ処理の各動作について説明する。なお、これ以外の他の処理（メインルーチン、サンプルローダ処理、ゲートスタート／エンド処理および音源処理）は第１実施形態と共通するので、それらの動作の説明については省略する。
【００８８】
（１）ノートオン処理の動作
次に、図１３〜図１５を参照して第２実施形態によるノートオン処理の動作を説明する。前述した第１実施形態と同様、メインルーチンのステップＳＡ４（図５参照）を介して本処理が実行されると、ＣＰＵ１３は図１３に図示するステップＳＨ１に処理を進め、押鍵された鍵の鍵番号（押鍵番号と称す）に対応するピッチ（音高）を検出する。
【００８９】
続いて、ステップＳＨ２では、押鍵番号に応じた波形番号ＴＯＮＥを検出する。すなわち、本実施の形態では、鍵盤１０の各鍵域毎に異なる音色の波形番号ＴＯＮＥを対応付けたデータテーブル（不図示）を備えている。したがって、ステップＳＨ２では、押鍵番号を読み出しアドレスとして、そのデータテーブルから対応する音色の波形番号ＴＯＮＥを読み出す。
【００９０】
次いで、ステップＳＨ３では、ＲＡＭ１５の状態テーブルＴＢＬ（図３参照）を参照して、波形チャンネルＣＨ０〜ＣＨ１２７の内、上記ステップＳＨ２において検出した波形番号ＴＯＮＥと同じ波形番号（音色）の波形データが割当てられた波形チャンネルを検索する。そして、ステップＳＨ４では、検索結果に基づき同一波形番号の有無を判断する。以下、同一波形番号が有る場合と、無い場合とに分けて動作を説明する。
【００９１】
ａ．同一波形番号が有る場合
同一波形番号が有ると、上記ステップＳＨ４の判断結果が「ＹＥＳ」になり、ステップＳＨ５に進む。ステップＳＨ５では、上記ステップＳＨ２において検出した波形番号ＴＯＮＥと同じ波形番号の波形データが割当てられた波形チャンネルの番号をＲＡＭ１５の状態テーブルＴＢＬから抽出してレジスタＣＨ（チャンネル番号ＣＨと記す）にストアする。続いて、ステップＳＨ６では、チャンネル番号ＣＨに対応して設けられるセマフォカウンタをインクリメントする。
【００９２】
次いで、ステップＳＨ７では、ＲＡＭ１５の状態テーブルＴＢＬにおいてチャンネル番号ＣＨで指定されるフラグを「ｌｏｏｐ」に更新する。そして、ステップＳＨ８に進み、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するコマンドであって、押鍵音を割当てた波形チャンネルＣＨを含むスタートジェネレータコマンドを発生させた後、本処理を終える。これにより、先の押鍵音と同じ音色の新たな押鍵音がループ再生されるから、フラッシュメモリ１６から波形メモリ１７にロード済みの波形データを共用できるようになる。
【００９３】
ｂ．同一波形番号が無い場合  
一方、同一波形番号が無ければ、上述したステップＳＨ４の判断結果が「ＮＯ」になり、ＣＰＵ１３は図１４に図示するステップＳＨ９に進む。ステップＳＨ９では、セマフォカウンタの値が「０」の波形チャンネル、すなわち未使用状態の波形チャンネルを検索する。次いで、ステップＳＨ１０では、検索結果に基づき未使用状態の波形チャンネルの有無を判断する。以下、未使用状態の波形チャンネルが有る場合と、無い場合とに分けて動作の説明を進める。
【００９４】
＜未使用状態の波形チャンネルが有る場合＞
未使用状態の波形チャンネルが有ると、上記ステップＳＨ１０の判断結果は「ＹＥＳ」になり、ステップＳＨ１１に進み、該当する波形チャンネルの番号をレジスタＣＨ（チャンネル番号ＣＨ）にストアする。次いで、ステップＳＨ１２では、チャンネル番号ＣＨで指定されるＲＡＭ１５の状態テーブルＴＢＬ中の波形チャンネルＣＨのフラグを「ｓｔｅｒａｍ」にセットする。続いて、ステップＳＨ１３では、チャンネル番号ＣＨで指定されるＲＡＭ１５の状態テーブルＴＢＬ中の波形チャンネルＣＨの波形番号として、上記ステップＳＨ２（図１３参照）にて検出した波形番号ＴＯＮＥをセットする。これにより、現在未使用の波形チャンネルに波形番号ＴＯＮＥの押鍵音が発音割当てされる。
【００９５】
こうして、押鍵音の発音割当てが行われると、ＣＰＵ１３はステップＳＨ１４に進み、波形チャンネルＣＨのセマフォカウンタに「１」をセットして当該波形チャンネルＣＨが使用状態であることを表す。そして、ステップＳＨ１５では、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するスタートストリームコマンドを発生し、続くステップＳＨ１６では、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するコマンドであって、押鍵音を割当てた発音チャンネルＣＨを含むスタートジェネレータコマンドを発生させた後、本処理を終える。
【００９６】
＜未使用状態の波形チャンネルが無い場合＞
一方、未使用状態の波形チャンネルが無ければ、上記ステップＳＨ１０の判断結果は「ＮＯ」になり、図１５に図示するステップＳＨ１７に進む。ステップＳＨ１７では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、波形チャンネルＣＨ０〜ＣＨ１２７の内からロード発音中を表す「ｓｔｒｅａｍ」のフラグを有する波形チャンネルの数を検出する。そして、ステップＳＨ１８では、検出した波形チャンネルの数が最大発音開始可能数ＭＡＸより少ないか否かを判断する。
【００９７】
発音中の波形チャンネルの数が最大発音開始可能数ＭＡＸより少なければ、上記ステップＳＨ１８の判断結果は「ＹＥＳ」になり、ステップＳＨ１９に進む。ステップＳＨ１９では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、波形チャンネルＣＨ０〜ＣＨ１２７の内からループ再生中を表す「ｌｏｏｐ」のフラグを有する波形チャンネルを検索する。次いで、ステップＳＨ２０では、該当する波形チャンネル（ループ再生中の波形チャンネル）の有無を判断する。
【００９８】
ループ再生中の波形チャンネルが有れば、上記ステップＳＨ２０の判断結果は「ＹＥＳ」になり、ステップＳＨ２１に進む。ステップＳＨ２１では、ループ再生中の波形チャンネルＣＨを含むストップジェネレータコマンドを発生する。これにより、ゲートスタート／エンド処理がストップコマンドを発生して音源１８に供給するので、音源１８はループ再生中の発音チャンネルＣＨを消音する。
【００９９】
こうして、ループ再生中の発音チャンネルＣＨを一旦消音させると、ＣＰＵ１３は上述したステップＳＨ１２〜ＳＨ１６（図１４参照）を実行して、その消音させた波形チャンネルに新たに押鍵音の発音を割当て、それに応じてＲＡＭ１５の状態テーブルＴＢＬを更新すると共に、セマフォカウンタを「１」にセットした後、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するスタートストリームコマンドと、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するスタートジェネレータコマンドとを生成して本処理を完了させる。
【０１００】
これに対し、ループ再生中の波形チャンネルが無い場合には、上記ステップＳＨ２０（図１５参照）の判断結果が「ＮＯ」になり、ステップＳＨ２２に進む。ステップＳＨ２２以降は、現在発音中の波形チャンネルの数が最大発音開始可能数ＭＡＸを超えている場合の動作と同一である。したがって、ステップＳＨ２２以降の動作については、最大発音開始可能数ＭＡＸを超えている場合の動作の説明に譲る。
【０１０１】
さて、現在発音中の波形チャンネルの数が最大発音開始可能数ＭＡＸを超えている場合には、前述したステップＳＨ１８の判断結果が「ＮＯ」になり、ステップＳＨ２２に進む。また、最大発音開始可能数ＭＡＸを超えていない場合であっても、未使用状態の波形チャンネルが無く、かつループ再生中の波形チャンネルも無い場合には、上記ステップＳＨ２０の判断結果が「ＮＯ」になり、ステップＳＨ２２に進む。
【０１０２】
ステップＳＨ２２以降では、周知の後着優先によるトランケートを行う。すなわち、ステップＳＨ２２では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、波形チャンネルＣＨ０〜ＣＨ１２７の内から最古の「ｓｔｒｅａｍ」のフラグを有する波形チャンネルの番号を検索する。そして、ステップＳＨ２３に進み、最古の「ｓｔｒｅａｍ」のフラグを有する発音チャンネルの番号をレジスタＣＨにストアする。
【０１０３】
次いで、ステップＳＨ２４では、最古の「ｓｔｒｅａｍ」のフラグを有する波形チャンネルＣＨと、当該波形チャンネルＣＨに割当てられた波形番号ＴＯＮＥをとを含むストップストリームコマンドを発生する。これにより、サンプルローダ処理は、フラッシュメモリ１６から波形番号ＴＯＮＥの波形データの読み出しを停止させ、波形メモリ１７の波形チャンネルＣＨへの書き込みを中止する。
【０１０４】
この後、ステップＳＨ２１に進み、最古の「ｓｔｒｅａｍ」のフラグを有する波形チャンネルＣＨを含むストップジェネレータコマンドを発生する。そうすると、ゲートスタート／エンド処理がストップコマンドを発生して音源１８に供給するので、音源１８は最古の「ｓｔｒｅａｍ」のフラグを有する波形チャンネルＣＨの発音を停止させる。
【０１０５】
最古の「ｓｔｒｅａｍ」のフラグを有する波形チャンネルＣＨを一旦消音させると、ＣＰＵ１３は前述したステップＳＨ１２〜ＳＨ１６（図１４参照）を実行して、その消音させた波形チャンネルに新たに押鍵音の発音を割当て、それに応じてＲＡＭ１５の状態テーブルＴＢＬを更新すると共に、セマフォカウンタを「１」にセットした後、新たに発音させる押鍵音用の波形データをフラッシュメモリ１６から波形メモリ１７にロードするようサンプルローダ処理に指示するスタートストリームコマンドと、ゲートスタート／エンド処理に対してスタートコマンドの発生を指示するスタートジェネレータコマンドとを生成して本処理を完了させる。
【０１０６】
（２）ノートオフ処理の動作  
次に、図１６を参照して第２実施形態によるノートオフ処理の動作を説明する。前述した第１実施形態と同様、メインルーチンのステップＳＡ５（図５参照）を介して本処理が実行されると、ＣＰＵ１３は図１６に図示するステップＳＪ１に処理を進め、離鍵された鍵の鍵番号（離鍵番号と称す）に対応するピッチ（音高）を検出する。続いて、ステップＳＪ２では、上記ステップＳＪ１にて検出したピッチを有する波形チャンネルの番号をＲＡＭ１５の状態テーブルＴＢＬから検索する。
【０１０７】
そして、ステップＳＪ３では、その検索した波形チャンネルの番号をレジスタＣＨ（チャンネル番号ＣＨ）にストアし、続くステップＳＪ４では、ＲＡＭ１５の状態テーブルＴＢＬを参照して、チャンネル番号ＣＨで指定される波形チャンネルＣＨのフラグが、ロード発音中を表す「ｓｔｒｅａｍ」もしくはループ再生中を表す「ｌｏｏｐ」のいずれであるかを判断する。以下、フラグが「ｓｔｒｅａｍ」の場合と、「ｌｏｏｐ」の場合とに分けて動作を説明する。
【０１０８】
＜フラグが「ｓｔｒｅａｍ」の場合＞  
波形チャンネルＣＨのフラグが「ｓｔｒｅａｍ」であると、ステップＳＪ５に進み、チャンネル番号ＣＨ（「ｓｔｒｅａｍ」のフラグを有する波形チャンネルＣＨ）と、当該波形チャンネルＣＨに割当てられた波形番号ＴＯＮＥとを含むストップストリームコマンドを発生する。これにより、サンプルローダ処理は、フラッシュメモリ１６から波形番号ＴＯＮＥの波形データの読み出しを停止させ、波形メモリ１７の波形チャンネルＣＨへの書き込みを中止する。次いで、ステップＳＪ６では、チャンネル番号ＣＨ（「ｓｔｒｅａｍ」のフラグを有する波形チャンネルＣＨ）を含むストップジェネレータコマンドを発生した後、ステップＳＪ７に進む。これにより、ゲートスタート／エンド処理がストップコマンドを発生して音源１８に供給して発音を停止させる。
【０１０９】
＜フラグが「ｌｏｏｐ」の場合＞
一方、波形チャンネルＣＨのフラグがループ再生中を表す「ｌｏｏｐ」ならば、ステップＳＪ６に進み、チャンネル番号ＣＨ（「ｌｏｏｐ」のフラグを有する波形チャンネルＣＨ）を含むストップジェネレータコマンドを発生して音源１８に発音停止を指示した後、ステップＳＪ７に進む。
【０１１０】
ステップＳＪ７では、波形チャンネルＣＨのセマフォカウンタをデクリメントし、続くステップＳＪ８では、デクリメントされたセマフォカウンタの値が「０」、すなわち未使用状態になったかどうかを判断する。未使用状態でなければ、判断結果は「ＮＯ」となり、そのまま本処理を完了させる。これに対し、未使用状態になると、上記ステップＳＪ８の判断結果が「ＹＥＳ」になり、ステップＳＪ９に進み、ＲＡＭ１５の状態テーブルＴＢＬの波形チャンネルＣＨのフラグを「ｄｅａｄ」にセットして本処理を終える。
【０１１１】
以上のように、第２実施形態では、同じ鍵域で異なる押鍵音が連続する場合（同一音色の発音が連続する場合）に、最初の押鍵音を発音させるべくフラッシュメモリ１６から波形メモリ１７にロードした波形データを、次の押鍵音の発音にも使用してロード済みの波形データの共用を図るので、波形ロードに要する時間を省いて発音資源（発音チャンネル）の使用効率低下を回避し得る。
【０１１２】
［第３実施形態］  
前述の第１実施形態では、フラッシュメモリ１６から読み出した波形データを波形メモリ１７にロードすると同時に、当該波形メモリ１７にロードした波形データを再生して楽音波形Ｗを生成するが、この楽音波形Ｗのピッチをピッチベンダイベントに応じて制御しようとする時に、ピッチベンダイベントで指定されるピッチが高過ぎると、波形読み出し速度が波形書き込み速度を超えるアドレス競合により正しい発音が出来なくなる。そこで、第３実施形態では、そうした不都合を回避するオンタイマ処理の動作を説明する。
【０１１３】
図１７は、ＣＰＵ１３がタイマ割込みにて実行するオンタイマ処理の動作を示すフローチャートである。所定周期毎のタイマ割込みによりオンタイマ処理が実行されると、ＣＰＵ１３は図１７に図示するステップＳＫ１に進み、発生イベントを読み込む。次いで、ステップＳＫ２では、読み込んだイベントがピッチベンダイベントであるか否かを判断する。読み込んだイベントがピッチベンダイベントでなければ、判断結果は「ＮＯ」になり、本処理を終えるが、ピッチベンダイベントであると、判断結果が「ＹＥＳ」となり、ステップＳＫ３に進む。
【０１１４】
ステップＳＫ３では、ピッチベンダイベントに含まれるピッチ増加分ΔＰｉｔｃｈを現在のピッチＰｉｔｃｈに加算する。次いで、ステップＳＫ４では、ピッチ増加分ΔＰｉｔｃｈが加算されたピッチＰｉｔｃｈが２オクターブを超え、かつロード発音中（ｓｔｒｅａｍ状態）であるか否かを判断する。ピッチＰｉｔｃｈが２オクターブを超え、かつロード発音中でなければ、上述したアドレス競合が生じない為、判断結果は「ＮＯ」になり、ステップＳＫ６に進み、ピッチ増加分ΔＰｉｔｃｈが加算されたピッチＰｉｔｃｈを、対応する発音チャンネルＣＨのピッチとして設定して本処理を終える。
【０１１５】
これに対し、ピッチＰｉｔｃｈが２オクターブを超え、かつロード発音中であると、上述したアドレス競合が生じるので、上記ステップＳＫ４の判断結果が「ＹＥＳ」になり、ステップＳＫ５に進み、ピッチＰｉｔｃｈの値を「２」に制限した後、ステップＳＫ６に進み、その制限されたピッチＰｉｔｃｈ値「２」を対応する発音チャンネルＣＨのピッチとして設定して本処理を終える。
【０１１６】
このように、第３実施形態では、波形ロード中に発音している楽音のピッチベンド量を２オクターブ以下に制限するので、波形読み出し速度が波形書き込み速度を超えるアドレス競合を回避することができる。なお、本実施形態では、波形ロード中に発音している楽音のピッチベンド量を一律に２オクターブ以下に抑制したが、これに限らず、発音チャンネルの空き具合に応じて抑制するピッチベンド量を可変させる態様としてもよい。
【０１１７】
［変形例］
次に、第１実施形態の変形例について説明する。前述した第１実施形態では、全ての発音チャンネルがロード発音中であると、後着優先のトランケートにより新たな押鍵音の発音を割当てるようにした。したがって、短時間に同じ音色の押鍵音を連続して発音させるような場合には、音源１８の最大発音数が最大発音開始可能数に制限されることも起こり得る。そこで、変形例では、図１８に図示する一例のように、波形メモリ１７のチャンネルエリアＣＨに複数のループ区間１〜３を有する波形データを格納する態様とする。
【０１１８】
ロード発音中にある発音チャンネルの数が最大発音開始可能数ＭＡＸに達した状態で、例えばその内の最古の発音チャンネルがループ区間２の波形ロードを行っていると、ループ区間１がループ再生可能な状態となる。そこで、ループ区間２の波形ロードを中断破棄し、ロード発音中の最古の発音チャンネルを、ループ区間１をループ再生する発音チャンネルに設定する。こうすることでロード発音中のチャンネルが空くので、発音資源（発音チャンネル）の使用効率低下を回避し得るようになる。
【図面の簡単な説明】
【０１１９】
【図１】本発明の第１実施形態の構成を示すブロック図である。
【図２】波形メモリ１７の構成を示す図である。
【図３】ＲＡＭ１５に設けられる状態テーブルＴＢＬの構成を示す図である。
【図４】ＣＰＵ１３および音源１８の機能を示すブロック図である。
【図５】メインルーチンの動作を示すフローチャートである。
【図６】ノートオン処理の動作を示すフローチャートである。
【図７】ノートオン処理の動作を示すフローチャートである。
【図８】ノートオフ処理の動作を示すフローチャートである。
【図９】サンプルローダ処理の動作を示すフローチャートである。
【図１０】ゲートスタート／エンド処理の動作を示すフローチャートである。
【図１１】音源処理の動作を示すフローチャートである。
【図１２】ｎチャンネル処理の動作を示すフローチャートである。
【図１３】第２実施形態によるノートオン処理の動作を示すフローチャートである。
【図１４】第２実施形態によるノートオン処理の動作を示すフローチャートである。
【図１５】第２実施形態によるノートオン処理の動作を示すフローチャートである。
【図１６】第２実施形態によるノートオフ処理の動作を示すフローチャートである。
【図１７】第３実施形態のオンタイマ処理の動作を示すフローチャートである。
【図１８】変形例を説明するための図である。
【符号の説明】
【０１２０】
１０  鍵盤
１１  スイッチ部
１２  表示部
１３  ＣＰＵ
１４  プログラムＲＯＭ
１５  ＲＡＭ
１６  フラッシュメモリ
１７  波形メモリ
１８  音源
１９  サウンドシステム
【図１】
2008015315.tif 000003
【図２】
2008015315.tif 000004
【図３】
2008015315.tif 000005
【図４】
2008015315.tif 000006
【図５】
2008015315.tif 000007
【図６】
2008015315.tif 000008
【図７】
2008015315.tif 000009
【図８】
2008015315.tif 000010
【図９】
2008015315.tif 000011
【図１０】
2008015315.tif 000012
【図１１】
2008015315.tif 000013
【図１２】
2008015315.tif 000014
【図１３】
2008015315.tif 000015
【図１４】
2008015315.tif 000016
【図１５】
2008015315.tif 000017
【図１６】
2008015315.tif 000018
【図１７】
2008015315.tif 000019
【図１８】
2008015315.tif 000020