JP5229990B2 - 1チップ電子楽音発生器 - Google Patents

1チップ電子楽音発生器 Download PDF

Info

Publication number
JP5229990B2
JP5229990B2 JP2008040864A JP2008040864A JP5229990B2 JP 5229990 B2 JP5229990 B2 JP 5229990B2 JP 2008040864 A JP2008040864 A JP 2008040864A JP 2008040864 A JP2008040864 A JP 2008040864A JP 5229990 B2 JP5229990 B2 JP 5229990B2
Authority
JP
Japan
Prior art keywords
musical sound
cache
program
musical
generating
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
JP2008040864A
Other languages
English (en)
Other versions
JP2009198844A (ja
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.)
Kawai Musical Instrument Manufacturing Co Ltd
Original Assignee
Kawai Musical Instrument Manufacturing Co Ltd
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 Kawai Musical Instrument Manufacturing Co Ltd filed Critical Kawai Musical Instrument Manufacturing Co Ltd
Priority to JP2008040864A priority Critical patent/JP5229990B2/ja
Publication of JP2009198844A publication Critical patent/JP2009198844A/ja
Application granted granted Critical
Publication of JP5229990B2 publication Critical patent/JP5229990B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、1チップ電子楽音発生器に関する。
従来の電子学音発生器では、音源に使用されるCPUなどの制御手段が、決まったタイムスロットに、音源制御用のプログラムが記憶された記憶装置にアクセスし、必要なプログラムの読み込みを行っていた(下記特許文献1参照)。
特開平02−179699号公報
しかし、上記従来技術の構成では、CPUなどの制御手段によるタイムスロットの使用が、トーンジェネレータなどの楽音発生手段によって使用されるべきタイムスロットを圧迫し、同時発音数が少なくなると言う不具合を生じていた。
本発明は、以上のような問題に鑑み創案されたもので、CPUなどの制御手段によるタイムスロットの使用を適宜調整し、同時発音数を、記憶手段のアクセス時間が許す限り多く確保しつつ、制御手段が該記憶手段へもアクセスすることができるようにする1チップ電子楽音発生器を提供せんとするものである。
本発明に係る構成は、
楽音を発生するための楽音波形を記憶した第1の記憶手段、及び楽音を発生するためのプログラムを記憶した第2の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスするためのバスコントローラを少なくとも備えている1チップ電子楽音発生器において、
上記楽音波形を読み出し、上記プログラムが生成したパラメータに応じて加工して時分割で複数の楽音を発生するための楽音発生手段と、
読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
上記バスコントローラと制御手段との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ手段と、
上記キャッシュ手段のキャッシュミスヒットを検知すると共に、キャッシュミスヒットが検知された際に、上記楽音発生手段の使用状況を確認し、楽音発生手段が複数の楽音を全てのチャンネルで発生している場合は時分割で発音している楽音の少なくとも1つを選んでその発音を中止させ、そのタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させ、また楽音発生手段が複数のチャンネルのうち楽音を発生していないタイムスロットのあるチャンネルが1つでもある場合は、上記バスコントローラを介し、発音されていないタイムスロットを用いて第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させるメモリ管理手段と
を有し、
上記楽音発生手段が上記第1の記憶手段へのアクセスを行うのを、上記読み出されたプログラムが上記記憶手段に記憶させることが妨げないようにすることを基本的特徴としている。
上記構成によれば、メモリ管理手段により、キャッシュ手段のキャッシュミスヒットが検知されると、上記楽音発生手段の使用状況が確認され、楽音発生手段が複数の楽音を全てのチャンネルで発生している場合は時分割で発音している楽音の少なくとも1つを選んでその発音を中止させ、そのタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させ、また楽音発生手段が複数のチャンネルのうち楽音を発生していないタイムスロットのあるチャンネルが1つでもある場合は、上記バスコントローラを介し、発音されていないタイムスロットを用いて第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させることになる。
すなわち、キャッシュ手段のキャッシュミスヒットの時には、空きチャンネルを通して、外部バスにつながる上記記憶手段にアクセスし、空きチャンネルが無い時は、適切な発音中のチャンネルをトランケートして(例えば一番音量の小さい楽音が出力されるチャンネルをトランケートするなど)、アクセスタイミングを作るようにしている。
また他の本発明に係る構成は、
楽音を発生するための圧縮された楽音波形を記憶した第1の記憶手段、及び楽音を発生するためのプログラムを記憶した第2の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスするためのバスコントローラを少なくとも備えている1チップ電子楽音発生器において、
圧縮された楽音波形を複数読み出して一時的に記憶しておくと共に、その一つ一つ読み出して伸張し、補間処理を行うバッファデコーダ手段と、
上記バッファデコーダ手段から伸張・補間された楽音波形を読み出し、上記プログラムが生成したパラメータに応じて加工して時分割で複数の楽音を発生するための楽音発生手段と、
読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
上記バスコントローラと制御手段との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ手段と、
上記キャッシュ手段のキャッシュミスヒットを検知すると共に、キャッシュミスヒットが検知された際に、上記バッファデコーダ手段からの読み出し状況を確認し、楽音発生手段が上記楽音波形の全てを読み出し終えていない場合は、そのタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させ、さらに発音されていないタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させるメモリ管理手段と
を有し、
上記楽音発生手段が上記第1の記憶手段へのアクセスを行うのを、上記読み出されたプログラムが上記記憶手段に記憶させることが妨げないようにすることを特徴としている。
上記構成によれば、メモリ管理手段により、キャッシュ手段のキャッシュミスヒットが検知されると、上記バッファデコーダ手段からの読み出し状況が確認され、楽音発生手段が上記楽音波形の全てを読み出し終えていない場合は、そのタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させ、さらに発音されていないタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させることになる。
すなわち、キャッシュ手段のキャッシュミスヒットの時には、空きチャンネルを利用して、又は、バッファデコーダ手段のアクセス中のタイミングを利用して、キャッシュの更新を行うことになる。
さらに別の本発明の構成は、
楽音を発生するための楽音波形を記憶した第1の記憶手段、及び楽音を発生するためのプログラムを記憶した第2の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスするためのバスコントローラを少なくとも備えている1チップ電子楽音発生器において、
上記楽音波形を読み出し、上記プログラムが生成したパラメータに応じて加工して時分割で複数の楽音を発生するための楽音発生手段と、
読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
上記バスコントローラと制御手段との間に介在して、少なくとも頁単位でプログラムのキャッシュを行うキャッシュ手段と、
上記楽音発生手段がバスコントローラを使用して第1の記憶手段に記憶された楽音波形を読み出すタイムスロットに、空きタイムスロットがあるか否かを検知し、空きタイムスロットが検知された場合に、該タイムスロットを用いて、上記キャッシュ手段に記憶された頁以外の頁を、該キャッシュ手段にプリロードさせるメモリ管理手段と
を有し、
上記楽音発生手段が上記第1の記憶手段へのアクセスを行うのを、上記読み出されたプログラムが上記記憶手段に記憶させることが妨げないようにすることを特徴としている。
上記構成によれば、上記楽音発生手段がバスコントローラを使用して第1の記憶手段に記憶された楽音波形を読み出すタイムスロットに、空きタイムスロットがあるか否かが、上記メモリ管理手段により検知され、空きタイムスロットが検知された場合に、該タイムスロットを用いて、上記キャッシュ手段に記憶された頁以外の頁を、メモリ管理手段によって、該キャッシュ手段にプリロードさせることになる。すなわち、キャッシュ手段の頁アウト前に次の頁をプリロードしておくことになる。
上記本発明の1チップ電子楽音発生器によれば、同時発音数を、記憶手段のアクセス時間が許す限り多く確保しつつ、制御手段が該記憶手段へもアクセスすることができるようになるという優れた効果を奏し得る。
以下、本発明の実施の形態を、次の図示する例と共に説明する。
図1は、本発明の一実施例に係る1チップ電子楽音発生器と周辺回路を含む電子学音発生装置の構成を示す回路図である。
同図に示すように、本発明の電子学音発生器は、キャッシュ付きコアCUPを内蔵した1チップLSIで構成されており、その外部には、エクスターナルバスを介して、ROM及びRAM、さらに外部機器へのインターフェースI/Fが接続されている。
すなわち、LSI−CHIPで示される本実施例の1チップ電子楽音発生器は、CPU、トーンジェネレータ(TG)、メモリマネージングユニット(MMU)、データキャッシュ(C1)が、インターナルバス100を介してつながっている。
またプログラムキャッシュ(C0)が、上記メモリマネージングユニット(MMU)に対して入出力が2系統、すなわちデュアル接続されていて、該メモリマネージングユニット(MMU)によって、一方の入出力が、インターナルバス100を介して、CPUへ、また他方の入出力がバスコントローラ(BC)、エクスターナルバス200を介してROMやRAMの外部記憶装置に接続されている。従って、プログラムキャッシュ(C0)は、CPUとこれらの外部記憶装置の間で、楽音発生用のプログラムのキャッシュを行う構成である。
上記CPUは、LSI−CHIP内においてマイクロコンピュータコアで構成されており、楽音発生用のプログラムに応じて、楽音を生成するためのパラメータを作成し、トーンジェネレータ(TG)に供給している。
他方、トーンジェネレータ(TG)は、例えばサンプル時間1/50000secとして16音の楽音波形を時分割で発生する音源構成であり、デコーダ・バッファ(D/B)、上記バスコントローラ(BC)、エクスターナルバス200を介して、同じくROMやRAMの外部記憶装置に接続されている。ここでは、これらの外部記憶装置に記憶されている波形データが読み出されて、CPUから供給されたパラメータに基づいて、楽音が発生せしめられ、外部に出力される。またトーンジェネレータ(TG)のパラメータレジスタは、インターナルバス100を介してCPUに接続されている。従って該レジスタは、CPUからはRAMとしてアクセスされる。
上記デコーダ・バッファ(D/B)は、上記外部記憶装置とトーンジェネレータ(TG)との間に介在し、外部記憶装置から1チャンネル当たり例えば8ワードの楽音波形データの読み出しを行ってバッファリングしており、もしその波形データがADPCMのように圧縮されている場合は、通常のPCMへのデーコードを行いつつ、読み出された波形データの補間処理も行っており、トーンジェネレータ(TG)の波形読み出しに応じて該デコーダ・バッファ(D/B)により補間された楽音波形データは、トーンジェネレータ(TG)に送られる。その際、トーンジェネレータ(TG)から出力されるACC信号は、該トーンジェネレータ(TG)のチャンネルが発音中でない[後述する図15の振幅エンベロープ(EG−2)1112又は音量Loudness(LD)1114がゼロ]ことを示している。またこのデコーダ・バッファ(D/B)から、バスコントローラ(BC)に出されるREQ信号は、該デコーダ・バッファ(D/B)がバッファデータ入替を要求していることを示す。
他方、メモリマネージングユニット(MMU)は、上記CPUがアクセスするバスをインターナルバス100とエクスターナルバス200で切り替える構成であり、インターナルバス100に切り替えられた場合、CPUがプログラムキャッシュ(C0)にアクセスするようになり、またエクスターナルバス200に切り替えられた場合、CPUがエクスターナルバス200を介して外部記憶装置にアクセスするようになる。その際、該メモリマネージングユニット(MMU)を介して、外部記憶装置から読み出される楽音発生用のプログラムは、プログラムキャッシュ(C0)にも記憶される。
このメモリマネージングユニット(MMU)からバスコントローラ(BC)に出されるCTR信号は、CPUがキャッシュのミスヒットを行ったことを示す信号であり、またメモリマネージングユニット(MMU)からCPUに出力されるW0信号は、後述するバスコントローラ(BC)を介してエクスターナルバス200がデコーダ・バッファ(D/B)によって使用中である時[該バスコントローラ(BC)からメモリマネージングユニット(MMU)にWAIT信号が出される時]、エクスターナルバス200を介してCPUが外部記憶装置をアクセスすることに対してウェイトをかけるための信号である。
さらにバスコントローラ(BC)は、エクスターナルバス200への接続を、プログラムキャッシュ(C0)、メモリマネージングユニット(MMU)、及びデコーダ・バッファ(D/B)のいずれかに切り替える切り替え制御構成である。
バスコントローラ(BC)からメモリマネージングユニット(MMU)に出されるWAIT信号は、エクスターナルバス200がデコーダ・バッファ(D/B)によって使用中であることを示す信号であり、その信号が出されると、メモリマネージングユニット(MMU)からCPUにW0信号が出力され、エクスターナルバス200を介して外部記憶装置をアクセスすることにつき、CPUにウェイトがかけられることになる。
一方バスコントローラ(BC)からCPUに出されるINT信号は、後述する割込ルーチンINT()を起動させる信号であり、該割込ルーチンINT()では、ゼロペイジプログラムが起動され、適切な発音チャンネルが消音されることになる。
上記ROMは、CPU用のプログラムとトーンジェネレータ(TG)用の楽音波形データを記憶する外部記憶装置である。
上記RAMは、CPU用のプログラムとパラメータやフラグなどのデータを一時的に記憶しておく外部記憶装置である。
上記インターフェース(I/F)は、電子楽器の鍵盤やパネルなどをCPUがアクセスするためのインターフェースである。
本発明構成は、図2に示すように、前図の各部によって構成される、以下の機能ブロックで構成されている。すなわち、楽音を発生するための楽音波形を記憶した第1の記憶部210、及び楽音を発生するためのプログラムを記憶した第2の記憶部211に対し、エクスターナルバス200を介して、時分割でアクセスするためのバスコントローラ10と、上記楽音波形を読み出し、上記プログラムが生成したパラメータに応じて加工して時分割で複数の楽音を発生するための楽音発生部11と、読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生部11に供給する制御部12と、上記バスコントローラ10と制御部12との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ部13と、上記キャッシュ部13のキャッシュミスヒットを検知すると共に、キャッシュミスヒットが検知された際に、上記楽音発生部11の使用状況を確認し、楽音発生部11が複数の楽音を全てのチャンネルで発生している場合は時分割で発音している楽音の少なくとも1つを選んでその発音を中止させ、そのタイムスロットを用いて、上記第2の記憶部211をアクセスし、その際に、読み出されたプログラムを上記キャッシュ部13に記憶させ、また楽音発生部11が複数のチャンネルのうち楽音を発生していないタイムスロットのあるチャンネルが1つでもある場合は、上記バスコントローラ10を介し、発音されていないタイムスロットを用いて第2の記憶部211をアクセスし、その際に、読み出されたプログラムを上記キャッシュ部13に記憶させるメモリ管理部14とを有している。
上記第1の記憶部210は楽音波形データを記憶する上記ROMで構成され、上記第2の記憶部211はCPU用のプログラムを記憶する上記ROM及びRAMで構成されている。
上記バスコントローラ10は上記バスコントローラ(BC)で構成され、上記楽音発生部11は上記トーンジェネレータ(TG)で構成される。
上記制御部12はCPUで構成され、上記キャッシュ部13は上記プログラムキャッシュ(C0)で構成される。
上記メモリ管理部14はメモリマネージングユニット(MMU)で構成され、上記バッファ15はデコーダ・バッファ(D/B)で構成される。
そして、上記楽音発生部11、上記制御部12及び上記メモリ管理部14は、インターナルバス100を介して、接続され、データなどのやりとりができる。
尚図中16は、図1の(C1)に相当するデータキャッシュ部である。
上記電子学音発生装置では、上記インターフェース(I/F)側から押鍵データなどが受信されると、メモリ管理部14によって、上記制御部12に対し、第2の記憶部211から、CPU用のプログラムが読み出される。その際に、そのプログラムの一部(使用頻度の高いものが望ましい)乃至全部を、メモリ管理部14は、キャッシュ部13に格納する。
一方上記楽音発生部11に対し、バスコントローラ10により、エクスターナルバス200を介して、第1の記憶部210から楽音波形データが読み出される。その途中、バッファ15に読み出された楽音波形データが一時的に格納され、時分割で処理され同時発音される系列毎に、そこから楽音発生部11に供給される。
さらに、上記CPU用プログラムが実行される制御部12により、楽音を生成するためのパラメータが作成されて、インターナルバス100を介して、上記楽音発生部11に供給される。
上記楽音発生部11は、読み出された上記楽音波形データに、さらに生成・供給されたパラメータに応じて加工を施して、時分割で複数の楽音を発生せしめ外部に楽音を発生する。
その間一旦読み出されて、上記キャッシュ部13に格納されたと同じプログラムが、上記制御部12により読み出される場合、すなわち、キャッシュがヒットしている場合、メモリ管理部14により、インターナルバス100は、キャッシュ部13に接続され、制御部12の指定するアドレスは、メモリ管理部14によって自動的にキャッシュ部13のアドレスに読み替えられ、キャッシュ部13から上記プログラムが読み出される。この時メモリ管理部14は、制御信号CTRをOFFにする。
一方、バスコントローラ10は、楽音発生部11が読み出す楽音波形データの一時格納部となっているバッファ15にアクセス権を優先して与える。もし楽音発生部11における現在のタイムスロットのTGチャンネルが発音中であり(後述する図3参照)、バッファ15の更新を必要としていれば、REQ=ONが送られてくるので、エクスターナルバス200をバッファ15に接続する。
図3は、上述のように、キャッシュがヒットしている場合の各信号、バス、及びTGチャンネル(楽音発生部11の同時発音チャンネル)のタイムチャートを示している。
同図に示されるように、本装置では、サンプリング時間=20μsecとし、その間に時分割チャンネル時間を1.25μsecとして、1サンプリング時間内に、同自発音数16の時分割発音チャンネル(TGチャンネル)があり、これらの全てのチャンネルが時分割処理され、16音が同時発音している状態になっている(図中0x0〜0xFで示される)。
この時、バスコントローラ10から制御部12へのWAIT信号及びメモリ管理部14からバスコントローラ10へのCTR信号は、OFF状態であるが、上記バッファ15からバスコントローラ10へのREQ信号は、常に複数の系列の楽音波形データの読み出しが行われるため、同図に示すようなON状態が繰り返されるととになる。
さらに、メモリ管理部14によって、インターナルバス100にはキャッシュ部13のプログラムが読み出されており(図中C0で示される)、即ち、キャッシュがヒットした状態となっている。
他方、REQ信号を受けたバスコントローラ10により、エクスターナルバス200には第1の記憶部210から楽音波形データが読み出され、上記バッファ15に一時的に格納されている(図中D/Bで示されている)。
図4は、発音チャンネル0x3が消音し、他が発音中である時に、キャッシュがミスヒットしてプログラム更新中の場合のタイムチャートを示している。また、図5は、上記場合の本発明構成の機能ブロックを示す説明図である。
キャッシュがミスヒットした場合、即ち、制御部12が必要とするアドレスをメモリ管理部14に指定して、キャッシュ部13にプログラムの読み出しをかけた場合に、そのキャッシュ部13に、そのアドレスに対応するキャッシュ上のアドレスが無く、該キャッシュ部13に該当するプログラムが存在しない場合を、これらの図は示している。
そのような場合に、まずメモリ管理部14は、バスコントローラ10に対し、CTR信号(上述のように該制御信号CTRは、制御部12からのアクセスでキャッシュミスヒットをメモリ管理部14で検知した場合に該メモリ管理部14から出されるキャッシュミスヒットをしたことを示す信号)を出力する。
そして、制御部12は、メモリ管理部14を介して、エクスターナルバス200をアクセスしようとする。楽音発生部11に、図4に示すように、空きチャンネルがあれば(図4ではTGChannel0x3が消音状態であり、他のチャンネルは発音中の例を示している)、そのタイミングを待って、0x3のタイムスロットの際に、メモリ管理部14は、バスコントローラ10に指令を出し、インターナルバス100をエクスターナルバス200に接続させる。それによって、制御部12は、第2の記憶部211から、必要とするプログラムをロードする。
同時に、メモリ管理部14は、ロードされるプログラムを、上記キャッシュ部13にロードさせる。
他方、上述のタイミングのバスコントローラ10に機能については、該バスコントローラ10自身は、バッファ15にアクセス権を優先して与えるので、空きチャンネルのタイミング(空きチャンネルのタイムスロット)が来るまでは、メモリ管理部14にWAITを出力しつつ、エクスターナルバス200を、バッファ15側に接続し、その間にも各チャンネルの楽音波形データの読み出しに使用させる。本発明で、「楽音発生部11の使用状況を確認し」と言っているのはそのことを指している。その間WAITは、メモリ管理部14で処理され、制御部12には送られない。そして、空きチャンネルのタイミングが到来すれば(図4の0x3の時)、エクスターナルバス200は、図5に示すように、メモリ管理部14経由でインターナルバス100に接続され、制御部12は、第2の記憶部211から、必要とするプログラムのロードを行う。この時、メモリ管理部14により、同時に、ロードされるプログラムが、上記キャッシュ部13にロードされる。
以上の例では、キャッシュミスヒット時に、たまたま空きチャンネルが生じた場合の例を示しているが、空きチャンネルが無い場合、すなわち、楽音発生部11が複数の楽音を全てのチャンネルで発生している場合は、時分割で発音している楽音の少なくとも1つを選んで(例えば、「楽音のベロシティレベルが一番低いもの」「後述する第2のエンベロープジェネレータ(EG−2)1112の到達目標値がゼロで、かつ最も現在値がゼロに近いもの」「最も古く離鍵された鍵に対応する発音を行っているもの」「最も古く押鍵された鍵に対応する発音を行っているもの」などが考えられる)、上記バスコントローラ10より制御部12に向けて上記INT信号を出力し(このINT信号で後述するゼロペイジプログラムが起動する割込ルーチンがコールされ、上述のように適切なチャンネルが消音される)、その発音を中止させる。そのタイムスロットを用いて、エクスターナルバス200は、図5に示すように、メモリ管理部14経由でインターナルバス100に接続され、上述のように、制御部12には、第2の記憶部211から、必要とするプログラムがロードされる。この時、メモリ管理部14により、同時に、ロードされるプログラムが、上記キャッシュ部13にロードされる。
以上のように、本実施構成によれば、空きチャンネルがあれば、そのタイミングを待って、空きチャンネルのタイムスロットの際に、メモリ管理部14は、バスコントローラ10に指令を出し、インターナルバス100はエクスターナルバス200に接続され、制御部12には、第2の記憶部211から、必要とするプログラムがロードされる。同時に、メモリ管理部14により、ロードされるプログラムが、上記キャッシュ部13にもロードされる。また、空きチャンネルが無い場合でも、時分割で発音している楽音の少なくとも1つを選んで、その発音を中止させ、そのタイムスロットを用いて、上記と同様な処理を行う。そのため、同時発音数を減らすことなく、アクセス時間が許す限り多くの発音ができるようになる。
実施例2の構成は、実施例1の構成とほぼ同じであるが、まず、第1の記憶部12に記憶されている楽音波形データが、ADPCMの形式で圧縮されている状態で記憶されている。また実施例1では読み出した楽音波形データを一時的に記憶するバッファ15だけの構成であったが、本実施例構成では、図6に示すように、さらにデコーダの構成が一緒にそこに備わっており(15a)、第1の記憶部12から読み出されたADPCMの形式の楽音波形データは、そのデコード部で、普通のPCM形式にデコードされることになる。その際読み出された圧縮楽音波形データは、デコード処理によって、一つ一つ読み出されて伸張せしめられ、補間処理が行われ、PCM形式にデコードされることになる。
他方、メモリ管理部14は、次のように、作動する。すなわち、キャッシュ部13のキャッシュミスヒットを検知すると共に、キャッシュミスヒットが検知された際に、上記バッファデコーダ15aからの読み出し状況を確認し、楽音発生部11が上記楽音波形の全てを読み出し終えていない場合は、そのタイムスロットを用いて、上記第2の記憶部211をアクセスし、その際に、読み出されたプログラムを上記キャッシュ部13に記憶させ、さらに発音されていないタイムスロットを用いて、上記第2の記憶部211をアクセスし、その際に、読み出されたプログラムを上記キャッシュ部13に記憶させるように作動する。
上記バッファデコーダ15aからの読み出し状況を確認した際に、「楽音発生部11が上記楽音波形の全てを読み出し終えていない場合」とは、例えば、Fナンバが1より小さい値で楽音波形データの読み出しが行われていれば、伸張・補間処理中にそのタイムスロットに、空き時間が生ずる(その間は第2の記憶部211に該バッファデコーダ15aはアクセスしていない)ので、その状態が、「楽音発生部11が上記楽音波形の全てを読み出し終えていない場合」と言うことになる。
また「発音されていないタイムスロットを用いて、上記第2の記憶部211をアクセスし、その際に、読み出されたプログラムを上記キャッシュ部13に記憶させるように作動する」とは、上記実施例1の場合と同じである。
以上の本実施例構成によれば、同時発音数を、第1の記憶部210のアクセス時間が許す限り多く確保しつつ、制御部12が該第1の記憶部210へもアクセスすることができるようになる。
図7及び図8は、本発明の別の実施例構成を示している。本実施例構成では、基本的に、実施例1とほぼ同様な構成を有している。
そして、制御部12が、メモリ管理部14を介してプログラムの読み出しする際に、キャッシュ部13上のプログラムがヒットしている。このキャッシュヒットの状態では、メモリ管理部14は、エクスターナルバス200をアクセスしてインターナルバス100にアクセスする必要がない。従ってインターナルバス100は、メモリ管理部14によって、キャッシュ部13に接続される。この時は、上記と同様、キャッシュ部13をアクセスする際の制御部12が指定するアドレスは、メモリ管理部14によって自動的に変換される。そして、このキャッシュ部13は、頁単位でプログラムのキャッシュを行う。メモリ管理部14は、後述するプリロードのために制御信号CTRをONにして、バスコントローラ10に出力する。
バスコントローラ10は、バッファ15にアクセス権を優先して与えるので、図8に示すように、空きチャンネルのタイミングが来るまで、該バスコントローラ10は、メモリ管理部14にWAITを出力しつつ、エクスターナルバス200をバッファ15に接続する。上記WAITは、メモリ管理部14で処理され、制御部12には送られない。
一方空きチャンネルのタイミングが来れば(図中0x3で示される)、バッファ15からバスコントローラ10へのREQ信号の出力及びバスコントローラ10からメモリ管理部14へのWAITの出力はOFFにされ、エクスターナルバス200は、バスコントローラ10を介し、メモリ管理部14経由でキャッシュ部13のみに接続され、そのタイミングで、キャッシュ部13のペイジアウト前に次ペイジがプリロードされる更新処理がなされる。
以上の本実施例構成によれば、上記楽音発生部11がバスコントローラ10を使用して第1の記憶部210に記憶された楽音波形データを読み出すタイムスロットに、空きタイムスロットがあるか否かが、上記メモリ管理部14により検知され、空きタイムスロットが検知された場合に、該タイムスロットを用いて、上記キャッシュ部13のペイジアウトになる前に、次ペイジを、メモリ管理部14によって、該キャッシュ部14にプリロードさせることになる。
従って、同時発音数を、第1の記憶部210のアクセス時間が許す限り多く確保しつつ、制御部12が該第1の記憶部210へもアクセスすることができるようになる。
図9は、上記実施例1〜3に共通の、制御部12のメインフローを示す図面である。
同図に示すように、制御部12により、キャッシュ部13、バッファ15、デコーダ・バッファ15a、データキャッシュ部16、及び第2の記憶部211の一部を構成するRAMなどが初期化される(ステップS100)。
そしてイベントがあるか否かが検出され(ステップS102)、イベントがあれば(ステップS102;Y)、ステップS106に移行する。
反対にイベントがなければ(ステップS102;N)、イベントの処理がなされる(ステップS104)。
そして、ステップS106では、イベント外の処理(時間経過による処理)がなされる。
図10は、上記図9のステップS100で示される制御部12による初期化処理の処理フローを示している。
該初期化処理では、INT信号で起動する割込ルーチンINT()、インターバルタイマ割込ルーチンTINT()、外部割込等が禁止される(ステップS200)。
次にスタックポインタ等の変数が初期化される(ステップS202)。
さらに上記楽音発生部11の全チャンネル消音する等のデバイス設定がなされる(ステップS204)。
そして上記キャッシュ部13に、キャッシュのゼロペイジ(エクスターナルバス200アクセスのための楽音発生部11の消音ルーチンが格納されている)がロードされる(ステップS206)。
その後プログラム定数が、第2の記憶部211からデータキャッシュ部16(C1)にロードされ、プログラム定数ポインタが該データキャッシュ部16(C1)エリアに設定される(ステップS208)。
さらにプログラム変数の初期値がセットされる(ステップS210)。
最後に、上述したINT信号で起動する割込ルーチンINT()、インターバルタイマ割込ルーチンTINT()、外部割込等が可能な許可設定がなされる(ステップS212)。以上で初期化処理ルーチンが終了する。
図11は、INT信号で起動する割込ルーチンINT()の内容を示すフローチャートである。該割込ルーチンINT()では、ゼロペイジプログラムが起動される、すなわち、適切な発音チャンネルが消音される(ステップS300)。以上でINT信号で起動する割込ルーチンINT()が終了する。
図12は、インターバルタイマ割込ルーチンTINT()の内容を示すフローチャートである。該インターバルタイマ割込ルーチンTINT()では、タイマカウンタTをインクリート(1だけ増加)する処理がなされる(ステップS400)。以上でインターバルタイマ割込ルーチンTINT()が終了する。
図13は、上記図9の制御部12のメイン処理フローにおいて、ステップS104で行われるイベント処理(doEvent)の処理フローを示している。
そのイベントがキーイベントであるか否かがチェックされる(ステップS500)。そのイベントがキーイベントであった場合(ステップS500;Y)、図示しないキースキャナからの押鍵・離鍵イベントに応じて、発音処理・消音処理がなされる(ステップS502)。
上記ステップS500で、そのイベントがキーイベントでなかった場合(ステップS500;N)、そのイベントがパネルイベントであるか否かがチェックされる(ステップS504)。そのイベントがパネルイベントであった場合(ステップS504;Y)、図示しないパネルスキャナからのパネルイベントに応じて、音色等の発音パラメータが変更される(ステップS506)。
上記ステップS504で、そのイベントがパネルイベントでなかった場合(ステップS504;N)、そのイベントがMIDIイベントであるか否かがチェックされる(ステップS508)。そのイベントがMIDIイベントであった場合(ステップS508;Y)、図示しない外部割込で受信されるMIDI入力に応じて、MIDI処理が行われる(ステップS510)。
上記ステップS508で、そのイベントがMIDIイベントでなかった場合(ステップS508;N)、その他のイベント処理がなされる(ステップS512)。
さらに図14は、上記図9の制御部12のメイン処理フローにおいて、ステップS106で行われるタイマカウンタTに基づく処理(doTVar)の処理フローを示している。
まずタイマカウンタTが参照され、自動演奏が実行される(ステップS600)。
そしてエクスプレッションペダルなどのアナログ入力が読み取られ、それに基づく処理が実行される(ステップS602)。
次にタイマカウンタTが参照されて、変調用のLFOの歩進処理がなされる(ステップS604)。
続いて、離鍵後又は減衰音の押鍵後、EG−2のレベルがゼロになっているものを探して処理がなされる(ステップS606)。
図15は、上記実施例1〜3に共通の、楽音発生部11の詳細な構成を示す説明図である。
同図に示すように、楽音発生部11は、パラメータレジスタ(PR)1100と、ウェイブアドレスジェネレータ(WAG)1102と、インターポレイタ(IP)1104と、DCF1106と、第1のエンベロープジェネレータ(EG−1)1108と、DCA1110と、第2のエンベロープジェネレータ(EG−2)1112と、ラウドネス回路(LD)1114と、論理和回路(OR)1116と、パンコントローラ1118と、ミキサ1120と、エフェクト付与回路(EFP)1122とを有している。また、図示しないが、CPUは、ウェイブアドレスジェネレータ(WAG)1102などと同様に、第1のエンベロープジェネレータ(EG−1)1108、第2のエンベロープジェネレータ(EG−2)1112、ラウドネス回路(LD)1114、エフェクト付与回路(EFP)1122などとも、パラメータレジスタ(PR)1100を介してパラメータの交換を行ってもよい。
そのうち、プログラムレジスタ(PR)1100は、制御部12から各発音チャンネルの波形読出開始アドレス、ループ開始アドレス、ループ終端アドレス、波形読出レート、DCFオフセット周波数、EG−1目標値、EG−1レート、音量、PAN係数などのパラメータを受け取って、各部に供給すると共に、各部の演算による現在値を保存する機能を有している。
上記ウェイブアドレスジェネレータ(WAG)1102は、波形読出開始アドレスから順にループ開始アドレスを経てループ終端アドレスに到達し、以後ループ開始アドレスとループ終端アドレスの間を繰り返し読み出すためのアドレスを発生する機能を有している。読出速度は波形読出レート(Fナンバ)に応じて変更される。
上記インターポレイタ(IP)1104は、読み出された波形データを受け取って補間を行う機能を有している。
上記DCF1106は、波形データにフィルタ処理を行うデジタルコントロールドフィルタである。
上記第1のエンベロープジェネレータ(EG−1)1108は、DCF1106のカットオフ周波数に時間エンベロープを与える機能を有している。
上記DCA1110は、波形データの振幅を制御するデジタルコントロールドアンプリファイアである。
上記第2のエンベロープジェネレータ(EG−2)1112は、DCA1110の振幅に時間エンベロープを与えると共に、振幅ゼロ検出信号を、論理和回路(OR)1116に出力する機能を有している。
上記ラウドネス回路(LD)1114は、波形データの音量を制御するとともに、音量ゼロ検出信号を論理和回路(OR)1116に出力する機能を有している。
上記論理和回路(OR)1116は、第2のエンベロープジェネレータ(EG−2)1112とラウドネス回路(LD)1114のゼロ検出信号の論理和を出力する回路である。
上記パンコントローラ1118は、波形データのステレオ定位を制御する機能を有している。
上記ミキサ1120は、例えば本実施例装置のチャンネル数が16チャンネルある場合に、その16チャンネルの各発音チャンネルの波形データを系列加算するミキシング回路である。
上記エフェクト付与回路(EFP)1122は、系列加算された波形データにエフェクトを付与する機能を有している。
図16は、上記実施例1〜3に共通の、メモリ管理部14とキャッシュ部(C0)13の詳細な構成を示す説明図である。
同図に示すように、これらの回路構成のうち、キャッシュ部(C0)13は、例えば0〜Fまでの16ライン構成であり、1ラインあたりの容量は4096バイトとする仮定する。その場合のキャッシュ部13の容量は65536バイトとなる。
以上の各部の動作について説明する。
1)制御部12からインターナルバス100へ外部メモリ(第1及び第2の記憶部210及び211)へのアドレス(例えば32ビット)が送出される。
2)キャッシュ部13の各ライン(CacheLine0〜F)のラインアドレスセレクタ1400(LAS−0〜LAS−F)がこれを受け取り、上位(例えば20)ビットを見て自分がレジストしているラインに対応するアドレスの上位(例えば20)ビットと比較する。この比較のためにラインアドレスセレクタ1400は(例えば20ビットの)上位アドレスレジスタを備えている。レジスタの内容は、ラインが更新される際に書き換えられる。
3)一致結果はHIT信号としてラインセレクタ1406(LS)に送出される。HIT=ONの場合は下位(例えば12)ビットのアドレスがラインメモリ1300(LM−0〜LM−F)に送出される。HIT=OFFの場合、アドレスは送出されない。
4)各ラインのHIT信号は全てラインセレクタ1406(LS)に集められる。
4−1)全てのHITがOFFであれば、ラインセレクタ1406(LS)は、(0)CTR=ON(制御部12がキャッシュミスヒットした場合に出力される信号)を出力し、(1)適切な(例えば最後にアクセスされた時期が最も古い)キャッシュラインを選び、(2)当該ラインのデータバスセレクタ1402(DBS)をOCT信号を用いて「外部−内部直結」に切り替え、(3)当該ラインのラインメモリ1300(LM)をCCT信号を用いて書込モードで選択状態にし、(4)ラインアドレスセレクタ1400(LAS)をICT信号を用いて強制的にインターナルバス100選択状態にし、(5)プリロードアドレスジェネレータ1404(PAG)にスタートアドレスのクリアを要求する。
4−2)いずれかのラインがHIT=ONを示しており、かつ前回のライン処理完了時までにプリロードアドレスジェネレータ1404(PAG)が更新されなかった場合は、ラインセレクタ1406(LS)は、(0)CTR=OFFを出力し、(1)HIT=ONであるラインのラインメモリ1300(LM)をCCT信号を用いて読出モードで選択状態にし、(2)当該ラインのデータバスセレクタ1402(DBS)をOCT信号を用いて「内部」のみ接続状態とする。 4−3)いずれかのラインがHIT=ONを示しており、かつ前回のライン処理完了時までにプリロードアドレスジェネレータ1404(PAG)が更新された場合は、ラインセレクタ1406(LS)は、(0)CTR=ONを出力し、(1)HIT=ONであるラインのラインメモリ1300(LM)をCCT信号を用いて読出モードで選択状態にし、(2)当該ラインのデータバスセレクタ1402(DBS)をOCT信号を用いて「内部」のみ接続状態とし、(3)適切な(例えば最後にアクセスされた時期が最も古い)キャッシュラインを選び、(4)当該ラインのデータバスセレクタ1402(DBS)をOCT信号を用いて「外部」のみ接続状態に切り替え、(5)当該ラインのラインメモリ1300(LM)をCCT信号を用いて書込モードで選択状態にし、(6)ラインアドレスセレクタ1400(LAS)をICT信号を用いて強制的にインターナルバス100選択状態にし、(7)プリロードアドレスジェネレータ1404(PAG)にスタートアドレスのクリアを要求する。
5)エクスターナルバス200のデータはデータアナライザ1408(DA)によって解析される。もしデータ(プログラムデータ)中にジャンプもしくはコール命令が存在していたら、データアナライザ1408(DA)はその飛び先アドレスの上位(例えば20)ビットを取得し、プリロードアドレスジェネレータ1404(PAG)に送出する。
6)プリロードアドレスジェネレータ1404(PAG)は、ラインセレクタ1406(LS)によってラインメモリ1300(LM)の書き換えを実行中にデータアナライザ1408(DA)から飛び先アドレスが送られてきたら、その下位(例えば12)ビットに“0”を付加してプリロードスタートアドレスとしてレジストする。その後ラインセレクタ1406(LS)によって当該ラインの転送が終了したら、図示しないクロックに応じてプリロードアドレスを1ずつインクリメントしながら送出する。
ここでライン1がHITした場合の例を説明する。
ラインアドレスセレクタ1400(LAS−1)はインターナルアドレスを選択し、それ以外のラインアドレスセレクタ1400は非接続に設定される。そして、ラインメモリ1300(LM−1)は上記ラインアドレスセレクタ1400(LAS−1)からの下位アドレスに従って読出処理を実行し、それ以外のラインメモリ1300は非選択状態となる。その後データバスセレクタ1402(DBS−1)はラインメモリ1300(LM−1)をインターナルバス100に接続し、それ以外のラインメモリ1300は非接続状態にされる。
反対にキャッシュがミスヒットした場合について説明する。
一旦、全てのラインアドレスセレクタ1400がHIT=OFFを出力するので、CTR信号が出力される。バスコントローラ10(BC)によって楽音発生部11とバスタイミングが競合すると、該バスコントローラ10(BC)からWAIT信号が制御部12に出力され、上記状態が保持される。
そのまま全発音チャンネルで競合すると、WAIT信号が1サンプル時間持続するので、バスコントローラ10(BC)からINT信号が制御部12へ送られる。
このINT信号によって、制御部12に割込みが掛かり、割込処理ルーチンの記憶されているライン0が選択され、上記HITの場合に応じた動作で、楽音発生部11のいずれかの発音チャンネルが消音される。
消音が完了すると楽音発生部11のいずれかのタイミングでWAIT信号が解除されるので、適切なラインがラインセレクタ1406(LS)により開放され、上記外部メモリ(第2の記憶部211など)からデータがラインに記憶されつつ、制御部12も動作し、この間ジャンプまたはコール命令があれば、更にプリロードアドレスが記憶される。
上記のラインが終端に達したら、次のラインを探す。次がHITであれば、制御部12はキャッシュを読んで動作し、同時にプリロードアドレスジェネレータ1404(PAG)を用いてジャンプ先のペイジがプリロードされ、HITしなければプリロードは実行されずに、次のラインが読み込まれる。
図17は、上記実施例2のデコーダ・バッファ(D/B)15aの構成を示す回路図であるが、デコーダの部分を除けば、実施例1及び3のバッファ15と共通の構成である。
楽音発生部11の上記ウェイブアドレスジェネレータ(WAG)1102(図15参照)が発生した波形読出アドレスは、バッファセレクタ(BS)1500を通じてウェイブデータバッファ(WDB−0/1)1502a及び1502bに与えられる。現在波形がエクスターナルバス200から読み込まれていない側のウェイブデータバッファ(WDB−0/1)1502a又は1502bから波形が楽音発生部11のインターポレータ(IP)1104(図15参照)へ送出される。
上記楽音発生部11に波形が送出されていない側のウェイブデータバッファ(WDB−0/1)1502a又は1502bは、エクスターナルバス200から波形データがウェイブリーダ(WR)1506を通じて読み込まれ、ウェイブデコーダ(WD)1504によってデコードされる。このとき、楽音波形データの読出速度(例えばチャンネル時間あたり2バイト)と圧縮比(例えば1/2)によって得られるウェイブデータバッファ(WDB−0/1)1502a及び1502bのバッファ速度(例えばチャンネル時間あたり4バイト)がウェイブアドレスジェネレータ(WAG)1102の波形読出速度以上(例えば2.0バイト/チャンネル時間以下)ならば、バッファサイズ分の楽音波形データの読出が終わった後は空き時間となる。この間はREQ=OFFとなって、制御部12がエクスターナルバス200を直接アクセス可能となる。
ウェイブアドレスジェネレータ(WAG)1102からアドレスが送出されない場合もREQ=OFFとなって、制御部12がエクスターナルバス200を直接アクセス可能となる。
図18は、バスコントローラ(BC)10の構成を示す回路図であり、また図19は、その図の中で示されるバスセレクトコントロール(BSC)1600の真理値表である。
該バスセレクトコントロール(BSC)1600は、エクスターナルアドレスセレクタ(EAL)1602、エクスターナルデータセレクタ(EDL)1604及びエクスターナルコントロールセレクタ(ECL)1606に接続され、これらの信号を出力する。
上記バスセレクトコントロール(BSC)1600は、メモリ管理部14からのCTR信号とバッファ15又はデコーダ・バッファ15aからのREQ信号が入力され、上記各部へセレクト信号を出力するほか、メモリ管理部14へのWAIT信号及び制御部12へのINT信号の出力を行う。
エクスターナルアドレスセレクタ(EAL)1602は、上記セレクト信号の他、メモリ管理部14からのメモリアドレス及びバッファ15又はデコーダ・バッファ15aからのメモリアドレスを指定する信号を受信し、第1の記憶部210又は第2の記憶部211の所定のアドレスを指定する信号を送出する。
エクスターナルデータセレクタ(EDL)1604は、上記セレクト信号の他、メモリ管理部14とエクスターナルバス200間でやりとりされるべきデータの送受信とバッファ15又はデコーダ・バッファ15aとエクスターナルバス200間でやりとりされるべきデータの送受信がなされ、さらにこれらのデータがエクスターナルバス200との間で送受信される。
エクスターナルコントロールセレクタ(ECL)1606は、上記セレクト信号の他、メモリ管理部14からの制御(Control)信号とバッファ15又はデコーダ・バッファ15aからの制御(Control)信号が入力され、第1の記憶部210又は第2の記憶部211に対しての制御(Control)信号を出力する。
図19は、上述のように、バスセレクトコントロール(BSC)1600の真理値表である。
同図によれば、バスコントローラ10は、CTR信号及びREQ信号のいずれもOFFの場合、エクスターナルバス200はメモリ管理部14にもバッファ15又はデコーダ・バッファ15aにも接続されず、上記WAIT信号はOFF状態に設定される。
またCTR信号=OFFで、REQ信号=ONの場合、エクスターナルバス200はバッファ15又はデコーダ・バッファ15aに接続され、上記WAIT信号はOFF状態に設定される。
さらにCTR信号=ONで、REQ信号=OFFの場合、エクスターナルバス200はメモリ管理部14に接続され、上記WAIT信号はOFF状態に設定される。
そしてCTR信号及びREQ信号のいずれもONの場合、エクスターナルバス200はバッファ15又はデコーダ・バッファ15aに接続され、上記WAIT信号はON状態に設定される。このWAIT信号が出力されて1サンプル時間経過すると、INT信号がON状態になり、上記のように、ゼロペイジプログラムが起動して、適切な発音しているチャンネルが消音されることになる。
尚、本発明の1チップ電子楽音発生器は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えばキャッシュ(C0)及びデータキャッシュ(C1)をチップに組み込まずに外装してもよい。また、ゼロペイジプログラムはキャッシュ(C0)でなく、データキャッシュ(C1)またはインターナルバス上に配置される他の記憶手段に記憶されてもよい。キャッシュ(C0)の各ラインのうち、ライン0を書き換え不能、またはペイジアウト不能としてもよい。データキャッシュ(C1)はキャッシュ(C0)と同様に扱われてもよい。データキャッシュ(C1)を廃してプログラムコードとプログラムデータをキャッシュ(C0)に混在させてもよい。第1の記憶部と第2の記憶部は同一の記憶手段の別エリアであってもよい。
本発明に係る1チップ電子楽音発生器の構成は、電子楽器などに利用できるほか、電子ゲームやその他電子的に楽音を発生できるものには利用可能である。
本発明の一実施例に係る1チップ電子楽音発生器と周辺回路を含む電子学音発生装置の構成を示す回路図である。 本発明の実施例1の構成を有する電子学音発生装置の機能ブロック図である。 キャッシュがヒットしている場合の各信号、バス、及びTGチャンネルのタイムチャートである。 発音チャンネル0x3が消音し、他が発音中である時に、キャッシュがミスヒットしてプログラム更新中の場合のタイムチャートである。 発音チャンネル0x3が消音し、他が発音中である時に、キャッシュがミスヒットしてプログラム更新中の場合の機能ブロックを示す説明図である。 本発明の実施例2の構成を有する電子学音発生装置の機能ブロック図である。 本発明の実施例3の構成を有する電子学音発生装置の機能ブロック図である。 キャッシュがヒットしつつ、プリロードによる頁更新中の場合のタイムチャートである。 制御部12のメインフローを示すフローチャートである。 図9のステップS100で示される制御部12による初期化処理の処理フローを示すフローチャートである。 INT信号で起動する割込ルーチンINT()の内容を示すフローチャートである。 インターバルタイマ割込ルーチンTINT()の内容を示すフローチャートである。 図9の制御部12のメイン処理フローにおいて、ステップS104で行われるイベント処理(doEvent)の処理フローを示すフローチャートである。 図9の制御部12のメイン処理フローにおいて、ステップS106で行われるタイマカウンタTに基づく処理(doTVar)の処理フローを示すフローチャートである。 楽音発生部11の詳細な構成を示す説明図である。 メモリ管理部14とキャッシュ部(C0)13の詳細な構成を示す説明図である。 実施例2のデコーダ・バッファ(D/B)15aの構成を示す回路図である。 バスコントローラ(BC)10の構成を示す回路図である。 図18のバスセレクトコントロール(BSC)1600の真理値表である。
符号の説明
10 バスコントローラ
11 楽音発生部
12 制御部
13 キャッシュ部
14 メモリ管理部
15 バッファ
15a デコーダ・バッファ
16 データキャッシュ部
100 インターナルバス
200 エクスターナルバス
210 第1の記憶部
211 第2の記憶部
1100 パラメータレジスタ
1102 ウェイブアドレスジェネレータ
1104 インターポレータ
1106 DCF
1108、1112 エンベロープジェネレータ
1110 DCA
1114 ラウドネス回路
1116 論理和回路
1118 パンコントロール
1120 ミキサ
1122 エフェクト付与回路
1300 ラインメモリ
1400 ラインアドレスセレクタ
1402 データバスセレクタ
1404 プリロードアドレスジェネレータ
1406 ラインセレクタ
1408 データアナライザ
1500 バッファセレクタ
1502a、1502b ウェイブデータバッファ
1504 ウェイブデコーダ
1506 ウェイブリーダ
1600 バスセレクトコントロール
1602 エクスターナルアドレスセレクタ
1604 エクスターナルデータセレクタ
1606 エクスターナルコントロールセレクタ

Claims (3)

  1. 楽音を発生するための楽音波形を記憶した第1の記憶手段、及び楽音を発生するためのプログラムを記憶した第2の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスするためのバスコントローラを少なくとも備えている1チップ電子楽音発生器において、
    上記楽音波形を読み出し、上記プログラムが生成したパラメータに応じて加工して時分割で複数の楽音を発生するための楽音発生手段と、
    読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
    上記バスコントローラと制御手段との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ手段と、
    上記キャッシュ手段のキャッシュミスヒットを検知すると共に、キャッシュミスヒットが検知された際に、上記楽音発生手段の使用状況を確認し、楽音発生手段が複数の楽音を全てのチャンネルで発生している場合は時分割で発音している楽音の少なくとも1つを選んでその発音を中止させ、そのタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させ、また楽音発生手段が複数のチャンネルのうち楽音を発生していないタイムスロットのあるチャンネルが1つでもある場合は、上記バスコントローラを介し、発音されていないタイムスロットを用いて第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させるメモリ管理手段と
    を有し、
    上記楽音発生手段が上記第1の記憶手段へのアクセスを行うのを、上記読み出されたプログラムが上記記憶手段に記憶させることが妨げないようにすることを特徴とする1チップ電子楽音発生器。
  2. 楽音を発生するための圧縮された楽音波形を記憶した第1の記憶手段、及び楽音を発生するためのプログラムを記憶した第2の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスするためのバスコントローラを少なくとも備えている1チップ電子楽音発生器において、
    圧縮された楽音波形を複数読み出して一時的に記憶しておくと共に、その一つ一つ読み出して伸張し、補間処理を行うバッファデコーダ手段と、
    上記バッファデコーダ手段から伸張・補間された楽音波形を読み出し、上記プログラムが生成したパラメータに応じて加工して時分割で複数の楽音を発生するための楽音発生手段と、
    読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
    上記バスコントローラと制御手段との間に介在して、少なくともプログラムのキャッシュを行うキャッシュ手段と、
    上記キャッシュ手段のキャッシュミスヒットを検知すると共に、キャッシュミスヒットが検知された際に、上記バッファデコーダ手段からの読み出し状況を確認し、楽音発生手段が上記楽音波形の全てを読み出し終えていない場合は、そのタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させ、さらに発音されていないタイムスロットを用いて、上記第2の記憶手段をアクセスし、その際に、読み出されたプログラムを上記キャッシュ手段に記憶させるメモリ管理手段と
    を有し、
    上記楽音発生手段が上記第1の記憶手段へのアクセスを行うのを、上記読み出されたプログラムが上記記憶手段に記憶させることが妨げないようにすることを特徴とする1チップ電子楽音発生器。
  3. 楽音を発生するための楽音波形を記憶した第1の記憶手段、及び楽音を発生するためのプログラムを記憶した第2の記憶手段に対し、外部バスを介してこれらの記憶手段に時分割でアクセスするためのバスコントローラを少なくとも備えている1チップ電子楽音発生器において、
    上記楽音波形を読み出し、上記プログラムが生成したパラメータに応じて加工して時分割で複数の楽音を発生するための楽音発生手段と、
    読み出された上記プログラムに応じて動作し、上記楽音を生成するためのパラメータを作成して上記楽音発生手段に供給する制御手段と、
    上記バスコントローラと制御手段との間に介在して、少なくとも頁単位でプログラムのキャッシュを行うキャッシュ手段と、
    上記楽音発生手段がバスコントローラを使用して第1の記憶手段に記憶された楽音波形を読み出すタイムスロットに、空きタイムスロットがあるか否かを検知し、空きタイムスロットが検知された場合に、該タイムスロットを用いて、上記キャッシュ手段に記憶された頁以外の頁を、該キャッシュ手段にプリロードさせるメモリ管理手段と
    を有し、
    上記楽音発生手段が上記第1の記憶手段へのアクセスを行うのを、上記読み出されたプログラムが上記記憶手段に記憶させることが妨げないようにすることを特徴とする1チップ電子楽音発生器。
JP2008040864A 2008-02-22 2008-02-22 1チップ電子楽音発生器 Expired - Fee Related JP5229990B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008040864A JP5229990B2 (ja) 2008-02-22 2008-02-22 1チップ電子楽音発生器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008040864A JP5229990B2 (ja) 2008-02-22 2008-02-22 1チップ電子楽音発生器

Publications (2)

Publication Number Publication Date
JP2009198844A JP2009198844A (ja) 2009-09-03
JP5229990B2 true JP5229990B2 (ja) 2013-07-03

Family

ID=41142379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008040864A Expired - Fee Related JP5229990B2 (ja) 2008-02-22 2008-02-22 1チップ電子楽音発生器

Country Status (1)

Country Link
JP (1) JP5229990B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5789993B2 (ja) * 2011-01-20 2015-10-07 ヤマハ株式会社 楽音信号発生装置
JP6008394B2 (ja) * 2012-08-15 2016-10-19 株式会社コルグ 楽音発生装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2679540B2 (ja) * 1992-07-15 1997-11-19 ヤマハ株式会社 メモリ制御装置
JP2921376B2 (ja) * 1993-12-22 1999-07-19 ヤマハ株式会社 楽音発生装置
JP3235409B2 (ja) * 1995-06-07 2001-12-04 ヤマハ株式会社 ミュージックシステム、音源および楽音合成方法
JP2901143B2 (ja) * 1995-12-28 1999-06-07 ヤマハ株式会社 楽音生成装置
JP4254677B2 (ja) * 2004-09-30 2009-04-15 カシオ計算機株式会社 楽音発生装置および楽音発生処理のプログラム

Also Published As

Publication number Publication date
JP2009198844A (ja) 2009-09-03

Similar Documents

Publication Publication Date Title
US5717154A (en) Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory employing a high priority I/O bus request mechanism for improved audio fidelity
JP2002055678A (ja) Midiファイルの圧縮方法
CN105590620B (zh) 处理装置、处理方法以及电子乐器
US5763801A (en) Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory
JP5229990B2 (ja) 1チップ電子楽音発生器
US10474387B2 (en) Musical sound generation device, musical sound generation method, storage medium, and electronic musical instrument
KR20090132616A (ko) 오디오 파일을 프로세싱하는 파형 페치 유닛
JP5229993B2 (ja) 1チップ電子楽音発生器
JP2901143B2 (ja) 楽音生成装置
JP3019755B2 (ja) 楽音発生方法および楽音発生装置
JP4354268B2 (ja) 信号処理装置
JP3095290B2 (ja) 電子楽器
JP3725247B2 (ja) 楽音生成処理方法
JP4254677B2 (ja) 楽音発生装置および楽音発生処理のプログラム
JP3723973B2 (ja) 音源装置
JP2000122668A (ja) デジタル音声データ処理装置およびコンピュータシステム
JPWO2010010646A1 (ja) アクセスモジュール、記憶モジュール、楽音生成システム、及びデータ書き込みモジュール
JP7159583B2 (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
JP6443773B2 (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
JP4642348B2 (ja) データ処理用lsi
JP3707908B2 (ja) 電子楽器の効果付加装置
JPH10312189A (ja) 楽音発生方法
JP2008089642A (ja) 楽音形成装置
JP3280361B2 (ja) 電子楽器
WO2005062183A1 (ja) 共有メモリに対するアクセス競合処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130318

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

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5229990

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees