JP3873160B2 - 楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体 - Google Patents
楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体 Download PDFInfo
- Publication number
- JP3873160B2 JP3873160B2 JP34663298A JP34663298A JP3873160B2 JP 3873160 B2 JP3873160 B2 JP 3873160B2 JP 34663298 A JP34663298 A JP 34663298A JP 34663298 A JP34663298 A JP 34663298A JP 3873160 B2 JP3873160 B2 JP 3873160B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- area
- waveform data
- procedure
- time
- 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】
【従来の技術】
汎用のコンピュータ上でソフトウェアにより構成された音源、いわゆるソフト音源は、外部の演奏装置からMIDIデータ等で入力された楽音データに基づいて、デジタル信号の波形データを生成して一定の記憶容量をもつメモリに書き込み、これを読み出してD/Aコンバータを介して外部のサウンドシステムに出力して発音させている。この場合において、波形データはメモリの一定の記憶容量のデータサイズ分だけ生成された後にD/A処理される。
【0003】
【発明が解決しようとする課題】
ところが、波形データはメモリの一定の記憶容量のデータサイズ分だけ生成された後にD/A処理されるので、処理速度の遅いコンピュータを用いた場合には、楽音データが入力された時から波形データを生成してメモリに記憶し、実際に発音させるまでに遅延時間が発生する。この遅延時間は、一度に生成する波形データのデータサイズが大きいほど大きくなり、同時に発音するチャンネルが多いほど大きくなる。したがって、この遅延時間があまりに大きいと、楽音データの入力から発音までに時間差がありすぎて違和感を与えるという問題があった。一方、メモリの記憶容量が小さすぎる場合には、一度に生成する波形データのデータサイズは小さくなるが、読み出す波形データのデータサイズも小さくなるので、D/Aコンバータの所定のサンプリング周期に対して読み出す波形データが足りなくなって音切れが発生するという問題があった。
本発明の課題は、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止することである。
【0004】
【課題を解決するための手段】
本発明による楽音発生装置は所定の記憶手段の所定のデータサイズのエリアを複数の分割エリアに分割するエリア分割手段と、前記記憶手段の各分割エリアを指定するエリア指定手段と、入力された楽音データに応じて波形データを生成するデータ生成手段と、このデータ生成手段によって生成された波形データを前記記憶手段における前記エリア指定手段によって書き込みが指定された分割エリアに書き込むデータ書込手段と、前記記憶手段において前記エリア指定手段によって読み出しが指定された分割エリアから記憶された波形データを読み出して出力するデータ読出手段と、を備え、前記エリア分割手段は、前記データ生成手段が波形データ生成をはじめてから前記データ読み出し手段が記憶された波形データを読み出して出力し終えるまでに要した時間を測定する時間測定手段を有し、当該時間が所定値を越えていた場合には前記分割エリアのサイズを増加させるようになっている。
【0005】
本発明による記録媒体は、所定の記憶手段の所定のデータサイズのエリアを複数の分割エリアに分割するエリア分割手順と、前記記憶手段の各分割エリアを指定するエリア指定手順と、入力された楽音データに応じて波形データを生成するデータ生成手順と、このデータ生成手順によって生成された波形データを前記記憶手段における前記エリア指定手順によって書き込みが指定された分割エリアに書き込むデータ書込手順と、前記記憶手段において前記エリア指定手順によって読み出しが指定された分割エリアから記憶された波形データを読み出して出力するデータ読出手順と、を実行し、前記エリア分割手順は、前記データ生成手順が波形データ生成をはじめてから前記データ読み出し手順が記憶された波形データを読み出して出力し終えるまでに要した時間を測定する時間測定手順を含み、当該時間が所定値を越えていた場合には前記分割エリアのサイズを増加させる楽音発生処理のプログラムを記憶している。
【0007】
【発明の実施の形態】
【0008】
以下、本発明の実施形態における楽音発生装置(コンピュータシステム)について、図を参照して説明する。このコンピュータシステムには、種々のカードすなわち回路基板を装着するスロットが設けられており、後述するように、楽音発生のために必要な複数のカードが接続されている。
【0009】
図1は、実施形態における楽音発生装置のシステム構成を示すブロック図である。CPU1は、バス2に接続されたビデオカード3、I/Oカード4、サウンドカード5、ディスクコントローラ6、メモリ7、MIDIインターフェース8との間において、コマンド及びデータを授受して、この装置全体を制御する。
【0010】
ビデオカード3は、ディスプレイ装置9に接続され、CPU1の表示コマンドに応じて、楽音発生の操作に必要なメニュー画面を表示する。このメニュー画面には、動作モードを指定するためのアイコンが表示される。I/Oカード4は、演奏操作に応じて音高その他の楽音データを入力するキーボード10、及び、操作に応じてアイコンを指定するマウス11に接続され、これらの操作に応じたコマンド及びデータをCPU1に入力する。サウンドカード5は、D/Aコンバータで構成され、CPU1によってメモリ7から読み出されたデジタル信号の波形データを所定のサンプリング周期でアナログ信号に変換(D/A処理)して、外部のサウンドシステムに出力する。ディスクコントローラ6は、ハードディスク12を制御し、CPU1のプログラムロードコマンドに応じて、楽音発生処理のプログラムをメモリ7のプログラムエリアにストアする。
【0011】
MIDIインターフェース8は、楽音データを生成する他の電子機器13に接続され、送信されるMIDIデータをCPU1に入力する。したがって、指定するモードにより、キーボード10から入力される楽音データに応じて波形データを生成することも、他の電子機器13からのMIDIデータの楽音データに応じて波形データを生成することも可能である。なお、図1には示さないが、現在時間を計測するための時間計測部がバス2に接続されている。
【0012】
メモリ7は、RAM等で構成され、プログラムエリアの他に所定のデータサイズからなるデータエリアが設けられており、書き込みモードにおいて、CPU1によって作成される波形データが書き込まれるとともに、読み出しモードにおいて、波形データが読み出されてサウンドカード5に送出される。この場合において、CPU1は、メモリ7のデータエリアを、任意のデータサイズの複数のエリアに分割するエリア分割手段を構成するとともに、その分割した各エリアを指定するエリア指定手段を構成する。例えば、図2及び図3に示すように、メモリ7のデータエリアを4つのエリアa、b、c、dに分割して、指定したエリアに波形データを書き込み、指定したエリアから波形データを読み出す。
【0013】
図2は、書き込みモードにおける波形データの書き込み処理時の推移を示している。
(1)は、すべてのエリアに波形データが書き込まれていない状態であり、指定するエリアすべてに波形データを書き込むことができる。
(2)は、エリアaに波形データが書き込まれた状態である。
(3)は、エリアa及びbに波形データが書き込まれた状態である。
(4)は、エリアa、b及びcに波形データが書き込まれた状態である。
(5)は、エリアaの波形データのA/D処理が終了し、エリアb及びcに波形データが残っている状態である。
(6)は、エリアdに波形データが書き込まれた状態である。
(7)は、エリアbの波形データのA/D処理が終了し、エリアc及びdに波形データが残っている状態である。
(8)は、エリアaに波形データが書き込まれた状態である。
【0014】
図3は、読み出しモードにおけるD/A処理時の推移を示している。
(1)は、初期状態である。
(2)は、エリアaの波形データがサウンドカードに転送され、D/A処理を行っている状態である。
(3)は、エリアbの波形データのD/A処理待ちの状態である。
(4)は、エリアcの波形データのD/A処理待ちの状態である。
(5)は、エリアaの波形データのD/A処理が終了し、エリアbの波形データのD/A処理を行っている状態である。
(6)は、エリアdの波形データのD/A処理待ちの状態である。
(7)は、エリアbの波形データのD/A処理が終了し、エリアcの波形データのD/A処理を行っている状態である。
(8)は、エリアaの波形データのD/A処理待ちで、かつ、エリアcの波形データのD/A処理を行っている状態である。
【0015】
次に、図1に示した楽音発生装置の動作について、図4〜図12に示すCPU1による楽音発生処理のフローチャートに基づいて説明する。なお、この処理のために必要なレジスタ、フラグ、ポインタがメモリ7に用意されている。
【0016】
図4は、メインフローである。まず、イニシャライズを行って、メモリのデータエリア、レジスタ、フラグ等をクリアし(ステップA1)、以下のループ処理を繰り返す。モードが設定モードであるか生成モードであるかを判別し(ステップA2)、設定モードである場合には設定処理を実行し(ステップA3)、生成モードである場合には生成処理を実行する(ステップA4)。
【0017】
図5〜図8は、メインフローにおける設定処理のフローである。図5において、発音チャンネル数であるポリ数が入力されたか否かを判別し(ステップB1)、入力されたときは、レジスタPOLYに入力ポリ数をストアする(ステップB2)。次に、MIDIインターフェースからの楽音データの入力から、サウンドカードへの波形データの出力までの遅延時間を設定するパラメータの値「1」をレジスタPARAMにストアする(ステップB3)。次に、POLYの値をインクリメントする(ステップB4)。
【0018】
この実施形態においては、後述するように、メモリの最適な分割を行うために、暫定的な分割を行った後、所定音高による基準の波形データを生成して分割したエリアに書き込み、その基準の波形データをサウンドカードに出力して、システムの処理能力を計測する基準処理を行う。すなわち、データ生成処理速度を測定して、そのデータ生成処理速度に応じたデータサイズの複数のエリアに分割する。その測定の安全率を高めるために、上記ステップB4において、入力されたポリ数より1つ多くして実際よりも厳しい条件で測定する。
【0019】
次に、PARAMの値に応じて、分割した各エリアのデータサイズ、分割エリア数、基準処理の基準時間、基準処理の基準データサイズを設定するために、プログラム内の対応するテーブルTB[ ][PARAM]を参照して設定を行う。すなわち、PARAMの値に応じてデータサイズ用のテーブルを参照して、各エリアのデータサイズを設定し、レジスタSIZEにストアする(ステップB5)。PARAMの値に応じて分割エリア数用のテーブルを参照して、分割エリア数を設定し、レジスタNUMにストアする(ステップB6)。PARAMの値に応じて基準時間用のテーブルを参照して、基準時間を設定し、レジスタBTIMEにストアする(ステップB7)。PARAMの値に応じて基準データサイズ用のテーブルを参照して、基準データサイズを設定し、レジスタBSIZEにストアする(ステップB8)。そして、現在時間をレジスタSTARTにストアする(ステップB9)。
【0020】
ステップB1において、ポリ数が入力されない場合には、生成モードへのモード変更がなされたか否かを判別し(ステップB10)、モード変更がされない場合は、ステップB1に移行してポリ数入力を判別する。モード変更がされたときは、生成モードへのモード変更を行って(ステップB11)、このフローを終了してメインフローに戻る。
【0021】
ステップB9において現在時間をストアした後は、図6のフローにおいて、チャンネル番号を示すポインタNを「0」にセットして(ステップB12)、Nをインクリメントしながら、以下のループ処理を繰り返す。すなわち、発音レジスタNOTE(N)に所定音高をストアし(ステップB13)、Nをインクリメントする(ステップB14)。次に、Nの値がPOLYにストアしたポリ数に達したか否かを判別する(ステップB15)。ポリ数に達していない場合にはステップ13に移行してループ処理を続行する。
【0022】
ステップB15において、Nがポリ数に達したときは、BSIZEのデータサイズをインクリメントするためのポインタAを「0」にセットし(ステップB16)、波形データを書き込むエリアを指定するポインタBを「0」にセットし(ステップB17)、波形データの書き込みごとにインクリメントするポインタCを「0」にセットする(ステップB18)。
【0023】
次に、NOTE(N)でNチャンネルの発音処理を行い(ステップB19)、波形データのレジスタWAVEに生成データをストアして累算(合成)する(ステップB20)。次に、Nをインクリメントして(ステップB21)、図7のフローにおいて、Nの値がPOLYの値に達したか否かを判別する(ステップB22)。POLYの値に達しない場合、すなわちPOLYの値に対応するチャンネル数の発音処理が終了していない場合には、図6のステップB19に移行して、発音処理を行う。そして、図7のステップB22においてNの値がPOLYの値に達するまで、図6のステップB19から図20のステップB22までのループ処理を繰り返す。
【0024】
図20のステップB22において、Nの数がPOLYの数に達したときは、ポインタCをインクリメントし(ステップB23)、指定したエリアであるBUFFER(B)にWAVEの波形データをストアする(ステップB24)。次に、ポインタAをインクリメントして(ステップB25)、Aの値がBSIZEの値に達したか否かを判別する(ステップB26)。この値に達していない場合、すなわち基準処理の波形データがまだ残っている場合には、WAVEを「0」にクリアして(ステップB27)、Nを「0」にセットする(ステップB28)。
【0025】
次に、ポインタCの値がSIZEの値に達したか否かを判別し(ステップB29)、この値にまだ達していない場合、すなわちメモリの現在指定しているエリアにまだ波形データをストアするエリア(余裕)がある場合には、図6のステップB19に移行してNOTE(N=0)でN(=0)チャンネルの発音処理を行う。そして、図7のステップB29までのループ処理を繰り返す。
【0026】
ステップB29においてCの値がSIZEの値に達した場合、すなわちポインタBで指定した番号のエリアが一杯になった場合には、まだ残っている基準処理の波形データをストアするために、Bをインクリメントして次のエリアを指定する(ステップB30)。そして、Bの値がNUMの値すなわち分割エリア数に達したか否かを判別する(ステップB31)。この値に達していない場合には、図6のステップB18に移行して、Cを「0」にセットする。そして、図7のステップB29までのループ処理をCの値がSIZEの値に達するまで繰り返し、Cの値がSIZEの値に達したときは、ステップB30においてBをインクリメントして、次のエリアを指定する。
【0027】
図7のステップB26において、Aの値がBSIZEの値に達した場合、すなわち基準処理に必要な波形データの発音がすべて終了したときは、図8のフローにおいて、レジスタENDに現在時間をストアする(ステップB32)。そして、ENDの値からSTARTの値を減算して、その値が基準時間BTIMEより大きいか否かを判別する(ステップB33)。すなわち、基準処理に必要な波形データの生成から発音に到るまでの所要時間すなわちシステムの処理時間が基準時間より大きいか否かを判別する。
【0028】
この所要時間が基準時間より大きい場合には、実際の入力楽音データによる発音に音切れが発生することになる。そこで、PARAMにストアした設定パラメータが最大値MAXPARAMであるか否かを判別する(ステップB34)。PARAMの値が最大値になっていない場合には、PARAMの値をインクリメントして(ステップB35)、分割したエリアのデータサイズを増加するような分割に変更する。そして、図5のステップB5に移行して、変更した分割に基づいて新たな設定を行う。
【0029】
図8のステップB34において、PARAMの値が最大値になっている場合には、PARAMの値をインクリメントできないので、POLYの値が「1」でないか否かを判別する(ステップB36)。この値が「2」以上である場合には、POLYの値をデクリメントする(ステップB37)。すなわち、発音チャンネル数を減らして、基準処理に必要な波形データのデータサイズを少なくする。そして、図5のステップB5に移行して、少なくなった基準処理のデータサイズに基づいて新たな設定を行う。
【0030】
図8のステップB33において、所要時間すなわちシステムの処理時間が基準時間以内になっている場合には、システムのデータ生成処理速度が充分であるので、実際の入力楽音データによる発音に音切れは発生しない。したがって、POLYの値をデクリメントして(ステップB38)、初めに入力されたポリ数に戻す。そして、設定モードから生成モードにモード変更を行って(ステップB39)、このフローを終了してメインフローに戻る。
【0031】
図8のステップB36において、POLYの値が「1」である場合には、発音チャンネルが1つのみで、かつ、分割するエリアのデータサイズが最大になっているので、システムのデータ生成処理速度が遅すぎて、実際の入力楽音データによる発音に音切れは回避することができない。したがって、設定モードから生成モードにモード変更を行って(ステップB39)、このフローを終了してメインフローに戻る。
【0032】
このように、入力される楽音データに応じて生成した波形データを記憶するメモリの所定のサイズのデータエリアを、任意のデータサイズの複数のエリアに分割する際に、システムのデータ生成処理速度を測定して、そのデータ生成処理速度に応じたデータサイズの複数のエリアに分割する。
【0033】
次に、メインフローのステップA4における生成処理について、図9〜図12のフローに基づいて説明する。図9において、波形データを書き込むエリアを指定するポインタBを「0」にセットし(ステップC1)、波形データの書き込みごとにインクリメントするポインタCを「0」にセットする(ステップC2)。また、発音チャンネルのポインタCHを「0(最初のチャンネル)」にセットし、波形データをストアするレジスタWAVEを「0」にクリアする(ステップC3)。次に、分割したメモリの各エリア(0)〜(B)についての書き込みフラグWF(0)〜(B)をすべて「1(書き込み可能)」にセットする(ステップC4)。そして、すべてのチャンネルのオンフラグONF(0)〜(POLEY)を「0(消音)」にリセットする(ステップC5)。
【0034】
この状態で、MIDI入力があった場合には、MIDIの楽音データに応じて波形データを生成して発音処理をすることになる。そして、モード変更がされない限り、次のステップC6から図12のステップC38のループ処理を繰り返し実行することになる。すなわち、ポインタBで指定されるエリアのWF(B)が「1」であるか否かを判別し(ステップC6)、このフラグが「1」である場合には、ポインタCHで指定されるONF(CH)が「1(発音)」であるか否かを判別する(ステップC7)。このフラグが「1」である場合には、NOTE(CH)による楽音生成処理を行って生成データを得る(ステップC8)。一方このフラグが「0」である場合には、生成データは「0」とする(ステップC9)。
【0035】
次に、レジスタWAVEに生成データを累算する(ステップC10)。この後、CHをインクリメントして(ステップC11)、次のチャンネルを指定する。そして、CHの値がPOLYの値に達したか否かを判別する(ステップC12)。この値に達しない場合には、ステップC7に移行して、ステップC12までのループ処理を繰り返す。
【0036】
ステップC12において、CHの値がPOLYの値に達して、すべてのチャンネルについての波形データの生成が終了して、レジスタWAVEにすべてのチャンネルの波形データが累算(合成)された場合には、図10のフローにおいて、WAVEの合成波形データをポインタBで指定したエリアBUFFER(B)にストアする(ステップC13)。次に、WAVEを「0」にクリアして(ステップC14)、CHを「0」に戻して(ステップC15)、Cの値をインクリメントする(ステップC16)。
【0037】
そして、Cの値がエリアBUFFER(B)のデータサイズSIZEに達したか否かを判別し(ステップC17)、SIZEに達した場合には、エリアBUFFER(B)への書き込みがそれ以上できないので、WF(B)を「0(書き込み不可)」にリセットする(ステップC18)。これは、図2のハッチングで示す状態である。次に、Cを「0」にセットして(ステップC19)、BUFFER(B)の内容すなわち波形データをサウンドカードへ転送する(ステップC20)。これは、図3のハッチングで示す状態である。
【0038】
次に、Bの値をインクリメントして(ステップC21)、次のエリアを指定する。そして、Bの値が最後のエリアであるNUMの値に達したか否かを判別する(ステップC22)。NUMの値に達したときは、Bの値を「0」にセットして(ステップC23)、最初のエリアを指定する。この後、若しくはステップC22において指定したエリアが最後のエリアでない場合、又は、ステップC17において、Cの値がエリアBUFFER(B)のデータサイズSIZEに達せずに、まだこのエリアに波形データのストアが可能である場合には、図11のフローにおいて、MIDI入力があるか否かを判別する(ステップC24)。
【0039】
MIDI入力があったときは、その楽音データがオンイベントであるか否かを判別する(ステップC25)。オンイベントである場合には、CHを「0(最初のチャンネル)」にセットして(ステップC26)、そのチャンネルのONF(CH)が「0(消音)」すなわち空きチャンネルであるか否かを判別する(ステップC27)。ONF(CH)が「0」である場合には、ONF(CH)を「1(発音)」にセットして(ステップC28)、NOTE(CH)に入力された楽音データの音高をストアする(ステップC29)。
【0040】
ステップC27において、ONF(CH)がすでに「1」になっている場合には、CHの値をインクリメントして(ステップC30)、次のチャンネルを指定する。そして、CHの値がPOLYの値すなわち最大チャンネル数に達したか否かを判別する(ステップC31)。POLYの値に達していない場合には、ステップC27に移行して、ONF(CH)が「0」であるか否かを判別する。ステップC31において、CHの値がPOLYの値に達した場合には、ステップC24に移行して、MIDI入力を判別する。
【0041】
ステップC29において音高をストアした後、又は、ステップC24においてMIDI入力がない場合には、波形データを読み出すエリアを指定するポインタDを「0」にセットし(ステップC32)、WF(D)が「0(読み出し可能)」であるか否かを判別する(ステップC33)。このフラグが「0」である場合には、BUFFER(D)の波形データをサウンドカードに転送してD/A処理をさせている状態であるので、サウンドカードのD/A処理が終了したか否かを判別する(ステップC34)。
【0042】
D/A処理が終了したときは、WF(D)を「1(書き込み可能)」にセットして(ステップC35)、Dの値をインクリメントする(ステップC36)。図3の例では、(5)に示すように、エリアaのD/A処理が終了して、エリアbを指定した状態である。ステップC34において、D/A処理が終了していない場合には、ステップC36に移行してDの値をインクリメントする。したがって、生成した波形データを書き込みが指定されたエリアに書き込み、読み出しが指定されたエリアから波形データを読み出して出力する。
【0043】
ステップC33において、WF(D)が「1」である場合には、Dの値をインクリメントして(ステップC36)、Dの値がNUMの値に達したか否かを判別する(ステップC37)。この値に達していない場合にはステップC33に移行して、新たに指定したエリアのWF(D)が「0」であるかを判別する。Dの値がNUMの値に達した場合には、モード変更か否かを判別し(ステップC38)、モード変更である場合には、設定モードにモード変更して(ステップC39)、このフローを終了してメインフローに戻る。モード変更でない場合には、図9のステップC6に移行して、WF(B)が「1(書き込み可能)」か否かを判別する。
【0044】
ステップC25において入力された楽音データがオンイベントでなくオフイベントである場合には、図12のフローにおいて、CHを「0」にセットして(ステップC40)、ONF(CH)が「1(発音)」であるか否かを判別する(ステップC41)。このフラグが「1」である場合には、NOTE(CH)の音高がオフイベントの音高と同じであるか否かを判別する(ステップC42)。音高が同じである場合には、ONF(CH)を「0(消音)」にリセットする(ステップC43)。そして、図11のステップC32に移行して、読み出しエリアを指定するポインタDを「0」にセットする。
【0045】
図12のステップC41においてONF(CH)が「0(消音)」である場合、又は、ステップC42においてNOTE(CH)の音高がオフイベントの音高と異なる場合には、CHの値をインクリメントする(ステップC44)。そして、CHの値がPOLYの値に達したときは、図11のステップC32に移行して、読み出しエリアを指定するポインタDを「0」にセットする。
【0046】
このように、上記実施形態における楽音発生装置においては、CPU1は、所定の記憶手段(メモリ7)の所定のデータサイズのエリアを任意のデータサイズの複数のエリアに分割するエリア分割手段と、前記記憶手段の各エリアを指定するエリア指定手段と、入力された楽音データに応じて波形データを生成するデータ生成手段と、このデータ生成手段によって生成された波形データを前記記憶手段における前記エリア指定手段によって書き込みが指定されたエリアに書き込むデータ書込手段と、前記記憶手段において前記エリア指定手段によって読み出しが指定されたエリアから記憶された波形データを読み出して出力するデータ読出手段と、を備えた構成になっている。
【0047】
上記構成により、入力される楽音データに応じて生成した波形データを記憶する記憶手段の所定のデータサイズのエリアを、任意のデータサイズの複数のエリアに分割し、生成した波形データを書き込みが指定されたエリアに書き込み、読み出しが指定されたエリアから波形データを読み出して出力する。したがって、作成する波形データのデータサイズを任意に設定できるので、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止する。
【0048】
この場合において、前記エリア分割手段は、前記データ生成手段のデータ生成処理速度を測定する速度測定手段を有し、当該データ生成処理速度に応じたデータサイズの複数のエリアに分割する。したがって、使用するコンピュータの処理能力に応じて、作成する波形データのデータサイズを任意に設定できるので、コンピュータの種類にかかわらず、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止する。
【0049】
あるいはこの場合において、前記エリア分割手段は、同時に発音する発音チャンネル数を測定するチャンネル測定手段を有し、当該測定した発音チャンネル数に応じたデータサイズの複数のエリアに分割する。したがって、発音チャンネル数に応じて、作成する波形データのデータサイズを任意に設定できるので、使用する発音チャンネル数にかかわらず、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止する。
【0050】
また、前記楽音データの入力から当該楽音データに対応する波形データの発音までの遅延時間を任意に設定する遅延設定手段をさらに有し、前記エリア分割手段は、前記遅延設定手段によって設定された遅延時間に応じて記憶手段の所定のデータサイズのエリアを任意のデータサイズの複数のエリアに分割する。したがって、作成する波形データのデータサイズを設定した遅延時間に応じて任意に設定できるので、楽音データの入力形態によって作成する波形データのデータサイズを任意に設定できるので、実情に適応した楽音発生ができる。例えば、手動演奏による入力である場合には遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止し、自動演奏による入力である場合には、発音チャンネル数を増加する等の対応が可能になる。
【0051】
なお、上記実施形態においては、楽音発生装置内のハードディスク12に格納された楽音発生処理のプログラムを記録した構成にしたが、フロッピーディスク、CD、MD等の外部記録媒体に楽音発生処理のプログラムを記録し、汎用のコンピュータでこの記録媒体のプログラムを読み出して実行させることによって、上記発明を実現することができる。すなわち、所定の記憶手段の所定のデータサイズのエリアを任意のデータサイズの複数のエリアに分割するエリア分割手順と、前記記憶手段の各エリアを指定するエリア指定手順と、入力された楽音データに応じて波形データを生成するデータ生成手順と、このデータ生成手順によって生成された波形データを前記記憶手段における前記エリア指定手順によって書き込みが指定されたエリアに書き込むデータ書込手順と、前記記憶手段において前記エリア指定手順によって読み出しが指定されたエリアから記憶された波形データを読み出して出力するデータ読出手順と、を実行する楽音発生処理のプログラムを記録した記録媒体を構成する。
【0052】
そして、汎用のコンピュータにこの記録媒体のプログラムを実行させ、入力される楽音データに応じて生成した波形データを記憶する記憶手段の所定のデータサイズのエリアを、任意のデータサイズの複数のエリアに分割し、生成した波形データを書き込みが指定されたエリアに書き込み、読み出しが指定されたエリアから波形データを読み出して出力する。したがって、作成する波形データのデータサイズを任意に設定できるので、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止する。
【0053】
この場合において、前記エリア分割手順は、前記データ生成手順のデータ生成処理速度を測定する速度測定手順を含み、当該データ生成処理速度に応じたデータサイズの複数のエリアに分割する。したがって、使用するコンピュータの処理能力に応じて、作成する波形データのデータサイズを任意に設定できるので、コンピュータの種類にかかわらず、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止する。
【0054】
あるいはこの場合において、前記エリア分割手順は、同時に発音する発音チャンネル数を測定するチャンネル測定手順を含み、当該測定した発音チャンネル数に応じたデータサイズの複数のエリアに分割する。したがって、発音チャンネル数に応じて、作成する波形データのデータサイズを任意に設定できるので、選択する発音チャンネル数にかかわらず、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止する。
【0055】
また、前記楽音データの入力から当該楽音データに対応する波形データの発音までの遅延時間を任意に設定する遅延設定手順をさらに有し、前記エリア分割手順は、前記遅延設定手順によって設定された遅延時間に応じて記憶手段の所定のデータサイズのエリアを任意のデータサイズの複数のエリアに分割する。したがって、作成する波形データのデータサイズを設定した遅延時間に応じて任意に設定できるので、楽音データの入力形態によって作成する波形データのデータサイズを任意に設定できるので、実情に適応した楽音発生ができる。例えば、手動演奏による入力である場合には遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止し、自動演奏による入力である場合には、発音チャンネル数を増加する等の対応が可能になる。
【0056】
【発明の効果】
本発明によれば、入力される楽音データに応じて生成した波形データを記憶する記憶手段の所定のデータサイズのエリアを、任意のデータサイズの複数のエリアに分割し、生成した波形データを書き込みが指定されたエリアに書き込み、読み出しが指定されたエリアから波形データを読み出して出力する。したがって、楽音データの入力から発音までの遅延時間を小さくして違和感を解消するとともに、音切れの発生を防止する。
【図面の簡単な説明】
【図1】実施形態における楽音発生装置のシステム構成を示すブロック図。
【図2】図1のメモリにおける波形データの推移の状態を示す図。
【図3】図1のメモリにおける波形データの推移の状態を示す図。
【図4】図1のCPUのメインフローチャート。
【図5】図4のメインフローチャートにおける設定処理のフローチャート。
【図6】図5に続く設定処理のフローチャート。
【図7】図6に続く設定処理のフローチャート。
【図8】図7に続く設定処理のフローチャート。
【図9】図4のメインフローチャートにおける生成処理のフローチャート。
【図10】図9に続く生成処理のフローチャート。
【図11】図10に続く生成処理のフローチャート。
【図12】図11に続く生成処理のフローチャート。
【符号の説明】
1 CPU
5 サウンドカード
7 メモリ
8 MIDIインターフェース
12 ハードディスク
13 他の電子機器
Claims (8)
- 所定の記憶手段の所定のデータサイズのエリアを複数の分割エリアに分割するエリア分割手段と、
前記記憶手段の各分割エリアを指定するエリア指定手段と、
入力された楽音データに応じて波形データを生成するデータ生成手段と、
このデータ生成手段によって生成された波形データを前記記憶手段における前記エリア指定手段によって書き込みが指定された分割エリアに書き込むデータ書込手段と、
前記記憶手段において前記エリア指定手段によって読み出しが指定された分割エリアから記憶された波形データを読み出して出力するデータ読出手段と、
を備えた楽音発生装置において、
前記エリア分割手段は、前記データ生成手段が波形データ生成をはじめてから前記データ読み出し手段が記憶された波形データを読み出して出力し終えるまでに要した時間を測定する時間測定手段を有し、当該時間が所定値を越えていた場合には前記分割エリアのサイズを増加させることを特徴とする楽音発生装置。 - 前記時間測定手段による時間測定は演奏に先立つ設定処理において行われることを特徴とする請求項1に記載の楽音発生装置。
- 前記時間測定手段による時間測定は実際の楽音発生状態よりも厳しい測定条件においてなされることを特徴とする請求項1に記載の楽音発生装置。
- 前記測定条件は実際の楽音発生状態よりもポリ数を増やした状態であることを特徴とする請求項3に記載の楽音発生装置。
- 所定の記憶手段の所定のデータサイズのエリアを複数の分割エリアに分割するエリア分割手順と、
前記記憶手段の各エリアを指定するエリア指定手順と、入力された楽音データに応じて波形データを生成するデータ生成手順と、
このデータ生成手順によって生成された波形データを前記記憶手段における前記エリア指定手順によって書き込みが指定された分割エリアに書き込むデータ書込手順と、
前記記憶手段において前記エリア指定手順によって読み出しが指定された分割エリアから記憶された波形データを読み出して出力するデータ読出手順と、
を実行し、
前記エリア分割手順は、前記データ生成手順が波形データ生成をはじめてから前記データ読み出し手順が記憶された波形データを読み出して出力し終えるまでに要した時間を測定する時間測定手順を含み、当該時間が所定値を越えていた場合には前記分割エリアのサイズを増加させることを特徴とする楽音発生処理のプログラムを記録した記録媒体。 - 前記時間測定手順による時間測定は測定モードおいて行われることを特徴とする請求項5に記載の楽音発生処理のプログラムを記録した記録媒体。
- 前記時間測定手順による時間測定は実際の楽音発生状態よりも厳しい測定条件においてなされることを特徴とする請求項5に記載の楽音発生処理のプログラムを記録した記録媒体。
- 前記測定条件は実際の楽音発生状態よりもポリ数を増やした状態であることを特徴とする請求項5に記載の楽音発生処理のプログラムを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34663298A JP3873160B2 (ja) | 1998-11-20 | 1998-11-20 | 楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34663298A JP3873160B2 (ja) | 1998-11-20 | 1998-11-20 | 楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000155585A JP2000155585A (ja) | 2000-06-06 |
JP3873160B2 true JP3873160B2 (ja) | 2007-01-24 |
Family
ID=18384766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34663298A Expired - Fee Related JP3873160B2 (ja) | 1998-11-20 | 1998-11-20 | 楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3873160B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102057356A (zh) | 2008-06-11 | 2011-05-11 | 高通股份有限公司 | 用于测量任务负载的方法和系统 |
-
1998
- 1998-11-20 JP JP34663298A patent/JP3873160B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000155585A (ja) | 2000-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4655812B2 (ja) | 楽音発生装置、及びプログラム | |
US7420115B2 (en) | Memory access controller for musical sound generating system | |
JP2904088B2 (ja) | 楽音生成方法および装置 | |
US7502657B2 (en) | Information processing apparatus, information processing method, and storage medium | |
TW314614B (ja) | ||
CN1591564B (zh) | 形成乐音波形的方法和装置 | |
US6473847B1 (en) | Memory management method for use in computer system | |
JP2924745B2 (ja) | 楽音発生装置及び方法 | |
TW300298B (ja) | ||
JPH09325778A (ja) | 楽音発生方法 | |
JP3873160B2 (ja) | 楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体 | |
JP3661556B2 (ja) | 楽音信号処理装置 | |
JP3918817B2 (ja) | 楽音生成装置 | |
JP2000276172A (ja) | 楽音生成装置および記憶媒体 | |
US20110219941A1 (en) | Musical tone signal generating apparatus | |
JP5510813B2 (ja) | 楽音生成装置 | |
JP3572847B2 (ja) | コンピュータソフトウェアを用いた音源システム及び方法 | |
JP5510815B2 (ja) | 楽音生成装置 | |
JP3003559B2 (ja) | 楽音生成方法 | |
JPH11288285A (ja) | 楽音発生方法及び装置 | |
JP3141789B2 (ja) | コンピュータソフトウェアを用いた音源システム | |
JP3603638B2 (ja) | 楽音発生方法 | |
JP7159583B2 (ja) | 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器 | |
JP3164096B2 (ja) | 楽音発生方法及び装置 | |
JP3723973B2 (ja) | 音源装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050530 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060202 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060222 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060626 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060704 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060901 |
|
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: 20060926 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061009 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R154 | Certificate of patent or utility model (reissue) |
Free format text: JAPANESE INTERMEDIATE CODE: R154 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101102 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111102 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121102 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131102 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |