JP4232203B2 - 波形発生装置および波形発生処理プログラム - Google Patents

波形発生装置および波形発生処理プログラム Download PDF

Info

Publication number
JP4232203B2
JP4232203B2 JP2004267840A JP2004267840A JP4232203B2 JP 4232203 B2 JP4232203 B2 JP 4232203B2 JP 2004267840 A JP2004267840 A JP 2004267840A JP 2004267840 A JP2004267840 A JP 2004267840A JP 4232203 B2 JP4232203 B2 JP 4232203B2
Authority
JP
Japan
Prior art keywords
waveform
slave
master
pitch
generated
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
Application number
JP2004267840A
Other languages
English (en)
Other versions
JP2006084611A (ja
Inventor
博毅 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2004267840A priority Critical patent/JP4232203B2/ja
Publication of JP2006084611A publication Critical patent/JP2006084611A/ja
Application granted granted Critical
Publication of JP4232203B2 publication Critical patent/JP4232203B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、電子楽器の音源に用いて好適な波形発生装置および波形発生処理プログラムに関する。
マスター側およびスレーブ側の2系統のオシレータを備え、スレーブオシレータの波形発生開始タイミングを、マスターオシレータの波形発生開始タイミングに強制的に同期させる、いわゆるオシレータ同期型の波形発生装置では、例えばスレーブ波形出力のピッチを一定にして、マスター波形出力のピッチのみを変化させると、スレーブ波形出力の波形形状が変形され、これによりピッチ変化と音色変化とが同時に得られる独特な音響効果(オシレータシンクロナイズ効果)を備えた波形を生成し得るようになっており、この種の装置については例えば特許文献1に開示されている。
特開平10−198378号公報
ところで、オシレータ同期型の波形発生装置では、スレーブ波形出力をマスター波形出力に強制的に同期させるため、例えば図26(a)に図示するマスター波形出力のゼロクロス点で強制的にスレーブ波形出力を同期させてゼロリセットすると、同図(b)に図示する通り、波形不連続に起因するノイズ発生を招致し、これが耳障りな楽音となって音楽的に不自然なオシレータシンクロナイズ効果をもたらすという問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、耳障りな楽音を発生することなく、音楽的に自然なオシレータシンクロナイズ効果を得ることができる波形発生装置および波形発生処理プログラムを提供することを目的としている。
上記目的を達成するため、請求項1に記載の発明では、発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生手段と、波形一周期を第1および第2の波形区間に区分けしておき、第1の波形区間では発生すべき音高に対応したスレーブ用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有する第1のスレーブ波形を発生し、第2の波形区間では当該スレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致する第2のスレーブ波形を発生するスレーブ波形発生手段と、前記第1及び第2のスレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成手段とを具備することを特徴とする。
請求項2に記載の発明では、発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生手段と、前記マスター波形の一周期の期間内に、発生すべき音高に対応したスレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致するスレーブ波形を発生するスレーブ波形発生手段と、前記スレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成手段とを具備することを特徴とする。
請求項に記載の発明では、発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生処理と、波形一周期を第1および第2の波形区間に区分けしておき、第1の波形区間では発生すべき音高に対応したスレーブ用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有する第1のスレーブ波形を発生し、第2の波形区間では当該スレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致する第2のスレーブ波形を発生するスレーブ波形発生処理と、前記第1及び第2のスレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成処理とをコンピュータで実行させることを特徴とする。
請求項に記載の発明では、発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生処理と、前記マスター波形の一周期の期間内に、発生すべき音高に対応したスレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致するスレーブ波形を発生するスレーブ波形発生処理と、前記スレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成処理とをコンピュータで実行させることを特徴とする。
請求項1、に記載の発明によれば、第1の波形区間から第2の波形区間に移行すると、マスター波形の波形一周期終了時のゼロクロス点にスレーブ波形の波形一周期終了時のゼロクロス点を一致させるように、当該スレーブ波形の周期を変化させるので、マスター波形とスレーブ波形とが波形不連続にならずに同期する結果、耳障りな楽音波形にならず、音楽的に自然なオシレータシンクロナイズ効果を得ることが出来る。
請求項2、に記載の発明によれば、マスター波形一周期の期間内に、スレーブ波形の読み出し速度を変化させてマスター波形の波形一周期終了時のゼロクロス点にスレーブ波形の波形一周期終了時のゼロクロス点を一致させるため、マスター波形とスレーブ波形とが波形不連続にならずに同期する結果、耳障りな楽音波形にならず、音楽的に自然なオシレータシンクロナイズ効果を得ることが出来る。
以下、図面を参照して本発明の実施形態について説明する。
A.第1実施形態
(1)全体構成
図1は、本発明の第1実施形態による電子楽器100の全体構成を示すブロック図である。電子楽器100は、鍵盤1、スイッチ部2、ベンダホイール3、CPU4、表示部5、ROM6、RAM7、音源8、D/A変換器9およびサウンドシステム10を備える。鍵盤1は、押離鍵操作(演奏操作)に応じたキーオン/キーオフ信号、鍵番号およびベロシティ等からなる演奏情報を発生する。スイッチ部2は、楽器パネルに配設される各種スイッチを備え、操作されるスイッチ種に応じたスイッチイベントを発生する。スイッチ部2に配設される主要なスイッチとして、マスター波形選択スイッチ、スレーブ波形選択スイッチおよびDuty設定スイッチ等が有り、これらスイッチ操作に対応した処理動作については追って詳述する。
ベンダホイール3は、ユーザのホイール回動操作に応じたベンダ操作値を発生してCPU4に供給する。ベンダ操作値は、後述するように、鍵盤1の演奏情報(鍵番号)で指定されるピッチ(音高)を可変制御するために用いられる。CPU4は、スイッチ部2のスイッチ操作に応じて発生するスイッチイベントに基づき楽器各部の動作状態を設定したり、鍵盤1から供給される演奏情報に応じたコマンド(例えば発音指示コマンドや消音指示コマンド等)を生成し、これを後述するRAM7に記憶されるパラメータと共に音源8に送出して楽音形成させる。また、CPU4はベンダホイール3から供給されるベンダ操作値に応じてピッチ制御を音源8に指示する。本発明の要旨に係わるCPU4の特徴的な処理動作の詳細については追って述べる。
表示部5は、液晶表示パネルおよび駆動回路から構成され、CPU4から供給される表示制御信号に応じて、例えばパラメータ設定状態や動作状態などを表示する。ROM6は、上記CPU4にロードされる各種制御プログラムや制御データ等を記憶する。ここで言う各種制御プログラムとは、後述するメインルーチン、スイッチ処理、鍵盤処理およびベンダ処理を含む。RAM7は、CPU4のワークエリアとして用いられ、各種レジスタ・フラグデータを一時記憶する。
ここで、図2を参照してRAM7に一時記憶される主要レジスタの内容を説明する。この図において、レジスタPitchには、押鍵に応じて鍵盤1が発生するピッチ(具体的には鍵番号)が格納される。レジスタBenderには、ベンダホイール3の回動操作に応じて発生するベンダ操作値(「−1」〜「1」の範囲で変化)が格納される。レジスタBR_Mには、ベンダ操作値に対応するマスター波形のピッチ変化幅が格納される。レジスタCT_Mには、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値が格納される。
レジスタFT_Mには、マスター波形のピッチをセント単位でチューニングする精チューニング値が格納される。レジスタLevel_Mには、マスター波形レベルが格納される。レジスタWF_Mには、マスター波形の形状を指定する波形番号が格納される。波形番号とは、後述する波形発生器203(図3参照)が備える各種波形形状の波形テーブルを指定する値であり、「0」の場合に三角波を、「1」の場合に鋸波上りを、「2」の場合に鋸波下りを、「3」の場合に矩形波をそれぞれ指定する。
レジスタBR_Sには、ベンダ操作値に対応するスレーブ波形のピッチ変化幅が格納される。レジスタCT_Sには、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値が格納される。レジスタFT_Sには、スレーブ波形のピッチをセント単位でチューニングする精チューニング値が格納される。レジスタLevel_Sには、スレーブ波形レベルLevel_Sが格納される。レジスタWF_Sには、スレーブ波形の形状を指定する波形番号が格納される。波形番号とは、後述する波形発生器209(図3参照)が備える各種波形形状の波形テーブルを指定する値であり、「0」の場合に三角波を、「1」の場合に鋸波上りを、「2」の場合に鋸波下りを、「3」の場合に矩形波をそれぞれ指定する。レジスタDutyには、周期波形を前後のA,B区間(アドレス区間)に区分けした時の波形全体に占めるA区間の比率を表すデューティ比が格納される。以上説明したレジスタPitch〜レジスタDutyの各内容は、後述するスイッチ処理にてユーザ設定される。
レジスタWT_Mには、上記レジスタWF_Mに格納される波形番号で指定される形状のマスター波形を発生させる波形テーブルの先頭アドレスが格納される。レジスタWTS_Mには、上記レジスタWF_Mに格納される波形番号で指定される形状のマスター波形を発生させる波形テーブルのテーブルサイズが格納される。レジスタWT_Sには、上記レジスタWF_Sに格納される波形番号で指定される形状のスレーブ波形を発生させる波形テーブルの先頭アドレスが格納される。レジスタWTS_Sには、上記レジスタWF_Sに格納される波形番号で指定される形状のスレーブ波形を発生させる波形テーブルのテーブルサイズが格納される。
次に、再び図1を参照して実施形態の構成について説明を進める。図1において、音源8は、CPU4から供給される演奏情報に応じた楽音波形データを発生する。音源8の構成については追って詳述する。D/A変換器9は、音源8から出力される楽音波形データをアナログ形式の楽音信号に変換して出力する。サウンドシステム10は、D/A変換器9が出力する楽音信号から不要ノイズを除去する等のフィルタリングを施した後、これを増幅してスピーカから発音させる。
(2)音源8の構成
次に、図3を参照して音源8の構成について説明する。音源8は周知のDSPから構成される。したがって、図3はそのDSPにおいて実行されるマイクロプログラムの各機能をハードウェアイメージとして捉らえた機能ブロックを図示している。図3に図示する音源8は、マスター波形発生部、スレーブ波形発生部および波形合成部に大別される。以下、これら各部の構成について述べる。
<マスター波形発生部の構成>
マスター波形発生部は、マスター発振器200、アドレス発生器201、アドレス比較器202および波形発生器203から構成される。マスター発振器200は、CPU4から供給されるピッチPitchに対応した周波数のマスタークロックMCを発生する。アドレス発生器201は、CPU4から供給される波形テーブル先頭アドレスWT_M(後述する)から、マスタークロックMCに従って歩進される読み出しアドレスを発生する。アドレス比較器202は、アドレス発生器201が波形一周期分の読み出しアドレスを発生し終えて先頭アドレスに復帰した時点でスレーブ波形発生部側のアドレス発生器207にリセット信号を送出して同期指示を与える。
波形発生器203は、各種波形形状の波形データを記憶した複数の波形テーブルを備える。具体的には、図4(a)に図示する三角波、同図(b)に図示する鋸波(上り)、同図(c)に図示する鋸波(下り)および同図(d)に図示する矩形波をそれぞれ形成する波形データを記憶した波形テーブルを具備する。波形発生器203では、これら波形テーブルの内、CPU4から供給される波形番号WF_Mで指定される波形テーブルから、アドレス発生器201が発生する読み出しアドレスに応じて波形データを読み出してマスター波形を発生する。上述の波形テーブル先頭アドレスWT_Mは、波形番号WF_Mにて指定される波形形状の波形テーブルの先頭アドレスを指す。このように、マスター波形発生部では、CPU4から供給されるピッチPitchに対応した周期(読み出し速度)で指定形状のマスター波形を発生する。
<スレーブ波形発生部の構成>
スレーブ波形発生部は、スレーブ発振器A205,B206、セレクタSEL、アドレス発生器207、アドレス比較器208および波形発生器209から構成される。スレーブ発振器A205は、CPU4から供給されるピッチPitchに対応した周波数の、第1のスレーブクロックSC1を発生する。スレーブ発振器B206は、CPU4が設定する周波数の第2のスレーブクロックSC2を発生する。セレクタSELは、後述するアドレス比較器208が発生するセレクト信号に応じて、第1のスレーブクロックSC1又は第2のスレーブクロックSC2のいずれかを選択して次段のアドレス発生器207に供給する。
アドレス発生器207は、セレクタSELにて選択される第1のスレーブクロックSC1又は第2のスレーブクロックSC2のいずれかに従い、CPU4から供給される波形テーブル先頭アドレスWT_Sから歩進させる読み出しアドレスを発生する。また、アドレス発生器207は、マスター波形発生部側のアドレス比較器202からリセット信号を受信すると、読み出しアドレスを波形テーブル先頭アドレスWT_Sにリセットする。
アドレス比較器208は、アドレス発生器207が発生する読み出しアドレスが、CPU4から供給されるデューティ比Dutyに対応した波形区間を過ぎた時に第2のスレーブクロックSC2を選択し、それ以外は第1のスレーブクロックSC1を選択するセレクト信号を発生してセレクタSELに供給する。なお、ここで言うデューティ比Dutyとは、スレーブ波形一周期に相当する波形区間をA,B区間(アドレス区間)に区分けしたとき、その波形区間全体に占めるA区間の比率を表す。例えば、図5に図示する三角波において、デューティ比Dutyが「0.4」の場合、A区間が波形一周期の4割、残りの6割がB区間と定義される。
波形発生器209は、マスター波形発生部の波形発生器203と同様、図4(a)〜(d)に図示した各形状の波形データを記憶した波形テーブルを具備し、CPU4から供給される波形番号WF_Sにて指定される波形テーブルから、アドレス発生器207が発生する読み出しアドレスに応じて波形データを読み出してスレーブ波形を発生する。
スレーブ波形発生部では、上述したように、デューティ比Dutyで指定される波形A区間では第1のスレーブクロックSC1に応じて歩進される読み出しアドレスに応じてスレーブ波形を発生し、波形A区間を過ぎて波形B区間に移行すると、マスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるように、スレーブ波形の波形読み出し速度を変化させる。
例えば、スレーブ波形のデューティ比Dutyを「0.7」とした場合に、図6(a)に図示する矩形波状のマスター波形に対して同図(b)に図示する三角波のスレーブ波形を発生させるには、波形B区間においてマスター波形のゼロクロス点とスレーブ波形側のゼロクロス点とを同期させるように、第2のスレーブクロックSC2の周波数を上げてスレーブ波形の波形読み出し速度を上げる。
また、例えば、スレーブ波形のデューティ比Dutyを「0.2」とした場合に、図7(a)に図示する矩形波状のマスター波形に対して同図(b)に図示する三角波のスレーブ波形を発生させるには、波形B区間においてマスター波形のゼロクロス点とスレーブ波形側のゼロクロス点とを同期させるように、第2のスレーブクロックSC2の周波数を下げてスレーブ波形の波形読み出し速度を下げる。
このように、スレーブ波形発生部では、デューティ比Dutyで指定される波形A区間を過ぎて波形B区間に移行する時点で、第2のスレーブクロックSC2に応じてスレーブ波形の波形読み出し速度を変化させる。波形読み出し速度は、CPU4がスレーブ発振器Bに設定する周波数で決る。後述するようにCPU4では、第1のスレーブクロックSC1の周波数が決定されると同時に第2のスレーブクロックSC2の周波数を設定する。
<波形合成部の構成>
波形合成部は、係数乗算器204,210およびミキサ211から構成される。係数乗算器204は、波形発生器203が出力するマスター波形に、CPU4から供給されるマスター波形レベルLevel_Mを乗算して出力する。係数乗算器210は、波形発生器209が出力するスレーブ波形に、CPU4から供給されるスレーブ波形レベルLevel_Sを乗算して出力する。ミキサ211は、係数乗算器204から出力されるマスター波形と、係数乗算器210から出力されるスレーブ波形とを混合して出力する。
(3)動作
次に、上記構成による第1実施形態の動作を説明する。以下では、図8〜図12を参照してCPU4が実行するメインルーチン、スイッチ処理、鍵盤処理、オシレータ設定処理およびベンダ処理の各動作について述べる。
<メインルーチンの動作>
上記構成による電子楽器100をパワーオンすると、CPU4は図8に示すメインルーチンを実行し、ステップSA1に処理を進め、RAM7に格納される各種レジスタ/フラグ類をリセットしたり初期値セットする他、音源8に対して各種レジスタ・フラグを初期化するよう指示するイニシャライズを実行する。そして、イニシャライズが完了すると、ステップSA2に処理を進め、スイッチ部2のスイッチ操作に対応したスイッチ処理を行う。後述するように、スイッチ処理では、音源8に与えるマスター波形属性、スレーブ波形属性およびデューティ比Dutyを発生する。これらは、マスター波形選択スイッチ、スレーブ波形選択スイッチおよびDuty設定スイッチの操作に応じて設定される。
なお、マスター波形属性とは、音源8のマスター波形発生部に供給するパラメータであり、マスター波形の形状を指定する波形番号WF_M、波形番号WF_Mで指定される形状のマスター波形を発生させる波形テーブルの先頭アドレスWT_Mおよび波形番号WF_Mで指定される波形テーブルのテーブルサイズWTS_Mからなる。スレーブ波形属性とは、音源8のスレーブ波形発生部に供給するパラメータであり、スレーブ波形の形状を指定する波形番号WF_S、波形番号WF_Sで指定される形状のスレーブ波形を発生させる波形テーブルの先頭アドレスWT_Sおよび波形番号WF_Sで指定される波形テーブルのテーブルサイズWTS_Sからなる。デューティ比Dutyとは、音源8のスレーブ波形発生部に供給するパラメータであり、スレーブ波形を前後のA,B区間(アドレス区間)に区分けした時の波形全体に占めるA区間の比率を表す。
次いで、ステップSA3では、鍵盤1の押離鍵操作に応じて音源8に発音/消音を指示する鍵盤処理を実行する。続いて、ステップSA4では、ベンダホイール3の回動操作に応じたベンダ操作値を発生するベンダ処理を実行する。そして、ステップSA5では、例えばユーザ設定された動作状態を表示部5に表示する等の、その他の処理を実行した後、上記ステップSA2に処理を戻す。以後、電子楽器100がパワーオフされる迄、ステップSA2〜SA5を繰り返す。
<スイッチ処理の動作>
次に、図9を参照してスイッチ処理の動作について説明する。上述したメインルーチンのステップSA2を介して本処理が実行されると、CPU4は操作されるスイッチ種に対応した処理を実行する。以下では、音源8の波形発生に必要なパラメータを設定する「マスター波形選択スイッチ」、「スレーブ波形選択スイッチ」および「Duty設定スイッチ」が操作された場合の各動作を述べる。
a.マスター波形選択スイッチ操作
マスター波形選択スイッチ操作が行われると、ステップSB1の判断結果が「YES」になり、ステップSB2に進む。ステップSB2では、当該スイッチ操作で選択されたマスター波形の形状を指定する波形番号をレジスタWF_Mにストアする。また、ステップSB2では、波形番号WF_Mで指定される形状のマスター波形を発生させる波形テーブルの先頭アドレスをレジスタWT_Mにストアする。さらに、ステップSB2では、波形番号WF_Mで指定される波形テーブルのテーブルサイズをレジスタWTS_Mにストアする。加えて、ステップSB2では、音源8のアドレス比較器202(図3参照)に波形テーブル先頭アドレスWT_Mをセットした後、後述のステップSB8に処理を進める。
なお、音源8のアドレス比較器202は、CPU4によりセットされた波形テーブル先頭アドレスWT_Mを参照し、アドレス発生器201がマスター波形一周期分の読み出しアドレスを発生し終えて当該先頭アドレスWT_Mに復帰した時点でスレーブ波形発生部側のアドレス発生器207にリセット信号を送出して同期指示を与えるようになっている。
b.スレーブ波形選択スイッチ操作
スレーブ波形選択スイッチ操作が行われると、ステップSB3の判断結果が「YES」になり、ステップSB4に進む。ステップSB4では、当該スイッチ操作で選択されたスレーブ波形の形状を指定する波形番号をレジスタWF_Sにストアする。また、ステップSB4では、波形番号WF_Sで指定される形状のスレーブ波形を発生させる波形テーブルの先頭アドレスをレジスタWT_Sにストアする。さらに、ステップSB4では、波形番号WF_Sで指定される波形テーブルのテーブルサイズをレジスタWTS_Sにストアする。加えて、ステップSB4では、音源8のアドレス発生器207(図3参照)に波形テーブル先頭アドレスWT_Sをセットする。
次に、ステップSB5では、波形テーブルサイズWTS_Sにデューティ比Dutyを乗じた値を波形テーブル先頭アドレスWT_Sに加算したアドレス値(WT_S+WTS_S×Duty)を音源8のアドレス比較器208(図3参照)にセットした後、後述のステップSB8に処理を進める。
なお、アドレス比較器208では、アドレス発生器207から供給される読み出しアドレスが、上記アドレス値(WT_S+WTS_S×Duty)に達した場合に第2のスレーブクロックSC2を選択し、それ以外は第1のスレーブクロックSC1を選択するセレクト信号を発生してセレクタSELに供給する。
c.Duty設定スイッチ操作
Duty設定スイッチ操作が行われると、ステップSB6の判断結果が「YES」になり、ステップSB7に進み、ユーザにより数値入力されるデューティ比をレジスタDutyにストアする。この後、上記ステップSB5に進み、アドレス値(WT_S+WTS_S×Duty)をアドレス比較器208にセットする。
次いで、ステップSB8では、例えば音源8の係数乗算器204,210(図3参照)に付与するマスター波形レベルLevel_Mやスレーブ波形レベルLevel_Sの他、ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_M、ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_Sおよびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_Sを設定する、その他のスイッチ処理を実行して本処理を完了させる。
<鍵盤処理の動作>
次に、図10を参照して鍵盤処理の動作を説明する。上述したメインルーチンのステップSA3(図8参照)を介して本処理が実行されると、CPU4は図10に図示するステップSC1に進み、鍵イベントを判別する。押離鍵操作が行われず、鍵イベントが発生しなければ、何も行わずに本処理を完了させる。押鍵操作に応じたキーンオンイベントが発生すると、ステップSC2に進み、一方、離鍵操作に応じたキーオフイベントが発生すれば、ステップSC6に進む。以下、押鍵時の動作と離鍵時の動作とに分けて説明を進める。なお、ここでは説明の簡略化を図る為、モノフォニック発音を前提としている。
a.押鍵時の動作
押鍵操作に応じたキーオンイベントが発生すると、ステップSC2に進み、レジスタPitchの値が「−1」、つまり押鍵された鍵の音が消音済みであるかどうかを判断する。発音中であると、判断結果は「NO」となり、何も行わずに本処理を完了させるが、消音済みならば、判断結果が「YES」になり、ステップSC3に進む。ステップSC3では、音源8のアドレス発生器201に波形テーブル先頭アドレスWT_Mをセットする一方、レジスタPitchに押鍵された鍵のピッチ(鍵番号)をストアする。
次いで、ステップSC4を介してオシレータ設定処理を実行する。オシレータ設定処理では、後述するように、音源8のマスター発振器200、スレーブ発振器A205およびスレーブ発振器B206に対し、マスタークロックMC、第1のスレーブクロックSC1および第2のスレーブクロックSC2の各周波数を決めるピッチ情報(後述の修正ピッチP_M、ピッチP_S1、ピッチP_S2)を設定する。そして、ステップSC5では、音源8に発音を指示する。これにより、音源8は、上記ステップSC4のオシレータ設定処理に基づき発生するマスター波形とスレーブ波形とを合成した楽音波形を出力する。
b.離鍵時の動作
離鍵操作に応じたキーオフイベントが発生すると、ステップSC6に進み、レジスタPitchに消音済みを表す値として「−1」をストアすると共に、音源8に消音を指示して本処理を終える。
<オシレータ設定処理の動作>
次に、図11を参照してオシレータ設定処理の動作を説明する。上述した鍵盤処理のステップSC4(図10参照)を介して本処理が実行されると、CPU4は図11に示すステップSD1に処理を進め、ベンダホイール3の回動操作に応じて発生するベンダ操作値等に基づきレジスタPitchの値を修正して修正ピッチP_Mを発生する。具体的には、レジスタBenderに格納されるベンダ操作値を、当該ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_Mにて補正し、補正されたベンダ操作値をレジスタPitchに加算して修正ピッチP_Mを発生する。
そして、ステップSD2では、上記ステップSD1にて発生した修正ピッチP_Mを音源8のマスター発振器200に設定する。これにより、マスター発振器200は、CPU4から供給される修正ピッチP_Mに応じた周波数のマスタークロックMCを発生する。
続いて、ステップSD3では、スレーブ発振器A205に設定するピッチP_S1を発生する。すなわち、上記ステップSD1と同様、レジスタBenderに格納されるベンダ操作値を、当該ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_Sおよびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_Sにて補正し、補正されたベンダ操作値をレジスタPitchに加算してピッチP_S1を発生する。
そして、ステップSD4では、上記ステップSD3にて発生したピッチP_S1をスレーブ発振器A205に設定する。これにより、スレーブ発振器A205は、CPU4から供給されるピッチP_S1に応じた周波数の第1のスレーブクロックSC1を発生する。
次に、ステップSD5では、スレーブ発振器B206に設定するピッチP_S2を発生する。ピッチP_S2は次式で算出される。すなわち、P_S2=(1−Duty)×WTS_S×P_M×P_S1/(WTS_M×P_S1−WTS_S×P_M×Duty)
ここで、Dutyはデューティ比、WTS_Sは波形番号WF_Sで指定されるスレーブ波形テーブルのテーブルサイズ、P_Mはマスター発振器200に設定する修正ピッチ、P_S1はスレーブ発振器A205に設定するピッチ、WTS_Mは波形番号WF_Mで指定されるマスター波形テーブル先頭アドレスである。 そして、ステップSD6では、上記ステップSD5にて発生したピッチP_S2をスレーブ発振器B206に設定する。これにより、スレーブ発振器B206は、ピッチP_S2に応じた周波数の第2のスレーブクロックSC2を発生する。
このように、オシレータ設定処理では、音源8のマスター発振器200、スレーブ発振器A205およびスレーブ発振器B206に対し、マスタークロックMC、第1のスレーブクロックSC1および第2のスレーブクロックSC2の各周波数を決めるピッチ情報(修正ピッチP_M、ピッチP_S1、ピッチP_S2)を設定する。
こうしたオシレータ設定が行われると、音源8ではマスター波形とスレーブ波形とを混合して楽音波形を形成する。すなわち、音源8のマスター波形発生部では、CPU4により設定された修正ピッチP_Mに対応した周期で波形番号WF_Mにて指定される波形形状のマスター波形を発生する。
一方、スレーブ波形発生部では、デューティ比Dutyで指定される波形A区間にある時には、CPU4により設定されたピッチP_S1に対応した周期で波形番号WF_Sにて指定される波形形状のスレーブ波形を発生し、波形A区間を過ぎて波形B区間に移行すると、マスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるように、スレーブ波形の波形読み出し速度を変化させる。つまり、CPU4により設定されたピッチP_S2に対応した周期でスレーブ波形を発生させる。この結果、マスター波形とスレーブ波形とが波形不連続にならずに同期する為、耳障りな楽音波形にならず、音楽的に自然なオシレータシンクロナイズ効果を得ることが可能になっている。
<ベンダ処理の動作>
次に、図12を参照してベンダ処理の動作を説明する。前述したメインルーチンのステップSA4(図8参照)を介して本処理が実行されると、CPU4は図12に示すステップSE1に処理を進め、レジスタPitchの値が「−1」、つまり消音済みであるかどうかを判断する。消音済みならば、判断結果は「YES」になり、本処理を完了させてベンダホイール3の回動操作を無効にする。一方、発音中であると、判断結果が「NO」となり、ステップSE2に進み、ベンダホイール3の回動操作に応じて発生するA/D変換値をレジスタAにストアする。
次いで、ステップSE3では、レジスタBenderに格納される前回のベンダ操作値と現在のベンダ操作値(レジスタAの値)とが一致するかどうかを判断する。一致する場合には、判断結果が「YES」になり、何も行わずに本処理を完了させる。一方、一致しない場合には、判断結果が「NO」となり、現在のベンダ操作値(レジスタAの値)をレジスタBenderにストアし、レジスタBenderの値を更新する。そして、ステップSE5を介して前述したオシレータ設定処理(図11参照)を実行する。この場合、更新されたレジスタBenderの値に基づき、音源8のマスター発振器200、スレーブ発振器A205およびスレーブ発振器B206に対し、マスタークロックMC、第1のスレーブクロックSC1および第2のスレーブクロックSC2の各周波数を決めるピッチ情報(修正ピッチP_M、ピッチP_S1、ピッチP_S2)を設定し直してから本処理を終える。
以上のように、第1実施形態では、発生すべき音高に対応した周期のマスター波形を発生させておき、デューティ比Dutyで指定される波形A区間においてはマスター波形と同様に発生すべき音高に対応した周期のスレーブ波形を発生させ、波形A区間を過ぎて波形B区間に移行した時点で、マスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるように、スレーブ波形の周期(波形読み出し速度)を変化させるので、マスター波形とスレーブ波形とが波形不連続にならずに同期する。この結果、耳障りな楽音波形にならず、音楽的に自然なオシレータシンクロナイズ効果を得ることが出来る。
B.第2実施形態
次に、図13〜図16を参照して第2実施形態について説明する。第2実施形態の全体構成は前述の第1実施形態と同一なので、その説明については省略する。前述の第1実施形態では、デューティ比Dutyで指定される波形A区間を過ぎて波形B区間に移行した時点で、スレーブ波形の波形読み出し速度を変化させてマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるのに対し、第2実施形態ではマスター波形一周期の期間内に、スレーブ波形の波形読み出し速度を加速させてマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるようにした点で相違する。以下、こうした第2実施形態による音源8の構成について図13を参照して説明する。
(1)音源8の構成
第2実施形態による音源8は、マスター波形発生部、スレーブ波形発生部および波形合成部に大別される。マスター波形発生部は、マスター発振器200、アドレス発生器201、アドレス比較器202および波形発生器203から構成される。マスター発振器200は、CPU4から供給されるピッチPitchに対応した周波数のマスタークロックMCを発生する。アドレス発生器201は、CPU4から供給される波形テーブル先頭アドレスWT_Mから、マスタークロックMCに従って歩進される読み出しアドレスを発生する。アドレス比較器202は、アドレス発生器201が波形一周期分の読み出しアドレスを発生し終えて先頭アドレスに復帰した時点でスレーブ波形発生部側のアドレス発生器207と発振加速器212とにリセット信号を送出して同期指示を与える。
波形発生器203は、第1実施形態と同様、図4(a)〜(d)に図示した波形形状の波形データを記憶した各波形テーブルを備え、これら波形テーブルの内、CPU4から供給される波形番号WF_Mで指定される波形テーブルから、アドレス発生器201が発生する読み出しアドレスに応じて波形データを読み出してマスター波形を発生する。上述の波形テーブル先頭アドレスWT_Mは、波形番号WF_Mにて指定される波形形状の波形テーブルの先頭アドレスを指す。このように、マスター波形発生部では、CPU4から供給されるピッチPitchに対応した周期で指定形状のマスター波形を発生する。
スレーブ波形発生部は、スレーブ発振器205、発振加速器212、アドレス発生器207および波形発生器209から構成される。スレーブ発振器205は、CPU4から供給されるピッチPitchに対応した周波数のスレーブクロックSCを発生させた後、そのスレーブクロックSCの周波数を発振加速器212から供給される周波数加算値に従って増加させる。つまり、スレーブ発振器205は、CPU4から供給される加速値ACCに応じて読み出し速度を加速させるスレーブクロックSCを発生する。発振加速器212は、CPU4から供給される加速値ACCに対応した周波数加算値を発生してスレーブ発振器205に供給する。発振加速器212では、マスター波形発生部側のアドレス比較器202からリセット信号を受領した場合、周波数加算値をゼロリセットする。
アドレス発生器207は、スレーブ発振器205が発生するスレーブクロックSCに従って、CPU4から供給される波形テーブル先頭アドレスWT_Sから歩進させる読み出しアドレスを発生する。アドレス発生器207では、マスター波形発生部側のアドレス比較器202からリセット信号を受領した場合、読み出しアドレスをゼロリセットする。波形発生器209は、マスター波形発生部の波形発生器203と同様、図4(a)〜(d)に図示した各形状の波形データからなる波形テーブルを具備し、CPU4から供給される波形番号WF_Sにて指定される波形テーブルから、アドレス発生器207が発生する読み出しアドレスに応じて波形データを読み出してスレーブ波形を発生する。
このように、スレーブ波形発生部では、マスター波形一周期の期間内に、スレーブ波形の波形読み出し速度を加速させてマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させる。スレーブ波形の波形読み出し速度を加速させる加速値ACCは、2(r−1)で表現できる。ここで、rはスレーブ波形テーブルのテーブルサイズWTS_S/マスター波形テーブルのテーブルサイズWTS_Mである。この式は、マスター波形一周期の期間およびスレーブ波形の読み出し速度の初期値をそれぞれ「1」としたとき、時間変数をtとして、(ACC×t+1)をtで0から1まで積分した結果がrになることから導かれる。したがって、rが「3」の場合には、加速値ACCは2(3−1)より「4」となる。
つまり、図14(a)に図示するように、マスター周期(マスター波形一周期)の期間で「0」〜「4」にリニア変化する加速値ACCを発生すると、同図(b)に図示するスレーブクロックSC(スレーブ発振出力)が生成され、こうしたスレーブクロックSCにて波形読み出しを行うと、マスター波形一周期の期間内に、マスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるようにスレーブ波形の波形読み出し速度を加速させる為、同図(c)に図示するように、本来一点鎖線で示されるスレーブ波形が変形され、実線で図示されたスレーブ波形出力となる。
波形合成部は、係数乗算器204,210およびミキサ211から構成される。係数乗算器204は、波形発生器203が出力するマスター波形に、CPU4から供給されるマスター波形レベルLevel_Mを乗算して出力する。係数乗算器210は、波形発生器209が出力するスレーブ波形に、CPU4から供給されるスレーブ波形レベルLevel_Sを乗算して出力する。ミキサ211は、係数乗算器204から出力されるマスター波形と、係数乗算器210から出力されるスレーブ波形とを混合して出力する。
(2)動作
次に、図15〜図16を参照して第2実施形態の動作について説明する。以下では、前述の第1実施形態と相違する第2実施形態によるスイッチ処理およびオシレータ設定処理の各動作について述べる。
<スイッチ処理の動作>
前述した第1実施形態と同様にメインルーチンのステップSA2を介して第2実施形態によるスイッチ処理が実行されると、ステップSF1に進み、マスター波形選択スイッチ操作の有無を判断する。マスター波形選択スイッチ操作が行われると、判断結果が「YES」になり、ステップSF2に進む。ステップSF2では、当該スイッチ操作で選択されたマスター波形の形状を指定する波形番号をレジスタWF_Mにストアする。また、ステップSF2では、波形番号WF_Mで指定される形状のマスター波形を発生させる波形テーブルの先頭アドレスをレジスタWT_Mにストアする。さらに、ステップSF2では、波形番号WF_Mで指定される波形テーブルのテーブルサイズをレジスタWTS_Mにストアする。加えて、ステップSF2では、アドレス比較器202(図13参照)に波形テーブル先頭アドレスWT_Mをセットした後、後述のステップSF5に処理を進める。
なお、アドレス比較器202は、CPU4によりセットされた波形テーブル先頭アドレスWT_Mを参照し、アドレス発生器201が波形一周期分の読み出しアドレスを発生し終えて当該先頭アドレスWT_Mに復帰した時点でスレーブ波形発生部側のアドレス発生器207および発振加速器212にリセット信号を送出して同期指示を与えるようになっている。
一方、マスター波形選択スイッチ操作が行われない場合には、上記ステップSF1の判断結果が「NO」になり、ステップSF3に進み、スレーブ波形選択スイッチ操作の有無を判断する。スレーブ波形選択スイッチ操作が行われなければ、判断結果は「NO」になり、後述のステップSF5に進むが、スレーブ波形選択スイッチ操作が行われると、判断結果が「YES」になり、ステップSF4に進む。
ステップSF4では、当該スイッチ操作で選択されたスレーブ波形の形状を指定する波形番号をレジスタWF_Sにストアする。また、ステップSF4では、波形番号WF_Sで指定される形状のスレーブ波形を発生させる波形テーブルの先頭アドレスをレジスタWT_Sにストアする。さらに、ステップSF4では、波形番号WF_Sで指定される波形テーブルのテーブルサイズをレジスタWTS_Sにストアする。加えて、ステップSF4では、アドレス発生器207(図13参照)に波形テーブル先頭アドレスWT_Sをセットする。
この後、ステップSF5に進み、例えば係数乗算器204,210(図13参照)に付与するマスター波形レベルLevel_Mやスレーブ波形レベルLevel_Sの他、ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_M、ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_Sおよびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_Sを設定する、その他のスイッチ処理を実行して本処理を完了させる。
<オシレータ設定処理の動作>
次に、図16を参照してオシレータ設定処理の動作を説明する。前述の第1実施形態と同様、鍵盤処理のステップSC4(図10参照)又はベンダ処理のステップSE5(図12参照)を介して第2実施形態によるオシレータ設定処理が実行されると、CPU4は図16に示すステップSG1に処理を進め、ベンダホイール3の回動操作で発生するベンダ操作値等に基づきレジスタPitchの値を修正して修正ピッチP_Mを発生する。
具体的には、レジスタBenderに格納されるベンダ操作値を、当該ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_Mにて補正し、補正されたベンダ操作値をレジスタPitchに加算して修正ピッチP_Mを発生する。
続いて、ステップSG2では、上記ステップSG1にて発生した修正ピッチP_Mを音源8のマスター発振器200(図13参照)に設定する。これにより、マスター発振器200は、CPU4から供給される修正ピッチP_Mに対応した周波数のマスタークロックMCを発生する。
次に、ステップSG3では、スレーブ発振器205(図13参照)に設定するピッチP_Sを発生する。すなわち、上記ステップSG1と同様、レジスタBenderに格納されるベンダ操作値を、ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_Sおよびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_Sにて補正し、補正されたベンダ操作値をレジスタPitchに加算してピッチP_Sを発生する。
次いで、ステップSG4では、上記ステップSG3にて発生したピッチP_Sをスレーブ発振器205に設定する。これにより、スレーブ発振器205は、CPU4から供給されるピッチP_Sに対応した周波数のスレーブクロックSCを発生する。
ステップSG5では、ACC=(2×P_M/WTS_M)×((WTS_S×P_M/WTS_M)−P_S)なる算出式に基づき加速値ACCを発生する。ここで、P_Mはマスター発振器200に設定する修正ピッチ、WTS_Mは波形番号WF_Mで指定されるマスター波形テーブル先頭アドレス、WTS_Sは波形番号WF_Sで指定されるスレーブ波形テーブルのテーブルサイズ、P_Sはスレーブ発振器205に設定するピッチである。この式は、時間変数をtとして、(ACC×t+P_S)を、tで0から(WTS_M/P_M)まで積分した結果がWTS_Sになることから導かれる。次いで、ステップSG6では、上記ステップSG5において発生した加速値ACCを発振加速器212(図13参照)に設定して本処理を終える。
以上のように、第2実施形態では、発振加速器212が加速値ACCに対応した周波数加算値をスレーブ発振器205に供給し、これに応じてスレーブ発振器205がマスター波形一周期の期間内に、スレーブ波形の波形読み出し速度を加速させてマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるため、マスター波形とスレーブ波形とが波形不連続にならずに同期し、この結果、耳障りな楽音波形にならず、音楽的に自然なオシレータシンクロナイズ効果を得ることが可能になる。
C.第3実施形態
次に、図17〜図20を参照して第3実施形態について説明する。
(1)音源8の構成
図17は、第3実施形態による音源8の構成を示すブロック図である。この図に示す音源8において、上述した第2実施形態の音源8と共通する構成要素には同一の番号を付し、その説明を省略する。第3実施形態の音源8が上述の第2実施形態と相違する点は、波形発生器209と係数乗算器210との間に、エンベロープ発生器213の出力に応じてスレーブ波形レベルを制御する係数乗算器214を設け、マスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるように当該スレーブ波形をエンベロープ制御することにある。
エンベロープ発生器213は、各種形状のエンベロープ波形(EGカーブ)を記憶したEGカーブテーブルを備え、後述するEGカーブ設定スイッチ操作に応じてCPU4が指定するEGカーブ(指定形状のエンベロープ波形)を、マスター波形周期に同期した読み出し速度で読み出す。そうしてエンベロープ発生器213から出力されるエンベロープ波形は、係数乗算器214の乗算係数として与えられ、これによりマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるようにエンベロープ制御する。
例えば、図18(a)に図示するように、エンベロープ発生器213がマスター周期(マスター波形一周期)に対応したエンベロープ出力を発生させた場合には、同図(b)に図示するように、本来一点鎖線で示されるスレーブ波形が変形されて実線で図示されるスレーブ波形出力が生成される。
(2)動作
次に、図19〜図20を参照して第3実施形態の動作について説明する。以下では、前述の第1実施形態と相違する第3実施形態によるスイッチ処理およびオシレータ設定処理の各動作について述べる。
<スイッチ処理の動作>
前述した第1実施形態と同様にメインルーチンのステップSA2を介して第3実施形態によるスイッチ処理が実行されると、ステップSH1に進み、マスター波形選択スイッチ操作の有無を判断する。マスター波形選択スイッチ操作が行われると、判断結果が「YES」になり、ステップSH2に進む。ステップSH2では、当該スイッチ操作で選択されたマスター波形の形状を指定する波形番号をレジスタWF_Mにストアする。また、ステップSH2では、波形番号WF_Mで指定される形状のマスター波形を発生させる波形テーブルの先頭アドレスをレジスタWT_Mにストアする。さらに、ステップSH2では、波形番号WF_Mで指定される波形テーブルのテーブルサイズをレジスタWTS_Mにストアする。加えて、ステップSH2では、アドレス比較器202(図17参照)に波形テーブル先頭アドレスWT_Mをセットした後、後述のステップSH7に処理を進める。
なお、アドレス比較器202は、CPU4によりセットされた波形テーブル先頭アドレスWT_Mを参照し、アドレス発生器201が波形一周期分の読み出しアドレスを発生し終えて当該先頭アドレスWT_Mに復帰した時点でスレーブ波形発生部側のアドレス発生器207にリセット信号を送出して同期指示を与えるようになっている。
一方、マスター波形選択スイッチ操作が行われない場合には、上記ステップSH1の判断結果が「NO」になり、ステップSH3に進み、スレーブ波形選択スイッチ操作の有無を判断する。スレーブ波形選択スイッチ操作が行われなければ、判断結果は「NO」になり、後述のステップSH5に進むが、スレーブ波形選択スイッチ操作が行われると、判断結果が「YES」になり、ステップSH4に進む。
ステップSH4では、当該スイッチ操作で選択されたスレーブ波形の形状を指定する波形番号をレジスタWF_Sにストアする。また、ステップSH4では、波形番号WF_Sで指定される形状のスレーブ波形を発生させる波形テーブルの先頭アドレスをレジスタWT_Sにストアする。さらに、ステップSH4では、波形番号WF_Sで指定される波形テーブルのテーブルサイズをレジスタWTS_Sにストアする。加えて、ステップSH4では、アドレス発生器207(図17参照)に波形テーブル先頭アドレスWT_Sをセットする。
次いで、ステップSH5では、EGカーブ設定スイッチ操作の有無を判断する。EGカーブ設定スイッチ操作が行われなければ、判断結果は「NO」になり、後述のステップSH7に進むが、EGカーブ設定スイッチ操作が行われると、判断結果が「YES」になり、ステップSH6に進む。ステップSH6では、EGカーブ設定スイッチ操作で選択されたEGカーブを設定するようエンベロープ発生器213(図17参照)に指示する。
この後、ステップSH7に進み、例えば係数乗算器204,210(図17参照)に付与するマスター波形レベルLevel_Mやスレーブ波形レベルLevel_Sの他、ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_M、ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_Sおよびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_Sを設定する、その他のスイッチ処理を実行して本処理を完了させる。
<オシレータ設定処理の動作>
次に、図20を参照してオシレータ設定処理の動作を説明する。前述の第1実施形態と同様、鍵盤処理のステップSC4(図10参照)又はベンダ処理のステップSE5(図12参照)を介して第3実施形態によるオシレータ設定処理が実行されると、CPU4は図20に示すステップSJ1に処理を進め、ベンダホイール3の回動操作で発生するベンダ操作値等に基づきレジスタPitchの値を修正して修正ピッチP_Mを発生する。
具体的には、レジスタBenderに格納されるベンダ操作値を、当該ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_Mにて補正し、補正されたベンダ操作値をレジスタPitchに加算して修正ピッチP_Mを発生する。
続いて、ステップSJ2では、上記ステップSJ1にて発生した修正ピッチP_Mをマスター発振器200(図17参照)に設定する。これにより、マスター発振器200は、CPU4から供給される修正ピッチP_Mに対応した周波数のマスタークロックMCを発生する。
次に、ステップSJ3では、スレーブ発振器205(図17参照)に設定するピッチP_Sを発生する。すなわち、上記ステップSJ1と同様、レジスタBenderに格納されるベンダ操作値を、ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_Sおよびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_Sにて補正し、補正されたベンダ操作値をレジスタPitchに加算してピッチP_Sを発生する。
次いで、ステップSJ4では、上記ステップSJ3にて発生したピッチP_Sをスレーブ発振器205に設定する。これにより、スレーブ発振器205は、CPU4から供給されるピッチP_Sに対応した周波数のスレーブクロックSCを発生する。ステップSJ5では、修正ピッチP_Mで定まるマスター波形周期をレジスタTにストアし、続くステップSJ6では、そのレジスタTの値(マスター波形周期)をエンベロープ発生器213(図17参照)に設定して本処理を終える。
このように、第3実施形態では、マスター波形周期に同期した読み出し速度でエンベロープ波形を生成し、そのエンベロープ波形をスレーブ波形に乗算することによって、マスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるエンベロープ制御が行われるので、マスター波形とスレーブ波形とが波形不連続にならずに同期し、この結果、耳障りな楽音波形にならず、音楽的に自然なオシレータシンクロナイズ効果を得ることが可能になる。
C.第4実施形態
次に、図21〜図25を参照して第4実施形態について説明する。第4実施形態の全体構成は前述の第1実施形態と同一なので、その説明については省略する。前述の第1実施形態では、デューティ比Dutyで指定される波形A区間を過ぎて波形B区間に移行した時点で、スレーブ波形の波形読み出し速度を変化させてマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるのに対し、第4実施形態では、少なくとも2系統のスレーブ波形発生部を設け、マスター波形一周期の期間内に、2系統のスレーブ波形発生部からそれぞれ交互にスレーブ波形を発生させてマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させる点で相違する。以下、こうした処理を具現する音源8の構成について図21を参照して説明する。
(1)音源8の構成
第4実施形態による音源8は、マスター波形発生部、スレーブ波形発生部および波形合成部に大別される。マスター波形発生部は、マスター発振器200、アドレス発生器201、アドレス比較器202および波形発生器203から構成される。マスター発振器200は、CPU4から供給されるピッチPitchに対応した周波数のマスタークロックMCを発生する。アドレス発生器201は、CPU4から供給される波形テーブル先頭アドレスWT_Mから、マスタークロックMCに従って歩進される読み出しアドレスを発生する。アドレス比較器202は、アドレス発生器201が波形一周期分の読み出しアドレスを発生し終えて先頭アドレスに復帰する毎に、第1スレーブ波形発生部のアドレス発生器207および第2スレーブ波形発生部のアドレス発生器216を交互に選択し、選択した側のアドレス発生器にリセット信号を送出して同期指示を与える。
波形発生器203は、第1実施形態と同様、図4(a)〜(d)に図示した波形形状の波形データを記憶した各波形テーブルを備え、これら波形テーブルの内、CPU4から供給される波形番号WF_Mで指定される波形テーブルから、アドレス発生器201が発生する読み出しアドレスに応じて波形データを読み出してマスター波形を発生する。上述の波形テーブル先頭アドレスWT_Mは、波形番号WF_Mにて指定される波形形状の波形テーブルの先頭アドレスを指す。このように、マスター波形発生部では、CPU4から供給されるピッチPitchに対応した周期で指定形状のマスター波形を発生する。
スレーブ波形発生部は、スレーブ発振器205およびアドレス発生器207からなる第1スレーブ波形発生部と、スレーブ発振器215およびアドレス発生器216からなる第2スレーブ波形発生部とから構成される。スレーブ発振器205,215は、CPU4から供給されるピッチPitchに対応した周波数のスレーブクロックSCを発生する。アドレス発生器207,216は、アドレス比較器202により交互に起動される。起動されたアドレス発生器207,216は、スレーブクロックSCに従って、CPU4から供給される波形テーブル先頭アドレスWT_Sから歩進させる読み出しアドレスを発生する。波形発生器209,217は、マスター波形発生部の波形発生器203と同様、図4(a)〜(d)に図示した各形状の波形データからなる波形テーブルを具備し、CPU4から供給される波形番号WF_Sにて指定される波形テーブルから、アドレス発生器207,216が発生する読み出しアドレスに応じて波形データを読み出してスレーブ波形を発生する。
このように、スレーブ波形発生部では、図22(a)に図示するように、マスター波形周期毎に、スレーブ1波形出力(同図(b))およびスレーブ2波形出力(同図(c))を交互に発生させることによって、マスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるようにしている。
波形合成部は、係数乗算器204,210,218およびミキサ211から構成される。係数乗算器204は、波形発生器203が出力するマスター波形に、CPU4から供給されるマスター波形レベルLevel_Mを乗算して出力する。係数乗算器210,218は、波形発生器209,217が出力する各スレーブ波形に、CPU4から供給されるスレーブ波形レベルLevel_Sを乗算して出力する。ミキサ211は、係数乗算器204から出力されるマスター波形と、係数乗算器210,218から出力されるスレーブ波形とを混合して出力する。
(2)動作
説明の簡略化を図る為、上述した音源8では、2系統のスレーブ波形発生部を具備するものとして説明したが、以下に述べるCPU4の動作は、音源8がN系統(Nは2以上)のスレーブ波形発生部を備えたものを想定している。したがって、本実施形態では、RAM7が図23に図示する主要レジスタ構成を具備する。
図23に示すRAM7の主要レジスタ構成が前述した第1実施形態(図2参照)と相違する点は、ピッチ変化幅BR_S、粗チューニング値CT_S、精チューニング値FT_S、スレーブ波形レベルLevel_S、スレーブ波形番号WF_Sおよびスレーブ波形テーブル先頭アドレスWT_Sが、それぞれN系統のスレーブ波形発生部に対応した[1]〜[N]の配列要素を備えると共に、N系統のスレーブ波形発生部の起動順序を指定する起動順序ORD[1]〜[N]を備えることにある。以下、こうした第4実施形態のスイッチ処理およびオシレータ設定処理の各動作について図24〜図25を参照して説明する。
<スイッチ処理の動作>
前述した第1実施形態と同様にメインルーチンのステップSA2を介して第2実施形態によるスイッチ処理が実行されると、CPU4は操作されるスイッチ種に対応した処理を実行する。以下では、マスター波形選択スイッチ操作、スレーブ波形選択スイッチ操作およびスレーブ起動順序設定スイッチ操作が行われた場合の各動作を述べる。
a.マスター波形選択スイッチ操作
マスター波形選択スイッチ操作が行われると、ステップSK1の判断結果が「YES」になり、ステップSK2に進む。ステップSK2では、マスター波形選択スイッチ操作で選択されたマスター波形の形状を指定する波形番号をレジスタWF_Mにストアする。また、ステップSK2では、波形番号WF_Mで指定される形状のマスター波形を発生させる波形テーブルの先頭アドレスをレジスタWT_Mにストアする。さらに、ステップSK2では、波形番号WF_Mで指定される波形テーブルのテーブルサイズをレジスタWTS_Mにストアする。加えて、ステップSK2では、アドレス比較器202(図21参照)に波形テーブル先頭アドレスWT_Mをセットした後、後述のステップSK7に処理を進める。
なお、アドレス比較器202は、CPU4によりセットされた波形テーブル先頭アドレスWT_Mを参照し、アドレス発生器201が波形一周期分の読み出しアドレスを発生し終えて当該先頭アドレスWT_Mに復帰する毎に、起動順序ORD[1]〜[N]で指定される順序に従ってN系統のスレーブ波形発生部[1]〜[N]を順番に選択するようになっている。
b.スレーブ波形選択スイッチ操作
スレーブ波形選択スイッチ操作が行われると、ステップSK3の判断結果が「YES」になり、ステップSK4に進む。ここで、n番目(1≦n≦N)のスレーブ波形発生部が選択されているものとする。ステップSK4では、起動順序ORD[1]〜[N]に従って起動された各スレーブ波形発生部のパラメータとして、スレーブ波形選択スイッチ操作で選択されたスレーブ波形の形状を指定する波形番号をレジスタWF_S[n]にストアする。また、ステップSK4では、波形番号WF_S[n]で指定される形状のスレーブ波形を発生させる波形テーブルの先頭アドレスをレジスタWT_S[n]にストアする。さらに、ステップSK4では、起動順序ORD[1]〜[N]に従って起動されたスレーブ波形発生部のアドレス発生器に波形テーブル先頭アドレスWT_S[n]をセットした後、後述のステップSK7に処理を進める。
c.スレーブ起動順序設定スイッチ操作
スレーブ起動順序設定スイッチ操作が行われると、ステップSK5の判断結果が「YES」になり、ステップSK6に進み、当該スイッチ操作で設定されるスレーブ波形発生部[1]〜[N]の起動順序をレジスタORD[1]〜[N]に登録すると共に、レジスタORD[1]〜[N]に登録された起動順序をアドレス比較器202にセットする。これにより、アドレス比較器202は、アドレス発生器201が波形一周期分の読み出しアドレスを発生し終えて先頭アドレスに復帰する毎に、N系統のスレーブ波形発生部[1]〜[N]を順番に選択する。
この後、ステップSK7に進み、例えばマスター波形レベルLevel_Mやスレーブ波形レベルLevel_S[1]〜[N]の他、ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_M、ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S[1]〜[N]、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_S[1]〜[N]およびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_S[1]〜[N]を設定する、その他のスイッチ処理を実行して本処理を完了させる。
<オシレータ設定処理の動作>
次に、図25を参照して第4実施形態によるオシレータ設定処理の動作を説明する。前述の第1実施形態と同様、鍵盤処理のステップSC4(図10参照)又はベンダ処理のステップSE5(図12参照)を介して第4実施形態によるオシレータ設定処理が実行されると、CPU4は図25に示すステップSL1に処理を進め、ベンダホイール3の回動操作で発生するベンダ装置等に基づきレジスタPitchの値を修正して修正ピッチP_Mを発生する。
具体的には、レジスタBenderに格納されるベンダ操作値を、ベンダ操作値に対応するマスター波形のピッチ変化幅BR_M、マスター波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_M、マスター波形のピッチをセント単位でチューニングする精チューニング値FT_Mにて補正し、補正されたベンダ操作値をレジスタPitchに加算して修正ピッチP_Mを発生する。
続いて、ステップSL2では、上記ステップSL1にて発生した修正ピッチP_Mをマスター発振器200(図21参照)に設定する。これにより、マスター発振器200は、CPU4から供給される修正ピッチP_Mに応じた周波数のマスタークロックMCを発生する。次に、ステップSL3では、N系統のスレーブ波形発生部[1]〜[N]がそれぞれ備える各スレーブ発振器に設定するピッチP_S[n](n=1〜N)を発生する。
すなわち、上記ステップSL1と同様、レジスタBenderに格納されるベンダ操作値を、ベンダ操作値に対応するスレーブ波形のピッチ変化幅BR_S[n]、スレーブ波形のピッチを半音(100セント)単位でチューニングする粗チューニング値CT_S[n]およびスレーブ波形のピッチをセント単位でチューニングする精チューニング値FT_S[n]にて補正し、補正されたベンダ操作値をレジスタPitchに加算してピッチP_S[n]を発生する。
次いで、ステップSL4では、上記ステップSL3にて発生したピッチP_S[n]を、対応するスレーブ発振器に設定して本処理を終える。これにより、N系統のスレーブ波形発生部[1]〜[N]がそれぞれ備える各スレーブ発振器は、CPU4から供給されるピッチP_S[n]に応じた周波数のスレーブクロックSCを発生する。
以上のように、第4実施形態では、少なくとも2系統のスレーブ波形発生部を設けておき、マスター波形一周期の期間内に、2系統のスレーブ波形発生部からそれぞれ交互にスレーブ波形を発生させてマスター波形のゼロクロス点にスレーブ波形のゼロクロス点を一致させるため、マスター波形とスレーブ波形とが波形不連続にならずに同期し、この結果、耳障りな楽音波形にならず、音楽的に自然なオシレータシンクロナイズ効果を得ることが可能になる。
なお、第4実施形態の動作では、N系統のスレーブ波形発生部[1]〜[N]を同時に起動させるようにしたが、これに限らず、発生する楽音のピッチPitchに応じて、起動させるスレーブ波形発生部の系統数を可変させる態様としても構わない。
本発明による第1実施形態の全体構成を示すブロック図である。 RAM7に格納される主要レジスタ・フラグデータの構成を示す図である。 音源8の構成を示すブロック図である。 波形発生器203,209が発生する波形の形状を説明するための波形図である。 デューティ比Dutyの定義を説明するための波形図である。 スレーブ波形発生部の動作例を説明するための波形図である。 スレーブ波形発生部の動作例を説明するための波形図である。 メインルーチンの動作を示すフローチャートである。 スイッチ処理の動作を示すフローチャートである。 鍵盤処理の動作を示すフローチャートである。 オシレータ設定処理の動作を示すフローチャートである。 ベンダ処理の動作を示すフローチャートである。 第2実施形態による音源8の構成を示すブロック図である。 第2実施形態によるスレーブ波形発生部の動作例を説明するための波形図である。 第2実施形態によるスイッチ処理の動作を示すフローチャートである。 第2実施形態によるオシレータ設定処理の動作を示すフローチャートである。 第3実施形態による音源8の構成を示すブロック図である。 第3実施形態によるスレーブ波形発生部の動作例を説明するための波形図である。 第3実施形態によるスイッチ処理の動作を示すフローチャートである。 第3実施形態によるオシレータ設定処理の動作を示すフローチャートである。 第4実施形態による音源8の一構成例を示すブロック図である。 第4実施形態によるスレーブ波形発生部の動作例を説明するための波形図である。 第4実施形態によるRAM7に格納される主要レジスタ・フラグデータの構成を示す図である。 第4実施形態によるスイッチ処理の動作を示すフローチャートである。 第4実施形態によるオシレータ設定処理の動作を示すフローチャートである。 従来技術の課題を説明するための図である。
符号の説明
1 鍵盤
2 スイッチ部
3 ベンダホイール
4 CPU
5 表示部
6 ROM
7 RAM
8 音源
9 D/A変換器
10 サウンドシステム
100 電子楽器

Claims (4)

  1. 発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生手段と、
    波形一周期を第1および第2の波形区間に区分けしておき、第1の波形区間では発生すべき音高に対応したスレーブ用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有する第1のスレーブ波形を発生し、第2の波形区間では当該スレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致する第2のスレーブ波形を発生するスレーブ波形発生手段と、
    前記第1及び第2のスレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成手段と
    を具備することを特徴とする波形発生装置。
  2. 発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生手段と、
    前記マスター波形の一周期の期間内に、発生すべき音高に対応したスレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致するスレーブ波形を発生するスレーブ波形発生手段と、
    前記スレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成手段と
    を具備することを特徴とする波形発生装置。
  3. 発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生処理と、
    波形一周期を第1および第2の波形区間に区分けしておき、第1の波形区間では発生すべき音高に対応したスレーブ用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有する第1のスレーブ波形を発生し、第2の波形区間では当該スレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致する第2のスレーブ波形を発生するスレーブ波形発生処理と、
    前記第1及び第2のスレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成処理と
    をコンピュータで実行させることを特徴とする波形発生処理プログラム。
  4. 発生すべき音高に対応したマスター用読み出し速度に基づき、波形一周期終了時にゼロクロス点を有するマスター波形を発生するマスター波形発生処理と、
    前記マスター波形の一周期の期間内に、発生すべき音高に対応したスレーブ用読み出し速度を変化させることにより、波形一周期終了時のゼロクロス点が前記マスター波形一周期終了時のゼロクロス点と一致するスレーブ波形を発生するスレーブ波形発生処理と、
    前記スレーブ波形と前記マスター波形とを合成して楽音波形を形成する波形合成処理と
    をコンピュータで実行させることを特徴とする波形発生処理プログラム。
JP2004267840A 2004-09-15 2004-09-15 波形発生装置および波形発生処理プログラム Expired - Fee Related JP4232203B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004267840A JP4232203B2 (ja) 2004-09-15 2004-09-15 波形発生装置および波形発生処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004267840A JP4232203B2 (ja) 2004-09-15 2004-09-15 波形発生装置および波形発生処理プログラム

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2008273695A Division JP2009042785A (ja) 2008-10-24 2008-10-24 波形発生装置および波形発生処理のプログラム
JP2008273694A Division JP4479847B2 (ja) 2008-10-24 2008-10-24 波形発生装置および波形発生処理のプログラム

Publications (2)

Publication Number Publication Date
JP2006084611A JP2006084611A (ja) 2006-03-30
JP4232203B2 true JP4232203B2 (ja) 2009-03-04

Family

ID=36163198

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004267840A Expired - Fee Related JP4232203B2 (ja) 2004-09-15 2004-09-15 波形発生装置および波形発生処理プログラム

Country Status (1)

Country Link
JP (1) JP4232203B2 (ja)

Also Published As

Publication number Publication date
JP2006084611A (ja) 2006-03-30

Similar Documents

Publication Publication Date Title
JPH06195073A (ja) 効果付与装置
JPH027078B2 (ja)
JP4702392B2 (ja) 共鳴音発生装置および電子楽器
JP6252642B1 (ja) 効果付与装置、効果付与方法、プログラムおよび電子楽器
JP2002366145A (ja) 楽音生成装置
JPS5925235B2 (ja) 電子楽器
JP4232203B2 (ja) 波形発生装置および波形発生処理プログラム
JP4479847B2 (ja) 波形発生装置および波形発生処理のプログラム
JP2009042785A (ja) 波形発生装置および波形発生処理のプログラム
JP4561531B2 (ja) 楽音制御装置および楽音制御処理のプログラム
JP6528752B2 (ja) 楽音再生装置、楽音再生方法、プログラムおよび電子楽器
JP6575585B2 (ja) 効果付与装置、効果付与方法、プログラムおよび電子楽器
JP5169753B2 (ja) 共鳴音付加装置および電子楽器
JP4088947B2 (ja) 楽音発生装置
JP2007140000A (ja) 歌唱採点装置および歌唱採点処理のプログラム
JP5995054B2 (ja) 波形発生装置、プログラム、波形発生方法および電子楽器
JP4998565B2 (ja) 歌唱採点装置および歌唱採点処理のプログラム
JP2018159734A (ja) 音色制御装置、音色制御方法、プログラムおよび電子楽器
JP3909693B2 (ja) 楽音変調装置、楽音変調方法および楽音変調プログラム
JP2684833B2 (ja) 楽音信号発生装置
JP5035388B2 (ja) 共鳴音発生装置および電子楽器
JP5099146B2 (ja) 歌唱採点装置および歌唱採点処理のプログラム
JP2684791B2 (ja) 楽音制御用波形信号発生装置
JP2006133342A (ja) 楽音制御装置および楽音制御処理のプログラム
JP2012220861A (ja) 楽音発生装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081024

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: 20081117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081130

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4232203

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131219

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees