JP3795167B2 - 波形発生装置 - Google Patents
波形発生装置 Download PDFInfo
- Publication number
- JP3795167B2 JP3795167B2 JP00765397A JP765397A JP3795167B2 JP 3795167 B2 JP3795167 B2 JP 3795167B2 JP 00765397 A JP00765397 A JP 00765397A JP 765397 A JP765397 A JP 765397A JP 3795167 B2 JP3795167 B2 JP 3795167B2
- Authority
- JP
- Japan
- Prior art keywords
- waveform
- pitch
- value
- information
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は電子楽器の波形発生装置、更に詳しくはメモリに記憶された各種の音の波形データを読み出して再生する波形発生装置に関する。
かかる波形発生装置は例えばサンプラと呼ばれているような電子楽器に用いられる。
【0002】
本出願人は、先に、音声等の波形について、元の波形のホルマント特性を維持したままそのピッチを任意のものに変換する波形発生装置を提案した。この波形発生装置は、連続した複数周期からなる波形信号の振幅情報を波形データとしてメモリに記憶しておき、任意に設定された変化量で順次変化して該波形データにおける時間軸上の経過に従った位置を指定する位置情報を順次に生成する位置情報生成手段を設け、使用者が再生ピッチ指定手段で所望の再生ピッチを指定し、これにより波形再生手段により再生ピッチ指定手段で指定された再生ピッチに応じた周期で、該位置情報で指定される近傍の波形データを少なくとも1周期切り出して再生波形信号を生成することで、元の波形のピッチを指定した再生ピッチに変換することができる。
【0003】
本発明は例えば上記のような波形発生装置において、アフタータッチによる演奏効果をさらに付加することにより、演奏表現を一層豊富にすることを目的とする。
【0004】
【課題を解決するための手段】
上記の課題を解決するために、本発明に係る波形発生装置は、音の波形信号の振幅情報を波形データとして記憶した記憶手段と、任意に設定された変化量で順次変化して該波形データにおける時間軸上の経過に従った位置を指定する位置情報を順次に生成する位置情報生成手段と、波形再生の開始/終了を指示するキーボードの押鍵後の操作に応じたアフタータッチ情報を入力するアフタータッチ情報入力手段と、該アフタータッチ情報入力手段で入力したアフタータッチ情報に基づいて該位置情報生成手段で生成される位置情報の変化量を修正する位置情報修正手段と、再生ピッチを該位置情報とは独立に指定する再生ピッチ指定手段と、再生ピッチ指定手段で指定された再生ピッチに応じた周期で、該位置情報修正手段で修正された変化量で変化する位置情報で指定される近傍の波形データを少なくとも1周期切り出して、該指定された再生ピッチの再生波形信号を生成する波形再生手段とを備えて構成される。この波形発生装置によれば、位置情報生成手段で生成される位置情報による再生速度で波形を再生するにあたり、再生波形信号のピッチには影響を与えない波形信号の再生速度を、アフタータッチ情報入力手段で入力したアフタータッチ情報で変化させることによって、再生波形信号のピッチとは独立して波形再生速度(再生時間)を変化させることができるから、演奏表現が豊かになる。また再生ピッチ指定手段で指定した再生ピッチで波形再生することができる。
【0005】
上記の波形発生装置は、前記位置情報修正手段で修正された位置情報の変化量が所定値よりも小さくなったときに、該波形再生手段で生成される再生波形に揺らぎを付加する揺らぎ付加手段をさらに備えるよう構成することができる。この波形発生装置によれば、アフタータッチ操作等により同じ波形を繰り返し再生するようになる場合には、再生波形にビブラート等の揺らぎが付加されるので、自然な感じの再生波形の音を生成することができる。
【0008】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図1は本発明に係る一実施例としての電子楽器の波形発生装置が示される。図1において、12は再生する波形データを記憶しておくRAMからなる波形メモリである。8は波形メモリ12の波形データの再生処理等をディジタル処理により行うDSP(ディジタル信号プロセッサ)である。14はDSP8から再生出力されるディジタル波形信号をアナログ波形信号にD/A変換して出力するD/A変換器、4は入力したアナログ波形信号をディジタル波形信号にA/D変換してDSP8に入力するA/D変換器である。このA/D変換器4から入力されたディジタル波形信号はDSP8から波形メモリ12に波形データとして格納することができる。
【0009】
22はCPU(中央処理装置)であって、DSP8の制御、操作子群20やキーボード30の状態検出と処理など装置の全体的な制御を行う。20は操作子群であって、モードスイッチMODE.SW 、バンクスイッチBANK.SW 、アサインスイッチASSIGN.SW 、ホルマント設定操作子F.VR、時間圧伸量設定操作子TCOMP 等の複数の操作子からなる。
【0010】
30は演奏操作を行うキーボードであり、操作したキーに対応する種々の楽音情報を演奏のために発生する他に、押下波形メモリ12の波形データの再生にあたってキーのオン/オフにより再生の音高と再生の開始/終了を指示するためにも用いられる。また、このキーボード30はアフタータッチ機能も備えており、キーを押鍵した後にさらに押下を続けるとその押下の強さに対応した大きさのアフタータッチ信号after.toutchが継続して発生されるようになっている。本実施例ではアフタータッチ機能の一つとして、キーを押した状態でさらにキーを押し込んだ場合にその押下の強さに対応して波形信号の再生に要する時間(すなわち再生速度)が変わるようになっている。このアフタータッチ信号after.toutchは押下の強さに応じて$00〜$7Fの範囲の値をとり得る。なお、ここでは$7F等の先頭に付けた「$」は16進表示を意味するものとする。
【0011】
33は多くの波形データ等を記憶しておく大容量のハードディスク装置であり、その波形データは必要に応じて波形メモリ12に転送される。31はCPU22の演算処理等に使用されるワーキングメモリとしてのRAM、32はCPU22やDSP8のプログラムやパラメータ等を記憶しておくメモリとしてのROMである。
【0012】
以下に、操作子群20の各操作子の機能について説明する。
モードスイッチMODE.SW は、録音モード、編集モード、再生モードの一つを選択するためのスイッチである。ここで、録音モード (RECモード) は外部から入力された楽音信号を録音(サンプリング) するモード、編集モード (EDITモード) は録音モードでサンプリングした波形を編集するモード、再生モード(PLAYモード) は波形メモリ12に記憶した波形データをキーボードの演奏操作に応じて再生するモードである。
【0013】
バンクスイッチBANK.SW は、波形メモリ12に記憶されている複数の波形データのうちから一つを選択するためのスイッチである。
【0014】
アサインスイッチASSIGN.SW は、発音モードを設定するためのスイッチであり、以下の4つのモードを設定できる。
〔モノフォニック1:MONO1〕 1ボイスのみを発音するモードであり、レガート奏法がされても、後の押鍵によってリトリガを行うモードである。
〔モノフォニック2:MONO2〕 1ボイスのみを発音するモードであり、レガート奏法がされたら、リトリガを行なわないモードである。
〔ポリフォニック1:POLY1〕 複数ボイスを発音可能なモードであり、レガート奏法がされても、後の押鍵によってリトリガを行うモードである。
〔ポリフォニック2:POLY2〕 複数ボイスを発音可能なモードであり、レガート奏法がされたら、リトリガを行なわないモードである。
ここで、「レガート奏法」とはキーボードの1番目のキーを押したままの状態で2番目のキーを押す奏法であり、「リトリガ」とは波形メモリ12の波形データの再生を当該波形データの先頭部分からやり直す処理をいう。
【0015】
ホルマント設定操作子F.VRは、ホルマントの原波形データからのシフト量を設定する操作子であり、後述するホルマント移動量f.vr(ホルマント変更係数とも称する)を設定する。
【0016】
時間圧伸量設定操作子TCOMP は、再生波形データの時間軸上の時間圧伸量tcomp を設定する操作子である。
【0017】
上記のDSP8は操作子設定テーブル、キー情報レジスタ、変調情報レジスタを備えている。以下、これらについて説明する。
〔操作子設定テーブル〕
図2には操作子設定テーブルの例が示される。この操作子設定テーブルはDSP8に備えられており、後述するCPU22の〔再生処理〕において、操作子群20の操作状態を検出し、その操作状態に対応してこの操作子設定テーブルの内容が設定される。操作子設定テーブルの内容の項目としては、バンク番号bank、リンクモードlink.mode 、ホルマント移動量f.vr、時間圧縮/伸長伸量tcomp (以下、時間圧伸量と記す) がある。
【0018】
ここで、バンク番号bankは、操作子群20のバンクスイッチBANK.SW で設定 されたバンク番号が設定され、そのバンク番号bankに従って、再生する波形データ(波形領域番号)の選択が行われる。
【0019】
リンクモードlink.mode は、操作子群20のアサインスイッチASSIGN.SW がモノフォニック2またはポリフォニック2のモード(すなわちリトリガしないモード)を設定した時には“1”(ONを意味する)に設定され、モノフォニック1またはポリフォニック1のモード(すなわちリトリガするモード)を設定した時には“0”(OFFを意味する)に設定される。すなわち、リトリガを行うか否かを設定するレジスタとなる。
【0020】
ホルマント移動量f.vrは、波形メモリ12から読み出して再生する波形データのホルマントの移動量(シフト量)が設定されるもので、波形メモリ12中の波形データは、このホルマント移動量f.vrが「1」である時は、原波形と同じホルマントで再生され、「1」より大きい値であると、ホルマントを原波形よりも高域側にシフトして再生され、「1」よりも小さい値であると、ホルマントを原波形よりも低域側にシフトして再生される。
【0021】
時間圧伸量tcomp は、波形メモリ12に記憶された波形データを再生する時における時間圧縮/伸長の大きさ(すなわち波形再生速度)を数値設定するものである。この時間圧伸量tcomp が「1」であると、原波形の時間変化と同じ速さで時間変化し、「1」より大きい値であると、原波形よりも速い時間変化をして再生時間が短くなり、「1」よりも小さい値であると、原波形よりも遅い時間変化をして再生時間が長くなる。
【0022】
〔キー情報レジスタ〕
DSP8はキー情報レジスタを備えており、後述するCPU22の〔再生処理〕において、キーボード30の操作が検出され、割当処理によってキー情報がDSP8に転送されて、このキー情報レジスタに一時的に記憶される。図3にこのキー情報レジスタの構成例が示される。キー情報は、キーオン/キーオフ情報key.on/off、音高情報pitch 、ボイスモジュール情報voice.No、レベル情報level からなる。例えば、
キーオン情報:「key.on/pitch /voice.No/level 」
キーオフ情報:「key.off /pitch /voice.No/level 」
の構成からなる。
【0023】
なお、このキー情報レジスタは、DSP8での受取り処理の前に、CPU22から新たなキー情報が転送されることがある場合には、複数のキー情報を一時記憶することが可能な、シフトレジスタのような構成で、さらに先に入力した情報を先に出力する構成にすればよい。すなわち、MIDI信号の受信処理と同様な処理とする。
【0024】
〔変調情報レジスタ〕
図3には変調情報レジスタも示される。この変調情報レジスタには変調値情報lfo.mod が格納される。後述の〔LFO.MODの演算処理] においては、変調信号であることを識別する変調情報識別情報mod.inf と、演算によって得られた変調値情報lfo.mod とが組み合わされて転送される。
【0025】
波形メモリ12はパラメータ記憶部と波形データ記憶部とで構成される。これらの記憶部のデータ構成を図4、図5に示す。図4はパラメータ記憶部のデータ構成、図5は波形データ記憶部のデータ構成である。パラメータ記憶部は$800番地毎に、また波形データ記憶部は$8000番地毎に各々セグメントで区切られており、各々のセグメントはアドレスの若い方から順番にwave0領域、wave1領域 、wave2領域 ・・・のように波形領域番号が付けられる。例えばある一つの波形についてそのパラメータをパラメータ記憶部のwave0領域に格納したら、その波形の波形データはそのパラメータに対応して波形データ記憶部の同じ番号のwave0領域に格納する。なお、図4、図5におけるアドレスは16進数で表わされており、以降、本明細書では、$800のように数値の先頭に$を付して16進数であることを示す。
【0026】
まず、パラメータ記憶部のデータ構成を図4に従って説明する。例えばwave0領域において、アドレス$0000 に格納されているものはヘッダheaderであり、そのデータ内容としてそのwave0領域における末尾アドレスendadrs が格納され、アドレス$0001 以降には開始アドレス/ピッチ情報sadrs/spitchが格納される。開始アドレス/ピッチ情報のうちのピッチ情報である波形ピッチspitchは波形データ記憶部に格納された波形の1周期分のアドレス幅のことであり、開始アドレスsadrs は前記波形ピッチspitchで表されるアドレス幅の波形が1周期から複数周期続く波形区間の開始アドレスである(以下、1周期から複数周期続く波形区間を単に波形区間という) 。開始アドレス/ピッチ情報としては一つの波形区間の開始アドレスsadrs と波形ピッチspitchとを一対として、波形全体にわたるこれらの対が時系列にパラメータ記憶部に格納される。例えば波形データの最初の波形区間が開始アドレスsadrs0で波形ピッチspitch0 であり、次に続く波形区間が開始アドレスsadrs1で波形ピッチspitch1 である場合、最初の開始アドレス sadrs0と波形ピッチspitch0はそれぞれアドレス$0001 、$OOO2 に格納され、続く開始アドレス sadrs1と波形ピッチspitch1はそれぞれアドレス$0003 、$OO04 に格納される。
【0027】
次に波形データ記憶部のデータ構成を図5に従って説明すると、これは各wave領域にシーケンシャルなアドレス順序でサンプリング値wave data が格納されるものである。
【0028】
以下、この実施例装置の動作をフローチャートを参照して説明する。なお、以下に説明する各フローチャートにおいては、原則的には、各種のパラメータは英小文字で表し、そのパラメータを記憶するレジスタ等は同じスペルからなる英大文字で表すこととする。
【0029】
図6には、CPU22が行う処理として、メインルーチンのフローチャートが示される。メインルーチンがスタートすると、操作子群20のモードスイッチ(MODE.SW) が録音モード、編集モード、再生モードの何れに操作されたか監視されており(ステップA)、操作がされると、その操作が録音モード、編集モード、再生モードの何れであるかが判定される(ステップB)。録音モードであれば、録音(REC)処理が行われ(ステップC)、編集モードであれば編集(EDIT)処理が行われ(ステップD)、再生モードであれば再生(PLAY)処理が行われる(ステップE)。
【0030】
図7には録音モードにおける録音処理ルーチンのフローチャートが示される。録音処理は外部から入力された楽音信号を録音(サンプリング)する処理であり、モードスイッチMODE.SW により録音モードに設定した後、サンプリングスタ ートの操作子を操作することによって(ステップC3)、サンプリングスタートして録音(サンプリング処理)が行われる(ステップC4)。サンプリングされる楽音信号のデータは波形メモリ12に記憶される。この録音処理ルーチンから抜け出てメインルーチンにリターンするにはEXIT操作子を操作する(ステップC2)。
【0031】
図8には編集モードにおける編集処理ルーチンのフローチャートが示される。編集処理は、録音モードでサンプリングした波形を変更したり、再生可能な波形データに変更する編集処理や、それらの波形データをハードディスク装置33に転送したり、ハードディスク装置33から波形メモリ12に転送したりする処理を行う(ステップD3)。この編集処理ルーチンから抜け出るにはEXIT操作子を操作する(ステップD2)。
【0032】
図9には再生モードにおける再生処理ルーチンのフローチャートが示される。この再生処理ルーチンの初期設定(ステップE1)においては、操作子群の状態を操作するレジスタ等をリセットし、操作子群を操作可能な状態にすると共に、各操作子の初期状態を設定しておく。初期状態とは、〔再生処理〕で、各操作子に変化があった時だけ操作子の操作に対応した処理を行うため、その最初の基準となる状態を設定している。
【0033】
再生処理ルーチンは、モードスイッチMODE.SW により再生モードに設定した 後、再生スタートの操作子を操作することによってスタートする。再生処理(ステップE3)は、波形メモリ12の波形データを、キーボード30からの演奏情報に対応して再生する処理であり、この再生処理ルーチンから抜け出るにはEXIT操作子を操作する(ステップE2)。
【0034】
図10、図11にはこの再生モードにおける再生処理(ステップE3)の詳細な処理手順が示される。この再生処理はCPU22で実行される。この再生処理では、操作子群20による設定とキーボード30による演奏操作を検出してそれらの操作情報をDSP8に転送して記憶させる処理を行う。
【0035】
再生処理が開始されると、操作子群20の操作状態を走査して、バンクスイッチBANK.SW 、アサインスイッチASSIGN.SW 、ホルマント設定操作子F.VR、時間圧伸量設定操作子TCOMP の操作状態を検出する(ステップE300)。これらの操作状態に変化があったときには、以下のように、それらのスイッチ操作に対応して操作子設定テーブル等への設定処理を行う。
【0036】
まず、バンクスイッチBANK.SW の操作に変化が有るか否かを見て(ステップE301)、変化が有る場合には、バンクスイッチBANK.SW で設定されたバンク番号bankを、DSP8の操作子設定テーブルのバンク番号bankに設定する。
【0037】
次に、アサインスイッチASSIGN.SW の操作に変化が有るか否かを見て(ステップE303)、変化が有る場合には、アサインスイッチASSIGN.SW で設定されたモードがモノフォニック2またはポリフォニック2か否かを判定する。肯定判定(モノフォニック2またはポリフォニック2と判定)である場合は「リトリガ」を行わないモードが設定されたものであり、この場合には、DSP8の操作子設定テーブルのリンクモードlink.mode に“1”を設定する。否定判定である場合は「リトリガ」を行うモードが設定されたものであり、この場合には、DSP8の操作子設定テーブルのリンクモードlink.mode に“0”を設定する。さらに、アサインスイッチASSIGN.SW で設定されたモードがモノフォニック(1または 2)であるかポリフォニック(1または2)であるかを判定し、モノフォニック1または2である場合にはアサインフラグAS.FLGをモノフォニックMONOにセットし(ステップE308)、ポリフォニック1または2である場合にはポリフォニックPOLYにセットする(ステップE309)。このアサインフラグAS.FLGにより、ボイスモジュール(楽音発生チャネル)への割当処理が1ボイス(モノフォニックの場合)か複数ボイス(ポリフォニックの場合)かを知ることができる。
【0038】
次に、ホルマント設定操作子F.VRに変化が有るか否かを見て(ステップE310)、変化が有る場合には、その検出値を、DSP8の操作子設定テーブルのホルマント移動量f.vrに設定する(ステップE311)。同様に、時間圧伸量設定操作子TCOMP に変化が有るか否かを見て(ステップE312)、変化がある場合には、その検出値を、CPU22側に用意されたレジスタMTCOMPに設定するとともに、このレジスタMTCOMPの値をさらにDSP8の操作子設定テーブルの時間圧伸量tcomp に設定する(ステップE313)。
【0039】
次に、キーボード30からの操作鍵情報(キー情報)を検出する(ステップE314)。そして、その検出結果から操作鍵に変化があるか否かを見て(ステップE315)、変化がある場合には先に設定されたAS.FLGの状態を判定する(ステップE316)。上記アサインフラグAS.FLGの状態の判定結果がモノフォニックMONOである場合には、操作鍵を1ボイスモジュールに割り当てて、検出したキー情報をDSP8に転送する(ステップE317)。ポリフォニックPOLYである場合には、操作鍵を複数ボイスモジュールに割り当てて、検出したキー情報をDSP8に転送する(ステップE318)。DSP8では受信したキー情報をキー情報レジスタに一時記憶する。
【0040】
これらステップE317またはE318の処理をした後、あるいはステップE315での判定の結果押鍵操作に変化がないと判定された場合には、アフタータッチ操作が有るか否かを判定する(ステップE319)。ここでは、アフタータッチ操作の有無はキーボード30からのアフタータッチ信号after.toutchの大きさに基づいて判定される。すなわち、アフタータッチ信号after.toutchの大きさが$20未満であった場合にはアフタータッチ無しと見なすこととし、$20以上の場合にアフタータッチ有りとする。
【0041】
アフタータッチ有りと判定された場合には、時間圧伸量設定操作子TCOMP による設定値をアフタータッチ信号after.toutchに基づいて変更して前述のCPU側のレジスタMTCOMPに設定するとともに、このレジスタMTCOMPの値をDSPの操作子設定テーブルの時間圧伸量tcomp に設定する(ステップE320)。
【0042】
上記の時間圧伸量設定操作子TCOMP による設定値の修正は次の演算式、
MTCOMP= TCOMP*〔1−(after.toutch−$20)/$60〕
に従って行う。ここで TCOMPは時間圧伸量設定操作子TCOMP による設定値とする。この演算式は、アフタータッチ有りと判定された$20〜$7Fの範囲のアフタータッチ信号after.toutchを、
(after.toutch−$20)/$60
という演算により0〜1の範囲の値に正規化し、この正規化した値を1から減じて時間圧伸量設定操作子TCOMP の設定値に乗算してレジスタMTCOMPに設定するもので、この演算の結果、アフタータッチ信号after.toutchが$20を少し超える程度の弱いアフタータッチであった場合には時間圧伸量設定操作子TCOMP による設定値は大きくは変更されないが、アフタータッチ信号after.toutchが大きくなるに従って時間圧伸量設定操作子TCOMP の設定値は減少する方向に大きく修正され、アフタータッチが最も強い$7Fでは時間圧伸量設定操作子TCOMP の設定値はその値の如何にかかわらずゼロとされてレジスタMTCOMPに設定される。そしてこのレジスタMTCOMPの値は前述したようにさらにDSPの操作子設定テーブルのtcomp に設定される。
【0043】
なお、アフタータッチ信号after.toutchが$20未満の場合にはステップE319でアフタータッチ無しと判定されて本ステップE320は実行されないから、この場合には、先に設定されているレジスタMTCOMPの値は変更されない。
【0044】
これらの設定操作の後、変調値lfo.mod の演算処理を行う (ステップE321) 。この演算処理は、ステップE313またはE320でレジスタMTCOMPに設定した時間圧伸量が小であるときに、再生波形にビブラーラに似た変調を行うための変調値lfo.mod を発生するものである。このステップで演算される変調値情報は、変調情報であることを識別する変調情報識別情報mod.inf とともにキー情報の一種としてDSPに転送され、変調値情報は変調情報レジスタに格納される。
【0045】
図12は上述のステップE321における変調値情報の演算処理の詳細な内容を示すフローチャートである。図13はこの演算処理で生成される波形のタイムチャートである。まず、レジスタMTCOMPの設定値が0. 1により大きいか否か判定し(ステップE3211)、大きければ、ゲート信号lfo.gateを格納するレジスタLFO.GATEの値を0にして、以降のステップにて発生される変調値lfo.mod が常に1となるようにする(ステップE3213)。
【0046】
レジスタMTCOMPの設定値が0. 1以下であれば、レジスタLFO.GATEの値を1にして(ステップE3212)、1を中心に低周波周期で変動する変調値lfo.mod を発生して、その変調値lfo.mod で再生波形信号に変調をかけて波形信号にビブラート効果を付加する。すなわち、次のステップE3214において、変調エンベロープlfo.env を、
lfo.env =lfo.env +(lfo.gate−lfo.env )*slope
で演算して求め、結果をレジスタLFO.ENV に格納する。ここで、slope はエンベロープの傾きを決定する係数である。このエンベロープlfo.env は、図13に示すように、ゲート信号lfo.gateの0から1への立上りに同期して漸増して1になる波形となる。また、低周波信号lfo を、
lfo= sin(2*3. 14*lfo.rate/32000*lfo.count )
を演算することで発生する。ここで、lfo.rateは係数(単位Hz )、lfo.count はカウンタLFO.COUNT の値であって、このカウンタLFO.COUNT はステップE3214が行われる毎にインクリメントされる。低周波信号lfo は、図13に示すような正弦波となる。
【0047】
次に、変調度lfo.mod を、
lfo.mod =POW(0. 5,lfo *lfo.env *lfo.depth /1200)
を演算して求め、その結果をレジスタLFO.MOD に格納する(ステップE3215)。ここで、lfo.depth は変調の深さであり、単位はcents である。この演算で求められた変調度lfo.mod は、図13に示すように、ゲート波形lfo.gateの0から1への立上りに同期して1を中心に上下に低周波lfo の周期で振れる波形となる。
【0048】
次に、前記の1ボイスモジュールまたは複数ボイスモジュールへの割当て処理について説明する。
〔1ボイスモジュールへの割当処理〕
単音(1ボイス)のみを発音するモードの割当処理である。キーボード30のキー情報の検出の結果、操作鍵のうち、最後に押鍵した鍵を優先的に1つのボイスモジュール(楽音発生チャンネル)に割り当てる。なお、この割当処理では1ボイスモジュールへの割当なので、ボイスモジュール情報voice.Noの値は常に「No1」になる。
【0049】
〔複数ボイスモジュールへの割当処理〕
複数音が発音可能なモードの割当処理である。キーボード30のキー情報の検出の結果、操作鍵のうち、予め決められた数の押鍵だけを所定の数のボイスモジュールに割り当てる。この実施例では複数ボイスの数を2ボイスとしている。所定のボイス数(実施例では2)以上操作されても受け付けない。キーオン情報が入力されたとき、空きボイスがあるときのみに割当処理を行う。
【0050】
なお、キーオン情報を転送し、楽音が発音中にアサインスイッチASSIGN.SW を変更すると、発音中の楽音が止まらないなどの動作の不都合が起こる可能性がある。よって、かかる動作の不都合を防止するため、楽音が発音中にアサインスイッチASSIGN.SW を操作して動作モードが変更された場合には、発音中の楽音の全てに対してキーオフ情報を転送するようにしている。そして、新たな動作モードで発音中(押鍵中)のキーオン情報を転送するようにしている。
【0051】
以上の割当て処理は、鍵数よりも少ない数の音源を備えた電子楽器において、押鍵を音源に割り当てる公知のジェネレータアサインの技術を使用するので、詳細は省略する。
【0052】
次に、キー情報の転送を受けたDSP8の処理を図14、図15を参照して説明する。図14、図15はDSP8のメインルーチンを示すフローチャートであり、サンプリング周期で繰り返し実行されるものである。CPU22から新たなキー情報の転送があったか否かをキー情報レジスタをみて監視しており(ステップF1)、キー情報の転送があればその内容に基づいて以下のステップF2〜F16のボイスの消音処理/発音開始処理/リンク発音処理を行い、キー情報の転送がなければ後述するステップF17〜F22の読出処理/出力処理へとジャンプする。
【0053】
キー情報の転送があると、そのキー情報のボイスモジュール情報voice.Noを調べる(ステップF2)。この実施例では、ボイスモジュールの数は二つであり、従ってボイスモジュール情報voice.NoもVoice.No1とvoice.No2の二つである。ここで、ボイス2への割当はポリフォニック1または2のときだけ行われる。したがってボイスモジュール情報がvoice.No1である場合は、モードとしてはモノフォニックとポリフォニックの双方の場合があり、voice.No2の場合はモードはポリフォニックとなる。
【0054】
ボイスモジュール情報voice.No1であった場合、更にそのキー情報がキーオン情報key.onかキーオフ情報key.off かを判定し(ステップF3)、キーオフ情報key.off であれば、それまで発音を行っていたボイス1(ボイスモジュールNo1) の消音処理を行う(ステップF4)。この消音処理の詳細な内容は、図16に示すように、
SCNT(1) =0
LEVEL(1)=0
SPHASE(1) =ENDADRS(1)
とすることである。
【0055】
ここで、括弧付きの数字はボイスモジュールの番号である。SCNT(n) はボイスnの発音の進行を管理するカウンタであり、波形データ記憶部から読み出す波形区間情報を更新(すなわち波形ピッチspitchと開始アドレスsadrs を更新)するためのカウント値をカウントするものである。LEVEL(1)はキー情報レジスタ中のレベルlevel を記憶するレジスタ、SPHASE(1) は進行位置sphaseを記憶するレジスタ、ENDADRS(1)は末尾アドレスendadrs を記憶するレジスタである。上記の進行位置sphaseは波形再生に要する時間の進行を管理するパラメータであり、全波形データ中の先頭の波形区間の開始アドレスを基準点とした波形データのアドレス値(波形データ記憶部のアドレス値)で表現される。従って、上記の図16の消音処理は、ボイス1について、カウンタSCNT(1) を0にリセットし、音量レベルレジスタLEVEL(1)を0にするとともに、進行位置レジスタSPHASE(1) の値を末尾アドレスレジスタENDADRS(1)の値にして波形再生が進行しないようにするものである。
【0056】
ステップF3においてキー情報がキーオン情報key.onであった場合、操作子設定テーブルのリンクモードlink.mode を調べる(ステップF5)。リンクモードlink.mode が“0”の場合には「リトリガ」を行うモード、すなわち新たなキーオン情報key.onを受信したら波形データを再生中であってもその波形データの先頭から再生し直すモードであり、よって〔ボイス1の発音開始処理〕を行う(ステップF10)。この〔ボイス1の発音開始処理〕は要するに、波形メモリ12から該当する波形のパラメータおよび波形データをその先頭から読み出す処理である。
【0057】
この〔ボイス1の発音開始処理〕が実行される条件は以下のようになる。
▲1▼モノフォニック1のモードで、ボイス1に対するキーオン情報が入力されたとき・
▲2▼モノフォニック2のモードで、ボイス1が発音されていないときに、ボイス1に対するキーオン情報が入力されたとき.
▲3▼ポリフォニック1のモードで、ボイス1に対するキーオン情報が入力されたとき.
▲4▼ポリフォニック2のモードで、ボイス2が発音されていないときに、ボイス1に対するキーオン情報が入力されたとき.(このモードのとき、ボイス1は割当処理で発音されていないことを確認して割り当てられる)。
【0058】
この〔ボイス1発音開始処理〕の具体的な内容は、図18に示されるように、
PITCH(1)=pitch
LEVEL(1)=level
SCNT(1) =0
ENDADRS(1)=@ (bank * $800)
SPHASE(1) =@ (bank * $800 +SCNT(1) +1)
SPITCH(1) =@ (bank * $800 +SCNT(1) +2)
SADRS(1)=@ (bank * $800 +SCNT(1) +3)
START(1)=SPHASE(1)
WIDTH(1)=0
S.FLG1(1) =0
S.FLG2(1) =0
SCNT(1) =1
を行うことである。
【0059】
ここで、START は後述の音素片を切り出すための先頭アドレスstart を格納するレジスタである。また上記中の「*」は乗算を、「@」は括弧内に示されたアドレスからデータを読み出すことを表す。例えば、ENDADRS(1)=@ (bank * $800 ) は、パラメータ記憶部の読出しポインタが示すアドレス(bank * $800 ) から内容dataを読み出し、レジスタENDADRS(1)に設定することを意味している。
【0060】
上記のボイス1発音開始処理は、ボイス1について、キー入力された音高情報pitch とレベル情報level をキー情報レジスタPITCH(1)、LEVEL(1)に転記し、カウンタSCNT(1) を初期値「0」にリセットし、該当するバンク番号bank (波形領域番号) の波形データの末尾アドレスendadrs を波形パラメータ記憶部における当該バンク番号bankの波形領域の先頭番地$0000 から読み出して末尾アドレスレジスタENDADRS(1)にセットし、先頭の波形区間の開始アドレスsadrs0を波形パラメータ記憶部における上記先頭から2番目の番地$0001 (最初の波形区間の開始アドレスが格納されている) から読み出して進行位置sphaseとして進行位置レジスタSPHASE(1) にセットするとともに、その進行位置レジスタSPHASE(1) の値を先頭アドレスレジスタSTART(1)にセットし、上記波形データの先頭の波形区間の波形ピッチspitch0を上記先頭番地から2番目の番地$0002 から読み出して波形ピッチレジスタSPITCH(1) にセットし、上記波形データの先頭から2番目の波形区間の開始アドレスsadrs1を上記先頭から3番目の番地$0003 から読み出して開始アドレスSADRS(1)にセットし、レジスタWIDTH(1)、S.FLG1(1) 、S.FLG2(1) に0をセットするなどの処理を行った後に、カウンタSCNT(1) を一つ更新して1にするものである。
【0061】
リンクモードlink.mode が“1”の場合には「リトリガ」を行わないモード、すなわち新たなキーオン情報key.onを受信したら、波形データを再生中であれば、その時点以降の波形データを当該キーオン情報key.onで指定されたピッチに変更して再生するモードである。この場合、まず開始カウンタSCNT(1) が0か否かを判定する(ステップF6)。ここで開始カウンタSCNT(n) はボイスnの発音の進行を管理するカウンタであり、この値が「0」の場合にはボイスnがまだ未発音であることを示し、何らかの値となっていれば既に発音開始されたことを示す。
【0062】
開始カウンタSCNT(1) が「0」以外の値すなわちボイス1が既に発音中であれば、ステップF7に移行しボイス1からボイス1へのリンク発音処理を行う(ステップF7)。この経路を辿るのは、モードはモノフォニックであり、ボイス1が既に発音中であり、かつ「リトリガ」をしない場合であるから、ボイス1で発音中の波形を、キーオン情報の入力時点から以降、同じボイス1において当該キーオン情報中の音高情報pitch に変更して再生する。上記リンク発音処理はこのための処理であり、キー情報レジスタの音高情報レジスタPITCH(1)とレベル情報レジスタLEVEL(1)を、受信したキーオン情報中の音高情報pitch とレベル情報level で書き換える処理、すなわち、図20に示されるように、
PITCH(1)=pitch
LEVEL(1)=level
とする処理である。
【0063】
この〔ボイス1からボイス1へのリンク発音処理〕が実行される条件は、モノフォニック2のモードで、ボイス1が発音中にボイス1に対するキーオン情報が入力されたときであり、このモードのときにのみ、割当処理でボイス1が発音中にボイス1に対するキーオン情報が割り当てられる。
【0064】
ステップF6でカウンタSCNT(1) が「0」すなわちボイス1がまだ未発音であれば、さらにボイス2のカウンタSCNT(2) が「0」か否かを判定する(ステップF8)。カウンタSCNT(2) が「0」でない場合はボイス2が発音中であることを意味し、よってモードはポリフォニックであり、入力したキーオン情報はレガート奏法における2番目の押鍵のキーオン情報である。この場合、ボイス2での波形の発音再生を継続するとともに、そのキーオン情報の入力時点以降の波形に対して、その新たに入力したキーオン情報に応じた音高での再生をボイス1でも行う。このための処理がステップF9の〔ボイス2からボイス1へのリンク発音処理〕であり、ボイス2に保持していた再生中の波形の各種データをボイス1に渡すとともに、そのデータを新たに入力したキーオン情報に基づいて変更する。
【0065】
この〔ボイス2からボイス1へのリンク発音処理〕が実行される条件は、ポリフォニック2のモードで、ボイス2が発音中にボイス1に対するキーオン情報が入力されたときである。このモードのとき、ボイス1は割当処理で発音されていないことを確認して割り当てられる。
【0066】
〔ボイス2からボイス1へのリンク発音処理〕の具体的内容は、図22に示されるように、
PITCH(1)=pitch
LEVEC(1)=level
SCNT(1) =SCNT(2)
ENDADRS(1)=ENDADRS(2)
SPHASE(1) =SPHASE(2)
SPITCH(1)=SPITCH(2)
SADRS(1)=SADRS(2)
START(1)=START(2)
WIDTH(1)=0
S.FLG1(1) =0
S.FLG2(1) =0
とする処理である。
【0067】
すなわち、このリンク発音処理は、ボイス2での発音をその音高とレベルを変更してボイス1で受け継ぐために、キー入力された音高情報pitch とレベル情報level をキー情報レジスタPITCH(1)、LEVEL(1)に転記するとともに、ボイス2における、レジスタSCNT(2) 、ENDADRS(2)、SPHASE(2) 、SADRS(2)、START(2)の各値をボイス1におけるレジスタSCNT(1) 、ENDADRS(1)、SPHASE(1) 、SADRS(1)、START(1)にそれぞれ書き写し、フラグS.FLG1(1) 、S.FLG2(1) に0をセットするものである。
【0068】
ステップF8において、カウンタSCNT(2) が「0」の場合はボイス2がまだ未発音であることを意味し、よってモードはモノフォニックまたはポリフォニックである。この経路を辿る場合はボイス1もボイス2も未発音であるので、新たに入力したキーオン情報はレガート奏法における2番目の押鍵ではなく、よってこのキーオン情報はボイス1に割り当てられて、波形データは先頭から再生される。この場合、前述のステップF10の〔ボイス1の発音開始処理〕を行う。
【0069】
一方、ステップF2の判定において、ボイスモジュール情報voice.Noがvoice.No2であった場合はモードはポリフォニックとなる。この場合、更にそのキー情報がキーオン情報key.onかキーオフ情報key.off かを判定し(ステップF11)、キーオフ情報key.off であれば、それまで発音を行っていたボイス2(No.2のボイスモジュール) の消音処理を行う(ステップF16)。この消音処理の詳細な内容は、図17に示すように、
SCNT(2) =0
LEVEL(2)=0
SPHASE(2) =ENDADRS(2)
とする処理である。
【0070】
キー情報がキーオン情報key.onであった場合、操作子設定テーブルのリンクモードlind.mode を調べる。リンクモードlink.mode が“0”の場合には「リトリガ」を行うモード、すなわち新たなキーオン情報key.onを受信したら波形データを再生中であってもその波形データの先頭から再生し直すモードであり、よって〔ボイス2の発音開始処理〕を行う(ステップF13)。この〔ボイス2の発音開始処理〕は要するに、波形メモリ12から該当する波形のパラメータおよび波形データをその先頭から読み出してボイス2で発音する処理である。
【0071】
この〔ボイス2の発音開始処理〕が実行される条件は、
▲1▼ポリフォニック1のモードで、ボイス2に対するキーオン情報が入力されたとき、
▲2▼ポリフォニック2のモードで、ボイス1が発音されていないときに、ボイス2に対するキーオン情報が入力されたとき、
である。
なお、ボイス2への割当はポリフォニック1、ポリフォニック2のときだけ行われる。
【0072】
この〔ボイス2発音開始処理〕の具体的な内容は、図19に示されるように、
PITCH(2)=pitch
LEVEL(2)=level
SCNT(2) =0
ENDADRS(2)=@ (bank * $800)
SPHASE(2) =@ (bank * $800 +SCNT(2) +1)
SPITCH(2) =@ (bank * $800 +SCNT(2) +2)
SADRS(2)=@ (bank * $800 +SCNT(2) +3)
START(2)=SPHASE(2)
WIDTH(2)=0
S.FLG1(2) =0
S.FLG2(2) =0
SCNT(2) =1
を行うことである。
【0073】
ステップF12の判断で、リンクモードlink.mode が“1”の場合には「リトリガ」を行わないモード、すなわち新たなキーオン情報key.onを受信したら、波形データを再生中であれば、その時点以降の波形データを当該キーオン情報key.onで指定されたピッチに変更して再生するモードである。この場合、まずカウンタSCNT(1) が0か否かを判定する(ステップF14)。
【0074】
カウンタSCNT(1) が「0」の場合、すなわちボイス1が未だ未発音であれば、前述のステップF13の〔ボイス2の発音開始処理〕を行う。
【0075】
カウンタSCNT(1) が「0」以外の値の場合、すなわちボイス1が既に発音中であれば、ステップF15に移行し〔ボイス1からボイス2へのリンク発音処理〕を行う。この経路を辿るのは、モードはポリフォニックであり、ボイス1が既に発音中であり、かつ「リトリガ」をしない場合であるから、ボイス1で発音中の波形を、キーオン情報の入力時点から以降、ボイス1で継続して発音するとともに、それと並行して、ボイス2においても当該キーオン情報中の音高情報pitch に変更して再生する。上記〔ボイス1からボイス2へのリンク発音処理〕はこのための処理である。
【0076】
この〔ボイス1からボイス2へのリンク発音処理〕が実行される条件は、ポリフォニック2のモードで、ボイス1が発音中にボイス2に対するキーオン情報が入力されたときである。
【0077】
〔ボイス1からボイス2へのリンク発音処理〕の具体的内容は、図21に示されるように、
PITCH(2)=pitch
LEVEC(2)=level
SCNT(2) =SCNT(1)
ENDADRS(2)=ENDADRS(1)
SPHASE(2) =SPHASE(1)
SPITCH(2)=SPITCH(1)
SADRS(2)=SADRS(1)
START(2)=START(1)
WIDTH(2)=0
S.FLG1(2) =0
S.FLG2(2) =0
とする処理である。
【0078】
キー情報の入力に対して以上の処理が終了したら、ボイスモジュール番号nを「1」に設定し(ステップF17)、ボイスモジュール(n)の読出し処理を行う(ステップF18)。この読出し処理については後に詳述する。その後、ボイスモジュール番号nが最終番号(この実施例ではボイス数の2)か判定し(ステップF19)、最終番号に達していなかったら、ボイスモジュール番号nを一つインクリメントして(ステップF20)、その番号のボイスモジュールの読出し処理を繰り返す。
【0079】
ボイスモジュール番号が最終番号になったら、各ボイス1、2の出力OUT(1)、OUT(2)を足し合わせて合成出力OUT とし(ステップF21)、この合成出力OUT を出力する(ステップF22)。
【0080】
上述のステップF18の「読出し処理」は、サンプル波形(音声)から音素片を切り出し、その音素片のホルマントの特徴をほぼ保ったまま、所望の再生音高に対応した周期でその音素片を再生することによって、サンプル波形のホルマント特性を保ったままピッチを変換するものである。
【0081】
この読出し処理では、再生される波形のピッチは鍵盤で押下したキーの音高に応じて変更されるが、再生時間は再生ピッチの大きさ(すなわちどのキーが押下されたか)によらず一定である。すなわち、ポリフォニックの場合、レガート奏法の2番目の押鍵により、1番目の押鍵の音高に応じた波形再生と並行して2番目の押鍵の音高に応じた波形再生が行われた場合、1番目の波形再生の終了と2番目の波形再生の終了は同時となる。一方、従来のように単に読出し速度を変えることでピッチシフトを行っている場合には、上記のようなときには1番目と2番目の波形再生の終了はタイミングがずれてしまい違和感が生じるが、本実施例によれば、かかる違和感を無くすことができる。
【0082】
この読出し処理動作の概要を説明すると、波形メモリ12に記憶されている波形データからパラメータデータに基づいて所望の区間(この実施例では基本的には2ピッチ分の波形区間で、場合によってはそれよりも短い波形区間)を音素片として時間経過に従って順次に切り出して、その切り出した音素片を、元の波形とは異なるピッチおよびホルマントで再生するものである。その際、この音素片の再生を二つの処理経路で並行して行い、それぞれの処理経路では再生しようとするピッチ周期の2倍の周期でかつ互いが半周期(再生しようとするピッチ周期)ずれるようにして音素片を再生し、これらを合成して、再生しようとするピッチ周期にするようにしている。
【0083】
図23、図24はこのピッチ変換処理を説明する図である。ホルマント移動量f.vrは1であれば変更なし、1以外であればホルマントを若干変更する。ここでは、ホルマント移動量f.vrが1、すなわちホルマント変更無しでかつ再生ピッチを波形メモリ12の元の波形データより高くする場合を図23で説明し、ホルマント移動量f.vrが1よりも大きい、すなわちホルマント変更有りでかつ再生ピッチを波形メモリ12の元の波形データと同じにする場合を図24で説明する。
【0084】
まず、図23を参照して、鍵盤のキー押下で音高を指定することにより、元の波形データより高域側にピッチをシフトし、かつホルマント特性の変更は行わない(ホルマント移動量f.vr=1)場合について説明する。
【0085】
図23の(a)はwave0 領域の波形データを示しており、波形パラメータで示されるピッチspitch0 、spitch1 ・・・を有する。そして、基本的には、このピッチspitchに対応して音素片が順次に切り出される。なお、この図23(a)には開始アドレスsadrs0から始まる波形ピッチspitch0 のwave0 領域の複数周期の波形のうちのP0〜P4の5周期分の波形を示している。
【0086】
また、鍵盤のキーで音高指定されたキー指定ピッチpitch は後述の「読出し処理サブルーチン」のステップF41でwidth に設定されており、width は再生ピチを表すことになる。すなわち、
再生ピッチwidth =キー指定ピッチpitch
である。この再生ピッチwidth を周期長とする再生位相phase を図23 (b) のように作成し、この再生位相pahse から2つの処理経路の位相、すなわち図23 (d) に示す第1の処理経路の第1位相ph1、図23 (e) に示す第2の処理経路の第2位相ph2を作成する。なお、これら第1、第2の位相ph1、ph2はサンプリング周期毎にインクリメントされて増加する
【0087】
そして、第1の処理経路は、後述の「波形読出し処理サブルーチン」のステップF57で行う読出しアドレス演算の「第1位相ph1×ホルマント移動量f.vr」の部分で決まる読出し速度で、また、第2の処理経路は、後述の「波形読出し処理サブルーチン」のステップF66で行う読出しアドレス演算の「第2位相ph2×ホルマント移動f.vr」の読出し速度で、それぞれの音素片を順次に読み出す。この読出し速度がホルマント特性の変更に関係する。ただし、今の場合はホルマント移動量f.vr=1であるから、第1、第2の位相ph1、ph2の変化と等しく、結果的にホルマント特性は変更されない。
【0088】
さらに、第1、第2の位相ph1、ph2にそれぞれ同期して、ホルマント処理のために波形データを切り取る切出し窓としてのエンベロープ env1、 env2を第1、第2の処理経路について作成する。第1の処理経路は図23 (f) に示すエンベロープ env1の波形を持ち、第2の処理経路は図23 (g) に示すエンベロープ env2の波形を持つ。エンベロープ env1、 env2は0〜1の範囲の値であり、エンベロープ窓長lenghtを半周期とし、前半の周期では0から逐次に増加して1になり、後半の周期では1から逐次に減少して0になる三角形をしている。エンベロープ env1、 env2の半周期であるエンベロープ窓長lengthは、後述の「読出し処理のサブルーチン」のステップF41において、
「エンベロープ長length=元波形のピッチspitch/ホルマント移動量f.vr」
で求める。但し、エンペロープ窓長lengthは後述するように再生ピッチwidth を超えないように最大でも再生ピッチwidth の値に制限される。図23はかかる制限がされた場合の例である。
【0089】
第1の処理経路では、後述の「読出し処理サブルーチン」のステップF46において設定されている第1読出し先頭アドレス START1から波形データの約2ピッチ分の音素片にエンベロープ env1を乗算し、図23 (h) に示す波形を得る。同様に、第2の処理経路では、後述の「読出し処理サブルーチン」のステップF47において設定されている第2読出し先頭アドレス START2から波形データの2ピッチ分の音素片にエンベロープ env2を乗算し、図23(i) に示す波形を得る 。なお、図23の場合は、前述のように、エンベロープ窓長lengthが再生ピッチwidth の値に制限されているため、音素片は波形データの2ピッチ分より短くなっている。このような処理の仕方によれば、これらの波形は元の波形データの音素片のホルマント特性をそのまま保持したものとなる。この図23 (h) 、 (i) の波形は再生ピッチwidth の周期長の2倍の長さであるが、両者の波形を足し合わせると再生ピッチwidth の周期長となる。従って、鍵盤からのキー指定ピッチpitch によって元のサンプリングデータを高域側にピッチシフトしつつ、そのホルマント特性はそのまま維持できる。
【0090】
図24はホルマント移動量f.vrを1より大きくして再生波形のホルマントを元波形のホルマントより高域側にシフトする場合を示すものである。ここでは理解しやすくするためにキー指定ピッチが元波形のピッチspitchとほぼ等しいものとして示している。
【0091】
音素片の読出し速度は、第1の処理経路が、「第1位相ph1×ホルマント移動量f.vr」、第2の処理経路が、「第2位相ph2×ホルマント移動量f.vr」であるから、第1、第2の位相ph1、ph2の変化より速く、結果的にホルマント特性は高域側にシフトされ、変更が付与されることになる。
【0092】
そして、読出し速度を速くすることによって音素片は短くなる。従って、エンベロープenv1、env2のエンプロープ窓長lengthも、
「エンプロープ窓長length=元波形のピッチspitch/ホルマント移動量f.vr」
として、音素片が短くなったことに合わせて短くしている。
【0093】
上記の効果付加を含む読出し処理の動作を図25、図26のフローチャートに基づいて説明する。なお、図25、図26中の括弧書きの添字(n) はボイスモジュール番号nのパラメータ等であることを意味するものであるが、以下の説明では特に必要がない場合は記述を省略する。
【0094】
DSP8は、処理のため着目している1ピッチ分の波形区間のピッチspitchを記憶するピッチレジスタSPITCH、波形ピッチspitchが変化した位置(波形区間の開始点)を表すアドレスである開始アドレスsadrs を記憶する開始アドレスレジスタSADRS 、時間経過に従って更新する、音素片を切り出す基準(読出し開始)となる先頭アドレスstart を記憶する先頭アドレスレジスタSTART を備えている。更に、後述する再生ピッチ周期長width に達したかをカウントするための再生位相カウンタPHASE 、第1の波形の位相ph1をカウントするための第1位相カウンタPH1、第2の波形の位相ph2をカウントするための第2位相カウンタPH2も設けられている。
【0095】
また、再生ピッチ(=再生ピッチ周期長width )を記憶するための再生ピッチレジスタWIDTH 、ピッチspitchとホルマント移動量f.vrから定めたエンベロープの窓長lengthを記憶するエンベロープ窓長レジスタLENGTH、第1の波形のエンベロープ env1を記憶するための第1エンベロープ波形レジスタ ENV1、および第2の波形のエンベロープ env2を記憶するための第2エンベロープ波形レジスタ ENV2が設けられている。
【0096】
更に、第1の波形のエンベロープの形状を決定するためのカウンタを構成するレジスタWINDOW1、第2の波形のエンベロープの形状を決定するためのカウンタを構成するWINDOW2、エンベロープ窓長lengthの値に基づいて定めたレジスタWINDOW1、WINDOW2の値の歩進率w.rateを記憶する歩進率レジスタW.RATE、第1の波形の読出し開始アドレス start1を記憶する第1読出しアドレスレジスタ START1、第2の波形の読出し開始アドレス start2を記憶する第2読出しアドレスレジスタ START2、第1および第2の波形の読出しの先頭アドレスを設定する処理を決定するために使用する相識別フラグF等も設けられている。
【0097】
以下、全体的な動作を図25、図26のフローチャートに従って説明する。このフローチャートは図23、図24の動作に対応したものである。上述の各レジスタは、電源の投入の際に、初期化が行われる。即ち、相識別フラグF(1) 、F(2) を「1」に、他のもの例えばレジスタSCNT(2) 、SCNT(1) 、WIDTH(1)、WIDTH(2)、PITCH(1)、PITCH(2)、LEVEL(1)、LEVEL(2)、ENDADRS(1)、ENDADRS(2)等を「0」に初期設定する。
【0098】
なお、以下の説明では、電源投入後少し時間が経過し、前記フローチャートの処理によって、各レジスタや各カウンタには、既に適当な値が記憶されているとして説明する。また、このフローチャートは、DSP8においてサンプリング周期毎に実行される。
【0099】
発音開始時においては、進行位置レジスタSPHASE(n) には、前述のボイスの発音開始処理によって、波形メモリ12のパラメータ記憶部におけるバンク番号bankで示される波形領域の先頭の波形区間の開始アドレスsadrs0が格納されている。進行位置レジスタSPHASEはこれを基準点にして時間の進行を管理する。1サンプル周期毎に、進行位置レジスタSPHASE(n) の値を時間圧伸量tcomp だけインクリメントする(ステップF31)。すなわち、
SPHASE(n)=SPHASE(n) +tcomp
とする。このような更新をする結果、時間圧伸量tcomp が大きければ、進行位置sphaseは速く進んで波形全体を再生するに要する時間が短くなり、反対に時間圧伸量tcomp が小さければ進行位置sphaseは遅く進むので波形全体を再生するに要する時間は長くなる。
【0100】
この進行位置レジスタSPHASEの値と末尾アドレスレジスタENDADRS の値を比較し (ステップF32) 、進行位置レジスタSPHASEの値が末尾アドレスレジスタENDADRS の値より小さければ、まだその波形全体の末尾まで処理を終えていないことを意味する。この場合、さらに進行位置レジスタSPHASEの値と開始アドレスレジスタSADRS の値を比較する(ステップF33)。この開始アドレスレジスタSADRS の値sadrs は前述した図18、図19の発音開始処理からも分かるように、次に続く波形区間の開始アドレスである。よって進行位置レジスタSPHASEの値が開始アドレスレジスタSADRS(n)の値より大きければ、それまで処理していた波形区間が終了したので、この波形区間から次の波形区間に処理を移行するために波形区間の更新を行う。この波形区間の更新は次のようにして行う。
SPITCH(n) =@(bank*$800 +2+SCNT(n) *2)
SADRS(n) =@(bank*$800 +3+SCNT(n) *2)
SCNT(n) =SCNT(n) +1
【0101】
すなわち、波形メモリ12のパラメータ記憶部からパラメータデータ(次に続く波形区間の波形ピッチspitchと更にその後の波形区間の開始アドレスsadrs)を読み出してきて、それぞれ、現在の波形区間の波形ピッチレジスタSPITCH(n) の値、次の波形区間の開始アドレスレジスタSADRS(n) の値とし、カウンタSCNT(n) を一つインクリメントする。
【0102】
ステップF33において、進行位置レジスタSPHASEの値が次の波形区間の開始アドレスレジスタSADRS(n)の値以下であれば、まだ現在の波形区間の途中であるから、波形区間の更新は行わないので、ステップF34の処理は飛び越す。
【0103】
さらに、先頭アドレスレジスタSTART(n)を更新するか否かを判定するために、(START(n)+SPITCH(n) )と進行位置レジスタSPHASEの値とを比較する(ステップF35)。(START(n)+SPITCH(n) )よりも進行位置レジスタSPHASEの値の方が大きければ、進行位置sphaseが現在の波形区間を超えたことを意味し、この場合には先頭アドレスレジスタSTART(n)を次の波形区間の値に更新する。この更新は先頭アドレスレジスタSTART(n)の値を波形ピッチレジスタSPITCH(n) の値だけインクリメントして行う(ステップF36)。すなわち、
START(n)=START(n)+SPITCH(n)
とする。進行位置レジスタSPHASEの値が(START(n)+SPITCH(n) )以下である場合には、この先頭アドレスの更新は行わない。
【0104】
前記のステップF32で、進行位置レジスタSPHASEの値が末尾アドレスレジスタENDADRS の値以上の場合には、
SPHASE(n) =ENDADRS(n)
とする。すなわち進行位置レジスタSPHASEを末尾アドレスレジスタENDADRS の値に固定して(ステップF37)、上述のステップF33〜F36を飛び越してステップF38に移行する。この場合には、波形区間と先頭アドレスの更新を行わない(つまりレジスタSPITCH、SADRS 、SCNT、START を更新しない)。これは、進行位置sphaseが波形全体の末尾まで至ったら、その値を末尾アドレスendadrs に固定してその進行を止めるものである。かかる制限をしない場合には次に続く波形領域の他の波形データが読み出されてノイズとなる虞があるが、上記制限によりこれを防止できる。
【0105】
以上のステップF31〜F37の処理により、DSPの操作子設定テーブルに大きな時間圧伸量tcomp が設定された場合には進行位置sphaseが速く進んで先頭アドレスstart の更新が早く行われ、よって波形再生時間が短くなる。反対に時間圧伸量tcomp が小さい場合には進行位置shase が遅く進んで先頭アドレスstart の更新が遅く行われ、よって波形再生時間が長くなる。
【0106】
なお、この時間圧伸量tcomp をかなり小さな値に設定した場合には同じ波形区間が複数回繰り返して再生されつつ、遅い速度で波形再生が進行するようになる。これは、進行位置sphaseの進行がゆっくりしているためステップF33、F35の判断で進行位置sphaseがなかなか比較している値よりも大きくならず、よって波形区間の更新がなかなか行われないで同じ波形区間からの読出し処理が繰り返し行われるためである。反対に、時間圧伸量tcomp をかなり大きな値にすると、波形区間の更新において、次に続く波形区間を飛び越してしまいその波形区間の再生が行われないような場合も生じる。
【0107】
ここで、アフタータッチがあった場合には、DSPの操作子設定テーブルの時間圧伸量tcomp は、前述の再生処理のステップE320においてそのアフタータッチの強さに応じて時間圧伸量設定操作子TCOMP による設定値よりも小さく設定されるので、波形再生時間はアフタータッチにより次のように調整される。
▲1▼アフタータッチ無しの場合
アフタータッチがごく弱いためアフタータッチ無しと判定された場合、つまりアフタータッチ信号after.toutchの大きさが$00〜$19の場合は、時間圧伸量設定操作子TCOMP で設定した時間圧伸量tcomp の速さで再生され、アフタータッチにより変化しない。
▲2▼アフタータッチ有りの場合
アフタータッチが有りと判定された場合には、アフタータッチ信号after.toutchの大きさが$20以上、$7F未満では、アフタータッチ信号after.toutchの値が大きくなるほど、つまりアフタータッチが強くなるほど、波形再生の速さが遅くなる。アフタータッチ信号after.toutchが$7F、つまりアフタータッチが最も強い場合には、再生速度はほぼ停止状態となり、同じ波形が繰り返して再生され続けるようになる。
【0108】
上記のように進行位置sphaseを時間基準として用いて波形区間の更新を行いつつ波形データを再生すると、波形再生に要する時間長は、再生する波形の音高によらず、ユーザが時間圧伸量設定操作子TCOMP とキーボードのアフタータッチで設定する時間圧伸量tcomp で決めることができるようになる。この結果、ポリフォニックモード2で2つのボイスモジュールを並行して発音させる場合でも、その発音の終了時間は2つのボイスモジュールで同時とすることができる。
【0109】
ステップF38では、再生位相レジスタPHASE 、第1位相レジスタPH1、第2位相レジスタPH2の値をそれぞれ1つ歩進させる(ステップF38)。次に、再生位相レジスタPHASE の値と再生ピッチレジスタWIDTH の値を比較する(ステップF39)。この再生ピッチレジスタWIDTH の値が再生されるピッチに対応する。再生位相レジスタPHASE の値が再生ピッチレジスタWIDTH の値に達していなければ、後述するステップF48の「波形読出し処理」へ進む。なお、再生ピッチレジスタWIDTH の値は後述のステップF41で算出される。
【0110】
再生位相レジスタPHASE の値が再生ピッチレジスタWIDTH の値に達している時にはステップF40〜F47を行う。このステップF40〜F47ではレジスタPHASE(n)の初期化、各レジスタWIDTH(n)、LENGTH(n) 、W.RATE(n) の更新、相識別フラグF(n) の反転を行うとともに、相識別フラグF(n) の値に応じた側の第1、第2の処理経路について各パラメータの設定を行う。
【0111】
まず、再生位相レジスタPHASE の値を0とする(ステップF40)。次いで、新たな再生ピッチwidth を、鍵盤の押鍵で音高指定されたキー指定ピッチpitch を格納するレジスタPITCH の値と、前述の再生処理におけるステップE321の演算処理で求めた変調度lfo.mod を格納するレジスタLFO.MOD の値とを乗算することで求め、これを再生ピッチレジスタWIDTH に記憶させる(ステップF41)。この処理を行うことにより、レジスタMTCOMPの設定値が0. 1より大きい場合には変調度lfo.mod は1に固定されるので、再生ピッチwidth はキー指定ピッチpitch に一致する。一方、レジスタMTCOMPの設定値が0.1以下になると、変調度lfo.mod は1を中心に低周波数で振動する波形となり、したがって再生ピッチwidth はこのステップF41の演算をする毎に値が変動することになる。
【0112】
レジスタMTCOMPの設定値が時間圧伸量操作子 TCOMPの設定により、さらにはキーボードのアフタータッチ操作により0.1以下の小さな値になると、前述したように波形再生速度がかなり遅くなって同じ波形区間が繰り返して読み出される。このように、同じ特質を持った再生波形の繰返しは、それが規則正しく繰り返されるものであるため、その繰返し部分の再生波形に揺らぎ成分がなくなり、このためかかる再生波形により発音される音は美しくはあるが単調で不自然な感じのものになるが、上記の変調度lfo.mod を乗じる処理を行うことで、同じ波形区間が繰り返して読み出される場合でも、前記演算するする毎に再生ピッチwidth は変化し、時間的に変化する変調を受けることになるので、同じ波形区間の繰返し再生であっても再生波形にビブラートに似た効果を付与することができ、単調な感じを無くすことができる。この効果は押鍵後にアフタータッチ操作により波形再生速度が遅くなった場合も同様に得られる。
【0113】
次いで、ホルマント移動量f.vrを入力し、第1の波形のエンベロープ env1、第2の波形のエンベロープ env2の窓長lengthを、ピッチレジスタSPITCHの値をホルマント移動量f.vrで除算して求めてエンベロープ窓長レジスタLENGTHに記憶させる(ステップF41)。
【0114】
次に、エンベロープの窓長lengthを再生ピッチwidth 以内に制限する(ステップF42、F43)。エンベロープ窓長レジスタLENGTHの値と再生ピッチレジスタWIDTH の値とを比較し(ステップF42)、エンベロープ窓長レジスタLENGTHの値が再生ピッチレジスタWIDTH の値よりも大きい場合には、エンベロープ窓長レジスタLENGTHの値を再生ピッチレジスタWIDTH の値とする(ステップF43)。一方、エンベロープ窓長レジスタLENGTHの値が再生ピッチレジスタWIDTH の値以下である場合には、このステップS43の処理は行わない。これにより、エンベロープ窓長lengthが再生ピッチwidth より大きくならないように制限をかける。
【0115】
次いで、エンベロープ窓長レジスタLENGTHの値の逆数を求め、これを歩進率w.rateとして歩進率レジスタW.RATEに記憶させる (ステップF44)。この歩進率レジスタW.RATEの値は、カウンタWINDOW1、WINDOW2の値を歩進させるために使用する。また、相識別フラグFの極性を反転させる。このステップF44の処理は、ステップF39おいて再生位相レジスタPHASE の値が再生ピッチレジスタWIDTH の値以上になったときに行われるので、相識別フラグFの反転も、再生位相レジスタPHASE の値が再生ピッチレジスタWIDTH の値以上になったときに行われることになり、例えば図23、図24の(c)に示されるように、再生位相phase の周期で1と−1に反転する波形が得られる。
【0116】
次に、相識別フラグFの値を0と比較し、相識別フラグFが1であるか、−1であるかを判断する(ステップF45)。相識別フラグFの値が1であることは相識別フラグFが−1から1に立ち上がったときを意味しており、この場合には、第1の処理経路に相当するレジスタPH1とカウンタWINDOW1の値をそれぞれ「0」とし、先頭アドレスレジスタSTART の値を第1読出し先頭アドレスレジスタ START1に記憶させ、フラグ S.FlG1を“1”にする(ステップF46)。
【0117】
また、相識別フラグFの値が−1であることは相識別フラグFが1から−1に立ち下がったことを意味しており、この場合には、第2の処理経路に相当するレジスタPH2とカウンタWINDOW2をそれぞれ「0」とし、先頭アドレスレジスタSTART の値を第2読出し先頭アドレスレジスタ START2に記憶させ、第2のフラグ S.FLG2を“1” にする(ステップF47)。
【0118】
この場合、前述のステップF46とこのステップF47は、ステップF39で再生位相レジスタPHASE の値が再生ピッチレジスタWIDTH の値を超えたと判定される毎に交互に実行されるものであるから、第1位相ph1と第2位相ph2は、図23の(d)、(e)のように再生ピッチwidth の2倍の周期で、かつ、お互いに再生ピッチwidth だけ位相の異なる変化をするものとなる。また、第1読出し先頭アドレス start1は第1位相ph1の立下り部分で、第2読出し先頭アドレス start2は第2位相ph2の立下り部分の、それぞれ再生ピッチwidth だけ時間差を持ったタイミングで更新されることになる。
【0119】
なお、上述のフラグS.FLG 1 =1 、S.FLG 2 =1 の処理により、発音開始後、レジスタPH1(n) 、PH2(n) がリセットされて初めて発音が開始されるようにして、発音開始後すぐの不要な発音を防止している。
【0120】
このステップF46またはF47の処理に続いて、あるいはステップF39において再生位相レジスタPHASE の値が再生ピッチレジスタWIDTH の値に達していないと判断されたときには、波形読出し処理を行う(ステップF48)
【0121】
図27、図28はこの波形読出し処理を示すフローチャートである。以下にこの波形読出し処理について詳細に説明する。
【0122】
波形読出し処理
図27は波形読出し処理のフローチャートであり、同図中のステップF52〜F60は第1の処理経路のための処理、ステップF61〜F69は第2の処理経路のための処理であり、この二つの処理は時系列に行われるが、処理の内容は実質的に同様な内容となっている。
【0123】
図27に示すように、波形読出し処理では、まずカウンタWINDOW1(n) の値を歩進率レジスタW.RATE(n) の値だけ歩進させる(ステップF52)。そして、歩進させたカウンタWINDOW1(n) の値が1より小さいか、1以上であって2より小さいか、あるいは2以上であるかを判定する(ステップF53)。1より小さい場合には、カウンタWINDOW1(n) の値を第1エンベロープ env1として第1エンベロープレジスタ ENV1に記憶させ(ステップF54)、1以上であって2より小さい場合には、2からカウンタWINDOW1(n) の値を減算した値を第1エンベロープ env1として第1エンベロープレジスタ ENV1に記憶させ(ステップF55) 、2以上のとき、第1エンベロープレジスタ ENV1の値を0とする(ステップF56)。
【0124】
ステップF53〜F56は、例えば図23(f) に示されるように、歩進率w.rateずつ値が増加する鋸歯状波を作成し、これの値を1で折り返すことによって、第1エンベロープ env1を作成している。但し、カウンタWINDOW 1(n) の値が2を越えた場合には、ステップF56によって第1エンベロープ env1の値を0としている。即ち、ホルマント移動量f.vrと波形ピッチspitchとに基づいて定めたエンベロープ窓長lengthの値の逆数である歩進率w.rateずつ1まで増加し、その後、歩進率w.rateずつ0まで減少する三角波を第1のエンベロープ env1の波形として作成している。
【0125】
また、ステップF54〜F56に続いて、第1位相カウンタPH1の値(読出しアドレスの歩進値)にホルマント移動量f.vrを乗算した値を、第1の波形の先頭アドレス START1(n) の値と加算して、第1の波形の読出しアドレスを記憶するレジスタ ADRES1に記憶させる(ステップF57)。
【0126】
また、読出しアドレスレジスタADRES 1の値と末尾アドレスレジスタENDADRS の値を比較し(ステップF58)、末尾アドレスレジスタENDADRS の値よりも大きければ、「読出しアドレスレジスタADRES 1 の値=末尾アドレスレジスタENDADRS の値」とする(ステップF59)。これは読出しアドレス adres1にリミットをかけて、末尾アドレスendadrs の値を超えて読み出さないようにしているものである。
【0127】
これに続いて、波形メモリから読出しアドレス adres1で第1の波形の波形データdata1を読み出す(ステップF60)。このように読出しアドレス adres1はその歩進幅がホルマント移動量f.vrによって変更されるので、結果的には波形データdata1の読出し速度が、ホルマント移動量f.vrによって変更されている。これに続くステップF61〜F69では上述と同じ処理を、第2の処理経路についても行う。
【0128】
このようにして読み出された第1の処理経路のデータdata1と第1エンベロープレジスタ env1の値とフラグ S.FLG1を乗算したものと、第2の処理経路のデータdata2に第2エンベロープレジスタ ENV2の値とフラグ S.FLG2を乗算したものとを加算して出力out とする(ステップF70)。これにより、フラグ S.FLG1(n) または S.FLG2(n) が“0”の間は、合成する信号が0になるようにして、エンベロープ env1、 env2が必ず0から始まるようにしている。
【0129】
次いで、
L.ENV(n)=L.ENV(n)+(LEVEL(n) −L.ENV(n)) *K
とし、このレジスタL.ENV(n)を出力OUT(n)に乗じたものを最終的な出力OUT(n)とする。すなわち、立上り、立下りの特性が係数Kで決まるレベルエンベロープL.env(n)を算出し、これを出力に付加している。なお、ステップF71の演算では、レベルエンベロープL.env(n)は0にならないので、所定レベル以下になると、L.ENV(n)=0となるように処理を追加してもよい。
【0130】
なお、上述の実施例では、再生波形に揺らぎを付加する方法として、再生波形のピッチに変化を与えるようにしたが、これに限らず、例えば波形データを切り出す切出し窓の窓長lengthに変化を与えるようにすることもできるし、また再生波形の音量レベルに変化を与えるものであってもよい。
【0131】
本発明の実施にあたっては種々の変形形態が可能である。例えば上述の実施例では、時間圧伸量操作子TCOMP による設定値をアフタータッチ信号after.toutchに基づいて修正するにあたり、
MTCOMP= TCOMP*〔1−(after.toutch−$20)/$60〕
という演算式を用いており、この演算式は、アフタータッチが強ければ強いほど波形再生速度が遅くなり、最も強いアフタータッチでは波形再生速度がほぼ停止するというものであった。しかし、本発明はこのような修正の演算式だけに限られるものではなく、例えば次のような演算を行うなどの方法も可能である。
【0132】
すなわち、次の演算式
MTCOMP= TCOMP*〔1−(after.toutch−$20)/$40〕
により時間圧伸量設定操作子TCOMP による設定値を修正する。この演算式は、アフタータッチ有りと判定された$20〜$7Fの範囲のアフタータッチ信号after.toutchを、
(after.toutch−$20)/$40
という演算により0〜2の範囲の値に正規化し、この正規化した値を1から減じて時間圧伸量設定操作子TCOMP による設定値に乗算してレジスタMTCOMPに設定するものである。この演算式によれば、アフタータッチ信号after.toutchが$00〜$19の範囲では時間圧伸量設定操作子TCOMP で設定した値による再生速度で波形再生されてアフタータッチによっては影響されず、$20〜$59の範囲ではアフタータッチが強くなるほど時間圧伸量設定操作子TCOMP の検出値がゼロに向かって小さくなるように修正されて波形再生速度が次第に遅くなり、$60でゼロになって波形再生速度がほぼ停止して同じ波形が繰り返して再生されるようになる。さらに、アフタータッチ信号after.toutchが$61〜$7Fの範囲では、レジスタMTCOMPの値は負の値となり、この場合には操作子設定テーブルの時間圧伸量tcomp が負の値となって進行位置sphaseが逆方向に進むようになり、その結果、波形が逆方向に戻りながら再生される。この逆方向再生の場合の再生速度はアフタータッチが強ければ強いほど速くなる。
なお、この逆方向の再生が必要ないのであれば、アフタータッチ信号after.toutchの値にリミッタをかけてレジスタMTCOMPの値が負にならないようにすればよい。
【0133】
【発明の効果】
以上に説明したように、本発明によれば、アフタータッチ操作により波形の再生時間ないし再生速度を変化させることができるから、演奏表現を一層豊かにすることが可能になる。
また、アフタータッチ操作により再生速度が遅くなりすぎて同じ波形区間の波形データに基づいて同じような再生波形が繰り返し再生されるような場合でも、その再生波形にビブラート等に似た揺らぎを付加することができるので、単調な不自然な感じを無くすことができる。
【図面の簡単な説明】
【図1】本発明にかかる一実施例としての波形発生装置の全体的なブロック構成を示す図である。
【図2】実施例装置における操作子設定テーブルの構成例を示す図である。
【図3】実施例装置におけるキー情報レジスタと変調情報レジスタの構成例を示す図である。
【図4】実施例装置における波形メモリのパラメータ記憶部のデータ構成例を示す図である。
【図5】実施例装置における波形メモリの波形データ記憶部のデータ構成例を示す図である。
【図6】実施例装置におけるメインルーチンを示すフローチャートである。
【図7】実施例装置における録音ルーチンを示すフローチャートである。
【図8】実施例装置における編集ルーチンを示すフローチャートである。
【図9】実施例装置における再生ルーチンを示すフローチャートである。
【図10】実施例装置における再生処理ルーチン(1/2)の詳細を示すフローチャートである。
【図11】実施例装置における再生処理ルーチン(2/2)の詳細を示すフローチャートである。
【図12】実施例装置における変調値情報の演算処理の詳細を示すフローチャートである。
【図13】実施例装置における変調値情報の演算処理で生成される各種信号波形のタイムチャートである。
【図14】実施例装置におけるDSPでのメインルーチン(1/2)を示すフローチャートである。
【図15】実施例装置におけるDSPでのメインルーチン(2/2)を示すフローチャートである。
【図16】実施例装置におけるDSPでのメインルーチン中の「ボイス1の消音処理」を示すフローチャートである。
【図17】実施例装置におけるDSPでのメインルーチン中の「ボイス2の消音処理」を示すフローチャートである。
【図18】実施例装置におけるDSPでのメインルーチン中の「ボイス1の発音開始処理」を示すフローチャートである。
【図19】実施例装置におけるDSPでのメインルーチン中の「ボイス2の発音開始処理」を示すフローチャートである。
【図20】実施例装置におけるDSPでのメインルーチン中の「ボイス1からボイス1へのリンク発音処理」を示すフローチャートである。
【図21】実施例装置におけるDSPでのメインルーチン中の「ボイス1からボイス2へのリンク発音処理」を示すフローチャートである。
【図22】実施例装置におけるDSPでのメインルーチン中の「ボイス2からボイス1へのリンク発音処理」を示すフローチャートである。
【図23】「読出し処理」の動作概要(ホルマント特性変更なし、高域にピッチシフト)を説明するためのタイムチャートである。
【図24】「読出し処理」の動作概要(ホルマント特性を低域にシフト)を説明するためのタイムチャートである。
【図25】実施例装置におけるDSPでのメインルーチン中の「読出し処理」ルーチン(1/2)を示すフローチャートである。
【図26】実施例装置におけるDSPでのメインルーチン中の「読出し処理」ルーチン(2/2)を示すフローチャートである。
【図27】実施例装置におけるDSPでのメインルーチン中の「読出し処理」ルーチン中の「波形読出し処理」ルーチン(1/2)を示すフローチャートである。
【図28】実施例装置におけるDSPでのメインルーチン中の「読出し処理」ルーチン中の「波形読出し処理」ルーチン(2/2)を示すフローチャートである。
【符号の説明】
4 A/D変換器
8 DSP(ディジタル信号プロセッサ)
12 波形メモリ
14 D/A変換器
20 操作子群
22 CPU(中央処理装置)
30 キーボード
31 RAM(ランダム・アクセス・メモリ)
32 ROM(リード・オンリー・メモリ)
33 ハードディスク装置
Claims (2)
- 音の波形信号の振幅情報を波形データとして記憶した記憶手段と、
任意に設定された変化量で順次変化して該波形データにおける時間軸上の経過に従った位置を指定する位置情報を順次に生成する位置情報生成手段と、
波形再生の開始/終了を指示するキーボードの押鍵後の操作に応じたアフタータッチ情報を入力するアフタータッチ情報入力手段と、
該アフタータッチ情報入力手段で入力したアフタータッチ情報に基づいて該位置情報生成手段で生成される位置情報の変化量を修正する位置情報修正手段と、
再生ピッチを該位置情報とは独立に指定する再生ピッチ指定手段と、
再生ピッチ指定手段で指定された再生ピッチに応じた周期で、該位置情報修正手段で修正された変化量で変化する位置情報で指定される近傍の波形データを少なくとも1周期切り出して、該指定された再生ピッチの再生波形信号を生成する波形再生手段とを備えた波形発生装置。 - 前記位置情報修正手段で修正された位置情報の変化量が所定値よりも小さくなったときに、該波形再生手段で生成される再生波形に揺らぎを付加する揺らぎ付加手段をさらに備えた請求項1記載の波形発生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00765397A JP3795167B2 (ja) | 1997-01-20 | 1997-01-20 | 波形発生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00765397A JP3795167B2 (ja) | 1997-01-20 | 1997-01-20 | 波形発生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10207462A JPH10207462A (ja) | 1998-08-07 |
JP3795167B2 true JP3795167B2 (ja) | 2006-07-12 |
Family
ID=11671790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00765397A Expired - Fee Related JP3795167B2 (ja) | 1997-01-20 | 1997-01-20 | 波形発生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3795167B2 (ja) |
-
1997
- 1997-01-20 JP JP00765397A patent/JP3795167B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10207462A (ja) | 1998-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2249731C (en) | Audio signal processor with pitch and effect control | |
US6316710B1 (en) | Musical synthesizer capable of expressive phrasing | |
US20020178006A1 (en) | Waveform forming device and method | |
JPH04330495A (ja) | 自動伴奏装置 | |
JP3324477B2 (ja) | 付加音信号生成装置および付加音信号生成機能を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
KR900007892B1 (ko) | 전자악기의 음원장치 | |
JP3645030B2 (ja) | 電子楽器 | |
JP3795167B2 (ja) | 波形発生装置 | |
JP3763493B2 (ja) | 波形発生装置 | |
JP3910702B2 (ja) | 波形発生装置 | |
JP3746578B2 (ja) | 波形発生装置 | |
JPH1152953A (ja) | 波形データのピッチ変化抽出方法および波形再生装置 | |
JP4057700B2 (ja) | 波形再生装置 | |
JP2559209B2 (ja) | 楽音信号発生装置 | |
JP4506147B2 (ja) | 演奏再生装置及び演奏再生制御プログラム | |
JPH10198380A (ja) | 波形発生装置 | |
JPS6211357B2 (ja) | ||
JP3654227B2 (ja) | 楽曲データ編集装置及びプログラム | |
JPH067334B2 (ja) | 電子楽器 | |
JP4236570B2 (ja) | 波形再生装置および波形再生プログラム | |
JP4612254B2 (ja) | 波形再生装置 | |
JP4015267B2 (ja) | 波形発生装置 | |
JP3486938B2 (ja) | レガート演奏可能な電子楽器 | |
JP3331638B2 (ja) | 電子楽器 | |
JP2526834B2 (ja) | 演奏制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060110 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060309 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060404 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060412 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090421 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120421 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |