JP3695402B2 - Sound generator - Google Patents
Sound generator Download PDFInfo
- Publication number
- JP3695402B2 JP3695402B2 JP2002036389A JP2002036389A JP3695402B2 JP 3695402 B2 JP3695402 B2 JP 3695402B2 JP 2002036389 A JP2002036389 A JP 2002036389A JP 2002036389 A JP2002036389 A JP 2002036389A JP 3695402 B2 JP3695402 B2 JP 3695402B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- written
- waveform
- envelope
- time
- 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
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、波形信号を生成する波形信号生成手段を備える音源装置に関するものである。
【0002】
【従来の技術】
従来、電子楽器などに備えられている音源装置は、楽音波形を発生する際に使用する種々の楽音パラメータを記憶する音源制御レジスタを有している。通常、音源装置は複数の楽音信号を同時に発音するために、時分割処理により各チャンネルの楽音生成処理を行っている。この時分割チャンネル処理における各チャンネルの処理は、各処理段階で使用される楽音パラメータを音源制御レジスタから逐次読み出しながら実行されている。従って、音源制御レジスタには各チャンネル毎の各処理段階で使用される複数の楽音パラメータを記憶することのできる複数の記憶領域が備えられている。
【0003】
【発明が解決しようとする課題】
従来の電子楽器等に備えられる音源装置の一部の構成を図8に示す。この図8には音源装置におけるエンベロープを生成するエンベロープ生成部(EG)132の構成が示されている。このEG132において、図9に示すエンベロープ波形を生成させる動作を説明する。EG132は音源制御レジスタ130におけるEGパラメータレジスタ130bに書き込まれているエンベロープパラメータを使用して図9に示すエンベロープ波形を生成するようにしている。ノートオンが指示された際に、エンベロープ波形はイニシャルエンベロープ値INEGのレベルから生成開始される。このため、EGパラメータレジスタ130bにイニシャルエンベロープ値INEGを書き込んでおき、このイニシャルエンベロープ値INEGを読み出してエンベロープ波形を生成するEG部132aにおける現在値レジスタ132cに書き込んでおくようにする。
【0004】
EGパラメータレジスタ130bには、エンベロープ値およびレート情報が書込可能とされており、ノートオン時にはCPU110が、イニシャルエンベロープ値INEGとレート情報をバスライン124を介してEGパラメータレジスタ130bに書き込むようにしている。イニシャルエンベロープ値INEGが書き込まれた際には、イニシャルレジスタ(INIT)130aの出力が立ち上がるようになる。すると、イニシャルレジスタ130aの出力により現在値レジスタ132cにEGパラメータレジスタ130bに書き込まれているイニシャルエンベロープ値INEGが書き込まれるようになる。このようにして、現在値レジスタ132cにイニシャルエンベロープ値INEGが書き込まれると、CPU110は次の第1エンベロープ値EG1をEGパラメータレジスタ130bに書き込むようにする。この場合はイニシャルレジスタ130aの出力は立ち上がらない。この状態において、ノートオンが指示されてエンベロープ波形の生成が開始されると、EG部132aは現在値レジスタ132cの値にレート情報により決定される所定値を演算タイミング毎に加算して現在値レジスタ132cに書き込む。同時に、現在値レジスタ132cの値をEGパラメータレジスタ130bに書き込まれている第1エンベロープ値130bと比較し、第1エンベロープ値EG1に達しているか否かを検出する。
【0005】
これにより、現在値レジスタ132cの値はイニシャルエンベロープ値INEGから第1エンベロープ値EG1に向かうようになる。そして、演算タイミング毎に現在値レジスタ132cの値が加算されることにより、その値が第1エンベロープ値EG1に達するようになると、EG部132aにおける到達検出手段132bが到達フラグ生成部132dに到達フラグを生成させる出力を与える。これにより、到達フラグ生成部132dにおいて到達フラグが生成されて出力される。さらに、この到達フラグは割込発生部132eに供給されて、割込発生部132eにおいてCPU割込信号が発生されて出力されるようになる。CPU割込信号をCPU110が受け取ると、CPU割込の原因が複数あることからCPU110はその原因を検出する。
【0006】
この場合は、CPU割込の原因として到達フラグが検出されることから、CPU110は第2エンベロープ値EG2を音源制御レジスタ130に供給して、EGパラメータレジスタ130bに書き込むようにする。これにより、現在値レジスタ132cの値は第1エンベロープ値EG1から第2エンベロープ値EG2に向かうようになる。そして、演算タイミング毎に現在値レジスタ132cの値に所定値が加算されることにより、その値が第2エンベロープ値EG2に達するようになり、上述した動作が繰り返し行われるようになる。この結果、EG部132aからは図9に示すような、第1エンベロープ値EG1に向かうと共に、第1エンベロープ値EG1に達した際には第2エンベロープ値EG2に向かい、さらに図示しない第3エンベロープ値に向かうエンベロープ波形が生成されて出力されるようになる。
【0007】
ところで、順次データが書き込まれるレジスタにおいて、書き込まれたデータを読み出して第2のレジスタに書き込む際には、第2のレジスタへのデータの書き込みが有効に終了した際に、次のデータをレジスタに書き込むようにしないと第2のレジスタへのデータ書込に失敗することがある。例えば、図8に示す音源装置において、EGパラメータレジスタ130bにイニシャルエンベロープ値INEGを書き込んで、そのイニシャルエンベロープ値INEGを読み出して現在値レジスタ132cに書き込む際に、CPU110におけるEGパラメータレジスタ130bへの書込タイミングによっては、現在値レジスタ132cへのイニシャルエンベロープ値INEGの書き込みが完了する前に、次の第1エンベロープ値EG1がEGパラメータレジスタ130bに書き込まれてしまうようになる。この場合には、現在値レジスタ132cへのイニシャルエンベロープ値INEGの書き込みが失敗し、第1エンベロープ値EG1が書き込まれてしまうようになり、所望の波形信号が生成されないという問題点があった。
【0008】
また、到達フラグを検出することにより次の楽音パラメータを音源制御レジスタ130に書き込んだ際には、検出された到達フラグはリセットされて到達フラグが出力されない状態になる。すなわち、割込信号は停止されるようになる。しかしながら、書き込まれた次の楽音パラメータが到達フラグに反映されて割込信号が停止されるまでには若干の時間がかかるようになる。すると、割込信号により割込原因とされた到達フラグを検出して次の楽音パラメータを音源制御レジスタ130に書き込み、引き続いて波形生成処理を続行した際に、割込信号が停止されていない場合があり、このような場合には誤動作してしまうという問題点があった。
【0009】
さらに、図8に示す音源装置においては振幅エンベロープやフィルタエンベロープ等の複数種類のエンベロープ波形を時分割処理により作成していると共に、それぞれの種類のエンベロープ波形を時分割チャンネル処理により複数チャンネル分作成している。すると、CPU割込が発生してCPU110が特定のエンベロープ種類における全チャンネルの到達フラグの読み出しを行う際に、全チャンネルの到達フラグが用意されるまでに時間がかかるようになる。この場合、CPU割込を受けて特定のエンベロープ種類における全チャンネルの到達フラグを直ちに読むようにすると、全てのチャンネルにおける正確な到達フラグの状態を読み出すことができないという問題点があった。
これらの問題点を解決するために、データが有効になるまで待って処理を開始することが考えられるが、CPU110の動作タイミングと音源装置との動作タイミングが異なっていることから、CPU11は音源装置が現在どのような状態であるのか検出することができない。このため、その待ち時間はデータが有効になるに十分な長い時間を設定しなければならないことになる。すると、この待ち時間がCPU110において制御遅れを生じさせる原因になるという問題点が生じるようになる。
【0010】
そこで、本発明は、制御遅れを生じることなくデータが有効になるまで待つことができる音源装置を提供することを目的としている。
【0011】
【課題を解決するための手段】
上記目的を達成するために、本発明の音源装置は、楽音を発生する際に、制御手段から供給された楽音パラメータが書き込まれる音源制御レジスタと、前記音源制御レジスタに波形生成開始時に書き込まれた楽音パラメータが書き込まれる現在値レジスタを有し、該現在値レジスタに書き込まれた楽音パラメータを使用して波形信号を生成すると共に、前記音源制御レジスタに書き込まれた次の同種の楽音パラメータを前記現在値レジスタの楽音パラメータが目標値とする処理を行うことにより波形信号を生成していく波形生成部と、前記現在値レジスタに書き込まれた楽音パラメータが目標値に達した際に、到達フラグと割込信号を生成する生成手段と、前記音源制御レジスタへ書き込まれている楽音パラメータが読み出されて、前記現在値レジスタへの書き込みが終了するまでの時間を計数する第1のタイマ手段と、前記割込信号を受けて前記制御手段が次の楽音パラメータを前記音源制御レジスタに書き込んだ際に、当該書き込みの結果が前記到達フラグに反映されるまでの動作遅延時間以上の時間を計数する第2のタイマとを備え、前記第1のタイマ手段がタイムアップした後に、前記制御手段が次の同種の楽音パラメータを前記音源制御レジスタに書き込むと共に、前記第2のタイマがタイムアップするまで前記到達フラグおよび前記割込信号をマスクするようにしている。
【0013】
また、上記本発明の音源装置において、前記音源制御レジスタに複数種類の波形信号にそれぞれ対応する楽音パラメータが書き込まれるようにされていると共に、前記楽音パラメータをそれぞれ使用して前記波形生成部が前記複数種類の波形信号をそれぞれ生成するようにされており、前記制御手段により前記波形生成部の前記複数種類の内の特定の波形信号に関する読み出し設定が行われた際に、該特定の波形信号における全チャンネルの前記到達フラグが揃うに十分な期間とされる所定の時間を計数する第3のタイマを備え、前記割込信号の発生時に前記制御手段は、前記波形生成部の前記複数種類の内の特定の波形信号に関する読み出し設定を行い、その後の前記第3のタイマのタイムアップに応じて前記到達フラグを検出し、該当するチャンネルにおける次の楽音パラメータを前記音源制御レジスタに書き込むようにしてもよい。
【0014】
このような本発明によれば、音源制御レジスタへ書き込まれた楽音パラメータが有効となって、次の楽音パラメータの書き込みが許可されるまでの時間を計数する第1のタイマ手段を設けるようにしている。これにより、現在値レジスタへのイニシャルエンベロープ値の書き込みが完了する前に、次の目標値が音源制御レジスタに書き込まれることを防止することができるようになる。
また、書き込みの結果が到達フラグに反映されるまでの時間を計数する第2のタイマがタイムアップするまで到達フラグおよび割込信号をマスクするようにしたので、その書込が到達フラグに反映されるまでに時間がかかっても誤動作しないようになる。さらに、到達フラグが揃うまでの時間を計数する第3のタイマを設けるようにしたので、複数チャンネルにおける正確な到達フラグの状態を読み出すことができるようになる。
【0015】
【発明の実施の形態】
本発明の実施の形態にかかる音源装置を備える電子楽器の構成を示すブロック図を図1に示す。
この図に示す電子楽器は本発明にかかる音源装置を音源20として備えている。この電子楽器において、中央処理装置(CPU)10は、ROM11やRAM12に記憶された制御プログラムに基いて電子楽器全体の動作を制御することにより、演奏データに応じた楽音を生成している。また、パネルスイッチ18の操作に応じて、音源20において生成する楽音信号の音色の選択処理を実行したり、ミキサ&DSP部37で付与する効果の選択処理を実行している。そして、MIDIインタフェース16からの演奏入力に応じて、音源20において生成する楽音信号の制御を行っている。例えば、ノートオンが入力された場合、該ノートオンに対し音源20における発音チャンネルを割当て、割り当てた発音チャンネルにおいて該ノートオンに対応した楽音信号の発生を指示している。また、CPU10は、電子楽器におけるその他のブロックの制御処理も行っている。
【0016】
ROM11はCPU10が実行する各種プログラムや各種データが格納されている記憶手段であり、リードオンリーメモリ(ROM)で構成されている。RAM12はランダムアクセスメモリであり、CPU10がプログラムを実行する際に発生する各種データを一時的に記憶するワークメモリエリアや、各種データを記憶する記憶エリアが設定されており、レジスタ、フラグ、バッファ等として利用されている。タイマ13は動作時の経過時間を示したり、特定の間隔でタイマ割込を発生するタイマであり、自動演奏の時間管理等に使用される。
【0017】
また、ディスク15はハードディスク、フロッピーディスク、リムーバブルディスク等の記録媒体であり、波形メモリ21にロードする波形データなどが格納されている。ドライブ14はセットされたディスク15の読出/書込を行うディスクドライブである。MIDIインタフェース16は、電子楽器内部で作成したMIDIメッセージを外部へ送出したり、外部からのMIDIメッセージを受信するMIDIインタフェースである。ネットワークインタフェース17は、LAN(Local Area Network )やインターネット、電話回線等の通信ネットワークを介してサーバコンピュータに接続するためのネットワークインタフェースである。パネルスイッチ(パネルSW)18は、電子楽器のパネルに設けられている各種スイッチであり、これを操作することにより電子楽器に各種指示を与えることができる。パネル表示器19は、楽音生成時に各種情報が表示されるディスプレイである。
【0018】
音源20は、発生すべき楽音の音高に対応する周波数データ(Fナンバ)に応じて波形メモリ21から楽音波形データを順次読み出す波形メモリ読出方式により、楽音信号を発生する音源である。この音源20は、複数の発音チャンネルを使用して複数の楽音信号を同時に発生することが可能とされており、バスライン24を経由して与えられた演奏データ(MIDI規格に準拠したデータ等)が入力され、このデータに基づいて楽音信号を発生している。なお、この実施例では、電子楽器は、例えば64チャンネル時分割で動作している。
【0019】
音源20における音源制御レジスタ30には、楽音信号を生成するために必要な演奏データ(ピッチデータKC、ノートオン、波形スタートアドレス(WSA)、エンベロープパラメータやその他の各種のパラメータやMIDI規格に準拠したデータ等)が供給されて書き込まれ、これらのデータを使用して楽音データが生成される。生成された楽音データは、DAC(ディジタル・アナログ変換器)22によりアナログの楽音信号に変換されてサウンドシステム23から放音されるようになる。音源20は、音源制御レジスタ30に加えて時間計測部31,マルチEG部32,アドレス発生部33,補間部34,フィルター制御部(DCF)35,振幅制御部36,ミキサ&DSP部37から構成されている。
【0020】
時間計測部31は、後述するが3つのタイマを備えており、この3つのタイマはデータが有効になるまで処理を待たせたり、フラグをマスクするためのタイマである。これらのタイマにより、マルチEG部32が各種のエンベロープ波形を制御遅れを生じることなく正確に発生できるようにしている。マルチEG部32は、複数の機能を有するエンベロープ波形発生器であり、ピッチエンベロープ波形(PEG波形)、フィルタエンベロープ波形(FEG波形)、振幅エンベロープ波形(AEG波形)、効果エンベロープ波形(EEG波形)の発生、および、フィルタ係数オフセット(Fオフセット)、音量レベル、変調レベルの補間等を、共通のハードウェア回路において時分割で実行している。マルチEG部32には、音源制御レジスタ30から各種エンベロープの初期値情報や目標値情報、およびそのレート情報が供給されている。
【0021】
アドレス発生部33は、音源制御レジスタ30から供給されているピッチデータおよび読出開始アドレスに基づいて波形メモリ21の読出アドレスを生成している。具体的には、ピッチデータであるFナンバを演算タイミング毎に累算し、その整数部を読出アドレスとして波形メモリ21に供給し、その小数部を補間部34に補間情報として供給している。補間部34は、波形メモリ21から読み出された2サンプルの間をアドレス発生部33から供給された小数部に基づいて補間することにより、アドレス発生部33で発生された読出アドレスに対応するサンプルデータを得るようにしている。なお、補間部34においては2点補間に限らず4点補間によりサンプルデータを得るようにしてもよい。DCF35は、音源制御レジスタ30から供給されたフィルター係数に基づいて、補間部34おいて得られた補間されたサンプルデータをフィルタリングして周波数特性を調整している。また、DCF35にはマルチEG部32により生成されたFEG波形が供給されており、このFEG波形によりDCF35のフィルタ特性が変化するため、DCF35から出力される楽音データの周波数特性も時間軸上で変化するようになる。
【0022】
振幅制御部36は、音源制御レジスタ30から供給された音量情報に基づいてDCF35から出力された楽音データの音量を制御している。また、振幅制御部36にはマルチEG部32により生成されたAEG波形が供給されており、このAEG波形に応じて楽音データの音量レベルが変化するようになる。これにより、振幅制御部36から出力される楽音データの音量レベル特性も時間軸上で変化するようになる。上述したアドレス発生部33ないし振幅制御部36は時分割チャンネル処理を行うことにより、例えば64発音チャンネルの楽音データを同時に生成している。そして、生成された各チャンネル毎の独立した楽音データは、ミキサ&DSP37に供給されるようになる。ミキサ&DSP37においては、生成された複数チャンネルの楽音データ、および、DSPの複数エフェクトが付与された楽音データを複数通りにミキシングし、その結果生成される複数のミキシング波形をDAC22に供給している。DAC22から出力されるアナログの楽音信号はサウンドシステム23から放音される。なお、ミキシング波形にさらにDSPによる複数エフェクトを付与するようにしてもよい。また、DSPは、CPU10により設定されたマイクロプログラムに基いて、入力する複数のミキシング波形に対する複数エフェクト処理を実行している。さらに、DSPは、リバーブ処理、ディストーション処理、コーラス処理等のエフェクト処理を時分割処理により並行して実行することができるようにされている。
【0023】
次に、音源20におけるマルチEG部32の構成とマルチEG部32に関連する音源制御レジスタ30の構成を図2に示す。
図2に示すマルチEG部32は、図3に示すようなピッチエンベロープ波形(PEG波形)、フィルタエンベロープ波形(FEG波形)、振幅エンベロープ波形(AEG波形)、効果エンベロープ波形(EEG波形)を発生している。これらの複数種類のエンベロープ波形を、時分割チャンネル処理により発音チャンネル分発生している。一例として、図3に示すPEG波形のエンベロープを生成させる動作を説明する。マルチEG部32は音源制御レジスタ30における目標値レジスタ30dに書き込まれているエンベロープパラメータを使用して図3に示すPEG波形を生成するようにしている。ノートオンが指示された際に、PEG波形はイニシャルエンベロープ値INPEGのレベルから生成開始される。このため、CPU10から目標値レジスタ30dにPEGイニシャルエンベロープ値INPEGを書き込んでおき、このPEGイニシャルエンベロープ値INPEGをマルチEG部32に内蔵されている現在値レジスタ32dに書き込んでおくようにする。
【0024】
音源制御レジスタ30には、目標値とされるエンベロープ値が書き込まれる目標値レジスタ30dと、エンベロープのレート情報が書き込まれるレートレジスタ30eが用意されており、ノートオンイベント処理時にはCPU10が、各エンベロープのイニシャルエンベロープ値(INPEG,INFEG,INAEG,INEEG)とレート情報をバスライン24を介して音源制御レジスタ30に書き込むようにしている。そして、PEGイニシャルエンベロープ値INPEG等のイニシャルエンベロープ値が書き込まれた際には、イニシャルレジスタ(INIT)30bの出力が立ち上がるようになる。すると、イニシャルレジスタ30bの出力によりロード信号発生部32eからロード信号が発生され、このロード信号が供給されているセレクタ32cは、目標値レジスタ30dからの入力bを選択して現在値レジスタ32dに供給する。これにより、現在値レジスタ32dに目標値レジスタ30dに書き込まれているPEGイニシャルエンベロープ値INPEGが書き込まれるようになる。
【0025】
このようにして、現在値レジスタ32dにPEGイニシャルエンベロープ値INPEGが書き込まれると、CPU10は次の第1PEGエンベロープ値PEG1を目標値レジスタ30dに書き込むようにする。この場合はイニシャルエンベロープ値でないことからイニシャルレジスタ30bの出力は立ち上がらない。この状態において、ノートオンレジスタ30cにノートオンが書き込まれるとノートオンが指示されてエンベロープ波形の生成が開始される。すると、比較器32aは目標値レジスタ30dの第1PEGエンベロープ値PEG1と現在値レジスタ32dのPEGイニシャルエンベロープ値INPEGとを比較するが、第1PEGエンベロープ値PEG1の値の方が大きいため加減算器32bに加算命令を与える。これにより、加減算器32bにおいて現在値レジスタ32dのPEGイニシャルエンベロープ値INPEGにレート情報により決定される所定値が加算されて、その加算値が現在値レジスタ32dに書き込まれる。この場合、セレクタ32cにはロード信号が供給されていないため、加減算器32bからのa入力が選択されている。
【0026】
次の演算タイミングになると、比較器32aは目標値レジスタ30dの第1PEGエンベロープ値PEG1と現在値レジスタ32dのエンベロープ値とを比較するが、第1PEGエンベロープ値PEG1の値の方が大きい場合は加減算器32bに加算命令を与える。これにより、加減算器32bにおいて現在値レジスタ32dのエンベロープ値にレート情報により決定される所定値がさらに加算されて、その加算値が現在値レジスタ32dに書き込まれる。このような加算動作は、現在値レジスタ32dのエンベロープ値が第1PEGエンベロープ値PEG1に達するまで行われる。そして、現在値レジスタ32dのエンベロープ値が第1PEGエンベロープ値PEG1に達すると、比較器32aは現在値レジスタ32dのエンベロープ値が、第1PEGエンベロープ値PEG1に達していると判断して、ロード信号発生部32eおよび到達フラグ生成部32fに到達信号を供給する。
【0027】
これにより、ロード信号発生部32eはロード信号を発生してセレクタ32cに供給することから現在値レジスタ32dの値は第1PEGエンベロープ値PEG1となる。さらに、到達フラグ生成部32fにおいて到達フラグが生成されて出力される。また、この到達フラグは割込発生部32gに供給されて、割込発生部32gにおいてCPU割込信号が発生されて出力されるようになる。現在値レジスタ32dからは、PEGイニシャルエンベロープ値INPEGから第1PEGエンベロープ値PEG1に達するように順次上昇するPEG波形が出力されるようになる。そして、出力されたCPU割込信号をCPU10が受け取ると、CPU割込の原因が複数あることからCPU10はその原因を検出する。この場合は、CPU割込の原因としてPEG波形の到達フラグが検出されることから、CPU10は第2PEGエンベロープ値PEG2を音源制御レジスタ30に供給して、目標値レジスタ30dに書き込むようにする。
【0028】
次の演算タイミングになると、比較器32aは目標値レジスタ30dの第2PEGエンベロープ値PEG2と現在値レジスタ32dの第1PEGエンベロープ値PEG1とを比較するが、第2PEGエンベロープ値PEG2の値が小さくされているため加減算器32bに減算命令を与える。これにより、加減算器32bにおいて現在値レジスタ32dのエンベロープ値からレート情報により決定される所定値が減算されて、その減算値が現在値レジスタ32dに書き込まれる。このような演算タイミング毎の減算動作は、現在値レジスタ32dのエンベロープ値が第2PEGエンベロープ値PEG2に達するまで行われる。そして、現在値レジスタ32dのエンベロープ値が第2PEGエンベロープ値PEG2に達すると、比較器32aは現在値レジスタ32dのエンベロープ値が、第2PEGエンベロープ値PEG2に達していると判断して、ロード信号発生部32eおよび到達フラグ生成部32fに到達信号を供給する。
【0029】
これにより、ロード信号発生部32eはロード信号を発生してセレクタ32cに供給することから現在値レジスタ32dの値は第2PEGエンベロープ値PEG2となる。さらに、到達フラグ生成部32fにおいて到達フラグが生成されて出力される。また、この到達フラグは割込発生部32gに供給されて、割込発生部32gにおいてCPU割込信号が発生されて出力されるようになる。現在値レジスタ32dからは、PEGイニシャルエンベロープ値INPEGから上昇して第1PEGエンベロープ値PEG1に達し、次いで第2PEGエンベロープ値PEG2に達するように下降するPEG波形が出力されるようになる。そして、出力されたCPU割込信号をCPU10が受け取ると、CPU割込の原因が複数あることからCPU10はその原因を検出する。この場合は、CPU割込の原因としてPEG波形の到達フラグが検出されることから、CPU10は図示されていない第3PEGエンベロープ値PEG3を音源制御レジスタ30に供給して、目標値レジスタ30dに書き込むようにする。
【0030】
以降、上述した動作が繰り返し行われるようになり、その結果、マルチEG部32からは図3に示すような、PEGイニシャルエンベロープ値INPEGから上昇して第1PEGエンベロープ値PEG1に達し、次いで下降して第2PEGエンベロープ値PEG2に達し、さらに第3PEGエンベロープ値PEG3に達するように上昇するPEG波形が出力されるようになる。また、同様にして図3に示すようなフィルタエンベロープ波形(FEG波形)、振幅エンベロープ波形(AEG波形)、効果エンベロープ波形(EEG波形)を発生することができる。このような複数種類のエンベロープ波形は、時分割チャンネル処理によりチャンネル毎に発生されるようになる。
【0031】
次に、本発明の特徴点である時間計測部31が備える3つのタイマについて説明する。
本発明にかかる音源20においては時分割チャンネル処理により複数のチャンネルの楽音データを同時に生成するようにしている。この場合、音源制御レジスタ30に書き込まれる各発音チャンネルの楽音パラメータの書込期間は図4に示すように割り当てられる。例えば、最大発音チャンネル数を64チャンネルとすると、時刻t0から時刻t1までの1サンプリング周期(1DAC)において64チャンネルの各楽音パラメータが順次音源制御レジスタ30に書き込まれる。この場合、楽音パラメータの種類毎の全チャンネル分のレジスタが音源制御レジスタに用意されているため、書込期間は同一楽音パラメータの書込期間だけ異なるように一部他のチャンネルと重複するようにされている。
【0032】
ここで、図2に示す音源制御レジスタ30における目標値レジスタ30dには、前述したようにノートオン時にイニシャルエンベロープ値が書き込まれると共に、第1エンベロープ値も書き込まれるようになる。イニシャルエンベロープ値は、現在値レジスタ32dに書き込まれるのであるが、現在値レジスタ32dに有効に書き込まれるには若干の時間が必要である。現在値レジスタ32dにイニシャルエンベロープ値が有効に書き込まれない内に、第1エンベロープ値を目標値レジスタ30dに書き込むと現在値レジスタ32dへのイニシャルエンベロープ値の書込に失敗することがある。すなわち、目標値レジスタ30dへの第1エンベロープ値の書き込みが速すぎる場合は、現在値レジスタ32dに第1エンベロープ値が書き込まれてしまうようになる。そこで、目標値レジスタ30dにイニシャルエンベロープ値を書き込む際に時間計測部31におけるタイマ1を起動する。そして、タイマ1がタイムアップしたことを検出してからCPU10が第1エンベロープ値を目標値レジスタ30dに書き込むようにする。このタイマ1は、現在値レジスタ32dにイニシャルエンベロープ値が有効に書き込まれない内はタイムアップしないようにされている。
【0033】
この様子を図5にタイマ1として示している。図5におけるタイマ1では、第4発音チャンネル(#4ch)を例にして、計測時間の態様が3つ例示されている。#4chにおける楽音パラメータの書込期間は、1DACにおけるハッチした期間で示されている。ここで、計測時間Aで示すように時刻t0から時刻t1のDAC周期における時刻t01においてCPU10からイニシャルエンベロープ値が目標値レジスタ30dに書き込まれた場合には、この時刻t01においてタイマ1が起動される。タイマ1を起動する情報としては、音源制御レジスタ30にCPU10から供給される書込アドレスの一部のビットを使用することができる。このタイマ1は次のDAC周期における#4chの書込期間が終了する時刻t12においてタイムアップする。この場合、#4の書込期間が終了するまでタイムアップしないタイマ1のタイムアップを検出してから、CPU10は第1エンベロープ値を目標値レジスタ30dに書き込むようになる。これにより、現在値レジスタ32dにイニシャルエンベロープ値が有効に書き込まれてから、第1エンベロープ値があ目標値レジスタ30dに書き込まれるようになる。
【0034】
また、計測時間Bで示す例では時刻t1から時刻t2のDAC周期における時刻t11においてCPU10からイニシャルエンベロープ値が目標値レジスタ30dに書き込まれている。この場合には、この時刻t11においてタイマ1が起動される。このタイマ1は当該DAC周期における#4chの書込期間が終了する時刻t12においてタイムアップする。この場合、タイマ1のタイムアップを検出してから、CPU10は第1エンベロープ値を目標値レジスタ30dに書き込むことから、現在値レジスタ32dにイニシャルエンベロープ値が有効に書き込まれてから、第1エンベロープ値が目標値レジスタ30dに書き込まれるようになる。
【0035】
さらに、計測時間Cで示す例では時刻t1から時刻t2のDAC周期における#4chの書込期間中の時刻t13においてCPU10からイニシャルエンベロープ値が目標値レジスタ30dに書き込まれている。この場合には、この時刻t13においてタイマ1が起動される。このタイマ1は次のDAC周期における#4chの書込期間が終了する時刻t21においてタイムアップする。この場合もタイマ1のタイムアップを検出してから、CPU10は第1エンベロープ値を目標値レジスタ30dに書き込むことから、現在値レジスタ32dにイニシャルエンベロープ値が有効に書き込まれてから、第1エンベロープ値が目標値レジスタ30dに書き込まれるようになる。
計測時間Aないし計測時間Cに示すように、CPU10が目標値レジスタ30dにイニシャルエンベロープ値を書き込むタイミングによっては、1DAC周期待つことなくタイマ1はタイムアップするようになる。このように、最小時間の待ち時間により、現在値レジスタ32dにイニシャルエンベロープ値を有効に書き込めると共に、第1エンベロープ値を目標値レジスタ30dに書き込むことができるようになる。
【0036】
また、上述したようにマルチEG部32においてエンベロープ波形を発生する際には、目標値に達した際に到達フラグを出力して、CPU割込を出力するようにしている。CPU10はこのCPU割込を検出することにより、CPU割込の原因を到達フラグから読み取り次の目標値を音源制御レジスタ30における目標値レジスタ30dに書き込むようにしている。そして、次の目標値が目標値レジスタ30dに書き込まれた際には、比較器32aの出力は元に戻り、このため到達フラグがリセットされて、さらにCPU割込信号も停止されるようになる。しかしながら、書き込まれた次の目標値が到達フラグに反映されてCPU割込信号が停止するまでには若干の動作遅延時間がかかるようになる。すると、CPU割込信号により割込原因とされた到達フラグを検出して次の目標値を音源制御レジスタ30の目標値レジスタ30dに書き込み、引き続いてエンベロープ波形の生成処理を続行した際に、CPU割込信号が未だ停止されていない場合があり、このような場合には誤動作してしまうことになる。そこで、割込原因とされた到達フラグを検出して次の目標値を音源制御レジスタ30の目標値レジスタ30dに書き込む際に、時間計測部31におけるタイマ2を起動する。そして、タイマ2がタイムアップするまで到達フラグ生成部32fから出力される到達フラグをマスクすることにより、到達フラグおよびCPU割込信号を停止させる。このタイマ2は、到達フラグ生成部32fが到達フラグをリセットするまではタイムアップしないようにされている。
【0037】
この様子を図5にタイマ2として示している。図5におけるタイマ2では、第4発音チャンネル(#4ch)を例にして、計測時間の態様が3つ例示されている。#4chにおける楽音パラメータが書き込まれてから読み出されてフラグに反映されるまでの書込〜読出期間は、1DACにおけるハッチした期間で示されている。この期間はタイマ1における書込期間より若干後に長くされている。ここで、計測時間Aで示すように時刻t0から時刻t1のDAC周期における時刻t01において割込原因とされた到達フラグを検出して次の目標値がCPU10から目標値レジスタ30dに書き込まれた場合には、この時刻t01においてタイマ2が起動される。同時にマスクレジスタ30aに“1”がセットされて到達フラグ生成部32fの出力はマスクされる。これにより、割込発生部32gには到達フラグが供給されないようになり、割込発生部32gはCPU割込信号を停止させるようになる。マスクレジスタ30aに“1”をセットする情報としては、音源制御レジスタ30にCPU10から供給される書込アドレスの一部のビットを使用することができ、このビットによりタイマ2も起動することができる。このタイマ2は次のDAC周期における#4chの書込〜読出期間が終了する時刻t14においてタイムアップし、これによりマスクレジスタ30aは“0”にリセットされる。従って、目標値レジスタ30dに新たに書き込まれた目標値が到達フラグ生成部32fが出力する到達フラグに反映されるまでに動作遅延時間があったとしても、誤った到達フラグおよびCPU割込信号が出力されないようになる。
【0038】
また、計測時間Bで示す例では時刻t1から時刻t2のDAC周期における時刻t11において割込原因とされた到達フラグを検出して次の目標値がCPU10から目標値レジスタ30dに書き込まれている。この場合には、この時刻t11においてタイマ2が起動される。同時にマスクレジスタ30aに“1”がセットされて到達フラグ生成部32fの出力はマスクされる。これにより、割込発生部32gには到達フラグが供給されないようになり、割込発生部32gはCPU割込信号を停止させる。このタイマ2は当該DAC周期における#4chの書込〜読出期間が終了する時刻t14においてタイムアップし、これによりマスクレジスタ30aは“0”にリセットされる。従って、目標値レジスタ30dに新たに書き込まれた目標値が到達フラグ生成部32fが出力する到達フラグに反映されるまでに動作遅延時間があったとしても、誤った到達フラグおよびCPU割込信号が出力されないようになる。
【0039】
さらに、計測時間Cで示す例では時刻t1から時刻t2のDAC周期における書込〜読出期間中の時刻t13において割込原因とされた到達フラグを検出して次の目標値がCPU10から目標値レジスタ30dに書き込まれている。この場合には、この時刻t13においてタイマ2が起動される。同時にマスクレジスタ30aに“1”がセットされて到達フラグ生成部32fの出力はマスクされる。これにより、割込発生部32gには到達フラグが供給されないようになり、割込発生部32gはCPU割込信号を停止させる。このタイマ2は次のDAC周期における#4chの書込〜読出期間が終了する時刻t22においてタイムアップし、これによりマスクレジスタ30aは“0”にリセットされる。従って、目標値レジスタ30dに新たに書き込まれた目標値が到達フラグ生成部32fが出力する到達フラグに反映されるまでに動作遅延時間があったとしても、誤った到達フラグおよびCPU割込信号が出力されないようになる。
計測時間Aないし計測時間Cに示すように、CPU10が目標値レジスタ30dに次の目標値を書き込むタイミングによっては、1DAC周期待つことなくタイマ2はタイムアップするようになる。
【0040】
さらに、図2に示すマルチEG部32においてはピッチエンベロープ波形(PEG波形)、フィルタエンベロープ波形(FEG波形)、振幅エンベロープ波形(AEG波形)、効果エンベロープ波形(EEG波形)の複数種類のエンベロープ波形を時分割処理により作成していると共に、それぞれの種類のエンベロープ波形を時分割チャンネル処理により発音チャンネル分作成している。すると、CPU割込が発生してCPU10が特定のエンベロープ種類における各チャンネルの到達フラグを読み出しにいった際に、全チャンネルの到達フラグが用意されるまでに時間がかかるようになる。この全チャンネルの到達フラグはビットマップで用意される。この場合、CPU割込を受けて特定のエンベロープ種類における各チャンネルの到達フラグが揃う前に読み出すようにすると、全発音チャンネルにおける正確な到達フラグの状態を読み出すことができないことになる。そこで、割込を発生させたエンベロープ種類における全発音チャンネルの到達フラグを読み出す際に、時間計測部31におけるタイマ3を起動する。そして、タイマ3がタイムアップしたことを検出してからCPU10が全発音チャンネルの到達フラグを読み出すようにする。このタイマ3は、全発音チャンネルの到達フラグがビットマップ上に揃うまでタイムアップしないようにされている。
【0041】
この様子を図5にタイマ3として示している。図5におけるタイマ3では、計測時間の態様が3つ例示されている。ここで、計測時間Aで示すように時刻t0から時刻t1のDAC周期における時刻t01においてCPU10から特定のエンベロープ種類における全チャンネルの到達フラグの読出命令が音源制御レジスタ30に供給されたとする。この場合には、この時刻t01においてタイマ3が起動される。タイマ3を起動する情報としては、音源制御レジスタ30にCPU10から供給される読出命令を構成する読出アドレスの一部のビットを使用することができる。このタイマ3は次のDAC周期における時刻t15においてタイムアップする。この場合、時刻t01〜t15の期間は、ビットマップ上に全チャンネルの到達フラグが揃うに十分な期間とされているから、タイマ3がタイムアップした際に読み出される全チャンネルの到達フラグは、各チャンネルの状態を正確に示しているようになる。
【0042】
また、計測時間Bで示すように時刻t1から時刻t2のDAC周期における時刻t11においてCPU10から特定のエンベロープ種類における全チャンネルの到達フラグの読出命令が音源制御レジスタ30に供給されたとする。この場合には、この時刻t11においてタイマ3が起動される。このタイマ3は次のDAC周期における時刻t23においてタイムアップする。この場合、時刻t11〜t23の期間は、時刻t01〜t15の期間と同様の長さの期間とされているから、タイマ3がタイムアップした際に読み出される全チャンネルの到達フラグは、各チャンネルの状態を正確に示しているようになる。
【0043】
さらに、計測時間Cで示すように時刻t1から時刻t2のDAC周期における時刻t13においてCPU10から特定のエンベロープ種類における全チャンネルの到達フラグの読出命令が音源制御レジスタ30に供給されたとする。この場合には、この時刻t13においてタイマ3が起動される。このタイマ3は次のDAC周期における時刻t24においてタイムアップする。この場合、時刻t13〜t24の期間は、時刻t01〜t15の期間と同様の長さの期間とされているから、タイマ3がタイムアップした際に読み出される全チャンネルの到達フラグは、各チャンネルの状態を正確に示しているようになる。なお、全チャンネルの到達フラグがビットマップ上に揃う期間は、エンベロープ種類によらずほぼ一定の期間とされる。
【0044】
次に、図1に示す電子楽器におけるCPU10が実行するノートオンイベント処理のフローチャートを図6に示す。
図6に示すノートオンイベント処理はノートオンイベントが検出された際にスタートされ、ステップS1にてノートオンイベントにおけるパート情報がPTレジスタに、そのノート番号がNNレジスタに、そのベロシティがVELレジスタに格納される。次いで、ステップS2にてパートPTに選択されている音色に必要とされているレイヤ数がLNレジスタに格納される。そして、ステップS3にてレイヤ数LNの発音チャンネルがパートPTに割り当てられる。ここで、nが1に設定(ステップS4)され、ステップS5にてn(=1)番目の割当チャンネルにn(=1)のレイヤの各初期値が音源制御レジスタ30に設定される。この初期値には目標値レジスタ30dに設定されるイニシャルエンベロープ値も含まれており、ステップS6にてイニシャルレジスタ(INIT)30bの出力を立ち上げて、タイマ1を起動すると共に、ロード信号発生部32eにロード信号を発生させる。
【0045】
次いで、ステップS7にて同じチャンネルの同じレイヤのエンベロープパラメータ以外の音色パラメータを、音源制御レジスタ30に書き込む。ここで、タイマ1がタイムアップするまで待ち(ステップS8)、タイマ1のタイムアップにより、現在値レジスタ32dにイニシャルエンベロープ値が有効に書き込まれたことが確認される。タイマ1がタイムアップした際には、ステップS9にて同じチャンネルの同じレイヤにおける第1ステートのエンベロープパラメータであるアタックレベルとアタックレートを音源制御レジスタ30に書き込む。この場合、アタックレベルは目標とされる第1エンベロープ値として目標値レジスタ30dに書き込まれ、アタックレートは、レートレジスタ30eに書き込まれる。さらに、ステップS10にてnがレイヤ数LN以上となったか判断されるが、ここでレイヤ数LN以上となっていないと判断された場合はステップS11に分岐する。このステップS11にてnが1つインクリメントされてn=2とされ、ステップS5に戻り、レイヤ2における設定が同様に行われる。このようなステップS5ないしステップS11の処理が繰り返し行われて、全てのレイヤにおける設定が終了すると、ステップS10にてYESと判断されてステップS12に進み全割当チャンネルに同時ノートオンが指示されてノートオンイベント処理は終了する。これにより音源20はレイヤ数に相当する発音チャンネルの楽音の生成を開始する。なお、同時ノートオンは、ノートオンのビットマップにおいて割り当てられた全チャンネルに“1”をセットすることにより行われる。
【0046】
次に、図1に示す電子楽器におけるCPU10が実行するEG割込イベント処理のフローチャートを図6に示す。
図7に示すEG割込イベント処理はエンベロープ生成処理におけるCPU割込が発生された際にスタートされ、ステップS20にてCPU割込を発生させたエンベロープ種類が検出される。次いで、ステップS21にて検出されたエンベロープ種類における全チャンネルの到達フラグの読み出しが設定されて、タイマ3が起動される。ここで、タイマ3がタイムアップするまで待ち(ステップS22)、タイマ3がタイムアップした際に全発音チャンネルの到達フラグがビットマップ上に揃うようになる。タイマ3がタイムアップすると、ステップS23に進み全チャンネルの到達フラグが読み出されて、CPU割込を発生させた全てのチャンネルが検出される。そこで、ステップS24にて検出された最初のチャンネルにおける目標値レジスタ30dに、次ステートのエンベロープパラメータ(次の目標値)を書き込む。同時に、マスクレジスタ30aに“1”をセットして到達フラグおよびCPU割込信号をマスクすると共に、タイマ2を起動する。
【0047】
ここで、タイマ2がタイムアップするまで待ち、タイマ2がタイムアップしたことが検出される(ステップS26)と、ステップS27に進みマスクが解除される。これにより、次ステートのエンベロープパラメータが到達フラグ生成部32fが出力する到達フラグに反映されるまでに動作遅延時間があったとしても、誤った到達フラグおよびCPU割込信号が出力されないようになる。そして、ステップS28にてステップS23にて検出されたチャンネルの内の残るチャンネルがあるか否かが判断され、残るチャンネルがある場合はステップS24に戻る。そして、残るチャンネルがなくなるまでステップS24ないしステップS28の処理が繰り返し行われて、次ステートのエンベロープパラメータが該当する全てのチャンネルに設定されるようになる。次いで、ステップS29にて割込を発生させた残るエンベロープ種類がある場合は、ステップS21に戻り残るエンベロープ種類がなくなるまでステップS21ないしステップS29の処理が繰り返し行われる。これにより、CPU割込を発生させた全てのエンベロープ種類における全てのチャンネルに次ステートのエンベロープパラメータが設定されるようになる。
【0048】
【発明の効果】
本発明は以上説明したように、音源制御レジスタへ書き込まれた楽音パラメータが有効となって、次の楽音パラメータの書き込みが許可されるまでの時間を計数する第1のタイマ手段を設けるようにしている。これにより、現在値レジスタへのイニシャルエンベロープ値の書き込みが完了する前に、次の目標値が音源制御レジスタに書き込まれることを防止することができるようになる。
また、書き込みの結果が到達フラグに反映されるまでの時間を計数する第2のタイマがタイムアップするまで到達フラグおよび割込信号をマスクするようにしたので、その書込が到達フラグに反映されるまでに時間がかかっても誤動作しないようになる。さらに、到達フラグが揃うまでの時間を計数する第3のタイマを設けるようにしたので、複数チャンネルにおける正確な到達フラグの状態を読み出すことができるようになる。
【図面の簡単な説明】
【図1】 本発明の実施の形態にかかる音源装置を備える電子楽器の構成を示すブロック図である。
【図2】 本発明の実施の形態にかかる音源装置におけるマルチEGの構成と音源制御レジスタの構成を示す図である。
【図3】 本発明の実施の形態にかかる音源装置におけるマルチEGが発生するエンベロープ波形の例を示す図である。
【図4】 本発明の実施の形態にかかる音源装置における楽音パラメータの書込期間を示す図である。
【図5】 本発明の実施の形態にかかる音源装置におけるタイマ1ないしタイマ3の動作を示す図である。
【図6】 本発明の実施の形態にかかる音源装置が備えられている電子楽器におけるノートオンイベント処理のフローチャートである。
【図7】 本発明の実施の形態にかかる音源装置が備えられている電子楽器におけるEG割込イベント処理のフローチャートである。
【図8】 従来の音源装置の一部の構成を示す図である。
【図9】 エンベロープ波形の例を示す図である。
【符号の説明】
10 CPU、11 ROM、12 RAM、13 タイマ、14 ドライブ、15 ディスク、16 MIDIインタフェース、17 ネットワークインタフェース、18 パネルスイッチ、19 パネル表示器、20 音源、21 波形メモリ、22 DAC、23 サウンドシステム、24 バスライン、30 音源制御レジスタ、30a マスクレジスタ、30b イニシャルレジスタ、30c ノートオンレジスタ、30d 目標値レジスタ、30e レートレジスタ、31 時間計測部、32 マルチEG部、32a 比較器、32b 加減算器、32c セレクタ、32d 現在値レジスタ、32e ロード信号発生部、32f 到達フラグ生成部、32g 割込発生部、33 アドレス発生部、34 補間部、35 DCF、36 振幅制御部、37 ミキサ&DSP部、124 バスライン、130 音源制御レジスタ、130a イニシャルレジスタ、130b エンベロープ値、130b EGパラメータレジスタ、132 エンベロープ生成部、132a EG部、132b 到達検出手段、132c 現在値レジスタ、132d 到達フラグ生成部、132e 割込発生部[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a sound source device including waveform signal generation means for generating a waveform signal.
[0002]
[Prior art]
2. Description of the Related Art Conventionally, a sound source device provided in an electronic musical instrument or the like has a sound source control register that stores various musical sound parameters used when generating a musical sound waveform. Normally, the tone generator performs a tone generation process for each channel by time division processing in order to simultaneously generate a plurality of tone signals. The processing of each channel in the time division channel processing is executed while sequentially reading out the musical tone parameters used in each processing stage from the sound source control register. Therefore, the tone generator control register is provided with a plurality of storage areas capable of storing a plurality of musical tone parameters used in each processing stage for each channel.
[0003]
[Problems to be solved by the invention]
FIG. 8 shows a partial configuration of a sound source device provided in a conventional electronic musical instrument or the like. FIG. 8 shows a configuration of an envelope generator (EG) 132 that generates an envelope in the sound source device. The operation for generating the envelope waveform shown in FIG. 9 in the EG 132 will be described. The EG 132 uses the envelope parameter written in the
[0004]
The envelope value and the rate information can be written in the
[0005]
As a result, the value of the
[0006]
In this case, since the arrival flag is detected as a cause of the CPU interruption, the
[0007]
By the way, in the register to which data is sequentially written, when the written data is read and written to the second register, the next data is stored in the register when the data writing to the second register is effectively completed. If writing is not performed, data writing to the second register may fail. For example, in the tone generator shown in FIG. 8, when the initial envelope value INEG is written into the
[0008]
When the next musical sound parameter is written in the sound source control register 130 by detecting the arrival flag, the detected arrival flag is reset and the arrival flag is not output. That is, the interrupt signal is stopped. However, it takes some time for the next musical sound parameter to be written to be reflected in the arrival flag and to stop the interrupt signal. Then, when the arrival flag that caused the interruption is detected by the interruption signal, the next musical sound parameter is written to the sound source control register 130, and the waveform generation process is continued, the interruption signal is not stopped. In such a case, there is a problem that malfunction occurs.
[0009]
Further, in the sound source device shown in FIG. 8, a plurality of types of envelope waveforms such as an amplitude envelope and a filter envelope are generated by time division processing, and each type of envelope waveform is generated for a plurality of channels by time division channel processing. ing. Then, when a CPU interrupt occurs and the
In order to solve these problems, it is conceivable that processing is started after the data becomes valid. However, since the operation timing of the
[0010]
Accordingly, an object of the present invention is to provide a sound source device that can wait until data becomes valid without causing a control delay.
[0011]
[Means for Solving the Problems]
In order to achieve the above object, the sound source device of the present invention includes: A tone generator control register to which a tone parameter supplied from the control means is written when a tone is generated, and a current value register to which a tone parameter written at the start of waveform generation is written in the tone generator control register. Using the musical tone parameters written in the register to generate a waveform signal, Said A waveform generator that generates a waveform signal by processing the next same tone parameter written in the tone generator control register as the target value by the tone parameter in the current value register, and the waveform parameter written in the current value register When the musical tone parameter reaches the target value, the generation parameter for generating the arrival flag and the interrupt signal, and the musical tone parameter written in the sound source control register are read out and written into the current value register. First timer means for counting the time until completion; When the control means receives the interrupt signal and writes the next musical sound parameter to the sound source control register, the result of the writing is reflected in the arrival flag. More than the operation delay time A second timer for counting the time of After the first timer means has timed out, the control means writes the next similar musical tone parameter to the sound source control register, and The arrival flag and the interrupt signal are masked until the second timer expires.
[0013]
Further, in the sound source device of the present invention, the sound parameter corresponding to each of a plurality of types of waveform signals is written in the sound source control register, and the waveform generation unit uses each of the music sound parameters. A plurality of types of waveform signals are respectively generated, and when the control unit performs a read setting regarding the specific waveform signals of the plurality of types of the waveform generation unit, The arrival flags for all channels are aligned A given period of time A third timer for counting time, and when the interrupt signal is generated, the control means performs a read setting for a specific waveform signal of the plurality of types of the waveform generation unit, and then performs the third timer The arrival flag may be detected in response to the time-up of the timer, and the next musical sound parameter for the corresponding channel may be written into the sound source control register.
[0014]
According to the present invention, the first timer means for counting the time until the musical sound parameter written in the sound source control register becomes valid and the writing of the next musical sound parameter is permitted is provided. Yes. As a result, it is possible to prevent the next target value from being written to the sound source control register before the writing of the initial envelope value to the current value register is completed.
In addition, the arrival flag and the interrupt signal are masked until the second timer for counting the time until the writing result is reflected in the arrival flag is up, so that the writing is reflected in the arrival flag. It will not malfunction even if it takes a long time. Furthermore, since the third timer for counting the time until the arrival flags are arranged is provided, it is possible to read out the accurate arrival flag states in a plurality of channels.
[0015]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is a block diagram showing a configuration of an electronic musical instrument including a sound source device according to an embodiment of the present invention.
The electronic musical instrument shown in this figure includes a sound source device according to the present invention as a sound source 20. In this electronic musical instrument, a central processing unit (CPU) 10 generates musical sounds according to performance data by controlling the operation of the entire electronic musical instrument based on a control program stored in a ROM 11 or a RAM 12. Further, according to the operation of the panel switch 18, a tone color selection process of a musical tone signal generated by the sound source 20 is executed, and an effect selection process applied by the mixer & DSP unit 37 is executed. The tone signal generated by the tone generator 20 is controlled in accordance with the performance input from the MIDI interface 16. For example, when note-on is input, a tone generation channel in the sound source 20 is assigned to the note-on, and generation of a musical sound signal corresponding to the note-on is instructed in the assigned tone generation channel. The
[0016]
The ROM 11 is a storage unit that stores various programs executed by the
[0017]
The disk 15 is a recording medium such as a hard disk, floppy disk, or removable disk, and stores waveform data to be loaded into the waveform memory 21. The drive 14 is a disk drive for reading / writing the set disk 15. The MIDI interface 16 is a MIDI interface that transmits a MIDI message created inside the electronic musical instrument to the outside and receives a MIDI message from the outside. The
[0018]
The sound source 20 is a sound source that generates a musical sound signal by a waveform memory reading method that sequentially reads musical sound waveform data from the waveform memory 21 in accordance with frequency data (F number) corresponding to the pitch of the musical sound to be generated. The sound source 20 can simultaneously generate a plurality of musical tone signals using a plurality of sound generation channels, and performance data (data conforming to the MIDI standard, etc.) given via the bus line 24. Is input, and a musical tone signal is generated based on this data. In this embodiment, the electronic musical instrument operates in, for example, 64-channel time division.
[0019]
The tone generator control register 30 in the tone generator 20 conforms to performance data (pitch data KC, note-on, waveform start address (WSA), envelope parameters, various other parameters, and MIDI standards) necessary for generating a musical tone signal. Data, etc.) is supplied and written, and musical data is generated using these data. The generated musical tone data is converted into an analog musical tone signal by a DAC (digital / analog converter) 22 and emitted from the
[0020]
As will be described later, the time measuring unit 31 includes three timers. These three timers are timers for waiting for processing until the data becomes valid and for masking the flag. These timers allow the multi-EG unit 32 to accurately generate various envelope waveforms without causing a control delay. The multi-EG unit 32 is an envelope waveform generator having a plurality of functions, and includes a pitch envelope waveform (PEG waveform), a filter envelope waveform (FEG waveform), an amplitude envelope waveform (AEG waveform), and an effect envelope waveform (EEG waveform). Generation, filter coefficient offset (F offset), volume level, modulation level interpolation, etc. are executed in a time division manner in a common hardware circuit. The multi-EG unit 32 is supplied with initial value information and target value information of various envelopes and rate information thereof from the sound
[0021]
The address generator 33 generates a read address of the waveform memory 21 based on the pitch data and the read start address supplied from the sound
[0022]
The
[0023]
Next, the configuration of the multi-EG unit 32 in the sound source 20 and the configuration of the sound source control register 30 related to the multi-EG unit 32 are shown in FIG.
The multi-EG section 32 shown in FIG. 2 generates a pitch envelope waveform (PEG waveform), a filter envelope waveform (FEG waveform), an amplitude envelope waveform (AEG waveform), and an effect envelope waveform (EEG waveform) as shown in FIG. ing. These plural types of envelope waveforms are generated for the sound generation channels by time division channel processing. As an example, an operation for generating the envelope of the PEG waveform shown in FIG. 3 will be described. The multi-EG unit 32 uses the envelope parameter written in the
[0024]
The tone
[0025]
In this way, when the PEG initial envelope value INPEG is written in the
[0026]
At the next calculation timing, the
[0027]
As a result, the
[0028]
At the next calculation timing, the
[0029]
As a result, the
[0030]
Thereafter, the above-described operation is repeatedly performed. As a result, the multi-EG unit 32 rises from the PEG initial envelope value INPEG to the first PEG envelope value PEG1, as shown in FIG. A PEG waveform that reaches the second PEG envelope value PEG2 and rises to reach the third PEG envelope value PEG3 is output. Similarly, a filter envelope waveform (FEG waveform), an amplitude envelope waveform (AEG waveform), and an effect envelope waveform (EEG waveform) as shown in FIG. 3 can be generated. Such a plurality of types of envelope waveforms are generated for each channel by time division channel processing.
[0031]
Next, three timers provided in the time measuring unit 31 that is a feature of the present invention will be described.
In the sound source 20 according to the present invention, musical tone data of a plurality of channels are generated simultaneously by time division channel processing. In this case, the writing period of the tone parameter of each tone generation channel written in the tone
[0032]
Here, in the
[0033]
This state is shown as
[0034]
In the example indicated by the measurement time B, the initial envelope value is written from the
[0035]
Further, in the example indicated by the measurement time C, the initial envelope value is written from the
As shown in the measurement time A to the measurement time C, the
[0036]
As described above, when the envelope waveform is generated in the multi-EG unit 32, when the target value is reached, an arrival flag is output and a CPU interrupt is output. The
[0037]
This state is shown as
[0038]
Further, in the example indicated by the measurement time B, the arrival flag that is the cause of the interruption is detected at time t11 in the DAC cycle from time t1 to time t2, and the next target value is written from the
[0039]
Further, in the example indicated by the measurement time C, the arrival flag which is the cause of the interrupt is detected at time t13 during the writing to reading period in the DAC cycle from time t1 to time t2, and the next target value is transferred from the
As shown in the measurement time A to the measurement time C, the
[0040]
Further, in the multi-EG section 32 shown in FIG. 2, a plurality of types of envelope waveforms such as a pitch envelope waveform (PEG waveform), a filter envelope waveform (FEG waveform), an amplitude envelope waveform (AEG waveform), and an effect envelope waveform (EEG waveform) are displayed. In addition to time division processing, each type of envelope waveform is generated for each sound generation channel by time division channel processing. Then, when a CPU interrupt occurs and the
[0041]
This state is shown as
[0042]
Further, as indicated by the measurement time B, it is assumed that a read instruction for arrival flags for all channels in a specific envelope type is supplied from the
[0043]
Furthermore, it is assumed that, as indicated by the measurement time C, a read instruction for arrival flags for all channels in a specific envelope type is supplied from the
[0044]
Next, a flowchart of note-on event processing executed by the
The note-on event process shown in FIG. 6 is started when a note-on event is detected. In step S1, the part information in the note-on event is stored in the PT register, the note number is stored in the NN register, and the velocity is stored in the VEL register. Stored. Next, in step S2, the number of layers required for the timbre selected for the part PT is stored in the LN register. In step S3, the sound generation channel having the layer number LN is assigned to the part PT. Here, n is set to 1 (step S4), and in step S5, each initial value of the n (= 1) layer is set in the sound source control register 30 for the n (= 1) -th assigned channel. This initial value includes the initial envelope value set in the
[0045]
Next, in
[0046]
Next, FIG. 6 shows a flowchart of EG interrupt event processing executed by the
The EG interrupt event process shown in FIG. 7 is started when a CPU interrupt is generated in the envelope generation process, and the envelope type that generated the CPU interrupt is detected in step S20. Next, reading of arrival flags of all channels in the envelope type detected in step S21 is set, and the
[0047]
Here, the process waits until the
[0048]
【The invention's effect】
As described above, according to the present invention, the first timer means for counting the time until the musical tone parameter written in the tone generator control register becomes valid and the writing of the next musical tone parameter is permitted is provided. Yes. As a result, it is possible to prevent the next target value from being written to the sound source control register before the writing of the initial envelope value to the current value register is completed.
In addition, the arrival flag and the interrupt signal are masked until the second timer for counting the time until the writing result is reflected in the arrival flag is up, so that the writing is reflected in the arrival flag. It will not malfunction even if it takes a long time. Furthermore, since the third timer for counting the time until the arrival flags are arranged is provided, it is possible to read out the accurate arrival flag states in a plurality of channels.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of an electronic musical instrument including a sound source device according to an embodiment of the present invention.
FIG. 2 is a diagram illustrating a configuration of a multi-EG and a configuration of a sound source control register in the sound source device according to the embodiment of the present invention.
FIG. 3 is a diagram illustrating an example of an envelope waveform in which multi-EG occurs in the sound source device according to the embodiment of the present invention.
FIG. 4 is a diagram illustrating a musical sound parameter writing period in the tone generator according to the embodiment of the present invention;
FIG. 5 is a diagram showing operations of
FIG. 6 is a flowchart of note-on event processing in the electronic musical instrument provided with the tone generator according to the embodiment of the present invention.
FIG. 7 is a flowchart of EG interrupt event processing in the electronic musical instrument provided with the sound source device according to the embodiment of the present invention.
FIG. 8 is a diagram illustrating a partial configuration of a conventional sound source device.
FIG. 9 is a diagram illustrating an example of an envelope waveform.
[Explanation of symbols]
10 CPU, 11 ROM, 12 RAM, 13 timer, 14 drive, 15 disk, 16 MIDI interface, 17 network interface, 18 panel switch, 19 panel display, 20 sound source, 21 waveform memory, 22 DAC, 23 sound system, 24 Bus line, 30 sound source control register, 30a mask register, 30b initial register, 30c note-on register, 30d target value register, 30e rate register, 31 time measurement unit, 32 multi-EG unit, 32a comparator, 32b adder / subtractor,
Claims (2)
前記音源制御レジスタに波形生成開始時に書き込まれた楽音パラメータが書き込まれる現在値レジスタを有し、該現在値レジスタに書き込まれた楽音パラメータを使用して波形信号を生成すると共に、前記音源制御レジスタに書き込まれた次の同種の楽音パラメータを前記現在値レジスタの楽音パラメータが目標値とする処理を行うことにより波形信号を生成していく波形生成部と、
前記現在値レジスタに書き込まれた楽音パラメータが目標値に達した際に、到達フラグと割込信号を生成する生成手段と、
前記音源制御レジスタへ書き込まれている楽音パラメータが読み出されて、前記現在値レジスタへの書き込みが終了するまでの時間を計数する第1のタイマ手段と、
前記割込信号を受けて前記制御手段が次の楽音パラメータを前記音源制御レジスタに書き込んだ際に、当該書き込みの結果が前記到達フラグに反映されるまでの動作遅延時間以上の時間を計数する第2のタイマとを備え、
前記第1のタイマ手段がタイムアップした後に、前記制御手段が次の同種の楽音パラメータを前記音源制御レジスタに書き込むと共に、前記第2のタイマがタイムアップするまで前記到達フラグおよび前記割込信号をマスクするようにしたことを特徴とする音源装置。 A sound source control register to which a musical sound parameter supplied from the control means is written when a musical sound is generated;
The tone generator control register has a current value register in which a musical tone parameter written at the start of waveform generation is written, generates a waveform signal using the musical tone parameter written in the current value register, and A waveform generation unit that generates a waveform signal by performing a process in which the next musical tone parameter that has been written is set to a musical tone parameter of the current value register as a target value;
Generating means for generating an arrival flag and an interrupt signal when the musical sound parameter written in the current value register reaches a target value;
First timer means for counting the time from when the musical sound parameter written in the sound source control register is read until the writing to the current value register is completed;
When the control means receives the interrupt signal and writes the next musical tone parameter to the tone generator control register, it counts a time longer than the operation delay time until the writing result is reflected in the arrival flag. 2 timers,
After the first timer means has timed out, the control means writes the next musical tone parameter of the same type to the sound source control register, and the arrival flag and the interrupt signal until the second timer expires. A sound source device characterized by masking.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002036389A JP3695402B2 (en) | 2002-02-14 | 2002-02-14 | Sound generator |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002036389A JP3695402B2 (en) | 2002-02-14 | 2002-02-14 | Sound generator |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003241756A JP2003241756A (en) | 2003-08-29 |
JP3695402B2 true JP3695402B2 (en) | 2005-09-14 |
Family
ID=27778288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002036389A Expired - Fee Related JP3695402B2 (en) | 2002-02-14 | 2002-02-14 | Sound generator |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3695402B2 (en) |
-
2002
- 2002-02-14 JP JP2002036389A patent/JP3695402B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003241756A (en) | 2003-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5614420B2 (en) | Musical sound generating apparatus, electronic musical instrument, program, and musical sound generating method | |
US5892170A (en) | Musical tone generation apparatus using high-speed bus for data transfer in waveform memory | |
JP3482685B2 (en) | Sound generator for electronic musical instruments | |
JP3695402B2 (en) | Sound generator | |
JP2894234B2 (en) | Range allocator for waveform data | |
JPH07121181A (en) | Sound information processor | |
US5710386A (en) | Method and apparatus for efficiently controlling access to stored operation control data and tone forming data | |
US6414232B2 (en) | Tone generation method and apparatus based on software | |
JPH07325581A (en) | Musical sound generation device | |
JP3252296B2 (en) | Waveform data output device | |
JP2576616B2 (en) | Processing equipment | |
JP3504387B2 (en) | Electronic musical instrument | |
JP4254677B2 (en) | Musical sound generator and musical sound generation processing program | |
JP2530695Y2 (en) | Electronic musical instrument address controller | |
JP2769690B2 (en) | Delay device | |
JPH10207465A (en) | Method of generating musical sound and device therefor | |
JP2556041B2 (en) | Waveform signal output device | |
JP3148803B2 (en) | Sound source device | |
JP2640560B2 (en) | Envelope signal generator | |
JP3651675B2 (en) | Electronic musical instruments | |
JPH0944160A (en) | Musical tone generating method | |
JP3693046B2 (en) | Music generator | |
JPH1097258A (en) | Waveform memory sound source device and musical sound producing device | |
JP2000056763A (en) | Musical tone forming method, musical tone forming apparatus and recording medium recording musical tone forming process program | |
JP2991436B2 (en) | Music signal generator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050127 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050208 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050411 |
|
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: 20050607 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050620 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090708 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090708 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100708 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100708 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110708 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110708 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120708 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130708 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |