JP3551818B2 - 楽音生成方法および楽音生成装置 - Google Patents

楽音生成方法および楽音生成装置 Download PDF

Info

Publication number
JP3551818B2
JP3551818B2 JP08048599A JP8048599A JP3551818B2 JP 3551818 B2 JP3551818 B2 JP 3551818B2 JP 08048599 A JP08048599 A JP 08048599A JP 8048599 A JP8048599 A JP 8048599A JP 3551818 B2 JP3551818 B2 JP 3551818B2
Authority
JP
Japan
Prior art keywords
performance information
tone signal
output
delay time
performance
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
JP08048599A
Other languages
English (en)
Other versions
JP2000276149A (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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP08048599A priority Critical patent/JP3551818B2/ja
Publication of JP2000276149A publication Critical patent/JP2000276149A/ja
Application granted granted Critical
Publication of JP3551818B2 publication Critical patent/JP3551818B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、いわゆるソフトウェア音源に用いて好適な楽音生成方法および楽音生成装置関する。
【0002】
【従来の技術】
近年、汎用パーソナルコンピュータ等を用いて楽音波形を合成する、いわゆるソフトウエア音源が実用化されている。ソフトウエア音源においても、ハードウエアの音源装置と同様に複数パートの楽音波形を生成することによってアンサンブルを行うことが可能である。一方、汎用パーソナルコンピュータは楽音波形の生成以外にも各種の処理を行う必要があるため、完全にリアルタイムに楽音波形を生成することは困難である。また、CPUの処理能力を有効に活用するためには、ある程度まとまった範囲の楽音波形を一度に生成する方が有利な場合も多い。
【0003】
そこで、ソフトウエア音源においては、演奏情報に基づいて将来発音されるべき波形データを先に生成してバッファに記憶し、その後はサンプリング周期毎にこのバッファを読出して波形データを再生することが一般的である。そして、未だ再生されていない部分の波形データが所定量未満になると、残りの演奏情報に基づいて、続きの波形データが生成されバッファに書込まれる。従って、演奏情報がソフトウエア音源に供給されてから実際に発音が行われるまで、ある程度の遅延時間を要することになる。この遅延時間をレーテンシーという。
【0004】
ソフトウエア音源に供給される演奏情報としては、予めファイル等に記憶された演奏情報と、外部の演奏操作子等からリアルタイムに入力される演奏情報とが考えられる。前者の場合においては、予め充分な長さのレーテンシーを設定しておいて差し支えない。しかし、後者の場合においてレーテンシーが長すぎると、ユーザによる演奏操作子の操作と実際の発音との間のタイムラグが目立ち、演奏に支障を来すことになる。一方、レーテンシーをあまり短くすると、波形生成処理が間に合わず発音が途切れるような不具合が頻発する。このように、演奏操作子等からリアルタイムに演奏情報を入力する場合には、再生に支障を来さない範囲でなるべくレーテンシーを短くする必要がある。
【0005】
【発明が解決しようとする課題】
ところで、ソフトウエア音源に対して、予めファイル等に記憶された演奏情報と外部の演奏操作子等からリアルタイムに入力される演奏情報との双方を提供する場合、すなわち自動演奏とマニュアル演奏とのアンサンブルを行う場合がある。かかる場合、従来のソフトウエア音源においてはレーテンシーが一律に設定されていたため、このレーテンシーを充分に短くすることが困難であった。
【0006】
これは、自動演奏およびマニュアル演奏の波形生成処理がある短い時間に集中してCPUの処理能力を超えた場合、上述したように音が途切れる等の不具合が発生するからである。この発明は上述した事情に鑑みてなされたものであり、演奏情報の態様に応じて適切な遅延時間を設定できる楽音生成方法および楽音生成装置提供することを目的としている。
【0007】
【課題を解決するための手段】
上記課題を解決するため請求項1記載の構成にあっては、第1パートの演奏情報および第2パートの演奏情報を入力する入力過程と、サンプリング周期ごとに出力バッファの読出しポインタを更新する一方、当該出力バッファに書き込まれた楽音信号のうち前記読出しポインタが示すサンプルを前記出力バッファから読み出して出力する出力過程と、前記読出しポインタと第1書込みポインタとの差分に応じた範囲の第1楽音信号を前記第1パートの演奏情報に基づいて生成する一方、この生成した第1楽音信号を前記出力バッファのうち前記第1の書込みポインタが示す領域に新規に書き込むとともに当該第1の書込みポインタを更新する第1生成過程と、前記読出しポインタと第2書込みポインタとの差分に応じた範囲の第2楽音信号を前記第2パートの演奏情報に基づいて生成する一方、この生成した第2楽音信号と前記出力バッファのうち前記第2の書込みポインタが示す領域に既に書き込まれている楽音信号とを加算して得られる楽音信号を当該第2の書込ポインタが示す領域に書き込むとともに当該第2の書込みポインタを更新する第2生成過程とを有し、前記入力過程において前記第1パートの演奏情報が入力されてから当該演奏情報に対応した前記第1楽音信号のサンプルが前記出力過程において出力されるまでの遅延時間が、前記入力過程において前記第2パートの演奏情報が入力されてから当該演奏情報に対応した前記第2楽音信号のサンプルが前記出力過程において出力されるまでの遅延時間よりも長いことを特徴とする。
また、請求項2記載の構成にあっては、第1パートの演奏情報および第2パートの演奏情報を入力する入力過程と、第1遅延時間と、当該第1遅延時間とは異なる第2遅延時間とを設定する設定過程と、前記第1パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を前記第1パートの演奏情報に基づいて生成する第1生成過程と、前記第2パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を前記第2パートの演奏情報に基づいて生成する第2生成過程と、前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算過程と、この加算により生成された楽音信号を出力する出力過程とを有することを特徴とする。
また、請求項3記載の構成にあっては、複数パートの演奏情報を入力する入力過程と、前記複数パートのうちの何れかをマニュアル演奏パートとして指定する指定過程と、前記複数パートのうちマニュアル演奏パートとして指定されたパートに第2遅延時間を設定するとともに、前記マニュアル演奏パート以外の各パートに前記第2遅延時間よりも長い第1遅延時間を設定する設定過程と、前記マニュアル演奏パート以外の各パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を当該各パートの演奏情報に基づいて生成する第1生成過程と、前記マニュアル演奏パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を当該マニュアル演奏パートの演奏情報に基づいて生成する第2生成過程と、前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算過程と、この加算により生成された楽音信号を出力する出力過程とを有することを特徴とする。
請求項4記載の構成にあっては、第1パートの演奏情報および第2パートの演奏情報を入力する入力手段と、サンプリング周期ごとに出力バッファの読出しポインタを更新する一方、当該出力バッファに書き込まれた楽音信号のうち前記読出しポインタが示すサンプルを前記出力バッファから読み出して出力する出力手段と、前記読出しポインタと第1書込みポインタとの差分に応じた範囲の第1楽音信号を前記第1パートの演奏情報に基づいて生成する一方、この生成した第1楽音信号を前記出力バッファのうち前記第1の書込みポインタが示す領域に新規に書き込むとともに当該第1の書込みポインタを更新する第1生成手段と、前記読出しポインタと第2書込みポインタとの差分に応じた範囲の第2楽音信号を前記第2パートの演奏情報に基づいて生成する一方、この生成した第2楽音信号と前記出力バッファのうち前記第2の書込みポインタが示す領域に既に書き込まれている楽音信号とを加算して得られる楽音信号を当該第2の書込ポインタが示す領域に書き込むと ともに当該第2の書込みポインタを更新する第2生成手段とを具備し、前記入力手段により前記第1パートの演奏情報が入力されてから当該演奏情報に対応した前記第1楽音信号のサンプルが前記出力手段によって出力されるまでの第1遅延時間が、前記入力手段により前記第2パートの演奏情報が入力されてから当該演奏情報に対応した前記第2楽音信号のサンプルが前記出力手段によって出力されるまでの第2遅延時間よりも長いことを特徴とする。
また、請求項5記載の構成にあっては、第1パートの演奏情報および第2パートの演奏情報を入力する入力手段と、第1遅延時間と、当該第1遅延時間とは異なる第2遅延時間とを設定する設定手段と、前記第1パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を前記第1パートの演奏情報に基づいて生成する第1生成手段と、前記第2パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を前記第2パートの演奏情報に基づいて生成する第2生成手段と、前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算手段と、この加算により生成された楽音信号を出力する出力手段とを具備することを特徴とする。
また、請求項6記載の構成にあっては、複数パートの演奏情報を入力する入力手段と、前記複数パートのうちの何れかをマニュアル演奏パートとして指定する指定手段と、前記複数パートのうちマニュアル演奏パートとして指定されたパートに第2遅延時間を設定するとともに、前記マニュアル演奏パート以外の各パートに前記第2遅延時間よりも長い第1遅延時間を設定する設定手段と、前記マニュアル演奏パート以外の各パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を当該各パートの演奏情報に基づいて生成する第1生成手段と、前記マニュアル演奏パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を当該マニュアル演奏パートの演奏情報に基づいて生成する第2生成手段と、前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算手段と、この加算により生成された楽音信号を出力する出力手段とを具備することを特徴とする。
請求項7記載の構成にあっては、複数パートの演奏情報に基づいて前記各パートの楽音信号を出力する楽音生成装置において、前記各パートの演奏情報が提供されてから前記各パートの楽音信号を出力する迄の遅延時間を、前記パートに応じて相違させる手段を具備することを特徴とする。
また、請求項8記載の構成にあっては、演奏情報に基づいて楽音信号を出力する楽音生成装置において、前記演奏情報が提供されてから前記楽音信号を出力する迄の遅延時間を、前記演奏情報が自動演奏に係る演奏情報であるかマニュアル演奏に係る演奏情報であるかに応じて設定する手段を具備することを特徴とする。
【0008】
【発明の実施の形態】
1.実施形態の構成
本発明の一実施形態の楽音合成システムのハードウエア構成を図1を参照し説明する。なお、本実施形態は、汎用パーソナルコンピュータ上で実現されているものである。図において21はCPUであり、後述する制御プログラムに従って、CPUバス20を介して各部を制御する。22はROMであり、イニシャルプログラムローダ等が格納されている。23はRAMであり、後述する各種のプログラムやデータがロードされ、CPU21によってアクセスされる。24はタイマであり、所定時間毎にCPU21に対する割込みを発生させる。
【0009】
25はMIDIインターフェースであり、外部のMIDI機器(図示せず)との間でMIDI信号のやりとりを行う。26はハードディスクであり、オペレーティングシステム、各種ドライバ、各種アプリケーションプログラム、演奏情報等が記憶されている。27はリムーバブルディスクであり、CD−ROM、MOドライブ等が設けられ、ハードディスク26と同様の情報が記憶される。
【0010】
28は表示器であり、CRTあるいは液晶ディスプレイ等によって構成され、ユーザに対して種々の情報を表示する。29はキーボード&マウスであり、ユーザの操作によってCPU21に対して各種の情報を入力する。30は波形インターフェースであり、アナログ信号波形の入出力を行う。
【0011】
ここで、波形インターフェース30およびRAM23の詳細を図2を参照し説明する。図において31はADコンバータであり、入力されたアナログ信号をデジタル信号に変換する。33はサンプリングクロック発生器であり、所定のサンプリング周波数のクロック信号を発生する。32は第1DMAコントローラであり、このクロック信号に同期してADコンバータ31の出力信号をサンプリングし、RAM23内の指定箇所に該サンプリング結果をダイレクトメモリアクセスにより転送する。
【0012】
34は第2DMAコントローラであり、サンプリングクロック発生器33から出力されるサンプリングクロック信号に同期して、RAM23に記憶されたデジタル波形データをダイレクトメモリアクセスによって読出す。35はDAコンバータであり、読出されたデジタル波形データをアナログ信号に変換し出力する。
【0013】
また、RAM23において、36は波形テーブル領域であり、各種の波形データの雛形を格納する。37は入力バッファ領域であり、CPU21によってMIDIイベントが一時的に書込まれる。また、38は出力バッファ領域であり、第2DMAコントローラ34によって読み出される波形データが格納される。出力バッファ領域38はリングバッファになっており、その読出しアドレスは循環的にインクリメントされる読出しポインタによって決定される。なお、図示はしないが、RAM23には、第1DMAコントローラ32によって波形データを書込むための録音バッファ領域も設けられている。
【0014】
2.実施形態の動作
2.1.MIDIイベントを発生させる処理
本実施形態の楽音合成システムにおいては、MIDIインターフェース25を介してMIDI信号が供給されると、その度にMIDIイベントが発生する。また、ハードディスク26あるいはリムーバブルディスク27等に予め記憶された演奏情報に基づいて、時間の経過とともにMIDI_Outメッセージが発生される。本明細書では、何れも統一してMIDIイベントとして取扱い、該MIDIイベントに基づいて後述する各種の処理が行われる。なお、後者の処理については、例えば本出願人による特願平10−133761号に詳述されている。
【0015】
2.2.パート毎の発音遅れ時間の設定
MIDIイベントに対する処理が行われる前に、各パート毎に発音遅れ時間(レーテンシー)が予め設定される。その設定例を図4に示す。図において「パート音色」の欄は、パート番号と、対応する音色名とを示す。また、「音源M」の欄は、該パートに使用されるソフトウエア音源モジュールを示す。
【0016】
ここではTG1はPCM音源、TG2は物理モデル音源、TG3はFM音源である。次に、「発音遅れ時間」の欄には、遅れ時間に応じて分類したパートのグループ(A,B,C)と、各グループにおける遅れ時間(10msec,450msec,800msec)を示す。何れのパートを何れのグループに割り当てるかについては、ユーザが任意に設定できる。但し、一般的にはマニュアル演奏に係るパートを、最も発音遅れ時間の短いグループAに割り当てることが好適である。
【0017】
上記例にあっては、パート3の「サックス」のみがグループAに分類されている。これは、パート3のMIDIイベントはMIDIインターフェース25を介してリアルタイムに発生することとし、他のパートについてはハードディスク26あるいはリムーバブルディスク27等に予め記憶された演奏情報に基づいてMIDIイベントが発生することを想定しているものである。
【0018】
図4における全てのパートは、ハードディスク26等に予め記憶された演奏情報に基づいて自動演奏を行うことが可能になっている。但し、何れか一または複数のパートは自動演奏をオフにしておき、MIDIインターフェース25を介してユーザがマニュアル演奏を行えるようにすることができる。自動演奏のオン/オフ状態の設定を図4の最右欄に示す。上述したように、パート3の「サックス」はマニュアル演奏されることを想定しているため、該パートについてのみ自動演奏がオフに設定されている。この図4に示す設定状態は、RAM23内の所定の領域に格納される。
【0019】
2.3.MIDIイベント処理
上記MIDIイベントが発生すると、図5に示すMIDIイベント処理ルーチンが起動される。図において処理がステップSP10に進むと、発生したMIDIイベントがRAM23内の所定領域に取り込まれる。次に、処理がステップSP11に進むと、該MIDIイベントはグループA,B,Cの何れに属するかが判定される。
【0020】
ここで、グループAに属するものと判定されると、処理はステップSP12に進み、該MIDIイベントが発生タイミングを示すタイミング情報とともに入力バッファ領域37内の所定領域(入力バッファ(A))に書込まれる。同様に、グループBまたはCに属するものと判定された場合は、処理はそれぞれステップSP12またはSP13に進み、対応する入力バッファ(B)または(C)に該MIDIイベントがタイミング情報とともに書込まれる。
【0021】
ここで、入力バッファ(A),(B)および(C)のメモリマップを図6に示す。入力バッファ(A),(B)および(C)は、それぞれ独立したリングバッファとして使用される。図において書込みポインタWP(A),WP(B)およびWP(C)は、各々入力バッファ(A),(B)および(C)内における書込みアドレスを指標しており、MIDIイベントが書込まれる毎に対応するバッファ内で循環的にインクリメントされる。
【0022】
2.4.生成トリガイベント処理
本実施形態においては、所定の波形生成周期毎に生成トリガイベント(割込み)が発生し、図7に示す生成トリガイベント処理ルーチンが起動される。図において処理がステップSP20に進むと、グループAにおける波形データの生成範囲が決定される。この生成範囲は、次の生成トリガイベントが発生するまで波形データを充分に提供できるように決定される。
【0023】
次に、処理がステップSP21に進むと、この生成範囲におけるMIDIイベントが入力バッファ(A)から取り込まれる。次に処理がステップSP22に進むと、該MIDIイベントおよびタイミング情報に基づいて、この範囲における波形データが生成され、出力バッファ領域38に書込まれる。
【0024】
ここで、出力バッファ領域38のメモリマップを図3に示す。図において書込みポインタGWP(A),GWP(B)およびGWP(C)は、各々グループA,B,Cの楽音波形生成処理で生成された波形データの書込みアドレスを指標し、書込みポインタGWP(E)はこれらグループA,B,Cの波形データにエフェクト処理を施した波形データの書込みアドレスを指標する。
【0025】
図において、領域101にはグループCで生成された波形データが、領域102にはグループB,Cで生成された波形データの混合波形データが、また、領域103にはグループA,B,Cで生成された波形データの混合波形データがそれぞれ記憶されている。また、領域103に記憶された波形データのうち書込みポインタGWP(E)と読出しポインタRPに挟まれた領域の波形データはエフェクト処理済みの波形データである。
【0026】
なお、書込みポインタGWP(A),GWP(B)およびGWP(C)は本来は各パート毎に設けられるものであるが、図3においては説明の簡素化のために、グループA,B,Cの各々について1パートづつ(合計3パート)割り当てられていることとしている。GRP(A),GRP(B)およびGRP(C)は各目標ポインタであり、読出しポインタRPとの差はグループA,B,Cにおける発音遅れ時間に応じて決定される。また、目標ポインタGRP(A),GRP(B)およびGRP(C)と、対応する書込みポインタGWP(A),GWP(B)およびGWP(C)との差は、各グループの楽音波形生成処理の遅れ具合を表す。
【0027】
書込みポインタGWP(A),GWP(B)およびGWP(C)のうち最も進んだ書込みポインタに関しては、そのポインタが示す位置に生成された波形データがそのまま書込まれ、それ以外の書込みポインタに関しては、生成された波形データを、これから書込もうとする位置に記憶されている波形データに足しこむ形で書込むようになっている。
【0028】
そして、目標ポインタGRP(A),GRP(B)およびGRP(C)と、読出しポインタRPとは、サンプリング周期毎に1アドレス(波形データの1サンプルに相当する量)づつ進行する。その処理については後述するが、図3においてはその進行方向を矢印で示しておく。
【0029】
これら書込み、読出しおよび目標ポインタは出力バッファ領域38全体の中で循環的にインクリメントされる。すなわち、各ポインタは、出力バッファ領域38の最終アドレスに達した後は出力バッファ領域38の先頭アドレスに戻ることになる。従って、先のステップSP22において生成された波形データは、図上で書込みポインタGWP(A)の先の領域(図3の書込みポインタGWP(A)から下方向の領域)に書込まれる。
【0030】
すなわち、生成された波形データは、GWP(A)の先の領域に新たに書込まれるか、既に書込まれた内容に足し込まれる。そして、波形データが書込まれた最終位置に書込みポインタGWP(A)が移動される(書込みポインタGWP(A)が下方向に移動する)。
【0031】
図7に戻り、処理がステップSP23に進むと、先にグループAについて決定された波形データの生成範囲と同一の範囲について、グループBおよびCの波形データが既に生成されているか否かが判定される。ここで「NO」と判定されると、処理はステップSP24に進み、タイミング情報に基づいて該範囲におけるグループBおよびCのMIDIイベントが取り込まれる。
【0032】
次に処理がステップSP25に進むと、取り込まれたMIDIイベントに基づいて、グループBおよびCに係る波形データが各々生成され、上記書込みポインタGWP(B)およびGWP(C)の先の領域に各々書込まれる(または足し込まれる)とともに、書込まれた最終位置に書込みポインタGWP(B)およびGWP(C)が変更される。なお、該生成範囲におけるグループBおよびCの波形データが既に生成されている場合は、上記ステップSP24,SP25はスキップされる。
【0033】
図3に見られるように、通常は書込みポインタGWP(B)およびGWP(C)は書込みポインタGWP(A)よりも相当に進んでいるため、ステップSP23の判定は殆どの場合「YES」になる。ソフトウエア音源以外の処理で負荷が大きくなった等の理由でグループBおよび/またはCの楽音波形生成処理が遅れて書込みポインタGWP(B),GWP(C)の位置が書込みポインタGWP(A)の位置と等しくなった場合にのみ、ステップSP23で「NO」と判定されることになる。
【0034】
次に、処理がステップSP26に進むと、グループA,B,Cで生成された波形データの混合波形データに対してエフェクト処理が施される。具体的には、図3に示す書込みポインタGWP(A)とGWP(E)に挟まれた領域の波形データが読み出される。
【0035】
そして、読み出された各グループの波形データに対してエフェクト処理が施され、その結果得られた波形データが同領域に再び書込まれる。次に、処理がステップSP27に進むと、書込みポインタGWP(E)の位置が書込みポインタGWP(A)と同一の位置に変更される。
【0036】
次に、処理がステップSP28に進むと、生成トリガイベント処理ルーチン(図7)に対して割当てられた時間に余裕があるか否かが判定される。時間余裕がある場合は処理はステップSP29に進み、グループBおよびCに係る波形データが該時間余裕に応じて生成される。具体的にはステップSP29においては、図9におけるサブルーチンが呼び出される。
【0037】
図9において処理がステップSP50に進むと、グループBおよびCにおける生成範囲が上記時間余裕に応じて決定される。ここでは、グループBまたはCの波形生成処理の遅れを解消するように、それぞれ、時間余裕が許す範囲内で生成範囲が決定される。すなわち、当該グループの遅れが大きい場合には、より大きな生成範囲が指定される。
【0038】
次に処理がステップSP51に進むと、タイミング情報に基づいてグループBの生成範囲におけるMIDIイベントが入力バッファ領域37の入力バッファ(B)から取り込まれる。次に、処理がステップSP52に進むと、取り込まれたMIDIイベントに基づいて、該生成範囲におけるグループBの波形データが生成される。生成された波形データは出力バッファ領域38の書込みポインタGWP(B)の先の領域に書込まれ(新規に書込まれ、または足し込まれ)、書込んだ最終位置に書込みポインタGWP(B)が更新される。
【0039】
次に処理がステップSP53に進むと、タイミング情報に基づいてグループCの生成範囲におけるMIDIイベントが入力バッファ領域37の入力バッファ(C)から取り込まれる。次に、処理がステップSP54に進むと、取り込まれたMIDIイベントに基づいて、該生成範囲におけるグループCの波形データが生成される。生成された波形データは出力バッファ領域38の書込みポインタGWP(C)の先の領域に書込まれ(新規に書込まれ、または足し込まれ)、書込んだ最終位置に書込みポインタGWP(B)が更新される。
【0040】
2.5.DMA処理
サンプリングクロック発生器33がサンプリング周期でクロックを発生すると、このクロック毎にDMA割込みが発生し、図8に示すDMA処理ルーチンが呼び出される。図において処理がステップSP40に進むと、読出しポインタRPが「1」だけインクリメントされる。但し、読出しポインタRPが既に出力バッファ領域38の終端アドレスに達していた場合は、読出しポインタRPは出力バッファ領域38の先頭アドレスに設定される。
【0041】
すなわち、出力バッファ領域38の先頭アドレスを「0」としたとき、読出しポインタRPは、「現在のRPに「1」を加えた結果を出力バッファ領域38の大きさ(SIZE)で除算した余り」に設定される。次に処理がステップSP41に進むと、更新後の読出しポインタRPによって指標されたワードが出力バッファ領域38から読み出され、第2DMAコントローラ34を介してDAコンバータ35に供給され、図示せぬサウンドシステムを介して発音される。
【0042】
3.実施形態の効果
上記生成トリガイベント処理においては生成トリガイベント処理に対する時間余裕がある場合はステップSP29において比較的長い範囲のグループBおよびCの波形データが生成される。従って、グループAに係る波形データが生成される際には、殆どの場合において同一範囲のグループBおよびCの波形データは生成済みであり、ステップSP23においては「YES」と判定される。
【0043】
換言すれば、グループBおよびCに係る波形データは時間余裕があれば事前に生成されるから、グループAの波形データの作成のために多量の処理が必要となる生成範囲が一時的に存在したとしても、同範囲におけるグループBまたはCの波形データは事前に作成されている可能性が高くなり、楽音が途切れるような不具合を未然に防止することができる。
【0044】
4.変形例
本発明は上述した実施形態に限定されるものではなく、例えば以下のように種々の変形が可能である。
(1)上記実施形態においては、楽音合成システムのプログラムは全てパーソナルコンピュータにインストールされていることを前提として説明したが、これらのプログラムをCD−ROM、フロッピーディスク等の記録媒体に格納して頒布してもよいし、或いは、無線やネットワーク等を介して各コンピュータに配信してもよい。
【0045】
(2)上記実施形態においては、最も発音遅れ時間の短いグループ(グループA)に割り当てるパートをユーザが決定した。しかし、図4に示すように、自動演奏を行うことが可能な複数のパートのうち何れかのパートがオフにされる場合は、当該パートについてマニュアル演奏が行われる可能性が高い。そこで、自動演奏をオフにしたパートを自動的にグループAに割り当てるようにしてもよい。
【0046】
【発明の効果】
以上説明したようにこの発明によれば、演奏情報が提供されてから楽音信号を出力する迄の遅延時間を、演奏情報のパートに応じて、あるいは、自動演奏であるかマニュアル演奏であるかに応じて設定するから、演奏情報の態様に応じて適切な遅延時間を設定できる。
【図面の簡単な説明】
【図1】本発明の一実施形態の楽音合成システムのブロック図である。
【図2】RAM23および波形インターフェース30の詳細ブロック図である。
【図3】出力バッファ領域38のメモリマップである。
【図4】各パートの遅延時間等の設定状態を示す図である。
【図5】MIDIイベント処理ルーチンのフローチャートである。
【図6】入力バッファ領域37のメモリマップである。
【図7】生成トリガイベント処理ルーチンのフローチャートである。
【図8】DMA処理ルーチンのフローチャートである。
【図9】生成トリガイベント処理ルーチンのサブルーチンのフローチャートである。
【符号の説明】
20……CPUバス、21……CPU、22……ROM、23……RAM、24……タイマ、25……MIDIインターフェース、26……ハードディスク、27……リムーバブルディスク、28……表示器、29……キーボード&マウス、30……波形インターフェース、31……ADコンバータ、32……第1DMAコントローラ、33……サンプリングクロック発生器、34……第2DMAコントローラ、35……DAコンバータ、36……波形テーブル領域、37……入力バッファ領域、38……出力バッファ領域。

Claims (8)

  1. 第1パートの演奏情報および第2パートの演奏情報を入力する入力過程と、
    サンプリング周期ごとに出力バッファの読出しポインタを更新する一方、当該出力バッファに書き込まれた楽音信号のうち前記読出しポインタが示すサンプルを前記出力バッファから読み出して出力する出力過程と、
    前記読出しポインタと第1書込みポインタとの差分に応じた範囲の第1楽音信号を前記第1パートの演奏情報に基づいて生成する一方、この生成した第1楽音信号を前記出力バッファのうち前記第1の書込みポインタが示す領域に新規に書き込むとともに当該第1の書込みポインタを更新する第1生成過程と、
    前記読出しポインタと第2書込みポインタとの差分に応じた範囲の第2楽音信号を前記第2パートの演奏情報に基づいて生成する一方、この生成した第2楽音信号と前記出力バッファのうち前記第2の書込みポインタが示す領域に既に書き込まれている楽音信号とを加算して得られる楽音信号を当該第2の書込ポインタが示す領域に書き込むとともに当該第2の書込みポインタを更新する第2生成過程と
    を有し、前記入力過程において前記第1パートの演奏情報が入力されてから当該演奏情報に対応した前記第1楽音信号のサンプルが前記出力過程において出力されるまでの遅延時間が、前記入力過程において前記第2パートの演奏情報が入力されてから当該演奏情報に対応した前記第2楽音信号のサンプルが前記出力過程において出力されるまでの遅延時間よりも長い
    ことを特徴とする楽音生成方法。
  2. 第1パートの演奏情報および第2パートの演奏情報を入力する入力過程と、
    第1遅延時間と、当該第1遅延時間とは異なる第2遅延時間とを設定する設定過程と、
    前記第1パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を前記第1パートの演奏情報に基づいて生成する第1生成過程と、
    前記第2パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を前記第2パートの演奏情報に基づいて生成する第2生成過程と、
    前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算過程と、
    この加算により生成された楽音信号を出力する出力過程と
    を有することを特徴とする楽音生成方法。
  3. 複数パートの演奏情報を入力する入力過程と、
    前記複数パートのうちの何れかをマニュアル演奏パートとして指定する指定過程と、
    前記複数パートのうちマニュアル演奏パートとして指定されたパートに第2遅延時間を設定するとともに、前記マニュアル演奏パート以外の各パートに前記第2遅延時間よりも長い第1遅延時間を設定する設定過程と、
    前記マニュアル演奏パート以外の各パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を当該各パートの演奏情報に基づいて生成する第1生成過程と、
    前記マニュアル演奏パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を当該マニュアル演奏パートの演奏情報に基づいて生成する第2生成過程と、
    前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算過程と、
    この加算により生成された楽音信号を出力する出力過程と
    を有することを特徴とする楽音生成方法。
  4. 第1パートの演奏情報および第2パートの演奏情報を入力する入力手段と、
    サンプリング周期ごとに出力バッファの読出しポインタを更新する一方、当該出力バッ ファに書き込まれた楽音信号のうち前記読出しポインタが示すサンプルを前記出力バッファから読み出して出力する出力手段と、
    前記読出しポインタと第1書込みポインタとの差分に応じた範囲の第1楽音信号を前記第1パートの演奏情報に基づいて生成する一方、この生成した第1楽音信号を前記出力バッファのうち前記第1の書込みポインタが示す領域に新規に書き込むとともに当該第1の書込みポインタを更新する第1生成手段と、
    前記読出しポインタと第2書込みポインタとの差分に応じた範囲の第2楽音信号を前記第2パートの演奏情報に基づいて生成する一方、この生成した第2楽音信号と前記出力バッファのうち前記第2の書込みポインタが示す領域に既に書き込まれている楽音信号とを加算して得られる楽音信号を当該第2の書込ポインタが示す領域に書き込むとともに当該第2の書込みポインタを更新する第2生成手段と
    を具備し、前記入力手段により前記第1パートの演奏情報が入力されてから当該演奏情報に対応した前記第1楽音信号のサンプルが前記出力手段によって出力されるまでの第1遅延時間が、前記入力手段により前記第2パートの演奏情報が入力されてから当該演奏情報に対応した前記第2楽音信号のサンプルが前記出力手段によって出力されるまでの第2遅延時間よりも長い
    ことを特徴とする楽音生成装置。
  5. 第1パートの演奏情報および第2パートの演奏情報を入力する入力手段と、
    第1遅延時間と、当該第1遅延時間とは異なる第2遅延時間とを設定する設定手段と、
    前記第1パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を前記第1パートの演奏情報に基づいて生成する第1生成手段と、
    前記第2パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を前記第2パートの演奏情報に基づいて生成する第2生成手段と、
    前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算手段と、
    この加算により生成された楽音信号を出力する出力手段と
    を具備することを特徴とする楽音生成装置。
  6. 複数パートの演奏情報を入力する入力手段と、
    前記複数パートのうちの何れかをマニュアル演奏パートとして指定する指定手段と、
    前記複数パートのうちマニュアル演奏パートとして指定されたパートに第2遅延時間を設定するとともに、前記マニュアル演奏パート以外の各パートに前記第2遅延時間よりも長い第1遅延時間を設定する設定手段と、
    前記マニュアル演奏パート以外の各パートの演奏情報が入力されてから前記第1遅延時間が経過したときに出力すべき第1楽音信号を当該各パートの演奏情報に基づいて生成する第1生成手段と、
    前記マニュアル演奏パートの演奏情報が入力されてから前記第2遅延時間が経過したときに出力すべき第2楽音信号を当該マニュアル演奏パートの演奏情報に基づいて生成する第2生成手段と、
    前記第1楽音信号と前記第2楽音信号とを各々の出力タイミングが共通するもの同士で加算する加算手段と、
    この加算により生成された楽音信号を出力する出力手段と
    を具備することを特徴とする楽音生成装置。
  7. 複数パートの演奏情報に基づいて前記各パートの楽音信号を出力する楽音生成装置において、
    前記各パートの演奏情報が提供されてから前記各パートの楽音信号を出力する迄の遅延時間を、前記パートに応じて相違させる手段
    を具備することを特徴とする楽音生成装置。
  8. 演奏情報に基づいて楽音信号を出力する楽音生成装置において、
    前記演奏情報が提供されてから前記楽音信号を出力する迄の遅延時間を、前記演奏情報 が自動演奏に係る演奏情報であるかマニュアル演奏に係る演奏情報であるかに応じて設定する手段
    を具備することを特徴とする楽音生成装置
JP08048599A 1999-03-24 1999-03-24 楽音生成方法および楽音生成装置 Expired - Fee Related JP3551818B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP08048599A JP3551818B2 (ja) 1999-03-24 1999-03-24 楽音生成方法および楽音生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08048599A JP3551818B2 (ja) 1999-03-24 1999-03-24 楽音生成方法および楽音生成装置

Publications (2)

Publication Number Publication Date
JP2000276149A JP2000276149A (ja) 2000-10-06
JP3551818B2 true JP3551818B2 (ja) 2004-08-11

Family

ID=13719601

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08048599A Expired - Fee Related JP3551818B2 (ja) 1999-03-24 1999-03-24 楽音生成方法および楽音生成装置

Country Status (1)

Country Link
JP (1) JP3551818B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008149675A1 (ja) * 2007-06-05 2010-08-26 株式会社アドバンテスト 波形発生装置、波形発生方法およびプログラム
JP7124371B2 (ja) 2018-03-22 2022-08-24 カシオ計算機株式会社 電子楽器、方法及びプログラム
JP7332002B2 (ja) * 2018-03-22 2023-08-23 カシオ計算機株式会社 電子楽器、方法及びプログラム

Also Published As

Publication number Publication date
JP2000276149A (ja) 2000-10-06

Similar Documents

Publication Publication Date Title
US10325581B2 (en) Singing voice edit assistant method and singing voice edit assistant device
JP7000782B2 (ja) 歌唱音声の編集支援方法、および歌唱音声の編集支援装置
JP4240575B2 (ja) 楽音合成方法、記録媒体および楽音合成装置
JP6011219B2 (ja) オーディオファイル生成プログラム及びオーディオファイル生成装置
TW300298B (ja)
JP2976429B2 (ja) アドレス制御回路
JP3551818B2 (ja) 楽音生成方法および楽音生成装置
JP3840851B2 (ja) 記録媒体および楽音信号生成方法
JP4036233B2 (ja) 楽音発生装置および楽音発生方法、並びに該方法に係るプログラムを記憶した記憶媒体
JP3637577B2 (ja) 楽音生成方法
JP3978928B2 (ja) 楽音生成装置
JP5534389B2 (ja) 楽音生成装置
JP3799711B2 (ja) 楽音発生方法および楽音発生装置
JP3781171B2 (ja) 楽音発生方法
JP3518357B2 (ja) 楽音生成方法、楽音生成装置及び楽音生成処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3460524B2 (ja) 曲データ加工方法、加工後曲データ再生方法および記憶媒体
JP4685226B2 (ja) 波形再生用自動演奏装置
JP4645597B2 (ja) 楽音合成方法、記録媒体および楽音合成装置
JP3223757B2 (ja) 楽音波形発生方法
JP3407625B2 (ja) 自動演奏装置、自動演奏方法及びプログラムを記録した媒体
JP3938022B2 (ja) 音色設定装置及びプログラム
JP2765469B2 (ja) 楽音信号再生装置
JP2000122668A (ja) デジタル音声データ処理装置およびコンピュータシステム
JP3659002B2 (ja) 楽音データ処理装置およびコンピュータシステム
JP4862879B2 (ja) 楽音合成方法、記録媒体および楽音合成装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040305

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040419

R150 Certificate of patent (=grant) 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 (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110514

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20140514

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees