(57)【特許請求の範囲】
【請求項１】
発音指示から一定時間経過するまで低速演算周期で波形データを発生し、その一定時間経過後から消音指示されるまで高速演算周期で波形データを発生する波形発生手段と、
波形データをバッファリングする波形バッファを有し、前記波形発生手段が低速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を少なくし、前記波形発生手段が高速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を多くする書き込み制御手段と、
前記波形バッファから読み出す波形データに基づき楽音波形を形成する楽音形成手段と
を具備することを特徴とする音源装置。
【請求項２】
前記書き込み制御手段は、バッファサイズの小さい第１の波形バッファとバッファサイズの大きい第２波形バッファとを備え、前記波形発生手段が低速演算周期で波形データを発生した場合には第１の波形バッファに書き込み、一方、前記波形発生手段が高速演算周期で波形データを発生した場合には第２の波形バッファに書き込むことを特徴とする請求項１記載の音源装置。
【請求項３】
前記波形バッファから読み出した低速演算周期の波形データ同士を補間して補間データを生成し、補間に用いた波形データとその間に内挿される補間データとを高速演算周期で出力する演算周期変換手段をさらに具備することを特徴とする請求項１記載の音源装置。
【請求項４】
前記波形発生手段は、高速演算周期下では音高データをそのまま累算してなる波形読み出しアドレスを発生し、低速演算周期下では２倍化した音高データを累算してなる波形読み出しアドレスを発生する読み出しアドレス発生手段と、
前記読み出しアドレス発生手段が発生する波形読み出しアドレスに応じて波形メモリに記憶される波形データを読み出す波形読み出し手段と
を具備することを特徴とする請求項１記載の音源装置。
【請求項５】
前記楽音形成手段は、
前記波形発生手段により生成される波形データが低速演算周期下で生成された場合には低速演算周期用の第１のフィルタ係数を発生し、一方、高速演算周期下で生成された場合には高速演算周期用の第２のフィルタ係数を発生するフィルタ係数発生手段と、
前記フィルタ係数発生手段が発生する第１もしくは第２のフィルタ係数に従って設定されるフィルタ特性に従って前記波形バッファから読み出す波形データにフィルタリングを施して楽音波形を形成するフィルタ手段と
を具備することを特徴とする請求項１記載の音源装置。
【請求項６】
発音指示から一定時間経過するまで低速演算周期で波形データを発生し、その一定時間経過後から消音指示されるまで高速演算周期で波形データを発生する波形発生処理と、
波形データをバッファリングする波形バッファを有し、前記波形発生処理が低速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を少なくし、前記波形発生処理が高速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を多くする書き込み制御処理と、
前記波形バッファから読み出す波形データに基づき楽音波形を形成する楽音形成処理と
をコンピュータで実行させることを特徴とする音源処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器に用いて好適な音源装置および音源処理プログラムに関する。
【背景技術】
【０００２】
波形演算専用のＤＳＰ（デジタル・シグナル・プロセッサ）を備え、ハード音源と呼ばれる音源装置に対し、楽音発生処理プログラムを汎用プロセッサであるＣＰＵに実行させて楽音波形を生成するソフト音源と呼ばれる音源装置が知られている。この種の装置（ソフト音源）として、例えば特許文献１には、ＣＰＵの許容負荷を超えることなく最大同時発音数を多く採れるようにした技術が開示されている。
【０００３】
【特許文献１】特開２０００−２９３１７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、ソフト音源に用いられるＣＰＵは、波形演算のみならず、Ｉ／Ｏ制御やメモリ制御も同時に実行しており、これら制御に要する演算負荷は絶えず変化する。したがって、例えばＭＩＤＩデータ再生中にＣＰＵの演算負荷が増大し、これにより波形演算に遅れが生じると、再生中の楽音が途切れてしまう「音切れ」を招く虞が生じる。そこで、従来のソフト音源では、そうした音切れの発生を回避する為、予め一定量の波形データを波形演算にて生成してバッファリングしておき、このバッファリングされた波形データを順次出力する構成を備えるのが一般的となっている。
【０００５】
しかしながら、そのような構成は、予め一定量の波形データを波形演算にて生成し得るＭＩＤＩデータ再生時には有効であるものの、リアルタイム演奏時にはバッファリングに要する時間が発音遅延となって発音レスポンスを悪化させてしまう。つまり、従来のソフト音源では、ＣＰＵの演算負荷が増大した時の音切れを回避するために設けた出力バッファによる発音遅延が、リアルタイム演奏時の発音レスポンスの悪化を招き、一方、出力バッファサイズを小さくしてリアルタイム演奏時の発音レスポンスを向上させると、今度はＣＰＵの演算負荷が増大した時の音切れを招いてしまうという相反する問題を有する。
【０００６】
本発明は、このような事情に鑑みてなされたもので、ＣＰＵの演算負荷が増大した時の音切れを回避しながら、リアルタイム演奏時の発音レスポンスの低下を防ぐことができる音源装置および音源処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、請求項１に記載の発明では、発音指示から一定時間経過するまで低速演算周期で波形データを発生し、その一定時間経過後から消音指示されるまで高速演算周期で波形データを発生する波形発生手段と、波形データをバッファリングする波形バッファを有し、前記波形発生手段が低速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を少なくし、前記波形発生手段が高速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を多くする書き込み制御手段と、前記波形バッファから読み出す波形データに基づき楽音波形を形成する楽音形成手段とを具備することを特徴とする。
【０００８】
上記請求項１に従属する請求項２に記載の発明では、前記書き込み制御手段は、バッファサイズの小さい第１の波形バッファとバッファサイズの大きい第２波形バッファとを備え、前記波形発生手段が低速演算周期で波形データを発生した場合には第１の波形バッファに書き込み、一方、前記波形発生手段が高速演算周期で波形データを発生した場合には第２の波形バッファに書き込むことを特徴とする。
【０００９】
上記請求項１に従属する請求項３に記載の発明では、前記波形バッファから読み出した低速演算周期の波形データ同士を補間して補間データを生成し、補間に用いた波形データとその間に内挿される補間データとを高速演算周期で出力する演算周期変換手段をさらに具備することを特徴とする。
【００１０】
上記請求項１に従属する請求項４に記載の発明では、前記波形発生手段は、高速演算周期下では音高データをそのまま累算してなる波形読み出しアドレスを発生し、低速演算周期下では２倍化した音高データを累算してなる波形読み出しアドレスを発生する読み出しアドレス発生手段と、前記読み出しアドレス発生手段が発生する波形読み出しアドレスに応じて波形メモリに記憶される波形データを読み出す波形読み出し手段とを具備することを特徴とする。
【００１１】
上記請求項１に従属する請求項５に記載の発明では、前記楽音形成手段は、前記波形発生手段により生成される波形データが低速演算周期下で生成された場合には低速演算周期用の第１のフィルタ係数を発生し、一方、高速演算周期下で生成された場合には高速演算周期用の第２のフィルタ係数を発生するフィルタ係数発生手段と、前記フィルタ係数発生手段が発生する第１もしくは第２のフィルタ係数に従って設定されるフィルタ特性に従って前記波形バッファから読み出す波形データにフィルタリングを施して楽音波形を形成するフィルタ手段とを具備することを特徴とする。
【００１２】
請求項６に記載の発明は、発音指示から一定時間経過するまで低速演算周期で波形データを発生し、その一定時間経過後から消音指示されるまで高速演算周期で波形データを発生する波形発生処理と、波形データをバッファリングする波形バッファを有し、前記波形発生処理が低速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を少なくし、前記波形発生処理が高速演算周期で波形データを発生した場合には当該波形バッファに書き込まれる波形データ量を多くする書き込み制御処理と、前記波形バッファから読み出す波形データに基づき楽音波形を形成する楽音形成処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、ＣＰＵの演算負荷が増大した時の音切れを回避しながら、リアルタイム演奏時の発音レスポンスの低下を防ぐことができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明の実施の形態について説明する。先ず図１は、本発明の一実施形態による音源装置を備えた楽音発生装置の全体構成を示すブロック図である。この図において、ＣＰＵ１０は、ＲＯＭ１１に記憶される楽音発生処理プログラムを実行して音源装置（ソフト音源）として機能すると共に、マルチタスクにより並列処理される他の制御プログラムに基づき楽音発生装置の各部動作を制御する。ＣＰＵ１０により具現される音源装置（ソフト音源）の機能構成については追って詳述する。ＲＯＭ１１は、ＣＰＵ１０にロードされる各種制御プログラムを記憶する。各種制御プログラムとは、上述したように、楽音発生装置の各部を制御するプログラムの他、ＣＰＵ１０をソフト音源として機能させる楽音発生処理プログラムを含む。
【００１５】
ＲＡＭ１２は、ワークエリア、バッファエリアおよびテーブルエリアを備える。ＲＡＭ１２のワークエリアには、ＣＰＵ１０の演算処理に用いられる各種レジスタ・フラグデータが一時記憶される。ＲＡＭ１２のバッファエリアには、ＣＰＵ１０により具現される音源装置が用いる第１波形バッファ１０２（図２参照）および第２波形バッファ１０３（図２参照）が設けられる。これらバッファ１０２〜１０３が意図するところについては後述する。ＲＡＭ１２のテーブルエリアには、ＣＰＵ１０により具現される音源装置が用いる低速演算用係数テーブル２００（図５参照）および高速演算用係数テーブル２０１（図５参照）が設けられる。これらテーブル２００〜２０１が意図するところについては後述する。
【００１６】
鍵盤１３は、押離鍵操作（演奏操作）に応じたキーオンＫＯＮ／キーオフＫＯＦイベント、鍵番号ＫＮおよびベロシティＶＥＬ等からなる演奏情報を発生する。鍵盤１３が発生する演奏情報はＣＰＵ１０に供給される。スイッチ部１４は、例えばパワーオンオフ設定する電源スイッチの他、発生楽音の音色を選択する音色選択スイッチなど複数の操作スイッチを備え、これらスイッチの操作に応じたスイッチイベントを発生してＣＰＵ１０に供給する。
【００１７】
表示部１５は、例えばＬＣＤパネル等から構成され、ＣＰＵ１０から供給される表示制御信号に応じて装置各部の設定状態や動作状態などを表示する。波形メモリ１６は、各種音色の波形データを記憶する。Ｄ／Ａ変換器（ＤＡＣ）１７は、ＣＰＵ１０により具現される音源装置から出力される楽音波形Ｏｕｔをアナログ形式の楽音信号に変換して出力する。サウンドシステム１８は、ＤＡＣ１７から出力される楽音信号から不要ノイズを除去する等のフィルタリングを施した後に信号増幅してスピーカから放音する。
【００１８】
次に、図２〜図５を参照して、ＣＰＵ１０が楽音発生処理プログラムを実行することで具現される音源装置（ソフト音源）の構成を説明する。以下では、ハードウェアイメージとして音源装置の構成を説明するが、その構成は実際には楽音発生処理プログラムにより達成される機能に相当する。
【００１９】
図２は、音源装置の全体構成を示すブロック図である。音源装置は、波形演算部１００、書き込み選択部１０１、第１波形バッファ１０２、演算周期変換部１０３、第２波形バッファ１０４、波形バッファ監視部１０５、読み出し選択部１０６およびＤＣＦ部１０７を備える。以下、これら各部について述べる。
【００２０】
図３は、波形演算部１００の構成を示すブロック図である。この図において、アドレスカウンタ１１０は、鍵盤１３（図１参照）から供給される鍵番号ＫＮで指定される音高データＰに応じた読み出し速度（歩進速度）の波形読み出しアドレスＡＤを発生する。この波形読み出しアドレスＡＤに従って波形メモリ１６から音高データＰで指定される音高の波形データが読み出される。なお、波形メモリ１６から読み出される波形データの種類は、ユーザの音色選択スイッチ操作により指定される音色の波形データである。
【００２１】
エンベロープ発生器１２０は、キーオンＫＯＮイベント（発音）からキーオフＫＯＦイベント（消音）までの間、ベロシティＶＥＬに対応してＡＤＳＲ型に振幅レベル変化する音量制御用のエンベロープ波形ＥＮＶを発生する。乗算器１３０は、波形メモリ１６から読み出される波形データに、エンベロープ発生器１２０が発生するエンベロープ波形ＥＮＶを乗算して音量制御された波形出力Ｗを発生し、次段の書き込み選択部１０１（図２参照）に出力する。
【００２２】
また、波形演算部１００では、演算周期選択信号に応じて、波形出力Ｗを生成する演算周期を高速（演算周波数：４０ＫＨｚ）および低速（演算周波数：２０ＫＨｚ）の２段階に変化させる構成を有する。演算周期選択信号はＣＰＵ１０において生成される信号であって、例えば押鍵によるキーオンＫＯＮイベントが発生した時点から一定時間内（１００ｍｓｅｃ）では低速演算周期（演算周波数：２０ＫＨｚ）を指定し、その一定時間が経過した時点からキーオフＫＯＦイベントが発生するまでの間は高速演算周期（演算周波数：４０ＫＨｚ）を指定する信号である。
【００２３】
演算周期選択信号に従って、単に波形演算部１００の演算周期を変化させると、波形読み出しアドレスＡＤの歩進速度やエンベロープ波形ＥＮＶの進行速度が変化して波形出力Ｗの音高や音量が変化する不都合が生じる。その為、アドレスカウンタ１１０では、図４に図示する構成を備える。
【００２４】
図４において、乗算器１１１は、演算周期選択信号により高速演算周期（演算周波数：４０ＫＨｚ）が選択された場合に乗算係数「１」を音高データＰに乗算して出力し、一方、低速演算周期（演算周波数：２０ＫＨｚ）が選択された場合に乗算係数「２」を音高データＰに乗算して出力する。加算器１１２およびレジスタ１１３は、乗算器１１１の出力を累算してなるアドレス出力を発生する。
【００２５】
このような構成によれば、高速演算周期下では音高データＰをそのまま累算してなるアドレス出力を発生し、低速演算周期下では２倍にした音高データＰを累算してなるアドレス出力を発生するので、演算周期の変化に追随して波形読み出しアドレスＡＤの歩進速度も変化することが無くなる。この結果、波形演算部１００の演算周期の変化に連れて波形出力Ｗの音高や音量が変化する弊害を回避できる。
【００２６】
なお、図示していないが、エンベロープ発生器１２０においても、図４に図示したアドレスカウンタ１１０と同様のエンベロープカウンタを備え、これにより演算周期が変化しても歩進速度は変わらないエンベロープ波形読み出しアドレスとなる為、エンベロープ波形ＥＮＶの進行速度を一定にすることができる。
【００２７】
次に、再び図２を参照して音源装置の構成の説明を進める。図２において、書き込み選択部１０１は、高速演算周期の場合に第２波形バッファ１０４を選択し、選択した第２波形バッファ１０４に波形演算部１００から供給される波形出力Ｗを書き込み、一方、低速演算周期の場合に第１波形バッファ１０２を選択し、選択した第１波形バッファ１０２に波形演算部１００から供給される波形出力Ｗを書き込む。
【００２８】
第１波形バッファ１０２は、ＲＡＭ１２のバッファエリアに設けられるＦＩＦＯ（先入れ先出し）形式のバッファメモリであり、低速演算する波形演算部１００から出力される波形出力Ｗを、書き込み選択部１０１を介してバッファリングする。第２波形バッファ１０４も同様に、ＲＡＭ１２のバッファエリアに設けられるＦＩＦＯ（先入れ先出し）形式のバッファメモリであり、高速演算する波形演算部１００から出力される波形出力Ｗを、書き込み選択部１０１を介してバッファリングする。
【００２９】
第１波形バッファ１０２のバッファサイズは、第２波形バッファ１０４よりも小さく設定されている。その理由は、第１波形バッファ１０２には低速演算時に波形出力Ｗが書き込まれる為、高速演算時に比べて単位時間内に必要な波形演算量が少なく、バッファサイズが小さくとも音切れする虞が無いからである。
【００３０】
演算周期変換部１０３は、第１波形バッファ１０２から読み出される低速演算時の波形出力Ｗについて直線補間によるデータ内挿を施し、これにより低速演算時のデータ出力周期を高速演算時のデータ出力周期に変換する。具体的には、本実施形態の場合、低速演算周期の２倍が高速演算周期に相当する関係だから、第１波形バッファ１０２から読み出される波形出力Ｗ（ｎ）と波形出力Ｗ（ｎ＋１）との直線補間により内挿出力（Ｗ（ｎ）＋Ｗ（ｎ＋１））／２を発生し、波形出力Ｗ（ｎ）、内挿出力（Ｗ（ｎ）＋Ｗ（ｎ＋１））／２および波形出力Ｗ（ｎ＋１）の順に高速演算時のデータ出力周期で次段へ出力する。なお、波形出力Ｗ（ｎ）は、第１波形バッファ１０２から現在読み出される波形出力Ｗを指し、波形出力Ｗ（ｎ＋１）は次に読み出される波形出力を指す。
【００３１】
波形バッファ監視部１０５は、第１波形バッファ１０２および第２波形バッファ１０４の各々にバッファリングされる波形出力Ｗを監視し、書き込まれた時間がより古い側の波形バッファからの読み出しを選択する選択指示信号を発生する。読み出し選択部１０６は、波形バッファ監視部１０５から与えられる選択指示信号に応じて、演算周期変換部１０３の出力または第２波形バッファ１０４の出力のいずれかを選択して次段のＤＣＦ部１０７に出力する。
【００３２】
すなわち、上述した演算周期選択信号がキーオン時点から一定時間内において低速演算周期（演算周波数：２０ＫＨｚ）を選択し、一定時間経過後からキーオフ時点まで高速演算周期（演算周波数：４０ＫＨｚ）を選択した場合、読み出し選択部１０６はキーオン時点から一定時間内では演算周期変換部１０３の出力を選択してＤＣＦ部１０７に供給し、一定時間経過後からキーオフ時点まで第２波形バッファ１０４の出力を選択してＤＣＦ部１０７に供給する。
【００３３】
ＤＣＦ部１０７は、ＤＣＦ（デジタル制御フィルタ）を備え、読み出し選択部１０６から供給される波形出力Ｗに対し、当該ＤＣＦによる音色修飾を施して楽音波形Ｏｕｔを形成する。ＤＣＦ部１０７は、図５に図示するように、低速演算用係数テーブル２００、高速演算用係数テーブル２０１、係数選択部２０２およびＤＣＦから構成される。低速演算用係数テーブル２００および高速演算用係数テーブル２０１は、ＲＡＭ１２のテーブルエリアに設けられ、それぞれフィルタ特性指定データに応じた低速演算用乗算係数ＣＦ１と、高速演算用乗算係数ＣＦ２とを発生する。なお、フィルタ特性指定データとは、ユーザの音色選択操作で選択される音色に対応して生成され、ＤＣＦの乗算器に供給する乗算係数を指定するデータである。
【００３４】
係数選択部２０２は、演算周期選択信号が低速演算周期を選択した場合に、低速演算用係数テーブル２００から出力される低速演算用乗算係数ＣＦ１をＤＣＦの乗算器に供給し、一方、演算周期選択信号が高速演算周期を選択した場合に、高速演算用係数テーブル２０１から出力される高速演算用乗算係数ＣＦ２をＤＣＦの乗算器に供給する。１次ＩＩＲ型のＤＣＦは、読み出し選択部１０６の出力にローパスフィルタリングを施して楽音波形Ｏｕｔを発生する。ＤＣＦでは、演算周期選択信号に応じて切り替えられる低速演算用乗算係数ＣＦ１又は高速演算用乗算係数ＣＦ２によって、演算周期が変化しても一定のカットオフ周波数が保たれるようになっている。
【００３５】
以上のように、本実施形態では、例えば押鍵によるキーオンＫＯＮイベントが発生した時点から一定時間内（１００ｍｓｅｃ）では低速演算周期（演算周波数：２０ＫＨｚ）を選択し、一定時間経過後からキーオフＫＯＦイベントが発生するまで高速演算周期（演算周波数：４０ＫＨｚ）を選択する演算周期選択信号が供給されると、押鍵直後から一定時間内では低速演算周期下でバッファサイズの小さい第１波形バッファ１０２を介して読み出される波形出力Ｗに基づき楽音波形Ｏｕｔを発生する為、リアルタイム演奏時の発音レスポンスの低下を防ぐ。
【００３６】
そして、一定時間経過後からキーオフＫＯＦイベントが発生するまでは高速演算周期下でバッファサイズの大きい第２波形バッファ１０４を介して読み出される波形出力Ｗに基づき楽音波形Ｏｕｔを形成するので、ＣＰＵ１０の演算負荷が増大した時の音切れを回避する。この結果、ＣＰＵの演算負荷が増大した時の音切れを回避しつつ、リアルタイム演奏時の発音レスポンスの低下を防ぐことができる。また、押鍵から一定時間経過した以後では、高速演算周期下で楽音波形Ｏｕｔを形成する為、高品質の楽音を得ることができる。
【００３７】
なお、上述した実施形態では、ＣＰＵの演算負荷が増大した時の音切れを回避しながら、リアルタイム演奏時の発音レスポンスの低下を防ぐ為、押鍵直後から一定時間内は低速演算周期とし、一定時間経過後は高速演算周期としたが、ＣＰＵの演算負荷が増大した時の音切れを回避するだけならば、通常は演算周期を高速で行い、バッファリングされているデータ量が一定量以下であることを波形バッファ監視部１０５が検知した時に演算周期を低速に変化させる態様とすることも可能である。
【図面の簡単な説明】
【００３８】
【図１】本発明の一実施形態による音源装置を備える楽音発生装置の全体構成を示すブロック図である。
【図２】ＣＰＵ１０が楽音発生処理プログラムを実行することで具現される音源装置の構成を示すブロック図である。
【図３】波形演算部１００の構成を示すブロック図である。
【図４】波形演算部１００が備えるアドレスカウンタ１１０の構成を示すブロック図である。
【図５】ＤＣＦ部１０７の構成を示すブロック図である。
【符号の説明】
【００３９】
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  鍵盤
１４  スイッチ部
１５  表示部
１６  波形メモリ
１７  Ｄ／Ａ変換器
１８  サウンドシステム
１００  波形演算部
１０１  書き込み選択部
１０２  第１波形バッファ
１０３  演算周期変換部
１０４  第２波形バッファ
１０５  波形バッファ監視部
１０６  読み出し選択部
１０７  ＤＣＦ部
【図１】
0005029898.tif 000002
【図２】
0005029898.tif 000003
【図３】
0005029898.tif 000004
【図４】
0005029898.tif 000005
【図５】
0005029898.tif 000006