(第1の実施の形態)
図1A,図1Bは、本発明の第1の実施の形態における楽音生成システムを示すブロック図である。楽音生成システムは、図1Aに示す記憶モジュール100Aと、図1Bに示すアクセスモジュール200Aとを含んで構成される。記憶モジュール100Aは不揮発性記憶モジュール110A,120A,130A,140Aを1つの筐体内に納め、アクセスモジュールに装着して使用するものである。不揮発性記憶モジュール110A,120A,130A,140Aは夫々メモリコントローラ111A,121A,131A,141Aと、不揮発性メモリバンク112,122,132,142とを含む。
アクセスモジュール200Aは、入出力部210A、信号処理部220、CPU部230A、読み出し指示部240を含み、32チャンネル分の楽音を同時に出力できるようにしたものである。以下、チャンネル番号をCH0〜CH31とする。CPU部230Aは楽音データバッファ231、チャンネルアサインテーブル232、NNテーブル233A、演奏データバッファ234、及び転送監視部235を含む。
次に不揮発性記憶モジュール110A〜140Aの各部について詳細に説明する。不揮発性メモリバンク112〜142はフラッシュメモリであり、夫々I/Oレジスタ113,123,133,143とメモリセルアレイ114,124,134,144を含む。I/Oレジスタ113〜143は、夫々4096Byte+128Byteの容量を有するRAMである。メモリセルアレイ114〜144は、夫々1024個の物理ブロックを有する。物理ブロックはフラッシュメモリの消去単位である。尚、以降、物理ブロックをPB、物理ブロック番号をPBN、物理セクタ番号をPBN、物理ブロック番号PBNが例えば0の物理ブロックをPB0とする。
図2は、不揮発性メモリバンク112〜142のメモリセルアレイの構造を説明した説明図である。不揮発性メモリバンク112〜142は夫々物理ブロックPB0〜PB1023を有している。また各物理ブロックは夫々256ページ(P0〜P255)から構成される。
図3は、各ページ内の記録フォーマットについて、物理ブロックPB0のページP0を例に説明した図である。全物理ブロックの各ページは、4096Byteのデータ領域と128Byteの冗長領域とから成る。本実施の形態において、データ領域は8セクタに分割される。各セクタは512Byteの容量を持つ。また冗長領域は使用しない。尚記録されているデータの詳細については後述する。
図4は、物理セクタ番号PSNを示すビットフォーマットである。図4において、ビットb0〜b2はページ内セクタ選択ビットであり、b3〜b10はページ番号、b11〜b20は物理ブロック番号を示している。
ページ内セクタ選択ビットは、ページをセクタサイズで割り算した商に相当するビットである。本実施の形態は、ページサイズを4096+128Byte、セクタサイズを512Byteとした場合、即ち図3に示すように1ページが8個のセクタに分割される場合であり、これらを前述した物理アドレスの下位3bitによって選択する。尚ページサイズやセクタサイズは前述した値に限定される必要はなく、その値に応じてページ内セクタ選択ビットを可変としても構わない。
メモリコントローラ111A〜141Aは、アクセスモジュール200Aから供給された読み出し指示情報を、不揮発性メモリバンク112〜142へのリードコマンドに変換するためのインターフェース回路やバッファ等を備えたものである。該インターフェース回路は市販のメモリカード(例えばSDカード)にも搭載されているものであるので、説明を省略する。
次にアクセスモジュール200Aの各ブロックについて、図1Bを用いて詳細に説明する。演奏データは、外部のマスターキーボード300の打鍵などの操作に応じて生成され、入出力部210Aを介してCPU部230Aに取り込まれる。入出力部210Aはマスターキーボード300から演奏データを入力するための端子と、信号処理部220が生成した楽音をデジタル−アナログ変換するDAコンバータと、該変換後の楽音を増幅するアンプ部、及びその出力を外部に出力するためのラインアウト端子を含む。
信号処理部220は、CPU部230Aから供給された最大で32チャンネル分の楽音データの補間演算やレベル制御を行った後に、発音チャンネルのミキシングや、リバーブなどのエフェクト処理を行うことにより楽音を生成するブロックである。信号処理部220はデジタルシグナルプロセッサ(以下、DSPという)、該DSPのプログラムを格納したROM、及びエフェクタ処理に必要な遅延素子のために、あるいはパラメータを一時記憶するために必要なRAMなどによって構成される。
CPU部230Aは、入出力部210Aが受信した演奏データについてチャンネルアサイン処理を行い、読み出し指示部240に対して不揮発性記憶モジュール110A〜140Aの読み出しを要求する。またCPU部230Aは、読み出し指示部240が不揮発性記憶モジュール110A〜140Aから読み出した楽音データと、演奏データの一部を信号処理部220に供給する。
図5は、CPU部230Aに含まれる楽音データバッファ231を示すブロック図である。楽音データバッファ231は231_0〜231_3の4つのバッファから構成される。各バッファの内部の回路構成は夫々同一であり、下記(a)〜(d)に示す通り、発音チャンネルによって使い分けられる。
(a)バッファ231_0
・・・CH0、4、8、12、16、20、24、28の楽音データの一時記憶用
(b)バッファ231_0
・・・CH1、5、9、13、17、21、25、29の楽音データの一時記憶用
(c)バッファ231_0
・・・CH2、6、10、14、18、22、26、30の楽音データの一時記憶用
(d)バッファ231_0
・・・CH3、7、11、15、19、23、27、31の楽音データの一時記憶用
バッファ231_0は、デュアルポートRAM231_0a,231_0b及びマルチプレクサ231_0c、デマルチプレクサ231_0dを有している。デュアルポートRAM231_0a,231_0bは夫々CH0,4,8・・・28迄の8つの分のデータを一時記憶する4kByteのRAMであり、1チャンネルあたり512Byteの記憶容量を有する。バッファ231_1は、デュアルポートRAM231_1a,231_1b及びマルチプレクサ231_1c、デマルチプレクサ231_1dを有している。デュアルポートRAM231_1a,231_1bは夫々CH1,5,9・・・29迄の8つの分のデータを一時記憶する4kByteのRAMであり、1チャンネルあたり512Byteの記憶容量を有する。又他のバッファバッファ231_2、231_3についても同様の構成であり、前述のチャンネル用のバッファとして用いられる。
図6A〜図6Cは、CPU部230Aに含まれるチャンネルアサインテーブル232を示す説明図である。チャンネルアサインテーブル232は、全チャンネル、即ちCH0〜CH31の発音状態などのステータスを表す以下の情報が保持されている。以下これらの情報について説明する。
発音中フラグSONは対応するチャンネルが発音中か否かを示すフラグであり、値0の時は発音中チャンネル、値1の時は空きチャンネルであることを示す。
KONフラグは打鍵してから離鍵されるまでの間に値1になるフラグである。
ノートナンバーNNはピアノの鍵盤位置に対応する16進数の番号である。
タッチパラメータTPは打鍵の強さに対応する強弱情報である。
レベルデータLDは打鍵の強さに応じて決まる楽音の音量に対応するものである。
強制消音フラグFは楽音を強制的に消音するためのフラグである。
セクタカウントSCは楽音データが1セクタ分即ち128サンプル分読み出される毎にカウントアップするカウンタである。
ウェーブエンドフラグWEは楽音データの最終サンプル即ちs1763999が楽音生成のために処理されたことを示すフラグである。
エンベロープエンドフラグEEは打鍵の状態やサスティンペダルの状態に応じて変化する楽音の音量変化(以下、エンベロープENVという)が、聴感上聞こえない音量レベルになった時に値1にセットされるフラグである。
楽音データ読み出し要求フラグDQは信号処理部220が楽音の生成として使用した楽音データのサンプル数が所定の閾値(例えば96サンプル)に到達した時点でセットされるフラグである。
選択フラグMは楽音データバッファ231のうちバッファ231_0については、デュアルポートRAM231_0aと231_0bのどちらに楽音データを書き込むかを選択するフラグである。バッファ231_1〜231_3も同様である。
選択フラグDはバッファ231_0については、デュアルポートRAM231_0aと231_0bのどちらに記憶されている楽音データを信号処理部220に転送するかを選択するフラグである。バッファ231_1〜231_3も同様である。尚、フラグDとMは、バッファ231_0については、値0の時にデュアルポートRAM231_0aを選択し、値1の時にデュアルポートRAM231_0bを選択する。バッファ231_1〜231_3も同様である。
図7は、CPU部230Aに保持されているNNテーブル233Aを示す説明図である。NNテーブルとは、ノートナンバーNNと、該NNに対応する楽音データを記憶した物理ブロック番号との関係を示すテーブルである。
演奏データバッファ234はマスターキーボード300から入力された複数の演奏データを保持するFIFOである。
CPU部230A内の転送監視部235は、データ転送を監視し、各バッファ231_0〜231_3の2つのいずれかのチャンネルに対応するエリアにデータが一時記憶され終わると、信号処理部220に対して転送完了フラグTRNFを転送するものである。
読み出し指示部240は、CPU部230Aの読み出し要求と不揮発性記憶モジュール110A〜140Aのアクセス状態に応じて、不揮発性記憶モジュール110A〜140Aに読み出し指示情報を転送するブロックである。
読み出し指示部240は、チャンネルレジスタ241及びMMレジスタ242を含んでいる。
図8は、読み出し指示部240に含まれるチャンネルレジスタ241を示すメモリマップである。チャンネルレジスタ241は、32チャンネル分の読み出し指示状態を表すレジスタであり、32チャンネル分について、読み出し指示情報と読み出し要求フラグRRQ、読み出し指示情報転送フラグRDTを有している。読み出し要求フラグRRQ(以下、RRQという)は、CPU部230Aが読み出し要求をしない間は値0であり、要求があれば値1となるフラグである。読み出し指示情報転送フラグRDT(以下、RDTという)は、読み出し指示部240が読み出し指示情報を不揮発性記憶モジュール110A〜140Aのいずれかに転送した時に立てられ、要求をしなくなったときにリセットされるフラグである。
図9は、読み出し指示部240に含まれるMMレジスタ242を示すメモリマップである。MMレジスタ242は、不揮発性記憶モジュール110A〜140Aのアクセス状態を表すレジスタであり、不揮発性記憶モジュール110A〜140Aの4モジュール分について読み出し中フラグRBSYを有している。不揮発性記憶モジュール110はMMNが0(以下、MM0という)、不揮発性記憶モジュール120はMMNが1(以下、MM1という)、不揮発性記憶モジュール130はMMNが2(以下、MM2という)、不揮発性記憶モジュール140はMMNが3(以下、MM3という)に対応する。読み出し中フラグRBSY(以下、RBSYという)は、読み出し指示部240が不揮発性記憶モジュール110A〜140Aに読み出し指示情報を転送したときに値1にセットされ、不揮発性記憶モジュール110A〜140Aから該読み出し指示情報に対応するデータ(512Byte分)が読み出されたときに値0にリセットされる。
また、MMレジスタ242は、不揮発性記憶モジュールMM0〜MM3の夫々に8個の登録枠1〜8を含み、夫々の登録枠1〜8はMAFとCHNを含む。MAFはモジュールアサインフラグを示し、このフラグが値1の場合、対応する不揮発性記憶モジュールに読み出し指示情報が転送されていて発音中であることを表す。MAFは対応するチャンネルの発音が終了した時点で値0にリセットされる。またCHNは、発音中のチャンネル番号を表す。不揮発性記憶モジュール110A〜140Aは、夫々最大8チャンネル分の読み出し指示情報を受け付けることが可能となる。
[初期状態]
まず、記憶モジュール100A、あるいは図1Aと図1Bに示した楽音生成システムの出荷前において、メーカー側で処理する初期化の内容について説明する。本実施の形態では、ピアノの楽音データを44.1kHzのサンプリング周波数でデジタル録音した場合において、各音高毎に約40秒分の楽音データを圧縮せずに各不揮発性メモリバンク112〜142に記録する。尚ピアノの鍵盤を打鍵してから音が十分減衰するまでの時間を40秒とする。この場合には式(4)に示すとおり、1764000サンプルとなる。
44.1kHz×40秒=1764000サンプル ・・・(4)
ここでは最強タッチと最弱タッチの2種類について、あらかじめデジタル録音したピアノの楽音データを、図2に示すように不揮発性メモリバンク112の物理ブロックPB0〜PB703に、ピアノの最低音から最高音に至る88鍵分の楽音データを昇順に書き込む。不揮発性メモリバンク122〜142にも夫々同一のデータを同様に書き込む。これによって同一のデータを4つの並列化された不揮発性メモリバンクに多重化して記録する。
各メモリバンクのPB0〜PB7には、ピアノの最低音のデータが記録され、PB0のP0から昇順に打鍵直後の先頭サンプル(s0)から順番に最後尾サンプル(s1763999)までの1764000サンプル分の楽音データが記憶されている。但し図3に示すように、512Byte単位で、最弱タッチと最強タッチの2種類の楽音データが組となって書き込まれる。
図10は、楽音データの1サンプルを示すビットフォーマットである。図10においてb15には正負を表すサインビットが書き込まれ、b15〜b1までの15ビットが楽音データの1サンプルとして使用される。b0にはウェーブエンドフラグWEが記録される。フラグWEは対応するサンプルが最終サンプルかどうかを示すフラグであり、値1の場合は最終サンプルであるとする。
更に初期化の際には、不揮発性メモリバンク112の最終物理ブロックPB1023のページP0には、記憶モジュール100Aに記録されているピアノの楽音データの特性情報(以下、記録データ特性情報という)と記憶モジュール100Aのメモリ構成に係る情報(以下、メモリ構成情報という)を書き込んでおく。
図11は、記録データ特性情報の一例を示す説明図である。この特性情報には少なくとも楽音データのサンプリング周波数(この場合は44.1kHz)の情報が含まれている。またリバーブ及びコーラスはエフェクト処理をする際に用いられる。尚図11のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
図12は、記憶モジュール100Aのメモリ構成情報の一例を示す説明図である。ここで図12のセクタサイズは1回の読み出し指示毎に読み出すデータのサイズを示しており、リードタイムTRはメモリセルアレイからIOレジスタへの読み出し時間を示す。転送時間TT1は各メモリバンクのIOレジスタからメモリコントローラ内にバッファリングする時間を示す。尚図12のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。
以上のように構成された、本発明の第1の実施の形態における楽音生成システムの動作について説明する。
[電源立ち上げ時の初期化処理]
アクセスモジュール200A及び記憶モジュール100Aの電源立ち上げ後、夫々初期化処理を開始する。記憶モジュール100Aの初期化処理は夫々のメモリコントローラが行い、初期化が完了するとアクセスモジュール200Aに対してアクセスを許可する。なお、メモリコントローラの初期化処理については一般的であるので説明を省略する。
アクセスモジュール200Aは初期化処理を、CPU部230Aと読み出し指示部240に分かれて行う。
、アクセスモジュール200AのCPU部230Aは図13Aのフローチャートに示すように、S100において初期化処理を行う。初期化処理では、信号処理部220のリセットや、楽音データバッファ231内のバッファ231_0〜231_3内の各デュアルポートRAMをクリアする。信号処理部220をリセットすることにより、信号処理部220は内部のDSPのプログラムカウンタのカウントアップを開始する。また図6A〜図6Cに示すチャンネルアサインテーブル232の初期設定、即ち以下の処理を行う。
(1)SONを値0、即ちCH0〜31を空きチャンネルに設定
(2)KON、PD、NN、TP、LD、F、SC、WE、DQ、M、Dを値0に設定
(3)EEを値1に設定
その後、アクセスモジュール200Aは不揮発性記憶モジュール110Aに対して、記録データ特性情報とメモリ構成情報の読み出し指示情報を転送する。図15は、アクセスモジュール200Aから不揮発性記憶モジュール110に対する読み出し指示情報を示すビットフォーマットである。尚、b22とb21は読み出し以外の指示にも拡張できるように設けたが、本実施の形態においては、読み出し以外の指示は行わないので値11に固定する。尚これらの特性情報は、不揮発性メモリバンク112のPB1023のP0の0番地から512Byte分以内に書き込まれている。アクセスモジュール200Aは、この読み出し指示情報を不揮発性記憶モジュール110に転送することによって、記録データ特性情報とメモリ構成情報を読み出すことができる。
CPU部230Aは、図11に示す記録データ特性情報を取得すると、サンプリング周期(22.7μs)を信号処理部220内のタイマーにセットし、1サンプリング時間の信号処理のタイムスロットの1周期を決定する。このタイマーは信号処理部220内のDSPの1周期を制御するためのタイマーとして機能する。CPU部230Aは記録データ特性情報内の1サンプル容量(2Byte)とフラグ割り当てビット(b0)を信号処理部220内のRAMのパラメータとして書き込み、楽音データが図10に示すビットフォーマットのどのビット位置に相当するかを決定するためのパラメータとして使用する。
また、CPU部230Aは記録データ特性情報内の最大発音チャンネル数(32CH)によって、チャンネルアサインテーブル232のチャンネル枠を決定すると共に、信号処理部220のタイムスロットのチャンネル数を決定する。また、信号処理部220はリバーブとコーラスによりエフェクト処理を決定する。図示の場合にはエフェクト処理としてリバーブのみを行うことを決定する。
さらに、CPU部230Aは、図12に示すメモリ構成情報を取得すると、不揮発性記憶モジュール数に基づき、式(5)を実行することにより並列数を求める。
並列数=不揮発性記憶モジュール数 ・・・(5)
1つの不揮発性記憶モジュールあたりにアサインされる、即ち読み出し指示情報が転送されるチャンネルの最大数(モジュール当たり最大チャンネル数)は、式(6)によって与えられる。尚、%はモジュロを表す演算子である。
モジュール当たり最大チャンネル数=CHN÷並列数 ・・・(6)
本実施の形態においては、CHNは32、並列数が4であるので、式(6)によれば不揮発性記憶モジュール110A〜140Aの夫々は最大8チャンネル分の読み出し指示情報をアサインすることが可能となる。各チャンネルをどの不揮発性記憶モジュールにアサインするかについては後述する。
CPU部230Aは、図12に示すメモリ構成情報の中のセクタサイズ(512Byte)を参照し、記憶モジュール100Aからのデータの読み出し単位のサイズを512Byteとして管理する。また式(7)を実行することにより、セクタ毎の総サンプル数(以下、usnという)を決定する。
usn=セクタサイズ/1サンプルサイズ/タッチ数 ・・・(7)
本実施の形態においては、セクタサイズが512Byte、1サンプルサイズが2Byte、タッチ数が2であるので、usn=128サンプルとなる。
さらにCPU部230Aは、図11に示す記録データ特性情報の中の1ノートあたりの占有容量と、メモリ構成情報の中のページサイズと1物理ブロックあたりのページ数TPN(この場合は256)に基づき、式(8)を実行することにより、1ノートあたり必要な物理ブロック数を算出する。
1ノートあたり必要な物理ブロック数
=1ノートあたりの占有容量/(ページサイズ×TPN)=8個 ・・・(8)
そして、最低音A-1から最高音C7まで夫々のノートに対応するPBNを決定し、図7に示すNNテーブル233Aを生成する。
以上メインルーチンにおいて、記録データ特性情報とメモリ構成情報を読み出し、各種パラメータの設定処理によってCPU部230Aは初期化処理(S100)を終える。
図14Aは、読み出し指示部240の通常処理、図14B及び図14Cはその割り込み処理を示すフローチャートである。
読み出し指示部240は、図14Aのフローチャートに示すように、S200において初期化処理を行う。初期化処理では、記憶モジュール100Aの全ての不揮発性記憶モジュールからアクセス許可を受信すると、CPU部230Aに対してアクセス可能であることを通知する。
CPU部230Aは読み出し指示部240からアクセス可の通知を受けると、S110から通常動作処理S101に移行し、割り込みをイネーブルにして外部のマスターキーボード300からの演奏データを受付ける。
[通常動作時の処理]
(1)全体的な動作説明
演奏データの入力から楽音の生成に至る全体的な動作説明を、CPU部230Aのフローチャート及び読み出し指示部240のフローチャートを中心に説明する。なお、CPU部230Aのフローチャートと読み出し指示部240のフローチャートは独立して実行されるものである。
図13BはCPU部230Aの割り込みルーチンを示しており、マスターキーボード300の演奏操作によって演奏データがアクセスモジュール200Aに転送された際に起動される。図13Aに示すメインルーチンの処理中にマスターキーボード300の演奏操作がなされると、即座に割り込みルーチンに移行する。尚、割り込みルーチンは多重割り込みが可能、即ち割り込みルーチン中であっても、次の割り込みを受け付けるものとする。
一方、読み出し指示部240のフローチャートにおいて、割り込みルーチンは、図14Bに示す割り込みルーチン1と図14Cの割り込みルーチン2とからなり、それらに優先順位はなく、またいずれも多重割り込みが可能である。割り込みルーチン1はCPU部230Aから読み出し要求があった時に起動され、割り込みルーチン2は記憶モジュール100Aから楽音データを受信した時に起動されるルーチンである。
まず、通常動作処理S101への移行後、マスターキーボード300の演奏操作がなされないとすると、全チャンネルの強制消音フラグFは値0であり、また読み出し要求フラグDQは値0であるので、S102とS107の分岐はNoとなり、S102とS107の分岐処理を永続的に実行することとなる。
マスターキーボード300の演奏操作がなされると、図13Bに示す割り込みルーチンが起動される。この割り込み処理について説明する。
図16は、マスターキーボード300から転送される演奏データを示すビットフォーマットである。演奏データには、打鍵に応じて生成される打鍵データと、サスティンペダルのON/OFF操作に応じて生成されるペダルデータの2種類がある。それらのデータはb15の値によって識別される。打鍵データにおいて、KONフラグ、ノートナンバーNN、及びタッチパラメータTPは前述のものである。ペダルデータにおいて、PDはサスティンペダルがONされた時に値1になるフラグである。尚、サスティンペダルとは、離鍵時にも音を持続させるためのペダルであり、本物のピアノにも備えられたペダルである。割り込みルーチンにおいて、まずマスターキーボード300から入出力部210Aを介して転送された演奏データを、演奏データバッファ234に取得する(S120)。この演奏データのフォーマットは図16に示すように、打鍵データまたはペダルデータのいずれかである。演奏データバッファ234に、既に取得した未処理の演奏データがなければ(S121)、今回取得した演奏データをチェックする(S122)。具体的には図16に示す演奏データのb15を調べることにより、打鍵データであるかペダルデータであるかを識別する。演奏データがペダルデータである場合は(S123)、図16に示すペダルデータ内のb14即ちPDフラグをそのままチャンネルアサインテーブル232内のPDにコピーし(S124)、S132に移行する。一方演奏データが打鍵データの場合は(S123)、図16に示す打鍵データのb14からKONフラグを抽出し(S125)、S126においてKONの値をチェックし、KONが値0の場合即ち離鍵の場合は、S132に移行する。
KONが値1の場合即ち打鍵の場合は、チャンネルアサインテーブル232内において空きチャンネルがあるかどうかを調べる(S127)。具体的には、CH0から昇順に値0の発音中フラグSONがあるかどうかを調べ、あれば最初に見つかったチャンネルに該演奏データをアサインする(S129)。チャンネルアサイン処理においては、下記の通りアサイン先のチャンネルの各情報の設定を行う。
(1)SONを値1にセット
(2)NNとTPを打鍵データからコピー
(3)SC、WE、EE、DQ、M、Dを値0に設定
さて、CPU部230Aはチャンネルアサイン処理の後、読み出し指示部240に対して読み出し要求と共に図15に示す楽音データの読み出し指示情報を渡す。読み出し指示情報は以下の手順で求められる。
(a)打鍵データのNNに基づきNNテーブル233Aを参照し、先頭PBNを求める。
(b)先頭PBNとSCに基づき式(9)を実行することによりPSNを求める。
PSN=(先頭PBN<<11)+SC ・・・(9)
但し、&は論理積をとる演算子、|は論理和をとる演算子、<<は左にビットシフトする演算子である。
(c)式(9)により求められたPSNは21ビットであり、その上位の2ビットは「11」である。従って次の式(10)を実行することにより読み出し指示情報を求める。尚、“0x”は16進数を表す記号である。図15はこの読み出し指示情報を示す。
読み出し指示情報=0x600000|PSN ・・・(10)
このようにして、CPU部230Aは読み出し先のPSNを決定し、図15に示すフォーマットにて読み出し指示部240に読み出し指示情報を渡す。読み出し指示部240は、読み出し要求と対応するCHNと読み出し指示情報を受け取ると、まず受け取ったCHNと読み出し指示情報をチャンネルレジスタ241に登録する。その後、MMレジスタ242に基づき読み出し対象となる不揮発性記憶モジュールを決定する。そして楽音データの読み出し中でなければ、チャンネルレジスタ241に登録されている読み出し指示情報を該不揮発性記憶モジュールに転送し、所望の楽音データを読み出す。
次に読み出し指示部240による記憶モジュール100Aの楽音データの読み出しについて図14A〜図14C及び図17のフローチャートを中心に説明する。まず、読み出し指示部240は図14Aに示すメインルーチンにおいて、前述した初期化処理(S200)の後に、通常処理(S201)に移行する。CPU部230Aから読み出し要求がない間は、チャンネルレジスタ241内のRRQは全て値0であり、その場合はCPU部230Aが管理しているEEの変化をモニターし、その結果に応じてMMレジスタ242のフラグ操作を行う(S203)。具体的には、MMレジスタ242のMAFが値1となっているチャンネルについて、EEが値0から値1に変化、即ち発音中から無音状態に変化したチャンネルはMAFを値0にリセットし、登録枠から該チャンネルを除外する。その後S202に戻り、以降、S202とS203の判断分岐を永続的に実行し続けることとなる。
そして、CPU部230Aから読み出し要求を受け取ると、メインルーチンのS202とS203のループから図14Bの割り込みルーチン1に移行し、チャンネルレジスタ241に読み出し指示情報を登録し、読み出し指示情報と同時に転送されるCHNをチャンネルレジスタ241のCHN欄に登録する(S220)。さらに、前記CHNに対応するRRQを値1にセットし(S221)、割り込みを終了しメインルーチンに戻る。なお、図8に示す例は、CPU部230AからCH0〜3の読み出し要求がなされ、以降に説明する処理によって各フラグが変化する様子を示した例である。具体的には、CH0〜3の読み出し要求と不揮発性記憶モジュール110A〜140Aへの読み出し指示情報の転送を完了し、不揮発性記憶モジュール110A、120Aからアクセスモジュール200Aへの楽音データの転送を完了した時点までを表している。この動作によって、チャンネルレジスタ241内の各フラグの値が変化することとなる。また、MMレジスタ242(図9)についても、各不揮発性記憶モジュール(MM0〜MM3)が読み出し中か否かを示すフラグRBSY等の値を変化させることとなる。
図14Aのメインルーチンにおいては、CH0〜3のRRQが値1となったので、S202からS204に移行し、MMレジスタ242に基づきアサイン状況、CH0〜3に対応する読み出し指示情報が不揮発性記憶モジュールにアサイン(転送)されたかどうかについてチェックする。具体的にはS205において、登録枠1〜8をチェックしMAFが値1になっているCHNがCH0〜3のいずれかであれば、既にアサイン済みであると判断する。そしてMAFが値1になっているCHNがCH0〜3である不揮発性記憶メモリモジュールを読み出し指示情報の転送先に決定する(S206)。
一方、アサイン済みでなければ、S207において、MMレジスタ242においてMAFが値1となっている登録枠の個数(登録数)を計数し、登録数が最も少ない不揮発性記憶モジュールを読み出し指示情報の転送先に決定する。なお、登録数が最も少ない不揮発性記憶モジュールが複数ある場合は不揮発性記憶モジュールの番号の小さい方を優先的に選択する。その後、読み出し指示情報の転送先に決定した不揮発性記憶モジュールにおいて、MAFが値0となっている登録枠のいずれかのMAFを値1にセットすると共に、対応するCHN欄にアサイン対象であるCHNの値を登録する(S207)。なお、最初は、MMレジスタ242は未登録状態であるので、CH0〜3は図9に示すように夫々MM0〜3の登録枠1に登録されることとなる。
次に、MMレジスタ242の読み出し中フラグRBSYを参照し、不揮発性記憶モジュール110A〜140Aが読み出し中か否かを判断する(S209)。最初は、MMレジスタ242のRBSYは全て値0、即ち不揮発性記憶モジュール110A〜140A全てが読み出し中ではないので、まずCH0の処理においてS210に移行する。
そして、読み出し指示部240はCH0に対応する読み出し指示を不揮発性記憶モジュール110に転送し(S210)、チャンネルレジスタ241の対応するチャンネルのRDTを値1にセットする(S211)。さらに、MMレジスタ242の対応する記憶モジュール(MM0)のRBSYを値1にセットすると共に、MM0の読み出し中CHNの欄に0を設定する(S212)。これは不揮発性記憶モジュール110からCH0の楽音データを読み出し中であることを示している。
以上の処理をチャンネルレジスタ241においてRRQが値1となっているチャンネル、即ちCH0〜3迄を実行する。
図17は、各メモリコントローラの処理を示すフローチャートである。読み出し指示情報を受信すると(S300)、該読み出し指示情報に含まれるPSNを読み出し先アドレスとしてリードコマンドを不揮発性メモリバンクに出力する(S301)。その結果読み出された楽音データをアクセスモジュール200Aに転送する(S302)。
図18は、メモリコントローラが不揮発性メモリバンクに発行するリードコマンドのタイムチャートである。コマンド1は、次に物理アドレスの転送開始を通知するコマンドであり、コマンド2はメモリセルアレイからI/Oレジスタに物理アドレスに記憶されている楽音データを読み出すことを指示するコマンドである。
ここで、リードコマンドは図18に示す通り、時刻t1にコマンド1を出力した直後に物理アドレスを出力し、その後、コマンド2を出力する。このアドレッシングタイムTAは数百n秒程度であるので時間的に無視できる。
なお、図18における物理アドレスとは、図4のPBNとページ番号とページ内セクタ選択ビットによって512Byte単位で指定される物理アドレスである。また、この物理アドレスは、読み出したい楽音データが記憶されているスタート番地(バイト単位)を指定するものであり、該スタート番地から対応するページの最終番地までの楽音データがTR中に対応するI/Oレジスタに読み出される。その後、転送時間TT1の間に512個のリードクロックを与えることによって、所望の512Byte分の楽音データがI/Oレジスタからメモリコントローラに読み出されることとなる。
さて、読み出し指示部240が、CH0〜3に対応する読み出し指示情報を夫々不揮発性記憶モジュール110A〜140Aに発行し終わると、CH0〜3のRDTが全て値0となる。従って図14Aにおいて、再びS202からS203の判断分岐をループするようになる。
アクセスモジュール200Aは転送された楽音データを読み出し指示部240を介して楽音データバッファ231に一時記憶する。この時、読み出し指示部240は512Byte分(1セクタ分)の楽音データを受け取ったことを検知すると、図14Cの割り込みルーチン2に制御を移し、MMレジスタ242の対応するMMNのRBSYを値0にリセットし(S230)、さらにチャンネルレジスタ241の対応するCHNのRDTとRRQを値0にリセットする(S231)。さらに、MMレジスタ242の対応するMMNの読み出し中CHNを取得し(S232)、受信した楽音データを、楽音データバッファ231内のどのバッファに一時記憶するかを決定する。
チャンネルレジスタ241のRRQが値0になっているエリアは、次の新たな読み出し指示情報のエリアとして解放されたエリアとなる。因みに、RRQが値0になっている場合は、S231によりRDTも値0になっているし、S230によりMNレジスタ242のRBSYも値0になっている。なお、チャンネルレジスタ241への読み出し指示情報の登録は、最上段のエリアから順に使用され、最下段に到達した時点で再び最上に戻るように、即ち巡回的に使用される。
アクセスモジュール200Aは、いずれかの不揮発性記憶モジュールから楽音データを受信すると、該楽音データに付加されたCHNに対応する楽音データバッファ231のエリアに、該楽音データを一時記憶する。
次にメモリコントローラから楽音データバッファ231への楽音データを転送する転送時間TT2について説明する。TT2の値はアクセスモジュール200Aの仕様によって決まるパラメータであり、アクセスモジュール200Aが外部バスを介して記憶モジュール100Aに送信するクロック(図示せず)の周波数に依存する。本実施の形態ではアクセスモジュール200Aと不揮発性記憶モジュール110Aから140Aの夫々を繋ぐ外部バスのバス幅を1Byteとし、40MHzの転送周波数で転送するものとする。この場合、転送時間TT2は、式(11)により、約12.8μ秒となる。
512Byte×(25n秒/Byte)=12.8μ秒 ・・・(11)
読み出し指示情報の転送に応じて、不揮発性記憶モジュール110A〜140Aのいずれかから読み出された楽音データは、読み出し指示部240を介してCPU部230Aに転送される。ここでは不揮発性記憶モジュール110Aから読み出すものとする。図19は、不揮発性記憶モジュール110Aから外部バス上に読み出された際の楽音データを示すビットフォーマットである。このビットフォーマットに示すように最弱タッチと最強タッチの楽音データが含まれている。CPU部230Aでは楽音データを楽音データバッファ231内のバッファ231_0に転送し、図5のマルチプレクサ231_0c(M=0)を介してデュアルポートRAM231_0aのCH0に対応するエリアに一時記憶する。尚、楽音データの一時記憶に際して、バッファ231_0〜231_3の選択、あるいは各バッファ内のデュアルポートRAMの記憶領域の選択は、後述するMMレジスタ242に登録されたCHNによって決定する。
先頭セクタの全サンプル、即ち最弱タッチ及び最強タッチ夫々についてs0〜S127までの512ByteがデュアルポートRAM231_0aのCH0に対応するエリアに一時記憶され終わると、CPU部230A内の転送監視部235が信号処理部220に対して転送完了フラグTRNFを転送する。尚、CPU部のS130以降の処理と、楽音データバッファ231への楽音データ転送(転送監視を含む)は並行して実行される。
S130の後に、信号処理部220による発音(S131)を行う。発音の制御では、TP/0x7Fの演算によりレベルデータLDを算出してそれをチャンネルアサインテーブル232のLDに設定し、S125で抽出したKONをチャンネルアサインテーブル232のKONに設定する。0x7FはTPの最大値を表す。即ちレベルデータLDは、タッチパラメータTPに応じて値0以上1以下の値をとる。信号処理部220の動作については後述する。
さて、S127において、空きチャンネルがなかった場合、即ちチャンネルアサインテーブル232内のSONが全て値1であった場合は、チャンネルアサインテーブル232の強制消音フラグFを値1にセットし(S128)、S132に移行する。
その後、次に処理すべき楽音データの有無をチェックし(S132)、有ればS121に戻る。S121では既に前回の演奏データは処理を完了しているので、無条件でS122以降の処理に移行する。一方、S132において、次に処理すべき楽音データが無ければ、割り込みルーチンを終了する。この場合にはメインルーチンに戻って、該割り込みルーチンに移行した時に実行していた処理を続行する。
次に、信号処理部220の動作について、図20のフローチャートを中心に説明する。まず、S400において式(12)に従ってイニシャルフラグINIを設定する。
INI=KON&EE ・・・(12)
ここで式(11)においてEEをINIの算出要素にした理由について説明する。後述するように全チャンネルが発音中(EEの値が0)の状態において、新たな打鍵を行った場合、ノイズが生じないようにするために、新たな打鍵に対応するチャンネルの急速消音を行ってから、即ちEEが値1及びSONが値0になるのを待ってから、新たな打鍵に対応した発音を開始する必要がある。
但し、新たな打鍵があってから発音開始されるまでの遅延時間を短くするため、急速消音を指示すると同時に、新たな打鍵に対応するチャンネルアサイン処理(S129)と楽音データの読み出し指示(S130)を行う必要がある。しかし、新たな打鍵がなされる直前に少なくとも新たな打鍵がアサインされるチャンネルのKONが値1であった場合、新たな打鍵に対応するチャンネルは、KONが値0を経ることなく、即ち値1のままで、急速消音に続いて新たな発音制御を行うこととなる。このような場合に、発音開始時刻を決定する要素としてKONが使えないので、式(12)においてEEをINIの算出要素にした。尚、式(12)は、上述の動作に限らず、如何なるケースにおいても適用できる。
次いでS401において、INIとTRNFについて判定する。CPU部230Aから信号処理部220内のRAMに転送完了フラグTRNFが転送されると、INIとTRNFが共に1となるので、S402に進んで各種パラメータの初期設定を行う。パラメータの初期設定では、信号処理部220内のカウンタに保持したsnを値0に設定し、信号処理部220内のRAMに保持した転送完了フラグTRNFを値0に設定する。
さて、S401あるいはS402の後、補間処理を行う(S403)。補間処理とは打鍵の強さ、即ちタッチパラメータTPの値に応じて楽音の音色を変更する処理である。一般的には、強打鍵時の音色の方が弱打鍵時の音色よりも高域成分に富んだ音色であることが知られている。そこで本実施の形態においては、強打鍵時の音色の代表である最強タッチの楽音データと、弱打鍵時の音色の代表である最弱タッチの楽音データとを、タッチパラメータTPに基づいて2点間直線補間することによって、TPに応じて音色を変更できるようにした。具体的には式(13)に従った補間処理を行う。尚、wは補間後の楽音データの1サンプルの値、waは最弱タッチに対応する楽音データの1サンプルの値、wbは最強タッチに対応する楽音データの1サンプルの値、αは値0〜1の補間係数である。
w=wb×α+wa(1−α) ・・・(13)
但し、α=TP/0x7F
補間処理の後に、式(14)に従ったエンベロープ(以下、ENVという)の算出を行う(S404)。
ENV=LD×REL ・・・(14)
但し、RELは次のように決定される。
(a)F=1の場合は、
REL=g
(b)F=0かつKON=0かつPD=0の場合は
REL=REL_old×0.5
(c)上記以外の場合は、
REL=1
尚、RELは減衰パラメータ、REL_oldは前サンプリング期間のREL、gは減衰変数である。
gはF=1がCPU部230Aから転送された時点のサンプリング周期において0.875、次のサンプリング期間において0.750、以降0.125ずつ小さくなり、値0になった時点以降は値0を維持する時変パラメータとする。このように決めておけばF=1が転送されてから8サンプルでENVは値0に到達する。また信号処理部220はREL_oldを内部のRAMに保持し、式(14)の実行毎にRELに更新する。従ってRELは指数関数的に0に漸近することとなる。
図21と図22はENVの時間変化を示している。図21はPDが値0の場合、即ちサスティンペダルがOFFされている場合である。この場合にはKONが値1の間は前述の(c)のようにENVは変化せず、値0になった時、即ち離鍵した時以降にENVは指数関数的に減衰することとなる。図22はPDが値1の場合、即ちサスティンペダルがONされている場合である。この場合はKONが値1になっても前述した(c)の状態が続き、打鍵時のENVの値のままとなる。図21及び図22のいずれの場合においても、強制消音の指示があった時、即ちF=1となった時点で、前述した(a)の場合となり、RELは時変パラメータgとなる。従って破線で示す8サンプリング周期でENVは値0に直線的に減衰することとなる。尚、1サンプリング周期は式(15)に従う。
1/サンプリング周波数(44.1kHz)≒約22.7μ秒 ・・・(15)
従って8サンプリング周期は約182μ秒となる。
ENVの算出の後、ENVと閾値ENVthとの比較を行う(S405)。ENVthは、聴感上十分聞こえないレベルの値である。S405でENVがENVth未満になった場合に、CPU部230A内のチャンネルアサインテーブル232内の対応するチャンネルのEEを値1に、SONを値0に更新する(S406)。尚、SONが値0に更新したチャンネルは、以降空きチャンネルとして管理される。
次に、式(16)に基づきエンベロープ処理後のデジタルデータWを求める(S407)。
W=w×ENV ・・・(16)
尚、前述した通り楽音データはピアノの音を鍵盤毎にデジタル録音したデータであるので、ENVのレベルが時間的に変化しなくても、Wの波高値は時間的に減衰するので聴感上は減衰して聞こえる。
次に、WEが値1、即ち任意の打鍵に対応する楽音データが最終サンプル(s1763999サンプル)まで到達するか、あるいはEEが値1、即ちENVが聴感上聞こえないレベルに到達すると(S408)、もはや信号処理を続けて出力する必要がない。従ってセクタ番号snのインクリメントや選択フラグDのトグル動作が不要となるので、S414にジャンプする。それ以外の場合にはS409に移行し、snのインクリメントを行う。尚ウェーブエンドフラグWEは図10に示すように楽音データバッファ234から取得した楽音データのb0に記録されているフラグであり、s1763999サンプルのみWEが値1である。b0が値0の楽音データをS403において読み出すまでは、対応するチャンネルのWEは値1のままである。
S410においてセクタ番号snのインクリメントの結果snが値96になった場合はS411に進む。そして次の楽音データ1セクタ分を読み出すために、チャンネルアサインテーブル232内の対応するチャンネルのSCをインクリメントすると共に楽音データ読出要求フラグDQを値1に設定する。snが96以外ならこの処理を行うことなくS412に進む。
次にS412においてsnが127、即ち楽音データ1セクタ分の中の最後のサンプルに到達したか否かを判断し、到達した場合は選択フラグDのトグル、即ち現在の値と逆の論理に変更する。この操作においては、チャンネルアサインテーブル232内の対応するチャンネルのDを、例えば0から1に切換えると共に、楽音データバッファ231のデマルチプレクサ、例えば231_0dの入力を切り換える。これにより、楽音データの読み出し元を、デュアルポートRAM231_0aからデュアルポートRAM231_0bに切り替える。
次にS414において信号処理部220が内部保持しているCHNをインクリメントし、CHNが0でなければ次のチャンネルの処理に移行すべくS401に戻る。但しCHNは5ビットのカウンタに保持されCH0〜CH31を巡回的に更新する。S415でCHNが値0になった時、即ちCH31までの処理が終了した時、ミキシング処理(S416)に移行する。
ミキシング処理では、CH0〜31までのWnを式(17)に基づいてミキシング処理する。
Wx=(W0+W1+・・・・+W31)/32 ・・・(17)
ここでWn(nはCHNに対応する0〜31の整数)は任意のチャンネルのWとし、Wxはミキシング結果である。ミキシングの後S417において更にエフェクト処理を行う。
図23は、1サンプリング周期あたりの信号処理を示すタイムスロット図である。図23において、左側が時刻の早い方であり、CH0〜31までの補間処理やレベル制御の後、CH0〜31までの楽音のミキシング処理(MIX)、及びリバーブやコーラスなどのエフェクト処理(EFFECT)がなされる。信号処理部220はこれらの一連の処理をサンプリング周期である22.7μ秒毎に巡回して実行する。
以上説明した信号処理は、1サンプリング周期(22.7μ秒)毎に繰り返して実行され、22.7μ秒毎に処理後の楽音データが入出力部210AのDAコンバータにてデジタル−アナログ変更がなされ、その結果が所望の楽音としてラインアウト端子を介して外部に出力される。該楽音は外部のアンプとスピーカを介してピアノの演奏音が得られる。
さて、図13AのCPU部230Aのメインルーチンの説明に戻り、S102以降の処理について説明する。CPU部230AはS102においてチャンネルアサインテーブル232において全てのチャンネルのFを調べる。Fが値1のチャンネルの中でEEが値1のチャンネルがあれば、該チャンネルのFを値0にクリアし(S103)、該チャンネルにチャンネルアサイン処理を行う(S104)。尚EEのクリアは、前述したとおり信号処理部220がS402にて行う。
次に楽音データの読み出し要求(S105)と信号処理部220の発音制御(S106)を行う。S105とS106は前述したS130とS131と同じ処理である。
次にS107において、DQが値1のチャンネルをサーチし、あればS108において該チャンネルの楽音データの読み出し要求を行う。尚S107やS102におけるチャンネルアサインテーブル232のサーチはCH0から昇順に行う。
(2)発音遅延時間に関する説明
以上の処理を踏まえ、さまざまな打鍵方法別に、図24A〜図24Cに示すタイムチャートと、図6A〜図6Cに示すチャンネルアサインテーブル232を用いて、打鍵から楽音が発音されるまでの動作、及び発音遅延時間について説明する。
(2−1)離散的な打鍵の場合
図24Aは離散的な打鍵を行った場合の動作を説明したタイムチャート、図6Aは該打鍵に対応するチャンネルアサインテーブル232内のパラメータの変化を表したものである。まず無音状態からマスターキーボード300によってNNが0x19、0x1C、0x1E、0x20に対応する4つの鍵盤が時刻t0に同時に打鍵され、その後、数十μ秒ずつの時間間隔をおいて、NNが0x25の鍵盤、NNが0x29の鍵盤、最後にNNが0x2Cと0x2Fの2つの鍵盤が打鍵される場合について説明する。各打鍵は、前述したCPU部230Aのチャンネルアサイン処理により夫々CH0〜7に割り当てられ、打鍵タイミングにCPU部230Aの処理遅延を付加したタイミングで、CH0〜7の読み出し要求が読み出し指示部240に出力される。さらに読み出し指示部240が前述したように不揮発性記憶モジュール群のアクセス状況に応じて、読み出し指示情報を記憶モジュール100Aに転送する。
不揮発性メモリバンクからのメモリコントローラへの楽音データの読み出し中、及びメモリコントローラからアクセスモジュール200Aへのデータ転送中の間は、アクセスモジュール200Aは次の読み出し指示情報を転送できない。このため、記憶モジュール100Aへの読み出し指示情報の転送タイミングは、図24Aに示すタイミングで、CH0〜7の読み出し指示がアクセスモジュール200Aから記憶モジュール100Aに転送される。この転送タイミングに応じて、夫々のメモリバンク112〜142においてリードタイムTRの間にメモリセルアレイよりI/Oレジスタに読み出される。
その後、楽音データは、転送時間TT1の間にI/Oレジスタからメモリコントローラに読み出され、転送時間TT2の間にメモリコントローラから読み出し指示部240を介して楽音データバッファ231に一時記憶されることとなる。
信号処理部220は楽音データバッファ231に記憶された楽音データを用いて前述した通り楽音の生成処理を行う。信号処理部220は1サンプリング周期毎にCH0〜31までの処理を時分割にて行う。即ち22.7μ秒毎に各チャンネルの楽音データがs0から順番に使用されることとなる。
CH0〜3においては、図24Aの時刻t2から始まる最初のタイムスロットにおいて、s0が使用されることとなる。前記タイムスロットから4タイムスロット遅れてCH4、5のs0が使用され始め、さらに3タイムスロット遅れてCH6、7が使用され始める。
各チャンネルにおいて、s0を使用したタイムスロットから数えて127番目のタイムスロットで512Byte分の楽音データを全て使いきる。このため前述した通り、snが96になった時刻t4で、あらかじめ次の512Byte分の楽音データを取得しておく必要がある。尚96に限る必要はなく、次の512Byte分の楽音データの処理に間に合うように、該512Byte分の楽音データを取得できれば、別の値であってもよい。
これに対応して図24Aの破線で示したタイミングで、CH0〜7の読み出し指示がアクセスモジュール200Aから記憶モジュール100Aに転送される。読み出し指示の間隔は、基本的にタイムスロットの間隔即ち22.7μ秒毎になる。
次に、発音遅延時間について説明する。発音遅延時間とは、打鍵時刻からs0に対応する楽音を生成するまでの時間をいう。図24Aの場合は、図面によればCH4の発音遅延時刻t1〜t3で最大であり、該発音遅延時間は150μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より十分短い値であるので、図24Aの場合においては、本実施の形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
(2−2)集中的な打鍵の場合
次に、32チャンネル全てを使用して一度に発音する場合について説明する。図24Bはマスターキーボード300により32個の鍵盤を時刻t0に同時に打鍵した場合の動作を説明したタイムチャート、図6Bはこの打鍵に対応するチャンネルアサインテーブル232内のパラメータの変化を表したものである。尚、このような打鍵方法は通常の演奏ではあまりなされない方法である。
このような場合においては、例えば図6Bに示すように、NNが0x28〜0x47に対応する32個の鍵盤が同時に打鍵される。この打鍵は、前述したCPU部230Aのチャンネルアサイン処理によりCH0〜31に割り当てられ、打鍵タイミングにCPU部230Aの処理遅延を付加したタイミングで、CH0〜31の読み出し要求が読み出し指示部240に出力され、さらに該読み出し要求に対応する読み出し指示情報がアクセスモジュール200Aから記憶モジュール100Aに転送される。以降は、図24Bに示すように、楽音データが楽音データバッファ231に転送され、楽音を生成することとなる。
この場合、最も発音遅延時間が長くなるのはCH28〜31であり、発音遅延時間は時刻t0〜t1まで、即ち図24Bの図面上650μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より短い値であるので、図24Bの場合においても、本実施の形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
(2−3)急速消音の後に集中的な打鍵を行う場合
最後に、急速消音の後に32チャンネル全てを使用して一度に発音する場合について、図24Cと図6Cを用いて説明する。この場合は、例えば(2−2)に示した打鍵、即ち図6Cに示したようにNNが0x28〜0x47に対応する32個の鍵盤が時刻t0に打鍵された状態のままで、新たに時刻t1にNNが0x48〜0x67に対応する32個の鍵盤が打鍵された場合、即ち最大発音チャンネル数(32チャンネル)を超えた発音となる。
このように最大発音チャンネル数を超えた発音制御をする場合は、既に発音されている32チャンネル分全てを前もって急速消音し、該32チャンネル分のEEを値1にする。そして聴感上聞こえないレベルまで消音した後に、該32チャンネルに新たな打鍵を割り当てる必要がある。このような場合が最も発音遅延時間が長くなる場合である。
このような急速消音を行う期間は、図24Cにおいて、時刻t1の打鍵直後の8サンプリング周期に相当する182μ秒の期間である。図6Cにおいて全チャンネルは、既に打鍵されていた鍵盤が離鍵されることなくかつ発音された状態において、新たな打鍵が行われたチャンネルとなるので、KON、SON共に値1から始まることとなる。そして信号処理部220の急速消音処理によりEEが値1に、SONが値0になり、その結果、CPU部230Aのチャンネルアサイン処理によりCH0〜31の読み出し指示情報が記憶モジュール100Aに転送されることとなる。それ以降のタイムチャートは図24Bに示すタイムチャートと同様である。
この場合、最も発音遅延時間が長くなるのはCH28〜31であり、該発音遅延時間は時刻t1〜t3まで、即ち図24Cの図面上850μ秒以下であると言える。これは発音遅延時間の許容範囲である1m秒より短い値であるので、本実施の形態の楽音生成システムは、電子楽器などの楽音生成システムとして適用できる。
以上のように、第1の実施の形態に示す楽音生成システムでは、不揮発性メモリバンク112〜142毎に楽音データを記録することにより多重化しておき、データ読み出し部120が、アクセスモジュール200Aからの読み出し指示に従って前記複数の不揮発性メモリバンクから並列的に楽音データを読み出すようにした。このため楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいても、複数のデータの読み出し時に複数の不揮発性メモリバンクから並列的に読み出すことができる。従って発音遅延時間をその許容範囲である1m秒よりも短くすることができる。即ち、現在主流である大容量フラッシュメモリを楽音データ用のメモリとして使用した場合においても、低価格かつ小型の楽音信号発生装置を実現することが可能となる。
(第2の実施の形態)
図25A,図25Bは、本発明の第2の実施の形態における楽音生成システムを示すブロック図である。本実施の形態の楽音生成システムも記憶モジュール100Bとアクセスモジュール200Bを有している。記憶モジュールは4つの不揮発性記憶モジュール110B,120B,130B,140Bを有しており、不揮発性記憶モジュール110Bはメモリコントローラ111B、不揮発性メモリバンク112から成っている。その他の不揮発性記憶モジュールも同様である。又アクセスモジュール200Bは入出力部210B、信号処理部220、CPU部230B、読み出し指示部240及び書き込み指示部250を有する。基本的な構成は第1の実施の形態の楽音生成システムと同じであり、相違点は下記(a)〜(c)である。
(a)CPU部230BはNNテーブル233B、ファイルシステム部236と多重化部237を備える。その他のブロックについては第1の実施の形態と同一である。CPU部230Bはインターネット310からダウンロードした楽音データを書き込み指示部250を介して記憶モジュール100Bに書き込むと共に、該楽音データをファイルとして管理するものである。
(b)メモリコントローラ111B,121B,131B,141Bは論物変換機能を有する。
(c)入出力部210Bにはインターネット310が接続されており、ユーザによるダウンロードの指示に応じて必要なデータをダウンロードできるものとする。
図26Aは、論理アドレス空間とクラスタ番号CLN及び論理セクタ番号LSNとの関係を説明した説明図であり、図26Bは論理セクタ番号LSNと不揮発性メモリバンク112〜142内のメモリセルアレイ114〜144内の構造との関係を説明した物理アドレス空間の説明図である。ここで論理アドレス空間はCL0〜CL130943から成る。1クラスタは32kByteの容量とする。一方不揮発性メモリバンク112〜142は夫々物理ブロックPB0〜PB1023を有している。また各物理ブロックは夫々256ページ(P0〜P255)から構成される。ここでは各不揮発性メモリバンク112〜142のPB1〜PB704に楽音データが保持されている。ここで、論理アドレス空間は、PB0〜PB1022までに対応するものとする。即ちPB1023は論理アドレス指定によって読み書きできない領域(以下、システム領域という)である。これはユーザが誤って消去しないようにするためであり、メーカー側が直接物理アドレス指定によって書き込むことが可能である。
図27は、楽音データを記録した各ページ内の記録フォーマットについて、物理ブロックPB1のページP0を例に説明した図である。全物理ブロックの各ページは、4096Byteのデータ領域と128Byteの冗長領域とから成る。本実施の形態において、データ領域は8セクタに分割される。各セクタは512Byteの容量を持つ。また冗長領域は使用しない。
図28は、論理セクタ番号LSNと物理セクタ番号PSNとの対応関係を示すビットフォーマットである。図28において、LSNのビットb0〜b2はページ内セクタ選択ビットであり、b3,b4はMMN、b5〜b12はページ番号、b13〜b22は論理ブロック番号LBNを示している。クラスタ番号CLNはb22〜b5に相当する。MMNは不揮発性記憶モジュール110B〜140Bを選択するビットであり、MMNが値0のときに不揮発性記憶モジュール110を、MMNが値1の時に記憶モジュール120を、MMNが値2のときに不揮発性記憶モジュール130を、MMNが値3のときに不揮発性記憶モジュール140を、夫々選択する。またメモリコントローラ111B〜141BがLSNのb22〜b13を論理物理変換することによってPBNが決まる。LSNのb12〜b5及びb2〜b0は夫々PSNのb10〜b3、b2〜b0にそのまま対応する。
但し、図28に示すLSNのビットフォーマットは記憶モジュール100Bの並列数が4の場合の例であり、並列数によってMMNに割り当てられるビット数を変化させても構わない。例えば並列数が2の場合は、バンクセレクトに割り当てられるビット数は1(b3)となり、それに伴いページ番号はb11〜b4にLBNはb21〜b12に割り当てられることとなる。また、ページ内セクタ選択ビットは、ページをセクタサイズで割り算した商に相当するビットである。本実施の形態においては、ページサイズを4096+128Byte、セクタサイズを512Byteとした場合、即ち図3に示すように1ページが8個のセクタに分割される場合であり、これらを前述した物理アドレスの下位3bitによって選択する。尚ページサイズやセクタサイズは前述した値に限定される必要はなく、その値に応じてページ内セクタ選択ビットを可変としても構わない。
メモリコントローラ111B〜141Bは、アクセスモジュール200Bから供給された読み出し指示情報を、不揮発性メモリバンク112〜142へのリードコマンドに変換するためのインターフェース回路やバッファ等を備えたものである。さらに、メモリコントローラ111B〜141Bは、図28に示すようにLSNの上位10ビットをPBNに変換する論物変換機能を有する。該インターフェース回路や論物変換機能は市販のメモリカード(例えばSDカード)にも搭載されているものであるので説明を省略する。
次にアクセスモジュール200Bの各ブロックについて、図25Bを用いて主に第1の実施の形態との相違点について説明する。
CPU部230Bのファイルシステム部236は、楽音データをファイルとして管理するためのものである。多重化部237は、楽音データをファイルとして書き込む際に楽音データを多重化するものである。尚、ファイルシステム部236と多重化部237の詳細については後述する。
図29は、CPU部230Bに保持されているNNテーブル233Bを示す説明図である。本実施の形態のNNテーブル233Bは、ノートナンバーNNと、該NNに対応する楽音データを記憶したクラスタ番号CLNとの関係を示すテーブルである。
読み出し指示部240は、第1の実施の形態の読み出し指示部240と同様である。
書き込み指示部250は、前述したCPU部230Bの楽音データの書き込み指示を記憶モジュール100Bに転送するものである。
[初期状態]
まず、記憶モジュール100B、あるいは図25Aと図25Bに示した楽音生成システムの出荷前において、メーカー側で処理する初期化の内容について説明する。
メーカー側の書き込み装置、例えばFATファイルシステムに準拠するパソコンなどの装置が、不揮発性記憶モジュール100B〜140Bを物理フォーマットする。その後書き込み装置により、図26Aに示すように論理アドレス空間における管理情報領域(CL0,CL1)には、FATテーブルやルートディレクトエントリなどの管理情報をアロケートし、クラスタCL2以降の通常領域には楽音データをアロケートする。
ここで図26A、図26Bに示すように、不揮発性メモリバンク112のPB0のP0はLS0〜7に対応し、不揮発性メモリバンク122のPB0のP0はLS8〜15に対応する。同様に、不揮発性メモリバンク132のPB0のP0はLS16〜23に対応し、不揮発性メモリバンク142のPB0のP0はLS20〜31に対応する。この関係は、図28に示すLSN,PSNのビットフォーマットに従う。
次に楽音データは先頭論理アドレスから4MByteオフセットを加えたクラスタ(CL128)から最低音の音名(A-1)から順番にアロケートするものとする。
このアロケートにより、不揮発性メモリバンク112〜142のPB0のP0〜P3のエリアに管理情報が書き込まれ、PB1以降に楽音データが書き込まれる。該楽音データの先頭アドレスであるCL128やファイル名、あるいは該楽音データが記憶された時刻情報などはファイルエントリ(FE)に保持される。このファイルエントリ(FE)は図26Aに示すようにCL2の先頭の512Byteにアロケートされ、物理空間上では図26Bに示すように不揮発性メモリバンク112のPB0のP4に書き込まれる。
ファイルエントリの論理アドレスは、管理情報内のルートディレクトリエントリから辿れるようになっている。なおFATファイルシステムは一般的な技術であるので詳細説明は省略する。
第2の実施の形態においても、最強タッチと最弱タッチの2種類について、ピアノの楽音データを44.1kHzのサンプリング周波数でデジタル録音する。そして式(4)に示すとおり、1764000サンプルについて、図26Bに示すように不揮発性メモリバンク112の物理ブロックPB1〜PB704に、ピアノの最低音から最高音に至る88鍵分の楽音データを昇順に書き込む。不揮発性メモリバンク122〜142にも夫々同一のデータを同様に書き込む。これによって同一のデータを4つの並列化された不揮発性メモリバンクに多重化して記録する。例えば、図26Bにおいて、各不揮発性メモリバンクのPB1のP0に書き込まれるデータLS8192〜LS8199、LS8200〜LS8207、LS8208〜LS8215、LS8216〜LS8223は同じものである。
各メモリバンクのPB1〜PB8には、ピアノの最低音のデータが記録され、PB1のP0から昇順に打鍵直後の先頭サンプル(s0)から順番に最後尾サンプル(s1763999)までの1764000サンプル分の楽音データが記憶されている。但し図27に示すように、512Byte単位で、最弱タッチと最強タッチの2種類の楽音データが組となって書き込まれる。なお、楽音データの1サンプルを示すビットフォーマットは、図10に示す第1の実施の形態のものと同じである。
論理アドレスと物理アドレスは図28に示す通り、各メモリコントローラ111B〜141Bによって論物変換が行われる。尚、簡単のため、全ての物理ブロックは正常なブロックであるとする。但し、初期不良ブロックがある場合は、論物変換の手法により該初期不良ブロックを使用しないようにすればよい。論物変換を行うための論物変換テーブル(図26B中でCTとする)は不揮発性メモリバンク112のPB1023に保持される。論物変換は一般的な技術であるので詳細な説明を省略する。
更に初期化の際には、図26Bに示すように不揮発性メモリバンク142の物理ブロックPB1022の最終ページには、記憶モジュール100Bに記録されているピアノの楽音データの特性情報(以下、記録データ特性情報といい、図中でRDIとする)を書き込み、物理ブロックPB1023の最終ページには記憶モジュール100Bのメモリ構成に係る情報(以下、メモリ構成情報といい、図中でMSIとする)を書き込んでおく。なお、記録データ特性情報とメモリ構成情報は、第1の実施の形態と同じものであり、夫々図11と図12に示す。
以上のように構成された、本発明の第2の実施の形態における楽音生成システムの動作について説明する。
[電源立ち上げ時の初期化処理]
アクセスモジュール200B及び記憶モジュール100Bの電源立ち上げ後、夫々初期化処理を開始する。記憶モジュール100Bの初期化処理は夫々のメモリコントローラが行い、初期化が完了するとアクセスモジュール200Bに対してアクセスを許可する。なお、メモリコントローラの初期化処理については一般的であるので説明を省略する。
アクセスモジュール200Bの初期化処理は、読み出し指示部240とCPU部230Bに分かれて行われる。
読み出し指示部240は、第1の実施の形態と同様、図14AのフローチャートのS200において初期化処理を行う。初期化処理では、記憶モジュール100Bの全ての不揮発性記憶モジュールからアクセス許可を受信すると、CPU部230Bに対してアクセス可能であることを通知する。
一方、アクセスモジュール200BのCPU部230Bは第1の実施の形態(図13A)と同様にS100において初期化処理を行う。初期化処理では、CPU部230Bは、不揮発性メモリバンク112〜142のPB0に記憶されたFATテーブルやファイルエントリをファイルシステム部236に読み出し、ファイルシステム部236は、既に記憶モジュール100Bに記憶されている楽音データの開始クラスタ番号(CL128)を認識する。
さらに、その後、アクセスモジュール200Bは読み出し指示部240を介し記憶モジュール100Bに対して、記録データ特性情報とメモリ構成情報の読み出し指示情報を転送する。これによりCPU部230Bは不揮発性メモリバンク142のPB1022に記憶された記録データ特性情報、及びPB1023に記憶されたメモリ構成情報を読み出す。図30Aはメモリ構成情報を読み出すための読み出し指示情報を示す。尚、図30Aにおいて、b22〜b21はメモリ構成情報の読み出しコードを示す。*はどのような値であっても構わないことを表す記号である。その他の初期化処理については、第1の実施の形態と同様である。
CPU部230Bは、図12に示すメモリ構成情報を取得すると、不揮発性記憶モジュール数に基づき、式(5)を実行することにより並列数を求める。本実施の形態では不揮発性記憶モジュール数は4である。こうして求めた並列数によりLSNのビットフォーマットが決まる。本実施の形態においては、並列数が値4であるので、MMNのビット数は2となり、LSNのビットフォーマットは図28に示すとおり23ビットとなる。また例えば不揮発性記憶モジュール数が値2の場合には、並列数が2となり、MMNに割り当てられるビット数は1(b3)となり、それに伴いページ番号はb11〜b4にPBNはb21〜b12に割り当てられることとなる。
さらに、CPU部230Bは、第1の実施の形態と同様に、式(6)〜式(8)に基づき、1モジュール当たり最大チャンネル数、セクタ毎の総サンプル数usn、1ノートあたり必要な物理ブロック数を求める。そして、ファイルシステム部236がファイルエントリから抽出した楽音データの開始クラスタ(CL128)に基づき、最低音A-1から最高音C7まで夫々のノートに対応するPBNを決定し、図29に示すNNテーブル233Bを生成する。
以上メインルーチンにおいて、記録データ特性情報とメモリ構成情報を読み出し、各種パラメータの設定処理によってCPU部230Bは初期化処理(S100)を終える。そして読み出し指示部240からアクセス可の通知を受けると、S110から通常動作処理S101に移行し、割り込みをイネーブルにして外部のマスターキーボード300からの演奏データを受付ける。
[通常動作時の処理]
基本的な動作は、第1の実施の形態と同様であるので、ここでは、2つの相違点、即ち(1)読み出し指示情報の生成と(2)楽音データの書き込み処理について説明する。
(1)読み出し指示情報の生成
CPU部230Bは、マスターキーボード300の打鍵操作に応じたチャンネルアサイン処理の後、読み出し指示部240に対して読み出し要求と共に楽音データの読み出し指示情報を渡す。読み出し指示情報は以下の手順で求められる。
(a)打鍵データのNNに基づきNNテーブル233Bを参照し、先頭CLNを求める。
(b)先頭CLNとSCと式(18)に基づき、LSNを求める。
LSN=(先頭CLN<<6)+[{(SC&0xFFF8)<<2}|
(SC&0x0007)] ・・・(18)
但し、式(18)で求められたLSNは、(b4、b3)の値を0とし、MMNが値0の場合のLSNである。また、&は論理積をとる演算子、|は論理和をとる演算子、<<は左にビットシフトする演算子である。尚、“0x”は16進数を表す記号である。式(18)においてNNテーブルの先頭のCLNを6ビットシフトすることによって図28に示すb5〜22までの論理セクタ番号LSNとすることができる。またセクタカウントSCのb0〜b2をマスクして2ビットシフトさせることによってページ番号とすることができる。更にセクタカウントの下位3ビットを加えることによってLSNが得られる。
(c)式(18)により求められたLSNに基づき式(19)を実行することにより、図30Bに示すように読み出し指示情報を求める。なおLSNの上位18ビットはCLNに相当する。
読み出し指示情報=0x6000000|LSNの上位18ビット
|LSNの下位3ビット ・・・(19)
このようにしてCPU部230Bは読み出し指示情報を決定し、読み出し指示部240に渡す。読み出し指示部240は前述の場合と同様に、MMレジスタ242によって使用する不揮発性記憶モジュールを選択する。読み出し指示部240はこうして得られた読み出し指示情報を選択した不揮発性記憶モジュール100B〜140Bのいずれかに転送する。楽音データの読み出す動作については、第1の実施の形態と同様である。但し、前述したとおり本実施の形態ではメモリコントローラ111B〜141Bの論物変換処理によって、図30Bに示す読み出し指示情報のb20〜b11の10ビット分は、図28に示すようにPBNに変換され、その結果得られたPSNが不揮発性メモリバンク112〜142に与えられることとなる。
以降、楽音の出力までの一連の処理については第1の実施の形態と同じであり、発音遅延時間も同様にして1m秒以内にすることが可能となる。
(2)楽音データ書き込み処理
次にアクセスモジュール200Bの楽音データ書き込み処理について図31を中心に説明する。図31は、アクセスモジュール200Bの楽音データ書き込み処理を示すフローチャートである。楽音データの書き込みは入出力部210Bを通じてユーザの書き込み指示によって開始される。
まず、楽音データの書き込みに先立って、アクセスモジュール200Bが不揮発性記憶モジュール110B〜140Bに記憶されているデータを消去すべく、物理フォーマットを行う(S500)。図32はインターネット310から取得した楽音データのファイルアロケーションを示す説明図である。物理フォーマットにより論理アドレス空間が一旦論理消去され、ファイルシステム部236は書き込み指示部250を介して不揮発性記憶モジュール110B〜140Bに消去指示を転送する。なお消去指示の仕様に係る詳細説明は省略する。
ここで、簡単のため図28におけるLSNのb22〜b13とPSNのb20〜b11は一対一に対応しているものとする。そうすると、前述した消去指示により不揮発性メモリバンク112〜142のPB0〜PB1022は物理消去されることとなる。なお、PB1023は前述した通り、論理アドレスの範囲外であるので物理消去されない。更にPB0〜1022の物理ブロックが消去されたことを示すFATテーブル等をPB0に記録する(S501)。
図33Aは、楽音データの書き込み前における不揮発性メモリバンク112〜142の記憶状態を表す説明図である。図33Aにおいて、不揮発性メモリバンク112〜142のPB0には、前述した物理フォーマット(S500)の後の書き込みにより、通常領域が全て論理消去されていたことを管理するためのFATテーブルなどが記憶されている。それに伴い不揮発性メモリバンク112〜142のPB1〜PB1022は全て消去された状態となっている。
次に不揮発性メモリバンク142のPB1023に記憶されたメモリ構成情報(MSI)を読み出す(S502)。多重化部237はメモリ構成情報内のページサイズ(4kByte)を多重化単位サイズとする(S503)。
次にCPU部230Bは、入出力部210Bを介して入力されたユーザのダウンロード指示に応じて、インターネット310から楽音データのダウンロードを開始する(S504)。
インターネットからダウンロードされる情報は、図32に示すようにヘッダーと楽音データとからなる形式である。ヘッダーには楽音データ長や記録データ特性情報RDIなどが含まれる。CPU部230Bは記録データ特性情報をCL130943の最後尾のLSNにアロケートすると共に(S505)、書き込み指示部250は書き込み指示情報により記録データ特性情報を書き込む(S506)。この時、書き込み指示情報は不揮発性記憶モジュール140Bに転送され、メモリコントローラ141Bは不揮発性メモリバンク113のPB1022のP255の最後尾のPSNに記録データ特性情報を書き込む。
なお前述した書き込みにおいて、書き込み先の物理ブロックが不良ブロックになった場合は、メモリコントローラ141Bが他の空き物理ブロックをサーチし、該空きブロックに書き込み直すと共に、該空きブロックを論物変換テーブルに登録することとなる。他のメモリコントローラ111B〜131Bも同様である。
次にCPU部230Bの多重化部237は、図32に示すように、多重化単位サイズ(4kByte)毎に並列数(4並列)分、楽音データを論理アドレス空間に多重化して、多重化した楽音データをファイルシステム部236に渡す。ファイルシステム部236はこの多重化された楽音データを論理アドレス空間にアロケートする(S507)。なお図32においては、簡単のために楽音データの先頭のアロケート先をCL128としたが、空きクラスタであればどこを先頭クラスタとしてもよい。
前述したアロケートに伴い、CPU部230Bは図28に示すLSNを書き込み指示部250に渡し、書き込み指示部250は該LSNからビットb3,b4を除き、図34に示す書き込み指示情報を生成する。そして書き込み指示部250は記憶モジュール100Bに転送することにより楽音データの書き込みを行う(S508)。この時、図28に示すLSNのMMNによって転送先となる不揮発性記憶モジュールが決まる。例えば、図32のLS8192〜8199はMMNが値0となるので、LS8192〜8199に対応する楽音データは不揮発性記憶モジュール110Bに書き込まれることとなる。
その後、楽音データと、該楽音データに対応する記録データ特性情報をセットとして1つの楽音データファイルとして登録すべく、FATテーブルの書き込みと(S509)、ファイルエントリの書き込みを行う(S510)。
こうして最低音から最高音までの楽音データを不揮発性メモリバンク112〜142に多重化して書き込むことにより、その記憶状態は図33Aに示す状態から図33Bに示す状態に変化する。図33Bは、楽音データの書き込み後における不揮発性メモリバンク112〜142の記憶状態を表す説明図である。図33Bにおいて、楽音データは不揮発性メモリバンク112〜142のPB1〜PB704に記憶され、記録データ特性情報は不揮発性メモリバンク142のPB1022に記憶される。またFATテーブルやファイルエントリなどの管理情報は、不揮発性メモリバンク112〜142のPB0に記憶されたものから更新されるため、その他の空き物理ブロックの中で不揮発性メモリバンク112〜142のPB705に記憶される。なお空き物理ブロックであれば、PB705に限定されることはない。
以上のように、アクセスモジュール200Bが、インターネット310などから取得した楽音データを、メモリ構成情報に基づいて論理アドレス空間上に多重化してアロケートし、さらに該アロケートに伴い記憶モジュール100Bに楽音データを書き込む。こうして得られた楽音データを保持する記憶モジュール100Bをアクセスモジュール200Bに接続する。そしてマスターキーボード300の打鍵に応じて発音させることにより、簡単に音色の更新ができる。
また記憶モジュール100Bに記憶された楽音データはファイルシステム部236によって楽音データファイルとして管理されるので、同じファイルシステム(FATファイルシステム)に基づくパーソナルコンピュータなどの装置で管理したり編集したりすることができる。また他の記録装置や記録媒体などへのコピーも容易に行うことができる。
なお、楽音データを不揮発性メモリバンク112〜142に書き込む際に、不良ブロックが発生した場合は、各メモリコントローラが論物変換を行い、空きの良ブロックに書き込み直せばよい。
なお、アクセスモジュール200Bが記憶モジュール100Bに書き込む楽音データをインターネット310から取得したが、パーソナルコンピュータなど他の装置から取得するようにしても構わない。
以上のように、第2の実施の形態に示す楽音生成システムでは、不揮発性メモリバンク112〜142毎に楽音データを記録することにより多重化しておき、読み出し指示部240が、前記複数の不揮発性メモリバンクから並列的に楽音データを読み出すようにした。このため楽音生成システムのような、どの音高の楽音データの読み出し指示がなされるか予想のつかないシステムにおいても、複数のデータの読み出し時に複数の不揮発性メモリバンクから並列的に読み出すことができる。従って発音遅延時間をその許容範囲である1m秒よりも短くすることができる。即ち、現在主流である大容量の多値NANDフラッシュメモリを楽音データ用のメモリとして使用した場合においても、低価格かつ小型の楽音信号発生装置を実現することが可能となる。
さらに、第2の実施の形態における楽音生成システムはFATファイルシステムに基づいたシステムである。FATファイルシステムは汎用的なファイルシステムであり、アクセスモジュールによって楽音データを書き込むことができる。従ってユーザが好みに応じて書き換えた楽音データを用いることができるので、汎用性の高いシステムであると言える。
(第3の実施の形態)
次に本発明の第3の実施の形態におけるデータ書き込みシステムについて、図35を用いて説明する。本実施の形態のデータ書き込みシステムは、データ書き込みモジュール400と記憶モジュール100Bとから構成される。記憶モジュール100Bは、前述した第2の実施の形態における記憶モジュール100Bと同じものである。データ書き込みモジュール400は第2の実施の形態のアクセスモジュール200Bのデータ書き込みのための機能を抽出したもので、図35に示すように、入出力部410、CPU部420、書き込み指示部430を含む。データ書き込みモジュール400の入出力部410にはインターネット310が接続されており、ユーザによるダウンロードの指示に応じて必要なデータをダウンロードできるものとする。CPU部420は第2の実施の形態と同様のファイルシステム部236、及び多重化部237を含む。データ書き込みモジュール400は第2の実施の形態のアクセスモジュール200Bのデータ書き込み処理を実行するので、詳細な説明を省略する。
またデータ書き込みモジュール400はパーソナルコンピュータなどの装置であってもよく、パーソナルコンピュータなどに組み込まれたアクセス回路モジュールであってもよい。
以上のように、第3の実施の形態に示すデータ書き込みモジュールでは、楽音データをファイルとして多重化して書き込んで管理できるので、インターネットなどからダウンロードした楽音データを不揮発性記憶モジュールに書き込むことにより簡単に音色の更新ができる。尚、楽音データはインターネット以外のソースから取り込むようにしてもよい。
(第4の実施の形態)
次に本発明の第4の実施の形態におけるデータ書き込みシステムについて図36を用いて説明する。本実施の形態のデータ書き込みシステムは、データ書き込みモジュール400と記憶モジュール100Bとから構成される。本実施の形態のデータ書き込みシステムは、基本的に第3の実施の形態のデータ書き込みシステムとほぼ同様であり、相違点は楽音データの取得元がインターネット310ではなく、記憶モジュール100Bの中の1つの不揮発性記憶モジュールである点である。ここでは不揮発性記憶モジュール110Bのデータを他のモジュールにも書き込むものとし、以下、マスター記憶モジュールという。なお、マスター記憶モジュールはデータ書き込みモジュール500に着脱可能なモジュールとする。
不揮発性記憶モジュール110Bがデータ書き込みモジュール500に装着されると、入出力部510は装着された不揮発性記憶モジュール110Bがマスター記憶モジュールであると判別する。このときCPU部520のファイルシステム部236は、自動的にマスター記憶モジュールに記憶された楽音データを読み出し、多重化部237によってそのデータを多重化する。そして書き込み指示部530の制御に基づいて不揮発性記憶モジュール110B〜140Bに多重化して書き込む。データ書き込みモジュール500は第2の実施の形態のアクセスモジュール200Bのデータ書き込み処理を実行するので、詳細な説明を省略する。なお、入出力部510は、ユーザのコピー指示に基づいて、マスター記憶モジュールの判別と、楽音データの読み出し開始を判断しても良い。
また入出力部510は前述したようにマスター記憶モジュールを判別するので、ファイルシステム部236はマスター記憶モジュールには再度書き込まないように制御することも可能である。
またデータ書き込みモジュール500はパーソナルコンピュータなどの装置であってもよく、パーソナルコンピュータなどに組み込まれたアクセス回路モジュールであってもよい。
以上のように、第4の実施の形態に示すデータ書き込みモジュールでは、楽音データをファイルとして多重化して書き込んで管理できるので、マスター記憶モジュールから読み出した楽音データを不揮発性記憶モジュールに書き込むことにより簡単に音色の更新ができる。
第1〜4の実施の形態においてはピアノの音をデジタル録音したデータを楽音データとして不揮発性メモリバンク112〜142に記録したが、ピアノ以外の楽器音や音声、あるいはその他のデータを記憶しても構わない。また楽音データは、デジタル録音したデータではなく人工的に作られたデータであってもよい。またMP3などの圧縮技術によって圧縮されたデータであっても構わない。但しその場合は信号処理部220に該圧縮データを伸張する処理、即ちデコード処理を実行させる必要がある。また打鍵強度に対応して2種類の楽音データを予め記憶したが、1種類あるいは3種類以上であっても構わない。但し1種類の場合は、信号処理部220による補間処理は不要であり、3種類以上の場合は該補間処理の方法を3点間直線補間などに拡張すればよい。また補間処理ではなくフィルタリング処理を用いても構わない。
尚、1つの鍵盤に対応する楽音データを約40秒分としたが、それに限定されることはなく、またNNに応じて楽音データの時間長を変えてもよい。通常ピアノの場合は低音ほど発音時間が長いので、低音側の楽音データの時間長を比較的長めにして、高音側の楽音データの時間長を比較的短めにした方が記憶容量を合理化でき好ましい。また、楽音データの多重化に際して、不揮発性メモリバンク112〜142に同一の楽音データを記録するようにしたが、聴感上同じように聞こえるのであれば、不揮発性メモリバンク112〜142間で楽音データの値が多少違っていても差し支えない。
記憶モジュール100A,100Bはメモリカードのようなリムーバブル記憶装置であってもよいし、電子楽器などの装置に組み込まれたメモリ部であってもよい。また、アクセスモジュール200A,200Bは電子楽器などの装置であってもよいし、電子楽器などの装置に組み込まれたアクセス回路部であってもよい。
第1〜4の実施の形態においては不揮発性記憶モジュールの数を4個としたが、それ以外の数であっても構わない。不揮発性記憶モジュールの数が多いほど、より発音遅延時間を短くすることができる。また、セクタサイズ即ち1回あたりの楽音データの読み出しサイズを512Byteとしたが、その他のサイズであってもよい。該サイズが小さいほど楽音データバッファのRAM容量を合理化できるが、必要以上に小さくすると楽音生成処理が破綻する。また、1つの不揮発性記憶モジュール内に複数不揮発性メモリバンクを含んでも構わない。
尚、第1〜4の実施の形態においては図14AのS202〜S208に示す通り、不揮発性記憶モジュール群のアサイン状況に応じて読み出し指示情報の転送先の不揮発性記憶モジュールを決定するようにしたが、例えば下記(a)〜(d)に示すようにCHNとMMNとの関係を固定化しても構わない。
(a)CH0、4、8、12、16、20、24、28
・・・MM0(不揮発性記憶モジュール110A,110B)
(b)CH1、5、9、13、17、21、25、29
・・・MM1(不揮発性記憶モジュール120A,120B)
(c)CH2、6、10、14、18、22、26、30
・・・MM2(不揮発性記憶モジュール130A,130B)
(d)CH3、7、11、15、19、23、27、31
・・・MM3(不揮発性記憶モジュール140A,140B)
尚、楽音データをページ内に連続的に配置したが、配置の規則性を記憶モジュール100A,100Bやアクセスモジュール200A,200Bが認識していれば、不連続であっても構わない。また、第1の実施の形態ではPB0を先頭ブロックとして楽音データの最低音から順に連続的に配置したが、配置の規則性を記憶モジュール100A,100Bやアクセスモジュール200A,200Bが認識していれば、PB0が先頭ブロックでなくてもよく、また不連続であっても構わない。
尚、不揮発性メモリバンクをフラッシュメモリとしたが、本発明はその他の不揮発性メモリを用いた場合に適用できる。
不揮発性メモリバンクに楽音データ特性情報とメモリ構成情報とを保持するようにしているが、これらの情報を保持する別の不揮発性メモリを設けておいてもよい。あるいは、前記メモリ構成情報は、予め規格化された情報として扱っても構わない。
尚、メモリコントローラ111A,111B〜141A,141Bはアクセスモジュール200A又は200B側にあっても構わない。その場合、不揮発性メモリバンク112〜142は夫々が1つのメモリチップにパッケージされたものであってもよいし、あるいは不揮発性メモリバンク112〜142の中の2個以上をまとめて1つのメモリチップにパッケージされたものであってもよい。
尚、マスターキーボード300から演奏情報を入力したがそれ以外の形態の入力コントローラ、例えば弦を弾くことによって演奏データを出力するギター型のコントローラや、物を叩くことによって演奏データを出力するスティック型のコントローラ、あるいは加速度センサを備えたもので、それを振る動作に従って演奏データを出力するタイプのコントローラであってもよい。また、パーソナルコンピュータなどの装置から、あるいはネットワークを介してスタンダードMIDIファイルのような演奏データをアクセスモジュール200Bに入力するようにしても構わない。
図12は、記憶モジュール100Aのメモリ構成情報の一例を示す説明図である。ここで図12のセクタサイズは1回の読み出し指示毎に読み出すデータのサイズを示しており、リードタイムTRはメモリセルアレイからIOレジスタへの読み出し時間を示す。転送時間TT1は各メモリバンクのIOレジスタからメモリコントローラ内にバッファリングする時間を示す。なお、図12のTRとTTを合わせて期間を読み出し単位とし、その時間を読み出し単位時間とする。尚図12のテーブルにおいて、備考欄は実際に記録されているものではなく、参考情報である。