JP3627590B2 - Sound generation method - Google Patents

Sound generation method Download PDF

Info

Publication number
JP3627590B2
JP3627590B2 JP28390499A JP28390499A JP3627590B2 JP 3627590 B2 JP3627590 B2 JP 3627590B2 JP 28390499 A JP28390499 A JP 28390499A JP 28390499 A JP28390499 A JP 28390499A JP 3627590 B2 JP3627590 B2 JP 3627590B2
Authority
JP
Japan
Prior art keywords
sound
waveform
channel
generation
data
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 - Lifetime
Application number
JP28390499A
Other languages
Japanese (ja)
Other versions
JP2000099019A (en
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 JP28390499A priority Critical patent/JP3627590B2/en
Publication of JP2000099019A publication Critical patent/JP2000099019A/en
Application granted granted Critical
Publication of JP3627590B2 publication Critical patent/JP3627590B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、演算処理装置を備える汎用処理装置により楽音を生成できるようにした音生成方法に関するものである。
【0002】
【従来の技術】
従来の楽音生成装置は、通常、MIDI(Musical Instrument Digital Interface)、鍵盤、あるいはシーケンサ等からの演奏情報を入力する演奏入力部、楽音波形を生成する音源部、入力した演奏情報に応じて前記音源部を制御するマイクロプロセッサ(CPU)等から構成されていた。CPUは、入力した演奏情報に応じて、チャンネルアサイン、パラメータ変換等の音源ドライバ処理(演奏処理)を実行し、音源部の割り当てたチャンネルに変換したパラメータと発音開始指示(ノートオン)を音源部に供給する。音源部は、LSI(Large Scale Integrated circuit)等の電子回路(ハードウェア)で構成され、供給されたパラメータに基づいて楽音波形を生成する。
このため、楽音生成装置は楽音を生成するための専用機器となってしまい、楽音を生成する時には専用の楽音生成装置を用意する必要があった。
【0003】
そこで、これを解決するために、CPUによりアプリケーションプログラムを実行し、アプリケーションプログラムに基づいて楽音を生成する楽音生成方法が提案されている。この楽音生成方法においては、楽音を生成するアプリケーションプログラムのほかに他のアプリケーションプログラムを実行させることができ、他の機能も実行させることのできる汎用の演算処理装置により実行することができるものである。
【0004】
【発明が解決しようとする課題】
ところで、演算処理装置(CPU)を備える汎用の装置によりアプリケーションプログラムを実行させて楽音を生成する場合、従来は1サンプリング周期(デジタル・アナログ変換器の変換タイミング)毎に各チャンネルの楽音波形サンプルを発音チャンネル分演算生成するようにしている。従って、CPUは各発音チャンネルの処理を行う場合、まず、前回の当該発音チャンネルの演算に用いた各種レジスタ値をメモリからCPUのレジスタに読み出す等の準備処理が行われる。また、当該発音チャンネルの楽音生成処理後には次回の処理のため、前記レジスタ値をメモリに書き込む必要がある。
すなわち、各発音チャンネルの楽音波形サンプルの演算処理を1サンプルずつ生成するようにしていたため、楽音を生成する楽音生成処理以外の、準備処理に多くのCPUの演算時間が費やされ(オーバヘッドが大きくなる)、演算効率が悪くなり応答や楽音生成処理が遅くなるという問題点があった。
【0005】
また、上記楽音生成方法において、演奏処理とは、入力した演奏情報に基づき、生成される楽音を制御する制御情報を作成する処理である。他方、音源処理とは、作成された制御情報に基づき楽音の波形データを生成する処理である。
例えば、通常は押鍵検出等の演奏処理を実行し、この演奏処理に対して各サンプリング周期で音源処理を割り込み実行して、1サンプル分の波形データを生成した後、演奏処理に復帰するようにしている。
【0006】
演奏情報(MIDI)は、演奏者の演奏操作やシーケンサでのイベントの再生により発生し、演奏情報が発生した場合には演奏処理により演奏情報が処理される。つまり、演奏情報の発生した時点では、CPUは、通常の音源処理に加えて演奏処理を実行しなければならないため、非定期的に発生する演奏情報により、演算量が一時的に増加することになる。しかしながら、従来の楽音生成方法においてはこれに対応しておらず、音源処理は、演奏情報のあるなしにかかわらず定期的に優先実行され、場合によっては演奏処理が遅れてしまうという問題点があった。
なお、このような演奏処理の遅れを防止するために、演奏処理の優先度を上げることが考えられるが、このようにすると今度は、一時的に発音数が減少したり、楽音波形が途切れてしまうという問題が発生することになる。
【0007】
そこで、本発明は上記した問題点を解決することのできる音生成方法を提供することを目的としている。
【0008】
【課題を解決するための手段】
前記目的を解決するために、本発明の音生成方法は、1または複数の指定された楽音を発生するための1または複数の発生命令を受け取る第1のステップと、前記発生命令に応答して、各指定された楽音を複数の発音チャンネルのうちの各1つに割り当て、該指定された楽音の制御データを各指定された楽音が割り当てられた各発音チャンネルに対応するチャンネルレジスタに書き込む第2のステップと、演算開始命令を順次発行する第3のステップと、各演算開始命令に応答して、前記チャンネルのチャンネルレジスタに記憶された制御データに基づき各発音チャンネル毎に複数サンプル分の波形データを生成する第4のステップと、前記第4のステップで各発音チャンネルにつき生成された波形データを、前記複数サンプルの各サンプル毎に混合し、混合サンプルデータを生成する第5のステップと、前記第5のステップで前記複数サンプルの各々についての新たな混合サンプルデータの生成が完了したとき、それ以前に生成された前記混合サンプルデータの再生が完了した後に、該新たな混合サンプルデータの再生が行われるように予約する第6のステップと、各サンプリング周期毎に順次サンプル点の前記混合サンプルデータを、前記第6のステップの予約にしたがって順次出力する第7のステップとを具備するようにしたものである。
【0009】
また、前記目的を達成することのできる本発明の他の音生成方法は、複数の指定楽音を発生するための発生命令を発行する第1のステップと、各指定楽音を複数の発音チャンネルの中から指定されたいずれかの発音チャンネルに割り当て、該指定楽音の制御データを各指定された発音チャンネルのチャンネルレジスタに書き込んで記憶させる第2のステップと、所定時間間隔で演算開始命令を発行する第3のステップと、前記第3のステップで発行された各演算開始命令に応じて各チャンネルの楽音生成演算を順次実行し、前記チャンネルのチャンネルレジスタに記憶された制御データに基づき各指定された発音チャンネル毎に複数サンプル分の波形データを算術的に生成する第4のステップと、前記第4のステップで指定された発音チャンネルにつき生成された波形データを、各サンプル毎に混合し、混合サンプルデータを生成する第5のステップと、前記複数サンプルの各々についての前記混合サンプルデータを、サンプリング周期毎にアナログ信号に変換する第6のステップとからなり、前記第4のステップの楽音生成演算においては、各指定された発音チャンネル毎に、前記チャンネルレジスタからの1回の制御データの読出しに基づいて、該制御データの読み出された発音チャンネルの複数サンプル分の波形データを生成し、該波形データ生成後に前記チャンネルレジスタに制御データを書き込むようにしたものである。
【0010】
このような本発明によれば、複数サンプルの各々についての新たな混合サンプルデータの生成が完了したとき、それ以前に生成された混合サンプルデータの再生が完了した後に、新たな混合サンプルデータの再生が行われるように予約するようにしたので、途切れることなく楽音を再生を行うことができる。
また、チャンネルレジスタからの1回の制御データの読出しに基づいて、制御データの読み出された発音チャンネルの複数サンプル分の波形データを生成し、波形データ生成後に前記チャンネルレジスタに制御データを書き込むようにしたので、複数の楽音波形サンプルの演算について1回だけ各発音チャンネルの準備処理を行えば良く、オーバヘッドが小さくすることができる。このため、生成された楽音の質を向上することができると共に、同時発音チャンネル数を増加することができる。
【0011】
【発明の実施の形態】
本発明の楽音生成方法の各実施の形態を実行することのできる楽音生成装置の構成を図1に示す。
この図において、1はアプリケーションプログラム等を実行して楽音波形サンプルの生成等の各種制御を行うマイクロプロセッサ(CPU)、2はプリセット音色データ等が記憶されているリードオンリメモリ(ROM)、3はCPU1のワークメモリエリアや音色データエリア、入力バッファエリア、チャンネルレジスタエリア、出力バッファエリア等の記憶エリアを有するランダムアクセスメモリ(RAM)4は時刻を指示すると共に、タイマ割り込み処理のタイミングをCPU1に指示するタイマ、5はMIDIイベントが入力されると共に、生成されたMIDIイベントを出力するMIDIインターフェース、6は英字、かな、数字、記号などのキーと備えるいわゆるパソコン用のキーボードである。
【0012】
7はユーザが楽音生成装置と対話するためのディスプレイ(モニタ)、8は楽音を生成するプログラム等のアプリケーションプログラムがインストールされていると共に、楽音波形サンプルを生成するために使用する楽音波形データ等が記憶されているハードディスク(HDD)、9はRAM3の一部のCPUにより指定されたエリアに記憶されている楽音波形サンプルのデータをCPU1を介することなく直接に受渡を行い、一定のサンプリング周期(例えば、48kHz)毎にデジタル・アナログ変換器(DAC)10に供給する再生部(DMA;Direct Memory Access)、10は楽音波形サンプルのデータを受け取りアナログ信号に変換するデジタル・アナログ変換器(DAC)、11はDAC10から出力されたアナログ信号に変換された楽音信号を放音するサウンドシステムである。
以上の構成はパソコン、ワークステーション等と同等であり、それらの上で本発明の楽音発生方法を実施することができる。
【0013】
前記したようにRAM3は種々のデータが記憶されるエリアを有しているが、その内の音色データが記憶されるエリアを図2に、入力バッファのエリアを図3に、チャンネルレジスタのエリアを図4に、出力バッファのエリアを図5に示す。
図2に示すエリアにおいて、PD1,PD2,・・・,PD16は16種類分の音色データであり、それぞれの音色データは各音域の波形を指定するデータ(各音域波形指定)、ビブラート等をかける時に使用するLFO(Low Frequency Oscillator)制御用のデータ(LFO制御OD)、音色フィルタ特性を制御するフィルタエンベロープの発生制御用のデータ(FEG制御OD)、振幅を制御するエンベロープの発生制御用のデータ(AEG制御OD)、ベロシティにより楽音の立ち上がりの速さ等を変えるタッチ制御用のデータ(タッチ制御OD)、その他のデータ(その他OD)からなっている。
【0014】
なお、ODはオリジナルデータであることを示しており、発音指示時のタッチデータ,音高データ等に応じてこれらのオリジナルデータに加工を施して音源が使用する発音用のデータを作成するようにしている。
また、WD1,WD2,・・・,WDnは波形データであり、入力される音高データに応じて、PD1,PD2,・・・,PD16の音色データにおける各音域波形指定データによりいずれかの波形データが指定される。
【0015】
次に図3に示す入力バッファのエリアにはMIDIインターフェース5を介して入力されるノートオン、ノートオフや各種イベントのMIDIイベントデータID1,ID2,ID3,・・・が順次書き込まれ、このMIDIイベントデータID1,ID2,ID3,・・・が読み出されることによりそのイベント処理が楽音生成装置内において実行される。
このMIDIイベントデータID1,ID2,ID3,・・・は、MIDIイベントのデータ内容(例えば、データ1内容)と、そのデータの発生時刻(データ1発生時刻)とにより構成される。この発生時刻はMIDIイベントデータ受信時にタイマ4の現在時刻を取り込むことにより知ることができる。
【0016】
次に図4に示すエリアは、それぞれ互いに独立した複数の楽音の生成を制御するためのデータを記憶するチャンネル(ch)レジスタとして使用され、この例では1ch,2ch,・・・,32chの32チャンネル分のエリアが用意されている。各チャンネルのエリアはノートナンバ、波形指定データ(波形指定D)、LFO制御データ(LFO制御D)、フィルタエンベロープ制御データ(FEG制御D)、振幅エンベロープ制御データ(AEG制御D)、ノートオンデータ、その他のデータ(その他D)、およびCPU1がプログラム実行時に使用するワークエリアからなっている。
この波形指定D、LFO制御D、FEG制御D、AEG制御Dは前記したオリジナルデータに加工が施された発音用のデータである。
【0017】
次に図5に示すエリアは複数の出力バッファ用のエリアであり、順次交代して発音波形生成用の出力バッファXとして使用されている。この出力バッファは、後述するように演算処理により生成された各発音チャンネルの楽音波形サンプルデータSD1,SD2,SD3,・・・が生成される毎にチャンネル累算され格納される。出力バッファのいずれかが発音波形生成用の出力バッファXとして指定され、波形生成演算に使用される。この出力バッファXは2つ以上用意される。最も簡単な構成としては出力バッファXを2個とし、片方に格納されているデータを再生部(DMA)9に渡して再生している間に、もう片方に演算した次の楽音波形サンプルのデータを格納するダブルバッファ構成とすることができる。
【0018】
なお、出力バッファのサイズは、100ワード、500ワード、1Kワード、5Kワード等任意に設定することができるが、サイズを大きくすると発音に遅れを生じ、サイズを小さくすると時間的マージンが減少し、一時的な演算量の増加時に応答が悪くなることになる。
そこで、リアルタイム性が要求されない、例えばシーケンサ演奏等の場合は、演奏タイミングを前にずらすことにより発音遅れを吸収できるため、出力バッファのサイズを大きくすることができる。一方、リアルタイムの演奏が必要とされる、例えば鍵盤演奏等の場合は、発音遅れを防止するため、バッファサイズは100〜200ワードとするのが好適である。
以上は、再生のサンプリング周波数が40kHz〜50kHzの場合であり、サンプリング周波数を低く設定する場合は、発音遅れを防止するためもっと小さいサイズにする必要がある。
【0019】
次に、本発明の楽音生成方法の第1の実施の形態ないし第5の実施の形態を説明するが、各実施の形態は前記図1に示す楽音生成装置によりそれぞれ実行することができるものである。
本発明の第1の実施の形態の楽音生成方法は、CPU1が楽音を生成するアプリケーションプログラムを実行する各発音チャンネルの楽音生成処理において、複数楽音波形サンプル、例えば100楽音波形サンプルまとめて生成するようにしたものである。すなわち、各発音チャンネルの処理において、DAC10のサンプリング周期の例えば100サイクル分まとめて楽音波形サンプルが生成されるようになる。
【0020】
そして、所定の計算時刻毎に全発音チャンネル分の楽音生成処理が実行され、生成された複数の楽音波形サンプルが100サンプルとされた場合は、DAC10の100サンプリング周期分のチャンネル累算値として順次累算され、前記した出力バッファに記憶される。出力バッファに記憶された楽音波形サンプルは、全発音チャンネル分の累算完了後に再生部(DMA)9により、前記サンプリング周期毎に1サンプルずつ読み出され、DAC10に供給されてサウンドシステム11から発音される。
なお、計算時刻は、複数の出力バッファを交代して用いて楽音生成処理を実行した場合に、楽音波形サンプルが途切れず読み出し再生できる間隔で発生されるように制御されている。
【0021】
この第1の実施の形態の楽音生成方法によれば、各発音チャンネルの準備処理は、まとめて生成される複数の楽音波形サンプルの演算について1回だけ行えば良いため、全体の演算時間の内でこの準備処理に費やされる演算時間の割合が減少し、オーバヘッドを小さくすることができる。このため、生成される楽音波形サンプルの質の向上や同時発音数を増加することができる。
なお、計算時刻間の1区間(出力バッファのサイズに相当)をさらにn等分して、それに対応する時間間隔で発音波形演算を行い、最後のn個目の演算で完成した1区間分の楽音波形サンプルを単位として、再生部(DMA)9が読み出すようにしてもよい。
【0022】
次に、本発明の第2の実施の形態の楽音生成方法の説明を行う。
本発明の第2の実施の形態の楽音生成方法は、前記第1実施例と同様にCPU1が楽音を生成するアプリケーションプログラムを実行する各発音チャンネルの楽音生成処理において、複数の楽音波形サンプルをまとめて生成するようにしているが、さらに加えて入力データ、この例ではMIDIイベントがMIDIインターフェース5において受信される毎に、その時点までの発音波形演算を行うようにしている。そして、所定の計算時刻には予め定められた複数の楽音波形サンプル(1つの出力バッファ分のサンプル)の内、未演算の楽音波形サンプルのみの発音波形演算を行うようにしたものである。
【0023】
これは、各発音波形演算では発音している発音チャンネルについての演算を行うのであるが、その中の入力データに応じて発音態様が変化するキーオンイベントあるいはキーオフイベント(ピッチベンド,音量変化)等がある発音チャンネルにおいては、対応を変化させずに発音を継続する発音チャンネルに比べて多くの演算処理が必要となる。
この場合、一定時間おきの計算時刻とすると、入力データが増加した時に、演算時間が発音態様が変化する発音チャンネルに多く占められてしまうため、結果的に演算できる発音チャンネル数が減少してしまうことになる。
特に、発音を開始する発音チャンネルについては、アドレスカウンタ、各種エンベロープ発生器の初期設定、Fナンバ発生等多くの初期設定処理が必要であり、演算処理時間が多くかかる。
【0024】
この第2の実施の形態を図12に示すタイミングチャートを参照しながらさらに説明すると、出力バッファは前記したダブルバッファ構成とされており、この2つの出力バッファがA,Bとされてその読み出しタイミングが同図(e)に示されている。そして、各バッファA,Bの再生に要する時間がT およびT とされており、T =T とされている。
まず、出力バッファA用の計算対象となる時刻範囲t 〜t において、同図(a)に示すように時刻t でMIDIイベントを2つMIDI受信部が受信すると、同図(b)に示すように音源ドライバ部で処理が行われ、さらに同図(c)に示すように音源部によりt 〜t 間の楽音波形サンプルA が計算される。
【0025】
なお、MIDI受信部は入力されたMIDIイベントを受信するMIDIインターフェース5を含み、前記したようにMIDIイベントのデータを入力バッファに発生時刻と共に書き込む。音源ドライバ部は入力バッファのデータあるいはパソコンキーボード6よりの入力を受け取り、音源チャンネルアサインおよび入力に従ってボイシングパラメータから音源パラメータへの変換を行う。また、音源部は音源パラメータを受け取り、波形データを加工して実際に発音する楽音波形サンプルを生成する。LPF部は生成された楽音波形サンプル中の折り返しノイズ成分を除去する。そして、LPF部の出力が出力バッファA,Bに書き込まれる。
なお、音源ドライブ、音源部、LPF部はCPU1がアプリケーションプログラムを実行することにより実現される機能である。
【0026】
次いで、時刻時刻t でMIDIイベントが1つMIDI受信部において受信されると、同様に音源ドライバ部で処理が行われ、さらに音源部によりt 〜t 間の楽音波形サンプルA が計算される。
その後、時刻t に達すると音源部によりt 〜t 間の楽音波形サンプルA が計算される。この場合、時刻t ,t においてキーオンイベントが入力されると、その発音初期処理も含めてこの時刻t において演算処理される。さらに、LPF部においてフィルタ処理が行われて出力バッファA用の楽音波形サンプルの生成が終了する。
【0027】
次に、出力バッファB用の計算対象となる時刻範囲t 〜t において、同図(a)に示すように時刻t で新たなMIDIイベントを3つMIDI受信部が受信するが、音源部は楽音波形サンプルA を計算中なので、入力データは計算時間が割り当てられるまで入力バッファにおかれる。そして、楽音波形サンプルA の計算が終了し、さらにLPF部のフィルタ処理も完了すると、入力バッファ中のデータが音源ドライバ部で処理されて、音源部によりt 〜t 間の入力に対応する楽音波形サンプルB が計算される。この場合、計算処理が遅れても入力データの発生時刻も入力バッファに書き込まれているため、発音タイミングには影響しないようになる。
【0028】
同様に、楽音波形サンプルB の計算時間中に新たなMIDIイベントを4つ受信するが、この入力データも楽音波形サンプルB の計算終了後に計算される。
これにより、楽音波形サンプルB はt 〜t 間の入力に対応する楽音波形サンプルとなり、楽音波形サンプルB はt 〜t 間の入力に対応する楽音波形サンプルとなり、楽音波形サンプルB はt 〜t 間の入力に対応する楽音波形サンプルとなる。
さらに、楽音波形サンプルA はt 〜t 間の入力に対応する楽音波形サンプルとなる。
【0029】
このように第2の実施の形態は入力データが発生した場合は、その時点までの発音波形演算をその時点で実行するようにしているため、楽音波形サンプルの計算時間が分散される。従って、所定時間毎に行われる計算時間における処理が増加しないため、キーオンイベント等の発音態様を変化させる入力データが多く発生しても、同時発音数が減少する等の不都合が生じることを防止することができる。
【0030】
次に、本発明の第3の実施の形態の楽音波形生成方法の説明を行う。
ところで、所定のタイミングで計算時刻を発生し、所定数の楽音波形サンプルをまとめて演算生成するようにした場合、連続的に楽音を発生するためには、過去に生成した波形サンプルの生成終了以前に、それに続く該所定数の波形サンプルを供給する必要がある。すると、処理すべき発音チャンネル数が多くその発音波形演算量が多過ぎる場合、全チャンネル分演算を実行すると、その楽音波形サンプルの供給が間に合わず、楽音が途切れてしまうという欠点が生じる。
【0031】
この第3の実施の形態の楽音波形生成方法はこの欠点を解決しようとするものであって、楽音波形サンプルの供給がDAC10の変換タイミングに間に合うか否かを判定し、間に合わないと判定された場合は、重要度の低い発音チャンネルから消音する発音チャンネルを選定する。そして、選定された発音チャンネルについては演算時に、該所定数の波形サンプルのうちの初期期間に対応するダンプ波形サンプルのみが短時間で演算される。
このように、選定された消音される発音チャンネルにおける楽音波形サンプルは、短期間のダンプ波形しが演算しないので、この発音チャンネルの演算時間が短縮され、全体として楽音波形サンプルの供給がDAC10の変換タイミングに間に合うようになる。
【0032】
なお、重要な音とは、
(1)その時点で音量の大きい音。
(2)アタック部再生中の発音を開始したばかりの音。
(3)複数パート音演奏されている場合、一番低い音(ベース音)。
(4)複数パート演奏されている場合、一番高い音(リード音)。
(5)複数パート音演奏されている場合におけるソロのパート音。
とするのが一般的である。
【0033】
また、前記第3の実施の形態の変形例を説明すると、演算する発音チャンネルを発音波形演算に先立って重要な音から順位付けし、その順位に従って重要な音から順番に発音演算を行うようにし、発音波形演算が間に合わない場合に、発音波形演算を途中で打ち切って、その時点までに生成された楽音波形サンプルのみで発音を行うようにしたものである。
このようにすれば、万が一演算打ち切りをする必要が生じた場合でも、それによって音の消えてしまうチャンネルは、重要度の低い比較的影響の少ない楽音を生成しているチャンネルと云うことになる。
なお、第3の実施の形態およびその変形例において、入力データが発生する毎に発音波形演算を行うようにしてもよい。
【0034】
さらに、入力データが発生する毎に発音波形演算を行なわず、最後に1区間分まとめて発音波形演算をするようにしてもよい。この場合、入力データの数に応じて計算時刻を早めるようにトリガをかけるのが好適である。
または、計算時刻間の1区間をさらにn等分して、それに対応する時間間隔で発音波形演算を行い、最後のn個目の演算で完成した1区間分の楽音波形サンプルを単位として、再生部(DMA)9が読み出すようにしてもよい。
【0035】
ところで、所定のタイミングで計算時刻を発生し、複数の楽音波形サンプルをまとめて演算生成するようにした場合、あるいは入力データが発生する毎に発音波形演算を行なう場合、連続的に楽音を発生するためには、過去に生成した波形サンプルの生成終了以前に、それに続く波形サンプルを供給する必要がある。すると、処理すべき発音チャンネル数が多くその発音波形演算量が多過ぎる場合や、楽音生成処理以外の処理(シーケンサ処理等)に時間が費やされた等の理由でその楽音波形サンプルの供給が間に合わなかった場合、処理途中の楽音波形サンプルが読み出されノイズが発音される可能性があった。
そこで、本発明の第4の実施の形態の楽音発生方法においては、次のようにしてこれを解決している。
【0036】
本発明の第4の実施の形態において、再生部(DMA)9にはCPU1が出力バッファのデータを渡す指令を出すようにしている。この場合、生成した所定数の楽音サンプルを記憶する出力バッファ自体のアドレスを、一回の読み出し区間として再生部に9に設定したり、繰り返し読み出される繰り返し読み出し区間として設定をすることができるが、さらに加えて、該アドレスを現在すでに読み出し中の読み出し区間に続けて読み出せるよう読み出し区間の予約を設定することができる。
本実施の形態では、この読み出し区間の予約により、楽音波形演算サンプルが生成された後に出力バッファに予約登録が行われ、すでに読み出し中の波形に続けてて読み出される。楽音波形サンプルの演算が終了しなかった場合は、その予約登録が行われないので、処理途中の楽音波形サンプルが発音されることによるノイズの発生を防止することができる。
【0037】
この場合、発音は一時途切れることになるが、途切れる時間は、例えば44.1kHzのサンプル周波数における数サンプル時間に抑えれば影響は小さい。数サンプル時間に抑えるには、前述したように発音されているチャンネル数を制御すればよい。さらに、処理が完了すると予約登録が行われて発音されるようになる。
なお、入力データが発生する毎に発音波形演算を行なわず、最後に1区間分まとめて発音波形演算をするようにしてもよい。この場合、入力データの数に応じて計算時刻を早めるようにトリガをかけるのが好適である。
または、計算時刻間の1区間をさらにn等分して、それに対応する時間間隔で発音波形演算を行い、最後のn個目の演算で完成した1区間分の楽音波形サンプルの発音予約を行うようにしてもよい。
【0038】
前述したように、所定のタイミングで計算時刻を発生し、複数の楽音波形サンプルをまとめて演算生成するようにした場合、あるいは入力データが発生する毎に発音波形演算を行なう場合、連続的に楽音を発生するためには、過去に生成した波形サンプルの生成終了以前に、それに続く波形サンプルを供給する必要がある。
ところで、この計算時刻は、過去に生成した楽音波形サンプルの終了タイミングに基づいて、発音波形の生成を実行するのに必要な時間分、その終了タイミングより早いタイミングが指定される。この終了タイミングは、CPU1が再生部(DMA)9の状態(フラグ)を確認し、楽音波形サンプルの再生区間が次の区間に移行したことを検知するようにして検出しているため、再生部(DMA)9の状態(フラグ)が変化してからCPU1がそのことを検知するまでに時間遅れが生じることになる。さらに、この時間遅れはCPU1が上述した検知を実行するタイミングによるため、そのタイミングに応じて不均一な時間遅れとなる。
【0039】
すると、この不均一な時間遅れの生じているタイミングに基づいて計算時刻を発生するようにすると、正確な計算時刻が発生することができないこととなる。
特に、1度だけ大きく遅れたタイミングが検出されると、それに基づいて発生された計算時刻は演算開始時刻から発音波形供給までの演算時間が短いことになるため、この場合は同時発音数が一時的に減少してしまうことになる。
そこで、本発明の第5の実施の形態の楽音生成方法においては次のようにしてこれを解決している。
【0040】
CPU1は過去に再生部(DMA)9の状態変化が検出された時刻を複数記憶しておく。この複数の時刻の時刻間の平均を取ることにより、次の検出時刻を予測するようにする。この予測された時刻は、再生部(DMA)9における真の終了タイミングからの検出遅れが平均化されたものとされるので、予測されたタイミングより所定時間前のタイミングを、ほぼ正確な終了タイミングとして検出することができる。そして、この終了タイミングに基づいて計算時刻を発生するようにする。
このように、検出される終了タイミングは平均化されたものとなり、ばらつきが少なくなるので、毎計算時刻に確保される演算時間も均一化され、安定した楽音生成動作が実行されるようになる。
【0041】
なお、入力データが発生する毎に発音波形演算を行なわず、最後に1区間分まとめて発音波形演算をするようにしてもよい。この場合、入力データの数に応じて計算時刻を早めるようにトリガをかけるのが好適である。
または、計算時刻間の1区間をさらにn等分して、それに対応する時間間隔で発音波形演算を行い、最後のn個目の演算で完成した1区間分の楽音波形サンプルの発音予約を行うようにしてもよい。
【0042】
次に、前記した本発明の第1の実施の形態ないし第5の実施の形態の要素を1まとめにした楽音生成方法および装置の動作をフローチャートを参照しながら説明する。
図6はメインルーチンのフローチャートを示す図であり、メインルーチンがスタートされるとステップS10にて初期設定が行われる。初期設定ではタイマ4やDMAの設定、全発音チャンネルのクリアや、音色データおよび波形データ等の準備が行われる。次いで、ステップS20にてキーボード6からの入力が処理されるキーボード処理が行われ、ステップS30にて入力されたMIDIイベントに応じた処理が行われるMIDI処理が行われる。さらに、ステップS40にて楽音波形サンプルが生成される発音波形演算等が行われる音源処理が行われ、ステップS50にてその他の処理が行われ、ステップS20に戻り、ステップS20ないしステップS50の処理が循環して繰返し行われる(定常ループ)。
これらの処理は、マルチタスクの方法を用いて他のソフトと同時に実行される。
【0043】
次に、CPU1の実行するMIDI受信割込処理のフローチャートを図7に示す。この処理は、MIDIインタフェース5が外部より何らかのMIDIイベントを受信した際に割込により起動される。このMIDI受信割込処理は、他の処理より優先して行われる処理である。このMIDI受信割込処理が開始されると、ステップS100にてMIDIインターフェース5により受信された受信データが取り込まれ、ステップS110にてその受信データは受信された時点の時刻データと組にして図3に示されるような形式で前述した入力バッファに書き込まれるようにされて、割込発生時の処理へリターンされる。これにより、受信したMIDIデータは、順次、受信時刻と共に入力バッファに書き込まれるようになる。
【0044】
次に、メインルーチンの定常ループでステップS30として実行されるMIDI処理の詳細フローチャートを図8に示す。
MIDI処理が開始されるとステップS200にて入力バッファを読みに行き、未処理の受信データがあるかどうかの確認を行う。未処理の受信データがあるとステップS210にて判断されると、ステップS220に進み、受信データの内容に応じた分岐を行う。受信データがノートオンイベントの場合は、ステップS230に分岐されてノートオン処理が実行される。また、受信データがノートオフの場合は、ステップS240に分岐されてノートオフ処理が実行され、受信データがその他のデータの場合は、ステップS250に分岐されてその他処理が実行される。そして、これらのいずれかの処理が終了すると、MIDI処理は終了する。なお、受信データがないとステップS210にて判断されると、そのままMIDI処理を終了する。
【0045】
次に、前述したMIDI処理において、受信データがノートオンイベントの場合にステップS230にて実行されるノートオン処理のフローチャートを図9(a)に示す。
ノートオン処理が開始されると、ステップS300にて、入力バッファ中のそのノートオンイベントのノートナンバがNNとして、ベロシティがVELとして、それぞれレジスタに取り込まれ、そのノートオンイベントの発生時刻がTMとしてレジスタに取り込まれる。次いで、ステップS310にてレジスタに取り込まれたノートナンバNNの発音割当処理が行われ、割り当てられたチャンネル(ch)の番号がiとしてレジスタに取り込まれる。
【0046】
さらに、ステップS320にて図4に示すchレジスタのうちレジスタに取り込まれたch番号iのchレジスタに、前記ノートナンバNN,ベロシティVELに応じた楽音制御データを設定する。設定される楽音制御データは、図2に示す16音色分の音色データのうち、前記ノートオンイベントを受信したMIDIチャンネルに対応した音色データ(各種OD)を、前記ノートナンバNN,ベロシティVELの値に応じて加工して得られる発音用データ(各種D)である。
ここで、発音用データの中の波形指定データDは、図2に示す音色データ中の音域波形指定データをノートナンバNNで参照することにより求められ、該ノートナンバNNに対応した楽音生成に用いるべき波形として、波形データWD1から波形データWDnのうちのいずれか1つを指定する。前記楽音制御データの設定後、ステップS330にてichのノートオンフラグを立てるようにする。
【0047】
次に、ステップS340にて発音波形の演算生成を実行するが、この場合の演算生成は、現在準備中のバッファXに書き込むべき全波形のうち、時刻TM以前で、かつ、未計算の波形(部分波形)について実行され、算出された該部分波形を出力バッファXに書き込むようにする。ここで、部分波形は、ステップS210において新たな受信データが検出された時点で(データが確定し)演算生成が可能になる範囲の発音波形に相当する。生成する波形は、受信したノートオンイベントの発生時刻TMの時点までの発音波形であり、該ノートオンに応じて発音開始する楽音波形は、該発音波形に含まれず、以後に生成される発音波形の方に含まれる。この処理の詳細については、後述する図11に示されている。
【0048】
このステップS340およびステップS350の処理は、先に図12に関連して説明した楽音波形A あるいはA 等の演算生成処理に対応するが、ステップS350では、前述したステップS320でchレジスタに設定されたichの楽音制御データに基づき、ichにおける発音の初期設定をchレジスタのワークエリアに対して行う。ここで、このワークエリアは、各発音chの楽音生成に必要な、アドレス現在値、各種エンベロープ現在値および現在ステート、LFO波形現在値等、各chの波形生成に必要な複数のデータ現在値を記憶する。この発音初期処理が終了すれば、ノートオン処理は終了する。
なお、初期設定においては、波形読み出しアドレス現在値へのスタートアドレスの設定、ノートナンバNNに応じたFナンバの発生、およびLFO、フィルタEG、音量EG、補間演算、フィルタ演算等の各初期設定が行われる。この初期設定は前記したように演算時間を要する処理である。
【0049】
次に、前述したMIDI処理において、受信データがノートオフイベントの場合にステップS240にて実行されるノートオフ処理のフローチャートを図9(b)に示す。
ノートオフ処理が開始されると、ステップS400にて、入力バッファ中のそのノートオフイベントのノートナンバがNNとしてレジスタに取り込まれ、ノートオフイベントの発生時刻がTMとしてレジスタに取り込まれる。次いで、ステップS410にてノートナンバNNで発音されている発音チャンネル(ch)がサーチされ、見つかった発音chの番号がiとしてレジスタに取り込まれる。
【0050】
次に、ステップS420にてichのノートオンフラグを倒し、ステップS430にて発音波形の演算生成が実行される。この場合の演算生成処理は、前述したステップS340と同様の処理であり、時刻TM以前の未計算波形(部分波形)を算出して出力バッファXに書き込むようにする。さらに、ステップS440にてichのリリース開始処理が行われてノートオフ処理は終了する。ここで、ichのリリース開始処理とは、ワークエリア中のichの各種エンベロープのステート等を書き換え、ichにおける楽音生成の状態をリリース状態に変化させる処理である。
【0051】
次に、メインルーチンの定常ループでステップS40として実行される音源処理の詳細フローチャートを図10を参照しながら説明する。
音源処理が開始されると、ステップS500にて再生部(DMA)9の再生状態をチェックし、再生区間が次に進んでいたらステップS510に進み、再生区間が進んでいない場合はステップS520に進む。
DMA9は、CPU1により指定されたRAM3上の特定エリアの波形サンプルを再生エリアとして、所定のサンプリング周期毎にその特定エリアの最初のサンプルから1サンプルづつ順次読み出し、DAC10に供給し再生する。さらに、DMA9はその特定エリアを再生しつつ、CPU1から次に再生すべき別のエリアを指定する予約を受け付ける。予約された別の特定エリアの波形サンプルは、再生中の特定エリアの再生が完了した後、引き続いてDMA9により同様に1サンプルづつ順次読み出され、DAC10に供給され再生される。ここで、再生区間が次に進むというのは、先に特定エリアとして指定した再生区間の再生が完了し、次の特定エリアとして予約された別の再生区間に再生が移ったことを意味する。なお、一度に複数の特定エリアを再生予約することが可能であり、その場合、複数の特定エリアは予約した順に順次再生される。
【0052】
ステップS510にて今回進行が検出された時刻(現在時刻)と過去に検出された時刻から次回の検出時刻を予測し、予測された検出時刻より所定時間前の時刻を次回の計算時刻として指定する。次回の検出時刻の予測の仕方としては、現在時刻と過去の検出時刻を含む複数回の検出時刻に基づき最小二乗法で誤差の少ない近似値を求めて予測する方法や、複数回の検出時刻の変化の様子を2次関数等、別の関数で近似して予測する方法がある。DMA9では進行が発生してからステップS510で検出されるまでの時間は、その時々の処理ステップ位置、状況の違い等により、一定でない時間遅れが生じ、複数回の検出時刻には、一定でないばらつきが含まれている。従って、前記近似関数の算出には、複数回の検出時刻のばらつきを平均化する処理が含まれる。
【0053】
前記所定時間は、楽音波形を生成するために確保される時間であり、どのくらいの長さにするかは、確保したい発音数、演算のクォリティ等、その演算生成に必要な演算量に基づいて決定される。前記所定時間の長さは、固定値でもよいが、キーボード6で設定できるようにしたり、同時に走る複数の処理プログラムとの兼ね合いでCPU1が自動的に決定するようにしてもよい。
【0054】
次に、ステップS520にて次回の計算時刻とタイマ4が指示する現在時刻とを比較することにより、計算時刻に達したか否かが判断され、計算時刻に達したと判断された場合はステップS530ないしステップS580の処理を実行する。
まず、ステップS530にて現在発音中の発音チャンネルを、どの順番で演算するか決定する。後述するステップS550の波形演算生成処理では、発音中のチャンネルについて、1チャンネルづつ複数サンプル分の発音波形を生成していくわけであるが、その時のチャンネルの処理順をここで決めているわけである。
【0055】
ここでは、前記した第3の実施の形態の方法に従って、音楽的に重要な楽音、消えてしまっては困る楽音から順番に演算を行うように順番付けをする。次いで、ステップS540にて発音中の全発音チャンネルを、予定した演算時間(ステップS510で説明した所定時間)内に演算可能か否かが判定され、不可能の場合は演算順序が最後の発音チャンネルから消音すべき発音チャンネルを1ないし複数チャンネル分指定し、予定した演算時間内に演算可能になるよう演算量を削減する。この処理は、前記した第3の実施の形態の楽音生成方法に基づく具体的な処理である。
次いで、ステップS550にて発音波形の演算が行われる。ここでは、現在準備中の出力バッファXが発音波形データで満たされ、準備完了となるように、バッファXの未計算分について楽音波形サンプルが演算されて発音波形が算出され、出力バッファXに書き込まれる。この処理は、先に図12に関連して説明した発音波形A 等の演算生成処理に対応する。
【0056】
発音波形で満たされ準備完了となったバッファXの各サンプルは、さらに、ステップS560にてローパスフィルタ(LPF)処理が施され、高域成分がカットされる。次いで、ステップS570にて波形再生部(DMA)9に、LPF処理済の発音波形を記憶する出力バッファXのエリアが、続いて再生すべき再生波形を記憶する特定エリアとして予約登録される。これにより、現在再生中の特定エリアおよび既に予約されている特定エリアの発音波形が再生完了した後に再生されるよう予約される。そして、ステップS580にて、それまでバッファXとして使用していた出力バッファとは別の新規の出力バッファ領域が確保され、全てのサンプル値がゼロにクリアされて、次の区間の発音波形を作成し準備するための出力バッファXとして新たに設定され、音源処理が終了する。
なお、ステップS520にて計算時刻に達していないと判断された場合は、そのまま終了する。
【0057】
次に、ノートオン処理、ノートオフ処理および音源処理にて実行される発音波形演算処理のフローチャートを図11に示す。この処理が行われる場合には、既に説明したように前もって発音波形が演算される発音波形の時間範囲が定められている。すなわち、ノートオン処理等のMIDIデータ受信時の処理として本フローを実行する場合は、前記時間範囲とは前述した部分波形のことであり、音源処理中で本フローを実行する場合は、バッファXの全サンプルのうち、未計算部分の発音波形サンプルのことである。なお、MIDIデータ受信時には、直前の音源処理で決定した演算順序に基づいて演算を行うため、発音チャンネルの演算順序を新たに決定していない。新たなノートオンがあった場合は、他の全発音チャンネルの順位を1つ繰り下げ、その新たなノートオンのチャンネルを演算順序の第1番に順次加えていく。
【0058】
発音波形演算処理が開始されると、ステップS600にて演算順序の1番の発音チャンネル(ch)の最初の楽音波形サンプルの演算準備が行われる。演算準備処理とは、前回の読み出しアドレス、各種EG値、各種EGのステート(アタックやリリース等の状態)、LFO値等のデータを、ただちに演算に使えるようにアクセス準備したりCPU1の内部レジスタにロードしたりする処理のことである。そして、ステップS610にてLFO、フィルタG、音量EGの波形演算を行い、指定された前記時間範囲の演算に必要なLFO波形、FEG波形、AEG波形のサンプルを生成する。LFO波形はFナンバ、FEG波形、AEG波形に加算され、各データを変調する。また、ステップS540で消音すべきチャンネルとして指定された発音チャンネルに関しては、音量EGとして前記範囲内で急速に減衰するダンプ用のAEG波形が演算生成される。
【0059】
次いで、ステップS620にて上記前回の読み出しアドレスを初期値としてFナンバを繰り返し加算し前記時間範囲内の各サンプルの読み出しアドレスを発生し、この読み出しアドレスの整数部に基づいて音色データ内の波形記憶領域WDより波形サンプルを読み出すと共に、この読み出しアドレスの小数部に基づいて読み出された波形サンプル間の補間を行い、前記時間範囲内の全補間サンプルを算出するようにする。例えば、前記時間範囲が100サンプル分の時間に相当する場合、100サンプル分まとめてこのステップにより処理が行われる。ここで、前記時間範囲内の複数サンプル分の処理は、読み出しアドレスに対するFナンバの加算と、加算により生成されたアドレスに基づく読み出しから補間の処理までの処理を単位処理として、この単位処理を繰り返して行うようになっているため、読み出しアドレスのCPUレジスタへの読み込みが全体として1回で済み、処理が高速化されている。
【0060】
さらに、ステップS630にて前記時間範囲内の補間サンプルに対し音色フィルタ処理が行われ、前記FEG波形に基づいて音色制御が行われ、ステップS640にて、フィルタ処理済の前記時間範囲内のサンプルに対し振幅制御処理が行われ、前記AEGおよび音量データに基づいて楽音波形サンプルの振幅制御が行われると共に、振幅制御処理された前記時間範囲分の楽音波形サンプルがそれぞれ出力バッファXの対応するサンプルに足し込まれる累算書込処理が実行される。この処理においては、前記時間範囲内の各サンプルについて、振幅制御とバッファXの対応サンプルへの足し込みを連続して行うようになっているので、サンプルのCPUレジスタへの取り込み回数が少なくて済み、処理速度が向上している。
【0061】
上述したように、ステップS620からステップS640にかけての楽音波形サンプルの演算生成処理は、基本的には前記所定時間範囲内の全サンプルを生成するように行われるわけであるが、ステップS610における音量EGの波形演算の結果、AEG波形のレベルが下がり音量が十分減衰した範囲については、演算の対象からはずされ、その分処理を少なくするようになっている。特に、ステップS540の指示により、ダンプ用AEG波形を生成した発音チャンネルに関しては、前記所定時間範囲の途中で十分な減衰が得られる場合が多い。
【0062】
そして、ステップS650にて、波形演算処理をこのまま続行したい場合にDMA9に対し期限内に波形を供給できそうか否か判定されて、演算を打ち切るか否かの判断が行われる。ここで、期限内に波形を供給するというのは、先に生成された発音波形を記憶する特定エリアを再生中のDMA9が、そのエリアの再生を終了してしまう前に、バッファXにそれに引き続く発音波形を準備し、そのバッファXのエリアを再生予約できることである。そのまま続行すると間に合わなくなる場合は、演算を打ち切ると判断され、ステップS670にて打ち切り処理が実行されて、この発音波形演算処理は終了する。
【0063】
また、また演算を続行しても大丈夫と判定された場合、演算を打ち切る必要がないと判断され、続くステップS660にて演算すべき全発音チャンネル分の楽音波形の演算生成が終了したか否かが判断され、全発音チャンネルの演算が終了したと判断されない場合は、ステップS680にて次の演算順序を付与された発音チャンネルの最初の楽音波形サンプルが指定され、次順の発音チャンネルの楽音チャンネルの楽音波形の演算生成準備が行われる。準備が完了したら、処理はステップS610に戻り、その発音チャンネルのついて先程と同様にステップS610ないしステップS640に渡る楽音生成の処理が実行される。このようにして、全発音チャンネルの演算が終了するまでステップS610ないしステップS660の処理が繰り返し行われるようになる。各発音チャンネルの処理毎に、生成された前記所定時間範囲分のサンプルは、ステップS640にてバッファXの対応するサンプルに順次足し込まれる。
【0064】
ステップS660で演算生成処理が終了したと判定された場合、本発音波形演算を終了する。この時、バッファXには、演算すべき全発音チャンネルの生成された楽音波形サンプルを累算した累算値が、前記時間範囲に対応するサンプル数分、新たに記憶されている。
一方、ステップS650で打ち切りを行うと判断され、ステップS670の打ち切り処理を経て発音波形演算が終了した場合、バッファXには、演算すべき全発音チャンネルの内、その時点までに演算生成を完了した発音チャンネルについての楽音波形サンプルの累算値が、前記時間範囲に対応するサンプル数分、新たに記憶されている。
【0065】
打ち切り以降の演算順序を付与された発音チャンネルについては楽音の演算生成が行われず、結果的にそのチャンネルの楽音が消えてしまうわけであるが、ステップS530の処理により、消えてしまった場合に影響の少ないチャンネルほど後ろの演算順序とされているので、打ち切りによる悪影響は最小限に抑えられる。なお、ステップS670の打ち切り処理では、一旦演算できなかったチャンネルについて、次回以降の発音波形演算においても消音したままになるよう、chレジスタを設定している。
【0066】
以上説明した発音波形演算処理が図9(a)にフローチャートを示すノートオン処理のステップS340にて実行された場合には、上述した発音波形演算処理が終了すると、該フローチャートのステップS350の処理が続けて実行されて、ノートオン処理が終了する。
また、発音波形演算処理が図9(b)にフローチャートを示すノートオフ処理のステップS430にて実行された場合には、上述した発音波形演算処理が終了すると、該フローチャートのステップS440の処理が続けて実行されて、ノートオフ処理が終了する。
【0067】
さらに、発音波形演算処理が図10にフローチャートを示す音源処理のステップS550にて実行された場合には、上述した発音波形演算処理が終了すると、該フローチャートのステップS560以降の処理が続けて実行されて、ステップS580の処理が終了すると音源処理が終了する。
これらのノートオン処理、ノートオフ処理、および音源処理は、図6に示す定常ループ内において循環して繰り返し行われ、発音される楽音波形サンプルが順次生成されるようになる。
【0068】
なお、本発明の楽音生成方法において、いうまでもないことであるが、例えば複数の楽音の発生を指示するステップと、所定時間時間間隔で演算開始を指示するステップのように、互いに独立したデータを扱うステップについては、前記説明した順番で処理を行う必要はなく、その処理の順番を入れ替えて実行するようにしてもよい。
また、本発明の楽音生成方法においては、前記した楽音生成演算処理の空き時間を利用して他のアプリケーションソフトから依頼された発音指示を含む処理を行うことができる。他のアプリケーションソフトとしては、ゲームソフト、通信ソフト、事務処理ソフト等がある。
【0069】
以上においては、前記図1に示す楽音生成装置にて実行されるプログラムとして本発明の楽音生成方法の説明を行った。また、本発明の楽音生成方法を、Windows (米マイクロソフト社のパソコン用OS)やその他のオペレーティングシステムの動作する汎用コンピュータ上で、1つのアプリケーションプログラムとして、他のアプリケーションプログラムと並列実行させてもよい。
【0070】
【発明の効果】
本発明は以上のように構成されて、複数サンプルの各々についての新たな混合サンプルデータの生成が完了したとき、それ以前に生成された混合サンプルデータの再生が完了した後に、新たな混合サンプルデータの再生が行われるように予約するようにしたので、途切れることなく楽音を再生を行うことができる。
また、チャンネルレジスタからの1回の制御データの読出しに基づいて、制御データの読み出された発音チャンネルの複数サンプル分の波形データを生成し、波形データ生成後に前記チャンネルレジスタに制御データを書き込むようにしたので、複数の楽音波形サンプルの演算について1回だけ各発音チャンネルの準備処理を行えば良く、オーバヘッドが小さくすることができる。このため、生成された楽音の質を向上することができると共に、同時発音チャンネル数を増加することができる。
また、楽音波形サンプルの演算をMIDIイベントが入力される毎に行うようにすると、演算が分散されるようになり、発音初期処理による発音数の減少を防止することができる。
【0071】
さらにまた、演奏情報の発生時に演奏情報の受入処理を行い、受け入れた演奏情報に基づく楽音制御あるいは波形生成は、該受入処理の空き時間に実行されるメインステップに含まれるようにしたので、演奏情報が発生した時点での処理の増加分を前記空き時間内に分散させることができ、一時的な処理の増加を防止することができる。
【図面の簡単な説明】
【図1】本発明の楽音生成方法を実行できる楽音生成装置の構成を示すブロック図である。
【図2】RAM上の音色データエリアを示す図である。
【図3】RAM上の入力バッファエリアを示す図である。
【図4】RAM上のchレジスタエリアを示す図である。
【図5】RAM上の出力バッファエリアを示す図である。
【図6】本発明の楽音生成方法のメインルーチンのフローチャートを示す図である。
【図7】本発明の楽音生成方法のMIDI受信割込処理のフローチャートを示す図である。
【図8】メインルーチンにおけるMIDI処理のフローチャートを示す図である。
【図9】MIDI処理におけるノートオン処理およびノートオフ処理のフローチャートを示す図である。
【図10】メインルーチンにおける音源処理のフローチャートを示す図である。
【図11】本発明の楽音生成方法の発音波形演算処理のフローチャートを示す図である。
【図12】本発明の第2の実施の形態におけるタイミング図を示す図である。
【符号の説明】
1 CPU、2 ROM、3 RAM、4 タイマ、5 MIDIインターフェース、6 キーボード、7 ディスプレイ、8 ハードディスク、9 再生部、10 DAC、11 サウンドシステム
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a sound generation method that enables a musical sound to be generated by a general-purpose processing device including an arithmetic processing device.
[0002]
[Prior art]
Conventional musical tone generators usually include a performance input unit for inputting performance information from a MIDI (Musical Instrument Digital Interface), a keyboard, or a sequencer, a sound source unit for generating a musical sound waveform, and the sound source according to the input performance information. It was comprised from the microprocessor (CPU) etc. which control a part. The CPU executes sound source driver processing (performance processing) such as channel assignment and parameter conversion in accordance with the input performance information, and converts the parameter converted to the channel assigned by the sound source unit and the sound generation start instruction (note-on) to the sound source unit. To supply. The sound source unit is composed of an electronic circuit (hardware) such as an LSI (Large Scale Integrated circuit), and generates a musical sound waveform based on the supplied parameters.
For this reason, the musical sound generating device becomes a dedicated device for generating musical sounds, and it is necessary to prepare a dedicated musical sound generating device when generating musical sounds.
[0003]
In order to solve this problem, a musical sound generation method has been proposed in which an application program is executed by a CPU and a musical sound is generated based on the application program. In this musical tone generation method, in addition to the application program that generates musical tone, other application programs can be executed, and can be executed by a general-purpose arithmetic processing device that can also execute other functions. .
[0004]
[Problems to be solved by the invention]
By the way, when generating a musical tone by executing an application program with a general-purpose device including a processing unit (CPU), conventionally, a musical sound waveform sample of each channel is taken every sampling period (conversion timing of a digital / analog converter). Calculations are generated for the sound channels. Therefore, when the CPU performs processing for each sound generation channel, first, preparatory processing such as reading various register values used for the previous calculation of the sound generation channel from the memory to the CPU register is performed. In addition, after the tone generation processing for the tone generation channel, the register value needs to be written into the memory for the next processing.
In other words, since the calculation processing of the musical sound waveform samples of each tone generation channel is generated one sample at a time, much calculation time of the CPU is spent on the preparation processing other than the musical sound generation processing for generating musical sounds (the overhead is large). However, there is a problem that the calculation efficiency is deteriorated and the response and the tone generation process are slow.
[0005]
In the musical sound generation method, the performance process is a process for creating control information for controlling the generated musical sound based on the input performance information. On the other hand, the sound source processing is processing for generating musical tone waveform data based on the created control information.
For example, normally, a performance process such as key-press detection is executed, a sound source process is interrupted and executed at each sampling period for this performance process, waveform data for one sample is generated, and then the process returns to the performance process. I have to.
[0006]
The performance information (MIDI) is generated by the performance operation of the performer or the reproduction of the event by the sequencer. When the performance information is generated, the performance information is processed by the performance processing. In other words, when the performance information is generated, the CPU must execute the performance processing in addition to the normal sound source processing. Therefore, the calculation amount is temporarily increased by the performance information generated irregularly. Become. However, conventional music generation methods do not support this, and sound source processing is regularly executed with or without performance information, and performance processing may be delayed in some cases. It was.
In order to prevent such delays in performance processing, it is conceivable to increase the priority of performance processing, but this time, the number of pronunciations may temporarily decrease or the sound waveform may be interrupted. Will occur.
[0007]
Therefore, an object of the present invention is to provide a sound generation method that can solve the above-described problems.
[0008]
[Means for Solving the Problems]
In order to solve the above-mentioned object, the sound generation method of the present invention includes a first step of receiving one or a plurality of generated instructions for generating one or more specified musical sounds, and in response to the generated instructions. And assigning each designated musical tone to each one of a plurality of tone generation channels, and writing control data of the designated tone into a channel register corresponding to each tone generation channel to which each designated tone is assigned. , A third step for sequentially issuing a calculation start command, and waveform data for a plurality of samples for each tone generation channel based on control data stored in the channel register of the channel in response to each calculation start command And the waveform data generated for each sound generation channel in the fourth step is converted into each sample of the plurality of samples. And a mixed sample generated before the generation of new mixed sample data for each of the plurality of samples in the fifth step. A sixth step of reserving the new mixed sample data for reproduction after the data reproduction is completed, and the mixed sample data at the sample points sequentially for each sampling period, And a seventh step of sequentially outputting in accordance with the reservation.
[0009]
According to another sound generation method of the present invention that can achieve the above object, a first step of issuing a generation command for generating a plurality of designated musical sounds, and each designated musical sound in a plurality of tone generation channels. A second step of assigning to one of the designated tone generation channels, writing the control data of the designated tone into the channel register of each designated tone generation channel and storing it, and issuing a calculation start command at predetermined time intervals Step 3 and the tone generation calculation for each channel are sequentially executed in accordance with each calculation start command issued in the third step, and each designated tone is generated based on the control data stored in the channel register of the channel. A fourth step for arithmetically generating waveform data for a plurality of samples for each channel, and a sound generation channel specified in the fourth step; The fifth step of mixing the waveform data generated for each sample for each sample to generate mixed sample data, and converting the mixed sample data for each of the plurality of samples into an analog signal for each sampling period In the musical tone generation calculation of the fourth step, the control data is read based on one read of the control data from the channel register for each designated tone generation channel. Waveform data for a plurality of samples of the generated sound generation channel is generated, and control data is written to the channel register after the waveform data is generated.
[0010]
According to the present invention, when generation of new mixed sample data for each of a plurality of samples is completed, reproduction of new mixed sample data is completed after reproduction of the previously generated mixed sample data is completed. Since the reservation is made so that the music is performed, the musical sound can be reproduced without interruption.
Further, based on one-time reading of the control data from the channel register, waveform data for a plurality of samples of the sound generation channel from which the control data is read is generated, and the control data is written to the channel register after the waveform data is generated. Therefore, it is only necessary to prepare each tone generation channel once for the calculation of a plurality of musical sound waveform samples, and the overhead can be reduced. For this reason, the quality of the generated musical sound can be improved, and the number of simultaneously sounding channels can be increased.
[0011]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 shows the configuration of a musical sound generating apparatus that can execute the embodiments of the musical sound generating method of the present invention.
In this figure, 1 is a microprocessor (CPU) that performs various controls such as generation of musical sound waveform samples by executing an application program and the like, 2 is a read only memory (ROM) in which preset tone color data and the like are stored, 3 A random access memory (RAM) 4 having storage areas such as a work memory area, a tone color data area, an input buffer area, a channel register area, and an output buffer area of the CPU 1 indicates the time and also instructs the CPU 1 the timing of timer interrupt processing. The timer 5 is a MIDI interface for outputting a generated MIDI event while a MIDI event is input, and 6 is a so-called personal computer keyboard provided with keys such as letters, kana, numbers, symbols and the like.
[0012]
Reference numeral 7 is a display (monitor) for the user to interact with the musical sound generating device, and reference numeral 8 is an application program such as a program for generating musical sounds, and musical sound waveform data used for generating musical sound waveform samples. The stored hard disk (HDD) 9 transfers the musical sound waveform sample data stored in an area designated by a part of the CPU of the RAM 3 directly without going through the CPU 1, and has a fixed sampling period (for example, , 48 kHz) to a digital / analog converter (DAC) 10, a reproduction unit (DMA; Direct Memory Access) 10 is a digital-analog converter (DAC) that receives data of musical sound waveform samples and converts them into analog signals, 11 was output from the DAC 10 A sound system for sound the converted tone signals to analog signals.
The above configuration is the same as that of a personal computer, a workstation, etc., and the musical sound generating method of the present invention can be implemented on them.
[0013]
As described above, the RAM 3 has an area for storing various data. Of these, the area for storing timbre data is shown in FIG. 2, the area for the input buffer is shown in FIG. 3, and the area for the channel register is shown in FIG. FIG. 4 shows the area of the output buffer.
In the area shown in FIG. 2, PD1, PD2,..., PD16 are timbre data for 16 types, and each timbre data is applied with data for designating the waveform of each tone range (designation of each tone range waveform), vibrato, etc. LFO (Low Frequency Oscillator) control data (LFO control OD), filter envelope generation control data for controlling timbre filter characteristics (FEG control OD), and envelope generation control data for controlling amplitude (AEG control OD), touch control data (touch control OD) for changing the speed of rising of a musical tone by velocity, and other data (other OD).
[0014]
Note that OD indicates original data, and the original data is processed according to touch data, pitch data, etc. at the time of sound generation instruction, and sound generation data used by the sound source is generated. ing.
In addition, WD1, WD2,..., WDn are waveform data, and any one of the waveforms depending on the tone range waveform designation data in the timbre data of PD1, PD2,. Data is specified.
[0015]
Next, MIDI event data ID1, ID2, ID3,... Of note-on, note-off and various events inputted via the MIDI interface 5 are sequentially written in the input buffer area shown in FIG. By reading the data ID1, ID2, ID3,..., The event processing is executed in the musical tone generation apparatus.
The MIDI event data ID1, ID2, ID3,... Is composed of the data contents of the MIDI event (for example, data 1 contents) and the time of occurrence of the data (data 1 occurrence time). This occurrence time can be known by capturing the current time of the timer 4 when receiving MIDI event data.
[0016]
Next, the area shown in FIG. 4 is used as a channel (ch) register for storing data for controlling the generation of a plurality of independent musical tones. In this example, 32 of 1ch, 2ch,..., 32ch. There is a channel area. The area of each channel is note number, waveform designation data (waveform designation D), LFO control data (LFO control D), filter envelope control data (FEG control D), amplitude envelope control data (AEG control D), note-on data, It consists of other data (other D) and a work area that the CPU 1 uses when executing a program.
The waveform designation D, LFO control D, FEG control D, and AEG control D are sounding data obtained by processing the original data.
[0017]
Next, an area shown in FIG. 5 is an area for a plurality of output buffers, which are alternately used as an output buffer X for generating a sound waveform. As will be described later, the output buffer accumulates and stores the channel every time musical tone waveform sample data SD1, SD2, SD3,... One of the output buffers is designated as an output buffer X for generating a sound waveform, and is used for waveform generation calculation. Two or more output buffers X are prepared. In the simplest configuration, there are two output buffers X, and the data of the next musical sound waveform sample calculated on the other side while the data stored in one side is transferred to the reproduction unit (DMA) 9 and reproduced. Can be configured as a double buffer.
[0018]
The size of the output buffer can be arbitrarily set, such as 100 words, 500 words, 1K words, 5K words, etc. However, if the size is increased, the sound generation is delayed, and if the size is decreased, the time margin is reduced. The response becomes worse when the amount of computation is temporarily increased.
Therefore, in the case where, for example, sequencer performance is not required, real-time performance can be absorbed by shifting the performance timing forward, so that the size of the output buffer can be increased. On the other hand, when a real-time performance is required, such as a keyboard performance, the buffer size is preferably 100 to 200 words in order to prevent delays in pronunciation.
The above is the case where the reproduction sampling frequency is 40 kHz to 50 kHz. When the sampling frequency is set low, it is necessary to make the size smaller in order to prevent delay in sound generation.
[0019]
Next, the first to fifth embodiments of the tone generation method of the present invention will be described. Each embodiment can be executed by the tone generation apparatus shown in FIG. is there.
In the musical tone generation method of the first embodiment of the present invention, a plurality of musical tone waveform samples, for example, 100 musical tone waveform samples, are generated together in the musical tone generation processing of each tone generation channel in which the CPU 1 executes an application program for generating musical sounds. It is a thing. That is, in the processing of each sound generation channel, musical tone waveform samples are generated collectively for 100 cycles of the sampling period of the DAC 10.
[0020]
When the tone generation processing for all the sound generation channels is executed at predetermined calculation times, and the generated plurality of tone waveform samples are set to 100 samples, the accumulated values of channels for 100 sampling periods of the DAC 10 are sequentially obtained. Accumulated and stored in the output buffer. The musical sound waveform samples stored in the output buffer are read out by the reproduction unit (DMA) 9 one sample at each sampling period after completion of accumulation for all the sound generation channels, supplied to the DAC 10 and sounded from the sound system 11. Is done.
The calculation time is controlled to be generated at intervals at which the musical sound waveform samples can be read and reproduced without interruption when the musical sound generation processing is executed using a plurality of output buffers alternately.
[0021]
According to the musical tone generation method of the first embodiment, the preparation process for each tone generation channel needs to be performed only once for the calculation of a plurality of musical sound waveform samples generated together. Thus, the ratio of the calculation time spent for the preparation process is reduced, and the overhead can be reduced. For this reason, it is possible to improve the quality of the generated musical sound waveform sample and increase the number of simultaneous sounds.
Note that one section (corresponding to the size of the output buffer) between the calculation times is further divided into n equal parts, the sound waveform calculation is performed at the corresponding time interval, and the one section completed by the last nth calculation is performed. The reproduction unit (DMA) 9 may read out a musical sound waveform sample as a unit.
[0022]
Next, the tone generation method according to the second embodiment of the present invention will be described.
In the musical tone generation method according to the second embodiment of the present invention, a plurality of musical sound waveform samples are collected in the musical tone generation process of each tone generation channel in which the CPU 1 executes an application program for generating musical sounds, as in the first embodiment. In addition, every time an input data, in this example, a MIDI event, is received by the MIDI interface 5, the sound waveform calculation up to that point is performed. Then, at a predetermined calculation time, the sound waveform calculation is performed only for uncalculated musical sound waveform samples among a plurality of predetermined musical sound waveform samples (samples for one output buffer).
[0023]
This is because each sound waveform calculation is performed for a sound channel that is sounding, and there is a key-on event or key-off event (pitch bend, volume change) that changes the sound generation mode according to the input data therein. The sound generation channel requires more calculation processing than the sound generation channel that continues sound generation without changing the correspondence.
In this case, if the calculation time is set at regular intervals, when the input data increases, the calculation time is occupied by the sound generation channels whose sound generation mode changes, and as a result, the number of sound generation channels that can be calculated decreases. It will be.
In particular, a sound generation channel for starting sound generation requires many initial setting processes such as an address counter, initial settings of various envelope generators, and F number generation, and takes a long calculation processing time.
[0024]
The second embodiment will be further described with reference to the timing chart shown in FIG. 12. The output buffer has the above-described double buffer configuration, and these two output buffers are designated as A and B. Is shown in FIG. The time required for reproduction of each of the buffers A and B is T A And T B And T A = T B It is said that.
First, the time range t to be calculated for the output buffer A 0 ~ T 1 At time t as shown in FIG. a When the two MIDI events are received by the MIDI receiving unit, the sound source driver unit performs processing as shown in FIG. 5B, and further, t as shown in FIG. 0 ~ T a Musical sound waveform sample A 1 Is calculated.
[0025]
The MIDI receiving unit includes a MIDI interface 5 that receives an input MIDI event, and writes the data of the MIDI event in the input buffer together with the time of occurrence as described above. The tone generator driver unit receives data from the input buffer or input from the personal computer keyboard 6 and performs conversion from voicing parameters to tone generator parameters according to the tone generator channel assignment and input. The tone generator unit receives tone generator parameters, processes waveform data, and generates musical sound waveform samples that are actually pronounced. The LPF unit removes the aliasing noise component in the generated musical sound waveform sample. Then, the output of the LPF unit is written into the output buffers A and B.
The sound source drive, the sound source unit, and the LPF unit are functions realized when the CPU 1 executes an application program.
[0026]
Then time t b When one MIDI event is received by the MIDI receiving unit, the sound source driver unit similarly performs processing, and the sound source unit further performs t. a ~ T b Musical sound waveform sample A 2 Is calculated.
Then time t 1 When t is reached, t b ~ T 1 Musical sound waveform sample A 3 Is calculated. In this case, the time t a , T b When a key-on event is input at this time t including the initial sound generation process, 1 Is processed. Further, filtering processing is performed in the LPF unit, and generation of the musical sound waveform sample for the output buffer A is completed.
[0027]
Next, the time range t to be calculated for the output buffer B 1 ~ T 2 At time t as shown in FIG. c The three MIDI events are received by the MIDI receiver, but the sound source is the tone waveform sample A. 3 Is being calculated, the input data is placed in the input buffer until a calculation time is allocated. Musical sound sample A 3 When the calculation of is finished and the filter processing of the LPF unit is also completed, the data in the input buffer is processed by the sound source driver unit, and t 1 ~ T c Musical sound waveform sample B corresponding to the input between 1 Is calculated. In this case, even when the calculation process is delayed, the generation time of the input data is also written in the input buffer, so that the sound generation timing is not affected.
[0028]
Similarly, musical tone waveform sample B 1 4 new MIDI events are received during the calculation time of this, but this input data is also the tone waveform sample B 1 It is calculated after the calculation of.
As a result, the musical sound waveform sample B 2 Is t c ~ T d Musical sound waveform sample corresponding to the input in between, musical sound waveform sample B 3 Is t d ~ T e Musical sound waveform sample corresponding to the input in between, musical sound waveform sample B 4 Is t e ~ T 2 Musical sound waveform sample corresponding to the input between.
Furthermore, musical sound waveform sample A 5 Is t 2 ~ T 3 Musical sound waveform sample corresponding to the input between.
[0029]
As described above, in the second embodiment, when input data is generated, the sound waveform calculation up to that time is executed at that time, so that the calculation time of the musical sound waveform sample is dispersed. Therefore, since the processing at the calculation time performed every predetermined time does not increase, even if a large amount of input data that changes the sound generation mode such as a key-on event occurs, it is possible to prevent inconvenience such as a decrease in the number of simultaneous sound generations. be able to.
[0030]
Next, the musical sound waveform generation method according to the third embodiment of the present invention will be described.
By the way, when a calculation time is generated at a predetermined timing and a predetermined number of musical sound waveform samples are calculated and generated collectively, in order to generate musical sounds continuously, before the generation of waveform samples generated in the past is completed. Then, it is necessary to supply the subsequent predetermined number of waveform samples. Then, when the number of sound generation channels to be processed is large and the sound waveform calculation amount is too large, if the calculation for all channels is performed, the musical sound waveform samples are not supplied in time, and the sound is interrupted.
[0031]
The musical sound waveform generation method of the third embodiment is intended to solve this drawback, and it is determined whether or not the supply of the musical sound waveform sample is in time for the conversion timing of the DAC 10, and it is determined that it is not in time. In this case, a sound channel to be muted is selected from sound channels having low importance. For the selected tone generation channel, only the dump waveform sample corresponding to the initial period of the predetermined number of waveform samples is calculated in a short time.
As described above, since the musical sound waveform sample in the selected sound generation channel to be muted is not calculated by the short-term dump waveform, the calculation time of this sound channel is shortened, and the supply of the musical sound waveform sample as a whole is converted by the DAC 10. Be in time.
[0032]
The important sound is
(1) A loud sound at that time.
(2) A sound that has just started sounding during the attack part.
(3) The lowest sound (bass sound) when multiple part sounds are played.
(4) When multiple parts are played, the highest sound (lead sound).
(5) Solo part sound when multiple part sounds are played.
Is generally.
[0033]
Further, a modification of the third embodiment will be described. The sound generation channels to be calculated are ranked from the important sounds prior to the sound waveform calculation, and the sound generation calculations are performed in order from the important sounds according to the ranking. When the sound waveform calculation is not in time, the sound waveform calculation is interrupted in the middle, and the sound is generated only by the musical sound waveform samples generated up to that point.
In this way, even if it is necessary to abort the operation, the channel from which the sound disappears is said to be a channel generating a musical sound having a low importance and a relatively low influence.
In the third embodiment and its modifications, the sound waveform calculation may be performed every time input data is generated.
[0034]
Furthermore, the sound waveform calculation may be finally performed for one section without performing the sound waveform calculation every time input data is generated. In this case, it is preferable to trigger the calculation time to be advanced according to the number of input data.
Alternatively, one interval between calculation times is further divided into n equal parts, and the sound waveform calculation is performed at the corresponding time interval, and the musical sound waveform sample for one interval completed in the last nth calculation is played back as a unit. The unit (DMA) 9 may read the data.
[0035]
By the way, when a calculation time is generated at a predetermined timing and a plurality of musical sound waveform samples are calculated and generated together, or when a sound waveform calculation is performed every time input data is generated, musical sounds are continuously generated. For this purpose, it is necessary to supply subsequent waveform samples before the generation of waveform samples generated in the past. Then, if the number of sound generation channels to be processed is large and the amount of sound waveform calculation is too large, or the time required for processing other than the sound generation processing (sequencer processing, etc.), the musical sound waveform sample is supplied. If it was not in time, there was a possibility that the musical sound waveform sample being processed was read out and noise was generated.
Therefore, in the musical sound generating method of the fourth embodiment of the present invention, this is solved as follows.
[0036]
In the fourth embodiment of the present invention, the CPU 1 issues a command to pass the data in the output buffer to the reproduction unit (DMA) 9. In this case, the address of the output buffer itself that stores the generated predetermined number of musical sound samples can be set to 9 in the playback unit as a single readout section, or can be set as a repeated readout section that is repeatedly read. In addition, it is possible to set a read section reservation so that the address can be read following the read section that is currently being read.
In the present embodiment, the reservation of the read section is performed, and after the musical sound waveform calculation sample is generated, reservation registration is performed in the output buffer, and the waveform already being read is read out. When the calculation of the musical sound waveform sample is not completed, the reservation registration is not performed, so that it is possible to prevent the generation of noise due to the sound musical sound waveform sample being generated.
[0037]
In this case, the sound generation is temporarily interrupted, but the effect is small if the interrupted time is suppressed to several sample times at a sample frequency of 44.1 kHz, for example. In order to reduce the time to several sample times, the number of sounded channels may be controlled as described above. Further, when the process is completed, reservation registration is performed and a sound is generated.
It should be noted that the sound waveform calculation may not be performed every time input data is generated, but finally the sound waveform calculation may be performed for one section. In this case, it is preferable to trigger the calculation time to be advanced according to the number of input data.
Alternatively, one interval between calculation times is further divided into n equal parts, and the sound waveform calculation is performed at the corresponding time interval, and the sound waveform sample for one interval completed in the last n-th operation is reserved for sound generation. You may do it.
[0038]
As described above, when a calculation time is generated at a predetermined timing and a plurality of musical sound waveform samples are calculated and generated together, or when a sound waveform calculation is performed every time input data is generated, a musical tone is continuously generated. In order to generate the waveform sample, it is necessary to supply the subsequent waveform sample before the generation of the waveform sample generated in the past.
By the way, this calculation time is designated at a timing earlier than the end timing by the time required to execute the generation of the sound waveform based on the end timing of the musical sound waveform sample generated in the past. This end timing is detected by the CPU 1 confirming the state (flag) of the playback unit (DMA) 9 and detecting that the playback section of the musical sound waveform sample has shifted to the next section. There will be a time delay from when the state (flag) of (DMA) 9 changes until the CPU 1 detects it. Furthermore, since this time delay depends on the timing at which the CPU 1 executes the above-described detection, the time delay becomes uneven depending on the timing.
[0039]
Then, if the calculation time is generated based on the timing at which this uneven time delay occurs, the accurate calculation time cannot be generated.
In particular, if a timing that is greatly delayed by one time is detected, the calculation time generated based on it is short in the calculation time from the calculation start time to the pronunciation waveform supply. Will decrease.
Therefore, the musical tone generation method according to the fifth embodiment of the present invention solves this as follows.
[0040]
The CPU 1 stores a plurality of times when the state change of the reproducing unit (DMA) 9 is detected in the past. The next detection time is predicted by taking the average of the plurality of times. Since the predicted time is obtained by averaging the detection delay from the true end timing in the reproduction unit (DMA) 9, the timing before the predicted timing is set to a substantially accurate end timing. Can be detected as Then, the calculation time is generated based on the end timing.
In this way, the detected end timing is averaged and variation is reduced, so that the calculation time secured at each calculation time is uniformized, and a stable tone generation operation is performed.
[0041]
It should be noted that the sound waveform calculation may not be performed every time input data is generated, but finally the sound waveform calculation may be performed for one section. In this case, it is preferable to trigger the calculation time to be advanced according to the number of input data.
Alternatively, one interval between calculation times is further divided into n equal parts, and the sound waveform calculation is performed at the corresponding time interval, and the sound waveform sample for one interval completed in the last n-th operation is reserved for sound generation. You may do it.
[0042]
Next, the operation of the musical sound generation method and apparatus in which the elements of the first to fifth embodiments of the present invention described above are combined will be described with reference to flowcharts.
FIG. 6 is a flowchart of the main routine. When the main routine is started, initialization is performed in step S10. In the initial setting, the timer 4 and DMA are set, all sound channels are cleared, and tone color data and waveform data are prepared. Next, keyboard processing is performed in which input from the keyboard 6 is processed in step S20, and MIDI processing is performed in which processing according to the MIDI event input is performed in step S30. Further, in step S40, a sound source process is performed in which a sound waveform calculation for generating a musical sound waveform sample is performed, and other processes are performed in step S50. The process returns to step S20, and the processes in steps S20 to S50 are performed. Repeatedly in circulation (stationary loop).
These processes are executed simultaneously with other software using a multitasking method.
[0043]
Next, a flowchart of the MIDI reception interrupt process executed by the CPU 1 is shown in FIG. This process is activated by an interrupt when the MIDI interface 5 receives some MIDI event from the outside. This MIDI reception interrupt process is a process performed with priority over other processes. When this MIDI reception interrupt process is started, the received data received by the MIDI interface 5 is fetched in step S100, and the received data is paired with the time data at the time of reception in step S110. Are written in the input buffer described above in the format shown in FIG. 5B, and the process returns to the process when an interrupt occurs. As a result, the received MIDI data is sequentially written to the input buffer together with the reception time.
[0044]
Next, FIG. 8 shows a detailed flowchart of the MIDI processing executed as step S30 in the steady loop of the main routine.
When the MIDI processing is started, the input buffer is read in step S200, and it is confirmed whether there is unprocessed received data. If it is determined in step S210 that there is unprocessed received data, the process proceeds to step S220 to perform branching according to the content of the received data. If the received data is a note-on event, the process branches to step S230 and a note-on process is executed. If the received data is note-off, the process branches to step S240 and the note-off process is executed. If the received data is other data, the process branches to step S250 and the other process is executed. When any of these processes ends, the MIDI process ends. If it is determined in step S210 that there is no received data, the MIDI processing is terminated as it is.
[0045]
Next, FIG. 9A shows a flowchart of the note-on process executed in step S230 when the received data is a note-on event in the above-described MIDI process.
When the note-on process is started, in step S300, the note number of the note-on event in the input buffer is taken as NN, the velocity is taken as VEL, and the occurrence time of the note-on event is taken as TM. Captured in a register. Next, the sound generation assignment process of the note number NN taken into the register in step S310 is performed, and the assigned channel (ch) number is taken into the register as i.
[0046]
Further, in step S320, musical tone control data corresponding to the note number NN and velocity VEL is set in the ch register of ch number i fetched into the register among the ch registers shown in FIG. The tone control data to be set is the tone data (various ODs) corresponding to the MIDI channel that received the note-on event among the tone data for 16 tones shown in FIG. 2, and the values of the note number NN and velocity VEL. The sound generation data (various D) obtained by processing according to the above.
Here, the waveform designation data D in the sound generation data is obtained by referring to the tone range waveform designation data in the timbre data shown in FIG. 2 with the note number NN, and is used to generate a musical tone corresponding to the note number NN. Any one of the waveform data WD1 to the waveform data WDn is designated as the power waveform. After the musical tone control data is set, an ich note-on flag is set in step S330.
[0047]
Next, calculation generation of the sound waveform is executed in step S340. In this case, the calculation generation is performed before the time TM among all the waveforms to be written to the buffer X that is currently being prepared and an uncalculated waveform ( The partial waveform is executed, and the calculated partial waveform is written to the output buffer X. Here, the partial waveform corresponds to a sound generation waveform in a range in which calculation and generation are possible when new received data is detected in step S210 (data is determined). The waveform to be generated is a sound waveform up to the time of occurrence of the received note-on event TM, and the tone waveform that starts sounding in response to the note-on is not included in the sound waveform and is generated later It is included in the direction. Details of this processing are shown in FIG.
[0048]
The processing of step S340 and step S350 is the same as the musical sound waveform A described above with reference to FIG. 1 Or A 2 In step S350, initial setting of sound generation in ich is performed in the work area of the ch register based on the musical tone control data of ich set in the ch register in step S320 described above. Here, this work area displays a plurality of data current values necessary for waveform generation for each channel, such as current address values, various envelope current values and current states, and LFO waveform current values, which are necessary for the tone generation of each tone generation channel. Remember. When this sound generation initial process is completed, the note-on process is completed.
In the initial setting, initial setting such as setting of the start address to the current value of the waveform read address, generation of F number corresponding to the note number NN, and LFO, filter EG, volume EG, interpolation calculation, filter calculation, etc. Done. This initial setting is a process that requires calculation time as described above.
[0049]
Next, FIG. 9B shows a flowchart of the note-off process executed in step S240 when the received data is a note-off event in the above-described MIDI process.
When the note-off process is started, in step S400, the note number of the note-off event in the input buffer is taken into the register as NN, and the occurrence time of the note-off event is taken into the register as TM. Next, at step S410, the sound channel (ch) sounded by the note number NN is searched, and the number of the sound sound channel found is taken into the register as i.
[0050]
Next, in step S420, the ich note-on flag is defeated, and in step S430, the calculation of the sound waveform is executed. The calculation generation process in this case is the same process as step S340 described above, and an uncalculated waveform (partial waveform) before time TM is calculated and written to the output buffer X. Further, in step S440, an ich release start process is performed, and the note-off process ends. Here, the ich release start process is a process of rewriting the state of various envelopes of the ich in the work area and changing the state of tone generation in the ich to the released state.
[0051]
Next, a detailed flowchart of the sound source processing executed as step S40 in the steady loop of the main routine will be described with reference to FIG.
When the sound source processing is started, the playback state of the playback unit (DMA) 9 is checked in step S500. If the playback section has advanced, the process proceeds to step S510. If the playback section has not advanced, the process proceeds to step S520. .
The DMA 9 uses a waveform sample in a specific area on the RAM 3 designated by the CPU 1 as a reproduction area, sequentially reads out one sample from the first sample in the specific area every predetermined sampling period, and supplies it to the DAC 10 for reproduction. Further, the DMA 9 receives a reservation for designating another area to be reproduced next from the CPU 1 while reproducing the specific area. The reserved waveform samples in another specific area are sequentially read out one by one in the same manner by the DMA 9 after the reproduction of the specific area being reproduced is completed, and supplied to the DAC 10 for reproduction. Here, the next advance of the playback section means that the playback of the playback section previously designated as the specific area has been completed and the playback has moved to another playback section reserved as the next specific area. A plurality of specific areas can be reserved for reproduction at a time, and in this case, the plurality of specific areas are sequentially reproduced in the reserved order.
[0052]
In step S510, the next detection time is predicted from the time when the current progress is detected (current time) and the time detected in the past, and a time a predetermined time before the predicted detection time is designated as the next calculation time. . As a method of predicting the next detection time, a method of predicting by calculating an approximate value with a small error by the least square method based on a plurality of detection times including the current time and the past detection time, There is a method of predicting the state of change by approximating with another function such as a quadratic function. In the DMA 9, the time from when the progress occurs until it is detected at step S 510 is caused by a non-constant time delay due to the difference in the processing step position and the situation from time to time. It is included. Therefore, the calculation of the approximate function includes a process of averaging the variation in the detection times multiple times.
[0053]
The predetermined time is a time that is secured for generating a musical sound waveform, and how long it is determined is determined on the basis of the amount of computation required for the computation generation, such as the number of pronunciations to be secured, the quality of the computation, etc. Is done. The length of the predetermined time may be a fixed value, but may be set with the keyboard 6 or may be automatically determined by the CPU 1 in consideration of a plurality of processing programs running simultaneously.
[0054]
Next, in step S520, it is determined whether or not the calculation time has been reached by comparing the next calculation time with the current time indicated by the timer 4, and if it is determined that the calculation time has been reached, the step The processing from S530 to step S580 is executed.
First, in step S530, it is determined in which order the sound channel that is currently sounding is calculated. In the waveform calculation generation process in step S550, which will be described later, a sound waveform for a plurality of samples is generated for each channel for a sounding channel, but the processing order of the channels at that time is determined here. is there.
[0055]
Here, according to the method of the third embodiment described above, ordering is performed in order from the musically important musical tone and the musical tone that is difficult to disappear. Next, in step S540, it is determined whether or not all the sound generation channels that are sounding can be calculated within the scheduled calculation time (the predetermined time described in step S510). The sound generation channels to be muted are designated for one or more channels, and the amount of computation is reduced so that computation can be performed within the scheduled computation time. This process is a specific process based on the musical tone generation method of the third embodiment.
Next, in step S550, a sound waveform is calculated. Here, the sound waveform sample is calculated for the uncalculated portion of the buffer X so that the output buffer X currently being prepared is filled with the sound waveform data and is ready, and the sound waveform is calculated and written to the output buffer X. It is. This processing is performed by the sound waveform A described above with reference to FIG. 3 It corresponds to the operation generation processing such as.
[0056]
Each sample of the buffer X that is filled with the sound waveform and ready is further subjected to a low-pass filter (LPF) process in step S560, and the high-frequency component is cut. Next, in step S570, the area of the output buffer X that stores the LPF-processed sound generation waveform is reserved and registered in the waveform reproduction unit (DMA) 9 as a specific area that stores a reproduction waveform to be subsequently reproduced. As a result, the sound waveform of the specific area currently being reproduced and the specific area that has already been reserved is reserved to be reproduced after the reproduction is completed. In step S580, a new output buffer area different from the output buffer used as the buffer X until then is secured, all sample values are cleared to zero, and a sound waveform for the next section is created. Then, it is newly set as an output buffer X for preparation, and the sound source processing is completed.
If it is determined in step S520 that the calculation time has not been reached, the process ends.
[0057]
Next, FIG. 11 shows a flowchart of the sound waveform calculation process executed in the note-on process, the note-off process, and the sound source process. When this process is performed, the time range of the sound generation waveform in which the sound generation waveform is calculated in advance is determined as described above. That is, when this flow is executed as a MIDI data reception process such as note-on processing, the time range is the partial waveform described above. When this flow is executed during sound source processing, the buffer X This is the pronunciation waveform sample of the uncalculated part of all the samples. Note that when MIDI data is received, calculation is performed based on the calculation order determined in the immediately preceding sound source process, so the calculation order of the sound generation channels is not newly determined. When there is a new note-on, the order of all the other sound generation channels is lowered by one, and the new note-on channel is sequentially added to the first operation order.
[0058]
When the sound waveform calculation process is started, calculation preparation of the first musical sound waveform sample of the first sound channel (ch) in the calculation order is performed in step S600. The calculation preparation process is to prepare data such as the previous read address, various EG values, various EG states (attack, release, etc.), LFO value, etc. so that they can be used immediately for calculation, or to the internal register of the CPU 1 This is the process of loading. In step S610, LFO, filter G, and volume EG waveform calculations are performed to generate samples of the LFO, FEG, and AEG waveforms necessary for the calculation of the specified time range. The LFO waveform is added to the F number, FEG waveform, and AEG waveform to modulate each data. For the sound generation channel designated as the channel to be muted in step S540, a dump AEG waveform that rapidly attenuates within the above range is calculated and generated as the volume EG.
[0059]
Next, in step S620, the F number is repeatedly added using the previous read address as an initial value to generate a read address for each sample within the time range, and waveform storage in timbre data is performed based on the integer part of the read address. The waveform samples are read from the area WD, and the interpolated waveform samples are interpolated based on the decimal part of the read address to calculate all the interpolated samples within the time range. For example, when the time range corresponds to a time corresponding to 100 samples, processing is performed by this step for 100 samples. Here, the processing for a plurality of samples within the time range is repeated by adding the F number to the reading address and the processing from reading based on the address generated by the addition to the interpolation processing as unit processing. Therefore, the reading address is read into the CPU register only once as a whole, and the processing speed is increased.
[0060]
Further, in step S630, timbre filter processing is performed on the interpolated sample within the time range, and timbre control is performed based on the FEG waveform. In step S640, the timbre filter processing is performed on the filtered sample. Amplitude control processing is performed, and the amplitude control of the musical sound waveform sample is performed based on the AEG and the volume data, and the musical sound waveform samples for the time range subjected to the amplitude control processing are respectively set as samples corresponding to the output buffer X. The accumulated write process to be added is executed. In this process, for each sample within the time range, amplitude control and addition to the corresponding sample in the buffer X are continuously performed, so that the number of times the sample is taken into the CPU register can be reduced. , Processing speed has been improved.
[0061]
As described above, the musical sound waveform sample calculation generation process from step S620 to step S640 is basically performed so as to generate all the samples within the predetermined time range, but the volume EG in step S610. As a result of the waveform calculation, the range in which the level of the AEG waveform decreases and the volume is sufficiently attenuated is excluded from the calculation target, and the processing is reduced accordingly. In particular, sufficient sound attenuation is often obtained in the middle of the predetermined time range for the sound generation channel that has generated the dump AEG waveform in accordance with the instruction in step S540.
[0062]
In step S650, when it is desired to continue the waveform calculation process as it is, it is determined whether the waveform can be supplied to the DMA 9 within the time limit, and it is determined whether or not the calculation is terminated. Here, supplying the waveform within the time limit means that the DMA 9 that is reproducing the specific area for storing the previously generated sound waveform continues to the buffer X before the reproduction of the area is finished. A sound waveform is prepared, and reproduction of the area of the buffer X can be reserved. If it is not in time to continue as it is, it is determined that the calculation is to be aborted, the abort process is executed in step S670, and this sound waveform calculation process is terminated.
[0063]
If it is determined that the calculation can be continued, it is determined that it is not necessary to abort the calculation, and whether or not the calculation of the musical sound waveform for all the sound channels to be calculated in step S660 is completed. Is determined, and it is not determined that the calculation of all the sound channels has been completed, the first tone waveform sample of the sound channel assigned the next calculation order is designated in step S680, and the sound channel of the next sound channel is specified. Preparation for generating the musical sound waveform is performed. When the preparation is completed, the process returns to step S610, and the sound generation process over steps S610 to S640 is executed for the tone generation channel in the same manner as described above. In this way, the processing from step S610 to step S660 is repeatedly performed until the calculation of all sound generation channels is completed. For each sound channel processing, the generated samples for the predetermined time range are sequentially added to the corresponding samples in the buffer X in step S640.
[0064]
When it is determined in step S660 that the calculation generation process has been completed, the sound waveform calculation is ended. At this time, in the buffer X, an accumulated value obtained by accumulating the generated musical sound waveform samples of all sound generation channels to be calculated is newly stored for the number of samples corresponding to the time range.
On the other hand, if it is determined in step S650 that censoring is to be performed and the sound waveform calculation is completed through the censoring process in step S670, the generation of the calculation has been completed in buffer X by that time among all the sound generation channels to be calculated. Accumulated values of musical sound waveform samples for the sound generation channel are newly stored for the number of samples corresponding to the time range.
[0065]
For the sound generation channel assigned the calculation sequence after the truncation, the musical sound is not generated and generated, and as a result, the musical sound of the channel disappears. However, it is affected when the musical sound disappears by the processing of step S530. Since channels with fewer channels are considered to be the later calculation order, adverse effects due to truncation can be minimized. In the abort process in step S670, the channel register is set so that the channel that cannot be calculated once remains muted in the next and subsequent sound waveform calculations.
[0066]
When the sounding waveform calculation process described above is executed in step S340 of the note-on process shown in the flowchart of FIG. 9A, when the above-described sounding waveform calculation process ends, the process of step S350 of the flowchart is performed. Subsequently, the note-on process is completed.
When the sound waveform calculation process is executed in step S430 of the note-off process shown in the flowchart of FIG. 9B, when the above-described sound waveform calculation process ends, the process of step S440 of the flowchart continues. And the note-off process ends.
[0067]
Furthermore, when the sound waveform calculation process is executed in step S550 of the sound source process shown in the flowchart of FIG. 10, when the above-described sound waveform calculation process is completed, the processes after step S560 of the flowchart are continuously executed. When the process of step S580 is finished, the sound source process is finished.
These note-on processing, note-off processing, and sound source processing are repeatedly performed in circulation in the steady loop shown in FIG.
[0068]
In the musical sound generation method of the present invention, it goes without saying that data independent from each other, such as a step of instructing the generation of a plurality of musical sounds and a step of instructing the start of calculation at predetermined time intervals, for example. It is not necessary to perform the processes in the order described above, and the processes may be executed by changing the order of the processes.
In the musical sound generation method of the present invention, processing including a sound generation instruction requested from other application software can be performed using the idle time of the musical sound generation calculation processing described above. Other application software includes game software, communication software, and office processing software.
[0069]
In the above, the musical sound generating method of the present invention has been described as a program executed by the musical sound generating device shown in FIG. In addition, the musical sound generation method of the present invention may be executed in parallel with other application programs as one application program on a general-purpose computer that operates Windows (Microsoft OS for PCs) and other operating systems. .
[0070]
【The invention's effect】
The present invention is configured as described above. When the generation of new mixed sample data for each of a plurality of samples is completed, the new mixed sample data is reproduced after the reproduction of the previously generated mixed sample data is completed. Since the reservation is made so that the music is reproduced, it is possible to reproduce the musical sound without interruption.
Further, based on one-time reading of the control data from the channel register, waveform data for a plurality of samples of the sound generation channel from which the control data is read is generated, and the control data is written to the channel register after the waveform data is generated. Therefore, it is only necessary to prepare each tone generation channel once for the calculation of a plurality of musical sound waveform samples, and the overhead can be reduced. For this reason, the quality of the generated musical sound can be improved, and the number of simultaneously sounding channels can be increased.
Further, if the musical sound waveform sample is calculated every time a MIDI event is input, the calculation is distributed, and a decrease in the number of pronunciations due to the initial pronunciation process can be prevented.
[0071]
Furthermore, the performance information is accepted when performance information is generated, and the tone control or waveform generation based on the accepted performance information is included in the main step executed during the idle time of the acceptance processing. An increase in processing at the time when information is generated can be distributed within the free time, and a temporary increase in processing can be prevented.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a musical sound generating apparatus capable of executing a musical sound generating method of the present invention.
FIG. 2 is a diagram showing a timbre data area on a RAM.
FIG. 3 is a diagram showing an input buffer area on a RAM.
FIG. 4 is a diagram illustrating a ch register area on a RAM.
FIG. 5 is a diagram showing an output buffer area on a RAM.
FIG. 6 is a flowchart of a main routine of the musical sound generation method of the present invention.
FIG. 7 is a diagram showing a flowchart of a MIDI reception interrupt process of the tone generation method of the present invention.
FIG. 8 is a flowchart of MIDI processing in the main routine.
FIG. 9 is a flowchart of note-on processing and note-off processing in MIDI processing.
FIG. 10 is a flowchart of sound source processing in the main routine.
FIG. 11 is a diagram showing a flowchart of the sound waveform calculation processing of the musical sound generation method of the present invention.
FIG. 12 is a diagram showing a timing chart in the second embodiment of the present invention.
[Explanation of symbols]
1 CPU, 2 ROM, 3 RAM, 4 timer, 5 MIDI interface, 6 keyboard, 7 display, 8 hard disk, 9 playback unit, 10 DAC, 11 sound system

Claims (2)

1または複数の指定された楽音を発生するための1または複数の発生命令を受け取る第1のステップと、
前記発生命令に応答して、各指定された楽音を複数の発音チャンネルのうちの各1つに割り当て、該指定された楽音の制御データを各指定された楽音が割り当てられた各発音チャンネルに対応するチャンネルレジスタに書き込む第2のステップと、
演算開始命令を順次発行する第3のステップと、
各演算開始命令に応答して、前記チャンネルのチャンネルレジスタに記憶された制御データに基づき各発音チャンネル毎に複数サンプル分の波形データを生成する第4のステップと、
前記第4のステップで各発音チャンネルにつき生成された波形データを、前記複数サンプルの各サンプル毎に混合し、混合サンプルデータを生成する第5のステップと、
前記第5のステップで前記複数サンプルの各々についての新たな混合サンプルデータの生成が完了したとき、それ以前に生成された前記混合サンプルデータの再生が完了した後に、該新たな混合サンプルデータの再生が行われるように予約する第6のステップと、
各サンプリング周期毎に順次サンプル点の前記混合サンプルデータを、前記第6のステップの予約にしたがって順次出力する第7のステップと
を具備することを特徴とする音生成方法。
A first step of receiving one or more generation instructions for generating one or more specified musical sounds;
In response to the generation command, each specified musical sound is assigned to one of a plurality of sound generation channels, and the control data of the specified musical sound is associated with each sound generation channel to which each specified musical sound is assigned. A second step of writing to the channel register
A third step of sequentially issuing operation start instructions;
A fourth step of generating waveform data for a plurality of samples for each tone generation channel based on the control data stored in the channel register of the channel in response to each calculation start command;
A fifth step of mixing the waveform data generated for each sound generation channel in the fourth step for each sample of the plurality of samples to generate mixed sample data;
When the generation of new mixed sample data for each of the plurality of samples is completed in the fifth step, the reproduction of the new mixed sample data is completed after the reproduction of the previously generated mixed sample data is completed. A sixth step of making a reservation so that
A sound generation method comprising: a seventh step of sequentially outputting the mixed sample data of the sample points in each sampling period in accordance with the reservation of the sixth step.
複数の指定楽音を発生するための発生命令を発行する第1のステップと、
各指定楽音を複数の発音チャンネルの中から指定されたいずれかの発音チャンネルに割り当て、該指定楽音の制御データを各指定された発音チャンネルのチャンネルレジスタに書き込んで記憶させる第2のステップと、
所定時間間隔で演算開始命令を発行する第3のステップと、
前記第3のステップで発行された各演算開始命令に応じて各チャンネルの楽音生成演算を順次実行し、前記チャンネルのチャンネルレジスタに記憶された制御データに基づき各指定された発音チャンネル毎に複数サンプル分の波形データを算術的に生成する第4のステップと、
前記第4のステップで指定された発音チャンネルにつき生成された波形データを、各サンプル毎に混合し、混合サンプルデータを生成する第5のステップと、
前記複数サンプルの各々についての前記混合サンプルデータを、サンプリング周期毎にアナログ信号に変換する第6のステップとからなり、
前記第4のステップの楽音生成演算においては、各指定された発音チャンネル毎に、前記チャンネルレジスタからの1回の制御データの読出しに基づいて、該制御データの読み出された発音チャンネルの複数サンプル分の波形データを生成し、該波形データ生成後に前記チャンネルレジスタに制御データを書き込むようにしたことを特徴とする音生成方法。
A first step of issuing a generation instruction for generating a plurality of designated musical sounds;
A second step of assigning each designated musical tone to any one of the designated tone generation channels from among the plurality of tone generation channels, and writing and storing control data of the designated tone in the channel register of each designated tone generation channel;
A third step of issuing a calculation start command at a predetermined time interval;
In accordance with each calculation start command issued in the third step, the tone generation calculation for each channel is sequentially executed, and a plurality of samples are generated for each designated tone generation channel based on the control data stored in the channel register of the channel. A fourth step of arithmetically generating the minute waveform data;
A fifth step of mixing the waveform data generated for the sound generation channel designated in the fourth step for each sample to generate mixed sample data;
A sixth step of converting the mixed sample data for each of the plurality of samples into an analog signal for each sampling period;
In the musical tone generation calculation of the fourth step, a plurality of samples of the sound generation channel from which the control data is read out for each designated sound generation channel, based on a single read of the control data from the channel register. A sound generation method comprising: generating waveform data for a minute, and writing control data in the channel register after the waveform data is generated.
JP28390499A 1995-05-19 1999-10-05 Sound generation method Expired - Lifetime JP3627590B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28390499A JP3627590B2 (en) 1995-05-19 1999-10-05 Sound generation method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-144159 1995-05-19
JP14415995 1995-05-19
JP28390499A JP3627590B2 (en) 1995-05-19 1999-10-05 Sound generation method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP7299185A Division JP3003559B2 (en) 1995-05-19 1995-10-23 Music generation method

Publications (2)

Publication Number Publication Date
JP2000099019A JP2000099019A (en) 2000-04-07
JP3627590B2 true JP3627590B2 (en) 2005-03-09

Family

ID=26475668

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28390499A Expired - Lifetime JP3627590B2 (en) 1995-05-19 1999-10-05 Sound generation method

Country Status (1)

Country Link
JP (1) JP3627590B2 (en)

Also Published As

Publication number Publication date
JP2000099019A (en) 2000-04-07

Similar Documents

Publication Publication Date Title
US5895877A (en) Tone generating method and device
KR100319481B1 (en) Method and device for forming a tone waveform by combined use of different waveform sample forming resolutions
JP3637578B2 (en) Music generation method
US6326537B1 (en) Method and apparatus for generating musical tone waveforms by user input of sample waveform frequency
JP3293474B2 (en) Tone generation method
KR100500077B1 (en) Tone generating method and device
KR100302626B1 (en) Sound generating device and method
JP3632744B2 (en) Sound generation method
JP3003559B2 (en) Music generation method
JP3627590B2 (en) Sound generation method
JP3918817B2 (en) Music generator
JPH07121181A (en) Sound information processor
US6040516A (en) Tone generation system using computer software and storage medium storing the computer software
JP3637577B2 (en) Music generation method
JP3799711B2 (en) Musical sound generation method and musical sound generator
JP4103706B2 (en) Sound source circuit control program and sound source circuit control device
JP3000894B2 (en) Musical tone generation method
JPH11202866A (en) Method and device for musical sound generation
JP3409642B2 (en) Automatic performance device, automatic performance data processing method, and electronic information storage medium
JP7159583B2 (en) Musical sound generating device, musical sound generating method, musical sound generating program, and electronic musical instrument
JP3740717B2 (en) Tone generator and musical sound generation method
JP3603638B2 (en) Musical tone generation method
JP3716701B2 (en) Sound channel assignment method and apparatus
JP2833485B2 (en) Tone generator
JP2956552B2 (en) Musical sound generating method and apparatus

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041029

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041129

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101217

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101217

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121217

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 9

EXPY Cancellation because of completion of term