JP2010224078A - 楽音生成装置 - Google Patents

楽音生成装置 Download PDF

Info

Publication number
JP2010224078A
JP2010224078A JP2009069358A JP2009069358A JP2010224078A JP 2010224078 A JP2010224078 A JP 2010224078A JP 2009069358 A JP2009069358 A JP 2009069358A JP 2009069358 A JP2009069358 A JP 2009069358A JP 2010224078 A JP2010224078 A JP 2010224078A
Authority
JP
Japan
Prior art keywords
memory
waveform
channel
data
sample data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009069358A
Other languages
English (en)
Other versions
JP5360474B2 (ja
Inventor
Taro Shirahama
太郎 白濱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2009069358A priority Critical patent/JP5360474B2/ja
Publication of JP2010224078A publication Critical patent/JP2010224078A/ja
Application granted granted Critical
Publication of JP5360474B2 publication Critical patent/JP5360474B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

【課題】NAND型フラッシュメモリに波形データを格納しておき、そこから波形データをバッファ経由で波形メモリに読出しつつ再生を行う楽音生成装置において、CPUにかかる負荷を軽減し、バランスの良い設計が実現できるようにすること。
【解決手段】CPUへの割込み無しで、NAND型フラッシュメモリに格納した波形データのページ単位での読出しを行い、波形メモリのバッファにサンプル補充ができるようにする。第1メモリからページ単位で読出して第2メモリへ書込む転送部は、各chで1ページ分のサンプルデータが第2メモリのバッファ領域から読出されている間に、波形位置情報に基づいて、そのページの次の1ページ分のサンプルデータを第1メモリから読出して当該chのバッファ領域に書込む。基本再生期間のうちに第1メモリから読出し可能な最大ページ数を全帯域幅とし、そこから各chの帯域幅を割り当てる。
【選択図】図5

Description

本発明は、波形メモリ方式の楽音生成装置に関し、特に、NAND型フラッシュメモリに波形データを格納しておき、そこから波形データをバッファ経由で波形メモリに読出しつつ再生を行う楽音生成装置に関する。
従来より、ハードディスク(HD)に波形データを格納しておき、該HDからバッファに波形データを読出しつつ、該バッファから波形データを波形メモリに読出して、再生する楽音生成装置が知られている(例えば、特許文献1,2)。このような楽音生成装置では、発音指示があってからHD上の波形データをバッファ経由で波形メモリに読出して再生するのでは発音開始に遅れがでてしまうので、装置の電源オン時に、予め各波形データの先頭部を波形メモリ上に読込むようにしている。そして、発音指示があったとき、直ちに波形メモリ上の当該先頭部のデータの再生を開始し、その先頭部の再生を行っている間に、引き続く波形データをHDからバッファ経由で波形メモリに読出す。先頭部の再生が終わった後は、前記波形メモリに読出してある波形データの再生を行いつつ、その再生の間に、次にさらに引き続く波形データをHDからバッファ経由で波形メモリに読出す。このような処理を繰り返して、再生を続ける。これにより、発音指示があったときに遅れなく発音開始することができる。
上記の方式では、バッファに読込まれた1クラスタ分の波形データ(サンプルデータ)が波形メモリに読出されるごとに(すなわち、バッファが空になると)、CPUに対して転送要求割込みが発生する。該転送要求割込みに応じて、CPUは、次に読出すべきHD上の1クラスタを特定して、そのクラスタのHDからバッファへの転送を転送部に指示する。従って、CPUの割り込み処理は必須である。
また、バースト転送を利用した波形メモリ音源として、下記特許文献3に記載の技術がある。これは、波形メモリから読出した波形サンプルを一旦バッファメモリに記憶し、バッファメモリから必要な波形サンプルを選択的に読出して楽音生成するものである。波形メモリからバッファメモリへの波形サンプルの読出しは、複数サンプル単位でバースト転送する。バースト転送することにより、アクセス時間を短縮することができる。
一方、近年ではNAND型フラッシュメモリの大容量化およびコスト低下が進み、種々の装置で、大容量のデータ格納手段として、HDとともにNAND型フラッシュメモリを使用する試みが為されている。NAND型フラッシュメモリは、ページ(HDのクラスタに相当する)の頭出しに時間がかかるが、読出しが始まった後のデータ転送速度は速い。また、エラー訂正コードによるエラー訂正が必須である。
特許第2671747号公報 特許第4089687号公報 特許第3163984号公報
上述のHDを利用した楽音生成装置では、HDのアクセス速度がボトルネックとなり、同時に再生できるch数が制限されるという問題がある。楽音生成装置では、できる限り同時発音ch数を増やすことが望まれる。そこで、HDを利用する代わりにNAND型フラッシュメモリを使用することが考えられる。NAND型フラッシュメモリのアクセス速度はHDよりも速いため、読出しの単位であるクラスタ(ページ)のサイズを大幅に小さくする(10分の1以下)ことができる。しかしながら、その場合、CPUに対する転送要求の割込みの頻度が大幅に増加してしまう(10倍以上)。すなわち、CPUにかかる負荷が大きく増加するという問題がある。
また、HDのアクセス速度をボトルネックとして設計された従来技術の方式において、HDをそのままNAND型フラッシュメモリに置き換えたのでは、バランスの良い設計とは言い難い。
本発明は、NAND型フラッシュメモリに波形データを格納しておき、そこから波形データをバッファ経由で波形メモリに読出しつつ再生を行う楽音生成装置において、CPUにかかる負荷を軽減し、バランスの良い設計が実現できるようにすることを目的とするものである。
上記目的を達成するため、本発明は、所定数Sのチャンネルを備え、それらの各チャンネルでそれぞれ所定サンプリング周波数の楽音を生成する楽音生成装置において、CPUへの割り込み無しで、NAND型フラッシュメモリ等に格納した波形データのページ単位での読出しを行い、波形メモリのバッファにサンプル補充ができるようにしたことを特徴とする。まず、一連の波形データを、高速ページ読出し可能なNAND型フラッシュメモリ等の第1メモリの複数ページに記憶しておく。また、各chのバッファ領域を有する第2メモリを備える。前記第1メモリからページ単位で読出して前記第2メモリへ書込む転送部は、各chで1ページ分のサンプルデータが前記第2メモリのバッファ領域から読出されている間に、波形位置情報に基づいて、そのページの次の1ページ分のサンプルデータを前記第1メモリから読出して当該チャンネルのバッファ領域に書込む。また、1ページ分のサンプルデータをサンプリング周期ごとに1サンプルの速度で再生した場合の基本再生期間のうちに前記第1メモリから読出し可能な最大ページ数をT(このTを「全帯域幅」と呼ぶ)とするとき、該Tと前記Sとの大小関係はT>Sであるようにする。制御部は、新たな楽音の音高と発音開始を示す演奏情報に応じて、各種のパラメータを制御レジスタに設定して発音開始を指示する。
特に、請求項1に係る発明(後述する第1実施例に対応する)は、制御部が、(1)前記複数の波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を商(T/S)の整数部に対応する値以下となるように決定し、(2)該楽音に、前記所定数Sあるチャンネルのうちの1つを割り当て、(3)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、(4)該割り当てたチャンネルに発音開始を指示することを特徴とする。
請求項2に係る発明(後述する第1実施例に対応する)は、制御部が、(1)前記複数の波形データのうちの、決定される前記速度情報を商(T/S)の整数部に対応する値以下とすることができる波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を決定し、(2)該楽音に、前記所定数Sあるチャンネルのうちの1つを割り当て、(3)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、(4)該割り当てたチャンネルに発音開始を指示することを特徴とする。
請求項3に係る発明(後述する第2実施例に対応する)は、制御部が、(1)前記複数の波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を決定し、(2)該楽音に、前記所定数Sあるチャンネルのうちの1つを割り当て、(3)前記全帯域幅Tから、該楽音の前記速度情報に応じて前記基本再生期間のうちに読出す必要のあるサンプルデータのページ数を示す帯域幅Uを割り当て、(4)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、(5)該割り当てたチャンネルに発音開始を指示することを特徴とする。
請求項4に係る発明(後述する第3実施例に対応する)では、前記Tと前記Sとの大小関係はT≦Sであるようにする。また、制御部が、(1)前記複数の波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を決定し、(2)前記全帯域幅Tから、該楽音の前記速度情報に応じて前記基本再生期間のうちに読出す必要のあるサンプルデータのページ数を示す帯域幅Uを割り当て、(3)該楽音に、前記所定数Sあるチャンネルのうちの、その時点で空きチャンネルとなっている1つを割り当て、(4)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、(5)該割り当てたチャンネルに発音開始を指示することを特徴とする。
本発明によれば、転送部によるページ単位の転送は、制御部(CPU)に対する割り込みを行うことなしに、自動的に行われる。従って、CPUの負荷は軽減できる。また、第1メモリから第2メモリへの波形サンプルの転送の際の各部のボトルネックを考慮したバランスの取れた設計を行うことができる。
特に、請求項1,2に係る各発明では、発音指示された楽音を、割り当てたchで、生成させることができる。また、速度情報(Fナンバ)が商(T/S)の整数部に対応する値以下になるようにしているので、第1のメモリの帯域幅の割り当てを別途行う必要がない。
請求項3に係る発明では、全帯域幅から各chの帯域幅を割り当てるようにしているので、発音指示された楽音を、割り当てたchで、割り当てた帯域幅を用いて、生成させることができる。また、第1のメモリの全帯域T内で発音に使用する帯域幅の割り当てを行っているので、速度情報の上限を制限する必要がない。
請求項4に係る発明では、発音指示された楽音を、割り当てた帯域幅を用いて、割り当てたchで、生成させることができる。第1のメモリの全帯域T内で発音に使用する帯域幅を割り当てることにより、複数chのうちの少なくとも1つのchが空きchとなるので、chの割り当て処理を、その時点の空きchの1つを選択するだけの簡単な処理とすることができる。
本発明の実施の形態に係る楽音信号生成システムの全体構成図 NAND型フラッシュメモリのメモリマップを示す図 波形メモリのメモリマップを示す図 波形データの転送のタイミングを説明するためのタイムチャート図 音源部と転送制御部に関する詳細図 発音開始以降の各種アドレスの時間変化(1ch分)を示す図 ノートオンイベント処理および発音割当処理のフローチャート 発音割当処理の別の実施例のフローチャート
以下、図面を用いて本発明の実施の形態を説明する。
図1は、本発明の実施の形態に係る楽音生成装置の全体構成を示す。この楽音生成装置は、汎用のPC(パーソナルコンピュータ)にサウンドボードを実装して構成してもよいし、汎用のPCではなく電子楽器などの楽音信号生成を行う専用の装置として構成してもよい。
図1において、CPU101は、装置全体の動作を制御する処理装置である。ランダムアクセスメモリ(RAM)102は、CPU101が実行するプログラムのロード領域やワーク領域に使用する揮発性メモリである。NOR型フラッシュメモリ103は、イニシャルプログラムローダなどのプログラムや音色データなどの各種のデータを格納した書き替え可能な不揮発性メモリである。操作子104は、本システムを汎用PCで構成する場合はキーボードやマウスなどであり、電子楽器などとして構成する場合は外部パネル上に設けられた各種のスイッチなどの操作子である。表示器105は、各種の情報を表示するためのディスプレイである。MIDI I/O106は、各種のMIDI機器と接続しMIDI信号を入出力するインターフェースである。
NAND型フラッシュメモリ107は、複数の波形データを格納した書き替え可能な不揮発性メモリであり、ページ単位(ここでは、1ページ=2048バイト)でデータが読み書きされる。ページ単位のデータ読出しは、バースト転送で高速に行うことができる。NAND型フラッシュメモリ107のメモリマップは、図2で詳しく説明する。DP RAM109は、NAND型フラッシュメモリ107から波形メモリ111への波形データ転送用のバッファメモリであり、同時読み書きが可能なデュアルポート(2−port)の半導体メモリにより構成されている。その容量は、1ページ(2048バイト)+エラー訂正コード分である。DP RAM109は、スタティックRAM(SRAM)で構成されている。波形メモリ111は、各波形データの先頭ページ(クラスタ)のデータを予め記憶しておくプリロード領域と、各発音チャンネル(ch)毎の2ページ分のバッファ領域とを有する。波形メモリ111は、シンクロナスダイナミックRAM(SDRAM)で構成されている。波形メモリ111のメモリマップは、図3で詳しく説明する。なお、DP RAM109と波形メモリ111とは、ランダムアクセス(個別にアドレスを指定して行う読み出しまたは書き込み)を、フラッシュメモリ107に比較して、極めて高速に行うことができる。さらに、連続したアドレスへのアクセスは、バーストモードを用いて高速化することができる。
F→DP転送部108は、NAND型フラッシュメモリ107からDP RAM109に波形データをページ単位で転送する処理を行う。DP→M転送部110は、DP RAM109から波形メモリ111に波形データを(1ページ分のデータを所定回数に分けて)転送する処理を行う。これらの転送部108,110は、転送制御部112による制御の元で動作する。転送の動作のタイミングについては、図4などで詳しく説明する。転送制御部112は、フラッシュメモリ107からDP RAM109への転送とDP RAM109から波形メモリ111への転送とを制御する。複数の転送要求が生じた場合は、(1度に1ページしか転送できないので)先着順に1ページずつ転送するよう制御する。なお、現在入手できるNAND型フラッシュメモリのデータ幅は8ビットに限定される。そのため、F→DP転送部108は、NAND型フラッシュメモリの連続する2アドレスから読み出した2データをつなげて16ビットのデータに変換し、データ幅が16ビットであるDP RAM109に書き込む。また、波形メモリ111のデータ幅も16ビットであり、各アドレスに16ビットのデータが記憶される。従って、DP→M転送部110は、上記F→DP転送部108で行っているような変換を行わなくてよい。
音源113は、複数の発音ch(ここでは128chとする)を備えており、各発音ch毎に読出しアドレスを生成して波形メモリ111から波形データ(波形サンプルデータ)を読出し、読出された波形データに対してエンベロープ付与を行い、各発音ch毎の楽音信号を生成する。さらに、音源113は、生成された複数chの楽音信号を混合し、混合された楽音信号に対してリバーブなどの効果を付与する。音源113から出力された楽音信号は、DAC(ディジタルアナログ変換器)114によりアナログ音響信号に変換され、サウンドシステム115により放音される。
図2は、NAND型フラッシュメモリ107のメモリマップを示す。NAND型フラッシュメモリは、マスクROMよりもコストが安く、ページの頭出し(ここで言う「頭出し」とは、フラッシュメモリにリードコマンドとリードアドレスが与えられてからデータ読出しが開始されるまでの時間区間あるいはそこで行われる処理を指すものとする)に時間が掛かるが、読出しが始まった後のデータ転送速度は速い(バースト転送)という特徴を有する。NAND型フラッシュメモリ107には、予め複数の波形データWave1,Wave2,…を格納しておく。1つの波形データ、例えばWave2は、アドレスが連続した複数のページW2(0),W2(1),…に記憶する。なお、各波形データWave*(*は1,2,…)の連続する複数のページあるいはそのページに記憶された波形サンプルデータは、W*(0),W*(1),…と表記するものとする。上述したとおり、1ページは2048バイト(1024ワード=1024サンプル)である。1つの波形が連続した複数のページに記憶されているので、どのページを読出すかページ毎に指示しなくてもよく、ch毎にページの指示は1回で済む。なお、各波形データWave1,Wave2,…のそれぞれの先頭ページ(W*(0))だけを、別の箇所にまとめて記憶するようにしてもよい。その場合でも、第2ページ(W*(1))以降は、それぞれ連続して記憶されていなければならない。図中、WAは、波形データの第2ページW*(1)のアドレスを設定する制御レジスタの1つである(後に詳しく説明する)。また、NAND型フラッシュメモリ107は、8ビット幅でデータを読み書きするものとする。
図3は、波形メモリ111のメモリマップを示す。波形メモリ111には、プリロード領域301とバッファ領域302が設けられている。プリロード領域301は、図2に示したNAND型フラッシュメモリ107に記憶されている波形データWave1,2,…の数分の各先頭ページW1(0),W2(0),W3(0),…を記憶する領域である。プリロード領域301への各先頭ページの記憶は、システム立ち上げ時に行われる。バッファ領域302には、発音ch数×2のバッファ、すなわち各発音ch毎の2つのバッファ(1つのバッファの大きさは1ページ=2048バイトである)が設けられている。発音chi(iは1,2,…,128)に対応する領域をBia,Bibで表す。Bia,Bibは、波形メモリ111のアドレス空間内に連続して配置される。
PAは、音源113が波形メモリ111から波形サンプルを読出す際、最初に読出すべきプリロード領域301中の先頭ページの読出しアドレスを設定する制御レジスタの1つである。この図では第2chで波形データWave3の再生が指定されたケースを示しており、PAでその先頭ページW3(0)が指定されている。矢印311は、音源が当該先頭ページの波形サンプルを読出す際の読出しアドレス(ピッチカウンタ)の進行方向を示す。BAは、前記プリロード領域301の先頭ページを読み終えた後、バッファ領域302中のどのバッファから波形サンプルを読出すかを示す読出しアドレスを設定する制御レジスタの1つである。この図では第2chでの再生が指定されているので、ページW3(0)を読み終えた時点の初期値として、BAには、第2chが使用するバッファB2a,B2bの先頭アドレスが設定される。矢印312は、読出しアドレス(ピッチカウンタ)の進行方向を示す。矢印312のようにバッファB2aとB2bを読出した後、引き続きバッファの先頭に戻って矢印313,314のように読出しを続ける。このような波形メモリの読出しを行うためには、プリロード領域W3(0)の読出しを行っている間に、次に読出すべき波形サンプルデータをバッファB2aに格納し、さらにバッファB2aを読出している間にバッファB2bに波形サンプルデータを格納し、次にバッファB2bを読出している間にバッファB2aに波形サンプルデータを格納し、…というようにバッファB2aとB2bとを交互に使用して再生を続ける。なお、各chのバッファ数は3以上であってもよい。また、波形メモリ111は、16ビット幅でデータを読み書きするものとする。
図4(a)は、転送制御部112の制御の元で転送部108,110が実行する波形データの転送のタイミングを説明するためのタイムチャートである。矢印tの向きに時間が進むものとする。複数の縦線401はサンプリングクロックの発生タイミングを示し、隣り合う縦線401の間の区間が1サンプリング周期(以下、1DACという)を示している。本実施形態では、1DACは22.67n秒である。「NAND型フラッシュ→DPメモリ」と記載したタイムチャートは、F→DP転送部108によりNAND型フラッシュメモリ107からDP RAM110に、1ページ分の波形サンプルとエラー訂正コードを転送する処理のタイムチャートである。「DPメモリ→波形メモリ」と記載したタイムチャートは、DP→M転送部110によりDP RAM110から波形メモリ111のバッファ領域(その中の指定したchに対応するバッファ)に、1ページ分の波形サンプルを転送する処理、および、音源113が波形メモリ111から波形サンプルを読出す処理のタイムチャートである。
411は、NAND型フラッシュメモリ107の頭出しを行っている期間を示す。頭出し411の後、412に示すように、1ページ分のデータ2048バイトがページ読出し(バースト転送)される。413はエラー訂正コードの読出し期間を示す。本実施形態では、411〜413に示すように、4DACでNAND型フラッシュメモリ107から1ページのデータおよびエラー訂正コードを読出してDP RAM107に書込むことができる。この4DACという転送時間は、NAND型フラッシュメモリ107のページ読出し(バースト転送)に関する仕様に基づいて決まるものである。
421は、音源113が楽音生成のために波形メモリ111から128ch分の波形サンプルを読出す期間である。422は、DP RAM107上の1ページ分の波形サンプルを波形メモリ111の対応するchのバッファに転送する期間を示す。この転送は、DRAM間のデータ転送であり、バーストモードによる高速なデータ転送を行うものとする。423は、波形メモリ111のリフレッシュを行う期間である。リフレッシュ423の区間の時間長さは、波形メモリ111の仕様により決まる。1DACからリフレッシュ423の区間を除いた区間を、波形サンプル読出し区間421とバースト転送区間422とで分けあう。
波形サンプル読出し区間421の時間長さは、本装置で何chの楽音生成を行うか、および、各chで何点補間を行うかという要求仕様、並びに、音源113が時分割で各chの波形サンプルを波形メモリ111から読出すときにどれ程の時間分解能で1DAC中に何サンプル読出し可能かという仕様に基づいて、設計者が決める。バースト転送422の区間の時間長さは、この区間で何サンプルの転送を行う必要があるかという要求仕様、および、DP RAM107から波形メモリ111へのバースト転送に関する速度の仕様に基づいて、設計者が決める。ただし、DP RAM107は読出しと書込みが同時に実行可能なメモリで、その大きさは1ページ+エラー訂正コード分であるから、フラッシュメモリ107からDP RAM107へ読出した1ページデータは、フラッシュメモリ107からDP RAM107へのページ読出しにかかるDAC数と同じDAC数で、DP RAM107から波形メモリ111に転送する必要がある。従って、1回のバースト転送422の区間では、1ページデータのサンプル数を前記DAC数で割ったサンプル数(小数点以下切上げ)の転送を行う必要がある。本実施形態では、フラッシュメモリ107の1ページ分のデータ2048バイト=1024サンプルをDP RAM107に読出すのに4DACかかるので、DP RAM107に読出された1ページ分のデータを波形メモリ111に転送するのも4DACに分けて行う。従って、1回のバースト転送区間422では、1ページ分のデータ2048バイト=1024サンプルの4分の1に当たる256サンプルを転送する。
本実施形態では、各chは2点補間を行い、全部で128chの楽音生成を行うことを前提とし、その処理を可能にするために必要な波形サンプル読出し区間421の時間長さが確保されているものとする。また、1DACから波形サンプル読出し区間421とリフレッシュ423を除いた区間422で、256サンプル=512バイトのバースト転送が可能なハードウェアを用いているものとする。なお、4DACで1ページデータをDP RAM107から波形メモリ111へ転送し終えた後、区間425で、DP RAM107内のエラー訂正コードに基づいて、それまでに波形メモリ111のバッファ領域に転送した1ページ分の波形サンプル2048バイトのエラー訂正を行う。NAND型フラッシュメモリでは、このようなエラー訂正が必須である。
なお、DPメモリ→波形メモリのバースト転送は、NAND型フラッシュ→DPメモリの転送が開始されたタイミングから2DAC遅れたDAC周期から開始する。これは、付番412に示した2048バイト=1024サンプルの1ページデータを付番422に示したバースト転送で256サンプルずつ4回に分けて転送することが可能となるように(要するに4回のバースト転送のそれぞれについて、そのバースト転送が開始するまでに、そのバースト転送で転送する256サンプルのデータがNAND型フラッシュメモリ107からDP RAM109に転送し終えているように)、2DAC遅れさせているものである。(従って、DP RAM109は、2−portでなくとも良く、例えば図1の121,122に示すような2個のRAMでも良いが、ここでは書込みと読出しを安全に行うために2−portのRAMを用いた。)
図5は、音源部113と転送制御部112に関する詳細図である。音源部113は、制御レジスタ(音源レジスタ)501を備える。制御レジスタ501は、各ch毎のパラメータおよびノートオンNONを記憶するレジスタである。CPU101は、例えばMIDI I/O106経由で楽音発生指示を受けたとき、楽音生成するchを割り当て、そのchに対応する制御レジスタに、その演奏情報に基づくパラメータを設定してノートオンを書込む。これにより、音源113は、そのchでの楽音生成処理を開始する。各レジスタの詳細を以下に示す。
(1)WA:図2で説明したNAND型フラッシュメモリ107中の当該chで読出す波形データWave*の第2ページW*(1)のアドレスをセットする。
(2)PA:図3で説明した波形メモリ111のプリロード領域301中の当該chで読出す波形データWave*の先頭ページW*(0)のアドレスをセットする。システム立上げ時に、NAND型フラッシュメモリ107の全波形データWave1,2,…の先頭ページW1(0),W2(0),…が、プリロード領域301に既に格納されている。
(3)BA:図3で説明した波形メモリ111のバッファ領域302中の当該chに対応する1組のダブルバッファBna,Bnbのアドレスをセットする。
(4)F:Fナンバをセットする。Fナンバは、読み出される波形データのピッチをシフトするパラメータであり、その値は発生させたい楽音のピッチ(音高)に応じて決定される。すなわち、Fナンバの値は、波形データのピッチからシフトしなくてよい場合は「1」とされ、ピッチアップしたいときは「1」より大きな値とされ、ピッチダウンしたいときは「1」より小さな値とされる。
(5)IL,HT,1DR,1DL,2DR,2DL,RR:楽音のエンベロープを制御するためのパラメータをセットするレジスタである。ILはイニシャルレベル、HTはホールドタイムを示す。これらは、楽音発生開始からホールドタイムHTの時間区間は、エンベロープ波形として、イニシャルレベルILを固定的に出し続けることを指示するパラメータである。NAND型フラッシュメモリ107に用意してある波形データは、何れも、その立ち上がり部分については元のサンプリング波形における音量変化をそのまま利用する方がリアルな楽音が得られるような波形データとしてある。そこで、その立ち上がり部分のホールドタイムHTだけの時間区間ではイニシャルレベルILをエンベロープ波形としている。1DRは1stディケイレート、1DLは1stディケイレベルである。ホールドタイムHTの後、1stディケイレート1DRの変化率で目標値1stディケイレベル1DLに至るエンベロープ波形を出力するためのパラメータである。2ndディケイレート2DRと2ndディケイレベル2DLも同様であり、1stディケイの後、2ndディケイレート2DRの変化率で目標値2ndディケイレベル2DLに至るエンベロープ波形を出力するためのパラメータである。2ndディケイの後、ノートオフが来たら、リリースレートRRの変化率で徐々に音量レベルを減少させていく。音量レベルが所定レベル以下になったら消音する。
(6)NON:楽音の発生開始を指示するノートオンをセットするレジスタである。
CPU101が、あるchに対応する制御レジスタ501にノートオンNONも含めて上記パラメータをセットすると、音源部113は当該chにおける楽音発生の処理を開始する。なお、図5の音源部113内に示されている各種パラメータは、それぞれ、その時点で処理中のchのパラメータを示している。すなわち、処理するchが変われば、それに応じてパラメータの値も変化する。
以下、音源部113の各ブロックにおける1ch分の処理を説明する。同様の処理が、時分割で全128chに対して行われ、複数の楽音が並行して生成される。
ピッチカウンタ503には、ノートオンNONおよびFナンバが入力する。ピッチカウンタ503は、ノートオン時点でゼロリセットされ、その後、1DAC毎にFナンバを累算する。この累算値は、整数部アドレスと小数部アドレスとして出力される。ピッチカウンタ503は、ノートオフ後も累算を続けるが、そのchの楽音生成処理が停止されると累算を停止する。ピッチカウンタ503の累算値の整数部の下位10ビットは読出部506に入力する。
PBアドレス発生部505は、上記制御レジスタの(2)と(3)で説明したアドレスPA(発音開始直後に読出すべき波形メモリ111のプリロード領域301の先頭ページのアドレス(図3))とBA(波形メモリ111の当該chに対応するバッファアドレス(図3))を入力し、PBアドレスを読出部506に出力する。PBアドレスは、波形メモリ111中の読出すべき領域の先頭を指定するための上位アドレスである(実際にはPBアドレスは上位部分のみであるので、このPBアドレスの下位に10ビット分の0を付けたアドレスが波形メモリ111中の読出すべき領域の先頭を指定する絶対アドレスになる)。具体的には、PBアドレス発生部505は、発音開始直後はPAをPBアドレスとして出力し、該PAで指定された波形メモリ111のプリロード領域301の先頭ページの波形サンプルデータを読み終えたら、BAをPBアドレスとして出力し、該BAで指定された波形メモリ111のバッファ領域302の当該chに対応するバッファB*aの波形サンプルデータを読み終えたら、BA+1をPBアドレスとして出力し(上述したようにBAは下位10ビット以下を除いた上位部分であるので、BA+1はバッファB*bを指すことになる)、該BA+1で指定された波形メモリ111のバッファ領域302の当該chに対応するバッファB*bの波形サンプルデータを読み終えたら、再びBAをPBアドレスとして出力し、以後、バッファB*aとB*bを交互に読出すようにBAとBA+1を交互にPBアドレスとして出力する。このようなPBアドレスの下位に、ピッチカウンタ503から出力される整数部下位10ビットを付加し、読出しアドレス(絶対アドレス)が生成される。読出部506は、波形メモリ111から、該読出しアドレスで当該chの波形サンプルデータを読出す。ここでは該読出しアドレスの波形サンプルとその次の波形サンプルの2サンプルを読出すものとする。なお、波形メモリ111のアドレスは、ワード単位である。
補間部507は、1DAC毎に、読出された2サンプルの間を小数部アドレス(ピッチカウンタ503から出力されたもの)に応じて2点補間(直線補間)して、1つの補間サンプルを算出する。楽音生成処理が停止されたchについては、補間サンプル「0」を出力する。
振幅エンベロープジェネレータ(EG)502は、当該chのエンベロープ波形生成用のパラメータに基づいて、振幅エンベロープ(AE)波形を生成し、音量制御部508に出力する。音量制御部508は、1DAC毎に、補間サンプルの振幅をAE波形の値に基づいて制御し、当該chの楽音サンプルとして出力する。累算部509は、1DAC毎に、全chの各楽音サンプルを累算し、全chを混合した結果の楽音サンプルとして出力する。なお、不図示の効果付与部でリバーブその他の効果を付与して出力しても良い。
ピッチカウンタ503から出力された整数部上位ビット(整数部から下位10ビットを除いた部分)は、Cアドレス発生部504およびPBアドレス発生部505に入力する。Cアドレス発生部504には、NAND型フラッシュメモリ107の第2ページアドレスWAが入力する(図2)。Cアドレス発生部504は、入力したデータに基づいてCアドレスを生成出力する。Cアドレスは、NAND型フラッシュメモリ107の波形データの読出しページを特定するクラスタ(ページ)アドレスである。Cアドレスがどのように変化するかについては、図6で詳しく説明する。
当該chに対応して生成されたCアドレスは、そのch番号とともに、転送制御部112内の転送待ちキュー521に入力される。転送待ちキュー521は、先入れ先出しのキューである。ピッチカウンタ503から転送指示が出力されたとき、転送待ちキュー521は、Cアドレスとch番号とを取り込んでキューに登録する。そのタイミングについては、図6で詳しく説明する。転送待ちキュー521に登録されたCアドレスとch番号は、要するに、当該ch番号のchについて、その時点で波形メモリ111から読出し再生しているページデータの読出しが終わるまでに、当該CアドレスのページデータをNAND型フラッシュメモリ107からDP RAM109経由で波形メモリ111に転送しておく必要がある、ということを意味している。
F→DP転送指示部522は、NAND型フラッシュメモリ107からDP RAM109へのページデータの転送が行われていないとき、転送待ちキュー521からCアドレスとch番号を取り出し、F→DP転送部108に、NAND型フラッシュメモリ107中の当該Cアドレスで特定されるページデータをDP RAM109へ転送する指示を出す。この指示に応じて、F→DP転送部108は、図4の「NAND型フラッシュ→DPメモリ」のタイムチャートで説明した1ページデータの転送(付番411〜413)を行う。具体的には、F→DP転送部108がフラッシュメモリ107にCアドレスを指定した読出し命令を出力すると、フラッシュメモリ107から1ページデータがバースト転送されてくるので、その転送データをDP RAM109へ書込む。
また、F→DP転送指示部522は、F→DP転送部108に転送指示を出したとき、DP→M転送指示部523に対して該転送指示とch番号を伝える。DP→M転送指示部523は、この転送指示を受けて、DP→M転送部110に当該ch番号と転送指示を出力し、DP→M転送部110がDP RAM109のページデータを波形メモリ111の当該chに対応するバッファにバースト転送するように制御する。これにより、図4の「DPメモリ→波形メモリ」のタイムチャートで説明したDP RAM110から波形メモリ111のバッファ領域へのバースト転送(付番422)が行われる。具体的には、DP→M転送部110は、DP→M転送指示部523からch番号と転送指示を受けると、その転送指示のタイミングから2DAC周期後の1DAC周期の区間で、音源113による波形メモリ111のアクセス期間(図4の421)の後に、DP RAM110にページデータのアドレスを指定した読出し命令を出力する。これにより、DP RAM110から当該ページデータのうちの先頭の256Wがバースト転送されてくるので、その転送データを波形メモリ111の当該chのバッファ領域へ図4の422に示したように書込む。さらに、引き続く256W×3ブロックのデータについても、DP→M転送部110の制御の元で、引き続く3DACの区間を利用して、バースト転送により波形メモリ111の当該chのバッファ領域へ書込む。
なお、DPメモリ→波形メモリのバースト転送で、256Wを当該chの波形メモリ111のバッファ領域に転送する際、当該chのバッファはB*a,B*bの2つあり、どちらに転送するかを決めておく必要がある。本実施形態のシステムでは、その時点で、当該chについて波形メモリ111のプリロード領域301またはバッファB*a,B*bの何れかから波形サンプルの音源113による読出しが行われているはずであるから、プリロード領域301またはバッファB*aから読出しが行われているならバッファB*bをバースト転送先とし、バッファB*bから読出しが行われているならバッファB*aをバースト転送先としている。
図6は、発音開始以降の各種アドレスの時間変化(1ch分)を示す。図中、「整数部下位10bits&小数部」は、図5のピッチカウンタ503でFナンバを累算した累算結果の整数部の下位10ビットおよび小数部の時間変化を示す。Fナンバの累算に応じて値が増加していき、整数部の下位10ビットが1023を越えたとき桁上がりが生じ、0に戻って(厳密には小数部の値が残っているので1以下の値である)再び増加する。これにより、図のような鋸歯状の変化を示す。「整数部上位bits」は、ピッチカウンタ503の上位部分(累算結果から整数部の下位10ビットおよび小数部を除いた上位部分)の時間変化を示す。発音開始直後は0であり、以後、「整数部下位10bits&小数部」の桁上がりが生じる毎に、1ずつ増加していく。
「転送指示」は、図5のピッチカウンタ503から転送待ちキュー521に出力される転送指示信号を示す。発音開始時に付番601のように出力され、以後、「整数部下位10bits&小数部」の桁上がりが生じる毎に付番602,603のように出力される。「PBアドレス」は、図5のPBアドレス発生部505から出力されるPBアドレスの時間変化を示す。発音開始直後はPBアドレスとしてPA(波形メモリ111のプリロード領域301の先頭ページを指すアドレス(図3))が出力され、以後は、「整数部上位bits」がカウントアップされる毎にBAとBA+1(BAは当該chに対応するバッファB*aのアドレス、BA+1は当該chに対応するバッファB*bのアドレス)が交互にPBアドレスとして出力される。
「Cアドレス」は、図5のCアドレス発生部504が転送待ちキュー521に出力するCアドレスの時間変化を示す。発音開始直後は、次に波形メモリ111に読出しておくべきページは、当該波形データの第2ページアドレスWAで指されるページであるから(図2)、CアドレスとしてWAが出力され、以後は、「整数部上位bits」がカウントアップされる毎に1ずつ増加していく。Cアドレスは、WAに「整数部上位bits」の値を加算して生成する。ただし、転送指示が来るたびにWAからインクリメントしていってCアドレスを生成してもよい。なお、WAも、上記PBアドレスなどと同様に、下位に10ビットの0を付加して絶対アドレスになるものであるので、図2の例で言えば、WA+1で第3ページW2(2)を指し、WA+2で第4ページW2(3)を指し、…という対応となる。
「転送実行タイミング」は、図5のF→DP転送指示部522およびDP→M転送指示部523が、図4で説明した転送を実際に実行するタイミングを示す。例えば、転送待ちキュー521に転送指示601が出力され、Cアドレスとch番号がキューに登録されたとしても、その時点で他のchの転送が行われている場合があるので、直ちに図4の転送が行われるとは限らず、他のchの転送が終わった後に、少し遅れた付番611のタイミングで転送が行われる。同様に、転送指示602で転送待ちキュー521に登録されたCアドレスとch番号の転送は付番612で、転送指示603で転送待ちキュー521に登録されたCアドレスとch番号の転送は付番613で、…というように、転送指示から少し遅れて転送が実行される。その遅れは、他のchで実行されている転送の混み具合によるので、一定ではない。もちろん、転送指示601で転送待ちキュー521に登録した転送は転送指示602が来る前に実行し、転送指示602で転送待ちキュー521に登録した転送は転送指示603が来る前に実行し、…というように、次の転送指示が来る前に実行する必要はある。
ここで、NAND型フラッシュメモリ107のアクセスに関するタイミング設計について説明する。
上述したように、本実施形態では、サンプリング周波数は44.1kHzであり、その場合の1DAC周期は22.67n秒である。図2で説明したように、波形データは1ページが2048バイト(1024サンプル)のページ単位でフラッシュメモリ107に連続して格納されている。あるchについて、1ページ分1024個の波形サンプルをDP RAM109経由で波形メモリ111に転送し、それらの波形サンプルをピッチアップせずに(すなわちFナンバ=1)再生する場合を考えると、再生時間は1024DAC(これを「基本再生期間」と呼ぶ)となる。一方、フラッシュメモリ107からの1ページの読出し(これを「1単位アクセス」と呼ぶ)は、図4で説明したように、4DACかかる。従って、上記基本再生期間の間に、1024/4=256回の単位アクセスを行うことができる。よって、ピッチアップしない場合、再生可能なch数の最大値は256chとなる。
次に、全発音chで同時に1オクターブ、ピッチアップする場合を考える。この場合、全chでFナンバ=2で波形サンプルが読出されるので、1単位アクセスで波形メモリ111に転送された1ページ分1024個の波形サンプルは、1DAC毎に1つおきに使用され、前記基本再生期間の半分の512DACで再生が完了することになる。従って、この再生期間の間に、512/4=128回の単位アクセスを行うことができる。よって、全chで1オクターブのピッチアップをした場合、再生可能なch数の最大値は128chとなる。このケースが後述の第1実施例に相当する。
以上のように、発音可能ch数とFナンバ上限値(ピッチアップの上限)とはトレードオフの関係にある。従って、フラッシュメモリ107の仕様(特に、ページの大きさと1単位アクセスに何DACかかるか)に基づいて基本再生期間が決まるので、それに基づいて発音可能ch数とFナンバ上限値(全chで同時にピッチアップするときのFナンバ上限値)を決めればよい。すなわち、先に発音可能ch数が決まっているのであればそれに対応してFナンバに制限をかければよい。逆に、Fナンバ上限値が決まっているのであればそれに対応して発音可能ch数を決めればよい。なお、ピッチダウンする場合は、1ページ分1024個の波形サンプルで前記基本再生期間以上の期間の再生が可能になり、その期間に上述のケースより多くの回数の単位アクセスを行うことができるので、発音可能ch数とFナンバ上限値との関係には少し余裕が出る。
次に、波形メモリ111のアクセスに関するタイミング設計について説明する。
本実施形態のシステムでは、1単位アクセスでDP RAM109に転送された1024サンプルを、4DACに分けて256サンプル(512バイト)ずつDP RAM109から波形メモリ111のバッファへバースト転送している(図4)。4DACに分けて256サンプルずつバースト転送するのは、1単位アクセス(フラッシュメモリ107からの1ページデータの読出し)に4DACかかることに合わせたものである。1DAC周期からこのバースト転送の期間と波形メモリ111のリフレッシュの期間を除いた期間が、音源113が各発音chの楽音生成のために波形サンプルを読出す期間になる。従って、バースト転送の期間を大きく取らなければならないようなケースでは、発音chのための読出し期間を減らさないといけないので、それに応じて発音可能ch数を減らすように設計する必要がある。逆に、バースト転送の期間と回数をもっと減らすことができれば、それに応じて発音可能ch数を増加することができる。
ここで、「帯域幅」と「全帯域幅」について説明しておく。「全帯域幅」とは、上述した基本再生期間(1ページ分のサンプルデータをサンプリング周期ごとに1サンプルの速度で再生した場合の再生時間)にフラッシュメモリ107から読出し可能な最大ページ数(言い替えると、基本再生期間に転送指示を出すことができる回数の上限値)である。本実施形態では、基本再生期間が1024DACで、フラッシュメモリ107から1ページ読出しするのに4DACかかるので、全帯域幅は256である。「帯域幅」とは、ある1つのchで、基本再生期間に、フラッシュメモリ107から読出す最大ページ数(当該chが転送指示を出す最大回数)である。例えば、あるchにおいて、Fナンバ=1で楽音生成するなら、基本再生期間1024DACの間に1回だけ転送指示を出せば、その1回の転送で波形メモリに書込まれた1024サンプルで基本再生期間内におけるFナンバ=1の再生がまかなえるので、当該chの帯域幅は1である。もしFナンバ=2なら帯域幅は2である。もしFナンバ=1.1なら、基本再生期間の10期間分で11回の転送指示(11ページ分の転送)が必要だから、前記10期間のうちのどこかで2回の転送指示を出さなければならず、当該chの帯域幅は2となる。従って、Fナンバの小数部を切り上げた値が、そのchの帯域幅となる。また、全chの帯域幅の和が全帯域幅を越えることがないようにすることが必要である。越えてしまうと、何れかのchで発生した転送要求が処理できなくなるからである。
以上のようなタイミング設計に係る条件に応じて、以下では、上述の実施形態のシステムにおける第1〜第3の3つの実施例を説明する。
図7(a)は、第1〜第3実施例の何れにも適用されるノートオンイベント処理のフローチャートである。この処理は、CPU101が、例えばMIDI I/O106からMIDIノートオンイベントを入力したときに、実行するものである。ステップ701では、入力したMIDIノートオンイベントの演奏情報に基づいて、ノートナンバとベロシティをレジスタnn,velにセットする。ステップ702では、フラッシュメモリ107中の現在選択されている音色に対応する複数の波形データの中から、nn,velに応じた1つの波形データを決定(選択)する。図1のNOR型フラッシュメモリ103には、各音色の音色データが用意されており、その音色データ中にはnn,velに応じた波形データを選択するための波形選択情報が含まれている。ステップ703では、発音chの割当を行い、そのch番号をレジスタaにセットする。ステップ704では、音源113の制御レジスタ501のa chの領域に各種パラメータを設定する。ピッチシフトを制御するFナンバは、決定された波形データをピッチシフトしない場合のピッチ(セント)と、ノートナンバnnの示すピッチ(セント)との音高差(セント)から決めることができる。上述したWA,PAやエンベロープ関連のパラメータは音色データに含まれている。BAは、割り当てられたch番号から決めることができる。最後に、ステップ705で、ノートオンNONにa chの発音開始指示を書込み、処理を終了する。
以上により、a chについてノートオンNONを含む音源レジスタにデータが設定されたので、これ以後は図1〜図6で説明した動作によりa chでの発音が行われる。この発音処理は、図1のNAND型フラッシュメモリ107から音源113に至るハードウェアで実行され、CPU101に割込みがかかることはない。
第1実施例について説明する。第1実施例は、Fナンバ上限値を2に制限するとともに、ch数Sを再生可能な128chに設定した場合(全chで同時に1オクターブピッチアップするケースを限界とする場合)である。全帯域幅Tが256であり、ch数Sはそれより少ない128chである。
上述したように、1つの音色について、録音時の音高を変えた複数の波形データが用意されており、図7(a)のステップ702では、音色毎の波形選択情報に応じて、フラッシュメモリ107中の複数の波形データの中から、ノートナンバnnとベロシティvelに応じた1つの波形データが選択されるようになっている。波形選択情報は、その音色の楽音を発音する全ノートナンバ、発音する全ベロシティのうちに、互いに重ならない複数の音域と強度の範囲(リージョン)を定義するとともに、その各リージョンに、その音色に対応する複数の波形データの1つを割り当てる情報である。前述したステップ702では、この波形選択情報をノートナンバnnとベロシティvelで参照し、複数の範囲の中からそのノートナンバnnとベロシティvelが含まれる1つのリージョンを検出して、その検出されたリージョンに割り当てられた1つの波形データを選択している。つまり、ノートナンバnnに応じて1つの波形データが選択されることになる。そして、ここで選択される波形データの録音時のピッチはノートナンバnnが示すピッチとは限らないので、前述したステップ704では、その波形データをノートナンバnnが示すピッチまでピッチシフトするためのFナンバが決定される。
第1実施例では、ステップ702において、ステップ704で決定されるFナンバが2以下となる波形データが選択されるように、この波形選択情報を工夫している。具体的には、ある音色の複数の波形データの各々について、その波形データが割り当てられるリージョンのノートナンバの上限が、その波形データを1オクターブだけピッチアップしたピッチに対応するノートナンバ以下となるようにしている。
このようにして、各音色の波形選択情報を用意することにより、ステップ702でノートナンバnnに応じて選択される波形データに対し、ステップ704で決定されるFナンバを2以下にすることができる。なお、ここではFナンバの上限を2に制限する例を示したが、上限は2に限らない。2.5以下、3以下等に制限した設計も可能である。要するに、全帯域幅Tをch数Sで割った商T/Sの整数部がFナンバ以下になるようにすればよい。従って、この条件が満たされるように各音色ごとに複数の波形データを用意しておき、図7(a)のステップ702と704で楽音生成に使用する波形データとFナンバを決定する際に、FナンバがT/Sの整数部以下にできるような波形データを選択し、そのようなFナンバを決定するようにすればよい。
図7(b)は、第1実施例の発音割当処理を示す。第1実施例では、図7(a)のステップ703で、この図7(b)の処理を行う。ステップ711で、空きchをサーチする。空きchがあれば、ステップ713で該空きch番号をレジスタaにセットして終了する。ステップ712で空きchがなければ、ステップ714で消音するchの番号を決定してレジスタaにセットし、ステップ715でa chを急速減衰ののち停止させてchを開放し、終了する。
次に、第2実施例について説明する。第2実施例は、Fナンバ上限値を制限せず、基本再生期間において全chについての単位アクセスの回数(帯域幅)の合計は上限である全帯域幅に抑えるケースである。要するに、基本再生期間において、ピッチアップしたchについては多くの回数の単位アクセスが必要になるが、逆にピッチダウンしたchについては単位アクセスの数は減らせるので、全体として基本再生期間における単位アクセスの上限の数(全帯域幅)に抑えれば良いとするケースである。
図7(c)は、第2実施例の発音割当処理を示す。第2実施例では、図7(a)のステップ703で、この図7(c)の処理を行う。ステップ721で、ceil(Fナンバ)をレジスタbwにセットする。ceil(j)は、数値jの小数部を切り上げる関数である。従って、bwに、Fナンバの小数部を切り上げた数すなわち当該chの帯域幅がセットされることになる。一方、音源113の全帯域幅、すなわち前記基本再生期間に転送指示を出すことができる回数の上限は一定値(この実施形態では、1回の転送に4DACかかるので、1024/4=256回)であり、この値をTbwとする。また、割り当て済みの全帯域幅をAbwとする。ステップ722では、当該chにこれから割り当てようとする帯域幅bwと、全帯域幅Tbwから割り当て済み帯域幅Abwを減算した値(空きの帯域幅を示している)とを比較する。前者が後者より大きければ、当該chの帯域幅を割り当てることができないので、ステップ723で消音するch番号を決定してレジスタbにセットし、ステップ724でb chを急速減衰ののち停止させてchを開放し、ステップ725でAbwからCbw(b)を減算して、ステップ722に戻る。Cbw(i)は、ichに割り当てた帯域幅を表す。b chを消音したので、b chに割り当てていた帯域幅は空きとなり、その分を割り当て済み帯域幅Abwから減算するものである。
ステップ722でbw≦Tbw−Abwのときは、割り当てる帯域幅があるということであるから、ステップ726に進む。ステップ726では空きchをサーチする。空きchがあれば、ステップ728で該空きch番号をレジスタaにセットし、ステップ732に進む。ステップ727で空きchがなければ、ステップ729で消音するchの番号を決定してレジスタaにセットし、ステップ730でa chを急速減衰ののち停止させてchを開放し、ステップ731でAbwからCbw(b)を減算して、ステップ732に進む。ステップ732では、いまa chに割り当てた帯域幅bwをCbw(a)にセットし、割り当て済み帯域幅Abwにbwを加算する。
なお、ノートオフされたc chの楽音が所定レベル以下に減衰したら、そのc chを停止し空きchとして開放するとともに、帯域情報の更新「Abw←Abw−Cbw(c)、および、Cbw(c)←0」を行うものとする。また、図7(c)の処理では、Aパートを行ってからBパートを行うようになっているが、先にBパートを行ってからAパートを行うようにしてもよい。
次に、第3実施例について説明する。第3実施例は、基本再生期間における単位アクセスの上限値と発音可能ch数とを同数に設定することで処理を簡略化するケースである。図1から図6で説明した実施形態では、音源部113の全帯域幅Tbwは256である。第3実施例では、発音chは全部で256chあるものとする(図1〜6の説明で発音ch数を128chと説明した部分は256に読み替えるものとする)。その256chが全部発音していれば、最低でも256の帯域幅を使用する。逆に、未使用帯域が1つでもあるということは、1つ以上の空きchが必ずあることを意味している。そのため、第3実施例では、第2実施例のBパートに対応する処理は不要となる。
図4(b)は、第3実施例において、図4(a)の期間421で256ch分の波形サンプルを、音源113が波形メモリ111から1DACの間に読出すことを示す図である。1ch分の波形サンプルは、複数のNサンプルをバーストモードで読出すものとする。図中、1ch’の期間で第1chのNサンプルをバーストモードで読出し、2ch’の期間で第2chのNサンプルをバーストモードで読出し、…、というようにする。Nをいくつに採るかは、何点補間を行うかによる。2点補間ならN=2、3点補間ならN=3、…というようにすればよい。逆に言えば、期間421で図4(b)に示すように256ch分の波形サンプルを読出せる性能のハードウェアを用いる必要がある。
図8は、第3実施例の発音割当処理を示す。第3実施例では、図7(a)のステップ703で、この図8の処理を行う。ステップ801〜805は第2実施例の図7(c)のステップ721〜725と同じである。ステップ806で空きchをサーチするが、上述したように割り当てる帯域幅があれば空きchはあるはずだから、空きchサーチでは必ず空きchが見つかる。ステップ807,808は、図7(c)のステップ728,732と同じ処理である。
上記実施形態の各実施例によれば、図4で説明したように、2つの転送(フラッシュメモリ107からDP RAM109への転送とDP RAM109から波形メモリ111への転送)の相互タイミングを工夫して、あるページのフラッシュメモリ107からDP RAM109への転送の完了前に、そのページ中の転送済みデータのDP RAM109から波形メモリ111への転送を開始するようにしている。また、フラッシュメモリ107からDP RAM109へ4DACで転送されたページデータは、2DACの遅れの後、DP RAM109から波形メモリ111へ同じ4DACで転送される。これにより、中間バッファであるDP RAM109の容量を1ページまで縮小することができた。また、DP RAM109から波形メモリ111への転送をバーストで行うことにより、音源部113による波形メモリ111のアクセス回数を増やし、その結果、発音可能ch数を増やすことができた。
なお、上記各実施例における各種の値は、それぞれ適宜変更することができる。フラッシュメモリ107のページのサイズは2048バイトに限らない。1024バイト、4096バイト等、任意のサイズであってよい(フラッシュメモリ107の仕様による)。基本再生期間における単位アクセス回数Tは256に限らず、300、450、512等、任意の数であってよい(フラッシュメモリ107の仕様による)。波形メモリ111からの読出しサンプルデータ数は256(1ch当たり2サンプルで128ch分)に限らず、310、460、512等、任意の数であってよい(音源113が波形メモリ111から波形サンプルを読出す際、どれほどの分解能のタイムスロットで1サンプル読出し可能かの仕様による)。発音可能ch数も128chに限らず、(上述のボトルネックとなる種々の条件のもとで)64、80、160等、任意の数で設計することが可能である。
また、上記実施形態において、補間部507による補間処理は2点補間であったが、3点補間、4点補間等、任意数の点間の補間であってよい。ただし、例えば4点補間を行う場合は、各chで波形メモリ111から波形サンプルを読出すときに、1回の読出しで連続する4サンプルを読出すことになるので、発音可能ch数を減らさなければならない場合はある。波形メモリ111から複数サンプルを読出す場合、バーストモードにより高速に読出すようにしてもよい。上記第3実施例では、1ch毎に複数サンプルをバーストで読出す例を説明した。また、補間部507を、サンプルバッファを備えた補間部としてもよい。
上記実施形態において、任意のブロックを1チップLSI化してよい。例えば、下記のような1チップLSI化が可能である。
(1)音源部、転送制御部、F→DP転送部、DP RAM、およびDP→M転送部の5ブロックを1チップ(集積回路)化する。波形メモリは別のチップで構成する。この場合、上記実施形態と同様に、波形メモリの書込み、および、読出しをバーストで行なって高速化する必要がある。
(2)音源部、転送制御部、F→DP転送部、DP RAM、DP→M転送部、および波形メモリの6ブロックを1チップ化する。この場合、内蔵される波形メモリは、読出し、および、書込みの速度が充分に高速であるので、バーストで行う必要がなくなる。
(3)さらに、1チップに各種I/OやCPUも含めるなど、プロセスの進化に合わせて、1チップ化するブロックを増やしていくとよい。
上記実施形態では、各波形データをNAND型フラッシュメモリの連続するページに記憶したが、その代わりに、NAND型フラッシュメモリの連続しない複数のページに分散して記憶するようにしてもよい。また、Cアドレス発生部や転送待ちキューの行っている役割を、転送要求信号を割り込み信号として、CPUが割り込み処理として実行するようにしてもよい。
101…CPU101、102…RAM、103…NOR型フラッシュメモリ、104…操作子、105…表示器、106…MIDI I/O、107…NAND型フラッシュメモリ、108…F→DP転送部、109…DP RAM、110…DP→M転送部、111…波形メモリ、112…転送制御部、113…音源、114…DAC、115…サウンドシステム。

Claims (4)

  1. 所定数Sのチャンネルを備え、それらの各チャンネルでそれぞれ所定サンプリング周波数の楽音を生成する楽音生成装置であって、
    ページ単位でのバースト読出しが可能な第1メモリであって、複数の各波形データの一連のサンプルデータを複数のページに記憶した、第1メモリと、
    各チャンネルのバッファ領域を有する第2メモリと、
    パラメータを設定する制御レジスタであって、各チャンネルごとの領域に、少なくとも、発音する楽音の音高に応じた速度情報、発音に使用する波形データの前記第1メモリ中の位置を示す波形位置情報、および発音する楽音の振幅を規定する振幅制御情報が設定される、制御レジスタと、
    各チャンネルごとに、発音開始の指示に応じて前記速度情報の示す速度で増加するカウント値を発生し、該カウント値に応じて、前記第2メモリの当該チャンネルのバッファ領域からサンプルデータを繰り返し読出し、サンプル間補間を行う、読出部と、
    前記読出部が読出す複数チャンネル分のサンプルデータを、前記第1メモリからページ単位で読出して前記第2メモリへ書込む転送部であって、各チャンネルで1ページ分のサンプルデータが前記第2メモリのバッファ領域から前記読出部により読出されている間に、前記波形位置情報に基づいて、そのページの次の1ページ分のサンプルデータを前記第1メモリから読出して当該チャンネルのバッファ領域に書込むとともに、1ページ分のサンプルデータをサンプリング周期ごとに1サンプルの速度で再生した場合の基本再生期間のうちに前記第1メモリから読出し可能な最大ページ数をT(このTを「全帯域幅」と呼ぶ)とするとき、該Tと前記Sとの大小関係はT>Sである、転送部と、
    各チャンネルごとに、前記振幅制御情報に応じて、前記読出部で補間されたサンプルデータの振幅を制御し、楽音波形のサンプルデータを形成する、振幅制御部と、
    新たな楽音の音高と発音開始を示す演奏情報に応じて、
    (1)前記複数の波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を商(T/S)の整数部に対応する値以下となるように決定し、
    (2)該楽音に、前記所定数Sあるチャンネルのうちの1つを割り当て、
    (3)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、
    (4)該割り当てたチャンネルに発音開始を指示する、
    制御部と、
    を備えることを特徴とする楽音生成装置。
  2. 所定数Sのチャンネルを備え、それらの各チャンネルでそれぞれ所定サンプリング周波数の楽音を生成する楽音生成装置であって、
    ページ単位でのバースト読出しが可能な第1メモリであって、複数の各波形データの一連のサンプルデータを複数のページに記憶した、第1メモリと、
    各チャンネルのバッファ領域を有する第2メモリと、
    パラメータを設定する制御レジスタであって、各チャンネルごとの領域に、少なくとも、発音する楽音の音高に応じた速度情報、発音に使用する波形データの前記第1メモリ中の位置を示す波形位置情報、および発音する楽音の振幅を規定する振幅制御情報が設定される、制御レジスタと、
    各チャンネルごとに、発音開始の指示に応じて前記速度情報の示す速度で増加するカウント値を発生し、該カウント値に応じて、前記第2メモリの当該チャンネルのバッファ領域からサンプルデータを繰り返し読出し、サンプル間補間を行う、読出部と、
    前記読出部が読出す複数チャンネル分のサンプルデータを、前記第1メモリからページ単位で読出して前記第2メモリへ書込む転送部であって、各チャンネルで1ページ分のサンプルデータが前記第2メモリのバッファ領域から前記読出部により読出されている間に、前記波形位置情報に基づいて、そのページの次の1ページ分のサンプルデータを前記第1メモリから読出して当該チャンネルのバッファ領域に書込むとともに、1ページ分のサンプルデータをサンプリング周期ごとに1サンプルの速度で再生した場合の基本再生期間のうちに前記第1メモリから読出し可能な最大ページ数をT(このTを「全帯域幅」と呼ぶ)とするとき、該Tと前記Sとの大小関係はT>Sである、転送部と、
    各チャンネルごとに、前記振幅制御情報に応じて、前記読出部で補間されたサンプルデータの振幅を制御し、楽音波形のサンプルデータを形成する、振幅制御部と、
    新たな楽音の音高と発音開始を示す演奏情報に応じて、
    (1)前記複数の波形データのうちの、決定される前記速度情報を商(T/S)の整数部に対応する値以下とすることができる波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を決定し、
    (2)該楽音に、前記所定数Sあるチャンネルのうちの1つを割り当て、
    (3)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、
    (4)該割り当てたチャンネルに発音開始を指示する、
    制御部と、
    を備えることを特徴とする楽音生成装置。
  3. 所定数Sのチャンネルを備え、それらの各チャンネルでそれぞれ所定サンプリング周波数の楽音を生成する楽音生成装置であって、
    ページ単位でのバースト読出しが可能な第1メモリであって、複数の各波形データの一連のサンプルデータを複数のページに記憶した、第1メモリと、
    各チャンネルのバッファ領域を有する第2メモリと、
    パラメータを設定する制御レジスタであって、各チャンネルごとの領域に、少なくとも、発音する楽音の音高に応じた速度情報、発音に使用する波形データの前記第1メモリ中の位置を示す波形位置情報、および発音する楽音の振幅を規定する振幅制御情報が設定される、制御レジスタと、
    各チャンネルごとに、発音開始の指示に応じて前記速度情報の示す速度で増加するカウント値を発生し、該カウント値に応じて、前記第2メモリの当該チャンネルのバッファ領域からサンプルデータを繰り返し読出し、サンプル間補間を行う、読出部と、
    前記読出部が読出す複数チャンネル分のサンプルデータを、前記第1メモリからページ単位で読出して前記第2メモリへ書込む転送部であって、各チャンネルで1ページ分のサンプルデータが前記第2メモリのバッファ領域から前記読出部により読出されている間に、前記波形位置情報に基づいて、そのページの次の1ページ分のサンプルデータを前記第1メモリから読出して当該チャンネルのバッファ領域に書込むとともに、1ページ分のサンプルデータをサンプリング周期ごとに1サンプルの速度で再生した場合の基本再生期間のうちに前記第1メモリから読出し可能な最大ページ数をT(このTを「全帯域幅」と呼ぶ)とするとき、該Tと前記Sとの大小関係はT>Sである、転送部と、
    各チャンネルごとに、前記振幅制御情報に応じて、前記読出部で補間されたサンプルデータの振幅を制御し、楽音波形のサンプルデータを形成する、振幅制御部と、
    新たな楽音の音高と発音開始を示す演奏情報に応じて、
    (1)前記複数の波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を決定し、
    (2)該楽音に、前記所定数Sあるチャンネルのうちの1つを割り当て、
    (3)前記全帯域幅Tから、該楽音の前記速度情報に応じて前記基本再生期間のうちに読出す必要のあるサンプルデータのページ数を示す帯域幅Uを割り当て、
    (4)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、
    (5)該割り当てたチャンネルに発音開始を指示する、
    制御部と、
    を備えることを特徴とする楽音生成装置。
  4. 所定数Sのチャンネルを備え、それらの各チャンネルでそれぞれ所定サンプリング周波数の楽音を生成する楽音生成装置であって、
    ページ単位でのバースト読出しが可能な第1メモリであって、複数の各波形データの一連のサンプルデータを複数のページに記憶した、第1メモリと、
    各チャンネルのバッファ領域を有する第2メモリと、
    パラメータを設定する制御レジスタであって、各チャンネルごとの領域に、少なくとも、発音する楽音の音高に応じた速度情報、発音に使用する波形データの前記第1メモリ中の位置を示す波形位置情報、および発音する楽音の振幅を規定する振幅制御情報が設定される、制御レジスタと、
    各チャンネルごとに、発音開始の指示に応じて前記速度情報の示す速度で増加するカウント値を発生し、該カウント値に応じて、前記第2メモリの当該チャンネルのバッファ領域からサンプルデータを繰り返し読出し、サンプル間補間を行う、読出部と、
    前記読出部が読出す複数チャンネル分のサンプルデータを、前記第1メモリからページ単位で読出して前記第2メモリへ書込む転送部であって、各チャンネルで1ページ分のサンプルデータが前記第2メモリのバッファ領域から前記読出部により読出されている間に、前記波形位置情報に基づいて、そのページの次の1ページ分のサンプルデータを前記第1メモリから読出して当該チャンネルのバッファ領域に書込むとともに、1ページ分のサンプルデータをサンプリング周期ごとに1サンプルの速度で再生した場合の基本再生期間のうちに前記第1メモリから読出し可能な最大ページ数をT(このTを「全帯域幅」と呼ぶ)とするとき、該Tと前記Sとの大小関係はT≦Sである、転送部と、
    各チャンネルごとに、前記振幅制御情報に応じて、前記読出部で補間されたサンプルデータの振幅を制御し、楽音波形のサンプルデータを形成する、振幅制御部と、
    新たな楽音の音高と発音開始を示す演奏情報に応じて、
    (1)前記複数の波形データの1つを選択し、該波形データと該音高とに基づいて前記速度情報を決定し、
    (2)前記全帯域幅Tから、該楽音の前記速度情報に応じて前記基本再生期間のうちに読出す必要のあるサンプルデータのページ数を示す帯域幅Uを割り当て、
    (3)該楽音に、前記所定数Sあるチャンネルのうちの、その時点で空きチャンネルとなっている1つを割り当て、
    (4)該割り当てたチャンネルの前記制御レジスタに、前記決定した速度情報と、第1メモリにおける該波形データの記憶位置を示す波形クラスタ情報と、振幅制御情報とを設定し、
    (5)該割り当てたチャンネルに発音開始を指示する、
    制御部と、
    を備えることを特徴とする楽音生成装置。
JP2009069358A 2009-03-23 2009-03-23 楽音生成装置 Expired - Fee Related JP5360474B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009069358A JP5360474B2 (ja) 2009-03-23 2009-03-23 楽音生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009069358A JP5360474B2 (ja) 2009-03-23 2009-03-23 楽音生成装置

Publications (2)

Publication Number Publication Date
JP2010224078A true JP2010224078A (ja) 2010-10-07
JP5360474B2 JP5360474B2 (ja) 2013-12-04

Family

ID=43041359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009069358A Expired - Fee Related JP5360474B2 (ja) 2009-03-23 2009-03-23 楽音生成装置

Country Status (1)

Country Link
JP (1) JP5360474B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06308964A (ja) * 1993-04-27 1994-11-04 Yamaha Corp 楽音形成装置
JPH09134177A (ja) * 1996-11-14 1997-05-20 Yamaha Corp 電子楽器用音源装置
JP2004177981A (ja) * 2004-02-02 2004-06-24 Yamaha Corp 楽音生成装置
JP2006184629A (ja) * 2004-12-28 2006-07-13 Yamaha Corp アクセス制御装置
JP2008249756A (ja) * 2007-03-29 2008-10-16 Yamaha Corp 楽音発生装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06308964A (ja) * 1993-04-27 1994-11-04 Yamaha Corp 楽音形成装置
JPH09134177A (ja) * 1996-11-14 1997-05-20 Yamaha Corp 電子楽器用音源装置
JP2004177981A (ja) * 2004-02-02 2004-06-24 Yamaha Corp 楽音生成装置
JP2006184629A (ja) * 2004-12-28 2006-07-13 Yamaha Corp アクセス制御装置
JP2008249756A (ja) * 2007-03-29 2008-10-16 Yamaha Corp 楽音発生装置

Also Published As

Publication number Publication date
JP5360474B2 (ja) 2013-12-04

Similar Documents

Publication Publication Date Title
JP5534388B2 (ja) 楽音生成装置
EP2369581B1 (en) Tone generation apparatus
US5717154A (en) Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory employing a high priority I/O bus request mechanism for improved audio fidelity
US8791349B2 (en) Flash memory based stored sample electronic music synthesizer
WO2010137312A1 (ja) 不揮発性記憶システムおよび楽音生成システム
US5763801A (en) Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory
JP3163984B2 (ja) 楽音発生装置
JP2008249756A (ja) 楽音発生装置
US5809342A (en) Computer system and method for generating delay-based audio effects in a wavetable music synthesizer which stores wavetable data in system memory
JP5360474B2 (ja) 楽音生成装置
CA2305523A1 (en) Sound-producing integrated circuit with virtual cache
JP5510813B2 (ja) 楽音生成装置
JP3855711B2 (ja) 音波形データ用ディジタル信号処理装置
JP5510814B2 (ja) 楽音生成装置
JP5510815B2 (ja) 楽音生成装置
JP4070347B2 (ja) 楽音信号発生装置
JP3000894B2 (ja) 楽音発生方法
JPH11202866A (ja) 楽音発生方法および楽音発生装置
WO2010010646A1 (ja) アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュール
JP2010237594A (ja) 楽音生成装置
JP3695404B2 (ja) 波形処理デバイス
JP3603638B2 (ja) 楽音発生方法
JP3922289B2 (ja) 音源装置
JP3603849B2 (ja) 楽音発生方法
JP3855710B2 (ja) 音波形データ用ディジタル信号処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130621

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130821

R150 Certificate of patent or registration of utility model

Ref document number: 5360474

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees