(57)【要約】      （修正有）【課題】楽音信号のパラメータに時間的変化を与えるエンベロープ波形を発生するエンベロープ発生技術に関し、入力する変調信号によってエンベロープの各ステップの時間長を制御するエンベロープ発生装置を提供する。【解決手段】エンベロープ波形の開始時点から終了時点までの間の各変化点に対応する変化点出力値データＬ［ｎ］と変化時間長データＴs［ｎ］とを含む各ユーザパラメータ組が設定されることにより、エンベロープ波形の基本特性が決まる。変調入力値データに基づいて、変化時間長データＴs［１］が変調される。変調入力値データが演奏時の音高値に従って変化することにより、エンベロープ波形データの出力値がＳ点の変化点を通過後に変化点出力値データＬ［１］に到達する時間タイミングが、Ｃ点、Ａ点、Ｂ点の間またはＥ点、Ａ点、Ｄ点の間で変調され、エンベロープ波形の減衰特性が演奏時の音高値に従って制御される。【選択図】図１
2016061911.tif 000002
【特許請求の範囲】
【請求項１】
エンベロープのステップ毎の形状を決めるパラメータであって、少なくともひとつのステップに対応するパラメータが外部設定可能なエンベロープパラメータをステップ毎に保持するとともに、当該ステップ毎のエンベロープパラメータに基づいて、前記エンベロープの波形データを生成するエンベロープジェネレータと、
入力される変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつを変調して、当該変調されたエンベロープパラメータに基づいて前記エンベロープの波形データを生成するように前記エンベロープジェネレータを制御する変調制御部と、
を備えたエンベロープ発生装置。
【請求項２】
前記エンベロープパラメータは、前記エンベロープの対応するステップのレベル出力値データと、当該ステップ内において前記レベル出力値に到達するまでの時間を表わす変化タイミングデータとを含む、
ことを特徴とする請求項１に記載のエンベロープ発生装置。
【請求項３】
前記変調制御部は、入力される前記変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつに含まれる前記変化タイミングデータを変調する、
ことを特徴とする請求項２に記載のエンベロープ発生装置。
【請求項４】
前記変調制御部は、前記変化タイミングデータの最大変調幅を予め設定する変調深さデータ設定手段を有し、前記変化タイミングデータを、前記設定された最大変調幅の範囲内で、入力される前記変調データに対応して変調する、
ことを特徴とする請求項３に記載のエンベロープ発生装置。
【請求項５】
請求項１乃至４のいずれかに記載のエンベロープ発生装置を備え、当該エンベロープ発生装置が発生するエンベロープの波形データに基づいて楽音信号の特性を制御する電子楽器。
【請求項６】
前記入力される変調データは、前記電子楽器の演奏により指定される音高に基づいて決定される、請求項５に記載の電子楽器。
【請求項７】
エンベロープのステップ毎の形状を決めるパラメータであって、少なくともひとつのステップに対応するパラメータが外部設定可能なエンベロープパラメータをステップ毎に保持するとともに、当該ステップ毎のエンベロープパラメータに基づいて、前記エンベロープの波形データを生成するエンベロープジェネレータを有するエンベロープ発生装置に用いられるエンベロープ発生方法であって、前記エンベロープ発生装置は、
入力される変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつを変調して、当該変調されたエンベロープパラメータに基づいて前記エンベロープの波形データを生成するように前記エンベロープジェネレータを制御する、
ことを特徴とするエンベロープ発生方法。
【請求項８】
エンベロープのステップ毎の形状を決めるパラメータであって、少なくともひとつのステップに対応するパラメータが外部設定可能なエンベロープパラメータをステップ毎に保持するとともに、当該ステップ毎のエンベロープパラメータに基づいて、前記エンベロープの波形データを生成するエンベロープジェネレータを有するエンベロープ発生装置としてコンピュータに、
入力される変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつを変調して、当該変調されたエンベロープパラメータに基づいて前記エンベロープの波形データを生成するように前記エンベロープジェネレータを制御するステップを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音信号のパラメータに時間的変化を与えるエンベロープ波形を発生するエンベロープ発生装置、方法、およびプログラム、ならびにそのようなエンベロープ発生装置を用いた電子楽器に関する。
【背景技術】
【０００２】
シンセサイザ等の電子楽器において、音高、音色、音量等々に時間的変化を与える変調器であるエンベロープジェネレータ（包絡線発生器。以下、「ＥＧ」と称する）が知られている（例えば特許文献１に記載の従来技術）。
【０００３】
ＥＧからの変調信号出力の変化を決定するパラメ−タ種類の形態は何種類かあるが、代表的な形態として、ある変調信号出力値Ｌ0 から他の変調信号出力値Ｌ1 に至る区間（以下これを「ステップ」と称する）の時間Ｔ1 を設定することで、そのステップにおけるＬ0 からＬ1 までの値の変化をＴ1 時間かけて行う変調信号を出力するものが挙げられる。この形態ではさらに、変調信号出力値がＬ1 に到達すると、次のステップのＬ1 からＬ2 までの値の変化をＴ2 時間かけて行う。以下、或るステップのＬn-1 からＬn に到達する時間はＴn というように、同様な動作をする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第２８１７１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記従来のＥＧでは、出力する変調信号のパラメータＬ0 、Ｌ1 、・・・、Ｌn 、・・・Ｔ0 、Ｔ1 、・・・、Ｔn はユ−ザが予め設定可能な、いわゆるユーザパラメータであり、ユ−ザが手動で変更しない限り固定値であった。
【０００６】
従って、例えばピアノの音量変化を再現するために出力される楽音信号の振幅をこのＥＧで変調する場合、鍵域をいくつかの領域に分割し、各々の鍵域でユーザパラメータ値を変えたＥＧを用いることによって、低音域ではゆっくりとした減衰をし、高音域では早い減衰をするといった効果を実現していた。
【０００７】
しかし、このような従来のＥＧを用いた電子楽器では、楽音の振幅の出力値に対して要求される時間変化の特性ごとに複数のＥＧを設置しなければならず、複数のＥＧを並列動作できるようなハードウェアが必要となり、装置のコストアップを招いていた。
【０００８】
また、ユーザは、複数のＥＧに対してユーザパラメータ組を設定する操作が必要となって、電子楽器の操作を難しくしていた。
【０００９】
本発明は、入力する変調信号によってエンベロープジェネレータの各ステップの時間長を制御可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
態様の一例では、エンベロープのステップ毎の形状を決めるパラメータであって、少なくともひとつのステップに対応するパラメータが外部設定可能なエンベロープパラメータをステップ毎に保持するとともに、そのステップ毎のエンベロープパラメータに基づいて、エンベロープの波形データを生成するエンベロープジェネレータと、入力される変調データに基づいて、ステップ毎のエンベロープパラメータの少なくともひとつを変調して、その変調されたエンベロープパラメータに基づいてエンベロープの波形データを生成するようにエンベロープジェネレータを制御する変調制御部と、を備える。
【発明の効果】
【００１１】
本発明によれば、入力する変調信号によってエンベロープジェネレータの各ステップの時間長を制御することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】エンベロープジェネレータの実施形態の動作説明図である。
【図２】エンベロープ発生装置を備える電子鍵盤楽器の実施形態のハードウェア構成例を示す図である。
【図３】電子鍵盤楽器の全体処理例を示すフローチャートである。
【図４】音源処理の詳細例を示すフローチャートである。
【図５】ＥＧスタート処理の詳細例を示すフローチャートである。
【図６】ＥＧ処理の詳細例を示すフローチャートである。
【図７】ＥＧリリース処理の詳細例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図１は、エンベロープジェネレータ（エンベロープ発生装置）（以下「ＥＧ」と称する）の実施形態の動作説明図であり、ＥＧが出力するエンベロープ波形がどのように変化するのかを表すグラフである。
【００１４】
図１に示されるように、本実施形態において出力されるエンベロープ波形データは、出力値０を有する開始時点から出力値０を有する終了時点までの間で、出力値が正の値を有して折れ線状に変化する特性を有する。開始時点を除いて出力値が折れ線状に変化する各時点と終了時点を変化点と定義する。開始時点の次の変化点がｎ＝０番目の変化点、以後の変化点の順番を順次、ｎ＝１、ｎ＝２、・・・とし、終了時点がｎ＝Ｎ−１番目の変化点である。すなわち、Ｎは、変化点の数である。また、変化点の順番ｎを、ＥＧのステップと呼ぶこととする。
【００１５】
本実施形態において、各変数データＬ［ｎ］、Ｔs ［ｎ］、Ｉ［ｎ］、Ｍ［ｎ］、および
Ｔd ［ｎ］を、次のように定義する。
Ｌ［ｎ］：エンベロープ波形の開始時点から終了時点までの間のｎ番目（０≦ｎ≦Ｎ−１、Ｎは変化点の数）の変化点に対応するユーザパラメータ組を構成する変化点出力値データ。
Ｔs ［ｎ］：エンベロープ波形の開始時点から終了時点までの間のｎ番目の変化点に対応しうるユーザパラメータ組を構成する変化タイミングデータであり、ｎ−１番目の出力値Ｌ［ｎ−１］からｎ番目の出力値Ｌ［ｎ］に到達するまでの変化時間長データ。但し、ｎ＝０の場合は、Ｔs ［０］は、出力値０から出力値Ｌ［０］に到達するまでの時間。
Ｉ［ｎ］：変化時間長データＴs ［ｎ］を変調する変調入力値データ。
Ｍ［ｎ］：変調入力値データＩ［ｎ］による変化時間長データＴs ［ｎ］の最大変調時間幅を決定するユーザパラメータである変調深さデータ。
Ｔd ［ｎ］：変化時間長データＴs ［ｎ］に変調がかけられた結果として得られる変調後変化時間長データ。
【００１６】
以上の定義において、ユーザパラメータまたはユーザパラメータ組とは、ＥＧを搭載した電子楽器を演奏するユ−ザが、スイッチ操作を行うなどして設定する変数データを意味する。
【００１７】
図１のグラフにおいて、横軸はＥＧの時間、縦軸はＥＧが出力する出力値データのレベル（振幅）を示す。
【００１８】
本実施例では、各変数データを、以下の値とした場合を例に説明する。
変化点出力値データＬ［０］＝Ｌ［０］（ユ−ザが設定した固定値）
変化時間長データＴs ［０］＝Ｔs ［０］（ユ−ザが設定した固定値）
変調入力値データＩ［０］＝０
変調深さデータＭ［０］＝０
変化点出力値データＬ［１］＝Ｌ［１］（ユ−ザが設定した固定値）
変化時間長データＴs ［１］＝Ｔs ［１］（ユ−ザが設定した固定値）
変調入力値データＩ［１］＝変化値（ＥＧに与える変調信号値）
変調深さデータＭ［１］＝変化値
変化点出力値データＬ［２］＝０（ユ−ザが設定した固定値）
変化時間長データＴs ［２］＝Ｔs ［２］（ユ−ザが設定した固定値）
変調入力値データＩ［２］＝０
変調深さデータＭ［２］＝０
【００１９】
上記設定値をもとに、ＥＧの動作をスタートさせると、ＥＧが発生する出力値のレベルは、時間０において０から開始し、図１の太線のように変化して、ステップ０の変化点であるＳ点に向かう。ＥＧの出力値のレベルがＳ点に到達するとステップ０が完了したことになるため、次にＥＧの出力値のレベルは、太線のように変化してステップ１の変化点であるＡ点を目指して変化する。ＥＧの出力値のレベルがＡ点に到達すると、次はＥＧの出力値のレベルは、ステップ２の変化点であるレベル＝０の変化点＝終了時点まで変化し、ＥＧは動作を完了する。
【００２０】
上記ステップ１において、変調入力値データＩ［１］の変調信号が入力すると、Ｓ点からＡ点を目指す太線の傾きが変調され、最大でＳ点からＢ点、最小でＳ点からＣ点という傾きの変化をするように、変調後変化時間長データＴd ［１］（変調された結果得られる変化時間長データＴs ［１］）が連続的に変化する。
【００２１】
また、ステップ２では、ステップ１の変化点であるＢ点からＣ点の線上の点を起点とし、傾きが一定値（−変化点出力値データＬ［１］／変化時間長データＴs ［２］）の線の変化をする。
【００２２】
次に、上述した変化の具体的な動作について説明する。ＥＧのユーザパラメ−タ組として設定した変化時間長データＴs ［１］は固定値であっても、このＥＧに変調入力値データＩ［１］で変調をかけることにより、変化時間長データＴs ［１］は変調後変化時間長データＴd ［１］に変化する。
【００２３】
変調入力値データＩ［ｎ］の値域を「−１≦Ｉ［ｎ］≦１」、変調深さデータＭ［ｎ］の値域を「−１≦Ｍ［ｎ］≦１」とすると、変調後変化時間長データＴd ［ｎ］は、以下の（１）式の方程式で表せられる。
【００２４】
Ｔd ［ｎ］＝Ｔs ［ｎ］＋Ｉ［ｎ］×Ｍ［ｎ］×Ｔs ［ｎ］  ・・・（１）
【００２５】
今、変調深さデータＭ［１］の値を最大値である１に固定した場合（すなわち最も大きくＴs ［１］を変調する場合）を考える。
【００２６】
Ｍ［１］＝１において、変調入力値データＩ［１］の値が０のとき、（１）式を計算した結果、
Ｔd ［１］＝Ｔs ［１］
となり、ＥＧの出力値は、図１のＡ点を通る。
【００２７】
また、Ｍ［１］＝１において、変調入力値データＩ［１］の値が１のとき、（１）式より、
Ｔd ［１］＝Ｔs ［１］＋Ｔs ［１］＝２Ｔs ［１］
となり、ＥＧの出力値は、図１のＢ点を通る。
【００２８】
さらに、Ｍ［１］＝１において、変調入力値データＩ［１］が−１のとき、（１）式より、
Ｔd ［１］＝Ｔs ［１］−Ｔs ［１］＝０
となり、ＥＧの出力値は、図１のＣ点を通る。
【００２９】
一方、ＥＧの出力値の傾きの変化を少なくするために、変調深さデータＭ［１］の値を０．５に固定した場合を考える。
【００３０】
（１）式により、Ｂ点がＡ点とＢ点の中間点であるＤ点に、Ｃ点がＡ点とＣ点の中間点であるＥ点に移動し、変調入力値データＩ［１］の変化に対して、ＥＧの出力値は、Ｄ点とＥ点を結んだ線上の点を通るようになる。
【００３１】
さらに、変調深さデータＭ［１］の値を−０.５にした場合を考える。（１）式により、Ｂ点がＥ点に、Ｃ点がＤ点に移動することとなり、変調入力値データＩ［１］の変化に対して、ＥＧの出力値は、Ｅ点とＤ点を結んだ線上の点を通るグラフとなる。すなわち、変調入力値データＩ［１］の入力に対して、変調深さが０．５倍で変調方向が逆位相で、変調が行われることとなる。
【００３２】
例えば、電子鍵盤楽器の楽音の振幅エンベロープを制御するために、本実施形態によるエンベロープジェネレータが１つ搭載され、変調入力値データＩ［１］が鍵盤の音高値に比例するように制御され、変調深さデータＭ［１］の値がマイナス値に設定される。これにより、低鍵域の鍵盤が押鍵されたときには出力される楽音の振幅エンベロープの時間に対する減衰が緩やかになり（ＥＧの出力値が図１のＤ点やＢ点の方向になり）、高鍵域の鍵盤が押鍵されたときには楽音の振幅エンベロープの時間に対する減衰が急峻になる（ＥＧの出力値が図１のＥ点やＣ点の方向になる）ような動作を実現することが可能となる。
【００３３】
このようにして、本実施形態によるエンベロープジェネレータにより、変調入力値データＩ［ｎ］によってエンベロープジェネレータの各ステップｎの変化時間長を制御することが可能となる。この結果、１つのエンベロープジェネレータにおいて、例えば演奏時に指定された音高に基づいて楽音の振幅の時間に対する減衰特性を制御することが可能となり、楽音の振幅の出力値に対して要求される時間変化の特性ごとに複数のＥＧを設置する必要がなくなり、エンベロープジェネレータの数を削減することができ、電子楽器のコストを低減させることが可能となる。また、音を作成する工数を減らし、容易な操作で音を作成することや、電子楽器の演奏中にＥＧの各ステップ時間長を変調することが可能となる。
【００３４】
次に、本実施形態によるエンベロープジェネレータを電子楽器に搭載した場合の実施形態について説明する。図２は、エンベロープ発生装置を備える電子鍵盤楽器の実施形態のハードウェア構成例を示す図である。
【００３５】
ＣＰＵ（中央演算処理装置）２０１は、読出し専用記憶装置であるＲＯＭ（リードオンリーメモリ）２０３に格納されたソフトウェアプログラムに従って、読み書き可能記憶装置であるＲＡＭ（ランダムアクセスメモリ）２０２とデ−タの授受を行いながら演算を実行し、演算結果をＲＡＭ２０２に書き込むことができる。
【００３６】
また、ＣＰＵ２０１はスイッチ２０４による入力を監視し、演算などの動作に反映させることができる。
【００３７】
また、ＣＰＵ２０１は、各種情報を例えば鍵盤２０５の上方に設置された表示器２０６に表示できる。
【００３８】
また、ＣＰＵ２０１は、鍵盤２０５の押鍵状態をスキャンし、必要に応じて音源２０８に発音指示を出すことができる。音源２０８は、ＣＰＵ２０１からの発音指示に基づいて、楽音波形デ−タを読出し専用記憶装置である波形ＲＯＭ２０７から読み込み、その楽音波形デ−タに対して演算処理を実行する。
【００３９】
音源２０８での演算結果として得られる出力楽音波形データは、Ｄ/Ａ（デジタル−アナログ変換器）２０９に出力されることで、アナログ楽音信号であるオーディオ出力が出力される。これにより、楽音が発音される。
【００４０】
図３は、図２のハードウェア構成例を有する電子鍵盤楽器の全体処理例を示すフローチャートである。以下随時、特には明記せずに図２の各構成部を参照するものとする。
【００４１】
スイッチ２０４において、電子鍵盤楽器の電源がオンされると、ＣＰＵ２０１は、図３のフローチャートで例示されるＲＯＭ２０３に格納されている全体制御プログラムをスタートする。
【００４２】
ＣＰＵ２０１はまず、ＲＡＭ２０２が記憶する各種変数データの初期化を行う（図３のステップＳ３０１）。
【００４３】
次に、ＣＰＵ２０１は、スイッチ処理を実行する（図３のステップＳ３０２）。この処理において、ＣＰＵ２０１は、ユ−ザがスイッチ２０４を操作して例えば出力楽音波形データの振幅を制御するＥＧのユーザパラメータを設定する操作をした場合、図１で説明したＥＧの各ステップｎの変化点出力値データＬ［ｎ］、変化時間長データＴs ［ｎ］、変調深さデータＭ［ｎ］（それぞれＲＡＭ２０２に記憶される変数）に、それぞれユーザが指定した設定値を代入する。ＣＰＵ２０１は例えば、ＲＯＭ２０３に格納されている典型的なＥＧの波形特性を表示器２０６に表示し、それに対してユーザはいずれか１つの波形特性をスイッチ２０４により選択してよい。この結果、ＣＰＵ２０１は、ＲＯＭ２０３に格納されているユーザが選択したＥＧの波形特性に対応する各ステップｎのパラメータ組（Ｌ［ｎ］とＴs ［ｎ］の組）を読み出して、ＲＡＭ２０２に記憶させる。ユーザは、それらのパラメータ組に対してさらに修正を加えて、最終的なユーザパラメータ組（Ｌ［ｎ］、Ｔs ［ｎ］）としてよい。変調深さデータＭ［ｎ］は、前述したように、例えば−１以上０未満の範囲のマイナス値である。また、ユーザのスイッチ２０４での指定に基づいて、ＣＰＵ２０１は、任意のステップｎの変調入力値データＩ［ｎ］を指定された演奏情報に基づいて制御する旨の設定を行う。例えばＣＰＵ２０１は、押鍵された鍵盤２０５の音高値に基づいて図１のステップ１の変調入力値データＩ［１］を制御する旨を設定した場合、次のような動作を実行する。ＣＰＵ２０１は、ユーザの演奏によって後述するステップＳ３０４の押鍵処理によって押鍵情報を検出するごとに、その押鍵情報に含まれる音高値に対応して「−１≦Ｉ［１］≦１」の範囲で変化する変調入力値データＩ［１］を生成する。
【００４４】
次に、ＣＰＵ２０１は、表示処理を実行する（図３のステップＳ３０３）。この処理において、ＣＰＵ２０１は、図３のステップＳ３０２で実行されたスイッチ処理の処理結果を、必要に応じて表示器２０６に表示する。
【００４５】
さらに、ＣＰＵ２０１は、押鍵処理を実行する（図３のステップＳ３０４）。この処理において、ＣＰＵ２０１は、演奏開始後に、ユ−ザが鍵盤２０５を押鍵または離鍵したか否かをスキャンし、そのスキャン結果を取得する。
【００４６】
最後に、ＣＰＵ２０１は、音源処理を実行する（図３のステップＳ３０５）。この処理において、ＣＰＵ２０１は、ステップＳ３０４での押鍵処理によって検出された押鍵に基づく音高やベロシティの情報または離鍵に基づく音高の情報、およびＥＧの出力値データを、音源２０８に通知する。この結果、音源２０８は、通知された押鍵または離鍵の情報に基づいて、出力楽音波形データの生成開始または終了の処理を実行し、さらに最終的な出力楽音波形データの発音音量をＥＧの出力値データに基づいて制御する。その後、ＣＰＵ２０１は、ステップＳ３０２の処理に戻って、処理を続行する。
【００４７】
以上の全体処理を実行する電子鍵盤楽器の実施形態において、出力楽音波形データの振幅エンベロープを生成するＥＧに、図１で説明した本実施形態によるＥＧを適用した場合の動作について説明する。
【００４８】
前述したように、図３のステップＳ３０２のスイッチ処理で、例えば押鍵された鍵盤２０５の音高値に基づいて図１のステップ１の変調入力値データＩ［１］を制御する旨が設定されたとする。そして、鍵盤２０５の全域から指定される音高値に基づく変調入力値データＩ［１］の値域は、−１≦Ｉ［１］≦１  であるとする。具体的には、ＣＰＵ２０１は、最低音高の鍵盤２０５が押鍵された際に値「−１」をＲＡＭ２０２上の変数Ｉ［１］に設定し、最高音高の鍵盤２０５が押鍵された際に値「１」を変数Ｉ［１］に設定する。最低音高と最高音高の間の音高の鍵盤２０５が押鍵された場合には、ＣＰＵ２０１は、値「−１」から値「１」までの値を補間した値を、変数Ｉ［１］に設定する。すなわち、鍵盤２０５を押鍵する音高により、変調入力値データＩ［１］への設定値が変化し、この変数データＩ［１］によってステップ１の変化時間長データＴs ［１］が変調され、出力楽音波形データの振幅を制御するエンベロープ波形の生成時のステップ１の変調後変化時間長データＴd ［１］が変化する。
【００４９】
ＥＧの生成処理（以下「ＥＧ処理」と称する）において使用されるＲＡＭ２０２上の各変数データＬout 、ｓｔｅｐ、Ｌlast、Ｔtmr 、Ｔlast、およびｒｅｌｅａｓｅを、以下のように定義する。
Ｌout ：ＥＧが最終的に出力する出力値データ。
ｓｔｅｐ：ＥＧのｎ番目のステップ番号データ。
Ｌlast：前回処理時のステップの変化点出力値データＬ［ｎ］。
Ｔtmr ：今回処理時のタイマ値データ。
Ｔlast：前回処理時のタイマ値データ。
ｒｅｌｅａｓｅ：鍵盤２０５が離鍵された後に実行されるステップ番号データ。このステップを、リリースステップと呼ぶ。すなわち、リリースステップとは、押鍵されている鍵盤２０５が離鍵されてから発音が停止するまでの、発音のリリースエンベロープが設定されるステップである。以下に説明する例では、リリースステップ番号データｒｅｌｅａｓｅ＝３とする。
【００５０】
今、０≦ｎ≦３の各ステップｎに対応するユーザパラメータ組（Ｌ［ｎ］、Ｔｓ［ｎ］、Ｍ［ｎ］）が、図３のステップＳ３０２のスイッチ処理にて、ユ−ザにより設定済みであるとする。ｎ＝３、すなわち鍵盤２０５が離鍵された後に現在の出力値データＬout から出力レベル０に向かうリリースステップのためのユーザパラメータ組は（Ｌ［ｒｅｌｅａｓｅ］、Ｔｓ［ｒｅｌｅａｓｅ］、Ｍ［ｒｅｌｅａｓｅ］）となる。この場合、リリースステップの終了時の変化点出力値データＬ［ｒｅｌｅａｓｅ］は、固定値「０」とする。離鍵した後、音量は０に向かうためである。また、リリースステップにおける変化時間長データＴs ［ｒｅｌｅａｓｅ］は、離鍵が発生してからＬ［ｒｅｌｅａｓｅ］＝０に達するまでの時間長である。
【００５１】
図４は、図３のステップＳ３０５の音源処理の詳細例を示すフローチャートである。
【００５２】
まず、ＣＰＵ２０１は、図３のステップＳ３０４の押鍵処理により、鍵盤２０５の押鍵イベントが発生したかをチェックする（図４のステップＳ４０１）。
【００５３】
押鍵イベントが発生した場合（ステップＳ４０１の判定がＹＥＳの場合）には、ＥＧをスタートさせる必要がある。この場合まず、ＣＰＵ２０１は、ＥＧスタ−ト処理のル−チンを実行する（図４のステップＳ４０２）。次に、ＣＰＵ２０１は、ＥＧの周期処理であるＥＧ処理のル−チンを実行して、出力値データＬout を算出する（図４のステップＳ４０５）。そして、ＣＰＵ２０１は、発音制御処理を実行し、押鍵情報と出力値データＬout を音源２０８に通知する（図４のステップＳ４０６）。この結果、音源２０８は、ＣＰＵ２０１からの押鍵情報に基づいて出力楽音波形データを生成し、ＣＰＵ２０１からの出力値データＬout に基づいて、生成した出力楽音波形データの発音音量を決定し、その結果得られる出力楽音波形データをＤ/Ａ２０９に出力する。
【００５４】
押鍵イベントが発生していない場合（ステップＳ４０１の判定がＮＯの場合）には、ＣＰＵ２０１は、図３のステップＳ３０４の押鍵処理により、鍵盤２０５の離鍵イベントが発生したかをチェックする（図４のステップＳ４０３）。
【００５５】
離鍵イベントが発生した場合（ステップＳ４０３の判定がＹＥＳの場合）には、ＣＰＵ２０１は、ＥＧのステップ番号をリリースエンベロープ用のステップに移行し、ＥＧリリ−ス処理を実行する（図４のステップＳ４０４）。次に、ＣＰＵ２０１は、ＥＧの周期処理であるＥＧ処理のル−チンを実行して、出力値データＬout を算出する（図４のステップＳ４０５）。そして、ＣＰＵ２０１は、発音制御処理を実行し、離鍵情報と出力値データＬout を音源２０８に通知する（図４のステップＳ４０６）。この結果、音源２０８は、ＣＰＵ２０１からの出力値データＬout に基づいて、生成した出力楽音波形データの発音音量を決定し、発音をリリースさせながら、その結果得られる出力楽音波形データをＤ/Ａ２０９に出力する。
【００５６】
押鍵イベントも離鍵イベントも発生していない場合（図４のステップＳ４０３の判定がＮＯの場合）、すなわち、押鍵が続行されているか押鍵がされていない場合、ＣＰＵ２０１は、ＥＧの周期処理であるＥＧ処理のル−チンを実行して、出力値データＬout を算出する（図４のステップＳ４０５）。そして、ＣＰＵ２０１は、発音制御処理を実行し、出力値データＬout を音源２０８に通知する（図４のステップＳ４０６）。この結果、音源２０８は、ＣＰＵ２０１からの出力値データＬout に基づいて、発音が続行されている出力楽音波形データの発音音量を決定し、その結果得られる出力楽音波形データをＤ/Ａ２０９に出力する。なお、押鍵がされていない場合も、離鍵後にＥＧのＬout が０に到達するまでは発音し続ける必要があるため、ステップＳ４０５のＥＧ周期処理およびステップＳ４０６の発音制御処理が必要である。
【００５７】
図５は、図４のステップＳ４０２のＥＧスタート処理の詳細例を示すフローチャートである。
【００５８】
ＣＰＵ２０１はまず、ステップ０のＥＧ処理の前準備として、前回処理時の変化点出力値データＬlastに小節期間値「０」を設定し（前回処理は無いため）、ＥＧの出力値データＬout にも初期値「０」を設定し、ステップ番号データｓｔｅｐに０番目のステップを示す値「０」を設定する（以上、図５のステップＳ５０１）。
【００５９】
次に、ＣＰＵ２０１は、内蔵するタイマをスタートさせる。この結果、ＲＡＭ２０２上のタイマ値データＴtmr のカウントアップが開始される（図５のステップＳ５０２）。
【００６０】
次に、ＣＰＵ２０１は、ＲＡＭ２０２上の前回処理時のタイマ値データＴlastに、現在のタイマ値データＴtmr の値を格納する（ステップＳ５０３）。
【００６１】
その後、ＣＰＵ２０１は、図５のフローチャートで例示されるＥＧスタート処理を終了し、図４のステップＳ４０２の処理を終了する。
【００６２】
図６は、図４のステップＳ４０５のＥＧ処理の詳細例を示すフローチャートである。
【００６３】
１つ前のステップの変化点出力値データＬlastから、今回のステップ番号データｓｔｅｐが示すステップの到達レベルである変化点出力値データＬ［ｓｔｅｐ］までの差を、前回の変化点から今回到達する変化点までの変化時間長データＴd ［ｓｔｅｐ］で割った値が、図１のエンベロープ波形データのグラフ特性の傾きとなる。図４のステップＳ４０５のＥＧ処理は周期的に実行される。このため、上記除算値に、前回ＥＧ処理が実行されてから今回ＥＧ処理が実行されるまでの時間差を乗算することによって、今回のＥＧ処理にて出力値データＬout に足し込むべき差分出力値データΔＬが算出できる。
【００６４】
すなわち、図６において、ＣＰＵ２０１はまず、前述した（１）式に基づいて今回のステップの変調後変化時間長データＴd ［ｓｔｅｐ］を算出する（図６のステップＳ６０１）。
【００６５】
次に、ＣＰＵ２０１は、ステップＳ６０１で算出したＴd ［ｓｔｅｐ］を用いて、下記（２）式によって差分出力値データΔＬを算出する（図６のステップＳ６０２）。
ΔＬ＝（Ｌ［ｓｔｅｐ］−Ｌlast）/Ｔd ［ｓｔｅｐ］×（Ｔtmr −Ｔlast）  ・・（２）
【００６６】
続いて、ＣＰＵ２０１は、ステップＳ６０２で算出したΔＬを用いて、下記（３）式によって、今回のＥＧの出力値データＬout を算出する（図６のステップＳ６０３）。
Ｌout ＝Ｌout ＋ΔＬ  ・・・（３）
【００６７】
その後、ＣＰＵ２０１は、ステップＳ６０３で算出した今回のＥＧの出力値データＬout をＥＧ出力として、音源２０８に出力する（図６のステップＳ６０４）。
【００６８】
なお、ＥＧスタート時には、図５のステップＳ５０３によってＴlast＝Ｔtmr とされているため、上述の（２）式に基づいてステップＳ６０２で算出されるΔＬの値は０となり、従って、上述の（３）式に基づいてステップＳ６０３で算出される今回のＥＧの出力値データＬout の値は、図５のステップＳ５０１で設定された初期値「０」となる。すなわち、ＥＧのエンベロープ波形データの出力値は「０」からスタートする。
【００６９】
上述の出力処理の後、ＣＰＵ２０１は、出力値データＬout が今回の到達値である変化点出力値データＬ［ｓｔｅｐ］に到達したかをチェックする（図６のステップＳ６０５）。
【００７０】
Ｌout がＬ［ｓｔｅｐ］に到達していない場合（ステップＳ６０５の判定がＮＯの場合）、ＣＰＵ２０１は、次回処理のために、前回処理時のタイマ値データＴlastに現在のタイマ今回処理時のタイマ値データＴtmr の値を格納する（図６のステップＳ６０９）。その後、ＣＰＵ２０１は、図６のフローチャートのＥＧ処理を終了し、図４のステップＳ４０５の処理を終了する。
【００７１】
Ｌout がＬ［ｓｔｅｐ］に到達している場合（ステップＳ６０５の判定がＹＥＳの場合）、ＣＰＵ２０１は、現在のステップ番号データｓｔｅｐの値がリリースステップ番号データｒｅｌｅａｓｅに等しいか否かを判定する（図６のステップＳ６０６）。
【００７２】
ｓｔｅｐがｒｅｌｅａｓｅに等しくない場合（ステップＳ６０６の判定がＮＯの場合）、ＣＰＵ２０１は、次回処理のために、出力値データＬlastに現在の到達値である変化点出力値データＬ［ｓｔｅｐ］の値を格納し（図６のステップＳ６０７）、ステップ番号データｓｔｅｐの値を＋１インクリメントし（図６のステップＳ６０８）、さらに前回処理時のタイマ値データＴlastに現在のタイマ今回処理時のタイマ値データＴtmr の値を格納する（図６のステップＳ６０９）。その後、ＣＰＵ２０１は、図６のフローチャートのＥＧ処理を終了し、図４のステップＳ４０５の処理を終了する。
【００７３】
ｓｔｅｐがｒｅｌｅａｓｅに等しくなった場合（ステップＳ６０６の判定がＹＥＳの場合）、Ｌ［ｒｅｌｅａｓｅ］＝０に到達したということなので、ＣＰＵ２０１は、内蔵するタイマを停止し、タイマ値データＴtmr ＝０にリセットする（図６のステップＳ６１０）。その後、ＣＰＵ２０１は、図６のフローチャートのＥＧ処理を終了し、図４のステップＳ４０５の処理を終了する。
【００７４】
図７は、鍵盤２０５の離鍵時に図４のステップＳ４０４で実行されるＥＧリリース処理の詳細例を示すフローチャートである。
【００７５】
離鍵イベントが発生すると、ＥＧはリリ−スステップに移行する必要がある。そこで、ＣＰＵ２０１はまず、ステップ番号データｓｔｅｐに、リリースステップ番号データｒｅｌｅａｓｅの値を格納し、前回処理時のステップの変化点出力値データＬlastにはＥＧの今現在の出力値データＬout の値を格納する。さらに、ステップが移行するので、ＣＰＵ２０１は、前回処理時のタイマ値データＴlastに現在のタイマ今回処理時のタイマ値データＴtmr の値を格納する（以上、図７のステップＳ７０１）。
【００７６】
以上のＥＧリリース処理により、これ以後、今現在の出力値データＬout の値を基点としてＬ［ｒｅｌｅａｓｅ］＝０まで、エンベロープ波形データの出力値が変化させられることとなる。
【００７７】
以上のソフトウェア処理として実現されるエンベロープジェネレータにより、鍵盤２０５の押鍵時の音高に基づいて、出力楽音波形データの振幅の時間に対する減衰特性を制御することが可能となる。具体的には、最低音高の鍵盤２０５が押鍵された際に変調入力値データＩ［１］＝−１となって減衰特性が長く（Ｍ［１］＝−０．５のとき図１のＤ点に、Ｍ［１］＝−１のとき図１のＢ点に）なり、最高音高の鍵盤２０５が押鍵された際に変調入力値データＩ［１］＝１となって減衰特性が短く（Ｍ［１］＝−０．５のとき図１のＥ点に、Ｍ［１］＝−１のとき図１のＣ点に）なり、最低音高と最高音高の間の音高の鍵盤２０５が押鍵された場合には、変調入力値データＩ［１］＝（−１から１までの値を補間した値）となって減衰特性が中間の特性（図１のＤ点またはＢ点からＥ点またはＣ点に向かう間）となる。
【００７８】
このようにして、本実施形態によれば、アコースティックピアノの減衰特性を、単一のＥＧを使って実現することが可能となり、楽音の振幅の出力値に対して要求される時間変化の特性ごとに複数のＥＧを設置する必要がなくなり、エンベロープジェネレータの数を削減することができ、電子楽器のコストを低減させることが可能となる。また、電子楽器の演奏中にＥＧの各ステップ時間長を変調することや、楽音を作成する工数を減らして容易な操作で楽音を作成することが可能となる。
【００７９】
本実施形態によるシステムは、図３から図７のフローチャート等で実現される機能を搭載したプログラムを図２のＣＰＵ２０１が実行することで実現される。そのプログラムは、例えば図２には特には図示しない外部記憶装置や可搬記録媒体に記録して配布してもよく、或いは図２には特には図示しない通信インタフェースによりネットワークから取得できるようにしてもよい。
【００８０】
以上の実施形態において、変調入力値データＩ［ｎ］は、鍵盤２０５以外の演奏入力手段によって指定される音高に基づいて制御されてもよい。また、音高以外の演奏情報、例えば音色情報や各種効果情報に基づいて制御されてもよい。また、変調入力値データＩ［ｎ］は、演奏情報以外の、例えばＬＦＯ（低周波発振器）出力に基づいて制御されてもよい。
【００８１】
また、変調入力値データＩ［ｎ］は、演奏情報やＬＦＯ出力に対して、リニアに変化させたり、あるいは所定の関数特性に沿って変化させられてもよい。
【００８２】
さらに、変調深さデータＭ［ｎ］は、ユーザパラメータとして固定的に設定されるのではなく、ＬＦＯ出力や各種演奏情報、あるいは他のＥＧ出力に基づいて動的に変化させられてもよい。
【００８３】
さらに、本実施形態では、リリースステップにおける余韻の減衰特性だけではなく、先頭のステップにおけるアタック時間長や、途中のステップにおけるサスティーン時間長等も変調することが可能となる。
【００８４】
本実施例はハードウェアの電子楽器にＥＧを搭載するものであれば、例えばコンピュータ上のソフトウェアで実現するソフトウェア音源にソフトウェア処理によるＥＧを搭載することも可能である。
【００８５】
本実施例によるＥＧは、変化点のユーザパラメータ組に基づいて生成されるエンベロープ波形データが各ステップ（各変化点間）でその出力値で直線的に変化するものであったが、これに限られるものではなく、出力値がエクスポーネンシャルなどの直線以外の変化特性に基づいて変化するものであってもよい。
【００８６】
本実施例では、出力楽音波形データの振幅にＥＧを適用する場合について説明したが、ＥＧに変調をかける信号源、ＥＧから出力する変調信号の変調先は任意である。すなわち、ＬＦＯでＥＧに変調をかけ、そのＥＧでフィルタを変調しても良いし、ＥＧで別のＥＧを変調して、その変調されたＥＧで発音周波数を変調するなどの使い方をすることも可能である。
【００８７】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
エンベロープのステップ毎の形状を決めるパラメータであって、少なくともひとつのステップに対応するパラメータが外部設定可能なエンベロープパラメータをステップ毎に保持するとともに、当該ステップ毎のエンベロープパラメータに基づいて、前記エンベロープの波形データを生成するエンベロープジェネレータと、
入力される変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつを変調して、当該変調されたエンベロープパラメータに基づいて前記エンベロープの波形データを生成するように前記エンベロープジェネレータを制御する変調制御部と、
を備えたエンベロープ発生装置。
（付記２）
前記エンベロープパラメータは、前記エンベロープの対応するステップのレベル出力値データと、当該ステップ内において前記レベル出力値に到達するまでの時間を表わす変化タイミングデータとを含む、
ことを特徴とする付記１に記載のエンベロープ発生装置。
（付記３）
前記変調制御部は、入力される前記変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつに含まれる前記変化タイミングデータを変調する、
ことを特徴とする付記２に記載のエンベロープ発生装置。
（付記４）
前記変調制御部は、前記変化タイミングデータの最大変調幅を予め設定する変調深さデータ設定手段を有し、前記変化タイミングデータを、前記設定された最大変調幅の範囲内で、入力される前記変調データに対応して変調する、
ことを特徴とする付記３に記載のエンベロープ発生装置。
（付記５）
付記１乃至４のいずれかに記載のエンベロープ発生装置を備え、当該エンベロープ発生装置が発生するエンベロープの波形データに基づいて楽音信号の特性を制御する電子楽器。
（付記６）
前記入力される変調データは、前記電子楽器の演奏により指定される音高に基づいて決定される、付記５に記載の電子楽器。
（付記７）
エンベロープのステップ毎の形状を決めるパラメータであって、少なくともひとつのステップに対応するパラメータが外部設定可能なエンベロープパラメータをステップ毎に保持するとともに、当該ステップ毎のエンベロープパラメータに基づいて、前記エンベロープの波形データを生成するエンベロープジェネレータを有するエンベロープ発生装置に用いられるエンベロープ発生方法であって、前記エンベロープ発生装置は、
入力される変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつを変調して、当該変調されたエンベロープパラメータに基づいて前記エンベロープの波形データを生成するように前記エンベロープジェネレータを制御する、
ことを特徴とするエンベロープ発生方法。
（付記８）
エンベロープのステップ毎の形状を決めるパラメータであって、少なくともひとつのステップに対応するパラメータが外部設定可能なエンベロープパラメータをステップ毎に保持するとともに、当該ステップ毎のエンベロープパラメータに基づいて、前記エンベロープの波形データを生成するエンベロープジェネレータを有するエンベロープ発生装置としてコンピュータに、
入力される変調データに基づいて、前記ステップ毎のエンベロープパラメータの少なくともひとつを変調して、当該変調されたエンベロープパラメータに基づいて前記エンベロープの波形データを生成するように前記エンベロープジェネレータを制御するステップを実行させるプログラム。
【符号の説明】
【００８８】
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ＲＯＭ
２０４  スイッチ
２０５  鍵盤
２０６  表示器
２０７  波形ＲＯＭ
２０８  音源
２０９  Ｄ/Ａ
【図１】
2016061911.tif 000003
【図２】
2016061911.tif 000004
【図３】
2016061911.tif 000005
【図４】
2016061911.tif 000006
【図５】
2016061911.tif 000007
【図６】
2016061911.tif 000008
【図７】
2016061911.tif 000009