JPH1097258A - 波形メモリ音源装置および楽音発生装置 - Google Patents

波形メモリ音源装置および楽音発生装置

Info

Publication number
JPH1097258A
JPH1097258A JP9220048A JP22004897A JPH1097258A JP H1097258 A JPH1097258 A JP H1097258A JP 9220048 A JP9220048 A JP 9220048A JP 22004897 A JP22004897 A JP 22004897A JP H1097258 A JPH1097258 A JP H1097258A
Authority
JP
Japan
Prior art keywords
waveform
access
channel
address
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
JP9220048A
Other languages
English (en)
Other versions
JP3137043B2 (ja
Inventor
Masahiro Shimizu
正宏 清水
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 JP09220048A priority Critical patent/JP3137043B2/ja
Publication of JPH1097258A publication Critical patent/JPH1097258A/ja
Application granted granted Critical
Publication of JP3137043B2 publication Critical patent/JP3137043B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】時分割チャンネル動作で複数チャンネル分の楽
音を同時に発生する波形メモリ読み出し方式の音源にお
いて、発音中であってもCPUなどから波形メモリを高
速にアクセスすることができるようにすることを目的と
する。 【解決手段】所定サンプリング周期で複数チャンネル時
分割で動作することにより該複数チャンネルの楽音を生
成する波形メモリ音源装置において、発音中に、それら
の発音のための波形メモリアクセスで使用されない余り
時間を用いて波形メモリをアクセスするとともに、アク
セス状況検出手段により波形メモリのアクセス状況を検
出しそれに応じて上記余り時間を用いた波形メモリのア
クセスを行なうようにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、ディジタル楽音
波形データを生成出力する音源装置および楽音発生装置
に関し、詳しくは、時分割複数チャンネルで波形メモリ
を読み出すタイプの音源装置において発音中であっても
必要に応じて高速に波形メモリをアクセスできるように
した波形メモリ音源装置および楽音発生装置に関する。
【0002】
【従来の技術】従来より、時分割チャンネル動作で複数
チャンネル分の楽音を同時に発生する波形メモリ音源が
知られている。このような音源では、1サンプリング周
期を均等に分割した各チャンネルのタイムスロットにお
いてそれぞれのチャンネルの楽音生成動作を行なってい
る。波形メモリのアクセスについても同様に、時分割チ
ャンネル動作であり、各チャンネルごとに、そのチャン
ネルに対応するタイムスロットで一定の決められた回数
のアクセスを行なうようになっている。
【0003】さらに、波形メモリ読み出し方式の音源で
は、補間回路を備え、各チャンネルについて連続する何
点かのサンプル(波形データ)を用いて補間演算して1
点分の楽音波形データを得るものがある。また、補間回
路にサンプルバッファを有し、少ないアクセス回数で、
高次の補間演算を可能にした波形メモリ音源がある。こ
れは、波形メモリから読み出した波形データをサンプル
バッファに記憶しておき、波形メモリを読み出していく
際に、アドレスの進みが少ない場合には、サンプルバッ
ファに記憶されている波形データと新たに読み出した波
形データとを用いて補間を行なうものである。
【0004】
【発明が解決しようとする課題】一方、このような音源
装置で、発音中にCPU(中央処理装置)やエフェクト
処理用DSP(ディジタルシグナルプロセッサ)や外部
回路などから波形メモリをリード/ライトするために
は、時分割チャンネル動作のタイムスロットのうち幾つ
かの固定のタイムスロットをCPUなどからのアクセス
用に割り当て、そのタイムスロットで波形メモリをリー
ド/ライトするしかなかった。したがって、そのアクセ
ス速度は、上記固定のタイムスロットをどれだけ設定し
てあるかに依存し、それ以上高速にアクセスすることは
できなかった。近年、音源装置の機能に対する要求は高
度化し、発音中においてもCPUなどから高速に波形メ
モリをアクセスしたいという要求がある。
【0005】この発明は、時分割チャンネル動作で複数
チャンネル分の楽音を同時に発生する波形メモリ読み出
し方式の音源において、発音中であってもCPUなどか
ら波形メモリを高速にアクセスすることができるように
することを目的とする。
【0006】
【課題を解決するための手段】この目的を達成するた
め、請求項1に係る発明は、所定サンプリング周期で複
数チャンネル時分割で動作することにより、該複数チャ
ンネルの楽音を生成する波形メモリ音源装置において、
波形サンプルを記憶する波形メモリであって、前記所定
サンプリング周期内に所定回数のアクセスが可能なもの
と、各チャンネルのアドレスを記憶するためのアドレス
記憶手段と、各チャンネルの所定数の波形サンプルを記
憶するための波形サンプル記憶手段と、前記波形メモリ
の読み出しに先立って、各チャンネルのアドレスを作成
し、前記アドレス記憶手段に記憶させるアドレス作成手
段と、各チャンネルのアドレスの進み量に基づいて、各
チャンネルについての前記波形メモリのアクセス回数を
算出するアクセス回数算出手段と、前記アドレス記憶手
段に記憶された各チャンネルのアドレスに基づき、前記
アクセス回数算出手段で算出された各チャンネルのアク
セス回数ずつ、前記波形メモリをアクセスし、読み出し
た各チャンネルの波形サンプルで前記波形サンプル記憶
手段に記憶された所定数の波形サンプルを更新する第1
アクセス手段と、前記波形サンプル記憶手段に記憶され
た各チャンネルの所定数の波形サンプルに基づき、各チ
ャンネルのサンプリング周期ごとの楽音を生成する楽音
生成手段と、前記第1アクセス手段による前記波形メモ
リのアクセス状況を検出するアクセス状況検出手段と、
前記波形メモリの読み出しまたは書き込みの少なくとも
一方を行なう第2アクセス手段であって、前記アクセス
状況検出手段により検出したアクセス状況に応じて、前
記第1アクセス手段による前記波形メモリのアクセスに
使用されない余り時間を利用して前記波形メモリのアク
セスを行なうものとを備えたことを特徴とする。
【0007】請求項2に係る発明は、所定サンプリング
周期で複数チャンネル時分割で動作することにより、該
複数チャンネルの楽音を生成する波形メモリ音源装置に
おいて、波形サンプルを記憶する波形メモリであって、
前記所定サンプリング周期内に所定回数のアクセスが可
能なものと、各チャンネルのアドレスを記憶するための
アドレス記憶手段と、各チャンネルの所定数の波形サン
プルを記憶するための波形サンプル記憶手段と、前記波
形メモリの読み出しに先立って、各チャンネルのアドレ
スを作成し、前記アドレス記憶手段に記憶させるアドレ
ス作成手段と、各チャンネルのアドレスの進み量に基づ
いて、各チャンネルについての前記波形メモリのアクセ
ス回数を算出するアクセス回数算出手段と、所定数のチ
ャンネルについて、前記アクセス回数算出手段で算出し
たアクセス回数を累算し、累算回数を出力する累算手段
と、制限回数を発生する制限回数発生手段と、前記所定
数のチャンネルに対応したアクセス期間内に、前記制限
回数内で前記累算回数分のアクセスが可能かどうかを判
定する判定手段と、(i)前記判定手段が可能と判定した
場合、前記アドレス記憶手段に記憶された各チャンネル
のアドレスに基づき、前記アクセス回数算出手段で算出
された各チャンネルのアクセス回数ずつ、前記波形メモ
リをアクセスし、読み出した各チャンネルの波形サンプ
ルで前記波形サンプル記憶手段に記憶された所定数の波
形サンプルを更新し、(ii)前記判定手段が不可能と判定
した場合、一部のチャンネルについては前記アクセス回
数算出手段で算出された各チャンネルのアクセス回数よ
りも少ない回数のアクセスを行なうとともに、残りのチ
ャンネルについては算出されたアクセス回数でアクセス
を行ない、読み出した各チャンネルの波形サンプルで前
記波形サンプル記憶手段に記憶された所定数の波形サン
プルを更新する第1アクセス手段と、前記波形サンプル
記憶手段に記憶された各チャンネルの所定数の波形サン
プルに基づき、各チャンネルのサンプリング周期ごとの
楽音を生成する楽音生成手段と、前記第1アクセス手段
による前記波形メモリのアクセス状況を検出するアクセ
ス状況検出手段と、前記波形メモリの読み出しまたは書
き込みの少なくとも一方を行なう第2アクセス手段であ
って、前記アクセス状況検出手段により検出したアクセ
ス状況に応じて、前記第1アクセス手段による前記波形
メモリのアクセスに使用されない余り時間を利用して前
記波形メモリのアクセスを行なうものとを備えたことを
特徴とする。
【0008】請求項3に係る発明は、前記第2アクセス
手段と前記波形メモリとの間にバッファを設け、前記第
2アクセス手段は、該バッファを介して前記波形メモリ
の読み出しまたは書き込みを行なうようにしたものであ
る。
【0009】請求項1〜3において、前記第2アクセス
手段による前記波形メモリのアクセスは、1サンプリン
グ周期で任意の回数確保できるようにしてもよい。また
請求項1〜3において、前記第2アクセス手段による前
記波形メモリのアクセスの系列は複数あるようにしても
よい。
【0010】請求項4に係る発明は、所定サンプリング
周期で複数チャンネル時分割で動作することにより、該
複数チャンネルの楽音を生成する波形メモリ音源装置に
おいて、波形サンプルを記憶する波形メモリであって、
前記所定サンプリング周期内に所定回数のアクセスが可
能なものと、各チャンネルのアドレスを発生するアドレ
ス発生手段と、前記アドレス発生手段の発生する各チャ
ンネルのアドレスに基づき、前記波形メモリをアクセス
し、読み出した波形サンプルに基づき各チャンネルのサ
ンプリング周期ごとの楽音を生成する楽音生成手段と、
前記楽音生成手段による前記波形メモリのアクセスとは
別に、前記波形メモリのアクセスを行なうことを指示す
る指示手段と、前記波形メモリから読み出された複数の
波形サンプルを一時記憶するためのバッファと、前記指
示手段の指示に応じ、前記所定回数のアクセスのうち、
前記楽音生成手段によるアクセスのされていない余り時
間を検出し、検出された余り時間を利用して前記波形メ
モリから前記バッファに波形サンプルを読み出す波形メ
モリ読み出し手段と、前記バッファ上に読み出された波
形サンプルが存在するか否かを検出するアクセス状況検
出手段と、前記指示手段が前記波形メモリの読み出しを
指示している場合に、前記アクセス状況検出手段により
前記バッファ上に読み出された波形サンプルが存在する
ことを検出したとき、それらの波形サンプルを前記バッ
ファから読み出すバッファ読み出し手段とを備えたこと
を特徴とする。
【0011】請求項5に係る発明は、所定サンプリング
周期で複数チャンネル時分割で動作することにより、該
複数チャンネルの楽音を生成する波形メモリ音源装置に
おいて、波形サンプルを記憶する波形メモリであって、
前記所定サンプリング周期内に所定回数のアクセスが可
能なものと、各チャンネルのアドレスを発生するアドレ
ス発生手段と、前記アドレス発生手段の発生する各チャ
ンネルのアドレスに基づき、前記波形メモリをアクセス
し、読み出した波形サンプルに基づき各チャンネルのサ
ンプリング周期ごとの楽音を生成する楽音生成手段と、
前記楽音生成手段による前記波形メモリのアクセスとは
別に、前記波形メモリのアクセスを行なうことを指示す
る指示手段と、前記波形メモリに書き込むべき複数の波
形サンプルを一時記憶するためのバッファと、前記指示
手段の指示に応じ、前記所定回数のアクセスのうち、前
記楽音生成手段によるアクセスのされていない余り時間
を検出し、検出された余り時間を利用して前記バッファ
から前記波形メモリに波形サンプルを書き込む波形メモ
リ書き込み手段と、前記バッファが、前記波形メモリに
書き込むべき複数の波形サンプルで満たされているか否
かを検出するアクセス状況検出手段と、前記指示手段
が、前記波形メモリへの書き込みを指示している場合
に、前記アクセス状況検出手段により前記バッファが波
形サンプルで満たされていないことを検出したとき、前
記波形メモリに書き込むべき波形サンプルを前記バッフ
ァに書き込むバッファ書き込み手段とを備えたことを特
徴とする。
【0012】請求項6に係る楽音発生装置は、演奏入力
を受け付ける演奏入力受け付け手段と、制御プログラム
と生成プログラムを記憶したプログラムメモリと、該プ
ログラムメモリに記憶されている制御プログラムと生成
プログラムとを並列的に実行する処理手段と、波形デー
タを記憶する波形メモリと、生成レートを指定する指定
手段と、所定のサンプリング周期ごとに、前記指定手段
により指定された生成レートに応じた速度で進行し所定
のループ領域を繰り返し指定する読み出しアドレスを発
生し、該アドレスの整数部に応じて前記波形メモリ中の
波形データを読み出し、該アドレスの小数部に応じて補
間を行なうことにより、補間サンプルを生成して楽音デ
ータとして出力する波形メモリ読み出し方式の音源手段
であって、前記サンプリング周期中に前記波形メモリを
アクセスしていない空き時間が生じるものと、前記音源
手段から出力される楽音データに信号処理を施し、効果
を付与した楽音データを出力する信号処理手段とを備
え、前記処理手段で前記制御プログラムを実行すること
により、前記演奏入力受け付け手段により受け付けた演
奏入力に応じた楽音を生成するための、複数チャンネル
分の楽音制御データを生成し、前記処理手段で前記生成
プログラムを実行することにより、所定時間ごとに、前
記楽音制御データに基づいて、複数チャンネル分の複数
楽音の混合波形データを前記生成レートに応じたサンプ
ル数分生成し、前記空き時間を利用して前記波形メモリ
に順次書き込み、これにより前記音源手段によって該書
き込んだ混合波形データに基づく楽音データを出力させ
ることを特徴とする。
【0013】請求項7に係る発明は、請求項6におい
て、前記音源手段は、所定の第1のサンプリング周期で
動作し、前記処理手段で前記生成プログラムを実行する
ことにより生成する所定サンプル数分の混合波形データ
は、所定の第2のサンプリング周期で読み出すことを前
提にしているものであるとき、前記生成レートを、前記
第1のサンプリング周期の値と前記第2のサンプリング
周期の値との比に応じた値とすることを特徴とする。
【0014】請求項8に係る楽音発生装置は、演奏入力
を受け付ける演奏入力受け付け手段と、制御プログラム
と生成プログラムを記憶したプログラムメモリと、該プ
ログラムメモリに記憶されている制御プログラムと生成
プログラムとを並列的に実行する処理手段と、波形デー
タを記憶する波形メモリと、所定のサンプリング周期ご
とに、時分割で、与えられた楽音制御データに基づいて
複数チャンネル分の読み出しアドレスを発生し、該読み
出しアドレスに応じて前記波形メモリ中の波形データを
読み出し、読み出した波形データに基づき複数チャンネ
ル分の楽音データを出力する波形メモリ読み出し方式の
音源手段であって、前記サンプリング周期中に前記波形
メモリをアクセスしていない空き時間が生じるものと、
前記音源手段から出力される楽音データに信号処理を施
し、効果を付与した楽音データを出力する信号処理手段
とを備え、前記処理手段で前記制御プログラムを実行す
ることにより、前記演奏入力受け付け手段により受け付
けた演奏入力に応じて、複数チャンネル分の第1楽音制
御データおよび第2楽音制御データを生成し、前記第1
楽音制御データは前記音源手段に与えて、前記音源手段
で前記第1楽音制御データに基づく第1楽音データを生
成出力させ、前記処理手段で前記生成プログラムを実行
することにより、所定時間ごとに、前記第2楽音制御デ
ータに基づいて、複数チャンネル分の複数楽音の混合波
形データを所定サンプル数分生成し、前記空き時間を利
用して前記波形メモリに順次書き込むとともに、前記音
源手段の少なくとも1つのチャンネルが、前記処理手段
で前記生成プログラムを実行することにより前記波形メ
モリに書き込んだ波形データを定常的に読み出して、第
2楽音制御データに基づく第2楽音データを生成出力す
るように構成されていることを特徴とする。
【0015】
【発明の実施の形態】以下、図面を用いてこの発明の実
施の形態を説明する。
【0016】図1は、この発明に係る音源装置を適用し
た電子楽器の全体のブロック構成を示す。図2は、図1
の音源部の詳細なブロック構成を示す。なお、以下で説
明する各図面において、同一の番号は同一のものを示す
ものとする。
【0017】図1を参照して、この電子楽器の全体構成
を説明する。この電子楽器は、鍵盤101、表示部10
2、スイッチ群(SW)103、中央処理装置(CP
U)104、リードオンリメモリ(ROM)105、ラ
ンダムアクセスメモリ(RAM)106、外部記憶装置
107、音源部108、波形メモリ109、外部回路1
10、遅延メモリ111、ディジタルアナログ変換器
(DAC)112、サウンドシステム(SS)113、
およびバスライン114を備えている。鍵盤101、表
示部102、スイッチ群103、CPU104、ROM
105、RAM106、外部記憶装置107、および音
源部108は、バスライン114により相互に接続され
ている。
【0018】鍵盤101は、ユーザが演奏操作するため
の複数の鍵を備えた鍵盤である。表示部102は、電子
楽器のパネル上に設けられており、各種の情報を表示す
る。スイッチ群103は、パネル上に設けられており、
ユーザはこれを操作することにより電子楽器に対して各
種の指示を与えることができる。CPU104は、この
電子楽器全体の動作を制御する。特に、通常の演奏時に
は、鍵盤101の操作を検出し、その操作に応じて音源
部108に発音の指示を出す。ROM105は、CPU
が実行するプログラム(音源部108を制御するための
音源コントロールプログラムなど)や各種の定数データ
などを格納する。RAM106は、ワークレジスタなど
に用いる。外部記憶装置107には、後述するDRAM
構成の波形メモリ109にロードする波形データなどが
格納されている。
【0019】音源部108は、CPU104の指示に応
じて、波形メモリ109から波形データ(波形サンプ
ル)を読み出し、補間、エンベロープ付与(音量変化制
御)、チャンネル累算(ミキシング)、および効果(エ
フェクト)付与などの加工を施して、楽音波形データと
して出力する。音源部108から出力された楽音波形デ
ータは、DAC112によりアナログ信号に変換され、
サウンドシステム113により放音される。
【0020】波形メモリ109は、DRAM(ダイナミ
ックRAM)により構成されている。波形メモリ109
には、所定のレートでサンプリングされた波形サンプル
データが格納されている。1つの波形サンプルは16ビ
ット非圧縮形式であり、アドレスは波形サンプル単位に
付けられている。すなわち、1アクセスで1つの波形サ
ンプルが読み出せる。波形サンプルは、楽音の発音に先
立って外部記憶装置107から読み出して波形メモリ1
09に格納してもよいが、特にこの実施の形態の音源で
は、複数チャンネル分の楽音発生の動作を行なう際に使
用されなかった空きタイムスロットを別の用途に用いる
ことができるようになっているので、楽音発生の動作中
にその空きタイムスロットを用いて波形データを外部記
憶装置107から読み出して波形メモリ109に格納し
てもよい。
【0021】外部回路110については、後に詳しく説
明する。遅延メモリ111は、音源部108内にある信
号処理回路(DSP)で用いる遅延用のメモリである。
楽音波形に効果付与などの処理を施す際に、例えばある
タイミングであるデータを遅延メモリ111に書き込
み、所定のクロックの後に読み出して演算に用いるとい
うようにして、遅延したデータを得るのに遅延メモリ1
11を用いる。
【0022】図2を参照して、音源部108について詳
しく説明する。図2において、音源部108は、制御レ
ジスタ201、読み書き回路202、音量変化制御回路
203、ミキサ204、信号処理回路205、およびイ
ンターフェース206を備えている。この音源部108
は時分割32チャンネルで動作する。音源部108内の
各部には、時分割動作を行なうための基準信号となる制
御クロック信号や0〜31を繰り返しカウントするチャ
ンネルカウント値などの制御信号が供給されている。
【0023】図2において、制御レジスタ201は、C
PU104から送出された各種の指定情報(音源部10
8に対する命令やパラメータ情報)を格納するための制
御レジスタである。制御レジスタ201内にはXアクセ
ス処理を制御するXアクセス回路304が設けられてい
るが、これについては後に詳述する。CPU104は、
制御レジスタ201に所定の指定情報をセットして発音
の開始指示を出す。セットする指定情報としては、割り
当てチャンネル、波形メモリ読み出しピッチ(周波数ナ
ンバ)、波形メモリ読み出し区間、エンベロープパラメ
ータ、ミキサ204に対する設定情報、およびエフェク
ト用係数などがある。
【0024】あるチャンネルにおける発音開始指示を受
けると、音源部108は楽音波形の発生の動作を開始す
る。まず、読み書き回路202は、波形メモリ109の
読み出しアドレスを順次発生する。読み出しアドレス
は、指定された読み出し区間の先頭から、指定された読
み出しピッチを順次累算した値である。特に、この音源
部108では、読み書き回路202中に波形サンプルを
バッファリングする波形バッファ(後述する図3の32
7)を備え、波形メモリ109からはチャンネルごとに
必要な数の波形サンプル(波形データ)のみを読み出す
ようになっており、各チャンネルにおける波形メモリア
クセス回数は可変できるようになっている。そこで、読
み書き回路202は、各チャンネルにおいて必要なアク
セス回数に応じた波形サンプルの読み出しアドレスを、
時分割チャンネルタイミングとは異なるタイミングで、
順次連続して出力するようになっている。読み書き回路
202で発生した読み出しアドレスは、波形メモリ10
9に入力し、これにより時分割チャンネルタイミングと
は異なるタイミングで波形サンプルが波形メモリ109
から読み出される。読み書き回路202は、この波形サ
ンプルを受け取り、内部の波形バッファに記憶し、補間
処理を行なって楽音波形データとして出力する。
【0025】読み書き回路202において、上述したよ
うに波形サンプルをバッファリングする波形バッファを
備え、波形メモリ109からはチャンネルごとに必要な
数の波形サンプルのみを読み出すようになっていること
により、空きタイムスロットが得られる。読み書き回路
202は、この空きタイムスロットにおいて、後述する
Xアクセス処理、すなわちCPU104からの波形メモ
リ109へのアクセス、またはミキサ204からXアク
セス回路304経由で戻ってくる楽音波形データの波形
メモリ109への書き込みなどができるように動作す
る。
【0026】音量変化制御回路203は、読み書き回路
202から時分割で出力される各チャンネルの楽音波形
データにエンベロープを付与して出力する。どのような
エンベロープを付与するかは、制御レジスタ201を介
してCPU104から与えられたエンベロープパラメー
タに基づいて決定される。図2の音量変化制御回路20
3の出力ライン211に「32」と付してあるのは、音
量変化制御回路203の出力が時分割32チャンネル分
あることを示している。他の各部の入出力ラインに付し
てある数値も、同様にチャンネル数を示すものとする。
【0027】ミキサ204には、音量変化制御回路20
3から出力される32チャンネル分の楽音波形データ、
後述する信号処理回路205から出力される8チャンネ
ル分の楽音波形データ、および後述する外部回路110
から(インターフェース206を介して)出力される8
チャンネル分の楽音波形データが、入力ライン211,
212,213を介して入力する。ミキサ204は、こ
れらの各入力ラインから入力した各チャンネルの楽音波
形データにそれぞれ適宜係数(係数値はCPU104が
制御レジスタ201を介して与える)を乗算してミキシ
ングする。ミキサ204の出力は、8チャンネル分が信
号処理回路205に、8チャンネル分が(インターフェ
ース206を介して)外部回路110に、1チャンネル
分が制御レジスタ201内のXアクセス回路304に、
音源部108の最終的な出力となる2チャンネル(Lお
よびR出力)分がDAC112に、それぞれ出力ライン
221,222,223,224を介して、出力される
ようになっている。ミキサ204は、任意の入力ライン
から入力した任意のチャンネルの楽音波形データに指定
された係数を乗算してミキシングし、そのミキシング結
果を任意の出力ラインの任意のチャンネルに送出でき
る。どの入力ラインのどのチャンネルの入力にどのよう
な係数を乗算し、乗算結果をどのようにミキシングし、
ミキシング結果をどの出力ラインに出力するかは、CP
U104の指定に基づいて決定される。
【0028】信号処理回路205は、内部のマイクロプ
ログラムメモリにロードされたマイクロプログラムにし
たがって動作するDSPであり、ミキサ204からの楽
音波形データに対してチャンネルごとに独立に信号処理
を行ない処理結果を再びミキサ204に戻す。信号処理
回路205は、信号処理を行なう際に、必要に応じて遅
延メモリ111を用いて遅延したデータを得る。信号処
理回路205が実行するマイクロプログラムはCPU1
04が適宜ロードする。信号処理回路205の機能はロ
ードするマイクロプログラムにより規定されるが、簡単
に言うと、サンプリングやリサンプリングの際の波形処
理、あるいは効果付与などの信号処理を行なうものであ
る。このマイクロプログラムの具体的な設定について
は、図10および図11を参照して後述する。
【0029】外部回路110は、例えば、外部から音声
や楽音を取り込むためのアナログ/ディジタル変換器
(ADC)、効果(エフェクト)付与処理を行なう外部
DSP、あるいはディジタルフィルタなどである。ミキ
サ204から外部回路110への出力は8チャンネル
分、外部回路110からミキサ204への入力は8チャ
ンネル分であり、これらは当然独立に使用できるチャン
ネルであるので、複数の外部回路(当然、異なる処理を
行なうものでもよい)110を任意の入出力ラインの任
意のチャンネルに(インターフェース206を介して)
接続可能である。なお、「外部」というのは音源部10
8から見て「外部」であるということであり、外部回路
110は図1の電子楽器中に設けてもよいし、図1の電
子楽器の外部に設けてもよい。
【0030】上述したように、ミキサ204は任意の入
力ライン211〜213から入力した任意のチャンネル
の楽音波形データに指定された係数を乗算してミキシン
グし、そのミキシング結果を任意の出力ライン221〜
224の任意のチャンネルに送出できるようになってい
るから、例えば、以下の〜のような処理を行なうこ
とができることになる。
【0031】外部回路110としてADCを用いて、
マイクロフォンなどから入力したアナログ信号をディジ
タル信号に変換してミキサ204に入力させる。ミキサ
204では、この外部からの楽音信号を、音源部108
内部で波形メモリ109から波形データを読み出して発
生した楽音とミキシングして、DAC112への出力ラ
イン224に出力する。必要に応じてミキサ204の出
力を、DAC112に出力する代わりに一旦信号処理回
路205や他の外部回路110に入力し、信号処理回路
205や他の外部回路110を用いて効果付与処理など
の波形処理を行なった後にDAC112に出力するよう
にしてもよい。
【0032】外部の楽音のサンプリングを行なうこと
ができる。すなわち、外部回路110としてADCを用
いて、マイクロフォンなどから入力したアナログ信号を
ディジタル信号に変換してミキサ204に入力させる。
ミキサ204では、この外部からの楽音信号を、例えば
音源部108内部で波形メモリ109から波形データを
読み出して発生した楽音とミキシングして、Xアクセス
回路304への出力ライン223に出力し、読み書き回
路202経由で波形メモリ109に書き込むようにす
る。必要に応じてミキサ204の出力を、Xアクセス回
路304への出力ライン223に出力する代わりに信号
処理回路205や外部回路110に入力し、信号処理回
路205や外部回路110を用いて効果付与処理などの
波形処理を行なった後にXアクセス回路304に出力す
るようにしてもよい。
【0033】リサンプリング(サンプリングなどによ
り波形メモリ109上に用意されている波形に、加工を
施して再び波形メモリ109に書き込む処理)を行なう
ことができる。すなわち、サンプリングなどにより波形
メモリ109に記憶してある波形データを、読み書き回
路202の所定の発音チャンネルを利用して読み出し
て、ミキサ204に入力させる。2つ以上の波形を混合
して再書き込みするリサンプリングの場合もあるので、
ここで読み出す波形データは1ないし複数の波形データ
である。ミキサ204では、この楽音信号を信号処理回
路205や外部回路110に流し、必要に応じて種々の
波形処理を行なわせ、その結果を得る。波形処理が施さ
れた楽音信号を受けたミキサ204は、その楽音信号を
Xアクセス回路304への出力ライン223に出力し、
読み書き回路202経由で波形メモリ109に書き込
む。なお、ミキサ204における最初のミキシング結果
を、信号処理回路205や外部回路110に流さずに、
そのままXアクセス回路304へ供給するようにしても
よい。
【0034】外部回路110としてDSPやディジタ
ルフィルタを用いて、あるいは信号処理回路205を用
いて、ミキサ204から取り出した楽音波形に効果付与
処理やフィルタリング処理を行ない、処理結果をミキサ
204に戻す。ミキサ204では、処理された楽音波形
を、音源部108内部で発生した楽音とミキシングして
DAC112への出力ライン224やXアクセス回路3
04への出力ライン223に出力する。
【0035】なお、上記〜は本実施形態において実
現できる処理例を示したものであり、音源部108内の
時分割処理の処理時間が確保でき、必要なマイクロプロ
グラムが信号処理回路205にロードできるならば、上
記〜を含め外部回路110と信号処理回路205の
各種機能を任意に組み合わせて楽音波形に対する処理を
行ない、DAC112に出力したり、Xアクセス回路3
04経由で読み書き回路202に戻して波形メモリ10
9に書き込むようにできる。
【0036】図3は、音源部108内の制御レジスタ2
01および読み書き回路202の詳細なブロック構成を
示す。なお、図3に示されている回路のうち、制御レジ
スタ201は、制御レジスタのすべてを示したものでな
く、その一部分を示したものである。制御レジスタ20
1には、図3に示したもの以外に、エンベロープパラメ
ータ、ミキサの設定、およびエフェクト用係数などの他
の制御データも記憶されている。
【0037】制御レジスタ201は、レジスタ301、
レジスタ302、優先フラグ303、および、Xアクセ
ス回路304を備えている。レジスタ301,302
は、CPU104から楽音生成を指示する際に送出され
る各種指示情報を格納する。具体的には、レジスタ30
1は、例えば波形読み出しのための読み出しアドレス
(相対アドレス)の初期値AS、波形データのループ部
のデータ長LPA、ピッチPITCHなどを格納する。
レジスタ302は、読み出すべき波形データのループ部
の先頭を示す絶対アドレスWAを格納する。なお、読み
出しアドレスの初期値ASは、波形データのループ部の
先頭位置(すなわちアタック部の末尾)を基準とした相
対アドレスであるので、負の値に設定されている。波形
データの読み出しは、絶対アドレスWAより初期値AS
で示される分だけ前の位置からスタートする。波形デー
タのループ部のデータ長LPAは、ループ部末尾位置の
相対アドレス(正値)である。
【0038】Xアクセス回路304は、XAレジスタ3
11、セレクタ312、FIFO(First In
First Out(先入れ先出し)の8段のレジス
タ)313、Xフラグ314、およびサンプル数レジス
タ315を備えている。Xアクセス回路304は、後述
するXアクセス処理(CPU104からの波形メモリ1
09のアクセス、およびミキサ204から出力ライン2
23を介して送出された楽音波形データの波形メモリ1
09への書き込み)を、楽音発生のための波形メモリ読
み出しと並行して実行するための制御を行なう回路であ
る。優先フラグ303は、Xアクセス処理を優先的に行
ないたい場合にオンされるフラグである。Xアクセス回
路304の動作および機能、並びに、Xアクセス処理お
よび優先フラグ303の使い方については後述する。
【0039】読み書き回路202は、処理A演算回路3
21、アドレスRAM(ARAM)322、アキュムレ
ータ(ACC)323、制御RAM324、処理B演算
回路325、補間回路326、波形バッファ327、取
り込み回路328、およびセレクタ(SEL)329,
330を備えている。
【0040】図3の制御レジスタ201および読み書き
回路202では、大きくは、処理A、処理B、取り込み
処理、補間処理、およびXアクセス処理の5つの処理を
行なう。各処理の概要は以下の通りである。処理Aは、
主として処理A演算回路321により実行される処理で
あり、具体的には、楽音生成のために時分割チャンネル
タイミングにしたがって各チャンネルのアドレス(波形
サンプル読み出しアドレス(相対アドレス))を作成す
る処理である。各チャンネルのアドレスは、ARAM3
22に保持される。処理Bは、主として処理B演算回路
325により実行される処理であり、具体的には、楽音
生成のために、時分割チャンネルタイミングとは異なる
タイミングで、アドレスWMA(波形サンプル読み出し
アドレス(絶対アドレス))をセレクタ329を介して
波形メモリ109に向けて送り出す処理である。取り込
み処理は、主として取り込み回路328により実行され
る処理であり、具体的には、処理Bにより波形メモリ1
09に送り出されたアドレスにしたがって読み出された
波形サンプルをセレクタ330を介して取り込み、各チ
ャンネル別に波形バッファ327に書き込む処理であ
る。処理Bと取り込み処理が行なわれるときは、セレク
タ329と330は、処理B演算回路325から出力さ
れるアドレスWMAが波形メモリ109のアドレス端子
に入力して、波形メモリ109から読み出された波形サ
ンプルが取り込み回路328に取り込まれるように、選
択制御される。補間処理は、補間回路326により実行
される処理であり、具体的には、時分割チャンネルタイ
ミングにしたがって、波形バッファ327から各チャン
ネルの波形サンプルを読み出し、補間を行なって補間済
みサンプル(楽音波形データ)を生成出力する処理であ
る。補間回路326から出力された楽音波形データは、
図2の音量変化制御回路203に入力する。Xアクセス
処理は、主としてXアクセス回路304の制御のもとで
実行される処理であり、具体的には、上記処理Bおよび
取り込み処理で波形メモリ109をアクセスするタイム
スロット以外のタイムスロットで、CPU104からの
波形メモリ109のアクセスおよびミキサ204から出
力ライン223を介して送出された楽音波形データの波
形メモリ109への書き込みを行なう処理である。Xア
クセス処理の際には、セレクタ329と330は、XA
レジスタ311に格納されているアドレスが波形メモリ
109のアドレス端子に入力し、波形メモリ109のデ
ータラインがFIFO313に接続するように、選択制
御される。以上の5つの処理の詳細については後述す
る。
【0041】図4は、図3の制御RAM324の構成を
示す。詳しくは後述するが、処理Aでは、各チャンネル
のアドレス作成と並行して、各チャンネルについて読み
出すべき必要サンプル数を求めて制御RAM324に格
納する処理を行なう。そのため、制御RAM324は、
チャンネル番号(CH番号)とそのチャンネルにおいて
読み出すべきサンプル数を格納する領域が複数用意され
て構成される。読み書き回路202内には書き込みポイ
ンタおよび読み出しポインタが備えられており、各チャ
ンネルにおいて読み出すべき必要サンプル数を制御RA
M324に書き込むとき(処理A)は書き込みポインタ
をすすめ、制御RAM324からチャンネル番号とサン
プル数を読み出して当該チャンネルに関する読み出しア
ドレスを送出するとき(処理B)は読み出しポインタを
進める。制御RAM324は、リング状に使用するよう
になっており、書き込みまたは読み出しポインタが制御
RAM324の一方の端に至った場合、その次のポイン
タの位置は制御RAM324の他方の端になる。また、
読み出しポインタの指す位置が書き込みポインタの指す
位置を追いかけるように書き込みおよび読み出しが行な
われるが、書き込みポインタが読み出しポインタを追い
越さない程度の領域の大きさが確保されているものとす
る。書き込みポインタおよび読み出しポインタは、アキ
ュムレータ323と同様に、それぞれ、前半処理用のも
のと後半処理用のものとが別々に設けられている。単
に、書き込みポインタおよび読み出しポインタと呼ぶと
きは、前半処理では前半処理用のもの、後半処理では後
半処理用のものを指すものとする。前半処理は第0〜第
15チャンネルの処理、後半処理は第16〜第31チャ
ンネルの処理である(図8,9で後述する)。なお、図
4のような構成のほか、各チャンネルに1つずつアドレ
スを対応させ、そこに必要サンプル数を書き込むように
してもよい。
【0042】図5は、図3のARAM322のメモリマ
ップを示す。ARAM322は、処理Aにおいて各チャ
ンネルのアドレスを作成するのに用いる領域である。A
RAM322は、32チャンネル分(第0〜第31チャ
ンネル)の各チャンネルごとの領域からなり、これらの
領域に各チャンネルの現在のアドレス値を記憶する。各
チャンネルの領域はアドレス上位ADH、およびアドレ
ス下位ADLからなる。ADHおよびADLの領域の大
きさはそれぞれ16ビットである。アドレス上位ADH
とアドレス下位ADLとを合わせた32ビットのアドレ
ス値は、アドレス整数部とアドレス小数部とに分けられ
る。アドレス整数部は23ビット、アドレス小数部は9
ビットである。アドレス整数部は、波形メモリ109の
アドレスと対応している。すなわち、アドレス整数部の
1つの値に対応して、波形メモリ109の波形サンプル
が1つ存在する。アドレス小数部は、それよりも細かい
単位を示し、何点かの波形サンプルを用いた補間処理で
用いる情報である。
【0043】図6は、図3の波形バッファ(サンプルR
AM)327の構成を示す。波形バッファ327は、各
チャンネルごとの4つの再生サンプル格納領域からな
る。4つの再生サンプル格納領域はリング状に使用す
る。すなわち、各チャンネルごとにポインタを設け、波
形サンプルを書き込むときは、そのポインタで指す位置
に書き込み、ポインタを1つ進める。ポインタは、例え
ば図6の第iチャンネルなら、再生サンプル1→2→3
→4→1→2→…というように進める。
【0044】次に、図3の制御レジスタ201および読
み書き回路202で実行する上記5つの処理について詳
しく説明する。始めにこれらの処理を実行するタイミン
グについて説明し、その後、各処理それぞれの詳細を説
明する。
【0045】図3、図8、および図9を参照して、読み
書き回路202の要部の処理のタイミングの概要につい
て説明する。図8において、「処理A」は、図3の主と
して処理A演算回路321により実行される処理Aを行
なう区間を示す。「処理BおよびXアクセス処理」は、
図3の主として処理B演算回路325により実行される
処理B、およびXアクセス回路304の制御のもとで実
行されるXアクセス処理を行なう区間を示す。「取り込
み処理およびXアクセス処理」は、図3の主として取り
込み回路328により実行される取り込み処理、および
Xアクセス回路304の制御のもとで実行されるXアク
セス処理を行なう区間を示す。「補間処理」は、図3の
補間回路326により補間処理を行なう区間を示す。
【0046】「処理A」および「補間処理」の処理区間
は、1サンプリング周期を前半区間と後半区間に分け、
前半区間で第0〜第15チャンネルの処理を行ない、後
半区間で第16〜第31チャンネルの処理を行なうよう
になっている。すなわち、前半区間(処理A前半区間)
801で第0〜第15チャンネルに関する処理Aを、後
半区間(処理A後半区間)811で第16〜第31チャ
ンネルに関する処理Aを、前半区間(補間前半区間)8
06で第0〜第15チャンネルに関する補間処理を、後
半区間(補間後半区間)816で第16〜第31チャン
ネルに関する補間処理を、それぞれ実行する。「処理B
およびXアクセス処理」の処理区間では、1サンプリン
グ周期を前半区間と後半区間に分けたそれぞれの区間の
前側区間802,812で処理Bを行ない、後側区間8
03,813でXアクセス処理を行なう。第0〜第15
チャンネルの処理Bを行なう処理B前半区間802は、
当該チャンネルの処理Aを行なう処理A前半区間801
が終了した直後から開始され、必要な処理Bが行なわれ
た後の空き時間の区間803でXアクセス処理が行なわ
れる。同様に、第16〜第31チャンネルの処理Bを行
なう処理B後半区間812は、当該チャンネルの処理A
を行なう処理A後半区間811が終了した直後から開始
され、必要な処理Bが行なわれた後の空き時間の区間8
13でXアクセス処理が行なわれる。取り込み処理は、
処理Bのアドレス送り出しのタイミングにしたがって行
なわれるから、取り込み処理についても同様に、1サン
プリング周期を前半区間と後半区間に分けたそれぞれの
区間の前側区間804,814で取り込み処理を行な
い、後側区間805,815でXアクセス処理を行な
う。取り込み処理の後、各チャンネルの波形サンプルが
波形バッファ327に揃うことが保証されるタイミング
で開始される区間806,816で時分割チャンネルタ
イミングにしたがって各チャンネルの補間処理を行な
う。
【0047】図9は、図8の前半処理の各処理中のチャ
ンネルの様子を示す。図9の「処理A前半ch」は、図
8の区間801におけるチャンネルの様子を示す。図9
の「処理B前半chおよびXアクセス処理」は、図8の
区間802,803におけるチャンネルの様子を示す。
図9の「取り込み前半chおよびXアクセス処理」は、
図8の区間804,805におけるチャンネルの様子を
示す。図9の「補間前半ch」は、図8の区間806に
おけるチャンネルの様子を示す。後半処理も同様であ
る。なお、図9では各チャンネルタイミングを縦に並べ
て揃えて記載しているが、実際には各処理のタイミング
は図8に示すようにずれている。
【0048】この実施の形態では、図9からも分かるよ
うに、処理A演算回路321によるアドレス作成の処理
Aと補間回路326による補間処理は、それぞれ、1サ
ンプリング周期を等分割した時分割チャンネルタイミン
グにしたがって順番にチャンネルごとの処理が行なわれ
る。一方、処理B演算回路325からのアドレス送り出
しの処理Bと取り込み回路328による波形データの取
り込みの処理は、時分割チャンネルタイミングとは独立
したタイミングで動作する。
【0049】例えば、図8および図9において、処理A
前半区間801では、処理A演算回路321により、第
0〜第15チャンネルについて時分割チャンネルタイミ
ングにしたがって順番に各チャンネルのアドレスを作成
している。処理B前半区間802では、処理B演算回路
325により、時分割チャンネルタイミングとは異なる
タイミングで、第0チャンネルのアドレスを1つ、第2
チャンネルのアドレスを3つ、第5チャンネルのアドレ
スを1つ、…というように、第0〜第15チャンネルの
アドレスの送り出しを行なっている。1アドレス送り出
しを行なう区間の時間幅は、時分割チャンネルタイミン
グで1チャンネル分の処理を行なう区間の時間幅の1/
4である。したがって、1チャンネル分の処理を行なう
時間幅で波形メモリを4アクセスできる。各チャンネル
で送り出すアドレスの個数が区々であるのは、波形バッ
ファ(サンプルRAM)327に過去の波形データ(再
生サンプル)が保持されており各チャンネルごとに必要
な個数の波形データのみ読み出せば充分なため、あるい
は発音する必要がなくアドレスの送り出しが不要なチャ
ンネルがあるためである。ここ(図9)では、それぞ
れ、第0チャンネルは1アクセス、第2チャンネルは3
アクセス、第5チャンネルは1アクセス、第7チャンネ
ルは2アクセス分の波形メモリからの読み出しが必要な
場合を示している。その他のチャンネルは、発音してい
ないか、既に読み出して波形バッファ327に記憶され
たサンプルのみで楽音が生成できるチャンネルである。
なお、発音していないチャンネルとは、音量変化制御回
路203などで音量レベルの下げられたチャンネルであ
り、そのチャンネルに関しては処理Bにおける波形メモ
リのアクセスタイミングを使用しないように、制御がな
されている。
【0050】取り込み前半区間804では、処理B前半
区間802のアドレス送り出しのタイミングにしたがっ
て波形メモリ109から読み出された波形データを取り
込んでいる。補間回路326は、補間前半区間806で
時分割チャンネルタイミングにしたがって、波形バッフ
ァ327のデータを用いて第0〜第15チャンネルに関
する補間処理を行なう。あるチャンネルについて補間を
行なう時点で、補間を行なうために必要な当該チャンネ
ルの波形データは波形バッファ327に用意されている
ようになっている。
【0051】以上のようなタイミングで、第0〜第15
チャンネルの楽音波形データが生成される。後半の区間
を用いて処理される第16〜第31チャンネルについて
も同様である。
【0052】処理B演算回路325におけるアドレス送
り出しの処理Bおよび取り込み回路328における波形
データ取り込みの処理が必要なアクセス数だけ時分割チ
ャンネルタイミングとは異なるタイミングで行なわれる
ことにより、空きタイムスロットが出現する。図9の
「処理B前半chおよびXアクセス処理」および「取り
込み前半chおよびXアクセス処理」の区間中、「−c
h」は何れのチャンネルのサンプル読み出しにも使用さ
れていない空きタイムスロットを示す。この空きタイム
スロットの区間803,805は、任意に使用可能であ
る。そこで、処理B演算回路325は、この空きタイム
スロットの区間でセレクタ329,330を切り替え、
Xアクセス処理(Xアクセス回路304の制御のもとで
行なわれるCPU104による波形メモリ109へのア
クセス処理、およびミキサ204から出力ライン223
を介して戻ってくる楽音波形データの波形メモリ109
への書き込み処理)が行なわれるようにする。
【0053】なお、処理A演算回路321や処理B演算
回路325を始めとして図3の制御レジスタ201およ
び読み書き回路220の各部には、不図示のクロック発
生部からの制御クロックが入力している。このクロック
を基準として各部が動作することにより、図8,9に示
すようなタイミングで各処理が実行される。
【0054】次に、図3の制御レジスタ201および読
み書き回路202による5つの処理について、以下の
(1)〜(5)で詳細に説明する。
【0055】(1)処理A演算回路321で実行する処
理Aについて詳しく説明する。あるチャンネルで楽音の
発音開始が指示されると、当該チャンネルに関する処理
Aが処理A演算回路321で実行開始される。処理A
は、図8,9で説明したように時分割チャンネルタイミ
ングで実行される。まず、1番始めの当該チャンネルの
タイムスロット(ノートオン立上がり直後)で、処理A
演算回路321は、当該チャンネルに対応するARAM
322(図5)のアドレス格納領域(ADHとADL)
を初期化する。初期値は、読み出すべき波形データの先
頭アドレスAS(波形データのループ部の先頭位置を基
準とした相対アドレスであるので負値)であり、CPU
104が図3のレジスタ301を介して指定する。次回
以降の当該チャンネルのタイムスロットで、処理A演算
回路321は、当該チャンネルに対応するARAM32
2のアドレス格納領域の現アドレス値に、当該チャンネ
ルにおけるアドレスの進み値(周波数ナンバ)であるピ
ッチPITCHを加算する。加算結果は、元のARAM
322のアドレス格納領域に格納される。ピッチPIT
CHは、CPU104が図3のレジスタ301を介して
指定する。
【0056】この加算は、具体的には、当該チャンネル
の現アドレス値のアドレス小数部にピッチPITCHを
加算し、加算結果のうちアドレス小数部のビット数より
上位に溢れた値を現アドレス値のアドレス整数部に加算
することにより行なう。この溢れ値は、新たに読み出す
べき波形サンプルの数になっている。読み書き回路20
2では波形バッファ327にそれまでに読み出した波形
サンプルが保持されており、上記溢れ値が波形メモリ上
での読み出しアドレスの進み量になっているからであ
る。先述した図9は、溢れ値が、第0チャンネルで1、
第2チャンネルで3、第5チャンネルで1、第7チャン
ネルで2の場合である。なお、その他のチャンネルは、
発音していない、または、溢れ値が0のチャンネルであ
る。
【0057】なお、波形メモリ109上の波形データは
アタック部とそれに引き続くループ部とから構成され、
波形データのループ部の先頭位置(すなわちアタック部
の末尾)を基準として、読み出しアドレスの初期値AS
(負値)およびループ部末尾位置の相対アドレスLPA
(正値)が設定されている。波形サンプルのアクセスは
アタック部の先頭から開始され(すなわち現アドレス
が、負の相対アドレスASからスタートして徐々に増加
する)、アタック部の読み出しが終わると現アドレス値
が正の値になりループ部に入る。以後は必要に応じてル
ープ部の波形サンプルを繰り返し読み出す。そのため、
現アドレス値がループ部末尾位置(=相対アドレスLP
A)を越えたときは、現アドレス値から値LPAを減算
し、減算結果を新たな現アドレス値として設定する処理
を行なう。現アドレス値には、後に波形データのループ
部の先頭を示す絶対アドレスWAを加算する。処理A演
算回路321は、上述のアドレスを作成する処理中で、
このようなアドレスをループ部先頭付近に戻す処理も行
なっている。
【0058】以上のように、当該チャンネルのタイムス
ロットで、ARAM322上の現アドレスにピッチ(周
波数ナンバ)を累算していき、当該チャンネルに関する
順次アドレスをARAM322上に生成する。
【0059】処理Aでは、上述した各チャンネルのアド
レスを作成する処理の他、制御RAM324(図4)内
の書き込み位置を指す書き込みポインタを1つ進め、各
チャンネルごとの必要サンプル数を、制御RAM324
の書き込みポインタで指す位置に格納する処理を行な
う。各チャンネルごとの必要サンプル数は、上述の現ア
ドレス値のアドレス小数部にピッチPITCHを加算し
た加算結果のうちアドレス小数部のビット数より上位に
溢れた値に一致しているから、この溢れ値を得てチャン
ネル番号とともに制御RAM324に格納する。
【0060】さらに、処理Aでは、上述の各チャンネル
のアドレス作成、および各チャンネルに関する必要サン
プル数の格納の処理の他、所定の複数のチャンネルごと
に必要な波形メモリアクセス数(この実施の形態ではサ
ンプル数とアクセス数とは一致する)を累算する処理を
も行なう。具体的には、処理A演算回路321で、第0
〜第15チャンネルのアドレス作成(前半処理)と並行
してこれらのチャンネルについて読み出すべき必要なサ
ンプル数を累算し、さらに第16〜第31チャンネルの
アドレス作成(後半処理)と並行してこれらのチャンネ
ルについて読み出すべき必要なサンプル数を累算する。
【0061】アキュムレータ(ACC)323は、この
累算を行なうためのアキュムレータである。読み書き回
路202では、前半処理と後半処理に分けて累算を行な
うため、アキュムレータ323は実際には前半アキュム
レータと後半アキュムレータとの2つのアキュムレータ
からなる。単に、アキュムレータ323というときは、
前半処理では前半アキュムレータ、後半処理では後半ア
キュムレータのことを指すものとする。
【0062】具体的に累算の処理は、以下のように行な
う。まず、前半処理および後半処理の開始時点でアキュ
ムレータ323を初期設定(ゼロクリア)する。以後
は、前半処理および後半処理の最後のチャンネルまで、
必要なサンプル数(すなわち、アクセス数)をアキュム
レータ323に累算していく。各チャンネルについて読
み出すべき必要なサンプル数は、上記制御RAM324
に書き込む際に分かる。
【0063】さらに処理Aでは、上記のように累算した
結果であるアクセス回数累算値が、実際にアクセスを実
行する処理Bの前半区間または後半区間における最大ア
クセス可能数(アクセスの制限回数)を超えていないか
判定し、その結果に応じて各チャンネルごとのアクセス
回数および補間次数を決定する。以下、これについて説
明する。まず前半処理の区間に着目して説明する。前半
処理の区間は1サンプリング周期の半分の時間区間であ
り、その区間で第0〜第15チャンネルに関する処理B
(および多少の遅れ時間の後に実行される取り込み処
理)を行なう。また、処理Bで1アドレス送り出しを行
なう区間の時間幅は時分割チャンネルタイミングで1チ
ャンネル分の処理を行なう区間の時間幅の1/4であ
る。したがって、もしXアクセス処理を当該区間内で行
なわないなら(すなわち図8,9の区間803,805
がない場合)、前半区間では64アクセスが可能であ
る。この実施の形態では、各チャンネルで4点補間を行
なうので、前半区間で処理する16チャンネルのすべて
で4点の波形サンプルを読み出す必要がある場合でも、
4点×16ch=64アクセスであるから、Xアクセス
処理を行なわずに前半区間のすべてを処理Bおよび取り
込み処理に使用すれば、すべてのチャンネルで4点補間
を行なうことができる。ただし、優先フラグ(次の処理
Bの説明で詳述する)303がオンされているときは前
半区間のXアクセス処理で所定回(この実施の形態では
1回)のアクセスを優先的に実行しなければならないた
め、前半区間の処理Bおよび取り込み処理による最大ア
クセス可能数は64から上記Xアクセス処理のアクセス
数を減算した値となる。したがって、上述したようにア
キュムレータ323で累算したアクセス回数累算値が前
半区間における最大アクセス可能数を超えることが考え
られる。この場合は、制御RAM324に書き込んだ各
チャンネルのサンプル数をすべてアクセスすることはで
きないので、アクセス回数の多い(例えば3回あるいは
4回)チャンネルの中の何れかのチャンネルのアクセス
回数を削減し補間次数を落とす。補間次数を落とすとい
うのは、例えば、4点補間の処理を3点補間あるいは2
点補間(直線補間)に変更する、ということである。ア
クセス回数を削減するチャンネルの決定方法としては、
例えば下記のおよびのような方法がある。
【0064】チャンネル順に片端からアクセス回数を
削減する。 その時点で音量レベルの小さいチャンネルからアクセ
ス回数を削減する。このようにすると楽音への影響が小
さい。各チャンネルの音量レベルは、エンベロープ値か
ら分かる。
【0065】なお、この実施の形態では前半区間で64
アクセス可能で補間は4点補間であり、実際には第0〜
第15のすべてのチャンネルで4点の読み出しを行なう
場合はきわめて稀であると考えられるから、アクセス回
数を累算して最大アクセス可能数と比較した結果から各
チャンネルのアクセス回数と補間次数を決定する機能は
設けなくとも実用上はほとんど問題がない。ただし、4
点補間でなく例えば各チャンネルで6点補間を行なう場
合や、優先フラグ303がオンのときにXアクセス処理
に優先的に確保するアクセス数が多い場合などでは、有
効な機能である。以上、前半区間に着目して説明したが
後半区間でも同様である。
【0066】(2)次に、処理B演算回路325で実行
する処理Bについて詳しく説明する。処理B演算回路3
25は、時分割チャンネルタイミングとは異なるタイミ
ングで、処理B、すなわちアドレスを波形メモリ109
に向けて送り出す処理を行なう。図9で説明したよう
に、時分割チャンネルタイミングの1チャンネル当りの
時間内で4アクセス(4サンプルの読み出し)が可能で
ある。処理Bの波形メモリアクセス処理は、処理Aの時
分割チャンネルタイミングにしたがった処理とは関係が
なく、読み出しが必要な各チャンネルについて順次連続
して行なわれる。読み出しが必要なチャンネルとサンプ
ル数は、上述の処理Aで決定され、制御RAM324に
セットされている。また、図8,9で説明したように、
あるチャンネルについて処理Bを行なうときには既に当
該チャンネルに関する処理Aは実行済みであり、当該チ
ャンネルのアドレス値がARAM322にセットされて
いる。
【0067】アドレス送り出しの処理を説明する。ま
ず、図4に示す制御RAM324内の読み出し位置を指
す読み出しポインタの値が、当該チャンネルに関する処
理A前半または後半処理の終了時点の書き込みポインタ
の値と一致しているか否か判定する。例えば、当該チャ
ンネルの処理Bが図8の処理B前半区間802内の処理
である場合は、読み出しポインタの値を、処理A前半区
間801の終了時点の書き込みポインタの値と比較する
ということである。これが一致すれば、その処理Bの区
間で読み出すべきサンプルはもう無いということだか
ら、当該区間の処理Bは終えて、残った空きスロットで
後述するXアクセス処理を行なうように制御する。
【0068】読み出しポインタの値が上記書き込みポイ
ンタの値に一致していないときは、読み出しポインタを
1つ進めて、読み出しポインタが指すチャンネル番号と
サンプル数を制御RAM324から読み出す。そして、
そのサンプル数分の当該チャンネル番号に関するアドレ
スを波形メモリ109に送り出す。具体的には、ARA
M322から当該チャンネルの現アドレス整数部を読み
出し、必要なサンプル数のサンプルを順次アクセスする
ための複数のオフセットを加算し、さらに波形データの
ループ部の先頭を示す絶対アドレスWAを加算して(処
理Aで作成したアドレスは相対アドレスであるので、絶
対アドレスに変換するためWAを加算する)、最終的な
読み出しアドレスWMAを求め、セレクタ329がこの
アドレスWMAを選択出力するように制御する。これに
より1アドレスが波形メモリ109に送り出される。加
算するオフセットは、例えば図9の例では、第0チャン
ネルでは0、第2チャンネルの1回目が−2、2回目が
−1、3回目が0、第5チャンネルの1回目が−1、2
回目が0などとなる。以上のようにして、図8,9で説
明したアドレス送り出しのタイミングで、読み出しポイ
ンタを進めながらアドレスを連続的に送り出していく。
【0069】図8,9でも説明したように、上記アドレ
ス送り出しの処理は必要な回数だけ時分割チャンネルタ
イミングとは異なるタイミングで行なわれるので、アク
セス余り時間としての空きタイムスロットが出現する。
そこで、アドレス送り出しの処理の後、処理B演算回路
325はXAレジスタ311からのアドレスが選択出力
されるようにセレクタ329を切り替え(さらに、波形
メモリ109のデータラインがFIFO313に接続す
るようにセレクタ330を切り替える)、Xアクセス回
路304の制御のもとでこの余り時間を利用してXアク
セス処理が行なわれるようにする。
【0070】優先フラグ303は、CPU104が適宜
オン/オフする。優先フラグ303がオンされていると
き、処理B演算回路325は楽音発生のための各チャン
ネルの波形データ読み出しの状態にかかわらず、Xアク
セス処理に最低1回(複数回でもよい。確保するスロッ
ト数は任意に指定できる。)のアクセススロットを確保
する(すなわち、図8、9において、前半処理では区間
803,805を、後半処理では区間813,815
を、それぞれ最低限1アクセス分だけは確保する)。こ
れにより、CPU104からの波形メモリ109へのア
クセス処理、またはミキサ204から出力ライン223
を介して戻ってくる楽音波形データの波形メモリ109
への書き込み処理を、1アクセスだけ必ず入れることが
できる。
【0071】(3)次に、取り込み回路328で実行す
る取り込み処理について説明する。取り込み回路328
は、処理B演算回路325から送り出されたアドレスW
MAにより読み出された波形サンプルを取り込み、波形
バッファ327に書き込む。このときセレクタ330
は、処理B演算回路325の制御のもとで、波形メモリ
109のデータラインを取り込み回路328に接続す
る。波形サンプル取り込みの結果、波形バッファ327
には、基本的に各チャンネル4サンプルが用意されるこ
とになる。ただし、処理Aで補間次数を落としたチャン
ネルがある場合は、当該チャンネルについては、次数を
落とした補間で必要なサンプルが波形バッファ327に
用意される。なお、波形メモリ109に格納されている
波形サンプルが圧縮されている場合は、取り込み回路3
28でデコードを行なうようにする。
【0072】取り込み処理は処理Bによるアドレス送り
出しと同期して行なわれるので、処理Bで説明したよう
に、アクセス余り時間としての空きタイムスロットが出
現する。そこで、取り込み処理の後、処理B演算回路3
25は波形メモリ109のデータラインとFIFO31
3とが接続されるようにセレクタ330を切り替え、X
アクセス回路304の制御のもとでこの余り時間を利用
してXアクセス処理が行なわれるようにする。
【0073】(4)次に、補間回路326で実行する補
間処理について詳しく説明する。補間回路326は、時
分割チャンネルタイミングにしたがって、チャンネルご
とに順に補間処理を行なう。1つのチャンネルに関する
補間処理は、以下のとおりである。まず、波形バッファ
327から当該チャンネルの4つの波形サンプルを順次
読み出す。そして、各サンプルに所定の補間係数を乗算
して累算する。各サンプルに乗算する補間係数は、当該
チャンネルのアドレス小数部FRACに基づいて決定す
る。アドレス小数部FRACは、ARAM322から処
理B演算回路325経由で入力する。以上により、補間
済みの楽音波形データが生成出力される。なお、上述し
た波形メモリのアクセス回数削減により補間次数を落と
したチャンネルについては、落とした次数での補間を行
ない補間済みの楽音波形データを得る。
【0074】(5)次に、Xアクセス処理について詳し
く説明する。上述したように、処理Bおよび取り込み処
理で必要な各チャンネルについて順次連続してアドレス
送り出しを行ない波形サンプルを波形バッファ327に
読み出した後、空きタイムスロットがあるときには、処
理B演算回路325は、その空きタイムスロットの区間
でXアクセス処理を行なうようにセレクタ329と33
0を切り替える。具体的には、図8,9の区間803,
813においてXAレジスタ311が波形メモリ109
のアドレスラインに接続されるようにセレクタ329を
切り替え、区間805,815においてFIFO313
が波形メモリ109のデータラインに接続されるように
セレクタ330を切り替える。処理B演算回路325
は、このようにセレクタ329,330を切り替えると
ともに、Xアクセス処理が可能になった旨をXアクセス
回路304に伝える。これにより、Xアクセス回路30
4は(CPU104から指示されていた場合)Xアクセ
ス処理を開始する。また、処理B演算回路325は、X
アクセス処理終了時(1サンプリング周期の半分の時間
幅である前半区間および後半区間の終了時)に再びセレ
クタ329,330を切り替えて、次の処理Bおよび取
り込み処理が可能になるようにする。なお、波形メモリ
109へのアドレスの入力と当該アドレスのデータアク
セスとは若干のタイミングのずれがある(例えば図8の
取り込み前半区間804は処理B前半区間802から若
干遅れている)ので、セレクタ329の切り替えのタイ
ミングとセレクタ330の切り替えのタイミングとは若
干ずれることになるが、その切り替えの制御は処理B演
算回路325により適正に行なわれるようになってい
る。
【0075】Xアクセス処理は、具体的には、CPU1
04から波形メモリ109に波形データを書き込む処
理、CPU104により波形メモリ109から波形デー
タを読み出す処理、およびミキサ204から出力ライン
223を介して戻ってくる波形データの波形メモリ10
9への書き込み処理の3つがある。以下、それぞれにつ
いて説明する。
【0076】CPU104から波形メモリ109にデー
タを書き込む場合、まずCPU104はセレクタ312
を切り替えて、CPU104が接続されているデータバ
スとFIFO313とが接続されるようにする。そし
て、CPU104は、XAレジスタ311に書き込みア
ドレス(先頭アドレス)をセットし、書き込むべき波形
サンプルデータの数をサンプル数レジスタ315にセッ
トし、書き込むべき波形サンプルデータの始めの8サン
プルをセレクタ312を介して8段のFIFO313に
順にセットして、Xアクセス回路304に書き込みスタ
ートを指示する。以後、CPU104は、適宜Xフラグ
314を参照し、Xフラグ314がオンされているとき
は、FIFO313に、書き込むべき波形サンプルデー
タの残りを順次書き込む。Xフラグ314はFIFO3
13の空きの状態を示すフラグであり、CPU104か
らのデータ書き込みの際には、FIFO313に空きが
あるとき自動的にオンとなり、FIFO313に空きが
ないとき自動的にオフとなる。したがって、CPU10
4はXフラグ314がオフとなるまでFIFO313に
書き込みデータを送ってよい。
【0077】図7(a)は、CPU104からFIFO
313にデータを書き込む際のFIFOの使用方法を示
す。矩形701,702はFIFO313を示し、斜線
部分はデータが書き込まれている部分、白抜き部分は空
きの部分を示す。701ではFIFO313の8段の領
域すべてにデータが書き込まれておりXフラグがオフさ
れている。このときCPU104はデータをFIFO3
13に書き込むことができない。Xアクセス処理でFI
FO313のデータが読み出され波形メモリ109に書
き込まれると、702に示すようにFIFO313に空
きができXフラグがオンされる。このときCPU104
は、Xフラグのオンを検出して次の書き込みデータをF
IFO313に書き込むことができる。
【0078】書き込むべき波形サンプルデータをすべて
FIFO313に送ったら、CPU104から見ると書
き込み終了である。そこで、CPU104は、Xアクセ
ス回路304にCPU書き込みストップ処理を指示して
書き込み処理を終了する。
【0079】一方、CPU104からの書き込みスター
ト指示を受けたXアクセス回路304は、処理B演算回
路325から空きタイムスロットである旨の指示がある
区間(区間803,813,805,815)の各タイ
ムスロットで、FIFO313内の波形サンプルデータ
を波形メモリ109に書き込む処理を行なう。1つのタ
イムスロットで行なう処理は、以下の通りである。まず
XAレジスタ311に格納されているアドレスを波形メ
モリ109に送出する。次に、FIFO313から波形
サンプルデータを1つ取り出し、波形メモリ109に送
出して上記アドレス位置に書き込む。その後、XAレジ
スタ311のアドレスをインクリメントする。Xアクセ
ス回路304内には、書き込みスタート指示でゼロクリ
アされ、波形サンプルデータを1つ波形メモリ109に
書き込むとカウントアップされるカウンタが備えられて
おり、Xアクセス回路304は書き込みの度にこのカウ
ンタの値とサンプル数レジスタ315のサンプル数を比
較する。カウンタの値がサンプル数レジスタ315のサ
ンプル数に至ったら、指示されたデータをすべて書き込
んだということであるから、書き込み処理を終了する。
また、CPU104からCPU書き込みストップ処理の
指示があったときは、FIFO313に残っているデー
タをすべて波形メモリ109に書き込んで、処理を終了
する。なお、サンプル数レジスタ315を設けることな
く、Xアクセス回路304では、CPU104からのC
PU書き込みストップ処理の指示があるまでFIFO3
13にデータがあれば波形メモリ109に書き込むこと
としてもよい。
【0080】波形メモリ109からCPU104にデー
タを読み出す場合、まずCPU104はセレクタ312
を切り替えて、CPU104が接続されているデータバ
スとFIFO313とが接続されるようにする。そし
て、CPU104は、XAレジスタ311に読み出しア
ドレス(先頭アドレス)をセットし、読み出すべき波形
サンプルデータの数をサンプル数レジスタ315にセッ
トして、Xアクセス回路304に読み出しスタートを指
示する。以後、CPU104は、適宜Xフラグ314を
参照し、Xフラグ314がオンされているときは、FI
FO313から波形サンプルデータを順次読み出す。X
フラグ314はFIFO313の空きの状態を示すフラ
グであり、CPU104によるデータ読み出しの際に
は、FIFO313に波形メモリ109からの読み出し
データがあるとき自動的にオンとなり、FIFO313
に読み出しデータがないとき自動的にオフとなる。
【0081】図7(b)は、CPU104によりFIF
O313からデータを読み出す際のFIFOの使用方法
を示す。矩形703,704はFIFO313を示し、
斜線部分は読み出したデータを格納した部分、白抜き部
分は空きの部分を示す。703ではFIFO313の8
段の領域はすべて空きでありXフラグがオフされてい
る。このときFIFO313には読み出しデータが未だ
ないからCPU104はデータを読み出すことができな
い。Xアクセス処理で波形メモリ109からデータが読
み出されFIFO313に書き込まれると、704に示
すようにXフラグがオンされる。このときCPU104
は、Xフラグのオンを検出してFIFO313から読み
出しデータを読み出すことができる。
【0082】Xフラグ314はFIFO313に読み出
しデータがあるか否かを示すとともに、Xフラグ314
がオフのときはサンプル数レジスタ315で指定された
数だけの波形サンプルを読み出したか否かを判別できる
ようになっている。そこで、CPU104は、Xフラグ
314がオフのとき、サンプル数レジスタ315で指定
した数だけの波形サンプルデータを読み出したか否かを
判別し、読み出していたらXアクセス回路304にCP
U読み出しストップ処理を指示して読み出し処理を終了
する。
【0083】一方、CPU104からの読み出しスター
ト指示を受けたXアクセス回路304は、処理B演算回
路325から空きタイムスロットである旨の指示がある
区間(区間803,813,805,815)の各タイ
ムスロットで、波形メモリ109から波形サンプルデー
タを読み出してFIFO313に書き込む処理を行な
う。1つのタイムスロットで行なう処理は、以下の通り
である。まずXAレジスタ311に格納されているアド
レスを波形メモリ109に送出する。次に、当該アドレ
スの波形サンプルデータを波形メモリ109から1つ読
み出し、FIFO313に書き込む。その後、XAレジ
スタ311のアドレスをインクリメントする。Xアクセ
ス回路304内には、読み出しスタート指示でゼロクリ
アされ、波形サンプルデータを1つ波形メモリ109か
らFIFO313に読み出すとカウントアップされるカ
ウンタが備えられており、Xアクセス回路304は読み
出しの度にこのカウンタの値とサンプル数レジスタ31
5のサンプル数を比較する。カウンタの値がサンプル数
レジスタ315のサンプル数に至ったら、指示された数
のデータを読み出したということであるから、読み出し
処理を終了する。また、CPU104からCPU読み出
しストップ処理の指示があったときは、処理を終了す
る。なお、サンプル数レジスタ315を設けることな
く、Xアクセス回路304では、CPU104からのC
PU読み出しストップ処理の指示があるまで波形メモリ
109からFIFO313へのデータ読み出しを続ける
こととしてもよい。
【0084】ミキサ204から出力ライン223を介し
て戻ってくる波形データを波形メモリ109に書き込む
場合、まずCPU104はセレクタ312を切り替え
て、ミキサ204からの出力ライン223とFIFO3
13とが接続されるようにする。そして、CPU104
は、XAレジスタ311に書き込みアドレス(先頭アド
レス)をセットし、書き込むべき波形サンプルデータの
数をサンプル数レジスタ315にセットして、Xアクセ
ス回路304に書き込みスタートを指示する。以後、サ
ンプリング周期ごとにミキサ204から出力ライン22
3を介して波形サンプルデータが送出されてくるので、
Xアクセス回路304は、その送られてきたデータをF
IFO313に書き込む。なお、ミキサ204から戻っ
てくるデータの書き込みの場合、上述のCPU104か
らのデータ書き込みの場合のようにXフラグ314がオ
ンのときデータをFIFO313に書き込むというよう
なことができず、ミキサ204から送られてくるデータ
はサンプリング周期ごとに送られてくるので、送られて
きたデータはすぐにFIFO313に書き込まなければ
ならない。その時点でFIFO313に空きがないとき
は、ミキサ204から送られてきたデータは捨てられ
る。ただし、既に述べたように、1サンプリング周期の
間にXアクセス処理のスロットが1つも取れないほど楽
音発生のための波形メモリアクセスが混むという事態は
ほとんど無いと考えられるので、上記の場合にミキサ2
04から送られてきたデータを捨てることにしても実用
上はほとんど問題はない。また、優先フラグ303をオ
ンしておけば、1サンプリング周期の間にXアクセス処
理のスロットを少なくとも1回は確保できるので、ミキ
サ204から送られてきたデータは必ず波形メモリ10
9に書き込めることになる。
【0085】一方、CPU104からの書き込みスター
ト指示を受けたXアクセス回路304は、処理B演算回
路325から空きタイムスロットである旨の指示がある
区間(区間803,813,805,815)の各タイ
ムスロットで、FIFO313内の波形サンプルデータ
を波形メモリ109に書き込む処理を行なうが、この処
理は上記CPU104からの波形データ書き込みで説明
したのと同じであるので、説明を省略する。
【0086】以上で図3の制御レジスタ201および読
み書き回路202による5つの処理の詳細な説明を終わ
る。
【0087】図10および図11は、図2の信号処理回
路(DSP)205およびミキサ204の設定の具体例
を示す。
【0088】図10(a)は、サンプリングを行なう際
の設定の例を示す。ブロック1001,1005は、図
2のミキサ204によるミキシング処理(以下、単にM
IXとする)を示す。ブロック1002,1003,1
004は、図2の信号処理回路205で実行する処理
(信号処理回路205に設定されたマイクロプログラム
に対応する)を示す。矢印は信号の流れを示し、FIF
O1006は図3のXアクセス回路304内のFIFO
313に相当する。MIX1001への「ADC入力」
は、図2の外部回路(ADC)110からインタフェー
ス206および入力ライン213を介して入力する外部
からの楽音信号である。このADC入力は、ミキサ20
4への入力の8チャンネルの内の一つを用いる。
【0089】MIX1001の出力は、図2のミキサ2
04から出力ライン221を介して信号処理回路205
に出力される8チャンネルの内の一つである。信号処理
回路205では図10(a)のブロック1002〜10
04に示す処理を行なう。すなわち、MIX1001か
らの出力に対し、エンベロープ抽出処理1003によっ
てエンベロープを抽出し、エンベロープの立ち上がりで
ゲート1002を開くようにする。ゲート1002が開
かれると、サンプリング周期毎にMIX1001の出力
すなわち外部から入力した楽音波形が波形処理1004
へと送出される。波形処理1004では、入力した楽音
波形に対して各種の波形処理を施す。例えば、直流分を
カットするDCカット処理、入力レベルが小のときにミ
ュートをかけるノイズミュート処理、エンベロープのレ
ベルがある所定値以上の場合にゲインを下げるコンプレ
ッサ処理、入力波形のレベルが小さい場合によりそのレ
ベルを小さくするエキスパンダ処理、および高いサンプ
リング周波数で外部から入力した楽音波形を低いサンプ
リング周波数に落としたり逆にサンプリング周波数を上
げたりすためのFs(サンプリング周波数)変換処理な
どである。
【0090】波形処理1004の出力は再びMIX10
05に戻る。これは、図2の信号処理回路205の処理
結果を入力ライン212のうちの1チャンネルを使って
ミキサ204に戻す部分に相当する。そして、MIX1
005からFIFO1006に楽音波形を出力し波形メ
モリ1009に書き込む。これは、ミキサ204から出
力ライン223を介して制御レジスタ201内のFIF
O313に波形データを書き込む部分を示す。FIFO
313に書き込まれたデータは既に説明したように波形
メモリ109に書き込まれる。
【0091】図10(b)は、リサンプリング用のマイ
クロプログラムおよびミキサの設定の例(その1)を示
す。図10(a)と同様に、MIX1011,1014
は図2のミキサ204に対応し、FIFO1015は図
3のFIFO313に対応する。ブロック1012,1
013は、図2の信号処理回路205に設定するマイク
ロプログラムに対応する。MIX1011への「ch出
力」は、図2の音量変化制御回路203から入力ライン
211を介して入力する楽音信号であり、サンプリング
などによりあらかじめ波形メモリ109上に用意されて
いる波形データを読み出して生成した楽音波形である。
この「ch出力」は、32チャンネルのうちの一つでも
よいし、複数チャンネルでもよい。すなわち、複数の発
音チャンネルで複数の波形データを読み出し、読み出さ
れた複数の波形データをMIX1011でミキシングす
るようにしてもよい。
【0092】MIX1011の出力は、図2のミキサ2
04から出力ライン221を介して信号処理回路205
に出力される8チャンネルの内の一つである。信号処理
回路205ではブロック1012,1013に示す処理
を行なう。すなわち、MIX1001からの出力に対
し、分離フィルタ1012による成分分離を施し周期成
分と非周期成分とを取り出す。インターリーブ1013
は、この周期成分と非周期成分とを交互にMIX101
4に出力しFIFO1015に書き込むようにする。こ
れにより、サンプリングなどによりあらかじめ波形メモ
リ上に用意されている楽音波形に対し成分分離を施して
再び波形メモリに戻すリサンプリングが行なわれる。な
お、分離フィルタ1012から出力される周期成分につ
いては例えばLPC圧縮などを施してもよい。
【0093】図10(c)は、リサンプリング用のマイ
クロプログラムおよびミキサの設定の例(その2)を示
す。図10(a)と同様に、MIX1021,1023
は図2のミキサ204に対応し、FIFO1024は図
3のFIFO313に対応する。ブロック1022は、
図2の信号処理回路205に設定するマイクロプログラ
ムに対応する。MIX1021への「ch出力」は、図
2の音量変化制御回路203から入力ライン211を介
して入力する楽音信号であり、サンプリングなどにより
あらかじめ波形メモリ109上に用意されている波形デ
ータを読み出して生成した楽音波形である。この「ch
出力」は、32チャンネルのうちの一つでもよいし、複
数チャンネルでもよい。すなわち、複数の発音チャンネ
ルで複数の波形データを読み出し、読み出された複数の
波形データをMIX1021でミキシングするようにし
てもよい。
【0094】MIX1021の出力は、図2のミキサ2
04から出力ライン221を介して信号処理回路205
に出力される8チャンネルの内の一つである。信号処理
回路205ではブロック1022に示す波形処理を行な
う。この波形処理1022としては、例えば、イコライ
ザ、モジュレーション(変調)、波形圧縮、Fs変換、
物理モデル音源、およびリバーブ付与の処理などがあ
る。物理モデル音源というのは、ミキサ1021からの
出力を駆動信号として物理モデル音源を働かせてその結
果の波形を出力するということである。波形処理102
2の結果は、MIX1023を介してFIFO1024
に書き込まれ、再び波形メモリ109に録音される。こ
れにより、サンプリングなどにより波形メモリ上に存在
する楽音波形に対し各種の波形処理を施して再び波形メ
モリに戻すリサンプリングが行なわれる。
【0095】図11(a)は、楽音発生用のマイクロプ
ログラムおよびミキサの設定の例(その1)を示す。ま
た、図11(b)は、楽音発生用のマイクロプログラム
およびミキサの設定の例(その2)を示す。図10
(a)と同様に、MIX1101,1103,1111
〜1113,1117は図2のミキサ204に対応す
る。DAC1104,1118は図1のDAC112に
対応する。図11(a)ではブロック1102が、図1
1(b)ではブロック1114〜1116が、それぞ
れ、図2の信号処理回路205に設定するマイクロプロ
グラムに対応する。各MIX1101,1111〜11
13へ入力している「ch出力」は、それぞれ、図2の
音量変化制御回路203から入力ライン211を介して
入力する楽音信号(32チャンネルのうちの一つでもよ
いし、複数チャンネルでもよい)である。各MIX11
01,1111〜1113の出力は、それぞれ、図2の
ミキサ204から出力ライン221を介して信号処理回
路205に出力される8チャンネルの内の一つである。
【0096】図11(a)の場合、信号処理回路205
ではMIX1101の出力に対してリバーブ処理110
2を施し、MIX1103を介してDAC1104に出
力し放音する。図11(b)の場合、信号処理回路20
5ではMIX1111〜1113のの出力に対してそれ
ぞれコーラス処理1114、リバーブ処理1115、お
よびバリエーション1116を施し、その処理結果をM
IX1117でミキシングしてDAC1104に出力し
放音する。
【0097】なお、図10および図11の各設定例にお
いて、MIXのブロックには図示した入力以外の他の楽
音波形を入力させてミキシングを行なうようにしてもよ
い。また、これらのマイクロプログラムの設定例は、信
号処理回路205のマイクロプログラムメモリの容量に
応じて適宜並行して実行するように設定することもでき
る。例えば、図10(a)のサンプリング用のマイクロ
プログラムと図11(a)の楽音発生用のマイクロプロ
グラムとを同時に実行するようなことも可能である。ま
た、MIX1103,1117のミキシング結果を、D
AC1104,1118に出力するとともに、ライン2
23を通じてFIFO313に出力し、波形メモリ10
9へ書き込むようにしてもよい。これは、演奏された波
形データをそのまま録音する、フレーズ録音である。
【0098】次に、フローチャートを用いて、上述の電
子楽器のCPU104の処理手順を説明する。
【0099】図12(a)は、CPU104の制御プロ
グラムのうちメインルーチンの処理手順を示す。この電
子楽器の電源がオンされると、まずステップ1201
で、各種の初期設定を行なう。次にステップ1202で
何らかの起動要因があるか否かチェックし、ステップ1
203で起動要因があればステップ1204に進む。起
動要因がなければ再び1202に戻る。ステップ120
4では発生している起動要因の種類を判別しそれぞれの
処理に分岐する。起動要因が鍵盤101の鍵操作イベン
トであるとき(外部からのMIDIイベントを受け付け
ることができるようになっている場合は、MIDIイベ
ント発生も同等である)は、ステップ1205の鍵盤処
理を行ない、その後再びステップ1202に戻る。起動
要因がパネルスイッチ103の操作イベントであるとき
は、ステップ1206のパネルスイッチ処理を行ない、
ステップ1202に戻る。起動要因がXフラグ314に
関するイベントであるときは、ステップ1207でフラ
グ処理を行ない、ステップ1202に戻る。起動要因が
その他の要因(例えば後述するソフト音源の波形生成ト
リガーなど)であるときは、ステップ1208でその他
の処理を行ない、ステップ1202に戻る。起動要因が
電源スイッチの操作イベントであるときは、ステップ1
204で終了処理を行なった後、処理を終了する。
【0100】図12(b)は、図12(a)のステップ
1205の鍵盤処理のうち鍵盤101のキーオンイベン
トがあったときに実行されるキーオンイベント処理の手
順を示す。まずステップ1211で、キーオンされた鍵
のノートナンバをレジスタNNに、キーオン時のベロシ
ティをレジスタVDに、それぞれ設定する。次に、ステ
ップ1212で、発音チャンネル(第0〜第31チャン
ネル)の割り当てを行ない、割り当てたチャンネルナン
バをレジスタiに設定する。ステップ1213で、現在
設定されている音色のノートナンバNNに対応する波形
データのアドレスなどの情報を制御レジスタ(具体的に
は図3のレジスタ301や302)201に設定する。
ステップ1214では、現在設定されている音色のエン
ベロープパラメータやミキサの混合比などの設定をやは
り制御レジスタ201に対して行なう。その後、ステッ
プ1215で第iチャンネルに対しノートオン(音源1
08に対する発音指示)を送出し、既に説明したような
音源部108の楽音発生の動作を開始させる。
【0101】図13(a)は、図12(a)のステップ
1206のパネルスイッチ処理のうちサンプリングスイ
ッチ(SW)がオンされたときに実行されるサンプリン
グSWイベント処理の手順を示す。ユーザは、あらかじ
め外部回路110として外部音を入力してA/D変換す
るADCを接続しておき、サンプリングを行なうときサ
ンプリングSWをオンする。サンプリングSWがオンさ
れると、まずステップ1301で、CPU104は、R
OM105、RAM106、または外部記憶装置107
などから入力波形処理用マイクロプログラムを読み出
し、信号処理回路205内のマイクロプログラムメモリ
にロードする。ここでロードするマイクロプログラム
は、例えば図10(a)のブロック1002〜1004
で説明したような処理を行なうマイクロプログラムであ
る。次に、ステップ1302で、ADC(外部回路11
0)の動作の設定およびミキサ204の混合比などの設
定を行なう。ステップ1303では、波形メモリ109
内の書き込み領域のアドレスおよびサンプル数を設定す
る。これは、図3のXAレジスタ311に書き込み領域
のアドレスを設定し、サンプル数レジスタ315に書き
込むべきサンプルの数を設定することに相当する。ステ
ップ1304では、信号処理回路205の書き込み処理
をスタートさせ、さらにADCをスタートさせる。これ
により、図10(a)で説明したようなサンプリングの
処理が実行される。
【0102】図13(b)は、図12(a)のステップ
1206のパネルスイッチ処理のうちリサンプリングS
Wがオンされたときに実行されるリサンプリングSWイ
ベント処理の手順を示す。ユーザによりリサンプリング
SWがオンされると、まずステップ1311で、CPU
104は、ROM105、RAM106、または外部記
憶装置107などからリサンプリング用マイクロプログ
ラムを読み出し、信号処理回路205内のマイクロプロ
グラムメモリにロードする。ここでロードするマイクロ
プログラムは、例えば図10(b)および(c)で説明
したブロック1012,1013またはブロック102
2のような処理を行なうマイクロプログラムである。次
に、ステップ1312で、発音チャンネルの割り当てを
行ない割り当てたチャンネルナンバをレジスタiに設定
する。次に、ステップ1313で読み出し波形のアドレ
スを設定し、ステップ1314でエンベロープパラメー
タやミキサ204の混合比などを設定する。これは制御
レジスタ201の各種の情報を設定することに相当す
る。ステップ1315では、リサンプリングした結果の
波形データを書き込むべき波形メモリ109内のアドレ
スおよびサンプル数を設定する。これは制御レジスタ2
01のXAレジスタ311およびサンプル数レジスタ3
15を設定することに相当する。その後、ステップ13
16で信号処理回路205の書き込みをスタートし、ノ
ートオンを送出して処理を終了する。ノートオンを送出
するのは、ステップ1313で設定したアドレスから波
形データを読み出す処理を開始するためである。以上に
より、図10(b)または図10(c)に示したような
信号の流れでリサンプリングが実行される。
【0103】なお、ステップ1312で複数チャンネル
を割り当て、それらのチャンネルで読み出した楽音波形
をミキシングして所定の処理の後に波形メモリに書き込
んでもよいし(図10(b)や(c)でMIX101
1,1021に複数チャンネル出力が入力する場合)、
各チャンネルごとに所定の処理を行なった後にミキシン
グして波形メモリに書き込んでもよい(図10(b)で
複数チャンネルの各チャンネルそれぞれで1011〜1
013の処理を行ないそれらの複数系列をMIX101
4でミキシングする場合、あるいは図10(c)で複数
チャンネルの各チャンネルそれぞれで1021〜102
2の処理を行ないそれらの複数系列をMIX1023で
ミキシングする場合)。複数チャンネルをミキシングす
る場合は、各チャンネルで波形のスタート位置をずらし
てミキシングすることもできる。その場合は、ステップ
1316で、各チャンネルの波形のスタート位置のずら
し方に応じてノートオンを複数回送出する必要がある。
ただし、FIFOの書き込みスタートは1番最初のノー
トオンからである。
【0104】図14(a)は、図12(a)のステップ
1206のパネルスイッチ処理のうち波形読み出しSW
(または波形書き込みSW)がオンされたときに実行さ
れる波形読み出し(書き込み)SWイベント処理の手順
を示す。なお、波形読み出しSWイベント処理と波形書
き込みSWイベント処理とは「読み出し」と「書き込
み」とを入れ替えるだけでほとんど同様の処理であるの
で、同じ図14(a)を用いて説明する。始めに波形読
み出しSWイベント処理について説明し、次に波形書き
込みSWイベント処理について説明する。
【0105】波形読み出しSWイベント処理では、まず
ステップ1401で、波形メモリ109内の読み出し領
域のアドレスおよび読み出すサンプル数をXAレジスタ
311およびサンプル数レジスタ315に設定する。次
にステップ1402で、波形メモリ109から読み出し
たデータを書き込むべきRAM106内の書き込み領域
のアドレスを設定する。次にステップ1403で、CP
U104は、図3のXアクセス回路304に読み出しス
タートを指示して(ステップ1404は波形書き込みS
Wイベント処理のときのみ使用)、処理を終了する。以
上により、先述したXアクセス処理が開始され、楽音波
形の生成と平行して波形メモリ109からの波形データ
が図3のFIFO313に順次読み出されてくるので、
CPU104は後述するXフラグ読み出しイベント処理
(図14(b))によりFIFO313のデータを取り
出す。このような波形データの読み出し処理は、サンプ
リングやリサンプリングで波形メモリに書き込んだ波形
データを読み出して外部記憶装置に格納(リアルタイム
・ハードディスク・レコーディング)したり、読み出し
た波形にCPUで加工を施して再び波形メモリに書き込
む場合などに用いる。
【0106】波形書き込みSWイベント処理では、まず
ステップ1401で、波形メモリ109内の書き込み領
域のアドレスおよび書き込むサンプル数をXAレジスタ
311およびサンプル数レジスタ315に設定する。次
にステップ1402で、波形メモリ109に書き込むべ
き波形データが用意されているRAM106内の読み出
し領域のアドレスを設定する。次にステップ1403
で、CPU104は、図3のXアクセス回路304に書
き込みスタートを指示する。またステップ1404で、
前準備としてRAM106内の読み出し領域の最初の8
サンプルを読み出してFIFO313に書き込んで、処
理を終了する。以上により、先述したXアクセス処理が
開始され、楽音波形の生成と平行して図3のFIFO3
13の波形データが波形メモリ109の書き込み領域に
書き込まれるので、CPU104は後述するXフラグ書
き込みイベント処理(図14(c))によりFIFO3
13に波形データを書き込む。このような波形データの
書き込みは、外部記憶装置の波形データを波形メモリに
書き込んだり、読み出した波形にCPUで加工を施して
再び波形メモリに書き込む場合などに用いる。また、後
述するソフト音源における波形書き込みでも用いる。さ
らに、波形メモリ上にバッファ領域を設け、発音チャン
ネルによる該バッファ領域の波形データのループ再生を
しつつ、該領域に外部記憶装置の波形データを順次供給
すれば、外部記憶装置に記憶された長時間波形データの
ダイレクト再生も可能である。
【0107】図14(b)は、図12(a)のステップ
1207のフラグ処理のうちXフラグ読み出しイベント
処理の手順を示す。これは、CPU104による波形メ
モリ109からの読み出し処理がスタートしていた場合
(図14(a)の波形読み出しSWイベント処理が実行
されていた場合)においてXフラグがオンである(すな
わち波形メモリ109から読み出したデータがFIFO
313に存在する)ときに実行される処理である。まず
ステップ1411で、FIFO313にセットされてい
る波形データを読み出して、RAM106の書き込み領
域に書き込む。次にステップ1412で、サンプル数レ
ジスタ315のサンプル数と実際に波形メモリ109か
ら読み出してRAM106に書き込んだ波形サンプルの
数とを比較することにより読み出しが終了かどうかを判
定する。読み出し終了に至ったときは、ステップ141
3で、CPU104は読み出しストップ処理を行ない処
理を終了する。ステップ1412で未だ終了に至ってい
ないときは処理を継続する。ステップ1412の読み出
しストップ処理は、図14(a)の波形読み出しSWイ
ベント処理で設定された読み出し処理の状態を解除する
処理である。
【0108】図14(c)は、図12(a)のステップ
1207のフラグ処理のうちXフラグ書き込みイベント
処理の手順を示す。これは、CPU104による波形メ
モリ109への書き込み処理がスタートしていた場合
(図14(a)の波形書き込みSWイベント処理が実行
されていた場合)においてXフラグがオンである(すな
わちFIFO313に空きがある)ときに実行される処
理である。まずステップ1421で、RAM106の読
み出し領域から次に書き込むべき波形データを読み出し
てFIFO313の空き領域に書き込む。次にステップ
1422で、サンプル数レジスタ315のサンプル数と
実際にRAM106からFIFO313に書き込んだ波
形サンプルのサンプル数とを比較し、書き込むべきサン
プル数をすべて書き込んだか否かを判定する。すべての
データを書き込んだときは終了ということであるから、
ステップ1423で、CPU104は書き込みストップ
処理を行ない処理を終了する。ステップ1422で未だ
終了条件が満たされていないときは処理を継続する。ス
テップ1423の書き込みストップ処理により、FIF
O313に残っているデータが波形メモリ109へ書き
込まれる。
【0109】以上説明したこの実施の形態の電子楽器に
よれば、サンプルバッファを備えているため、チャンネ
ル発音に使用されない余り時間が生じるので、該余り時
間のタイムスロットを用いて、チャンネル発音以外の目
的で波形メモリアクセス(例えば、CPUアクセスやミ
キサから戻ってくる波形データの書き込みなど)を発音
中に行なうことができる。特に、波形メモリ109のア
クセス状況を検出する機能を持つXアクセス回路304
が備えられているのでので、CPU104は、Xフラグ
314を参照してそれがオンのときはどんどんデータの
読み書きができ発音中であっても高速なアクセスが可能
になる。さらに、Xアクセス処理のバッファとしてFI
FO313が備えられているので、アクセスは非常に高
速で行なえる。なお、CPU104からXフラグ314
を参照してそれがオンのときにデータを読み書きする処
理は、上記実施の形態では割り込みを用いずにCPU1
04のループ処理中で行なっているが、割り込みを用い
て実行するようにしてもよい。すなわち、FIFO31
3に空きがある(CPUからの書き込み時)、またはF
IFO313に読み出しデータがある(CPUによる読
み出し時)とき、割り込みでそれをCPU104に知ら
せ、それに応じてCPU104がFIFO313にアク
セスに行くようにしてもよい。
【0110】また、この実施の形態の電子楽器によれ
ば、波形メモリアクセスをチャンネルタイミングと独立
にしているので、アクセス回数に制限を加えるときに下
記のような利点がある。すなわち、発音数が少なけれ
ば、該制限による影響は無く、発音しているチャンネル
はすべて高次の補間(上記の例では4点補間)を実行で
きる。発音数が多くなり、アクセス回数が制限に引っ掛
かるようになると、全発音数のうちの一部のチャンネル
の補間次数を落として、補間次数は落ちるものの発音数
を減らさずに済ませることができる。
【0111】さらに、この実施の形態の電子楽器では、
波形メモリのアクセス回数を合計値で管理しているの
で、例えば、Xアクセスの要求として、全アクセス時間
の1/3使用したい、あるいは1/4使用したい、とい
うような場合に、アクセス制御が非常に簡単に行なえ
る。
【0112】この実施の形態の電子楽器によれば、DS
Pをサンプリングやリサンプリングの処理に兼用するよ
うにしているので、装置構成をそれ程複雑にすることな
く、外部から入力した楽音のサンプリングや既に波形メ
モリに格納されている波形データを読み出してエフェク
ト付与などの処理を施した後に再度波形メモリに書き込
むリサンプリングを行なうことができる。DSPでは効
果付与などの再生用の波形処理とサンプリングやリサン
プリングなどの録音用の波形処理とを並列に行なうこと
ができるので、再生と録音とを並行して実施できる。
【0113】なお、上記波形メモリのアクセス動作(処
理Bおよび取り込み処理)を、各時分割チャンネルのタ
イミング(固定)の中で行なうようにしてもよい。この
場合、すべての発音チャンネルについて、1チャンネル
当たり4つのアクセススロットがあるので、その中で各
発音チャンネルは0回〜4回のサンプル読み出しと、残
りのスロットで4回〜0回のXアクセスを行なうように
する。
【0114】また、前半区間および後半区間の各64ア
クセスを、処理B(ないし取り込み処理)とXアクセス
処理でどのように分配したら良いかに関しては、上記の
例では、優先フラグ303で、1回のXアクセスを優先
するようにしている。しかし、2アクセス以上優先させ
たい場合もある。例えば、外部記憶手段から波形メモリ
に波形データを転送したり、逆に波形メモリの波形デー
タを外部記憶手段に転送するときは、該外部記憶手段の
データ転送速度に応じて転送を行なうのが効率が良い。
その速度を達成するために必要なXアクセスの回数を優
先にするのがよい。その他の場合でも、波形データをや
り取りする相手の要求速度や最適速度に合わせて、Xア
クセスの優先回数を任意に設定できるようにすればよ
い。
【0115】次に、この実施の形態の電子楽器におい
て、CPU104によりソフトウェア音源(以下、ソフ
ト音源と呼ぶ)を実現する例について説明する。ソフト
音源とは、CPU104で所定のソフトウェアを実行し
て楽音波形を生成するものである。CPU104で生成
した楽音波形は、音源部108の所定のチャンネルを用
いて放音する。
【0116】なお、ソフト音源はCPU104がROM
105の楽音生成ソフトウェアを実行することにより実
現されるが、該ソフト音源を利用する側から見ると、楽
音生成ソフトウェアをドライバとして登録しておき、該
ドライバを起動した後、所定のソフト音源に係るAPI
(Application Program Interface)に各種演奏入力を
表わすMIDI(Musical Instruments digital Interf
ace)イベントメッセージを出力して楽音生成に関する
各種の処理をソフト音源に行なせる、という手順にな
る。CPU104は汎用の演算処理装置であり、該AP
Iに対して演奏入力を与える処理、すなわちMIDIイ
ベントを該APIに出力する処理など、ソフト音源とは
別の処理も行なっている。CPU104が該APIに対
して演奏入力を与える処理とは、例えば、鍵盤101の
操作に応じてリアルタイムで発生する演奏入力を該AP
Iに出力したり、外部MIDI機器からリアルタイムで
入力したMIDIイベントに応じた演奏入力を該API
に出力したり、RAM106上にMIDIイベントのシ
ーケンスを用意しておき(外部記憶装置107上にある
データを用いてもよい)これを順次演奏入力として該A
PIに出力したり、といった処理である。
【0117】図16を参照して、ソフト音源の楽音生成
原理を説明する。図16において、S1〜S4の各区間
は、所定のサンプル数(例えば、128サンプル)分の
再生を行なう単位となる時間フレームを示す。「演奏入
力」のライン上に記載してある下向き矢印は、その時刻
で演奏入力があったことを示す。演奏入力とは、ソフト
音源に係るAPI(Application Program Interface)
に、ノートオン、ノートオフ、アフタタッチ、プログラ
ムチェンジなどの各種のMIDIイベントが入力される
ことである。図16の例では、フレームS1で3つ、S
2で2つ、S3で1つの演奏入力がそれぞれあったとい
うことである。ソフト音源は、複数チャンネル分の複数
楽音を同時生成可能であり、RAM106上に用意され
る複数チャンネル分のソフト音源レジスタで各楽音を制
御するようになっている。ソフト音源は、演奏入力とし
てノートオンイベント(例えば鍵盤101の鍵のノート
オン)を入力したときは、ソフト音源レジスタに関して
発音割り当てを行ない、割り当てたチャンネルに対応す
るソフト音源レジスタに該チャンネルの発音を制御する
各種のデータとノートオンを書き込む。演奏入力として
ノートオフイベントを入力したときは、該当するチャン
ネルに対応するソフト音源レジスタにノートオフを書き
込む。ノートオンやノートオフ以外の演奏入力(例えば
アフタタッチの変更など)についても同様に、該当する
チャンネルに対応するソフト音源レジスタに演奏入力に
応じたデータを書き込む。ある時間フレームでソフト音
源レジスタに書込まれたデータは、データの種類にかか
わりなく、必ず次の時間フレームから波形生成演算に使
用される。
【0118】図16の「CPUによる波形生成」の矩形
1601〜1604は、CPU104により波形生成演
算を実行する区間を示す。この波形生成演算では、ソフ
ト音源レジスタに設定された複数チャンネル分のデータ
に基づいて複数チャンネル分の楽音波形生成を行なう。
演奏入力に応じてソフト音源レジスタが書き換えられ、
一方、演奏入力のない期間は、ソフト音源レジスタは過
去に書込まれたデータを保持している。したがって、各
波形生成の区間1601〜1604では、直前あるいは
さらに前のフレームで検出した演奏入力に応じた波形生
成演算を実行することになる。フレームが切り替わるタ
イミングでフレーム割り込みが発生するので、各フレー
ムでの波形生成演算はこのフレーム割り込みを契機とし
て(後述の図15(b))実行される。
【0119】例えば、フレームS1で検出された3つの
演奏入力に対しては、次のフレームS2の先頭のフレー
ム割り込みを契機として区間1602で波形生成演算を
行なう。CPU104は、この波形生成演算により、R
AM106上に波形データを生成する。生成した波形デ
ータは、当該フレームの残りの時間区間を用いて波形メ
モリ109上に用意されているバッファ領域に書き込
む。このバッファ領域としては、連続したアドレスに用
意された同じ大きさの2つのバッファ領域PB0とPB
1(2つをまとめてダブルバッファと呼ぶ)を用いる。
バッファ領域への書き込みは、上述したXアクセス処理
(特にCPU104から波形メモリ109への書き込み
処理)によって行なう。また、フレーム毎にバッファP
B0とPB1とを交互に用いるようにする。例えば、フ
レームS1の区間1601で生成した波形データは次の
フレームの開示時点までにRAM106から波形メモリ
109上のバッファ領域PB0に書き込み、フレームS
2の区間1602で生成した波形データはバッファ領域
PB1に書き込み、フレームS3の区間1603で生成
した波形データはバッファ領域PB0に書き込み、フレ
ームS4の区間1604で生成した波形データはバッフ
ァ領域PB1に書き込み、…というように、交互にPB
0とPB1に波形データを書き込む。
【0120】バッファPB0およびPB1に書き込んだ
波形データの読み出し再生は、図16の「読み出し再
生」に示すように、フレーム割り込みを契機として、波
形生成したフレームの次のフレームの区間で行なう。す
なわち、フレームS1で生成しPB0に書き込んだ波形
データは次のフレームS2で、フレームS2で生成しP
B1に書き込んだ波形データは次のフレームS3で、フ
レームS3で生成しPB0に書き込んだ波形データは次
のフレームS4で、…というように、PB0とPB1の
波形データを交互に読み出し再生していく。
【0121】図15(a)は、図12(a)のステップ
1206のパネルスイッチ処理のうちソフト音源スター
トSWがオンされたときに実行されるソフト音源スター
トSWイベント処理の手順を示す。ユーザによりソフト
音源スタートSWがオンされると、まずステップ150
1で、ソフト音源で生成した楽音波形を発音するために
用いる発音チャンネル(第0〜第31チャンネル)の割
り当てを行ない、割り当てたチャンネルナンバをレジス
タiに設定する。次に、ステップ1502で、音源部1
08に対して、当該チャンネルiによりダブルバッファ
領域PB0,PB1のループ読み出し再生を行なうよう
に設定する。これは、図16の「読み出し再生」で示し
たように、フレーム割り込みごとにバッファPB0とP
B1とを交互に読み出し再生するように、音源部108
に指示情報を送出して設定する処理である。具体的に
は、ダブルバッファ領域PB0,PB1は連続したアド
レスに用意された同じサイズのバッファ領域であるの
で、領域PB0の先頭アドレスをループのスタートアド
レス(絶対アドレスWA)として設定し、さらに(領域
PB1の末尾アドレス)から(領域PB0の先頭アドレ
ス)を引き算した値をループサイズ(相対アドレスLP
A)として設定し、相対アドレスASを0に設定すれ
ば、ループ読み出しによりPB0〜PB1の領域が繰り
返し読み出される。ステップ1503では、エンベロー
プパラメータやミキサの混合比などの設定を行なう。な
お、ここで設定されるエンベロープパラメータは、単に
ループ読み出しのフェードイン/フェードアウトをする
のに使うだけで、発生する楽音のエンベロープ(楽音音
量の時間的変化)を制御するのではない。ミキサの混合
比も、1楽音の混合比ではなく、ソフト音源で生成した
複数楽音の混合波形の出力先を制御する混合比である。
【0122】次に、ステップ1504で、CPU104
で生成した楽音波形を始めに書き込む書き込み領域を波
形メモリ109内のバッファPB0とするため、図3の
XAレジスタ311に初期値としてバッファPB0の先
頭アドレスを設定し、サンプル数レジスタ315にサン
プル数としてバッファPB0の容量(上記ループサイズ
LPAの1/2)を設定する。ステップ1505で、C
PU104は、波形メモリ109への書き込み処理(X
アクセス処理)の前準備を行ない、ダブルバッファPB
0,PB1をゼロクリアする。ステップ1506で、当
該チャンネルiにノートオンを送出し、図16で説明し
た所定時間間隔のフレーム割り込みを開始させ、処理を
終了する。なお、フレーム割り込みは、バッファPB0
およびPB1をループ読み出しする際のリターン発生時
(すなわちPB1の再生終了時)と、ループ読み出しの
中間点(LPA/2)通過時(すなわちPB0の再生終
了時)に発生する。図示していないが、フレーム割り込
みを発生する割り込み発生回路が音源108の内部に設
けられている。割り込みの代わりに、CPUが「読み出
し再生」用に設定した発音チャンネルのアドレス現在値
をチェックしてフレームの変わるタイミングを検出する
ようにしてもよい。
【0123】図15(b)は、図16で説明した所定時
間の時間フレームごとに発生するフレーム割り込みで実
行するフレーム割り込み処理の手順を示す。フレーム割
り込みが発生すると、まずステップ1511で、現在ソ
フト音源レジスタに設定されている演奏入力に対応する
楽音波形をRAM106上に生成する。これは、図16
において各フレーム割り込みごとに実行する波形生成演
算1601〜1604に相当する。次に、ステップ15
12で該生成した楽音波形を書き込むべき波形メモリ1
09内の書き込み領域のアドレス(PB0またはPB1
の先頭アドレス)および書き込むサンプル数(ループサ
イズLPAの1/2)をXAレジスタ311およびサン
プル数レジスタ315に設定する。図16で説明したよ
うに、この書き込み領域としてはバッファ領域PB0と
PB1とを交互に用いる。次にステップ1513で、C
PU104は、図3のXアクセス回路304に書き込み
スタートを指示する。またステップ1514で、前準備
として楽音波形の最初の8サンプルをFIFO313に
書き込んで、処理を終了する。この後、Xアクセス処理
によりFIFO313のデータが波形メモリに書き込ま
れる毎に(Xフラグが1になって)、図14(c)の処
理と同じような処理により、残りの楽音波形サンプルが
順次FIFOに供給される。
【0124】以上により、先述したXアクセス処理が開
始され、ステップ1511で生成した楽音波形が波形メ
モリ109のバッファ領域PB0またはPB1に書き込
まれる。一方、図15(a)の処理により、図16の
「読み出し再生」に示したようにダブルバッファPB0
とPB1とを交互に読出し再生する処理が開始している
ので、後は図15(b)のようにフレーム割り込みごと
に楽音波形を生成してダブルバッファに書き込めば、そ
の楽音波形が第iチャンネルで発音される。このソフト
音源で発生した楽音は第iチャンネルでミキサ204に
入力するので、上述したように、この楽音に対して信号
処理回路205や外部回路110で効果付与などの信号
処理を施してDAC112に出力したり再び波形メモリ
109に書き込むようにもできる。
【0125】また、この第iチャンネルにおけるダブル
バッファPB0とPB1の読み出し処理のFナンバ(図
3の処理Aで用いたピッチPITCH)を調整すること
により、再生ピッチを調整することができ、いわゆるオ
ーバサンプリングを行なうこともできる。例えば、ソフ
ト音源で生成した楽音波形を出力する音源部108の第
iチャンネルは48kHzのサンプリング周波数で動作
するようにし、CPU104はサンプリング周波数24
kHzで楽音波形を生成する場合、第iチャンネルのF
ナンバを0.5に設定すればよい。この場合は、補間回
路326で48kHzのサンプリング周波数でも折り返
しノイズが発生しないように高調波部分をカットして補
間が行なわれる。また、ソフト音源で生成した楽音波形
を出力する音源部108の第iチャンネルは第1のサン
プリング周期(周波数)で動作するものであり、CPU
104で楽音波形を生成するほうでは第2のサンプリン
グ周期(周波数)を前提としている場合は、第1のサン
プリング周期(周波数)=第2のサンプリング周期(周
波数)であれば、第iチャンネルのFナンバを1に設定
すれば良い。第1のサンプリング周期(周波数)≠第2
のサンプリング周期(周波数)であれば、これらのサン
プリング周期(周波数)の比に応じて、第iチャンネル
のFナンバを1に設定すれば良い。例えば、上述したよ
うに、音源部108の第iチャンネルは48kHzでC
PU104は24kHzで楽音波形を生成する場合は、
Fナンバ=0.5、音源部108の第iチャンネルは4
8kHzでCPU104は16kHzで楽音波形を生成
する場合は、Fナンバ=0.333、という具合であ
る。
【0126】従来のソフト音源では、図16に示したよ
うな読み出し再生のためにサンプリング周期ごとにCP
Uに割り込みをかけて、その割り込みごとにCPUが生
成した楽音波形を音源部にDMA転送するというような
ことを行なっていたので、CPUに対して割り込みが頻
繁にかかっていた。この実施の形態のソフト音源では、
CPU104はフレーム割り込みごとの処理を行なえ
ば、あとはXアクセス処理で自動的に波形メモリ109
に書き込んで再生してくれるので、CPUに対する割り
込み処理が削減できるという効果がある。
【0127】なお、ソフト音源の機能を用いる場合は、
図16で説明したように所定のフレームの区間における
演奏入力を保持しておく必要があるので、キーオンイベ
ント処理は、図12(b)の代わりに、発生したキーオ
ンイベントを記憶しておく処理を行なうようにする。
【0128】図17は、図3のXアクセス回路304の
変形例を示す。図3のXAレジスタ311をXA1レジ
スタ1701、XA2レジスタ1702、およびセレク
タ1703に置き換え、図3のセレクタ312およびF
IFO313をFIFO1704、ラッチ1705、お
よびセレクタ1706に置き換えるものである。他の部
分は上述の実施の形態のままとする。
【0129】XA1レジスタ1701およびFIFO1
704は、Xアクセス処理でCPU104から波形メモ
リ109をアクセスする際の、アクセスアドレスを設定
するレジスタおよびアクセスデータを設定するFIFO
である。XA2レジスタ1702およびラッチ1705
は、Xアクセス処理でミキサ204から出力ライン22
3を介して波形メモリ109に書き込みを行なう際の、
アクセスアドレスを設定するレジスタおよびミキサ20
4からのデータを記憶するラッチである。この構成で、
セレクタ1703,1706をXアクセス処理の区間で
時分割で切り替えるようにして、ミキサ204から戻っ
てくる波形データの波形メモリ109への書き込みと、
CPU104からの波形メモリ109のアクセスとを、
並行して行なうことができるようにする。
【0130】特に、ミキサ204からはサンプリング周
期ごとに波形データが戻ってくるが、その波形データは
捨てる訳にはいかないので、必ずラッチ1705に記憶
することとする。そして、サンプリング周期ごとのXア
クセス処理の区間で必ず1回は、セレクタ1703でX
A2レジスタ1702を選択しセレクタ1706でラッ
チ1705を選択するようにして、ラッチ1705の波
形データをXA2レジスタ1702で指示されたアドレ
スに書き込む。Xアクセス処理のその他の区間では、セ
レクタ1703でXA1レジスタ1701を選択しセレ
クタ1706でFIFO1704を選択するようにし
て、CPU104による波形メモリ109のアクセスを
実行する。XA1レジスタ1701およびXA2レジス
タ1702のアドレスを順次インクリメントする機能
は、図3で説明したのと同じである。なお、Xアクセス
処理の区間では、ラッチ1705の波形データの書き込
みを優先して必ず1回は行なうようにする必要がある
が、Xアクセス処理の区間そのものが確保できない場合
も考えられるので、上述の優先フラグ303をオンして
Xアクセス処理で必ず何回かのアクセスができるように
するとよい。
【0131】このような構成により、例えば、サンプリ
ングやリサンプリングした波形をミキサ204からラッ
チ1705経由で波形メモリ109に書き込み、波形メ
モリ109上にある程度溜まったところでCPU104
により当該波形データを読み出して、外部記憶装置(ハ
ードディスクなど)に送れば、リアルタイム・ハードデ
ィスク・レコーディングを行なうことができる。1サン
プリング周期で1回書き込まれるラッチ1705経由の
波形データの処理速度に比較すると、CPU104によ
る読み出し処理の処理速度は速い。特に、FIFOを用
いているので読み出し速度はさらに高速になる。そこ
で、波形メモリ109上に溜まったデータを一気にCP
U104で読み出して、ハードディスクなどに書き込む
ようにできる。
【0132】なお、上記形態では、図3の読み書き回路
202において処理A演算回路321と処理B演算回路
325とを独立した構成としたが、処理A演算回路32
1と処理B演算回路325とをひとまとめにして、1つ
の演算回路を時分割で共用することにより処理Aと処理
Bとを行なうようにしてもよい。
【0133】上記形態では、波形メモリの波形サンプル
を16ビット非圧縮の形式としたが、他の形式でもよ
い。例えば、1アクセスで16ビットを読み出せること
はそのままにして、8ビット非圧縮または8ビット圧縮
形式にしてもよい。ただし、この場合、サンプル数とア
クセス数とが異なるので、その調整が必要である。ま
た、圧縮形式の場合は、連続してサンプルを読み出して
いかないと再生できなくなるため、飛ばし読みの際に対
処が必要である。
【0134】波形メモリとしてDRAMを用いた場合
は、必ずリフレッシュが必要であるので、Xアクセス処
理の区間でリフレッシュを行なうようにしてもよい。ま
た、CPUからの波形メモリの読み出し/書き込みは、
その緊急度に応じて対応するとよい。例えば、CPUか
らの波形メモリアクセスの緊急度が低いときは、音源チ
ャンネルで使用されなかった空きタイムスロットを用い
てアクセスを行なう。また、緊急度が高いときは、始め
にCPUからの波形メモリアクセスの分を確保し、残り
を音源チャンネルで使用する。
【0135】また、上記形態では、図8,9に示したよ
うに処理Bおよび取り込みを行なう前半および後半の区
間の前側のスロットで連続した波形メモリのアクセスを
行なっているが、前側でなくてもよい。例えば、前半/
後半区間内の前側のスロットでXアクセス処理を行な
い、後側のスロットで各チャンネルについての連続した
波形メモリのアクセスを行なうようにしてもよい。ただ
しその場合、例えば図8の取り込み前半区間804の処
理が終了して、波形バッファに補間に必要な全サンプル
が用意された後に、補間前半区間806の補間処理が始
まるようにする必要がある(後半処理も同様)。そのた
め、補間を行なう区間をずらす必要がある(取り込み前
半処理が終了した後に補間前半処理を開始し、取り込み
後半処理が終了した後に補間後半処理を開始すれば十
分)。さらに、Xアクセス処理のタイムスロットを前半
区間あるいは後半区間中で分散させてもよい。
【0136】さらに、上記形態では、図8,9に示した
ように各処理を1サンプリング周期を前半と後半に分割
した区間で実行するようにしているが、区間の分け方は
これに限らない。例えば、1サンプリング周期を1/
3,1/4,…に分割し、それらの区間を単位にして各
処理を行なうようにしてもよい。また、等分割でなく、
変則的な区間の分割を行なってもよい。さらに、区間を
分けずに、1サンプリング周期を単位としてもよい。た
だし、処理Bでアドレス送り出しを行なって波形メモリ
をアクセスする前に、処理AによるARAMの書き換え
が行なわれることがないことを、保証する必要がある。
そのためには、例えば区間を分けない場合は、ARAM
を2セット用意し、処理Aによるアドレスの書き換えと
処理Bによるアドレスの送り出しとで、2セットのアド
レスRAMを交互に使用するなどの方法を採る必要があ
る。なお、1サンプリング周期を前半と後半に分けて処
理する方式によれば、1セットのARAMで処理Aと処
理Bとを交互に行なうことができるので、回路構成が簡
易にでき合理的といえる。
【0137】
【発明の効果】以上説明したように、請求項1に係る発
明によれば、所定サンプリング周期で複数チャンネル時
分割で動作することにより該複数チャンネルの楽音を生
成する波形メモリ音源装置において、チャンネル読み出
しに使用されない余り時間の全部を使用して第2アクセ
ス手段による波形メモリのアクセスが可能である。した
がって、発音を邪魔しない範囲で、第2のアクセスを最
大限スピードアップできる。
【0138】請求項2に係る発明によれば、制限回数内
のアクセスが不可能な場合に、一部のチャンネルについ
ては算出された各チャンネルのアクセス回数よりも少な
い回数のアクセスを行ない、残りのチャンネルについて
は算出されたアクセス回数でアクセスを行なうようにし
ているので、発音チャンネル数を減らさずに、第2アク
セス手段によるアクセスの最低限の速度を保証できる。
また、発音チャンネル数が少ないときは、多いアクセス
回数を活かして、各チャンネルでクォリティの良い楽音
生成ができる。発音チャンネルが少ないときは、少ない
アクセス回数になり楽音クォリティの下がってしまうチ
ャンネルが生じるものの、発音数は減らさずに済む。
【0139】請求項3または4,5のように複数の波形
サンプルを一時記憶するためのバッファを設ければさら
に高速なアクセスが可能である。
【0140】請求項4,5に係る発明によれば、波形メ
モリからの読み出し、ないし、波形メモリへの書き込み
は、楽音生成手段のアクセスしていない余り時間を利用
して行なう。余り時間を利用してアクセスする場合、サ
ンプリング周期の中のどのタイミングでアクセスができ
るか分からないので、書き込むべきデータを持った指示
手段が長く待たされたり、あるいは連続して発生した余
り時間を有効に利用してアクセスできなかったりする場
合がある。しかし、請求項4,5に係る発明によればバ
ッファを設けているため、該バッファに取り敢えずのデ
ータを入れておくことができるし、連続した余り時間が
あればバッファの容量の範囲でそれを有効に活用でき
る。
【0141】請求項6〜8に係る発明によれば、ソフト
ウエアによる生成処理で生成された波形データを、ハー
ドウエアによる効果付与にスムーズに転送することがで
きる。また、生成処理で任意の生成レートで生成された
波形データを、一定のサンプリング周波数で動作する信
号処理回路に供給し、効果付与処理することができる。
さらに、請求項8に係る発明によれば、ソフトウエアに
よる生成処理で生成された波形データと、ハードウエア
音源で生成された波形データとを、共通のハードウエア
による効果付与にスムーズに転送することができる。ま
た、ハードウエア音源の1つのチャンネルを使用して、
ソフトウエアで生成された楽音データの受け渡しを行な
っているため、特殊なハードウエアを付加することな
く、ソフトウエア音源による楽音データをハードウエア
の信号処理手段に入力することができる。
【図面の簡単な説明】
【図1】この発明に係る波形メモリ音源装置を適用した
電子楽器の全体のブロック構成図
【図2】この発明に係る波形メモリ音源装置を適用した
音源部のブロック構成図
【図3】制御レジスタおよび読み書き回路の詳細図
【図4】制御RAMの構成図
【図5】アドレスRAMのメモリマップを示す図
【図6】波形バッファの構成図
【図7】FIFOの使用方法を示す図
【図8】読み書き回路の要部のタイミング図
【図9】図8の各処理中のチャンネルの様子を示す図
【図10】マイクロプログラムおよびミキサ設定の励
(その1)を示す図
【図11】マイクロプログラムおよびミキサ設定の励
(その2)を示す図
【図12】メインルーチンおよびキーオンイベント処理
ルーチンのフローチャート図
【図13】サンプリングSWイベント処理ルーチンおよ
びリサンプリングSWイベント処理ルーチンのフローチ
ャート図
【図14】波形読み出し(書き込み)SWイベント処理
ルーチン、Xフラグ(読み出し)イベント処理ルーチ
ン、およびXフラグ(書き込み)イベント処理ルーチン
のフローチャート図
【図15】ソフト音源スタートSWイベント処理ルーチ
ンおよびソフト音源フレーム割り込み処理ルーチンのフ
ローチャート図
【図16】ソフト音源の楽音生成原理を説明するための
【図17】Xアクセス回路の変形例を示す図
【符号の説明】
101…鍵盤、102…表示部、103…スイッチ群
(SW)、104…中央処理装置(CPU)、105…
リードオンリメモリ(ROM)、106…ランダムアク
セスメモリ(RAM)、107…外部記憶装置、108
…音源部、109…波形メモリ、110…外部回路、1
11…遅延メモリ、112…ディジタルアナログ変換器
(DAC)、113…サウンドシステム(SS)、11
4…バスライン114、201…制御レジスタ、202
…読み書き回路、203…音量変化制御回路、204…
ミキサ、205…信号処理回路、206…インターフェ
ース、301,302…レジスタ、303…優先フラ
グ、304…Xアクセス回路、311…XAレジスタ、
312…セレクタ、313…FIFO(First I
n First Out(先入れ先出し)の8段のレジ
スタ)、314…Xフラグ、315…サンプル数レジス
タ、321…処理A演算回路、322…アドレスRAM
(ARAM)、323…アキュムレータ(ACC)、3
24…制御RAM、325…処理B演算回路、326…
補間回路、327…波形バッファ、328…取り込み回
路、329,330…セレクタ(SEL)。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】所定サンプリング周期で複数チャンネル時
    分割で動作することにより、該複数チャンネルの楽音を
    生成する波形メモリ音源装置において、 波形サンプルを記憶する波形メモリであって、前記所定
    サンプリング周期内に所定回数のアクセスが可能なもの
    と、 各チャンネルのアドレスを記憶するためのアドレス記憶
    手段と、 各チャンネルの所定数の波形サンプルを記憶するための
    波形サンプル記憶手段と、 前記波形メモリの読み出しに先立って、各チャンネルの
    アドレスを作成し、前記アドレス記憶手段に記憶させる
    アドレス作成手段と、 各チャンネルのアドレスの進み量に基づいて、各チャン
    ネルについての前記波形メモリのアクセス回数を算出す
    るアクセス回数算出手段と、 前記アドレス記憶手段に記憶された各チャンネルのアド
    レスに基づき、前記アクセス回数算出手段で算出された
    各チャンネルのアクセス回数ずつ、前記波形メモリをア
    クセスし、読み出した各チャンネルの波形サンプルで前
    記波形サンプル記憶手段に記憶された所定数の波形サン
    プルを更新する第1アクセス手段と、 前記波形サンプル記憶手段に記憶された各チャンネルの
    所定数の波形サンプルに基づき、各チャンネルのサンプ
    リング周期ごとの楽音を生成する楽音生成手段と、 前記第1アクセス手段による前記波形メモリのアクセス
    状況を検出するアクセス状況検出手段と、 前記波形メモリの読み出しまたは書き込みの少なくとも
    一方を行なう第2アクセス手段であって、前記アクセス
    状況検出手段により検出したアクセス状況に応じて、前
    記第1アクセス手段による前記波形メモリのアクセスに
    使用されない余り時間を利用して前記波形メモリのアク
    セスを行なうものとを備えたことを特徴とする波形メモ
    リ音源装置。
  2. 【請求項2】所定サンプリング周期で複数チャンネル時
    分割で動作することにより、該複数チャンネルの楽音を
    生成する波形メモリ音源装置において、 波形サンプルを記憶する波形メモリであって、前記所定
    サンプリング周期内に所定回数のアクセスが可能なもの
    と、 各チャンネルのアドレスを記憶するためのアドレス記憶
    手段と、 各チャンネルの所定数の波形サンプルを記憶するための
    波形サンプル記憶手段と、 前記波形メモリの読み出しに先立って、各チャンネルの
    アドレスを作成し、前記アドレス記憶手段に記憶させる
    アドレス作成手段と、 各チャンネルのアドレスの進み量に基づいて、各チャン
    ネルについての前記波形メモリのアクセス回数を算出す
    るアクセス回数算出手段と、 所定数のチャンネルについて、前記アクセス回数算出手
    段で算出したアクセス回数を累算し、累算回数を出力す
    る累算手段と、 制限回数を発生する制限回数発生手段と、 前記所定数のチャンネルに対応したアクセス期間内に、
    前記制限回数内で前記累算回数分のアクセスが可能かど
    うかを判定する判定手段と、 (i)前記判定手段が可能と判定した場合、前記アドレス
    記憶手段に記憶された各チャンネルのアドレスに基づ
    き、前記アクセス回数算出手段で算出された各チャンネ
    ルのアクセス回数ずつ、前記波形メモリをアクセスし、
    読み出した各チャンネルの波形サンプルで前記波形サン
    プル記憶手段に記憶された所定数の波形サンプルを更新
    し、 (ii)前記判定手段が不可能と判定した場合、一部のチャ
    ンネルについては前記アクセス回数算出手段で算出され
    た各チャンネルのアクセス回数よりも少ない回数のアク
    セスを行なうとともに、残りのチャンネルについては算
    出されたアクセス回数でアクセスを行ない、読み出した
    各チャンネルの波形サンプルで前記波形サンプル記憶手
    段に記憶された所定数の波形サンプルを更新する第1ア
    クセス手段と、 前記波形サンプル記憶手段に記憶された各チャンネルの
    所定数の波形サンプルに基づき、各チャンネルのサンプ
    リング周期ごとの楽音を生成する楽音生成手段と、 前記第1アクセス手段による前記波形メモリのアクセス
    状況を検出するアクセス状況検出手段と、 前記波形メモリの読み出しまたは書き込みの少なくとも
    一方を行なう第2アクセス手段であって、前記アクセス
    状況検出手段により検出したアクセス状況に応じて、前
    記第1アクセス手段による前記波形メモリのアクセスに
    使用されない余り時間を利用して前記波形メモリのアク
    セスを行なうものとを備えたことを特徴とする波形メモ
    リ音源装置。
  3. 【請求項3】前記第2アクセス手段と前記波形メモリと
    の間に複数の波形サンプルを一時記憶できるバッファを
    設け、前記第2アクセス手段は、該バッファを介して前
    記波形メモリの読み出しまたは書き込みを行なう請求項
    1または2の何れか1つに記載の波形メモリ音源装置。
  4. 【請求項4】所定サンプリング周期で複数チャンネル時
    分割で動作することにより、該複数チャンネルの楽音を
    生成する波形メモリ音源装置において、 波形サンプルを記憶する波形メモリであって、前記所定
    サンプリング周期内に所定回数のアクセスが可能なもの
    と、 各チャンネルのアドレスを発生するアドレス発生手段
    と、 前記アドレス発生手段の発生する各チャンネルのアドレ
    スに基づき、前記波形メモリをアクセスし、読み出した
    波形サンプルに基づき各チャンネルのサンプリング周期
    ごとの楽音を生成する楽音生成手段と、 前記楽音生成手段による前記波形メモリのアクセスとは
    別に、前記波形メモリのアクセスを行なうことを指示す
    る指示手段と、 前記波形メモリから読み出された複数の波形サンプルを
    一時記憶するためのバッファと、 前記指示手段の指示に応じ、前記所定回数のアクセスの
    うち、前記楽音生成手段によるアクセスのされていない
    余り時間を検出し、検出された余り時間を利用して前記
    波形メモリから前記バッファに波形サンプルを読み出す
    波形メモリ読み出し手段と、 前記バッファ上に読み出された波形サンプルが存在する
    か否かを検出するアクセス状況検出手段と、 前記指示手段が前記波形メモリの読み出しを指示してい
    る場合に、前記アクセス状況検出手段により前記バッフ
    ァ上に読み出された波形サンプルが存在することを検出
    したとき、それらの波形サンプルを前記バッファから読
    み出すバッファ読み出し手段とを備えたことを特徴とす
    る波形メモリ音源装置。
  5. 【請求項5】所定サンプリング周期で複数チャンネル時
    分割で動作することにより、該複数チャンネルの楽音を
    生成する波形メモリ音源装置において、 波形サンプルを記憶する波形メモリであって、前記所定
    サンプリング周期内に所定回数のアクセスが可能なもの
    と、 各チャンネルのアドレスを発生するアドレス発生手段
    と、 前記アドレス発生手段の発生する各チャンネルのアドレ
    スに基づき、前記波形メモリをアクセスし、読み出した
    波形サンプルに基づき各チャンネルのサンプリング周期
    ごとの楽音を生成する楽音生成手段と、 前記楽音生成手段による前記波形メモリのアクセスとは
    別に、前記波形メモリのアクセスを行なうことを指示す
    る指示手段と、 前記波形メモリに書き込むべき複数の波形サンプルを一
    時記憶するためのバッファと、 前記指示手段の指示に応じ、前記所定回数のアクセスの
    うち、前記楽音生成手段によるアクセスのされていない
    余り時間を検出し、検出された余り時間を利用して前記
    バッファから前記波形メモリに波形サンプルを書き込む
    波形メモリ書き込み手段と、 前記バッファが、前記波形メモリに書き込むべき複数の
    波形サンプルで満たされているか否かを検出するアクセ
    ス状況検出手段と、 前記指示手段が、前記波形メモリへの書き込みを指示し
    ている場合に、前記アクセス状況検出手段により前記バ
    ッファが波形サンプルで満たされていないことを検出し
    たとき、前記波形メモリに書き込むべき波形サンプルを
    前記バッファに書き込むバッファ書き込み手段とを備え
    たことを特徴とする波形メモリ音源装置。
  6. 【請求項6】演奏入力を受け付ける演奏入力受け付け手
    段と、 制御プログラムと生成プログラムを記憶したプログラム
    メモリと、 該プログラムメモリに記憶されている制御プログラムと
    生成プログラムとを並列的に実行する処理手段と、 波形データを記憶する波形メモリと、 生成レートを指定する指定手段と、 所定のサンプリング周期ごとに、前記指定手段により指
    定された生成レートに応じた速度で進行し所定のループ
    領域を繰り返し指定する読み出しアドレスを発生し、該
    アドレスの整数部に応じて前記波形メモリ中の波形デー
    タを読み出し、該アドレスの小数部に応じて補間を行な
    うことにより、補間サンプルを生成して楽音データとし
    て出力する波形メモリ読み出し方式の音源手段であっ
    て、前記サンプリング周期中に前記波形メモリをアクセ
    スしていない空き時間が生じるものと、 前記音源手段から出力される楽音データに信号処理を施
    し、効果を付与した楽音データを出力する信号処理手段
    とを備え、 前記処理手段で前記制御プログラムを実行することによ
    り、前記演奏入力受け付け手段により受け付けた演奏入
    力に応じた楽音を生成するための、複数チャンネル分の
    楽音制御データを生成し、 前記処理手段で前記生成プログラムを実行することによ
    り、所定時間ごとに、前記楽音制御データに基づいて、
    複数チャンネル分の複数楽音の混合波形データを前記生
    成レートに応じたサンプル数分生成し、前記空き時間を
    利用して前記波形メモリに順次書き込み、これにより前
    記音源手段によって該書き込んだ混合波形データに基づ
    く楽音データを出力させることを特徴とする楽音発生装
    置。
  7. 【請求項7】前記音源手段は、所定の第1のサンプリン
    グ周期で動作し、 前記処理手段で前記生成プログラムを実行することによ
    り生成する所定サンプル数分の混合波形データは、所定
    の第2のサンプリング周期で読み出すことを前提にして
    いるものであるとき、 前記生成レートを、前記第1のサンプリング周期の値と
    前記第2のサンプリング周期の値との比に応じた値とす
    ることを特徴とする請求項6に記載の楽音発生装置。
  8. 【請求項8】演奏入力を受け付ける演奏入力受け付け手
    段と、 制御プログラムと生成プログラムを記憶したプログラム
    メモリと、 該プログラムメモリに記憶されている制御プログラムと
    生成プログラムとを並列的に実行する処理手段と、 波形データを記憶する波形メモリと、 所定のサンプリング周期ごとに、時分割で、与えられた
    楽音制御データに基づいて複数チャンネル分の読み出し
    アドレスを発生し、該読み出しアドレスに応じて前記波
    形メモリ中の波形データを読み出し、読み出した波形デ
    ータに基づき複数チャンネル分の楽音データを出力する
    波形メモリ読み出し方式の音源手段であって、前記サン
    プリング周期中に前記波形メモリをアクセスしていない
    空き時間が生じるものと、 前記音源手段から出力される楽音データに信号処理を施
    し、効果を付与した楽音データを出力する信号処理手段
    とを備え、 前記処理手段で前記制御プログラムを実行することによ
    り、前記演奏入力受け付け手段により受け付けた演奏入
    力に応じて、複数チャンネル分の第1楽音制御データお
    よび第2楽音制御データを生成し、前記第1楽音制御デ
    ータは前記音源手段に与えて、前記音源手段で前記第1
    楽音制御データに基づく第1楽音データを生成出力さ
    せ、 前記処理手段で前記生成プログラムを実行することによ
    り、所定時間ごとに、前記第2楽音制御データに基づい
    て、複数チャンネル分の複数楽音の混合波形データを所
    定サンプル数分生成し、前記空き時間を利用して前記波
    形メモリに順次書き込むとともに、 前記音源手段の少なくとも1つのチャンネルが、前記処
    理手段で前記生成プログラムを実行することにより前記
    波形メモリに書き込んだ波形データを定常的に読み出し
    て、第2楽音制御データに基づく第2楽音データを生成
    出力するように構成されていることを特徴とする楽音発
    生装置。
JP09220048A 1996-08-02 1997-07-31 波形メモリ音源装置および楽音発生装置 Expired - Fee Related JP3137043B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP09220048A JP3137043B2 (ja) 1996-08-02 1997-07-31 波形メモリ音源装置および楽音発生装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP22061996 1996-08-02
JP8-220619 1996-08-02
JP09220048A JP3137043B2 (ja) 1996-08-02 1997-07-31 波形メモリ音源装置および楽音発生装置

Publications (2)

Publication Number Publication Date
JPH1097258A true JPH1097258A (ja) 1998-04-14
JP3137043B2 JP3137043B2 (ja) 2001-02-19

Family

ID=26523492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09220048A Expired - Fee Related JP3137043B2 (ja) 1996-08-02 1997-07-31 波形メモリ音源装置および楽音発生装置

Country Status (1)

Country Link
JP (1) JP3137043B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013160870A (ja) * 2012-02-03 2013-08-19 Casio Comput Co Ltd 楽音発生装置およびプログラム
JP2013186368A (ja) * 2012-03-09 2013-09-19 Casio Comput Co Ltd 楽音発生装置、プログラム及び楽音発生方法
JP2014112198A (ja) * 2012-11-05 2014-06-19 Yamaha Corp 音発生装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013160870A (ja) * 2012-02-03 2013-08-19 Casio Comput Co Ltd 楽音発生装置およびプログラム
JP2013186368A (ja) * 2012-03-09 2013-09-19 Casio Comput Co Ltd 楽音発生装置、プログラム及び楽音発生方法
US8962965B2 (en) 2012-03-09 2015-02-24 Casio Computer Co., Ltd. Musical sound generation device, storage medium, and musical sound generation method
US9202452B2 (en) 2012-03-09 2015-12-01 Casio Computer Co., Ltd. Musical sound generation device, storage medium, and musical sound generation method
JP2014112198A (ja) * 2012-11-05 2014-06-19 Yamaha Corp 音発生装置

Also Published As

Publication number Publication date
JP3137043B2 (ja) 2001-02-19

Similar Documents

Publication Publication Date Title
US6180863B1 (en) Music apparatus integrating tone generators through sampling frequency conversion
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
JPH1020860A (ja) 楽音発生装置
JP3137043B2 (ja) 波形メモリ音源装置および楽音発生装置
JP3148803B2 (ja) 音源装置
JP3723973B2 (ja) 音源装置
JPH07121181A (ja) 音声情報処理装置
JPH08160961A (ja) 音源装置
JP3019755B2 (ja) 楽音発生方法および楽音発生装置
JP2797142B2 (ja) 電子楽器用処理装置
JP2671690B2 (ja) 電子楽器
JP2882464B2 (ja) 波形メモリ音源装置
JP3164096B2 (ja) 楽音発生方法及び装置
JP2003280650A (ja) 変調波形発生装置
JP2956552B2 (ja) 楽音発生方法および装置
JP3275678B2 (ja) 楽音発生方法および装置
JP2970372B2 (ja) 音源パラメータ供給装置
JP2546464B2 (ja) 電子楽器
JP2833485B2 (ja) 楽音発生装置
JP3651675B2 (ja) 電子楽器
JPH08234785A (ja) 音源装置
JP2001092450A (ja) オーディオ・ファイルの生成処理方法
JP2003330469A (ja) 楽音生成装置及びプログラム
JPH02179692A (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: 20081208

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20081208

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20091208

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20111208

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20111208

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20121208

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20131208

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees