JP4036233B2 - Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method - Google Patents

Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method Download PDF

Info

Publication number
JP4036233B2
JP4036233B2 JP2006148637A JP2006148637A JP4036233B2 JP 4036233 B2 JP4036233 B2 JP 4036233B2 JP 2006148637 A JP2006148637 A JP 2006148637A JP 2006148637 A JP2006148637 A JP 2006148637A JP 4036233 B2 JP4036233 B2 JP 4036233B2
Authority
JP
Japan
Prior art keywords
waveform
processing
buffer
samples
effect
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.)
Expired - Fee Related
Application number
JP2006148637A
Other languages
Japanese (ja)
Other versions
JP2006221209A (en
Inventor
元一 田邑
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 JP2006148637A priority Critical patent/JP4036233B2/en
Publication of JP2006221209A publication Critical patent/JP2006221209A/en
Application granted granted Critical
Publication of JP4036233B2 publication Critical patent/JP4036233B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

この発明は、演算処理装置上で所定の楽音生成ソフトウェアを実行することにより楽音を生成する楽音発生装置および楽音発生方法、並びに該方法に係るプログラムを記憶した記憶媒体に関する。   The present invention relates to a musical sound generating apparatus and a musical sound generating method for generating a musical sound by executing predetermined musical sound generating software on an arithmetic processing unit, and a storage medium storing a program related to the method.

従来より、CPUなどの汎用の演算処理装置上で所定の楽音生成ソフトウェアを実行することにより楽音を生成する楽音発生装置が知られている。これは、いわゆるソフトウェア音源あるいはソフト音源と呼ばれる方式のものである。ソフト音源においても、やはりソフトウェア(ソフトエフェクタ)を用いて、生成した楽音に残響効果(リバーブ)などの効果(エフェクト)付与処理を施して出力するものがある。近年では、ソフト音源においても高機能化が求められ、多種多様な効果付与を施したいという要求がある。   2. Description of the Related Art Conventionally, a musical sound generator that generates a musical sound by executing predetermined musical sound generation software on a general-purpose arithmetic processing device such as a CPU is known. This is what is called a software sound source or a software sound source. Some soft tone generators also use software (soft effector) to apply an effect (effect) such as a reverberation effect (reverb) to the generated musical sound and output it. In recent years, there is a demand for higher functionality in software sound sources, and there is a demand for imparting various effects.

ソフト音源においては、ソフトウェアで楽音を生成する際に複数サンプルをまとめて生成するため、波形生成用バッファ領域が設けられる。図3(b)は、そのような波形生成用バッファ領域の例を示す。図3(b)において、1,2,…,128は128組の波形サンプル(時間的な順序で並んでいる時系列データである)格納領域である。1組の波形サンプル格納領域は、DryL,DryR,Revからなる。DryLはステレオ左側のリバーブをつけない波形サンプルの格納領域、DryRはステレオ右側のリバーブをつけない波形サンプルの格納領域、Revはリバーブへの入力とするための波形サンプルの格納領域である。要するに、(DryL,DryR,Rev)を1単位としてインターリーブ形式で波形サンプルを持つようにしていた。これは、波形計算部分で、各チャンネルの出力データを書き出す際にこのような順番に並んでいると都合が良かったためである。   In the software sound source, a waveform generation buffer area is provided in order to generate a plurality of samples collectively when generating a musical sound by software. FIG. 3B shows an example of such a waveform generation buffer area. In FIG. 3B, 1, 2,..., 128 are storage areas for 128 sets of waveform samples (which are time-series data arranged in a temporal order). One set of waveform sample storage areas includes DryL, DryR, and Rev. DryL is a waveform sample storage area without stereo left reverb, DryR is a waveform sample storage area without stereo right reverb, and Rev is a waveform sample storage area for input to the reverb. In short, (DryL, DryR, Rev) is used as one unit to have waveform samples in an interleaved format. This is because it is convenient to arrange the output data of each channel in this order in the waveform calculation part.

ソフト音源では、例えば、所定の時間間隔であるフレームごとに、楽音生成すべき全チャンネルの1フレーム分の波形サンプル(128サンプル)を生成し図3(b)の波形生成用バッファに累算して発音する波形データを算出する。始めに第1チャンネルの128サンプルを生成し重み付け(各サンプルのDryL,DryR,Revの各値にそれぞれ所定の係数を乗算すること)して図3(b)の波形生成用バッファに格納し、次に第2チャンネルの128サンプルを生成し重み付けして図3(b)の波形生成用バッファに累算し、次に第3チャンネルの128サンプルを生成し重み付けして図3(b)の波形生成用バッファに累算し、…という具合である。これにより、発音すべきチャンネルの波形サンプルの累算結果が128サンプル分得られる。生成した波形データは、例えばDMAC(ダイレクトメモリアクセスコントローラ)に指示してサウンドI/O(楽音波形データの入出力を実行するコーデック(CODEC)と呼ばれるLSI)に渡し、サウンドI/Oがディジタルアナログ(D/A)変換してサウンドシステムにより放音する。   In the software sound source, for example, for each frame at a predetermined time interval, waveform samples (128 samples) for one frame of all channels for which musical sounds are to be generated are generated and accumulated in the waveform generation buffer shown in FIG. To calculate the waveform data to be generated. First, 128 samples of the first channel are generated and weighted (by multiplying each value of DryL, DryR, Rev of each sample by a predetermined coefficient) and stored in the waveform generation buffer of FIG. Next, 128 samples of the second channel are generated and weighted and accumulated in the waveform generating buffer of FIG. 3B, and then 128 samples of the third channel are generated and weighted to generate the waveform of FIG. 3B. It accumulates in the generation buffer, and so on. As a result, the accumulated results of the waveform samples of the channel to be sounded are obtained for 128 samples. The generated waveform data is given to, for example, a DMAC (Direct Memory Access Controller) and passed to a sound I / O (an LSI called a codec (CODEC) that executes input / output of musical sound waveform data), and the sound I / O is digital analog (D / A) The sound is converted and emitted by the sound system.

ところで、ソフト音源でも多様な効果付与を実現したいという要求はあるが、通常、複数の効果付与処理を行なう場合の計算順序(いわばソフトエフェクタの結線関係)は動的に変更できるものではないという不具合がある。   By the way, there is a demand for realizing various effects even with a soft sound source, but usually the calculation order (so-called soft effector connection relations) when performing multiple effects is not dynamically changeable. There is.

また、ソフト音源に用いる演算処理装置には内部または外部にキャッシュメモリを備えたものも用いられるが、図3(b)のような波形生成用バッファのデータ構造だと、波形生成処理時、特にソフトエフェクタによる計算処理時にキャッシュミスが起こりやすいという不具合がある。例えば、図3(b)の例では、リバーブ付与の計算を行なうソフトエフェクタはインターリーブ形式で飛び飛びに格納されている128サンプル分のRevを取り出して計算処理することになり、キャッシュミスが起こりやすい。付与する効果がリバーブだけの場合はそれ程のオーバヘッドは生じないが、付与する効果が増えると、特にキャッシュミスが起こりやすくなる。例えば、3種類(リバーブ、コーラス、バリエーション)の効果付与で出力が7系統の場合、図3(b)のデータ構造を拡張して(DryL,DryR,Rev,ChorusL,ChorusR,VariationL,VariationR)を1単位として128サンプル分並べた波形生成用バッファを用いることにすると、エフェクタは、
(1)VariationL,VariationRを128サンプル分まとめてバリエーションの計算処理を実行
(2)ChorusL,ChorusRを128サンプル分まとめてコーラスの計算処理を実行
(3)Revを128サンプル分まとめてリバーブの計算処理を実行
という順序で計算するため、波形生成用バッファ領域上の飛び飛びのデータ領域を頻繁に行ったり来たりしてアクセスしなければならず、頻繁にキャッシュミスが起こり大変効率が悪い。
An arithmetic processing unit used for a soft sound source may be one having an internal or external cache memory. However, when the data structure of the waveform generation buffer as shown in FIG. There is a problem that a cache miss tends to occur during calculation processing by a soft effector. For example, in the example of FIG. 3B, the soft effector that performs reverberation calculation takes out 128 samples of Rev stored in an interleaved manner and performs calculation processing, and a cache miss is likely to occur. When the effect to be applied is only reverb, such an overhead does not occur. However, when the effect to be applied increases, a cache miss is particularly likely to occur. For example, when three types of effects (reverb, chorus, variation) are applied and the output is 7 lines, the data structure of FIG. 3B is expanded (DryL, DryR, Rev, ChorusL, ChorusR, VariationL, VariationR). If the buffer for waveform generation arranged for 128 samples as one unit is used, the effector
(1) Variation L and Variation R are collected for 128 samples and variation calculation processing is performed (2) Chorus L and Chorus R are collected for 128 samples and chorus calculation processing is performed (3) Rev is calculated for 128 samples and reverb calculation processing is performed Are calculated in the order of execution, the jumping data area on the waveform generation buffer area must be accessed frequently and frequently, resulting in frequent cache misses and very low efficiency.

この発明は、ソフト音源において、効果付与処理の計算順序を動的に変更できるようにした楽音発生装置および楽音発生方法、並びに該方法に係るプログラムを記憶した記憶媒体を提供することを目的とする。   An object of the present invention is to provide a musical sound generating apparatus and a musical sound generating method capable of dynamically changing the calculation order of the effect applying process in a software sound source, and a storage medium storing a program related to the method. .

本発明は、各エフェクト処理に対応して波形バッファを用意したことを特徴とする。各エフェクト処理ソフトウェアによって演算処理装置で実行される処理は、対応する波形バッファの複数波形サンプルに対して所定のエフェクト処理を施し、処理後の波形サンプルを対応する波形バッファに書き込むものである。また、波形バッファのうちの任意の1つの波形サンプルに所定のレベル制御を施して別の任意の波形バッファに記憶された波形サンプルに足して再び同記憶位置に書き込むadd処理を備えている。各波形バッファ上で実行される各波形バッファに対応するエフェクト処理、および任意の2つの波形バッファ間で実行されるadd処理については、所望のエフェクトアルゴリズムに応じて、エフェクト処理とadd処理の処理順序を指定し、該add処理で加算する波形バッファと加算される波形バッファを指定することができるようにしている。   The present invention is characterized in that a waveform buffer is prepared for each effect process. The processing executed in the arithmetic processing unit by each effect processing software is to perform predetermined effect processing on a plurality of waveform samples in the corresponding waveform buffer, and write the processed waveform samples to the corresponding waveform buffer. In addition, an add process is provided in which any one waveform sample in the waveform buffer is subjected to a predetermined level control and added to the waveform sample stored in another arbitrary waveform buffer and written again to the same storage position. Regarding the effect processing corresponding to each waveform buffer executed on each waveform buffer and the add processing executed between any two waveform buffers, the processing order of the effect processing and the add processing according to the desired effect algorithm The waveform buffer to be added and the waveform buffer to be added in the add process can be specified.

さらに、ユーザが前記複数エフェクトの結線状態を示すアルゴリズムを指定するための指定手段をさらに備え、前記指定手段で設定されたアルゴリズムに応じて、複数エフェクト処理および複数add処理の処理順序を変更することができるようにしている。   Further, the apparatus further includes a specifying unit for the user to specify an algorithm indicating the connection state of the plurality of effects, and the processing order of the plurality of effect processes and the plurality of add processes is changed according to the algorithm set by the specifying unit. To be able to.

処理のタイミングとしては、所定時間間隔でタイミング信号を発生するようにし、タイミング信号の発生ごとに、演奏情報に応じた所定数のサンプルを生成して複数のエフェクト処理にそれぞれ対応した複数のバッファに出力する処理を複数チャンネル分実行することにより、該複数のバッファのそれぞれに、チャンネル累算された波形データを生成するようにする。このように演奏情報に応じた波形データを複数のエフェクト処理にそれぞれ対応した複数のバッファに用意した後、上述したエフェクト処理とadd処理を、指定されたエフェクトアルゴリズムに応じた処理順序で実行し、エフェクト処理を施した波形データを生成出力する。出力された波形データは、サンプリング周期ごとに1サンプルずつディジタルアナログ変換器に供給し、アナログ波形に変換する。   As processing timing, a timing signal is generated at a predetermined time interval, and a predetermined number of samples corresponding to performance information is generated every time the timing signal is generated, and a plurality of buffers respectively corresponding to a plurality of effect processes are generated. By executing the output processing for a plurality of channels, waveform data accumulated in the channels is generated in each of the plurality of buffers. After preparing waveform data corresponding to performance information in a plurality of buffers corresponding to a plurality of effect processes in this way, the above-described effect processing and add processing are executed in a processing order corresponding to a designated effect algorithm, Generate and output waveform data with effect processing. The output waveform data is supplied to the digital-analog converter by one sample every sampling period and converted into an analog waveform.

以上説明したように、本発明によれば、各エフェクト処理に対応して波形バッファが用意されているので、複数エフェクト間の結線が容易に変更できる。また、エフェクト処理は対応するバッファ上で行なうとともに、add処理でどのバッファからどのバッファへでも累算できるようにしているので、ユーザが任意にソフトエフェクタのアルゴリズムを指定しても、該アルゴリズムに応じてエフェクト処理とadd処理の順序を入れ替えるだけでよくなる。したがって、エフェクト付与処理の計算順序がユーザの指定に応じて動的に変更できるようになる。また、各エフェクト処理に対応して用意されたバッファ上で波形サンプル生成とエフェクト付与(指定されたエフェクトアルゴリズムに応じた処理順序でエフェクト処理とadd処理とを行なうようにしている)を行なっているので、複数エフェクト間の結線が容易に変更できる。   As described above, according to the present invention, since the waveform buffer is prepared for each effect process, the connection between a plurality of effects can be easily changed. In addition, since the effect processing is performed on the corresponding buffer, and any buffer can be accumulated in any buffer by the add processing, even if the user arbitrarily designates the soft effector algorithm, Thus, it is only necessary to change the order of the effect processing and the add processing. Therefore, the calculation order of the effect applying process can be dynamically changed according to the user's specification. In addition, waveform sample generation and effect application (effect processing and add processing are performed in a processing order corresponding to a specified effect algorithm) are performed on a buffer prepared for each effect processing. Therefore, the connection between multiple effects can be changed easily.

以下、図面を用いてこの発明の実施の形態を説明する。   Embodiments of the present invention will be described below with reference to the drawings.

図1は、この発明に係る楽音発生装置を適用した電子楽器のブロック構成図を示す。この電子楽器は、中央処理装置(CPU)101、リードオンリメモリ(ROM)102、ランダムアクセスメモリ(RAM)103、ドライブ装置104、タイマ106、ネットワーク入出力(I/O)インタフェース107、キーボード108、ディスプレイ109、ハードディスク110、サンプリングクロック(Fs)発生器111、サウンドI/O112、DMA(ダイレクトメモリアクセス)コントローラ114、サウンドシステム115、およびバスライン116を備えている。   FIG. 1 is a block diagram of an electronic musical instrument to which a musical tone generator according to the present invention is applied. The electronic musical instrument includes a central processing unit (CPU) 101, a read only memory (ROM) 102, a random access memory (RAM) 103, a drive device 104, a timer 106, a network input / output (I / O) interface 107, a keyboard 108, A display 109, a hard disk 110, a sampling clock (Fs) generator 111, a sound I / O 112, a DMA (direct memory access) controller 114, a sound system 115, and a bus line 116 are provided.

CPU101は、この電子楽器全体の動作を制御する。CPU101は、内部にキャッシュメモリ117を備えたものである。キャッシュメモリ117のキャッシュライン(キャッシュブロック)サイズは32バイトである。すなわち、CPU101がROM102やRAM103などから適当なアドレスのデータを読み出した際には、そのアドレスを含む連続した32バイトがキャッシュメモリ117の所定のキャッシュラインにコピーされる。その後、この32バイトの何れかのデータに対する読み出しが発生したときには、ROM102やRAM103から読み出す代わりに、当該キャッシュラインのデータを供給する。キャッシュメモリ117のアクセスは非常に高速に行なわれるので、データがキャッシュメモリ117上にある間は、非常に高速に処理できる。なお、キャッシュメモリには、ライトスルー方式とライトバック方式とがあるが、ここで用いたキャッシュメモリ117はライトスルー方式とする。   The CPU 101 controls the operation of the entire electronic musical instrument. The CPU 101 includes a cache memory 117 inside. The cache line (cache block) size of the cache memory 117 is 32 bytes. That is, when the CPU 101 reads data at an appropriate address from the ROM 102, RAM 103, etc., consecutive 32 bytes including the address are copied to a predetermined cache line of the cache memory 117. Thereafter, when any of the 32-byte data is read, the cache line data is supplied instead of reading from the ROM 102 or RAM 103. Since the cache memory 117 is accessed at a very high speed, it can be processed at a very high speed while the data is on the cache memory 117. The cache memory includes a write-through method and a write-back method. The cache memory 117 used here is a write-through method.

ROM102は、CPU101が実行する制御プログラム(ソフトエフェクタを含むソフト音源のプログラムなど)や各種の定数データなどを格納する。またROM102上には、CPU101がソフト音源のプログラムを実行して楽音生成するときに使用する波形データ(所定のレートでサンプリングされた波形サンプルデータ)が用意されている。なお、制御プログラムや各種定数データなど、および波形データは、ROM102でなく、RAM103上に用意したものを使用することもできる。この場合、制御プログラムなどのデータは、CD−ROMなどの外部記憶媒体やネットワークI/O107から供給され、RAM103上に展開されたり、ハードディスク110に保存される。RAM103には、各種のレジスタ、波形生成用バッファ、再生バッファなどのワーク領域が設けられる。ドライブ装置104は、FD(フレキシブルディスク)やフラッシュカードなどの外部記憶媒体105との間で各種データを入出力するためのものである。ハードディスク110は、各種データの記録用に用いる記憶装置である。   The ROM 102 stores control programs executed by the CPU 101 (software tone generator programs including software effectors) and various constant data. On the ROM 102, waveform data (waveform sample data sampled at a predetermined rate) that is used when the CPU 101 executes a software tone generator program to generate a musical tone is prepared. Note that the control program, various constant data, and waveform data prepared on the RAM 103 can be used instead of the ROM 102. In this case, data such as a control program is supplied from an external storage medium such as a CD-ROM or the network I / O 107 and is expanded on the RAM 103 or stored in the hard disk 110. The RAM 103 is provided with work areas such as various registers, a waveform generation buffer, and a reproduction buffer. The drive device 104 is for inputting / outputting various data to / from an external storage medium 105 such as an FD (flexible disk) or a flash card. The hard disk 110 is a storage device used for recording various data.

タイマ106は、CPU101に対して所定間隔でタイマ割り込みを発生させるためのタイマクロック信号を発生する。ネットワークI/Oインタフェース107は、外部の公衆回線やLAN(ローカルエリアネットワーク)を介して各種データを授受するためのインタフェースである。キーボード108は、各種の情報を入力するために用いるタイピングキーボードである。ディスプレイ109は、各種の情報を表示するディスプレイである。ユーザは、キーボード108およびディスプレイ109を用いてこの電子楽器に対する各種の設定操作および指示操作を行なうことができる。   The timer 106 generates a timer clock signal for causing the CPU 101 to generate a timer interrupt at a predetermined interval. The network I / O interface 107 is an interface for exchanging various data via an external public line or a LAN (local area network). The keyboard 108 is a typing keyboard used for inputting various information. The display 109 is a display that displays various types of information. A user can perform various setting operations and instruction operations on the electronic musical instrument using the keyboard 108 and the display 109.

Fs発生器111は、サウンドI/O112に与える周波数Fsのサンプリングクロックを発生する。サウンドI/O112は、コーデック(CODEC)と呼ばれるLSIからなる。サウンドI/O112は、アナログディジタル(A/D)変換機能およびディジタルアナログ(D/A)変換機能を備えており、A/D入力端子には外部入力113からのアナログ楽音信号が入力し、D/A出力端子にはサウンドシステム115が接続される。サウンドI/O112は、内部に2つのFIFO(First In First Out)方式のスタック領域を備えている。一つはA/D入力端子経由で入力されたディジタル波形データを保持する入力FIFOであり、もう一つはD/A出力端子経由で出力するディジタル波形データを保持する出力FIFOである。   The Fs generator 111 generates a sampling clock having a frequency Fs to be given to the sound I / O 112. The sound I / O 112 is composed of an LSI called a codec (CODEC). The sound I / O 112 has an analog / digital (A / D) conversion function and a digital / analog (D / A) conversion function. An analog musical tone signal from the external input 113 is input to the A / D input terminal. A sound system 115 is connected to the / A output terminal. The sound I / O 112 includes two FIFO (First In First Out) type stack areas. One is an input FIFO for holding digital waveform data input via the A / D input terminal, and the other is an output FIFO for holding digital waveform data output via the D / A output terminal.

外部入力113からサウンドI/O112のA/D入力端子に入力したアナログ楽音信号は、周波数Fsのサンプリングクロックに応じてA/D変換され、(必要に応じてADPCM方式などで圧縮してもよい)入力FIFOへ書き込まれる。入力FIFOに波形データが入っていると、サウンドI/O112は、DMAコントローラ114に対してその入力波形データを処理する要求を出す。DMAコントローラ114は、その処理要求に応じて、入力FIFOのデータをRAM103上の所定の領域(あらかじめ確保されている録音バッファ領域)に転送する。このDMAコントローラ114によるデータの転送は、DMAコントローラ114がサンプリングクロックFsごとにCPU101に割り込み(ハードウェア割り込み)をかけバスライン116を確保して行なう。CPU101は、DMAコントローラ114によるバスライン116の確保を意識することはない。   An analog musical sound signal input from the external input 113 to the A / D input terminal of the sound I / O 112 is A / D converted in accordance with a sampling clock having a frequency Fs, and may be compressed by an ADPCM method or the like as necessary. ) Written to input FIFO. If the input FIFO contains waveform data, the sound I / O 112 issues a request to the DMA controller 114 to process the input waveform data. The DMA controller 114 transfers the data of the input FIFO to a predetermined area on the RAM 103 (a recording buffer area secured in advance) in response to the processing request. Data transfer by the DMA controller 114 is performed by the DMA controller 114 interrupting the CPU 101 (hardware interrupt) for each sampling clock Fs and securing the bus line 116. The CPU 101 is not aware of securing the bus line 116 by the DMA controller 114.

一方、サウンドI/O112内の出力FIFOに波形データが存在する場合、その出力FIFO内の波形データは、サンプリングクロックFsごとにD/A変換され、D/A出力端子経由でサウンドシステム115に送出され放音される。出力FIFOの波形データが出力されると、出力FIFOに空きができるので、サウンドI/O112は、DMAコントローラ114に波形データ取得の要求を出す。CPU101は、あらかじめ出力したい波形データを生成してRAM103上の再生バッファ(後述するPB0,PB1)に置いておき、DMAコントローラ114にはその波形の再生要求を出しておく。DMAコントローラ114は、サンプリングクロックFsごとにCPU101に割り込みをかけてバスライン116を確保し、RAM103上の再生バッファの波形データをサウンドI/O112の出力FIFOに転送する。このDMAコントローラ114による波形データの転送は、CPU101が意識することはない。出力FIFOに書き込まれた波形データは、上述したようにサンプリングクロックFsごとにサウンドシステム115へと送られて放音される。   On the other hand, when waveform data exists in the output FIFO in the sound I / O 112, the waveform data in the output FIFO is D / A converted for each sampling clock Fs and sent to the sound system 115 via the D / A output terminal. And sound is emitted. When the output FIFO waveform data is output, the output FIFO becomes empty, and the sound I / O 112 issues a waveform data acquisition request to the DMA controller 114. The CPU 101 generates waveform data to be output in advance and places it in a reproduction buffer (PB0, PB1 described later) on the RAM 103, and issues a request for reproducing the waveform to the DMA controller 114. The DMA controller 114 interrupts the CPU 101 for each sampling clock Fs to secure the bus line 116 and transfers the waveform data of the reproduction buffer on the RAM 103 to the output FIFO of the sound I / O 112. The transfer of waveform data by the DMA controller 114 is not noticed by the CPU 101. As described above, the waveform data written in the output FIFO is sent to the sound system 115 for each sampling clock Fs and emitted.

ソフト音源はCPU101がROM102の楽音生成ソフトウェアを実行することにより実現されるが、該ソフト音源を利用する側から見ると、楽音生成ソフトウェアをドライバとして登録しておき、該ドライバを起動した後、所定のソフト音源に係るAPI(Application Program Interface)に各種演奏入力を表わすMIDI(Musical Instruments digital Interface)イベントメッセージを出力して楽音生成に関する各種の処理をソフト音源に行なせる、という手順になる。CPU101は汎用の演算処理装置であり、該APIに対して演奏入力を与える処理、すなわちMIDIイベントを該APIに出力する処理など、ソフト音源とは別の処理も行なっている。CPU101が該APIに対して演奏入力を与える処理とは、例えば、不図示の演奏操作子(鍵盤など)の操作に応じてリアルタイムで発生する演奏入力を該APIに出力したり、ネットワークI/O107を介してリアルタイムで入力したMIDIイベントに応じた演奏入力を該APIに出力したり、RAM103上にMIDIイベントのシーケンスを用意しておき(外部記憶媒体105やハードディスク110上にあるデータを用いてもよいし、ネットワークI/O107を介して入力したデータを用いてもよい)これを順次演奏入力として該APIに出力したり、といった処理である。   The software tone generator is realized by the CPU 101 executing the tone generation software in the ROM 102. From the viewpoint of using the software tone generator, the tone generator software is registered as a driver, the driver is started, The procedure is such that a MIDI (Musical Instruments digital Interface) event message indicating various performance inputs is output to an API (Application Program Interface) relating to the software sound source, and various processes relating to musical tone generation can be performed on the software sound source. The CPU 101 is a general-purpose arithmetic processing unit, and performs processing different from the software sound source, such as processing for giving performance input to the API, that is, processing for outputting a MIDI event to the API. The process in which the CPU 101 gives a performance input to the API is, for example, a performance input that is generated in real time in response to an operation of a performance operator (not shown) such as a keyboard, or the network I / O 107. A performance input corresponding to a MIDI event input in real time via the interface is output to the API, or a sequence of MIDI events is prepared on the RAM 103 (even if data on the external storage medium 105 or the hard disk 110 is used). (Alternatively, data input via the network I / O 107 may be used.) This is a process of sequentially outputting the data as performance input to the API.

図2を参照して、ソフト音源の楽音生成原理を説明する。図2において、S1〜S4の各区間は、所定のサンプル数(2×128サンプル)分の再生を行なう単位となる時間フレームを示す。「演奏入力」のライン上に記載してある下向き矢印は、その時刻で演奏入力があったことを示す。演奏入力とは、上述のソフト音源に係るAPIに、ノートオン、ノートオフ、アフタタッチ、プログラムチェンジなどの各種のMIDIイベントが入力されることである。図2の例では、フレームS1で3つ、S2で2つ、S3で1つの演奏入力がそれぞれあったということである。ソフト音源は、複数チャンネル分の複数楽音を同時生成可能であり、RAM103上に用意される複数チャンネル分のソフト音源レジスタで各楽音を制御するようになっている。ソフト音源は、演奏入力としてノートオンイベントを入力したときは、ソフト音源レジスタに関して発音割り当てを行ない、割り当てたチャンネルに対応するソフト音源レジスタに該チャンネルの発音を制御する各種のデータとノートオンを書き込む。演奏入力としてノートオフイベントを入力したときは、該当するチャンネルに対応するソフト音源レジスタにノートオフを書き込む。ノートオンやノートオフ以外の演奏入力(例えばアフタタッチの変更など)についても同様に、該当するチャンネルに対応するソフト音源レジスタに演奏入力に応じたデータを書き込む。ある時間フレームでソフト音源レジスタに書込まれたデータは、データの種類にかかわりなく、必ず次の時間フレームから波形生成演算に使用される。   With reference to FIG. 2, the tone generation principle of the soft sound source will be described. In FIG. 2, each section of S1 to S4 indicates a time frame that is a unit for performing reproduction for a predetermined number of samples (2 × 128 samples). A downward arrow written on the “performance input” line indicates that there was a performance input at that time. The performance input means that various MIDI events such as note-on, note-off, after-touch, and program change are input to the above-described API related to the software sound source. In the example of FIG. 2, there are three performance inputs for the frame S1, two for S2, and one for S3. The software sound source can simultaneously generate a plurality of musical sounds for a plurality of channels, and each musical sound is controlled by a software sound source register for a plurality of channels prepared on the RAM 103. When a note-on event is input as a performance input, the software tone generator assigns sound generation to the software tone generator register and writes various data and note-on for controlling the sound generation of the channel to the software tone generator register corresponding to the assigned channel. . When a note-off event is input as a performance input, note-off is written in the soft tone generator register corresponding to the corresponding channel. Similarly, for performance inputs other than note-on and note-off (for example, after-touch change), data corresponding to the performance input is written in the software tone generator register corresponding to the corresponding channel. Data written to the soft tone generator register in a certain time frame is always used for waveform generation calculation from the next time frame regardless of the type of data.

図2の「CPUによる波形生成」の矩形201〜204は、CPU101により効果付与も含めた波形生成演算を実行する区間を示す。この波形生成演算では、ソフト音源レジスタに設定された複数チャンネル分のデータに基づいて複数チャンネル分の楽音波形生成を行なう。演奏入力に応じてソフト音源レジスタが書き換えられ、一方、演奏入力のない期間は、ソフト音源レジスタは過去に書込まれたデータを保持している。したがって、各波形生成の区間201〜204では、直前あるいはさらに前のフレームで検出した演奏入力に応じた波形生成演算を実行することになる。フレームが切り替わるタイミングでフレーム割り込みが発生するので、各フレームでの波形生成演算(後述の図7(a))はこのフレーム割り込みを契機として実行される。   The rectangles 201 to 204 for “waveform generation by the CPU” in FIG. 2 indicate sections in which the CPU 101 executes waveform generation calculation including effect provision. In this waveform generation calculation, musical sound waveform generation for a plurality of channels is performed based on data for a plurality of channels set in the software sound source register. The soft tone generator register is rewritten in accordance with the performance input. On the other hand, during the period when there is no performance input, the soft tone generator register holds data written in the past. Therefore, in each waveform generation section 201 to 204, a waveform generation calculation corresponding to the performance input detected in the immediately preceding or previous frame is executed. Since a frame interrupt occurs at the timing when the frame is switched, a waveform generation operation (FIG. 7A described later) in each frame is executed with this frame interrupt as a trigger.

例えば、フレームS1で検出された3つの演奏入力に対しては、次のフレームS2の先頭のフレーム割り込みを契機として区間202で波形生成演算を行なう。CPU101は、この波形生成演算により、RAM103上の波形生成用バッファに波形データ(複数チャンネル分を累算したものであって、かつ効果も付与したもの)を生成する。生成した波形データはRAM103上の再生バッファ領域に書き込む。この再生バッファ領域としては、連続したアドレスに用意された同じ大きさの2つのバッファ領域PB0とPB1(2つをまとめてダブルバッファと呼ぶ)を用いる。再生バッファ領域への書き込みは、後述する図7(a)のステップ707で行なう。また、フレームごとにバッファPB0とPB1とを交互に用いるようにする。例えば、フレームS1の区間201で生成した波形データはRAM103上の再生バッファ領域PB0に書き込み、フレームS2の区間202で生成した波形データは再生バッファ領域PB1に書き込み、フレームS3の区間203で生成した波形データは再生バッファ領域PB0に書き込み、フレームS4の区間204で生成した波形データは再生バッファ領域PB1に書き込み、…というように、交互にPB0とPB1に波形データを書き込む。   For example, for the three performance inputs detected in the frame S1, the waveform generation calculation is performed in the section 202 in response to the first frame interrupt of the next frame S2. The CPU 101 generates waveform data (accumulated for a plurality of channels and also provided an effect) in the waveform generation buffer on the RAM 103 by this waveform generation calculation. The generated waveform data is written in the reproduction buffer area on the RAM 103. As the reproduction buffer area, two buffer areas PB0 and PB1 of the same size prepared at consecutive addresses (the two are collectively referred to as a double buffer) are used. Writing to the reproduction buffer area is performed in step 707 of FIG. Further, the buffers PB0 and PB1 are alternately used for each frame. For example, the waveform data generated in the section 201 of the frame S1 is written in the reproduction buffer area PB0 on the RAM 103, the waveform data generated in the section 202 of the frame S2 is written in the reproduction buffer area PB1, and the waveform generated in the section 203 of the frame S3. The data is written in the reproduction buffer area PB0, the waveform data generated in the section 204 of the frame S4 is written in the reproduction buffer area PB1, and the waveform data is alternately written in PB0 and PB1.

再生バッファPB0およびPB1に書き込んだ波形データの読み出し再生は、図2の「読み出し再生」に示すように、フレーム割り込みを契機として、波形生成したフレームの次のフレームの区間で行なう。すなわち、フレームS1で生成しPB0に書き込んだ波形データは次のフレームS2で、フレームS2で生成しPB1に書き込んだ波形データは次のフレームS3で、フレームS3で生成しPB0に書き込んだ波形データは次のフレームS4で、…というように、PB0とPB1の波形データを交互に読み出し再生していく。読み出し再生は、DMAコントローラ114が、サンプリングクロックFsごとにCPU101に割り込みをかけて、RAM103上の再生バッファ(PB0またはPB1の指定された方)の波形データをサウンドI/O112の出力FIFOに転送することにより行なう。フレーム割り込みは、再生バッファPB0およびPB1をループ読み出しする際のリターン発生時(すなわちPB1の再生終了時)と、ループ読み出しの中間点通過時(すなわちPB0の再生終了時)に発生する。フレーム割り込みは、サウンドI/O112が発生するハードウェア割り込みであり、1フレーム再生完了の時点を示す。すなわち、サウンドI/O112は、転送サンプル数(DMAC114によりPB0,PB1からサウンドI/Oの出力FIFOに転送したサンプル数)をカウントし、再生バッファのサイズ(PB0,PB1を合せたサイズ)の半分の数のサンプルの転送ごとにフレーム割り込みを発生する。   The waveform data written to the reproduction buffers PB0 and PB1 is read and reproduced in the section of the next frame after the waveform generation frame, triggered by a frame interrupt, as shown in “Reading and reproducing” in FIG. That is, the waveform data generated in frame S1 and written to PB0 is the next frame S2, the waveform data generated in frame S2 and written to PB1 is the next frame S3, and the waveform data generated in frame S3 and written to PB0 is In the next frame S4, the waveform data of PB0 and PB1 are alternately read and reproduced as follows. For read reproduction, the DMA controller 114 interrupts the CPU 101 for each sampling clock Fs and transfers the waveform data in the reproduction buffer (PB0 or PB1 designated) on the RAM 103 to the output FIFO of the sound I / O 112. By doing. The frame interrupt is generated when a return occurs when reading the reproduction buffers PB0 and PB1 in a loop (that is, when reproduction of PB1 is finished) and when an intermediate point of loop reading is passed (ie, when reproduction of PB0 is finished). The frame interrupt is a hardware interrupt generated by the sound I / O 112 and indicates the time point when one frame reproduction is completed. That is, the sound I / O 112 counts the number of transfer samples (the number of samples transferred from the PB0 and PB1 to the output FIFO of the sound I / O by the DMAC 114), and is half the size of the reproduction buffer (the sum of PB0 and PB1). Generate a frame interrupt for every number of samples transferred.

図3(a)は、CPU101が波形生成を行なうときに使用する波形生成用バッファの構成例を示す。波形生成用バッファは、mixA,mixB,mixC,mixDの4つからなる。mixAは、ドライ(dry)用、すなわち効果を付けない波形データを設定するバッファである。mixBは、リバーブ(rev)用、すなわちリバーブ処理への入力となる波形データを設定するバッファである。mixCは、コーラス(cho)用、すなわちコーラス処理への入力となる波形データを設定するバッファである。mixDは、バリエーション(var)用、すなわちバリエーション処理への入力となる波形データを設定するバッファである。mixA,mixB,mixC,mixDのそれぞれは、ステレオ左側(L側)波形サンプルの記憶領域とステレオ右側(R側)波形サンプルの記憶領域とを1組として、128組のサンプル(サンプル数では、2×128=256サンプル)の記憶領域からなる。L側波形サンプルおよびR側波形サンプルは、それぞれ、16ビット(2バイト)サンプルである。mixA,mixB,mixC,mixDのそれぞれは、先頭から順に32バイト単位(すなわち16サンプル分)でキャッシングされるようにバウンダリ調整されている。   FIG. 3A shows a configuration example of a waveform generation buffer used when the CPU 101 generates a waveform. There are four waveform generation buffers, mixA, mixB, mixC, and mixD. The mix A is a buffer for setting waveform data for dry use, that is, no effect. The mixB is a buffer for setting waveform data for reverberation (rev), that is, input to the reverberation process. The mixC is a buffer for setting waveform data for chorus (cho), that is, input to chorus processing. The mixD is a buffer for setting waveform data for variation (var), that is, input to variation processing. Each of mixA, mixB, mixC, and mixD includes 128 sets of samples (2 in terms of number of samples), with the storage area of the stereo left (L side) waveform sample and the storage area of the stereo right (R side) waveform sample as one set. × 128 = 256 samples). Each of the L-side waveform sample and the R-side waveform sample is a 16-bit (2 byte) sample. Each of mixA, mixB, mixC, and mixD is boundary-adjusted so as to be cached in units of 32 bytes (that is, 16 samples) in order from the top.

図4は、ソフト音源による楽音生成からチャンネル累算までのアルゴリズムの例を示す。波形メモリ401は、所定のレートでサンプリングされた波形サンプルデータを格納したメモリである。ここでは、ROM102上に波形データが用意されているものとする。ただし、RAM103上に用意した波形データを用いてもよい。RAM103上の波形データは、ROM102、外部記憶媒体105、またはハードディスク110から読み出したデータ、あるいはネットワークI/O107を介して入力したデータや、サウンドI/O112により外部入力113をサンプリングして得た波形データなどを用いてもよい。   FIG. 4 shows an example of an algorithm from generation of a musical tone by a soft sound source to channel accumulation. The waveform memory 401 is a memory that stores waveform sample data sampled at a predetermined rate. Here, it is assumed that waveform data is prepared on the ROM 102. However, waveform data prepared on the RAM 103 may be used. Waveform data on the RAM 103 is data read from the ROM 102, the external storage medium 105 or the hard disk 110, data input via the network I / O 107, or a waveform obtained by sampling the external input 113 by the sound I / O 112. Data or the like may be used.

ソフト音源は、まず必要なチャンネル数分(最大チャンネル数はCPUの能力に応じて決めておく。ここでは最大32チャンネルとする。)の楽音生成処理402を実行する。どのチャンネルからでも演算できるので、後着優先で演算処理したり、音量レベルが小さくなったチャンネルは優先度を落としたりしてもよい。1チャンネル分の楽音生成は、波形読み出し&補間処理411により波形メモリの波形データを読み出して補間し、フィルタ412でフィルタリングし、フィルタ412の出力を8系列に分けてそれぞれ乗算器413−1から413−8により所定の係数を乗算する処理などからなる。8系列の出力は、乗算器413−1でドライL(ステレオ左)用係数を乗算して得るドライL出力、乗算器413−2でドライR(ステレオ右)用係数を乗算して得るドライR出力、乗算器413−3でリバーブL用係数を乗算して得るリバーブL出力、乗算器413−4でリバーブR用係数を乗算して得るリバーブR出力、乗算器413−5でコーラスL用係数を乗算して得るコーラスL出力、乗算器413−6でコーラスR用係数を乗算して得るコーラスR出力、乗算器413−7でバリエーションL用係数を乗算して得るバリエーションL出力、および乗算器413−8でバリエーションR用係数を乗算して得るバリエーションR出力である。各発音チャンネルごとに得られるこれら8系列の出力は、ミキサ403−1から403−8により系列ごとにミキシング(チャンネル累算)される。そして、インターリーブ処理404−1から404−4によりLとRでインターリーブして、405−1から405−4に示す図3(a)の波形生成用バッファmixA,mixB,mixC,mixDに設定する。   The software sound source first executes a musical sound generation process 402 for the required number of channels (the maximum number of channels is determined according to the CPU capability. Here, the maximum number of channels is 32). Since computation can be performed from any channel, computation processing may be performed with priority on later arrival, or priority may be lowered for a channel whose volume level is reduced. To generate music for one channel, waveform data in the waveform memory is read and interpolated by the waveform reading & interpolation processing 411, filtered by the filter 412, and the output of the filter 412 is divided into 8 series, and multipliers 413-1 to 413 are used. This includes a process of multiplying a predetermined coefficient by -8. The eight series of outputs are the dry L output obtained by multiplying the coefficient for dry L (stereo left) by the multiplier 413-1, and the dry R obtained by multiplying the coefficient for dry R (stereo right) by the multiplier 413-2. Output, reverb L output obtained by multiplying the multiplier 413-3 by the reverb L coefficient, reverb R output obtained by multiplying the reverb R coefficient by the multiplier 413-4, and chorus L coefficient obtained by the multiplier 413-5 L output obtained by multiplying the chorus R coefficient by the multiplier 413-6, the variation L output obtained by multiplying the coefficient for the variation L by the multiplier 413-7, and the multiplier The variation R output obtained by multiplying the variation R coefficient by 413-8. The 8 series outputs obtained for each sound generation channel are mixed (channel accumulation) for each series by mixers 403-1 to 403-8. Then, L and R are interleaved by interleaving processes 404-1 to 404-4, and the waveform generation buffers mixA, mixB, mixC, and mixD shown in FIG. 3A shown in 405-1 to 405-4 are set.

ユーザは、キーボード108、ディスプレイ109を使用してエフェクトエディットコマンドを入力することにより、図6(a)のメインフローのステップ607においてエフェクトエディット処理プログラム(図示せず)を実行し、ソフトエフェクタのアルゴリズムやパラメータなどをエディット可能である。図5は、ユーザのエディットにより設定されたソフトエフェクタのアルゴリズムの一例であり、図4の処理により波形生成用バッファmixA,mixB,mixC,mixD上に生成された波形データに複数の効果を施すようになっている。   By inputting an effect edit command using the keyboard 108 and the display 109, the user executes an effect edit processing program (not shown) in step 607 of the main flow in FIG. And parameters can be edited. FIG. 5 is an example of a soft effector algorithm set by user editing. A plurality of effects are applied to the waveform data generated on the waveform generation buffers mixA, mixB, mixC, and mixD by the processing of FIG. It has become.

ソフトエフェクトのアルゴリズムエディットでは、例えば、ソフトエフェクタの処理のブロック数(図5では3ブロック)、各ブロックの処理内容(図5では、リバーブとコーラスとバリエーション)、複数ブロック間の結線情報(図5では、5つのadd処理による3つのブロック間の結線)などがユーザにより指定され、エフェクトエディット処理プログラムでは、指定された複数ブロックのエフェクトと複数のadd処理の処理順序を、指定された結線が可能となるように自動決定し、図5のアルゴリズムを有するエフェクト処理プログラムを作成する。図5のアルゴリズムは、以下の(1)〜(6)の手順の処理を表わしている。   In the soft effect algorithm edit, for example, the number of blocks of the soft effector processing (3 blocks in FIG. 5), the processing content of each block (in FIG. 5, reverb, chorus, and variation), connection information between multiple blocks (FIG. 5). In the effect edit processing program, the specified multiple blocks of effects and the processing order of the multiple add processes can be specified in the effect edit processing program. Thus, an effect processing program having the algorithm shown in FIG. 5 is created. The algorithm of FIG. 5 represents processing of the following procedures (1) to (6).

(1)501−4の波形生成用バッファmixDの波形データを読み出し、バリエーション処理507を施して、結果をmixDに上書きする。   (1) Read waveform data in the waveform generation buffer mixD 501-4, perform variation processing 507, and overwrite the result on mixD.

(2)add(mixD−>mixA) …図5の508
add(mixD−>mixB) …図5の502
add(mixD−>mixC) …図5の504
を実行する。addは、−>の前側に記載してあるバッファの各サンプルに所定の係数を乗算して重み付けし、−>の後側に記載してあるバッファの各サンプルに足し込む処理である。add処理は、共通ルーチンを使用し、重み付けの係数は、どの処理結果に重み付けしてどこに足し込むかに応じてあらかじめ指定してあるものとする。これらのadd処理508,502,504により、バリエーション処理507を施した結果をそれぞれ重み付けして、ドライ用バッファmixA、リバーブ用バッファmixB、およびコーラス用バッファmixCの波形データに加算する処理が実行されたことになる。
(2) add (mixD-> mixA) ... 508 in FIG.
add (mixD-> mixB) 502 in FIG.
add (mixD-> mixC) 504 in FIG.
Execute. Add is a process of multiplying each sample of the buffer described on the front side of-> by a predetermined coefficient and weighting the sample, and adding the weight to each sample of the buffer described on the rear side of->. The add processing uses a common routine, and the weighting coefficient is specified in advance according to which processing result is weighted and added. By these add processes 508, 502, and 504, the results of applying the variation process 507 were respectively weighted and added to the waveform data of the dry buffer mixA, the reverb buffer mixB, and the chorus buffer mixC. It will be.

(3)波形生成用バッファmixCの波形データ(コーラス処理への入力用に用意した波形データに、add処理504でバリエーション処理507を施した波形データを重み付けして足し込んだデータ)を読み出し、コーラス処理506を施して、結果をmixCに上書きする。   (3) Read out waveform data from the waveform generation buffer mixC (data obtained by adding the waveform data prepared by inputting the variation processing 507 in the add processing 504 to the waveform data prepared for input to the chorus processing) and performing the chorus. Processing 506 is performed and the result is overwritten to mixC.

(4)add(mixC−>mixA) …図5の509
add(mixC−>mixB) …図5の503
を実行する。これらのadd処理509,503により、コーラス処理506を施した結果をそれぞれ重み付けして、ドライ用バッファmixA、およびリバーブ用バッファmixBの波形データに加算する処理が実行されたことになる。
(4) add (mix C-> mix A) 509 in FIG.
add (mix C-> mix B) 503 in FIG.
Execute. By these add processes 509 and 503, the result of performing the chorus process 506 is weighted and added to the waveform data of the dry buffer mixA and the reverb buffer mixB.

(5)波形生成用バッファmixB(リバーブ処理への入力用に用意した波形データに、add処理502でバリエーション処理507を施した波形データを重み付けして足し込み、さらにadd処理503でコーラス処理506を施した波形データを重み付けして足し込んだデータ)の波形データを読み出し、リバーブ処理505を施して、結果をmixBに上書きする。   (5) Waveform generation buffer mixB (waveform data prepared for input to the reverberation process is added by adding the weighted waveform data subjected to the variation process 507 in the add process 502, and the chorus process 506 is added in the add process 503. Waveform data obtained by weighting and adding the applied waveform data), reverberation processing 505 is performed, and the result is overwritten on mixB.

(6)add(mixB−>mixA) …図5の510
を実行する。このadd処理510により、リバーブ処理505を施した結果を重み付けしてドライ用バッファmixAの波形データに加算する処理が実行されたことになる。結果として、mixAには、ドライ用の波形データにバリエーション、コーラス、およびリバーブを反映させた波形データが設定されたことになる。
(6) add (mixB-> mixA) ... 510 in FIG.
Execute. By this add process 510, the result of applying the reverberation process 505 is weighted and added to the waveform data of the dry buffer mixA. As a result, in mixA, waveform data reflecting variation, chorus, and reverb is set in the waveform data for drying.

上述のリバーブ処理505、コーラス処理506、およびバリエーション処理507は、それぞれ、mixB,mixC,mixDの波形データに効果付与処理を施して上書きする処理であり、add処理502〜504,508〜510は共通ルーチンである。したがって、これらの処理順序を適宜変更するだけで、複数の効果付与の順序(ソフトエフェクタの結線関係)を任意に変更可能である。共通ルーチンaddが使用できるのは、図3(a)に示すように、波形生成用バッファをエフェクトごとに独立とし、同じ構造にしたからである。この発明の実施の形態では、ユーザのキーボード108などを用いた指定により、ソフトエフェクタのアルゴリズムを任意に指定できるようになっている。   The above-described reverberation process 505, chorus process 506, and variation process 507 are processes for overwriting the mix B, mix C, and mix D with the effect imparting process, and the add processes 502-504, 508-510 are common. It is a routine. Therefore, it is possible to arbitrarily change the order in which a plurality of effects are applied (the connection relationship of the soft effectors) by simply changing these processing orders as appropriate. The common routine add can be used because, as shown in FIG. 3A, the waveform generation buffer is independent for each effect and has the same structure. In the embodiment of the present invention, an algorithm of a soft effector can be arbitrarily designated by designation using a user's keyboard 108 or the like.

さらにこの発明の実施の形態では、図4および図5のようなアルゴリズムで波形生成を実行する際、キャッシュラインのサイズを単位として処理を行なうことにより、キャッシュのヒット率を飛躍的に高め楽音生成演算を高速化する。キャッシングによる処理の高速化については、図7(a)および図7(b)で詳細に説明する。   Furthermore, according to the embodiment of the present invention, when waveform generation is executed by the algorithm as shown in FIGS. 4 and 5, processing is performed in units of cache line size, thereby greatly increasing the cache hit rate and generating musical sounds. Speed up calculations. The speeding up of processing by caching will be described in detail with reference to FIGS. 7 (a) and 7 (b).

次に、図6(a)(b)および図7(a)(b)のフローチャートを参照して、上述の電子楽器のCPU101の処理手順を説明する。   Next, the processing procedure of the CPU 101 of the electronic musical instrument described above will be described with reference to the flowcharts of FIGS. 6 (a), 6 (b) and 7 (a), 7 (b).

図6(a)は、CPU101の制御プログラムのうちソフト音源に係るメインルーチンの処理手順を示す。このメインルーチンは、ソフト音源のドライバとしてOS(Operating System)に登録されているものである。ソフト音源を使用した楽音生成を行なう際には、まずこのドライバ、すなわち図6(a)の処理を起動し、ソフト音源に係るAPIを有効にしておく。図6(a)において、ステップ601で各種の初期設定を行なう。この初期設定で、再生バッファPB0,PB1を0クリアするとともに、サウンドI/O112とDMAC114に指示して図1および図2で説明した再生バッファPB0とPB1とを交互に読み出し再生する処理を開始しておく。次にステップ602で何らかの起動要因があるか否かチェックし、ステップ603で起動要因があればステップ604に進む。起動要因がなければ再び602に戻る。ステップ602〜604の起動要因の受け付けが、ソフト音源に係るAPIに対する指示受け付けに相当する。   FIG. 6A shows the processing routine of the main routine related to the software sound source in the control program of the CPU 101. This main routine is registered in the OS (Operating System) as a driver of the software sound source. When generating a musical sound using a software sound source, first, the driver, that is, the processing of FIG. 6A is activated, and an API related to the software sound source is made valid. In FIG. 6A, various initial settings are made in step 601. With this initial setting, the reproduction buffers PB0 and PB1 are cleared to 0, and the processing to instruct the sound I / O 112 and the DMAC 114 to alternately read and reproduce the reproduction buffers PB0 and PB1 described in FIGS. 1 and 2 is started. Keep it. Next, in step 602, it is checked whether there is any activation factor. If there is an activation factor in step 603, the process proceeds to step 604. If there is no activation factor, the process returns to 602 again. Acceptance of the activation factor in steps 602 to 604 corresponds to acceptance of an instruction for the API related to the software sound source.

ステップ604では発生している起動要因の種類を判別しそれぞれの処理に分岐する。起動要因がMIDIイベントの入力であったときは、ステップ605のMIDI処理を行ない、その後再びステップ602に戻る。このMIDIイベントの入力とステップ605のMIDI処理が、図2の演奏入力の受け付けに相当する。ステップ604で起動要因がフレーム割り込み(1フレーム再生完了)であるときは、ステップ606の波形生成処理を行ない、その後再びステップ602に戻る。フレーム割り込みは、サウンドI/O112が1フレーム再生完了するごとに発生するハードウェア割り込みである。ステップ606の波形生成処理が、図2の201〜204に示した波形生成演算を行なう処理である。この波形生成処理では、一度に、1フレーム分の波形データ(再生バッファPB0,PB1を合せた大きさの半分に相当する数の波形サンプル)を生成し、再生バッファPB0またはPB1に交互に書き込む。ステップ604で起動要因がその他の要求であるときは、ステップ607で当該起動要因に応じた処理を行ない、その後再びステップ602に戻る。特に、サウンドI/O112による外部入力113のサンプリングの指示、図5のようなソフトエフェクタのアルゴリズムの設定変更の指示、図4の乗算器413−1〜413−8の係数(各系列の信号送出レベルを規定する重み付け係数)の設定指示、ソフトエフェクタで用いるadd処理の重み付け係数の設定指示などの要求がなされたときには、ステップ607のその他処理で対応する処理を行なう。ステップ604で起動要因がソフト音源の終了要求であったときは、ステップ608で終了処理を行なった後、処理を終了する。   In step 604, the type of the activation factor that has occurred is determined, and the process branches to each process. If the activation factor is the input of a MIDI event, the MIDI processing in step 605 is performed, and then the process returns to step 602 again. The MIDI event input and the MIDI processing in step 605 correspond to the reception of the performance input in FIG. If the activation factor is frame interruption (one frame reproduction complete) in step 604, the waveform generation processing in step 606 is performed, and then the process returns to step 602 again. The frame interrupt is a hardware interrupt that occurs every time the sound I / O 112 completes playback of one frame. The waveform generation processing in step 606 is processing for performing the waveform generation calculation shown in 201 to 204 in FIG. In this waveform generation process, waveform data for one frame (a number of waveform samples corresponding to half of the combined size of the reproduction buffers PB0 and PB1) is generated at a time and written alternately to the reproduction buffer PB0 or PB1. If the activation factor is another request in step 604, processing corresponding to the activation factor is performed in step 607, and then the process returns to step 602 again. In particular, an instruction to sample the external input 113 by the sound I / O 112, an instruction to change the setting of the soft effector algorithm as shown in FIG. 5, and the coefficients of the multipliers 413-1 to 413-8 in FIG. When a request for setting a weighting coefficient that defines a level) or a setting instruction for setting a weighting coefficient for an add process used by the soft effector is made, a corresponding process is performed in the other process of step 607. If it is determined in step 604 that the activation factor is a soft sound source termination request, the termination process is performed in step 608 and the process is terminated.

図6(b)は、図6(a)のステップ605のMIDI処理のうちノートオンイベントを入力したときに実行されるノートオンイベント処理の手順を示す。まずステップ611で、入力したノートオンイベントのMIDIチャンネル、ノートナンバ、およびベロシティを、それぞれレジスタMC,NN,VEに設定する。次に、ステップ612で、発音チャンネル(第0〜第31チャンネル)の割り当てを行なう。ステップ613で、割り当てた発音チャンネルのソフト音源レジスタに、発音に必要な情報(ノートナンバNNやベロシティVEなど)を設定する。さらにステップ614で、割り当てた発音チャンネルのソフト音源レジスタにノートオンを書き込んで発音開始指示を出し、処理を終了する。   FIG. 6B shows a procedure of note-on event processing executed when a note-on event is input in the MIDI processing in step 605 of FIG. 6A. First, in step 611, the MIDI channel, note number, and velocity of the input note-on event are set in the registers MC, NN, and VE, respectively. Next, in step 612, sound generation channels (0th to 31st channels) are assigned. In step 613, information (note number NN, velocity VE, etc.) necessary for sound generation is set in the soft tone generator register of the assigned sound generation channel. In step 614, note-on is written in the soft tone generator register of the assigned tone generation channel, a tone generation start instruction is issued, and the process is terminated.

図示しないが、ノートオフや他の演奏入力などのMIDIイベント処理も同様である。すなわち、ノートオフなら該当する発音チャンネルに対応するソフト音源レジスタにノートオフを設定し、他の演奏入力なら該当する発音チャンネルに対応するソフト音源レジスタに当該演奏入力に対応するデータを書き込む。   Although not shown, MIDI event processing such as note-off and other performance input is the same. That is, if note-off is set, note-off is set in the software tone generator register corresponding to the corresponding tone generation channel, and data corresponding to the performance input is written in the software tone generator register corresponding to the tone generation channel for other performance inputs.

図7(a)は、図6(a)のステップ606の波形生成処理の手順を示す。この波形生成処理により、図4および図5のようなアルゴリズムで楽音生成が実行される。まずステップ701で、演算準備を行なう。これは、ソフト音源レジスタを参照して波形生成演算を行なうべきチャンネルを認識する処理、今回の波形生成演算で生成した1フレーム分の波形は再生バッファPB0とPB1のどちらに設定すべきかを認識する処理、波形生成用バッファmixA,mixB,mixC,mixDの全領域の0クリアなどの演算準備である。次に、ステップ702で、演算を行なう必要のある全チャンネルに関して16サンプル(ステレオLおよびRの各サンプルを単位として数えると2×16=32サンプル)分の波形発生演算を実行する。これは、図4のアルゴリズムの処理を16サンプル分実行して、波形生成用バッファmixA,mixB,mixC,mixDのそれぞれに2×16サンプル波形生成する処理である。   FIG. 7A shows the procedure of the waveform generation process in step 606 of FIG. By this waveform generation processing, musical tone generation is executed with an algorithm as shown in FIGS. First, in step 701, calculation preparation is performed. This is a process of recognizing a channel on which a waveform generation operation is to be performed with reference to the soft tone generator register, and recognizes whether the waveform for one frame generated by the current waveform generation operation should be set in the reproduction buffer PB0 or PB1. Processing preparations such as processing and clearing all areas of the waveform generation buffers mixA, mixB, mixC, and mixD to zero. Next, in step 702, waveform generation calculation is performed for 16 samples (2 × 16 = 32 samples when each sample of stereo L and R is counted as a unit) for all channels that need to be calculated. This is a process of executing the processing of the algorithm of FIG. 4 for 16 samples and generating 2 × 16 sample waveforms in each of the waveform generation buffers mixA, mixB, mixC, and mixD.

ステップ703では、1フレーム分の波形サンプルが生成できたか否か、すなわち図3(a)の波形生成用バッファmixA,mixB,mixC,mixD上にそれぞれ2×128サンプルが生成されたか否かを判別する。1フレーム完了していなければ、ステップ702に戻って、次の2×16サンプルを生成する。ステップ702を繰り返すことにより、図3(a)の波形生成用バッファmixA,mixB,mixC,mixDのそれぞれに関して、先頭から2×16サンプルずつ波形サンプルを作り込んで行く。   In step 703, it is determined whether or not waveform samples for one frame have been generated, that is, whether or not 2 × 128 samples have been generated on the waveform generation buffers mixA, mixB, mixC, and mixD in FIG. To do. If one frame has not been completed, the process returns to step 702 to generate the next 2 × 16 samples. By repeating step 702, waveform samples are created 2 × 16 samples from the beginning for each of the waveform generation buffers mixA, mixB, mixC, and mixD in FIG.

ステップ703で図3(a)の波形生成用バッファmixA,mixB,mixC,mixDに1フレーム分の波形が生成できたら、ステップ704に進む。ステップ704,705,706では、バリエーション、コーラス、およびリバーブなどの効果付与処理を行なう。これは、図5で説明したように、バリエーション処理、コーラス処理、およびリバーブ処理、並びにadd処理をユーザが指定したアルゴリズム(ソフトエフェクタのアルゴリズムの設定変更の指示はステップ607のその他処理で行なわれる)の通りの順序で実行する処理である。図示しないがステップ704,705,706のソフトエフェクタの処理も、ステップ702,703と同様、2×16サンプルごとに実行する。すなわち、図3(a)の波形生成用バッファmixA,mixB,mixC,mixDの先頭から2×16サンプル分について図5のアルゴリズムの処理を実行し、次の2×16サンプルについて図5の処理を実行し、…というように処理を進め、最終的に波形生成用バッファmixA上に効果付与された2×128サンプルを得る。図5で説明したバリエーション処理、コーラス処理、およびリバーブ処理、並びにadd処理は、2×16サンプル分を対象とする処理とする。   If the waveform for one frame can be generated in the waveform generation buffers mixA, mixB, mixC, and mixD in FIG. 3A in step 703, the process proceeds to step 704. In steps 704, 705, and 706, effect imparting processing such as variation, chorus, and reverb is performed. As described with reference to FIG. 5, this is an algorithm in which the user has designated variation processing, chorus processing, reverb processing, and add processing (instruction for changing the setting of the soft effector algorithm is performed in other processing in step 607). This process is executed in the order shown in FIG. Although not shown, the soft effector processes in steps 704, 705, and 706 are also executed every 2 × 16 samples as in steps 702 and 703. That is, the algorithm processing of FIG. 5 is executed for 2 × 16 samples from the top of the waveform generation buffers mixA, mixB, mixC, and mixD of FIG. 3A, and the processing of FIG. 5 is performed for the next 2 × 16 samples. Then, the process proceeds to obtain 2 × 128 samples having an effect on the waveform generation buffer mixA. The variation process, chorus process, reverb process, and add process described in FIG. 5 are processes for 2 × 16 samples.

なお、図7(a)には、図5で説明したadd処理が現れていないが、これは、ステップ704〜706のエフェクトブロック処理に含まれているものとする。つまり、ステップ704のバリエーション処理には前記(1)と(2)の手順の処理が、ステップ705のコーラス処理には前記(3)と(4)の手順の処理が、ステップ706のリバーブ処理には前記(5)と(6)の手順の処理が、それぞれ含まれる。   Although the add process described in FIG. 5 does not appear in FIG. 7A, it is assumed that this is included in the effect block process in steps 704 to 706. In other words, the variation processing at Step 704 is the processing of the procedures (1) and (2), the chorus processing at Step 705 is the processing of the procedures (3) and (4), and the reverberation processing is Step 706. Includes the processing of the procedures (5) and (6).

なお、ステップ704,705,706の各エフェクト処理は、2×16サンプルずつでなく、1フレーム分を一気にまとめて実行してもよい。すなわち、図5で説明したバリエーション処理、コーラス処理、およびリバーブ処理、並びにadd処理のそれぞれは、1フレーム分を一気に行なう処理としてもよい。この場合でも、1フレームの処理中ではキャッシュは16サンプルごとに有効に働いている。このようにすれば、各バッファ間にわたる処理ではヒット率が落ちる場合があると考えられるが、各エフェクト処理中で使用するレジスタやバッファに関してはヒット率が上がる。発音チャンネルの処理に比べて、エフェクトの処理は結果が得られるまでの時間が長いので1フレーム分を一気に処理していく方が効率が良い。また、1フレーム分一気にといっても、その中で局所的に16サンプル単位で処理を行なえば効率的である。要するに、キャッシュミスを起こりにくくするためには、連続したデータを短期間に連続して処理するようにすればよい。   It should be noted that the effect processes in steps 704, 705, and 706 may be executed all at once, instead of 2 × 16 samples. That is, each of the variation processing, chorus processing, reverberation processing, and add processing described in FIG. 5 may be processing for one frame at a time. Even in this case, the cache works effectively every 16 samples during processing of one frame. In this way, it is considered that the hit rate may decrease in processing between the buffers, but the hit rate increases for registers and buffers used in each effect processing. Compared to the sound channel processing, the effect processing takes a long time to obtain a result, so it is more efficient to process one frame at a time. Moreover, even if it is said for one frame at a time, it is efficient if processing is performed locally in units of 16 samples. In short, in order to make it difficult for a cache miss to occur, it is only necessary to process continuous data in a short time.

ソフトエフェクタ処理の後、ステップ707で、生成した1フレーム分の波形(すなわちmixA上の2×128サンプル)を再生予約する。これは、mixAの波形サンプルを再生バッファPB0またはPB1の一方(現在、再生に用いられていない方)にコピーする処理である。既に、ステップ601で再生バッファPB0とPB1とを交互に読み出し再生する処理が開始しているので、再生に用いられていない方に生成した波形をコピーするだけで次のフレームで当該波形の発音が実行される。   After the soft effector processing, in step 707, the generated waveform for one frame (that is, 2 × 128 samples on mixA) is reserved for reproduction. This is a process of copying the mixA waveform sample to one of the playback buffers PB0 and PB1 (which is not currently used for playback). Since the process of alternately reading and reproducing the reproduction buffers PB0 and PB1 has already started in step 601, the waveform is generated in the next frame simply by copying the waveform that has not been used for reproduction. Executed.

なお、この例では、波形生成用バッファmixAと再生バッファPB0,PB1とを別々に設けたが、mixAを2面用意し、一方をPB0、他方をPB1として兼用することもできる。この場合は、波形生成処理を直接再生バッファ上で行なうことになるので、ステップ707の生成波形をコピーする処理は不要になり、処理速度がより向上する。   In this example, the waveform generation buffer mixA and the reproduction buffers PB0 and PB1 are provided separately. However, it is also possible to prepare two faces of mixA, one for PB0 and the other for PB1. In this case, since the waveform generation process is performed directly on the reproduction buffer, the process of copying the generated waveform in step 707 is unnecessary, and the processing speed is further improved.

図7(b)は、図7(a)のステップ702の16サンプル(ステレオLおよびRのそれぞれのサンプルを単位で数えれば2×16=32サンプル)分の波形発生処理の手順を示す。まずステップ711で、第1番目のチャンネルについて演算準備を行なう。図7(a)のステップ701の演算準備により、波形演算処理が必要なチャンネルおよびチャンネル間の優先度は求められているので、優先度が最も高いチャンネルを第1番目のチャンネルとする。次に、ステップ712〜718で当該チャンネルについて16サンプル分の波形生成を行なう。   FIG. 7B shows a waveform generation processing procedure for 16 samples (2 × 16 = 32 samples if the stereo L and R samples are counted in units) in step 702 of FIG. 7A. First, in step 711, calculation preparation is performed for the first channel. Since the channel requiring the waveform calculation process and the priority between the channels are obtained by the calculation preparation in step 701 in FIG. 7A, the channel with the highest priority is set as the first channel. Next, in steps 712 to 718, waveforms of 16 samples are generated for the channel.

まずステップ712で、後の処理で用いるエンベロープ値を求める。エンベロープ値は、例えばADSR(アタック、ディケイ、サスティン、リリース)タイプのエンベロープ波形を出力するような演算型のエンベロープ生成処理によって発生すればよい。ステップ712で発生したエンベロープ値は、現在生成処理中の16サンプルに対して共通に用いられる。ここで生成したエンベロープ値は、生成した1つの値を16サンプルに共通に使用する。すなわち、波形の16サンプルごとに1つのエンベロープ値が生成されるようになっている。次にステップ713でアドレス生成、波形読み出し、および補間処理(図4の411)を16サンプル分行ない、ステップ714でそれらのサンプルに対してフィルタ処理(図4の412)を行なう。各サンプルは、この段階では未だステレオLR別に分けておらずモノラルである。   First, in step 712, an envelope value used in later processing is obtained. The envelope value may be generated by, for example, an operation-type envelope generation process that outputs an ADSR (attack, decay, sustain, release) type envelope waveform. The envelope value generated in step 712 is used in common for the 16 samples currently being generated. As the envelope value generated here, one generated value is commonly used for 16 samples. That is, one envelope value is generated for every 16 samples of the waveform. Next, in step 713, address generation, waveform readout, and interpolation processing (411 in FIG. 4) are performed for 16 samples, and in step 714, filtering processing (412 in FIG. 4) is performed on these samples. Each sample is monaural, not yet divided by stereo LR at this stage.

次にステップ715で、mixAの2×16サンプルを算出する。これは、図4において、フィルタ処理412から出力された16サンプル(モノラル)に対して以下の処理を行なうものである。まず、dryL用重み付け係数(dryLの送出レベルを規定する係数)とステップ712で求めたエンベロープ値とを加算する。この係数とエンベロープ値は、ともにdB(デシベル)スケール上の値であるので、加算がリニアスケール上の乗算に相当する。その後、乗算器413−1で、上記係数とエンベロープ値の加算結果を、フィルタ処理412から出力された各波形サンプル値に対して指数変換乗算する。これによりdry用のL側波形サンプルが16サンプル得られたことになる。dry用のR側波形サンプルも、上記係数をdryR用係数にして同様に求める。以上のようにして求めたドライ用のLRの2×16=32サンプルの波形をmixAに累算する。   Next, in step 715, 2 × 16 samples of mixA are calculated. In FIG. 4, the following processing is performed on 16 samples (monaural) output from the filter processing 412. First, the weight coefficient for dryL (coefficient defining the transmission level of dryL) and the envelope value obtained in step 712 are added. Since both the coefficient and the envelope value are values on the dB (decibel) scale, addition corresponds to multiplication on the linear scale. Thereafter, the multiplier 413-1 multiplies each waveform sample value output from the filter processing 412 by exponential transformation with the addition result of the coefficient and the envelope value. As a result, 16 L-side waveform samples for dry are obtained. The R-side waveform sample for dry is also obtained in the same manner with the coefficient set as the coefficient for dryR. The waveform of 2 × 16 = 32 samples of the dry LR obtained as described above is accumulated in mixA.

ステップ715と同様にして、ステップ716ではリバーブ用のLRの2×16=32サンプルの波形をmixBに累算し、ステップ717ではコーラス用のLRの2×16=32サンプルの波形をmixCに累算し、ステップ718ではバリエーション用のLRの2×16=32サンプルの波形をmixDに累算する。もちろん重み付け係数は、ドライ用、リバーブ用、コーラス用、およびバリエーション用で異なるものを用いる。   In the same manner as in step 715, in step 716, the waveform of 2 × 16 = 32 samples of reverb LR is accumulated to mixB, and in step 717, the waveform of 2 × 16 = 32 samples of chorus LR is accumulated to mixC. In step 718, the waveform of 2 × 16 = 32 samples of the LR for variation is accumulated in mixD. Of course, different weighting coefficients are used for dry, reverb, chorus, and variation.

次に、ステップ719で、演算すべき残りのチャンネルがあるか否か判別する。あれば、ステップ720で次チャンネルの演算準備(優先度の高いチャンネルから先に演算するものとする)を行なった後、ステップ712に戻る。これを繰り返して、演算すべき全チャンネルについて、ステレオLおよびRのそれぞれで16サンプル分の波形生成を行なって波形生成用バッファmixA,mixB,mixC,mixDに累算する。ステップ719で演算すべき残りのチャンネルがなければ、リターンする。   Next, in step 719, it is determined whether there are remaining channels to be calculated. If there is, preparation for calculation of the next channel is performed in step 720 (calculation is performed first on the channel with higher priority), and then the process returns to step 712. By repeating this, waveform generation for 16 samples is performed for each of the stereo L and R for all channels to be calculated and accumulated in the waveform generation buffers mixA, mixB, mixC, and mixD. If there is no remaining channel to be calculated in step 719, the process returns.

上述の図7(a)および図7(b)の波形生成演算では、2×16サンプルを単位として効果付与を含む波形生成(図4および図5の処理)を実行している。16サンプルは32バイトであり、また図3(a)の波形生成用バッファmixA,mixB,mixC,mixDのそれぞれは先頭から順に32バイト単位でキャッシングされるようにバウンダリ調整されている。したがって、例えばmixAの第1サンプル目をアクセスしたときには、キャッシュメモリ117に該第1サンプル目を含む16サンプルがキャッシングされ、この16サンプルについての処理中は、キャッシュメモリ117上で波形生成処理が実行されるので、非常に高速に波形生成できる。2×16サンプルであるから64バイト単位であるが、隣り合う16サンプルずつは別のキャッシュラインにキャッシングされるから、ここでは2つのキャッシュラインが使用される。   In the waveform generation calculation in FIGS. 7A and 7B described above, the waveform generation including the effect application (the processes in FIGS. 4 and 5) is executed in units of 2 × 16 samples. The 16 samples are 32 bytes, and the waveform generation buffers mixA, mixB, mixC, and mixD in FIG. 3A are boundary-adjusted so that they are cached in units of 32 bytes in order from the top. Therefore, for example, when the first sample of mixA is accessed, 16 samples including the first sample are cached in the cache memory 117, and during the processing for the 16 samples, the waveform generation processing is executed on the cache memory 117. Therefore, the waveform can be generated very quickly. Since it is 2 × 16 samples, the unit is 64 bytes. However, since every 16 adjacent samples are cached in another cache line, two cache lines are used here.

特に、この例では複数種類の効果付与のアルゴリズムをユーザが任意に指定できるので、複数種類の効果付与処理がいろいろな順序で行なわれることになるが、付与する効果の種類ごとに独立に波形生成用バッファを設けているので、1つの効果付与処理を実行する際には対応するバッファ上で処理を行なうことになる。そのバッファは当該効果付与に使用する波形サンプルのみからなる(すなわち当該効果処理に不要な波形サンプルが間に挟まっているようなものでない)ので、キャッシュのヒット効率を飛躍的に高めることができキャッシングの効果が高い。   In particular, in this example, the user can arbitrarily specify multiple types of effect application algorithms, so multiple types of effect application processing are performed in various orders, but waveform generation is independent for each type of effect to be applied. Therefore, when one effect applying process is executed, the process is performed on the corresponding buffer. Since the buffer consists only of waveform samples used for applying the effect (that is, there is no waveform sample unnecessary for the effect processing in between), the cache hit efficiency can be drastically increased and caching can be performed. Is highly effective.

次に、図7(c)のフローチャートを参照して、再生時のDMAコントローラ114の処理を説明する。再生時は、サウンドI/O112からサンプリング周期ごとにサンプル要求割り込み(ハードウェア割り込み)が発行される。これに応じて、DMAコントローラ114は、図7(c)の処理を行なう。まずステップ731で、再生バッファPB0,PB1の1サンプルをサウンドI/O112の出力FIFOに送る。出力FIFOに書き込まれた波形データは、図1で説明したようにサンプリング周期ごとにD/A変換されてサウンドシステム115へと送られ放音される。なお、ステップ731で「DMAB」とあるのは再生バッファPB0,PB1のことである。再生バッファPB0,PB1は、DMAのバッファと見ることもできるのでDMABと記載した。次に、ステップ732でポインタpをインクリメントして処理を終了する。pは再生バッファPB0,PB1から1サンプルを読み出すときのポインタである。以上のようにして、ポインタpを進めながら、サンプリング周期ごとに再生バッファPB0,PB1から1サンプルをサウンドI/O112に渡す。   Next, processing of the DMA controller 114 at the time of reproduction will be described with reference to the flowchart in FIG. At the time of reproduction, a sample request interrupt (hardware interrupt) is issued from the sound I / O 112 every sampling period. In response to this, the DMA controller 114 performs the processing of FIG. First, in step 731, one sample of the reproduction buffers PB 0 and PB 1 is sent to the output FIFO of the sound I / O 112. As described with reference to FIG. 1, the waveform data written in the output FIFO is D / A converted at each sampling period, sent to the sound system 115, and emitted. Note that “DMAB” in step 731 refers to the reproduction buffers PB0 and PB1. The reproduction buffers PB0 and PB1 are described as DMAB because they can be regarded as DMA buffers. Next, in step 732, the pointer p is incremented and the process is terminated. p is a pointer for reading one sample from the reproduction buffers PB0 and PB1. As described above, one sample is transferred from the reproduction buffers PB0 and PB1 to the sound I / O 112 every sampling period while the pointer p is advanced.

なお、ポインタpは1ずつインクリメントしていくことによりPB0の先頭のサンプルからPB1の最後のサンプルまでを順次読み出すためのポインタであるが、PB1の最後のサンプルを読出した後はPB0の先頭のサンプルを指すようにポインタ値を更新する必要がある。この処理は、DMAコントローラ114が自動的に行なうように設定されている。   The pointer p is a pointer for sequentially reading from the first sample of PB0 to the last sample of PB1 by incrementing by one, but after reading the last sample of PB1, the first sample of PB0 The pointer value needs to be updated to point to. This processing is set so that the DMA controller 114 automatically performs this processing.

なお、上記発明の実施の形態では、図7(a)のステップ702,703および図7(b)から分かるように、演算が必要な全チャンネルにわたって16サンプル分の波形生成処理を行なうループ処理を内側のループで実行し、その16サンプル分の波形生成処理を1フレーム完了まで外側のループで実行して、1フレーム分の波形を生成しているが、これらのループ処理を入れ替えてもよい。すなわち、内側のループで1つのチャンネルに関する16サンプル分の波形生成を繰り返して1フレーム分波形生成し、これを外側のループで各チャンネルに関して実行し、最終的な1フレーム分の波形を生成するようにしてもよい。上記発明の実施の形態の方式だと全チャンネルにわたる16サンプルずつ作成していくのでキャッシュのヒット率が高いが、CPUの処理能力が低いと、1フレーム時間内で1フレーム分の波形生成が完了しない可能性がある。これに対して、上記のループ処理を入れ替える方式であれば、優先度の高いチャンネルは始めに1フレーム分作成されるので、もし1フレーム時間内で全チャンネルの波形生成が完了しない場合でも優先度の高いチャンネルについては発音されることになる。なお、これらの方式を混在させて、所定チャンネル数については前者の方式で、残りのチャンネルについては後者の方式で、というようにしてもよい。   In the embodiment of the invention described above, as can be seen from steps 702 and 703 in FIG. 7A and FIG. 7B, loop processing for performing waveform generation processing for 16 samples over all channels requiring computation is performed. The waveform generation process for 16 samples is executed in the inner loop, and the waveform for one frame is generated by executing the waveform generation process for one frame until the completion of one frame. However, these loop processes may be interchanged. That is, the waveform generation for 16 samples for one channel is repeated in the inner loop to generate a waveform for one frame, and this is executed for each channel in the outer loop to generate the final waveform for one frame. It may be. In the above embodiment of the present invention, 16 samples across all channels are created, so the cache hit rate is high. However, if the CPU processing power is low, waveform generation for one frame is completed within one frame time. There is a possibility not to. On the other hand, if the above loop processing is replaced, a channel with a high priority is created for one frame at the beginning, so even if waveform generation for all channels is not completed within one frame time, the priority is Higher channels will be pronounced. Note that these methods may be mixed so that the predetermined number of channels is the former method and the remaining channels are the latter method.

上記発明の実施の形態では、キャッシュメモリをライトスルー方式にしたが、ライトバック方式としてもよい。ライトバック方式にした方が、キャッシュメモリ上で波形サンプルの更新が可能になるので、より高速な波形生成処理が実現される。   In the embodiment of the present invention, the cache memory is a write-through method, but it may be a write-back method. Since the waveform sample can be updated on the cache memory by using the write-back method, higher-speed waveform generation processing is realized.

なお、ユーザが複数エフェクト間の結線状態だけでなく、複数エフェクトの数や内容を指定できるようにしてもよい。また、キャッシングの単位となるサンプル数は各CPUごとに異なるので、波形生成の処理単位もそれに応じて変更してよい。   Note that the user may be able to specify not only the connection state between a plurality of effects but also the number and contents of the plurality of effects. Further, since the number of samples serving as a unit of caching differs for each CPU, the processing unit of waveform generation may be changed accordingly.

また、波形生成用バッファの数は、上記発明の実施の形態ではmixA〜mixDの4つであったが、これは、その後段のエフェクトのブロック数が3であることに対応しており、エフェクトのブロック数に応じて変更される。各エフェクトの入力用のバッファとdry用のバッファが必要なので、バッファの数はエフェクトのブロック数+1となる。   The number of waveform generation buffers is four from mixA to mixD in the embodiment of the present invention. This corresponds to the fact that the number of blocks in the subsequent stage is 3, It is changed according to the number of blocks. Since an input buffer and a dry buffer are required for each effect, the number of buffers is the number of effect blocks + 1.

なお、上述した楽音生成方法を実現するための各種関係情報や動作プログラムなどをハードディスクなどの記憶装置に格納し、CPUがこれらをRAMに読み出してから使用するように構成し、さらにCD−ROM(コンパクトディスク−リード・オンリ・メモリ)やフレキシブルディスク、光磁気ディスクなどの可搬型の記憶媒体に記憶されたデータをハードディスクなどの記憶装置に転送できるように構成すれば、関係情報や動作プログラムなどの追加(インストールなど)や更新(バージョンアップなど)の際に便利である。もちろん、可搬型の記憶媒体から直接RAMへデータを転送するようにしてもよい。   It should be noted that various related information and operation programs for realizing the above-described musical tone generation method are stored in a storage device such as a hard disk, and the CPU reads them into the RAM before using them, and further uses a CD-ROM ( Compact disk-read-only memory), data stored in portable storage media such as flexible disks and magneto-optical disks can be transferred to a storage device such as a hard disk. Useful for addition (installation etc.) and update (version upgrade etc.). Of course, data may be directly transferred from the portable storage medium to the RAM.

さらに、可搬型の記憶媒体経由ではなく、通信インターフェース(ネットワークI/O)経由で、ハードディスクなどの記憶装置上の関係情報や動作プログラムなどを通信ネットワーク側からダウンロードするようにしてもよい。上記通信インターフェースは、LAN(ローカルエリアネットワーク)やインターネット、電話回線などの通信ネットワークに接続されており、当該通信ネットワークを介してサーバコンピュータと接続される。クライアントとなる本装置は、自装置が有する記憶装置(ハードディスクなど)に関係情報や動作プログラムなどが記憶されていない場合、上記通信インターフェースおよび通信ネットワークを介してサーバコンピュータへ、関係情報や動作プログラムなどを要求するコマンドを送信する。このコマンドを受け取ると、サーバコンピュータは、要求された関係情報や動作プログラムなどを、通信ネットワークを介して本装置へと配信する。そして、配信された関係情報や動作プログラムなどを本装置が通信インターフェースを介して受信し、記憶装置に蓄積することにより、ダウンロードが完了する。   Furthermore, it is also possible to download related information and operation programs on a storage device such as a hard disk from the communication network side via a communication interface (network I / O) instead of via a portable storage medium. The communication interface is connected to a communication network such as a LAN (local area network), the Internet, or a telephone line, and is connected to a server computer via the communication network. When the related information or operation program is not stored in the storage device (hard disk or the like) of the own device, the present apparatus as a client is connected to the server computer via the communication interface and communication network. Send a command requesting Upon receiving this command, the server computer distributes the requested relationship information, operation program, etc. to this apparatus via the communication network. The device receives the distributed relationship information, operation program, and the like via the communication interface and stores them in the storage device, thereby completing the download.

また、本装置を、関係情報や動作プログラムなどをインストールした市販のパーソナルコンピュータなどによって実現しても良い。もちろん、この場合にも、関係情報や動作プログラムなどのデータの配布方法としては、ROMなどの不揮発性メモリにあらかじめ格納しておく方法、可搬型の記憶媒体に格納して配布する方法、および通信インターフェース経由で配布する方法などが適用可能である。   Further, the present apparatus may be realized by a commercially available personal computer installed with related information, an operation program, and the like. Of course, in this case as well, data such as related information and operation programs can be distributed in advance in a non-volatile memory such as a ROM, stored in a portable storage medium, and distributed. A method of distributing via an interface is applicable.

この発明に係る楽音発生装置を適用した電子楽器のブロック構成図Block configuration diagram of an electronic musical instrument to which a musical sound generator according to the present invention is applied ソフト音源の楽音生成原理を説明するための図Diagram for explaining the principle of musical sound generation 本発明に係る波形生成用バッファの構成例および従来の波形生成用バッファの構成例を示す図The figure which shows the structural example of the waveform generation buffer which concerns on this invention, and the structural example of the conventional waveform generation buffer ソフト音源による楽音生成からチャンネル累算までのアルゴリズムの例を示す図The figure which shows the example of the algorithm from the musical tone generation with the soft sound source to the channel accumulation 波形データに複数の効果付与を施すソフトエフェクタのアルゴリズムの例を示す図The figure which shows the example of the algorithm of the soft effector which gives plural effects to the waveform data メインルーチンおよびノートオンイベントルーチンのフローチャート図Flowchart diagram of main routine and note-on event routine 波形生成処理ルーチンおよび16サンプル分の波形発生処理ルーチンのフローチャート図Flowchart diagram of waveform generation processing routine and waveform generation processing routine for 16 samples

符号の説明Explanation of symbols

101…中央処理装置(CPU)、102…リードオンリメモリ(ROM)、103…ランダムアクセスメモリ(RAM)、104…ドライブ装置、106…タイマ、107…ネットワーク入出力(I/O)インタフェース、108…キーボード、109…ディスプレイ、110…ハードディスク、111…サンプリングクロック(Fs)発生器、112…サウンドI/O、114…DMA(ダイレクトメモリアクセス)コントローラ、115…サウンドシステム、116…バスライン、117…キャッシュメモリ、mixA,mixB,mixC,mixD…波形生成用バッファ。   DESCRIPTION OF SYMBOLS 101 ... Central processing unit (CPU), 102 ... Read-only memory (ROM), 103 ... Random access memory (RAM), 104 ... Drive apparatus, 106 ... Timer, 107 ... Network input / output (I / O) interface, 108 ... Keyboard 109, display 110, hard disk 111 sampling clock (Fs) generator 112 sound I / O 114 DMA (direct memory access) controller 115 sound system 116 bus line 117 cache Memory, mixA, mixB, mixC, mixD ... Waveform generation buffer.

Claims (4)

各種のソフトウェアを実行可能な演算処理装置と、
生成された複数波形サンプルを記憶する波形バッファであって、該波形バッファは複数のエフェクト対応に複数設けられているものと、
複数のエフェクト処理ソフトウェアを格納した記憶装置であって、各エフェクト処理ソフトウェアによって前記演算処理装置で実行される処理は、対応する波形バッファの複数波形サンプルに対して所定のエフェクト処理を施し、処理後の波形サンプルを対応する波形バッファに書き込むものであるものと、
前記波形バッファのうちの任意の1つの波形サンプルに所定のレベル制御を施して別の任意の波形バッファに記憶された波形サンプルに足して再び同記憶位置に書き込むadd処理を前記演算処理装置で実行させるためのadd処理ソフトウェアを格納した記憶装置と、
各波形バッファ上で実行される各波形バッファに対応する前記エフェクト処理、および任意の2つの波形バッファ間で実行される前記add処理に関して、所望のエフェクトアルゴリズムに応じて、エフェクト処理とadd処理の処理順序を指定し、該add処理で加算する波形バッファと加算される波形バッファを指定する手段と
を備えたことを特徴とする楽音発生装置。
An arithmetic processing unit capable of executing various types of software;
A waveform buffer for storing the generated multiple waveform samples, wherein the waveform buffer is provided in correspondence with a plurality of effects;
A storage device storing a plurality of effect processing software, wherein the processing executed by the arithmetic processing device by each effect processing software performs predetermined effect processing on a plurality of waveform samples of a corresponding waveform buffer, and after processing To write waveform samples to the corresponding waveform buffer,
The arithmetic processing unit executes an add process in which an arbitrary waveform sample in the waveform buffer is subjected to a predetermined level control and added to a waveform sample stored in another arbitrary waveform buffer and then written to the same storage position again. A storage device storing add processing software for
With respect to the effect processing corresponding to each waveform buffer executed on each waveform buffer and the add processing executed between any two waveform buffers, processing of effect processing and add processing is performed according to a desired effect algorithm. A musical sound generating apparatus comprising: a waveform buffer that designates an order and designates a waveform buffer to be added in the add process and a waveform buffer to be added.
ユーザが前記複数エフェクトの結線状態を示すアルゴリズムを指定するための指定手段をさらに備え、
前記波形バッファを指定する手段では、前記指定手段で設定されたアルゴリズムに応じて、複数エフェクト処理および複数add処理の処理順序を変更する
ことを特徴とする請求項1に記載の楽音発生装置。
A specifying means for a user to specify an algorithm indicating a connection state of the plurality of effects;
The musical sound generating device according to claim 1, wherein the means for designating the waveform buffer changes the processing order of the multiple effect processing and the multiple add processing according to the algorithm set by the designating means.
処理装置で実行され、複数チャンネル分の楽音を発生可能な楽音発生方法であって、
演奏情報を供給するステップと、
所定時間間隔でタイミング信号を発生するステップと、
前記タイミング信号の発生ごとに、前記演奏情報に応じた所定数のサンプルを生成して複数のエフェクト処理にそれぞれ対応した複数のバッファに出力する処理を複数チャンネル分実行することにより、該複数のバッファのそれぞれに、チャンネル累算された波形データを生成する生成ステップと、
あるバッファの複数波形サンプルに対してエフェクト付与処理を施した後、処理後の波形サンプルをそのバッファに書き込む、各バッファに対応した複数のエフェクト処理と、任意の1つのバッファ上の波形サンプルに所定のレベル制御を施して別の任意のバッファに記憶された波形サンプルに足して再び同記憶位置に書き込むadd処理とを、指定されたエフェクトアルゴリズムに応じた処理順序で実行することにより、エフェクト処理を施した波形データを生成出力するエフェクト処理ステップと、
該エフェクト処理ステップから出力された波形データを、サンプリング周期ごとに1サンプルずつディジタルアナログ変換器に供給し、アナログ波形に変換するステップと
を備えたことを特徴とする楽音発生方法。
A musical sound generation method that is executed by a processing device and is capable of generating musical sounds for a plurality of channels,
Supplying performance information;
Generating timing signals at predetermined time intervals;
Each time the timing signal is generated, a predetermined number of samples corresponding to the performance information are generated and output to a plurality of buffers corresponding to a plurality of effect processes, and executed for a plurality of channels. A generating step for generating channel accumulated waveform data,
After applying effects to multiple waveform samples in a buffer, write the processed waveform samples to the buffer. Multiple effect processing corresponding to each buffer, and waveform samples in any one buffer The effect processing is performed by executing the add processing to be added to the waveform sample stored in another arbitrary buffer and written to the storage position again in the processing order corresponding to the designated effect algorithm. An effect processing step for generating and outputting the applied waveform data;
A musical sound generation method comprising: supplying waveform data output from the effect processing step to a digital-to-analog converter sample by sample for each sampling period and converting the sample into an analog waveform.
処理装置で実行され、複数チャンネル分の楽音を発生可能な楽音発生方法に係るプログラムを記憶した、処理装置が読み取り可能な記憶媒体であって、
前記楽音発生方法に係るプログラムは、処理装置に、
演奏情報を供給するステップと、
所定時間間隔でタイミング信号を発生するステップと、
前記タイミング信号の発生ごとに、前記演奏情報に応じた所定数のサンプルを生成して複数のエフェクト処理にそれぞれ対応した複数のバッファに出力する処理を複数チャンネル分実行することにより、該複数のバッファのそれぞれに、チャンネル累算された波形データを生成する生成ステップと、
あるバッファの複数波形サンプルに対してエフェクト付与処理を施した後、処理後の波形サンプルをそのバッファに書き込む、各バッファに対応した複数のエフェクト処理と、任意の1つのバッファ上の波形サンプルに所定のレベル制御を施して別の任意のバッファに記憶された波形サンプルに足して再び同記憶位置に書き込むadd処理とを、指定されたエフェクトアルゴリズムに応じた処理順序で実行することにより、エフェクト処理を施した波形データを生成出力するエフェクト処理ステップと、
該エフェクト処理ステップから出力された波形データを、サンプリング周期ごとに1サンプルずつディジタルアナログ変換器に供給し、アナログ波形に変換するステップと
を実行させるプログラムを記憶した、処理装置が読み取り可能な記憶媒体。
A storage device readable by a processing device, storing a program related to a musical sound generation method that is executed by the processing device and can generate musical sounds for a plurality of channels,
A program relating to the musical sound generating method is stored in a processing device.
Supplying performance information;
Generating timing signals at predetermined time intervals;
Each time the timing signal is generated, a predetermined number of samples corresponding to the performance information are generated and output to a plurality of buffers corresponding to a plurality of effect processes, and executed for a plurality of channels. A generating step for generating channel accumulated waveform data,
After applying effects to multiple waveform samples in a buffer, write the processed waveform samples to the buffer. Multiple effect processing corresponding to each buffer, and waveform samples in any one buffer The effect processing is performed by executing the add processing to be added to the waveform sample stored in another arbitrary buffer and written to the storage position again in the processing order corresponding to the designated effect algorithm. An effect processing step for generating and outputting the applied waveform data;
A storage medium readable by a processing apparatus, storing a program for executing the step of supplying waveform data output from the effect processing step to the digital-analog converter by one sample at every sampling period and converting it to an analog waveform .
JP2006148637A 1996-08-09 2006-05-29 Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method Expired - Fee Related JP4036233B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006148637A JP4036233B2 (en) 1996-08-09 2006-05-29 Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP22780796 1996-08-09
JP2006148637A JP4036233B2 (en) 1996-08-09 2006-05-29 Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP22303597A Division JP3852634B2 (en) 1996-08-09 1997-08-05 Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method

Publications (2)

Publication Number Publication Date
JP2006221209A JP2006221209A (en) 2006-08-24
JP4036233B2 true JP4036233B2 (en) 2008-01-23

Family

ID=36983532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006148637A Expired - Fee Related JP4036233B2 (en) 1996-08-09 2006-05-29 Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method

Country Status (1)

Country Link
JP (1) JP4036233B2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9808030B2 (en) 2011-02-11 2017-11-07 Grain Processing Corporation Salt composition
EP3604533A1 (en) 2008-04-11 2020-02-05 Arbutus Biopharma Corporation Site-specific delivery of nucleic acids by combining targeting ligands with endosomolytic components
EP3705125A1 (en) 2007-12-04 2020-09-09 Alnylam Pharmaceuticals, Inc. Carbohydrate conjugates as delivery agents for oligonucleotides
US10798955B2 (en) 2000-11-09 2020-10-13 Nektar Therapeutics Compositions of particulate coformulation

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10798955B2 (en) 2000-11-09 2020-10-13 Nektar Therapeutics Compositions of particulate coformulation
EP3705125A1 (en) 2007-12-04 2020-09-09 Alnylam Pharmaceuticals, Inc. Carbohydrate conjugates as delivery agents for oligonucleotides
EP4223299A2 (en) 2007-12-04 2023-08-09 Alnylam Pharmaceuticals, Inc. Carbohydrate conjugates as delivery agents for oligonucleotides
EP4321177A2 (en) 2007-12-04 2024-02-14 Alnylam Pharmaceuticals, Inc. Carbohydrate conjugates as delivery agents for oligonucleotides
EP3604533A1 (en) 2008-04-11 2020-02-05 Arbutus Biopharma Corporation Site-specific delivery of nucleic acids by combining targeting ligands with endosomolytic components
US9808030B2 (en) 2011-02-11 2017-11-07 Grain Processing Corporation Salt composition

Also Published As

Publication number Publication date
JP2006221209A (en) 2006-08-24

Similar Documents

Publication Publication Date Title
EP1026662B1 (en) Software sound source
US6441290B2 (en) Apparatus and method for reproducing or recording, via buffer memory, sample data supplied from storage device
US6180863B1 (en) Music apparatus integrating tone generators through sampling frequency conversion
EP1580729B1 (en) Sound waveform synthesizer
EP1018724B1 (en) Computerized music apparatus processing waveform to create sound effect
JP4036233B2 (en) Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method
JP3163984B2 (en) Music generator
US5714704A (en) Musical tone-generating method and apparatus and waveform-storing method and apparatus
US5809342A (en) Computer system and method for generating delay-based audio effects in a wavetable music synthesizer which stores wavetable data in system memory
JP3852634B2 (en) Musical sound generating device, musical sound generating method, and storage medium storing a program related to the method
JP2002524805A (en) Sound generation integrated circuit with virtual cache
JPH07121181A (en) Sound information processor
JP2001265352A (en) Musical sound signal processor
JP3246405B2 (en) Musical sound generating method, musical sound generating device, and recording medium recording musical sound generating program
JP3339372B2 (en) Storage medium storing program for realizing musical sound generating apparatus and musical sound generating method
JP3285137B2 (en) Musical sound generating apparatus and musical sound generating method, and storage medium storing program according to the method
JP2709965B2 (en) Music transmission / reproduction system used for BGM reproduction
JP3460524B2 (en) Music data processing method, processed music data reproduction method, and storage medium
JP3723973B2 (en) Sound generator
JP3275678B2 (en) Musical sound generating method and apparatus
JP7159583B2 (en) Musical sound generating device, musical sound generating method, musical sound generating program, and electronic musical instrument
JP3148803B2 (en) Sound source device
JP2956552B2 (en) Musical sound generating method and apparatus
JP2000122668A (en) Digtal sound data processor, and computor system
JP3770030B2 (en) Recording / playback device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071001

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: 20071009

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071022

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101109

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101109

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111109

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111109

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121109

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121109

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131109

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees