JPH09146555A - 波形メモリ音源装置 - Google Patents

波形メモリ音源装置

Info

Publication number
JPH09146555A
JPH09146555A JP7322224A JP32222495A JPH09146555A JP H09146555 A JPH09146555 A JP H09146555A JP 7322224 A JP7322224 A JP 7322224A JP 32222495 A JP32222495 A JP 32222495A JP H09146555 A JPH09146555 A JP H09146555A
Authority
JP
Japan
Prior art keywords
address
channel
waveform
access
waveform memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7322224A
Other languages
English (en)
Other versions
JP2882464B2 (ja
Inventor
Tetsuji Ichiki
哲二 市来
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 JP7322224A priority Critical patent/JP2882464B2/ja
Publication of JPH09146555A publication Critical patent/JPH09146555A/ja
Application granted granted Critical
Publication of JP2882464B2 publication Critical patent/JP2882464B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】時分割チャンネル動作で複数チャンネル分の楽
音を同時に発生する波形メモリ読み出し方式の音源にお
いて、チャンネルごとに必要なときに必要な分だけ効率
よく波形メモリをアクセスすることができるようにする
ことを目的とする。 【解決手段】所定サンプリング周期で複数チャンネル時
分割で動作することにより、該複数チャンネルの楽音を
生成する波形メモリ音源装置において、波形メモリの読
み出しに先立って、各チャンネルのアドレスを作成し、
前記アドレス記憶手段に記憶しておき、さらに各チャン
ネルのアドレスの進み量に基づいて、各チャンネルにつ
いての前記波形メモリのアクセス回数を算出する。そし
て、アドレス記憶手段に記憶された各チャンネルのアド
レスに基づき、各チャンネルのアクセス回数ずつ、波形
メモリを連続的にアクセスし、読み出した各チャンネル
の波形サンプルを波形サンプル記憶手段に記憶する。波
形サンプル記憶手段に記憶された各チャンネルの波形サ
ンプルに基づき、各チャンネルのサンプリング周期ごと
の楽音を生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、ディジタル楽音
波形データを生成出力する音源装置に関し、詳しくは、
時分割複数チャンネルで波形メモリを読み出すタイプの
音源装置において波形メモリを必要なときに必要な分だ
けアクセスできるようにした波形メモリ音源装置に関す
る。
【0002】
【従来の技術】従来より、時分割チャンネル動作で複数
チャンネル分の楽音を同時に発生する波形メモリ音源が
知られている。このような音源では、1サンプリング周
期を均等に分割した各チャンネルのタイムスロットにお
いてそれぞれのチャンネルの楽音生成動作を行なってい
る。波形メモリのアクセスについても同様に、時分割チ
ャンネル動作であり、各チャンネルごとに、そのチャン
ネルに対応するタイムスロットで一定の決められた回数
のアクセスを行なうようになっている。
【0003】さらに、波形メモリ読み出し方式の音源で
は、補間回路を備え、各チャンネルについて連続する何
点かのサンプル(波形データ)を用いて補間演算して1
点分の楽音波形データを得るものがある。また、補間回
路にサンプルバッファを有し、少ないアクセス回数で、
高次の補間演算を可能にした波形メモリ音源がある。こ
れは、波形メモリから読み出した波形データをサンプル
バッファに記憶しておき、波形メモリを読み出していく
際に、アドレスの進みが少ない場合には、サンプルバッ
ファに記憶されている波形データと新たに読み出した波
形データを用いて補間を行なうものである。
【0004】
【発明が解決しようとする課題】上述したように、時分
割チャンネル動作で複数チャンネル分の楽音を同時に発
生する波形メモリ音源では、波形メモリのアクセスが各
チャンネルごとに一定の決められた回数に定められてい
る。一般に、各チャンネルの波形読み出し速度(Fナン
バ)などに応じて、しかも各サンプリング周期ごとに、
必要な波形メモリアクセス回数は異なるが、従来技術で
はそれに対応するようなことは行なっておらず、波形メ
モリの限られた動作速度(アクセス可能回数)を有効に
利用できていなかった。
【0005】また、サンプルバッファを用いる方式で
は、アドレスの進みが少ない場合にはサンプルバッファ
のデータを有効に使って補間が可能だが、アドレスの進
みが大きい場合には必要な波形データをすべて読み出す
ことができずに補間次数を下げる(例えば、4点補間を
2点補間にする)こともあった。
【0006】この発明は、時分割チャンネル動作で複数
チャンネル分の楽音を同時に発生する波形メモリ読み出
し方式の音源において、チャンネルごとに必要なときに
必要な分だけ効率よく波形メモリをアクセスすることが
できるようにすることを目的とする。
【0007】
【課題を解決するための手段】本発明の請求項1に係る
発明は、所定サンプリング周期で複数チャンネル時分割
で動作することにより、該複数チャンネルの楽音を生成
する波形メモリ音源装置において、波形サンプルを記憶
した波形メモリであって、前記所定サンプリング周期内
に所定回数のアクセスが可能なものと、各チャンネルの
アドレスを記憶するためのアドレス記憶手段と、各チャ
ンネルの波形サンプルを記憶するための波形サンプル記
憶手段と、前記波形メモリの読み出しに先立って、各チ
ャンネルのアドレスを作成し、前記アドレス記憶手段に
記憶させるアドレス作成手段と、各チャンネルのアドレ
スの進み量に基づいて、各チャンネルについての前記波
形メモリのアクセス回数を算出するアクセス回数算出手
段と、前記アドレス記憶手段に記憶された各チャンネル
のアドレスに基づき、前記アクセス回数算出手段で算出
された各チャンネルのアクセス回数ずつ、前記波形メモ
リを連続的にアクセスし、読み出した各チャンネルの波
形サンプルを前記波形サンプル記憶手段に記憶する第1
アクセス手段と、前記波形サンプル記憶手段に記憶され
た各チャンネルの波形サンプルに基づき、各チャンネル
のサンプリング周期ごとの楽音を生成する楽音生成手段
とを備えたことを特徴とする。
【0008】請求項2に係る発明は、所定サンプリング
周期で複数チャンネル時分割で動作することにより、該
複数チャンネルの楽音を生成する波形メモリ音源装置に
おいて、波形サンプルを記憶した波形メモリであって、
前記所定サンプリング周期内に所定回数のアクセスが可
能なものと、各チャンネルのアドレスを記憶するための
アドレス記憶手段と、各チャンネルごとにn個(nは2
以上の整数)の波形サンプルを記憶するための波形サン
プル記憶手段と、前記波形メモリの読み出しに先立っ
て、各チャンネルのアドレスを作成し、前記アドレス記
憶手段に記憶させるアドレス作成手段と、各チャンネル
のアドレスの進み量に基づいて、各チャンネルについて
の前記波形メモリへの必要なアクセス回数を算出するア
クセス回数算出手段と、前記アドレス記憶手段に記憶さ
れた各チャンネルのアドレスに基づき、前記アクセス回
数算出手段で算出された各チャンネルのアクセス回数ず
つ、前記波形メモリを連続的にアクセスし、前記波形サ
ンプル記憶手段に既に記憶されている各チャンネルのn
個の波形サンプルのうちアドレスが小さい波形サンプル
から順に、前記連続的なアクセスにより読み出した各チ
ャンネルの波形サンプルに置き換える第1アクセス手段
と、前記波形サンプル記憶手段に記憶された各チャンネ
ルのn個の波形サンプルを用いて補間処理を行なうこと
により、各チャンネルのサンプリング周期ごとの楽音を
生成する楽音生成手段とを備えたことを特徴とする。
【0009】請求項3に係る発明は、請求項1または2
に記載の波形メモリ音源装置において、前記サンプリン
グ周期をm個(mは2以上の整数)の区間に分割し、前
記第1アクセス手段は、該分割した各区間ごとに、該区
間において処理すべき複数チャンネルについて前記波形
メモリの連続的なアクセスを行なうこととしたものであ
る。サンプリング周期の分割は、前半と後半の2つに等
分割するのが望ましい。
【0010】請求項4に係る発明は、請求項1または2
に記載の波形メモリ音源装置において、前記波形メモリ
の波形データは、アタック部とループ部とから構成さ
れ、前記アドレス作成手段は、作成したアドレスが当該
チャンネルで読み出すべき波形データのアタック部から
ループ部に入ったときは、その波形データのループ部の
周期ごとに、進行するアドレスを逆方向に戻してループ
部内の同じアドレスを繰り返し作成し、前記アクセス回
数算出手段は、前記アドレスの戻りが実行された場合、
当該チャンネルに関しては、アドレスの進み量にかかわ
らず所定回数のアクセス回数を指定することとしたもの
である。
【0011】請求項5に係る発明は、請求項1または2
に記載の波形メモリ音源装置において、前記波形メモリ
の読み出しまたは書き込みの少なくとも一方を行なう第
2アクセス手段をさらに備え、該第2アクセス手段は、
前記第1アクセス手段による前記波形メモリのアクセス
後の余り時間を利用して、前記波形メモリのアクセスを
行なうこととしたものである。第2アクセス手段は、例
えば、波形メモリがDRAM構成であるときのリフレッ
シュ、あるいはCPUによる波形メモリのアクセスを行
なうものである。
【0012】請求項6に係る発明は、所定サンプリング
周期で複数チャンネル時分割で動作することにより、該
複数チャンネルの楽音を生成する波形メモリ音源装置に
おいて、波形サンプルを記憶した波形メモリであって、
前記所定サンプリング周期内に所定回数のアクセスが可
能なものと、各チャンネルのアドレスを記憶するための
アドレス記憶手段と、各チャンネルの波形サンプルを記
憶するための波形サンプル記憶手段と、前記波形メモリ
の読み出しに先立って、各チャンネルのアドレスを作成
し、前記アドレス記憶手段に記憶させるアドレス作成手
段と、各チャンネルのアドレスの進み量に基づいて、各
チャンネルについての前記波形メモリのアクセス回数を
算出するアクセス回数算出手段と、所定数のチャンネル
について、前記アクセス回数算出手段で算出したアクセ
ス回数を累算し、累算回数を出力する累算手段と、前記
所定数のチャンネルに対応したアクセス期間内に、前記
累算回数分のアクセスが可能かどうかを判定する判定手
段と、前記判定手段が可能と判定した場合、前記アドレ
ス記憶手段に記憶された各チャンネルのアドレスに基づ
き、前記アクセス回数算出手段で算出した各チャンネル
のアクセス回数ずつ、前記波形メモリを連続的にアクセ
スし、読み出した各チャンネルの波形サンプルを前記波
形サンプル記憶手段に記憶する第1アクセス手段と、前
記波形サンプル記憶手段に記憶された各チャンネルの波
形サンプルに基づき、各チャンネルのサンプリング周期
ごとの楽音を生成する楽音生成手段とを備えたことを特
徴とする。
【0013】請求項7に係る発明は、請求項6に記載の
波形メモリ音源装置において、前記サンプリング周期を
m個(mは2以上の整数)の区間に分割し、前記累算手
段は、該分割した各区間ごとに、該区間において処理す
べき複数チャンネルについてアクセス回数の累算を行な
い、前記判定手段は、該分割した各区間ごとに、該区間
を前記アクセス期間として前記判定を行ない、前記第1
アクセス手段は、該分割した各区間ごとに、該区間にお
いて処理すべき複数チャンネルについて前記波形メモリ
の連続的なアクセスを行なうこととしたものである。サ
ンプリング周期の分割は、前半と後半の2つに等分割す
るのが望ましい。
【0014】請求項8に係る発明は、請求項6に記載の
波形メモリ音源装置において、前記判定手段は、前記判
定において不可能と判定した場合、前記所定数のチャン
ネルの何れかのチャンネルについてアクセス回数を減少
させることとしたものである。
【0015】請求項9に係る発明は、請求項6に記載の
波形メモリ音源装置において、前記波形メモリの読み出
しまたは書き込みの少なくとも一方を行なう第2アクセ
ス手段をさらに備え、前記判定手段により可能と判定さ
れた場合、該第2アクセス手段は、前記アクセス期間内
の全アクセス回数のうち、前記第1アクセス手段による
アクセスで使用されなかった分を利用して、前記波形メ
モリのアクセスを行なうこととしたものである。第2ア
クセス手段は、例えば、波形メモリがDRAM構成であ
るときのリフレッシュ、あるいはCPUによる波形メモ
リのアクセスを行なうものである。
【0016】
【発明の実施の形態】以下、図面を用いて、この発明の
実施の形態を説明する。
【0017】図2は、この発明に係る音源装置を適用し
た電子楽器の全体のブロック構成を示す。図1は、図2
の電子楽器の音源部のブロック構成を示す。図1および
図2において、同一の番号は同一のものを示すものとす
る。
【0018】まず、図2を参照して、この電子楽器の全
体構成を説明する。この電子楽器は、鍵盤201、表示
部202、スイッチ群(SW)203、中央処理装置
(CPU)204、リードオンリメモリ(ROM)20
5、ランダムアクセスメモリ(RAM)206、音源部
207、波形メモリ208、ディジタルアナログ変換器
(DAC)210、サウンドシステム(SS)211、
外部記憶装置212、およびバス213を備えている。
鍵盤201、表示部202、スイッチ群203、CPU
204、ROM205、RAM206、音源部207、
および外部記憶装置212は、バス213により相互に
接続されている。
【0019】鍵盤201は、ユーザが演奏操作するため
の複数の鍵を備えた鍵盤である。表示部202は、電子
楽器のパネル上に設けられており、各種の情報を表示す
る。スイッチ群203は、パネル上に設けられており、
ユーザはこれを操作することにより電子楽器に対して各
種の指示を与えることができる。CPU204は、この
電子楽器全体の動作を制御する。特に、通常の演奏時に
は、鍵盤201の操作を検出し、その操作に応じて音源
部207に発音の指示を出す。ROM205は、CPU
が実行するプログラム(音源部207を制御するための
音源コントロールプログラムなど)や各種の定数データ
などを格納する。RAM206は、ワークレジスタなど
に用いる。外部記憶装置212には、後述するDRAM
構成の波形メモリ208にロードする波形データなどが
格納されている。
【0020】音源部207は、CPU204の指示に応
じて、波形メモリ208から波形データを読み出し、補
間、エンベロープ付与、チャンネル累算、および効果付
与などの加工を施して、楽音波形データとして出力す
る。音源部207から出力された楽音波形データは、D
AC210によりアナログ信号に変換され、サウンドシ
ステム211により放音される。
【0021】波形メモリ208は、DRAM(ダイナミ
ックRAM)により構成されている。波形メモリ208
には、所定のレートでサンプリングされた波形サンプル
データが格納されている。その波形サンプルデータは、
楽音の発音に先立って外部記憶装置212から読み出し
て波形メモリ208に格納してもよいが、特にこの実施
の形態例の音源では、複数チャンネル分の楽音発生の動
作を行なう際に使用されなかった空きタイムスロットを
別の用途に用いることができるようになっているので、
楽音発生の動作中にその空きタイムスロットを用いて波
形データを外部記憶装置212から読み出して波形メモ
リ208に格納してもよい。
【0022】次に、音源部207について詳しく説明す
る。図1において、音源部207は、制御レジスタ10
1、アドレス発生器102、補間器103、デコーダ1
04、音量変化制御部105、チャンネル(ch)累算
器106、効果回路107、リフレッシュカウンタ10
8、CPUアクセス制御部109、セレクタ110、セ
レクタ111、システムクロック発生部112、および
チャンネル(ch)カウンタ113を備えている。
【0023】制御レジスタ101は、CPU204から
送出された複数チャンネル分の指定情報(音源部207
に対する命令やパラメータ情報)を格納するための制御
レジスタである。CPU204は、各発音チャンネル別
に制御レジスタ101に所定の指定情報をセットして発
音の開始指示を出す。セットする指定情報としては、メ
モリ読み出しピッチ(周波数ナンバ)、メモリ読み出し
区間、波形データの圧縮方式、エンベロープ、およびエ
フェクト用係数などの指定情報がある。
【0024】発音開始指示を受けると、音源部207は
楽音波形の発生の動作を開始する。まず、アドレス発生
器102は、波形メモリ208の読み出しアドレスを順
次発生する。読み出しアドレスは、指定された読み出し
区間の先頭から、指定された読み出しピッチを順次累算
した値である。特に、この音源部207は、デコーダ1
04中にサンプルバッファであるサンプルRAMを備
え、波形メモリ208からはチャンネルごとに必要な数
の波形サンプル(波形データ)のみを読み出すようにな
っており、各チャンネルにおける波形メモリアクセス回
数は可変できるようになっている。そこで、アドレス発
生器102は、各チャンネルのアクセス回数に応じた波
形メモリのアドレスを、時分割チャンネルタイミングと
は異なるタイミングで、順次連続して出力するようにな
っている。
【0025】アドレス発生器102からのアドレス出力
が時分割チャンネルタイミングとは異なるタイミングで
行なわれることにより、空きタイムスロットが得られ
る。リフレッシュカウンタ108およびCPUアクセス
制御部109は、この空きタイムスロットにおいて、波
形メモリ208のリフレッシュを行ない、あるいはCP
U204から波形メモリ208へのアクセスを行なうた
めのものである。セレクタ110,111は、空きタイ
ムスロットにおいてリフレッシュカウンタ108やCP
Uアクセス制御部109を波形メモリ208に接続する
ように制御される。
【0026】アドレス発生器102で発生した読み出し
アドレスは、セレクタ110を介して波形メモリ208
に入力し、これにより波形データが波形メモリ208か
ら読み出される。デコーダ104は、セレクタ111を
介して、アドレス発生器102がアドレスを送り出すタ
イミングで、波形データを受け取る。この実施の形態例
では、波形データの圧縮方式は、16ビット非圧縮、8
ビット非圧縮、または8ビット圧縮の何れかである。そ
こで、デコーダ104は、非圧縮波形の場合はそのま
ま、圧縮波形の場合はデコードして、サンプルRAMに
記憶しておく。
【0027】補間器103は、デコーダ104内のサン
プルRAMから各チャンネルの波形データを読み出し、
補間処理(基本的には4点補間を行ない、4点分の波形
データが確保できないときのみ2点補間)を行なう。音
量変化制御回路105は、各チャンネルの楽音波形デー
タにエンベロープを付与する。チャンネル累算器106
は、各チャンネルの楽音波形データをチャンネル累算す
る。効果回路107は、チャンネル累算した結果に各種
のエフェクト(効果)を付与する。効果付与された楽音
波形データは、図2のDAC210に入力してアナログ
信号に変換され、サウンドシステム211により放音さ
れる。
【0028】この音源部207は時分割32チャンネル
で動作する。システムクロック112は、音源部207
内の各部に時分割動作を行なうための基準信号となる制
御クロック信号Φを供給する。チャンネルカウンタ11
3は、時分割チャンネル動作を行なうためのチャンネル
カウント値CHCをカウントし(具体的には0〜31を
繰り返しカウント)、音源部207内の各ブロックに供
給する。
【0029】次に、図3および図4を参照して、本形態
例の音源部207内の要部のタイミングの概要について
説明する。図3において、「処理A」は、アドレス発生
器102で行なう処理のうち、各チャンネルのアドレス
を作成する処理を行なう区間を示す。「処理B」は、ア
ドレス発生器102で行なう処理のうち、アドレスを波
形メモリ208に向けて送り出す処理を行なう区間を示
す。「デコード」は、デコーダ104の処理区間、特に
波形メモリ208から出力される波形データを受け取る
処理を行なう区間を示す。「補間」は、補間器103の
処理区間を示す。各処理区間は、1サンプリング周期を
前半と後半に分け、前半で第0〜第15チャンネルの処
理を行ない、後半で第16〜第31チャンネルの処理を
行なうようになっている。
【0030】図4は、図3の各処理中のチャンネルの様
子を示す。図4の「処理A前半ch」は、図3の区間3
01におけるチャンネルの様子を示す。図4の「処理B
前半ch」は、図3の区間302におけるチャンネルの
様子を示す。図4の「デコード前半ch」は、図3の区
間303におけるチャンネルの様子を示す。図4の「補
間前半ch」は、図3の区間304におけるチャンネル
の様子を示す。なお、図4では各チャンネルタイミング
を縦に並べて揃えて記載しているが、実際には各処理の
タイミングは図3に示すようにずれている。
【0031】本形態例では、図4からも分かるように、
アドレス発生器102によるアドレス作成の処理Aと補
間器103による補間の処理は、それぞれ、音源内の時
分割チャンネルタイミングに同期して動作する。一方、
アドレス発生器102からのアドレス送り出しの処理B
とデコーダ104による波形データの受け取りの処理
は、時分割チャンネルタイミングとは独立したタイミン
グ(具体的には、後述する図5の中の処理B制御部の制
御による)で動作する。
【0032】例えば、図3および図4において、処理A
前半の区間301では、アドレス発生器102により、
第0〜第15チャンネルについて時分割チャンネルタイ
ミングにしたがって順番に各チャンネルのアドレスを作
成している。処理B前半の区間302では、アドレス発
生器102により、時分割チャンネルタイミングとは異
なるタイミングで、第0チャンネルのアドレスを1つ、
第2チャンネルのアドレスを3つ、第5チャンネルのア
ドレスを1つ、…というように、第0〜第15チャンネ
ルのアドレスの送り出しを行なっている。1アドレス送
り出しを行なう区間の時間幅は、時分割チャンネルタイ
ミングで1チャンネル分の処理を行なう区間の時間幅の
半分である。各チャンネルで送り出すアドレスの個数が
区々であるのは、デコーダ104内のサンプルRAMに
過去の波形データが保持されており各チャンネルごとに
必要な個数の波形データのみ読み出せば充分なため、あ
るいは発音する必要がなくアドレスの送り出しが不要な
チャンネルがあるためである。ここ(図4)では、それ
ぞれ、第0チャンネルは1アクセス、第2チャンネルは
3アクセス、第5チャンネルは1アクセス、第7チャン
ネルは2アクセス分の波形メモリからの読み出しが必要
な場合を示している。その他のチャンネルは、発音して
いないか、既に読み出して波形バッファ307に記憶さ
れたサンプルのみで楽音が生成できるチャンネルであ
る。なお、発音していないチャンネルとは、EG等、音
量レベルの下げられたチャンネルであり、そのチャンネ
ルに関しては処理Bにおける波形メモリのアクセスタイ
ミングを使用しないように、制御がなされている。
【0033】デコード前半の区間303では、処理B前
半の区間302のアドレス送り出しのタイミングにした
がって波形メモリ208から読み出された波形データを
受け取っている。詳しくは後述するが、デコーダ104
は、受け取った波形データが圧縮波形であるときはデコ
ードを行ない、非圧縮波形であるときはそのまま、内部
のサンプルRAMに書き込む。補間器103は、補間前
半の区間304で時分割チャンネルタイミングにしたが
って、サンプルRAMのデータを用いて第0〜第15チ
ャンネルに関する補間処理を行なう。あるチャンネルに
ついて補間を行なう時点で、補間を行なうために必要な
当該チャンネルの波形データはサンプルRAMに用意さ
れているようになっている。
【0034】以上のようにして、第0〜第15チャンネ
ルの楽音波形データが生成される。後半の区間を用いて
処理される第16〜第31チャンネルについても同様で
ある。
【0035】アドレス発生器102におけるアドレス送
り出しの処理Bおよびデコーダ104における波形デー
タ受け取りの処理が時分割チャンネルタイミングとは異
なるタイミングで行なわれることにより、空きタイムス
ロットが出現する。図4の区間302,303中、「−
ch」は何れのチャンネルのサンプル読み出しにも使用
されていない空きタイムスロットを示す。この空きタイ
ムスロットの区間は、任意に使用可能である。本形態例
では、この空きタイムスロットの区間で、図1のリフレ
ッシュカウンタ108による波形メモリ208のリフレ
ッシュ処理、またはCPUアクセス制御部109による
波形メモリ208へのアクセス処理を行なうようになっ
ている。
【0036】次に、アドレス発生器102について詳し
く説明する。図5は、アドレス発生器102のブロック
構成を示す。アドレス発生器102は、セレクタ50
1,502,503、加算器504、シフタ505、ビ
ブラート変調器506、オクターブ(OCT)シフタ5
07、読み出し用整数部ラッチ508、整数部ラッチ
(ILAT)509、小数部ラッチ(FLAT)51
0、アドレスRAM511、整数部合成部512、補間
用小数部ラッチ513、制御部A514、処理B制御部
515、および制御RAM517を備えている。処理B
制御部515の内部にはアキュムレータ(ACC)51
6が備えられている。
【0037】図5において、セレクタ501,502,
503は、それぞれ、時分割の各タイムスロットで所定
の入力を選択出力するためのセレクタである。加算器5
04は、23ビットの加算器であり、セレクタ501の
選択出力データとセレクタ502の選択出力データとを
入力して加算を実行する。この加算器504では、加算
結果が出力されるまでに2クロック分の遅延があるので
「2D」と表記してある。シフタ505は、加算器50
4の加算結果または小数部ラッチ510の小数部データ
をシフトして出力する。シフタ505のシフト量は可変
である。整数部ラッチ(ILAT)509は23ビット
のラッチ、小数部ラッチ(FLAT)510は9ビット
のラッチである。
【0038】図6は、図5のアドレスRAM511のメ
モリマップを示す。アドレスRAM511は、第0〜第
31チャンネルの各チャンネルごとの領域からなり、こ
れらの領域に各チャンネルの現在のアドレス値を記憶す
る。各チャンネルの領域はアドレス上位ADH、および
アドレス下位ADLからなる。ADHおよびADLの領
域の大きさはそれぞれ16ビットである。アドレス上位
ADHとアドレス下位ADLとを合わせた32ビットの
アドレス値は、整数部と小数部とに分けられる。アドレ
ス整数部は、波形メモリ208のアドレスと対応してい
る。すなわち、アドレス整数部の1つの値に対応して、
波形メモリ208のサンプル(波形データ)が1つ存在
する。アドレス小数部は、それよりも細かい単位を示
し、何点かの波形データを用いた補間処理で用いる情報
である。アドレス整数部は23ビット、アドレス小数部
は9ビットである。したがって、アドレスRAM511
の各チャンネルのADHは23ビットのアドレス整数部
のうち上位の16ビットを示し、ADLは23ビットの
アドレス整数部の下位7ビットとアドレス小数部の9ビ
ットとを合わせた16ビットを示すこととなる。
【0039】なお、領域に付した記号はその領域そのも
のを示すとともに、その領域に格納されたデータをも示
すものとする。例えばアドレス下位ADLと言うとき
は、現在のアドレス値の下位16ビットを格納する領域
そのものを示すとともに、その領域に格納されているア
ドレス値の下位データをも示すものとする。以下、各領
域に付した記号も同様である。
【0040】図5において、整数部合成部512は、ア
ドレスRAM511の任意のチャンネルのアドレス値を
読み出してその小数部または整数部を出力する。具体的
には、アドレス小数部を出力する場合は、アドレスRA
M511の下位ADLを読み出し、その下位9ビットを
アドレス小数部として出力する。アドレス整数部を出力
する場合は、先にADLの上位7ビットすなわちアドレ
ス整数部の下位7ビットを取り込み、その後ADHのア
ドレス整数部上位16ビットを取り込み、それらを合成
して完全な23ビットのアドレス整数部を生成し出力す
る。
【0041】制御部A514は、クロックΦおよびチャ
ンネルカウント値CHCを入力して、処理Aの全動作と
処理Bの基本動作(図8で後述)を制御するための制御
信号を作成し、各ブロックへ供給する。処理B制御部5
15は、図3,4で説明した処理Bを行なうために各ブ
ロックの制御を行なう。特に、処理B制御部515は、
処理B前半の区間(図3の302)で第0〜第15の1
6チャンネル分のアクセス回数を累算し、処理B後半の
区間(図3の306)で第16〜第31の16チャンネ
ル分のアクセス回数を累算する処理を行なうが、アキュ
ムレータ516はそのアクセス回数累算値を記憶するた
めのものである。処理B制御部515の動作およびアキ
ュムレータ516については、後に詳述する。
【0042】図8は、図5のアドレス発生器102のタ
イミングチャートを示す。縦に引かれた点線により区切
られた各区間が1クロックのタイムスロットを示す。図
8は、1DAC周期384クロック(12クロック×時
分割32チャンネル分)動作のうちの2チャンネル時間
分を取りだした図である。1チャンネル分の12クロッ
クの各区間には順にスロット番号(0〜11)をつけ
る。図8では、一連のスロット番号0〜11を四角で囲
んだ区間が1チャンネル分の区間である。
【0043】「処理A」と記載された行の1〜6の数字
は下記の処理番号に対応しており、その処理番号が記載
されたタイムスロットで当該処理番号の処理が行なわれ
る。例えば、処理Aに関してスロット番号0の位置には
「1」と記載されており、スロット番号2の位置には
「2」と記載されているが、これはスロット番号0のス
ロットで下記の処理番号1の処理を行ない、スロット番
号2のスロットで下記の処理番号2の処理を行なうとい
うことを示している。処理Aに関しては、6クロックで
1チャンネル分のアドレス作成を行なうことになる。以
下、図8および図5,6を参照して、アドレス発生器1
02におけるアドレスを作成する処理Aの処理番号1〜
6の処理を説明する。
【0044】1.処理番号1では、セレクタ501はP
ITCHを選択出力し、セレクタ502はLTUNEを
選択出力する。PITCHはオクターブ内のピッチを示
し、CPU204が制御レジスタ101を介して指定す
る。LTUNEは、ループチューンを示す。波形メモリ
208に格納されている波形データはアタック部とルー
プ部に分けられるが、アタック部を読み出している間は
LTUNEは0である。アタック部からループ部に入っ
たとき、アタック部とループ部とでピッチの値が異なる
場合があるため、オフセットとしてのループチューンL
TUNEをピッチPITCHに加算してピッチの調整を
行なう。LTUNEは、CPU204が制御レジスタ1
01を介して指定する。
【0045】加算器504は、PITCH+LTUNE
を計算する。加算結果VIBMは、2クロック後に出力
され、ビブラート変調器506に入力する。ビブラート
変調器506は、楽音にゆっくりした時間的な周波数の
揺れをつけるためにその揺れ分を加算する処理を行な
う。ビブラート変調された結果は、オクターブシフタ5
07に入力し、オクターブ分のシフトを行なう。オクタ
ーブシフタ507に入力するOCTは、オクターブ分の
シフト量を示し、CPU204が制御レジスタ101を
介して指定する。
【0046】オクターブシフタ507の出力は、ピッチ
PITXとしてセレクタ501に入力する。このピッチ
PITXが、当該チャンネルにおけるアドレスの進み値
(周波数ナンバ)である。なお実際には、前のチャンネ
ルタイミングの処理番号1のスロットで算出された加算
結果VIBMがビブラート変調器506およびオクター
ブシフタ507で加工され、当該チャンネルタイミング
の処理番号2のピッチPITXとして用いられる。
【0047】2.処理番号2では、セレクタ501はオ
クターブシフタ507から出力されるピッチPITXを
選択出力し、セレクタ502はアドレスRAM511か
ら当該チャンネルのアドレス小数部ARAM(ADF)
を選択出力する。ARAM(ADF)は、整数部合成部
512が用意する。すなわち、整数部合成部512は、
アドレスRAM511の当該チャンネルに関するADL
を読み出し、その下位9ビットのアドレス小数部のみを
取り出し、アドレス小数部ARAM(ADF)としてセ
レクタ502に入力する。同時に、整数部合成部512
は、該ADLに含まれるアドレス整数部ARAM(AD
I)の下位ビットを内部レジスタに取得する。
【0048】加算器504は、ARAM(ADF)+P
ITXを計算し出力する。加算結果UDは、2クロック
後に出力され、シフタ505を介して次の処理番号3で
使われる。さらにこの加算結果は、小数部ラッチ(FL
AT)510に入力し、下位9ビットがラッチされる。
これが新たなアドレス小数部のデータである。小数部ラ
ッチ510のアドレス小数部のデータは、後にセレクタ
503を介して、アドレスRAM511の当該アドレス
のADL下位9ビットに書き込まれる。また、このとき
のUDの整数部(溢れ値)は、新たなアドレスに応じて
読み出すべきサンプル数として処理B制御部515に取
り込まれる。
【0049】3.処理番号3では、上記処理番号2の加
算結果UDがシフタ505で9ビットダウンシフトされ
たデータUD↓9(*ビットダウンシフトされたデータ
をUD↓*と表記するものとする)がセレクタ501に
入力し、セレクタ501はこのデータUD↓9を選択出
力する。セレクタ502は、アドレスRAM511の当
該チャンネルのアドレス整数部ARAM(ADI)を選
択出力する。ARAM(ADI)は、整数部合成部51
2が用意する。すなわち、整数部合成部512は、先に
処理番号2でアドレスRAM511の当該チャンネルの
ADLを読み出して上位7ビットを取り出しておき、次
に処理番号3で当該チャンネルのADHを読み出し、A
DHの16ビットと先に取り出しておいたADL上位7
ビットとを合成して、アドレス整数部ARAM(AD
I)を得る。整数部合成部512は、前もってアドレス
整数部を合成する処理を行ない、本処理番号3のタイミ
ングでARAM(ADI)を出力する。
【0050】加算器504は、ARAM(ADI)+U
D↓9を計算する。UD↓9(先述した整数部=溢れ
値)は、処理番号2でアドレス小数部にピッチPITX
(アドレスの進み値)を加算した加算結果のうち、アド
レス小数部の9ビットよりも上位に溢れた分に相当する
から、ARAM(ADI)+UD↓9はアドレス整数部
にその溢れ分を加算する計算である。この加算結果UD
は、2クロック後に出力され、シフタ505を介して次
の処理番号4で使われる。さらにこの加算結果は、整数
部ラッチ(ILAT)509に入力しラッチされる。こ
れが新たなアドレス整数部のデータである。整数部ラッ
チ509のアドレス整数部のデータは、後にセレクタ5
03を介して、アドレスRAM511の当該アドレスの
ADHおよびADL上位7ビットに書き込まれる。
【0051】4.処理番号4では、上記処理番号3の加
算結果UDがそのままセレクタ502に入力し(シフタ
505のシフト量は0)、セレクタ502はこのデータ
UDを選択出力する。セレクタ501は、−LPLEN
を選択出力する。−LPLENは、読み出すべき波形デ
ータのループ部のデータ長LPLENにマイナスを付け
て負数にしたものである。−LPLENは、CPU20
4が制御レジスタ101を介して指定する。加算器20
8は、−LPLEN+UDを計算し、2クロック後に加
算結果を出力する。
【0052】波形メモリ208上の波形データはアタッ
ク部とそれに引き続くループ部とから構成されるが、波
形データをアクセスする際には、ループ部の先頭位置
(すなわちアタック部の最終位置)をアドレス0の基準
としている。したがって、−LPLEN+UDが正(キ
ャリー非発生時)になったとき、アドレス値がループ部
最終位置を超えたことになり、この場合、アドレスをル
ープ部の先頭に戻す必要がある。そこで、処理番号4の
加算でキャリーが発生したときは以下の処理番号5,6
の処理は行なわず、キャリーが発生しなかったときはル
ープ部の先頭付近のアドレスに戻るために以下の処理番
号5,6の処理を行なう。
【0053】5.処理番号5では、上記処理番号4の加
算結果UD(新たなアドレス整数部)と小数部ラッチ
(FLAT)510のアドレス小数部とを合成した32
ビットのアドレス値UD(I&FLAT)を生成し(こ
のデータ生成はシフタ505で行なう)、セレクタ50
2はこのデータUD(I&FLAT)を選択出力するよ
うにする。また、セレクタ501はループ小数部データ
LPFRを選択出力する。LPFRは、CPU204が
制御レジスタ101を介して指定する。加算器208
は、UD(I&FLAT)+LPFRを計算し、2クロ
ック後に加算結果を出力する。
【0054】ループ小数部データLPFRは、ループ部
先頭付近に戻る場合の補正用オフセットデータである。
処理番号4でアドレス整数部に−LPLENを加算して
整数部については戻りアドレスが算出されたが、ループ
部先頭付近に戻る場合は小数部の調整も必要であるの
で、整数部と小数部とを合成したアドレス値UD(I&
FLAT)にループ小数部データLPFRを加算して、
微妙な戻りアドレスの調整を行なっている。
【0055】本処理番号5の加算結果は、小数部ラッチ
(FLAT)510に入力し、下位9ビットがラッチさ
れる。これが新たなアドレス小数部のデータである。小
数部ラッチ510のアドレス小数部のデータは、セレク
タ503を介して、アドレスRAM511の当該アドレ
スのADL下位9ビットに書き込まれる。
【0056】6.処理番号6では、上記処理番号5の加
算結果UDがシフタ505で9ビットダウンシフトされ
たデータUD↓9がセレクタ502に入力し、セレクタ
502はこのデータUD↓9を選択出力する。セレクタ
501は、−ASを選択出力する。−ASは、ノートオ
ン立ち上がり時はアドレス整数部の初期値であり、それ
以外では0となるデータを示す。−ASは、CPU20
4が制御レジスタ101を介して指定する。加算器50
4は、−AS+UD↓9を計算し、2クロック後に加算
結果を出力する。この加算結果は、整数部ラッチ(IL
AT)509に入力しラッチされる。これが新たなアド
レス整数部のデータである。整数部ラッチ509のアド
レス整数部のデータは、セレクタ503を介して、アド
レスRAM511の当該アドレスのADHおよびADL
上位7ビットに書き込まれる。
【0057】要するに処理番号6では、ノートオン立ち
上がり時以外の場合は、処理番号5の加算結果UD(新
たなアドレス値)を9ビットダウンシフトしたアドレス
整数部を整数部ラッチ509およびアドレスRAM51
1に書き込む。そして、ノートオン立ち上がり時に処理
番号6を実行した場合(このときUDは0)は、整数部
ラッチ509を介してアドレスRAM511にアドレス
整数部の初期値を書き込む。上述したように、波形デー
タはループ部の先頭を基準のアドレス0としているか
ら、アタック部の先頭アドレスは負数−ASになる。そ
こで、ノートオン立ち上がり時にこの初期値をアドレス
RAM511に書き込む必要がある。
【0058】その後、サンプリング周期で上述した処理
番号1〜処理番号6が実行されることにより、RAM5
11に書き込まれるアドレスはアタック部先頭アドレス
からループ部の先頭アドレスに徐々に変化した後、ルー
プ部の先頭アドレスからループ部の終了アドレスへかけ
ての変化を繰り返し行なう。
【0059】以上のようにして、図8の処理Aに示すタ
イミングで処理番号1〜6を実行し、各チャンネルのア
ドレス値をアドレスRAM511上で作成する。上述の
処理Aの概要を下記に式のみで処理番号別に示す。
【0060】 1.PITCH+(LTUNE)→VIBM 2.ARAM(ADF)+PITX→UD,FLAT→
ARAM 3.ARAM(ADI)+UD↓9→UD,ILAT→
ARAM 4.−LPLEN+UD→UD(I&FLAT) 5.(UD(I&FLAT)+LPFR→UD,FLA
T→ARAM) 6.((−AS)+UD↓9→ILAT→ARAM)
【0061】ただし、処理番号1のLTUNEは、ルー
プ部以外(アタック部)では0であることを示すため括
弧を付けてある。同様に、処理番号6の−ASは、ノー
トオン立ち上がり時以外は0であることを示すため括弧
を付けてある。処理番号5,6は、処理番号4でキャリ
ー非発生時のみ実行されるので全体に括弧を付けてあ
る。
【0062】次に、処理Bのアドレス送り出しの動作に
ついて説明する。実際に図5のアドレス発生器102か
ら図8の処理Bに示すタイミングでアドレスを送り出す
処理を行なう前に、処理B制御部515は、アドレス送
り出しの前処理を行なっている。図10は、その前処理
の動作を示すフローチャートである。アドレス発生器1
02が前半の第0〜第15チャンネルに関する処理Aを
実行しているとき(図3の区間301)、処理B制御部
515は、当該第0〜第15チャンネルのアドレスを送
り出す前処理として図10の動作を行なう。また、アド
レス発生器102が後半の第16〜第31チャンネルに
関する処理Aを実行しているとき(図3の区間30
5)、処理B制御部515は、当該第16〜第31チャ
ンネルのアドレスを送り出す前処理として図10の動作
を行なう。以下では、第0〜第15チャンネルに係る処
理を前半処理、第16〜第31チャンネルに係る処理を
後半処理と呼ぶ。
【0063】図10において、ステップ1001では、
処理B制御部515の内部にある前半/後半のアキュム
レータ(ACC)516を初期設定(ゼロクリア)す
る。アキュムレータ(ACC)516としては、第0〜
第15チャンネルに関する波形メモリアクセス回数を累
算するための前半アキュムレータと、第16〜第31チ
ャンネルに関する波形メモリアクセス回数を累算するた
めの後半アキュムレータとが、独立に設けられている。
いま並行して実行されている処理Aが、前半の第0〜第
15チャンネルのアドレスを作成する処理を行なってい
るのであれば前半アキュムレータを初期設定し、後半の
第16〜第31チャンネルのアドレスを作成する処理を
行なっているのであれば後半アキュムレータを初期設定
する。以下の図10の説明では、単に「アキュムレータ
ACC」というときは、前半処理では前半アキュムレー
タ、後半処理では後半アキュムレータのことを指すもの
とする。
【0064】ステップ1002は、特に何かの処理を行
なうものではないが、次のステップ1003〜1008
を行なう対象のチャンネル(以下、対象チャンネルとい
う)として最初のチャンネルに着目するということであ
る。最初のチャンネルというのは、前半処理では第0チ
ャンネル、後半処理では第16チャンネルである。
【0065】次に、ステップ1003では、対象チャン
ネルについて、そのチャンネル番号、圧縮方式、サンプ
ル数、およびアドレス最下位ビットを受け取る。チャン
ネル番号は、チャンネルカウンタ113からのカウント
値CHCから分かる。
【0066】ステップ1003で受け取る圧縮方式と
は、読み出すべき対象チャンネルの波形データの圧縮方
式であり、16ビット非圧縮、8ビット非圧縮、または
8ビット圧縮の何れかである。圧縮方式は、チャンネル
ごとに異なっていてもかまわない。チャンネルごとの圧
縮方式は、CPU204が制御レジスタ101に設定し
た情報を参照することで分かる。
【0067】図9(a)に、波形メモリ208内の16
ビット非圧縮の波形データのフォーマットを示す。90
1〜906は、それぞれ、16ビットの非圧縮の波形デ
ータの1サンプルを示す。アドレスはサンプル単位に付
けられるので、サンプル901をアドレス0の基準位置
とすると、サンプル902,903,904,…のアド
レスはそれぞれ1,2,3,…である。図9(b)に、
波形メモリ208内の8ビット非圧縮または8ビット圧
縮の波形データのフォーマットを示す。911〜922
は、それぞれ、8ビットの非圧縮または圧縮の波形デー
タの1サンプルを示す。アドレスはサンプル単位に付け
られるので、サンプル911をアドレス0の基準位置と
すると、サンプル912,913,914,…のアドレ
スはそれぞれ1,2,3,…である。波形メモリ208
の波形データのアクセスは、圧縮方式にかかわりなく、
16ビット単位で行なわれる。したがって、16ビット
非圧縮の方式では、読み出すサンプル数と波形メモリへ
のアクセス回数とは一致する。8ビット非圧縮または圧
縮の方式では、読み出すサンプル数と波形メモリへのア
クセス回数とが一致するとは限らない。
【0068】ステップ1003で受け取るサンプル数
は、対象チャンネルにおいて読み出すべきサンプルの数
である。このサンプル数は、上述の処理Aの処理番号2
の加算結果のうちアドレス小数部の9ビットよりも上位
に溢れた分(溢れ値)を、加算器504から処理B制御
部515に取り込むことにより分かる。なお、処理Aの
処理番号4の加算でキャリーが発生しなかったときは、
ループ部の先頭付近のアドレスに戻るが、この場合、サ
ンプルRAM1205(図13)中の過去のサンプルは
使用できない。そこで、処理B制御部515は、処理A
の処理番号4におけるキャリー非発生を検出したとき
は、補間用の全4サンプルを読み出すように、読み出す
べきサンプル数を強制的に4と指定するものとする。
【0069】ステップ1003で受け取るアドレス最下
位ビットは、対象チャンネルのアドレス整数部の最下位
ビットである。このアドレス最下位ビットは、上述の処
理Aの処理番号3または処理番号6の加算結果(特にそ
の最下位ビット)を、加算器504から処理B制御部5
15に取り込むことにより分かる。
【0070】次に、ステップ1004で、サンプル数が
0であるか否か判定する。サンプル数が0なら、この対
象チャンネルでは波形メモリ208から新たなサンプル
を読み出す必要が無いから、ステップ1009に進む。
サンプル数が0でないなら、ステップ1005で書き込
みポインタをインクリメントし、ステップ1006で対
象チャンネルに関するチャンネル番号とサンプル数とを
制御RAM517に書き込む。
【0071】図7は、制御RAM517の構成を示す。
制御RAM517は、チャンネル番号とそのチャンネル
において読み出すべきサンプル数を格納する領域が複数
用意されて構成される。処理B制御部515内には書き
込みポインタおよび読み出しポインタが備えられてお
り、各チャンネルにおいて読み出すべきサンプル数を制
御RAM517に書き込むときは書き込みポインタをす
すめ(上記ステップ1005)、制御RAM517から
チャンネル番号とサンプル数を読み出して当該チャンネ
ルに関する読み出しアドレスを送出するときは読み出し
ポインタを進める(後述する図11のステップ110
2)。制御RAM517は、リング状に使用するように
なっており、書き込みまたは読み出しポインタが制御R
AM517の一方の端に至った場合、その次のポインタ
の位置は制御RAM517の他方の端になる。また、読
み出しポインタの指す位置が書き込みポインタの指す位
置を追いかけるように書き込みおよび読み出しが行なわ
れるが、書き込みポインタが読み出しポインタを追い越
さない程度の領域の大きさが確保されているものとす
る。書き込みポインタおよび読み出しポインタは、アキ
ュムレータACCと同様に、それぞれ、前半処理用のも
のと後半処理用のものとが別々に設けられている。単
に、書き込みポインタおよび読み出しポインタと呼ぶと
きは、前半処理では前半処理用のもの、後半処理では後
半処理用のものを指すものとする。なお、図7のような
構成のほか、各チャンネルに1つずつアドレスを対応さ
せ、そこに必要サンプル数を書き込むようにしてもよ
い。
【0072】再び図10に戻って、ステップ1007で
は、対象チャンネルに関して必要な波形メモリアクセス
回数を計算し、ワークレジスタATに格納する。このア
クセス回数は、ステップ1003で得た圧縮方式、サン
プル数、およびアドレス最下位ビットから求める。16
ビット非圧縮方式では、「アクセス回数=サンプル数」
である。8ビット非圧縮または圧縮方式では、図9
(c)のような16ビットバウンダリの位置から8ビッ
トサンプルの読み出しを開始する場合は「アクセス回数
=サンプル数/2」となり、図9(d)のような16ビ
ットバウンダリでない8ビットバウンダリの位置から8
ビットサンプルの読み出しを開始する場合は「アクセス
回数=サンプル数/2+1」となる(ただし、サンプル
数/2は小数点以下切り捨て)。なお、図9(c)およ
び図9(d)では、0,1,2,3と記載した順に4サ
ンプルを読み出す例を記載した。図9(c)の場合か、
図9(d)の場合かは、アドレス最下位ビットにより判
別できる。アドレス最下位ビットが、0のときは図9
(c)の場合、1のときは図9(d)の場合である。
【0073】先述した図4は、必要な波形メモリアクセ
ス回数が、第0チャンネルで1、第2チャンネルで3、
第5チャンネルで1、第7チャンネルで2の場合であ
る。なお、その他のチャンネルは、発音していない、ま
たは、前述した溢れ値が0(すなわち、波形メモリから
のサンプル読み出しが不要な)のチャンネルである。
【0074】ステップ1008では、アキュムレータA
CCにアクセス回数ATを累算する。ステップ1009
では、対象チャンネルが最終のチャンネル(前半処理で
は第15チャンネルが最終、後半処理では第31チャン
ネルが最終)であるか否かを判定し、最終チャンネルで
ないときは、ステップ1010で対象チャンネルを次の
チャンネル(チャンネル数を+1)にしてステップ10
03に戻る。
【0075】ステップ1009で最終チャンネルに至っ
たときは、ステップ1011で、アキュムレータACC
のアクセス回数累算値が、実際にアクセスを実行する処
理B前半区間または後半区間における最大アクセス可能
数を超えていないか判定し、各チャンネルごとのアクセ
ス回数および補間次数を決定する。本形態例では、この
最大アクセス可能数は32である。図4で述べたように
処理Bで1アドレス送り出しを行なう区間の時間幅は時
分割チャンネルタイミングで1チャンネル分の処理を行
なう区間の時間幅の半分であり、処理B前半区間および
処理B後半区間ではそれぞれ32アクセスが可能だから
である。したがって、アキュムレータACCのアクセス
回数累算値が32を超えていないなら、制御RAM51
7に書き込んだ前半または後半の各チャンネルのサンプ
ル数はすべてアクセスできるから、そのサンプル数に応
じて各チャンネルのアクセス数および補間次数を決定す
る。この場合は、前半または後半の全16チャンネルで
4点補間が可能であるということである。一方、アキュ
ムレータACCのアクセス回数累算値が32を超えてい
たなら、制御RAM517に書き込んだ各チャンネルの
サンプル数をすべてアクセスすることはできないので、
何れかのチャンネルのアクセス回数を削減し補間次数を
落とす。アクセス回数を削減するチャンネルの決定方法
としては、例えば下記の〜のような方法がある。
【0076】チャンネル順に片端からアクセス回数を
削減する。 16ビット波形を再生しているチャンネルからアクセ
ス回数を削減する。16ビット波形なので、削減効果が
大きい。 その時点で音量レベルの小さいチャンネルからアクセ
ス回数を削減する。このようにすると楽音への影響が小
さい。各チャンネルの音量レベルは、エンベロープ値か
ら分かる。
【0077】なお、本形態例では各チャンネルで基本的
に4点補間を行なうが、アクセス回数を削減する際に
は、最低限2点補間ができるようにサンプル数を確保す
るものとする。したがって、2点補間ができなくなるほ
どのアクセス回数削減は行なわない。また、圧縮波形の
場合は、途中のサンプルを読み飛ばすと再生ができなく
なるので、アクセス回数削減の対象から外す。
【0078】図14に、本形態例におけるアクセス回数
削減の具体例(削減しない例も含む)を示す。図14
(a)〜(g)において、進み量とは、波形メモリサン
プルアドレス(詳しくはアドレスRAM511に記録さ
れた個々のサンプルを指すサンプルアドレス整数部)の
進み量であり、ステップ1003で得たサンプル数のこ
とである。下向きの矢印↓は、アドレス進み量を示すた
めの便宜的な基準位置(前回の同チャンネルの処理Bで
読み込み完了した位置)を示す。×、○、および●は、
波形データの1サンプルを示す。●は既にサンプルRA
M内に存在するサンプルを示し、○はこれから読み出す
べきサンプルを示す。
【0079】図14(a)は、アドレスの進み量が0の
場合を示す。4点補間に必要な4点分のサンプルはサン
プルRAM内に存在するので、新たな読み出しは不要で
ありアクセス回数は0である。当然、アクセス回数の削
減は行なわれない。
【0080】図14(b)は、アドレスの進み量が1の
場合を示す。必要な4点分のサンプルのうち3点は既に
サンプルRAM内に存在するから、1サンプルのみ読み
出す。そのため、圧縮形式にかかわらずアクセス回数は
1回必要である。この場合、アクセス回数の削減は行な
わない。
【0081】図14(c)は、アドレスの進み量が2の
場合を示す。必要な4点分のサンプルのうち2点は既に
サンプルRAM内に存在するから、2サンプルのみ読み
出す。16ビット非圧縮の形式のときはアクセス回数が
2回、8ビット圧縮または非圧縮の形式のときはアクセ
ス回数が1または2回必要である。この場合、アクセス
回数の削減は行なわない。
【0082】図14(d)は、アドレスの進み量が3の
場合を示す。必要な4点分のサンプルのうち1点は既に
サンプルRAM内に存在するから、3サンプルのみ読み
出す。16ビット非圧縮の形式のときはアクセス回数が
3回、8ビット圧縮または非圧縮の形式のときはアクセ
ス回数が2回必要である。この場合にアクセス回数の削
減を行なうときは(非圧縮の形式に限る)、図14
(d)の下側に記載したように、2点補間に必要な2サ
ンプルを新たに読み出すこととしてアクセス回数を削減
する。
【0083】図14(e)は、アドレスの進み量が4の
場合を示す。必要な4点分のサンプルはサンプルRAM
内に存在しないから、4サンプルをすべて読み出す。1
6ビット非圧縮の形式のときはアクセス回数が4回、8
ビット圧縮または非圧縮の形式のときはアクセス回数が
2または3回必要である。この場合にアクセス回数の削
減を行なうときは(非圧縮の形式に限る)、図14
(e)の下側に記載したように、2点補間に必要な2サ
ンプルを新たに読み出すこととしてアクセス回数を削減
する。
【0084】図14(f)は、波形データが非圧縮の形
式で、アドレスの進み量が5の場合(5以上の場合も同
じ)を示す。必要な4点分のサンプルはサンプルRAM
内に存在しないから、4サンプルをすべて読み出す。1
6ビット非圧縮の形式のときはアクセス回数が4回、8
ビット非圧縮の形式のときはアクセス回数が2または3
回必要である。この場合にアクセス回数の削減を行なう
ときは、図14(f)の下側に記載したように、2点補
間に必要な2サンプルを新たに読み出すこととしてアク
セス回数を削減する。
【0085】図14(g)は、波形データが8ビット圧
縮形式で、アドレスの進み量が5の場合を示す。必要な
4点分のサンプルはサンプルRAM内に存在しないか
ら、4点補間に必要な4サンプルをすべて読み出すが、
圧縮形式であるので途中のサンプルを読み飛ばすことが
できないため、合せて5サンプルを読み出す。アクセス
回数は3回必要である。なお、圧縮波形の場合は、進み
量を制限して図14(g)のような場合が起こらないよ
うにしてもよい。
【0086】次に、図8を参照して、アドレス発生器1
02による処理Bの動作について説明する。図8から分
かるように、処理Bでは、スロット番号1,3,5で下
記の処理番号1,2,3の処理を行なうことによりアド
レスが1つ送り出される。これにより、波形メモリ20
8が1回アクセスされる。スロット番号7,9,11で
も同じ処理が為され1アクセスが実行されるので、3ク
ロックで1アクセス分の処理が可能であり、時分割チャ
ンネルタイミングの1チャンネル当りの時間内で2アク
セスが可能である。処理Bの波形メモリのアクセス処理
は、処理Aの時分割チャンネルタイミングにしたがった
処理とは関係がなく、読み出しが必要な各チャンネルに
ついて順次行なわれる。読み出しが必要なチャンネルと
サンプル数は、上述の図10の前処理で決定されてい
る。また、図3で説明したように、あるチャンネルにつ
いて処理Bを行なうときには既に当該チャンネルに関す
る処理Aは実行済みであるから、下記の処理番号1〜3
を実行するときには既に当該チャンネルのアドレス値が
アドレスRAM511にセットされている。以下、図8
および図5,6を参照して処理Bの処理番号1〜3の処
理を説明する。
【0087】1.処理番号1では、セレクタ501はO
FSを選択出力し、セレクタ502はARAM(AD
I)を選択出力する。ARAM(ADI)は、アドレス
RAM511内の処理対象のチャンネル(アドレス送り
出しを行なうチャンネルの順番は処理B制御部515の
制御に基づいて決められるが、詳しくは図12で後述す
る)のアドレス整数部であり、上記処理Aの処理番号3
で説明したのと同様に整数部合成部512が用意する。
OFSは、処理B制御部515が生成出力するオフセッ
トであり、必要なサンプル数のサンプル(8ビットサン
プルの形式のときは必要なサンプルを含む16ビットの
データ)を順次アクセスするための加算値である。図4
における各アクセスタイミングのオフセットOFSは、
例えば、第0チャンネルでは0、第2チャンネルの1回
目が−2(8ビットサンプルの場合は−4←後で1/2
される)、2回目が−1(同−2)、3回目が0、第5
チャンネルの1回目が−1(同−2)、2回目が0等
で、結果として先に説明した図14の○に対応するサン
プルが、順次読み出されるように制御される。処理B制
御部515は、ステップ1003で各チャンネルに関す
る圧縮方式、読み出すべきサンプル数、およびアドレス
最下位ビットを取得済みであるので、順次、OFSを作
成して出力できる。加算器504は、ARAM(AD
I)+OFSを計算し出力する。加算結果UDは、2ク
ロック後に出力され、シフタ505を介して次の処理番
号2で使われる。
【0088】2.処理番号2では、上記処理番号1の加
算結果UDがシフタ505で1ビットダウンシフトされ
たデータUD↓1がセレクタ501に入力し、セレクタ
501はこのデータUD↓1を選択出力する。セレクタ
502は、波形データが16ビットサンプルの形式のと
きはセレクタ501と同じUD↓1を選択出力し、8ビ
ットサンプルの形式のときは0を出力する。加算器50
4は、これらのデータを加算し、2クロック後に加算結
果を出力する。
【0089】要するに、波形データが16ビットサンプ
ルの形式のときは加算を行なわないで処理番号1の加算
結果をスルーしたのと同じことになり、波形データが8
ビットサンプルの形式のときは処理番号1の加算結果を
1/2にして出力することになる。サンプルのアドレス
はサンプル単位で付けられているので、8ビットサンプ
ルの形式のときは、アドレスを1/2すると当該サンプ
ルが含まれる16ビットバウンダリの波形データの位置
が算出されることになる。なお、16ビットサンプルの
形式のときは、処理番号1の加算結果の最下位ビットが
捨てられるように見えるが、処理番号2でセレクタ50
1,502に入力するUD↓1は小数点以下1ビットを
含むデータであり、加算器504はこの小数点以下1ビ
ットも含めて加算を行なうので、最下位ビットが捨てら
れることにはならない。本処理番号2により、アクセス
する波形データアドレスが算出できたことになる。
【0090】3.処理番号3では、セレクタ501はア
ドレス基準値WADと選択出力し、セレクタ502は処
理番号2の加算結果UDを選択出力する。加算器504
は、これらのデータを加算し、2クロック後に加算結果
MALATを出力する。処理番号2で求めたアドレスは
ループ部の先頭位置をアドレス0の基準としたアドレス
である。一方、実際には、波形データは波形メモリ20
8内の所定のアドレスに格納されている。そこで、波形
データのアドレス基準値WAD(当該波形データのルー
プ部先頭位置の波形メモリ208上でのアドレス)を加
算して、読み出しアドレスを波形メモリ208上のアド
レスに変換するものである。
【0091】加算結果MALATは、読み出し用整数部
ラッチ508を介して波形メモリ208のアドレス端子
に供給され、これにより当該アドレスの波形データが読
み出される。
【0092】以上の処理Bの動作は、処理B制御部51
5の制御のもとで行なわれる。以下、処理B制御部51
5の動作を説明する。図11は、アドレス発生器102
が上述の処理Bのアドレス送り出しの動作を行なう際の
処理B制御部515の動作を示すフローチャートであ
る。なお、図11の動作は図10の前処理の動作と並行
して実行される。例えば、アドレス発生器102が前半
の第0〜第15チャンネルに関する処理Aを実行してい
るとき、処理B制御部515は当該第0〜第15チャン
ネルのアドレスを送り出す前処理として図10の動作を
行なうが、それと並行して、処理B制御部515は既に
前処理が終わっている第16〜第31チャンネルに関す
る図11のアドレス送り出し処理を行なう。
【0093】図11において、ステップ1101では、
図7に示す制御RAM517を指す読み出しポインタの
値と書き込みポインタの値とが一致しているか否か判定
する。この書き込みポインタの値とは、直前に実行され
た図10の処理で更新された書き込みポインタの値のこ
とを言う。ステップ1101で読み出しポインタの値と
書き込みポインタの値とが異なるときは、ステップ11
02で読み出しポインタをインクリメントし、ステップ
1103で読み出しポインタが指すチャンネル番号とサ
ンプル数を制御RAM517から読み出す。
【0094】次に、ステップ1104で、読み出したチ
ャンネル番号のチャンネルに関する圧縮方式、およびア
ドレス最下位ビットを受け取る。これらは、図10のス
テップ1003と同様に取得すればよいが、図10で求
めたものを処理B制御部515内のワークレジスタに保
持しておき使用するようにしてもよい。ステップ110
5は、特に何かの処理を行なうものではないが、次のス
テップ1106で行なうアドレス送り出し処理が1アク
セス目であることを示すものである。ステップ1106
で、1アクセス目の読み出しアドレス作成をアドレス発
生器102の各ブロックに指示する。これにより、上述
した処理Bの処理番号1〜3の動作が実行され、1アク
セス目のアドレス送り出しが行なわれる。
【0095】さらに、ステップ1107で当該チャンネ
ルのアクセス回数が完了したか否か判定する。アクセス
回数が完了していないときは、ステップ1108を経て
(ステップ1108は特に何かの処理を行なうものでは
ないが、ステップ1106で次のアクセスを行なうこと
を示す)、ステップ1106で次のアドレス送り出しを
行なう。ステップ1107で当該チャンネルのアクセス
回数が完了したなら、ステップ1101に戻る。
【0096】ステップ1101で読み出しポインタの値
と書き込みポインタの値とが一致していたなら、波形メ
モリ208に向けて送り出すアドレスはもう無いという
ことであるから、ステップ1109に進む。ステップ1
109では、アクセス余り時間があるか否か判定する。
アクセス余り時間があれば、その空きタイムスロットを
使用して、ステップ1110で波形メモリ208のリフ
レッシュやCPU204からの波形メモリ208のアク
セス処理などを実行し、ステップ1109に戻る。アク
セス余り時間が無くなったら、処理を終了する。
【0097】次に、図1のデコーダ104について詳し
く説明する。図12は、デコーダ104および補間器1
03のブロック構成を示す。デコーダ104は、セレク
タ1201、加算器1202、遅延回路1203、セレ
クタ1204、サンプルRAM1205、伸張係数発生
部1206、乗算器1207,1208、および制御部
D1209を備えている。
【0098】図13は、サンプルRAM1205の構成
を示す。サンプルRAM1205は、各チャンネルごと
の4つのサンプル格納領域からなる。4つのサンプル格
納領域はリング状に使用する。すなわち、各チャンネル
ごとにポインタを設け、サンプルを書き込むときは、そ
のポインタで指す位置に書き込み、ポインタを1つ進め
る。ポインタは、例えば図13の第iチャンネルなら、
サンプル1→2→3→4→1→2→…というように進め
る。図12のサンプルRAM1205で、「1D」およ
び「2D」と記載された端子は、それぞれ現ポインタ位
置から1つ前のサンプルおよび2つ前のサンプルを読み
出すための端子である。
【0099】図12および図13を参照して、デコーダ
104の動作について詳しく説明する。上述の処理Bに
より送り出されたアドレスにより波形メモリ208から
読み出された波形データは、セレクタ1201および遅
延回路1203に入力する。この波形データの大きさは
16ビットであり、その形式は、16ビット非圧縮、8
ビット非圧縮、または8ビット圧縮の何れかである。ま
た、8ビット圧縮または非圧縮のデータである場合は、
入力した16ビットの上位8ビットか下位8ビットの何
れか一方のみが所望のサンプルであるので、セレクタ1
201で上位8ビットまたは下位8ビットの何れか所望
のサンプルを選択する。
【0100】セレクタ1201の選択制御信号は、制御
部D1209が出力する。制御部D1209は、処理B
制御部515がアドレス送り出しと同期して出力するデ
コーダ制御データ(アドレス送り出しを行っているチャ
ンネルに係るチャンネル番号、圧縮形式、8ビットサン
プルの場合に所望のサンプルが上位8ビットか下位8ビ
ットかを示す情報など)により、入力した波形データの
上位8ビットまたは下位8ビットの何れかを選択すべき
か決定する。
【0101】セレクタ1201から出力された非圧縮ま
たは圧縮形式の8ビットサンプルは、加算器1202に
入力する。さらに、加算器1202には、サンプルRA
M1205から現ポインタ位置より1つ前および2つ前
のサンプルを読み出し乗算器1207,1208でそれ
ぞれに伸張係数発生部1206からの伸張係数を乗算し
た乗算結果が入力する。加算器1202は、セレクタ1
201からの現サンプル、および乗算器1207,12
08からの乗算結果を加算し、加算結果をセレクタ12
04に入力する。現在処理中の波形データが8ビット圧
縮波形であるときは、伸張係数発生部1206から所定
の伸張係数が出力され、圧縮されたサンプルから1サン
プルが再生され加算器1202から出力される。現在処
理中の波形データが8ビット非圧縮波形であるときは、
伸張係数発生部1206から伸張係数として0が出力さ
れ、非圧縮のサンプルが加算器1202をスルーして出
力される。
【0102】一方、波形メモリ208から読み出したサ
ンプルが16ビット非圧縮データであるときは、遅延回
路1203で所定時間遅延した後、当該サンプルをセレ
クタ1204に入力する。遅延回路1203で遅延させ
るのは、8ビットサンプルが加算器1202を介してセ
レクタ1204に入力するので、そのタイミングと合せ
るためである。
【0103】セレクタ1204は、制御部D1209か
らの選択制御信号に基づいて、16ビットサンプルのと
きは遅延回路1203からのサンプルを選択出力し、8
ビットサンプルのときは加算器1202からのサンプル
を選択出力する。セレクタ1204から出力されたサン
プルは、サンプルRAM1209の当該チャンネルのポ
インタが指す位置に書き込まれ、ポインタが1つ進めら
れる。
【0104】上記の動作を、アドレス発生器102が処
理Bでアドレスを送り出すタイミングに同期して各チャ
ンネルの各サンプルについて行なう。図3のデコード前
半チャンネルの区間303では、第0〜第15チャンネ
ルについて上記の動作を行ない、これによりサンプルR
AM1205の第0〜第15チャンネルのサンプル格納
領域にサンプルが設定される。後半の第16〜第31チ
ャンネルも同様である。基本的には4点補間であるの
で、各チャンネルについて(既に保持されていたサンプ
ルも含めて)4サンプルがサンプルRAM1205内に
用意されたことになる。ただし、上述した波形メモリの
アクセス回数削減により補間次数を4点から2点に落と
したチャンネルは、2サンプルになる。
【0105】次に、図1の補間器103について詳しく
説明する。図12において、補間器103は、乗算器1
210、補間係数発生部1211、補間用累算器121
2、および制御部I1213を備えている。
【0106】補間器103が前半処理すなわち第0〜第
15チャンネルに関する各チャンネルの補間を開始する
ときには、補間に用いるそれら各チャンネルの4サンプ
ルはすべてサンプルRAM1209内に設定されてい
る。後半の第16〜第31チャンネルも同様である。補
間器103では、時分割チャンネルタイミングにしたが
って、前半なら第0〜第15チャンネルについて、後半
なら第16〜第31チャンネルについて、順に補間処理
を行なう。制御部I1213は、制御クロックΦ、チャ
ンネルカウント値CHC、および補間次数(処理B制御
部515が各チャンネルに対応して出力する)を入力
し、時分割チャンネルタイミングにしたがった処理を行
なうように各ブロックを制御する。1つのチャンネルに
関する補間処理は以下のとおりである。
【0107】まず、制御部I1213の制御のもとで、
サンプルRAM1205から当該チャンネルの4サンプ
ルを順次読み出す。読み出したサンプルは、順次、乗算
器1210に入力する。4サンプルが入力するのに同期
して、補間係数発生部1211から各サンプルに乗算す
べき補間係数が乗算器1210に順次入力する。補間係
数発生部1211は、アドレス発生器102から出力さ
れた当該チャンネルのアドレス小数部に基づいて、各サ
ンプルに対応する補間係数を生成出力する。このアドレ
ス小数部は、図5のアドレス発生器102のアドレスR
AM511から、補間用小数部ラッチ513を介して出
力されたものである。乗算器1210は、上記各サンプ
ルとそれに対応する補間係数とを乗算し、乗算結果を補
間用累算器1212で累算する。これにより、補間済み
の楽音波形データが生成出力される。なお、上述した波
形メモリのアクセス回数削減により補間次数を4点から
2点に落としたチャンネルについては、4サンプルでな
く2サンプルを用いて2点補間を行ない補間済みの楽音
波形データを得る。
【0108】なお、上記実施の形態例では、図10のス
テップ1011でアキュムレータACCのアクセス回数
累算値が最大アクセス可能数である32を超えていない
かどうかを判定して、各チャンネルの読み出しサンプル
数、アクセス回数、および補間次数を決定しているが、
他の処理を行なう分を優先して最大アクセス可能数を決
めてもよい。例えば、あらかじめ波形メモリのリフレッ
シュやCPUによるアクセスを行なうことが分かってい
る場合は、それらの処理のためのアクセス回数はあらか
じめ確保しておき、その残りの分を最大アクセス可能数
としてステップ1011の判定を行なうようにしてもよ
い。
【0109】特に、波形メモリとしてDRAMを用いた
場合は、必ずリフレッシュが必要であるので、リフレッ
シュの分のアクセス回数は優先して確保するとよい。ま
た、CPUからの波形メモリの読み出し/書き込みは、
その緊急度に応じて対応するとよい。例えば、CPUか
らの波形メモリアクセスの緊急度が低いときは、音源チ
ャンネルで使用されなかった空きタイムスロットを用い
てアクセスを行なう。また、緊急度が高いときは、始め
にCPUからの波形メモリアクセスの分を確保し、残り
を音源チャンネルで使用する。
【0110】また、上記実施の形態例では、図4に示し
たように処理Bおよびデコードを行なう前半および後半
の区間の前側のスロットで連続した波形メモリのアクセ
スを行なっているが、前側でなくてもよい。例えば、上
述の優先して確保されたリフレッシュあるいはCPUか
らのアクセスについては、区間内の前側のスロットでそ
れらの処理を行ない、後側のスロットで各チャンネルに
ついての連続した波形メモリのアクセスを行なうように
してもよい。ただしその場合、図3のデコード前半区間
303の処理が終了して、サンプルRAMに補間に必要
な全サンプルが用意された後に、補間前半区間304の
補間処理が始まるようにする必要がある(後半処理も同
様)。そのため、補間を行なう区間をずらす必要がある
(デコード前半処理が終了した後に補間前半処理を開始
し、デコード後半処理が終了した後に補間後半処理を開
始すれば十分)。
【0111】さらに、上記実施の形態例では、1サンプ
リング周期を1/2(前半と後半)に分割し、前半処理
と後半処理とを交互に行なうようにしているが、区間の
分け方はこれに限らない。例えば、1サンプリング周期
を1/3,1/4,…に分割し、それらの区間を単位に
して処理を行なってもよい。また、等分割でなく、変則
的な区間の分割を行なってもよい(例えば、第0〜第1
4チャンネルと、第15〜第31チャンネルに分割)。
さらに、区間を分けずに、1サンプリング周期を単位と
してもよい。ただし、処理Bでアドレス送り出しを行な
って波形メモリをアクセスする前に、処理Aによるアド
レスRAMの書き換えが行なわれることがないことを、
保証する必要がある。そのためには、例えば区間を分け
ない場合は、アドレスRAMを2セット用意し、処理A
によるアドレスの書き換えと処理Bによるアドレスの送
り出しとで、2セットのアドレスRAMを交互に使用す
るなどの方法を採る必要がある。なお、1サンプリング
周期を前半と後半に分けて処理するようにすれば、1セ
ットのアドレスRAMで処理Aと処理Bとを交互に行な
うことができるので、回路構成が簡易にでき合理的とい
える。
【0112】
【発明の効果】請求項1または2に係る発明によれば、
波形メモリの読み出しに先立って、各チャンネルのアド
レスを作成してアドレス記憶手段に一旦格納しておき、
さらに各チャンネルのアドレスの進み量に基づいてアク
セス回数を算出し、そのアクセス回数ずつ波形メモリを
連続的にアクセスする。また、波形メモリから読み出し
た波形サンプルは、一旦波形サンプル記憶手段に記憶さ
れ、楽音生成手段は、波形サンプル記憶手段に記憶され
た各チャンネルの波形サンプルに基づき、各チャンネル
のサンプリング周期ごとの楽音を生成する。アドレスお
よび波形サンプルがアドレス記憶手段およびサンプル記
憶手段にバッファリングされるので、波形サンプルの読
み出しのタイミングを適宜調整することができ、波形メ
モリのスピードに合せた連続したアクセスが可能にな
る。したがって、あるチャンネルで波形サンプルを読み
出さなくても済む場合、あるいはあるチャンネルでバッ
ファリングされている波形サンプルを使用することがで
きるために少ない数の波形サンプルのみ読み出せばよい
場合などにおいて、余りのタイムスロットを、他の処理
に回すことができる。また、余りのタイムスロットを他
のチャンネルにおけるアクセスに回せることになるの
で、そのようなチャンネル間の関係から、補間次数を下
げなければならない場合が減少する。
【0113】請求項6に係る発明によれば、請求項1の
構成にさらに累算手段と判定手段を加え、所定数のチャ
ンネルについてアクセス回数を累算し、その所定数のチ
ャンネルに対応したアクセス期間にその累算回数分のア
クセスが可能かどうかを判定するようにしているので、
上述の発明の効果に加え、あらかじめ波形メモリアクセ
スを開始する前に、前記所定数のチャンネルについての
必要なアクセスが可能かどうかを知ることができ、それ
対処することができる。特に請求項8に係る発明では、
判定手段で不可能と判定された場合、前記所定数のチャ
ンネルの何れかのチャンネルについてアクセス回数を減
少させる(補間次数を減少させることになる)ようにし
ているので、結果的にはアクセス回数を減少させる場合
を最小限にすることができる。
【0114】請求項3または7に係る発明によれば、サ
ンプリング周期を複数の区間に分割し、区間単位で処理
を行なうので、アドレス記憶手段などの回路構成を簡単
にすることができる。特に、サンプリング周期を1/2
に分割し、前半処理と後半処理に分ければ、アドレス記
憶手段は1セットで済む。
【0115】請求項4に係る発明によれば、ループ部の
先頭付近に戻る場合でも適正な波形サンプルの再生が可
能である。請求項5または9に係る発明によれば、第1
アクセス手段によるアクセスの余り時間を利用して、第
2アクセス手段による他の処理(例えば、DRAM構成
の波形メモリのリフレッシュ処理やCPUによる波形メ
モリのアクセス)が可能である。
【0116】以上のように、本発明によれば、時分割チ
ャンネル動作で複数チャンネル分の楽音を同時に発生す
る波形メモリ読み出し方式の音源において、チャンネル
ごとに必要なときに必要な分だけ効率よく波形メモリを
アクセスすることができるようになる。
【図面の簡単な説明】
【図1】この発明に係る音源装置を適用した音源部のブ
ロック構成図
【図2】実施形態例の音源装置を適用した電子楽器の全
体のブロック構成図
【図3】本実施形態例の音源部内の要部のタイミングを
示す図
【図4】図3の各処理中のチャンネルの様子を示す図
【図5】アドレス発生器のブロック構成図
【図6】図5のアドレスRAMのメモリマップを示す図
【図7】制御RAMの構成図
【図8】アドレス発生器におけるタイミングチャート図
【図9】波形データの圧縮方式を示す図
【図10】処理A中の処理B制御部の動作を示すフロー
チャート図
【図11】処理B中の処理B制御部の動作を示すフロー
チャート図
【図12】デコーダの構成図
【図13】サンプルRAMの構成図
【図14】本実施形態例におけるアクセス回数削減の具
体例を示す図
【符号の説明】
101…制御レジスタ、102…アドレス発生器、10
3…補間器、104…デコーダ、105…音量変化制御
部、106…チャンネル(ch)累算器、107…効果
回路、108…リフレッシュカウンタ、109…CPU
アクセス制御部、110,111…セレクタ、112…
システムクロック発生部、113…チャンネル(ch)
カウンタ、204…中央処理装置(CPU)、207…
音源部、208…波形メモリ、210…ディジタルアナ
ログ変換器(DAC)、211…サウンドシステム(S
S)、212…外部記憶装置、213…バス、501,
502,503…セレクタ、504…加算器、505…
シフタ、506…ビブラート変調器、507…オクター
ブ(OCT)シフタ、508…読み出し用整数部ラッ
チ、509…整数部ラッチ(ILAT)、510…小数
部ラッチ(FLAT)、511…アドレスRAM、51
2…整数部合成部、513…補間用小数部ラッチ、51
4…制御部A、515…処理B制御部、517…制御R
AM、516…アキュムレータ(ACC)。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】所定サンプリング周期で複数チャンネル時
    分割で動作することにより、該複数チャンネルの楽音を
    生成する波形メモリ音源装置において、 波形サンプルを記憶した波形メモリであって、前記所定
    サンプリング周期内に所定回数のアクセスが可能なもの
    と、 各チャンネルのアドレスを記憶するためのアドレス記憶
    手段と、 各チャンネルの波形サンプルを記憶するための波形サン
    プル記憶手段と、 前記波形メモリの読み出しに先立って、各チャンネルの
    アドレスを作成し、前記アドレス記憶手段に記憶させる
    アドレス作成手段と、 各チャンネルのアドレスの進み量に基づいて、各チャン
    ネルについての前記波形メモリのアクセス回数を算出す
    るアクセス回数算出手段と、 前記アドレス記憶手段に記憶された各チャンネルのアド
    レスに基づき、前記アクセス回数算出手段で算出された
    各チャンネルのアクセス回数ずつ、前記波形メモリを連
    続的にアクセスし、読み出した各チャンネルの波形サン
    プルを前記波形サンプル記憶手段に記憶する第1アクセ
    ス手段と、 前記波形サンプル記憶手段に記憶された各チャンネルの
    波形サンプルに基づき、各チャンネルのサンプリング周
    期ごとの楽音を生成する楽音生成手段とを備えたことを
    特徴とする波形メモリ音源装置。
  2. 【請求項2】所定サンプリング周期で複数チャンネル時
    分割で動作することにより、該複数チャンネルの楽音を
    生成する波形メモリ音源装置において、 波形サンプルを記憶した波形メモリであって、前記所定
    サンプリング周期内に所定回数のアクセスが可能なもの
    と、 各チャンネルのアドレスを記憶するためのアドレス記憶
    手段と、 各チャンネルごとにn個(nは2以上の整数)の波形サ
    ンプルを記憶するための波形サンプル記憶手段と、 前記波形メモリの読み出しに先立って、各チャンネルの
    アドレスを作成し、前記アドレス記憶手段に記憶させる
    アドレス作成手段と、 各チャンネルのアドレスの進み量に基づいて、各チャン
    ネルについての前記波形メモリへの必要なアクセス回数
    を算出するアクセス回数算出手段と、 前記アドレス記憶手段に記憶された各チャンネルのアド
    レスに基づき、前記アクセス回数算出手段で算出された
    各チャンネルのアクセス回数ずつ、前記波形メモリを連
    続的にアクセスし、前記波形サンプル記憶手段に既に記
    憶されている各チャンネルのn個の波形サンプルのうち
    アドレスが小さい波形サンプルから順に、前記連続的な
    アクセスにより読み出した各チャンネルの波形サンプル
    に置き換える第1アクセス手段と、 前記波形サンプル記憶手段に記憶された各チャンネルの
    n個の波形サンプルを用いて補間処理を行なうことによ
    り、各チャンネルのサンプリング周期ごとの楽音を生成
    する楽音生成手段とを備えたことを特徴とする波形メモ
    リ音源装置。
  3. 【請求項3】前記サンプリング周期をm個(mは2以上
    の整数)の区間に分割し、前記第1アクセス手段は、該
    分割した各区間ごとに、該区間において処理すべき複数
    チャンネルについて前記波形メモリの連続的なアクセス
    を行なう請求項1または2に記載の波形メモリ音源装
    置。
  4. 【請求項4】前記波形メモリの波形データは、アタック
    部とループ部とから構成され、 前記アドレス作成手段は、作成したアドレスが当該チャ
    ンネルで読み出すべき波形データのアタック部からルー
    プ部に入ったときは、その波形データのループ部の周期
    ごとに、進行するアドレスを逆方向に戻してループ部内
    の同じアドレスを繰り返し作成し、 前記アクセス回数算出手段は、前記アドレスの戻りが実
    行された場合、当該チャンネルに関しては、アドレスの
    進み量にかかわらず所定回数のアクセス回数を指定する
    請求項1または2に記載の波形メモリ音源装置。
  5. 【請求項5】前記波形メモリの読み出しまたは書き込み
    の少なくとも一方を行なう第2アクセス手段をさらに備
    え、該第2アクセス手段は、前記第1アクセス手段によ
    る前記波形メモリのアクセス後の余り時間を利用して、
    前記波形メモリのアクセスを行なう請求項1または2に
    記載の波形メモリ音源装置。
  6. 【請求項6】所定サンプリング周期で複数チャンネル時
    分割で動作することにより、該複数チャンネルの楽音を
    生成する波形メモリ音源装置において、 波形サンプルを記憶した波形メモリであって、前記所定
    サンプリング周期内に所定回数のアクセスが可能なもの
    と、 各チャンネルのアドレスを記憶するためのアドレス記憶
    手段と、 各チャンネルの波形サンプルを記憶するための波形サン
    プル記憶手段と、 前記波形メモリの読み出しに先立って、各チャンネルの
    アドレスを作成し、前記アドレス記憶手段に記憶させる
    アドレス作成手段と、 各チャンネルのアドレスの進み量に基づいて、各チャン
    ネルについての前記波形メモリのアクセス回数を算出す
    るアクセス回数算出手段と、 所定数のチャンネルについて、前記アクセス回数算出手
    段で算出したアクセス回数を累算し、累算回数を出力す
    る累算手段と、 前記所定数のチャンネルに対応したアクセス期間内に、
    前記累算回数分のアクセスが可能かどうかを判定する判
    定手段と、 前記判定手段が可能と判定した場合、前記アドレス記憶
    手段に記憶された各チャンネルのアドレスに基づき、前
    記アクセス回数算出手段で算出した各チャンネルのアク
    セス回数ずつ、前記波形メモリを連続的にアクセスし、
    読み出した各チャンネルの波形サンプルを前記波形サン
    プル記憶手段に記憶する第1アクセス手段と、 前記波形サンプル記憶手段に記憶された各チャンネルの
    波形サンプルに基づき、各チャンネルのサンプリング周
    期ごとの楽音を生成する楽音生成手段とを備えたことを
    特徴とする波形メモリ音源装置。
  7. 【請求項7】前記サンプリング周期をm個(mは2以上
    の整数)の区間に分割し、 前記累算手段は、該分割した各区間ごとに、該区間にお
    いて処理すべき複数チャンネルについてアクセス回数の
    累算を行ない、 前記判定手段は、該分割した各区間ごとに、該区間を前
    記アクセス期間として前記判定を行ない、 前記第1アクセス手段は、該分割した各区間ごとに、該
    区間において処理すべき複数チャンネルについて前記波
    形メモリの連続的なアクセスを行なう請求項6に記載の
    波形メモリ音源装置。
  8. 【請求項8】前記判定手段は、前記判定において不可能
    と判定した場合、前記所定数のチャンネルの何れかのチ
    ャンネルについてアクセス回数を減少させる請求項6に
    記載の波形メモリ音源装置。
  9. 【請求項9】前記波形メモリの読み出しまたは書き込み
    の少なくとも一方を行なう第2アクセス手段をさらに備
    え、前記判定手段により可能と判定された場合、該第2
    アクセス手段は、前記アクセス期間内の全アクセス回数
    のうち、前記第1アクセス手段によるアクセスで使用さ
    れなかった分を利用して、前記波形メモリのアクセスを
    行なう請求項6に記載の波形メモリ音源装置。
JP7322224A 1995-11-16 1995-11-16 波形メモリ音源装置 Expired - Lifetime JP2882464B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7322224A JP2882464B2 (ja) 1995-11-16 1995-11-16 波形メモリ音源装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7322224A JP2882464B2 (ja) 1995-11-16 1995-11-16 波形メモリ音源装置

Publications (2)

Publication Number Publication Date
JPH09146555A true JPH09146555A (ja) 1997-06-06
JP2882464B2 JP2882464B2 (ja) 1999-04-12

Family

ID=18141330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7322224A Expired - Lifetime JP2882464B2 (ja) 1995-11-16 1995-11-16 波形メモリ音源装置

Country Status (1)

Country Link
JP (1) JP2882464B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9040800B2 (en) 2011-01-20 2015-05-26 Yamaha Corporation Musical tone signal generating apparatus
EP2911147A1 (en) 2014-02-21 2015-08-26 Yamaha Corporation Multifunctional audio signal generation apparatus

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9040800B2 (en) 2011-01-20 2015-05-26 Yamaha Corporation Musical tone signal generating apparatus
EP2911147A1 (en) 2014-02-21 2015-08-26 Yamaha Corporation Multifunctional audio signal generation apparatus
US9792916B2 (en) 2014-02-21 2017-10-17 Yamaha Corporation Multifunctional audio signal generation apparatus
EP3261086A1 (en) 2014-02-21 2017-12-27 Yamaha Corporation Multifunctional audio signal generation apparatus
US10388290B2 (en) 2014-02-21 2019-08-20 Yamaha Corporation Multifunctional audio signal generation apparatus

Also Published As

Publication number Publication date
JP2882464B2 (ja) 1999-04-12

Similar Documents

Publication Publication Date Title
US5831193A (en) Method and device for forming a tone waveform by combined use of different waveform sample forming resolutions
US6326537B1 (en) Method and apparatus for generating musical tone waveforms by user input of sample waveform frequency
JP5789993B2 (ja) 楽音信号発生装置
JP2882464B2 (ja) 波形メモリ音源装置
JPH08160961A (ja) 音源装置
US6085309A (en) Signal processing apparatus
JP2933205B2 (ja) 波形メモリ音源装置
US6207885B1 (en) System and method for rendition control
JPH0310959B2 (ja)
JP3137043B2 (ja) 波形メモリ音源装置および楽音発生装置
JP3016470B2 (ja) 音源装置
JP3094759B2 (ja) 楽音信号分配処理装置
JPH07325581A (ja) 楽音発生装置
JP3104873B2 (ja) 音源装置
JP3148803B2 (ja) 音源装置
US5817964A (en) Electronic musical instrument and method for storing a plurality of waveform sampling data at a single address
JPH0125079B2 (ja)
JP2910632B2 (ja) 波形メモリ音源装置
JP2003280650A (ja) 変調波形発生装置
JP3651675B2 (ja) 電子楽器
JPH02179698A (ja) 処理装置
JP3095323B2 (ja) 電子楽器
JP2970372B2 (ja) 音源パラメータ供給装置
JP2833485B2 (ja) 楽音発生装置
JP2956552B2 (ja) 楽音発生方法および装置

Legal Events

Date Code Title Description
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: 20080205

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090205

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090205

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100205

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20110205

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20120205

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20130205

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20140205

Year of fee payment: 15

EXPY Cancellation because of completion of term