JPH1152953A - 波形データのピッチ変化抽出方法および波形再生装置 - Google Patents
波形データのピッチ変化抽出方法および波形再生装置Info
- Publication number
- JPH1152953A JPH1152953A JP10143184A JP14318498A JPH1152953A JP H1152953 A JPH1152953 A JP H1152953A JP 10143184 A JP10143184 A JP 10143184A JP 14318498 A JP14318498 A JP 14318498A JP H1152953 A JPH1152953 A JP H1152953A
- Authority
- JP
- Japan
- Prior art keywords
- waveform
- pitch
- information
- loop
- 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)【要約】
【課題】波形データのピッチ変化抽出方法及び波形再生
装置に関し、波形再生にあたりビブラートが自然な感じ
でかかった波形を再生することを目的とする。 【解決手段】ビブラートがかかった音の波形データを記
憶する記憶手段と、該波形データのうちからビブラート
の整数倍周期区間をループ区間として設定する設定手段
と、該設定手段で抽出したループ区間を繰り返して再生
する再生手段とを備える装置。波形データのピッチ情報
をその時間軸に従って逐次に検出するピッチ検出過程
と、ピッチ検出過程で検出したピッチ情報が、その前ま
たは後のピッチ情報と比較して変化が大きい時にその変
化を小さな変化となる値に補正するピッチ情報補正過程
と、ピッチ情報補正過程で補正が施されたピッチ情報を
含め、検出手段により得たピッチ情報にフィルタリング
処理を施すフィルタリング過程とで、波形データのピッ
チ変化を抽出する方法。
装置に関し、波形再生にあたりビブラートが自然な感じ
でかかった波形を再生することを目的とする。 【解決手段】ビブラートがかかった音の波形データを記
憶する記憶手段と、該波形データのうちからビブラート
の整数倍周期区間をループ区間として設定する設定手段
と、該設定手段で抽出したループ区間を繰り返して再生
する再生手段とを備える装置。波形データのピッチ情報
をその時間軸に従って逐次に検出するピッチ検出過程
と、ピッチ検出過程で検出したピッチ情報が、その前ま
たは後のピッチ情報と比較して変化が大きい時にその変
化を小さな変化となる値に補正するピッチ情報補正過程
と、ピッチ情報補正過程で補正が施されたピッチ情報を
含め、検出手段により得たピッチ情報にフィルタリング
処理を施すフィルタリング過程とで、波形データのピッ
チ変化を抽出する方法。
Description
【0001】
【発明の属する技術分野】本発明は、波形データのピッ
チ変化抽出方法および波形再生装置に関するものであ
る。
チ変化抽出方法および波形再生装置に関するものであ
る。
【0002】
【従来の技術】波形データを記憶手段に記憶しておき、
その波形データを読み出して再生するものとしてサンプ
ラがある。このサンプラにおいて、記憶された波形デー
タをその波形データの元の時間長(すなわち記録時の時
間長)以上に再生時間を伸ばして再生する場合、ループ
再生と称して、l周期波形あるいは複数周期波形区間を
繰り返し再生している。
その波形データを読み出して再生するものとしてサンプ
ラがある。このサンプラにおいて、記憶された波形デー
タをその波形データの元の時間長(すなわち記録時の時
間長)以上に再生時間を伸ばして再生する場合、ループ
再生と称して、l周期波形あるいは複数周期波形区間を
繰り返し再生している。
【0003】さらに、そのようなサンプラにおいて、ビ
ブラート効果がかかった音の波形データをループ再生す
る場合、編集によってループ効果を取り除き(波形のピ
ッチ変化を取り除く編集を行い)、その波形データの1
周期波形あるいは複数周期波形区間を繰り返し再生する
ようにするか、ビブラート効果が付加されたままの波形
データの場合は、1周期波形を繰り返し再生するように
している。これは、波形の再生にあたってピッチシフト
を行った場合、ビブラートがかかったままの波形データ
を再生すると、聴感上そのピッチシフトによりビブラー
ト効果のかかり具合も変化してしまい、不自然に感じら
れるためである。
ブラート効果がかかった音の波形データをループ再生す
る場合、編集によってループ効果を取り除き(波形のピ
ッチ変化を取り除く編集を行い)、その波形データの1
周期波形あるいは複数周期波形区間を繰り返し再生する
ようにするか、ビブラート効果が付加されたままの波形
データの場合は、1周期波形を繰り返し再生するように
している。これは、波形の再生にあたってピッチシフト
を行った場合、ビブラートがかかったままの波形データ
を再生すると、聴感上そのピッチシフトによりビブラー
ト効果のかかり具合も変化してしまい、不自然に感じら
れるためである。
【0004】
【発明が解決しようとする課題】上記のようにして再生
すると、ビブラート効果は無くなってしまう。従って、
再生波形にビブラート効果を付加する場合には、低周波
発生手段によって得た低周波信号によって再生波形に周
波数変調を付加することによってビブラート効果を付加
していた。しかし、このようなビブラート効果は後で付
加したものであるので、不自然な感じがある。
すると、ビブラート効果は無くなってしまう。従って、
再生波形にビブラート効果を付加する場合には、低周波
発生手段によって得た低周波信号によって再生波形に周
波数変調を付加することによってビブラート効果を付加
していた。しかし、このようなビブラート効果は後で付
加したものであるので、不自然な感じがある。
【0005】本発明はかかる問題点に鑑みてなされたも
のであり、波形再生にあたり、ビブラートが自然な感じ
でかかった波形を再生することを目的とする。
のであり、波形再生にあたり、ビブラートが自然な感じ
でかかった波形を再生することを目的とする。
【0006】
【課題を解決するための手段および作用】波形データの
ビブラート効果は人為的に付加したものよりも、波形デ
ータが本来持っているビブラート効果の方が自然であ
る。そこで、本発明は波形データが持っているビブラー
ト効果を活かしつつ、波形データの時間軸伸張(ループ
再生)を行うことができる波形再生装置を提供する。ま
た、上記のような時間軸伸張(ループ再生)を行うため
の繰り返しポイント(ループポイント)を設定するため
に有効な波形データのピッチ変化抽出方法を提供する。
ビブラート効果は人為的に付加したものよりも、波形デ
ータが本来持っているビブラート効果の方が自然であ
る。そこで、本発明は波形データが持っているビブラー
ト効果を活かしつつ、波形データの時間軸伸張(ループ
再生)を行うことができる波形再生装置を提供する。ま
た、上記のような時間軸伸張(ループ再生)を行うため
の繰り返しポイント(ループポイント)を設定するため
に有効な波形データのピッチ変化抽出方法を提供する。
【0007】前述の課題を解決するために、本発明に係
る波形再生装置は、ビブラートがかかった音の波形デー
タを記憶する記憶手段と、該波形データのうちからビブ
ラートの整数倍周期区間をループ区間として設定する設
定手段と、該設定手段で抽出したループ区間を繰り返し
て再生する再生手段とを備える。この波形再生装置によ
れば、波形データにかかっているビブラートをそのまま
利用して波形再生を行うので、波形データが本来持って
いるビブラート効果を活用することができる。
る波形再生装置は、ビブラートがかかった音の波形デー
タを記憶する記憶手段と、該波形データのうちからビブ
ラートの整数倍周期区間をループ区間として設定する設
定手段と、該設定手段で抽出したループ区間を繰り返し
て再生する再生手段とを備える。この波形再生装置によ
れば、波形データにかかっているビブラートをそのまま
利用して波形再生を行うので、波形データが本来持って
いるビブラート効果を活用することができる。
【0008】上記の設定手段は、ビブラートがかかった
音の波形データからピッチ情報をその時間軸に従って検
出するピッチ検出手段と、その検出したピッチ情報から
ビブラートの整数倍周期区間を示す区間情報を設定する
区間設定手段とを含み構成できる。
音の波形データからピッチ情報をその時間軸に従って検
出するピッチ検出手段と、その検出したピッチ情報から
ビブラートの整数倍周期区間を示す区間情報を設定する
区間設定手段とを含み構成できる。
【0009】また上述の設定手段は、該波形データのピ
ッチ情報をその時間軸に従って逐次に検出するピッチ検
出手段と、該ピッチ検出手段で検出したピッチ情報が、
その前または後のピッチ情報と比較して変化が大きい時
にその変化を小さな変化となる値に補正するピッチ情報
補正手段と、該ピッチ情報補正手段で補正が施されたピ
ッチ情報を含め、該検出手段により得たピッチ情報にフ
ィルタリング処理を施すフィルタリング手段と、該フィ
ルタリング手段でフィルタリングした後のピッチ情報列
に基づいてビブラートの整数倍周期区間を示す区間情報
を設定する区間設定手段とを含み構成できる。
ッチ情報をその時間軸に従って逐次に検出するピッチ検
出手段と、該ピッチ検出手段で検出したピッチ情報が、
その前または後のピッチ情報と比較して変化が大きい時
にその変化を小さな変化となる値に補正するピッチ情報
補正手段と、該ピッチ情報補正手段で補正が施されたピ
ッチ情報を含め、該検出手段により得たピッチ情報にフ
ィルタリング処理を施すフィルタリング手段と、該フィ
ルタリング手段でフィルタリングした後のピッチ情報列
に基づいてビブラートの整数倍周期区間を示す区間情報
を設定する区間設定手段とを含み構成できる。
【0010】また、上記記憶手段は該ループ区間を示す
区間情報を波形データとともに予め記憶しており、上記
設定手段は該区間情報によって該波形データのうちから
該ループ区間を設定するように構成できる。この場合、
請求項7に係る方法等で波形データからビブラートの整
数倍周期区間を予め抽出しておいて、その区間情報(例
えば区間の開始点と終了点の情報)を記憶手段に波形デ
ータとともに予め記憶しておくもので、このように記憶
手段に予め区間情報が記憶してあるため、波形データ再
生処理において、リアルタイムでビブラートの整数倍周
期区間を設定する必要がなく、再生処理の負担が著しく
軽くなるという特長を有する。
区間情報を波形データとともに予め記憶しており、上記
設定手段は該区間情報によって該波形データのうちから
該ループ区間を設定するように構成できる。この場合、
請求項7に係る方法等で波形データからビブラートの整
数倍周期区間を予め抽出しておいて、その区間情報(例
えば区間の開始点と終了点の情報)を記憶手段に波形デ
ータとともに予め記憶しておくもので、このように記憶
手段に予め区間情報が記憶してあるため、波形データ再
生処理において、リアルタイムでビブラートの整数倍周
期区間を設定する必要がなく、再生処理の負担が著しく
軽くなるという特長を有する。
【0011】また上述の再生手段は、任意に設定された
変化量で順次変化して該波形データにおける時間軸上の
経過に従った位置を指定する位置情報を順次に生成する
位置情報生成手段と、再生ピッチを指定する再生ピッチ
指定手段と、再生ピッチ指定手段で指定された再生ピッ
チに応じた周期で、該位置情報で指定される近傍の波形
データを少なくとも1周期切り出して波形を再生する波
形再生手段とを含み構成できる。このような再生手段に
よれば、位置情報生成手段で該変化量を変えることで、
波形再生の時間を自由に調整することができる。また、
位置情報生成手段による時間進行の変化を元の波形デー
タの時間変化と同じにしておけば、再生ピッチが変化し
ても、元の波形データのビブラート効果をそのまま再現
することができる。また、この時間進行の変化量を例え
ばアフタータッチ等の操作子で制御すれば、ビブラート
効果を制御することができる。さらに再生波形の再生ピ
ッチを変えた場合でも、再生波形のホルマント特性を変
えずに再生することが可能となる。
変化量で順次変化して該波形データにおける時間軸上の
経過に従った位置を指定する位置情報を順次に生成する
位置情報生成手段と、再生ピッチを指定する再生ピッチ
指定手段と、再生ピッチ指定手段で指定された再生ピッ
チに応じた周期で、該位置情報で指定される近傍の波形
データを少なくとも1周期切り出して波形を再生する波
形再生手段とを含み構成できる。このような再生手段に
よれば、位置情報生成手段で該変化量を変えることで、
波形再生の時間を自由に調整することができる。また、
位置情報生成手段による時間進行の変化を元の波形デー
タの時間変化と同じにしておけば、再生ピッチが変化し
ても、元の波形データのビブラート効果をそのまま再現
することができる。また、この時間進行の変化量を例え
ばアフタータッチ等の操作子で制御すれば、ビブラート
効果を制御することができる。さらに再生波形の再生ピ
ッチを変えた場合でも、再生波形のホルマント特性を変
えずに再生することが可能となる。
【0012】また上述の位置情報生成手段は、該ループ
区間を時間軸上で順方向に進んで該ループ区間の終点に
至ったら、該ループ区間の開始点に飛び戻って再び順方
向に進むように該位置情報を順次に生成するように構成
できる。これにより、いわゆる通常のループ再生ができ
る。
区間を時間軸上で順方向に進んで該ループ区間の終点に
至ったら、該ループ区間の開始点に飛び戻って再び順方
向に進むように該位置情報を順次に生成するように構成
できる。これにより、いわゆる通常のループ再生ができ
る。
【0013】あるいは上述の位置情報生成手段は、該ル
ープ区間を時間軸上で順方向に進んで該ループ区間の終
点に至ったら、進行方向を逆転させて該終点から該ルー
プ区間の開始点に向かって逆方向に進むというように、
該ループ区間の開始点または終点に至ったらその進行方
向を逆転させて該ループ区間を繰り返す位置情報を順次
に生成するように構成できる。これにより、ループ区間
を順方向と逆方向に交互に方向を逆転させながらループ
再生できる。この場合、ループ区間の開始点と終点とに
音色や音量等の違いがあっても、再生波形はそれらが連
続的なものとなり、自然な感じになる。
ープ区間を時間軸上で順方向に進んで該ループ区間の終
点に至ったら、進行方向を逆転させて該終点から該ルー
プ区間の開始点に向かって逆方向に進むというように、
該ループ区間の開始点または終点に至ったらその進行方
向を逆転させて該ループ区間を繰り返す位置情報を順次
に生成するように構成できる。これにより、ループ区間
を順方向と逆方向に交互に方向を逆転させながらループ
再生できる。この場合、ループ区間の開始点と終点とに
音色や音量等の違いがあっても、再生波形はそれらが連
続的なものとなり、自然な感じになる。
【0014】また上述の再生ピッチ指定手段は、鍵盤装
置の特定の鍵をオリジナルキーとして設定するオリジナ
ルキー設定手段と、鍵盤装置のうちの再生音高を指定す
るために操作された操作キーと該オリジナルキーとの音
高の隔たりに相応した値を求める手段と、該手段で求め
た値に基づいて該再生ピッチの大きさを決定する決定手
段とを含み構成できる。この構成によれば、波形データ
のピッチが分かっていないような場合でも、オリジナル
キーと操作キーとの音高の比率等に応じて再生ピッチを
決めることができ、操作性が向上する。
置の特定の鍵をオリジナルキーとして設定するオリジナ
ルキー設定手段と、鍵盤装置のうちの再生音高を指定す
るために操作された操作キーと該オリジナルキーとの音
高の隔たりに相応した値を求める手段と、該手段で求め
た値に基づいて該再生ピッチの大きさを決定する決定手
段とを含み構成できる。この構成によれば、波形データ
のピッチが分かっていないような場合でも、オリジナル
キーと操作キーとの音高の比率等に応じて再生ピッチを
決めることができ、操作性が向上する。
【0015】また本発明に係る波形データのピッチ変化
抽出方法は、波形データのピッチ情報をその時間軸に従
って逐次に検出するピッチ検出過程と、該ピッチ検出過
程で検出したピッチ情報が、その前または後のピッチ情
報と比較して変化が大きい時にその変化を小さな変化と
なる値に補正するピッチ情報補正過程と、該ピッチ情報
補正過程で補正が施されたピッチ情報を含め、該検出手
段により得たピッチ情報にフィルタリング処理を施すフ
ィルタリング過程とで、波形データのピッチ変化を抽出
する。
抽出方法は、波形データのピッチ情報をその時間軸に従
って逐次に検出するピッチ検出過程と、該ピッチ検出過
程で検出したピッチ情報が、その前または後のピッチ情
報と比較して変化が大きい時にその変化を小さな変化と
なる値に補正するピッチ情報補正過程と、該ピッチ情報
補正過程で補正が施されたピッチ情報を含め、該検出手
段により得たピッチ情報にフィルタリング処理を施すフ
ィルタリング過程とで、波形データのピッチ変化を抽出
する。
【0016】
【発明の実施の形態】以下、図面を参照して本発明の実
施の形態を説明する。図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に波形データとして格納するこ
とができる。
【0017】22はCPU(中央処理装置)であって、
DSP8の制御、操作子群20やキーボード30の状態
検出と処理など装置の全体的な制御を行う。20は操作
子群であって、モードスイッチMODE.SW 、再生モードス
イッチPLAYMODE.SW 、ループモードスイッチLOOPMODE.S
W 、オリジナルキー設定スイッチORGKEY.SW 、バンクス
イッチBANK.SW 、アサインスイッチASSIGN.SW 、ホルマ
ント設定操作子F.VR、時間圧伸量設定操作子TCOMP 等の
複数の操作子からなる。
DSP8の制御、操作子群20やキーボード30の状態
検出と処理など装置の全体的な制御を行う。20は操作
子群であって、モードスイッチMODE.SW 、再生モードス
イッチPLAYMODE.SW 、ループモードスイッチLOOPMODE.S
W 、オリジナルキー設定スイッチORGKEY.SW 、バンクス
イッチBANK.SW 、アサインスイッチASSIGN.SW 、ホルマ
ント設定操作子F.VR、時間圧伸量設定操作子TCOMP 等の
複数の操作子からなる。
【0018】30は演奏操作を行うキーボードであり、
操作したキーに対応する種々の楽音情報を演奏のために
発生する、例えば波形メモリ12の波形データの再生に
あたってキーのオン/オフにより再生の音高と再生の開
始/終了を指示するためにも用いられる。また、このキ
ーボード30はアフタータッチ機能も備えており、キー
を押鍵した後にさらに押下を続けるとその押下の強さに
対応した大きさのアフタータッチ信号after.touch が継
続して発生されるようになっている。本実施例ではアフ
タータッチ機能の一つとして、キーを押した状態でさら
にキーを押し込んだ場合にその押下の強さに対応して波
形信号の再生に要する時間(すなわち再生速度)が変わ
るようになっている。このアフタータッチ信号after.to
uch は押下の強さに応じて$00〜$7Fの範囲の値を
とり得る。なお、以降の説明では$7F等の先頭に付け
た「$」は16進表示を意味するものとする。
操作したキーに対応する種々の楽音情報を演奏のために
発生する、例えば波形メモリ12の波形データの再生に
あたってキーのオン/オフにより再生の音高と再生の開
始/終了を指示するためにも用いられる。また、このキ
ーボード30はアフタータッチ機能も備えており、キー
を押鍵した後にさらに押下を続けるとその押下の強さに
対応した大きさのアフタータッチ信号after.touch が継
続して発生されるようになっている。本実施例ではアフ
タータッチ機能の一つとして、キーを押した状態でさら
にキーを押し込んだ場合にその押下の強さに対応して波
形信号の再生に要する時間(すなわち再生速度)が変わ
るようになっている。このアフタータッチ信号after.to
uch は押下の強さに応じて$00〜$7Fの範囲の値を
とり得る。なお、以降の説明では$7F等の先頭に付け
た「$」は16進表示を意味するものとする。
【0019】33は多くの波形データ等を記憶しておく
大容量のハードディスク装置であり、その波形データは
必要に応じて波形メモリ12に転送される。31はCP
U22の演算処理等に使用されるワーキングメモリとし
てのRAM、32はCPU22やDSP8のプログラム
やパラメータ等を記憶しておくメモリとしてのROMで
ある。
大容量のハードディスク装置であり、その波形データは
必要に応じて波形メモリ12に転送される。31はCP
U22の演算処理等に使用されるワーキングメモリとし
てのRAM、32はCPU22やDSP8のプログラム
やパラメータ等を記憶しておくメモリとしてのROMで
ある。
【0020】以下に、操作子群20の各操作子の機能に
ついて説明する。モードスイッチMODE.SW は、録音モー
ド、編集モード、再生モードの一つを選択するためのス
イッチである。ここで、録音モード (RECモード) は
外部から入力された楽音信号を録音(サンプリング) す
るモード、編集モード (EDITモード) は録音モード
でサンプリングした波形を編集するモード、再生モード
(PLAYモード) は波形メモリ12に記憶した波形デ
ータをキーボードの演奏操作に応じて再生するモードで
ある。
ついて説明する。モードスイッチMODE.SW は、録音モー
ド、編集モード、再生モードの一つを選択するためのス
イッチである。ここで、録音モード (RECモード) は
外部から入力された楽音信号を録音(サンプリング) す
るモード、編集モード (EDITモード) は録音モード
でサンプリングした波形を編集するモード、再生モード
(PLAYモード) は波形メモリ12に記憶した波形デ
ータをキーボードの演奏操作に応じて再生するモードで
ある。
【0021】再生モードスイッチPLAYMODE.SW は、波形
形成のアルゴリズムが異なる第1の再生モードplay1と
第2の再生モードplay2とを選択するためのスイッチで
ある。第1の再生モードplay1と第2の再生モードplay
2については後述する。
形成のアルゴリズムが異なる第1の再生モードplay1と
第2の再生モードplay2とを選択するためのスイッチで
ある。第1の再生モードplay1と第2の再生モードplay
2については後述する。
【0022】ループモードスイッチLOOPMODE.SW は、前
記第1と第2のそれぞれの再生モードにおいて、波形デ
ータをループ再生しないモードoff 、ループ再生する場
合のノーマル・ループモードnormとオルタネート・ルー
プモードalt との3つのうち一つを設定するスイッチで
ある。
記第1と第2のそれぞれの再生モードにおいて、波形デ
ータをループ再生しないモードoff 、ループ再生する場
合のノーマル・ループモードnormとオルタネート・ルー
プモードalt との3つのうち一つを設定するスイッチで
ある。
【0023】オリジナルキー設定スイッチORGKEY.SW は
基準となるキーを設定するときに操作するスイッチであ
る。バンクスイッチBANK.SW は、波形メモリ12に記憶
されている複数の波形データのうちから一つを選択する
ためのスイッチである。
基準となるキーを設定するときに操作するスイッチであ
る。バンクスイッチBANK.SW は、波形メモリ12に記憶
されている複数の波形データのうちから一つを選択する
ためのスイッチである。
【0024】アサインスイッチ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の波形データの再
生を当該波形データの先頭部分からやり直す処理をい
う。
【0025】ホルマント設定操作子F.VRは、ホルマント
の原波形データからのシフト量を設定する操作子であ
り、ホルマント移動量f.vr(ホルマント変更係数とも称
する)を設定する。このホルマント移動量f.vrについて
は後述する。
の原波形データからのシフト量を設定する操作子であ
り、ホルマント移動量f.vr(ホルマント変更係数とも称
する)を設定する。このホルマント移動量f.vrについて
は後述する。
【0026】時間圧伸量設定操作子TCOMP は、再生波形
データの時間軸上の時間圧伸量tcomp を設定する操作子
である。この時間圧伸量tcomp については後述する。
データの時間軸上の時間圧伸量tcomp を設定する操作子
である。この時間圧伸量tcomp については後述する。
【0027】上記のDSP8は操作子設定テーブル、キ
ー情報レジスタ、変調情報レジスタ、オリジナルピッチ
情報レジスタ、ループ情報レジスタを備えている。以
下、これらについて説明する。
ー情報レジスタ、変調情報レジスタ、オリジナルピッチ
情報レジスタ、ループ情報レジスタを備えている。以
下、これらについて説明する。
【0028】〔操作子設定テーブル〕図2には操作子設
定テーブルの例が示される。この操作子設定テーブルは
DSP8に備えられており、後述するCPU22の「再
生処理」において、操作子群20の操作状態を検出し、
その操作状態に対応してこの操作子設定テーブルの内容
が設定される。操作子設定テーブルの内容の項目として
は、バンク番号bank、リンクモードlink.mode 、ホルマ
ント移動量f.vr、時間圧縮/伸長伸量tcomp (以下、時
間圧伸量と記す) 、再生モードplaymode 、ループモー
ドloopmode がある。
定テーブルの例が示される。この操作子設定テーブルは
DSP8に備えられており、後述するCPU22の「再
生処理」において、操作子群20の操作状態を検出し、
その操作状態に対応してこの操作子設定テーブルの内容
が設定される。操作子設定テーブルの内容の項目として
は、バンク番号bank、リンクモードlink.mode 、ホルマ
ント移動量f.vr、時間圧縮/伸長伸量tcomp (以下、時
間圧伸量と記す) 、再生モードplaymode 、ループモー
ドloopmode がある。
【0029】ここで、バンク番号bankは、操作子群20
のバンクスイッチBANK.SW で設定されたバンク番号が設
定され、そのバンク番号bankに従って、再生する波形デ
ータ(波形領域番号)の選択が行われる。
のバンクスイッチBANK.SW で設定されたバンク番号が設
定され、そのバンク番号bankに従って、再生する波形デ
ータ(波形領域番号)の選択が行われる。
【0030】リンクモードlink.mode は、操作子群20
のアサインスイッチASSIGN.SW がモノフォニック2また
はポリフォニック2のモード(すなわちリトリガしない
モード)を設定した時には「1」(ONを意味する)に
設定され、モノフォニック1またはポリフォニック1の
モード(すなわちリトリガするモード)を設定した時に
は「0」(OFFを意味する)に設定される。すなわ
ち、前に発音していた楽音に連結するか否かを設定する
レジスタであるが、リトリガを行うか否かを設定するレ
ジスタでもある。
のアサインスイッチASSIGN.SW がモノフォニック2また
はポリフォニック2のモード(すなわちリトリガしない
モード)を設定した時には「1」(ONを意味する)に
設定され、モノフォニック1またはポリフォニック1の
モード(すなわちリトリガするモード)を設定した時に
は「0」(OFFを意味する)に設定される。すなわ
ち、前に発音していた楽音に連結するか否かを設定する
レジスタであるが、リトリガを行うか否かを設定するレ
ジスタでもある。
【0031】ホルマント移動量f.vrは、波形メモリ12
から読み出して再生する波形データのホルマントの移動
量(シフト量)が設定されるもので、波形メモリ12中
の波形データは、このホルマント移動量f.vrが「1」で
ある時は、原波形と同じホルマントで再生され、「1」
より大きい値であると、ホルマントを原波形よりも高域
側にシフトして再生され、「1」よりも小さい値である
と、ホルマントを原波形よりも低域側にシフトして再生
される。
から読み出して再生する波形データのホルマントの移動
量(シフト量)が設定されるもので、波形メモリ12中
の波形データは、このホルマント移動量f.vrが「1」で
ある時は、原波形と同じホルマントで再生され、「1」
より大きい値であると、ホルマントを原波形よりも高域
側にシフトして再生され、「1」よりも小さい値である
と、ホルマントを原波形よりも低域側にシフトして再生
される。
【0032】時間圧伸量tcomp は、波形メモリ12に記
憶された波形データを再生する時における時間圧縮/伸
長の大きさ(すなわち波形再生速度)を数値設定するも
のである。この時間圧伸量tcomp が「1」であると、原
波形の時間変化と同じ速さで時間変化し、「1」より大
きい値であると、原波形よりも速い時間変化をして再生
時間が短くなり、「1」よりも小さい値であると、原波
形よりも遅い時間変化をして再生時間が長くなる。
憶された波形データを再生する時における時間圧縮/伸
長の大きさ(すなわち波形再生速度)を数値設定するも
のである。この時間圧伸量tcomp が「1」であると、原
波形の時間変化と同じ速さで時間変化し、「1」より大
きい値であると、原波形よりも速い時間変化をして再生
時間が短くなり、「1」よりも小さい値であると、原波
形よりも遅い時間変化をして再生時間が長くなる。
【0033】再生モードplaymode は、再生モードスイ
ッチPLAYMODE.SW が第1の再生モードplaylを設定した
ときは「0」に設定され、第2の再生モードplay2を設
定したときは「1」に設定される。ここで、この第1の
再生モードplaylは再生波形のピッチを変えるにあたり
元波形のホルマントを変化させないで再生できるモード
であり、また第2の再生モードplay2は再生波形のピッ
チを変えるにあたり元波形のホルマントも共に変化する
が、元波形のピッチが検出できなくとも波形再生できる
モードである。
ッチPLAYMODE.SW が第1の再生モードplaylを設定した
ときは「0」に設定され、第2の再生モードplay2を設
定したときは「1」に設定される。ここで、この第1の
再生モードplaylは再生波形のピッチを変えるにあたり
元波形のホルマントを変化させないで再生できるモード
であり、また第2の再生モードplay2は再生波形のピッ
チを変えるにあたり元波形のホルマントも共に変化する
が、元波形のピッチが検出できなくとも波形再生できる
モードである。
【0034】ループモードloopmode は、ループモード
スイッチLOOPMODE.SW がループ再生をしないモードoff
を設定したときは「0」に設定され、ループ再生する場
合のノーマル・ループモードnormを設定したときは
「1」に設定され、ループ再生する場合のオルタネート
・ループモードalt を設定したときは「2」に設定され
る。
スイッチLOOPMODE.SW がループ再生をしないモードoff
を設定したときは「0」に設定され、ループ再生する場
合のノーマル・ループモードnormを設定したときは
「1」に設定され、ループ再生する場合のオルタネート
・ループモードalt を設定したときは「2」に設定され
る。
【0035】このノーマル・ループモードnormは、ルー
プ再生区間をループ再生する際に、時間軸を順方向に波
形再生してループ再生区間の終点(ループエンド)に達
したら、当該ループ再生区間の開始点(ループスター
ト)に飛び戻って、そこから再びループエンドに向かっ
て波形再生を行うことを繰り返すモードである。一方、
オルタネート・ループモードalt は、ループ再生区間を
ループ再生する際に、ループ再生区間の開始点(ループ
スタート)から時間軸を順方向に進んで波形再生し、ル
ープ再生区間の終点(ループエンド)に達したら、今度
はそのループエンドから当該ループ再生区間の開始点
(ループスタート)に向かって時間軸を逆方向に順次戻
りながら波形再生を行い、ループスタート点に達したら
そこで方向を再び逆転して順方向にループエンドに向か
って波形再生を行うことを繰り返すモードである。な
お、上述の逆方向での波形再生とは、波形データ自体を
後ろ側から読み出すという意味ではなく、所定長の波形
区間の取出しを、時間軸上で逆方向に進みながら行うと
いう意味であり、その所定長の波形区間では波形データ
は常に順方向に読みだされる。
プ再生区間をループ再生する際に、時間軸を順方向に波
形再生してループ再生区間の終点(ループエンド)に達
したら、当該ループ再生区間の開始点(ループスター
ト)に飛び戻って、そこから再びループエンドに向かっ
て波形再生を行うことを繰り返すモードである。一方、
オルタネート・ループモードalt は、ループ再生区間を
ループ再生する際に、ループ再生区間の開始点(ループ
スタート)から時間軸を順方向に進んで波形再生し、ル
ープ再生区間の終点(ループエンド)に達したら、今度
はそのループエンドから当該ループ再生区間の開始点
(ループスタート)に向かって時間軸を逆方向に順次戻
りながら波形再生を行い、ループスタート点に達したら
そこで方向を再び逆転して順方向にループエンドに向か
って波形再生を行うことを繰り返すモードである。な
お、上述の逆方向での波形再生とは、波形データ自体を
後ろ側から読み出すという意味ではなく、所定長の波形
区間の取出しを、時間軸上で逆方向に進みながら行うと
いう意味であり、その所定長の波形区間では波形データ
は常に順方向に読みだされる。
【0036】〔キー情報レジスタ〕DSP8はキー情報
レジスタを備えており、後述するCPU22の「再生処
理」において、キーボード30の操作が検出され、割当
処理によってキー情報がDSP8に転送されて、このキ
ー情報レジスタに一時的に記憶される。図3(1)にこ
のキー情報レジスタの構成例が示される。キー情報は、
キーオン/キーオフ情報key.on/off、音高情報(操作キ
ー情報)kpitch、ボイスモジュール情報voice.No、レベ
ル情報level からなる。例えば、 キーオン情報:「key.on/kpitch/voice.No/level 」 キーオフ情報:「key.off /kpitch/voice.No/level
」 の構成からなる。
レジスタを備えており、後述するCPU22の「再生処
理」において、キーボード30の操作が検出され、割当
処理によってキー情報がDSP8に転送されて、このキ
ー情報レジスタに一時的に記憶される。図3(1)にこ
のキー情報レジスタの構成例が示される。キー情報は、
キーオン/キーオフ情報key.on/off、音高情報(操作キ
ー情報)kpitch、ボイスモジュール情報voice.No、レベ
ル情報level からなる。例えば、 キーオン情報:「key.on/kpitch/voice.No/level 」 キーオフ情報:「key.off /kpitch/voice.No/level
」 の構成からなる。
【0037】なお、このキー情報レジスタは、DSP8
での受取り処理の前に、CPU22から新たなキー情報
が転送されることがある場合には、複数のキー情報を一
時記憶することが可能な、シフトレジスタのような構成
で、さらに先に入力した情報を先に出力する構成にすれ
ばよい。すなわち、MIDI信号の受信処理と同様な処
理とする。
での受取り処理の前に、CPU22から新たなキー情報
が転送されることがある場合には、複数のキー情報を一
時記憶することが可能な、シフトレジスタのような構成
で、さらに先に入力した情報を先に出力する構成にすれ
ばよい。すなわち、MIDI信号の受信処理と同様な処
理とする。
【0038】〔ループ情報レジスタ]図3(2)にはル
ープ情報レジスタが示される。このループ情報レジスタ
には波形データを選択するバンクbankが更新される毎
に、その選択した波形データに対応したループスタート
マークloopstart 、ループエンドマークloopend 、ルー
プスタートアドレスloopsa、ループエンドアドレスloop
eaが記憶される。
ープ情報レジスタが示される。このループ情報レジスタ
には波形データを選択するバンクbankが更新される毎
に、その選択した波形データに対応したループスタート
マークloopstart 、ループエンドマークloopend 、ルー
プスタートアドレスloopsa、ループエンドアドレスloop
eaが記憶される。
【0039】〔変調情報レジスタ〕図3(3)には変調
情報レジスタが示される。この変調情報レジスタには変
調値情報lfo.mod が格納される。後述の「LFO.MO
Dの演算処理」においては、変調信号であることを識別
する変調情報識別情報mod.inf と、演算によって得られ
た変調値情報lfo.mod とが組み合わされて転送される。
情報レジスタが示される。この変調情報レジスタには変
調値情報lfo.mod が格納される。後述の「LFO.MO
Dの演算処理」においては、変調信号であることを識別
する変調情報識別情報mod.inf と、演算によって得られ
た変調値情報lfo.mod とが組み合わされて転送される。
【0040】〔オリジナルピッチ情報レジスタ〕図3
(4)にはオリジナルピッチ情報レジスタが示される。
このオリジナルピッチ情報レジスタには、波形データの
音高をどれくらいシフトするかを指定するときの基準と
なる音高の情報(オリジナルピッチ情報)が記憶されて
いる。なお、オリジナルピッチ情報を設定しないときの
ために、電源投入時の初期設定において、予め「C4」
の音階に対応するオリジナルピッチ情報が記憶されてい
る。
(4)にはオリジナルピッチ情報レジスタが示される。
このオリジナルピッチ情報レジスタには、波形データの
音高をどれくらいシフトするかを指定するときの基準と
なる音高の情報(オリジナルピッチ情報)が記憶されて
いる。なお、オリジナルピッチ情報を設定しないときの
ために、電源投入時の初期設定において、予め「C4」
の音階に対応するオリジナルピッチ情報が記憶されてい
る。
【0041】波形メモリ12はパラメータ記憶部とマー
ク記憶部と波形データ記憶部とで構成される。これらの
記憶部のデータ構成を図4〜図6に示す。図4はパラメ
ータ記憶部のデータ構成、図5は波形データ記憶部のデ
ータ構成、図6はマーク記憶部のデータ構成である。パ
ラメータ記憶部は$800番地毎に、また波形データ記
憶部は$8000番地毎に、マーク記憶部は$2番地毎
に各々セグメントで区切られており、各々のセグメント
はアドレスの若い方から順番にwave0領域、wave1領域
、wave2領域 ・・・のように波形領域番号が付けら
れる。例えばある一つの波形についてそのパラメータを
パラメータ記憶部のwave0領域に格納したら、その波形
の波形データはそのパラメータに対応して波形データ記
憶部の同じ番号のwave0領域に格納する。なお、図4、
図5、図6におけるアドレスは16進数で表わされてお
り、前述したように以降$800のように数値の先頭に
$を付して16進数であることを示す。
ク記憶部と波形データ記憶部とで構成される。これらの
記憶部のデータ構成を図4〜図6に示す。図4はパラメ
ータ記憶部のデータ構成、図5は波形データ記憶部のデ
ータ構成、図6はマーク記憶部のデータ構成である。パ
ラメータ記憶部は$800番地毎に、また波形データ記
憶部は$8000番地毎に、マーク記憶部は$2番地毎
に各々セグメントで区切られており、各々のセグメント
はアドレスの若い方から順番にwave0領域、wave1領域
、wave2領域 ・・・のように波形領域番号が付けら
れる。例えばある一つの波形についてそのパラメータを
パラメータ記憶部のwave0領域に格納したら、その波形
の波形データはそのパラメータに対応して波形データ記
憶部の同じ番号のwave0領域に格納する。なお、図4、
図5、図6におけるアドレスは16進数で表わされてお
り、前述したように以降$800のように数値の先頭に
$を付して16進数であることを示す。
【0042】まず、パラメータ記憶部のデータ構成を図
4に従って説明する。例えばwave0領域において、アド
レス$0000に格納されているものはヘッダheaderで
あり、そのデータ内容としてそのwave0領域における波
形データの末尾アドレスendadrs が格納され、アドレス
$0001以降には開始アドレス/ピッチ情報sadrs/sp
itchが格納される。開始アドレス/ピッチ情報のうちの
ピッチ情報である波形ピッチspitchは波形データ記憶部
に格納された波形の1周期分のアドレス幅のことであ
り、開始アドレスsadrs は前記波形ピッチspitchで表さ
れるアドレス幅の波形が1周期から複数周期続く波形区
間の開始アドレスである(以下、この1周期から複数周
期続く波形区間を単に波形区間という) 。開始アドレス
/ピッチ情報としては、一つの波形区間の開始アドレス
sadrs と波形ピッチspitchとを一対として、波形全体に
わたるこれらの対が時系列にパラメータ記憶部に格納さ
れる。例えば波形データの最初の波形区間が開始アドレ
ス sadrs0で波形ピッチspitch0であり、次に続く波形
区間が開始アドレス sadrs1で波形ピッチspitch1であ
る場合、最初の開始アドレス sadrs0と波形ピッチspit
ch0はそれぞれアドレス$0001 、$0002に格
納され、続く開始アドレス sadrs1と波形ピッチspitch
1はそれぞれアドレス$0003、$0004に格納さ
れる。
4に従って説明する。例えばwave0領域において、アド
レス$0000に格納されているものはヘッダheaderで
あり、そのデータ内容としてそのwave0領域における波
形データの末尾アドレスendadrs が格納され、アドレス
$0001以降には開始アドレス/ピッチ情報sadrs/sp
itchが格納される。開始アドレス/ピッチ情報のうちの
ピッチ情報である波形ピッチspitchは波形データ記憶部
に格納された波形の1周期分のアドレス幅のことであ
り、開始アドレスsadrs は前記波形ピッチspitchで表さ
れるアドレス幅の波形が1周期から複数周期続く波形区
間の開始アドレスである(以下、この1周期から複数周
期続く波形区間を単に波形区間という) 。開始アドレス
/ピッチ情報としては、一つの波形区間の開始アドレス
sadrs と波形ピッチspitchとを一対として、波形全体に
わたるこれらの対が時系列にパラメータ記憶部に格納さ
れる。例えば波形データの最初の波形区間が開始アドレ
ス sadrs0で波形ピッチspitch0であり、次に続く波形
区間が開始アドレス sadrs1で波形ピッチspitch1であ
る場合、最初の開始アドレス sadrs0と波形ピッチspit
ch0はそれぞれアドレス$0001 、$0002に格
納され、続く開始アドレス sadrs1と波形ピッチspitch
1はそれぞれアドレス$0003、$0004に格納さ
れる。
【0043】次に波形データ記憶部のデータ構成を図5
に従って説明すると、これは各wave領域にシーケンシャ
ルなアドレス順序でサンプリング値wave data が格納さ
れるものである。
に従って説明すると、これは各wave領域にシーケンシャ
ルなアドレス順序でサンプリング値wave data が格納さ
れるものである。
【0044】次にマーク記憶部のデータ構成を図6に従
って説明する。これはwave0、wave1・・・の各wave領
域毎に、ループ再生する場合のループスタートマークlo
opstart とループエンドマークloopend が格納されるも
のである。図6において、ループスタートマークloopst
art はループ再生する区間の小さいアドレス側の端を、
ループエンドマークloopend はループ再生する区間の大
きいアドレス側の端を特定するマークであり、これらの
マークはパラメータ記憶部のピッチ変化時点を表すデー
タ(波形データの開始アドレス sadrs0、 sadrs1・・
・)が格納されているパラメータ記憶部のアドレスで表
される。例えば波形データの開始アドレス sadrs0をル
ープスタートに、開始アドレス sadrs1をループエンド
とする場合、マーク記憶部の最初のアドレス$0000
にはループスタートマークloopstart として$0001
が格納され、マーク記憶部の次のアドレス$0001に
はループエンドマークloopend として$0003が格納
される。
って説明する。これはwave0、wave1・・・の各wave領
域毎に、ループ再生する場合のループスタートマークlo
opstart とループエンドマークloopend が格納されるも
のである。図6において、ループスタートマークloopst
art はループ再生する区間の小さいアドレス側の端を、
ループエンドマークloopend はループ再生する区間の大
きいアドレス側の端を特定するマークであり、これらの
マークはパラメータ記憶部のピッチ変化時点を表すデー
タ(波形データの開始アドレス sadrs0、 sadrs1・・
・)が格納されているパラメータ記憶部のアドレスで表
される。例えば波形データの開始アドレス sadrs0をル
ープスタートに、開始アドレス sadrs1をループエンド
とする場合、マーク記憶部の最初のアドレス$0000
にはループスタートマークloopstart として$0001
が格納され、マーク記憶部の次のアドレス$0001に
はループエンドマークloopend として$0003が格納
される。
【0045】以下、この実施例装置の動作をフローチャ
ートを参照して説明する。なお、以下に説明する各フロ
ーチャートにおいては、原則的には、各種のパラメータ
は英小文字で表し、そのパラメータを記憶するレジスタ
等は同じスペルからなる英大文字で表すこととする。ま
た、フローチャートの表記法として、例えば、 A=B+C となっていた場合、これは、レジスタBから読み出した
値bとレジスタCから読み出した値cとを加算して、そ
の結果を値aとしてレジスタAに格納することを意味す
るが、以下の説明では表現を簡単にするため、例えば単
に値bと値cを加算して値aとする(あるいはレジスタ
Aに格納する)などの表現を用いることにする。
ートを参照して説明する。なお、以下に説明する各フロ
ーチャートにおいては、原則的には、各種のパラメータ
は英小文字で表し、そのパラメータを記憶するレジスタ
等は同じスペルからなる英大文字で表すこととする。ま
た、フローチャートの表記法として、例えば、 A=B+C となっていた場合、これは、レジスタBから読み出した
値bとレジスタCから読み出した値cとを加算して、そ
の結果を値aとしてレジスタAに格納することを意味す
るが、以下の説明では表現を簡単にするため、例えば単
に値bと値cを加算して値aとする(あるいはレジスタ
Aに格納する)などの表現を用いることにする。
【0046】図7には、CPU22が行う処理として、
メインルーチンのフローチャートが示される。メインル
ーチンがスタートすると、操作子群20のモードスイッ
チ(MODE.SW) が録音モード、編集モード、再生モードの
何れに操作されたか監視され(ステップA)、操作がさ
れると、その操作が録音モード、編集モード、再生モー
ドの何れであるかが判定される(ステップB)。録音モ
ードであれば、録音(REC)処理が行われ(ステップ
C)、編集モードであれば編集(EDIT)処理が行わ
れ(ステップD)、再生モードであれば再生(PLA
Y)処理が行われる(ステップE)。
メインルーチンのフローチャートが示される。メインル
ーチンがスタートすると、操作子群20のモードスイッ
チ(MODE.SW) が録音モード、編集モード、再生モードの
何れに操作されたか監視され(ステップA)、操作がさ
れると、その操作が録音モード、編集モード、再生モー
ドの何れであるかが判定される(ステップB)。録音モ
ードであれば、録音(REC)処理が行われ(ステップ
C)、編集モードであれば編集(EDIT)処理が行わ
れ(ステップD)、再生モードであれば再生(PLA
Y)処理が行われる(ステップE)。
【0047】図8には録音モードにおける録音処理ルー
チンのフローチャートが示される。録音処理は外部から
入力された楽音信号を録音(サンプリング)する処理で
あり、モードスイッチMODE.SW により録音モードに設定
した後、サンプリングスタートの操作子を操作すること
によって(ステップC3)、サンプリングスタートして
録音(サンプリング処理)が行われる(ステップC
4)。サンプリングされる楽音信号のデータは波形メモ
リ12に記憶される。この録音処理ルーチンから抜け出
てメインルーチンにリターンするにはEXIT操作子を
操作する(ステップC2)。
チンのフローチャートが示される。録音処理は外部から
入力された楽音信号を録音(サンプリング)する処理で
あり、モードスイッチMODE.SW により録音モードに設定
した後、サンプリングスタートの操作子を操作すること
によって(ステップC3)、サンプリングスタートして
録音(サンプリング処理)が行われる(ステップC
4)。サンプリングされる楽音信号のデータは波形メモ
リ12に記憶される。この録音処理ルーチンから抜け出
てメインルーチンにリターンするにはEXIT操作子を
操作する(ステップC2)。
【0048】図9(1)には編集モードにおける編集処
理ルーチンのフローチャートが示される。編集処理は、
録音モードでサンプリングした波形を変更したり、再生
可能な波形データに変更する編集処理や、それらの波形
データをハードディスク装置33に転送したり、ハード
ディスク装置33から波形メモリ12に転送したりする
処理を行う(ステップD3)。また、波形データのピッ
チ変化を抽出してそれに基づいてループ再生区間(ルー
プポイント)を設定する。この抽出方法とループポイン
ト設定方法は後述する。この編集処理ルーチンから抜け
出るにはEXIT操作子を操作する(ステップD2)。
理ルーチンのフローチャートが示される。編集処理は、
録音モードでサンプリングした波形を変更したり、再生
可能な波形データに変更する編集処理や、それらの波形
データをハードディスク装置33に転送したり、ハード
ディスク装置33から波形メモリ12に転送したりする
処理を行う(ステップD3)。また、波形データのピッ
チ変化を抽出してそれに基づいてループ再生区間(ルー
プポイント)を設定する。この抽出方法とループポイン
ト設定方法は後述する。この編集処理ルーチンから抜け
出るにはEXIT操作子を操作する(ステップD2)。
【0049】「波形データのピッチ変化抽出方法」ま
ず、図47に示したフローチャートによって波形データ
のピッチ変化抽出方法を説明する。前述の録音モード
(RECモード)において波形信号をサンプリングし、
波形メモリ12に波形データとして記憶する。次に、編
集モード(EDITモード)において波形データのピッ
チ検出を行い、図4に示されるパラメータ記憶部に記憶
する開始アドレスsadrs と波形ピッチspitchのデータを
作成し、記憶する。
ず、図47に示したフローチャートによって波形データ
のピッチ変化抽出方法を説明する。前述の録音モード
(RECモード)において波形信号をサンプリングし、
波形メモリ12に波形データとして記憶する。次に、編
集モード(EDITモード)において波形データのピッ
チ検出を行い、図4に示されるパラメータ記憶部に記憶
する開始アドレスsadrs と波形ピッチspitchのデータを
作成し、記憶する。
【0050】次に、図47の処理を、その波形メモリに
記憶されている波形データに対して、図47のピッチ変
化抽出処理を施し、図50のようなピッチデータ列を生
成する。すなわち、波形データに対してピッチ検出処理
を施し、時間経過に対応してピッチデータ列x(n) を作
成する(ステップSl)。このステップS1で作成した
ピッチデータ列x(n) は、図48に示すように、所々、
抽出ミスを起こし、パルス性ノイズが乗っている。
記憶されている波形データに対して、図47のピッチ変
化抽出処理を施し、図50のようなピッチデータ列を生
成する。すなわち、波形データに対してピッチ検出処理
を施し、時間経過に対応してピッチデータ列x(n) を作
成する(ステップSl)。このステップS1で作成した
ピッチデータ列x(n) は、図48に示すように、所々、
抽出ミスを起こし、パルス性ノイズが乗っている。
【0051】カウンタnに初期値aを設定する(ステッ
プS2)。この初期値aは平均値処理の対象とするピッ
チデータx(n) のデータ個数を決めるもので、この実施
例ではa=8とする。次に、 X(n) ={x(n-a) +x(n-a+1)+・・・+x(n-1) }
/a の演算を行い、ピッチデータ列n個の平均を演算する
(ステップS3)。例えば、図49のようなピッチデー
タ列x(1) 〜x(9) ・・・であれば、 X(8) ={x(0) +x(1) +x(2) +・・・+x(7) }
/8 の演算をすることになる。
プS2)。この初期値aは平均値処理の対象とするピッ
チデータx(n) のデータ個数を決めるもので、この実施
例ではa=8とする。次に、 X(n) ={x(n-a) +x(n-a+1)+・・・+x(n-1) }
/a の演算を行い、ピッチデータ列n個の平均を演算する
(ステップS3)。例えば、図49のようなピッチデー
タ列x(1) 〜x(9) ・・・であれば、 X(8) ={x(0) +x(1) +x(2) +・・・+x(7) }
/8 の演算をすることになる。
【0052】次に、その平均X(n) と次のピッチデータ
x(n) を比較し、 (l/α)X(n) <x(n) <αX(n) を満足するかを判断する(ステップS4)。この判断処
理は、誤って抽出されたノイズ的なピッチデータを取り
除く処理であり、判断結果がYesの場合は何もせずに
次のステップヘ進み、判断結果がNoの場合はピッチデ
ータx(n) を平均X(n) に変更する(ステップS5)。
このように、ステップS4とS5は、次のピッチデータ
x(n) がそのデータの前の8個のデータの平均値X(n)
に対して所定の範囲内であるかを判断し、所定範囲内で
あればそのまま、所定範囲をはみ出していればピッチデ
ータx(n) を平均X(n) に変更する処理をして、ピッチ
検出の抽出ミスを補正している。なお、αは目的に応じ
て適宜、適当な値とすることができるが、この実施例で
は例えばα=2.0としておく。なお、ピッチデータ列
の最初のn個(8個)のデータについては、この実施例
では使用しないため、上記ステップS4とS5の処理を
施していないが、必要であれば抽出ミスを補正する処理
を適宜、施してもよい。
x(n) を比較し、 (l/α)X(n) <x(n) <αX(n) を満足するかを判断する(ステップS4)。この判断処
理は、誤って抽出されたノイズ的なピッチデータを取り
除く処理であり、判断結果がYesの場合は何もせずに
次のステップヘ進み、判断結果がNoの場合はピッチデ
ータx(n) を平均X(n) に変更する(ステップS5)。
このように、ステップS4とS5は、次のピッチデータ
x(n) がそのデータの前の8個のデータの平均値X(n)
に対して所定の範囲内であるかを判断し、所定範囲内で
あればそのまま、所定範囲をはみ出していればピッチデ
ータx(n) を平均X(n) に変更する処理をして、ピッチ
検出の抽出ミスを補正している。なお、αは目的に応じ
て適宜、適当な値とすることができるが、この実施例で
は例えばα=2.0としておく。なお、ピッチデータ列
の最初のn個(8個)のデータについては、この実施例
では使用しないため、上記ステップS4とS5の処理を
施していないが、必要であれば抽出ミスを補正する処理
を適宜、施してもよい。
【0053】以上の処理がピッチデータ列の最後まで行
われたかを判断し(ステップS6)、終了したなら次の
ステップS7ヘ、終了していないのであれば前記ステッ
プS3へ戻って、ピッチデータ列の最後まで処理を続け
る。以上の補正が終わったピッチデータ列x(n) に対し
てさらにローパスフィルタリング処理を施し、ピッチデ
ータ列x(n) の不規則な変化を取り除き、図50のよう
な滑らかに変化するピッチデータ列x(n) を得る。以上
が波形データのピッチ変化抽出方法で、ビブラート効果
の変化を検出する場合に有効である。
われたかを判断し(ステップS6)、終了したなら次の
ステップS7ヘ、終了していないのであれば前記ステッ
プS3へ戻って、ピッチデータ列の最後まで処理を続け
る。以上の補正が終わったピッチデータ列x(n) に対し
てさらにローパスフィルタリング処理を施し、ピッチデ
ータ列x(n) の不規則な変化を取り除き、図50のよう
な滑らかに変化するピッチデータ列x(n) を得る。以上
が波形データのピッチ変化抽出方法で、ビブラート効果
の変化を検出する場合に有効である。
【0054】「ループポイントの設定」図47のピッチ
変化抽出方法で抽出されたピッチデータ列に対して、ピ
ッチデータ列のピークとピーク(図50の矢印の部分)
を検出し、それぞれループスタートloopstart とループ
エンドloopend とし、対応する波形データの開始アドレ
スsadrs の記憶されたパラメータ記憶部のアドレスをマ
ーク記憶部にそれぞれ記憶する。この矢印の部分は演算
によりピークを検出することにより自動的に検出するよ
うにしても良い。
変化抽出方法で抽出されたピッチデータ列に対して、ピ
ッチデータ列のピークとピーク(図50の矢印の部分)
を検出し、それぞれループスタートloopstart とループ
エンドloopend とし、対応する波形データの開始アドレ
スsadrs の記憶されたパラメータ記憶部のアドレスをマ
ーク記憶部にそれぞれ記憶する。この矢印の部分は演算
によりピークを検出することにより自動的に検出するよ
うにしても良い。
【0055】以上のようにループポイントを設定する場
合、オルタネートループ再生の場合は不連続部は生じな
いため、かなり適当なポイントを設定しても不都合は発
生しないが、ノーマルループ再生をする場合はループエ
ンドポイントからループスタートポイントにジャンプす
るため、音色や音量の違いがある場合には不連続部が生
じてしまう。この場合には、より注意して音色や音量の
違いが少ないループポイントを設定する必要がある。
合、オルタネートループ再生の場合は不連続部は生じな
いため、かなり適当なポイントを設定しても不都合は発
生しないが、ノーマルループ再生をする場合はループエ
ンドポイントからループスタートポイントにジャンプす
るため、音色や音量の違いがある場合には不連続部が生
じてしまう。この場合には、より注意して音色や音量の
違いが少ないループポイントを設定する必要がある。
【0056】図9(2)には再生モードにおける再生処
理ルーチンのフローチャートが示される。この再生処理
ルーチンの初期設定(ステップE1)においては、操作
子群の状態を操作するレジスタ等をリセットし、操作子
群を操作可能な状態にすると共に、各操作子の初期状態
を設定しておく。初期状態とは、「再生処理」で、各操
作子に変化があった時だけ操作子の操作に対応した処理
を行うため、その最初の基準となる状態である。
理ルーチンのフローチャートが示される。この再生処理
ルーチンの初期設定(ステップE1)においては、操作
子群の状態を操作するレジスタ等をリセットし、操作子
群を操作可能な状態にすると共に、各操作子の初期状態
を設定しておく。初期状態とは、「再生処理」で、各操
作子に変化があった時だけ操作子の操作に対応した処理
を行うため、その最初の基準となる状態である。
【0057】再生処理ルーチンは、モードスイッチMOD
E.SW により再生モードに設定した後、再生スタートの
操作子を操作することによってスタートする。再生処理
(ステップE3)は、波形メモリ12の波形データを、
キーボード30からの演奏情報に対応して再生する処理
であり、この再生処理ルーチンから抜け出るにはEXI
T操作子を操作する(ステップE2)。
E.SW により再生モードに設定した後、再生スタートの
操作子を操作することによってスタートする。再生処理
(ステップE3)は、波形メモリ12の波形データを、
キーボード30からの演奏情報に対応して再生する処理
であり、この再生処理ルーチンから抜け出るにはEXI
T操作子を操作する(ステップE2)。
【0058】図10〜図12にはこの再生モードにおけ
る再生処理(ステップE3)の詳細な処理手順が示され
る。この再生処理はCPU22で実行される。この再生
処理では、操作子群20による設定とキーボード30に
よる演奏操作を検出してそれらの操作情報をDSP8に
転送して記憶させる処理を行う。
る再生処理(ステップE3)の詳細な処理手順が示され
る。この再生処理はCPU22で実行される。この再生
処理では、操作子群20による設定とキーボード30に
よる演奏操作を検出してそれらの操作情報をDSP8に
転送して記憶させる処理を行う。
【0059】再生処理が開始されると、操作子群20の
操作状態を走査して、バンクスイッチBANK.SW 、再生モ
ードスイッチPLAYMODE.SW 、ループモードスイッチLOOP
MODE.SW 、オリジナルキー設定スイッチORGKEY.SW 、ア
サインスイッチASSIGN.SW 、ホルマント設定操作子F.V
R、時間圧伸量設定操作子TCOMP の操作状態を検出する
(ステップE300)。これらの操作状態に変化があっ
たときには、以下のように、それらのスイッチ操作に対
応して操作子設定テーブル等への設定処理を行う。
操作状態を走査して、バンクスイッチBANK.SW 、再生モ
ードスイッチPLAYMODE.SW 、ループモードスイッチLOOP
MODE.SW 、オリジナルキー設定スイッチORGKEY.SW 、ア
サインスイッチASSIGN.SW 、ホルマント設定操作子F.V
R、時間圧伸量設定操作子TCOMP の操作状態を検出する
(ステップE300)。これらの操作状態に変化があっ
たときには、以下のように、それらのスイッチ操作に対
応して操作子設定テーブル等への設定処理を行う。
【0060】まず、再生モードスイッチPLAYMODE.SW の
操作に変化が有るか否かを見て(ステップE301)、
変化が有る場合に、再生モードスイッチPLAYMODE.SW で
設定された再生モードが第1の再生モードplay1であれ
ばDSP8の操作子設定テーブルの再生モードplaymode
に「0」を、また第2の再生モードplay2であれば
「1」をそれぞれ設定する(ステップE302)。
操作に変化が有るか否かを見て(ステップE301)、
変化が有る場合に、再生モードスイッチPLAYMODE.SW で
設定された再生モードが第1の再生モードplay1であれ
ばDSP8の操作子設定テーブルの再生モードplaymode
に「0」を、また第2の再生モードplay2であれば
「1」をそれぞれ設定する(ステップE302)。
【0061】次に、ループモードスイッチLOOPMODE.SW
の操作に変化が有るか否かを見て(ステップE30
3)、変化が有る場合に、ループモードスイッチLOOPMO
DE.SW で設定されたループモードがオフoff であればD
SP8の操作子設定テーブルのループモードloopmode
に「0」を、ノーマルnormであれば「1」を、オルタネ
ートalt であれば「2」をそれぞれ設定する(E30
4)。
の操作に変化が有るか否かを見て(ステップE30
3)、変化が有る場合に、ループモードスイッチLOOPMO
DE.SW で設定されたループモードがオフoff であればD
SP8の操作子設定テーブルのループモードloopmode
に「0」を、ノーマルnormであれば「1」を、オルタネ
ートalt であれば「2」をそれぞれ設定する(E30
4)。
【0062】そして、バンクスイッチBANK.SW の操作に
変化が有るか否かを見て(ステップE305)、変化が
有る場合には、バンクスイッチBANK.SW で設定されたバ
ンク番号bankを、DSP8の操作子設定テーブルのバン
ク番号bankに設定する(ステップE306)。
変化が有るか否かを見て(ステップE305)、変化が
有る場合には、バンクスイッチBANK.SW で設定されたバ
ンク番号bankを、DSP8の操作子設定テーブルのバン
ク番号bankに設定する(ステップE306)。
【0063】次に、オリジナルキースイッチORGKEY.SW
の操作に変化が有るか否かを見て(ステップE30
7)、変化が有る場合にはキーボード30の操作鍵情報
を検出し(ステップE308)、その検出結果により押
鍵情報が有るか否かを見て(ステップE309)、押鍵
情報が有る場合にはその押鍵情報に対応したピッチ情報
をオリジナルピッチ情報org.pitch としてDSP8のオ
リジナルピッチ情報レジスタorg.pitch に設定する(ス
テップE310)。なお、押鍵情報がない場合にはステ
ップE308に戻り、押鍵情報が有るまでこの処理を繰
り返す。
の操作に変化が有るか否かを見て(ステップE30
7)、変化が有る場合にはキーボード30の操作鍵情報
を検出し(ステップE308)、その検出結果により押
鍵情報が有るか否かを見て(ステップE309)、押鍵
情報が有る場合にはその押鍵情報に対応したピッチ情報
をオリジナルピッチ情報org.pitch としてDSP8のオ
リジナルピッチ情報レジスタorg.pitch に設定する(ス
テップE310)。なお、押鍵情報がない場合にはステ
ップE308に戻り、押鍵情報が有るまでこの処理を繰
り返す。
【0064】次に、アサインスイッチASSIGN.SW の操作
に変化が有るか否かを見て(ステップE311)、変化
が有る場合には、アサインスイッチASSIGN.SW で設定さ
れたモードがモノフォニック2またはポリフォニック2
か否かを判定する(ステップE312)。肯定判定(モ
ノフォニック2またはポリフォニック2と判定)である
場合は「リトリガ」を行わないモードが設定されたもの
であり、この場合には、DSP8の操作子設定テーブル
のリンクモードlink.mode に「1」を設定する。否定判
定である場合は「リトリガ」を行うモードが設定された
ものであり、この場合には、DSP8の操作子設定テー
ブルのリンクモードlink.mode に「0」を設定する。さ
らに、アサインスイッチASSIGN.SW で設定されたモード
がモノフォニック(1または 2)であるかポリフォニ
ック(1または2)であるかを判定し(ステップE31
5)、モノフォニック1または2である場合にはアサイ
ンフラグAS.FLGをモノフォニックMONOにセットし(ステ
ップE316)、ポリフォニック1または2である場合
にはポリフォニックPOLYにセットする(ステップE31
7)。このアサインフラグAS.FLGにより、ボイスモジュ
ール(楽音発生チャネル)への割当処理が1ボイス(モ
ノフォニックの場合)か複数ボイス(ポリフォニックの
場合)かを知ることができる。
に変化が有るか否かを見て(ステップE311)、変化
が有る場合には、アサインスイッチASSIGN.SW で設定さ
れたモードがモノフォニック2またはポリフォニック2
か否かを判定する(ステップE312)。肯定判定(モ
ノフォニック2またはポリフォニック2と判定)である
場合は「リトリガ」を行わないモードが設定されたもの
であり、この場合には、DSP8の操作子設定テーブル
のリンクモードlink.mode に「1」を設定する。否定判
定である場合は「リトリガ」を行うモードが設定された
ものであり、この場合には、DSP8の操作子設定テー
ブルのリンクモードlink.mode に「0」を設定する。さ
らに、アサインスイッチASSIGN.SW で設定されたモード
がモノフォニック(1または 2)であるかポリフォニ
ック(1または2)であるかを判定し(ステップE31
5)、モノフォニック1または2である場合にはアサイ
ンフラグAS.FLGをモノフォニックMONOにセットし(ステ
ップE316)、ポリフォニック1または2である場合
にはポリフォニックPOLYにセットする(ステップE31
7)。このアサインフラグAS.FLGにより、ボイスモジュ
ール(楽音発生チャネル)への割当処理が1ボイス(モ
ノフォニックの場合)か複数ボイス(ポリフォニックの
場合)かを知ることができる。
【0065】次に、ホルマント設定操作子F.VRに変化が
有るか否かを見て(ステップE318)、変化が有る場
合には、その検出値を、DSP8の操作子設定テーブル
のホルマント移動量f.vrに設定する(ステップE31
9)。同様に、時間圧伸量設定操作子TCOMP に変化が有
るか否かを見て(ステップE320)、変化がある場合
には、その検出値を、CPU22側に用意されたレジス
タMTCOMPに設定する(ステップE321)。
有るか否かを見て(ステップE318)、変化が有る場
合には、その検出値を、DSP8の操作子設定テーブル
のホルマント移動量f.vrに設定する(ステップE31
9)。同様に、時間圧伸量設定操作子TCOMP に変化が有
るか否かを見て(ステップE320)、変化がある場合
には、その検出値を、CPU22側に用意されたレジス
タMTCOMPに設定する(ステップE321)。
【0066】次に、キーボード30からの操作鍵情報
(キー情報)を検出する(ステップE322)。そし
て、その検出結果から操作鍵に変化があるか否かを見て
(ステップE323)、変化がある場合には先に設定さ
れたAS.FLGの状態を判定する(ステップE324)。上
記アサインフラグAS.FLGの状態の判定結果がモノフォニ
ックMONOである場合には、操作鍵を1ボイスモジュール
に割り当てて、検出したキー情報をDSP8に転送する
(ステップE325)。ポリフォニックPOLYである場合
には、操作鍵を複数ボイスモジュールへの割当て処理を
行い、検出したキー情報をDSP8に転送する(ステッ
プE326)。DSP8では受信したキー情報をキー情
報レジスタに一時記憶する。
(キー情報)を検出する(ステップE322)。そし
て、その検出結果から操作鍵に変化があるか否かを見て
(ステップE323)、変化がある場合には先に設定さ
れたAS.FLGの状態を判定する(ステップE324)。上
記アサインフラグAS.FLGの状態の判定結果がモノフォニ
ックMONOである場合には、操作鍵を1ボイスモジュール
に割り当てて、検出したキー情報をDSP8に転送する
(ステップE325)。ポリフォニックPOLYである場合
には、操作鍵を複数ボイスモジュールへの割当て処理を
行い、検出したキー情報をDSP8に転送する(ステッ
プE326)。DSP8では受信したキー情報をキー情
報レジスタに一時記憶する。
【0067】これらステップE325またはE326の
処理をした後、あるいはステップE323での判定の結
果押鍵操作に変化がないと判定された場合には、アフタ
ータッチ操作が有るか否かを判定する(ステップE32
7)。ここでは、アフタータッチ操作の有無はキーボー
ド30からのアフタータッチ信号after.touch の大きさ
に基づいて判定される。すなわち、アフタータッチ信号
after.touch の大きさが$20未満であった場合にはア
フタータッチ無しと見なすこととし、$20以上の場合
にアフタータッチ有りとする。
処理をした後、あるいはステップE323での判定の結
果押鍵操作に変化がないと判定された場合には、アフタ
ータッチ操作が有るか否かを判定する(ステップE32
7)。ここでは、アフタータッチ操作の有無はキーボー
ド30からのアフタータッチ信号after.touch の大きさ
に基づいて判定される。すなわち、アフタータッチ信号
after.touch の大きさが$20未満であった場合にはア
フタータッチ無しと見なすこととし、$20以上の場合
にアフタータッチ有りとする。
【0068】アフタータッチ有りと判定された場合に
は、時間圧伸量設定操作子TCOMP による設定値をアフタ
ータッチ信号after.touch に基づいて変更して前述のC
PU側のレジスタMTCOMPに設定する(ステップE32
8)。この時間圧伸量設定操作子TCOMP による設定値の
修正は次の演算式、 MTCOMP= TCOMP*〔1−(after.touch −$20)/$
60〕 に従って行う。ここで TCOMPは時間圧伸量設定操作子TC
OMP による設定値とする。この演算式は、アフタータッ
チ有りと判定された$20〜$7Fの範囲のアフタータ
ッチ信号after.touch を、 (after.touch −$20)/$60 という演算により0〜1の範囲の値に正規化し、この正
規化した値を1から減じて時間圧伸量設定操作子TCOMP
の設定値に乗算してレジスタMTCOMPに設定するもので、
この演算の結果、アフタータッチ信号after.touch が$
20を少し超える程度の弱いアフタータッチであった場
合には時間圧伸量設定操作子TCOMP による設定値は大き
くは変更されないが、アフタータッチ信号after.touch
が大きくなるに従って時間圧伸量設定操作子TCOMP の設
定値は減少する方向に大きく修正され、アフタータッチ
が最も強い$7Fでは時間圧伸量設定操作子TCOMP の設
定値はその値の如何にかかわらずゼロとされてレジスタ
MTCOMPに設定される。
は、時間圧伸量設定操作子TCOMP による設定値をアフタ
ータッチ信号after.touch に基づいて変更して前述のC
PU側のレジスタMTCOMPに設定する(ステップE32
8)。この時間圧伸量設定操作子TCOMP による設定値の
修正は次の演算式、 MTCOMP= TCOMP*〔1−(after.touch −$20)/$
60〕 に従って行う。ここで TCOMPは時間圧伸量設定操作子TC
OMP による設定値とする。この演算式は、アフタータッ
チ有りと判定された$20〜$7Fの範囲のアフタータ
ッチ信号after.touch を、 (after.touch −$20)/$60 という演算により0〜1の範囲の値に正規化し、この正
規化した値を1から減じて時間圧伸量設定操作子TCOMP
の設定値に乗算してレジスタMTCOMPに設定するもので、
この演算の結果、アフタータッチ信号after.touch が$
20を少し超える程度の弱いアフタータッチであった場
合には時間圧伸量設定操作子TCOMP による設定値は大き
くは変更されないが、アフタータッチ信号after.touch
が大きくなるに従って時間圧伸量設定操作子TCOMP の設
定値は減少する方向に大きく修正され、アフタータッチ
が最も強い$7Fでは時間圧伸量設定操作子TCOMP の設
定値はその値の如何にかかわらずゼロとされてレジスタ
MTCOMPに設定される。
【0069】そして、このステップE328あるいは前
述のステップE321で設定されたMTCOMPの値をDSP
の操作子設定テーブルのtcomp に設定する(ステップE
329)。なお、アフタータッチ信号after.touch が$
20未満の場合にはステップE327でアフタータッチ
無しと判定されてステップE328は実行されない。こ
の場合には、先に設定されているレジスタMTCOMPの値は
変更されず、本ステップE329によってDSPの操作
子設定テーブルのtcomp に設定される値は、先のステッ
プE321において操作子TCOMP によって設定される値
となる。
述のステップE321で設定されたMTCOMPの値をDSP
の操作子設定テーブルのtcomp に設定する(ステップE
329)。なお、アフタータッチ信号after.touch が$
20未満の場合にはステップE327でアフタータッチ
無しと判定されてステップE328は実行されない。こ
の場合には、先に設定されているレジスタMTCOMPの値は
変更されず、本ステップE329によってDSPの操作
子設定テーブルのtcomp に設定される値は、先のステッ
プE321において操作子TCOMP によって設定される値
となる。
【0070】これらの設定操作の後、変調値lfo.mod の
演算処理を行う (ステップE330) 。この演算処理
は、ステップE321またはE328でレジスタMTCOMP
に設定した時間圧伸量の絶対値が小であるときに、再生
波形にビブラートに似た変調を行うための変調値lfo.mo
d を発生するものである。このステップで演算される変
調値情報は、変調情報であることを識別する変調情報識
別情報mod.inf とともにキー情報の一種としてDSPに
転送され、変調値情報は変調情報レジスタに格納され
る。
演算処理を行う (ステップE330) 。この演算処理
は、ステップE321またはE328でレジスタMTCOMP
に設定した時間圧伸量の絶対値が小であるときに、再生
波形にビブラートに似た変調を行うための変調値lfo.mo
d を発生するものである。このステップで演算される変
調値情報は、変調情報であることを識別する変調情報識
別情報mod.inf とともにキー情報の一種としてDSPに
転送され、変調値情報は変調情報レジスタに格納され
る。
【0071】図13は上述のステップE330における
変調値情報の演算処理の詳細な内容を示すフローチャー
トである。図14はこの演算処理で生成される波形のタ
イムチャートである。まず、レジスタMTCOMPの絶対値が
「0. 1」により大きいか否か判定し(ステップE33
01)、大きければ、ゲート信号lfo.gateを「0」にし
て、以降のステップにて発生される変調値lfo.mod が常
に「1」となるようにする(ステップE3303)。
変調値情報の演算処理の詳細な内容を示すフローチャー
トである。図14はこの演算処理で生成される波形のタ
イムチャートである。まず、レジスタMTCOMPの絶対値が
「0. 1」により大きいか否か判定し(ステップE33
01)、大きければ、ゲート信号lfo.gateを「0」にし
て、以降のステップにて発生される変調値lfo.mod が常
に「1」となるようにする(ステップE3303)。
【0072】レジスタMTCOMPの絶対値が「0. 1」以下
であれば、ゲート信号lfo.gateを「1」にして(ステッ
プE3302)、「1」を中心に低周波周期で変動する
変調値lfo.mod を発生して、その変調値lfo.mod で再生
波形信号に変調をかけて波形信号にビブラート効果を付
加する。すなわち、次のステップE3304において、
変調エンベロープlfo.env を、 LFO.ENV =LFO.ENV +(LFO.GATE−LFO.ENV )*SLOPE で演算して求める。ここで、SLOPE はエンベロープの傾
きを決定する係数である。このエンベロープlfo.env
は、図14に示すように、ゲート信号lfo.gateの「0」
から「1」への立上りに同期して漸増して「1」になる
波形となる。また、低周波信号lfo を、 LFO = SIN(2*3. 14*LFO.RATE/32000*LF
O.COUNT ) を演算することで発生する。ここで、LFO.RATEは係数
(単位Hz )、LFO.COUNTはカウンタであって、このカ
ウンタLFO.COUNT はステップE3304が行われる毎に
インクリメントされる。低周波信号lfo は、図14に示
すような正弦波となる。
であれば、ゲート信号lfo.gateを「1」にして(ステッ
プE3302)、「1」を中心に低周波周期で変動する
変調値lfo.mod を発生して、その変調値lfo.mod で再生
波形信号に変調をかけて波形信号にビブラート効果を付
加する。すなわち、次のステップE3304において、
変調エンベロープlfo.env を、 LFO.ENV =LFO.ENV +(LFO.GATE−LFO.ENV )*SLOPE で演算して求める。ここで、SLOPE はエンベロープの傾
きを決定する係数である。このエンベロープlfo.env
は、図14に示すように、ゲート信号lfo.gateの「0」
から「1」への立上りに同期して漸増して「1」になる
波形となる。また、低周波信号lfo を、 LFO = SIN(2*3. 14*LFO.RATE/32000*LF
O.COUNT ) を演算することで発生する。ここで、LFO.RATEは係数
(単位Hz )、LFO.COUNTはカウンタであって、このカ
ウンタLFO.COUNT はステップE3304が行われる毎に
インクリメントされる。低周波信号lfo は、図14に示
すような正弦波となる。
【0073】次に、変調度lfo.mod を、 LFO.MOD =POW(0. 5,LFO *LFO.ENV *LFO.DEPT
H /1200) を演算して求める(ステップE3305)。ここで、LF
O.DEPTH は変調の深さであり、単位はcents である。こ
の演算で求められた変調度lfo.mod は、図14に示すよ
うに、ゲート波形lfo.gateの「0」から「1」への立上
りに同期して「1」を中心に上下に低周波lfo の周期で
振れる波形となる。なお、関数POW(a,b)は、a
の値をb乗することを表しており、上記演算式は、0.
5を(LFO*LFO.ENV *LFO.DEPTH /1200)乗する
ことを表している。
H /1200) を演算して求める(ステップE3305)。ここで、LF
O.DEPTH は変調の深さであり、単位はcents である。こ
の演算で求められた変調度lfo.mod は、図14に示すよ
うに、ゲート波形lfo.gateの「0」から「1」への立上
りに同期して「1」を中心に上下に低周波lfo の周期で
振れる波形となる。なお、関数POW(a,b)は、a
の値をb乗することを表しており、上記演算式は、0.
5を(LFO*LFO.ENV *LFO.DEPTH /1200)乗する
ことを表している。
【0074】次に、前記の1ボイスモジュールまたは複
数ボイスモジュールへの割当て処理について説明する。 「1ボイスモジュールへの割当処理」単音(1ボイス)
のみを発音するモードの割当処理である。キーボード3
0のキー情報の検出の結果、操作鍵のうち、最後に押鍵
した鍵を優先的に1つのボイスモジュール(楽音発生チ
ャンネル)に割り当てる。なお、この割当処理では1ボ
イスモジュールへの割当なので、ボイスモジュール情報
voice.Noの値は常に「No1」になる。
数ボイスモジュールへの割当て処理について説明する。 「1ボイスモジュールへの割当処理」単音(1ボイス)
のみを発音するモードの割当処理である。キーボード3
0のキー情報の検出の結果、操作鍵のうち、最後に押鍵
した鍵を優先的に1つのボイスモジュール(楽音発生チ
ャンネル)に割り当てる。なお、この割当処理では1ボ
イスモジュールへの割当なので、ボイスモジュール情報
voice.Noの値は常に「No1」になる。
【0075】「複数ボイスモジュールへの割当処理」複
数音が発音可能なモードの割当処理である。キーボード
30のキー情報の検出の結果、操作鍵のうち、予め決め
られた数の押鍵だけを所定の数のボイスモジュールに割
り当てる。この実施例では複数ボイスの数を2ボイスと
している。所定のボイス数(実施例では2)以上操作さ
れても受け付けない。キーオン情報が入力されたとき、
空きボイスがあるときのみに割当処理を行う。
数音が発音可能なモードの割当処理である。キーボード
30のキー情報の検出の結果、操作鍵のうち、予め決め
られた数の押鍵だけを所定の数のボイスモジュールに割
り当てる。この実施例では複数ボイスの数を2ボイスと
している。所定のボイス数(実施例では2)以上操作さ
れても受け付けない。キーオン情報が入力されたとき、
空きボイスがあるときのみに割当処理を行う。
【0076】なお、キーオン情報を転送し、楽音が発音
中にアサインスイッチASSIGN.SW を変更すると、発音中
の楽音が止まらないなどの動作の不都合が起こる可能性
がある。よって、かかる動作の不都合を防止するため、
楽音が発音中にアサインスイッチASSIGN.SW を操作して
動作モードが変更された場合には、発音中の楽音の全て
に対してキーオフ情報を転送するようにしている。そし
て、新たな動作モードで発音中(押鍵中)のキーオン情
報を転送するようにしている。
中にアサインスイッチASSIGN.SW を変更すると、発音中
の楽音が止まらないなどの動作の不都合が起こる可能性
がある。よって、かかる動作の不都合を防止するため、
楽音が発音中にアサインスイッチASSIGN.SW を操作して
動作モードが変更された場合には、発音中の楽音の全て
に対してキーオフ情報を転送するようにしている。そし
て、新たな動作モードで発音中(押鍵中)のキーオン情
報を転送するようにしている。
【0077】以上の割当て処理は、鍵数よりも少ない数
の音源を備えた電子楽器において、押鍵を音源に割り当
てる公知のジェネレータアサインの技術を使用するの
で、詳細は省略する。
の音源を備えた電子楽器において、押鍵を音源に割り当
てる公知のジェネレータアサインの技術を使用するの
で、詳細は省略する。
【0078】次に、DSP8の処理を図15を参照して
説明する。図15はDSP8のメインルーチンを示すフ
ローチャートであり、サンプリング周期で繰り返し実行
されるものである。なお、操作子設定テーブルの再生モ
ードplaymode に設定されたモードが第1再生モードpl
ay1か第2再生モードplay2かに応じて、後述の「読出
し処理サブルーチン」「ループモード処理サブルーチ
ン」「順方向再生処理サブルーチン」「逆方向再生処理
サブルーチン」「ボイス1の発音開始処理」「ボイス2
の発音開始処理」「ボイスlからボイス2へのリンク発
音処理」「ボイス2からボイス1へのリンク発音処理」
は異なるように設定されるものであるが、まず、再生モ
ードが第1の再生モードplay1の場合について説明す
る。
説明する。図15はDSP8のメインルーチンを示すフ
ローチャートであり、サンプリング周期で繰り返し実行
されるものである。なお、操作子設定テーブルの再生モ
ードplaymode に設定されたモードが第1再生モードpl
ay1か第2再生モードplay2かに応じて、後述の「読出
し処理サブルーチン」「ループモード処理サブルーチ
ン」「順方向再生処理サブルーチン」「逆方向再生処理
サブルーチン」「ボイス1の発音開始処理」「ボイス2
の発音開始処理」「ボイスlからボイス2へのリンク発
音処理」「ボイス2からボイス1へのリンク発音処理」
は異なるように設定されるものであるが、まず、再生モ
ードが第1の再生モードplay1の場合について説明す
る。
【0079】このメインルーチンでは、操作子設定テー
ブルのバンク番号bankの更新があったか否かを監視して
おり(ステップF1)、バンクスイッチBANK.SW の操作
に対応してCPU22が操作子設定テーブルのバンク番
号bankを更新すると「ループ情報の処理」(ステップF
2)を行う。この「ループ情報の処理」の詳細は後述す
る。更新されない場合にはこのステップF1を飛び越
す。
ブルのバンク番号bankの更新があったか否かを監視して
おり(ステップF1)、バンクスイッチBANK.SW の操作
に対応してCPU22が操作子設定テーブルのバンク番
号bankを更新すると「ループ情報の処理」(ステップF
2)を行う。この「ループ情報の処理」の詳細は後述す
る。更新されない場合にはこのステップF1を飛び越
す。
【0080】またメインルーチンでは、CPU22から
新たなキー情報の転送があったか否かをキー情報レジス
タを見て監視しており(ステップF3)、キー情報の転
送があればその内容に基づいて「キー情報の処理」を行
う(ステップF4)。この「キー情報の処理」は転送さ
れたキー情報に応じて各種レジスタの値を変更する処理
であるが、詳細な内容は後述する。キー情報の転送がな
ければこのステップF4を飛び越す。
新たなキー情報の転送があったか否かをキー情報レジス
タを見て監視しており(ステップF3)、キー情報の転
送があればその内容に基づいて「キー情報の処理」を行
う(ステップF4)。この「キー情報の処理」は転送さ
れたキー情報に応じて各種レジスタの値を変更する処理
であるが、詳細な内容は後述する。キー情報の転送がな
ければこのステップF4を飛び越す。
【0081】以上のキー情報の処理(ステップF4)が
終了した場合またはステップF3で新たなキー情報がな
いと判断された場合、ボイスモジュール番号nを「1」
に設定し(ステップF5)、ボイスモジュール(n) の
「読出し処理」を行う(ステップF6)。この「読出し
処理」は波形メモリの波形データを操作子等による各種
の設定状態に応じた態様で読み出していく処理である
が、その詳細な内容は後述する。その後、ボイスモジュ
ール番号nが最終番号(この実施例ではボイス数の2)
か判定し(ステップF8)、最終番号に達していなかっ
たら、ボイスモジュール番号nを一つインクリメントし
て(ステップF7)、その番号のボイスモジュールの読
出し処理を繰り返す。ボイスモジュール番号が最終番号
になったら、各ボイス1、2の出力out(1)、out(2)を足
し合わせて合成出力out とし(ステップF9)、この合
成出力out を出力する(ステップF10)。
終了した場合またはステップF3で新たなキー情報がな
いと判断された場合、ボイスモジュール番号nを「1」
に設定し(ステップF5)、ボイスモジュール(n) の
「読出し処理」を行う(ステップF6)。この「読出し
処理」は波形メモリの波形データを操作子等による各種
の設定状態に応じた態様で読み出していく処理である
が、その詳細な内容は後述する。その後、ボイスモジュ
ール番号nが最終番号(この実施例ではボイス数の2)
か判定し(ステップF8)、最終番号に達していなかっ
たら、ボイスモジュール番号nを一つインクリメントし
て(ステップF7)、その番号のボイスモジュールの読
出し処理を繰り返す。ボイスモジュール番号が最終番号
になったら、各ボイス1、2の出力out(1)、out(2)を足
し合わせて合成出力out とし(ステップF9)、この合
成出力out を出力する(ステップF10)。
【0082】「ループ情報の処理」ステップF2の「ル
ープ情報の処理」の具体的な内容は、図16に示される
ように、 loopstart =@(bank*$0002) loopend =@(bank*$0002+1) の演算を行う(ステップF201)。ここで、「*」は
乗算を、「@」は括弧内に示されたアドレスからデータ
を読み出すことを表す。したがって、上記の処理は、バ
ンク番号bank*$0002の読出しポインタが示すマー
ク記憶部からループスタートマークloopstart と、バン
ク番号bank*$0002+1の読出しポインタが示すマ
ーク記憶部からループエンドマークloopend を読み出
し、ループ情報レジスタにそれぞれ記憶する処理であ
る。次に、そのループスタートマークloopstart が示す
読出しポインタによってパラメータ記憶部からループス
タートアドレスloopsaを、ループエンドマークloopend
が示す読出しポインタによってパラメータ記憶部からル
ープエンドアドレスloopeaを読み出し、ループ情報レジ
スタにそれぞれ記憶する(ステップF202)。
ープ情報の処理」の具体的な内容は、図16に示される
ように、 loopstart =@(bank*$0002) loopend =@(bank*$0002+1) の演算を行う(ステップF201)。ここで、「*」は
乗算を、「@」は括弧内に示されたアドレスからデータ
を読み出すことを表す。したがって、上記の処理は、バ
ンク番号bank*$0002の読出しポインタが示すマー
ク記憶部からループスタートマークloopstart と、バン
ク番号bank*$0002+1の読出しポインタが示すマ
ーク記憶部からループエンドマークloopend を読み出
し、ループ情報レジスタにそれぞれ記憶する処理であ
る。次に、そのループスタートマークloopstart が示す
読出しポインタによってパラメータ記憶部からループス
タートアドレスloopsaを、ループエンドマークloopend
が示す読出しポインタによってパラメータ記憶部からル
ープエンドアドレスloopeaを読み出し、ループ情報レジ
スタにそれぞれ記憶する(ステップF202)。
【0083】「キー情報の処理」ステップF4の「キー
情報の処理」の具体的な内容は、図17に示されてい
る。この「キー情報の処理」では、キー情報の転送があ
ると、そのキー情報のボイスモジュール情報voice.Noを
調べる(ステップF300)。この実施例では、ボイス
モジュールの数は二つであり、従ってボイスモジュール
情報voice.NoもVoice.No1とvoice.No2の二つである。
ここで、ボイス2への割当はポリフォニック1または2
のときだけ行われる。したがってボイスモジュール情報
がvoice.No1である場合は、モードとしてはモノフォニ
ックとポリフォニックの双方の場合があり、voice.No2
の場合はモードはポリフォニックとなる。
情報の処理」の具体的な内容は、図17に示されてい
る。この「キー情報の処理」では、キー情報の転送があ
ると、そのキー情報のボイスモジュール情報voice.Noを
調べる(ステップF300)。この実施例では、ボイス
モジュールの数は二つであり、従ってボイスモジュール
情報voice.NoもVoice.No1とvoice.No2の二つである。
ここで、ボイス2への割当はポリフォニック1または2
のときだけ行われる。したがってボイスモジュール情報
がvoice.No1である場合は、モードとしてはモノフォニ
ックとポリフォニックの双方の場合があり、voice.No2
の場合はモードはポリフォニックとなる。
【0084】ボイスモジュール情報voice.No1であった
場合、更にそのキー情報がキーオン情報key.onかキーオ
フ情報key.off かを判定し(ステップF301)、キー
オフ情報key.off であれば、それまで発音を行っていた
ボイス1(ボイスモジュールNo1) の消音処理を行う
(ステップF302)。この消音処理の詳細な内容は、
図18に示すように、 SCNT(1) =0 LEVEL(1)=0 とすることである。
場合、更にそのキー情報がキーオン情報key.onかキーオ
フ情報key.off かを判定し(ステップF301)、キー
オフ情報key.off であれば、それまで発音を行っていた
ボイス1(ボイスモジュールNo1) の消音処理を行う
(ステップF302)。この消音処理の詳細な内容は、
図18に示すように、 SCNT(1) =0 LEVEL(1)=0 とすることである。
【0085】ここで、括弧付きの数字はボイスモジュー
ルの番号である。SCNT(n) はボイスnの発音の進行を管
理するカウンタであり、波形データ記憶部から読み出す
波形区間情報を更新(すなわち波形ピッチspitchと開始
アドレスsadrs を更新)するためのカウント値をカウン
トするものである。LEVEL(n)はキー情報レジスタ中のレ
ベルlevel を記憶するレジスタである。従って、上記の
図18の消音処理は、ボイス1について、カウンタSCNT
(1) を0にリセットし、音量レベルレジスタLEVEL(1)を
0にするものである。
ルの番号である。SCNT(n) はボイスnの発音の進行を管
理するカウンタであり、波形データ記憶部から読み出す
波形区間情報を更新(すなわち波形ピッチspitchと開始
アドレスsadrs を更新)するためのカウント値をカウン
トするものである。LEVEL(n)はキー情報レジスタ中のレ
ベルlevel を記憶するレジスタである。従って、上記の
図18の消音処理は、ボイス1について、カウンタSCNT
(1) を0にリセットし、音量レベルレジスタLEVEL(1)を
0にするものである。
【0086】ステップF301においてキー情報がキー
オン情報key.onであった場合、操作子設定テーブルのリ
ンクモードlink.mode を調べる(ステップF303)。
リンクモードlink.mode が「0」の場合には「リトリ
ガ」を行うモード、すなわち新たなキーオン情報key.on
を受信したら波形データを再生中であってもその波形デ
ータの先頭から再生し直すモードであり、よって「ボイ
ス1の発音開始処理」を行う(ステップF308)。こ
の「ボイス1の発音開始処理」は要するに、波形メモリ
12から該当する波形のパラメータおよび波形データを
その先頭から読み出す処理である。
オン情報key.onであった場合、操作子設定テーブルのリ
ンクモードlink.mode を調べる(ステップF303)。
リンクモードlink.mode が「0」の場合には「リトリ
ガ」を行うモード、すなわち新たなキーオン情報key.on
を受信したら波形データを再生中であってもその波形デ
ータの先頭から再生し直すモードであり、よって「ボイ
ス1の発音開始処理」を行う(ステップF308)。こ
の「ボイス1の発音開始処理」は要するに、波形メモリ
12から該当する波形のパラメータおよび波形データを
その先頭から読み出す処理である。
【0087】この「ボイス1の発音開始処理」が実行さ
れる条件は以下のようになる。 モノフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき・ モノフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき. ポリフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき. ポリフォニック2のモードで、ボイス2が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき.(このモードのとき、ボイス1は割当処理で
発音されていないことを確認して割り当てられる)
れる条件は以下のようになる。 モノフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき・ モノフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき. ポリフォニック1のモードで、ボイス1に対するキー
オン情報が入力されたとき. ポリフォニック2のモードで、ボイス2が発音されて
いないときに、ボイス1に対するキーオン情報が入力さ
れたとき.(このモードのとき、ボイス1は割当処理で
発音されていないことを確認して割り当てられる)
【0088】この「ボイス1発音開始処理」の具体的な
内容は、図20に示されるように、 PITCH(1)=kpitch/org.pitch LEVEL(1)=level SCNT(1) =0 ENDADRS(1)=@(bank*$800) STARTADRS(1)=@(bank*$800 +SCNT(1) +1) SPHASE(1) =STARTADRS(1) SADRSR(1) =STARTADRS(1) SPITCH(1) =@(bank*$800 +SCNT(1) +2) SADRS(1)=@ (bank*$800 +SCNT(1) +3) START(1)=STARTADRS(1) WIDTH(1)=0 S.FLG 1(1) =0 S.FLG 2(1) =0 ALT.FLG(1)=0 SCNT(1) =1 を行うことである。
内容は、図20に示されるように、 PITCH(1)=kpitch/org.pitch LEVEL(1)=level SCNT(1) =0 ENDADRS(1)=@(bank*$800) STARTADRS(1)=@(bank*$800 +SCNT(1) +1) SPHASE(1) =STARTADRS(1) SADRSR(1) =STARTADRS(1) SPITCH(1) =@(bank*$800 +SCNT(1) +2) SADRS(1)=@ (bank*$800 +SCNT(1) +3) START(1)=STARTADRS(1) WIDTH(1)=0 S.FLG 1(1) =0 S.FLG 2(1) =0 ALT.FLG(1)=0 SCNT(1) =1 を行うことである。
【0089】ここで、SPHASEは進行位置sphaseを記憶す
る進行位置レジスタ、ENDADRS は波形データの末尾アド
レスendadrs を記憶する末尾アドレスレジスタ、STARTA
DRSは波形データの先頭アドレスstartadrs を記憶する
先頭アドレスレジスタである。SADRS は波形区間の開始
アドレスsadrs を記憶するレジスタであり、順方向に波
形データを読み出すときの次の波形区間の開始アドレス
が記憶される。SADRSRも波形区間の開始アドレスsadrs
を記憶するレジスタであるが、現在読み出している波形
区間の開始アドレスを記憶するもので、リバース開始ア
ドレスレジスタと称し、進行位置sphaseを逆方向に進め
て波形区間を読み出すときの波形区間の移動を認識する
ときに使用する。START は後述の音素片を切り出すため
の基準アドレスとなる切出先頭アドレスstart を格納す
る切出先頭アドレスレジスタである。また前述したよう
に「*」は乗算を、「@」は括弧内に示されたアドレス
からデータを読み出すことを表す。例えば、ENDADRS
(1)=@(bank*$800)は、パラメータ記憶部の
読出しポインタが示すアドレス(bank*$800 )から内
容dataを読み出し、レジスタENDADRS (l)に設定する
ことを意味している。
る進行位置レジスタ、ENDADRS は波形データの末尾アド
レスendadrs を記憶する末尾アドレスレジスタ、STARTA
DRSは波形データの先頭アドレスstartadrs を記憶する
先頭アドレスレジスタである。SADRS は波形区間の開始
アドレスsadrs を記憶するレジスタであり、順方向に波
形データを読み出すときの次の波形区間の開始アドレス
が記憶される。SADRSRも波形区間の開始アドレスsadrs
を記憶するレジスタであるが、現在読み出している波形
区間の開始アドレスを記憶するもので、リバース開始ア
ドレスレジスタと称し、進行位置sphaseを逆方向に進め
て波形区間を読み出すときの波形区間の移動を認識する
ときに使用する。START は後述の音素片を切り出すため
の基準アドレスとなる切出先頭アドレスstart を格納す
る切出先頭アドレスレジスタである。また前述したよう
に「*」は乗算を、「@」は括弧内に示されたアドレス
からデータを読み出すことを表す。例えば、ENDADRS
(1)=@(bank*$800)は、パラメータ記憶部の
読出しポインタが示すアドレス(bank*$800 )から内
容dataを読み出し、レジスタENDADRS (l)に設定する
ことを意味している。
【0090】上記のボイス1発音開始処理は、ボイス1
について、キー入力された音高情報kpitchを先に設定さ
れた基準ピッチ情報org.pitch で割算した結果をPITCH
(1)に書き込み、レベル情報level をLEVEL(1)に転記
し、カウンタSCNT(1) を初期値「0」にリセットし、該
当するバンク番号bank (波形領域番号) の波形データの
末尾アドレスendadrs を波形パラメータ記憶部における
当該バンク番号bankの波形領域の先頭番地$0000か
ら読み出して末尾アドレスレジスタENDADRS(1)にセット
し、先頭の波形区間の開始アドレス sadrs0を波形パラ
メータ記憶部における上記先頭から2番目の番地$00
01(最初の波形区間の開始アドレスが格納されてい
る) から読み出して先頭アドレスレジスタSTARTADRS(1)
にセットし、その先頭アドレスstartadrs を進行位置sp
haseの初期値として進行位置レジスタSPHASE(1) にセッ
トするとともに、その先頭アドレスstartadrs の値を切
出先頭アドレスレジスタSTART(1)にセットし、上記波形
データの先頭の波形区間の波形ピッチspitch0を上記先
頭番地から2番目の番地$0002から読み出して波形
ピッチレジスタSPITCH(1) にセットし、上記波形データ
の先頭から2番目の波形区間の開始アドレス sadrs1を
上記先頭から3番目の番地$0003から読み出して開
始アドレスSADRS(1)にセットし、レジスタWIDTH(1)、フ
ラグS.FLG1(1) 、S.FLG2(1) 、ALT.FLG(1)に「0」をセ
ットするなどの処理を行った後に、カウンタSCNT(1) を
一つ更新して1にするものである。
について、キー入力された音高情報kpitchを先に設定さ
れた基準ピッチ情報org.pitch で割算した結果をPITCH
(1)に書き込み、レベル情報level をLEVEL(1)に転記
し、カウンタSCNT(1) を初期値「0」にリセットし、該
当するバンク番号bank (波形領域番号) の波形データの
末尾アドレスendadrs を波形パラメータ記憶部における
当該バンク番号bankの波形領域の先頭番地$0000か
ら読み出して末尾アドレスレジスタENDADRS(1)にセット
し、先頭の波形区間の開始アドレス sadrs0を波形パラ
メータ記憶部における上記先頭から2番目の番地$00
01(最初の波形区間の開始アドレスが格納されてい
る) から読み出して先頭アドレスレジスタSTARTADRS(1)
にセットし、その先頭アドレスstartadrs を進行位置sp
haseの初期値として進行位置レジスタSPHASE(1) にセッ
トするとともに、その先頭アドレスstartadrs の値を切
出先頭アドレスレジスタSTART(1)にセットし、上記波形
データの先頭の波形区間の波形ピッチspitch0を上記先
頭番地から2番目の番地$0002から読み出して波形
ピッチレジスタSPITCH(1) にセットし、上記波形データ
の先頭から2番目の波形区間の開始アドレス sadrs1を
上記先頭から3番目の番地$0003から読み出して開
始アドレスSADRS(1)にセットし、レジスタWIDTH(1)、フ
ラグS.FLG1(1) 、S.FLG2(1) 、ALT.FLG(1)に「0」をセ
ットするなどの処理を行った後に、カウンタSCNT(1) を
一つ更新して1にするものである。
【0091】ステップF303においてリンクモードli
nk.mode が「1」の場合には「リトリガ」を行わないモ
ード、すなわち新たなキーオン情報key.onを受信した
ら、波形データを再生中であれば、その時点以降の波形
データを当該キーオン情報key.onで指定されたピッチに
変更して再生するモードである。この場合、まず開始カ
ウンタSCNT(1) が「0」か否かを判定する(ステップF
304)。ここで開始カウンタSCNT(n) はボイスnの発
音の進行を管理するカウンタであり、この値が「0」の
場合にはボイスnがまだ未発音であることを示し、何ら
かの値となっていれば既に発音開始されたことを示す。
nk.mode が「1」の場合には「リトリガ」を行わないモ
ード、すなわち新たなキーオン情報key.onを受信した
ら、波形データを再生中であれば、その時点以降の波形
データを当該キーオン情報key.onで指定されたピッチに
変更して再生するモードである。この場合、まず開始カ
ウンタSCNT(1) が「0」か否かを判定する(ステップF
304)。ここで開始カウンタSCNT(n) はボイスnの発
音の進行を管理するカウンタであり、この値が「0」の
場合にはボイスnがまだ未発音であることを示し、何ら
かの値となっていれば既に発音開始されたことを示す。
【0092】開始カウンタSCNT(1) が「0」以外の値す
なわちボイス1が既に発音中であれば、ステップF30
5に移行して「ボイス1からボイス1へのリンク発音処
理」を行う(ステップF304)。この経路を辿るの
は、モードはモノフォニックであり、ボイス1が既に発
音中であり、かつ「リトリガ」をしない場合であるか
ら、ボイス1で発音中の波形を、キーオン情報の入力時
点から以降、同じボイス1において当該キーオン情報中
の音高情報pitch に変更して再生する。上記リンク発音
処理はこのための処理であり、キー情報レジスタの音高
情報レジスタPITCH(1)とレベル情報レジスタLEVEL(1)
を、受信したキーオン情報中の音高情報kpitchとレベル
情報level で書き換える処理、すなわち、図22に示さ
れるように、 PITCH(1)=kpitch/org.pitch LEVEL(1)=level とする処理である。
なわちボイス1が既に発音中であれば、ステップF30
5に移行して「ボイス1からボイス1へのリンク発音処
理」を行う(ステップF304)。この経路を辿るの
は、モードはモノフォニックであり、ボイス1が既に発
音中であり、かつ「リトリガ」をしない場合であるか
ら、ボイス1で発音中の波形を、キーオン情報の入力時
点から以降、同じボイス1において当該キーオン情報中
の音高情報pitch に変更して再生する。上記リンク発音
処理はこのための処理であり、キー情報レジスタの音高
情報レジスタPITCH(1)とレベル情報レジスタLEVEL(1)
を、受信したキーオン情報中の音高情報kpitchとレベル
情報level で書き換える処理、すなわち、図22に示さ
れるように、 PITCH(1)=kpitch/org.pitch LEVEL(1)=level とする処理である。
【0093】この「ボイス1からボイス1へのリンク発
音処理」が実行される条件は、モノフォニック2のモー
ドで、ボイス1が発音中にボイス1に対するキーオン情
報が入力されたときであり、このモードのときにのみ、
割当処理でボイス1が発音中にボイス1に対するキーオ
ン情報が割り当てられる。
音処理」が実行される条件は、モノフォニック2のモー
ドで、ボイス1が発音中にボイス1に対するキーオン情
報が入力されたときであり、このモードのときにのみ、
割当処理でボイス1が発音中にボイス1に対するキーオ
ン情報が割り当てられる。
【0094】ステップF304においてカウンタSCNT
(1) が「0」すなわちボイス1がまだ未発音であれば、
さらにボイス2のカウンタSCNT(2) が「0」か否かを判
定する(ステップF306)。カウンタSCNT(2) が
「0」でない場合はボイス2が発音中であることを意味
し、よってモードはポリフォニックであり、入力したキ
ーオン情報はレガート奏法における2番目の押鍵のキー
オン情報である。この場合、ボイス2での波形の発音再
生を継続するとともに、そのキーオン情報の入力時点以
降の波形に対して、その新たに入力したキーオン情報に
応じた音高での再生をボイス1でも行う。このための処
理がステップF307の「ボイス2からボイス1へのリ
ンク発音処理」であり、ボイス2に保持していた再生中
の波形の各種データをボイス1に渡すとともに、そのデ
ータを新たに入力したキーオン情報に基づいて変更す
る。
(1) が「0」すなわちボイス1がまだ未発音であれば、
さらにボイス2のカウンタSCNT(2) が「0」か否かを判
定する(ステップF306)。カウンタSCNT(2) が
「0」でない場合はボイス2が発音中であることを意味
し、よってモードはポリフォニックであり、入力したキ
ーオン情報はレガート奏法における2番目の押鍵のキー
オン情報である。この場合、ボイス2での波形の発音再
生を継続するとともに、そのキーオン情報の入力時点以
降の波形に対して、その新たに入力したキーオン情報に
応じた音高での再生をボイス1でも行う。このための処
理がステップF307の「ボイス2からボイス1へのリ
ンク発音処理」であり、ボイス2に保持していた再生中
の波形の各種データをボイス1に渡すとともに、そのデ
ータを新たに入力したキーオン情報に基づいて変更す
る。
【0095】この「ボイス2からボイス1へのリンク発
音処理」が実行される条件は、ポリフォニック2のモー
ドで、ボイス2が発音中にボイス1に対するキーオン情
報が入力されたときである。このモードのとき、ボイス
1は割当処理で発音されていないことを確認して割り当
てられる。
音処理」が実行される条件は、ポリフォニック2のモー
ドで、ボイス2が発音中にボイス1に対するキーオン情
報が入力されたときである。このモードのとき、ボイス
1は割当処理で発音されていないことを確認して割り当
てられる。
【0096】「ボイス2からボイス1へのリンク発音処
理」の具体的内容は、図24に示されるように、 PITCH(1)=kpitch/org.pitch LEVEC(1)=level SCNT(1) =SCNT(2) ENDADRS(1)=ENDADRS(2) STARTADRS(1)=STARTADRS(2) SPHASE(1) =SPHASE(2) SPITCH(1)=SPITCH(2) SADRSR(1) =SADRSR(2) SADRS(1)=SADRS(2) START(1)=START(2) WIDTH(1)=0 S.FLG1(1) =0 S.FLG2(1) =0 ALT.FLG(1)=ALT.FLG(2) とする処理である。
理」の具体的内容は、図24に示されるように、 PITCH(1)=kpitch/org.pitch LEVEC(1)=level SCNT(1) =SCNT(2) ENDADRS(1)=ENDADRS(2) STARTADRS(1)=STARTADRS(2) SPHASE(1) =SPHASE(2) SPITCH(1)=SPITCH(2) SADRSR(1) =SADRSR(2) SADRS(1)=SADRS(2) START(1)=START(2) WIDTH(1)=0 S.FLG1(1) =0 S.FLG2(1) =0 ALT.FLG(1)=ALT.FLG(2) とする処理である。
【0097】すなわち、このリンク発音処理は、ボイス
2での発音をその音高とレベルを変更してボイス1で受
け継ぐために、キー入力された音高情報pitch を先に設
定された基準ピッチ情報org.pitch で割算した結果をPI
TCH(1)に書き込み、レベル情報level をキー情報LEVEL
(1)に転記するとともに、ボイス2における、レジスタS
CNT(2) 、ENDADRS(2)、STARTADRS(2)、SPHASE(2) 、SPI
TCH(2) 、SADRSR(2) 、SADRS(2)、START(2)の各値をボ
イス1におけるレジスタSCNT(1) 、ENDADRS(1)、STARTA
DRS(1)、SPHASE(1) 、SPITCH(1) 、SADRSR(1) 、SADRS
(1)、START(1)にそれぞれ書き写し、レジスタWIDTH
(1)、フラグS.FLG1(1) 、S.FLG2(1) に「0」をセット
し、ALT.FLG(1)にALT.FLG(2)を書き写すものである。
2での発音をその音高とレベルを変更してボイス1で受
け継ぐために、キー入力された音高情報pitch を先に設
定された基準ピッチ情報org.pitch で割算した結果をPI
TCH(1)に書き込み、レベル情報level をキー情報LEVEL
(1)に転記するとともに、ボイス2における、レジスタS
CNT(2) 、ENDADRS(2)、STARTADRS(2)、SPHASE(2) 、SPI
TCH(2) 、SADRSR(2) 、SADRS(2)、START(2)の各値をボ
イス1におけるレジスタSCNT(1) 、ENDADRS(1)、STARTA
DRS(1)、SPHASE(1) 、SPITCH(1) 、SADRSR(1) 、SADRS
(1)、START(1)にそれぞれ書き写し、レジスタWIDTH
(1)、フラグS.FLG1(1) 、S.FLG2(1) に「0」をセット
し、ALT.FLG(1)にALT.FLG(2)を書き写すものである。
【0098】ステップF306において、カウンタSCNT
(2) が「0」の場合は、ボイス2がまだ未発音であるこ
とを意味し、よってモードはモノフォニックまたはポリ
フォニックである。この経路を辿る場合はボイス1もボ
イス2も未発音であるので、新たに入力したキーオン情
報はレガート奏法における2番目の押鍵ではなく、よっ
てこのキーオン情報はボイス1に割り当てられて、波形
データは先頭から再生される。この場合、前述のステッ
プF308の「ボイス1の発音開始処理」を行う。
(2) が「0」の場合は、ボイス2がまだ未発音であるこ
とを意味し、よってモードはモノフォニックまたはポリ
フォニックである。この経路を辿る場合はボイス1もボ
イス2も未発音であるので、新たに入力したキーオン情
報はレガート奏法における2番目の押鍵ではなく、よっ
てこのキーオン情報はボイス1に割り当てられて、波形
データは先頭から再生される。この場合、前述のステッ
プF308の「ボイス1の発音開始処理」を行う。
【0099】一方、ステップF300の判定において、
ボイスモジュール情報voice.Noがvoice.No2であった場
合は、モードはポリフォニックとなる。この場合、更に
そのキー情報がキーオン情報key.onかキーオフ情報key.
off かを判定し(ステップF309)、キーオフ情報ke
y.off であれば、それまで発音を行っていたボイス2(N
o.2のボイスモジュール) の消音処理を行う(ステップ
F314)。この消音処理の詳細な内容は、図19に示
すように、 SCNT(2) =0 LEVEL(2)=0 とする処理である。
ボイスモジュール情報voice.Noがvoice.No2であった場
合は、モードはポリフォニックとなる。この場合、更に
そのキー情報がキーオン情報key.onかキーオフ情報key.
off かを判定し(ステップF309)、キーオフ情報ke
y.off であれば、それまで発音を行っていたボイス2(N
o.2のボイスモジュール) の消音処理を行う(ステップ
F314)。この消音処理の詳細な内容は、図19に示
すように、 SCNT(2) =0 LEVEL(2)=0 とする処理である。
【0100】ステップF300において、キー情報がキ
ーオン情報key.onであった場合、操作子設定テーブルの
リンクモードlind.mode を調べる。リンクモードlink.m
odeが「0」の場合には「リトリガ」を行うモード、す
なわち新たなキーオン情報key.onを受信したら波形デー
タを再生中であってもその波形データの先頭から再生し
直すモードであり、よって「ボイス2の発音開始処理」
を行う(ステップF311)。この「ボイス2の発音開
始処理」は要するに、波形メモリ12から該当する波形
のパラメータおよび波形データをその先頭から読み出し
てボイス2で発音する処理である。
ーオン情報key.onであった場合、操作子設定テーブルの
リンクモードlind.mode を調べる。リンクモードlink.m
odeが「0」の場合には「リトリガ」を行うモード、す
なわち新たなキーオン情報key.onを受信したら波形デー
タを再生中であってもその波形データの先頭から再生し
直すモードであり、よって「ボイス2の発音開始処理」
を行う(ステップF311)。この「ボイス2の発音開
始処理」は要するに、波形メモリ12から該当する波形
のパラメータおよび波形データをその先頭から読み出し
てボイス2で発音する処理である。
【0101】この「ボイス2の発音開始処理」が実行さ
れる条件は、 ポリフォニック1のモードで、ボイス2に対するキー
オン情報が入力されたとき、 ポリフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス2に対するキーオン情報が入力さ
れたとき、 である。なお、ボイス2への割当はポリフォニック1、
ポリフォニック2のときだけ行われる。
れる条件は、 ポリフォニック1のモードで、ボイス2に対するキー
オン情報が入力されたとき、 ポリフォニック2のモードで、ボイス1が発音されて
いないときに、ボイス2に対するキーオン情報が入力さ
れたとき、 である。なお、ボイス2への割当はポリフォニック1、
ポリフォニック2のときだけ行われる。
【0102】この「ボイス2発音開始処理」の具体的な
内容は、図21に示されるように、 PITCH(2)=kpitch/org.pitch LEVEL(2)=level SCNT(2) =0 ENDADRS(2)=@ (bank*$800) STARTADRS(2)=@ (bank*$800 +SCNT(2) +1) SPTASE(2) =STARTADRS(2) SADRSR(2) =STARTADRS(2) SPITCH(2) =@ (bank*$800 +SCNT(2) +2) SADRS(2)=@ (bank*$800 +SCNT(2) +3) START(2)=STARTADRS(2) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 ALT.FLG(2)=0 SCNT(2) =1 を行うことである。
内容は、図21に示されるように、 PITCH(2)=kpitch/org.pitch LEVEL(2)=level SCNT(2) =0 ENDADRS(2)=@ (bank*$800) STARTADRS(2)=@ (bank*$800 +SCNT(2) +1) SPTASE(2) =STARTADRS(2) SADRSR(2) =STARTADRS(2) SPITCH(2) =@ (bank*$800 +SCNT(2) +2) SADRS(2)=@ (bank*$800 +SCNT(2) +3) START(2)=STARTADRS(2) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 ALT.FLG(2)=0 SCNT(2) =1 を行うことである。
【0103】ステップF310の判断で、リンクモード
link.mode が「1」の場合には「リトリガ」を行わない
モード、すなわち新たなキーオン情報key.onを受信した
ら、波形データを再生中であれば、その時点以降の波形
データを当該キーオン情報key.onで指定されたピッチに
変更して再生するモードである。この場合、まずカウン
タSCNT(1) が「0」か否かを判定する(ステップF31
2)。
link.mode が「1」の場合には「リトリガ」を行わない
モード、すなわち新たなキーオン情報key.onを受信した
ら、波形データを再生中であれば、その時点以降の波形
データを当該キーオン情報key.onで指定されたピッチに
変更して再生するモードである。この場合、まずカウン
タSCNT(1) が「0」か否かを判定する(ステップF31
2)。
【0104】カウンタSCNT(1) が「0」の場合、すなわ
ちボイス1が未だ未発音であれば、前述のステップF3
11の「ボイス2の発音開始処理」を行う。
ちボイス1が未だ未発音であれば、前述のステップF3
11の「ボイス2の発音開始処理」を行う。
【0105】カウンタSCNT(1) が「0」以外の値の場
合、すなわちボイス1が既に発音中であれば、ステップ
F313に移行し「ボイス1からボイス2へのリンク発
音処理」を行う。この経路を辿るのは、モードはポリフ
ォニックであり、ボイス1が既に発音中であり、かつ
「リトリガ」をしない場合であるから、ボイス1で発音
中の波形を、キーオン情報の入力時点から以降、ボイス
1で継続して発音するとともに、それと並行して、ボイ
ス2においても当該キーオン情報中の音高情報pitchに
対応して再生する。上記「ボイス1からボイス2へのリ
ンク発音処理」はこのための処理である。
合、すなわちボイス1が既に発音中であれば、ステップ
F313に移行し「ボイス1からボイス2へのリンク発
音処理」を行う。この経路を辿るのは、モードはポリフ
ォニックであり、ボイス1が既に発音中であり、かつ
「リトリガ」をしない場合であるから、ボイス1で発音
中の波形を、キーオン情報の入力時点から以降、ボイス
1で継続して発音するとともに、それと並行して、ボイ
ス2においても当該キーオン情報中の音高情報pitchに
対応して再生する。上記「ボイス1からボイス2へのリ
ンク発音処理」はこのための処理である。
【0106】この「ボイス1からボイス2へのリンク発
音処理」が実行される条件は、ポリフォニック2のモー
ドで、ボイス1が発音中にボイス2に対するキーオン情
報が入力されたときである。
音処理」が実行される条件は、ポリフォニック2のモー
ドで、ボイス1が発音中にボイス2に対するキーオン情
報が入力されたときである。
【0107】「ボイス1からボイス2へのリンク発音処
理」の具体的内容は、図23に示されるように、 PITCH(2)=kpitch/org.pitch LEVEC(2)=level SCNT(2) =SCNT(1) ENDADRS(2)=ENDADRS(1) STARTADRS(2)=STARTADRS(1) SPHASE(2) =SPHASE(1) SPITCH(2)=SPITCH(1) SADRSR(2) =SADRSR(1) SADRS(2)=SADRS(1) START(2)=START(1) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 ALT.FLG(2)=ALT.FLG(1) とする処理である。以上、キー情報の処理が終了したら
メインルーチンに戻る。
理」の具体的内容は、図23に示されるように、 PITCH(2)=kpitch/org.pitch LEVEC(2)=level SCNT(2) =SCNT(1) ENDADRS(2)=ENDADRS(1) STARTADRS(2)=STARTADRS(1) SPHASE(2) =SPHASE(1) SPITCH(2)=SPITCH(1) SADRSR(2) =SADRSR(1) SADRS(2)=SADRS(1) START(2)=START(1) WIDTH(2)=0 S.FLG1(2) =0 S.FLG2(2) =0 ALT.FLG(2)=ALT.FLG(1) とする処理である。以上、キー情報の処理が終了したら
メインルーチンに戻る。
【0108】「読出し処理」前述のステップF6の「読
出し処理」は、サンプル波形(音声)から音素片を切り
出し、その音素片のホルマントの特徴をほぼ保ったま
ま、所望の再生音高に対応した周期でその音素片を再生
することによって、サンプル波形のホルマント特性を保
ったままピッチを変換するものである。
出し処理」は、サンプル波形(音声)から音素片を切り
出し、その音素片のホルマントの特徴をほぼ保ったま
ま、所望の再生音高に対応した周期でその音素片を再生
することによって、サンプル波形のホルマント特性を保
ったままピッチを変換するものである。
【0109】この読出し処理では、同じ波形データを読
み出す場合、再生される波形のピッチは鍵盤で押下した
キーの音高に応じて変更されるが、再生時間は再生ピッ
チの大きさ(すなわちどのキーが押下されたか)によら
ず一定である。すなわち、ポリフォニックの場合、レガ
ート奏法の2番目の押鍵により、1番目の押鍵の音高に
応じた波形再生と並行して2番目の押鍵の音高に応じた
波形再生が行われたとき、1番目の波形再生の終了と2
番目の波形再生の終了は同時となる。一方、従来のよう
に単に読出し速度を変えることでピッチシフトを行って
いる場合には、上記のようなときには1番目と2番目の
波形再生の終了はタイミングがずれてしまい違和感が生
じるが、本実施例によれば、かかる違和感を無くすこと
ができる。
み出す場合、再生される波形のピッチは鍵盤で押下した
キーの音高に応じて変更されるが、再生時間は再生ピッ
チの大きさ(すなわちどのキーが押下されたか)によら
ず一定である。すなわち、ポリフォニックの場合、レガ
ート奏法の2番目の押鍵により、1番目の押鍵の音高に
応じた波形再生と並行して2番目の押鍵の音高に応じた
波形再生が行われたとき、1番目の波形再生の終了と2
番目の波形再生の終了は同時となる。一方、従来のよう
に単に読出し速度を変えることでピッチシフトを行って
いる場合には、上記のようなときには1番目と2番目の
波形再生の終了はタイミングがずれてしまい違和感が生
じるが、本実施例によれば、かかる違和感を無くすこと
ができる。
【0110】この読出し処理動作の概要を説明すると、
波形メモリ12に記憶されている波形データからパラメ
ータデータに基づいて所望の区間(この実施例では基本
的には2ピッチ分の波形区間で、場合によってはそれよ
りも短い波形区間)を音素片として時間経過に従って順
次に切り出して、その切り出した音素片を、元の波形と
は異なるピッチおよびホルマントで再生するものであ
る。その際、この音素片の再生を二つの処理経路で並行
して行い、それぞれの処理経路では再生しようとするピ
ッチ周期の2倍の周期でかつ互いが半周期(再生しよう
とするピッチ周期)ずれるようにして音素片を再生し、
これらを合成して、再生しようとするピッチ周期にする
ようにしている。
波形メモリ12に記憶されている波形データからパラメ
ータデータに基づいて所望の区間(この実施例では基本
的には2ピッチ分の波形区間で、場合によってはそれよ
りも短い波形区間)を音素片として時間経過に従って順
次に切り出して、その切り出した音素片を、元の波形と
は異なるピッチおよびホルマントで再生するものであ
る。その際、この音素片の再生を二つの処理経路で並行
して行い、それぞれの処理経路では再生しようとするピ
ッチ周期の2倍の周期でかつ互いが半周期(再生しよう
とするピッチ周期)ずれるようにして音素片を再生し、
これらを合成して、再生しようとするピッチ周期にする
ようにしている。
【0111】図25、図26はこのピッチ変換処理を説
明する図である。ホルマント移動量f.vrは「1」であれ
ば変更なし、「1」以外であればホルマントを若干変更
する。ここでは、ホルマント移動量f.vrが「1」、すな
わちホルマント変更無しでかつ再生ピッチを波形メモリ
12の元の波形データより高くする場合を図25で説明
し、ホルマント移動量f.vrが「1」よりも大きい、すな
わちホルマント変更有りでかつ再生ピッチを波形メモリ
12の元の波形データと同じにする場合を図26で説明
する。
明する図である。ホルマント移動量f.vrは「1」であれ
ば変更なし、「1」以外であればホルマントを若干変更
する。ここでは、ホルマント移動量f.vrが「1」、すな
わちホルマント変更無しでかつ再生ピッチを波形メモリ
12の元の波形データより高くする場合を図25で説明
し、ホルマント移動量f.vrが「1」よりも大きい、すな
わちホルマント変更有りでかつ再生ピッチを波形メモリ
12の元の波形データと同じにする場合を図26で説明
する。
【0112】まず、図25を参照して、鍵盤のキー押下
で音高を指定することにより、元の波形データより高域
側にピッチをシフトし、かつホルマント特性の変更は行
わない(ホルマント移動量f.vr=1)場合について説明
する。
で音高を指定することにより、元の波形データより高域
側にピッチをシフトし、かつホルマント特性の変更は行
わない(ホルマント移動量f.vr=1)場合について説明
する。
【0113】図25の(a)はwave0領域の波形データ
を示しており、波形パラメータで示されるピッチspitch
0、spitch1・・・を有する。そして、基本的には、こ
のピッチspitchに対応して音素片が順次に切り出され
る。なお、この図25(a)には開始アドレス sadrs0
から始まる波形ピッチspitch0のwave0領域の複数周期
の波形のうちのP0〜P4の5周期分の波形を示してい
る。
を示しており、波形パラメータで示されるピッチspitch
0、spitch1・・・を有する。そして、基本的には、こ
のピッチspitchに対応して音素片が順次に切り出され
る。なお、この図25(a)には開始アドレス sadrs0
から始まる波形ピッチspitch0のwave0領域の複数周期
の波形のうちのP0〜P4の5周期分の波形を示してい
る。
【0114】また、再生ピッチwidth は後述の「読出し
処理サブルーチン」のステップF70において再生ピッ
チレジスタWIDTH に設定されており、基本的には(波形
ピッチレジスタSPITCH *キー比レジスタPITCH )の演
算によって決定されている。なお、lfo.mod は再生ピッ
チを変調する信号に対応するものであるので、ここでは
無視する。この演算処理において使われるキー比レジス
タPITCH の情報(キー比pitch )は、前述の各発音処理
において演算された「操作キー情報pitch /基準キー情
報org.pitch 」の割算の結果であり、鍵盤でキー操作さ
れたキー情報kpitchと先に設定された基準キー情報org.
pitch との比である。従って、再生ピッチwidth は、鍵
盤のキー操作による再生音高の指定にあたって、オリジ
ナルキー設定時に予め設定された基準キーが操作される
と、波形ピッチspitchと同じピッチで再生され、その他
のキーが操作されると、基準キーとその操作されたキー
との比に対応して波形ピッチspitchをシフトして再生す
るようにされている。つまり、基準キーを基準に操作キ
ーで波形ピッチspitchのシフト量を設定している。
処理サブルーチン」のステップF70において再生ピッ
チレジスタWIDTH に設定されており、基本的には(波形
ピッチレジスタSPITCH *キー比レジスタPITCH )の演
算によって決定されている。なお、lfo.mod は再生ピッ
チを変調する信号に対応するものであるので、ここでは
無視する。この演算処理において使われるキー比レジス
タPITCH の情報(キー比pitch )は、前述の各発音処理
において演算された「操作キー情報pitch /基準キー情
報org.pitch 」の割算の結果であり、鍵盤でキー操作さ
れたキー情報kpitchと先に設定された基準キー情報org.
pitch との比である。従って、再生ピッチwidth は、鍵
盤のキー操作による再生音高の指定にあたって、オリジ
ナルキー設定時に予め設定された基準キーが操作される
と、波形ピッチspitchと同じピッチで再生され、その他
のキーが操作されると、基準キーとその操作されたキー
との比に対応して波形ピッチspitchをシフトして再生す
るようにされている。つまり、基準キーを基準に操作キ
ーで波形ピッチspitchのシフト量を設定している。
【0115】この再生ピッチwidth を周期長とする再生
位相phase を図25 (b) のように作成し、この再生位
相pahse から2つの処理経路の位相、すなわち図25
(d)に示す第1の処理経路の第1位相ph1、図25
(e) に示す第2の処理経路の第2位相ph2を作成す
る。なお、これら第1、第2の位相ph1、ph2はサンプ
リング周期毎にインクリメントされて増加する
位相phase を図25 (b) のように作成し、この再生位
相pahse から2つの処理経路の位相、すなわち図25
(d)に示す第1の処理経路の第1位相ph1、図25
(e) に示す第2の処理経路の第2位相ph2を作成す
る。なお、これら第1、第2の位相ph1、ph2はサンプ
リング周期毎にインクリメントされて増加する
【0116】そして、第1の処理経路は、後述の「波形
読出し処理サブルーチン」のステップF7706で行う
読出しアドレス演算の「第1位相ph1×ホルマント移動
量f.vr」の部分で決まる読出し速度で、また、第2の処
理経路は、後述の「波形読出し処理サブルーチン」のス
テップF7715で行う読出しアドレス演算の「第2位
相ph2×ホルマント移動f.vr」の読出し速度で、それぞ
れの音素片を順次に読み出す。この読出し速度がホルマ
ント特性の変更に関係する。ただし、今の場合はホルマ
ント移動量f.vr=1であるから、第1、第2の位相ph
1、ph2の変化と等しく、結果的にホルマント特性は変
更されない。
読出し処理サブルーチン」のステップF7706で行う
読出しアドレス演算の「第1位相ph1×ホルマント移動
量f.vr」の部分で決まる読出し速度で、また、第2の処
理経路は、後述の「波形読出し処理サブルーチン」のス
テップF7715で行う読出しアドレス演算の「第2位
相ph2×ホルマント移動f.vr」の読出し速度で、それぞ
れの音素片を順次に読み出す。この読出し速度がホルマ
ント特性の変更に関係する。ただし、今の場合はホルマ
ント移動量f.vr=1であるから、第1、第2の位相ph
1、ph2の変化と等しく、結果的にホルマント特性は変
更されない。
【0117】さらに、第1、第2の位相ph1、ph2にそ
れぞれ同期して、ホルマント処理のために波形データを
切り取る切出し窓としてのエンベロープ env1、 env2
を第1、第2の処理経路について作成する。第1の処理
経路は図25 (f) に示すエンベロープ env1の波形を
持ち、第2の処理経路は図25 (g) に示すエンベロー
プ env2の波形を持つ。エンベロープ env1、 env2は
「0〜1」の範囲の値であり、エンベロープ窓長lenght
を半周期とし、前半の周期では「0」から逐次に増加し
て「1」になり、後半の周期では「1」から逐次に減少
して「0」になる三角形をしている。エンベロープ env
1、 env2の半周期であるエンベロープ窓長lengthは、
後述の「読出し処理のサブルーチン」のステップF70
において、「エンベロープ長length=元波形のピッチsp
itch/ホルマント移動量f.vr」で求める。但し、エンペ
ロープ窓長lengthは後述するように再生ピッチwidth を
超えないように最大でも再生ピッチwidth の値に制限さ
れる。図25はかかる制限がされた場合の例である。
れぞれ同期して、ホルマント処理のために波形データを
切り取る切出し窓としてのエンベロープ env1、 env2
を第1、第2の処理経路について作成する。第1の処理
経路は図25 (f) に示すエンベロープ env1の波形を
持ち、第2の処理経路は図25 (g) に示すエンベロー
プ env2の波形を持つ。エンベロープ env1、 env2は
「0〜1」の範囲の値であり、エンベロープ窓長lenght
を半周期とし、前半の周期では「0」から逐次に増加し
て「1」になり、後半の周期では「1」から逐次に減少
して「0」になる三角形をしている。エンベロープ env
1、 env2の半周期であるエンベロープ窓長lengthは、
後述の「読出し処理のサブルーチン」のステップF70
において、「エンベロープ長length=元波形のピッチsp
itch/ホルマント移動量f.vr」で求める。但し、エンペ
ロープ窓長lengthは後述するように再生ピッチwidth を
超えないように最大でも再生ピッチwidth の値に制限さ
れる。図25はかかる制限がされた場合の例である。
【0118】第1の処理経路では、後述の「読出し処理
サブルーチン」のステップF75において設定されてい
る第1切出先頭アドレス START1から波形データの約2
ピッチ分の音素片にエンベロープ env1を乗算し、図2
5 (h) に示す波形を得る。同様に、第2の処理経路で
は、後述の「読出し処理サブルーチン」のステップF7
6において設定されている第2切出先頭アドレス START
2から波形データの2ピッチ分の音素片にエンベロープ
env2を乗算し、図25(i) に示す波形を得る。な
お、図25の場合は、前述のように、エンベロープ窓長
lengthが再生ピッチwidth の値に制限されているため、
音素片は波形データの2ピッチ分より短くなっている。
このような処理の仕方によれば、これらの波形は元の波
形データの音素片のホルマント特性をそのまま保持した
ものとなる。この図25 (h) 、 (i) の波形は再生ピ
ッチwidth の周期長の2倍の長さであるが、両者の波形
を足し合わせると再生ピッチwidth の周期長となる。従
って、鍵盤からの操作キー情報kpitchによって元のサン
プリングデータを高域側にピッチシフトしつつ、そのホ
ルマント特性はそのまま維持できる。
サブルーチン」のステップF75において設定されてい
る第1切出先頭アドレス START1から波形データの約2
ピッチ分の音素片にエンベロープ env1を乗算し、図2
5 (h) に示す波形を得る。同様に、第2の処理経路で
は、後述の「読出し処理サブルーチン」のステップF7
6において設定されている第2切出先頭アドレス START
2から波形データの2ピッチ分の音素片にエンベロープ
env2を乗算し、図25(i) に示す波形を得る。な
お、図25の場合は、前述のように、エンベロープ窓長
lengthが再生ピッチwidth の値に制限されているため、
音素片は波形データの2ピッチ分より短くなっている。
このような処理の仕方によれば、これらの波形は元の波
形データの音素片のホルマント特性をそのまま保持した
ものとなる。この図25 (h) 、 (i) の波形は再生ピ
ッチwidth の周期長の2倍の長さであるが、両者の波形
を足し合わせると再生ピッチwidth の周期長となる。従
って、鍵盤からの操作キー情報kpitchによって元のサン
プリングデータを高域側にピッチシフトしつつ、そのホ
ルマント特性はそのまま維持できる。
【0119】図26はホルマント移動量f.vrを1より大
きくして再生波形のホルマントを元波形のホルマントよ
り高域側にシフトする場合を示すものである。ここでは
理解しやすくするために、操作キー情報kpitchが元波形
のピッチspitchとほぼ等しいものとして示している。
きくして再生波形のホルマントを元波形のホルマントよ
り高域側にシフトする場合を示すものである。ここでは
理解しやすくするために、操作キー情報kpitchが元波形
のピッチspitchとほぼ等しいものとして示している。
【0120】音素片の読出し速度は、第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の変化より速
く、結果的にホルマント特性は高域側にシフトされ、変
更が付与されることになる。
【0121】そして、読出し速度を速くすることによっ
て音素片は短くなる。従って、エンベロープenv1、env2
のエンプロープ窓長lengthも、「エンプロープ窓長leng
th=元波形のピッチspitch/ホルマント移動量f.vr」と
して、音素片が短くなったことに合わせて短くしてい
る。
て音素片は短くなる。従って、エンベロープenv1、env2
のエンプロープ窓長lengthも、「エンプロープ窓長leng
th=元波形のピッチspitch/ホルマント移動量f.vr」と
して、音素片が短くなったことに合わせて短くしてい
る。
【0122】「読出し処理のサブルーチン」上記の効果
付加を含む読出し処理の動作を図27、図28のフロー
チャートに基づいて説明する。なお、図27、図28中
の括弧書きの添字(n) はボイスモジュール番号nのパラ
メータ等であることを意味するものであるが、以下の説
明では特に必要がない場合は記述を省略する。
付加を含む読出し処理の動作を図27、図28のフロー
チャートに基づいて説明する。なお、図27、図28中
の括弧書きの添字(n) はボイスモジュール番号nのパラ
メータ等であることを意味するものであるが、以下の説
明では特に必要がない場合は記述を省略する。
【0123】DSP8は、処理のため着目している1ピ
ッチ分の波形ピッチspitchを記憶する波形ピッチレジス
タSPITCHを備えている。更に、後述する再生ピッチ周期
長width に達したかをカウントするための再生位相カウ
ンタPHASE 、第1の波形の位相ph1をカウントするため
の第1位相カウンタPH1、第2の波形の位相ph2をカウ
ントするための第2位相カウンタPH2も設けられてい
る。
ッチ分の波形ピッチspitchを記憶する波形ピッチレジス
タSPITCHを備えている。更に、後述する再生ピッチ周期
長width に達したかをカウントするための再生位相カウ
ンタPHASE 、第1の波形の位相ph1をカウントするため
の第1位相カウンタPH1、第2の波形の位相ph2をカウ
ントするための第2位相カウンタPH2も設けられてい
る。
【0124】また、再生ピッチ(=再生ピッチ周期長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が設けられている。
【0125】更に、第1の波形のエンベロープの形状を
決定するためのカウンタを構成するレジスタWINDOW1、
第2の波形のエンベロープの形状を決定するためのカウ
ンタを構成するWINDOW2、エンベロープ窓長lengthの値
に基づいて定めたレジスタWINDOW1、WINDOW2の値の歩
進率w.rateを記憶する歩進率レジスタW.RATE、第1の波
形の切出先頭アドレス start1を記憶する第1切出先頭
アドレスレジスタ START1、第2の波形の切出先頭アド
レス start2を記憶する第2切出先頭アドレスレジスタ
START2、第1および第2の波形の読出しの先頭アドレ
スを設定する処理を決定するために使用する相識別フラ
グF等も設けられている。
決定するためのカウンタを構成するレジスタWINDOW1、
第2の波形のエンベロープの形状を決定するためのカウ
ンタを構成するWINDOW2、エンベロープ窓長lengthの値
に基づいて定めたレジスタWINDOW1、WINDOW2の値の歩
進率w.rateを記憶する歩進率レジスタW.RATE、第1の波
形の切出先頭アドレス start1を記憶する第1切出先頭
アドレスレジスタ START1、第2の波形の切出先頭アド
レス start2を記憶する第2切出先頭アドレスレジスタ
START2、第1および第2の波形の読出しの先頭アドレ
スを設定する処理を決定するために使用する相識別フラ
グF等も設けられている。
【0126】以下、全体的な動作を図27、図28のフ
ローチャートに従って説明する。このフローチャートは
図25、図26の動作に対応したものである。上述の各
レジスタは、電源の投入の際に、初期化が行われる。即
ち、相識別フラグ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」に初期設定する。
ローチャートに従って説明する。このフローチャートは
図25、図26の動作に対応したものである。上述の各
レジスタは、電源の投入の際に、初期化が行われる。即
ち、相識別フラグ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」に初期設定する。
【0127】なお、以下の説明では、電源投入後少し時
間が経過し、前記フローチャートの処理によって、各レ
ジスタや各カウンタには、既に適当な値が記憶されてい
るとして説明する。また、このフローチャートの処理
は、DSP8においてサンプリング周期毎に実行され
る。
間が経過し、前記フローチャートの処理によって、各レ
ジスタや各カウンタには、既に適当な値が記憶されてい
るとして説明する。また、このフローチャートの処理
は、DSP8においてサンプリング周期毎に実行され
る。
【0128】まず、発音の進行を管理するためのカウン
タSCNT(n) が「0」であるか否かを判断する。「0」で
あれば発音指示がされていないキーオフ中、「0」でな
ければキーオン中(発音指示中) である。「0」でない
(すなわちキーオン中)と判断した場合には進行位置sp
haseの更新処理を行い(ステップF62)、「0」すな
わちキーオフ中と判断した場合には進行位置sphaseの更
新を停止するためにステップF62を飛び越す。
タSCNT(n) が「0」であるか否かを判断する。「0」で
あれば発音指示がされていないキーオフ中、「0」でな
ければキーオン中(発音指示中) である。「0」でない
(すなわちキーオン中)と判断した場合には進行位置sp
haseの更新処理を行い(ステップF62)、「0」すな
わちキーオフ中と判断した場合には進行位置sphaseの更
新を停止するためにステップF62を飛び越す。
【0129】進行位置sphaseの更新処理を以下に説明す
ると、発音開始時においては、進行位置レジスタSPHASE
(n) には、前述のボイスの発音開始処理によって、波形
メモリ12のパラメータ記憶部におけるバンク番号bank
で示される波形領域の先頭の波形区間の開始アドレス s
adrs0が格納されている。進行位置sphaseはこれを基準
点にして時間の進行を管理する。1サンプル周期毎に、
進行位置sphaseを時間圧伸量tcomp だけインクリメント
する(ステップF62)。すなわち、 SPHASE(n) =SPHASE(n) +tcomp とする。このような更新をする結果、時間圧伸量tcomp
が大きければ、進行位置sphaseは速く進んで波形全体を
再生するに要する時間が短くなり、反対に時間圧伸量tc
omp が小さければ進行位置sphaseは遅く進むので波形全
体を再生するに要する時間は長くなる。
ると、発音開始時においては、進行位置レジスタSPHASE
(n) には、前述のボイスの発音開始処理によって、波形
メモリ12のパラメータ記憶部におけるバンク番号bank
で示される波形領域の先頭の波形区間の開始アドレス s
adrs0が格納されている。進行位置sphaseはこれを基準
点にして時間の進行を管理する。1サンプル周期毎に、
進行位置sphaseを時間圧伸量tcomp だけインクリメント
する(ステップF62)。すなわち、 SPHASE(n) =SPHASE(n) +tcomp とする。このような更新をする結果、時間圧伸量tcomp
が大きければ、進行位置sphaseは速く進んで波形全体を
再生するに要する時間が短くなり、反対に時間圧伸量tc
omp が小さければ進行位置sphaseは遅く進むので波形全
体を再生するに要する時間は長くなる。
【0130】次に、先のループモードスイッチLOOPMOD
E.SW によって設定されたループモードloopmode に対
応して「ループモード処理」を行う(ステップF6
3)。図29はこの「ループモード処理」のフローチャ
ートである。以下にこの「ループモード処理」について
詳細に説明する。
E.SW によって設定されたループモードloopmode に対
応して「ループモード処理」を行う(ステップF6
3)。図29はこの「ループモード処理」のフローチャ
ートである。以下にこの「ループモード処理」について
詳細に説明する。
【0131】まず、操作子設定テーブルに設定されてい
るループモードloopmode が、ループ再生をしないルー
プオフ“off ”であるか否かを判断する(ステップF6
301)。ループモードloopmode が“off ”である場
合には何も処理をせずに「読出し処理サブルーチン」に
戻る。ループモードloopmode が“off ”でなければ、
さらにノーマルループ“norm”か、またはオルタネート
ループ“alt ”かを判定する(ステップF6302)。
つまり、ステップF6302とF6308とで3つのル
ープモードloopmode の設定に対応してそれぞれ分岐す
る処理をしている。
るループモードloopmode が、ループ再生をしないルー
プオフ“off ”であるか否かを判断する(ステップF6
301)。ループモードloopmode が“off ”である場
合には何も処理をせずに「読出し処理サブルーチン」に
戻る。ループモードloopmode が“off ”でなければ、
さらにノーマルループ“norm”か、またはオルタネート
ループ“alt ”かを判定する(ステップF6302)。
つまり、ステップF6302とF6308とで3つのル
ープモードloopmode の設定に対応してそれぞれ分岐す
る処理をしている。
【0132】ステップF6302においてループモード
loopmode がノーマルループ“norm”であった場合に
は、時間圧伸量tcomp が「0」以上であるか否か、すな
わち正か負かを判断する(ステップF6303)。時間
圧伸量tcomp が「0」以上でない(時間圧伸量tcomp が
負)とは後述の「逆方向再生処理」をすることを意味す
るが、ノーマルループ“norm”では「逆方向再生処理」
はしないので、時間圧伸量tcomp が「0」以上でない場
合には、ループ再生をしないようにするために、以下の
進行位置sphaseの変更処理をしないように何も処理をせ
ずに「読出し処理サブルーチン」に戻る。
loopmode がノーマルループ“norm”であった場合に
は、時間圧伸量tcomp が「0」以上であるか否か、すな
わち正か負かを判断する(ステップF6303)。時間
圧伸量tcomp が「0」以上でない(時間圧伸量tcomp が
負)とは後述の「逆方向再生処理」をすることを意味す
るが、ノーマルループ“norm”では「逆方向再生処理」
はしないので、時間圧伸量tcomp が「0」以上でない場
合には、ループ再生をしないようにするために、以下の
進行位置sphaseの変更処理をしないように何も処理をせ
ずに「読出し処理サブルーチン」に戻る。
【0133】ステップF6303で時間圧伸量tcomp が
「0」以上であると判断されると、進行位置sphaseがル
ープエンドアドレスloopeaを超えたかか否かを判断する
(ステップF6304)。進行位置sphaseがループエン
ドアドレスloopeaを超えていない場合には「読出し処理
サブルーチン」に戻り、ループエンドアドレスloopeaを
超えた場合には、ループ再生の区間の先頭に戻って再生
を行うための各レジスタの値の再設定処理を行う(ステ
ップF6305〜F6307)。
「0」以上であると判断されると、進行位置sphaseがル
ープエンドアドレスloopeaを超えたかか否かを判断する
(ステップF6304)。進行位置sphaseがループエン
ドアドレスloopeaを超えていない場合には「読出し処理
サブルーチン」に戻り、ループエンドアドレスloopeaを
超えた場合には、ループ再生の区間の先頭に戻って再生
を行うための各レジスタの値の再設定処理を行う(ステ
ップF6305〜F6307)。
【0134】すなわち、まず、 SPHASE(n) =loopsa+(SPHASE(n) −loopea) を実行する(ステップF6305)。この処理は進行位
置sphaseがループエンドアドレスloopeaを超えると、進
行位置sphaseをループスタートアドレスloopsaに戻すと
ともにその超えた長さ(SPHASE(n) −loopea)だけルー
プスタートアドレスloopsaから進める演算を行ってい
る。そして、 SADRS (n) =loopsa、 START (n) =loopsa を行い(ステップF6306)、開始アドレスsadrs と
切出先頭アドレスstartもループスタートアドレスloops
aに戻している。また、 SCNT(n) =(loopstart −1−bank*$800 )/2 を行い(ステップF6307)、カウンタSCNTもループ
スタートアドレスloopsaに対応して戻し、「読出し処理
サブルーチン」に戻っている。
置sphaseがループエンドアドレスloopeaを超えると、進
行位置sphaseをループスタートアドレスloopsaに戻すと
ともにその超えた長さ(SPHASE(n) −loopea)だけルー
プスタートアドレスloopsaから進める演算を行ってい
る。そして、 SADRS (n) =loopsa、 START (n) =loopsa を行い(ステップF6306)、開始アドレスsadrs と
切出先頭アドレスstartもループスタートアドレスloops
aに戻している。また、 SCNT(n) =(loopstart −1−bank*$800 )/2 を行い(ステップF6307)、カウンタSCNTもループ
スタートアドレスloopsaに対応して戻し、「読出し処理
サブルーチン」に戻っている。
【0135】以上のステップF6304〜F6307の
処理によってノーマルループ再生に対応した進行位置sp
haseの変化が得られる。なお、以上の説明から分るよう
に、ノーマルループ再生とは、進行位置sphaseが順方向
に変化し、ループエンドアドレスloopeaに達するとルー
プスタートアドレスloopsaに戻って、その間を繰り返す
再生のことである。
処理によってノーマルループ再生に対応した進行位置sp
haseの変化が得られる。なお、以上の説明から分るよう
に、ノーマルループ再生とは、進行位置sphaseが順方向
に変化し、ループエンドアドレスloopeaに達するとルー
プスタートアドレスloopsaに戻って、その間を繰り返す
再生のことである。
【0136】次に、ステップF6302でループモード
loopmode がオルタネートループ“alt ”と判断された
場合の処理を説明する。ここで、オルタネートループ再
生とは、進行位置sphaseが順方向に変化しループエンド
アドレスloopeaに達すると進行位置sphaseの変化がルー
プスタートアドレスloopsaへ向かう逆方向へと変化する
ようになり、そして進行位置sphaseがループスタートア
ドレスloopsaに達すると進行位置sphaseの変化がループ
エンドアドレスloopeaへ向かう順方向へと変化するとい
うように、進行位置sphaseの変化方向がループスタート
アドレスloopsaとループエンドアドレスloopeaとで交互
に反転してその間を繰り返し再生する再生の仕方であ
る。
loopmode がオルタネートループ“alt ”と判断された
場合の処理を説明する。ここで、オルタネートループ再
生とは、進行位置sphaseが順方向に変化しループエンド
アドレスloopeaに達すると進行位置sphaseの変化がルー
プスタートアドレスloopsaへ向かう逆方向へと変化する
ようになり、そして進行位置sphaseがループスタートア
ドレスloopsaに達すると進行位置sphaseの変化がループ
エンドアドレスloopeaへ向かう順方向へと変化するとい
うように、進行位置sphaseの変化方向がループスタート
アドレスloopsaとループエンドアドレスloopeaとで交互
に反転してその間を繰り返し再生する再生の仕方であ
る。
【0137】したがって、オルタネートループ“alt ”
と判断された場合には、さらに時間圧伸量tcomp が
「0」以上であるか否か(正か負か)を判断する(ステ
ップF6308)。これは進行位置sphaseの変化方向を
判断していることになり、時間圧伸量tcomp が「0」以
上である場合は順方向に再生を行っており、「0」より
小さい場合は逆方向に再生を行っていることになる。
と判断された場合には、さらに時間圧伸量tcomp が
「0」以上であるか否か(正か負か)を判断する(ステ
ップF6308)。これは進行位置sphaseの変化方向を
判断していることになり、時間圧伸量tcomp が「0」以
上である場合は順方向に再生を行っており、「0」より
小さい場合は逆方向に再生を行っていることになる。
【0138】順方向再生(時間圧伸量tcomp が「0」以
上)を行っている場合、まず、次のステップP6309
からステップF6311を実行して、進行位置sphaseが
ループスタートアドレスloopsaを超えるとオルタネート
フラグALT.FLG を「1」にセットする処理を行ってい
る。つまり、フラグALT.FLT (n) =0であるか否かを判
断し(ステップF6309)、「0」であれば進行位置
sphaseがループスタートアドレスloopsa以上か否かを判
断して(ステップF6310)、進行位置sphaseがルー
プスタートアドレスloopsa以上であると判断されたとき
には、進行位置sphaseがループスタートアドレスloopsa
に達したことになるためフラグALT.FLG (n) を「l」に
セット(ステップF6311)し、ループスタートアド
レスloopsaより小さいと判断されたときには、進行位置
sphaseがまだループスタートアドレスloopsaに達してい
ないため次のステップF6311をジャンプしている。
また、前記ステップF6309でフラグALT.FLG(n)が
「0」でないと判断された場合には、既に進行位置spha
seがループスタートアドレスloopsaに達してフラグALT.
FLG (n) が「l」にセットされているため、ステップF
6310とF6311をジャンプしている。なお、この
フラグALT.FLG (n) は後述のステップF6315で使用
している。
上)を行っている場合、まず、次のステップP6309
からステップF6311を実行して、進行位置sphaseが
ループスタートアドレスloopsaを超えるとオルタネート
フラグALT.FLG を「1」にセットする処理を行ってい
る。つまり、フラグALT.FLT (n) =0であるか否かを判
断し(ステップF6309)、「0」であれば進行位置
sphaseがループスタートアドレスloopsa以上か否かを判
断して(ステップF6310)、進行位置sphaseがルー
プスタートアドレスloopsa以上であると判断されたとき
には、進行位置sphaseがループスタートアドレスloopsa
に達したことになるためフラグALT.FLG (n) を「l」に
セット(ステップF6311)し、ループスタートアド
レスloopsaより小さいと判断されたときには、進行位置
sphaseがまだループスタートアドレスloopsaに達してい
ないため次のステップF6311をジャンプしている。
また、前記ステップF6309でフラグALT.FLG(n)が
「0」でないと判断された場合には、既に進行位置spha
seがループスタートアドレスloopsaに達してフラグALT.
FLG (n) が「l」にセットされているため、ステップF
6310とF6311をジャンプしている。なお、この
フラグALT.FLG (n) は後述のステップF6315で使用
している。
【0139】次のステップF6312からF6314の
処理では、進行位置sphaseが順方向においてループエン
ドアドレスloopeaを超えたかを判断し、超えていれば進
行位置sphaseの変化方向を逆方向に変える処理を行って
いる。具体的には、進行位置sphaseがループエンドアド
レスloopea以上かを判断し(ステップF6312)、以
上と判断された場合には SPHASE(n) =loopea−(SPHASE(n) −loopea) の演算を行い(ステップF6313)、これにより進行
位置sphaseを、上記ループエンドアドレスloopeaから順
方向に超過した分(SPHASE(n) −loopea)だけループエ
ンドアドレスloopeaから逆方向に戻した位置に設定す
る。そして時間圧伸量tcomp に「−1」を乗算し(ステ
ップF6314)、時間圧伸量tcomp の符号を反転して
進行位置sphaseの進行方向を反転している。
処理では、進行位置sphaseが順方向においてループエン
ドアドレスloopeaを超えたかを判断し、超えていれば進
行位置sphaseの変化方向を逆方向に変える処理を行って
いる。具体的には、進行位置sphaseがループエンドアド
レスloopea以上かを判断し(ステップF6312)、以
上と判断された場合には SPHASE(n) =loopea−(SPHASE(n) −loopea) の演算を行い(ステップF6313)、これにより進行
位置sphaseを、上記ループエンドアドレスloopeaから順
方向に超過した分(SPHASE(n) −loopea)だけループエ
ンドアドレスloopeaから逆方向に戻した位置に設定す
る。そして時間圧伸量tcomp に「−1」を乗算し(ステ
ップF6314)、時間圧伸量tcomp の符号を反転して
進行位置sphaseの進行方向を反転している。
【0140】また、前記ステップF6312において、
進行位置sphaseがループエンドアドレスloopea以上でな
いと判断された場合には、前記ステップF6313とF
6314を飛び越して、読出しサブルーチンに戻る。
進行位置sphaseがループエンドアドレスloopea以上でな
いと判断された場合には、前記ステップF6313とF
6314を飛び越して、読出しサブルーチンに戻る。
【0141】次に前記ステップF6308で時間圧伸量
tcomp が「0」以上でない(逆方向再生を行っている)
と判断された場合には、フラグALT.FLG (n) が「1」で
あるか否かを判断する(ステップF6315)。このフ
ラグALT.FLG (n) の判断は、進行位置sphaseがループス
タートアドレスloopsaを超えるまでは次のループスター
トアドレスloopsaとの比較判断で誤った判断を行うた
め、それを防ぐためである。ALT.FLG (n) =lでない、
すなわち順方向再生して進行位置sphaseがループスター
トアドレスを超えていないと判断された場合には「読出
し処理サブルーチン」ヘ戻る。
tcomp が「0」以上でない(逆方向再生を行っている)
と判断された場合には、フラグALT.FLG (n) が「1」で
あるか否かを判断する(ステップF6315)。このフ
ラグALT.FLG (n) の判断は、進行位置sphaseがループス
タートアドレスloopsaを超えるまでは次のループスター
トアドレスloopsaとの比較判断で誤った判断を行うた
め、それを防ぐためである。ALT.FLG (n) =lでない、
すなわち順方向再生して進行位置sphaseがループスター
トアドレスを超えていないと判断された場合には「読出
し処理サブルーチン」ヘ戻る。
【0142】一方、ALT.FLG (n) =1である、すなわち
順方向再生して進行位置sphaseがループスタートアドレ
スを超えたと判断された場合には、現在の状態が、進行
位置spahseがループスタートアドレスに達し、逆方向再
生処理の状態であるため、進行位置sphaseがループスタ
ートアドレスloopsa以下であるか否か、すなわち逆方向
に変化した進行位置sphaseがループスタートアドレスlo
opsaに達したか否かを判断する(ステップF631
6)。進行位置sphaseがループスタートアドレスloopsa
以下であると判断された場合、すなわち進行位置sphase
がループスタートアドレスloopsaを逆方向に超えたと判
断された場合には、 SPHASE(n) =loopsa+(SPHASE(n) −loopsa) の演算を行い(ステップF6317)、これにより進行
位置sphaseを、上記ループスタートアドレスloopsaから
逆方向に超過した分(SPHASE(n) −loopsa)だけループ
スタートアドレスloopsaから順方向に進めた位置に設定
する。そして、前記したように、時間圧伸量tcomp に
「−1」を乗算し(ステップF6314)、時間圧伸量
tcomp の符号を反転して進行位置sphaseの進行方向を反
転している。
順方向再生して進行位置sphaseがループスタートアドレ
スを超えたと判断された場合には、現在の状態が、進行
位置spahseがループスタートアドレスに達し、逆方向再
生処理の状態であるため、進行位置sphaseがループスタ
ートアドレスloopsa以下であるか否か、すなわち逆方向
に変化した進行位置sphaseがループスタートアドレスlo
opsaに達したか否かを判断する(ステップF631
6)。進行位置sphaseがループスタートアドレスloopsa
以下であると判断された場合、すなわち進行位置sphase
がループスタートアドレスloopsaを逆方向に超えたと判
断された場合には、 SPHASE(n) =loopsa+(SPHASE(n) −loopsa) の演算を行い(ステップF6317)、これにより進行
位置sphaseを、上記ループスタートアドレスloopsaから
逆方向に超過した分(SPHASE(n) −loopsa)だけループ
スタートアドレスloopsaから順方向に進めた位置に設定
する。そして、前記したように、時間圧伸量tcomp に
「−1」を乗算し(ステップF6314)、時間圧伸量
tcomp の符号を反転して進行位置sphaseの進行方向を反
転している。
【0143】また、前記ステップF6316において、
進行位置sphaseがループスタートアドレスloopsa以下で
ないと判断された場合には前記ステップF6317とF
6314を飛び越して、「読出し処理のサブルーチン」
に戻る。
進行位置sphaseがループスタートアドレスloopsa以下で
ないと判断された場合には前記ステップF6317とF
6314を飛び越して、「読出し処理のサブルーチン」
に戻る。
【0144】以上のようにして「ループモード処理サブ
ルーチン」が終了して「読出し処理サブルーチン」に戻
ると、「読出し処理サブルーチン」では、次に時間圧伸
量tcomp が「0」以上か否かを判断する(ステップF6
4)。時間圧伸量tcomp が「0」以上であると判断され
た場合には「順方向再生処理」(ステップF65)を、
時間圧伸量tcomp が「0」以上でないと判断された場合
には「逆方向再生処理」(ステップF66)を実行す
る。
ルーチン」が終了して「読出し処理サブルーチン」に戻
ると、「読出し処理サブルーチン」では、次に時間圧伸
量tcomp が「0」以上か否かを判断する(ステップF6
4)。時間圧伸量tcomp が「0」以上であると判断され
た場合には「順方向再生処理」(ステップF65)を、
時間圧伸量tcomp が「0」以上でないと判断された場合
には「逆方向再生処理」(ステップF66)を実行す
る。
【0145】「順方向再生処理」図30はこの「順方向
再生処理」の手順を示すフローチャートであり、以下に
この「順方向再生処理」について詳細に説明する。まず
進行位置sphaseと末尾アドレスレジスタendadrs を比較
し(ステップF6501)、進行位置spase が末尾アド
レスendadrs 以上であれば、進行位置sphaseが末尾まで
処理を終えていることを意味しているため、進行位置sp
haseを末尾アドレスendadrs にして(ステップF650
2)、進行位置sphaseが末尾アドレスendadrs を超えな
いようにしている。なお、ステップF6501で進行位
置sphaseが末尾アドレスendadrs 以上でなければ、まだ
その波形全体の末尾まで処理を終えていないことを意味
するため、前記ステップF6502は飛び越す。
再生処理」の手順を示すフローチャートであり、以下に
この「順方向再生処理」について詳細に説明する。まず
進行位置sphaseと末尾アドレスレジスタendadrs を比較
し(ステップF6501)、進行位置spase が末尾アド
レスendadrs 以上であれば、進行位置sphaseが末尾まで
処理を終えていることを意味しているため、進行位置sp
haseを末尾アドレスendadrs にして(ステップF650
2)、進行位置sphaseが末尾アドレスendadrs を超えな
いようにしている。なお、ステップF6501で進行位
置sphaseが末尾アドレスendadrs 以上でなければ、まだ
その波形全体の末尾まで処理を終えていないことを意味
するため、前記ステップF6502は飛び越す。
【0146】次に切出先頭アドレスレジスタSRART(n)を
更新するか否かを判定するために、( START(n) +SPIT
CH(n) )と進行位置レジスタSPHASE(n) の値とを比較す
る(ステップF6503)。(START (n) +SPITCH(n)
)よりも進行位置レジスタSPHASE(n) の値の方が大き
ければ、進行位置sphaseが、切出先頭アドレスstart か
ら順方向に波形ピッチspitch分だけ進んだ位置を超えた
ことを意味し、この場合には切出先頭アドレスレジスタ
START を次の切出先頭アドレスの値に更新する。この更
新は切出先頭アドレスレジスタSTART(n)を波形ピッチsp
itchでインクリメントして行う(ステップF650
4)。すなわち、 START(n)= START(n) +SPITCH(n) とする。進行位置spitchが(START +SPITCH)以下であ
る場合には、この切出先頭アドレスstart の更新は行わ
ない。
更新するか否かを判定するために、( START(n) +SPIT
CH(n) )と進行位置レジスタSPHASE(n) の値とを比較す
る(ステップF6503)。(START (n) +SPITCH(n)
)よりも進行位置レジスタSPHASE(n) の値の方が大き
ければ、進行位置sphaseが、切出先頭アドレスstart か
ら順方向に波形ピッチspitch分だけ進んだ位置を超えた
ことを意味し、この場合には切出先頭アドレスレジスタ
START を次の切出先頭アドレスの値に更新する。この更
新は切出先頭アドレスレジスタSTART(n)を波形ピッチsp
itchでインクリメントして行う(ステップF650
4)。すなわち、 START(n)= START(n) +SPITCH(n) とする。進行位置spitchが(START +SPITCH)以下であ
る場合には、この切出先頭アドレスstart の更新は行わ
ない。
【0147】進行位置sphaseと開始アドレスレジスタsa
drs を比較する(ステップF6505)。この開始アド
レスsadrs は前述した図20、図21の発音開始処理か
らも分かるように、次に続く波形区間の開始アドレスで
ある。よって進行位置sphaseが開始アドレスsadrs 以上
であれば、それまで処理していた波形区間が終了したの
で、この波形区間から次の波形区間に処理を移行するた
めに波形区間の更新を行う。この波形区間の更新は次の
ようにして行う。 SADRSR(n) =@ (bank*$800 +1+SCNT(n) *2) SPITCH(n) =@(bank*$800 +2+SCNT(n) *2) SADRS(n) =@(bank*$800 +3+SCNT(n) *2) SCNT(n) =SCNT(n) +1
drs を比較する(ステップF6505)。この開始アド
レスsadrs は前述した図20、図21の発音開始処理か
らも分かるように、次に続く波形区間の開始アドレスで
ある。よって進行位置sphaseが開始アドレスsadrs 以上
であれば、それまで処理していた波形区間が終了したの
で、この波形区間から次の波形区間に処理を移行するた
めに波形区間の更新を行う。この波形区間の更新は次の
ようにして行う。 SADRSR(n) =@ (bank*$800 +1+SCNT(n) *2) SPITCH(n) =@(bank*$800 +2+SCNT(n) *2) SADRS(n) =@(bank*$800 +3+SCNT(n) *2) SCNT(n) =SCNT(n) +1
【0148】すなわち、波形メモリ12のパラメータ記
憶部からパラメータデータ(次に続く波形区間の開始ア
ドレスsadrs と波形ピッチspitchと更にその後の波形区
間の開始アドレスsadrs)を読み出してきて、それぞれ、
現在の波形区間のリバース開始アドレスsadrsr、波形ピ
ッチspitch、次の波形区間の開始アドレスsadrs とし、
カウンタSCNTを一つインクリメントする(ステップF6
506)。
憶部からパラメータデータ(次に続く波形区間の開始ア
ドレスsadrs と波形ピッチspitchと更にその後の波形区
間の開始アドレスsadrs)を読み出してきて、それぞれ、
現在の波形区間のリバース開始アドレスsadrsr、波形ピ
ッチspitch、次の波形区間の開始アドレスsadrs とし、
カウンタSCNTを一つインクリメントする(ステップF6
506)。
【0149】ステップF6505において、進行位置sp
haseが次の波形区間の開始アドレスsadrs より小さけれ
ば、まだ現在の波形区間の途中であるから、波形区間の
更新は行わないので、ステップF6506の処理は飛び
越す。
haseが次の波形区間の開始アドレスsadrs より小さけれ
ば、まだ現在の波形区間の途中であるから、波形区間の
更新は行わないので、ステップF6506の処理は飛び
越す。
【0150】「逆方向再生処理」図31は前述のステッ
プF66の「逆方向再生処理」の手順を示すフローチャ
ートであり、以下にこの「逆方向再生処理」について詳
細に説明する。まず、進行位置sphaseと先頭アドレスsr
aradrsを比較し(ステップF6601)、進行位置spha
seが先頭アドレスレジスタstartadrs 以下であれば、進
行位置sphaseが逆方向に進んで先頭アドレスstartadrs
に達していることを意味しているため、進行位置sphase
を先頭アドレスstartadrs にして(ステップF660
2)、進行位置sphaseが先頭アドレスstartadrs を超え
て逆方向に進まないようにしている。なお、ステップF
6601で進行位置sphaseが先頭アドレスstartadrs 以
下でなければ、まだその波形全体の末尾まで処理を終え
ていないことを意味するため、前記ステップF6602
を飛び越す。
プF66の「逆方向再生処理」の手順を示すフローチャ
ートであり、以下にこの「逆方向再生処理」について詳
細に説明する。まず、進行位置sphaseと先頭アドレスsr
aradrsを比較し(ステップF6601)、進行位置spha
seが先頭アドレスレジスタstartadrs 以下であれば、進
行位置sphaseが逆方向に進んで先頭アドレスstartadrs
に達していることを意味しているため、進行位置sphase
を先頭アドレスstartadrs にして(ステップF660
2)、進行位置sphaseが先頭アドレスstartadrs を超え
て逆方向に進まないようにしている。なお、ステップF
6601で進行位置sphaseが先頭アドレスstartadrs 以
下でなければ、まだその波形全体の末尾まで処理を終え
ていないことを意味するため、前記ステップF6602
を飛び越す。
【0151】次に、進行位置sphaseとリバース開始アド
レスsadrsrを比較する(ステップF6603)。このリ
バース開始アドレスsasrsrは前述したように、現在読み
出している波形区間の開始アドレスである。よって進行
位置sphaseがリバース開始アドレスsadrsrより小さけれ
ば、進行位置sphaseが逆方向に進んで現在処理している
波形区間の開始アドレスに達したことになるので、この
波形区間から前の波形区間に処理を移行するために波形
区間の更新を行う。この波形区間の更新は、 SCNT(n) =SCNT(n) −1 SADRSR (n)=@〔bank*$800 +1+(SCNT(n) −1)
*2〕 SPITCH(n) =@〔bank*$800 +2+(SCNT(n) −1)
*2〕 SADRS (n) =@〔bank*$800 +3+(SCNT(n) −1)
*2〕 のようにして行う(ステップF6604)。すなわち、
カウンタSCNTを一つディクリメントし、波形メモリ12
のパラメータ記憶部からパラメータデータ(次に続く前
の波形区間の開始アドレスsadrsr と波形ピッチspitch
と更に前記前の波形区間の後に続く波形区間の開始アド
レスsadrs )を読み出してきて、それぞれ、現在の波形
区間のリバース開始アドレスsadrsr、波形ピッチspitc
h、次の波形区間の開始アドレスsadrs とする。
レスsadrsrを比較する(ステップF6603)。このリ
バース開始アドレスsasrsrは前述したように、現在読み
出している波形区間の開始アドレスである。よって進行
位置sphaseがリバース開始アドレスsadrsrより小さけれ
ば、進行位置sphaseが逆方向に進んで現在処理している
波形区間の開始アドレスに達したことになるので、この
波形区間から前の波形区間に処理を移行するために波形
区間の更新を行う。この波形区間の更新は、 SCNT(n) =SCNT(n) −1 SADRSR (n)=@〔bank*$800 +1+(SCNT(n) −1)
*2〕 SPITCH(n) =@〔bank*$800 +2+(SCNT(n) −1)
*2〕 SADRS (n) =@〔bank*$800 +3+(SCNT(n) −1)
*2〕 のようにして行う(ステップF6604)。すなわち、
カウンタSCNTを一つディクリメントし、波形メモリ12
のパラメータ記憶部からパラメータデータ(次に続く前
の波形区間の開始アドレスsadrsr と波形ピッチspitch
と更に前記前の波形区間の後に続く波形区間の開始アド
レスsadrs )を読み出してきて、それぞれ、現在の波形
区間のリバース開始アドレスsadrsr、波形ピッチspitc
h、次の波形区間の開始アドレスsadrs とする。
【0152】ステップF6603において、進行位置sp
haseが現在の波形区間の開始アドレスであるリバース開
始アドレスsadrsr以上であれば、まだ現在の波形区間の
途中であるから、波形区間の更新は行わないで、ステッ
プF6604の処理は飛び越す。
haseが現在の波形区間の開始アドレスであるリバース開
始アドレスsadrsr以上であれば、まだ現在の波形区間の
途中であるから、波形区間の更新は行わないで、ステッ
プF6604の処理は飛び越す。
【0153】次に切出先頭アドレスstart を更新するか
否かを判定するために、切出先頭アドレスstart と進行
位置sphaseとを比較する(ステップF6605)。切出
先頭アドレスstart の方が進行位置sphaseより大きけれ
ば、進行位置sphaseが切出先頭アドレスstart を逆方向
へ超えて進んだことを意味し、この場合には切出先頭ア
ドレスstart を次の切出先頭アドレスの値に更新する。
この更新は切出先頭アドレスレジスタSTART の値を波形
ピッチspitchでディクリメントして行う(ステップF6
606)。すなわち、 START(n)=START(n)−SPITCH(n) とする。
否かを判定するために、切出先頭アドレスstart と進行
位置sphaseとを比較する(ステップF6605)。切出
先頭アドレスstart の方が進行位置sphaseより大きけれ
ば、進行位置sphaseが切出先頭アドレスstart を逆方向
へ超えて進んだことを意味し、この場合には切出先頭ア
ドレスstart を次の切出先頭アドレスの値に更新する。
この更新は切出先頭アドレスレジスタSTART の値を波形
ピッチspitchでディクリメントして行う(ステップF6
606)。すなわち、 START(n)=START(n)−SPITCH(n) とする。
【0154】さらに、切出先頭アドレスstart が波形の
先頭アドレスstartadrs を逆方向へ超えて進まないよう
に制限を加えている。具体的には、切出先頭アドレスst
artと先頭アドレスstartadrs を比較(ステップF66
07)し、切出先頭アドレスstart が先頭アドレスstar
tadrs より小さいと判断された場合は、切出先頭アドレ
スstart が波形の先頭アドレスstartadrs を逆方向に超
えて進んだことになるため、切出先頭アドレスstart を
先頭アドレスstartadrs とする(ステップF660
8)。ステップF6607において、切出先頭アドレス
start が先頭アドレスstartadrs 以上と判断された場合
は、切出先頭アドレスstart が波形の先頭アドレスstar
tadrs に達していないため、ステップF6608を飛び
越す。
先頭アドレスstartadrs を逆方向へ超えて進まないよう
に制限を加えている。具体的には、切出先頭アドレスst
artと先頭アドレスstartadrs を比較(ステップF66
07)し、切出先頭アドレスstart が先頭アドレスstar
tadrs より小さいと判断された場合は、切出先頭アドレ
スstart が波形の先頭アドレスstartadrs を逆方向に超
えて進んだことになるため、切出先頭アドレスstart を
先頭アドレスstartadrs とする(ステップF660
8)。ステップF6607において、切出先頭アドレス
start が先頭アドレスstartadrs 以上と判断された場合
は、切出先頭アドレスstart が波形の先頭アドレスstar
tadrs に達していないため、ステップF6608を飛び
越す。
【0155】なお、先のステップF6605において進
行位置sphaseが切出先頭アドレスstart 以上である場合
には、進行位置sphaseが切出先頭アドレスstart を逆方
向に超えていないため、切出先頭アドレスstart の更新
は行わない。
行位置sphaseが切出先頭アドレスstart 以上である場合
には、進行位置sphaseが切出先頭アドレスstart を逆方
向に超えていないため、切出先頭アドレスstart の更新
は行わない。
【0156】以上のステップF61〜F66の処理によ
り、DSPの操作子設定テーブルに絶対値が大きな時間
圧伸量tcomp が設定された場合には進行位置sphaseが速
く進んで切出先頭アドレスstart の更新が早く行われ、
よって波形再生時間が短くなる。反対に時間圧伸量tcom
p の絶対値が小さい場合には進行位置shase が遅く進ん
で切出先頭アドレスstart の更新が遅く行われ、よって
波形再生時間が長くなる。
り、DSPの操作子設定テーブルに絶対値が大きな時間
圧伸量tcomp が設定された場合には進行位置sphaseが速
く進んで切出先頭アドレスstart の更新が早く行われ、
よって波形再生時間が短くなる。反対に時間圧伸量tcom
p の絶対値が小さい場合には進行位置shase が遅く進ん
で切出先頭アドレスstart の更新が遅く行われ、よって
波形再生時間が長くなる。
【0157】なお、この時間圧伸量tcomp の絶対値をか
なり小さな値に設定した場合には、同じ波形区間が複数
回繰り返して再生されつつ、遅い速度で波形再生が進行
するようになる。これは、進行位置sphaseの進行がゆっ
くりしているためステップF6505、F6503、F
6605の判断で進行位置sphaseがなかなか比較してい
る値よりも大きく又は小さくならず、よって波形区間の
更新がなかなか行われないで同じ波形区間からの読出し
処理が繰り返し行われるためである。反対に、時間圧伸
量tcomp の絶対値をかなり大きな値にすると、波形区間
の更新において、次に続く波形区間を飛び越してしまい
その波形区間の再生が行われないような場合も生じる。
なり小さな値に設定した場合には、同じ波形区間が複数
回繰り返して再生されつつ、遅い速度で波形再生が進行
するようになる。これは、進行位置sphaseの進行がゆっ
くりしているためステップF6505、F6503、F
6605の判断で進行位置sphaseがなかなか比較してい
る値よりも大きく又は小さくならず、よって波形区間の
更新がなかなか行われないで同じ波形区間からの読出し
処理が繰り返し行われるためである。反対に、時間圧伸
量tcomp の絶対値をかなり大きな値にすると、波形区間
の更新において、次に続く波形区間を飛び越してしまい
その波形区間の再生が行われないような場合も生じる。
【0158】ここで、アフタータッチがあった場合に
は、DSPの操作子設定テーブルの時間圧伸量tcomp
は、前述の再生処理のステップE328においてそのア
フタータッチの強さに応じて変更されるので、波形再生
時間はアフタータッチにより次のように調整される。 アフタータッチ無しの場合 アフタータッチがごく弱いためアフタータッチ無しと判
定された場合、つまりアフタータッチ信号after.touch
の大きさが$00〜$19の場合は、時間圧伸量設定操
作子TCOMP で設定した時間圧伸量tcomp の速さで再生さ
れ、アフタータッチにより変化しない。 アフタータッチ有りの場合 アフタータッチが有りと判定された場合には、アフター
タッチ信号after.touch の大きさが$20以上、$7F
未満では、アフタータッチ信号after.touch の値が大き
くなるほど、つまりアフタータッチが強くなるほど、波
形再生の速さが遅くなる。アフタータッチ信号after.to
uch が$7F、つまりアフタータッチが最も強い場合に
は、再生速度はほぼ停止状態となり、同じ波形が繰り返
して再生され続けるようになる。
は、DSPの操作子設定テーブルの時間圧伸量tcomp
は、前述の再生処理のステップE328においてそのア
フタータッチの強さに応じて変更されるので、波形再生
時間はアフタータッチにより次のように調整される。 アフタータッチ無しの場合 アフタータッチがごく弱いためアフタータッチ無しと判
定された場合、つまりアフタータッチ信号after.touch
の大きさが$00〜$19の場合は、時間圧伸量設定操
作子TCOMP で設定した時間圧伸量tcomp の速さで再生さ
れ、アフタータッチにより変化しない。 アフタータッチ有りの場合 アフタータッチが有りと判定された場合には、アフター
タッチ信号after.touch の大きさが$20以上、$7F
未満では、アフタータッチ信号after.touch の値が大き
くなるほど、つまりアフタータッチが強くなるほど、波
形再生の速さが遅くなる。アフタータッチ信号after.to
uch が$7F、つまりアフタータッチが最も強い場合に
は、再生速度はほぼ停止状態となり、同じ波形が繰り返
して再生され続けるようになる。
【0159】上記のように進行位置sphaseを時間基準と
して用いて波形区間の更新を行いつつ波形データを再生
すると、波形再生に要する時間長は、再生する波形の音
高によらず、ユーザが時間圧伸量設定操作子TCOMP とキ
ーボードのアフタータッチで設定する時間圧伸量tcomp
で決めることができるようになる。この結果、ポリフォ
ニックモード2で2つのボイスモジュールを並行して発
音させる場合でも、その発音の終了時間は2つのボイス
モジュールで同時とすることができる。
して用いて波形区間の更新を行いつつ波形データを再生
すると、波形再生に要する時間長は、再生する波形の音
高によらず、ユーザが時間圧伸量設定操作子TCOMP とキ
ーボードのアフタータッチで設定する時間圧伸量tcomp
で決めることができるようになる。この結果、ポリフォ
ニックモード2で2つのボイスモジュールを並行して発
音させる場合でも、その発音の終了時間は2つのボイス
モジュールで同時とすることができる。
【0160】次に「読出し処理のサブルーチン」におい
て、ステップF67では、再生位相phase 、第1位相ph
1、第2位相ph2の値をそれぞれ1つ歩進させる(ステ
ップF67)。次に、再生位相phase と再生ピッチwidt
h を比較する(ステップF68)。この再生ピッチwidt
h が再生されるピッチに対応する。再生位相phase が再
生ピッチwidth に達していなければ、後述するステップ
F77の「波形読出し処理」へ進む。なお、再生ピッチ
width は後述のステップF70で算出される。
て、ステップF67では、再生位相phase 、第1位相ph
1、第2位相ph2の値をそれぞれ1つ歩進させる(ステ
ップF67)。次に、再生位相phase と再生ピッチwidt
h を比較する(ステップF68)。この再生ピッチwidt
h が再生されるピッチに対応する。再生位相phase が再
生ピッチwidth に達していなければ、後述するステップ
F77の「波形読出し処理」へ進む。なお、再生ピッチ
width は後述のステップF70で算出される。
【0161】再生位相phase が再生ピッチwidth に達し
ている時にはステップF69〜F76を行う。このステ
ップF69〜F76ではレジスタPHASE(n)の初期化、各
レジスタWIDTH(n)、LENGTH(n) 、W.RATE(n) の更新、相
識別フラグF(n) の反転を行うとともに、相識別フラグ
F(n) の値に応じた側の第1、第2の処理経路について
各パラメータの設定を行う。
ている時にはステップF69〜F76を行う。このステ
ップF69〜F76ではレジスタPHASE(n)の初期化、各
レジスタWIDTH(n)、LENGTH(n) 、W.RATE(n) の更新、相
識別フラグF(n) の反転を行うとともに、相識別フラグ
F(n) の値に応じた側の第1、第2の処理経路について
各パラメータの設定を行う。
【0162】まず、再生位相phase を「0」とする(ス
テップF69)。次いで、新たな再生ピッチwidth を、
波形ピッチspitchと、鍵盤の押鍵で音高指定された操作
キー情報kpithcと基準ピッチorg.pitch との割算結果の
キー比pitch と、前述の再生処理におけるステップE3
30の演算処理で求めた変調度lfo.mod とを乗算するこ
とで求め、これを再生ピッチレジスタWIDTH に記憶させ
る(ステップF70)。この処理を行うことにより、レ
ジスタMTCOMPの設定値が「0. 1」より大きい場合には
変調度lfo.mod は「1」に固定されるので、再生ピッチ
width は操作キー情報kpitchに一致する。一方、レジス
タMTCOMPの絶対値が「0.1」以下になると、変調度lf
o.mod は「1」を中心に低周波数で振動する波形とな
り、したがって再生ピッチwidth はこのステップF70
の演算をする毎に値が変動することになる。
テップF69)。次いで、新たな再生ピッチwidth を、
波形ピッチspitchと、鍵盤の押鍵で音高指定された操作
キー情報kpithcと基準ピッチorg.pitch との割算結果の
キー比pitch と、前述の再生処理におけるステップE3
30の演算処理で求めた変調度lfo.mod とを乗算するこ
とで求め、これを再生ピッチレジスタWIDTH に記憶させ
る(ステップF70)。この処理を行うことにより、レ
ジスタMTCOMPの設定値が「0. 1」より大きい場合には
変調度lfo.mod は「1」に固定されるので、再生ピッチ
width は操作キー情報kpitchに一致する。一方、レジス
タMTCOMPの絶対値が「0.1」以下になると、変調度lf
o.mod は「1」を中心に低周波数で振動する波形とな
り、したがって再生ピッチwidth はこのステップF70
の演算をする毎に値が変動することになる。
【0163】レジスタMTCOMPの絶対値が時間圧伸量操作
子 TCOMPの設定により、さらにはキーボードのアフター
タッチ操作により「0.1」以下の小さな値になると、
前述したように波形再生速度がかなり遅くなって同じ波
形区間が繰り返して読み出される。このように、同じ特
質を持った再生波形の繰返しは、それが規則正しく繰り
返されるものであるため、その繰返し部分の再生波形に
揺らぎ成分がなくなり、このためかかる再生波形により
発音される音は美しくはあるが単調で不自然な感じのも
のになるが、上記の変調度lfo.mod を乗じる処理を行う
ことで、同じ波形区間が繰り返して読み出される場合で
も、前記演算をする毎に再生ピッチwidth は変化し、時
間的に変化する変調を受けることになるので、同じ波形
区間の繰返し再生であっても再生波形にビブラートに似
た効果を付与することができ、単調な感じを無くすこと
ができる。この効果は押鍵後にアフタータッチ操作によ
り波形再生速度が遅くなった場合も同様に得られる。
子 TCOMPの設定により、さらにはキーボードのアフター
タッチ操作により「0.1」以下の小さな値になると、
前述したように波形再生速度がかなり遅くなって同じ波
形区間が繰り返して読み出される。このように、同じ特
質を持った再生波形の繰返しは、それが規則正しく繰り
返されるものであるため、その繰返し部分の再生波形に
揺らぎ成分がなくなり、このためかかる再生波形により
発音される音は美しくはあるが単調で不自然な感じのも
のになるが、上記の変調度lfo.mod を乗じる処理を行う
ことで、同じ波形区間が繰り返して読み出される場合で
も、前記演算をする毎に再生ピッチwidth は変化し、時
間的に変化する変調を受けることになるので、同じ波形
区間の繰返し再生であっても再生波形にビブラートに似
た効果を付与することができ、単調な感じを無くすこと
ができる。この効果は押鍵後にアフタータッチ操作によ
り波形再生速度が遅くなった場合も同様に得られる。
【0164】次いで、ホルマント移動量f.vrを入力し、
第1の波形のエンベロープ env1、第2の波形のエンベ
ロープ env2の窓長lengthを、波形ピッチspitchをホル
マント移動量f.vrで割算して求めて、エンベロープ窓長
レジスタLENGTHに記憶させる(ステップF70)。
第1の波形のエンベロープ env1、第2の波形のエンベ
ロープ env2の窓長lengthを、波形ピッチspitchをホル
マント移動量f.vrで割算して求めて、エンベロープ窓長
レジスタLENGTHに記憶させる(ステップF70)。
【0165】次に、エンベロープの窓長lengthを再生ピ
ッチwidth 以内に制限する(ステップF71、F7
2)。エンベロープ窓長lengthと再生ピッチwidth とを
比較し(ステップF71)、エンベロープ窓長lengthが
再生ピッチwidth よりも大きい場合には、エンベロープ
窓長lengthを再生ピッチwidth とする(ステップF7
2)。一方、エンベロープ窓長lengthが再生ピッチwidt
h 以下である場合には、このステップS72の処理は行
わない。これにより、エンベロープ窓長lengthが再生ピ
ッチwidth より大きくならないように制限をかける。
ッチwidth 以内に制限する(ステップF71、F7
2)。エンベロープ窓長lengthと再生ピッチwidth とを
比較し(ステップF71)、エンベロープ窓長lengthが
再生ピッチwidth よりも大きい場合には、エンベロープ
窓長lengthを再生ピッチwidth とする(ステップF7
2)。一方、エンベロープ窓長lengthが再生ピッチwidt
h 以下である場合には、このステップS72の処理は行
わない。これにより、エンベロープ窓長lengthが再生ピ
ッチwidth より大きくならないように制限をかける。
【0166】次いで、エンベロープ窓長lengthの逆数を
求め、これを歩進率w.rateとして歩進率レジスタW.RATE
に記憶させる (ステップF73)。この歩進率w.rateは
カウンタWINDOW1、WINDOW2の値を歩進させるために使
用する。また、相識別フラグFの極性を反転させる。こ
のステップF73の処理は、ステップF68おいて再生
位相phase が再生ピッチwidth 以上になったときに行わ
れるので、相識別フラグFの反転も、再生位相phase が
再生ピッチwidth 以上になったときに行われることにな
り、例えば図25、図26の(c)に示されるように、
再生位相phaseの周期で「1」と「−1」に反転する波
形が得られる。
求め、これを歩進率w.rateとして歩進率レジスタW.RATE
に記憶させる (ステップF73)。この歩進率w.rateは
カウンタWINDOW1、WINDOW2の値を歩進させるために使
用する。また、相識別フラグFの極性を反転させる。こ
のステップF73の処理は、ステップF68おいて再生
位相phase が再生ピッチwidth 以上になったときに行わ
れるので、相識別フラグFの反転も、再生位相phase が
再生ピッチwidth 以上になったときに行われることにな
り、例えば図25、図26の(c)に示されるように、
再生位相phaseの周期で「1」と「−1」に反転する波
形が得られる。
【0167】次に、相識別フラグFの値を「0」と比較
し、相識別フラグFが「1」であるか、「−1」である
かを判断する(ステップF74)。相識別フラグFの値
が「1」であることは相識別フラグFが「−1」から
「1」に立ち上がったときを意味しており、この場合に
は、第1の処理経路に相当するレジスタPH1とカウンタ
WINDOW1の値をそれぞれ「0」とし、切出先頭アドレス
start を第1切出先頭アドレス start1とし、フラグ
S.FlG1を「1」にする(ステップF75)。
し、相識別フラグFが「1」であるか、「−1」である
かを判断する(ステップF74)。相識別フラグFの値
が「1」であることは相識別フラグFが「−1」から
「1」に立ち上がったときを意味しており、この場合に
は、第1の処理経路に相当するレジスタPH1とカウンタ
WINDOW1の値をそれぞれ「0」とし、切出先頭アドレス
start を第1切出先頭アドレス start1とし、フラグ
S.FlG1を「1」にする(ステップF75)。
【0168】また、相識別フラグFの値が「−1」であ
ることは相識別フラグFが「1」から「−1」に立ち下
がったことを意味しており、この場合には、第2の処理
経路に相当するレジスタPH2とカウンタWINDOW2をそれ
ぞれ「0」とし、切出先頭アドレスstart を第2切出先
頭アドレス start2とし、第2のフラグ S.FLG2を
「1」 にする(ステップF76)。
ることは相識別フラグFが「1」から「−1」に立ち下
がったことを意味しており、この場合には、第2の処理
経路に相当するレジスタPH2とカウンタWINDOW2をそれ
ぞれ「0」とし、切出先頭アドレスstart を第2切出先
頭アドレス start2とし、第2のフラグ S.FLG2を
「1」 にする(ステップF76)。
【0169】この場合、前述のステップF75とこのス
テップF76は、ステップF68で再生位相phase が再
生ピッチwidth を超えたと判定される毎に交互に実行さ
れるものであるから、第1位相ph1と第2位相ph2は、
図25の(d)、(e)のように再生ピッチwidth の2
倍の周期で、かつ、お互いに再生ピッチwidth だけ位相
の異なる変化をするものとなる。また、第1切出先頭ア
ドレス start1は第1位相ph1の立下り部分で、第2切
出先頭アドレス start2は第2位相ph2の立下り部分
の、それぞれ再生ピッチwidth だけ時間差を持ったタイ
ミングで更新されることになる。
テップF76は、ステップF68で再生位相phase が再
生ピッチwidth を超えたと判定される毎に交互に実行さ
れるものであるから、第1位相ph1と第2位相ph2は、
図25の(d)、(e)のように再生ピッチwidth の2
倍の周期で、かつ、お互いに再生ピッチwidth だけ位相
の異なる変化をするものとなる。また、第1切出先頭ア
ドレス start1は第1位相ph1の立下り部分で、第2切
出先頭アドレス start2は第2位相ph2の立下り部分
の、それぞれ再生ピッチwidth だけ時間差を持ったタイ
ミングで更新されることになる。
【0170】なお、上述のフラグS.FLG 1 =1 、S.FLG
2 =1 の処理により、発音開始後、レジスタPH1(n) 、
PH2(n) がリセットされて初めて発音が開始されるよう
にして、発音開始後すぐの不要な発音を防止している。
2 =1 の処理により、発音開始後、レジスタPH1(n) 、
PH2(n) がリセットされて初めて発音が開始されるよう
にして、発音開始後すぐの不要な発音を防止している。
【0171】このステップF75またはF76の処理に
続いて、あるいはステップF68において再生位相phas
e が再生ピッチwidth に達していないと判断されたとき
には、波形読出し処理を行う(ステップF77)
続いて、あるいはステップF68において再生位相phas
e が再生ピッチwidth に達していないと判断されたとき
には、波形読出し処理を行う(ステップF77)
【0172】「波形読出し処理」図32、図33はこの
波形読出し処理を示すフローチャートである。以下にこ
の波形読出し処理について詳細に説明する。図32は波
形読出し処理のフローチャートであり、同図中のステッ
プF7701〜F7709は第1の処理経路のための処
理、次の図33のステップF7710〜F7718は第
2の処理経路のための処理であり、この二つの処理は時
系列に行われるが、処理の内容は実質的に同様な内容と
なっている。
波形読出し処理を示すフローチャートである。以下にこ
の波形読出し処理について詳細に説明する。図32は波
形読出し処理のフローチャートであり、同図中のステッ
プF7701〜F7709は第1の処理経路のための処
理、次の図33のステップF7710〜F7718は第
2の処理経路のための処理であり、この二つの処理は時
系列に行われるが、処理の内容は実質的に同様な内容と
なっている。
【0173】図32に示すように、波形読出し処理で
は、まずカウンタWINDOW1(n) の値を歩進率w.rateだけ
歩進させる(ステップF7701)。そして、歩進させ
たカウンタWINDOW1(n) の値が「1」より小さいか、
「1」以上であって「2」より小さいか、あるいは
「2」以上であるかを判定する(ステップF770
2)。「1」より小さい場合には、カウンタWINDOW1
(n) の値を第1エンベロープ env1とし(ステップF7
703)、「1」以上であって「2」より小さい場合に
は、「2」からカウンタWINDOW1(n) の値を減算した値
を第1エンベロープ env1とし(ステップF7704)
、「2」以上のとき、第1エンベロープレジスタ env
1を0とする(ステップF7705)。
は、まずカウンタWINDOW1(n) の値を歩進率w.rateだけ
歩進させる(ステップF7701)。そして、歩進させ
たカウンタWINDOW1(n) の値が「1」より小さいか、
「1」以上であって「2」より小さいか、あるいは
「2」以上であるかを判定する(ステップF770
2)。「1」より小さい場合には、カウンタWINDOW1
(n) の値を第1エンベロープ env1とし(ステップF7
703)、「1」以上であって「2」より小さい場合に
は、「2」からカウンタWINDOW1(n) の値を減算した値
を第1エンベロープ env1とし(ステップF7704)
、「2」以上のとき、第1エンベロープレジスタ env
1を0とする(ステップF7705)。
【0174】ステップF7702〜F7705は、例え
ば図25(f) に示されるように、歩進率w.rateずつ値
が増加する鋸歯状波を作成し、これの値を「1」で折り
返すことによって、第1エンベロープ env1を作成して
いる。但し、カウンタWINDOW1(n) の値が「2」を越え
た場合には、ステップF7705によって第1エンベロ
ープ env1の値を「0」としている。即ち、ホルマント
移動量f.vrと波形ピッチspitchとに基づいて定めたエン
ベロープ窓長lengthの値の逆数である歩進率w.rateずつ
「1」まで増加し、その後、歩進率w.rateずつ「0」ま
で減少する三角波を第1のエンベロープ env1の波形と
して作成している。
ば図25(f) に示されるように、歩進率w.rateずつ値
が増加する鋸歯状波を作成し、これの値を「1」で折り
返すことによって、第1エンベロープ env1を作成して
いる。但し、カウンタWINDOW1(n) の値が「2」を越え
た場合には、ステップF7705によって第1エンベロ
ープ env1の値を「0」としている。即ち、ホルマント
移動量f.vrと波形ピッチspitchとに基づいて定めたエン
ベロープ窓長lengthの値の逆数である歩進率w.rateずつ
「1」まで増加し、その後、歩進率w.rateずつ「0」ま
で減少する三角波を第1のエンベロープ env1の波形と
して作成している。
【0175】また、ステップF7703〜F7705に
続いて、第1位相ph1(読出しアドレスの歩進値)にホ
ルマント移動量f.vrを乗算した値を、第1の波形の先頭
アドレス start1と加算して、第1の波形の読出しアド
レスadrs1としている(ステップF7706)。
続いて、第1位相ph1(読出しアドレスの歩進値)にホ
ルマント移動量f.vrを乗算した値を、第1の波形の先頭
アドレス start1と加算して、第1の波形の読出しアド
レスadrs1としている(ステップF7706)。
【0176】また、読出しアドレス adres1と末尾アド
レスレジスタendadrs を比較し(ステップF770
7)、末尾アドレスレジスタendadrs よりも大きけれ
ば、「読出しアドレス adres1=末尾アドレスレジスタ
endadrs 」とする(ステップF7708)。これは読出
しアドレス adres1にリミットをかけて、末尾アドレス
endadrs の値を超えて読み出さないようにしているもの
である。
レスレジスタendadrs を比較し(ステップF770
7)、末尾アドレスレジスタendadrs よりも大きけれ
ば、「読出しアドレス adres1=末尾アドレスレジスタ
endadrs 」とする(ステップF7708)。これは読出
しアドレス adres1にリミットをかけて、末尾アドレス
endadrs の値を超えて読み出さないようにしているもの
である。
【0177】これに続いて、波形メモリから読出しアド
レス adres1で第1の波形の波形データdata1を読み出
す(ステップF7709)。このように読出しアドレス
adres1はその歩進幅がホルマント移動量f.vrによって
変更されるので、結果的には波形データdata1の読出し
速度が、ホルマント移動量f.vrによって変更されてい
る。これに続くステップF7710〜F7718では上
述と同じ処理を、第2の処理経路についても行う。
レス adres1で第1の波形の波形データdata1を読み出
す(ステップF7709)。このように読出しアドレス
adres1はその歩進幅がホルマント移動量f.vrによって
変更されるので、結果的には波形データdata1の読出し
速度が、ホルマント移動量f.vrによって変更されてい
る。これに続くステップF7710〜F7718では上
述と同じ処理を、第2の処理経路についても行う。
【0178】このようにして読み出された第1の処理経
路のデータdata1と第1エンベロープレジスタ env1の
値とフラグ S.FLG1を乗算したものと、第2の処理経路
のデータdata2に第2エンベロープレジスタ ENV2の値
とフラグ S.FLG2を乗算したものとを加算して出力out
とする(ステップF7719)。これにより、フラグS.
FLG1(n) または S.FLG2(n) が「0」の間は、合成す
る信号が「0」になるようにして、エンベロープ env
1、 env2が必ず「0」から始まるようにしている。
路のデータdata1と第1エンベロープレジスタ env1の
値とフラグ S.FLG1を乗算したものと、第2の処理経路
のデータdata2に第2エンベロープレジスタ ENV2の値
とフラグ S.FLG2を乗算したものとを加算して出力out
とする(ステップF7719)。これにより、フラグS.
FLG1(n) または S.FLG2(n) が「0」の間は、合成す
る信号が「0」になるようにして、エンベロープ env
1、 env2が必ず「0」から始まるようにしている。
【0179】次いで、 L.ENV(n)=L.ENV(n)+(LEVEL(n) −L.ENV(n)) *K とし、このレジスタL.ENV の値を出力out に乗じたもの
を最終的な出力out とする。すなわち、立上り、立下り
の特性が係数Kで決まるレベルエンベロープL.env を算
出し、これを出力に付加している。なお、ステップF7
720の演算では、レベルエンベロープL.env は「0」
にならないので、所定レベル以下になると、L.ENV(n)=
0となるように処理を追加してもよい。
を最終的な出力out とする。すなわち、立上り、立下り
の特性が係数Kで決まるレベルエンベロープL.env を算
出し、これを出力に付加している。なお、ステップF7
720の演算では、レベルエンベロープL.env は「0」
にならないので、所定レベル以下になると、L.ENV(n)=
0となるように処理を追加してもよい。
【0180】なお、上述の実施例では、再生波形に揺ら
ぎを付加する方法として、再生波形のピッチに変化を与
えるようにしたが、これに限らず、例えば波形データを
切り出す切出し窓の窓長lengthに変化を与えるようにす
ることもできるし、また再生波形の音量レベルに変化を
与えるものであってもよい。
ぎを付加する方法として、再生波形のピッチに変化を与
えるようにしたが、これに限らず、例えば波形データを
切り出す切出し窓の窓長lengthに変化を与えるようにす
ることもできるし、また再生波形の音量レベルに変化を
与えるものであってもよい。
【0181】本発明の実施にあたっては種々の変形形態
が可能である。例えば上述の実施例では、時間圧伸量操
作子TCOMP による設定値をアフタータッチ信号after.to
uchに基づいて修正するにあたり、 MTCOMP= TCOMP*〔1−(after.touch −$20)/$
60〕 という演算式を用いており、この演算式は、アフタータ
ッチが強ければ強いほど波形再生速度が遅くなり、最も
強いアフタータッチでは波形再生速度がほぼ停止すると
いうものであった。しかし、本発明はこのような修正の
演算式だけに限られるものではなく、例えば次のような
演算を行うなどの方法も可能である。
が可能である。例えば上述の実施例では、時間圧伸量操
作子TCOMP による設定値をアフタータッチ信号after.to
uchに基づいて修正するにあたり、 MTCOMP= TCOMP*〔1−(after.touch −$20)/$
60〕 という演算式を用いており、この演算式は、アフタータ
ッチが強ければ強いほど波形再生速度が遅くなり、最も
強いアフタータッチでは波形再生速度がほぼ停止すると
いうものであった。しかし、本発明はこのような修正の
演算式だけに限られるものではなく、例えば次のような
演算を行うなどの方法も可能である。
【0182】すなわち、次の演算式 MTCOMP= TCOMP*〔1−(after.touch −$20)/$
40〕 により時間圧伸量設定操作子TCOMP による設定値を修正
する。この演算式は、アフタータッチ有りと判定された
$20〜$7Fの範囲のアフタータッチ信号after.touc
h を、 (after.touch −$20)/$40 という演算により0〜2の範囲の値に正規化し、この正
規化した値を1から減じて時間圧伸量設定操作子TCOMP
による設定値に乗算してレジスタMTCOMPに設定するもの
である。この演算式によれば、アフタータッチ信号afte
r.touch が$00〜$19の範囲では時間圧伸量設定操
作子TCOMP で設定した値による再生速度で波形再生され
てアフタータッチによっては影響されず、$20〜$5
9の範囲ではアフタータッチが強くなるほど時間圧伸量
設定操作子TCOMP の検出値がゼロに向かって小さくなる
ように修正されて波形再生速度が次第に遅くなり、$6
0でゼロになって波形再生速度がほぼ停止して同じ波形
が繰り返して再生されるようになる。さらに、アフター
タッチ信号after.touch が$61〜$7Fの範囲では、
レジスタMTCOMPの値は負の値となり、この場合には操作
子設定テーブルの時間圧伸量tcomp が負の値となって進
行位置sphaseが逆方向に進むようになり、その結果、波
形が逆方向に戻りながら再生される。この逆方向再生の
場合の再生速度はアフタータッチが強ければ強いほど速
くなる。なお、この逆方向の再生が必要ないのであれ
ば、アフタータッチ信号after.touch の値にリミッタを
かけてレジスタMTCOMPの値が負にならないようにすれば
よい。
40〕 により時間圧伸量設定操作子TCOMP による設定値を修正
する。この演算式は、アフタータッチ有りと判定された
$20〜$7Fの範囲のアフタータッチ信号after.touc
h を、 (after.touch −$20)/$40 という演算により0〜2の範囲の値に正規化し、この正
規化した値を1から減じて時間圧伸量設定操作子TCOMP
による設定値に乗算してレジスタMTCOMPに設定するもの
である。この演算式によれば、アフタータッチ信号afte
r.touch が$00〜$19の範囲では時間圧伸量設定操
作子TCOMP で設定した値による再生速度で波形再生され
てアフタータッチによっては影響されず、$20〜$5
9の範囲ではアフタータッチが強くなるほど時間圧伸量
設定操作子TCOMP の検出値がゼロに向かって小さくなる
ように修正されて波形再生速度が次第に遅くなり、$6
0でゼロになって波形再生速度がほぼ停止して同じ波形
が繰り返して再生されるようになる。さらに、アフター
タッチ信号after.touch が$61〜$7Fの範囲では、
レジスタMTCOMPの値は負の値となり、この場合には操作
子設定テーブルの時間圧伸量tcomp が負の値となって進
行位置sphaseが逆方向に進むようになり、その結果、波
形が逆方向に戻りながら再生される。この逆方向再生の
場合の再生速度はアフタータッチが強ければ強いほど速
くなる。なお、この逆方向の再生が必要ないのであれ
ば、アフタータッチ信号after.touch の値にリミッタを
かけてレジスタMTCOMPの値が負にならないようにすれば
よい。
【0183】次に、本発明の他の実施例を説明する。前
述の実施例では、波形再生にあたりメモリ波形のピッチ
を使用することから、メモリ波形のピッチが検出可能な
ものでなければならない。しかし、楽音として使用する
波形には、必ずしもピッチ検出可能なものばかりではな
い。例えば、シンバルや太鼓類などの打楽器音、それか
ら和音演奏のように複数の楽音が同時に発音されている
ものなどがある。そこで、本実施例では、例えば本出願
人に係る特願平6−97608号(特開平7−3066
93号公報)に開示されているような従来からあるピッ
チシフタの技術を使用して、ピッチ変化に対応してホル
マントも変化する読出し方法を実現しており、前記再生
モードスイッチPLAYMODE.SW により第2再生モードplay
2に設定することにより実行される。
述の実施例では、波形再生にあたりメモリ波形のピッチ
を使用することから、メモリ波形のピッチが検出可能な
ものでなければならない。しかし、楽音として使用する
波形には、必ずしもピッチ検出可能なものばかりではな
い。例えば、シンバルや太鼓類などの打楽器音、それか
ら和音演奏のように複数の楽音が同時に発音されている
ものなどがある。そこで、本実施例では、例えば本出願
人に係る特願平6−97608号(特開平7−3066
93号公報)に開示されているような従来からあるピッ
チシフタの技術を使用して、ピッチ変化に対応してホル
マントも変化する読出し方法を実現しており、前記再生
モードスイッチPLAYMODE.SW により第2再生モードplay
2に設定することにより実行される。
【0184】この実施例の構成は基本的には前述の実施
例を用いているが、異なる点を以下に示す。 1. 波形メモリのデータ構成は先のものと同じとする
が、ピッチ検出ができない波形の場合は波形ピッチspit
chは記憶されていない。 4.「ボイス1の発音開始処理」を図39に示すように変
更 5.「ボイス2の発音開始処理」を図40に示すように変
更 7.「ボイス1からボイス2へのリンク発音処理」を図4
1に示すように変更 8.「ボイス2からボイス1へのリンク発音処理」を図4
2に示すように変更 9.「読出し処理」を図34、図35に示すように変更 「ループモード処理」を図36に示すように変更 「順方向再生処理」および「逆方向再生処理」を図3
7、図38に示すように変更 10. 「波形読出し処理」を図43、図44に示すように
変更
例を用いているが、異なる点を以下に示す。 1. 波形メモリのデータ構成は先のものと同じとする
が、ピッチ検出ができない波形の場合は波形ピッチspit
chは記憶されていない。 4.「ボイス1の発音開始処理」を図39に示すように変
更 5.「ボイス2の発音開始処理」を図40に示すように変
更 7.「ボイス1からボイス2へのリンク発音処理」を図4
1に示すように変更 8.「ボイス2からボイス1へのリンク発音処理」を図4
2に示すように変更 9.「読出し処理」を図34、図35に示すように変更 「ループモード処理」を図36に示すように変更 「順方向再生処理」および「逆方向再生処理」を図3
7、図38に示すように変更 10. 「波形読出し処理」を図43、図44に示すように
変更
【0185】上述の「ボイス1の発音開始処理」、「ボ
イス2の発音開始処理」、「ボイス1からボイス1への
リンク発音処理」、「ボイス1からボイス2へのリンク
発音処理」、「ボイス2からボイス1へのリンク発音処
理」のうちの主な変更点について説明する。
イス2の発音開始処理」、「ボイス1からボイス1への
リンク発音処理」、「ボイス1からボイス2へのリンク
発音処理」、「ボイス2からボイス1へのリンク発音処
理」のうちの主な変更点について説明する。
【0186】本実施例の「読出し処理」は図34、図3
5に示すものとする。この「読出し処理」と前述の実施
例の図27、図28の「読出し処理」との主な相違点を
以下に示す。ステップF63’の「ループモード処理」
は、図36に示すようになり、前記図29の「ループモ
ード処理」からステップF6306とF6307が削除
されたものになっている。ステップF65’の「順方向
再生処理」は、図37に示すようになり、前記図30の
「順方向再生処理」からステップF6503からF65
06を削除したものになっている。ステップF66’の
「逆方向再生処理」は、図38に示すようになり、前記
図31の「逆方向再生処理」からステップF6603か
らF6608を削除したものになっている。また、ステ
ップF70’では、前述の実施例のステップF70に換
えて、再生ピッチwidth およびエンベロープ窓長length
として係数env.p を設定するものである。また、前述の
実施例のステップ71、P72は削除する。そして、前
述の実施例のステップ75、F76に換えて、切出しの
先頭アドレスを設定するレジスタ START1、 START2に
進行位置レジスタSPHASEの値を設定するステップF7
5’、F76’とする。さらに、前述の実施例のステッ
プ77の「波形読出し処理」を後述するようなものにす
る。
5に示すものとする。この「読出し処理」と前述の実施
例の図27、図28の「読出し処理」との主な相違点を
以下に示す。ステップF63’の「ループモード処理」
は、図36に示すようになり、前記図29の「ループモ
ード処理」からステップF6306とF6307が削除
されたものになっている。ステップF65’の「順方向
再生処理」は、図37に示すようになり、前記図30の
「順方向再生処理」からステップF6503からF65
06を削除したものになっている。ステップF66’の
「逆方向再生処理」は、図38に示すようになり、前記
図31の「逆方向再生処理」からステップF6603か
らF6608を削除したものになっている。また、ステ
ップF70’では、前述の実施例のステップF70に換
えて、再生ピッチwidth およびエンベロープ窓長length
として係数env.p を設定するものである。また、前述の
実施例のステップ71、P72は削除する。そして、前
述の実施例のステップ75、F76に換えて、切出しの
先頭アドレスを設定するレジスタ START1、 START2に
進行位置レジスタSPHASEの値を設定するステップF7
5’、F76’とする。さらに、前述の実施例のステッ
プ77の「波形読出し処理」を後述するようなものにす
る。
【0187】なお、ステップF70’における係数env.
p は予め定められた定数で、 ENV1、 ENV2の周期を決
定するものである。
p は予め定められた定数で、 ENV1、 ENV2の周期を決
定するものである。
【0188】「波形読出し処理」本実施例の「波形読出
し処理」は図43、図44に示すものとする。この「波
形読出し処理」と前述の実施例の図32、図33の「波
形読出し処理」との主な相違点を以下に示す。ステップ
F7701、ステップF7710でWINDOW 1、WINDOW 2
に加算する量w.rateは、本実施例では先のステップF7
3で算出され、予め定められた係数env.p に設定された
lengthで、「w.rate=1/length」を満たす値とする。
また、前述の実施例のステップF7705、ステップF
7714は、本実施例ではWINDOW(n) は「2」によりも
大きくならないため、削除してある。また、ステップF
7706’、F7715’ではph1、ph2に対して、前
述の実施例のホルマント移動量f.vrに換えて、ピッチレ
ジスタPITCH(n)の値と変調値lfo.mod との積を乗じてい
る。
し処理」は図43、図44に示すものとする。この「波
形読出し処理」と前述の実施例の図32、図33の「波
形読出し処理」との主な相違点を以下に示す。ステップ
F7701、ステップF7710でWINDOW 1、WINDOW 2
に加算する量w.rateは、本実施例では先のステップF7
3で算出され、予め定められた係数env.p に設定された
lengthで、「w.rate=1/length」を満たす値とする。
また、前述の実施例のステップF7705、ステップF
7714は、本実施例ではWINDOW(n) は「2」によりも
大きくならないため、削除してある。また、ステップF
7706’、F7715’ではph1、ph2に対して、前
述の実施例のホルマント移動量f.vrに換えて、ピッチレ
ジスタPITCH(n)の値と変調値lfo.mod との積を乗じてい
る。
【0189】本実施例の処理の概要を図45、図46を
参照して以下に説明する。図45は再生音声を元の波形
データの音高より低くする場合の処理、図46は再生音
声を元の波形データの音高より高くする場合の処理を示
している。
参照して以下に説明する。図45は再生音声を元の波形
データの音高より低くする場合の処理、図46は再生音
声を元の波形データの音高より高くする場合の処理を示
している。
【0190】この処理においては、例えば図45におい
て、波形メモリに記憶されている波形データWave Date
をアドレス adres1で読み出し、その読み出した波形デ
ータに"ENV 1" を乗算して窓関数を付加したもの(図4
5の(2) )と、波形メモリに記憶されている波形デー
タ"Wave-Date" をアドレス adres2で読み出し、その読
み出した波形データに"ENV 2" を乗算して窓関数を付加
したもの(図45の(3))とを図面で示している。
(2) と(3) とを加算した信号がピッチシフトされた
信号となる。図46についても同様である。
て、波形メモリに記憶されている波形データWave Date
をアドレス adres1で読み出し、その読み出した波形デ
ータに"ENV 1" を乗算して窓関数を付加したもの(図4
5の(2) )と、波形メモリに記憶されている波形デー
タ"Wave-Date" をアドレス adres2で読み出し、その読
み出した波形データに"ENV 2" を乗算して窓関数を付加
したもの(図45の(3))とを図面で示している。
(2) と(3) とを加算した信号がピッチシフトされた
信号となる。図46についても同様である。
【0191】再生音高を元の波形データの音高より低く
する場合、図45に示すように、波形メモリの読出し速
度が「1」よりも小さくなり、 ENV1が付加される波形
データは、WD+0 、WD+2 、WD+4 、WD+6 ・・・とな
り、 ENV2が付加される波形データは、WD+1 、
WD+3 、WD+5 ・・・となって、これらが伸長されてW
D+0’、WD+2 ’、WD+4 ’、WD+6 ’、および
WD+1 ’ 、WD+3 ’ 、WD+5 ’となる。
する場合、図45に示すように、波形メモリの読出し速
度が「1」よりも小さくなり、 ENV1が付加される波形
データは、WD+0 、WD+2 、WD+4 、WD+6 ・・・とな
り、 ENV2が付加される波形データは、WD+1 、
WD+3 、WD+5 ・・・となって、これらが伸長されてW
D+0’、WD+2 ’、WD+4 ’、WD+6 ’、および
WD+1 ’ 、WD+3 ’ 、WD+5 ’となる。
【0192】反対に、再生音高を元の波形データの音高
より高くする場合、図46に示すように、波形メモリの
読出し速度が1よりも大きくなり、 ENV1が付加される
波形データは、WU+0 、WU+2 、WU+4 、WU+6 ・・・
となり、 ENV2が付加される波形データは、WU+1 、W
U+3 、WU+5 ・・・となって、これらが圧縮されてW
U+0 ’、WU+2 ’、WU+4 ’、WU+6 ’、および
WU+1 ’ 、WU+3 ’ 、WU+ 5 ’となる。
より高くする場合、図46に示すように、波形メモリの
読出し速度が1よりも大きくなり、 ENV1が付加される
波形データは、WU+0 、WU+2 、WU+4 、WU+6 ・・・
となり、 ENV2が付加される波形データは、WU+1 、W
U+3 、WU+5 ・・・となって、これらが圧縮されてW
U+0 ’、WU+2 ’、WU+4 ’、WU+6 ’、および
WU+1 ’ 、WU+3 ’ 、WU+ 5 ’となる。
【0193】なお、波形メモリの読出し速度は、「波形
読出し処理」の「PH1(n) *PITCH(n) *lfo.mod 」と
「PH2(n) *PITCH (n) *lfo.mod 」の変化速度に対応
する。
読出し処理」の「PH1(n) *PITCH(n) *lfo.mod 」と
「PH2(n) *PITCH (n) *lfo.mod 」の変化速度に対応
する。
【0194】また、この第2再生モードplay2はピッチ
検出ができない波形を再生する場合として説明したが、
フォルマントがピッチ変化に対応して移動するが、ピッ
チ検出ができる場合の波形も再生することができ、当
然、前述のようなループ再生も第1再生モードplay1と
同様に可能であることはその構成から明らかである。
検出ができない波形を再生する場合として説明したが、
フォルマントがピッチ変化に対応して移動するが、ピッ
チ検出ができる場合の波形も再生することができ、当
然、前述のようなループ再生も第1再生モードplay1と
同様に可能であることはその構成から明らかである。
【0195】なお、以上の実施例ではループポイントの
アドレス(loopsa、loopea)を間接的に指示するパラメ
ータ記憶部のアドレスとしてマーク記憶部に(loopstar
t 、loopend )記憶していたが、これは第1再生モード
play1においてノーマルループ再生したときにループモ
ード処理のサブルーチンのステップF6307で値がジ
ャンプするカウンタSCNTの値を算出することができるよ
うにしたためで、例えばこのような必要のない、第1再
生モードplay1のオルタネートループや、第2再生モー
ドplay2だけであれば、マーク記憶部に直接ループポイ
ント(loopsa、loopea)を記憶するようにして、このマ
ーク記憶部からループ情報レジスタのloopsaやloopeaを
設定するようにしてもよい。
アドレス(loopsa、loopea)を間接的に指示するパラメ
ータ記憶部のアドレスとしてマーク記憶部に(loopstar
t 、loopend )記憶していたが、これは第1再生モード
play1においてノーマルループ再生したときにループモ
ード処理のサブルーチンのステップF6307で値がジ
ャンプするカウンタSCNTの値を算出することができるよ
うにしたためで、例えばこのような必要のない、第1再
生モードplay1のオルタネートループや、第2再生モー
ドplay2だけであれば、マーク記憶部に直接ループポイ
ント(loopsa、loopea)を記憶するようにして、このマ
ーク記憶部からループ情報レジスタのloopsaやloopeaを
設定するようにしてもよい。
【0196】
【発明の効果】以上のループ再生(時間軸伸張)によれ
ば、波形データの有しているビブラート効果をそのまま
再生することができるため、波形データに適した自然な
ビブラート効果が得られる。さらに、請求項3に係る発
明では、進行位置の変化を元の波形データの時間変化と
同じにしておけば、再生ピッチが変化しても元の波形デ
ータのビブラート効果をそのまま再現することができ
る。また、進行位置の変化速度をアフタータッチ等の操
作子で制御すればビブラート効果を制御することができ
る。
ば、波形データの有しているビブラート効果をそのまま
再生することができるため、波形データに適した自然な
ビブラート効果が得られる。さらに、請求項3に係る発
明では、進行位置の変化を元の波形データの時間変化と
同じにしておけば、再生ピッチが変化しても元の波形デ
ータのビブラート効果をそのまま再現することができ
る。また、進行位置の変化速度をアフタータッチ等の操
作子で制御すればビブラート効果を制御することができ
る。
【図1】本発明にかかる一実施例としての波形発生装置
の全体的なブロック構成を示す図である。
の全体的なブロック構成を示す図である。
【図2】実施例装置における操作子設定テーブルの構成
例を示す図である。
例を示す図である。
【図3】実施例装置におけるキー情報レジスタ、ループ
情報レジスタ、変調情報レジスタ、オリジナルピッチ情
報レジスタの構成例を示す図である。
情報レジスタ、変調情報レジスタ、オリジナルピッチ情
報レジスタの構成例を示す図である。
【図4】実施例装置における波形メモリのパラメータ記
憶部のデータ構成例を示す図である。
憶部のデータ構成例を示す図である。
【図5】実施例装置における波形メモリの波形データ記
憶部のデータ構成例を示す図である。
憶部のデータ構成例を示す図である。
【図6】実施例装置における波形メモリのマーク記憶部
のデータ構成例を示す図である。
のデータ構成例を示す図である。
【図7】実施例装置におけるメインルーチンを示すフロ
ーチャートである。
ーチャートである。
【図8】実施例装置における録音ルーチンを示すフロー
チャートである。
チャートである。
【図9】実施例装置における編集ルーチンおよび再生ル
ーチンを示すフローチャートである。
ーチンを示すフローチャートである。
【図10】実施例装置における再生処理ルーチン(1/
3)の詳細を示すフローチャートである。
3)の詳細を示すフローチャートである。
【図11】実施例装置における再生処理ルーチン(2/
3)の詳細を示すフローチャートである。
3)の詳細を示すフローチャートである。
【図12】実施例装置における再生処理ルーチン(3/
3)の詳細を示すフローチャートである。
3)の詳細を示すフローチャートである。
【図13】実施例装置における変調値情報の演算処理の
詳細を示すフローチャートである。
詳細を示すフローチャートである。
【図14】実施例装置における変調値情報の演算処理で
生成される各種信号波形のタイムチャートである。
生成される各種信号波形のタイムチャートである。
【図15】実施例装置におけるDSPでのメインルーチ
ンを示すフローチャートである。
ンを示すフローチャートである。
【図16】実施例装置におけるDSPでのメインルーチ
ン中の「ループ情報の処理」を示すフローチャートであ
る。
ン中の「ループ情報の処理」を示すフローチャートであ
る。
【図17】実施例装置におけるDSPでのメインルーチ
ン中の「キー情報の処理」を示すフローチャートであ
る。
ン中の「キー情報の処理」を示すフローチャートであ
る。
【図18】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1の消音処理」を示すフローチャートで
ある。
ン中の「ボイス1の消音処理」を示すフローチャートで
ある。
【図19】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス2の消音処理」を示すフローチャートで
ある。
ン中の「ボイス2の消音処理」を示すフローチャートで
ある。
【図20】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1の発音開始処理」を示すフローチャー
トである。
ン中の「ボイス1の発音開始処理」を示すフローチャー
トである。
【図21】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス2の発音開始処理」を示すフローチャー
トである。
ン中の「ボイス2の発音開始処理」を示すフローチャー
トである。
【図22】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1からボイス1へのリンク発音処理」を
示すフローチャートである。
ン中の「ボイス1からボイス1へのリンク発音処理」を
示すフローチャートである。
【図23】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス1からボイス2へのリンク発音処理」を
示すフローチャートである。
ン中の「ボイス1からボイス2へのリンク発音処理」を
示すフローチャートである。
【図24】実施例装置におけるDSPでのメインルーチ
ン中の「ボイス2からボイス1へのリンク発音処理」を
示すフローチャートである。
ン中の「ボイス2からボイス1へのリンク発音処理」を
示すフローチャートである。
【図25】「読出し処理」の動作概要(ホルマント特性
変更なし、高域にピッチシフト)を説明するためのタイ
ムチャートである。
変更なし、高域にピッチシフト)を説明するためのタイ
ムチャートである。
【図26】「読出し処理」の動作概要(ホルマント特性
を低域にシフト)を説明するためのタイムチャートであ
る。
を低域にシフト)を説明するためのタイムチャートであ
る。
【図27】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン(1/2)を示すフロー
チャートである。
ン中の「読出し処理」ルーチン(1/2)を示すフロー
チャートである。
【図28】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン(2/2)を示すフロー
チャートである。
ン中の「読出し処理」ルーチン(2/2)を示すフロー
チャートである。
【図29】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン中の「ループモード処
理」ルーチンを示すフローチャートである。
ン中の「読出し処理」ルーチン中の「ループモード処
理」ルーチンを示すフローチャートである。
【図30】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン中の「順方向再生処理」
ルーチンを示すフローチャートである。
ン中の「読出し処理」ルーチン中の「順方向再生処理」
ルーチンを示すフローチャートである。
【図31】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン中の「逆方向再生処理」
ルーチンを示すフローチャートである。
ン中の「読出し処理」ルーチン中の「逆方向再生処理」
ルーチンを示すフローチャートである。
【図32】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(1/2)を示すフローチャートである。
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(1/2)を示すフローチャートである。
【図33】実施例装置におけるDSPでのメインルーチ
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(2/2)を示すフローチャートである。
ン中の「読出し処理」ルーチン中の「波形読出し処理」
ルーチン(2/2)を示すフローチャートである。
【図34】他の実施例装置におけるDSPでのメインル
ーチン中の「読出し処理」ルーチン(1/2)を示すフ
ローチャートである。
ーチン中の「読出し処理」ルーチン(1/2)を示すフ
ローチャートである。
【図35】他の実施例装置におけるDSPでのメインル
ーチン中の「読出し処理」ルーチン(2/2)を示すフ
ローチャートである。
ーチン中の「読出し処理」ルーチン(2/2)を示すフ
ローチャートである。
【図36】他の実施例装置におけるDSPでのメインル
ーチン中の「読出し処理」ルーチン中の「ループモード
処理」ルーチンを示すフローチャートである。
ーチン中の「読出し処理」ルーチン中の「ループモード
処理」ルーチンを示すフローチャートである。
【図37】他の実施例装置におけるDSPでのメインル
ーチン中の「読出し処理」ルーチン中の「順方向再生処
理」ルーチンを示すフローチャートである。
ーチン中の「読出し処理」ルーチン中の「順方向再生処
理」ルーチンを示すフローチャートである。
【図38】他の実施例装置におけるDSPでのメインル
ーチン中の「読出し処理」ルーチン中の「逆方向再生処
理」ルーチンを示すフローチャートである。
ーチン中の「読出し処理」ルーチン中の「逆方向再生処
理」ルーチンを示すフローチャートである。
【図39】他の実施例装置におけるDSPでのメインル
ーチン中の「ボイス1の発音開始処理」を示すフローチ
ャートである。
ーチン中の「ボイス1の発音開始処理」を示すフローチ
ャートである。
【図40】他の実施例装置におけるDSPでのメインル
ーチン中の「ボイス2の発音開始処理」を示すフローチ
ャートである。
ーチン中の「ボイス2の発音開始処理」を示すフローチ
ャートである。
【図41】他の実施例装置におけるDSPでのメインル
ーチン中の「ボイス1からボイス1へのリンク発音処
理」を示すフローチャートである。
ーチン中の「ボイス1からボイス1へのリンク発音処
理」を示すフローチャートである。
【図42】他の実施例装置におけるDSPでのメインル
ーチン中の「ボイス2からボイス1へのリンク発音処
理」を示すフローチャートである。
ーチン中の「ボイス2からボイス1へのリンク発音処
理」を示すフローチャートである。
【図43】他の実施例装置におけるDSPでのメインル
ーチン中の「読出し処理」ルーチン中の「波形読出し処
理」ルーチン(1/2)を示すフローチャートである。
ーチン中の「読出し処理」ルーチン中の「波形読出し処
理」ルーチン(1/2)を示すフローチャートである。
【図44】他の実施例装置におけるDSPでのメインル
ーチン中の「読出し処理」ルーチン中の「波形読出し処
理」ルーチン(2/2)を示すフローチャートである。
ーチン中の「読出し処理」ルーチン中の「波形読出し処
理」ルーチン(2/2)を示すフローチャートである。
【図45】他の実施例装置における「読出し処理」の動
作概要(低域にピッチシフト)を説明するためのタイム
チャートである。
作概要(低域にピッチシフト)を説明するためのタイム
チャートである。
【図46】他の実施例装置における「読出し処理」の動
作概要(高域にピッチシフト)を説明するためのタイム
チャートである。
作概要(高域にピッチシフト)を説明するためのタイム
チャートである。
【図47】実施例装置における「波形データのピッチ変
化抽出方法」を説明するたのフローチャートである。
化抽出方法」を説明するたのフローチャートである。
【図48】実施例装置における「波形データのピッチ変
化抽出方法」で、ピッチ検出により検出したピッチデー
タ列を示す図である。
化抽出方法」で、ピッチ検出により検出したピッチデー
タ列を示す図である。
【図49】実施例装置における「波形データのピッチ変
化抽出方法」で、ピッチ検出により検出したピッチデー
タ列の具体例を示す図である。
化抽出方法」で、ピッチ検出により検出したピッチデー
タ列の具体例を示す図である。
【図50】実施例装置における「波形データのピッチ変
化抽出方法」で、フィルタリング処理したピッチデータ
列を示す図である。
化抽出方法」で、フィルタリング処理したピッチデータ
列を示す図である。
4 A/D変換器 8 DSP(ディジタル信号プロセッサ) 12 波形メモリ 14 D/A変換器 20 操作子群 22 CPU(中央処理装置) 30 キーボード 31 RAM(ランダム・アクセス・メモリ) 32 ROM(リード・オンリー・メモリ) 33 ハードディスク装置
Claims (8)
- 【請求項1】ビブラートがかかった音の波形データを記
憶する記憶手段と、 該波形データのうちからビブラートの整数倍周期区間を
ループ区間として設定する設定手段と、 該設定手段で設定したループ区間を繰り返して再生する
再生手段とを備えた波形再生装置。 - 【請求項2】該設定手段は、 ビブラートがかかった音の波形データからピッチ情報を
その時間軸に従って検出するピッチ検出手段と、 該検出したピッチ情報からビブラートの整数倍周期区間
を示す区間情報を設定する区間設定手段とからなる請求
項1記載の波形再生装置。 - 【請求項3】該設定手段は、 波形データのピッチ情報をその時間軸に従って順次検出
するピッチ検出手段と、 該ピッチ検出手段で検出したピッチ情報が、その前また
は後のピッチ情報と比較して変化が大きい時にその変化
を小さな変化となる値に補正するピッチ情報補正手段
と、 該ピッチ情報補正手段で補正が施されたピッチ情報を含
め、該検出手段により得たピッチ情報にフィルタリング
処理を施すフィルタリング手段と、 該フィルタリング手段でフィルタリングした後のピッチ
情報列に基づいてビブラートの整数倍周期区間を示す区
間情報を設定する区間設定手段とを含み構成される請求
項1記載の波形再生装置。 - 【請求項4】該記憶手段は、該ループ区間を示す区間情
報を波形データとともに予め記憶しており、 該設定手段は、該区間情報によって該波形データのうち
から該ループ区間を設定するものである請求項1記載の
波形再生装置。 - 【請求項5】該再生手段は、 任意に設定された変化量で順次変化して該波形データに
おける時間軸上の経過に従った位置を指定する位置情報
を順次に生成する位置情報生成手段と、 再生ピッチを指定する再生ピッチ指定手段と、 再生ピッチ指定手段で指定された再生ピッチに応じた周
期で、該位置情報で指定される近傍の波形データを少な
くとも1周期切り出して波形を再生する波形再生手段と
を含み構成される請求項1〜4のいずれかに記載の波形
再生装置。 - 【請求項6】該位置情報生成手段は、該ループ区間を時
間軸上で順方向に進んで該ループ区間の終点に至った
ら、該ループ区間の開始点に飛び戻って再び順方向に進
むように該位置情報を順次に生成するように構成された
請求項5記載の波形再生装置。 - 【請求項7】該位置情報生成手段は、該ループ区間を時
間軸上で順方向に進んで該ループ区間の終点に至った
ら、進行方向を逆転させて該終点から該ループ区間の開
始点に向かって逆方向に進むというように、該ループ区
間の開始点または終点に至ったらその進行方向を逆転さ
せて該ループ区間を繰り返す位置情報を順次に生成する
ように構成された請求項5記載の波形再生装置。 - 【請求項8】波形データのピッチ情報をその時間軸に従
って逐次に検出するピッチ検出過程と、 該ピッチ検出過程で検出したピッチ情報が、その前また
は後のピッチ情報と比較して変化が大きい時にその変化
を小さな変化となる値に補正するピッチ情報補正過程
と、 該ピッチ情報補正過程で補正が施されたピッチ情報を含
め、該検出手段により得たピッチ情報にフィルタリング
処理を施すフィルタリング過程とで、波形データのピッ
チ変化を抽出する波形データのピッチ変化抽出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10143184A JPH1152953A (ja) | 1997-06-02 | 1998-05-25 | 波形データのピッチ変化抽出方法および波形再生装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9-143939 | 1997-06-02 | ||
JP14393997 | 1997-06-02 | ||
JP10143184A JPH1152953A (ja) | 1997-06-02 | 1998-05-25 | 波形データのピッチ変化抽出方法および波形再生装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1152953A true JPH1152953A (ja) | 1999-02-26 |
Family
ID=26474975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10143184A Pending JPH1152953A (ja) | 1997-06-02 | 1998-05-25 | 波形データのピッチ変化抽出方法および波形再生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH1152953A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007072231A (ja) * | 2005-09-08 | 2007-03-22 | Roland Corp | ピッチ制御プログラム |
JP2007219448A (ja) * | 2006-02-20 | 2007-08-30 | Yamaha Corp | 楽音合成装置及びプログラム |
JP2008107547A (ja) * | 2006-10-25 | 2008-05-08 | Yamaha Corp | 楽音合成装置及びプログラム |
JP2011118220A (ja) * | 2009-12-04 | 2011-06-16 | Yamaha Corp | 音響処理装置 |
JP2011138075A (ja) * | 2009-12-29 | 2011-07-14 | Yamaha Corp | 楽音生成装置及びプログラム |
-
1998
- 1998-05-25 JP JP10143184A patent/JPH1152953A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007072231A (ja) * | 2005-09-08 | 2007-03-22 | Roland Corp | ピッチ制御プログラム |
JP2007219448A (ja) * | 2006-02-20 | 2007-08-30 | Yamaha Corp | 楽音合成装置及びプログラム |
JP2008107547A (ja) * | 2006-10-25 | 2008-05-08 | Yamaha Corp | 楽音合成装置及びプログラム |
JP2011118220A (ja) * | 2009-12-04 | 2011-06-16 | Yamaha Corp | 音響処理装置 |
JP2011138075A (ja) * | 2009-12-29 | 2011-07-14 | Yamaha Corp | 楽音生成装置及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6316710B1 (en) | Musical synthesizer capable of expressive phrasing | |
US6169241B1 (en) | Sound source with free compression and expansion of voice independently of pitch | |
JP3718919B2 (ja) | カラオケ装置 | |
US20020093841A1 (en) | Waveform data analysis method and apparatus suitable for waveform expansion/compression control | |
US6629067B1 (en) | Range control system | |
JPH1152953A (ja) | 波形データのピッチ変化抽出方法および波形再生装置 | |
JP3645030B2 (ja) | 電子楽器 | |
JP3116937B2 (ja) | カラオケ装置 | |
JP4057700B2 (ja) | 波形再生装置 | |
JPH10260685A (ja) | 波形発生装置 | |
JP5141407B2 (ja) | 楽曲再生装置 | |
JP4506147B2 (ja) | 演奏再生装置及び演奏再生制御プログラム | |
JP3763493B2 (ja) | 波形発生装置 | |
JP3795167B2 (ja) | 波形発生装置 | |
JP4565846B2 (ja) | ピッチ変換装置 | |
JPH10198380A (ja) | 波形発生装置 | |
JP3746578B2 (ja) | 波形発生装置 | |
JPH10116088A (ja) | 効果付与装置 | |
JP2904045B2 (ja) | カラオケ装置 | |
JP3173310B2 (ja) | ハーモニー生成装置 | |
JP2003036082A (ja) | ピッチ変換装置 | |
JP4236570B2 (ja) | 波形再生装置および波形再生プログラム | |
JPH04331990A (ja) | 音声電子楽器 | |
JP4015267B2 (ja) | 波形発生装置 | |
JP2572317B2 (ja) | 自動演奏装置 |