(57)【要約】 大容量ＮＡＮＤフラッシュメモリを楽音データ用のメモリとして使用した場合においても、高音質かつ小型の楽音生成システムを実現する。楽音データをＮ個の音高グループに分割し、それぞれを異なるＮ個の記憶モジュールに分割して記憶し、発音指示分類部（３０００）が、外部からの発音指示をＮ個の発音指示群に分類し、該発音指示群に基づいてアクセスモジュールの各々に備えられた読み出し指示部が記憶モジュールの読み出し行うようにしたので、記憶モジュールから並列的に楽音データを読み出せるようにしている。このため、楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいて、複数のデータの読み出しの際に複数の記憶モジュールから並列的に読み出すことができ、発音遅延時間をその許容範囲内におさえることが可能となる。
2010137312.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶モジュールと、該不揮発性記憶モジュールに記録されたデータを読み出すアクセスモジュールと、を備えた不揮発性記憶システムであって、
前記不揮発性記憶モジュールは、第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）までのＮ個の記憶モジュールを有し、該不揮発性記憶モジュールに記録されるデータは前記第１記憶モジュールから第Ｎ記憶モジュールまでの少なくともひとつ選択された記憶モジュールに記録され、
前記アクセスモジュールは、
外部からのデータ読み出し指示に応じて、前記第１記憶モジュールから第Ｎ記憶モジュールのＮ個の記憶モジュールから該データが記録された記憶モジュールを決定するデータ分類部と、
前記データ分類部の決定に基づいて、前記第１記憶モジュールから第Ｎ記憶モジュールのいずれかから前記データを読み出す読み出し指示部と、
を備える不揮発性記憶システム。
【請求項２】
第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）のＮ個の記憶モジュールを含み、楽音データを、第１音高グループから第Ｎ音高グループ（Ｎは自然数）のＮ個の音高グループに分割し、第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）の楽音データを、第ｋ記憶モジュールに記憶することで、前記楽音データを前記音高グループ単位で分割して前記Ｎ個の記憶モジュールに記憶する記憶モジュール群と、
前記記憶モジュール群に対して、データの読み出し指示を行うアクセスモジュールと、
を備え、
前記アクセスモジュールは、
外部からの発音指示を第１発音指示群から第Ｎ発音指示群（Ｎは自然数）のＮ個の発音指示群のいずれかに分類することができる発音指示分類部であって、前記発音指示が前記Ｎ個の音高グループのどの音高グループに属するかを決定し、前記発音指示が第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）に属するものであると決定された場合、当該発音指示を第ｋ発音指示群（ｋは、１≦ｋ≦Ｎを満たす自然数）に分類する発音指示分類部と、
前記Ｎ個の発音指示群の各々に対応する楽音データを記憶する前記Ｎ個の記憶モジュールに対して、データ読み出し指示を出力するＮ個の読み出し指示部と、
を備える楽音生成システム。
【請求項３】
前記記憶モジュール群の各々は、複数の不揮発性記憶モジュールを含み、該複数の不揮発性記憶モジュールは楽音データを多重化して記録する、
請求項２に記載の楽音生成システム。
【請求項４】
前記Ｎ個の読み出し指示部の各々は、外部からの１つの発音指示に応じて前記いずれかの不揮発性記憶モジュールからデータの読み出しを行い、当該読み出しを完了する前に、他の発音指示があったときに該読み出し中の不揮発性記憶モジュールと異なる不揮発性記憶モジュールから読み出しを並行して行う、
請求項３に記載の楽音生成システム。
【請求項５】
前記Ｎ個の読み出し指示部の各々は、１回の読み出し指示毎に複数サンプル分の楽音データをまとめて読み出す、
請求項２から４のいずれかに記載の楽音生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽器音などの楽音データを予め記憶した複数の不揮発性記憶モジュールから楽音データを読み出し、該楽音データに信号処理を施すことにより楽音を生成する楽音生成システムおよび不揮発性記憶システムに関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備える不揮発性記憶モジュールは、着脱型の記憶装置として半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディアなどと比較して非常に高価格なものではあるが、小型・軽量・耐震性・取り扱いの簡便さなどのメリットにより、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体としてその需要が広まっている。
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリと、フラッシュメモリを制御するメモリコントローラとを有している。メモリコントローラは、デジタルスチルカメラなどのアクセスモジュールからの読み書き指示に応じて、フラッシュメモリに対する読み書き制御を行う。また、非着脱型の不揮発性記憶モジュールとして、デジタルスチルカメラやポータブルオーディオ機器本体内に組み込まれたもの、あるいはハードディスクの代替として、パーソナルコンピュータに組み込まれたものもある。【０００３】
フラッシュメモリは、メモリセルアレイと、メモリセルアレイから読み出したデータを一時的に保持するため、あるいは外部から書き込まれたデータを一時的に保持するためのＩ／Ｏレジスタ（ＲＡＭ）などから構成される。フラッシュメモリは、メモリセルアレイを構成するメモリセルへの書き込みや消去に比較的長い時間を必要とするため、複数のメモリセルに保持されているデータを一括して消去したり書き込んだりできる構造となっている。具体的には、フラッシュメモリは、複数の物理ブロックから構成され、各物理ブロックは、複数のページを含む。データの消去は、物理ブロック単位で行われ、データの書き込みは、ページ単位で行われる。
さて、電子楽器などの楽音データをＲＯＭに保持した楽音生成システムがある。楽音生成システムは、鍵盤などの打鍵操作に応じて楽器の音（以下、「楽音」という）を生成するシステムである。楽音生成システムは、通常３２チャンネル以上の発音チャンネルを有しており、例えば、打鍵された順に発音チャンネルを割り当てて楽音を生成する。このシステムでは、ランダムな打鍵操作に対応して楽音を生成しなければならないので、ランダム読み出し速度の速いマスクＲＯＭが楽音データ用のＲＯＭとして使われている。【０００４】
特許文献１によれば、フラッシュメモリの技術進歩に伴い、マスクＲＯＭのビット単価よりもフラッシュメモリのビット単価が下がることが予測されている。特許文献１には、マスクＲＯＭよりもランダム読み出し速度の遅いフラッシュメモリを楽音データ用のＲＯＭとして利用することによりシステムコストを合理化する技術が開示されている。
その予測通り、フラッシュメモリは、大容量化と低コスト化への要望に対応し、多値化とプロセスシュリンクによりギガビットクラスの多値ＮＡＮＤフラッシュメモリ（以下、「大容量フラッシュメモリ」という）が主流となってきた。それにより、フラッシュメモリは、ビット単価がマスクＲＯＭよりも遙かに安価になると共に、単位面積当たりの容量もマスクＲＯＭよりも遙かに大容量となり、システムの低価格化と小型化の可能性がますます高まっている。【０００５】
尚、特許文献１の実施例で用いられた２値ＮＡＮＤフラッシュメモリ（品番：ＴＣ５８Ｖ６４ＦＴ）は、容量が６４Ｍｂｉｔ、メモリセルアレイからＩ／Ｏレジスタへアクセスしてデータを読み出すリードタイム（以下、「ＴＲ」という）は７μ秒と、２値ＮＡＮＤフラッシュメモリの中でも小容量かつ高速である旧式タイプのフラッシュメモリである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２８４７８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、高音質を維持するため、ピアノ等の楽器音をデジタル録音した楽音データを非圧縮でマスクＲＯＭやＮＡＮＤフラッシュメモリに記憶した高音質の楽音生成システムについて検討する。この場合には、メモリには、例えば、式（１）に示すように約６２１ＭＢｙｔｅの容量が必要となる。
４４．１ｋＨｚ×４０秒×２Ｂｙｔｅ×２タッチ×８８鍵盤≒６２１ＭＢｙｔｅ・・（１）
尚、式（１）において、「４４．１ｋＨｚ」はサンプリング周波数であり、「４０秒」は１つの鍵盤あたりの発音時間であり、「２Ｂｙｔｅ」は楽音データ１サンプルあたりの語長であり、「２タッチ」は最も強く打鍵した時と最も弱く打鍵した時の２つの場合を示しており、「８８鍵盤」はピアノの総鍵盤数である。【０００８】
従って前述した容量６４Ｍｂｉｔの２値ＮＡＮＤフラッシュメモリを使用した場合、式（２）に示すように約７７個のＮＡＮＤフラッシュメモリを実装する必要がある。
６２１ＭＢｙｔｅ÷６４Ｍｂｉｔ≒７７個  ・・・（２）
従って、楽音生成システムを小型化することが困難となる。
一方、現在主流であるギガビットクラスの大容量フラッシュメモリを使用した場合は、該大容量フラッシュメモリを１個〜数個程度実装するたけで、６２１ＭＢｙｔｅ分の楽音データを圧縮することなく記憶することができる。
しかしながら、大容量フラッシュメモリは、大容量データを一度に読み書きする速度を高めるためにページサイズを拡張したこと、及び多値化したことにより、リードタイムＴＲが５０μ秒と桁違いに長くなった。楽音生成システムでは、通常３２チャンネルを同時に発音することが要求されるが、３２チャンネル目の楽音を生成しようとすると、式（３）に示すように発音遅延時間は少なくとも１．６ｍ秒となる。【０００９】
発音遅延時間＝５０μ秒×３２＝１．６ｍ秒  ・・・（３）
尚、「発音遅延時間」とは、打鍵操作〜発音開始までの時間であり、その許容範囲は一般的に１ｍ秒以内とされている。これが１ｍ秒を超えてしまうと演奏上違和感をきたし、楽音生成システムとして成り立たない。
そこで、本発明は、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用した場合においても、高音質かつ小型の楽音生成システムを実現することができる、アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュールを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の不揮発性記憶システムは、不揮発性記憶モジュールと、該不揮発性記憶モジュールに記録されたデータを読み出すアクセスモジュールと、を備えた不揮発性記憶システムである。
不揮発性記憶モジュールは、第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）までのＮ個の記憶モジュールを有し、該不揮発性記憶モジュールに記録されるデータは第１記憶モジュールから第Ｎ記憶モジュールまでの少なくともひとつ選択された記憶モジュールに記録される。
アクセスモジュールは、データ分類部と、読み出し指示部と、を備える。
データ分類部は、外部からのデータ読み出し指示に応じて、第１記憶モジュールから第Ｎ記憶モジュールのＮ個の記憶モジュールから該データが記録された記憶モジュールを決定する。読み出し指示部は、データ分類部の決定に基づいて、第１記憶モジュールから第Ｎ記憶モジュールのいずれかからデータを読み出す。【００１１】
これにより、この不揮発性記憶システムでは、複数（Ｎ個）の記憶モジュールから並列的にデータを読み出すことができるので、例えば、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。
また、上記課題を解決するために、本発明の楽音生成システムは、第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）からなるＮ個の記憶モジュールを含み、楽音データを、第１音高グループから第Ｎ音高グループ（Ｎは自然数）からなるＮ個の音高グループに分割し、第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）の楽音データを、第ｋ記憶モジュールに記憶することで、楽音データを音高グループ単位で分割してＮ個の記憶モジュールに記憶する記憶モジュール群と、記憶モジュール群に対して、データの読み出し指示を行うアクセスモジュールと、を備える。【００１２】
そして、アクセスモジュールは、発音指示分類部と、Ｎ個の読み出し指示部と、を備える。
発音指示分類部は、外部からの発音指示を第１発音指示群から第Ｎ発音指示群（Ｎは自然数）のＮ個の発音指示群のいずれかに分類することができる。また、発音指示分類部は、発音指示がＮ個の音高グループのどの音高グループに属するかを決定し、発音指示が第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）に属するものであると決定された場合、当該発音指示を第ｋ発音指示群（ｋは、１≦ｋ≦Ｎを満たす自然数）に分類する。
Ｎ個の読み出し指示部とは、Ｎ個の発音指示群の各々に対応する楽音データを記憶するＮ個の記憶モジュールに対して、データ読み出し指示を出力する。
この楽音生成システムでは、楽音データを音高グループに分類し、それに対応させて、Ｎ個の記憶モジュールに楽音データが分割して記憶されており、アクセスモジュールから、読み出しに従って、複数（Ｎ個）の記憶モジュールから並列的に楽音データを読み出すことができる。これにより、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。【００１３】
ここで、前記記憶モジュール群の各々は、複数の不揮発性記憶モジュールを含み、該複数の不揮発性記憶モジュールは楽音データを多重化して記録することが好ましい。
ここで、前記Ｎ個の読み出し指示部の各々は、外部からの１つの発音指示に応じて前記いずれかの不揮発性記憶モジュールからデータの読み出しを行い、当該読み出しを完了する前に、他の発音指示があったときに該読み出し中の不揮発性記憶モジュールと異なる不揮発性記憶モジュールから読み出しを並行して行うことが好ましい。
ここで、前記Ｎ個の読み出し指示部の各々は、１回の読み出し指示毎に複数サンプル分の楽音データをまとめて読み出すことが好ましい。
【発明の効果】
【００１４】
本発明によれば、楽音データをＮ個の音高グループ（音高グループ１〜Ｎ）に分割しそれぞれを異なるＮ個の記憶モジュール（記憶モジュール１〜Ｎ）に分割して記憶し、発音指示分類部が、外部からの発音指示を前記Ｎ個の音高グループのどの音高グループに属するかを決定しＮ個の発音指示（発音指示群１〜Ｎ）に分類し、該発音指示群１〜Ｎに基づいてＮ個の読み出し指示部が記憶モジュール１〜Ｎの読み出し行うようにしたので、複数の記憶モジュールから並列的に楽音データを読み出すことができる。このため、本発明を適用することで、楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいて、複数のデータの読み出しの際に複数の記憶モジュールから並列的に読み出すことができ、発音遅延時間をその許容範囲である１ｍ秒よりも短くすることが可能となる。従って、本発明を適用することで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用した場合においても、低価格かつ小型の楽音生成システムを実現することが可能となる。
【図面の簡単な説明】
【００１５】
【図１Ａ】第１実施形態による楽音生成システムの不揮発性記憶モジュールを示すブロック図
【図１Ｂ】第１実施形態による楽音生成システムのアクセスモジュールを示すブロック図
【図２】不揮発性メモリバンク１１２〜１４２のメモリセルアレイの構造を説明した説明図
【図３】ページ内の記録フォーマットをＰＢ０のＰ０を例に説明した図
【図４】物理セクタ番号ＰＳＮを示すビットフォーマット
【図５】楽音データバッファ２３１を示すブロック図
【図６Ａ】チャンネルアサインテーブル２３２を示す説明図
【図６Ｂ】チャンネルアサインテーブル２３２を示す説明図
【図６Ｃ】チャンネルアサインテーブル２３２を示す説明図
【図７】ＮＮテーブル２３３Ａを示す説明図
【図８】チャンネルレジスタ２４１を示すメモリマップ
【図９】ＭＭレジスタ２４２を示すメモリマップ
【図１０】楽音データ１サンプルを示すビットフォーマット
【図１１】ピアノの楽音データの特性情報を示す説明図
【図１２】メモリ構成情報を示す説明図
【図１３Ａ】ＣＰＵ部２３０Ａのメインルーチンを示すフローチャート
【図１３Ｂ】ＣＰＵ部２３０Ａの割り込みルーチンを示すフローチャート
【図１４Ａ】読み出し指示部２４０のメインルーチンを示すフローチャート
【図１４Ｂ】読み出し指示部２４０の割り込みルーチン１を示すフローチャート
【図１４Ｃ】読み出し指示部２４０の割り込みルーチン２を示すフローチャート
【図１５】読み出し指示情報を示すビットフォーマット
【図１６】演奏データを示すビットフォーマット
【図１７】メモリコントローラの処理を示すフローチャート
【図１８】メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャート
【図１９】記憶モジュール１００Ａから外部バス上に読み出された際の楽音データを示すビットフォーマット
【図２０】信号処理部２２０の処理を示すフローチャート
【図２１】ＰＤが値０の時の打鍵後のＬＤの時間変化を示すグラフ
【図２２】ＰＤが値１の時の打鍵後のＬＤの時間変化を示すグラフ
【図２３】１サンプリング周期あたりの信号処理を示すタイムスロット図
【図２４Ａ】楽音生成システムのタイムチャート
【図２４Ｂ】楽音生成システムのタイムチャート
【図２４Ｃ】楽音生成システムのタイムチャート
【図２５】本発明の第２実施形態における楽音生成システムを示すブロック図
【図２６】楽音データの音名コードと、記憶モジュール１１００〜１３００に分割的に記憶する楽音データの対応関係を示す表
【図２７】記憶モジュール１１００の記録状態を表すメモリマップ
【発明を実施するための形態】
【００１６】
以降、発明を実施するための最良の形態について説明する。第２実施形態が前述した解決手段の構成に対応するが、第２実施形態を構成する構成要素の動作を、第１実施形態で説明する。
［第１実施形態］
＜１．１：楽音生成システムの構成＞
図１Ａ、図１Ｂは、第１実施形態における楽音生成システム（不揮発性記憶システム）を示すブロック図である。楽音生成システムは、図１Ａに示す記憶モジュール１００Ａと、図１Ｂに示すアクセスモジュール２００Ａとを含んで構成される。
記憶モジュール１００Ａは、図１Ａに示すように、不揮発性記憶モジュール１１０Ａ、１２０Ａ、１３０Ａ、および、１４０Ａを１つの筐体内に納め、アクセスモジュールに装着して使用するものである。
【００１７】
不揮発性記憶モジュール１１０Ａ、１２０Ａ、１３０Ａ、および、１４０Ａは、それぞれ、メモリコントローラ１１１Ａ、１２１Ａ、１３１Ａ、および、１４１Ａと、不揮発性メモリバンク１１２、１２２、１３２、および、１４２とを含む。
アクセスモジュール２００Ａは、図１Ｂに示すように、入出力部２１０Ａと、信号処理部２２０と、ＣＰＵ部２３０Ａと、読み出し指示部２４０とを含み、３２チャンネル分の楽音を同時に出力できるようにしたものである。以下、チャンネル番号をＣＨ０〜ＣＨ３１とする。
ＣＰＵ部２３０Ａは、楽音データバッファ２３１と、チャンネルアサインテーブル２３２と、ＮＮテーブル２３３Ａと、演奏データバッファ２３４と、転送監視部２３５とを含む。
【００１８】
（１．１．１：不揮発性記憶モジュール１１０Ａ〜１４０Ａ）
次に、不揮発性記憶モジュール１１０Ａ〜１４０Ａの各部について詳細に説明する。
不揮発性メモリバンク１１２〜１４２は、フラッシュメモリであり、それぞれ、Ｉ／Ｏレジスタ１１３、１２３、１３３、１４３と、メモリセルアレイ１１４、１２４、１３４、１４４とを含む。
Ｉ／Ｏレジスタ１１３〜１４３は、それぞれ、４０９６Ｂｙｔｅ＋１２８Ｂｙｔｅの容量を有するＲＡＭである。
メモリセルアレイ１１４〜１４４は、それぞれ、１０２４個の物理ブロックを有する。物理ブロックは、フラッシュメモリの消去単位である。尚、以降、物理ブロックを「ＰＢ」と、物理ブロック番号を「ＰＢＮ」と、物理セクタ番号を「ＰＳＮ」と、それぞれ、表記する。例えば、物理ブロック番号ＰＢＮが「０」の物理ブロックを「ＰＢ０」と表記する。
【００１９】
図２は、不揮発性メモリバンク１１２〜１４２のメモリセルアレイの構造を説明するための図である。不揮発性メモリバンク１１２〜１４２は、それぞれ、物理ブロックＰＢ０〜ＰＢ１０２３を有している。また、各物理ブロックは、それぞれ、２５６ページ（Ｐ０〜Ｐ２５５）から構成される。
図３は、各ページ内の記録フォーマットについて、物理ブロックＰＢ０のページＰ０を例に説明した図である。全物理ブロックの各ページは、４０９６Ｂｙｔｅのデータ領域と１２８Ｂｙｔｅの冗長領域とから成る。本実施形態において、データ領域は、８セクタに分割される。各セクタは、５１２Ｂｙｔｅの容量を持つ。また、冗長領域は使用しない。尚、記録されているデータの詳細については後述する。
図４は、物理セクタ番号ＰＳＮを示すビットフォーマットである。図４において、ビットｂ０〜ｂ２は、ページ内セクタ選択ビットであり、ｂ３〜ｂ１０は、ページ番号を示すビットであり、ｂ１１〜ｂ２０は、物理ブロック番号を示すビットである。
【００２０】
ページ内セクタ選択ビットは、ページ（ページの先頭アドレス）をセクタサイズで割り算した商に相当するビットである。本実施形態においては、ページサイズを４０９６＋１２８Ｂｙｔｅとし、セクタサイズを５１２Ｂｙｔｅとした場合、即ち、図３に示すように１ページが８個のセクタに分割される場合であり、これらを前述した物理アドレスの下位３ｂｉｔによって選択する。尚、ページサイズやセクタサイズは前述した値に限定される必要はなく、その値に応じてページ内セクタ選択ビットを可変としても構わない。
メモリコントローラ１１１Ａ〜１４１Ａは、アクセスモジュール２００Ａから供給された読み出し指示情報を、不揮発性メモリバンク１１２〜１４２へのリードコマンドに変換するためのインターフェース回路やバッファ等を備えたものである。該インターフェース回路は、市販のメモリカード（例えば、ＳＤカード）にも搭載されているものであるので、説明を省略する。
【００２１】
（１．１．２：アクセスモジュール２００Ａ）
次に、アクセスモジュール２００Ａの各ブロックについて、図１Ｂを用いて詳細に説明する。演奏データは、外部のマスターキーボード３００の打鍵などの操作に応じて生成され、入出力部２１０Ａを介してＣＰＵ部２３０Ａに取り込まれる。
入出力部２１０Ａは、マスターキーボード３００から演奏データを入力するための端子と、信号処理部２２０が生成した楽音をデジタル−アナログ変換するＤＡコンバータと、該変換後の楽音を増幅するアンプ部と、そのアンプ部の出力を外部に出力するためのラインアウト端子とを含む。
信号処理部２２０は、ＣＰＵ部２３０Ａから供給された最大で３２チャンネル分の楽音データの補間演算やレベル制御を行った後に、発音チャンネルのミキシングや、リバーブなどのエフェクト処理を行うことにより楽音を生成するブロックである。信号処理部２２０は、デジタルシグナルプロセッサ（以下、「ＤＳＰ」という）、該ＤＳＰのプログラムを格納したＲＯＭ、及び、エフェクタ処理に必要な遅延素子のために、あるいはパラメータを一時記憶するために必要なＲＡＭなどによって構成される。
【００２２】
ＣＰＵ部２３０Ａは、入出力部２１０Ａが受信した演奏データについてチャンネルアサイン処理を行い、読み出し指示部２４０に対して不揮発性記憶モジュール１１０Ａ〜１４０Ａの読み出しを要求すると共に、読み出し指示部２４０が不揮発性記憶モジュール１１０Ａ〜１４０Ａから読み出した楽音データと、演奏データの一部とを信号処理部２２０に供給するブロックである。
図５は、ＣＰＵ部２３０Ａに含まれる楽音データバッファ２３１を示すブロック図である。楽音データバッファ２３１は、２３１＿０〜２３１＿３の４つのバッファから構成される。各バッファの内部の回路構成は、同一であり、下記（ａ）〜（ｄ）に示す通り、発音チャンネルによって使い分けられる。
（ａ）バッファ２３１＿０・・・ＣＨ０、４、８、１２、１６、２０、２４、２８の楽音データの一時記憶用
（ｂ）バッファ２３１＿１・・・ＣＨ１、５、９、１３、１７、２１、２５、２９の楽音データの一時記憶用
（ｃ）バッファ２３１＿２・・・ＣＨ２、６、１０、１４、１８、２２、２６、３０の楽音データの一時記憶用
（ｄ）バッファ２３１＿３・・・ＣＨ３、７、１１、１５、１９、２３、２７、３１の楽音データの一時記憶用
バッファ２３１＿０は、デュアルポートＲＡＭ２３１＿０ａ、２３１＿０ｂ及びマルチプレクサ２３１＿０ｃ、デマルチプレクサ２３１＿０ｄを有している。デュアルポートＲＡＭ２３１＿０ａ、２３１＿０ｂは、それぞれ、ＣＨ０、４、８・・・２８迄の８つのチャンネル分のデータを一時記憶する４ｋＢｙｔｅのＲＡＭであり、１チャンネルあたり５１２Ｂｙｔｅの記憶容量を有する。バッファ２３１＿１は、デュアルポートＲＡＭ２３１＿１ａ、２３１＿１ｂ及びマルチプレクサ２３１＿１ｃ、デマルチプレクサ２３１＿１ｄを有している。デュアルポートＲＡＭ２３１＿１ａ、２３１＿１ｂは、それぞれ、ＣＨ１、５、９・・・２９迄の８つのチャンネル分のデータを一時記憶する４ｋＢｙｔｅのＲＡＭであり、１チャンネルあたり５１２Ｂｙｔｅの記憶容量を有する。また、他のバッファバッファ２３１＿２、２３１＿３についても同様の構成であり、前述のチャンネル用のバッファとして用いられる。
【００２３】
図６Ａ〜図６Ｃは、ＣＰＵ部２３０Ａに含まれるチャンネルアサインテーブル２３２を示す説明図である。チャンネルアサインテーブル２３２は、全チャンネル、即ちＣＨ０〜ＣＨ３１の発音状態などのステータスを表す以下の情報が保持されている。以下、これらの情報について説明する。
発音中フラグＳＯＮは、対応するチャンネルが発音中か否かを示すフラグであり、値０の時は発音中チャンネル、値１の時は空きチャンネルであることを示す。
ＫＯＮフラグは、打鍵してから離鍵されるまでの間に値１になるフラグである。
ノートナンバーＮＮは、ピアノの鍵盤位置に対応する１６進数の番号である。
タッチパラメータＴＰは、打鍵の強さに対応する強弱情報である。
レベルデータＬＤは、打鍵の強さに応じて決まる楽音の音量に対応するものである。
【００２４】
強制消音フラグＦは、楽音を強制的に消音するためのフラグである。
セクタカウントＳＣは、楽音データが１セクタ分即ち１２８サンプル分読み出される毎にカウントアップするカウンタである。
ウェーブエンドフラグＷＥは、楽音データの最終サンプル、即ちｓ１７６３９９９が楽音生成のために処理されたことを示すフラグである。
エンベロープエンドフラグＥＥは、打鍵の状態やサスティンペダルの状態に応じて変化する楽音の音量変化（以下、「エンベロープＥＮＶ」という）が、聴感上聞こえない音量レベルになった時に値１にセットされるフラグである。
楽音データ読み出し要求フラグＤＱは、信号処理部２２０が楽音の生成として使用した楽音データのサンプル数が所定の閾値（例えば９６サンプル）に到達した時点でセットされるフラグである。
【００２５】
選択フラグＭは、楽音データバッファ２３１のうちバッファ２３１＿０については、デュアルポートＲＡＭ２３１＿０ａと２３１＿０ｂのどちらに楽音データを書き込むかを選択するフラグである。バッファ２３１＿１〜２３１＿３も同様である。
選択フラグＤは、バッファ２３１＿０については、デュアルポートＲＡＭ２３１＿０ａと２３１＿０ｂのどちらに記憶されている楽音データを信号処理部２２０に転送するかを選択するフラグである。バッファ２３１＿１〜２３１＿３も同様である。尚、フラグＤとＭは、バッファ２３１＿０については、値０の時にデュアルポートＲＡＭ２３１＿０ａを選択し、値１の時にデュアルポートＲＡＭ２３１＿０ｂを選択する。バッファ２３１＿１〜２３１＿３も同様である。
図７は、ＣＰＵ部２３０Ａに保持されているＮＮテーブル２３３Ａを示す説明図である。ＮＮテーブルとは、ノートナンバーＮＮと、該ＮＮに対応する楽音データを記憶した物理ブロック番号との関係を示すテーブルである。
【００２６】
演奏データバッファ２３４は、マスターキーボード３００から入力された複数の演奏データを保持するＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリである。
ＣＰＵ部２３０Ａ内の転送監視部２３５は、データ転送を監視し、各バッファ２３１＿０〜２３１＿３の２つのいずれかのチャンネルに対応するエリアにデータが一時記憶され終わると、信号処理部２２０に対して転送完了フラグＴＲＮＦを転送するものである。
読み出し指示部２４０は、ＣＰＵ部２３０Ａの読み出し要求と不揮発性記憶モジュール１１０Ａ〜１４０Ａのアクセス状態に応じて、不揮発性記憶モジュール１１０Ａ〜１４０Ａに読み出し指示情報を転送するブロックである。
読み出し指示部２４０は、チャンネルレジスタ２４１及びＭＭレジスタ２４２を含んでいる
図８は、読み出し指示部２４０に含まれるチャンネルレジスタ２４１を示すメモリマップである。チャンネルレジスタ２４１は、３２チャンネル分の読み出し指示状態を表すレジスタであり、３２チャンネル分について、読み出し指示情報と、読み出し要求フラグＲＲＱと、読み出し指示情報転送フラグＲＤＴとを有している。
【００２７】
読み出し要求フラグＲＲＱ（以下、「ＲＲＱ」という）は、ＣＰＵ部２３０Ａが読み出し要求をしない間は値０であり、要求があれば値１となるフラグである。
読み出し指示情報転送フラグＲＤＴ（以下、「ＲＤＴ」という）は、読み出し指示部２４０が読み出し指示情報を不揮発性記憶モジュール１１０Ａ〜１４０Ａのいずれかに転送した時に立てられ、要求をしなくなったときにリセットされるフラグである。
図９は、読み出し指示部２４０に含まれるＭＭレジスタ２４２を示すメモリマップである。ＭＭレジスタ２４２は、不揮発性記憶モジュール１１０Ａ〜１４０Ａのアクセス状態を表すレジスタであり、不揮発性記憶モジュール１１０Ａ〜１４０Ａの４モジュール分について読み出し中フラグＲＢＳＹを有している。不揮発性記憶モジュール１１０はＭＭＮが０（以下、「ＭＭ０」という）、不揮発性記憶モジュール１２０はＭＭＮが１（以下、「ＭＭ１」という）、不揮発性記憶モジュール１３０はＭＭＮが２（以下、「ＭＭ２」という）、不揮発性記憶モジュール１４０はＭＭＮが３（以下、「ＭＭ３」という）に対応する。読み出し中フラグＲＢＳＹ（以下、「ＲＢＳＹ」という）は、読み出し指示部２４０が不揮発性記憶モジュール１１０Ａ〜１４０Ａに読み出し指示情報を転送したときに値１にセットされ、不揮発性記憶モジュール１１０Ａ〜１４０Ａから該読み出し指示情報に対応するデータ（５１２Ｂｙｔｅ分）が読み出されたときに値０にリセットされる。
【００２８】
また、ＭＭレジスタ２４２は、不揮発性記憶モジュールＭＭ０〜ＭＭ３のそれぞれに８個の登録枠１〜８を含み、それぞれの登録枠１〜８はＭＡＦとＣＨＮを含む。ＭＡＦは、モジュールアサインフラグを示し、このフラグが値１の場合、対応する不揮発性記憶モジュールに読み出し指示情報が転送されていて発音中であることを表す。ＭＡＦは対応するチャンネルの発音が終了した時点で値０にリセットされる。また、ＣＨＮは、発音中のチャンネル番号を表す。不揮発性記憶モジュール１１０Ａ〜１４０Ａは、それぞれ、最大８チャンネル分の読み出し指示情報を受け付けることが可能となる。
≪初期状態≫
まず、記憶モジュール１００Ａ、あるいは図１Ａと図１Ｂに示した楽音生成システムの出荷前において、メーカー側で処理する初期化の内容について説明する。本実施形態では、ピアノの楽音データを４４．１ｋＨｚのサンプリング周波数でデジタル録音した場合において、各音高毎に約４０秒分の楽音データを圧縮せずに各不揮発性メモリバンク１１２〜１４２に記録する。なお、ピアノの鍵盤を打鍵してから音が十分減衰するまでの時間を４０秒とする。この場合には式（４）に示すとおり、１７６４０００サンプルとなる。
【００２９】
４４．１ｋＨｚ×４０秒＝１７６４０００サンプル  ・・・（４）
ここでは、最強タッチと最弱タッチの２種類について、あらかじめデジタル録音したピアノの楽音データを、図２に示すように不揮発性メモリバンク１１２の物理ブロックＰＢ０〜ＰＢ７０３に、ピアノの最低音から最高音に至る８８鍵分の楽音データを昇順に書き込む。不揮発性メモリバンク１１２〜１４２にもそれぞれ同一のデータを同様に書き込む。これによって同一のデータを４つの並列化された不揮発性メモリバンクに多重化して記録する。
各メモリバンクのＰＢ０〜ＰＢ７には、ピアノの最低音のデータが記録され、ＰＢ０のＰ０から昇順に打鍵直後の先頭サンプル（ｓ０）から順番に最後尾サンプル（ｓ１７６３９９９）までの１７６４０００サンプル分の楽音データが記憶されている。但し、図３に示すように、５１２Ｂｙｔｅ単位で、最弱タッチと最強タッチの２種類の楽音データが組となって書き込まれる。
【００３０】
図１０は、楽音データの１サンプルを示すビットフォーマットである。図１０において、ｂ１５には、正負を表すサインビットが書き込まれ、ｂ１５〜ｂ１までの１５ビットが楽音データの１サンプルとして使用される。ｂ０には、ウェーブエンドフラグＷＥが記録される。フラグＷＥは、対応するサンプルが最終サンプルかどうかを示すフラグであり、値１の場合は最終サンプルであるとする。
更に初期化の際には、不揮発性メモリバンク１１２の最終物理ブロックＰＢ１０２３のページＰ０には、記憶モジュール１００Ａに記録されているピアノの楽音データの特性情報（以下、「記録データ特性情報」という）と記憶モジュール１００Ａのメモリ構成に係る情報（以下、「メモリ構成情報」という）を書き込んでおく。
図１１は、記録データ特性情報の一例を示す説明図である。この特性情報には、少なくとも楽音データのサンプリング周波数（この場合は４４．１ｋＨｚ）の情報が含まれている。また、リバーブ及びコーラスは、エフェクト処理をする際に用いられる。なお、図１１のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
【００３１】
図１２は、記憶モジュール１００Ａのメモリ構成情報の一例を示す説明図である。ここで、図１２のセクタサイズは、１回の読み出し指示毎に読み出すデータのサイズを示しており、リードタイムＴＲは、メモリセルアレイからＩＯレジスタへの読み出し時間を示す。転送時間ＴＴ１は、各メモリバンクのＩＯレジスタからメモリコントローラ内にバッファリングする時間を示す。なお、図１２のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
＜１．２：楽音生成システムの動作＞
以上のように構成された、本発明の第１実施形態における楽音生成システムの動作について説明する。
（１．２．１：電源立ち上げ時の初期化処理）
アクセスモジュール２００Ａ及び記憶モジュール１００Ａの電源立ち上げ後、アクセスモジュール２００Ａ及び記憶モジュール１００Ａは、それぞれ、初期化処理を開始する。記憶モジュール１００Ａの初期化処理は、それぞれのメモリコントローラが行い、初期化が完了するとアクセスモジュール２００Ａに対してアクセスを許可する。なお、メモリコントローラの初期化処理については一般的であるので説明を省略する。
【００３２】
アクセスモジュール２００Ａの初期化処理は、ＣＰＵ部２３０Ａによる処理と読み出し指示部２４０による処理とに分かれて行われる。
アクセスモジュール２００ＡのＣＰＵ部２３０Ａは、図１３Ａのフローチャートに示すように、Ｓ１００において初期化処理を行う。初期化処理では、信号処理部２２０のリセットや、楽音データバッファ２３１内のバッファ２３１＿０〜２３１＿３内の各デュアルポートＲＡＭをクリアする。信号処理部２２０をリセットすることにより、信号処理部２２０は、内部のＤＳＰのプログラムカウンタのカウントアップを開始する。また、図６Ａ〜図６Ｃに示すチャンネルアサインテーブル２３２の初期設定、即ち、以下の処理を行う。
（１）ＳＯＮを値０、即ちＣＨ０〜３１を空きチャンネルに設定
（２）ＫＯＮ、ＰＤ、ＮＮ、ＴＰ、ＬＤ、Ｆ、ＳＣ、ＷＥ、ＤＱ、Ｍ、Ｄを値０に設定
（３）ＥＥを値１に設定
その後、アクセスモジュール２００Ａは、不揮発性記憶モジュール１１０Ａに対して、記録データ特性情報とメモリ構成情報の読み出し指示情報とを転送する。図１５は、アクセスモジュール２００Ａから不揮発性記憶モジュール１１０に対する読み出し指示情報を示すビットフォーマットである。なお、ｂ２２とｂ２１は、読み出し以外の指示にも拡張できるように設けたが、本実施形態においては、読み出し以外の指示は行わないので値１１に固定する。なお、これらの特性情報は、不揮発性メモリバンク１１２のＰＢ１０２３のＰ０の０番地から５１２Ｂｙｔｅ分以内に書き込まれている。アクセスモジュール２００Ａは、この読み出し指示情報を不揮発性記憶モジュール１１０に転送することによって、記録データ特性情報とメモリ構成情報を読み出すことができる。
【００３３】
ＣＰＵ部２３０Ａは、図１１に示す記録データ特性情報を取得すると、サンプリング周期（２２．７μｓ）を信号処理部２２０内のタイマーにセットし、１サンプリング時間の信号処理のタイムスロットの１周期を決定する。このタイマーは信号処理部２２０内のＤＳＰの１周期を制御するためのタイマーとして機能する。ＣＰＵ部２３０Ａは、記録データ特性情報内の１サンプル容量（２Ｂｙｔｅ）とフラグ割り当てビット（ｂ０）を信号処理部２２０内のＲＡＭのパラメータとして書き込み、楽音データが図１０に示すビットフォーマットのどのビット位置に相当するかを決定するためのパラメータとして使用する。
また、ＣＰＵ部２３０Ａは、記録データ特性情報内の最大発音チャンネル数（３２ＣＨ）によって、チャンネルアサインテーブル２３２のチャンネル枠を決定すると共に、信号処理部２２０のタイムスロットのチャンネル数を決定する。また、信号処理部２２０は、リバーブとコーラスによりエフェクト処理を決定する。図１１の場合にはエフェクト処理としてリバーブのみを行うことを決定する。
【００３４】
さらに、ＣＰＵ部２３０Ａは、図１２に示すメモリ構成情報を取得すると、不揮発性記憶モジュール数に基づき、式（５）を実行することにより並列数を求める。
並列数＝不揮発性記憶モジュール数  ・・・（５）
１つの不揮発性記憶モジュールあたりにアサインされる、即ち読み出し指示情報が転送されるチャンネルの最大数（モジュール当たり最大チャンネル数）は、式（６）によって与えられる。
モジュール当たり最大チャンネル数＝ＣＨＮ÷並列数  ・・・（６）
本実施形態においては、ＣＨＮは３２、並列数が４であるので、式（６）によれば不揮発性記憶モジュール１１０Ａ〜１４０Ａのそれぞれは最大８チャンネル分の読み出し指示情報をアサインすることが可能となる。各チャンネルをどの不揮発性記憶モジュールにアサインするかについては後述する。
【００３５】
ＣＰＵ部２３０Ａは、図１２に示すメモリ構成情報の中のセクタサイズ（５１２Ｂｙｔｅ）を参照し、記憶モジュール１００Ａからのデータの読み出し単位のサイズを５１２Ｂｙｔｅとして管理する。また、式（７）を実行することにより、セクタ毎の総サンプル数（以下、ｕｓｎという）を決定する。
ｕｓｎ＝セクタサイズ／１サンプルサイズ／タッチ数  ・・・（７）
本実施形態においては、セクタサイズが５１２Ｂｙｔｅ、１サンプルサイズが２Ｂｙｔｅ、タッチ数が２であるので、ｕｓｎ＝１２８サンプルとなる。
さらに、ＣＰＵ部２３０Ａは、図１１に示す記録データ特性情報の中の１ノートあたりの占有容量と、メモリ構成情報の中のページサイズと１物理ブロックあたりのページ数ＴＰＮ（この場合は２５６）とに基づき、式（８）を実行することにより、１ノートあたり必要な物理ブロック数を算出する。
【００３６】
１ノートあたり必要な物理ブロック数＝１ノートあたりの占有容量／（ページサイズ×ＴＰＮ）＝８個  ・・・（８）
そして、最低音Ａ−１から最高音Ｃ７まで、それぞれのノートに対応するＰＢＮを決定し、図７に示すＮＮテーブル２３３Ａを生成する。
以上メインルーチンにおいて、記録データ特性情報とメモリ構成情報とを読み出し、各種パラメータの設定処理によってＣＰＵ部２３０Ａは初期化処理（Ｓ１００）を終える。
図１４Ａは、読み出し指示部２４０の通常処理を示すフローチャートであり、図１４Ｂ及び図１４Ｃは、その割り込み処理を示すフローチャートである。
読み出し指示部２４０は、図１４Ａのフローチャートに示すように、Ｓ２００において初期化処理を行う。初期化処理では、読み出し指示部２４０が、記憶モジュール１００Ａの全ての不揮発性記憶モジュールからアクセス許可を受信すると、読み出し指示部２４０は、ＣＰＵ部２３０Ａに対してアクセス可能であることを通知する。
【００３７】
ＣＰＵ部２３０Ａは、読み出し指示部２４０からアクセス可の通知を受けると、Ｓ１１０から通常動作処理Ｓ１０１に移行し、割り込みをイネーブルにして外部のマスターキーボード３００からの演奏データを受付ける。
（１．２．２：通常動作時の処理）
（１）全体的な動作説明
演奏データの入力から楽音の生成に至る全体的な動作説明を、ＣＰＵ部２３０Ａのフローチャート及び読み出し指示部２４０のフローチャートを中心に説明する。なお、ＣＰＵ部２３０Ａのフローチャートと読み出し指示部２４０のフローチャートは独立して実行されるものである。
図１３Ｂは、ＣＰＵ部２３０Ａの割り込みルーチンを示しており、マスターキーボード３００の演奏操作によって演奏データがアクセスモジュール２００Ａに転送された際に起動される。図１３Ａに示すメインルーチンの処理中にマスターキーボード３００の演奏操作がなされると、即座に割り込みルーチンに移行する。なお、割り込みルーチンは多重割り込みが可能、即ち割り込みルーチン中であっても、次の割り込みを受け付けるものとする。
【００３８】
一方、読み出し指示部２４０のフローチャートにおいて、割り込みルーチンは、図１４Ｂに示す割り込みルーチン１と図１４Ｃの割り込みルーチン２とからなり、それらに優先順位はなく、また、いずれも多重割り込みが可能である。割り込みルーチン１は、ＣＰＵ部２３０Ａから読み出し要求があった時に起動されるルーチンであり、割り込みルーチン２は、記憶モジュール１００Ａから楽音データを受信した時に起動されるルーチンである。
まず、通常動作処理Ｓ１０１への移行後、マスターキーボード３００の演奏操作がなされないとすると、全チャンネルの強制消音フラグＦは値０であり、また、読み出し要求フラグＤＱは値０であるので、Ｓ１０２とＳ１０７の分岐はＮｏとなり、Ｓ１０２とＳ１０７の分岐処理を永続的に実行することとなる。
【００３９】
マスターキーボード３００の演奏操作がなされると、図１３Ｂに示す割り込みルーチンが起動される。この割り込み処理について説明する。
図１６は、マスターキーボード３００から転送される演奏データを示すビットフォーマットである。演奏データには、打鍵に応じて生成される打鍵データと、サスティンペダルのＯＮ／ＯＦＦ操作に応じて生成されるペダルデータとの２種類がある。それらのデータは、ｂ１５の値によって識別される。打鍵データにおいて、ＫＯＮフラグ、ノートナンバーＮＮ、及びタッチパラメータＴＰは前述のものである。ペダルデータにおいて、ＰＤはサスティンペダルがＯＮされた時に値１になるフラグである。なお、サスティンペダルとは、離鍵時にも音を持続させるためのペダルであり、本物のピアノにも備えられたペダルである。
【００４０】
割り込みルーチンにおいて、まず、マスターキーボード３００から入出力部２１０Ａを介して転送された演奏データを、演奏データバッファ２３４に取得する（Ｓ１２０）。この演奏データのフォーマットは図１６に示すように、打鍵データまたはペダルデータのいずれかである。演奏データバッファ２３４に、既に取得した未処理の演奏データがなければ（Ｓ１２１）、今回取得した演奏データをチェックする（Ｓ１２２）。具体的には図１６に示す演奏データのｂ１５を調べることにより、打鍵データであるかペダルデータであるかを識別する。演奏データがペダルデータである場合は（Ｓ１２３）、図１６に示すペダルデータ内のｂ１４即ちＰＤフラグをそのままチャンネルアサインテーブル２３２内のＰＤにコピーし（Ｓ１２４）、Ｓ１３２に移行する。
一方、演奏データが打鍵データの場合は（Ｓ１２３）、図１６に示す打鍵データのｂ１４からＫＯＮフラグを抽出し（Ｓ１２５）、Ｓ１２６においてＫＯＮの値をチェックし、ＫＯＮが値０の場合即ち離鍵の場合は、Ｓ１３２に移行する。
【００４１】
ＫＯＮが値１の場合即ち打鍵の場合は、チャンネルアサインテーブル２３２内において空きチャンネルがあるかどうかを調べる（Ｓ１２７）。具体的には、ＣＨ０から昇順に値０の発音中フラグＳＯＮがあるかどうかを調べ、あれば最初に見つかったチャンネルに該演奏データをアサインする（Ｓ１２９）。チャンネルアサイン処理においては、下記の通りアサイン先のチャンネルの各情報の設定を行う。
（１）ＳＯＮを値１にセット
（２）ＮＮとＴＰを打鍵データからコピー
（３）ＳＣ、ＷＥ、ＥＥ、ＤＱ、Ｍ、Ｄを値０に設定
さて、ＣＰＵ部２３０Ａはチャンネルアサイン処理の後、読み出し指示部２４０に対して読み出し要求と共に図１５に示す楽音データの読み出し指示情報を渡す。読み出し指示情報は以下の手順で求められる。
【００４２】
（ａ）打鍵データのＮＮに基づきＮＮテーブル２３３Ａを参照し、先頭ＰＢＮを求める。
（ｂ）先頭ＰＢＮとＳＣに基づき式（９）を実行することによりＰＳＮを求める。
ＰＳＮ＝（先頭ＰＢＮ＜＜１１）＋ＳＣ  ・・・（９）
但し、＆は論理積をとる演算子、｜は論理和をとる演算子、＜＜は左にビットシフトする演算子である。
（ｃ）式（９）により求められたＰＳＮは２１ビットであり、その上位の２ビットは「１１」である。従って、次の式（１０）を実行することにより読み出し指示情報を求める。尚、“０ｘ”は１６進数を表す記号である。図１５は、この読み出し指示情報を示す。
読み出し指示情報＝０ｘ６０００００｜ＰＳＮ  ・・・（１０）
このようにして、ＣＰＵ部２３０Ａは読み出し先のＰＳＮを決定し、図１５に示すフォーマットにて読み出し指示部２４０に読み出し指示情報を渡す。読み出し指示部２４０は、読み出し要求と対応するＣＨＮと読み出し指示情報を受け取ると、まず、受け取ったＣＨＮと読み出し指示情報をチャンネルレジスタ２４１に登録する。その後、ＭＭレジスタ２４２に基づき読み出し対象となる不揮発性記憶モジュールを決定する。そして、楽音データの読み出し中でなければ、チャンネルレジスタ２４１に登録されている読み出し指示情報を該不揮発性記憶モジュールに転送し、所望の楽音データを読み出す。
【００４３】
≪読み出し指示部２４０による記憶モジュール１００Ａの楽音データの読み出し≫
次に、読み出し指示部２４０による記憶モジュール１００Ａの楽音データの読み出しについて、図１４Ａ〜図１４Ｃ及び図１７のフローチャートを中心に説明する。
まず、読み出し指示部２４０は、図１４Ａに示すメインルーチンにおいて、前述した初期化処理（Ｓ２００）の後に、通常処理（Ｓ２０１）に移行する。ＣＰＵ部２３０Ａから読み出し要求がない間は、チャンネルレジスタ２４１内のＲＲＱは全て値０であり、その場合はＣＰＵ部２３０Ａが管理しているＥＥの変化をモニターし、その結果に応じてＭＭレジスタ２４２のフラグ操作を行う（Ｓ２０３）。具体的には、ＭＭレジスタ２４２のＭＡＦが値１となっているチャンネルについて、ＥＥが値０から値１に変化、即ち発音中から無音状態に変化したチャンネルはＭＡＦを値０にリセットし、登録枠から該チャンネルを除外する。その後、Ｓ２０２に戻り、以降、Ｓ２０２とＳ２０３の判断分岐を永続的に実行し続けることとなる。
【００４４】
そして、ＣＰＵ部２３０Ａから読み出し要求を受け取ると、メインルーチンのＳ２０２とＳ２０３のループから図１４Ｂの割り込みルーチン１に移行し、チャンネルレジスタ２４１に読み出し指示情報を登録し、読み出し指示情報と同時に転送されるＣＨＮをチャンネルレジスタ２４１のＣＨＮ欄に登録する（Ｓ２２０）。さらに、前記ＣＨＮに対応するＲＲＱを値１にセットし（Ｓ２２１）、割り込みを終了しメインルーチンに戻る。なお、図８に示す例は、ＣＰＵ部２３０ＡからＣＨ０〜３の読み出し要求がなされ、以降に説明する処理によって各フラグが変化する様子を示した例である。具体的には、ＣＨ０〜３の読み出し要求と不揮発性記憶モジュール１１０Ａ〜１４０Ａへの読み出し指示情報の転送を完了し、不揮発性記憶モジュール１１０Ａ、１２０Ａからアクセスモジュール２００Ａへの楽音データの転送を完了した時点までを表している。この動作によって、チャンネルレジスタ２４１内の各フラグの値が変化することとなる。また、ＭＭレジスタ２４２（図９）についても、各不揮発性記憶モジュール（ＭＭ０〜ＭＭ３）が読み出し中か否かを示すフラグＲＢＳＹ等の値を変化させることとなる。
【００４５】
図１４Ａのメインルーチンにおいては、ＣＨ０〜３のＲＲＱが値１となったので、Ｓ２０２からＳ２０４に移行し、ＭＭレジスタ２４２に基づきアサイン状況、ＣＨ０〜３に対応する読み出し指示情報が不揮発性記憶モジュールにアサイン（転送）されたかどうかについてチェックする。具体的には、Ｓ２０５において、登録枠１〜８をチェックしＭＡＦが値１になっているＣＨＮがＣＨ０〜３のいずれかであれば、既にアサイン済みであると判断する。そして、ＭＡＦが値１になっているＣＨＮがＣＨ０〜３である不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する（Ｓ２０６）。
一方、アサイン済みでなければ、Ｓ２０７において、ＭＭレジスタ２４２においてＭＡＦが値１となっている登録枠の個数（登録数）を計数し、登録数が最も少ない不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する。なお、登録数が最も少ない不揮発性記憶メモリモジュールが複数ある場合は不揮発性記憶メモリモジュールの小さい方を優先的に選択する。その後、読み出し指示情報の転送先に決定した不揮発性記憶メモリモジュールにおいて、ＭＡＦが値０となっている登録枠のいずれかのＭＡＦを値１にセットすると共に、対応するＣＨＮ欄にアサイン対象であるＣＨＮの値を登録する（Ｓ２０７）。なお、最初は、ＭＭレジスタ２４２は未登録状態であるので、ＣＨ０〜３は図９に示すように、それぞれＭＮ０〜３の登録枠１に登録されることとなる。
【００４６】
次に、ＭＭレジスタ２４２の読み出し中フラグＲＢＳＹを参照し、不揮発性記憶モジュール１１０Ａ〜１４０Ａが読み出し中か否かを判断する（Ｓ２０９）。最初は、ＭＭレジスタ２４２のＲＢＳＹは全て値０、即ち不揮発性記憶モジュール１１０Ａ〜１４０Ａ全てが読み出し中ではないので、まず、ＣＨ０の処理においてＳ２１０に移行する。
そして、読み出し指示部２４０はＣＨ０に対応する読み出し指示を不揮発性記憶モジュール１１０に転送し（Ｓ２１０）、チャンネルレジスタ２４１の対応するチャンネルのＲＤＴを値１にセットする（Ｓ２１１）。さらに、ＭＭレジスタ２４２の対応する記憶モジュール（ＭＭ０）のＲＢＳＹを値１にセットすると共に、ＭＭ０の読み出し中ＣＨＮの欄に０を設定する（Ｓ２１２）。これは不揮発性記憶モジュール１１０からＣＨ０の楽音データを読み出し中であることを示している。
【００４７】
以上の処理を、チャンネルレジスタ２４１においてＲＲＱが値１となっているチャンネル、即ちＣＨ０〜３について実行する。
図１７は、各メモリコントローラの処理を示すフローチャートである。読み出し指示情報を受信すると（Ｓ３００）、該読み出し指示情報に含まれるＰＳＮを読み出し先アドレスとしてリードコマンドを不揮発性メモリバンクに出力する（Ｓ３０１）。その結果、読み出された楽音データをアクセスモジュール２００Ａに転送する（Ｓ３０２）。
図１８は、メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャートである。コマンド１は、次に物理アドレスの転送開始を通知するコマンドであり、コマンド２は、メモリセルアレイからＩ／Ｏレジスタに物理アドレスに記憶されている楽音データを読み出すことを指示するコマンドである。
【００４８】
ここで、リードコマンドは、図１８に示す通り、時刻ｔ１にコマンド１を出力した直後に物理アドレスを出力し、その後、コマンド２を出力する。このアドレッシングタイムＴＡは数百ｎ秒程度であるので時間的に無視できる。
なお、図１８における物理アドレスとは、図４のＰＢＮとページ番号とページ内セクタ選択ビットによって５１２Ｂｙｔｅ単位で指定される物理アドレスである。また、この物理アドレスは、読み出したい楽音データが記憶されているスタート番地（バイト単位）を指定するものであり、該スタート番地から対応するページの最終番地までの楽音データがＴＲ中に対応するＩ／Ｏレジスタに読み出される。その後、転送時間ＴＴ１の間に５１２個のリードクロックを与えることによって、所望の５１２Ｂｙｔｅ分の楽音データがＩ／Ｏレジスタからメモリコントローラに読み出されることとなる。
【００４９】
さて、読み出し指示部２４０が、ＣＨ０〜３に対応する読み出し指示情報をそれぞれ不揮発性記憶モジュール１１０Ａ〜１４０Ａに発行し終わると、ＣＨ０〜３のＲＤＴが全て値０となる。従って、図１４Ａにおいて、再びＳ２０２からＳ２０３の判断分岐をループするようになる。
アクセスモジュール２００Ａは、転送された楽音データを読み出し指示部２４０を介して楽音データバッファ２３１に一時記憶する。この時、読み出し指示部２４０は、５１２Ｂｙｔｅ分（１セクタ分）の楽音データを受け取ったことを検知すると、図１４Ｃの割り込みルーチン２に制御を移し、ＭＭレジスタ２４２の対応するＭＭＮのＲＢＳＹを値０にリセットし（Ｓ２３０）、さらに、チャンネルレジスタ２４１の対応するＣＨＮのＲＤＴとＲＲＱを値０にリセットする（Ｓ２３１）。さらに、ＭＭレジスタ２４２の対応するＭＭＮの読み出し中ＣＨＮを取得し（Ｓ２３２）、受信した楽音データを、楽音データバッファ２３１内のどのバッファに一時記憶するかを決定する。
【００５０】
チャンネルレジスタ２４１のＲＲＱが値０になっているエリアは、次の新たな読み出し指示情報のエリアとして解放されたエリアとなる。因みに、ＲＲＱが値０になっている場合は、Ｓ２３１によりＲＤＴも値０になっているし、Ｓ２３０によりＭＮレジスタ２４２のＲＢＳＹも値０になっている。なお、チャンネルレジスタ２４１への読み出し指示情報の登録は、最上段のエリアから順に使用され、最下段に到達した時点で再び最上に戻るように、即ち巡回的に使用される。
アクセスモジュール２００Ａは、いずれかの不揮発性記憶モジュールから楽音データを受信すると、該楽音データに付加されたＣＨＮに対応する楽音データバッファ２３１のエリアに、該楽音データを一時記憶する。
次に、メモリコントローラから楽音データバッファ２３１への楽音データを転送する転送時間ＴＴ２について説明する。ＴＴ２の値は、アクセスモジュール２００Ａの仕様によって決まるパラメータであり、アクセスモジュール２００Ａが外部バスを介して記憶モジュール１００Ａに送信するクロック（図示せず）の周波数に依存する。本実施形態では、アクセスモジュール２００Ａと不揮発性記憶モジュール１１０Ａから１４０Ａのそれぞれを繋ぐ外部バスのバス幅を１Ｂｙｔｅとし、４０ＭＨｚの転送周波数で転送するものとする。この場合、転送時間ＴＴ２は、式（１１）により、約１２．８μ秒となる。
【００５１】
５１２Ｂｙｔｅ×（２５ｎ秒／Ｂｙｔｅ）＝１２．８μ秒  ・・・（１１）
読み出し指示情報の転送に応じて、不揮発性記憶モジュール１１０Ａ〜１４０Ａのいずれかから読み出された楽音データは、読み出し指示部２４０を介してＣＰＵ部２３０Ａに転送される。ここでは、不揮発性記憶モジュール１１０Ａから読み出すものとする。図１９は、不揮発性記憶モジュール１１０Ａから外部バス上に読み出された際の楽音データを示すビットフォーマットである。このビットフォーマットに示すように最弱タッチと最強タッチの楽音データが含まれている。ＣＰＵ部２３０Ａでは、楽音データを楽音データバッファ２３１内のバッファ２３１＿０に転送し、図５のマルチプレクサ２３１＿０ｃ（Ｍ＝０）を介してデュアルポートＲＡＭ２３１＿０ａのＣＨ０に対応するエリアに一時記憶する。なお、楽音データの一時記憶に際して、バッファ２３１＿０〜２３１＿３の選択、あるいは各バッファ内のデュアルポートＲＡＭの記憶領域の選択は、後述するＭＭレジスタ２４２に登録されたＣＨＮによって決定する。
【００５２】
先頭セクタの全サンプル、即ち最弱タッチ及び最強タッチそれぞれについてｓ０〜Ｓ１２７までの５１２ＢｙｔｅがデュアルポートＲＡＭ２３１＿０ａのＣＨ０に対応するエリアに一時記憶され終わると、ＣＰＵ部２３０Ａ内の転送監視部２３５が信号処理部２２０に対して転送完了フラグＴＲＮＦを転送する。なお、ＣＰＵ部のＳ１３０以降の処理と、楽音データバッファ２３１への楽音データ転送（転送監視を含む）とは、並行して実行される。
Ｓ１３０の後に、信号処理部２２０による発音（Ｓ１３１）を行う。発音の制御では、ＴＰ／０ｘ７Ｆの演算によりレベルデータＬＤを算出して、それをチャンネルアサインテーブル２３２のＬＤに設定し、Ｓ１２５で抽出したＫＯＮをチャンネルアサインテーブル２３２のＫＯＮに設定する。０ｘ７Ｆは、ＴＰの最大値を表す。即ち、レベルデータＬＤは、タッチパラメータＴＰに応じて値０以上１以下の値をとる。信号処理部２２０の動作については後述する。
【００５３】
さて、Ｓ１２７において、空きチャンネルがなかった場合、即ちチャンネルアサインテーブル２３２内のＳＯＮが全て値１であった場合は、チャンネルアサインテーブル２３２の強制消音フラグＦを値１にセットし（Ｓ１２８）、Ｓ１３２に移行する。
その後、次に処理すべき楽音データの有無をチェックし（Ｓ１３２）、次に処理すべき楽音データが有ればＳ１２１に戻る。Ｓ１２１では、既に前回の演奏データは処理を完了しているので、無条件でＳ１２２以降の処理に移行する。一方、Ｓ１３２において、次に処理すべき楽音データが無ければ、割り込みルーチンを終了する。この場合には、メインルーチンに戻って、該割り込みルーチンに移行した時に実行していた処理を続行する。
≪信号処理部２２の動作≫
次に、信号処理部２２０の動作について、図２０のフローチャートを中心に説明する。
【００５４】
まず、Ｓ４００において式（１２）に従ってイニシャルフラグＩＮＩを設定する。
ＩＮＩ＝ＫＯＮ＆ＥＥ  ・・・（１２）
ここで、式（１１）において、ＥＥをＩＮＩの算出要素にした理由について説明する。後述するように全チャンネルが発音中（ＥＥの値が０）の状態において、新たな打鍵を行った場合、ノイズが生じないようにするために、新たな打鍵に対応するチャンネルの急速消音を行ってから、即ちＥＥが値１及びＳＯＮが値０になるのを待ってから、新たな打鍵に対応した発音を開始する必要がある。
但し、新たな打鍵があってから発音開始されるまでの遅延時間を短くするため、急速消音を指示すると同時に、新たな打鍵に対応するチャンネルアサイン処理（Ｓ１２９）と楽音データの読み出し指示（Ｓ１３０）を行う必要がある。しかし、新たな打鍵がなされる直前に少なくとも新たな打鍵がアサインされるチャンネルのＫＯＮが値１であった場合、新たな打鍵に対応するチャンネルは、ＫＯＮが値０を経ることなく、即ち値１のままで、急速消音に続いて新たな発音制御を行うこととなる。このような場合に、発音開始時刻を決定する要素としてＫＯＮが使えないので、式（１２）においてＥＥをＩＮＩの算出要素にした。なお、式（１２）は、上述の動作に限らず、如何なるケースにおいても適用できる。
【００５５】
次いでＳ４０１において、ＩＮＩとＴＲＮＦについて判定する。ＣＰＵ部２３０Ａから信号処理部２２０内のＲＡＭに転送完了フラグＴＲＮＦが転送されると、ＩＮＩとＴＲＮＦが共に１となるので、Ｓ４０２に進んで各種パラメータの初期設定を行う。パラメータの初期設定では、信号処理部２２０内のカウンタに保持したｓｎを値０に設定し、信号処理部２２０内のＲＡＭに保持した転送完了フラグＴＲＮＦを値０に設定する。
さて、Ｓ４０１あるいはＳ４０２の後、補間処理を行う（Ｓ４０３）。補間処理とは、打鍵の強さ、即ちタッチパラメータＴＰの値に応じて楽音の音色を変更する処理である。一般的には、強打鍵時の音色の方が弱打鍵時の音色よりも高域成分に富んだ音色であることが知られている。そこで、本実施形態においては、強打鍵時の音色の代表である最強タッチの楽音データと、弱打鍵時の音色の代表である最弱タッチの楽音データとを、タッチパラメータＴＰに基づいて２点間直線補間することによって、ＴＰに応じて音色を変更できるようにした。具体的には、式（１３）に従った補間処理を行う。なお、ｗは補間後の楽音データの１サンプルの値であり、ｗａは最弱タッチに対応する楽音データの１サンプルの値であり、ｗｂは最強タッチに対応する楽音データの１サンプルの値であり、αは値０〜１の補間係数である。
【００５６】
ｗ＝ｗｂ×α＋ｗａ（１−α）  ・・・（１３）
但し、α＝ＴＰ／０ｘ７Ｆ
補間処理の後に、式（１４）に従ったエンベロープ（以下、「ＥＮＶ」という）の算出を行う（Ｓ４０４）。
ＥＮＶ＝ＬＤ×ＲＥＬ  ・・・（１４）
但し、ＲＥＬは次のように決定される。
（ａ）Ｆ＝１の場合は、
ＲＥＬ＝ｇ
（ｂ）Ｆ＝０かつＫＯＮ＝０かつＰＤ＝０の場合は
ＲＥＬ＝ＲＥＬ＿ｏｌｄ×０．５
（ｃ）上記以外の場合は、
ＲＥＬ＝１
なお、ＲＥＬは減衰パラメータであり、ＲＥＬ＿ｏｌｄは前サンプリング期間のＲＥＬであり、ｇは減衰変数である。
【００５７】
ｇはＦ＝１がＣＰＵ部２３０Ａから転送された時点のサンプリング周期において０．８７５、次のサンプリング期間において０．７５０、以降０．１２５ずつ小さくなり、値０になった時点以降は値０を維持する時変パラメータとする。このように決めておけばＦ＝１が転送されてから８サンプルでＥＮＶは値０に到達する。また、ＲＥＬ＿ｏｌｄは信号処理部２２０内のＲＡＭに保持され、式（１４）の実行毎にＲＥＬに更新されるものであり、ＲＥＬは指数関数的に０に漸近することとなる。
図２１と図２２とは、ＥＮＶの時間変化を示している。図２１は、ＰＤが値０の場合、即ちサスティンペダルがＯＦＦされている場合である。この場合には、ＫＯＮが値１の間は前述の（ｃ）のようにＥＮＶは変化せず、値０になった時、即ち離鍵した時以降にＥＮＶは指数関数的に減衰することとなる。図２２は、ＰＤが値１の場合、即ちサスティンペダルがＯＮされている場合である。この場合は、ＫＯＮが値１になっても前述した（ｃ）の状態が続き、打鍵時のＥＮＶの値のままとなる。図２１及び図２２のいずれの場合においても、強制消音の指示があった時、即ちＦ＝１となった時点で、前述した（ａ）の場合となり、ＲＥＬは時変パラメータｇとなる。従って、破線で示す８サンプリング周期でＥＮＶは値０に直線的に減衰することとなる。なお、１サンプリング周期は式（１５）に従う。
【００５８】
１／サンプリング周波数（４４．１ｋＨｚ）≒約２２．７μ秒  ・・・（１５）
従って、８サンプリング周期は約１８２μ秒となる。
ＥＮＶの算出の後、ＥＮＶと閾値ＥＮＶｔｈとの比較を行う（Ｓ４０５）。ＥＮＶｔｈは、聴感上十分聞こえないレベルの値である。Ｓ４０５でＥＮＶがＥＮＶｔｈ未満になった場合に、ＣＰＵ部２３０Ａ内のチャンネルアサインテーブル２３２内の対応するチャンネルのＥＥを値１に、ＳＯＮを値０に更新する（Ｓ４０６）。なお、ＳＯＮが値０に更新したチャンネルは、以降空きチャンネルとして管理される。
次に、式（１６）に基づきエンベロープ処理後のデジタルデータＷを求める（Ｓ４０７）。
Ｗ＝ｗ×ＥＮＶ  ・・・（１６）
なお、前述した通り楽音データはピアノの音を鍵盤毎にデジタル録音したデータであるので、ＥＮＶのレベルが時間的に変化しなくても、Ｗの波高値は時間的に減衰するので聴感上は減衰して聞こえる。
【００５９】
次に、ＷＥが値１、即ち任意の打鍵に対応する楽音データが最終サンプル（ｓ１７６３９９９サンプル）まで到達するか、あるいはＥＥが値１、即ちＥＮＶが聴感上聞こえないレベルに到達すると（Ｓ４０８）、もはや信号処理を続けて出力する必要がない。従って、セクタ番号ｓｎのインクリメントや選択フラグＤのトグル動作が不要となるので、Ｓ４１４にジャンプする。それ以外の場合にはＳ４０９に移行し、ｓｎのインクリメントを行う。なお、ウェーブエンドフラグＷＥは図１０に示すように楽音データバッファ２３１から取得した楽音データのｂ０に記録されているフラグであり、ｓ１７６３９９９サンプルのみＷＥが値１である。ｂ０が値０の楽音データをＳ４０３において読み出すまでは、対応するチャンネルのＷＥは値１のままである。
Ｓ４１０において、セクタ番号ｓｎのインクリメントの結果ｓｎが値９６になった場合はＳ４１１に進む。そして、次の楽音データ１セクタ分を読み出すために、チャンネルアサインテーブル２３２内の対応するチャンネルのＳＣをインクリメントすると共に楽音データ読出要求フラグＤＱを値１に設定する。ｓｎが９６以外ならこの処理を行うことなくＳ４１２に進む。
【００６０】
次に、Ｓ４１２において、ｓｎが１２７、即ち楽音データ１セクタ分の中の最後のサンプルに到達したか否かを判断し、到達した場合は選択フラグＤのトグル、即ち現在の値と逆の論理に変更する。この操作においては、チャンネルアサインテーブル２３２内の対応するチャンネルのＤを、例えば、０から１に切換えると共に、楽音データバッファ２３１のデマルチプレクサ、例えば、２３１＿０ｄの入力を切り換える。これにより、楽音データの読み出し元を、デュアルポートＲＡＭ２３１＿０ａからデュアルポートＲＡＭ２３１＿０ｂに切り替える。
次に、Ｓ４１４において、信号処理部２２０が内部保持しているＣＨＮをインクリメントし、ＣＨＮが０でなければ次のチャンネルの処理に移行すべくＳ４０１に戻る。但しＣＨＮは５ビットのカウンタに保持されＣＨ０〜ＣＨ３１を巡回的に更新する。Ｓ４１５でＣＨＮが値０になった時、即ちＣＨ３１までの処理が終了した時、ミキシング処理（Ｓ４１６）に移行する。
【００６１】
ミキシング処理では、ＣＨ０〜３１までのＷｎを式（１７）に基づいてミキシング処理する。
Ｗｘ＝（Ｗ０＋Ｗ１＋・・・・＋Ｗ３１）／３２  ・・・（１７）
ここで、Ｗｎ（ｎはＣＨＮに対応する０〜３１の整数）は任意のチャンネルのＷとし、Ｗｘはミキシング結果である。ミキシングの後Ｓ４１７において更にエフェクト処理を行う。
図２３は、１サンプリング周期あたりの信号処理を示すタイムスロット図である。図２３において、左側が時刻の早い方であり、ＣＨ０〜３１までの補間処理やレベル制御の後、ＣＨ０〜３１までの楽音のミキシング処理（ＭＩＸ）、及びリバーブやコーラスなどのエフェクト処理（ＥＦＦＥＣＴ）がなされる。これらの一連の処理は、サンプリング周期である２２．７μ秒毎に巡回して実行されることとなる。
【００６２】
以上説明した信号処理は、１サンプリング周期（２２．７μ秒）毎に繰り返して実行され、２２．７μ秒毎に処理後の楽音データが入出力部２１０ＡのＤＡコンバータにてデジタル−アナログ変更がなされ、その結果が所望の楽音としてラインアウト端子を介して外部に出力される。該楽音は、外部のアンプとスピーカを介してピアノの演奏音が得られる。
さて、図１３ＡのＣＰＵ部２３０Ａのメインルーチンの説明に戻り、Ｓ１０２以降の処理について説明する。ＣＰＵ部２３０ＡはＳ１０２においてチャンネルアサインテーブル２３２において全てのチャンネルのＦを調べる。Ｆが値１のチャンネルの中でＥＥが値１のチャンネルがあれば、該チャンネルのＦを値０にクリアし（Ｓ１０３）、該チャンネルにチャンネルアサイン処理を行う（Ｓ１０４）。なお、ＥＥのクリアは、前述したとおり信号処理部２２０がＳ４０２にて行う。
【００６３】
次に、楽音データの読み出し要求（Ｓ１０５）と信号処理部２２０の発音制御（Ｓ１０６）を行う。Ｓ１０５とＳ１０６とは、前述したＳ１３０とＳ１３１と同じ処理である。
次に、Ｓ１０７において、ＤＱが値１のチャンネルをサーチし、あればＳ１０８において該チャンネルの楽音データの読み出し要求を行う。なお、Ｓ１０７やＳ１０２におけるチャンネルアサインテーブル２３２のサーチはＣＨ０から昇順に行う。
（２）発音遅延時間に関する説明
以上の処理を踏まえ、さまざまな打鍵方法別に、図２４Ａ〜図２４Ｃに示すタイムチャートと、図６Ａ〜図６Ｃに示すチャンネルアサインテーブル２３２を用いて、打鍵から楽音が発音されるまでの動作、及び発音遅延時間について説明する。
（２−１）離散的な打鍵の場合
図２４Ａは離散的な打鍵を行った場合の動作を説明したタイムチャート、図６Ａは該打鍵に対応するチャンネルアサインテーブル２３２内のパラメータの変化を表したものである。
【００６４】
まず、無音状態からマスターキーボード３００によってＮＮが０ｘ１９、０ｘ１Ｃ、０ｘ１Ｅ、０ｘ２０に対応する４つの鍵盤が時刻ｔ０に同時に打鍵され、その後、数十μ秒ずつの時間間隔をおいて、ＮＮが０ｘ２５の鍵盤、ＮＮが０ｘ２９の鍵盤、最後にＮＮが０ｘ２Ｃと０ｘ２Ｆの２つの鍵盤が打鍵される場合について説明する。各打鍵は、前述したＣＰＵ部２３０Ａのチャンネルアサイン処理により、それぞれＣＨ０〜７に割り当てられ、打鍵タイミングにＣＰＵ部２３０Ａの処理遅延を付加したタイミングで、ＣＨ０〜７の読み出し要求が読み出し指示部２４０に出力される。さらに、読み出し指示部２４０が前述したように不揮発性記憶モジュール群のアクセス状況に応じて、読み出し指示情報を記憶モジュール１００Ａに転送する。
不揮発性メモリバンクからのメモリコントローラへの楽音データの読み出し中、及びメモリコントローラからアクセスモジュール２００Ａへのデータ転送中の間は、アクセスモジュール２００Ａは、次の読み出し指示情報を転送できない。このため、記憶モジュール１００Ａへの読み出し指示情報の転送タイミングは、図２４Ａに示すタイミングで、ＣＨ０〜７の読み出し指示がアクセスモジュール２００Ａから記憶モジュール１００Ａに転送される。この転送タイミングに応じて、それぞれのメモリバンク１１２〜１４２においてリードタイムＴＲの間にメモリセルアレイよりＩ／Ｏレジスタに読み出される。
【００６５】
その後、楽音データは、転送時間ＴＴ１の間にＩ／Ｏレジスタからメモリコントローラに読み出され、転送時間ＴＴ２の間にメモリコントローラから読み出し指示部２４０を介して楽音データバッファ２３１に一時記憶されることとなる。
信号処理部２２０は、楽音データバッファ２３１に記憶された楽音データを用いて前述した通り楽音の生成処理がなされる。信号処理部２２０は、１サンプリング周期毎にＣＨ０〜３１までの処理を時分割にて行う。即ち２２．７μ秒毎に各チャンネルの楽音データがｓ０から順番に使用されることとなる。
ＣＨ０〜３においては、図２４Ａの時刻ｔ２から始まる最初のタイムスロットにおいて、ｓ０が使用されることとなる。前記タイムスロットから４タイムスロット遅れてＣＨ４、５のｓ０が使用され始め、さらに３タイムスロット遅れてＣＨ６、７が使用され始める。
【００６６】
各チャンネルにおいて、ｓ０を使用したタイムスロットから数えて１２７番目のタイムスロットで５１２Ｂｙｔｅ分の楽音データを全て使いきる。このため前述した通り、ｓｎが９６になった時刻ｔ４で、あらかじめ次の５１２Ｂｙｔｅ分の楽音データを取得しておく必要がある。なお、次の５１２Ｂｙｔｅ分の楽音データを取得するタイミングは、必ずしもｓｎが９６になったタイミングである必要はなく、次の５１２Ｂｙｔｅ分の楽音データの処理に間に合うように、該５１２Ｂｙｔｅ分の楽音データを取得できれば、該５１２Ｂｙｔｅ分の楽音データを取得するタイミングは、別の値により規定されるタイミングであってもよい。
これに対応して、図２４Ａの破線で示したタイミングで、ＣＨ０〜７の読み出し指示がアクセスモジュール２００Ａから記憶モジュール１００Ａに転送される。読み出し指示の間隔は、基本的にタイムスロットの間隔、即ち２２．７μ秒毎になる。
【００６７】
次に、発音遅延時間について説明する。
発音遅延時間とは、打鍵時刻からｓ０に対応する楽音を生成するまでの時間をいう。図２４Ａの場合は、図面によればＣＨ４の発音遅延時間は、時刻ｔ１〜ｔ３の期間で最大であり、該発音遅延時間は１５０μ秒以下であると言える。これは発音遅延時間の許容範囲である１ｍ秒より十分短い値であるので、図２４Ａの場合においては、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
（２−２）集中的な打鍵の場合
次に、３２チャンネル全てを使用して一度に発音する場合について説明する。
図２４Ｂは、マスターキーボード３００により３２個の鍵盤を時刻ｔ０に同時に打鍵した場合の動作を説明するためのタイムチャートであり、図６Ｂはこの打鍵に対応するチャンネルアサインテーブル２３２内のパラメータの変化を表したものである。なお、このような打鍵方法は通常の演奏ではあまりなされない方法である。
【００６８】
このような場合においては、例えば、図６Ｂに示すように、ＮＮが０ｘ２８〜０ｘ４７に対応する３２個の鍵盤が同時に打鍵される。この打鍵は、前述したＣＰＵ部２３０Ａのチャンネルアサイン処理によりＣＨ０〜３１に割り当てられ、打鍵タイミングにＣＰＵ部２３０Ａの処理遅延を付加したタイミングで、ＣＨ０〜３１の読み出し要求が読み出し指示部２４０に出力され、さらに該読み出し要求に対応する読み出し指示情報がアクセスモジュール２００Ａから記憶モジュール１００Ａに転送される。以降は、図２４Ｂに示すように、楽音データが楽音データバッファ２３１に転送され、楽音を生成することとなる。
この場合、最も発音遅延時間が長くなるのはＣＨ２８〜３１であり、発音遅延時間は時刻ｔ０〜ｔ１までの期間、即ち図２４Ｂの図面上６５０μ秒以下であると言える。これは発音遅延時間の許容範囲である１ｍ秒より短い値であるので、図２４Ｂの場合においても、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
【００６９】
（２−３）急速消音の後に集中的な打鍵を行う場合
最後に、急速消音の後に３２チャンネル全てを使用して一度に発音する場合について、図２４Ｃと図６Ｃを用いて説明する。この場合は、例えば（２−２）に示した打鍵、即ち図６Ｃに示したようにＮＮが０ｘ２８〜０ｘ４７に対応する３２個の鍵盤が時刻ｔ０に打鍵された状態のままで、新たに時刻ｔ１にＮＮが０ｘ４８〜０ｘ６７に対応する３２個の鍵盤が打鍵された場合、即ち最大発音チャンネル数（３２チャンネル）を超えた発音となる。
このように最大発音チャンネル数を超えた発音制御をする場合は、既に発音されている３２チャンネル分全てを前もって急速消音し、該３２チャンネル分のＥＥを値１にする。そして、聴感上聞こえないレベルまで消音した後に、該３２チャンネルに新たな打鍵を割り当てる必要がある。このような場合が最も発音遅延時間が長くなる場合である。
【００７０】
このような急速消音を行う期間は、図２４Ｃにおいて、時刻ｔ１の打鍵直後の８サンプリング周期に相当する１８２μ秒の期間である。図６Ｃにおいて全チャンネルは、既に打鍵されていた鍵盤が離鍵されることなく、かつ、発音された状態において、新たな打鍵が行われたチャンネルとなるので、ＫＯＮ、ＳＯＮ共に値１から始まることとなる。そして信号処理部２２０の急速消音処理によりＥＥが値１に、ＳＯＮが値０になり、その結果、ＣＰＵ部２３０Ａのチャンネルアサイン処理によりＣＨ０〜３１の読み出し指示情報が記憶モジュール１００Ａに転送されることとなる。それ以降のタイムチャートは、図２４Ｂに示すタイムチャートと同様である。
この場合、最も発音遅延時間が長くなるのはＣＨ２８〜３１であり、該発音遅延時間は時刻ｔ１〜ｔ３までの期間、即ち図２４Ｃの図面上８５０μ秒以下であると言える。これは発音遅延時間の許容範囲である１ｍ秒より短い値であるので、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
【００７１】
以上のように、第１実施形態の楽音生成システムでは、不揮発性メモリバンク１１２〜１４２毎に楽音データを記録することにより多重化しておき、読み出し指示部２４０が、アクセスモジュール２００Ａからの読み出し指示に従って複数の不揮発性メモリバンクから並列的に楽音データを読み出すことができる。このため、本実施形態の楽音生成システムは、楽音を生成するシステムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムに適用することができる。つまり、本実施形態の楽音生成システムでは、複数のデータの読み出し時に複数の不揮発性メモリバンクから並列的にデータを読み出すことができるので、発音遅延時間をその許容範囲である１ｍ秒よりも短くすることができる。即ち、本実施形態の楽音生成システムでは、上記のように処理を行うことで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用することができるので、本発明により、低価格かつ小型の楽音信号発生装置を実現することが可能となる。
【００７２】
［第２実施形態］
次に、第２実施形態について、説明する。
＜２．１：楽音生成システムの構成＞
図２５は、第２実施形態における楽音生成システムを示すブロック図である。本実施形態の楽音生成システムは、記憶モジュール群１０００と、アクセスモジュール２０００とを含んで構成される。記憶モジュール群１０００は、記憶モジュール１１００〜１３００を含み、アクセスモジュール２０００は、発音指示分類部３０００とアクセスモジュール２１００〜２３００を含む。
記憶モジュール１１００〜１３００の各々は、第１実施形態で説明した記憶モジュール１００Ａと基本的に同一である。相違点は、記憶モジュール１００Ａがピアノ音の全音域（最低音〜最高音）を記憶しているのに対して、記憶モジュール１１００〜１３００は、全音域を分割的に記憶している点である。
【００７３】
アクセスモジュール２１００〜２３００の各々は、第１実施形態で説明したアクセスモジュール２００Ａと基本的に同一である。相違点は、アクセスモジュール２００Ａがピアノ音の全音域（最低音〜最高音）に対応する発音指示を処理するのに対して、アクセスモジュール２１００〜２３００は、全音域に対応する発音指示を分割的に処理する点である。ここで、発音指示とは、第１実施形態における打鍵データ（図１６）に対応する。なお、ペダルデータは、アクセスモジュール２１００〜２３００に共通に転送されるものとする。
図２６は、楽音データの音名コードと、記憶モジュール１１００〜１３００に分割的に記憶する楽音データとの対応関係を示す表である。図２７は、記憶モジュール１１００の記録状態を表すメモリマップである。
【００７４】
＜２．２：楽音システムの動作＞
以上のように構成された、本実施形態の楽音生成システムの動作について説明する。
マスターキーボード３００から転送された発音指示は、発音指示分類部３０００により分類される。Ａ−１〜Ｄ２の発音指示はアクセスモジュール２１００に、Ｄ＃２〜Ｇ４の発音指示群はアクセスモジュール２２００に、Ｇ＃４〜Ｃ７の発音指示群はアクセスモジュール２３００に、それぞれ、転送され、それぞれの発音指示群は、第１実施形態で説明したアクセスモジュール２００Ａと同様の処理が施され、記憶モジュール群１０００に対して読み出し指示として出力される。ここで、Ａ−１〜Ｄ２、Ｄ＃２〜Ｇ４、Ｇ＃４〜Ｃ７を、それぞれ音高グループ０、音高グループ１、音高グループ２とする。これらの音高グループは同じ音高を含まない、すなわち排他的なものである事が好ましい。但し、冗長ではあるが、各音高グループが同じ音高を含んでも構わない。その場合は、同じ音高に対する発音指示は、例えば音高グループ番号の小さい方を優先的に行えばよい。
【００７５】
アクセスモジュール２１００は、最大３０鍵分の発音指示に対する処理を行う、すなわち処理するチャンネル数は３０ＣＨ以下となるので、アクセスモジュール２１００が記憶モジュール１１００から楽音データを読み出し、所望の楽音を生成するタイムチャートは、図２４Ａあるいは図２４Ｂに対応する。アクセスモジュール２２００、２３００も同様である。すなわち、各アクセスモジュールは発音遅延が１ｍＳｅｃ以内となるように処理することが可能となる。また、第１実施形態では、３２ＣＨ以上の発音指示がなされた場合、図２４Ｃに示すような強制消音を伴う場合があるが、第２実施形態では、アクセスモジュール２１００が最大３０鍵分、アクセスモジュール２２００、２３００がそれぞれ最大２９鍵分の処理、すなわちいずれも３２ＣＨ未満の処理ですむ為、強制消音が不要であり、聴感上好ましい。
【００７６】
ここで、発音指示分類部３０００による発音指示の分類について補足する。第２実施形態では、マスターキーボード３００の８８鍵を３分割したが、例えば８鍵ずつ１１分割するように拡張してもよい。この場合、アクセスモジュールと記憶モジュールとの組が１１組必要となり回路規模が増大する。但し、各組８ＣＨずつの処理ですむため、図２４Ａ、Ｂによれば不揮発性記憶モジュールは１つで発音遅延１ｍＳｅｃを満足できる。つまり、楽音データの記憶容量を合理化することができる。
以上のように、本実施形態の楽音生成システムでは、発音指示分類部３０００が発音指示を音名に基づいて分類（グルーピング）し、１つのグループのチャンネル数が８より大きい場合は、記憶モジュール内の複数の不揮発性記憶モジュール間で楽音データを多重化して記録し、アクセスモジュール内の読み出し指示部が楽音データを並列読み出しするようにしたので、発音遅延を１ｍＳｅｃ以内におさえることが可能となる。また、本実施形態の楽音生成システムでは、１つのグループのチャンネル数が８以下の場合は、記憶モジュール内の不揮発性記憶モジュールの個数が１つ、すなわち楽音データを多重記録しなくても発音遅延を１ｍＳｅｃ以内におさえることが可能となる。
【００７７】
［他の実施形態］
なお、第１実施形態及び第２実施形態においては、ピアノの音をデジタル録音したデータを楽音データとして不揮発性メモリバンク１１２〜１４２、１１１２〜１１４２に記録したが、これに限定されることはなく、例えば、ピアノ以外の楽器音や音声、あるいはその他のデータを記憶しても構わない。また、楽音データは、デジタル録音したデータではなく人工的に作られたデータであってもよい。また、ＭＰ３などの圧縮技術によって圧縮されたデータであっても構わない。ただし、その場合は信号処理部２２０に該圧縮データを伸張する処理、即ちデコード処理を実行させる必要がある。また、打鍵強度に対応して２種類の楽音データを予め記憶したが、１種類あるいは３種類以上であっても構わない。ただし、１種類の場合は、信号処理部２２０による補間処理は不要であり、３種類以上の場合は該補間処理の方法を３点間直線補間などに拡張すればよい。また、補間処理ではなくフィルタリング処理を用いても構わない。
【００７８】
なお、上記実施形態では、１つの鍵盤に対応する楽音データを約４０秒分としたが、それに限定されることはなく、またＮＮに応じて楽音データの時間長を変えてもよい。通常ピアノの場合は低音ほど発音時間が長いので、低音側の楽音データの時間長を比較的長めにして、高音側の楽音データの時間長を比較的短めにした方が記憶容量を合理化でき好ましい。また、上記実施形態では、楽音データの多重化に際して、不揮発性メモリバンク１１２〜１４２、１１１２〜１１４２に同一の楽音データを記録するようにしたが、聴感上同じように聞こえるのであれば、不揮発性メモリバンク１１２〜１４２間あるいは不揮発性メモリバンク１１１２〜１１４２間で楽音データの値が多少違っていても差し支えない。
記憶モジュール１００Ａ、記憶モジュール群１０００は、メモリカードのようなリムーバブル記憶装置であってもよいし、電子楽器などの装置に組み込まれたメモリ部であってもよい。また、記憶モジュール１１００〜１３００、不揮発性記憶モジュール１１０Ａ〜１４０Ａ、不揮発性記憶モジュール１１１０〜１３４０のそれぞれが、メモリカードのようなリムーバブル記憶装置であってもよい。また、アクセスモジュール１５０、２０００は電子楽器などの装置であってもよいし、電子楽器などの装置に組み込まれたアクセス回路部であってもよい。
【００７９】
第１実施形態においては不揮発性記憶モジュールの数を４個としたが、それ以外の数であっても構わない。不揮発性記憶モジュールの数が多いほど、より発音遅延時間を短くすることができる。また、セクタサイズ即ち１回あたりの楽音データの読み出しサイズを５１２Ｂｙｔｅとしたが、その他のサイズであってもよい。該サイズが小さいほど楽音データバッファのＲＡＭ容量を合理化できるが、必要以上に小さくすると楽音生成処理が破綻する。また、１つの不揮発性記憶モジュール内に複数不揮発性メモリバンクを含んでも構わない。
なお、第１実施形態においては、図１４ＡのＳ２０２〜Ｓ２０８に示す通り、不揮発性記憶モジュール群のアサイン状況に応じて読み出し指示情報の転送先の不揮発性記憶モジュールを決定するようにしたが、例えば、下記（ａ）〜（ｄ）に示すようにＣＨＮとＭＭＮとの関係を固定化しても構わない。
（ａ）ＣＨ０、４、８、１２、１６、２０、２４、２８・・・ＭＭ０（不揮発性記憶モジュール１１０Ａ、１１０Ｂ）
（ｂ）ＣＨ１、５、９、１３、１７、２１、２５、２９・・・ＭＭ１（不揮発性記憶モジュール１２０Ａ、１２０Ｂ）
（ｃ）ＣＨ２、６、１０、１４、１８、２２、２６、３０・・・ＭＭ２（不揮発性記憶モジュール１３０Ａ、１３０Ｂ）
（ｄ）ＣＨ３、７、１１、１５、１９、２３、２７、３１・・・ＭＭ３（不揮発性記憶モジュール１４０Ａ、１４０Ｂ）
なお、上記実施形態では、楽音データをページ内に連続的に配置したが、配置の規則性を記憶モジュール１００Ａやアクセスモジュール２００Ａが認識していれば、不連続であっても構わない。また、第１実施形態では、ＰＢ０を先頭ブロックとして楽音データの最低音から順に連続的に配置したが、配置の規則性を記憶モジュール１００Ａやアクセスモジュール２００Ａが認識していれば、ＰＢ０が先頭ブロックでなくてもよく、また不連続であっても構わない。
【００８０】
なお、上記実施形態では、不揮発性メモリバンクをフラッシュメモリとしたが、本発明はその他の不揮発性メモリを用いた場合に適用できる。
上記実施形態では、不揮発性メモリバンクに楽音データ特性情報とメモリ構成情報とを保持するようにしているが、これらの情報を保持する別の不揮発性メモリを設けておいてもよい。あるいは、前記メモリ構成情報は、予め規格化された情報として扱っても構わない。
なお、メモリコントローラ１１１Ａ〜１４１Ａは、アクセスモジュール２００Ａ側にあっても構わない。その場合、不揮発性メモリバンク１１２〜１４２は、それぞれが１つのメモリチップにパッケージされたものであってもよいし、あるいは不揮発性メモリバンク１１２〜１４２の中の２個以上をまとめて１つのメモリチップにパッケージされたものであってもよい。
【００８１】
なお、条規実施形態では、マスターキーボード３００から演奏情報を入力したがそれ以外の形態の入力コントローラ、例えば弦を弾くことによって演奏データを出力するギター型のコントローラや、物を叩くことによって演奏データを出力するスティック型のコントローラ、あるいは加速度センサを備えたもので、それを振る動作に従って演奏データを出力するタイプのコントローラであってもよい。また、パーソナルコンピュータなどの装置から、あるいはネットワークを介してスタンダードＭＩＤＩファイルのような演奏データをアクセスモジュール２００Ａに入力するようにしても構わない。
なお、上記実施形態で説明した楽音生成システムにおいて、各ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。
【００８２】
なお、ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る楽音生成システムをハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
【００８３】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
また、上記実施形態において、アクセスモジュールと記憶モジュールとは、別装置である場合について説明したが、これに限定されることはなく、アクセスモジュールと記憶モジュールとは、１つの装置内に構成されるものであってもよい。また、アクセスモジュールは、アクセス装置を含む概念であり、記憶モジュールは、記憶装置を含む概念である。
【産業上の利用可能性】
【００８４】
本発明にかかる不揮発性記憶システムおよび楽音生成システムは、不揮発性メモリを楽音データ用のメモリとして使用する方法を提案したものであり、電子楽器やカラオケ装置、あるいは楽音生成機能（例えばサウンドカード）を有するパーソナルコンピュータや携帯電話などにおいて有益である。
【符号の説明】
【００８５】
１００Ａ、１１００、１２００、１３００  記憶モジュール
１１０Ａ、１２０Ａ、１３０Ａ、１４０Ａ  不揮発性記憶モジュール
１１１Ａ、１２１Ａ、１３１Ａ、１４１Ａ  メモリコントローラ
１１２、１２２、１３２、１４２  不揮発性メモリバンク
１１３、１２３、１３３、１４３  Ｉ／Ｏレジスタ
１１４、１２４、１３４、１４４  メモリセルアレイ
２００Ａ、２０００、２１００、２２００、２３００  アクセスモジュール
２１０、４１０、５１０  入出力部
２２０  信号処理部
２３０、４２０、５２０  ＣＰＵ部
２３１  楽音データバッファ
２３１＿０〜２３１＿３  バッファ
２３１＿０ａ、２３１＿０ｂ、２３１＿１ａ、２３１＿１ｂ  デュアルポートＲＡＭ
２３１＿２ａ、２３１＿２ｂ、２３１＿３ａ、２３１＿３ｂ  デュアルポートＲＡＭ
２３１＿０ｃ、２３１＿１ｃ、２３１＿２ｃ、２３１＿３ｃ  マルチプレクサ
２３１＿０ｄ、２３１＿１ｄ、２３１＿２ｄ、２３１＿３ｄ  デマルチプレクサ
２３２  チャンネルアサインテーブル
２３３Ａ  ＮＮテーブル
２３４  演奏データバッファ
２３５  転送監視部
２３６  ファイルシステム部
２３７  多重化部
２４０  読み出し指示部
２５０、４３０、５３０  書き込み指示部
３００  マスターキーボード
３１０  インターネット
４００、５００  データ書き込みモジュール
１０００  記憶モジュール群
３０００  発音指示分類部
【図１Ａ】
2010137312.tif 000003
【図１Ｂ】
2010137312.tif 000004
【図２】
2010137312.tif 000005
【図３】
2010137312.tif 000006
【図４】
2010137312.tif 000007
【図５】
2010137312.tif 000008
【図６Ａ】
2010137312.tif 000009
【図６Ｂ】
2010137312.tif 000010
【図６Ｃ】
2010137312.tif 000011
【図７】
2010137312.tif 000012
【図８】
2010137312.tif 000013
【図９】
2010137312.tif 000014
【図１０】
2010137312.tif 000015
【図１１】
2010137312.tif 000016
【図１２】
2010137312.tif 000017
【図１３Ａ】
2010137312.tif 000018
【図１３Ｂ】
2010137312.tif 000019
【図１４Ａ】
2010137312.tif 000020
【図１４Ｂ】
2010137312.tif 000021
【図１４Ｃ】
2010137312.tif 000022
【図１５】
2010137312.tif 000023
【図１６】
2010137312.tif 000024
【図１７】
2010137312.tif 000025
【図１８】
2010137312.tif 000026
【図１９】
2010137312.tif 000027
【図２０】
2010137312.tif 000028
【図２１】
2010137312.tif 000029
【図２２】
2010137312.tif 000030
【図２３】
2010137312.tif 000031
【図２４Ａ】
2010137312.tif 000032
【図２４Ｂ】
2010137312.tif 000033
【図２４Ｃ】
2010137312.tif 000034
【図２５】
2010137312.tif 000035
【図２６】
2010137312.tif 000036
【図２７】
2010137312.tif 000037
【手続補正書】
【提出日】平成23年4月4日(2011.4.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性記憶モジュールと、該不揮発性記憶モジュールに記録されたデータを読み出すアクセスモジュールと、を備えた不揮発性記憶システムであって、
前記不揮発性記憶モジュールは、第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）までのＮ個の記憶モジュールを有し、該不揮発性記憶モジュールに記録されるデータは前記第１記憶モジュールから第Ｎ記憶モジュールまでの少なくともひとつ選択された記憶モジュールに記録され、
前記アクセスモジュールは、
外部からのデータ読み出し指示に応じて、前記第１記憶モジュールから第Ｎ記憶モジュールのＮ個の記憶モジュールから該データが記録された記憶モジュールを決定するデータ分類部と、
前記データ分類部の決定に基づいて、前記第１記憶モジュールから第Ｎ記憶モジュールのいずれかから前記データを読み出す読み出し指示部と、
を備える不揮発性記憶システム。
【請求項２】
第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）のＮ個の記憶モジュールを含み、楽音データを、第１音高グループから第Ｎ音高グループ（Ｎは自然数）のＮ個の音高グループに分割し、第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）の楽音データを、第ｋ記憶モジュールに記憶することで、前記楽音データを前記音高グループ単位で分割して前記Ｎ個の記憶モジュールに記憶する記憶モジュール群と、
前記記憶モジュール群に対して、データの読み出し指示を行うアクセスモジュールと、
を備え、
前記アクセスモジュールは、
外部からの発音指示を第１発音指示群から第Ｎ発音指示群（Ｎは自然数）のＮ個の発音指示群のいずれかに分類することができる発音指示分類部であって、前記発音指示が前記Ｎ個の音高グループのどの音高グループに属するかを決定し、前記発音指示が第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）に属するものであると決定された場合、当該発音指示を第ｋ発音指示群（ｋは、１≦ｋ≦Ｎを満たす自然数）に分類する発音指示分類部と、
前記Ｎ個の発音指示群の各々に対応する楽音データを記憶する前記Ｎ個の記憶モジュールに対して、データ読み出し指示を出力するＮ個の読み出し指示部と、
を備える楽音生成システム。
【請求項３】
前記記憶モジュール群の各々は、複数の不揮発性記憶モジュールを含み、該複数の不揮発性記憶モジュールは楽音データを多重化して記録する、
請求項２に記載の楽音生成システム。
【請求項４】
前記Ｎ個の読み出し指示部の各々は、外部からの１つの発音指示に応じて前記いずれかの不揮発性記憶モジュールからデータの読み出しを行い、当該読み出しを完了する前に、他の発音指示があったときに該読み出し中の不揮発性記憶モジュールと異なる不揮発性記憶モジュールから読み出しを並行して行う、
請求項３に記載の楽音生成システム。
【請求項５】
前記Ｎ個の読み出し指示部の各々は、１回の読み出し指示毎に複数サンプル分の楽音データをまとめて読み出す、
請求項２から４のいずれかに記載の楽音生成システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽器音などの楽音データを予め記憶した複数の不揮発性記憶モジュールから楽音データを読み出し、該楽音データに信号処理を施すことにより楽音を生成する楽音生成システムおよび不揮発性記憶システムに関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備える不揮発性記憶モジュールは、着脱型の記憶装置として半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディアなどと比較して非常に高価格なものではあるが、小型・軽量・耐震性・取り扱いの簡便さなどのメリットにより、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体としてその需要が広まっている。
【０００３】
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリと、フラッシュメモリを制御するメモリコントローラとを有している。メモリコントローラは、デジタルスチルカメラなどのアクセスモジュールからの読み書き指示に応じて、フラッシュメモリに対する読み書き制御を行う。また、非着脱型の不揮発性記憶モジュールとして、デジタルスチルカメラやポータブルオーディオ機器本体内に組み込まれたもの、あるいはハードディスクの代替として、パーソナルコンピュータに組み込まれたものもある。
【０００４】
フラッシュメモリは、メモリセルアレイと、メモリセルアレイから読み出したデータを一時的に保持するため、あるいは外部から書き込まれたデータを一時的に保持するためのＩ／Ｏレジスタ（ＲＡＭ）などから構成される。フラッシュメモリは、メモリセルアレイを構成するメモリセルへの書き込みや消去に比較的長い時間を必要とするため、複数のメモリセルに保持されているデータを一括して消去したり書き込んだりできる構造となっている。具体的には、フラッシュメモリは、複数の物理ブロックから構成され、各物理ブロックは、複数のページを含む。データの消去は、物理ブロック単位で行われ、データの書き込みは、ページ単位で行われる。
【０００５】
さて、電子楽器などの楽音データをＲＯＭに保持した楽音生成システムがある。楽音生成システムは、鍵盤などの打鍵操作に応じて楽器の音（以下、「楽音」という）を生成するシステムである。楽音生成システムは、通常３２チャンネル以上の発音チャンネルを有しており、例えば、打鍵された順に発音チャンネルを割り当てて楽音を生成する。このシステムでは、ランダムな打鍵操作に対応して楽音を生成しなければならないので、ランダム読み出し速度の速いマスクＲＯＭが楽音データ用のＲＯＭとして使われている。
【０００６】
特許文献１によれば、フラッシュメモリの技術進歩に伴い、マスクＲＯＭのビット単価よりもフラッシュメモリのビット単価が下がることが予測されている。特許文献１には、マスクＲＯＭよりもランダム読み出し速度の遅いフラッシュメモリを楽音データ用のＲＯＭとして利用することによりシステムコストを合理化する技術が開示されている。
【０００７】
その予測通り、フラッシュメモリは、大容量化と低コスト化への要望に対応し、多値化とプロセスシュリンクによりギガビットクラスの多値ＮＡＮＤフラッシュメモリ（以下、「大容量フラッシュメモリ」という）が主流となってきた。それにより、フラッシュメモリは、ビット単価がマスクＲＯＭよりも遙かに安価になると共に、単位面積当たりの容量もマスクＲＯＭよりも遙かに大容量となり、システムの低価格化と小型化の可能性がますます高まっている。
【０００８】
尚、特許文献１の実施例で用いられた２値ＮＡＮＤフラッシュメモリ（品番：ＴＣ５８Ｖ６４ＦＴ）は、容量が６４Ｍｂｉｔ、メモリセルアレイからＩ／Ｏレジスタへアクセスしてデータを読み出すリードタイム（以下、「ＴＲ」という）は７μ秒と、２値ＮＡＮＤフラッシュメモリの中でも小容量かつ高速である旧式タイプのフラッシュメモリである。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０００−２８４７８３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ここで、高音質を維持するため、ピアノ等の楽器音をデジタル録音した楽音データを非圧縮でマスクＲＯＭやＮＡＮＤフラッシュメモリに記憶した高音質の楽音生成システムについて検討する。この場合には、メモリには、例えば、式（１）に示すように約６２１ＭＢｙｔｅの容量が必要となる。
【００１１】
４４．１ｋＨｚ×４０秒×２Ｂｙｔｅ×２タッチ×８８鍵盤≒６２１ＭＢｙｔｅ・・（１）
【００１２】
尚、式（１）において、「４４．１ｋＨｚ」はサンプリング周波数であり、「４０秒」は１つの鍵盤あたりの発音時間であり、「２Ｂｙｔｅ」は楽音データ１サンプルあたりの語長であり、「２タッチ」は最も強く打鍵した時と最も弱く打鍵した時の２つの場合を示しており、「８８鍵盤」はピアノの総鍵盤数である。
【００１３】
従って前述した容量６４Ｍｂｉｔの２値ＮＡＮＤフラッシュメモリを使用した場合、式（２）に示すように約７７個のＮＡＮＤフラッシュメモリを実装する必要がある。
【００１４】
６２１ＭＢｙｔｅ÷６４Ｍｂｉｔ≒７７個  ・・・（２）
【００１５】
従って、楽音生成システムを小型化することが困難となる。
【００１６】
一方、現在主流であるギガビットクラスの大容量フラッシュメモリを使用した場合は、該大容量フラッシュメモリを１個〜数個程度実装するたけで、６２１ＭＢｙｔｅ分の楽音データを圧縮することなく記憶することができる。
【００１７】
しかしながら、大容量フラッシュメモリは、大容量データを一度に読み書きする速度を高めるためにページサイズを拡張したこと、及び多値化したことにより、リードタイムＴＲが５０μ秒と桁違いに長くなった。楽音生成システムでは、通常３２チャンネルを同時に発音することが要求されるが、３２チャンネル目の楽音を生成しようとすると、式（３）に示すように発音遅延時間は少なくとも１．６ｍ秒となる。
【００１８】
発音遅延時間＝５０μ秒×３２＝１．６ｍ秒  ・・・（３）
【００１９】
尚、「発音遅延時間」とは、打鍵操作〜発音開始までの時間であり、その許容範囲は一般的に１ｍ秒以内とされている。これが１ｍ秒を超えてしまうと演奏上違和感をきたし、楽音生成システムとして成り立たない。
【００２０】
そこで、本発明は、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用した場合においても、高音質かつ小型の楽音生成システムを実現することができる、アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュールを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、本発明の不揮発性記憶システムは、不揮発性記憶モジュールと、該不揮発性記憶モジュールに記録されたデータを読み出すアクセスモジュールと、を備えた不揮発性記憶システムである。
不揮発性記憶モジュールは、第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）までのＮ個の記憶モジュールを有し、該不揮発性記憶モジュールに記録されるデータは第１記憶モジュールから第Ｎ記憶モジュールまでの少なくともひとつ選択された記憶モジュールに記録される。
アクセスモジュールは、データ分類部と、読み出し指示部と、を備える。
データ分類部は、外部からのデータ読み出し指示に応じて、第１記憶モジュールから第Ｎ記憶モジュールのＮ個の記憶モジュールから該データが記録された記憶モジュールを決定する。読み出し指示部は、データ分類部の決定に基づいて、第１記憶モジュールから第Ｎ記憶モジュールのいずれかからデータを読み出す。
これにより、この不揮発性記憶システムでは、複数（Ｎ個）の記憶モジュールから並列的にデータを読み出すことができるので、例えば、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。
また、上記課題を解決するために、本発明の楽音生成システムは、第１記憶モジュールから第Ｎ記憶モジュール（Ｎは自然数）からなるＮ個の記憶モジュールを含み、楽音データを、第１音高グループから第Ｎ音高グループ（Ｎは自然数）からなるＮ個の音高グループに分割し、第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）の楽音データを、第ｋ記憶モジュールに記憶することで、楽音データを音高グループ単位で分割してＮ個の記憶モジュールに記憶する記憶モジュール群と、記憶モジュール群に対して、データの読み出し指示を行うアクセスモジュールと、を備える。
そして、アクセスモジュールは、発音指示分類部と、Ｎ個の読み出し指示部と、を備える。
発音指示分類部は、外部からの発音指示を第１発音指示群から第Ｎ発音指示群（Ｎは自然数）のＮ個の発音指示群のいずれかに分類することができる。また、発音指示分類部は、発音指示がＮ個の音高グループのどの音高グループに属するかを決定し、発音指示が第ｋ音高グループ（ｋは、１≦ｋ≦Ｎを満たす自然数）に属するものであると決定された場合、当該発音指示を第ｋ発音指示群（ｋは、１≦ｋ≦Ｎを満たす自然数）に分類する。
Ｎ個の読み出し指示部とは、Ｎ個の発音指示群の各々に対応する楽音データを記憶するＮ個の記憶モジュールに対して、データ読み出し指示を出力する。
この楽音生成システムでは、楽音データを音高グループに分類し、それに対応させて、Ｎ個の記憶モジュールに楽音データが分割して記憶されており、アクセスモジュールから、読み出しに従って、複数（Ｎ個）の記憶モジュールから並列的に楽音データを読み出すことができる。これにより、現在主流である大容量フラッシュメモリなどのメモリを楽音データ用のメモリとして使用して、高音質かつ小型の楽音生成システムを実現することができる。
【００２２】
ここで、前記記憶モジュール群の各々は、複数の不揮発性記憶モジュールを含み、該複数の不揮発性記憶モジュールは楽音データを多重化して記録することが好ましい。
【００２３】
ここで、前記Ｎ個の読み出し指示部の各々は、外部からの１つの発音指示に応じて前記いずれかの不揮発性記憶モジュールからデータの読み出しを行い、当該読み出しを完了する前に、他の発音指示があったときに該読み出し中の不揮発性記憶モジュールと異なる不揮発性記憶モジュールから読み出しを並行して行うことが好ましい。
【００２４】
ここで、前記Ｎ個の読み出し指示部の各々は、１回の読み出し指示毎に複数サンプル分の楽音データをまとめて読み出すことが好ましい。
【発明の効果】
【００２５】
本発明によれば、楽音データをＮ個の音高グループ（音高グループ１〜Ｎ）に分割しそれぞれを異なるＮ個の記憶モジュール（記憶モジュール１〜Ｎ）に分割して記憶し、発音指示分類部が、外部からの発音指示を前記Ｎ個の音高グループのどの音高グループに属するかを決定しＮ個の発音指示（発音指示群１〜Ｎ）に分類し、該発音指示群１〜Ｎに基づいてＮ個の読み出し指示部が記憶モジュール１〜Ｎの読み出し行うようにしたので、複数の記憶モジュールから並列的に楽音データを読み出すことができる。このため、本発明を適用することで、楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいて、複数のデータの読み出しの際に複数の記憶モジュールから並列的に読み出すことができ、発音遅延時間をその許容範囲である１ｍ秒よりも短くすることが可能となる。従って、本発明を適用することで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用した場合においても、低価格かつ小型の楽音生成システムを実現することが可能となる。
【図面の簡単な説明】
【００２６】
【図１Ａ】第１実施形態による楽音生成システムの不揮発性記憶モジュールを示すブロック図
【図１Ｂ】第１実施形態による楽音生成システムのアクセスモジュールを示すブロック図
【図２】不揮発性メモリバンク１１２〜１４２のメモリセルアレイの構造を説明した説明図
【図３】ページ内の記録フォーマットをＰＢ０のＰ０を例に説明した図
【図４】物理セクタ番号ＰＳＮを示すビットフォーマット
【図５】楽音データバッファ２３１を示すブロック図
【図６Ａ】チャンネルアサインテーブル２３２を示す説明図
【図６Ｂ】チャンネルアサインテーブル２３２を示す説明図
【図６Ｃ】チャンネルアサインテーブル２３２を示す説明図
【図７】ＮＮテーブル２３３Ａを示す説明図
【図８】チャンネルレジスタ２４１を示すメモリマップ
【図９】ＭＭレジスタ２４２を示すメモリマップ
【図１０】楽音データ１サンプルを示すビットフォーマット
【図１１】ピアノの楽音データの特性情報を示す説明図
【図１２】メモリ構成情報を示す説明図
【図１３Ａ】ＣＰＵ部２３０Ａのメインルーチンを示すフローチャート
【図１３Ｂ】ＣＰＵ部２３０Ａの割り込みルーチンを示すフローチャート
【図１４Ａ】読み出し指示部２４０のメインルーチンを示すフローチャート
【図１４Ｂ】読み出し指示部２４０の割り込みルーチン１を示すフローチャート
【図１４Ｃ】読み出し指示部２４０の割り込みルーチン２を示すフローチャート
【図１５】読み出し指示情報を示すビットフォーマット
【図１６】演奏データを示すビットフォーマット
【図１７】メモリコントローラの処理を示すフローチャート
【図１８】メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャート
【図１９】記憶モジュール１００Ａから外部バス上に読み出された際の楽音データを示すビットフォーマット
【図２０】信号処理部２２０の処理を示すフローチャート
【図２１】ＰＤが値０の時の打鍵後のＬＤの時間変化を示すグラフ
【図２２】ＰＤが値１の時の打鍵後のＬＤの時間変化を示すグラフ
【図２３】１サンプリング周期あたりの信号処理を示すタイムスロット図
【図２４Ａ】楽音生成システムのタイムチャート
【図２４Ｂ】楽音生成システムのタイムチャート
【図２４Ｃ】楽音生成システムのタイムチャート
【図２５】本発明の第２実施形態における楽音生成システムを示すブロック図
【図２６】楽音データの音名コードと、記憶モジュール１１００〜１３００に分割的に記憶する楽音データの対応関係を示す表
【図２７】記憶モジュール１１００の記録状態を表すメモリマップ
【発明を実施するための形態】
【００２７】
以降、発明を実施するための最良の形態について説明する。第２実施形態が前述した解決手段の構成に対応するが、第２実施形態を構成する構成要素の動作を、第１実施形態で説明する。
【００２８】
［第１実施形態］
＜１．１：楽音生成システムの構成＞
図１Ａ、図１Ｂは、第１実施形態における楽音生成システム（不揮発性記憶システム）を示すブロック図である。楽音生成システムは、図１Ａに示す記憶モジュール１００Ａと、図１Ｂに示すアクセスモジュール２００Ａとを含んで構成される。
記憶モジュール１００Ａは、図１Ａに示すように、不揮発性記憶モジュール１１０Ａ、１２０Ａ、１３０Ａ、および、１４０Ａを１つの筐体内に納め、アクセスモジュールに装着して使用するものである。
不揮発性記憶モジュール１１０Ａ、１２０Ａ、１３０Ａ、および、１４０Ａは、それぞれ、メモリコントローラ１１１Ａ、１２１Ａ、１３１Ａ、および、１４１Ａと、不揮発性メモリバンク１１２、１２２、１３２、および、１４２とを含む。
【００２９】
アクセスモジュール２００Ａは、図１Ｂに示すように、入出力部２１０Ａと、信号処理部２２０と、ＣＰＵ部２３０Ａと、読み出し指示部２４０とを含み、３２チャンネル分の楽音を同時に出力できるようにしたものである。以下、チャンネル番号をＣＨ０〜ＣＨ３１とする。
ＣＰＵ部２３０Ａは、楽音データバッファ２３１と、チャンネルアサインテーブル２３２と、ＮＮテーブル２３３Ａと、演奏データバッファ２３４と、転送監視部２３５とを含む。
【００３０】
（１．１．１：不揮発性記憶モジュール１１０Ａ〜１４０Ａ）
次に、不揮発性記憶モジュール１１０Ａ〜１４０Ａの各部について詳細に説明する。
不揮発性メモリバンク１１２〜１４２は、フラッシュメモリであり、それぞれ、Ｉ／Ｏレジスタ１１３、１２３、１３３、１４３と、メモリセルアレイ１１４、１２４、１３４、１４４とを含む。
Ｉ／Ｏレジスタ１１３〜１４３は、それぞれ、４０９６Ｂｙｔｅ＋１２８Ｂｙｔｅの容量を有するＲＡＭである。
メモリセルアレイ１１４〜１４４は、それぞれ、１０２４個の物理ブロックを有する。物理ブロックは、フラッシュメモリの消去単位である。尚、以降、物理ブロックを「ＰＢ」と、物理ブロック番号を「ＰＢＮ」と、物理セクタ番号を「ＰＳＮ」と、それぞれ、表記する。例えば、物理ブロック番号ＰＢＮが「０」の物理ブロックを「ＰＢ０」と表記する。
【００３１】
図２は、不揮発性メモリバンク１１２〜１４２のメモリセルアレイの構造を説明するための図である。不揮発性メモリバンク１１２〜１４２は、それぞれ、物理ブロックＰＢ０〜ＰＢ１０２３を有している。また、各物理ブロックは、それぞれ、２５６ページ（Ｐ０〜Ｐ２５５）から構成される。
【００３２】
図３は、各ページ内の記録フォーマットについて、物理ブロックＰＢ０のページＰ０を例に説明した図である。全物理ブロックの各ページは、４０９６Ｂｙｔｅのデータ領域と１２８Ｂｙｔｅの冗長領域とから成る。本実施形態において、データ領域は、８セクタに分割される。各セクタは、５１２Ｂｙｔｅの容量を持つ。また、冗長領域は使用しない。尚、記録されているデータの詳細については後述する。
【００３３】
図４は、物理セクタ番号ＰＳＮを示すビットフォーマットである。図４において、ビットｂ０〜ｂ２は、ページ内セクタ選択ビットであり、ｂ３〜ｂ１０は、ページ番号を示すビットであり、ｂ１１〜ｂ２０は、物理ブロック番号を示すビットである。
【００３４】
ページ内セクタ選択ビットは、ページ（ページの先頭アドレス）をセクタサイズで割り算した商に相当するビットである。本実施形態においては、ページサイズを４０９６＋１２８Ｂｙｔｅとし、セクタサイズを５１２Ｂｙｔｅとした場合、即ち、図３に示すように１ページが８個のセクタに分割される場合であり、これらを前述した物理アドレスの下位３ｂｉｔによって選択する。尚、ページサイズやセクタサイズは前述した値に限定される必要はなく、その値に応じてページ内セクタ選択ビットを可変としても構わない。
【００３５】
メモリコントローラ１１１Ａ〜１４１Ａは、アクセスモジュール２００Ａから供給された読み出し指示情報を、不揮発性メモリバンク１１２〜１４２へのリードコマンドに変換するためのインターフェース回路やバッファ等を備えたものである。該インターフェース回路は、市販のメモリカード（例えば、ＳＤカード）にも搭載されているものであるので、説明を省略する。
【００３６】
（１．１．２：アクセスモジュール２００Ａ）
次に、アクセスモジュール２００Ａの各ブロックについて、図１Ｂを用いて詳細に説明する。演奏データは、外部のマスターキーボード３００の打鍵などの操作に応じて生成され、入出力部２１０Ａを介してＣＰＵ部２３０Ａに取り込まれる。
入出力部２１０Ａは、マスターキーボード３００から演奏データを入力するための端子と、信号処理部２２０が生成した楽音をデジタル−アナログ変換するＤＡコンバータと、該変換後の楽音を増幅するアンプ部と、そのアンプ部の出力を外部に出力するためのラインアウト端子とを含む。
【００３７】
信号処理部２２０は、ＣＰＵ部２３０Ａから供給された最大で３２チャンネル分の楽音データの補間演算やレベル制御を行った後に、発音チャンネルのミキシングや、リバーブなどのエフェクト処理を行うことにより楽音を生成するブロックである。信号処理部２２０は、デジタルシグナルプロセッサ（以下、「ＤＳＰ」という）、該ＤＳＰのプログラムを格納したＲＯＭ、及び、エフェクタ処理に必要な遅延素子のために、あるいはパラメータを一時記憶するために必要なＲＡＭなどによって構成される。
【００３８】
ＣＰＵ部２３０Ａは、入出力部２１０Ａが受信した演奏データについてチャンネルアサイン処理を行い、読み出し指示部２４０に対して不揮発性記憶モジュール１１０Ａ〜１４０Ａの読み出しを要求すると共に、読み出し指示部２４０が不揮発性記憶モジュール１１０Ａ〜１４０Ａから読み出した楽音データと、演奏データの一部とを信号処理部２２０に供給するブロックである。
【００３９】
図５は、ＣＰＵ部２３０Ａに含まれる楽音データバッファ２３１を示すブロック図である。楽音データバッファ２３１は、２３１＿０〜２３１＿３の４つのバッファから構成される。各バッファの内部の回路構成は、同一であり、下記（ａ）〜（ｄ）に示す通り、発音チャンネルによって使い分けられる。
（ａ）バッファ２３１＿０・・・ＣＨ０、４、８、１２、１６、２０、２４、２８の楽音データの一時記憶用
（ｂ）バッファ２３１＿１・・・ＣＨ１、５、９、１３、１７、２１、２５、２９の楽音データの一時記憶用
（ｃ）バッファ２３１＿２・・・ＣＨ２、６、１０、１４、１８、２２、２６、３０の楽音データの一時記憶用
（ｄ）バッファ２３１＿３・・・ＣＨ３、７、１１、１５、１９、２３、２７、３１の楽音データの一時記憶用
【００４０】
バッファ２３１＿０は、デュアルポートＲＡＭ２３１＿０ａ、２３１＿０ｂ及びマルチプレクサ２３１＿０ｃ、デマルチプレクサ２３１＿０ｄを有している。デュアルポートＲＡＭ２３１＿０ａ、２３１＿０ｂは、それぞれ、ＣＨ０、４、８・・・２８迄の８つのチャンネル分のデータを一時記憶する４ｋＢｙｔｅのＲＡＭであり、１チャンネルあたり５１２Ｂｙｔｅの記憶容量を有する。バッファ２３１＿１は、デュアルポートＲＡＭ２３１＿１ａ、２３１＿１ｂ及びマルチプレクサ２３１＿１ｃ、デマルチプレクサ２３１＿１ｄを有している。デュアルポートＲＡＭ２３１＿１ａ、２３１＿１ｂは、それぞれ、ＣＨ１、５、９・・・２９迄の８つのチャンネル分のデータを一時記憶する４ｋＢｙｔｅのＲＡＭであり、１チャンネルあたり５１２Ｂｙｔｅの記憶容量を有する。また、他のバッファバッファ２３１＿２、２３１＿３についても同様の構成であり、前述のチャンネル用のバッファとして用いられる。
【００４１】
図６Ａ〜図６Ｃは、ＣＰＵ部２３０Ａに含まれるチャンネルアサインテーブル２３２を示す説明図である。チャンネルアサインテーブル２３２は、全チャンネル、即ちＣＨ０〜ＣＨ３１の発音状態などのステータスを表す以下の情報が保持されている。以下、これらの情報について説明する。
【００４２】
発音中フラグＳＯＮは、対応するチャンネルが発音中か否かを示すフラグであり、値０の時は発音中チャンネル、値１の時は空きチャンネルであることを示す。
【００４３】
ＫＯＮフラグは、打鍵してから離鍵されるまでの間に値１になるフラグである。
ノートナンバーＮＮは、ピアノの鍵盤位置に対応する１６進数の番号である。
タッチパラメータＴＰは、打鍵の強さに対応する強弱情報である。
レベルデータＬＤは、打鍵の強さに応じて決まる楽音の音量に対応するものである。
強制消音フラグＦは、楽音を強制的に消音するためのフラグである。
セクタカウントＳＣは、楽音データが１セクタ分即ち１２８サンプル分読み出される毎にカウントアップするカウンタである。
ウェーブエンドフラグＷＥは、楽音データの最終サンプル、即ちｓ１７６３９９９が楽音生成のために処理されたことを示すフラグである。
エンベロープエンドフラグＥＥは、打鍵の状態やサスティンペダルの状態に応じて変化する楽音の音量変化（以下、「エンベロープＥＮＶ」という）が、聴感上聞こえない音量レベルになった時に値１にセットされるフラグである。
楽音データ読み出し要求フラグＤＱは、信号処理部２２０が楽音の生成として使用した楽音データのサンプル数が所定の閾値（例えば９６サンプル）に到達した時点でセットされるフラグである。
選択フラグＭは、楽音データバッファ２３１のうちバッファ２３１＿０については、デュアルポートＲＡＭ２３１＿０ａと２３１＿０ｂのどちらに楽音データを書き込むかを選択するフラグである。バッファ２３１＿１〜２３１＿３も同様である。
選択フラグＤは、バッファ２３１＿０については、デュアルポートＲＡＭ２３１＿０ａと２３１＿０ｂのどちらに記憶されている楽音データを信号処理部２２０に転送するかを選択するフラグである。バッファ２３１＿１〜２３１＿３も同様である。尚、フラグＤとＭは、バッファ２３１＿０については、値０の時にデュアルポートＲＡＭ２３１＿０ａを選択し、値１の時にデュアルポートＲＡＭ２３１＿０ｂを選択する。バッファ２３１＿１〜２３１＿３も同様である。
【００４４】
図７は、ＣＰＵ部２３０Ａに保持されているＮＮテーブル２３３Ａを示す説明図である。ＮＮテーブルとは、ノートナンバーＮＮと、該ＮＮに対応する楽音データを記憶した物理ブロック番号との関係を示すテーブルである。
【００４５】
演奏データバッファ２３４は、マスターキーボード３００から入力された複数の演奏データを保持するＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリである。
【００４６】
ＣＰＵ部２３０Ａ内の転送監視部２３５は、データ転送を監視し、各バッファ２３１＿０〜２３１＿３の２つのいずれかのチャンネルに対応するエリアにデータが一時記憶され終わると、信号処理部２２０に対して転送完了フラグＴＲＮＦを転送するものである。
【００４７】
読み出し指示部２４０は、ＣＰＵ部２３０Ａの読み出し要求と不揮発性記憶モジュール１１０Ａ〜１４０Ａのアクセス状態に応じて、不揮発性記憶モジュール１１０Ａ〜１４０Ａに読み出し指示情報を転送するブロックである。
【００４８】
読み出し指示部２４０は、チャンネルレジスタ２４１及びＭＭレジスタ２４２を含んでいる
【００４９】
図８は、読み出し指示部２４０に含まれるチャンネルレジスタ２４１を示すメモリマップである。チャンネルレジスタ２４１は、３２チャンネル分の読み出し指示状態を表すレジスタであり、３２チャンネル分について、読み出し指示情報と、読み出し要求フラグＲＲＱと、読み出し指示情報転送フラグＲＤＴとを有している。
読み出し要求フラグＲＲＱ（以下、「ＲＲＱ」という）は、ＣＰＵ部２３０Ａが読み出し要求をしない間は値０であり、要求があれば値１となるフラグである。
読み出し指示情報転送フラグＲＤＴ（以下、「ＲＤＴ」という）は、読み出し指示部２４０が読み出し指示情報を不揮発性記憶モジュール１１０Ａ〜１４０Ａのいずれかに転送した時に立てられ、要求をしなくなったときにリセットされるフラグである。
【００５０】
図９は、読み出し指示部２４０に含まれるＭＭレジスタ２４２を示すメモリマップである。ＭＭレジスタ２４２は、不揮発性記憶モジュール１１０Ａ〜１４０Ａのアクセス状態を表すレジスタであり、不揮発性記憶モジュール１１０Ａ〜１４０Ａの４モジュール分について読み出し中フラグＲＢＳＹを有している。不揮発性記憶モジュール１１０はＭＭＮが０（以下、「ＭＭ０」という）、不揮発性記憶モジュール１２０はＭＭＮが１（以下、「ＭＭ１」という）、不揮発性記憶モジュール１３０はＭＭＮが２（以下、「ＭＭ２」という）、不揮発性記憶モジュール１４０はＭＭＮが３（以下、「ＭＭ３」という）に対応する。読み出し中フラグＲＢＳＹ（以下、「ＲＢＳＹ」という）は、読み出し指示部２４０が不揮発性記憶モジュール１１０Ａ〜１４０Ａに読み出し指示情報を転送したときに値１にセットされ、不揮発性記憶モジュール１１０Ａ〜１４０Ａから該読み出し指示情報に対応するデータ（５１２Ｂｙｔｅ分）が読み出されたときに値０にリセットされる。
【００５１】
また、ＭＭレジスタ２４２は、不揮発性記憶モジュールＭＭ０〜ＭＭ３のそれぞれに８個の登録枠１〜８を含み、それぞれの登録枠１〜８はＭＡＦとＣＨＮを含む。ＭＡＦは、モジュールアサインフラグを示し、このフラグが値１の場合、対応する不揮発性記憶モジュールに読み出し指示情報が転送されていて発音中であることを表す。ＭＡＦは対応するチャンネルの発音が終了した時点で値０にリセットされる。また、ＣＨＮは、発音中のチャンネル番号を表す。不揮発性記憶モジュール１１０Ａ〜１４０Ａは、それぞれ、最大８チャンネル分の読み出し指示情報を受け付けることが可能となる。
【００５２】
≪初期状態≫
まず、記憶モジュール１００Ａ、あるいは図１Ａと図１Ｂに示した楽音生成システムの出荷前において、メーカー側で処理する初期化の内容について説明する。本実施形態では、ピアノの楽音データを４４．１ｋＨｚのサンプリング周波数でデジタル録音した場合において、各音高毎に約４０秒分の楽音データを圧縮せずに各不揮発性メモリバンク１１２〜１４２に記録する。なお、ピアノの鍵盤を打鍵してから音が十分減衰するまでの時間を４０秒とする。この場合には式（４）に示すとおり、１７６４０００サンプルとなる。
【００５３】
４４．１ｋＨｚ×４０秒＝１７６４０００サンプル  ・・・（４）
【００５４】
ここでは、最強タッチと最弱タッチの２種類について、あらかじめデジタル録音したピアノの楽音データを、図２に示すように不揮発性メモリバンク１１２の物理ブロックＰＢ０〜ＰＢ７０３に、ピアノの最低音から最高音に至る８８鍵分の楽音データを昇順に書き込む。不揮発性メモリバンク１１２〜１４２にもそれぞれ同一のデータを同様に書き込む。これによって同一のデータを４つの並列化された不揮発性メモリバンクに多重化して記録する。
【００５５】
各メモリバンクのＰＢ０〜ＰＢ７には、ピアノの最低音のデータが記録され、ＰＢ０のＰ０から昇順に打鍵直後の先頭サンプル（ｓ０）から順番に最後尾サンプル（ｓ１７６３９９９）までの１７６４０００サンプル分の楽音データが記憶されている。但し、図３に示すように、５１２Ｂｙｔｅ単位で、最弱タッチと最強タッチの２種類の楽音データが組となって書き込まれる。
【００５６】
図１０は、楽音データの１サンプルを示すビットフォーマットである。図１０において、ｂ１５には、正負を表すサインビットが書き込まれ、ｂ１５〜ｂ１までの１５ビットが楽音データの１サンプルとして使用される。ｂ０には、ウェーブエンドフラグＷＥが記録される。フラグＷＥは、対応するサンプルが最終サンプルかどうかを示すフラグであり、値１の場合は最終サンプルであるとする。
【００５７】
更に初期化の際には、不揮発性メモリバンク１１２の最終物理ブロックＰＢ１０２３のページＰ０には、記憶モジュール１００Ａに記録されているピアノの楽音データの特性情報（以下、「記録データ特性情報」という）と記憶モジュール１００Ａのメモリ構成に係る情報（以下、「メモリ構成情報」という）を書き込んでおく。
【００５８】
図１１は、記録データ特性情報の一例を示す説明図である。この特性情報には、少なくとも楽音データのサンプリング周波数（この場合は４４．１ｋＨｚ）の情報が含まれている。また、リバーブ及びコーラスは、エフェクト処理をする際に用いられる。なお、図１１のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
【００５９】
図１２は、記憶モジュール１００Ａのメモリ構成情報の一例を示す説明図である。ここで、図１２のセクタサイズは、１回の読み出し指示毎に読み出すデータのサイズを示しており、リードタイムＴＲは、メモリセルアレイからＩＯレジスタへの読み出し時間を示す。転送時間ＴＴ１は、各メモリバンクのＩＯレジスタからメモリコントローラ内にバッファリングする時間を示す。なお、図１２のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
【００６０】
＜１．２：楽音生成システムの動作＞
以上のように構成された、本発明の第１実施形態における楽音生成システムの動作について説明する。
【００６１】
（１．２．１：電源立ち上げ時の初期化処理）
アクセスモジュール２００Ａ及び記憶モジュール１００Ａの電源立ち上げ後、アクセスモジュール２００Ａ及び記憶モジュール１００Ａは、それぞれ、初期化処理を開始する。記憶モジュール１００Ａの初期化処理は、それぞれのメモリコントローラが行い、初期化が完了するとアクセスモジュール２００Ａに対してアクセスを許可する。なお、メモリコントローラの初期化処理については一般的であるので説明を省略する。
【００６２】
アクセスモジュール２００Ａの初期化処理は、ＣＰＵ部２３０Ａによる処理と読み出し指示部２４０による処理とに分かれて行われる。
【００６３】
アクセスモジュール２００ＡのＣＰＵ部２３０Ａは、図１３Ａのフローチャートに示すように、Ｓ１００において初期化処理を行う。初期化処理では、信号処理部２２０のリセットや、楽音データバッファ２３１内のバッファ２３１＿０〜２３１＿３内の各デュアルポートＲＡＭをクリアする。信号処理部２２０をリセットすることにより、信号処理部２２０は、内部のＤＳＰのプログラムカウンタのカウントアップを開始する。また、図６Ａ〜図６Ｃに示すチャンネルアサインテーブル２３２の初期設定、即ち、以下の処理を行う。
【００６４】
（１）ＳＯＮを値０、即ちＣＨ０〜３１を空きチャンネルに設定
（２）ＫＯＮ、ＰＤ、ＮＮ、ＴＰ、ＬＤ、Ｆ、ＳＣ、ＷＥ、ＤＱ、Ｍ、Ｄを値０に設定
（３）ＥＥを値１に設定
【００６５】
その後、アクセスモジュール２００Ａは、不揮発性記憶モジュール１１０Ａに対して、記録データ特性情報とメモリ構成情報の読み出し指示情報とを転送する。図１５は、アクセスモジュール２００Ａから不揮発性記憶モジュール１１０に対する読み出し指示情報を示すビットフォーマットである。なお、ｂ２２とｂ２１は、読み出し以外の指示にも拡張できるように設けたが、本実施形態においては、読み出し以外の指示は行わないので値１１に固定する。なお、これらの特性情報は、不揮発性メモリバンク１１２のＰＢ１０２３のＰ０の０番地から５１２Ｂｙｔｅ分以内に書き込まれている。アクセスモジュール２００Ａは、この読み出し指示情報を不揮発性記憶モジュール１１０に転送することによって、記録データ特性情報とメモリ構成情報を読み出すことができる。
【００６６】
ＣＰＵ部２３０Ａは、図１１に示す記録データ特性情報を取得すると、サンプリング周期（２２．７μｓ）を信号処理部２２０内のタイマーにセットし、１サンプリング時間の信号処理のタイムスロットの１周期を決定する。このタイマーは信号処理部２２０内のＤＳＰの１周期を制御するためのタイマーとして機能する。ＣＰＵ部２３０Ａは、記録データ特性情報内の１サンプル容量（２Ｂｙｔｅ）とフラグ割り当てビット（ｂ０）を信号処理部２２０内のＲＡＭのパラメータとして書き込み、楽音データが図１０に示すビットフォーマットのどのビット位置に相当するかを決定するためのパラメータとして使用する。
【００６７】
また、ＣＰＵ部２３０Ａは、記録データ特性情報内の最大発音チャンネル数（３２ＣＨ）によって、チャンネルアサインテーブル２３２のチャンネル枠を決定すると共に、信号処理部２２０のタイムスロットのチャンネル数を決定する。また、信号処理部２２０は、リバーブとコーラスによりエフェクト処理を決定する。図１１の場合にはエフェクト処理としてリバーブのみを行うことを決定する。
【００６８】
さらに、ＣＰＵ部２３０Ａは、図１２に示すメモリ構成情報を取得すると、不揮発性記憶モジュール数に基づき、式（５）を実行することにより並列数を求める。
【００６９】
並列数＝不揮発性記憶モジュール数  ・・・（５）
【００７０】
１つの不揮発性記憶モジュールあたりにアサインされる、即ち読み出し指示情報が転送されるチャンネルの最大数（モジュール当たり最大チャンネル数）は、式（６）によって与えられる。
【００７１】
モジュール当たり最大チャンネル数＝ＣＨＮ÷並列数  ・・・（６）
本実施形態においては、ＣＨＮは３２、並列数が４であるので、式（６）によれば不揮発性記憶モジュール１１０Ａ〜１４０Ａのそれぞれは最大８チャンネル分の読み出し指示情報をアサインすることが可能となる。各チャンネルをどの不揮発性記憶モジュールにアサインするかについては後述する。
【００７２】
ＣＰＵ部２３０Ａは、図１２に示すメモリ構成情報の中のセクタサイズ（５１２Ｂｙｔｅ）を参照し、記憶モジュール１００Ａからのデータの読み出し単位のサイズを５１２Ｂｙｔｅとして管理する。また、式（７）を実行することにより、セクタ毎の総サンプル数（以下、ｕｓｎという）を決定する。
【００７３】
ｕｓｎ＝セクタサイズ／１サンプルサイズ／タッチ数  ・・・（７）
【００７４】
本実施形態においては、セクタサイズが５１２Ｂｙｔｅ、１サンプルサイズが２Ｂｙｔｅ、タッチ数が２であるので、ｕｓｎ＝１２８サンプルとなる。
【００７５】
さらに、ＣＰＵ部２３０Ａは、図１１に示す記録データ特性情報の中の１ノートあたりの占有容量と、メモリ構成情報の中のページサイズと１物理ブロックあたりのページ数ＴＰＮ（この場合は２５６）とに基づき、式（８）を実行することにより、１ノートあたり必要な物理ブロック数を算出する。
【００７６】
１ノートあたり必要な物理ブロック数＝１ノートあたりの占有容量／（ページサイズ×ＴＰＮ）＝８個  ・・・（８）
【００７７】
そして、最低音Ａ−１から最高音Ｃ７まで、それぞれのノートに対応するＰＢＮを決定し、図７に示すＮＮテーブル２３３Ａを生成する。
【００７８】
以上メインルーチンにおいて、記録データ特性情報とメモリ構成情報とを読み出し、各種パラメータの設定処理によってＣＰＵ部２３０Ａは初期化処理（Ｓ１００）を終える。
【００７９】
図１４Ａは、読み出し指示部２４０の通常処理を示すフローチャートであり、図１４Ｂ及び図１４Ｃは、その割り込み処理を示すフローチャートである。
【００８０】
読み出し指示部２４０は、図１４Ａのフローチャートに示すように、Ｓ２００において初期化処理を行う。初期化処理では、読み出し指示部２４０が、記憶モジュール１００Ａの全ての不揮発性記憶モジュールからアクセス許可を受信すると、読み出し指示部２４０は、ＣＰＵ部２３０Ａに対してアクセス可能であることを通知する。
【００８１】
ＣＰＵ部２３０Ａは、読み出し指示部２４０からアクセス可の通知を受けると、Ｓ１１０から通常動作処理Ｓ１０１に移行し、割り込みをイネーブルにして外部のマスターキーボード３００からの演奏データを受付ける。
【００８２】
（１．２．２：通常動作時の処理）
（１）全体的な動作説明
演奏データの入力から楽音の生成に至る全体的な動作説明を、ＣＰＵ部２３０Ａのフローチャート及び読み出し指示部２４０のフローチャートを中心に説明する。なお、ＣＰＵ部２３０Ａのフローチャートと読み出し指示部２４０のフローチャートは独立して実行されるものである。
【００８３】
図１３Ｂは、ＣＰＵ部２３０Ａの割り込みルーチンを示しており、マスターキーボード３００の演奏操作によって演奏データがアクセスモジュール２００Ａに転送された際に起動される。図１３Ａに示すメインルーチンの処理中にマスターキーボード３００の演奏操作がなされると、即座に割り込みルーチンに移行する。なお、割り込みルーチンは多重割り込みが可能、即ち割り込みルーチン中であっても、次の割り込みを受け付けるものとする。
【００８４】
一方、読み出し指示部２４０のフローチャートにおいて、割り込みルーチンは、図１４Ｂに示す割り込みルーチン１と図１４Ｃの割り込みルーチン２とからなり、それらに優先順位はなく、また、いずれも多重割り込みが可能である。割り込みルーチン１は、ＣＰＵ部２３０Ａから読み出し要求があった時に起動されるルーチンであり、割り込みルーチン２は、記憶モジュール１００Ａから楽音データを受信した時に起動されるルーチンである。
【００８５】
まず、通常動作処理Ｓ１０１への移行後、マスターキーボード３００の演奏操作がなされないとすると、全チャンネルの強制消音フラグＦは値０であり、また、読み出し要求フラグＤＱは値０であるので、Ｓ１０２とＳ１０７の分岐はＮｏとなり、Ｓ１０２とＳ１０７の分岐処理を永続的に実行することとなる。
【００８６】
マスターキーボード３００の演奏操作がなされると、図１３Ｂに示す割り込みルーチンが起動される。この割り込み処理について説明する。
【００８７】
図１６は、マスターキーボード３００から転送される演奏データを示すビットフォーマットである。演奏データには、打鍵に応じて生成される打鍵データと、サスティンペダルのＯＮ／ＯＦＦ操作に応じて生成されるペダルデータとの２種類がある。それらのデータは、ｂ１５の値によって識別される。打鍵データにおいて、ＫＯＮフラグ、ノートナンバーＮＮ、及びタッチパラメータＴＰは前述のものである。ペダルデータにおいて、ＰＤはサスティンペダルがＯＮされた時に値１になるフラグである。なお、サスティンペダルとは、離鍵時にも音を持続させるためのペダルであり、本物のピアノにも備えられたペダルである。
割り込みルーチンにおいて、まず、マスターキーボード３００から入出力部２１０Ａを介して転送された演奏データを、演奏データバッファ２３４に取得する（Ｓ１２０）。この演奏データのフォーマットは図１６に示すように、打鍵データまたはペダルデータのいずれかである。演奏データバッファ２３４に、既に取得した未処理の演奏データがなければ（Ｓ１２１）、今回取得した演奏データをチェックする（Ｓ１２２）。具体的には図１６に示す演奏データのｂ１５を調べることにより、打鍵データであるかペダルデータであるかを識別する。演奏データがペダルデータである場合は（Ｓ１２３）、図１６に示すペダルデータ内のｂ１４即ちＰＤフラグをそのままチャンネルアサインテーブル２３２内のＰＤにコピーし（Ｓ１２４）、Ｓ１３２に移行する。
一方、演奏データが打鍵データの場合は（Ｓ１２３）、図１６に示す打鍵データのｂ１４からＫＯＮフラグを抽出し（Ｓ１２５）、Ｓ１２６においてＫＯＮの値をチェックし、ＫＯＮが値０の場合即ち離鍵の場合は、Ｓ１３２に移行する。
【００８８】
ＫＯＮが値１の場合即ち打鍵の場合は、チャンネルアサインテーブル２３２内において空きチャンネルがあるかどうかを調べる（Ｓ１２７）。具体的には、ＣＨ０から昇順に値０の発音中フラグＳＯＮがあるかどうかを調べ、あれば最初に見つかったチャンネルに該演奏データをアサインする（Ｓ１２９）。チャンネルアサイン処理においては、下記の通りアサイン先のチャンネルの各情報の設定を行う。
【００８９】
（１）ＳＯＮを値１にセット
（２）ＮＮとＴＰを打鍵データからコピー
（３）ＳＣ、ＷＥ、ＥＥ、ＤＱ、Ｍ、Ｄを値０に設定
【００９０】
さて、ＣＰＵ部２３０Ａはチャンネルアサイン処理の後、読み出し指示部２４０に対して読み出し要求と共に図１５に示す楽音データの読み出し指示情報を渡す。読み出し指示情報は以下の手順で求められる。
【００９１】
（ａ）打鍵データのＮＮに基づきＮＮテーブル２３３Ａを参照し、先頭ＰＢＮを求める。
（ｂ）先頭ＰＢＮとＳＣに基づき式（９）を実行することによりＰＳＮを求める。
【００９２】
ＰＳＮ＝（先頭ＰＢＮ＜＜１１）＋ＳＣ  ・・・（９）
【００９３】
但し、＆は論理積をとる演算子、｜は論理和をとる演算子、＜＜は左にビットシフトする演算子である。
【００９４】
（ｃ）式（９）により求められたＰＳＮは２１ビットであり、その上位の２ビットは「１１」である。従って、次の式（１０）を実行することにより読み出し指示情報を求める。尚、“０ｘ”は１６進数を表す記号である。図１５は、この読み出し指示情報を示す。
【００９５】
読み出し指示情報＝０ｘ６０００００｜ＰＳＮ  ・・・（１０）
【００９６】
このようにして、ＣＰＵ部２３０Ａは読み出し先のＰＳＮを決定し、図１５に示すフォーマットにて読み出し指示部２４０に読み出し指示情報を渡す。読み出し指示部２４０は、読み出し要求と対応するＣＨＮと読み出し指示情報を受け取ると、まず、受け取ったＣＨＮと読み出し指示情報をチャンネルレジスタ２４１に登録する。その後、ＭＭレジスタ２４２に基づき読み出し対象となる不揮発性記憶モジュールを決定する。そして、楽音データの読み出し中でなければ、チャンネルレジスタ２４１に登録されている読み出し指示情報を該不揮発性記憶モジュールに転送し、所望の楽音データを読み出す。
【００９７】
≪読み出し指示部２４０による記憶モジュール１００Ａの楽音データの読み出し≫
次に、読み出し指示部２４０による記憶モジュール１００Ａの楽音データの読み出しについて、図１４Ａ〜図１４Ｃ及び図１７のフローチャートを中心に説明する。
まず、読み出し指示部２４０は、図１４Ａに示すメインルーチンにおいて、前述した初期化処理（Ｓ２００）の後に、通常処理（Ｓ２０１）に移行する。ＣＰＵ部２３０Ａから読み出し要求がない間は、チャンネルレジスタ２４１内のＲＲＱは全て値０であり、その場合はＣＰＵ部２３０Ａが管理しているＥＥの変化をモニターし、その結果に応じてＭＭレジスタ２４２のフラグ操作を行う（Ｓ２０３）。具体的には、ＭＭレジスタ２４２のＭＡＦが値１となっているチャンネルについて、ＥＥが値０から値１に変化、即ち発音中から無音状態に変化したチャンネルはＭＡＦを値０にリセットし、登録枠から該チャンネルを除外する。その後、Ｓ２０２に戻り、以降、Ｓ２０２とＳ２０３の判断分岐を永続的に実行し続けることとなる。
【００９８】
そして、ＣＰＵ部２３０Ａから読み出し要求を受け取ると、メインルーチンのＳ２０２とＳ２０３のループから図１４Ｂの割り込みルーチン１に移行し、チャンネルレジスタ２４１に読み出し指示情報を登録し、読み出し指示情報と同時に転送されるＣＨＮをチャンネルレジスタ２４１のＣＨＮ欄に登録する（Ｓ２２０）。さらに、前記ＣＨＮに対応するＲＲＱを値１にセットし（Ｓ２２１）、割り込みを終了しメインルーチンに戻る。なお、図８に示す例は、ＣＰＵ部２３０ＡからＣＨ０〜３の読み出し要求がなされ、以降に説明する処理によって各フラグが変化する様子を示した例である。具体的には、ＣＨ０〜３の読み出し要求と不揮発性記憶モジュール１１０Ａ〜１４０Ａへの読み出し指示情報の転送を完了し、不揮発性記憶モジュール１１０Ａ、１２０Ａからアクセスモジュール２００Ａへの楽音データの転送を完了した時点までを表している。この動作によって、チャンネルレジスタ２４１内の各フラグの値が変化することとなる。また、ＭＭレジスタ２４２（図９）についても、各不揮発性記憶モジュール（ＭＭ０〜ＭＭ３）が読み出し中か否かを示すフラグＲＢＳＹ等の値を変化させることとなる。
【００９９】
図１４Ａのメインルーチンにおいては、ＣＨ０〜３のＲＲＱが値１となったので、Ｓ２０２からＳ２０４に移行し、ＭＭレジスタ２４２に基づきアサイン状況、ＣＨ０〜３に対応する読み出し指示情報が不揮発性記憶モジュールにアサイン（転送）されたかどうかについてチェックする。具体的には、Ｓ２０５において、登録枠１〜８をチェックしＭＡＦが値１になっているＣＨＮがＣＨ０〜３のいずれかであれば、既にアサイン済みであると判断する。そして、ＭＡＦが値１になっているＣＨＮがＣＨ０〜３である不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する（Ｓ２０６）。
【０１００】
一方、アサイン済みでなければ、Ｓ２０７において、ＭＭレジスタ２４２においてＭＡＦが値１となっている登録枠の個数（登録数）を計数し、登録数が最も少ない不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する。なお、登録数が最も少ない不揮発性記憶メモリモジュールが複数ある場合は不揮発性記憶メモリモジュールの小さい方を優先的に選択する。その後、読み出し指示情報の転送先に決定した不揮発性記憶メモリモジュールにおいて、ＭＡＦが値０となっている登録枠のいずれかのＭＡＦを値１にセットすると共に、対応するＣＨＮ欄にアサイン対象であるＣＨＮの値を登録する（Ｓ２０７）。なお、最初は、ＭＭレジスタ２４２は未登録状態であるので、ＣＨ０〜３は図９に示すように、それぞれＭＮ０〜３の登録枠１に登録されることとなる。
【０１０１】
次に、ＭＭレジスタ２４２の読み出し中フラグＲＢＳＹを参照し、不揮発性記憶モジュール１１０Ａ〜１４０Ａが読み出し中か否かを判断する（Ｓ２０９）。最初は、ＭＭレジスタ２４２のＲＢＳＹは全て値０、即ち不揮発性記憶モジュール１１０Ａ〜１４０Ａ全てが読み出し中ではないので、まず、ＣＨ０の処理においてＳ２１０に移行する。
【０１０２】
そして、読み出し指示部２４０はＣＨ０に対応する読み出し指示を不揮発性記憶モジュール１１０に転送し（Ｓ２１０）、チャンネルレジスタ２４１の対応するチャンネルのＲＤＴを値１にセットする（Ｓ２１１）。さらに、ＭＭレジスタ２４２の対応する記憶モジュール（ＭＭ０）のＲＢＳＹを値１にセットすると共に、ＭＭ０の読み出し中ＣＨＮの欄に０を設定する（Ｓ２１２）。これは不揮発性記憶モジュール１１０からＣＨ０の楽音データを読み出し中であることを示している。
【０１０３】
以上の処理を、チャンネルレジスタ２４１においてＲＲＱが値１となっているチャンネル、即ちＣＨ０〜３について実行する。
【０１０４】
図１７は、各メモリコントローラの処理を示すフローチャートである。読み出し指示情報を受信すると（Ｓ３００）、該読み出し指示情報に含まれるＰＳＮを読み出し先アドレスとしてリードコマンドを不揮発性メモリバンクに出力する（Ｓ３０１）。その結果、読み出された楽音データをアクセスモジュール２００Ａに転送する（Ｓ３０２）。
【０１０５】
図１８は、メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャートである。コマンド１は、次に物理アドレスの転送開始を通知するコマンドであり、コマンド２は、メモリセルアレイからＩ／Ｏレジスタに物理アドレスに記憶されている楽音データを読み出すことを指示するコマンドである。
【０１０６】
ここで、リードコマンドは、図１８に示す通り、時刻ｔ１にコマンド１を出力した直後に物理アドレスを出力し、その後、コマンド２を出力する。このアドレッシングタイムＴＡは数百ｎ秒程度であるので時間的に無視できる。
【０１０７】
なお、図１８における物理アドレスとは、図４のＰＢＮとページ番号とページ内セクタ選択ビットによって５１２Ｂｙｔｅ単位で指定される物理アドレスである。また、この物理アドレスは、読み出したい楽音データが記憶されているスタート番地（バイト単位）を指定するものであり、該スタート番地から対応するページの最終番地までの楽音データがＴＲ中に対応するＩ／Ｏレジスタに読み出される。その後、転送時間ＴＴ１の間に５１２個のリードクロックを与えることによって、所望の５１２Ｂｙｔｅ分の楽音データがＩ／Ｏレジスタからメモリコントローラに読み出されることとなる。
【０１０８】
さて、読み出し指示部２４０が、ＣＨ０〜３に対応する読み出し指示情報をそれぞれ不揮発性記憶モジュール１１０Ａ〜１４０Ａに発行し終わると、ＣＨ０〜３のＲＤＴが全て値０となる。従って、図１４Ａにおいて、再びＳ２０２からＳ２０３の判断分岐をループするようになる。
【０１０９】
アクセスモジュール２００Ａは、転送された楽音データを読み出し指示部２４０を介して楽音データバッファ２３１に一時記憶する。この時、読み出し指示部２４０は、５１２Ｂｙｔｅ分（１セクタ分）の楽音データを受け取ったことを検知すると、図１４Ｃの割り込みルーチン２に制御を移し、ＭＭレジスタ２４２の対応するＭＭＮのＲＢＳＹを値０にリセットし（Ｓ２３０）、さらに、チャンネルレジスタ２４１の対応するＣＨＮのＲＤＴとＲＲＱを値０にリセットする（Ｓ２３１）。さらに、ＭＭレジスタ２４２の対応するＭＭＮの読み出し中ＣＨＮを取得し（Ｓ２３２）、受信した楽音データを、楽音データバッファ２３１内のどのバッファに一時記憶するかを決定する。
【０１１０】
チャンネルレジスタ２４１のＲＲＱが値０になっているエリアは、次の新たな読み出し指示情報のエリアとして解放されたエリアとなる。因みに、ＲＲＱが値０になっている場合は、Ｓ２３１によりＲＤＴも値０になっているし、Ｓ２３０によりＭＮレジスタ２４２のＲＢＳＹも値０になっている。なお、チャンネルレジスタ２４１への読み出し指示情報の登録は、最上段のエリアから順に使用され、最下段に到達した時点で再び最上に戻るように、即ち巡回的に使用される。
【０１１１】
アクセスモジュール２００Ａは、いずれかの不揮発性記憶モジュールから楽音データを受信すると、該楽音データに付加されたＣＨＮに対応する楽音データバッファ２３１のエリアに、該楽音データを一時記憶する。
【０１１２】
次に、メモリコントローラから楽音データバッファ２３１への楽音データを転送する転送時間ＴＴ２について説明する。ＴＴ２の値は、アクセスモジュール２００Ａの仕様によって決まるパラメータであり、アクセスモジュール２００Ａが外部バスを介して記憶モジュール１００Ａに送信するクロック（図示せず）の周波数に依存する。本実施形態では、アクセスモジュール２００Ａと不揮発性記憶モジュール１１０Ａから１４０Ａのそれぞれを繋ぐ外部バスのバス幅を１Ｂｙｔｅとし、４０ＭＨｚの転送周波数で転送するものとする。この場合、転送時間ＴＴ２は、式（１１）により、約１２．８μ秒となる。
【０１１３】
５１２Ｂｙｔｅ×（２５ｎ秒／Ｂｙｔｅ）＝１２．８μ秒  ・・・（１１）
【０１１４】
読み出し指示情報の転送に応じて、不揮発性記憶モジュール１１０Ａ〜１４０Ａのいずれかから読み出された楽音データは、読み出し指示部２４０を介してＣＰＵ部２３０Ａに転送される。ここでは、不揮発性記憶モジュール１１０Ａから読み出すものとする。図１９は、不揮発性記憶モジュール１１０Ａから外部バス上に読み出された際の楽音データを示すビットフォーマットである。このビットフォーマットに示すように最弱タッチと最強タッチの楽音データが含まれている。ＣＰＵ部２３０Ａでは、楽音データを楽音データバッファ２３１内のバッファ２３１＿０に転送し、図５のマルチプレクサ２３１＿０ｃ（Ｍ＝０）を介してデュアルポートＲＡＭ２３１＿０ａのＣＨ０に対応するエリアに一時記憶する。なお、楽音データの一時記憶に際して、バッファ２３１＿０〜２３１＿３の選択、あるいは各バッファ内のデュアルポートＲＡＭの記憶領域の選択は、後述するＭＭレジスタ２４２に登録されたＣＨＮによって決定する。
【０１１５】
先頭セクタの全サンプル、即ち最弱タッチ及び最強タッチそれぞれについてｓ０〜Ｓ１２７までの５１２ＢｙｔｅがデュアルポートＲＡＭ２３１＿０ａのＣＨ０に対応するエリアに一時記憶され終わると、ＣＰＵ部２３０Ａ内の転送監視部２３５が信号処理部２２０に対して転送完了フラグＴＲＮＦを転送する。なお、ＣＰＵ部のＳ１３０以降の処理と、楽音データバッファ２３１への楽音データ転送（転送監視を含む）とは、並行して実行される。
【０１１６】
Ｓ１３０の後に、信号処理部２２０による発音（Ｓ１３１）を行う。発音の制御では、ＴＰ／０ｘ７Ｆの演算によりレベルデータＬＤを算出して、それをチャンネルアサインテーブル２３２のＬＤに設定し、Ｓ１２５で抽出したＫＯＮをチャンネルアサインテーブル２３２のＫＯＮに設定する。０ｘ７Ｆは、ＴＰの最大値を表す。即ち、レベルデータＬＤは、タッチパラメータＴＰに応じて値０以上１以下の値をとる。信号処理部２２０の動作については後述する。
【０１１７】
さて、Ｓ１２７において、空きチャンネルがなかった場合、即ちチャンネルアサインテーブル２３２内のＳＯＮが全て値１であった場合は、チャンネルアサインテーブル２３２の強制消音フラグＦを値１にセットし（Ｓ１２８）、Ｓ１３２に移行する。
【０１１８】
その後、次に処理すべき楽音データの有無をチェックし（Ｓ１３２）、次に処理すべき楽音データが有ればＳ１２１に戻る。Ｓ１２１では、既に前回の演奏データは処理を完了しているので、無条件でＳ１２２以降の処理に移行する。一方、Ｓ１３２において、次に処理すべき楽音データが無ければ、割り込みルーチンを終了する。この場合には、メインルーチンに戻って、該割り込みルーチンに移行した時に実行していた処理を続行する。
【０１１９】
≪信号処理部２２０の動作≫
次に、信号処理部２２０の動作について、図２０のフローチャートを中心に説明する。
まず、Ｓ４００において式（１２）に従ってイニシャルフラグＩＮＩを設定する。
【０１２０】
ＩＮＩ＝ＫＯＮ＆ＥＥ  ・・・（１２）
【０１２１】
ここで、式（１１）において、ＥＥをＩＮＩの算出要素にした理由について説明する。後述するように全チャンネルが発音中（ＥＥの値が０）の状態において、新たな打鍵を行った場合、ノイズが生じないようにするために、新たな打鍵に対応するチャンネルの急速消音を行ってから、即ちＥＥが値１及びＳＯＮが値０になるのを待ってから、新たな打鍵に対応した発音を開始する必要がある。
【０１２２】
但し、新たな打鍵があってから発音開始されるまでの遅延時間を短くするため、急速消音を指示すると同時に、新たな打鍵に対応するチャンネルアサイン処理（Ｓ１２９）と楽音データの読み出し指示（Ｓ１３０）を行う必要がある。しかし、新たな打鍵がなされる直前に少なくとも新たな打鍵がアサインされるチャンネルのＫＯＮが値１であった場合、新たな打鍵に対応するチャンネルは、ＫＯＮが値０を経ることなく、即ち値１のままで、急速消音に続いて新たな発音制御を行うこととなる。このような場合に、発音開始時刻を決定する要素としてＫＯＮが使えないので、式（１２）においてＥＥをＩＮＩの算出要素にした。なお、式（１２）は、上述の動作に限らず、如何なるケースにおいても適用できる。
【０１２３】
次いでＳ４０１において、ＩＮＩとＴＲＮＦについて判定する。ＣＰＵ部２３０Ａから信号処理部２２０内のＲＡＭに転送完了フラグＴＲＮＦが転送されると、ＩＮＩとＴＲＮＦが共に１となるので、Ｓ４０２に進んで各種パラメータの初期設定を行う。パラメータの初期設定では、信号処理部２２０内のカウンタに保持したｓｎを値０に設定し、信号処理部２２０内のＲＡＭに保持した転送完了フラグＴＲＮＦを値０に設定する。
【０１２４】
さて、Ｓ４０１あるいはＳ４０２の後、補間処理を行う（Ｓ４０３）。補間処理とは、打鍵の強さ、即ちタッチパラメータＴＰの値に応じて楽音の音色を変更する処理である。一般的には、強打鍵時の音色の方が弱打鍵時の音色よりも高域成分に富んだ音色であることが知られている。そこで、本実施形態においては、強打鍵時の音色の代表である最強タッチの楽音データと、弱打鍵時の音色の代表である最弱タッチの楽音データとを、タッチパラメータＴＰに基づいて２点間直線補間することによって、ＴＰに応じて音色を変更できるようにした。具体的には、式（１３）に従った補間処理を行う。なお、ｗは補間後の楽音データの１サンプルの値であり、ｗａは最弱タッチに対応する楽音データの１サンプルの値であり、ｗｂは最強タッチに対応する楽音データの１サンプルの値であり、αは値０〜１の補間係数である。
【０１２５】
ｗ＝ｗｂ×α＋ｗａ（１−α）  ・・・（１３）
但し、α＝ＴＰ／０ｘ７Ｆ
【０１２６】
補間処理の後に、式（１４）に従ったエンベロープ（以下、「ＥＮＶ」という）の算出を行う（Ｓ４０４）。
【０１２７】
ＥＮＶ＝ＬＤ×ＲＥＬ  ・・・（１４）
【０１２８】
但し、ＲＥＬは次のように決定される。
（ａ）Ｆ＝１の場合は、
ＲＥＬ＝ｇ
（ｂ）Ｆ＝０かつＫＯＮ＝０かつＰＤ＝０の場合は
ＲＥＬ＝ＲＥＬ＿ｏｌｄ×０．５
（ｃ）上記以外の場合は、
ＲＥＬ＝１
【０１２９】
なお、ＲＥＬは減衰パラメータであり、ＲＥＬ＿ｏｌｄは前サンプリング期間のＲＥＬであり、ｇは減衰変数である。
【０１３０】
ｇはＦ＝１がＣＰＵ部２３０Ａから転送された時点のサンプリング周期において０．８７５、次のサンプリング期間において０．７５０、以降０．１２５ずつ小さくなり、値０になった時点以降は値０を維持する時変パラメータとする。このように決めておけばＦ＝１が転送されてから８サンプルでＥＮＶは値０に到達する。また、ＲＥＬ＿ｏｌｄは信号処理部２２０内のＲＡＭに保持され、式（１４）の実行毎にＲＥＬに更新されるものであり、ＲＥＬは指数関数的に０に漸近することとなる。
【０１３１】
図２１と図２２とは、ＥＮＶの時間変化を示している。図２１は、ＰＤが値０の場合、即ちサスティンペダルがＯＦＦされている場合である。この場合には、ＫＯＮが値１の間は前述の（ｃ）のようにＥＮＶは変化せず、値０になった時、即ち離鍵した時以降にＥＮＶは指数関数的に減衰することとなる。図２２は、ＰＤが値１の場合、即ちサスティンペダルがＯＮされている場合である。この場合は、ＫＯＮが値１になっても前述した（ｃ）の状態が続き、打鍵時のＥＮＶの値のままとなる。図２１及び図２２のいずれの場合においても、強制消音の指示があった時、即ちＦ＝１となった時点で、前述した（ａ）の場合となり、ＲＥＬは時変パラメータｇとなる。従って、破線で示す８サンプリング周期でＥＮＶは値０に直線的に減衰することとなる。なお、１サンプリング周期は式（１５）に従う。
【０１３２】
１／サンプリング周波数（４４．１ｋＨｚ）≒約２２．７μ秒  ・・・（１５）
【０１３３】
従って、８サンプリング周期は約１８２μ秒となる。
【０１３４】
ＥＮＶの算出の後、ＥＮＶと閾値ＥＮＶｔｈとの比較を行う（Ｓ４０５）。ＥＮＶｔｈは、聴感上十分聞こえないレベルの値である。Ｓ４０５でＥＮＶがＥＮＶｔｈ未満になった場合に、ＣＰＵ部２３０Ａ内のチャンネルアサインテーブル２３２内の対応するチャンネルのＥＥを値１に、ＳＯＮを値０に更新する（Ｓ４０６）。なお、ＳＯＮが値０に更新したチャンネルは、以降空きチャンネルとして管理される。
【０１３５】
次に、式（１６）に基づきエンベロープ処理後のデジタルデータＷを求める（Ｓ４０７）。
【０１３６】
Ｗ＝ｗ×ＥＮＶ  ・・・（１６）
【０１３７】
なお、前述した通り楽音データはピアノの音を鍵盤毎にデジタル録音したデータであるので、ＥＮＶのレベルが時間的に変化しなくても、Ｗの波高値は時間的に減衰するので聴感上は減衰して聞こえる。
【０１３８】
次に、ＷＥが値１、即ち任意の打鍵に対応する楽音データが最終サンプル（ｓ１７６３９９９サンプル）まで到達するか、あるいはＥＥが値１、即ちＥＮＶが聴感上聞こえないレベルに到達すると（Ｓ４０８）、もはや信号処理を続けて出力する必要がない。従って、セクタ番号ｓｎのインクリメントや選択フラグＤのトグル動作が不要となるので、Ｓ４１４にジャンプする。それ以外の場合にはＳ４０９に移行し、ｓｎのインクリメントを行う。なお、ウェーブエンドフラグＷＥは図１０に示すように楽音データバッファ２３１から取得した楽音データのｂ０に記録されているフラグであり、ｓ１７６３９９９サンプルのみＷＥが値１である。ｂ０が値０の楽音データをＳ４０３において読み出すまでは、対応するチャンネルのＷＥは値１のままである。
【０１３９】
Ｓ４１０において、セクタ番号ｓｎのインクリメントの結果ｓｎが値９６になった場合はＳ４１１に進む。そして、次の楽音データ１セクタ分を読み出すために、チャンネルアサインテーブル２３２内の対応するチャンネルのＳＣをインクリメントすると共に楽音データ読出要求フラグＤＱを値１に設定する。ｓｎが９６以外ならこの処理を行うことなくＳ４１２に進む。
【０１４０】
次に、Ｓ４１２において、ｓｎが１２７、即ち楽音データ１セクタ分の中の最後のサンプルに到達したか否かを判断し、到達した場合は選択フラグＤのトグル、即ち現在の値と逆の論理に変更する。この操作においては、チャンネルアサインテーブル２３２内の対応するチャンネルのＤを、例えば、０から１に切換えると共に、楽音データバッファ２３１のデマルチプレクサ、例えば、２３１＿０ｄの入力を切り換える。これにより、楽音データの読み出し元を、デュアルポートＲＡＭ２３１＿０ａからデュアルポートＲＡＭ２３１＿０ｂに切り替える。
【０１４１】
次に、Ｓ４１４において、信号処理部２２０が内部保持しているＣＨＮをインクリメントし、ＣＨＮが０でなければ次のチャンネルの処理に移行すべくＳ４０１に戻る。但しＣＨＮは５ビットのカウンタに保持されＣＨ０〜ＣＨ３１を巡回的に更新する。Ｓ４１５でＣＨＮが値０になった時、即ちＣＨ３１までの処理が終了した時、ミキシング処理（Ｓ４１６）に移行する。
【０１４２】
ミキシング処理では、ＣＨ０〜３１までのＷｎを式（１７）に基づいてミキシング処理する。
【０１４３】
Ｗｘ＝（Ｗ０＋Ｗ１＋・・・・＋Ｗ３１）／３２  ・・・（１７）
【０１４４】
ここで、Ｗｎ（ｎはＣＨＮに対応する０〜３１の整数）は任意のチャンネルのＷとし、Ｗｘはミキシング結果である。ミキシングの後Ｓ４１７において更にエフェクト処理を行う。
【０１４５】
図２３は、１サンプリング周期あたりの信号処理を示すタイムスロット図である。図２３において、左側が時刻の早い方であり、ＣＨ０〜３１までの補間処理やレベル制御の後、ＣＨ０〜３１までの楽音のミキシング処理（ＭＩＸ）、及びリバーブやコーラスなどのエフェクト処理（ＥＦＦＥＣＴ）がなされる。これらの一連の処理は、サンプリング周期である２２．７μ秒毎に巡回して実行されることとなる。
【０１４６】
以上説明した信号処理は、１サンプリング周期（２２．７μ秒）毎に繰り返して実行され、２２．７μ秒毎に処理後の楽音データが入出力部２１０ＡのＤＡコンバータにてデジタル−アナログ変更がなされ、その結果が所望の楽音としてラインアウト端子を介して外部に出力される。該楽音は、外部のアンプとスピーカを介してピアノの演奏音が得られる。
【０１４７】
さて、図１３ＡのＣＰＵ部２３０Ａのメインルーチンの説明に戻り、Ｓ１０２以降の処理について説明する。ＣＰＵ部２３０ＡはＳ１０２においてチャンネルアサインテーブル２３２において全てのチャンネルのＦを調べる。Ｆが値１のチャンネルの中でＥＥが値１のチャンネルがあれば、該チャンネルのＦを値０にクリアし（Ｓ１０３）、該チャンネルにチャンネルアサイン処理を行う（Ｓ１０４）。なお、ＥＥのクリアは、前述したとおり信号処理部２２０がＳ４０２にて行う。
【０１４８】
次に、楽音データの読み出し要求（Ｓ１０５）と信号処理部２２０の発音制御（Ｓ１０６）を行う。Ｓ１０５とＳ１０６とは、前述したＳ１３０とＳ１３１と同じ処理である。
【０１４９】
次に、Ｓ１０７において、ＤＱが値１のチャンネルをサーチし、あればＳ１０８において該チャンネルの楽音データの読み出し要求を行う。なお、Ｓ１０７やＳ１０２におけるチャンネルアサインテーブル２３２のサーチはＣＨ０から昇順に行う。
【０１５０】
（２）発音遅延時間に関する説明
以上の処理を踏まえ、さまざまな打鍵方法別に、図２４Ａ〜図２４Ｃに示すタイムチャートと、図６Ａ〜図６Ｃに示すチャンネルアサインテーブル２３２を用いて、打鍵から楽音が発音されるまでの動作、及び発音遅延時間について説明する。
【０１５１】
（２−１）離散的な打鍵の場合
図２４Ａは離散的な打鍵を行った場合の動作を説明したタイムチャート、図６Ａは該打鍵に対応するチャンネルアサインテーブル２３２内のパラメータの変化を表したものである。
まず、無音状態からマスターキーボード３００によってＮＮが０ｘ１９、０ｘ１Ｃ、０ｘ１Ｅ、０ｘ２０に対応する４つの鍵盤が時刻ｔ０に同時に打鍵され、その後、数十μ秒ずつの時間間隔をおいて、ＮＮが０ｘ２５の鍵盤、ＮＮが０ｘ２９の鍵盤、最後にＮＮが０ｘ２Ｃと０ｘ２Ｆの２つの鍵盤が打鍵される場合について説明する。各打鍵は、前述したＣＰＵ部２３０Ａのチャンネルアサイン処理により、それぞれＣＨ０〜７に割り当てられ、打鍵タイミングにＣＰＵ部２３０Ａの処理遅延を付加したタイミングで、ＣＨ０〜７の読み出し要求が読み出し指示部２４０に出力される。さらに、読み出し指示部２４０が前述したように不揮発性記憶モジュール群のアクセス状況に応じて、読み出し指示情報を記憶モジュール１００Ａに転送する。
【０１５２】
不揮発性メモリバンクからのメモリコントローラへの楽音データの読み出し中、及びメモリコントローラからアクセスモジュール２００Ａへのデータ転送中の間は、アクセスモジュール２００Ａは、次の読み出し指示情報を転送できない。このため、記憶モジュール１００Ａへの読み出し指示情報の転送タイミングは、図２４Ａに示すタイミングで、ＣＨ０〜７の読み出し指示がアクセスモジュール２００Ａから記憶モジュール１００Ａに転送される。この転送タイミングに応じて、それぞれのメモリバンク１１２〜１４２においてリードタイムＴＲの間にメモリセルアレイよりＩ／Ｏレジスタに読み出される。
【０１５３】
その後、楽音データは、転送時間ＴＴ１の間にＩ／Ｏレジスタからメモリコントローラに読み出され、転送時間ＴＴ２の間にメモリコントローラから読み出し指示部２４０を介して楽音データバッファ２３１に一時記憶されることとなる。
【０１５４】
信号処理部２２０は、楽音データバッファ２３１に記憶された楽音データを用いて前述した通り楽音の生成処理がなされる。信号処理部２２０は、１サンプリング周期毎にＣＨ０〜３１までの処理を時分割にて行う。即ち２２．７μ秒毎に各チャンネルの楽音データがｓ０から順番に使用されることとなる。
【０１５５】
ＣＨ０〜３においては、図２４Ａの時刻ｔ２から始まる最初のタイムスロットにおいて、ｓ０が使用されることとなる。前記タイムスロットから４タイムスロット遅れてＣＨ４、５のｓ０が使用され始め、さらに３タイムスロット遅れてＣＨ６、７が使用され始める。
【０１５６】
各チャンネルにおいて、ｓ０を使用したタイムスロットから数えて１２７番目のタイムスロットで５１２Ｂｙｔｅ分の楽音データを全て使いきる。このため前述した通り、ｓｎが９６になった時刻ｔ４で、あらかじめ次の５１２Ｂｙｔｅ分の楽音データを取得しておく必要がある。なお、次の５１２Ｂｙｔｅ分の楽音データを取得するタイミングは、必ずしもｓｎが９６になったタイミングである必要はなく、次の５１２Ｂｙｔｅ分の楽音データの処理に間に合うように、該５１２Ｂｙｔｅ分の楽音データを取得できれば、該５１２Ｂｙｔｅ分の楽音データを取得するタイミングは、別の値により規定されるタイミングであってもよい。
【０１５７】
これに対応して、図２４Ａの破線で示したタイミングで、ＣＨ０〜７の読み出し指示がアクセスモジュール２００Ａから記憶モジュール１００Ａに転送される。読み出し指示の間隔は、基本的にタイムスロットの間隔、即ち２２．７μ秒毎になる。
【０１５８】
次に、発音遅延時間について説明する。
発音遅延時間とは、打鍵時刻からｓ０に対応する楽音を生成するまでの時間をいう。図２４Ａの場合は、図面によればＣＨ４の発音遅延時間は、時刻ｔ１〜ｔ３の期間で最大であり、該発音遅延時間は１５０μ秒以下であると言える。これは発音遅延時間の許容範囲である１ｍ秒より十分短い値であるので、図２４Ａの場合においては、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
【０１５９】
（２−２）集中的な打鍵の場合
次に、３２チャンネル全てを使用して一度に発音する場合について説明する。
図２４Ｂは、マスターキーボード３００により３２個の鍵盤を時刻ｔ０に同時に打鍵した場合の動作を説明するためのタイムチャートであり、図６Ｂはこの打鍵に対応するチャンネルアサインテーブル２３２内のパラメータの変化を表したものである。なお、このような打鍵方法は通常の演奏ではあまりなされない方法である。
【０１６０】
このような場合においては、例えば、図６Ｂに示すように、ＮＮが０ｘ２８〜０ｘ４７に対応する３２個の鍵盤が同時に打鍵される。この打鍵は、前述したＣＰＵ部２３０Ａのチャンネルアサイン処理によりＣＨ０〜３１に割り当てられ、打鍵タイミングにＣＰＵ部２３０Ａの処理遅延を付加したタイミングで、ＣＨ０〜３１の読み出し要求が読み出し指示部２４０に出力され、さらに該読み出し要求に対応する読み出し指示情報がアクセスモジュール２００Ａから記憶モジュール１００Ａに転送される。以降は、図２４Ｂに示すように、楽音データが楽音データバッファ２３１に転送され、楽音を生成することとなる。
【０１６１】
この場合、最も発音遅延時間が長くなるのはＣＨ２８〜３１であり、発音遅延時間は時刻ｔ０〜ｔ１までの期間、即ち図２４Ｂの図面上６５０μ秒以下であると言える。これは発音遅延時間の許容範囲である１ｍ秒より短い値であるので、図２４Ｂの場合においても、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
【０１６２】
（２−３）急速消音の後に集中的な打鍵を行う場合
最後に、急速消音の後に３２チャンネル全てを使用して一度に発音する場合について、図２４Ｃと図６Ｃを用いて説明する。この場合は、例えば（２−２）に示した打鍵、即ち図６Ｃに示したようにＮＮが０ｘ２８〜０ｘ４７に対応する３２個の鍵盤が時刻ｔ０に打鍵された状態のままで、新たに時刻ｔ１にＮＮが０ｘ４８〜０ｘ６７に対応する３２個の鍵盤が打鍵された場合、即ち最大発音チャンネル数（３２チャンネル）を超えた発音となる。
【０１６３】
このように最大発音チャンネル数を超えた発音制御をする場合は、既に発音されている３２チャンネル分全てを前もって急速消音し、該３２チャンネル分のＥＥを値１にする。そして、聴感上聞こえないレベルまで消音した後に、該３２チャンネルに新たな打鍵を割り当てる必要がある。このような場合が最も発音遅延時間が長くなる場合である。
【０１６４】
このような急速消音を行う期間は、図２４Ｃにおいて、時刻ｔ１の打鍵直後の８サンプリング周期に相当する１８２μ秒の期間である。図６Ｃにおいて全チャンネルは、既に打鍵されていた鍵盤が離鍵されることなく、かつ、発音された状態において、新たな打鍵が行われたチャンネルとなるので、ＫＯＮ、ＳＯＮ共に値１から始まることとなる。そして信号処理部２２０の急速消音処理によりＥＥが値１に、ＳＯＮが値０になり、その結果、ＣＰＵ部２３０Ａのチャンネルアサイン処理によりＣＨ０〜３１の読み出し指示情報が記憶モジュール１００Ａに転送されることとなる。それ以降のタイムチャートは、図２４Ｂに示すタイムチャートと同様である。
【０１６５】
この場合、最も発音遅延時間が長くなるのはＣＨ２８〜３１であり、該発音遅延時間は時刻ｔ１〜ｔ３までの期間、即ち図２４Ｃの図面上８５０μ秒以下であると言える。これは発音遅延時間の許容範囲である１ｍ秒より短い値であるので、本実施形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
【０１６６】
以上のように、第１実施形態の楽音生成システムでは、不揮発性メモリバンク１１２〜１４２毎に楽音データを記録することにより多重化しておき、読み出し指示部２４０が、アクセスモジュール２００Ａからの読み出し指示に従って複数の不揮発性メモリバンクから並列的に楽音データを読み出すことができる。このため、本実施形態の楽音生成システムは、楽音を生成するシステムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムに適用することができる。つまり、本実施形態の楽音生成システムでは、複数のデータの読み出し時に複数の不揮発性メモリバンクから並列的にデータを読み出すことができるので、発音遅延時間をその許容範囲である１ｍ秒よりも短くすることができる。即ち、本実施形態の楽音生成システムでは、上記のように処理を行うことで、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用することができるので、本発明により、低価格かつ小型の楽音信号発生装置を実現することが可能となる。
【０１６７】
［第２実施形態］
次に、第２実施形態について、説明する。
＜２．１：楽音生成システムの構成＞
図２５は、第２実施形態における楽音生成システムを示すブロック図である。本実施形態の楽音生成システムは、記憶モジュール群１０００と、アクセスモジュール２０００とを含んで構成される。記憶モジュール群１０００は、記憶モジュール１１００〜１３００を含み、アクセスモジュール２０００は、発音指示分類部３０００とアクセスモジュール２１００〜２３００を含む。
【０１６８】
記憶モジュール１１００〜１３００の各々は、第１実施形態で説明した記憶モジュール１００Ａと基本的に同一である。相違点は、記憶モジュール１００Ａがピアノ音の全音域（最低音〜最高音）を記憶しているのに対して、記憶モジュール１１００〜１３００は、全音域を分割的に記憶している点である。
【０１６９】
アクセスモジュール２１００〜２３００の各々は、第１実施形態で説明したアクセスモジュール２００Ａと基本的に同一である。相違点は、アクセスモジュール２００Ａがピアノ音の全音域（最低音〜最高音）に対応する発音指示を処理するのに対して、アクセスモジュール２１００〜２３００は、全音域に対応する発音指示を分割的に処理する点である。ここで、発音指示とは、第１実施形態における打鍵データ（図１６）に対応する。なお、ペダルデータは、アクセスモジュール２１００〜２３００に共通に転送されるものとする。
【０１７０】
図２６は、楽音データの音名コードと、記憶モジュール１１００〜１３００に分割的に記憶する楽音データとの対応関係を示す表である。図２７は、記憶モジュール１１００の記録状態を表すメモリマップである。
＜２．２：楽音システムの動作＞
以上のように構成された、本実施形態の楽音生成システムの動作について説明する。
【０１７１】
マスターキーボード３００から転送された発音指示は、発音指示分類部３０００により分類される。Ａ−１〜Ｄ２の発音指示はアクセスモジュール２１００に、Ｄ＃２〜Ｇ４の発音指示群はアクセスモジュール２２００に、Ｇ＃４〜Ｃ７の発音指示群はアクセスモジュール２３００に、それぞれ、転送され、それぞれの発音指示群は、第１実施形態で説明したアクセスモジュール２００Ａと同様の処理が施され、記憶モジュール群１０００に対して読み出し指示として出力される。ここで、Ａ−１〜Ｄ２、Ｄ＃２〜Ｇ４、Ｇ＃４〜Ｃ７を、それぞれ音高グループ０、音高グループ１、音高グループ２とする。これらの音高グループは同じ音高を含まない、すなわち排他的なものである事が好ましい。但し、冗長ではあるが、各音高グループが同じ音高を含んでも構わない。その場合は、同じ音高に対する発音指示は、例えば音高グループ番号の小さい方を優先的に行えばよい。
【０１７２】
アクセスモジュール２１００は、最大３０鍵分の発音指示に対する処理を行う、すなわち処理するチャンネル数は３０ＣＨ以下となるので、アクセスモジュール２１００が記憶モジュール１１００から楽音データを読み出し、所望の楽音を生成するタイムチャートは、図２４Ａあるいは図２４Ｂに対応する。アクセスモジュール２２００、２３００も同様である。すなわち、各アクセスモジュールは発音遅延が１ｍＳｅｃ以内となるように処理することが可能となる。また、第１実施形態では、３２ＣＨ以上の発音指示がなされた場合、図２４Ｃに示すような強制消音を伴う場合があるが、第２実施形態では、アクセスモジュール２１００が最大３０鍵分、アクセスモジュール２２００、２３００がそれぞれ最大２９鍵分の処理、すなわちいずれも３２ＣＨ未満の処理ですむ為、強制消音が不要であり、聴感上好ましい。
【０１７３】
ここで、発音指示分類部３０００による発音指示の分類について補足する。第２実施形態では、マスターキーボード３００の８８鍵を３分割したが、例えば８鍵ずつ１１分割するように拡張してもよい。この場合、アクセスモジュールと記憶モジュールとの組が１１組必要となり回路規模が増大する。但し、各組８ＣＨずつの処理ですむため、図２４Ａ、Ｂによれば不揮発性記憶モジュールは１つで発音遅延１ｍＳｅｃを満足できる。つまり、楽音データの記憶容量を合理化することができる。
【０１７４】
以上のように、本実施形態の楽音生成システムでは、発音指示分類部３０００が発音指示を音名に基づいて分類（グルーピング）し、１つのグループのチャンネル数が８より大きい場合は、記憶モジュール内の複数の不揮発性記憶モジュール間で楽音データを多重化して記録し、アクセスモジュール内の読み出し指示部が楽音データを並列読み出しするようにしたので、発音遅延を１ｍＳｅｃ以内におさえることが可能となる。また、本実施形態の楽音生成システムでは、１つのグループのチャンネル数が８以下の場合は、記憶モジュール内の不揮発性記憶モジュールの個数が１つ、すなわち楽音データを多重記録しなくても発音遅延を１ｍＳｅｃ以内におさえることが可能となる。
【０１７５】
［他の実施形態］
なお、第１実施形態及び第２実施形態においては、ピアノの音をデジタル録音したデータを楽音データとして不揮発性メモリバンク１１２〜１４２、１１１２〜１１４２に記録したが、これに限定されることはなく、例えば、ピアノ以外の楽器音や音声、あるいはその他のデータを記憶しても構わない。また、楽音データは、デジタル録音したデータではなく人工的に作られたデータであってもよい。また、ＭＰ３などの圧縮技術によって圧縮されたデータであっても構わない。ただし、その場合は信号処理部２２０に該圧縮データを伸張する処理、即ちデコード処理を実行させる必要がある。また、打鍵強度に対応して２種類の楽音データを予め記憶したが、１種類あるいは３種類以上であっても構わない。ただし、１種類の場合は、信号処理部２２０による補間処理は不要であり、３種類以上の場合は該補間処理の方法を３点間直線補間などに拡張すればよい。また、補間処理ではなくフィルタリング処理を用いても構わない。
【０１７６】
なお、上記実施形態では、１つの鍵盤に対応する楽音データを約４０秒分としたが、それに限定されることはなく、またＮＮに応じて楽音データの時間長を変えてもよい。通常ピアノの場合は低音ほど発音時間が長いので、低音側の楽音データの時間長を比較的長めにして、高音側の楽音データの時間長を比較的短めにした方が記憶容量を合理化でき好ましい。また、上記実施形態では、楽音データの多重化に際して、不揮発性メモリバンク１１２〜１４２、１１１２〜１１４２に同一の楽音データを記録するようにしたが、聴感上同じように聞こえるのであれば、不揮発性メモリバンク１１２〜１４２間あるいは不揮発性メモリバンク１１１２〜１１４２間で楽音データの値が多少違っていても差し支えない。
【０１７７】
記憶モジュール１００Ａ、記憶モジュール群１０００は、メモリカードのようなリムーバブル記憶装置であってもよいし、電子楽器などの装置に組み込まれたメモリ部であってもよい。また、記憶モジュール１１００〜１３００、不揮発性記憶モジュール１１０Ａ〜１４０Ａ、不揮発性記憶モジュール１１１０〜１３４０のそれぞれが、メモリカードのようなリムーバブル記憶装置であってもよい。また、アクセスモジュール１５０、２０００は電子楽器などの装置であってもよいし、電子楽器などの装置に組み込まれたアクセス回路部であってもよい。
【０１７８】
第１実施形態においては不揮発性記憶モジュールの数を４個としたが、それ以外の数であっても構わない。不揮発性記憶モジュールの数が多いほど、より発音遅延時間を短くすることができる。また、セクタサイズ即ち１回あたりの楽音データの読み出しサイズを５１２Ｂｙｔｅとしたが、その他のサイズであってもよい。該サイズが小さいほど楽音データバッファのＲＡＭ容量を合理化できるが、必要以上に小さくすると楽音生成処理が破綻する。また、１つの不揮発性記憶モジュール内に複数不揮発性メモリバンクを含んでも構わない。
【０１７９】
なお、第１実施形態においては、図１４ＡのＳ２０２〜Ｓ２０８に示す通り、不揮発性記憶モジュール群のアサイン状況に応じて読み出し指示情報の転送先の不揮発性記憶モジュールを決定するようにしたが、例えば、下記（ａ）〜（ｄ）に示すようにＣＨＮとＭＭＮとの関係を固定化しても構わない。
（ａ）ＣＨ０、４、８、１２、１６、２０、２４、２８・・・ＭＭ０（不揮発性記憶モジュール１１０Ａ、１１０Ｂ）
（ｂ）ＣＨ１、５、９、１３、１７、２１、２５、２９・・・ＭＭ１（不揮発性記憶モジュール１２０Ａ、１２０Ｂ）
（ｃ）ＣＨ２、６、１０、１４、１８、２２、２６、３０・・・ＭＭ２（不揮発性記憶モジュール１３０Ａ、１３０Ｂ）
（ｄ）ＣＨ３、７、１１、１５、１９、２３、２７、３１・・・ＭＭ３（不揮発性記憶モジュール１４０Ａ、１４０Ｂ）
【０１８０】
なお、上記実施形態では、楽音データをページ内に連続的に配置したが、配置の規則性を記憶モジュール１００Ａやアクセスモジュール２００Ａが認識していれば、不連続であっても構わない。また、第１実施形態では、ＰＢ０を先頭ブロックとして楽音データの最低音から順に連続的に配置したが、配置の規則性を記憶モジュール１００Ａやアクセスモジュール２００Ａが認識していれば、ＰＢ０が先頭ブロックでなくてもよく、また不連続であっても構わない。
【０１８１】
なお、上記実施形態では、不揮発性メモリバンクをフラッシュメモリとしたが、本発明はその他の不揮発性メモリを用いた場合に適用できる。
【０１８２】
上記実施形態では、不揮発性メモリバンクに楽音データ特性情報とメモリ構成情報とを保持するようにしているが、これらの情報を保持する別の不揮発性メモリを設けておいてもよい。あるいは、前記メモリ構成情報は、予め規格化された情報として扱っても構わない。
【０１８３】
なお、メモリコントローラ１１１Ａ〜１４１Ａは、アクセスモジュール２００Ａ側にあっても構わない。その場合、不揮発性メモリバンク１１２〜１４２は、それぞれが１つのメモリチップにパッケージされたものであってもよいし、あるいは不揮発性メモリバンク１１２〜１４２の中の２個以上をまとめて１つのメモリチップにパッケージされたものであってもよい。
【０１８４】
なお、上記実施形態では、マスターキーボード３００から演奏情報を入力したがそれ以外の形態の入力コントローラ、例えば弦を弾くことによって演奏データを出力するギター型のコントローラや、物を叩くことによって演奏データを出力するスティック型のコントローラ、あるいは加速度センサを備えたもので、それを振る動作に従って演奏データを出力するタイプのコントローラであってもよい。また、パーソナルコンピュータなどの装置から、あるいはネットワークを介してスタンダードＭＩＤＩファイルのような演奏データをアクセスモジュール２００Ａに入力するようにしても構わない。
なお、上記実施形態で説明した楽音生成システムにおいて、各ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。
なお、ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る楽音生成システムをハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
また、上記実施形態において、アクセスモジュールと記憶モジュールとは、別装置である場合について説明したが、これに限定されることはなく、アクセスモジュールと記憶モジュールとは、１つの装置内に構成されるものであってもよい。また、アクセスモジュールは、アクセス装置を含む概念であり、記憶モジュールは、記憶装置を含む概念である。
【産業上の利用可能性】
【０１８５】
本発明にかかる不揮発性記憶システムおよび楽音生成システムは、不揮発性メモリを楽音データ用のメモリとして使用する方法を提案したものであり、電子楽器やカラオケ装置、あるいは楽音生成機能（例えばサウンドカード）を有するパーソナルコンピュータや携帯電話などにおいて有益である。
【符号の説明】
【０１８６】
１００Ａ、１１００、１２００、１３００  記憶モジュール
１１０Ａ、１２０Ａ、１３０Ａ、１４０Ａ  不揮発性記憶モジュール
１１１Ａ、１２１Ａ、１３１Ａ、１４１Ａ  メモリコントローラ
１１２、１２２、１３２、１４２  不揮発性メモリバンク
１１３、１２３、１３３、１４３  Ｉ／Ｏレジスタ
１１４、１２４、１３４、１４４  メモリセルアレイ
２００Ａ、２０００、２１００、２２００、２３００  アクセスモジュール
２１０、４１０、５１０  入出力部
２２０  信号処理部
２３０、４２０、５２０  ＣＰＵ部
２３１  楽音データバッファ
２３１＿０〜２３１＿３  バッファ
２３１＿０ａ、２３１＿０ｂ、２３１＿１ａ、２３１＿１ｂ  デュアルポートＲＡＭ
２３１＿２ａ、２３１＿２ｂ、２３１＿３ａ、２３１＿３ｂ  デュアルポートＲＡＭ
２３１＿０ｃ、２３１＿１ｃ、２３１＿２ｃ、２３１＿３ｃ  マルチプレクサ
２３１＿０ｄ、２３１＿１ｄ、２３１＿２ｄ、２３１＿３ｄ  デマルチプレクサ
２３２  チャンネルアサインテーブル
２３３Ａ  ＮＮテーブル
２３４  演奏データバッファ
２３５  転送監視部
２３６  ファイルシステム部
２３７  多重化部
２４０  読み出し指示部
２５０、４３０、５３０  書き込み指示部
３００  マスターキーボード
３１０  インターネット
４００、５００  データ書き込みモジュール
１０００  記憶モジュール群
３０００  発音指示分類部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１Ａ】
2010137312.tif 000038
【図１Ｂ】
2010137312.tif 000039
【図２】
2010137312.tif 000040
【図３】
2010137312.tif 000041
【図４】
2010137312.tif 000042
【図５】
2010137312.tif 000043
【図６Ａ】
2010137312.tif 000044
【図６Ｂ】
2010137312.tif 000045
【図６Ｃ】
2010137312.tif 000046
【図７】
2010137312.tif 000047
【図８】
2010137312.tif 000048
【図９】
2010137312.tif 000049
【図１０】
2010137312.tif 000050
【図１１】
2010137312.tif 000051
【図１２】
2010137312.tif 000052
【図１３Ａ】
2010137312.tif 000053
【図１３Ｂ】
2010137312.tif 000054
【図１４Ａ】
2010137312.tif 000055
【図１４Ｂ】
2010137312.tif 000056
【図１４Ｃ】
2010137312.tif 000057
【図１５】
2010137312.tif 000058
【図１６】
2010137312.tif 000059
【図１７】
2010137312.tif 000060
【図１８】
2010137312.tif 000061
【図１９】
2010137312.tif 000062
【図２０】
2010137312.tif 000063
【図２１】
2010137312.tif 000064
【図２２】
2010137312.tif 000065
【図２３】
2010137312.tif 000066
【図２４Ａ】
2010137312.tif 000067
【図２４Ｂ】
2010137312.tif 000068
【図２４Ｃ】
2010137312.tif 000069
【図２５】
2010137312.tif 000070
【図２６】
2010137312.tif 000071
【図２７】
2010137312.tif 000072
【国際調査報告】
2010137312.tif 000073
2010137312.tif 000074
2010137312.tif 000075
2010137312.tif 000076