JPH10198380A - 波形発生装置 - Google Patents
波形発生装置Info
- Publication number
- JPH10198380A JPH10198380A JP8359220A JP35922096A JPH10198380A JP H10198380 A JPH10198380 A JP H10198380A JP 8359220 A JP8359220 A JP 8359220A JP 35922096 A JP35922096 A JP 35922096A JP H10198380 A JPH10198380 A JP H10198380A
- Authority
- JP
- Japan
- Prior art keywords
- waveform
- pitch
- voice
- register
- reproduction
- 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.)
- Pending
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
(57)【要約】
【課題】メモリに記憶された各種の音の波形データを読
み出して再生する波形発生装置に関し、再生時間をゆっ
くりにした場合にも、再生音が単調で不自然なものにな
らないようにすることを目的とする。 【解決手段】音の波形信号の振幅情報を波形データとし
て記憶した記憶手段と、任意に設定された変化量で順次
変化して該波形データにおける時間軸上の経過に従った
位置を指定する位置情報を順次に生成する位置情報生成
手段と、再生ピッチを指定する再生ピッチ指定手段と、
再生ピッチ指定手段で指定された再生ピッチに応じた周
期で該位置情報で指定される近傍の波形データを少なく
とも1周期切り出して再生波形信号を生成する波形再生
手段と、該位置情報生成手段で設定される変化量が所定
値よりも小さくなったときに、該波形再生手段で生成さ
れる再生波形にノイズ成分を付加するノイズ成分付加手
段とを備える。
み出して再生する波形発生装置に関し、再生時間をゆっ
くりにした場合にも、再生音が単調で不自然なものにな
らないようにすることを目的とする。 【解決手段】音の波形信号の振幅情報を波形データとし
て記憶した記憶手段と、任意に設定された変化量で順次
変化して該波形データにおける時間軸上の経過に従った
位置を指定する位置情報を順次に生成する位置情報生成
手段と、再生ピッチを指定する再生ピッチ指定手段と、
再生ピッチ指定手段で指定された再生ピッチに応じた周
期で該位置情報で指定される近傍の波形データを少なく
とも1周期切り出して再生波形信号を生成する波形再生
手段と、該位置情報生成手段で設定される変化量が所定
値よりも小さくなったときに、該波形再生手段で生成さ
れる再生波形にノイズ成分を付加するノイズ成分付加手
段とを備える。
Description
【0001】
【発明の属する技術分野】本発明は電子楽器の波形発生
装置、更に詳しくはメモリに記憶された各種の音の波形
データを読み出して再生する波形発生装置に関する。か
かる波形発生装置は例えばサンプラと呼ばれているよう
な電子楽器に用いられる。
装置、更に詳しくはメモリに記憶された各種の音の波形
データを読み出して再生する波形発生装置に関する。か
かる波形発生装置は例えばサンプラと呼ばれているよう
な電子楽器に用いられる。
【0002】本出願人は、先に、音声等の波形につい
て、元の波形のホルマント特性を維持したままそのピッ
チを任意のものに変換する波形発生装置を提案した。こ
の波形発生装置は、波形信号の振幅情報を波形データと
してメモリに記憶しておき、任意に設定された変化量で
順次変化して該波形データにおける時間軸上の経過に従
った位置を指定する位置情報を順次に生成する位置情報
生成手段を設け、使用者が再生ピッチ指定手段で所望の
再生ピッチを指定し、これにより波形再生手段により再
生ピッチ指定手段で指定された再生ピッチに応じた周期
で該位置情報で指定される近傍の波形データを少なくと
も1周期切り出して再生波形信号を生成することで、元
の波形のピッチを指定した再生ピッチに変換することが
できる。
て、元の波形のホルマント特性を維持したままそのピッ
チを任意のものに変換する波形発生装置を提案した。こ
の波形発生装置は、波形信号の振幅情報を波形データと
してメモリに記憶しておき、任意に設定された変化量で
順次変化して該波形データにおける時間軸上の経過に従
った位置を指定する位置情報を順次に生成する位置情報
生成手段を設け、使用者が再生ピッチ指定手段で所望の
再生ピッチを指定し、これにより波形再生手段により再
生ピッチ指定手段で指定された再生ピッチに応じた周期
で該位置情報で指定される近傍の波形データを少なくと
も1周期切り出して再生波形信号を生成することで、元
の波形のピッチを指定した再生ピッチに変換することが
できる。
【0003】この波形発生装置では、位置情報生成手段
で設定する変量を変えることで、波形データ全体を再生
するに要する時間を自由に変えることができる。しか
し、変量を小さくして時間経過をゆっくりにした場合、
位置情報生成手段の位置情報で指定される波形データ中
の切出し波形データがなかなか次の周期のものに更新さ
れないので、波形再生手段では、同じ切出し波形データ
を繰り返し用いてそれを所望の再生ピッチに変換して再
生波形を生成する。この結果、同じ特質を持った波形が
繰り返し再生されることになる。このような同じ特質の
再生波形の繰返しは、それが規則正しく繰り返されるも
のであるため、その繰返し部分の再生波形に揺らぎ成分
がなくなり、このためかかる再生波形により発音される
音は美しくはあるが単調で不自然な感じのものになる。
で設定する変量を変えることで、波形データ全体を再生
するに要する時間を自由に変えることができる。しか
し、変量を小さくして時間経過をゆっくりにした場合、
位置情報生成手段の位置情報で指定される波形データ中
の切出し波形データがなかなか次の周期のものに更新さ
れないので、波形再生手段では、同じ切出し波形データ
を繰り返し用いてそれを所望の再生ピッチに変換して再
生波形を生成する。この結果、同じ特質を持った波形が
繰り返し再生されることになる。このような同じ特質の
再生波形の繰返しは、それが規則正しく繰り返されるも
のであるため、その繰返し部分の再生波形に揺らぎ成分
がなくなり、このためかかる再生波形により発音される
音は美しくはあるが単調で不自然な感じのものになる。
【0004】本発明はかかる問題点に鑑みてなされたも
のであり、上述のような形態の波形発生装置において、
再生時間をゆっくりにした場合にも、再生音が単調で不
自然なものにならないようにすることを目的とする。
のであり、上述のような形態の波形発生装置において、
再生時間をゆっくりにした場合にも、再生音が単調で不
自然なものにならないようにすることを目的とする。
【0005】
【課題を解決するための手段】上述の課題を解決するた
めに、本発明にかかる波形発生装置は、音の波形信号の
振幅情報を波形データとして記憶した記憶手段と、任意
に設定された変化量で順次変化して該波形データにおけ
る時間軸上の経過に従った位置を指定する位置情報を順
次に生成する位置情報生成手段と、再生ピッチを指定す
る再生ピッチ指定手段と、再生ピッチ指定手段で指定さ
れた再生ピッチに応じた周期で該位置情報で指定される
近傍の波形データを少なくとも1周期切り出して再生波
形信号を生成する波形再生手段と、該位置情報生成手段
で設定される変化量が所定値よりも小さくなったとき
に、該波形再生手段で生成される再生波形にノイズ成分
を付加するノイズ成分付加手段とを備える。この波形発
生装置によれば、同じ波形を繰り返し再生するようにな
る場合には、再生波形にノイズ成分が付加される。音声
信号等には本来ノイズ成分が含まれているので、このノ
イズ付加により、自然な感じの再生波形の音を生成する
ことができる。
めに、本発明にかかる波形発生装置は、音の波形信号の
振幅情報を波形データとして記憶した記憶手段と、任意
に設定された変化量で順次変化して該波形データにおけ
る時間軸上の経過に従った位置を指定する位置情報を順
次に生成する位置情報生成手段と、再生ピッチを指定す
る再生ピッチ指定手段と、再生ピッチ指定手段で指定さ
れた再生ピッチに応じた周期で該位置情報で指定される
近傍の波形データを少なくとも1周期切り出して再生波
形信号を生成する波形再生手段と、該位置情報生成手段
で設定される変化量が所定値よりも小さくなったとき
に、該波形再生手段で生成される再生波形にノイズ成分
を付加するノイズ成分付加手段とを備える。この波形発
生装置によれば、同じ波形を繰り返し再生するようにな
る場合には、再生波形にノイズ成分が付加される。音声
信号等には本来ノイズ成分が含まれているので、このノ
イズ付加により、自然な感じの再生波形の音を生成する
ことができる。
【0006】上記の波形発生装置において、上記切り出
す波形データの読出し速度を変更する変更係数を設定す
る変更係数設定手段をさらに備えることができる。この
変更係数設定手段を用いて切出し波形データの読出し速
度を変更することで、波形信号が人声などの場合にその
ホルマント特性を変えることができる。
す波形データの読出し速度を変更する変更係数を設定す
る変更係数設定手段をさらに備えることができる。この
変更係数設定手段を用いて切出し波形データの読出し速
度を変更することで、波形信号が人声などの場合にその
ホルマント特性を変えることができる。
【0007】
【発明の実施の形態】以下、図面を参照して本発明の実
施の形態を説明する。図1は本発明に係る一実施例とし
ての電子楽器の波形発生装置が示される。図1におい
て、12は再生する波形データを記憶しておくRAMか
らなる波形メモリである。8は波形メモリ12の波形デ
ータの再生処理等をディジタル処理により行うDSP
(ディジタル信号プロセッサ)である。14はDSP8
から再生出力されるディジタル波形信号をアナログ波形
信号にD/A変換して出力するD/A変換器、4は入力
したアナログ波形信号をディジタル波形信号にA/D変
換してDSP8に入力するA/D変換器である。このA
/D変換器4から入力されたディジタル波形信号はDS
P8から波形メモリ12に波形データとして格納するこ
とができる。
施の形態を説明する。図1は本発明に係る一実施例とし
ての電子楽器の波形発生装置が示される。図1におい
て、12は再生する波形データを記憶しておくRAMか
らなる波形メモリである。8は波形メモリ12の波形デ
ータの再生処理等をディジタル処理により行うDSP
(ディジタル信号プロセッサ)である。14はDSP8
から再生出力されるディジタル波形信号をアナログ波形
信号にD/A変換して出力するD/A変換器、4は入力
したアナログ波形信号をディジタル波形信号にA/D変
換してDSP8に入力するA/D変換器である。このA
/D変換器4から入力されたディジタル波形信号はDS
P8から波形メモリ12に波形データとして格納するこ
とができる。
【0008】22はCPU(中央処理装置)であって、
DSP8の制御、操作子群20やキーボード30の状態
検出と処理など装置の全体的な制御を行う。20は操作
子群であって、モードスイッチMODE.SW 、バンクスイッ
チBANK.SW 、アサインスイッチASSIGN.SW 、ホルマント
設定操作子F.VR、時間圧伸量設定操作子TCOMP 等の複数
の操作子からなる。30は演奏操作を行うキーボードで
あり、波形メモリ12の波形データの再生にあたってキ
ーのオン/オフにより再生の音高と再生の開始/終了を
指示するためにも用いられる。33は多くの波形データ
等を記憶しておく大容量のハードディスク装置であり、
その波形データは必要に応じて波形メモリ12に転送さ
れる。31はCPU22の演算処理等に使用されるワー
キングメモリとしてのRAM、32はCPU22やDS
P8のプログラムやパラメータ等を記憶しておくメモリ
としてのROMである。
DSP8の制御、操作子群20やキーボード30の状態
検出と処理など装置の全体的な制御を行う。20は操作
子群であって、モードスイッチMODE.SW 、バンクスイッ
チBANK.SW 、アサインスイッチASSIGN.SW 、ホルマント
設定操作子F.VR、時間圧伸量設定操作子TCOMP 等の複数
の操作子からなる。30は演奏操作を行うキーボードで
あり、波形メモリ12の波形データの再生にあたってキ
ーのオン/オフにより再生の音高と再生の開始/終了を
指示するためにも用いられる。33は多くの波形データ
等を記憶しておく大容量のハードディスク装置であり、
その波形データは必要に応じて波形メモリ12に転送さ
れる。31はCPU22の演算処理等に使用されるワー
キングメモリとしてのRAM、32はCPU22やDS
P8のプログラムやパラメータ等を記憶しておくメモリ
としてのROMである。
【0009】以下に、操作子群20の各操作子の機能に
ついて説明する。モードスイッチMODE.SW は、録音モー
ド、編集モード、再生モードの一つを選択するためのス
イッチである。ここで、録音モード (RECモード) は
外部から入力された楽音信号を録音(サンプリング) す
るモード、編集モード (EDITモード) は録音モード
でサンプリングした波形を編集するモード、再生モード
(PLAYモード) は波形メモリ12に記憶した波形デ
ータをキーボードの演奏操作に応じて再生するモードで
ある。
ついて説明する。モードスイッチMODE.SW は、録音モー
ド、編集モード、再生モードの一つを選択するためのス
イッチである。ここで、録音モード (RECモード) は
外部から入力された楽音信号を録音(サンプリング) す
るモード、編集モード (EDITモード) は録音モード
でサンプリングした波形を編集するモード、再生モード
(PLAYモード) は波形メモリ12に記憶した波形デ
ータをキーボードの演奏操作に応じて再生するモードで
ある。
【0010】バンクスイッチBANK.SW は、波形メモリ1
2に記憶されている複数の波形データのうちから一つを
選択するためのスイッチである。
2に記憶されている複数の波形データのうちから一つを
選択するためのスイッチである。
【0011】アサインスイッチASSIGN.SW は、発音モー
ドを設定するためのスイッチであり、以下の4つのモー
ドを設定できる。 〔モノフォニック1:MONO1〕 1ボイスのみを発音す
るモードであり、レガート奏法がされても、後の押鍵に
よってリトリガを行うモードである。 〔モノフォニック2:MONO2〕 1ボイスのみを発音す
るモードであり、レガート奏法がされたら、リトリガを
行なわないモードである。 〔ポリフォニック1:POLY1〕 複数ボイスを発音可能
なモードであり、レガート奏法がされても、後の押鍵に
よってリトリガを行うモードである。 〔ポリフォニック2:POLY2〕 複数ボイスを発音可能
なモードであり、レガート奏法がされたら、リトリガを
行なわないモードである。 ここで、「レガート奏法」とはキーボードの1番目のキ
ーを押したままの状態で2番目のキーを押す奏法であ
り、「リトリガ」とは波形メモリ12の波形データの再
生を当該波形データの先頭部分からやり直す処理をい
う。
ドを設定するためのスイッチであり、以下の4つのモー
ドを設定できる。 〔モノフォニック1:MONO1〕 1ボイスのみを発音す
るモードであり、レガート奏法がされても、後の押鍵に
よってリトリガを行うモードである。 〔モノフォニック2:MONO2〕 1ボイスのみを発音す
るモードであり、レガート奏法がされたら、リトリガを
行なわないモードである。 〔ポリフォニック1:POLY1〕 複数ボイスを発音可能
なモードであり、レガート奏法がされても、後の押鍵に
よってリトリガを行うモードである。 〔ポリフォニック2:POLY2〕 複数ボイスを発音可能
なモードであり、レガート奏法がされたら、リトリガを
行なわないモードである。 ここで、「レガート奏法」とはキーボードの1番目のキ
ーを押したままの状態で2番目のキーを押す奏法であ
り、「リトリガ」とは波形メモリ12の波形データの再
生を当該波形データの先頭部分からやり直す処理をい
う。
【0012】ホルマント設定操作子F.VRは、ホルマント
の原波形データからのシフト量を設定する操作子であ
り、後述するホルマント移動量f.vr(ホルマント変更係
数とも称する)を設定する。
の原波形データからのシフト量を設定する操作子であ
り、後述するホルマント移動量f.vr(ホルマント変更係
数とも称する)を設定する。
【0013】時間圧伸量設定操作子TCOMP は、再生波形
データの時間軸上の時間圧伸量tcomp を設定する操作子
である。
データの時間軸上の時間圧伸量tcomp を設定する操作子
である。
【0014】上記のDSP8は操作子設定テーブル、キ
ー情報レジスタ、変調情報レジスタを備えている。以
下、これらについて説明する。 〔操作子設定テーブル〕図2には操作子設定テーブルの
例が示される。この操作子設定テーブルはDSP8に備
えられており、後述するCPU22の〔再生処理〕にお
いて、操作子群20の操作状態を検出し、その操作状態
に対応してこの操作子設定テーブルの内容が設定され
る。操作子設定テーブルの内容の項目としては、バンク
番号bank、リンクモードlink.mode 、ホルマント移動量
f.vr、時間圧縮/伸長伸量tcomp (以下、時間圧伸量と
記す) がある。
ー情報レジスタ、変調情報レジスタを備えている。以
下、これらについて説明する。 〔操作子設定テーブル〕図2には操作子設定テーブルの
例が示される。この操作子設定テーブルはDSP8に備
えられており、後述するCPU22の〔再生処理〕にお
いて、操作子群20の操作状態を検出し、その操作状態
に対応してこの操作子設定テーブルの内容が設定され
る。操作子設定テーブルの内容の項目としては、バンク
番号bank、リンクモードlink.mode 、ホルマント移動量
f.vr、時間圧縮/伸長伸量tcomp (以下、時間圧伸量と
記す) がある。
【0015】ここで、バンク番号bandは、操作子群20
のバンクスイッチBANK.SW で設定されたバンク番号が設
定され、そのバンク番号bankに従って、再生する波形デ
ータ(波形領域番号)の選択が行われる。
のバンクスイッチBANK.SW で設定されたバンク番号が設
定され、そのバンク番号bankに従って、再生する波形デ
ータ(波形領域番号)の選択が行われる。
【0016】リンクモードlink.mode は、操作子群20
のアサインスイッチASSIGN.SW がモノフォニック2また
はポリフォニック2のモード(すなわちリトリガしない
モード)を設定した時には“1”(ONを意味する)に
設定され、モノフォニック1またはポリフォニック1の
モード(すなわちリトリガするモード)を設定した時に
は“0”(OFFを意味する)に設定される。すなわ
ち、リトリガを行うか否かを設定するレジスタとなる。
のアサインスイッチASSIGN.SW がモノフォニック2また
はポリフォニック2のモード(すなわちリトリガしない
モード)を設定した時には“1”(ONを意味する)に
設定され、モノフォニック1またはポリフォニック1の
モード(すなわちリトリガするモード)を設定した時に
は“0”(OFFを意味する)に設定される。すなわ
ち、リトリガを行うか否かを設定するレジスタとなる。
【0017】ホルマント移動量f.vrは、波形メモリ12
から読み出して再生する波形データのホルマントの移動
量(シフト量)が設定されるもので、波形メモリ12中
の波形データは、このホルマント移動量f.vrが「1」で
ある時は、原波形と同じホルマントで再生され、「1」
より大きい値であると、ホルマントを原波形よりも高域
側にシフトして再生され、「1」よりも小さい値である
と、ホルマントを原波形よりも低域側にシフトして再生
される。
から読み出して再生する波形データのホルマントの移動
量(シフト量)が設定されるもので、波形メモリ12中
の波形データは、このホルマント移動量f.vrが「1」で
ある時は、原波形と同じホルマントで再生され、「1」
より大きい値であると、ホルマントを原波形よりも高域
側にシフトして再生され、「1」よりも小さい値である
と、ホルマントを原波形よりも低域側にシフトして再生
される。
【0018】時間圧伸量tcomp は、波形メモリ12に記
憶された波形データを再生する時における時間圧縮/伸
長の大きさ(すなわち波形再生速度)を数値設定するも
のである。この時間圧伸量tcomp が「1」であると、原
波形の時間変化と同じ速さで時間変化し、「1」より大
きい値であると、原波形よりも速い時間変化をして再生
時間が短くなり、「1」よりも小さい値であると、原波
形よりも遅い時間変化をして再生時間が長くなる。
憶された波形データを再生する時における時間圧縮/伸
長の大きさ(すなわち波形再生速度)を数値設定するも
のである。この時間圧伸量tcomp が「1」であると、原
波形の時間変化と同じ速さで時間変化し、「1」より大
きい値であると、原波形よりも速い時間変化をして再生
時間が短くなり、「1」よりも小さい値であると、原波
形よりも遅い時間変化をして再生時間が長くなる。
【0019】〔キー情報レジスタ〕DSP8はキー情報
レジスタを備えており、後述するCPU22の〔再生処
理〕において、キーボード30の操作が検出され、割当
処理によってキー情報がDSP8に転送されて、このキ
ー情報レジスタに一時的に記憶される。図3にこのキー
情報レジスタの構成例が示される。キー情報は、キーオ
ン/キーオフ情報key.on/off、音高情報pitch 、ボイス
モジュール情報voice.No、レベル情報levelからなる。
例えば、 キーオン情報:「key.on/pitch /voice.No/level 」 キーオフ情報:「key.off /pitch /voice.No/level
」 の構成からなる。
レジスタを備えており、後述するCPU22の〔再生処
理〕において、キーボード30の操作が検出され、割当
処理によってキー情報がDSP8に転送されて、このキ
ー情報レジスタに一時的に記憶される。図3にこのキー
情報レジスタの構成例が示される。キー情報は、キーオ
ン/キーオフ情報key.on/off、音高情報pitch 、ボイス
モジュール情報voice.No、レベル情報levelからなる。
例えば、 キーオン情報:「key.on/pitch /voice.No/level 」 キーオフ情報:「key.off /pitch /voice.No/level
」 の構成からなる。
【0020】なお、このキー情報レジスタは、DSP8
での受取り処理の前に、CPU22から新たなキー情報
が転送されることがある場合には、複数のキー情報を一
時記憶することが可能な、シフトレジスタのような構成
で、さらに先に入力した情報を先に出力する構成にすれ
ばよい。すなわち、MIDI信号の受信処理と同様な処
理とする。
での受取り処理の前に、CPU22から新たなキー情報
が転送されることがある場合には、複数のキー情報を一
時記憶することが可能な、シフトレジスタのような構成
で、さらに先に入力した情報を先に出力する構成にすれ
ばよい。すなわち、MIDI信号の受信処理と同様な処
理とする。
【0021】〔変調情報レジスタ〕図3には変調情報レ
ジスタも示される。この変調情報レジスタには変調値情
報noise.env が格納される。後述の〔NOISE.EN
Vの演算処理] においては、変調値信号noise.env であ
ることを識別する変調情報識別情報mod.inf と、演算に
よって得られた変調値情報noise.env とが組み合わされ
て転送される。
ジスタも示される。この変調情報レジスタには変調値情
報noise.env が格納される。後述の〔NOISE.EN
Vの演算処理] においては、変調値信号noise.env であ
ることを識別する変調情報識別情報mod.inf と、演算に
よって得られた変調値情報noise.env とが組み合わされ
て転送される。
【0022】波形メモリ12はパラメータ記憶部と波形
データ記憶部とで構成される。これらの記憶部のデータ
構成を図4、図5に示す。図4はパラメータ記憶部のデ
ータ構成、図5は波形データ記憶部のデータ構成であ
る。パラメータ記憶部は$800番地毎に、また波形デ
ータ記憶部は$8000番地毎に各々セグメントで区切
られており、各々のセグメントはアドレスの若い方から
順番にwave0領域、wave1領域 、wave2領域 ・・・
のように波形領域番号が付けられる。例えばある一つの
波形についてそのパラメータをパラメータ記憶部のwave
0領域に格納したら、その波形の波形データはそのパラ
メータに対応して波形データ記憶部の同じ番号のwave0
領域に格納する。なお、図4、図5におけるアドレスは
16進数で表わされており、以降、本明細書では、$8
00のように数値の先頭に$を付して16進数であるこ
とを示す。
データ記憶部とで構成される。これらの記憶部のデータ
構成を図4、図5に示す。図4はパラメータ記憶部のデ
ータ構成、図5は波形データ記憶部のデータ構成であ
る。パラメータ記憶部は$800番地毎に、また波形デ
ータ記憶部は$8000番地毎に各々セグメントで区切
られており、各々のセグメントはアドレスの若い方から
順番にwave0領域、wave1領域 、wave2領域 ・・・
のように波形領域番号が付けられる。例えばある一つの
波形についてそのパラメータをパラメータ記憶部のwave
0領域に格納したら、その波形の波形データはそのパラ
メータに対応して波形データ記憶部の同じ番号のwave0
領域に格納する。なお、図4、図5におけるアドレスは
16進数で表わされており、以降、本明細書では、$8
00のように数値の先頭に$を付して16進数であるこ
とを示す。
【0023】まず、パラメータ記憶部のデータ構成を図
4に従って説明する。例えばwave0領域において、アド
レス$0000 に格納されているものはヘッダheaderであ
り、そのデータ内容としてそのwave0領域における末尾
アドレスendadrs が格納され、アドレス$0001 以降には
開始アドレス/ピッチ情報sadrs/spitchが格納される。
開始アドレス/ピッチ情報のうちのピッチ情報である波
形ピッチspitchは波形データ記憶部に格納された波形の
1周期分のアドレスの幅のことであり、開始アドレスsa
drs は前記波形ピッチspitchで表されるアドレス幅の波
形が1周期から複数周期続く波形区間の開始アドレスで
ある(以下、1周期から複数周期続く波形区間を単に波
形区間という) 。開始アドレス/ピッチ情報としては一
つの波形区間の開始アドレスsadrs と波形ピッチspitch
とを一対として、波形全体にわたるこれらの対が時系列
にパラメータ記憶部に格納される。例えば波形データの
最初の波形区間が開始アドレスsadrs0で波形ピッチspit
ch0 であり、次に続く波形区間が開始アドレスsadrs1で
波形ピッチspitch1 である場合、最初の開始アドレスsa
drs0と波形ピッチspitch0はそれぞれアドレス$0001
、$OOO2 に格納され、続く開始アドレス sadrs1と波
形ピッチspitch1はそれぞれアドレス$0003 、$OO04 に
格納される。
4に従って説明する。例えばwave0領域において、アド
レス$0000 に格納されているものはヘッダheaderであ
り、そのデータ内容としてそのwave0領域における末尾
アドレスendadrs が格納され、アドレス$0001 以降には
開始アドレス/ピッチ情報sadrs/spitchが格納される。
開始アドレス/ピッチ情報のうちのピッチ情報である波
形ピッチspitchは波形データ記憶部に格納された波形の
1周期分のアドレスの幅のことであり、開始アドレスsa
drs は前記波形ピッチspitchで表されるアドレス幅の波
形が1周期から複数周期続く波形区間の開始アドレスで
ある(以下、1周期から複数周期続く波形区間を単に波
形区間という) 。開始アドレス/ピッチ情報としては一
つの波形区間の開始アドレスsadrs と波形ピッチspitch
とを一対として、波形全体にわたるこれらの対が時系列
にパラメータ記憶部に格納される。例えば波形データの
最初の波形区間が開始アドレスsadrs0で波形ピッチspit
ch0 であり、次に続く波形区間が開始アドレスsadrs1で
波形ピッチspitch1 である場合、最初の開始アドレスsa
drs0と波形ピッチspitch0はそれぞれアドレス$0001
、$OOO2 に格納され、続く開始アドレス sadrs1と波
形ピッチspitch1はそれぞれアドレス$0003 、$OO04 に
格納される。
【0024】次に波形データ記憶部のデータ構成を図5
に従って説明すると、これは各wave領域にシーケンシャ
ルなアドレス順序でサンプリング値wave data が格納さ
れるものである。
に従って説明すると、これは各wave領域にシーケンシャ
ルなアドレス順序でサンプリング値wave data が格納さ
れるものである。
【0025】以下、この実施例装置の動作をフローチャ
ートを参照して説明する。なお、以下に説明する各フロ
ーチャートにおいては、基本的には、各種のパラメータ
は英小文字で表し、そのパラメータを記憶するレジスタ
等は同じ記号の英大文字で表すこととする。
ートを参照して説明する。なお、以下に説明する各フロ
ーチャートにおいては、基本的には、各種のパラメータ
は英小文字で表し、そのパラメータを記憶するレジスタ
等は同じ記号の英大文字で表すこととする。
【0026】図6には、CPU22が行う処理として、
メインルーチンのフローチャートが示される。メインル
ーチンがスタートすると、操作子群20のモードスイッ
チ(MODE.SW) が録音モード、編集モード、再生モードの
何れに操作されたか監視されており(ステップA)、操
作がされると、その操作が録音モード、編集モード、再
生モードの何れであるかが判定される(ステップB)。
録音モードであれば、録音(REC)処理が行われ(ス
テップC)、編集モードであれば編集(EDIT)処理
が行われ(ステップD)、再生モードであれば再生(P
LAY)処理が行われる(ステップE)。
メインルーチンのフローチャートが示される。メインル
ーチンがスタートすると、操作子群20のモードスイッ
チ(MODE.SW) が録音モード、編集モード、再生モードの
何れに操作されたか監視されており(ステップA)、操
作がされると、その操作が録音モード、編集モード、再
生モードの何れであるかが判定される(ステップB)。
録音モードであれば、録音(REC)処理が行われ(ス
テップC)、編集モードであれば編集(EDIT)処理
が行われ(ステップD)、再生モードであれば再生(P
LAY)処理が行われる(ステップE)。
【0027】図7には録音モードにおける録音処理ルー
チンのフローチャートが示される。録音処理は外部から
入力された楽音信号を録音(サンプリング)する処理で
あり、モードスイッチMODE.SW により録音モードに設定
した後、サンプリングスタートの操作子を操作すること
によって(ステップC3)、サンプリングスタートして
録音(サンプリング処理)が行われる(ステップC
4)。サンプリングされる楽音信号のデータは波形メモ
リ12に記憶される。この録音処理ルーチンから抜け出
てメインルーチンにリターンするにはEXIT操作子を
操作する(ステップC2)。
チンのフローチャートが示される。録音処理は外部から
入力された楽音信号を録音(サンプリング)する処理で
あり、モードスイッチMODE.SW により録音モードに設定
した後、サンプリングスタートの操作子を操作すること
によって(ステップC3)、サンプリングスタートして
録音(サンプリング処理)が行われる(ステップC
4)。サンプリングされる楽音信号のデータは波形メモ
リ12に記憶される。この録音処理ルーチンから抜け出
てメインルーチンにリターンするにはEXIT操作子を
操作する(ステップC2)。
【0028】図8には編集モードにおける編集処理ルー
チンのフローチャートが示される。編集処理は、録音モ
ードでサンプリングした波形を変更したり、再生可能な
波形データに変更する編集処理や、それらの波形データ
をハードディスク装置33に転送したり、ハードディス
ク装置33から波形メモリ12に転送したりする処理を
行う(ステップD3)。この編集処理ルーチンから抜け
出るにはEXIT操作子を操作する(ステップD2)。
チンのフローチャートが示される。編集処理は、録音モ
ードでサンプリングした波形を変更したり、再生可能な
波形データに変更する編集処理や、それらの波形データ
をハードディスク装置33に転送したり、ハードディス
ク装置33から波形メモリ12に転送したりする処理を
行う(ステップD3)。この編集処理ルーチンから抜け
出るにはEXIT操作子を操作する(ステップD2)。
【0029】図9には再生モードにおける再生処理ルー
チンのフローチャートが示される。この再生処理ルーチ
ンの初期設定(ステップE1)においては、操作子群の
状態を操作するレジスタ等をリセットし、操作子群を操
作可能な状態にすると共に、各操作子の初期状態を設定
しておく。初期状態とは、〔再生処理〕で、各操作子に
変化があった時だけ操作子の操作に対応した処理を行う
ため、その最初の基準となる状態を設定している。
チンのフローチャートが示される。この再生処理ルーチ
ンの初期設定(ステップE1)においては、操作子群の
状態を操作するレジスタ等をリセットし、操作子群を操
作可能な状態にすると共に、各操作子の初期状態を設定
しておく。初期状態とは、〔再生処理〕で、各操作子に
変化があった時だけ操作子の操作に対応した処理を行う
ため、その最初の基準となる状態を設定している。
【0030】再生処理ルーチンは、モードスイッチMOD
E.SW により再生モードに設定した後、再生スタートの
操作子を操作することによってスタートする。再生処理
(ステップE3)は、波形メモリ12の波形データを、
キーボード30からの演奏情報に対応して再生する処理
であり、この再生処理ルーチンから抜け出るにはEXI
T操作子を操作する(ステップE2)。
E.SW により再生モードに設定した後、再生スタートの
操作子を操作することによってスタートする。再生処理
(ステップE3)は、波形メモリ12の波形データを、
キーボード30からの演奏情報に対応して再生する処理
であり、この再生処理ルーチンから抜け出るにはEXI
T操作子を操作する(ステップE2)。
【0031】図10、図11にはこの再生モードにおけ
る再生処理(ステップE3)の詳細な処理手順が示され
る。この再生処理はCPU22で実行される。この再生
処理では、操作子群20による設定とキーボード30に
よる演奏操作を検出してそれらの操作情報をDSP8に
転送して記憶させる処理を行う。
る再生処理(ステップE3)の詳細な処理手順が示され
る。この再生処理はCPU22で実行される。この再生
処理では、操作子群20による設定とキーボード30に
よる演奏操作を検出してそれらの操作情報をDSP8に
転送して記憶させる処理を行う。
【0032】再生処理が開始されると、操作子群20の
操作状態を走査して、バンクスイッチBANK.SW 、アサイ
ンスイッチASSIGN.SW 、ホルマント設定操作子F.VR、時
間圧伸量設定操作子TCOMP の操作状態を検出する(ステ
ップE300)。これらの操作状態に変化があったとき
には、以下のように、それらのスイッチ操作に対応して
操作子設定テーブル等への設定処理を行う。
操作状態を走査して、バンクスイッチBANK.SW 、アサイ
ンスイッチASSIGN.SW 、ホルマント設定操作子F.VR、時
間圧伸量設定操作子TCOMP の操作状態を検出する(ステ
ップE300)。これらの操作状態に変化があったとき
には、以下のように、それらのスイッチ操作に対応して
操作子設定テーブル等への設定処理を行う。
【0033】まず、バンクスイッチBANK.SW の操作に変
化が有るか否かを見て(ステップE301)、変化が有
る場合には、バンクスイッチBANK.SW で設定されたバン
ク番号bankを、DSP8の操作子設定テーブルのバンク
番号bankに設定する。
化が有るか否かを見て(ステップE301)、変化が有
る場合には、バンクスイッチBANK.SW で設定されたバン
ク番号bankを、DSP8の操作子設定テーブルのバンク
番号bankに設定する。
【0034】次に、アサインスイッチASSIGN.SW の操作
に変化が有るか否かを見て(ステップE303)、変化
が有る場合には、アサインスイッチASSIGN.SW で設定さ
れたモードがモノフォニック2またはポリフォニック2
か否かを判定する。肯定判定(モノフォニック2または
ポリフォニック2と判定)である場合は「リトリガ」を
行わないモードが設定されたものであり、この場合に
は、DSP8の操作子設定テーブルのリンクモードlin
k.mode に“1”を設定する。否定判定である場合は
「リトリガ」を行うモードが設定されたものであり、こ
の場合には、DSP8の操作子設定テーブルのリンクモ
ードlink.mode に“0”を設定する。さらに、アサイン
スイッチASSIGN.SW で設定されたモードがモノフォニッ
ク(1または2)であるかポリフォニック(1または
2)であるかを判定し、モノフォニック1または2であ
る場合にはアサインフラグAS.FLGをモノフォニックMONO
にセットし(ステップE308)、ポリフォニック1ま
たは2である場合にはポリフォニックPOLYにセットする
(ステップE309)。このアサインフラグAS.FLGによ
り、ボイスモジュール(楽音発生チャネル)への割当処
理が1ボイス(モノフォニックの場合)か複数ボイス
(ポリフォニックの場合)かを知ることができる。
に変化が有るか否かを見て(ステップE303)、変化
が有る場合には、アサインスイッチASSIGN.SW で設定さ
れたモードがモノフォニック2またはポリフォニック2
か否かを判定する。肯定判定(モノフォニック2または
ポリフォニック2と判定)である場合は「リトリガ」を
行わないモードが設定されたものであり、この場合に
は、DSP8の操作子設定テーブルのリンクモードlin
k.mode に“1”を設定する。否定判定である場合は
「リトリガ」を行うモードが設定されたものであり、こ
の場合には、DSP8の操作子設定テーブルのリンクモ
ードlink.mode に“0”を設定する。さらに、アサイン
スイッチASSIGN.SW で設定されたモードがモノフォニッ
ク(1または2)であるかポリフォニック(1または
2)であるかを判定し、モノフォニック1または2であ
る場合にはアサインフラグAS.FLGをモノフォニックMONO
にセットし(ステップE308)、ポリフォニック1ま
たは2である場合にはポリフォニックPOLYにセットする
(ステップE309)。このアサインフラグAS.FLGによ
り、ボイスモジュール(楽音発生チャネル)への割当処
理が1ボイス(モノフォニックの場合)か複数ボイス
(ポリフォニックの場合)かを知ることができる。
【0035】次に、ホルマント設定操作子F.VRに変化が
有るか否かを見て(ステップE310)、変化が有る場
合には、その検出値を、DSP8の操作子設定テーブル
のホルマント移動量f.vrに設定する(ステップE31
1)。同様に、時間圧伸量設定操作子TCOMP に変化が有
るか否かを見て(ステップE312)、変化がある場合
には、その検出値を、DSP8の操作子設定テーブルの
時間圧伸量tcomp に設定する(ステップE313)。
有るか否かを見て(ステップE310)、変化が有る場
合には、その検出値を、DSP8の操作子設定テーブル
のホルマント移動量f.vrに設定する(ステップE31
1)。同様に、時間圧伸量設定操作子TCOMP に変化が有
るか否かを見て(ステップE312)、変化がある場合
には、その検出値を、DSP8の操作子設定テーブルの
時間圧伸量tcomp に設定する(ステップE313)。
【0036】これらの設定操作の後、変調値情報noise.
env の演算処理を行う (ステップE314) 。この演算
処理は、ステップE313で設定した時間圧伸量tcomp
が小であるときに、再生波形にノイズ成分の付加を行う
ための変調値情報noise.envを発生するものである。こ
のステップで演算される変調値情報は、変調情報である
ことを識別する変調情報識別情報mod.inf とともにキー
情報の一種としてDSPに転送され、変調値情報は変調
情報レジスタに格納される。詳細な内容は後述する。
env の演算処理を行う (ステップE314) 。この演算
処理は、ステップE313で設定した時間圧伸量tcomp
が小であるときに、再生波形にノイズ成分の付加を行う
ための変調値情報noise.envを発生するものである。こ
のステップで演算される変調値情報は、変調情報である
ことを識別する変調情報識別情報mod.inf とともにキー
情報の一種としてDSPに転送され、変調値情報は変調
情報レジスタに格納される。詳細な内容は後述する。
【0037】次に、キーボード30からの操作鍵情報
(キー情報)を検出する(ステップE315 )。そし
て、その検出結果から操作鍵に変化があるか否かを見て
(ステップE316)、変化がある場合には先に設定さ
れたAS.FLGの状態を判定する(ステップE317)。一
方、変化がない場合にはこの再生処理ルーチンを終了す
る。前記のアサインフラグAS.FLGの状態の判定結果がモ
ノフォニックMONOである場合には、操作鍵を1ボイスモ
ジュールに割り当てて、検出したキー情報をDSP8に
転送する(ステップE318)。ポリフォニックPOLYで
ある場合には、操作鍵を複数ボイスモジュールに割り当
てて、検出したキー情報をDSP8に転送する(ステッ
プE319)。DSP8では受信したキー情報をキー情
報レジスタに一時記憶する。
(キー情報)を検出する(ステップE315 )。そし
て、その検出結果から操作鍵に変化があるか否かを見て
(ステップE316)、変化がある場合には先に設定さ
れたAS.FLGの状態を判定する(ステップE317)。一
方、変化がない場合にはこの再生処理ルーチンを終了す
る。前記のアサインフラグAS.FLGの状態の判定結果がモ
ノフォニックMONOである場合には、操作鍵を1ボイスモ
ジュールに割り当てて、検出したキー情報をDSP8に
転送する(ステップE318)。ポリフォニックPOLYで
ある場合には、操作鍵を複数ボイスモジュールに割り当
てて、検出したキー情報をDSP8に転送する(ステッ
プE319)。DSP8では受信したキー情報をキー情
報レジスタに一時記憶する。
【0038】図12は上述のステップE314における
変調値情報の演算処理の詳細な内容を示すフローチャー
トである。図13はこの演算処理で生成される波形のタ
イムチャートである。まず、ステップE313で設定さ
れた時間圧伸量tcomp の値が0. 1により大きいか否か
判定し(ステップE3141)、大きければ、ゲート信
号noise.gateを格納するレジスタNOISE.GATEの値を0に
し(ステップE3143)、時間圧伸量が0.1以下で
あれば、レジスタNOISE.GATEの値を1にする(ステップ
E3142)。。
変調値情報の演算処理の詳細な内容を示すフローチャー
トである。図13はこの演算処理で生成される波形のタ
イムチャートである。まず、ステップE313で設定さ
れた時間圧伸量tcomp の値が0. 1により大きいか否か
判定し(ステップE3141)、大きければ、ゲート信
号noise.gateを格納するレジスタNOISE.GATEの値を0に
し(ステップE3143)、時間圧伸量が0.1以下で
あれば、レジスタNOISE.GATEの値を1にする(ステップ
E3142)。。
【0039】そして、次のステップE3144におい
て、ノイズエンベロープnoise.env を、 noise.env =noise.env +(noise.gate−noise.env )
*slope で演算して求め、結果をレジスタNOISE.ENV に格納する
と同時に、DSP8に転送して変調情報レジスタに変調
値情報noise.env として格納する。ここで、slope はエ
ンベロープの傾きを決定する係数である。このノイズエ
ンベロープnoise.env は、図13に示すように、ゲート
信号noise.gateの0から1への立上りに同期して0から
漸増して1になる波形となる。
て、ノイズエンベロープnoise.env を、 noise.env =noise.env +(noise.gate−noise.env )
*slope で演算して求め、結果をレジスタNOISE.ENV に格納する
と同時に、DSP8に転送して変調情報レジスタに変調
値情報noise.env として格納する。ここで、slope はエ
ンベロープの傾きを決定する係数である。このノイズエ
ンベロープnoise.env は、図13に示すように、ゲート
信号noise.gateの0から1への立上りに同期して0から
漸増して1になる波形となる。
【0040】次に、前記の1ボイスモジュールまたは複
数ボイスモジュールへの割当て処理について説明する。 〔1ボイスモジュールへの割当処理〕単音(1ボイス)
のみを発音するモードの割当処理である。キーボード3
0のキー情報の検出の結果、操作鍵のうち、最後に押鍵
した鍵を優先的に1つのボイスモジュール(楽音発生チ
ャンネル)に割り当てる。なお、この割当処理では1ボ
イスモジュールへの割当なので、ボイスモジュール情報
voice.Noの値は常に「No1」になる。
数ボイスモジュールへの割当て処理について説明する。 〔1ボイスモジュールへの割当処理〕単音(1ボイス)
のみを発音するモードの割当処理である。キーボード3
0のキー情報の検出の結果、操作鍵のうち、最後に押鍵
した鍵を優先的に1つのボイスモジュール(楽音発生チ
ャンネル)に割り当てる。なお、この割当処理では1ボ
イスモジュールへの割当なので、ボイスモジュール情報
voice.Noの値は常に「No1」になる。
【0041】〔複数ボイスモジュールへの割当処理〕複
数音が発音可能なモードの割当処理である。キーボード
30のキー情報の検出の結果、操作鍵のうち、予め決め
られた数の押鍵だけを所定の数のボイスモジュールに割
り当てる。この実施例では複数ボイスの数を2ボイスと
している。所定のボイス数(実施例では2)以上操作さ
れても受け付けない。キーオン情報が入力されたとき、
空きボイスがあるときのみに割当処理を行う。
数音が発音可能なモードの割当処理である。キーボード
30のキー情報の検出の結果、操作鍵のうち、予め決め
られた数の押鍵だけを所定の数のボイスモジュールに割
り当てる。この実施例では複数ボイスの数を2ボイスと
している。所定のボイス数(実施例では2)以上操作さ
れても受け付けない。キーオン情報が入力されたとき、
空きボイスがあるときのみに割当処理を行う。
【0042】なお、キーオン情報を転送し、楽音が発音
中にアサインスイッチASSIGN.SW を変更すると、発音中
の楽音が止まらないなどの動作の不都合が起こる可能性
がある。よって、かかる動作の不都合を防止するため、
楽音が発音中にアサインスイッチASSIGN.SW を操作して
動作モードが変更された場合には、発音中の楽音の全て
に対してキーオフ情報を転送するようにしている。そし
て、新たな動作モードで発音中(押鍵中)のキーオン情
報を転送するようにしている。
中にアサインスイッチASSIGN.SW を変更すると、発音中
の楽音が止まらないなどの動作の不都合が起こる可能性
がある。よって、かかる動作の不都合を防止するため、
楽音が発音中にアサインスイッチASSIGN.SW を操作して
動作モードが変更された場合には、発音中の楽音の全て
に対してキーオフ情報を転送するようにしている。そし
て、新たな動作モードで発音中(押鍵中)のキーオン情
報を転送するようにしている。
【0043】以上の割当て処理は、鍵数よりも少ない数
の音源を備えた電子楽器において、押鍵を音源に割り当
てる公知のジェネレータアサインの技術を使用するの
で、詳細は省略する。
の音源を備えた電子楽器において、押鍵を音源に割り当
てる公知のジェネレータアサインの技術を使用するの
で、詳細は省略する。
【0044】次に、キー情報の転送を受けたDSP8の
処理を図14、図15を参照して説明する。図14、図
15はDSP8のメインルーチンを示すフローチャート
であり、サンプリング周期で繰り返し実行されるもので
ある。CPU22から新たなキー情報の転送があったか
否かをキー情報レジスタをみて監視しており(ステップ
F1)、キー情報の転送があればその内容に基づいて以
下のステップF2〜F16のボイスの消音処理/発音開
始処理/リンク発音処理を行い、キー情報の転送がなけ
れば後述するステップF17〜F22の読出処理/出力
処理へとジャンプする。
処理を図14、図15を参照して説明する。図14、図
15はDSP8のメインルーチンを示すフローチャート
であり、サンプリング周期で繰り返し実行されるもので
ある。CPU22から新たなキー情報の転送があったか
否かをキー情報レジスタをみて監視しており(ステップ
F1)、キー情報の転送があればその内容に基づいて以
下のステップF2〜F16のボイスの消音処理/発音開
始処理/リンク発音処理を行い、キー情報の転送がなけ
れば後述するステップF17〜F22の読出処理/出力
処理へとジャンプする。
【0045】キー情報の転送があると、そのキー情報の
ボイスモジュール情報voice.Noを調べる(ステップF
2)。この実施例では、ボイスモジュールの数は二つで
あり、従ってボイスモジュール情報voice.NoもVoice.No
1とvoice.No2の二つである。ここで、ボイス2への割
当はポリフォニック1または2のときだけ行われる。し
たがってボイスモジュール情報がvoice.No1である場合
は、モードとしてはモノフォニックとポリフォニックの
双方の場合があり、voice.No2の場合はモードはポリフ
ォニックとなる。
ボイスモジュール情報voice.Noを調べる(ステップF
2)。この実施例では、ボイスモジュールの数は二つで
あり、従ってボイスモジュール情報voice.NoもVoice.No
1とvoice.No2の二つである。ここで、ボイス2への割
当はポリフォニック1または2のときだけ行われる。し
たがってボイスモジュール情報がvoice.No1である場合
は、モードとしてはモノフォニックとポリフォニックの
双方の場合があり、voice.No2の場合はモードはポリフ
ォニックとなる。
【0046】ボイスモジュール情報voice.No1であった
場合、更にそのキー情報がキーオン情報key.onかキーオ
フ情報key.off かを判定し(ステップF3)、キーオフ
情報key.off であれば、それまで発音を行っていたボイ
ス1(ボイスモジュールNo1) の消音処理を行う(ステ
ップF4)。この消音処理の詳細な内容は、図16に示
すように、 SCNT(1) =0 LEVEL(1)=0 SPHASE(1) =ENDADRS(1) とすることである。
場合、更にそのキー情報がキーオン情報key.onかキーオ
フ情報key.off かを判定し(ステップF3)、キーオフ
情報key.off であれば、それまで発音を行っていたボイ
ス1(ボイスモジュールNo1) の消音処理を行う(ステ
ップF4)。この消音処理の詳細な内容は、図16に示
すように、 SCNT(1) =0 LEVEL(1)=0 SPHASE(1) =ENDADRS(1) とすることである。
【0047】ここで、括弧付きの数字はボイスモジュー
ルの番号である。SCNT(n) はボイスnの発音の進行を管
理するカウンタであり、波形データ記憶部から読み出す
波形区間情報を更新(すなわち波形ピッチspitchと開始
アドレスsadrs を更新)するためのカウント値をカウン
トするものである。LEVEL(1)はキー情報レジスタ中のレ
ベルlevel を記憶するレジスタ、SPHASE(1) は進行位置
sphaseを記憶するレジスタ、ENDADRS(1)は末尾アドレス
endadrs を記憶するレジスタである。上記の進行位置sp
haseは波形再生に要する時間の進行を管理するパラメー
タであり、全波形データ中の先頭の波形区間の開始アド
レスを基準点とした波形データのアドレス値(波形デー
タ記憶部のアドレス値)で表現される。従って、上記の
図16の消音処理は、ボイス1について、カウンタSCNT
(1) を0にリセットし、音量レベルレジスタLEVEL(1)を
0にするとともに、進行位置レジスタSPHASE(1) の値を
末尾アドレスレジスタENDADRS(1)の値にして波形再生が
進行しないようにするものである。
ルの番号である。SCNT(n) はボイスnの発音の進行を管
理するカウンタであり、波形データ記憶部から読み出す
波形区間情報を更新(すなわち波形ピッチspitchと開始
アドレスsadrs を更新)するためのカウント値をカウン
トするものである。LEVEL(1)はキー情報レジスタ中のレ
ベルlevel を記憶するレジスタ、SPHASE(1) は進行位置
sphaseを記憶するレジスタ、ENDADRS(1)は末尾アドレス
endadrs を記憶するレジスタである。上記の進行位置sp
haseは波形再生に要する時間の進行を管理するパラメー
タであり、全波形データ中の先頭の波形区間の開始アド
レスを基準点とした波形データのアドレス値(波形デー
タ記憶部のアドレス値)で表現される。従って、上記の
図16の消音処理は、ボイス1について、カウンタSCNT
(1) を0にリセットし、音量レベルレジスタLEVEL(1)を
0にするとともに、進行位置レジスタSPHASE(1) の値を
末尾アドレスレジスタENDADRS(1)の値にして波形再生が
進行しないようにするものである。
【0048】ステップF3においてキー情報がキーオン
情報key.onであった場合、操作子設定テーブルのリンク
モードlink.mode を調べる(ステップF5)。リンクモ
ードlink.mode が“0”の場合には「リトリガ」を行う
モード、すなわち新たなキーオン情報key.onを受信した
ら波形データを再生中であってもその波形データの先頭
から再生し直すモードであり、よって〔ボイス1の発音
開始処理〕を行う(ステップF10)。この〔ボイス1
の発音開始処理〕は要するに、波形メモリ12から該当
する波形のパラメータおよび波形データをその先頭から
読み出す処理である。
情報key.onであった場合、操作子設定テーブルのリンク
モードlink.mode を調べる(ステップF5)。リンクモ
ードlink.mode が“0”の場合には「リトリガ」を行う
モード、すなわち新たなキーオン情報key.onを受信した
ら波形データを再生中であってもその波形データの先頭
から再生し直すモードであり、よって〔ボイス1の発音
開始処理〕を行う(ステップF10)。この〔ボイス1
の発音開始処理〕は要するに、波形メモリ12から該当
する波形のパラメータおよび波形データをその先頭から
読み出す処理である。
【0049】この〔ボイス1の発音開始処理〕が実行さ
れる条件は以下のようになる。 モノフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき・ モノフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき. ポリフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき. ポリフォニック2のモードで、ボイス2が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき.(このモードのとき、ボイス1は割当処理で
発音されていないことを確認して割り当てられる)。
れる条件は以下のようになる。 モノフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき・ モノフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき. ポリフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき. ポリフォニック2のモードで、ボイス2が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき.(このモードのとき、ボイス1は割当処理で
発音されていないことを確認して割り当てられる)。
【0050】この〔ボイス1発音開始処理〕の具体的な
内容は、図18に示されるように、 PITCH(1)=pitch LEVEL(1)=level SCNT(1) =0 ENDADRS(1)=@ (bank * $800) SPHASE(1) =@ (bank * $800 +SCNT(1) +1) SPITCH(1) =@ (bank * $800 +SCNT(1) +2) SADRS(1)=@ (bank * $800 +SCNT(1) +3) START(1)=SPHASE(1) WIDTH(1)=0 S.FLG1(1) =0 S.FLG2(1) =0 SCNT(1) =1 を行うことである。
内容は、図18に示されるように、 PITCH(1)=pitch LEVEL(1)=level SCNT(1) =0 ENDADRS(1)=@ (bank * $800) SPHASE(1) =@ (bank * $800 +SCNT(1) +1) SPITCH(1) =@ (bank * $800 +SCNT(1) +2) SADRS(1)=@ (bank * $800 +SCNT(1) +3) START(1)=SPHASE(1) WIDTH(1)=0 S.FLG1(1) =0 S.FLG2(1) =0 SCNT(1) =1 を行うことである。
【0051】ここで、START は後述の音素片を切り出す
ための先頭アドレスstart を格納するレジスタである。
また上記中の「*」は乗算を、「@」は括弧内に示され
たアドレスからデータを読み出すことを表す。例えば、
ENDADRS(1)=@ (bank * $800 ) は、パラメータ記憶部
の読出しポインタが示すアドレス(bank * $800 ) から
内容dataを読み出し、レジスタENDADRS(1)に設定するこ
とを意味している。
ための先頭アドレスstart を格納するレジスタである。
また上記中の「*」は乗算を、「@」は括弧内に示され
たアドレスからデータを読み出すことを表す。例えば、
ENDADRS(1)=@ (bank * $800 ) は、パラメータ記憶部
の読出しポインタが示すアドレス(bank * $800 ) から
内容dataを読み出し、レジスタENDADRS(1)に設定するこ
とを意味している。
【0052】上記のボイス1発音開始処理は、ボイス1
について、キー入力された音高情報pitch とレベル情報
level をキー情報レジスタPITCH(1)、LEVEL(1)に転記
し、カウンタSCNT(1) を初期値「0」にリセットし、該
当するバンク番号bank (波形領域番号) の波形データの
末尾アドレスendadrs を波形パラメータ記憶部における
当該バンク番号bankの波形領域の先頭番地$0000 から読
み出して末尾アドレスレジスタENDADRS(1)にセットし、
先頭の波形区間の開始アドレスsadrs0を波形パラメータ
記憶部における上記先頭から2番目の番地$0001 (最初
の波形区間の開始アドレスが格納されている) から読み
出して進行位置sphaseとして進行位置レジスタSPHASE
(1) にセットするとともに、その進行位置レジスタSPHA
SE(1) の値を先頭アドレスレジスタSTART(1)にセット
し、上記波形データの先頭の波形区間の波形ピッチspi
tch0を上記先頭番地から2番目の番地$0002 から読み出
して波形ピッチレジスタSPITCH(1) にセットし、上記波
形データの先頭から2番目の波形区間の開始アドレスsa
drs1を上記先頭から3番目の番地$0003 から読み出して
開始アドレスSADRS(1)にセットし、レジスタWIDTH(1)、
S.FLG1(1) 、S.FLG2(1) に0をセットするなどの処理を
行った後に、カウンタSCNT(1) を一つ更新して1にする
ものである。
について、キー入力された音高情報pitch とレベル情報
level をキー情報レジスタPITCH(1)、LEVEL(1)に転記
し、カウンタSCNT(1) を初期値「0」にリセットし、該
当するバンク番号bank (波形領域番号) の波形データの
末尾アドレスendadrs を波形パラメータ記憶部における
当該バンク番号bankの波形領域の先頭番地$0000 から読
み出して末尾アドレスレジスタENDADRS(1)にセットし、
先頭の波形区間の開始アドレスsadrs0を波形パラメータ
記憶部における上記先頭から2番目の番地$0001 (最初
の波形区間の開始アドレスが格納されている) から読み
出して進行位置sphaseとして進行位置レジスタSPHASE
(1) にセットするとともに、その進行位置レジスタSPHA
SE(1) の値を先頭アドレスレジスタSTART(1)にセット
し、上記波形データの先頭の波形区間の波形ピッチspi
tch0を上記先頭番地から2番目の番地$0002 から読み出
して波形ピッチレジスタSPITCH(1) にセットし、上記波
形データの先頭から2番目の波形区間の開始アドレスsa
drs1を上記先頭から3番目の番地$0003 から読み出して
開始アドレスSADRS(1)にセットし、レジスタWIDTH(1)、
S.FLG1(1) 、S.FLG2(1) に0をセットするなどの処理を
行った後に、カウンタSCNT(1) を一つ更新して1にする
ものである。
【0053】リンクモードlink.mode が“1”の場合に
は「リトリガ」を行わないモード、すなわち新たなキー
オン情報key.onを受信したら、波形データを再生中であ
れば、その時点以降の波形データを当該キーオン情報ke
y.onで指定されたピッチに変更して再生するモードであ
る。この場合、まず開始カウンタSCNT(1) が0か否かを
判定する(ステップF6)。ここで開始カウンタSCNT
(n) はボイスnの発音の進行を管理するカウンタであ
り、この値が「0」の場合にはボイスnがまだ未発音で
あることを示し、何らかの値となっていれば既に発音開
始されたことを示す。
は「リトリガ」を行わないモード、すなわち新たなキー
オン情報key.onを受信したら、波形データを再生中であ
れば、その時点以降の波形データを当該キーオン情報ke
y.onで指定されたピッチに変更して再生するモードであ
る。この場合、まず開始カウンタSCNT(1) が0か否かを
判定する(ステップF6)。ここで開始カウンタSCNT
(n) はボイスnの発音の進行を管理するカウンタであ
り、この値が「0」の場合にはボイスnがまだ未発音で
あることを示し、何らかの値となっていれば既に発音開
始されたことを示す。
【0054】開始カウンタSCNT(1) が「0」以外の値す
なわちボイス1が既に発音中であれば、ステップF7に
移行しボイス1からボイス1へのリンク発音処理を行う
(ステップF7)。この経路を辿るのは、モードはモノ
フォニックであり、ボイス1が既に発音中であり、かつ
「リトリガ」をしない場合であるから、ボイス1で発音
中の波形を、キーオン情報の入力時点から以降、同じボ
イス1において当該キーオン情報中の音高情報pitch に
変更して再生する。上記リンク発音処理はこのための処
理であり、キー情報レジスタの音高情報レジスタPITCH
(1)とレベル情報レジスタLEVEL(1)を、受信したキーオ
ン情報中の音高情報pitch とレベル情報level で書き換
える処理、すなわち、図20に示されるように、 PITCH(1)=pitch LEVEL(1)=level とする処理である。
なわちボイス1が既に発音中であれば、ステップF7に
移行しボイス1からボイス1へのリンク発音処理を行う
(ステップF7)。この経路を辿るのは、モードはモノ
フォニックであり、ボイス1が既に発音中であり、かつ
「リトリガ」をしない場合であるから、ボイス1で発音
中の波形を、キーオン情報の入力時点から以降、同じボ
イス1において当該キーオン情報中の音高情報pitch に
変更して再生する。上記リンク発音処理はこのための処
理であり、キー情報レジスタの音高情報レジスタPITCH
(1)とレベル情報レジスタLEVEL(1)を、受信したキーオ
ン情報中の音高情報pitch とレベル情報level で書き換
える処理、すなわち、図20に示されるように、 PITCH(1)=pitch LEVEL(1)=level とする処理である。
【0055】この〔ボイス1からボイス1へのリンク発
音処理〕が実行される条件は、モノフォニック2のモー
ドで、ボイス1が発音中にボイス1に対するキーオン情
報が入力されたときであり、このモードのときにのみ、
割当処理でボイス1が発音中にボイス1に対するキーオ
ン情報が割り当てられる。
音処理〕が実行される条件は、モノフォニック2のモー
ドで、ボイス1が発音中にボイス1に対するキーオン情
報が入力されたときであり、このモードのときにのみ、
割当処理でボイス1が発音中にボイス1に対するキーオ
ン情報が割り当てられる。
【0056】ステップF6でカウンタSCNT(1) が「0」
すなわちボイス1がまだ未発音であれば、さらにボイス
2のカウンタSCNT(2) が「0」か否かを判定する(ステ
ップF8)。カウンタSCNT(2) が「0」でない場合はボ
イス2が発音中であることを意味し、よってモードはポ
リフォニックであり、入力したキーオン情報はレガート
奏法における2番目の押鍵のキーオン情報である。この
場合、ボイス2での波形の発音再生を継続するととも
に、そのキーオン情報の入力時点以降の波形に対して、
その新たに入力したキーオン情報に応じた音高での再生
をボイス1でも行う。このための処理がステップF9の
〔ボイス2からボイス1へのリンク発音処理〕であり、
ボイス2に保持していた再生中の波形の各種データをボ
イス1に渡すとともに、そのデータを新たに入力したキ
ーオン情報に基づいて変更する。
すなわちボイス1がまだ未発音であれば、さらにボイス
2のカウンタSCNT(2) が「0」か否かを判定する(ステ
ップF8)。カウンタSCNT(2) が「0」でない場合はボ
イス2が発音中であることを意味し、よってモードはポ
リフォニックであり、入力したキーオン情報はレガート
奏法における2番目の押鍵のキーオン情報である。この
場合、ボイス2での波形の発音再生を継続するととも
に、そのキーオン情報の入力時点以降の波形に対して、
その新たに入力したキーオン情報に応じた音高での再生
をボイス1でも行う。このための処理がステップF9の
〔ボイス2からボイス1へのリンク発音処理〕であり、
ボイス2に保持していた再生中の波形の各種データをボ
イス1に渡すとともに、そのデータを新たに入力したキ
ーオン情報に基づいて変更する。
【0057】この〔ボイス2からボイス1へのリンク発
音処理〕が実行される条件は、ポリフォニック2のモー
ドで、ボイス2が発音中にボイス1に対するキーオン情
報が入力されたときである。このモードのとき、ボイス
1は割当処理で発音されていないことを確認して割り当
てられる。
音処理〕が実行される条件は、ポリフォニック2のモー
ドで、ボイス2が発音中にボイス1に対するキーオン情
報が入力されたときである。このモードのとき、ボイス
1は割当処理で発音されていないことを確認して割り当
てられる。
【0058】〔ボイス2からボイス1へのリンク発音処
理〕の具体的内容は、図22に示されるように、 PITCH(1)=pitch LEVEC(1)=level SCNT(1) =SCNT(2) ENDADRS(1)=ENDADRS(2) SPHASE(1) =SPHASE(2) SPITCH(1)=SPITCH(2) SADRS(1)=SADRS(2) START(1)=START(2) WIDTH(1)=0 S.FLG1(1) =0 S.FLG2(1) =0 とする処理である。
理〕の具体的内容は、図22に示されるように、 PITCH(1)=pitch LEVEC(1)=level SCNT(1) =SCNT(2) ENDADRS(1)=ENDADRS(2) SPHASE(1) =SPHASE(2) SPITCH(1)=SPITCH(2) SADRS(1)=SADRS(2) START(1)=START(2) WIDTH(1)=0 S.FLG1(1) =0 S.FLG2(1) =0 とする処理である。
【0059】すなわち、このリンク発音処理は、ボイス
2での発音をその音高とレベルを変更してボイス1で受
け継ぐために、キー入力された音高情報pitch とレベル
情報level をキー情報レジスタPITCH(1)、LEVEL(1)に転
記するとともに、ボイス2における、レジスタSCNT(2)
、ENDADRS(2)、SPHASE(2) 、SADRS(2)、START(2)の各
値をボイス1におけるレジスタSCNT(1) 、ENDADRS(1)、
SPHASE(1) 、SADRS(1)、START(1)にそれぞれ書き写し、
フラグS.FLG1(1) 、S.FLG2(1) に0をセットするもので
ある。
2での発音をその音高とレベルを変更してボイス1で受
け継ぐために、キー入力された音高情報pitch とレベル
情報level をキー情報レジスタPITCH(1)、LEVEL(1)に転
記するとともに、ボイス2における、レジスタSCNT(2)
、ENDADRS(2)、SPHASE(2) 、SADRS(2)、START(2)の各
値をボイス1におけるレジスタSCNT(1) 、ENDADRS(1)、
SPHASE(1) 、SADRS(1)、START(1)にそれぞれ書き写し、
フラグS.FLG1(1) 、S.FLG2(1) に0をセットするもので
ある。
【0060】ステップF8において、カウンタSCNT(2)
が「0」の場合はボイス2がまだ未発音であることを意
味し、よってモードはモノフォニックまたはポリフォニ
ックである。この経路を辿る場合はボイス1もボイス2
も未発音であるので、新たに入力したキーオン情報はレ
ガート奏法における2番目の押鍵ではなく、よってこの
キーオン情報はボイス1に割り当てられて、波形データ
は先頭から再生される。この場合、前述のステップF1
0の〔ボイス1の発音開始処理〕を行う。
が「0」の場合はボイス2がまだ未発音であることを意
味し、よってモードはモノフォニックまたはポリフォニ
ックである。この経路を辿る場合はボイス1もボイス2
も未発音であるので、新たに入力したキーオン情報はレ
ガート奏法における2番目の押鍵ではなく、よってこの
キーオン情報はボイス1に割り当てられて、波形データ
は先頭から再生される。この場合、前述のステップF1
0の〔ボイス1の発音開始処理〕を行う。
【0061】一方、ステップF2の判定において、ボイ
スモジュール情報voice.Noがvoice.No2であった場合は
モードはポリフォニックとなる。この場合、更にそのキ
ー情報がキーオン情報key.onかキーオフ情報key.off か
を判定し(ステップF11)、キーオフ情報key.off で
あれば、それまで発音を行っていたボイス2(No.2のボ
イスモジュール) の消音処理を行う(ステップF1
6)。この消音処理の詳細な内容は、図17に示すよう
に、 SCNT(2) =0 LEVEL(2)=0 SPHASE(2) =ENDADRS(2) とする処理である。
スモジュール情報voice.Noがvoice.No2であった場合は
モードはポリフォニックとなる。この場合、更にそのキ
ー情報がキーオン情報key.onかキーオフ情報key.off か
を判定し(ステップF11)、キーオフ情報key.off で
あれば、それまで発音を行っていたボイス2(No.2のボ
イスモジュール) の消音処理を行う(ステップF1
6)。この消音処理の詳細な内容は、図17に示すよう
に、 SCNT(2) =0 LEVEL(2)=0 SPHASE(2) =ENDADRS(2) とする処理である。
【0062】キー情報がキーオン情報key.onであった場
合、操作子設定テーブルのリンクモードlind.mode を調
べる。リンクモードlink.mode が“0”の場合には「リ
トリガ」を行うモード、すなわち新たなキーオン情報ke
y.onを受信したら波形データを再生中であってもその波
形データの先頭から再生し直すモードであり、よって
〔ボイス2の発音開始処理〕を行う(ステップF1
3)。この〔ボイス2の発音開始処理〕は要するに、波
形メモリ12から該当する波形のパラメータおよび波形
データをその先頭から読み出してボイス2で発音する処
理である。
合、操作子設定テーブルのリンクモードlind.mode を調
べる。リンクモードlink.mode が“0”の場合には「リ
トリガ」を行うモード、すなわち新たなキーオン情報ke
y.onを受信したら波形データを再生中であってもその波
形データの先頭から再生し直すモードであり、よって
〔ボイス2の発音開始処理〕を行う(ステップF1
3)。この〔ボイス2の発音開始処理〕は要するに、波
形メモリ12から該当する波形のパラメータおよび波形
データをその先頭から読み出してボイス2で発音する処
理である。
【0063】この〔ボイス2の発音開始処理〕が実行さ
れる条件は、 ポリフォニック1のモードで、ボイス2に対するキー
オン情報が入力されたとき、 ポリフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき、である。 なお、ボイス2への割当はポリフォニック1、ポリフォ
ニック2のときだけ行われる。
れる条件は、 ポリフォニック1のモードで、ボイス2に対するキー
オン情報が入力されたとき、 ポリフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき、である。 なお、ボイス2への割当はポリフォニック1、ポリフォ
ニック2のときだけ行われる。
【0064】この〔ボイス2発音開始処理〕の具体的な
内容は、図19に示されるように、 PITCH(2)=pitch LEVEL(2)=level SCNT(2) =0 ENDADRS(2)=@ (bank * $800) SPHASE(2) =@ (bank * $800 +SCNT(2) +1) SPITCH(2) =@ (bank * $800 +SCNT(2) +2) SADRS(2)=@ (bank * $800 +SCNT(2) +3) START(2)=SPHASE(2) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 SCNT(2) =1 を行うことである。
内容は、図19に示されるように、 PITCH(2)=pitch LEVEL(2)=level SCNT(2) =0 ENDADRS(2)=@ (bank * $800) SPHASE(2) =@ (bank * $800 +SCNT(2) +1) SPITCH(2) =@ (bank * $800 +SCNT(2) +2) SADRS(2)=@ (bank * $800 +SCNT(2) +3) START(2)=SPHASE(2) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 SCNT(2) =1 を行うことである。
【0065】ステップF12の判断で、リンクモードli
nk.mode が“1”の場合には「リトリガ」を行わないモ
ード、すなわち新たなキーオン情報key.onを受信した
ら、波形データを再生中であれば、その時点以降の波形
データを当該キーオン情報key.onで指定されたピッチに
変更して再生するモードである。この場合、まずカウン
タSCNT(1) が0か否かを判定する(ステップF14)。
nk.mode が“1”の場合には「リトリガ」を行わないモ
ード、すなわち新たなキーオン情報key.onを受信した
ら、波形データを再生中であれば、その時点以降の波形
データを当該キーオン情報key.onで指定されたピッチに
変更して再生するモードである。この場合、まずカウン
タSCNT(1) が0か否かを判定する(ステップF14)。
【0066】カウンタSCNT(1) が「0」の場合、すなわ
ちボイス1が未だ未発音であれば、前述のステップF1
3の〔ボイス2の発音開始処理〕を行う。
ちボイス1が未だ未発音であれば、前述のステップF1
3の〔ボイス2の発音開始処理〕を行う。
【0067】カウンタSCNT(1) が「0」以外の値の場
合、すなわちボイス1が既に発音中であれば、ステップ
F15に移行し〔ボイス1からボイス2へのリンク発音
処理〕を行う。この経路を辿るのは、モードはポリフォ
ニックであり、ボイス1が既に発音中であり、かつ「リ
トリガ」をしない場合であるから、ボイス1で発音中の
波形を、キーオン情報の入力時点から以降、ボイス1で
継続して発音するとともに、それと並行して、ボイス2
においても当該キーオン情報中の音高情報pitch に変更
して再生する。上記〔ボイス1からボイス2へのリンク
発音処理〕はこのための処理である。
合、すなわちボイス1が既に発音中であれば、ステップ
F15に移行し〔ボイス1からボイス2へのリンク発音
処理〕を行う。この経路を辿るのは、モードはポリフォ
ニックであり、ボイス1が既に発音中であり、かつ「リ
トリガ」をしない場合であるから、ボイス1で発音中の
波形を、キーオン情報の入力時点から以降、ボイス1で
継続して発音するとともに、それと並行して、ボイス2
においても当該キーオン情報中の音高情報pitch に変更
して再生する。上記〔ボイス1からボイス2へのリンク
発音処理〕はこのための処理である。
【0068】この〔ボイス1からボイス2へのリンク発
音処理〕が実行される条件は、ポリフォニック2のモー
ドで、ボイス1が発音中にボイス2に対するキーオン情
報が入力されたときである。
音処理〕が実行される条件は、ポリフォニック2のモー
ドで、ボイス1が発音中にボイス2に対するキーオン情
報が入力されたときである。
【0069】〔ボイス1からボイス2へのリンク発音処
理〕の具体的内容は、図21に示されるように、 PITCH(2)=pitch LEVEC(2)=level SCNT(2) =SCNT(1) ENDADRS(2)=ENDADRS(1) SPHASE(2) =SPHASE(1) SPITCH(2)=SPITCH(1) SADRS(2)=SADRS(1) START(2)=START(1) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 とする処理である。
理〕の具体的内容は、図21に示されるように、 PITCH(2)=pitch LEVEC(2)=level SCNT(2) =SCNT(1) ENDADRS(2)=ENDADRS(1) SPHASE(2) =SPHASE(1) SPITCH(2)=SPITCH(1) SADRS(2)=SADRS(1) START(2)=START(1) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 とする処理である。
【0070】キー情報の入力に対して以上の処理が終了
したら、ボイスモジュール番号nを「1」に設定し(ス
テップF17)、ボイスモジュール(n)の読出し処理
を行う(ステップF18)。この読出し処理については
後に詳述する。その後、ボイスモジュール番号nが最終
番号(この実施例ではボイス数の2)か判定し(ステッ
プF19)、最終番号に達していなかったら、ボイスモ
ジュール番号nを一つインクリメントして(ステップF
20)、その番号のボイスモジュールの読出し処理を繰
り返す。
したら、ボイスモジュール番号nを「1」に設定し(ス
テップF17)、ボイスモジュール(n)の読出し処理
を行う(ステップF18)。この読出し処理については
後に詳述する。その後、ボイスモジュール番号nが最終
番号(この実施例ではボイス数の2)か判定し(ステッ
プF19)、最終番号に達していなかったら、ボイスモ
ジュール番号nを一つインクリメントして(ステップF
20)、その番号のボイスモジュールの読出し処理を繰
り返す。
【0071】ボイスモジュール番号が最終番号になった
ら、各ボイス1、2の出力OUT(1)、OUT(2)を足し合わせ
て合成出力OUT とし(ステップF21)、この合成出力
OUTを出力する(ステップF22)。
ら、各ボイス1、2の出力OUT(1)、OUT(2)を足し合わせ
て合成出力OUT とし(ステップF21)、この合成出力
OUTを出力する(ステップF22)。
【0072】上述のステップF18の「読出し処理」
は、サンプル波形(音声)から音素片を切り出し、その
音素片のホルマントの特徴をほぼ保ったまま、所望の再
生音高に対応した周期でその音素片を再生することによ
って、サンプル波形のホルマント特性を保ったままピッ
チを変換するものである。
は、サンプル波形(音声)から音素片を切り出し、その
音素片のホルマントの特徴をほぼ保ったまま、所望の再
生音高に対応した周期でその音素片を再生することによ
って、サンプル波形のホルマント特性を保ったままピッ
チを変換するものである。
【0073】この読出し処理では、再生される波形のピ
ッチは鍵盤で押下したキーの音高に応じて変更される
が、再生時間は再生ピッチの大きさ(すなわちどのキー
が押下されたか)によらず一定である。すなわち、ポリ
フォニックの場合、レガート奏法の2番目の押鍵によ
り、1番目の押鍵の音高に応じた波形再生と並行して2
番目の押鍵の音高に応じた波形再生が行われた場合、1
番目の波形再生の終了と2番目の波形再生の終了は同時
となる。一方、従来のように単に読出し速度を変えるこ
とでピッチシフトを行っている場合には、上記のような
ときには1番目と2番目の波形再生の終了はタイミング
がずれてしまい違和感が生じるが、本実施例によれば、
かかる違和感を無くすことができる。
ッチは鍵盤で押下したキーの音高に応じて変更される
が、再生時間は再生ピッチの大きさ(すなわちどのキー
が押下されたか)によらず一定である。すなわち、ポリ
フォニックの場合、レガート奏法の2番目の押鍵によ
り、1番目の押鍵の音高に応じた波形再生と並行して2
番目の押鍵の音高に応じた波形再生が行われた場合、1
番目の波形再生の終了と2番目の波形再生の終了は同時
となる。一方、従来のように単に読出し速度を変えるこ
とでピッチシフトを行っている場合には、上記のような
ときには1番目と2番目の波形再生の終了はタイミング
がずれてしまい違和感が生じるが、本実施例によれば、
かかる違和感を無くすことができる。
【0074】この読出し処理動作の概要を説明すると、
波形メモリ12に記憶されている波形データからパラメ
ータデータに基づいて所望の区間(この実施例では、基
本的には2ピッチ分の波形区間で、場合によってはそれ
よりも短い波形区間)を音素片として時間経過に従って
順次に切り出して、その切り出した音素片を、元の波形
とは異なるピッチおよびホルマントで再生するものであ
る。その際、この音素片の再生を二つの処理経路で並行
して行い、それぞれの処理経路では再生しようとするピ
ッチ周期の2倍の周期でかつ互いが半周期(再生しよう
とするピッチ周期)ずれるようにして音素片を再生し、
これらを合成して再生しようとするピッチ周期にするよ
うにしている。
波形メモリ12に記憶されている波形データからパラメ
ータデータに基づいて所望の区間(この実施例では、基
本的には2ピッチ分の波形区間で、場合によってはそれ
よりも短い波形区間)を音素片として時間経過に従って
順次に切り出して、その切り出した音素片を、元の波形
とは異なるピッチおよびホルマントで再生するものであ
る。その際、この音素片の再生を二つの処理経路で並行
して行い、それぞれの処理経路では再生しようとするピ
ッチ周期の2倍の周期でかつ互いが半周期(再生しよう
とするピッチ周期)ずれるようにして音素片を再生し、
これらを合成して再生しようとするピッチ周期にするよ
うにしている。
【0075】図23、図24はこのピッチ変換処理を説
明する図である。ホルマント移動量f.vrは1であればホ
ルマントに変更なし、1以外であればホルマントを若干
変更する。ここでは、ホルマント移動量f.vrが1、すな
わちホルマント変更無しで、かつ再生ピッチを波形メモ
リ12の元の波形データより高くする場合を図23で説
明し、ホルマント移動量f.vrが1より大きい、すなわち
ホルマント変更有りで、かつ再生ピッチを波形メモリ1
2の元の波形データと同じにする場合を図24で説明す
る。
明する図である。ホルマント移動量f.vrは1であればホ
ルマントに変更なし、1以外であればホルマントを若干
変更する。ここでは、ホルマント移動量f.vrが1、すな
わちホルマント変更無しで、かつ再生ピッチを波形メモ
リ12の元の波形データより高くする場合を図23で説
明し、ホルマント移動量f.vrが1より大きい、すなわち
ホルマント変更有りで、かつ再生ピッチを波形メモリ1
2の元の波形データと同じにする場合を図24で説明す
る。
【0076】まず、図23を参照して、鍵盤のキー押下
で音高を指定することにより、元の波形データより高域
側にピッチをシフトし、かつホルマント特性の変更は行
わない(ホルマント移動量f.vr=1)場合について説明
する。。
で音高を指定することにより、元の波形データより高域
側にピッチをシフトし、かつホルマント特性の変更は行
わない(ホルマント移動量f.vr=1)場合について説明
する。。
【0077】図23の(a)はwave0領域の波形データ
を示しており、波形パラメータで示されるピッチspitch
0 、spitch1 ・・・を有する。そして、基本的には、こ
のピッチspitchに対応して音素片が順次に切り出され
る。なお、この図23(a) には開始アドレスsadrs0か
ら始まる波形ピッチspitch0 のwave0領域の複数周期の
波形のうちのP0〜P4の5周期分の波形を示してい
る。
を示しており、波形パラメータで示されるピッチspitch
0 、spitch1 ・・・を有する。そして、基本的には、こ
のピッチspitchに対応して音素片が順次に切り出され
る。なお、この図23(a) には開始アドレスsadrs0か
ら始まる波形ピッチspitch0 のwave0領域の複数周期の
波形のうちのP0〜P4の5周期分の波形を示してい
る。
【0078】また、鍵盤のキーで音高指定されたキー指
定ピッチpitch は後述の「読出し処理サブルーチン」の
ステップF41でwidth に設定されており、width は再
生ピッチを表すことになる。すなわち、再生ピッチwidt
h =キー指定ピッチpitchである。この再生ピッチwidth
を周期長とする再生位相phase を図23 (b) のよう
に作成し、この再生位相pahse から2つの処理経路の位
相、すなわち図23(d) に示す第1の処理経路の第1
位相ph1、図23 (e) に示す第2の処理経路の第2位
相ph2を作成する。なお、これら第1、第2の位相ph
1、ph2は後述の「読出し処理サブルーチン」のステッ
プF38でサンプリング周期毎にインクリメントされる
演算をしている。
定ピッチpitch は後述の「読出し処理サブルーチン」の
ステップF41でwidth に設定されており、width は再
生ピッチを表すことになる。すなわち、再生ピッチwidt
h =キー指定ピッチpitchである。この再生ピッチwidth
を周期長とする再生位相phase を図23 (b) のよう
に作成し、この再生位相pahse から2つの処理経路の位
相、すなわち図23(d) に示す第1の処理経路の第1
位相ph1、図23 (e) に示す第2の処理経路の第2位
相ph2を作成する。なお、これら第1、第2の位相ph
1、ph2は後述の「読出し処理サブルーチン」のステッ
プF38でサンプリング周期毎にインクリメントされる
演算をしている。
【0079】そして、第1の処理経路は、後述の「波形
読出し処理サブルーチン」のステップF57で行う読出
しアドレス演算の「第1位相ph1×ホルマント移動量f.
vr」の部分で決まる読出し速度で、また、第2の処理経
路は、後述の「波形読出し処理サブルーチン」のステッ
プF66で行う読出しアドレス演算の「第2位相ph2×
ホルマント移動量F.vR」の部分で決まる読出し速度で、
それぞれの音素片を順次に読み出す。この読出し速度が
ホルマント特性の変更に関係する。ただし、今の場合は
ホルマント移動量f.vr=1であるから、第1、第2の位
相ph1、ph2の変化と等しく、結果的にホルマント特性
は変更されない。
読出し処理サブルーチン」のステップF57で行う読出
しアドレス演算の「第1位相ph1×ホルマント移動量f.
vr」の部分で決まる読出し速度で、また、第2の処理経
路は、後述の「波形読出し処理サブルーチン」のステッ
プF66で行う読出しアドレス演算の「第2位相ph2×
ホルマント移動量F.vR」の部分で決まる読出し速度で、
それぞれの音素片を順次に読み出す。この読出し速度が
ホルマント特性の変更に関係する。ただし、今の場合は
ホルマント移動量f.vr=1であるから、第1、第2の位
相ph1、ph2の変化と等しく、結果的にホルマント特性
は変更されない。
【0080】さらに、第1、第2の位相ph1、ph2にそ
れぞれ同期して、ホルマント処理のために波形データを
切り取る切出し窓としてのエンベロープ env1、 env2
を第1、第2の処理経路について作成する。第1の処理
経路は図23 (f) に示すエンベロープ env1の波形を
持ち、第2の処理経路は図23 (g) に示すエンベロー
プ env2の波形を持つ。エンベロープ env1、 env2は
0〜1の範囲の値であり、エンベロープ窓長lenghtを半
周期とし、前半の周期では0から逐次に増加して1にな
り、後半の周期では1から逐次に減少して0になる三角
形をしている。エンベロープenv1、env2の半周期である
エンベロープ窓長lengthは、後述の「読出し処理のサブ
ルーチン」のステップF41において、「エンベロープ
長length=元波形のピッチspitch/ホルマント移動量f.
vr」で求める。但し、エンペロープ窓長lengthは後述す
るように再生ピッチwidth を超えないように最大でも再
生ピッチwidth の値に制限される。図23はかかる制限
がされた場合の例である。
れぞれ同期して、ホルマント処理のために波形データを
切り取る切出し窓としてのエンベロープ env1、 env2
を第1、第2の処理経路について作成する。第1の処理
経路は図23 (f) に示すエンベロープ env1の波形を
持ち、第2の処理経路は図23 (g) に示すエンベロー
プ env2の波形を持つ。エンベロープ env1、 env2は
0〜1の範囲の値であり、エンベロープ窓長lenghtを半
周期とし、前半の周期では0から逐次に増加して1にな
り、後半の周期では1から逐次に減少して0になる三角
形をしている。エンベロープenv1、env2の半周期である
エンベロープ窓長lengthは、後述の「読出し処理のサブ
ルーチン」のステップF41において、「エンベロープ
長length=元波形のピッチspitch/ホルマント移動量f.
vr」で求める。但し、エンペロープ窓長lengthは後述す
るように再生ピッチwidth を超えないように最大でも再
生ピッチwidth の値に制限される。図23はかかる制限
がされた場合の例である。
【0081】第1の処理経路では、後述の「読出し処理
サブルーチン」のステップF46において設定されてい
る第1読出し先頭アドレス start1から波形データの2
ピッチ分の音素片にエンベロープ env1を乗算し、図2
3 (h) に示す波形を得る。同様に、第2の処理経路で
は、後述の「読出し処理サブルーチン」のステップF4
7において設定されている第2読出し先頭アドレス sta
rt2から波形データの2ピッチ分の音素片にエンベロー
プ env2を乗算し、図23(i) に示す波形を得る。な
お、図23の場合は、前述のように、エンベロープ窓長
lengthが再生ピッチwidth の値に制限されているため、
音素片は波形データの2ピッチ分より短くなっている。
このような処理の仕方によれば、これらの波形は元の波
形データの音素片のホルマント特性をそのまま保持した
ものとなる。この図23 (h) 、(i) の波形は再生ピ
ッチwidth の周期長の2倍の長さであるが、両者の波形
を足し合わせると再生ピッチwidth の周期長となる。従
って、鍵盤からのキー指定ピッチpitch によって元のサ
ンプリングデータを高域側にピッチシフトしつつ、その
ホルマント特性はそのまま維持できる。
サブルーチン」のステップF46において設定されてい
る第1読出し先頭アドレス start1から波形データの2
ピッチ分の音素片にエンベロープ env1を乗算し、図2
3 (h) に示す波形を得る。同様に、第2の処理経路で
は、後述の「読出し処理サブルーチン」のステップF4
7において設定されている第2読出し先頭アドレス sta
rt2から波形データの2ピッチ分の音素片にエンベロー
プ env2を乗算し、図23(i) に示す波形を得る。な
お、図23の場合は、前述のように、エンベロープ窓長
lengthが再生ピッチwidth の値に制限されているため、
音素片は波形データの2ピッチ分より短くなっている。
このような処理の仕方によれば、これらの波形は元の波
形データの音素片のホルマント特性をそのまま保持した
ものとなる。この図23 (h) 、(i) の波形は再生ピ
ッチwidth の周期長の2倍の長さであるが、両者の波形
を足し合わせると再生ピッチwidth の周期長となる。従
って、鍵盤からのキー指定ピッチpitch によって元のサ
ンプリングデータを高域側にピッチシフトしつつ、その
ホルマント特性はそのまま維持できる。
【0082】図24はホルマント移動量f.vrを1より大
きくして再生波形のホルマントを元波形のホルマントに
より高域側にシフトする場合を示すものである。ここで
は理解しやすくするためにキー指定ピッチが元波形のピ
ッチspitchとほぼ等しいものとして示している。
きくして再生波形のホルマントを元波形のホルマントに
より高域側にシフトする場合を示すものである。ここで
は理解しやすくするためにキー指定ピッチが元波形のピ
ッチspitchとほぼ等しいものとして示している。
【0083】音素片の読出し速度は、第1の処理経路
が、「第1位相ph1×ホルマント移動量f.vr」、第2の
処理経路が、「第2位相ph2×ホルマント移動量f.vr」
であるから、第1、第2の位相ph1、ph2の変化より速
く、結果的にホルマント特性は高域側にシフトされ、変
更が付与されることになる。
が、「第1位相ph1×ホルマント移動量f.vr」、第2の
処理経路が、「第2位相ph2×ホルマント移動量f.vr」
であるから、第1、第2の位相ph1、ph2の変化より速
く、結果的にホルマント特性は高域側にシフトされ、変
更が付与されることになる。
【0084】そして、読出し速度を速くすることによっ
て音素片は短くなる。従って、エンベロープ env1、 e
nv2のエンプロープ窓長lengthも、「エンプロープ窓長
length=元波形のピッチspitch/ホルマント移動量f.v
r」として、音素片が短くなったことに合わせて短くし
ている。
て音素片は短くなる。従って、エンベロープ env1、 e
nv2のエンプロープ窓長lengthも、「エンプロープ窓長
length=元波形のピッチspitch/ホルマント移動量f.v
r」として、音素片が短くなったことに合わせて短くし
ている。
【0085】上記の効果付加を含む読出し処理の動作を
図25、図26のフローチャートに基づいて説明する。
なお、図25、図26中の括弧書きの添字(n) はボイス
モジュール番号nのパラメータ等であることを意味する
ものであるが、以下の説明では特に必要がない場合は記
述を省略する。
図25、図26のフローチャートに基づいて説明する。
なお、図25、図26中の括弧書きの添字(n) はボイス
モジュール番号nのパラメータ等であることを意味する
ものであるが、以下の説明では特に必要がない場合は記
述を省略する。
【0086】DSP8は、処理のため着目している1ピ
ッチ分の波形区間のピッチspitchを記憶するピッチレジ
スタSPITCH、波形ピッチspitchが変化した位置(波形区
間の開始点)を表すアドレスである開始アドレスsadrs
を記憶する開始アドレスレジスタSADRS 、時間経過に従
って更新する、音素片を切り出す基準(読出し開始)と
なる先頭アドレスstart を記憶する先頭アドレスレジス
タSTART を備えている。更に、後述する再生ピッチ周期
長width に達したかをカウントするための再生位相カウ
ンタPHASE 、第1の波形の位相ph1をカウントするため
の第1位相カウンタPH1、第2の波形の位相ph2をカウ
ントするための第2位相カウンタPH2も設けられてい
る。
ッチ分の波形区間のピッチspitchを記憶するピッチレジ
スタSPITCH、波形ピッチspitchが変化した位置(波形区
間の開始点)を表すアドレスである開始アドレスsadrs
を記憶する開始アドレスレジスタSADRS 、時間経過に従
って更新する、音素片を切り出す基準(読出し開始)と
なる先頭アドレスstart を記憶する先頭アドレスレジス
タSTART を備えている。更に、後述する再生ピッチ周期
長width に達したかをカウントするための再生位相カウ
ンタPHASE 、第1の波形の位相ph1をカウントするため
の第1位相カウンタPH1、第2の波形の位相ph2をカウ
ントするための第2位相カウンタPH2も設けられてい
る。
【0087】また、再生ピッチ(=再生ピッチ周期長wi
dth )を記憶するための再生ピッチレジスタWIDTH 、ピ
ッチspitchとホルマント移動量f.vrから定めたエンベロ
ープの窓長lengthを記憶するエンベロープ窓長レジスタ
LENGTH、第1の波形のエンベロープ env1を記憶するた
めの第1エンベロープ波形レジスタ ENV1、および第2
の波形のエンベロープ env2を記憶するための第2エン
ベロープ波形レジスタENV2が設けられている。
dth )を記憶するための再生ピッチレジスタWIDTH 、ピ
ッチspitchとホルマント移動量f.vrから定めたエンベロ
ープの窓長lengthを記憶するエンベロープ窓長レジスタ
LENGTH、第1の波形のエンベロープ env1を記憶するた
めの第1エンベロープ波形レジスタ ENV1、および第2
の波形のエンベロープ env2を記憶するための第2エン
ベロープ波形レジスタENV2が設けられている。
【0088】更に、第1の波形のエンベロープの形状を
決定するためのカウンタを構成するレジスタWINDOW1、
第2の波形のエンベロープの形状を決定するためのカウ
ンタを構成するレジスタWINDOW2、エンベロープ窓長le
ngthの値に基づいて定めたレジスタWINDOW1、WINDOW2
の値の歩進率w.rateを記憶する歩進率レジスタW.RATE、
第1の波形の読出し先頭アドレス start1を記憶する第
1読出し先頭アドレスレジスタS TART1、第2の波形の
読出し先頭アドレス start2を記憶する第2の読出し先
頭アドレスレジスタ START2、第1および第2の波形の
読出しの先頭アドレスを設定する処理を決定するために
使用する相識別フラグF等も設けられている。
決定するためのカウンタを構成するレジスタWINDOW1、
第2の波形のエンベロープの形状を決定するためのカウ
ンタを構成するレジスタWINDOW2、エンベロープ窓長le
ngthの値に基づいて定めたレジスタWINDOW1、WINDOW2
の値の歩進率w.rateを記憶する歩進率レジスタW.RATE、
第1の波形の読出し先頭アドレス start1を記憶する第
1読出し先頭アドレスレジスタS TART1、第2の波形の
読出し先頭アドレス start2を記憶する第2の読出し先
頭アドレスレジスタ START2、第1および第2の波形の
読出しの先頭アドレスを設定する処理を決定するために
使用する相識別フラグF等も設けられている。
【0089】以下、全体的な動作を図25、図26のフ
ローチャートに従って説明する。このフローチャートは
図23、図24の動作に対応したものである。上述の各
レジスタは、電源の投入の際に、初期化が行われる。即
ち、相識別フラグF(1) 、F(2) を「1」に、他のもの
例えばレジスタSCNT(2) 、SCNT(1) 、WIDTH(1)、WIDTH
(2)、PITCH(1)、PITCH(2)、LEVEL(1)、LEVEL(2)、ENDAD
RS(1)、ENDADRS(2)等を「0」に初期設定する。
ローチャートに従って説明する。このフローチャートは
図23、図24の動作に対応したものである。上述の各
レジスタは、電源の投入の際に、初期化が行われる。即
ち、相識別フラグF(1) 、F(2) を「1」に、他のもの
例えばレジスタSCNT(2) 、SCNT(1) 、WIDTH(1)、WIDTH
(2)、PITCH(1)、PITCH(2)、LEVEL(1)、LEVEL(2)、ENDAD
RS(1)、ENDADRS(2)等を「0」に初期設定する。
【0090】なお、以下の説明では、電源投入後少し時
間が経過し、前記フローチャートの処理によって、各レ
ジスタや各カウンタには、既に適当な値が記憶されてい
るとして説明する。また、このフローチャートは、DS
P8においてサンプリング周期毎に実行される。
間が経過し、前記フローチャートの処理によって、各レ
ジスタや各カウンタには、既に適当な値が記憶されてい
るとして説明する。また、このフローチャートは、DS
P8においてサンプリング周期毎に実行される。
【0091】発音開始時においては、進行位置レジスタ
SPHASE(n) には、前述のボイスの発音開始処理によっ
て、波形メモリ12のパラメータ記憶部におけるバンク
番号bankで示される波形領域の先頭の波形区間の開始ア
ドレスsadrs0が格納されている。進行位置レジスタSPHA
SEはこれを基準点にして時間の進行を管理する。1サン
プル周期毎に、進行位置レジスタSPHASE(n) の値を時間
圧伸量tcomp だけインクリメントする(ステップF3
1)。すなわち、 SPHASE(n)=SPHASE(n) +tcomp とする。このような更新をする結果、時間圧伸量tcomp
が大きければ、進行位置sphaseは速く進んで波形全体を
再生するに要する時間が短くなり、反対に時間圧伸量tc
omp が小さければ進行位置sphaseは遅く進むので波形全
体を再生するに要する時間は長くなる。
SPHASE(n) には、前述のボイスの発音開始処理によっ
て、波形メモリ12のパラメータ記憶部におけるバンク
番号bankで示される波形領域の先頭の波形区間の開始ア
ドレスsadrs0が格納されている。進行位置レジスタSPHA
SEはこれを基準点にして時間の進行を管理する。1サン
プル周期毎に、進行位置レジスタSPHASE(n) の値を時間
圧伸量tcomp だけインクリメントする(ステップF3
1)。すなわち、 SPHASE(n)=SPHASE(n) +tcomp とする。このような更新をする結果、時間圧伸量tcomp
が大きければ、進行位置sphaseは速く進んで波形全体を
再生するに要する時間が短くなり、反対に時間圧伸量tc
omp が小さければ進行位置sphaseは遅く進むので波形全
体を再生するに要する時間は長くなる。
【0092】この進行位置レジスタSPHASEの値と末尾ア
ドレスレジスタENDADRS の値を比較し (ステップF3
2) 、進行位置レジスタSPHASEの値が末尾アドレスレジ
スタENDADRS の値より小さければ、まだその波形全体の
末尾まで処理を終えていないことを意味する。この場
合、さらに進行位置レジスタSPHASEの値と開始アドレス
レジスタSADRS の値を比較する(ステップF33)。こ
の開始アドレスレジスタSADRS の値sadrs は前述した図
18、図19の発音開始処理からも分かるように、次に
続く波形区間の開始アドレスである。よって進行位置レ
ジスタSPHASEの値が開始アドレスレジスタSADRS(n)の値
より大きければ、それまで処理していた波形区間が終了
したので、この波形区間から次の波形区間に処理を移行
するために波形区間の更新を行う。この波形区間の更新
は次のようにして行う。 SPITCH(n) =@ (bank*$800 +2+SCNT(n) *2) SADRS(n) =@ (bank*$800 +3+SCNT(n) *2) SCNT(n) =SCNT(n) +1
ドレスレジスタENDADRS の値を比較し (ステップF3
2) 、進行位置レジスタSPHASEの値が末尾アドレスレジ
スタENDADRS の値より小さければ、まだその波形全体の
末尾まで処理を終えていないことを意味する。この場
合、さらに進行位置レジスタSPHASEの値と開始アドレス
レジスタSADRS の値を比較する(ステップF33)。こ
の開始アドレスレジスタSADRS の値sadrs は前述した図
18、図19の発音開始処理からも分かるように、次に
続く波形区間の開始アドレスである。よって進行位置レ
ジスタSPHASEの値が開始アドレスレジスタSADRS(n)の値
より大きければ、それまで処理していた波形区間が終了
したので、この波形区間から次の波形区間に処理を移行
するために波形区間の更新を行う。この波形区間の更新
は次のようにして行う。 SPITCH(n) =@ (bank*$800 +2+SCNT(n) *2) SADRS(n) =@ (bank*$800 +3+SCNT(n) *2) SCNT(n) =SCNT(n) +1
【0093】すなわち、波形メモリ12のパラメータ記
憶部からパラメータデータ(次に続く波形区間の波形ピ
ッチspitchと更にその後の波形区間の開始アドレスsadr
s)を読み出してきて、それぞれ、現在の波形区間の波形
ピッチレジスタSPITCH(n) の値、次の波形区間の開始ア
ドレスレジスタSADRS(n) の値とし、カウンタSCNT(n)
を一つインクリメントする。
憶部からパラメータデータ(次に続く波形区間の波形ピ
ッチspitchと更にその後の波形区間の開始アドレスsadr
s)を読み出してきて、それぞれ、現在の波形区間の波形
ピッチレジスタSPITCH(n) の値、次の波形区間の開始ア
ドレスレジスタSADRS(n) の値とし、カウンタSCNT(n)
を一つインクリメントする。
【0094】ステップF33において、進行位置レジス
タSPHASEの値が次の波形区間の開始アドレスレジスタSA
DRS(n)の値以下であれば、まだ現在の波形区間の途中で
あるから、波形区間の更新は行わないので、ステップF
34の処理は飛び越す。
タSPHASEの値が次の波形区間の開始アドレスレジスタSA
DRS(n)の値以下であれば、まだ現在の波形区間の途中で
あるから、波形区間の更新は行わないので、ステップF
34の処理は飛び越す。
【0095】さらに、先頭アドレスレジスタSTART(n)を
更新するか否かを判定するために、(START(n)+SPITCH
(n) )と進行位置レジスタSPHASEの値とを比較する(ス
テップF35)。(START(n)+SPITCH(n) )よりも進行
位置レジスタSPHASEの値の方が大きければ、進行位置sp
haseが現在の波形区間を超えたことを意味し、この場合
には先頭アドレスレジスタSTART(n)を次の波形区間の値
に更新する。この更新は先頭アドレスレジスタSTART(n)
の値を波形ピッチレジスタSPITCH(n) の値だけインクリ
メントして行う(ステップF36)。すなわち、 START(n)=START(n)+SPITCH(n) とする。進行位置レジスタSPHASEの値が(START(n)+SP
ITCH(n) )以下である場合には、この先頭アドレスの更
新は行わない。
更新するか否かを判定するために、(START(n)+SPITCH
(n) )と進行位置レジスタSPHASEの値とを比較する(ス
テップF35)。(START(n)+SPITCH(n) )よりも進行
位置レジスタSPHASEの値の方が大きければ、進行位置sp
haseが現在の波形区間を超えたことを意味し、この場合
には先頭アドレスレジスタSTART(n)を次の波形区間の値
に更新する。この更新は先頭アドレスレジスタSTART(n)
の値を波形ピッチレジスタSPITCH(n) の値だけインクリ
メントして行う(ステップF36)。すなわち、 START(n)=START(n)+SPITCH(n) とする。進行位置レジスタSPHASEの値が(START(n)+SP
ITCH(n) )以下である場合には、この先頭アドレスの更
新は行わない。
【0096】前記のステップF32で、進行位置レジス
タSPHASEの値が末尾アドレスレジスタENDADRS の値以上
の場合には、 SPHASE(n) =ENDADRS(n) とする。すなわち進行位置レジスタSPHASEを末尾アドレ
スレジスタENDADRS の値に固定して(ステップF3
7)、上述のステップF33〜F36を飛び越してステ
ップF38に移行する。この場合には、波形区間と先頭
アドレスの更新を行わない(つまりレジスタSPITCH、SA
DRS 、SCNT、START を更新しない)。これは、進行位置
sphaseが波形全体の末尾まで至ったら、その値を末尾ア
ドレスendadrsに固定してその進行を止めるものであ
る。かかる制限をしない場合には次に続く波形領域の他
の波形データが読み出されてノイズとなる虞があるが、
上記制限によりこれを防止できる。
タSPHASEの値が末尾アドレスレジスタENDADRS の値以上
の場合には、 SPHASE(n) =ENDADRS(n) とする。すなわち進行位置レジスタSPHASEを末尾アドレ
スレジスタENDADRS の値に固定して(ステップF3
7)、上述のステップF33〜F36を飛び越してステ
ップF38に移行する。この場合には、波形区間と先頭
アドレスの更新を行わない(つまりレジスタSPITCH、SA
DRS 、SCNT、START を更新しない)。これは、進行位置
sphaseが波形全体の末尾まで至ったら、その値を末尾ア
ドレスendadrsに固定してその進行を止めるものであ
る。かかる制限をしない場合には次に続く波形領域の他
の波形データが読み出されてノイズとなる虞があるが、
上記制限によりこれを防止できる。
【0097】以上のステップF31〜F37の処理によ
り、大きな時間圧伸量tcomp が設定された場合には進行
位置sphaseが速く進んで先頭アドレスstart の更新が早
く行われ、よって波形再生時間が短くなる。反対に時間
圧伸量tcomp が小さい場合には進行位置sphaseが遅く進
んで先頭アドレスstart の更新が遅く行われ、よって波
形再生時間が長くなる。なお、この時間圧伸量tcomp を
かなり小さな値に設定した場合には同じ波形区間が複数
回繰り返して再生されつつ、遅い速度で波形再生が進行
するようになる。これは、進行位置sphaseの進行がゆっ
くりしているためステップF33、F35の判断で進行
位置sphaseがなかなか比較している値よりも大きくなら
ず、よって波形区間の更新がなかなか行われないで同じ
波形区間からの読出し処理が繰り返し行われるためであ
る。反対に、時間圧伸量tcomp をかなり大きな値にする
と、波形区間の更新において、次に続く波形区間を飛び
越してしまいその波形区間の再生が行われないような場
合も生じる。
り、大きな時間圧伸量tcomp が設定された場合には進行
位置sphaseが速く進んで先頭アドレスstart の更新が早
く行われ、よって波形再生時間が短くなる。反対に時間
圧伸量tcomp が小さい場合には進行位置sphaseが遅く進
んで先頭アドレスstart の更新が遅く行われ、よって波
形再生時間が長くなる。なお、この時間圧伸量tcomp を
かなり小さな値に設定した場合には同じ波形区間が複数
回繰り返して再生されつつ、遅い速度で波形再生が進行
するようになる。これは、進行位置sphaseの進行がゆっ
くりしているためステップF33、F35の判断で進行
位置sphaseがなかなか比較している値よりも大きくなら
ず、よって波形区間の更新がなかなか行われないで同じ
波形区間からの読出し処理が繰り返し行われるためであ
る。反対に、時間圧伸量tcomp をかなり大きな値にする
と、波形区間の更新において、次に続く波形区間を飛び
越してしまいその波形区間の再生が行われないような場
合も生じる。
【0098】上記のように進行位置sphaseを時間基準と
して用いて波形区間の更新を行いつつ波形データを再生
すると、波形再生に要する時間長は再生する波形の音高
によらず、ユーザが設定する時間圧伸量tcomp で決める
ことができるようになる。この結果、ポリフォニックモ
ード2で2つのボイスモジュールを並行して発音させる
場合でも、その発音の終了時間は2つのボイスモジュー
ルで同時とすることができる。
して用いて波形区間の更新を行いつつ波形データを再生
すると、波形再生に要する時間長は再生する波形の音高
によらず、ユーザが設定する時間圧伸量tcomp で決める
ことができるようになる。この結果、ポリフォニックモ
ード2で2つのボイスモジュールを並行して発音させる
場合でも、その発音の終了時間は2つのボイスモジュー
ルで同時とすることができる。
【0099】ステップF38では、再生位相レジスタPH
ASE 、第1位相レジスタPH1、第2位相レジスタPH2の
値をそれぞれ1つ歩進させる(ステップF38)。次
に、再生位相レジスタPHASE の値と再生ピッチレジスタ
WIDTH の値を比較する(ステップF39)。この再生ピ
ッチレジスタWIDTH の値が再生されるピッチに対応す
る。再生位相レジスタPHASE の値が再生ピッチレジスタ
WIDTH の値に達していなければ、後述するステップF4
8の「波形読出し処理」へ進む。なお、再生ピッチレジ
スタWIDTH の値は後述のステップF41で設定される。
ASE 、第1位相レジスタPH1、第2位相レジスタPH2の
値をそれぞれ1つ歩進させる(ステップF38)。次
に、再生位相レジスタPHASE の値と再生ピッチレジスタ
WIDTH の値を比較する(ステップF39)。この再生ピ
ッチレジスタWIDTH の値が再生されるピッチに対応す
る。再生位相レジスタPHASE の値が再生ピッチレジスタ
WIDTH の値に達していなければ、後述するステップF4
8の「波形読出し処理」へ進む。なお、再生ピッチレジ
スタWIDTH の値は後述のステップF41で設定される。
【0100】再生位相レジスタPHASE の値が再生ピッチ
レジスタWIDTH の値に達している時にはステップF40
〜F47を行う。このステップF40〜F47ではレジ
スタPHASE(n)の初期化、各レジスタWIDTH(n)、LENGTH
(n) 、W.RATE(n) の更新、相識別フラグF(n) の反転を
行うとともに、相識別フラグF(n) の値に応じた側の第
1、第2の処理経路について各パラメータの設定を行
う。
レジスタWIDTH の値に達している時にはステップF40
〜F47を行う。このステップF40〜F47ではレジ
スタPHASE(n)の初期化、各レジスタWIDTH(n)、LENGTH
(n) 、W.RATE(n) の更新、相識別フラグF(n) の反転を
行うとともに、相識別フラグF(n) の値に応じた側の第
1、第2の処理経路について各パラメータの設定を行
う。
【0101】まず、再生位相レジスタPHASE の値を0と
する(ステップF40)。次いで、鍵盤の押鍵で音高指
定されたキー指定ピッチpitch を格納するレジスタPITC
H の値を再生ピッチレジスタWIDTH に記憶させる。この
処理を行うことにより、再生ピッチwidth はキー指定ピ
ッチpitch に一致する。
する(ステップF40)。次いで、鍵盤の押鍵で音高指
定されたキー指定ピッチpitch を格納するレジスタPITC
H の値を再生ピッチレジスタWIDTH に記憶させる。この
処理を行うことにより、再生ピッチwidth はキー指定ピ
ッチpitch に一致する。
【0102】次いで、ホルマント移動量f.vrを入力し、
第1の波形のエンベロープ env1、第2の波形のエンベ
ロープ env2の窓長lengthを、ピッチレジスタSPITCHの
値をホルマント移動量f.vrで除算して求めてエンベロー
プ窓長レジスタLENGTHに記憶させる(ステップF4
1)。
第1の波形のエンベロープ env1、第2の波形のエンベ
ロープ env2の窓長lengthを、ピッチレジスタSPITCHの
値をホルマント移動量f.vrで除算して求めてエンベロー
プ窓長レジスタLENGTHに記憶させる(ステップF4
1)。
【0103】次に、エンベロープの窓長lengthを再生ピ
ッチwidth 以内に制限する(ステップF42、F4
3)。エンベロープ窓長レジスタLENGTHの値と再生ピッ
チレジスタWIDTH の値とを比較し(ステップF42)、
エンベロープ窓長レジスタLENGTHの値が再生ピッチレジ
スタWIDTH の値よりも大きい場合には、エンベロープ窓
長レジスタLENGTHの値を再生ピッチレジスタWIDTH の値
とする(ステップF43)。一方、エンベロープ窓長レ
ジスタLENGTHの値が再生ピッチレジスタWIDTH の値以下
である場合には、このステップS43の処理は行わな
い。これにより、エンベロープ窓長lengthが再生ピッチ
width より大きくならないように制限をかける。
ッチwidth 以内に制限する(ステップF42、F4
3)。エンベロープ窓長レジスタLENGTHの値と再生ピッ
チレジスタWIDTH の値とを比較し(ステップF42)、
エンベロープ窓長レジスタLENGTHの値が再生ピッチレジ
スタWIDTH の値よりも大きい場合には、エンベロープ窓
長レジスタLENGTHの値を再生ピッチレジスタWIDTH の値
とする(ステップF43)。一方、エンベロープ窓長レ
ジスタLENGTHの値が再生ピッチレジスタWIDTH の値以下
である場合には、このステップS43の処理は行わな
い。これにより、エンベロープ窓長lengthが再生ピッチ
width より大きくならないように制限をかける。
【0104】次いで、エンベロープ窓長レジスタLENGTH
の値の逆数を求め、これを歩進率w.rateとして歩進率レ
ジスタW.RATEに記憶させる (ステップF44)。この歩
進率レジスタW.RATEの値は、カウンタWINDOW1、WINDOW
2の値を歩進させるために使用する。また、相識別フラ
グFの極性を反転させる。このステップF44の処理
は、ステップF39おいて再生位相レジスタPHASE の値
が再生ピッチレジスタWIDTH の値以上になったときに行
われるので、相識別フラグFの反転も、再生位相レジス
タPHASE の値が再生ピッチレジスタWIDTH の値以上にな
ったときに行われることになり、例えば図23、図24
の(c)に示されるように、再生位相phase の周期で1
と−1に反転する波形が得られる。
の値の逆数を求め、これを歩進率w.rateとして歩進率レ
ジスタW.RATEに記憶させる (ステップF44)。この歩
進率レジスタW.RATEの値は、カウンタWINDOW1、WINDOW
2の値を歩進させるために使用する。また、相識別フラ
グFの極性を反転させる。このステップF44の処理
は、ステップF39おいて再生位相レジスタPHASE の値
が再生ピッチレジスタWIDTH の値以上になったときに行
われるので、相識別フラグFの反転も、再生位相レジス
タPHASE の値が再生ピッチレジスタWIDTH の値以上にな
ったときに行われることになり、例えば図23、図24
の(c)に示されるように、再生位相phase の周期で1
と−1に反転する波形が得られる。
【0105】次に、相識別フラグFの値を0と比較し、
相識別フラグFが1であるか、−1であるかを判断する
(ステップF45)。相識別フラグFの値が1であるこ
とは相識別フラグFが−1から1に立ち上がったときを
意味しており、この場合には、第1の処理経路に相当す
るレジスタPH1とカウンタWINDOW1の値をそれぞれ
「0」とし、先頭アドレスレジスタSTART の値を第1読
出し先頭アドレスレジスタSTART1に記憶させ、フラグ
S.FlG1を“1”にする(ステップF46)。
相識別フラグFが1であるか、−1であるかを判断する
(ステップF45)。相識別フラグFの値が1であるこ
とは相識別フラグFが−1から1に立ち上がったときを
意味しており、この場合には、第1の処理経路に相当す
るレジスタPH1とカウンタWINDOW1の値をそれぞれ
「0」とし、先頭アドレスレジスタSTART の値を第1読
出し先頭アドレスレジスタSTART1に記憶させ、フラグ
S.FlG1を“1”にする(ステップF46)。
【0106】また、相識別フラグFの値が−1であるこ
とは相識別フラグFが1から−1に立ち下がったことを
意味しており、この場合には、第2の処理経路に相当す
るレジスタPH2とカウンタWINDOW2をそれぞれ「0」と
し、先頭アドレスレジスタSTART の値を第2読出し先頭
アドレスレジスタ START2に記憶させ、第2のフラグS.
FLG2を“1” にする(ステップF47)。
とは相識別フラグFが1から−1に立ち下がったことを
意味しており、この場合には、第2の処理経路に相当す
るレジスタPH2とカウンタWINDOW2をそれぞれ「0」と
し、先頭アドレスレジスタSTART の値を第2読出し先頭
アドレスレジスタ START2に記憶させ、第2のフラグS.
FLG2を“1” にする(ステップF47)。
【0107】この場合、前述のステップF46とこのス
テップF47は、ステップF39で再生位相レジスタPH
ASE の値が再生ピッチレジスタWIDTH の値を超えたと判
定される毎に交互に実行されるものであるから、第1位
相ph1と第2位相ph2は、図23の(d)、(e)のよ
うに再生ピッチwidth の2倍の周期で、かつ、お互いに
再生ピッチwidth だけ位相の異なる変化をするものとな
る。また、第1読出し先頭アドレス start1は第1位相
ph1の立下り部分で、第2読出し先頭アドレスstart2
は第2位相ph2の立下り部分の、それぞれ再生ピッチwi
dth だけ時間差を持ったタイミングで更新されるように
なる。
テップF47は、ステップF39で再生位相レジスタPH
ASE の値が再生ピッチレジスタWIDTH の値を超えたと判
定される毎に交互に実行されるものであるから、第1位
相ph1と第2位相ph2は、図23の(d)、(e)のよ
うに再生ピッチwidth の2倍の周期で、かつ、お互いに
再生ピッチwidth だけ位相の異なる変化をするものとな
る。また、第1読出し先頭アドレス start1は第1位相
ph1の立下り部分で、第2読出し先頭アドレスstart2
は第2位相ph2の立下り部分の、それぞれ再生ピッチwi
dth だけ時間差を持ったタイミングで更新されるように
なる。
【0108】なお、上述のフラグS.FLG 1 =1 、S.FLG
2 =1 の処理により、発音開始後、レジスタPH1(n) 、
PH2(n) がリセットされて初めて発音が開始されるよう
にして、発音開始後すぐの不要な発音を防止している。
2 =1 の処理により、発音開始後、レジスタPH1(n) 、
PH2(n) がリセットされて初めて発音が開始されるよう
にして、発音開始後すぐの不要な発音を防止している。
【0109】このステップF46またはF47の処理に
続いて、あるいはステップF39において再生位相レジ
スタPHASE の値が再生ピッチレジスタWIDTH の値に達し
ていないと判断されたときには、波形読出し処理を行う
(ステップF48)
続いて、あるいはステップF39において再生位相レジ
スタPHASE の値が再生ピッチレジスタWIDTH の値に達し
ていないと判断されたときには、波形読出し処理を行う
(ステップF48)
【0110】図27、図28はこの波形読出し処理を示
すフローチャートである。以下にこの波形読出し処理に
ついて詳細に説明する。
すフローチャートである。以下にこの波形読出し処理に
ついて詳細に説明する。
【0111】波形読出し処理 図27は波形読出し処理のフローチャートであり、同図
中のステップF52〜F60は第1の処理経路のための
処理、ステップF61〜F69は第2の処理経路のため
の処理であり、この二つの処理は時系列に行われるが、
処理の内容は実質的に同様な内容となっている。
中のステップF52〜F60は第1の処理経路のための
処理、ステップF61〜F69は第2の処理経路のため
の処理であり、この二つの処理は時系列に行われるが、
処理の内容は実質的に同様な内容となっている。
【0112】図27に示すように、波形読出し処理で
は、まずカウンタWINDOW1(n) の値を歩進率レジスタW.
RATE(n) の値だけ歩進させる(ステップF52)。そし
て、歩進させたカウンタWINDOW1(n) の値が1より小さ
いか、1以上であって2より小さいか、あるいは2以上
であるかを判定する(ステップF53)。1より小さい
場合には、カウンタWINDOW1(n) の値を第1エンベロー
プ env1として第1エンベロープレジスタ ENV1に記憶
させ(ステップF54)、1以上であって2より小さい
場合には、2からカウンタWINDOW1(n) の値を減算した
値を第1エンベロープ env1として第1エンベロープレ
ジスタ ENV1に記憶させ(ステップF55) 、2以上の
とき、第1エンベロープレジスタ ENV1の値を0とする
(ステップF56)。
は、まずカウンタWINDOW1(n) の値を歩進率レジスタW.
RATE(n) の値だけ歩進させる(ステップF52)。そし
て、歩進させたカウンタWINDOW1(n) の値が1より小さ
いか、1以上であって2より小さいか、あるいは2以上
であるかを判定する(ステップF53)。1より小さい
場合には、カウンタWINDOW1(n) の値を第1エンベロー
プ env1として第1エンベロープレジスタ ENV1に記憶
させ(ステップF54)、1以上であって2より小さい
場合には、2からカウンタWINDOW1(n) の値を減算した
値を第1エンベロープ env1として第1エンベロープレ
ジスタ ENV1に記憶させ(ステップF55) 、2以上の
とき、第1エンベロープレジスタ ENV1の値を0とする
(ステップF56)。
【0113】ステップF53〜F56は、例えば図23
(f) に示されるように、歩進率w.rateずつ値が増加す
る鋸歯状波を作成し、これの値を1で折り返すことによ
って、第1エンベロープ env1を作成している。但し、
カウンタWINDOW 1(n) の値が2を越えた場合には、ステ
ップF56によって第1エンベロープ env1の値を0と
している。即ち、ホルマント移動量f.vrと波形ピッチsp
itchとに基づいて定めたエンベロープ窓長lengthの値の
逆数である歩進率w.rateずつ1まで増加し、その後、歩
進率w.rateずつ0まで減少する三角波を第1のエンベロ
ープ env1の波形として作成している。
(f) に示されるように、歩進率w.rateずつ値が増加す
る鋸歯状波を作成し、これの値を1で折り返すことによ
って、第1エンベロープ env1を作成している。但し、
カウンタWINDOW 1(n) の値が2を越えた場合には、ステ
ップF56によって第1エンベロープ env1の値を0と
している。即ち、ホルマント移動量f.vrと波形ピッチsp
itchとに基づいて定めたエンベロープ窓長lengthの値の
逆数である歩進率w.rateずつ1まで増加し、その後、歩
進率w.rateずつ0まで減少する三角波を第1のエンベロ
ープ env1の波形として作成している。
【0114】また、ステップF54〜F56に続いて、
第1位相カウンタPH1の値(読出しアドレスの歩進値)
にホルマント移動量f.vrを乗算した値を、第1の波形の
先頭アドレス START1(n) の値と加算して、第1の波形
の読出しアドレスを記憶するレジスタ ADRES1に記憶さ
せる(ステップF57)。
第1位相カウンタPH1の値(読出しアドレスの歩進値)
にホルマント移動量f.vrを乗算した値を、第1の波形の
先頭アドレス START1(n) の値と加算して、第1の波形
の読出しアドレスを記憶するレジスタ ADRES1に記憶さ
せる(ステップF57)。
【0115】また、読出しアドレスレジスタADRES 1の
値と末尾アドレスレジスタENDADRSの値を比較し(ステ
ップF58)、末尾アドレスレジスタENDADRS の値より
も大きければ、「読出しアドレスレジスタADRES 1 の値
=末尾アドレスレジスタENDADRS の値」とする(ステッ
プF59)。これは読出しアドレス adres1にリミット
をかけて、末尾アドレスendadrs の値を超えて読み出さ
ないようにしているものである。
値と末尾アドレスレジスタENDADRSの値を比較し(ステ
ップF58)、末尾アドレスレジスタENDADRS の値より
も大きければ、「読出しアドレスレジスタADRES 1 の値
=末尾アドレスレジスタENDADRS の値」とする(ステッ
プF59)。これは読出しアドレス adres1にリミット
をかけて、末尾アドレスendadrs の値を超えて読み出さ
ないようにしているものである。
【0116】これに続いて、波形メモリから読出しアド
レス adres1で第1の波形の波形データdata1を読み出
す(ステップF60)。このように読出しアドレス adr
es1はその歩進幅がホルマント移動量f.vrによって変更
されるので、結果的には波形データdata1の読出し速度
が、ホルマント移動量f.vrによって変更されている。
レス adres1で第1の波形の波形データdata1を読み出
す(ステップF60)。このように読出しアドレス adr
es1はその歩進幅がホルマント移動量f.vrによって変更
されるので、結果的には波形データdata1の読出し速度
が、ホルマント移動量f.vrによって変更されている。
【0117】これに続くステップF61〜F69では上
述と同じ処理を、第2の処理経路についても行う。
述と同じ処理を、第2の処理経路についても行う。
【0118】このようにして読み出された第1の処理経
路のデータdata1と第1エンベロープレジスタ env1の
値とフラグ S.FLG1を乗算したものと、第2の処理経路
のデータdata2に第2エンベロープレジスタ ENV2の値
とフラグS.FLG2を乗算したもの とを加算して出力OUT
とする(ステップF70)。これにより、フラグ S.FLG
1(n) または S.FLG2(n) が“0”の間は、合成する信
号が0になるようにして、エンベロープ env1、 env2
が必ず0から始まるようにしている。
路のデータdata1と第1エンベロープレジスタ env1の
値とフラグ S.FLG1を乗算したものと、第2の処理経路
のデータdata2に第2エンベロープレジスタ ENV2の値
とフラグS.FLG2を乗算したもの とを加算して出力OUT
とする(ステップF70)。これにより、フラグ S.FLG
1(n) または S.FLG2(n) が“0”の間は、合成する信
号が0になるようにして、エンベロープ env1、 env2
が必ず0から始まるようにしている。
【0119】次いで、振幅OUT のエンベロープo.env を
検出し、レジスタO.ENV に格納する(ステップF7
1)。なお、この処理では、振幅OUT(n)によって生成さ
れる波形信号に、既にエンベロープが付加されたもので
あるため、エンベロープ検出を行っているが、振幅OUT
(n)にエンベロープが付加されていなく、ほぼ一定の振
幅レベルの波形信号で、別に算出または記憶されたエン
ベロープを付加するものである場合は、ほぼ一定の振幅
レベルの波形信号OUT(n)とノイズ信号とを加算し、その
加算した信号に算出または記憶されたエンベロープを付
加するようにしてもよい。
検出し、レジスタO.ENV に格納する(ステップF7
1)。なお、この処理では、振幅OUT(n)によって生成さ
れる波形信号に、既にエンベロープが付加されたもので
あるため、エンベロープ検出を行っているが、振幅OUT
(n)にエンベロープが付加されていなく、ほぼ一定の振
幅レベルの波形信号で、別に算出または記憶されたエン
ベロープを付加するものである場合は、ほぼ一定の振幅
レベルの波形信号OUT(n)とノイズ信号とを加算し、その
加算した信号に算出または記憶されたエンベロープを付
加するようにしてもよい。
【0120】次いで、ノイズ発生処理を行う(ステップ
F72)。このノイズ発生処理は、演算によって乱数を
発生する手段によってノイズを発生するものとすること
ができる。しかし、乱数を発生する手段により発生する
ノイズは、再生する波形信号によって変化しないため、
再生波形にノイズを付加しても少し不自然な感じがあ
る。そのため、再生する波形信号によってノイズ成分や
音量レベルが変化するものとするとよい。例えば、波形
データ毎にノイズ波形データも所定の長さのPCMデー
タとして記憶しておき、ループ再生するものであっても
よい。あるいは、元のノイズは乱数を発生する手段で発
生し、そのノイズを複数の帯域に分割して、各帯域のレ
ベルを制御する構成を有しておき( チャネルボコーダの
構成) 、各帯域のレベルを波形データ毎にノイズ成分の
情報として記憶しておき、処理対象とする波形データに
対してその波形データのノイズ成分の情報によって各帯
域のノイズ成分のレベルを制御して得たノイズを使用す
るようにしてもよい。
F72)。このノイズ発生処理は、演算によって乱数を
発生する手段によってノイズを発生するものとすること
ができる。しかし、乱数を発生する手段により発生する
ノイズは、再生する波形信号によって変化しないため、
再生波形にノイズを付加しても少し不自然な感じがあ
る。そのため、再生する波形信号によってノイズ成分や
音量レベルが変化するものとするとよい。例えば、波形
データ毎にノイズ波形データも所定の長さのPCMデー
タとして記憶しておき、ループ再生するものであっても
よい。あるいは、元のノイズは乱数を発生する手段で発
生し、そのノイズを複数の帯域に分割して、各帯域のレ
ベルを制御する構成を有しておき( チャネルボコーダの
構成) 、各帯域のレベルを波形データ毎にノイズ成分の
情報として記憶しておき、処理対象とする波形データに
対してその波形データのノイズ成分の情報によって各帯
域のノイズ成分のレベルを制御して得たノイズを使用す
るようにしてもよい。
【0121】次いで、 L.ENV(n)=L.ENV(n)+(LEVEL(n) −L.ENV(n)) *K とし(ステップS73)、さらに、出力に付加するノイ
ズ成分としてnoise *noise.env *o.env を演算して出
力out(n) に付加し、その加算値(OUT(n)+NOISE *NO
ISE.ENV *O.ENV )にl.env(n)を乗じたものを最終的な
出力out(n)とする。すなわち、時間圧伸量tcomp が0.
1よりも大きいためノイズエンベロープnoise.env が0
のときには、ノイズnoise は出力に付加されず、0. 1
以下となったときだけ出力out に付加され、出力波形が
同じ再生波形となって不自然な音となることを防止す
る。また、出力 out自体が小さくなったとき、極端には
0になったときにノイズ成分だけが出力されると不自然
なので、出力エンベロープo.env をノイズnoise に乗算
することで、出力out がなくなったときにノイズ成分も
なくなるようにしている。また、立上り、立下りの特性
が係数Kで決まるレベルエンベロープl.env(n)を算出
し、これを出力に付加している。なお、ステップF73
の演算では、レベルエンベロープl.env(n)は0にならな
いので、所定レベル以下になると、l.ENV(n)=0となる
ように処理を追加してもよい。
ズ成分としてnoise *noise.env *o.env を演算して出
力out(n) に付加し、その加算値(OUT(n)+NOISE *NO
ISE.ENV *O.ENV )にl.env(n)を乗じたものを最終的な
出力out(n)とする。すなわち、時間圧伸量tcomp が0.
1よりも大きいためノイズエンベロープnoise.env が0
のときには、ノイズnoise は出力に付加されず、0. 1
以下となったときだけ出力out に付加され、出力波形が
同じ再生波形となって不自然な音となることを防止す
る。また、出力 out自体が小さくなったとき、極端には
0になったときにノイズ成分だけが出力されると不自然
なので、出力エンベロープo.env をノイズnoise に乗算
することで、出力out がなくなったときにノイズ成分も
なくなるようにしている。また、立上り、立下りの特性
が係数Kで決まるレベルエンベロープl.env(n)を算出
し、これを出力に付加している。なお、ステップF73
の演算では、レベルエンベロープl.env(n)は0にならな
いので、所定レベル以下になると、l.ENV(n)=0となる
ように処理を追加してもよい。
【0122】
【発明の効果】以上に説明したように、本発明によれ
ば、波形の再生時間を長くしたことにより同じ波形区間
の波形データに基づいて同じような再生波形が繰り返し
再生されるような場合でも、その再生波形にノイズ成分
を付加することができるので、単調な不自然な感じを無
くすことができる。
ば、波形の再生時間を長くしたことにより同じ波形区間
の波形データに基づいて同じような再生波形が繰り返し
再生されるような場合でも、その再生波形にノイズ成分
を付加することができるので、単調な不自然な感じを無
くすことができる。
【図1】本発明にかかる一実施例としての波形発生装置
の全体的なブロック構成を示す図である。
の全体的なブロック構成を示す図である。
【図2】実施例装置における操作子設定テーブルの構成
例を示す図である。
例を示す図である。
【図3】実施例装置におけるキー情報レジスタと変調情
報レジスタの構成例を示す図である。
報レジスタの構成例を示す図である。
【図4】実施例装置における波形メモリのパラメータ記
憶部のデータ構成例を示す図である。
憶部のデータ構成例を示す図である。
【図5】実施例装置における波形メモリの波形データ記
憶部のデータ構成例を示す図である。
憶部のデータ構成例を示す図である。
【図6】実施例装置におけるメインルーチンを示すフロ
ーチャートである。
ーチャートである。
【図7】実施例装置における録音ルーチンを示すフロー
チャートである。
チャートである。
【図8】実施例装置における編集ルーチンを示すフロー
チャートである。
チャートである。
【図9】実施例装置における再生ルーチンを示すフロー
チャートである。
チャートである。
【図10】実施例装置における再生処理ルーチン(1/
2)の詳細を示すフローチャートである。
2)の詳細を示すフローチャートである。
【図11】実施例装置における再生処理ルーチン(2/
2)の詳細を示すフローチャートである。
2)の詳細を示すフローチャートである。
【図12】実施例装置における変調値情報の演算処理の
詳細を示すフローチャートである。
詳細を示すフローチャートである。
【図13】実施例装置における変調値情報の演算処理で
生成される各種信号波形のタイムチャートである。
生成される各種信号波形のタイムチャートである。
【図14】実施例装置におけるDSPでのメインルーチ
ン(1/2)を示すフローチャートである。
ン(1/2)を示すフローチャートである。
【図15】実施例装置におけるDSPでのメインルーチ
ン(2/2)を示すフローチャートである。
ン(2/2)を示すフローチャートである。
【図16】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1の消音処理」を示すフローチャートで
ある。
ン中の「ボイス1の消音処理」を示すフローチャートで
ある。
【図17】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス2の消音処理」を示すフローチャートで
ある。
ン中の「ボイス2の消音処理」を示すフローチャートで
ある。
【図18】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1の発音開始処理」を示すフローチャー
トである。
ン中の「ボイス1の発音開始処理」を示すフローチャー
トである。
【図19】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス2の発音開始処理」を示すフローチャー
トである。
ン中の「ボイス2の発音開始処理」を示すフローチャー
トである。
【図20】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1からボイス1へのリンク発音処理」を
示すフローチャートである。
ン中の「ボイス1からボイス1へのリンク発音処理」を
示すフローチャートである。
【図21】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1からボイス2へのリンク発音処理」を
示すフローチャートである。
ン中の「ボイス1からボイス2へのリンク発音処理」を
示すフローチャートである。
【図22】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス2からボイス1へのリンク発音処理」を
示すフローチャートである。
ン中の「ボイス2からボイス1へのリンク発音処理」を
示すフローチャートである。
【図23】「読出し処理」の動作概要(ホルマント特性
変更なし、高域にピッチシフト)を説明するためのタイ
ムチャートである。
変更なし、高域にピッチシフト)を説明するためのタイ
ムチャートである。
【図24】「読出し処理」の動作概要(ホルマント特性
を低域にシフト)を説明するためのタイムチャートであ
る。
を低域にシフト)を説明するためのタイムチャートであ
る。
【図25】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン(1/2)を示すフロー
チャートである。
ン中の「読出し処理」ルーチン(1/2)を示すフロー
チャートである。
【図26】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン(2/2)を示すフロー
チャートである。
ン中の「読出し処理」ルーチン(2/2)を示すフロー
チャートである。
【図27】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(1/2)を示すフローチャートである。
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(1/2)を示すフローチャートである。
【図28】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(2/2)を示すフローチャートである。
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(2/2)を示すフローチャートである。
4 A/D変換器 8 DSP(ディジタル信号プロセッサ) 12 波形メモリ 14 D/A変換器 20 操作子群 22 CPU(中央処理装置) 30 キーボード 31 RAM(ランダム・アクセス・メモリ) 32 ROM(リード・オンリー・メモリ) 33 ハードディスク装置
Claims (2)
- 【請求項1】音の波形信号の振幅情報を波形データとし
て記憶した記憶手段と、 任意に設定された変化量で順次変化して該波形データに
おける時間軸上の経過に従った位置を指定する位置情報
を順次に生成する位置情報生成手段と、 再生ピッチを指定する再生ピッチ指定手段と、 再生ピッチ指定手段で指定された再生ピッチに応じた周
期で該位置情報で指定される近傍の波形データを少なく
とも1周期切り出して再生波形信号を生成する波形再生
手段と、 該位置情報生成手段で設定される変化量が所定値よりも
小さくなったときに、該波形再生手段で生成される再生
波形にノイズ成分を付加するノイズ成分付加手段とを備
えた波形発生装置。 - 【請求項2】前記切り出す波形データの読出し速度を変
更する変更係数を設定する変更係数設定手段をさらに備
えた請求項1記載の波形発生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8359220A JPH10198380A (ja) | 1996-12-30 | 1996-12-30 | 波形発生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8359220A JPH10198380A (ja) | 1996-12-30 | 1996-12-30 | 波形発生装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10198380A true JPH10198380A (ja) | 1998-07-31 |
Family
ID=18463376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8359220A Pending JPH10198380A (ja) | 1996-12-30 | 1996-12-30 | 波形発生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH10198380A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005274721A (ja) * | 2004-03-23 | 2005-10-06 | Yamaha Corp | 音響効果装置及びプログラム |
JP2016062057A (ja) * | 2014-09-22 | 2016-04-25 | 株式会社河合楽器製作所 | 楽音発生装置 |
-
1996
- 1996-12-30 JP JP8359220A patent/JPH10198380A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005274721A (ja) * | 2004-03-23 | 2005-10-06 | Yamaha Corp | 音響効果装置及びプログラム |
JP2016062057A (ja) * | 2014-09-22 | 2016-04-25 | 株式会社河合楽器製作所 | 楽音発生装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6316710B1 (en) | Musical synthesizer capable of expressive phrasing | |
KR100484240B1 (ko) | 악음발생장치및방법 | |
WO2021175458A1 (en) | Playback transition from first to second audio track with transition functions of decomposed signals | |
JP2001013963A (ja) | 音声信号または楽音信号の処理装置 | |
EP4115628A1 (en) | Playback transition from first to second audio track with transition functions of decomposed signals | |
JPH04330495A (ja) | 自動伴奏装置 | |
JP3645030B2 (ja) | 電子楽器 | |
JPH10198380A (ja) | 波形発生装置 | |
JP3763493B2 (ja) | 波形発生装置 | |
JPH1152953A (ja) | 波形データのピッチ変化抽出方法および波形再生装置 | |
JP3746578B2 (ja) | 波形発生装置 | |
JP3795167B2 (ja) | 波形発生装置 | |
JP4057700B2 (ja) | 波形再生装置 | |
US6111182A (en) | System for reproducing external and pre-stored waveform data | |
JP5141407B2 (ja) | 楽曲再生装置 | |
JP4506147B2 (ja) | 演奏再生装置及び演奏再生制御プログラム | |
JP3887957B2 (ja) | カラオケ装置 | |
JPH10312190A (ja) | 自動アルペジオ演奏装置 | |
JPH067334B2 (ja) | 電子楽器 | |
JP4236570B2 (ja) | 波形再生装置および波形再生プログラム | |
JP4015267B2 (ja) | 波形発生装置 | |
JP4612254B2 (ja) | 波形再生装置 | |
JP2636688B2 (ja) | 楽音発生ユニット | |
JP3906800B2 (ja) | 自動演奏装置及びプログラム | |
JP2003099039A (ja) | 楽曲データ編集装置及びプログラム |