JP3695402B2 - Sound generator - Google Patents

Sound generator Download PDF

Info

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
Application number
JP2002036389A
Other languages
Japanese (ja)
Other versions
JP2003241756A (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 JP2002036389A priority Critical patent/JP3695402B2/en
Publication of JP2003241756A publication Critical patent/JP2003241756A/en
Application granted granted Critical
Publication of JP3695402B2 publication Critical patent/JP3695402B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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 EG parameter register 130b in the sound source control register 130 to generate the envelope waveform shown in FIG. When note-on is instructed, the generation of the envelope waveform is started from the level of the initial envelope value INEG. Therefore, the initial envelope value INEG is written in the EG parameter register 130b, and the initial envelope value INEG is read out and written in the current value register 132c in the EG unit 132a that generates the envelope waveform.
[0004]
The envelope value and the rate information can be written in the EG parameter register 130b. When the note is on, the CPU 110 writes the initial envelope value INEG and the rate information into the EG parameter register 130b via the bus line 124. Yes. When the initial envelope value INEG is written, the output of the initial register (INIT) 130a rises. Then, the initial envelope value INEG written in the EG parameter register 130b is written in the current value register 132c by the output of the initial register 130a. In this way, when the initial envelope value INEG is written to the current value register 132c, the CPU 110 writes the next first envelope value EG1 to the EG parameter register 130b. In this case, the output of the initial register 130a does not rise. In this state, when the note-on is instructed and generation of the envelope waveform is started, the EG unit 132a adds a predetermined value determined by the rate information to the value of the current value register 132c at every calculation timing, and thereby calculates the current value register. Write to 132c. At the same time, the value of the current value register 132c is compared with the first envelope value 130b written in the EG parameter register 130b to detect whether or not the first envelope value EG1 has been reached.
[0005]
As a result, the value of the current value register 132c goes from the initial envelope value INEG to the first envelope value EG1. When the value of the current value register 132c is added at each calculation timing and the value reaches the first envelope value EG1, the arrival detection means 132b in the EG unit 132a sends the arrival flag to the arrival flag generation unit 132d. Gives the output to generate. As a result, the arrival flag generation unit 132d generates and outputs the arrival flag. Further, the arrival flag is supplied to the interrupt generation unit 132e, and a CPU interrupt signal is generated and output in the interrupt generation unit 132e. When the CPU 110 receives the CPU interrupt signal, the CPU 110 detects the cause because there are a plurality of causes of the CPU interrupt.
[0006]
In this case, since the arrival flag is detected as a cause of the CPU interruption, the CPU 110 supplies the second envelope value EG2 to the sound source control register 130 and writes it in the EG parameter register 130b. As a result, the value of the current value register 132c goes from the first envelope value EG1 to the second envelope value EG2. Then, by adding a predetermined value to the value of the current value register 132c at every calculation timing, the value reaches the second envelope value EG2, and the above-described operation is repeated. As a result, as shown in FIG. 9, the EG unit 132a goes to the first envelope value EG1, and when it reaches the first envelope value EG1, it goes to the second envelope value EG2, and further, a third envelope value (not shown). An envelope waveform toward is generated and output.
[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 EG parameter register 130b, the initial envelope value INEG is read and written into the current value register 132c, the CPU 110 writes to the EG parameter register 130b. Depending on the timing, the next first envelope value EG1 is written to the EG parameter register 130b before the writing of the initial envelope value INEG to the current value register 132c is completed. In this case, the writing of the initial envelope value INEG to the current value register 132c fails, and the first envelope value EG1 is written, so that a desired waveform signal is not generated.
[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 CPU 110 reads out the arrival flags for all channels in a specific envelope type, it takes time until the arrival flags for all channels are prepared. In this case, if the arrival flags of all channels in a specific envelope type are read immediately upon receiving a CPU interrupt, there is a problem that the accurate arrival flag states in all channels cannot be read.
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 CPU 110 is different from the operation timing of the sound source device, the CPU 11 It is not possible to detect what the current state is. For this reason, the waiting time must be set long enough for the data to be valid. Then, there arises a problem that this waiting time causes a control delay in the CPU 110.
[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 CPU 10 also performs control processing for other blocks in the electronic musical instrument.
[0016]
The ROM 11 is a storage unit that stores various programs executed by the CPU 10 and various data, and is configured by a read-only memory (ROM). The RAM 12 is a random access memory, in which a work memory area for temporarily storing various data generated when the CPU 10 executes a program and a storage area for storing various data are set, such as a register, a flag, and a buffer. It is used as. The timer 13 indicates an elapsed time during operation or generates a timer interrupt at a specific interval, and is used for automatic performance time management and the like.
[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 network interface 17 is a network interface for connecting to a server computer via a communication network such as a LAN (Local Area Network), the Internet, or a telephone line. The panel switch (panel SW) 18 is various switches provided on the panel of the electronic musical instrument, and various instructions can be given to the electronic musical instrument by operating this switch. The panel display 19 is a display on which various information is displayed when a musical sound is generated.
[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 sound system 23. The sound source 20 includes a time measurement unit 31, a multi-EG unit 32, an address generation unit 33, an interpolation unit 34, a filter control unit (DCF) 35, an amplitude control unit 36, and a mixer & DSP unit 37 in addition to the sound source control register 30. ing.
[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 source control register 30.
[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 source control register 30. Specifically, the F number, which is pitch data, is accumulated at each calculation timing, the integer part is supplied to the waveform memory 21 as a read address, and the decimal part is supplied to the interpolation unit 34 as interpolation information. The interpolation unit 34 interpolates between the two samples read out from the waveform memory 21 based on the fractional part supplied from the address generation unit 33, so that the sample corresponding to the read address generated in the address generation unit 33 is obtained. I try to get data. Note that the interpolation unit 34 may obtain sample data not only by two-point interpolation but also by four-point interpolation. The DCF 35 adjusts the frequency characteristics by filtering the interpolated sample data obtained by the interpolation unit 34 based on the filter coefficient supplied from the sound source control register 30. Further, the FEG waveform generated by the multi-EG unit 32 is supplied to the DCF 35, and the filter characteristic of the DCF 35 is changed by this FEG waveform. Therefore, the frequency characteristic of the musical sound data output from the DCF 35 also changes on the time axis. Will come to do.
[0022]
The amplitude controller 36 controls the volume of the musical sound data output from the DCF 35 based on the volume information supplied from the sound source control register 30. The amplitude control unit 36 is supplied with the AEG waveform generated by the multi-EG unit 32, and the volume level of the musical sound data changes according to the AEG waveform. Thereby, the volume level characteristic of the musical tone data output from the amplitude control unit 36 also changes on the time axis. The address generator 33 or the amplitude controller 36 described above performs time-division channel processing to generate musical tone data of, for example, 64 sound channels simultaneously. Then, the generated independent tone data for each channel is supplied to the mixer & DSP 37. The mixer & DSP 37 mixes the generated musical sound data of a plurality of channels and the musical sound data to which a plurality of DSP effects are applied in a plurality of ways, and supplies a plurality of mixing waveforms generated as a result to the DAC 22. An analog tone signal output from the DAC 22 is emitted from the sound system 23. Note that a plurality of effects by the DSP may be further added to the mixing waveform. Further, the DSP executes a plurality of effect processes for a plurality of input mixing waveforms based on the microprogram set by the CPU 10. Furthermore, the DSP can perform effect processing such as reverberation processing, distortion processing, and chorus processing in parallel by time division processing.
[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 target value register 30d in the sound source control register 30 to generate the PEG waveform shown in FIG. When note-on is instructed, the generation of the PEG waveform is started from the level of the initial envelope value INPEG. Therefore, the CPU 10 writes the PEG initial envelope value INPEG in the target value register 30d, and writes the PEG initial envelope value INPEG in the current value register 32d built in the multi-EG unit 32.
[0024]
The tone generator control register 30 is provided with a target value register 30d into which an envelope value as a target value is written, and a rate register 30e into which envelope rate information is written. During the note-on event processing, the CPU 10 The initial envelope value (INPEG, INFEG, INAEG, INEEG) and rate information are written to the sound source control register 30 via the bus line 24. When an initial envelope value such as the PEG initial envelope value INPEG is written, the output of the initial register (INIT) 30b rises. Then, a load signal is generated from the load signal generator 32e by the output of the initial register 30b, and the selector 32c to which this load signal is supplied selects the input b from the target value register 30d and supplies it to the current value register 32d. To do. As a result, the PEG initial envelope value INPEG written in the target value register 30d is written in the current value register 32d.
[0025]
In this way, when the PEG initial envelope value INPEG is written in the current value register 32d, the CPU 10 writes the next first PEG envelope value PEG1 in the target value register 30d. In this case, since it is not the initial envelope value, the output of the initial register 30b does not rise. In this state, when note-on is written into the note-on register 30c, note-on is instructed and generation of an envelope waveform is started. Then, the comparator 32a compares the first PEG envelope value PEG1 in the target value register 30d with the PEG initial envelope value INPEG in the current value register 32d. Give instructions. As a result, the adder / subtractor 32b adds a predetermined value determined by the rate information to the PEG initial envelope value INPEG of the current value register 32d, and writes the added value to the current value register 32d. In this case, since the load signal is not supplied to the selector 32c, the a input from the adder / subtractor 32b is selected.
[0026]
At the next calculation timing, the comparator 32a compares the first PEG envelope value PEG1 of the target value register 30d with the envelope value of the current value register 32d. If the value of the first PEG envelope value PEG1 is larger, the adder / subtracter An addition instruction is given to 32b. As a result, the adder / subtractor 32b further adds a predetermined value determined by the rate information to the envelope value of the current value register 32d, and writes the added value to the current value register 32d. Such an addition operation is performed until the envelope value of the current value register 32d reaches the first PEG envelope value PEG1. When the envelope value of the current value register 32d reaches the first PEG envelope value PEG1, the comparator 32a determines that the envelope value of the current value register 32d has reached the first PEG envelope value PEG1, and the load signal generator The arrival signal is supplied to 32e and the arrival flag generator 32f.
[0027]
As a result, the load signal generator 32e generates a load signal and supplies it to the selector 32c, so that the value of the current value register 32d becomes the first PEG envelope value PEG1. Further, the arrival flag generation unit 32f generates and outputs an arrival flag. The arrival flag is supplied to the interrupt generation unit 32g, and a CPU interrupt signal is generated and output from the interrupt generation unit 32g. The current value register 32d outputs a PEG waveform that rises sequentially so as to reach the first PEG envelope value PEG1 from the PEG initial envelope value INPEG. When the CPU 10 receives the output CPU interrupt signal, the CPU 10 detects the cause because there are a plurality of causes of the CPU interrupt. In this case, since the arrival flag of the PEG waveform is detected as a cause of the CPU interruption, the CPU 10 supplies the second PEG envelope value PEG2 to the sound source control register 30 and writes it in the target value register 30d.
[0028]
At the next calculation timing, the comparator 32a compares the second PEG envelope value PEG2 of the target value register 30d with the first PEG envelope value PEG1 of the current value register 32d, but the value of the second PEG envelope value PEG2 is reduced. Therefore, a subtraction instruction is given to the adder / subtractor 32b. As a result, the adder / subtracter 32b subtracts a predetermined value determined by the rate information from the envelope value of the current value register 32d, and writes the subtracted value to the current value register 32d. Such a subtraction operation at each calculation timing is performed until the envelope value of the current value register 32d reaches the second PEG envelope value PEG2. When the envelope value of the current value register 32d reaches the second PEG envelope value PEG2, the comparator 32a determines that the envelope value of the current value register 32d has reached the second PEG envelope value PEG2, and the load signal generator The arrival signal is supplied to 32e and the arrival flag generator 32f.
[0029]
As a result, the load signal generator 32e generates a load signal and supplies it to the selector 32c, so that the value of the current value register 32d becomes the second PEG envelope value PEG2. Further, the arrival flag generation unit 32f generates and outputs an arrival flag. The arrival flag is supplied to the interrupt generation unit 32g, and a CPU interrupt signal is generated and output from the interrupt generation unit 32g. The current value register 32d outputs a PEG waveform that rises from the PEG initial envelope value INPEG, reaches the first PEG envelope value PEG1, and then falls to reach the second PEG envelope value PEG2. When the CPU 10 receives the output CPU interrupt signal, the CPU 10 detects the cause because there are a plurality of causes of the CPU interrupt. In this case, since the arrival flag of the PEG waveform is detected as a cause of the CPU interrupt, the CPU 10 supplies the third PEG envelope value PEG3 (not shown) to the sound source control register 30 and writes it in the target value register 30d. To.
[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 generator control register 30 is assigned as shown in FIG. For example, assuming that the maximum number of sound generation channels is 64, each tone parameter of 64 channels is sequentially written in the sound source control register 30 in one sampling period (1 DAC) from time t0 to time t1. In this case, since registers for all channels for each type of musical sound parameter are prepared in the sound source control register, the writing period is partially overlapped with other channels so that only the writing period of the same musical sound parameter is different. Has been.
[0032]
Here, in the target value register 30d in the sound source control register 30 shown in FIG. 2, the initial envelope value and the first envelope value are written at the time of note-on as described above. Although the initial envelope value is written in the current value register 32d, it takes some time to be effectively written in the current value register 32d. If the first envelope value is written to the target value register 30d before the initial envelope value is effectively written to the current value register 32d, the writing of the initial envelope value to the current value register 32d may fail. That is, when the first envelope value is written to the target value register 30d too quickly, the first envelope value is written to the current value register 32d. Therefore, the timer 1 in the time measuring unit 31 is started when the initial envelope value is written in the target value register 30d. Then, after detecting that the timer 1 has timed up, the CPU 10 writes the first envelope value in the target value register 30d. The timer 1 is set so as not to time out before the initial envelope value is effectively written to the current value register 32d.
[0033]
This state is shown as timer 1 in FIG. In the timer 1 in FIG. 5, three modes of measurement time are illustrated by taking the fourth sound generation channel (# 4ch) as an example. The musical sound parameter writing period in # 4ch is shown by a hatched period in 1DAC. When the initial envelope value is written from the CPU 10 to the target value register 30d at the time t01 in the DAC cycle from the time t0 to the time t1 as indicated by the measurement time A, the timer 1 is started at the time t01. . As information for starting the timer 1, some bits of the write address supplied from the CPU 10 to the sound source control register 30 can be used. The timer 1 times up at time t12 when the writing period of # 4ch in the next DAC cycle ends. In this case, the CPU 10 writes the first envelope value in the target value register 30d after detecting the time-up of the timer 1 that does not time-up until the writing period of # 4 ends. Thereby, after the initial envelope value is effectively written in the current value register 32d, the first envelope value is written in the target value register 30d.
[0034]
In the example indicated by the measurement time B, the initial envelope value is written from the CPU 10 to the target value register 30d at time t11 in the DAC cycle from time t1 to time t2. In this case, the timer 1 is started at this time t11. The timer 1 expires at time t12 when the writing period of # 4ch in the DAC cycle ends. In this case, after detecting the time-up of the timer 1, the CPU 10 writes the first envelope value to the target value register 30d, so that the initial envelope value is effectively written to the current value register 32d and then the first envelope value. Is written into the target value register 30d.
[0035]
Further, in the example indicated by the measurement time C, the initial envelope value is written from the CPU 10 to the target value register 30d at the time t13 during the writing period of # 4ch in the DAC cycle from the time t1 to the time t2. In this case, the timer 1 is started at this time t13. The timer 1 times up at time t21 when the writing period of # 4ch in the next DAC cycle ends. Also in this case, the CPU 10 writes the first envelope value into the target value register 30d after detecting the time-up of the timer 1, so that the first envelope value is written after the initial envelope value is effectively written into the current value register 32d. Is written into the target value register 30d.
As shown in the measurement time A to the measurement time C, the timer 1 is timed up without waiting for one DAC period depending on the timing at which the CPU 10 writes the initial envelope value in the target value register 30d. As described above, the initial envelope value can be effectively written to the current value register 32d and the first envelope value can be written to the target value register 30d with the minimum waiting time.
[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 CPU 10 detects the CPU interrupt, reads the cause of the CPU interrupt from the arrival flag, and writes the next target value in the target value register 30d in the sound source control register 30. When the next target value is written in the target value register 30d, the output of the comparator 32a is restored to the original value, so that the arrival flag is reset and the CPU interrupt signal is also stopped. . However, it takes some operation delay time until the next target value written is reflected in the arrival flag and the CPU interrupt signal stops. Then, when the arrival flag that caused the interrupt is detected by the CPU interrupt signal, the next target value is written in the target value register 30d of the sound source control register 30, and the envelope waveform generation process is continued, the CPU In some cases, the interrupt signal has not been stopped, and in such a case, a malfunction occurs. Therefore, the timer 2 in the time measuring unit 31 is started when the arrival flag that has caused the interruption is detected and the next target value is written in the target value register 30d of the sound source control register 30. Then, the arrival flag and the CPU interrupt signal are stopped by masking the arrival flag output from the arrival flag generation unit 32f until the timer 2 expires. The timer 2 does not time out until the arrival flag generator 32f resets the arrival flag.
[0037]
This state is shown as timer 2 in FIG. In the timer 2 in FIG. 5, three modes of measurement time are illustrated by taking the fourth sound generation channel (# 4ch) as an example. The writing to reading period from the time when the musical sound parameter in # 4ch is written to when it is read and reflected in the flag is shown as a hatched period in 1DAC. This period is slightly longer than the writing period in the timer 1. Here, as indicated by the measurement time A, when the arrival flag that caused the interruption is detected at time t01 in the DAC cycle from time t0 to time t1, and the next target value is written from the CPU 10 to the target value register 30d The timer 2 is started at the time t01. At the same time, “1” is set in the mask register 30a, and the output of the arrival flag generator 32f is masked. As a result, the arrival flag is not supplied to the interrupt generator 32g, and the interrupt generator 32g stops the CPU interrupt signal. As information for setting “1” in the mask register 30a, some bits of the write address supplied from the CPU 10 to the sound source control register 30 can be used, and the timer 2 can also be started by this bit. . The timer 2 is timed up at time t14 when the writing and reading period of # 4ch in the next DAC cycle ends, whereby the mask register 30a is reset to "0". Therefore, even if there is an operation delay time until the target value newly written in the target value register 30d is reflected in the arrival flag output by the arrival flag generation unit 32f, an incorrect arrival flag and CPU interrupt signal are displayed. It will not be output.
[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 CPU 10 to the target value register 30d. In this case, the timer 2 is started at this time t11. At the same time, “1” is set in the mask register 30a, and the output of the arrival flag generator 32f is masked. As a result, the arrival flag is not supplied to the interrupt generation unit 32g, and the interrupt generation unit 32g stops the CPU interrupt signal. The timer 2 times up at time t14 when the writing and reading period of # 4ch in the DAC cycle ends, whereby the mask register 30a is reset to "0". Therefore, even if there is an operation delay time until the target value newly written in the target value register 30d is reflected in the arrival flag output by the arrival flag generation unit 32f, an incorrect arrival flag and CPU interrupt signal are displayed. It will not be output.
[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 CPU 10 to the target value register. 30d. In this case, the timer 2 is started at this time t13. At the same time, “1” is set in the mask register 30a, and the output of the arrival flag generator 32f is masked. As a result, the arrival flag is not supplied to the interrupt generation unit 32g, and the interrupt generation unit 32g stops the CPU interrupt signal. The timer 2 is timed up at time t22 when the writing and reading period of # 4ch in the next DAC cycle ends, whereby the mask register 30a is reset to "0". Therefore, even if there is an operation delay time until the target value newly written in the target value register 30d is reflected in the arrival flag output by the arrival flag generation unit 32f, an incorrect arrival flag and CPU interrupt signal are displayed. It will not be output.
As shown in the measurement time A to the measurement time C, the timer 2 is timed up without waiting for one DAC period depending on the timing at which the CPU 10 writes the next target value in the target value register 30d.
[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 CPU 10 reads out the arrival flags for each channel in a specific envelope type, it takes time until the arrival flags for all channels are prepared. The arrival flags for all channels are prepared as a bitmap. In this case, if the CPU interrupt is received and the arrival flags of the respective channels in the specific envelope type are read out before the arrival flags are obtained, the accurate arrival flag states in all the sound generation channels cannot be read out. Therefore, the timer 3 in the time measuring unit 31 is activated when reading the arrival flags of all sound generation channels in the envelope type that generated the interrupt. Then, after detecting that the timer 3 has timed up, the CPU 10 reads the arrival flags of all the sound generation channels. The timer 3 is configured not to time out until the arrival flags of all the sound generation channels are aligned on the bitmap.
[0041]
This state is shown as timer 3 in FIG. In the timer 3 in FIG. 5, three modes of measurement time are illustrated. Here, as indicated by the measurement time A, it is assumed that an instruction to read arrival flags for all channels in a specific envelope type is supplied from the CPU 10 to the sound source control register 30 at time t01 in the DAC cycle from time t0 to time t1. In this case, the timer 3 is started at this time t01. As information for starting the timer 3, some bits of a read address constituting a read command supplied from the CPU 10 to the sound source control register 30 can be used. The timer 3 times up at time t15 in the next DAC cycle. In this case, the period from time t01 to t15 is set to a period sufficient for the arrival flags of all the channels to be arranged on the bitmap, so that the arrival flags of all the channels read when the timer 3 times out are It shows the channel status accurately.
[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 CPU 10 to the sound source control register 30 at time t11 in the DAC cycle from time t1 to time t2. In this case, the timer 3 is started at this time t11. The timer 3 is timed up at time t23 in the next DAC cycle. In this case, since the period from time t11 to t23 is the same length as the period from time t01 to t15, the arrival flags of all channels read when the timer 3 times out are It shows the state accurately.
[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 CPU 10 to the sound source control register 30 at time t13 in the DAC cycle from time t1 to time t2. In this case, the timer 3 is started at this time t13. The timer 3 times up at time t24 in the next DAC cycle. In this case, since the period from time t13 to t24 is the same length as the period from time t01 to t15, the arrival flags of all channels read when the timer 3 times out are It shows the state accurately. Note that the period during which the arrival flags of all the channels are aligned on the bitmap is a substantially constant period regardless of the envelope type.
[0044]
Next, a flowchart of note-on event processing executed by the CPU 10 in the electronic musical instrument shown in FIG. 1 is shown in FIG.
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 target value register 30d. In step S6, the output of the initial register (INIT) 30b is raised to start the timer 1, and the load signal generator. A load signal is generated at 32e.
[0045]
Next, in step S 7, tone color parameters other than the envelope parameter of the same layer of the same channel are written into the sound source control register 30. Here, it waits until the timer 1 expires (step S8), and it is confirmed that the initial envelope value is effectively written in the current value register 32d by the timer 1 being timed up. When the timer 1 times out, the attack level and attack rate, which are envelope parameters of the first state in the same layer of the same channel, are written in the sound source control register 30 in step S9. In this case, the attack level is written in the target value register 30d as the target first envelope value, and the attack rate is written in the rate register 30e. Further, in step S10, it is determined whether n is equal to or greater than the number of layers LN. If it is determined that n is not equal to or greater than the number of layers LN, the process branches to step S11. In step S11, n is incremented by 1 and n = 2 is set, and the process returns to step S5, and the setting in layer 2 is similarly performed. When the processing from step S5 to step S11 is repeatedly performed and the setting in all layers is completed, YES is determined in step S10, the process proceeds to step S12, and simultaneous note-on is instructed to all assigned channels. The on-event process ends. As a result, the sound source 20 starts generating the musical sound of the sound generation channel corresponding to the number of layers. Note that simultaneous note-on is performed by setting “1” to all channels assigned in the note-on bitmap.
[0046]
Next, FIG. 6 shows a flowchart of EG interrupt event processing executed by the CPU 10 in the electronic musical instrument shown in FIG.
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 timer 3 is started. Here, the process waits until the timer 3 expires (step S22), and when the timer 3 expires, the arrival flags of all the sound channels are arranged on the bitmap. When the timer 3 expires, the process proceeds to step S23, the arrival flags of all channels are read, and all the channels that have generated the CPU interrupt are detected. Therefore, the envelope parameter (next target value) of the next state is written in the target value register 30d in the first channel detected in step S24. At the same time, "1" is set in the mask register 30a to mask the arrival flag and the CPU interrupt signal, and the timer 2 is started.
[0047]
Here, the process waits until the timer 2 expires, and when it is detected that the timer 2 has expired (step S26), the process proceeds to step S27 and the mask is released. As a result, even if there is an operation delay time before the envelope parameter of the next state is reflected in the arrival flag output by the arrival flag generation unit 32f, an incorrect arrival flag and CPU interrupt signal are not output. In step S28, it is determined whether or not there is a remaining channel detected in step S23. If there is a remaining channel, the process returns to step S24. Then, the processing from step S24 to step S28 is repeated until there are no remaining channels, and the envelope parameter of the next state is set to all the corresponding channels. Next, if there is a remaining envelope type that generated an interrupt in step S29, the process returns to step S21, and the processes in steps S21 to S29 are repeated until there is no remaining envelope type. As a result, the envelope parameter of the next state is set to all the channels in all the envelope types that have generated the CPU interrupt.
[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 timers 1 to 3 in the sound source device according to the embodiment of the present invention.
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, 32c selector 32d Current value register, 32e Load signal generator, 32f Arrival flag generator, 32g Interrupt generator, 33 Address generator, 34 Interpolator, 35 DCF, 36 Amplitude controller, 37 Mixer & DSP unit, 1 4 bus lines, 130 sound source control register, 130a initial register, 130b envelope value, 130b EG parameter register, 132 envelope generation unit, 132a EG unit, 132b arrival detection means, 132c current value register, 132d arrival flag generation unit, 132e interrupt Generator

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.
前記音源制御レジスタに複数種類の波形信号にそれぞれ対応する楽音パラメータが書き込まれるようにされていると共に、前記楽音パラメータをそれぞれ使用して前記波形生成部が前記複数種類の波形信号をそれぞれ生成するようにされており、前記制御手段により前記波形生成部の前記複数種類の内の特定の波形信号に関する読み出し設定が行われた際に、該特定の波形信号における全チャンネルの前記到達フラグが揃うに十分な期間とされる所定の時間を計数する第3のタイマを備え、前記割込信号の発生時に前記制御手段は、前記波形生成部の前記複数種類の内の特定の波形信号に関する読み出し設定を行い、その後の前記第3のタイマのタイムアップに応じて前記到達フラグを検出し、該当するチャンネルにおける次の楽音パラメータを前記音源制御レジスタに書き込むようにしたことを特徴とする請求項記載の音源装置。Musical tone parameters corresponding to a plurality of types of waveform signals are written in the sound source control register, and the waveform generation unit generates the plurality of types of waveform signals using the musical tone parameters, respectively. And when the read-out setting for the specific waveform signal among the plurality of types of the waveform generation unit is performed by the control means, the arrival flags of all the channels in the specific waveform signal are sufficient. A third timer that counts a predetermined period of time, and when the interrupt signal is generated, the control means performs a read setting for the specific waveform signal of the plurality of types of the waveform generator. Then, the arrival flag is detected in response to time-out of the third timer, and the next musical sound parameter in the corresponding channel is detected. Sound source apparatus according to claim 1, characterized in that was to be written into the tone generator control register.
JP2002036389A 2002-02-14 2002-02-14 Sound generator Expired - Fee Related JP3695402B2 (en)

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)

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