JP3799711B2 - 楽音発生方法および楽音発生装置 - Google Patents
楽音発生方法および楽音発生装置 Download PDFInfo
- Publication number
- JP3799711B2 JP3799711B2 JP02574397A JP2574397A JP3799711B2 JP 3799711 B2 JP3799711 B2 JP 3799711B2 JP 02574397 A JP02574397 A JP 02574397A JP 2574397 A JP2574397 A JP 2574397A JP 3799711 B2 JP3799711 B2 JP 3799711B2
- Authority
- JP
- Japan
- Prior art keywords
- performance information
- waveform data
- performance
- generated
- calculation
- 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
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H1/00—Details of electrophonic musical instruments
- G10H1/18—Selecting circuits
- G10H1/22—Selecting circuits for suppressing tones; Preference networks
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H7/00—Instruments in which the tones are synthesised from a data store, e.g. computer organs
- G10H7/002—Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H7/00—Instruments in which the tones are synthesised from a data store, e.g. computer organs
- G10H7/002—Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
- G10H7/006—Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof using two or more algorithms of different types to generate tones, e.g. according to tone color or to processor workload
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
本発明は、演算により波形データを生成するようにした楽音発生方法および楽音発生装置に関するものである。
【0002】
【従来の技術】
従来の楽音発生装置は、MIDI(Musical Instrument Digital Interface)、鍵盤、あるいはシーケンサ等からの演奏情報を入力する演奏入力部と、楽音波形を生成する音源部と、入力された演奏情報に応じて前記音源部を制御するマイクロプロセッサ(CPU)等から構成されていた。CPUは、入力された演奏情報に応じて、チャンネルアサイン、パラメータ変換等の音源ドライバ処理を実行し、音源部の割り当てたチャンネルに変換した音源パラメータ情報と発音開始指示(ノートオン)情報を供給する。音源部は、LSI(Large Scale Integrated circuit)等の電子回路(ハードウェア)で構成され、供給された音源パラメータ情報に基づいて楽音波形を生成するようにしている。
【0003】
このため、楽音発生装置は楽音を生成するための専用機器となってしまい、楽音を生成する時には専用の楽音発生装置を用意する必要があった。
そこで、これを解決するために、CPUによりアプリケーションプログラムを実行し、アプリケーションプログラムに基づいて楽音を生成するソフトウェア音源装置が提案されている。このソフトウェア音源装置は、楽音を生成するアプリケーションプログラムのほかに、ゲーム等の他のアプリケーションプログラムを実行させることができる汎用の演算処理装置により実現することができるものである。
【0004】
このようなソフトウェア音源を備える楽音発生装置の概略構成を図7に示す。図7において、中央処理装置(CPU)100は、発音指示等が行われた際に、音源プログラム101に従って演算を行うことにより、波形データを生成してバッファ102に一時格納する。デジタル/アナログ変換器(D/A)103は、所定のD/A変換タイミングごとにバッファ102から、波形データを読み出してアナログ波形信号に変換する。変換されたアナログ波形信号は、サウンドシステム104に供給されて楽音が発音されるようになる。
【0005】
【発明が解決しようとする課題】
しかしながら、ソフトウェア音源を備える楽音発生装置の場合、発音される楽音の同時発音数は、CPU100の演算速度と、1サンプルデータを生成するための演算量およびサンプリング周波数fsとに関係がある。たとえば、サンプリング周波数fs=48kHzとすると、1サンプル周期は20.8msecとなり、このサンプル周期内において必要とするすべての波形データの演算を行う必要がある。しかし、実際にはオペレーションシステム(OS)が使用する時間や、他のアプリケーションが動作中の場合は、そのアプリケーションを実行する時間が必要であり、20.8msecの時間をすべて使用することはできない。
【0006】
しかも、モノフォニックの場合は1サンプル周期において、1サンプルの波形データの演算を行えばよいが、ポリフォニックの場合は、割り当てられた時間内において発音されているチャンネル数と同数とされたサンプル数の波形データの演算を行う必要がある。このようにポリフォニックの場合は、1サンプルの波形データを生成するのに割り当てられる演算時間が減少するようになる。
ところが、一般には複数の発音チャンネルを使用して演奏されるため、1発音チャンネルに割り当てられる演算時間が短縮されるようになり、その演算時間内で演算を行うには、単純な演算しか行うことができず、音質の向上を望めないという問題点があった。
また、ソフトウェア音源における音源アルゴリズムを開発する際には、モノフォニックではなくポリフォニックで楽音を確認したい場合がある。しかしながら、音源アルゴリズムを複雑にすると割り当てられた演算時間内では複数の発音チャンネルの演算を終了することができず、ポリフォニックでの確認ができないおそれが生じるという問題が生じる。
【0007】
そこで、本発明は演奏時の処理時間内では複数の発音チャンネルの演算を終了することができない場合でも、再生時にポリフォニックの楽音を発生することができるようにした楽音発生方法および楽音発生装置を提供することを目的としている。
【0008】
【課題を解決するための手段】
前記目的を達成するために、本発明の楽音発生方法は、演奏情報に基づいて演算により波形データを生成して出力する演算ステップと、該演算ステップにより得られた前記波形データを波形メモリに記憶する波形データ記憶ステップとを少なくとも有する第1の演奏ステップと、前記演奏情報に基づいて前記波形メモリから、該演奏情報に対応する波形データを読み出す読み出しステップと、前記演奏情報に対応する波形データの一部が演算生成されずに前記波形メモリに記憶されていない場合に、演算生成されなかった該演奏情報に対応する波形データを演算生成して出力する再生演算ステップとを少なくとも有する第2の演奏ステップとを備えるようにしている。
【0009】
次に、前記目的を達成することのできる本発明の楽音発生装置は、演奏情報を発生する演奏情報発生部と、該演奏情報発生部で発生された前記演奏情報に基づいて演算により波形データを生成する演算部と、該演算部の演算により得られた前記波形データが記憶される波形メモリとを少なくとも備え、前記演奏情報発生部から演奏情報が発生されたときに、前記演算部により波形データを生成して該波形データを前記波形メモリに記憶する第1の演奏ステップが実行され、該第1の演奏ステップの終了後に、前記演奏情報を読み出して前記波形メモリから、該演奏情報に対応する波形データを読み出すと共に、前記演奏情報に対応する波形データの全てが演算生成されずに前記波形メモリに一部しか記憶されていない場合に、該演奏情報に対応する波形データを前記演算部により演算生成する第2の演奏ステップが実行されることにより、前記演奏情報に基づく複数の音の同時発生が指示されたときに、前記第1の演奏ステップにおいて指示された複数の音の一部が発音できなくても、前記第2の演奏ステップにおいて指示された複数の音を発音できるようにしている。
【0010】
また、前記楽音発生装置において、前記第2の演奏ステップにおいて、前記演算部が演算生成した波形データを前記波形メモリに記憶することにより、前記演奏情報に基づく複数の音の同時発生が指示されたときに、前記第2の演奏ステップを実行してもすべての音の発生ができない場合には、前記第2の演奏ステップを繰り返し実行することにより、前記演奏情報で指示されたすべての音を発音するようにしている。
さらに、前記演奏情報に基づく同時発音数と、波形データに基づく同時発音数とが一致しないときは、出力をミュートして音を出さないようにしてもよい。
さらにまた、あらかじめ前記演奏情報を読み出して、前記演算部により波形データを生成して該波形データを前記波形メモリに記憶する処理を、ミュートした状態で前記演奏情報に基づく同時発音数と波形データに基づく同時発音数が同一になるまで行うことにより、前記演奏情報の発音指示が行われたときに、前記演奏情報に指示されたすべての音を発音できるようにしてもよい。
【0011】
このような本発明によれば、演奏時の処理において演算生成されたすべてのチャンネルの波形データを波形メモリに記憶しておき、再生時の処理において、演奏情報に対応する波形データが波形メモリに記憶されている場合は、波形メモリからその波形データを読み出し、演奏情報に対応する波形データが波形メモリに記憶されていない、すなわち、波形データが演奏時の処理において演算生成されていない場合は、再生時の処理において波形データを演算生成するようにしている。
したがって、演奏情報により複数の音の同時発音が指示されて、演奏時の処理においてすべての音の波形データを演算生成することができなかった場合でも、再生時の処理を実行することにより、演奏時の処理において演算生成された波形データの音に加えて、再生時の処理において演算生成された波形データの音を発音することができるようになり、発音が指示された複数の発音チャンネルの楽音を同時に発音することが可能となる。
【0012】
【発明の実施の形態】
本発明の楽音発生方法を実行することのできる本発明の楽音発生装置の実施の形態の構成例を示すブロック図を図1に示す。
この図において、1はプログラムメモリ5に記憶されているプログラムを実行することにより、楽音波形データを演算により生成したり、エフェクトが与えられた楽音波形データの演算処理や制御を行う処理部であり、中央処理装置(CPU)により構成される。なお、処理部1は、楽音波形データの演算生成やエフェクトが与えられた楽音波形データの演算処理等を行う演算部2と、演算部2における演算を演奏情報等により制御する制御部3とより構成されている。
また、4は演算部2が演算により生成した楽音波形データが書き込まれると共に、読み出された楽音波形データを演算部2に供給する波形メモリであり、その書き込みおよび読み出しは制御部3により制御されている。
【0013】
5は処理部1が実行するプログラムを格納しているプログラムメモリであり、6は演奏情報発生部7から発生されたすべての演奏情報が書き込まれる演奏情報記憶部であり、再生時の処理において記憶されている演奏情報が制御部3の制御の基で読み出されて、その演奏情報に基づいた処理が演算部2で行われるように演算部2に供給される。
さらに、7は鍵盤やシーケンサ、あるいはMIDI入力部等の演奏情報発生部である。8は演算部2により生成された楽音波形データが一時格納されるバッファである。9はデジタル・アナログ変換器(DAC)であり、サンプリング周期ごとにバッファ8にデータを要求して、バッファ8から供給された楽音波形データをアナログ楽音波形信号に変換してサウンドシステム10に供給している。
【0014】
このように構成された楽音発生装置の動作を説明すると、演奏情報発生部7から制御部3に演奏情報が入力されると、演奏時の処理が開始され、その演奏情報が演奏情報記憶部6に記憶されると共に、演奏情報に基づいて演算部2が制御部3により制御される。例えば、演奏情報がノートオンイベントの際には、演算部2において演算を行うことにより所定サンプル数の波形データを生成する処理が行われるようになる。この際に、演奏情報により同時に複数の発音が指示されている場合は、割り当てられた演算時間内において生成可能なサンプル数の波形データの生成演算が実行され、演算時間内においては生成することのできない波形データの生成演算は行わないようにされる。従って、複数の発音が指示されていてもすべての発音指示に対応する波形データの生成が行われない場合もある。
【0015】
このようにして演算部2において生成された波形データは、バッファ8に送られて格納されると共に、波形メモリ4に供給されて、波形メモリ4にも記憶されるようになる。バッファ8からは、デジタル・アナログコンバータ(DAC)9の要求により波形データが読み出され、読み出された波形データはDAC9においてサンプリング周期毎にアナログ信号に変換されてサウンドシステム10に供給され、サウンドシステム10から発音されるようになる。
以上の演奏時の処理は、演奏情報発生部7が演奏を継続している際には繰り返し行われ、演奏が終了したときには、演奏情報のすべてが演奏情報記憶部6に記憶されるようになると共に、演算部2において生成された波形データのすべてが波形メモリ4に記憶されるようになる。
【0016】
このような状態において、再生時の処理が引き続いて行われると、演奏情報記憶部6から演奏情報が順次読み出され処理部1に供給されるようになる。そして、処理部1においては波形メモリ4に記憶されている波形データを利用して波形データの生成等の処理が行われる。たとえば、演奏情報がノートオンイベントの際には、演奏情報に対応する波形データがすでに波形メモリ4に記憶されているか否かを判断し、記憶されていると判断した場合には当該波形データを波形メモリ4から読み出してバッファ8に送る。また、波形データが波形メモリ4に記憶されていない場合には、演算部2において波形データの生成処理を行い、生成された波形データをバッファ8に送るようにする。なお、この波形データの生成処理では、割り当てられた演算時間内において生成可能なサンプル数の波形データの生成演算が実行され、演算時間内においては生成することのできない波形データの生成演算は行わないようにされる。
このように、再生時の処理においては、演奏時に波形データの生成が行われなかった演奏情報に対する波形データの生成演算が実行される。
【0017】
従って、再生時の処理では演奏時に波形データの生成が行われた演奏情報に対しては、波形メモリ4から波形データを読み出す処理だけを行えばよいことから、処理量が軽くなる。そして、その結果生じた演算余裕時間を演奏時に波形データの生成が行われなかった演奏情報用の波形データ生成処理に割り当てるようにしている。この結果、複数の発音の指示が行われた際に、再生時において複数の発音に対応する波形データの生成を行うことができ、複数の発音を行うことができるようになる。
なお、再生時の処理において指示されている複数の発音に対応するすべての波形データの生成を終了することができない場合は、2回目の再生時の処理を行い、この再生時の処理において、生成されていない波形データの生成処理を実行するようにすればよい。すなわち、指示されている複数の発音に対応するすべての波形データの生成が終了するまで再生処理を繰り返すようにする。
従って、最終の再生時の処理が実行されると指示されている複数の発音に対応するすべての波形データの生成が終了することになり、この際には指示されている複数の発音をすべて行えるようになる。
【0018】
このような処理部1の実行する再生時の処理における演算部2の動作をハードウェア的に図2に示す。図2において2−1は、波形メモリ4から読み出された複数チャンネル分の楽音波形データと、音源演算部2−2により演算された楽音波形データとを混合する加算器である。この加算器2−1よりの複数チャンネル分の楽音波形データはバッファ8へ供給されて一時記憶される。
音源演算部2−2は、供給された演奏情報に基づいてFM音源演算、あるいは物理モデル音源演算を実行して楽音波形データを生成したり、楽音波形データにエフェクトを与える演算処理を実行したりして、処理された楽音波形データを加算器2−1に供給している。
ただし、実際には演算部2は時分割にて各チャンネルの演算を実行しており、1チャンネルの楽音波形データが生成されるごとに、すでに演算された他のチャンネルの楽音波形データに足し込むようにして加算を行っている。
【0019】
次に、このように構成された本発明の楽音発生装置の動作を図3に示すフローチャートを参照して詳細に説明する。
図3に示すフローチャートは、所定周期毎に起動されて実行される処理部1におけるメインルーチンのフローチャートであり、スタートされるとステップS10にて演奏が開始されたか否かが判定される。演奏開始されていないと判定された(NO)場合は、演奏開始されるまでこの処理が循環して行われる。そして、演奏開始されたと判定された(YES)場合は、ステップS11にて後述する演奏時の処理が実行される。この演奏時の処理は、ステップS12にて演奏が終了したと判定されるまで繰り返し実行される。
【0020】
そして、演奏が終了されたと判定されると、ステップS12からステップS13に進み後述する再生時の処理が行われるようになる。この再生時の処理は、発音が指示されているすべての楽音の波形データが生成されるまで繰り返し行われる。ここで、発音が指示されているすべての楽音の波形データが生成されたか否かをフラグ(flag)により示すようにしている。すなわち、フラグが”1”の場合は、未だ発音が指示されているすべての楽音の波形データが生成されていない時であり、フラグが”0”の場合は、発音が指示されているすべての楽音の波形データが生成されている時である。したがって、フラグが”0”になったとステップS14にて判定されたときは、発音が指示されているすべての楽音の波形データの生成が終了しており、この時はステップS14からステップS15に進むようになる。
そして、ステップS15にて表示パネルに「全チャンネル発音」等の表示を行い、メインルーチンは終了する。
【0021】
次に、前記ステップS11にて実行される演奏時の処理を、図4に示す演奏時処理のフローチャートと、図1に示す楽音発生装置を参照しながら説明する。
演奏情報発生部7から各種演奏情報が発生されると、演奏時の処理が起動され、ステップS21にてこの演奏情報がその発生時を示す時間データと共に演奏情報記憶部6に記憶される。ついで、ステップS22にて取り込まれた演奏情報がノートオンイベントか否かが判定される。ここで、ノートオンイベントと判定された(YES)場合は、ステップS23に進み発音数contが演算による最大同時発音数Nを越えているか否かが判定される。この発音数contは現時点での演算時の処理において演算中(発音中)の発音数を示しており、そのデフォルト値は”0”とされる。従って、この場合には発音数contは”0”とされているのでYESと判定されてステップS24に進む。
【0022】
ステップS24では発音数contが1だけインクリメントされ、ステップS25においてノートオンイベントに基づいて演算部2により音源演算が実行されて、生成された波形データが外部にあるバッファ8に出力される。そして、ステップS26にて波形メモリ4に生成された波形データが記憶されて、リターンされる。
ここで、例えば演算による最大同時発音数Nが「2」であるときに、演奏情報発生部7から同時に発音する3つのノートオンイベントが発生されたとする。この時は、上記説明したように1つ目のノートオンイベントが取り込まれて、その波形データがステップS25にて演算により生成され、バッファ8に記憶されると共に、波形メモリ4に記憶される。この時、発音数contは”1”となる。そして、図3に示すステップS12にリターンするが、演奏は終了していないので、再び演奏時の処理が起動されて、2つ目のノートオンイベントが取り込まれて、その波形データがステップS25にて演算部2により演算により生成され、バッファ8に記憶されると共に、波形メモリ4に記憶される。この時、発音数contは”2”となる。
【0023】
さらに、図3に示すステップS12にリターンするが、演奏は終了していないので、再び演奏時の処理が起動されて、3つ目のノートオンイベントが取り込まれる。しかしながら、演算による最大同時発音数Nが「2」とされているのでステップS23にてNOと判定されて、波形データが演算生成されることなくそのままリターンされるようになる。
すなわち、演奏時の処理においては2つの発音数の楽音が発音されるようになる。
【0024】
ところで、ステップS22にてノートオンイベントと判定されなかった場合は、ステップS27に分岐してノートオフイベントか否かが判定される。そして、ノートオフイベントと判定される(YES)と、そのノートオンイベントが演算中の音に対するものであるか否かがステップS28にて判定される。ステップS28にて演算中の音と判定される(YES)とステップS29に進み、当該演算中の音にノートオフ処理が実行されてリターンされ、演算中の音でないと判定される(NO)と、ステップS29の処理がスキップされてリターンされる。
【0025】
さらにまた、ステップS27にてノートオフイベントと判定されなかった(NO)場合は、ステップS30に分岐して個別の発音チャンネルのデータか発音チャンネル共通のデータかが判定される。そして、個別のデータと判定される(YES)と、その個別のデータが演算中の音に対するものか否かがステップS31にて判定される。ステップS31にて演算中の音と判定される(YES)と、ステップS32に進み当該演算中の音に個別のデータを反映させるように音源演算部(演算部2)に個別のデータが送られてリターンされる。演算部2は送られた個別のデータに基づいて波形データを生成するようになる。また、ステップS31にて演算中の音でないと判定される(NO)と、ステップS32の処理がスキップされてリターンされる。
【0026】
さらにまた、ステップS30にて共通のデータと判定される(NO)とステップS33に分岐して、共通のデータが音源演算部(演算部2)に送られて、演算中の全ての音に反映されるようになる。
なお、音源演算部は演算部2において実行されるソフトウェア音源であり、ハードウェア表現を行うと図6に示すように、供給された演奏情報に基づいて波形データを演算生成し、生成された波形データを波形メモリ4およびバッファ8に送るものとして表せるものである。
【0027】
次に、前記ステップS13にて実行される再生時の処理を、図5に示す再生時処理のフローチャートと、図1に示す楽音発生装置を参照しながら説明する。
演奏が終了したとき、あるいは、フラグ(flag)が「1」の時に再生時の処理が起動され、ステップS40にてフラグが「0」にリセットされる。ついで、ステップS41にて、演奏情報記憶部6に記憶されている発音時刻に達した演奏情報が順次1つづつ読み出され、その演奏情報がノートオンイベントが否かがステップS42にて判定される。そして、ノートオンイベントと判定される(YES)とステップS43にて、当該ノートオンイベントの演奏情報に対応した波形データがすでに波形メモリ4に記憶されているか否かが判定される。この時、演奏時の処理により波形データが生成されて波形メモリ4に記憶されている場合は、YESと判定されてステップS44に進み、その波形データの波形メモリ4からの読み出しが指示される。
【0028】
ついで、ステップS57にて演奏情報記憶部6から全演奏情報の読み出しが終了したか否かが判定され、読み出しが終了していればリターンされ、読み出しが終了していなければ、前記ステップS41に戻り、ステップS41以降の処理が再度実行される。
【0029】
また、演算による最大発音数N以上の音の発生が指示されて全ての波形データの生成が行われていない場合、すなわち、前述した同時に発音する3つのノートオンイベントが発生された場合における3つ目のノートオンイベントのように、対応する波形データの生成が行われていない場合は、ステップS43にてNOと判定されてステップS45に分岐するようになる。そして、ステップS45にて発音数contが演算による最大同時発音数Nを越えているか否かが判定される。この発音数contは現時点での演算時の処理において演算中(発音中)の発音数を示しており、そのデフォルト値は”0”とされる。再生時の処理が開始された直後には発音数contはデフォルト値である”0”とされているのでYESと判定されてステップS46に進む。
【0030】
ステップS46では発音数contが1だけインクリメントされてステップS47に進み、ステップS47において当該ノートオンイベントに基づいて演算部2により音源演算が実行されて、生成された波形データが外部にあるバッファ8に出力される。そして、ステップS48にて波形メモリ4に生成された波形データが記憶されて、ステップS57に進む。ステップS57では演奏情報記憶部6から全演奏情報の読み出しが終了したか否かが判定され、読み出しが終了していればリターンされ、読み出しが終了していなければ、前記ステップS41に戻り、ステップS41以降の処理が再度実行される。
また、ステップS45にて発音数contが演算による最大同時発音数Nを越えると判定された場合は、ステップS49に分岐してフラグが「1」にセットされてステップS57に進むようになる。
【0031】
ここで、例えば演算による最大同時発音数Nが「2」であるときに、演奏時に演奏情報発生部7から同時に発音する3つのノートオンイベントが発生されていたとする。このときは前述したように1つ目と2つ目のノートオンイベントに対応する音の波形データは演奏時の処理により波形メモリ4に記憶されている。従って、演奏情報記憶部6から読み出された1つ目のノートオンイベントと2つ目のノートオンイベントに対応する波形データは、繰り返し実行される前記したステップS44にて波形メモリ4から読み出され、3つ目のノートオンイベントの演奏情報が演奏情報記憶部6から読み出されたときは、前記ステップS43にてNOと判定されステップS47にて、当該ノートオンイベントに対応する波形データの生成が行われて、バッファ8および波形メモリ4に記憶されるようになる。
【0032】
これにより、再生時の処理においては、演奏時に指示された3つの同時に発音する音を同時に3つ発音することができるようになる。なお、この例では演算による同時最大発音数Nを「2」としたが、本発明では「2」に限定されるものではなく、同時最大発音数Nを「3」以上とすることができる。
ところで、例えば、演算による同時最大発音数Nが「2」とされているときに、演奏時に4つの音の同時発音が指示されたときは、1つ目と2つ目のノートオンイベントに対応する音の波形データは演奏時の処理により演算生成されて波形メモリ4に記憶され、3つ目のノートオンイベントと4つ目のノートオンイベントに対応する音の波形データは再生時の処理により演算生成されてバッファ8および波形メモリ4に記憶されるようになる。従って、再生時の処理において指示された4つの音の同時発音を可能とすることができる。
【0033】
さらに、演奏時に5つの音の同時発音が指示されたときは、1つ目と2つ目のノートオンイベントに対応する音の波形データは演奏時の処理により演算生成されて波形メモリ4に記憶され、3つ目のノートオンイベントと4つ目のノートオンイベントに対応する音の波形データは再生時の処理により演算生成されてバッファ8および波形メモリ4に記憶されるようになる。しかしながら、5つ目のノートオンイベントが読み出されたときには、ステップS45にてNOと判定されるため、その波形データの生成を行うことができない。ただし、フラグは「1」にセットされて、リターンされる。従って、図3に示すステップS14にリターンされたときに、YESと判定されて再び再生時の処理が実行されるようになる。この場合には、発音数contはデフォルト値となっているため、5つ目のノートオンイベントが演奏情報記憶部6から読み出されたときに、ステップS47において当該ノートオンイベントの波形データが演算生成されるようになる。
これにより、2回目に実行される再生時の処理において指示された5つの音の同時発音を可能とすることができるようになり、再生時の処理を複数回実行することにより、多数の音の同時発音を可能とすることができる。
【0034】
また、ステップS42にてノートオンイベントでないと判定された場合は、ステップS50に分岐するが、ステップS50ないしステップS56の処理は、前記した図4に示す演奏時の処理におけるステップS27ないしステップS33と同様であるので、ここではその説明は省略するが、ステップS50ないしステップS56の処理では、ノートオフ処理、発音チャンネル個別の処理や、発音チャンネル共通の処理が実行される。
なお、本発明の楽音発生方法および楽音発生装置においては、楽音発生演算処理の空き時間を利用して他のアプリケーションソフトから依頼された発音指示を含む処理を行うことができる。他のアプリケーションソフトとしては、ゲームソフト、通信ソフト、事務処理ソフト等がある。
【0035】
さらに、以上説明した本発明において、演奏情報発生部7から指示される同時発音数と実際に再生される音の数(波形メモリ読み出しによる発音数と演算による発音数の合計)が一致しないときは、再生音をサウンドシステム10から放音したときにユーザーが違和感を持つおそれがある。そこで、同時発音数と実際に再生される音の数が一致しない場合には、サウンドシステム10の出力をミュートして楽音を出さないようにしてもよい。
また、あらかじめ演奏情報がわかっている場合には、これをあらかじめ読み出して音をミュートした状態で本発明を実行させるようにし、この際に、再生する同時発音数と発音指示する同時発音数が一致できるところまで処理を進めるようにする。このような前処理をあらかじめ実行しておくことにより、ユーザーの操作に基づいてアプリケーションソフト等から楽音を出力するよう指示されたときには、指示された同時発音数を満足する状態で再生を行うことができるようになる。
【0036】
以上においては、前記図1に示す楽音発生装置にて実行されるプログラムとして本発明の楽音発生方法の説明を行った。また、本発明の楽音発生方法を記録媒体に記録しておき、記録媒体からWindows (米マイクロソフト社のパソコン用OS)やその他のオペレーティングシステムの動作する汎用コンピュータ上にインストールすることにより、1つのアプリケーションプログラムとして、他のアプリケーションプログラムと並列実行させるようにしてもよい。
【0037】
【発明の効果】
本発明は以上のように、演奏時の処理において演算生成されたすべてのチャンネルの波形データを波形メモリに記憶しておき、再生時の処理において、演奏情報に対応する波形データが波形メモリに記憶されている場合は、波形メモリからその波形データを読み出し、演奏情報に対応する波形データが波形メモリに記憶されていない、すなわち、波形データが演奏時の処理において演算生成されていない場合は、再生時の処理において波形データを演算生成するようにしている。したがって、演奏情報により複数の音の同時発音が指示されて、演奏時の処理においてすべての音の波形データを演算生成することができなかった場合でも、再生時の処理を実行することにより、演奏時の処理において演算生成された波形データの音に加えて、再生時の処理において演算生成された波形データの音を発音することができるようになり、発音が指示された複数の発音チャンネルの楽音を同時に発音することが可能となる。
【図面の簡単な説明】
【図1】 本発明の楽音発生装置の一実施例の構成を示すブロック図である。
【図2】 本発明の音源演算部の動作を説明するための図である。
【図3】 本発明の楽音発生方法におけるメインルーチンのフローチャートである。
【図4】 本発明の楽音発生方法における演奏時の処理のフローチャートである。
【図5】 本発明の楽音発生方法における再生時の処理のフローチャートである。
【図6】 本発明の楽音発生方法における音源演算部をハートウェア的に示す図である。
【図7】 従来の楽音発生装置の構成の一例を示すブロック図である。
【符号の説明】
1 処理部、2 演算部、3 制御部、4 波形メモリ、5 プログラムメモリ、6 演奏情報記憶部、7 演奏情報発生部、8 バッファ、9 DAC、10サウンドシステム
Claims (5)
- 演奏情報に基づいて演算により波形データを生成して出力する演算ステップと、
該演算ステップにより得られた前記波形データを波形メモリに記憶する波形データ記憶ステップと、
を少なくとも有する第1の演奏ステップと、
前記演奏情報に基づいて前記波形メモリから、該演奏情報に対応する波形データを読み出す読み出しステップと、
前記演奏情報に対応する波形データの一部が演算生成されずに前記波形メモリに記憶されていない場合に、演算生成されなかった該演奏情報に対応する波形データを演算生成して出力する再生演算ステップと、
を少なくとも有する第2の演奏ステップと、
を備えるようにしたことを特徴とする楽音発生方法。 - 演奏情報を発生する演奏情報発生部と、
該演奏情報発生部で発生された前記演奏情報に基づいて演算により波形データを生成する演算部と、
該演算部の演算により得られた前記波形データが記憶される波形メモリとを少なくとも備え、
前記演奏情報発生部から演奏情報が発生されたときに、前記演算部により波形データを生成して該波形データを前記波形メモリに記憶する第1の演奏ステップが実行され、
該第1の演奏ステップの終了後に、前記演奏情報を読み出して前記波形メモリから、該演奏情報に対応する波形データを読み出すと共に、前記演奏情報に対応する波形データの全てが演算生成されずに前記波形メモリに一部しか記憶されていない場合に、該演奏情報に対応する波形データを前記演算部により演算生成する第2の演奏ステップが実行されることにより、
前記演奏情報に基づく複数の音の同時発生が指示されたときに、前記第1の演奏ステップにおいて指示された複数の音の一部が発音できなくても、前記第2の演奏ステップにおいて指示された複数の音を発音できるようにしたことを特徴とする楽音発生装置。 - 前記第2の演奏ステップにおいて、前記演算部が演算生成した波形データを前記波形メモリに記憶することにより、前記演奏情報に基づく複数の音の同時発生が指示されたときに、前記第2の演奏ステップを実行してもすべての音の発生ができない場合には、前記第2の演奏ステップを繰り返し実行することにより、前記演奏情報で指示されたすべての音を発音するようにしたことを特徴とする請求項2記載の楽音発生装置。
- 前記演奏情報に基づく同時発音数と、波形データに基づく同時発音数とが一致しないときは、出力をミュートして音を出さないようにしたことを特徴とする請求項2記載の楽音発生装置。
- あらかじめ前記演奏情報を読み出して、前記演算部により波形データを生成して該波形データを前記波形メモリに記憶する処理を、ミュートした状態で前記演奏情報に基づく同時発音数と波形データに基づく同時発音数が同一になるまで行うことにより、前記演奏情報の発音指示が行われたときに、前記演奏情報に指示されたすべての音を発音できるようにしたことを特徴とする請求項2記載の楽音発生装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02574397A JP3799711B2 (ja) | 1997-01-27 | 1997-01-27 | 楽音発生方法および楽音発生装置 |
US09/010,643 US5918301A (en) | 1997-01-27 | 1998-01-22 | Music apparatus with complete replay session after incomplete play session |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02574397A JP3799711B2 (ja) | 1997-01-27 | 1997-01-27 | 楽音発生方法および楽音発生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10207465A JPH10207465A (ja) | 1998-08-07 |
JP3799711B2 true JP3799711B2 (ja) | 2006-07-19 |
Family
ID=12174316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02574397A Expired - Fee Related JP3799711B2 (ja) | 1997-01-27 | 1997-01-27 | 楽音発生方法および楽音発生装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5918301A (ja) |
JP (1) | JP3799711B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000029462A (ja) * | 1998-05-18 | 2000-01-28 | Sony Corp | 情報処理装置および情報処理方法、並びに提供媒体 |
JP3675362B2 (ja) * | 2000-08-18 | 2005-07-27 | ヤマハ株式会社 | 楽音生成装置および携帯端末装置 |
JP4039851B2 (ja) * | 2001-12-07 | 2008-01-30 | 株式会社エヌ・ティ・ティ・ドコモ | 移動通信端末、アプリケーションプログラムの実行状態制御方法、アプリケーションプログラム、及びアプリケーションプログラムを記録した記録 |
JP2007316357A (ja) * | 2006-05-26 | 2007-12-06 | Casio Comput Co Ltd | 楽音発生装置および楽音発生処理のプログラム |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2679540B2 (ja) * | 1992-07-15 | 1997-11-19 | ヤマハ株式会社 | メモリ制御装置 |
-
1997
- 1997-01-27 JP JP02574397A patent/JP3799711B2/ja not_active Expired - Fee Related
-
1998
- 1998-01-22 US US09/010,643 patent/US5918301A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5918301A (en) | 1999-06-29 |
JPH10207465A (ja) | 1998-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR960042327A (ko) | 악음생성방법 및 장치 | |
JP3637578B2 (ja) | 楽音生成方法 | |
JP3799711B2 (ja) | 楽音発生方法および楽音発生装置 | |
JP2007183442A (ja) | 楽音合成装置及びプログラム | |
JP3625880B2 (ja) | 音源装置 | |
JP3637577B2 (ja) | 楽音生成方法 | |
JP3978928B2 (ja) | 楽音生成装置 | |
JP3409642B2 (ja) | 自動演奏装置、自動演奏データ処理方法及び電子的情報記憶媒体 | |
JP3293521B2 (ja) | 発音タイミング制御装置 | |
JP4802947B2 (ja) | 奏法決定装置及びプログラム | |
JP7332002B2 (ja) | 電子楽器、方法及びプログラム | |
JP3632744B2 (ja) | 音生成方法 | |
JP4172335B2 (ja) | 自動伴奏生成装置及びプログラム | |
JP3267226B2 (ja) | 自動伴奏装置及び自動伴奏制御プログラムを記録した媒体 | |
JP7124370B2 (ja) | 電子楽器、方法及びプログラム | |
JP4106798B2 (ja) | 音源装置 | |
JP4132268B2 (ja) | 波形再生装置 | |
JP3660379B2 (ja) | 音源制御情報の記憶方法及び音源制御装置 | |
JPH10288987A (ja) | 電子楽器及び楽音制御データ発生装置 | |
JP3919833B2 (ja) | 音源装置 | |
JPH0944160A (ja) | 楽音生成方法 | |
JP3539480B2 (ja) | 楽音信号発生装置、楽音信号発生方法及び楽音信号を発生させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP3627590B2 (ja) | 音生成方法 | |
JPH08185170A (ja) | 楽音発生装置 | |
JP3241832B2 (ja) | 楽音生成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051018 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060117 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060309 |
|
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: 20060404 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060417 |
|
R150 | Certificate of patent 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 (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |