JPH0944160A - 楽音生成方法 - Google Patents

楽音生成方法

Info

Publication number
JPH0944160A
JPH0944160A JP7299185A JP29918595A JPH0944160A JP H0944160 A JPH0944160 A JP H0944160A JP 7299185 A JP7299185 A JP 7299185A JP 29918595 A JP29918595 A JP 29918595A JP H0944160 A JPH0944160 A JP H0944160A
Authority
JP
Japan
Prior art keywords
calculation
tone
musical
waveform
samples
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.)
Granted
Application number
JP7299185A
Other languages
English (en)
Other versions
JP3003559B2 (ja
Inventor
Genichi Tamura
元一 田邑
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26475669&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPH0944160(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP7299185A priority Critical patent/JP3003559B2/ja
Publication of JPH0944160A publication Critical patent/JPH0944160A/ja
Application granted granted Critical
Publication of JP3003559B2 publication Critical patent/JP3003559B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 (修正有) 【課題】楽音波形サンプルの演算時にオーバヘッドを少
なくする。 【解決手段】各発音チャンネルの楽音波形サンプルを演
算する時に、複数サンプル周期分まとめて生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演算処理装置を備
える汎用処理装置により楽音を生成できるようにした楽
音生成方法に関するものである。
【0002】
【従来の技術】従来の楽音生成装置は、通常、MIDI
(Musical Instrument Digital Interface)、鍵盤、あ
るいはシーケンサ等からの演奏情報を入力する演奏入力
部、楽音波形を生成する音源部、入力した演奏情報に応
じて前記音源部を制御するマイクロプロセッサ(CP
U)等から構成されていた。CPUは、入力した演奏情
報に応じて、チャンネルアサイン、パラメータ変換等の
音源ドライバ処理(演奏処理)を実行し、音源部の割り
当てたチャンネルに変換したパラメータと発音開始指示
(ノートオン)を音源部に供給する。音源部は、LSI
(Large Scale Integrated circuit)等の電子回路(ハ
ードウェア)で構成され、供給されたパラメータに基づ
いて楽音波形を生成する。このため、楽音生成装置は楽
音を生成するための専用機器となってしまい、楽音を生
成する時には専用の楽音生成装置を用意する必要があっ
た。
【0003】そこで、これを解決するために、CPUに
よりアプリケーションプログラムを実行し、アプリケー
ションプログラムに基づいて楽音を生成する楽音生成方
法が提案されている。この楽音生成方法においては、楽
音を生成するアプリケーションプログラムのほかに他の
アプリケーションプログラムを実行させることができ、
他の機能も実行させることのできる汎用の演算処理装置
により実行することができるものである。
【0004】
【発明が解決しようとする課題】ところで、演算処理装
置(CPU)を備える汎用の装置によりアプリケーショ
ンプログラムを実行させて楽音を生成する場合、従来は
1サンプリング周期(デジタル・アナログ変換器の変換
タイミング)毎に各チャンネルの楽音波形サンプルを発
音チャンネル分演算生成するようにしている。従って、
CPUは各発音チャンネルの処理を行う場合、まず、前
回の当該発音チャンネルの演算に用いた各種レジスタ値
をメモリからCPUのレジスタに読み出す等の準備処理
が行われる。また、当該発音チャンネルの楽音生成処理
後には次回の処理のため、前記レジスタ値をメモリに書
き込む必要がある。すなわち、各発音チャンネルの楽音
波形サンプルの演算処理を1サンプルずつ生成するよう
にしていたため、楽音を生成する楽音生成処理以外の、
準備処理に多くのCPUの演算時間が費やされ(オーバ
ヘッドが大きくなる)、演算効率が悪くなり応答や楽音
生成処理が遅くなるという問題点があった。
【0005】また、上記楽音生成方法において、演奏処
理とは、入力した演奏情報に基づき、生成される楽音を
制御する制御情報を作成する処理である。他方、音源処
理とは、作成された制御情報に基づき楽音の波形データ
を生成する処理である。例えば、通常は押鍵検出等の演
奏処理を実行し、この演奏処理に対して各サンプリング
周期で音源処理を割り込み実行して、1サンプル分の波
形データを生成した後、演奏処理に復帰するようにして
いる。
【0006】演奏情報(MIDI)は、演奏者の演奏操
作やシーケンサでのイベントの再生により発生し、演奏
情報が発生した場合には演奏処理により演奏情報が処理
される。つまり、演奏情報の発生した時点では、CPU
は、通常の音源処理に加えて演奏処理を実行しなければ
ならないため、非定期的に発生する演奏情報により、演
算量が一時的に増加することになる。しかしながら、従
来の楽音生成方法においてはこれに対応しておらず、音
源処理は、演奏情報のあるなしにかかわらず定期的に優
先実行され、場合によっては演奏処理が遅れてしまうと
いう問題点があった。なお、このような演奏処理の遅れ
を防止するために、演奏処理の優先度を上げることが考
えられるが、このようにすると今度は、一時的に発音数
が減少したり、楽音波形が途切れてしまうという問題が
発生することになる。
【0007】そこで、本発明はCPUのオーバヘッドを
少なくすることのできる楽音生成方法を提供することを
目的としている。また、本発明は一時的に処理量が増加
しないようにした楽音生成方法を提供することを目的と
している。
【0008】
【課題を解決するための手段】前記目的を解決するため
に、本発明の楽音生成方法は、複数の楽音の発生を指示
する第1のステップと、指示された楽音をいずれかのチ
ャンネルに割り当て、該楽音の制御データを割り当てた
チャンネルレジスタに書き込んで記憶させる第2のステ
ップと、所定時間間隔で演算開始を指示する第3のステ
ップと、前記第3のステップにおける演算開始の指示に
応じて、各チャンネルの楽音生成演算を順次実行し、前
記チャンネルレジスタに記憶された複数チャンネル分の
制御データに基づき複数サンプル分の波形データを生成
する第4のステップと、各サンプル毎に、生成された複
数チャンネル分の波形データを混合し、複数サンプル分
の混合サンプルを生成する第5のステップと、該複数サ
ンプル分の混合サンプルを、サンプリング周期毎にアナ
ログ信号に変換する第6のステップとからなり、前記第
4のステップの楽音生成演算においては、各発音チャン
ネル毎に、前記チャンネルレジスタからの1回の制御デ
ータの読出しに基づいて、該制御データの読み出された
発音チャンネルの複数サンプル分の波形データの生成
と、前記チャンネルレジスタへの前記波形データ生成後
の制御データの書き込みを行うようにしたものである。
【0009】また、前記楽音生成方法において、前記複
数の楽音の内の各楽音の発生の指示に応じて、途中演算
開始を指示する第7のステップをさらに備え、前記第4
のステップにおいて、前記途中演算開始の指示に応じ
て、生成済の波形データの末尾から前記楽音の発生の指
示時点までの区間に対応する複数サンプルの波形データ
を生成するようにしたものである。
【0010】次に、本発明の他の楽音生成方法は、発音
指示された楽音をいずれかのチャンネルに割り当て、該
楽音の制御データを割り当てたチャンネルレジスタに書
き込んで記憶する第1のステップと、所定時間間隔で演
算開始を指示する第2のステップと、前記第2のステッ
プにおける演算開始の指示に応じて、前記チャンネルレ
ジスタに記憶された複数チャンネル分の制御データに基
づき複数サンプル分の波形データを生成する第3のステ
ップと、各サンプル毎に、生成された複数チャンネル分
の波形データを混合し、複数サンプル分の混合サンプル
を生成する第4のステップと、該複数サンプル分の混合
サンプルを、サンプリング周期毎にアナログ信号に変換
する第5のステップと、前記第1のステップないし第5
のステップの処理の空き時間を利用して複数の楽音の発
音指示を含む処理を行う第6のステップとからなり、前
記第3のステップにおいては、楽音生成中のチャンネル
の楽音生成演算のみを行うようにしたものであり、ま
た、前記他の楽音生成方法において、制限時間を検出す
る第7のステップと、該制限時間内に、演算すべき全チ
ャンネルの演算が完了するか否か判定し、完了しないと
判定された場合に、演算すべきチャンネルの内のいずれ
かのチャンネルの消音を指示する第8のステップをさら
に備えるようにしたものである。
【0011】次に、本発明のさらに他の楽音生成方法
は、複数の楽音の発生を指示する第1のステップと、指
示された楽音をいずれかのチャンネルに割り当て、該楽
音の制御データを割り当てたチャンネルレジスタに書き
込んで記憶させる第2のステップと、前記各チャンネル
で生成する楽音の重要度に応じて、複数のチャンネルの
演算順序を決定する第3のステップと、所定時間間隔で
演算開始を指示する第4のステップと、前記第4のステ
ップにおける演算開始の指示に応じて、前記チャンネル
レジスタに記憶された複数チャンネル分の制御データに
基づき複数サンプル分の波形データを生成する第5のス
テップと、各サンプル毎に、生成された複数チャンネル
分の波形データを混合し、複数サンプル分の混合サンプ
ルを生成する第6のステップと、該複数サンプル分の混
合サンプルを、サンプリング周期毎にアナログ信号に変
換する第7のステップとからなり、前記第5のステップ
において、決定された演算順序に従って、各発音チャン
ネル毎の楽音生成を行うと共に、実行中の楽音生成が間
に合わず、前記第7のステップにおいて変換された前記
アナログ信号が途切れるおそれがある場合には、前記演
算順序の途中の発音チャンネルの時点で該楽音生成演算
を終了することにより、前記アナログ信号が途切れない
ようにしたものである。
【0012】本発明のさらに他の楽音生成方法は、演奏
情報を供給する供給ステップと、波形データの生成を行
うメインステップと、前記供給ステップより演奏情報が
供給された時、前記メインステップを一時的に中断し、
供給された演奏情報の受入処理を実行し、その完了後に
再び前記メインステップを中断したところからスタート
させる割込ステップと、生成された波形データに基づ
き、演算生成時点より後のタイミングで対応する楽音を
発生させる楽音発生ステップとを含み、前記メインステ
ップは、前記受入処理された演奏情報に基づいて楽音制
御データを生成する演奏情報処理ステップと、前記楽音
制御データに基づいて波形データを演算生成する音源処
理ステップを含むようにした演算装置で実行されるもの
である。
【0013】このような本発明によれば、複数の楽音波
形サンプルの演算について1回だけ各発音チャンネルの
準備処理を行えば良いため、オーバヘッドが小さくする
ことができる。このため、生成された楽音の質を向上す
ることができると共に、同時発音チャンネル数を増加す
ることができる。また、楽音波形サンプルの演算をMI
DIイベントが入力される毎に行うようにすると、演算
が分散されるようになり、発音初期処理による発音数の
減少を防止することができる。さらに、生成中の発音チ
ャンネルの内、楽音のレベル(AEG波形)が十分に減
衰したチャンネルは、その時点より演算対象から外され
て、非発音チャンネルとなるようにしている。
【0014】さらにまた、演奏情報の発生時に演奏情報
の受入処理を行い、受け入れた演奏情報に基づく楽音制
御あるいは波形生成が、該受入処理の空き時間に実行さ
れるメインステップに含まれるようにしたので、演奏情
報が発生した時点での処理の増加分を前記空き時間内に
分散させることができ、一時的な処理の増加を防止する
ことができる。
【0015】
【発明の実施の形態】本発明の楽音生成方法の各実施の
形態を実行することのできる楽音生成装置の構成を図1
に示す。この図において、1はアプリケーションプログ
ラム等を実行して楽音波形サンプルの生成等の各種制御
を行うマイクロプロセッサ(CPU)、2はプリセット
音色データ等が記憶されているリードオンリメモリ(R
OM)、3はCPU1のワークメモリエリアや音色デー
タエリア、入力バッファエリア、チャンネルレジスタエ
リア、出力バッファエリア等の記憶エリアを有するラン
ダムアクセスメモリ(RAM)4は時刻を指示すると共
に、タイマ割り込み処理のタイミングをCPU1に指示
するタイマ、5はMIDIイベントが入力されると共
に、生成されたMIDIイベントを出力するMIDIイ
ンターフェース、6は英字、かな、数字、記号などのキ
ーと備えるいわゆるパソコン用のキーボードである。
【0016】7はユーザが楽音生成装置と対話するため
のディスプレイ(モニタ)、8は楽音を生成するプログ
ラム等のアプリケーションプログラムがインストールさ
れていると共に、楽音波形サンプルを生成するために使
用する楽音波形データ等が記憶されているハードディス
ク(HDD)、9はRAM3の一部のCPUにより指定
されたエリアに記憶されている楽音波形サンプルのデー
タをCPU1を介することなく直接に受渡を行い、一定
のサンプリング周期(例えば、48kHz)毎にデジタ
ル・アナログ変換器(DAC)10に供給する再生部
(DMA;DirectMemory Access)、10は楽音波形サ
ンプルのデータを受け取りアナログ信号に変換するデジ
タル・アナログ変換器(DAC)、11はDAC10か
ら出力されたアナログ信号に変換された楽音信号を放音
するサウンドシステムである。以上の構成はパソコン、
ワークステーション等と同等であり、それらの上で本発
明の楽音発生方法を実施することができる。
【0017】前記したようにRAM3は種々のデータが
記憶されるエリアを有しているが、その内の音色データ
が記憶されるエリアを図2に、入力バッファのエリアを
図3に、チャンネルレジスタのエリアを図4に、出力バ
ッファのエリアを図5に示す。図2に示すエリアにおい
て、PD1,PD2,・・・,PD16は16種類分の
音色データであり、それぞれの音色データは各音域の波
形を指定するデータ(各音域波形指定)、ビブラート等
をかける時に使用するLFO(Low FrequencyOscillato
r)制御用のデータ(LFO制御OD)、音色フィルタ
特性を制御するフィルタエンベロープの発生制御用のデ
ータ(FEG制御OD)、振幅を制御するエンベロープ
の発生制御用のデータ(AEG制御OD)、ベロシティ
により楽音の立ち上がりの速さ等を変えるタッチ制御用
のデータ(タッチ制御OD)、その他のデータ(その他
OD)からなっている。
【0018】なお、ODはオリジナルデータであること
を示しており、発音指示時のタッチデータ,音高データ
等に応じてこれらのオリジナルデータに加工を施して音
源が使用する発音用のデータを作成するようにしてい
る。また、WD1,WD2,・・・,WDnは波形デー
タであり、入力される音高データに応じて、PD1,P
D2,・・・,PD16の音色データにおける各音域波
形指定データによりいずれかの波形データが指定され
る。
【0019】次に図3に示す入力バッファのエリアには
MIDIインターフェース5を介して入力されるノート
オン、ノートオフや各種イベントのMIDIイベントデ
ータID1,ID2,ID3,・・・が順次書き込ま
れ、このMIDIイベントデータID1,ID2,ID
3,・・・が読み出されることによりそのイベント処理
が楽音生成装置内において実行される。このMIDIイ
ベントデータID1,ID2,ID3,・・・は、MI
DIイベントのデータ内容(例えば、データ1内容)
と、そのデータの発生時刻(データ1発生時刻)とによ
り構成される。この発生時刻はMIDIイベントデータ
受信時にタイマ4の現在時刻を取り込むことにより知る
ことができる。
【0020】次に図4に示すエリアは、それぞれ互いに
独立した複数の楽音の生成を制御するためのデータを記
憶するチャンネル(ch)レジスタとして使用され、こ
の例では1ch,2ch,・・・,32chの32チャ
ンネル分のエリアが用意されている。各チャンネルのエ
リアはノートナンバ、波形指定データ(波形指定D)、
LFO制御データ(LFO制御D)、フィルタエンベロ
ープ制御データ(FEG制御D)、振幅エンベロープ制
御データ(AEG制御D)、ノートオンデータ、その他
のデータ(その他D)、およびCPU1がプログラム実
行時に使用するワークエリアからなっている。この波形
指定D、LFO制御D、FEG制御D、AEG制御Dは
前記したオリジナルデータに加工が施された発音用のデ
ータである。
【0021】次に図5に示すエリアは複数の出力バッフ
ァ用のエリアであり、順次交代して発音波形生成用の出
力バッファXとして使用されている。この出力バッファ
は、後述するように演算処理により生成された各発音チ
ャンネルの楽音波形サンプルデータSD1,SD2,S
D3,・・・が生成される毎にチャンネル累算され格納
される。出力バッファのいずれかが発音波形生成用の出
力バッファXとして指定され、波形生成演算に使用され
る。この出力バッファXは2つ以上用意される。最も簡
単な構成としては出力バッファXを2個とし、片方に格
納されているデータを再生部(DMA)9に渡して再生
している間に、もう片方に演算した次の楽音波形サンプ
ルのデータを格納するダブルバッファ構成とすることが
できる。
【0022】なお、出力バッファのサイズは、100ワ
ード、500ワード、1Kワード、5Kワード等任意に
設定することができるが、サイズを大きくすると発音に
遅れを生じ、サイズを小さくすると時間的マージンが減
少し、一時的な演算量の増加時に応答が悪くなることに
なる。そこで、リアルタイム性が要求されない、例えば
シーケンサ演奏等の場合は、演奏タイミングを前にずら
すことにより発音遅れを吸収できるため、出力バッファ
のサイズを大きくすることができる。一方、リアルタイ
ムの演奏が必要とされる、例えば鍵盤演奏等の場合は、
発音遅れを防止するため、バッファサイズは100〜2
00ワードとするのが好適である。以上は、再生のサン
プリング周波数が40kHz〜50kHzの場合であ
り、サンプリング周波数を低く設定する場合は、発音遅
れを防止するためもっと小さいサイズにする必要があ
る。
【0023】次に、本発明の楽音生成方法の第1の実施
の形態ないし第5の実施の形態を説明するが、各実施の
形態は前記図1に示す楽音生成装置によりそれぞれ実行
することができるものである。本発明の第1の実施の形
態の楽音生成方法は、CPU1が楽音を生成するアプリ
ケーションプログラムを実行する各発音チャンネルの楽
音生成処理において、複数楽音波形サンプル、例えば1
00楽音波形サンプルまとめて生成するようにしたもの
である。すなわち、各発音チャンネルの処理において、
DAC10のサンプリング周期の例えば100サイクル
分まとめて楽音波形サンプルが生成されるようになる。
【0024】そして、所定の計算時刻毎に全発音チャン
ネル分の楽音生成処理が実行され、生成された複数の楽
音波形サンプルが100サンプルとされた場合は、DA
C10の100サンプリング周期分のチャンネル累算値
として順次累算され、前記した出力バッファに記憶され
る。出力バッファに記憶された楽音波形サンプルは、全
発音チャンネル分の累算完了後に再生部(DMA)9に
より、前記サンプリング周期毎に1サンプルずつ読み出
され、DAC10に供給されてサウンドシステム11か
ら発音される。なお、計算時刻は、複数の出力バッファ
を交代して用いて楽音生成処理を実行した場合に、楽音
波形サンプルが途切れず読み出し再生できる間隔で発生
されるように制御されている。
【0025】この第1の実施の形態の楽音生成方法によ
れば、各発音チャンネルの準備処理は、まとめて生成さ
れる複数の楽音波形サンプルの演算について1回だけ行
えば良いため、全体の演算時間の内でこの準備処理に費
やされる演算時間の割合が減少し、オーバヘッドを小さ
くすることができる。このため、生成される楽音波形サ
ンプルの質の向上や同時発音数を増加することができ
る。なお、計算時刻間の1区間(出力バッファのサイズ
に相当)をさらにn等分して、それに対応する時間間隔
で発音波形演算を行い、最後のn個目の演算で完成した
1区間分の楽音波形サンプルを単位として、再生部(D
MA)9が読み出すようにしてもよい。
【0026】次に、本発明の第2の実施の形態の楽音生
成方法の説明を行う。本発明の第2の実施の形態の楽音
生成方法は、前記第1実施例と同様にCPU1が楽音を
生成するアプリケーションプログラムを実行する各発音
チャンネルの楽音生成処理において、複数の楽音波形サ
ンプルをまとめて生成するようにしているが、さらに加
えて入力データ、この例ではMIDIイベントがMID
Iインターフェース5において受信される毎に、その時
点までの発音波形演算を行うようにしている。そして、
所定の計算時刻には予め定められた複数の楽音波形サン
プル(1つの出力バッファ分のサンプル)の内、未演算
の楽音波形サンプルのみの発音波形演算を行うようにし
たものである。
【0027】これは、各発音波形演算では発音している
発音チャンネルについての演算を行うのであるが、その
中の入力データに応じて発音態様が変化するキーオンイ
ベントあるいはキーオフイベント(ピッチベンド,音量
変化)等がある発音チャンネルにおいては、対応を変化
させずに発音を継続する発音チャンネルに比べて多くの
演算処理が必要となる。この場合、一定時間おきの計算
時刻とすると、入力データが増加した時に、演算時間が
発音態様が変化する発音チャンネルに多く占められてし
まうため、結果的に演算できる発音チャンネル数が減少
してしまうことになる。特に、発音を開始する発音チャ
ンネルについては、アドレスカウンタ、各種エンベロー
プ発生器の初期設定、Fナンバ発生等多くの初期設定処
理が必要であり、演算処理時間が多くかかる。
【0028】この第2の実施の形態を図12に示すタイ
ミングチャートを参照しながらさらに説明すると、出力
バッファは前記したダブルバッファ構成とされており、
この2つの出力バッファがA,Bとされてその読み出し
タイミングが同図(e)に示されている。そして、各バ
ッファA,Bの再生に要する時間がTA およびTB とさ
れており、TA =TB とされている。まず、出力バッフ
ァA用の計算対象となる時刻範囲t0 〜t1 において、
同図(a)に示すように時刻ta でMIDIイベントを
2つMIDI受信部が受信すると、同図(b)に示すよ
うに音源ドライバ部で処理が行われ、さらに同図(c)
に示すように音源部によりt0 〜ta 間の楽音波形サン
プルA1 が計算される。
【0029】なお、MIDI受信部は入力されたMID
Iイベントを受信するMIDIインターフェース5を含
み、前記したようにMIDIイベントのデータを入力バ
ッファに発生時刻と共に書き込む。音源ドライバ部は入
力バッファのデータあるいはパソコンキーボード6より
の入力を受け取り、音源チャンネルアサインおよび入力
に従ってボイシングパラメータから音源パラメータへの
変換を行う。また、音源部は音源パラメータを受け取
り、波形データを加工して実際に発音する楽音波形サン
プルを生成する。LPF部は生成された楽音波形サンプ
ル中の折り返しノイズ成分を除去する。そして、LPF
部の出力が出力バッファA,Bに書き込まれる。なお、
音源ドライブ、音源部、LPF部はCPU1がアプリケ
ーションプログラムを実行することにより実現される機
能である。
【0030】次いで、時刻時刻tb でMIDIイベント
が1つMIDI受信部において受信されると、同様に音
源ドライバ部で処理が行われ、さらに音源部によりta
〜tb 間の楽音波形サンプルA2 が計算される。その
後、時刻t1 に達すると音源部によりtb 〜t1 間の楽
音波形サンプルA3 が計算される。この場合、時刻t
a ,tb においてキーオンイベントが入力されると、そ
の発音初期処理も含めてこの時刻t1 において演算処理
される。さらに、LPF部においてフィルタ処理が行わ
れて出力バッファA用の楽音波形サンプルの生成が終了
する。
【0031】次に、出力バッファB用の計算対象となる
時刻範囲t1 〜t2 において、同図(a)に示すように
時刻tc で新たなMIDIイベントを3つMIDI受信
部が受信するが、音源部は楽音波形サンプルA3 を計算
中なので、入力データは計算時間が割り当てられるまで
入力バッファにおかれる。そして、楽音波形サンプルA
3 の計算が終了し、さらにLPF部のフィルタ処理も完
了すると、入力バッファ中のデータが音源ドライバ部で
処理されて、音源部によりt1 〜tc 間の入力に対応す
る楽音波形サンプルB1 が計算される。この場合、計算
処理が遅れても入力データの発生時刻も入力バッファに
書き込まれているため、発音タイミングには影響しない
ようになる。
【0032】同様に、楽音波形サンプルB1 の計算時間
中に新たなMIDIイベントを4つ受信するが、この入
力データも楽音波形サンプルB1 の計算終了後に計算さ
れる。これにより、楽音波形サンプルB2 はtc 〜td
間の入力に対応する楽音波形サンプルとなり、楽音波形
サンプルB3 はtd 〜te 間の入力に対応する楽音波形
サンプルとなり、楽音波形サンプルB4 はte 〜t2
の入力に対応する楽音波形サンプルとなる。さらに、楽
音波形サンプルA5 はt2 〜t3 間の入力に対応する楽
音波形サンプルとなる。
【0033】このように第2の実施の形態は入力データ
が発生した場合は、その時点までの発音波形演算をその
時点で実行するようにしているため、楽音波形サンプル
の計算時間が分散される。従って、所定時間毎に行われ
る計算時間における処理が増加しないため、キーオンイ
ベント等の発音態様を変化させる入力データが多く発生
しても、同時発音数が減少する等の不都合が生じること
を防止することができる。
【0034】次に、本発明の第3の実施の形態の楽音波
形生成方法の説明を行う。ところで、所定のタイミング
で計算時刻を発生し、所定数の楽音波形サンプルをまと
めて演算生成するようにした場合、連続的に楽音を発生
するためには、過去に生成した波形サンプルの生成終了
以前に、それに続く該所定数の波形サンプルを供給する
必要がある。すると、処理すべき発音チャンネル数が多
くその発音波形演算量が多過ぎる場合、全チャンネル分
演算を実行すると、その楽音波形サンプルの供給が間に
合わず、楽音が途切れてしまうという欠点が生じる。
【0035】この第3の実施の形態の楽音波形生成方法
はこの欠点を解決しようとするものであって、楽音波形
サンプルの供給がDAC10の変換タイミングに間に合
うか否かを判定し、間に合わないと判定された場合は、
重要度の低い発音チャンネルから消音する発音チャンネ
ルを選定する。そして、選定された発音チャンネルにつ
いては演算時に、該所定数の波形サンプルのうちの初期
期間に対応するダンプ波形サンプルのみが短時間で演算
される。このように、選定された消音される発音チャン
ネルにおける楽音波形サンプルは、短期間のダンプ波形
しが演算しないので、この発音チャンネルの演算時間が
短縮され、全体として楽音波形サンプルの供給がDAC
10の変換タイミングに間に合うようになる。
【0036】なお、重要な音とは、 (1)その時点で音量の大きい音。 (2)アタック部再生中の発音を開始したばかりの音。 (3)複数パート音演奏されている場合、一番低い音
(ベース音)。 (4)複数パート演奏されている場合、一番高い音(リ
ード音)。 (5)複数パート音演奏されている場合におけるソロの
パート音。 とするのが一般的である。
【0037】また、前記第3の実施の形態の変形例を説
明すると、演算する発音チャンネルを発音波形演算に先
立って重要な音から順位付けし、その順位に従って重要
な音から順番に発音演算を行うようにし、発音波形演算
が間に合わない場合に、発音波形演算を途中で打ち切っ
て、その時点までに生成された楽音波形サンプルのみで
発音を行うようにしたものである。このようにすれば、
万が一演算打ち切りをする必要が生じた場合でも、それ
によって音の消えてしまうチャンネルは、重要度の低い
比較的影響の少ない楽音を生成しているチャンネルと云
うことになる。なお、第3の実施の形態およびその変形
例において、入力データが発生する毎に発音波形演算を
行うようにしてもよい。
【0038】さらに、入力データが発生する毎に発音波
形演算を行なわず、最後に1区間分まとめて発音波形演
算をするようにしてもよい。この場合、入力データの数
に応じて計算時刻を早めるようにトリガをかけるのが好
適である。または、計算時刻間の1区間をさらにn等分
して、それに対応する時間間隔で発音波形演算を行い、
最後のn個目の演算で完成した1区間分の楽音波形サン
プルを単位として、再生部(DMA)9が読み出すよう
にしてもよい。
【0039】ところで、所定のタイミングで計算時刻を
発生し、複数の楽音波形サンプルをまとめて演算生成す
るようにした場合、あるいは入力データが発生する毎に
発音波形演算を行なう場合、連続的に楽音を発生するた
めには、過去に生成した波形サンプルの生成終了以前
に、それに続く波形サンプルを供給する必要がある。す
ると、処理すべき発音チャンネル数が多くその発音波形
演算量が多過ぎる場合や、楽音生成処理以外の処理(シ
ーケンサ処理等)に時間が費やされた等の理由でその楽
音波形サンプルの供給が間に合わなかった場合、処理途
中の楽音波形サンプルが読み出されノイズが発音される
可能性があった。そこで、本発明の第4の実施の形態の
楽音発生方法においては、次のようにしてこれを解決し
ている。
【0040】本発明の第4の実施の形態において、再生
部(DMA)9にはCPU1が出力バッファのデータを
渡す指令を出すようにしている。この場合、生成した所
定数の楽音サンプルを記憶する出力バッファ自体のアド
レスを、一回の読み出し区間として再生部に9に設定し
たり、繰り返し読み出される繰り返し読み出し区間とし
て設定をすることができるが、さらに加えて、該アドレ
スを現在すでに読み出し中の読み出し区間に続けて読み
出せるよう読み出し区間の予約を設定することができ
る。本実施の形態では、この読み出し区間の予約によ
り、楽音波形演算サンプルが生成された後に出力バッフ
ァに予約登録が行われ、すでに読み出し中の波形に続け
てて読み出される。楽音波形サンプルの演算が終了しな
かった場合は、その予約登録が行われないので、処理途
中の楽音波形サンプルが発音されることによるノイズの
発生を防止することができる。
【0041】この場合、発音は一時途切れることになる
が、途切れる時間は、例えば44.1kHzのサンプル
周波数における数サンプル時間に抑えれば影響は小さ
い。数サンプル時間に抑えるには、前述したように発音
されているチャンネル数を制御すればよい。さらに、処
理が完了すると予約登録が行われて発音されるようにな
る。なお、入力データが発生する毎に発音波形演算を行
なわず、最後に1区間分まとめて発音波形演算をするよ
うにしてもよい。この場合、入力データの数に応じて計
算時刻を早めるようにトリガをかけるのが好適である。
または、計算時刻間の1区間をさらにn等分して、それ
に対応する時間間隔で発音波形演算を行い、最後のn個
目の演算で完成した1区間分の楽音波形サンプルの発音
予約を行うようにしてもよい。
【0042】前述したように、所定のタイミングで計算
時刻を発生し、複数の楽音波形サンプルをまとめて演算
生成するようにした場合、あるいは入力データが発生す
る毎に発音波形演算を行なう場合、連続的に楽音を発生
するためには、過去に生成した波形サンプルの生成終了
以前に、それに続く波形サンプルを供給する必要があ
る。ところで、この計算時刻は、過去に生成した楽音波
形サンプルの終了タイミングに基づいて、発音波形の生
成を実行するのに必要な時間分、その終了タイミングよ
り早いタイミングが指定される。この終了タイミング
は、CPU1が再生部(DMA)9の状態(フラグ)を
確認し、楽音波形サンプルの再生区間が次の区間に移行
したことを検知するようにして検出しているため、再生
部(DMA)9の状態(フラグ)が変化してからCPU
1がそのことを検知するまでに時間遅れが生じることに
なる。さらに、この時間遅れはCPU1が上述した検知
を実行するタイミングによるため、そのタイミングに応
じて不均一な時間遅れとなる。
【0043】すると、この不均一な時間遅れの生じてい
るタイミングに基づいて計算時刻を発生するようにする
と、正確な計算時刻が発生することができないこととな
る。特に、1度だけ大きく遅れたタイミングが検出され
ると、それに基づいて発生された計算時刻は演算開始時
刻から発音波形供給までの演算時間が短いことになるた
め、この場合は同時発音数が一時的に減少してしまうこ
とになる。そこで、本発明の第5の実施の形態の楽音生
成方法においては次のようにしてこれを解決している。
【0044】CPU1は過去に再生部(DMA)9の状
態変化が検出された時刻を複数記憶しておく。この複数
の時刻の時刻間の平均を取ることにより、次の検出時刻
を予測するようにする。この予測された時刻は、再生部
(DMA)9における真の終了タイミングからの検出遅
れが平均化されたものとされるので、予測されたタイミ
ングより所定時間前のタイミングを、ほぼ正確な終了タ
イミングとして検出することができる。そして、この終
了タイミングに基づいて計算時刻を発生するようにす
る。このように、検出される終了タイミングは平均化さ
れたものとなり、ばらつきが少なくなるので、毎計算時
刻に確保される演算時間も均一化され、安定した楽音生
成動作が実行されるようになる。
【0045】なお、入力データが発生する毎に発音波形
演算を行なわず、最後に1区間分まとめて発音波形演算
をするようにしてもよい。この場合、入力データの数に
応じて計算時刻を早めるようにトリガをかけるのが好適
である。または、計算時刻間の1区間をさらにn等分し
て、それに対応する時間間隔で発音波形演算を行い、最
後のn個目の演算で完成した1区間分の楽音波形サンプ
ルの発音予約を行うようにしてもよい。
【0046】次に、前記した本発明の第1の実施の形態
ないし第5の実施の形態の要素を1まとめにした楽音生
成方法および装置の動作をフローチャートを参照しなが
ら説明する。図6はメインルーチンのフローチャートを
示す図であり、メインルーチンがスタートされるとステ
ップS10にて初期設定が行われる。初期設定ではタイ
マ4やDMAの設定、全発音チャンネルのクリアや、音
色データおよび波形データ等の準備が行われる。次い
で、ステップS20にてキーボード6からの入力が処理
されるキーボード処理が行われ、ステップS30にて入
力されたMIDIイベントに応じた処理が行われるMI
DI処理が行われる。さらに、ステップS40にて楽音
波形サンプルが生成される発音波形演算等が行われる音
源処理が行われ、ステップS50にてその他の処理が行
われ、ステップS20に戻り、ステップS20ないしス
テップS50の処理が循環して繰返し行われる(定常ル
ープ)。これらの処理は、マルチタスクの方法を用いて
他のソフトと同時に実行される。
【0047】次に、CPU1の実行するMIDI受信割
込処理のフローチャートを図7に示す。この処理は、M
IDIインタフェース5が外部より何らかのMIDIイ
ベントを受信した際に割込により起動される。このMI
DI受信割込処理は、他の処理より優先して行われる処
理である。このMIDI受信割込処理が開始されると、
ステップS100にてMIDIインターフェース5によ
り受信された受信データが取り込まれ、ステップS11
0にてその受信データは受信された時点の時刻データと
組にして図3に示されるような形式で前述した入力バッ
ファに書き込まれるようにされて、割込発生時の処理へ
リターンされる。これにより、受信したMIDIデータ
は、順次、受信時刻と共に入力バッファに書き込まれる
ようになる。
【0048】次に、メインルーチンの定常ループでステ
ップS30として実行されるMIDI処理の詳細フロー
チャートを図8に示す。MIDI処理が開始されるとス
テップS200にて入力バッファを読みに行き、未処理
の受信データがあるかどうかの確認を行う。未処理の受
信データがあるとステップS210にて判断されると、
ステップS220に進み、受信データの内容に応じた分
岐を行う。受信データがノートオンイベントの場合は、
ステップS230に分岐されてノートオン処理が実行さ
れる。また、受信データがノートオフの場合は、ステッ
プS240に分岐されてノートオフ処理が実行され、受
信データがその他のデータの場合は、ステップS250
に分岐されてその他処理が実行される。そして、これら
のいずれかの処理が終了すると、MIDI処理は終了す
る。なお、受信データがないとステップS210にて判
断されると、そのままMIDI処理を終了する。
【0049】次に、前述したMIDI処理において、受
信データがノートオンイベントの場合にステップS23
0にて実行されるノートオン処理のフローチャートを図
9(a)に示す。ノートオン処理が開始されると、ステ
ップS300にて、入力バッファ中のそのノートオンイ
ベントのノートナンバがNNとして、ベロシティがVE
Lとして、それぞれレジスタに取り込まれ、そのノート
オンイベントの発生時刻がTMとしてレジスタに取り込
まれる。次いで、ステップS310にてレジスタに取り
込まれたノートナンバNNの発音割当処理が行われ、割
り当てられたチャンネル(ch)の番号がiとしてレジ
スタに取り込まれる。
【0050】さらに、ステップS320にて図4に示す
chレジスタのうちレジスタに取り込まれたch番号i
のchレジスタに、前記ノートナンバNN,ベロシティ
VELに応じた楽音制御データを設定する。設定される
楽音制御データは、図2に示す16音色分の音色データ
のうち、前記ノートオンイベントを受信したMIDIチ
ャンネルに対応した音色データ(各種OD)を、前記ノ
ートナンバNN,ベロシティVELの値に応じて加工し
て得られる発音用データ(各種D)である。ここで、発
音用データの中の波形指定データDは、図2に示す音色
データ中の音域波形指定データをノートナンバNNで参
照することにより求められ、該ノートナンバNNに対応
した楽音生成に用いるべき波形として、波形データWD
1から波形データWDnのうちのいずれか1つを指定す
る。前記楽音制御データの設定後、ステップS330に
てichのノートオンフラグを立てるようにする。
【0051】次に、ステップS340にて発音波形の演
算生成を実行するが、この場合の演算生成は、現在準備
中のバッファXに書き込むべき全波形のうち、時刻TM
以前で、かつ、未計算の波形(部分波形)について実行
され、算出された該部分波形を出力バッファXに書き込
むようにする。ここで、部分波形は、ステップS210
において新たな受信データが検出された時点で(データ
が確定し)演算生成が可能になる範囲の発音波形に相当
する。生成する波形は、受信したノートオンイベントの
発生時刻TMの時点までの発音波形であり、該ノートオ
ンに応じて発音開始する楽音波形は、該発音波形に含ま
れず、以後に生成される発音波形の方に含まれる。この
処理の詳細については、後述する図11に示されてい
る。
【0052】このステップS340およびステップS3
50の処理は、先に図12に関連して説明した楽音波形
1 あるいはA2 等の演算生成処理に対応するが、ステ
ップS350では、前述したステップS320でchレ
ジスタに設定されたichの楽音制御データに基づき、
ichにおける発音の初期設定をchレジスタのワーク
エリアに対して行う。ここで、このワークエリアは、各
発音chの楽音生成に必要な、アドレス現在値、各種エ
ンベロープ現在値および現在ステート、LFO波形現在
値等、各chの波形生成に必要な複数のデータ現在値を
記憶する。この発音初期処理が終了すれば、ノートオン
処理は終了する。なお、初期設定においては、波形読み
出しアドレス現在値へのスタートアドレスの設定、ノー
トナンバNNに応じたFナンバの発生、およびLFO、
フィルタEG、音量EG、補間演算、フィルタ演算等の
各初期設定が行われる。この初期設定は前記したように
演算時間を要する処理である。
【0053】次に、前述したMIDI処理において、受
信データがノートオフイベントの場合にステップS24
0にて実行されるノートオフ処理のフローチャートを図
9(b)に示す。ノートオフ処理が開始されると、ステ
ップS400にて、入力バッファ中のそのノートオフイ
ベントのノートナンバがNNとしてレジスタに取り込ま
れ、ノートオフイベントの発生時刻がTMとしてレジス
タに取り込まれる。次いで、ステップS410にてノー
トナンバNNで発音されている発音チャンネル(ch)
がサーチされ、見つかった発音chの番号がiとしてレ
ジスタに取り込まれる。
【0054】次に、ステップS420にてichのノー
トオンフラグを倒し、ステップS430にて発音波形の
演算生成が実行される。この場合の演算生成処理は、前
述したステップS340と同様の処理であり、時刻TM
以前の未計算波形(部分波形)を算出して出力バッファ
Xに書き込むようにする。さらに、ステップS440に
てichのリリース開始処理が行われてノートオフ処理
は終了する。ここで、ichのリリース開始処理とは、
ワークエリア中のichの各種エンベロープのステート
等を書き換え、ichにおける楽音生成の状態をリリー
ス状態に変化させる処理である。
【0055】次に、メインルーチンの定常ループでステ
ップS40として実行される音源処理の詳細フローチャ
ートを図10を参照しながら説明する。音源処理が開始
されると、ステップS500にて再生部(DMA)9の
再生状態をチェックし、再生区間が次に進んでいたらス
テップS510に進み、再生区間が進んでいない場合は
ステップS520に進む。DMA9は、CPU1により
指定されたRAM3上の特定エリアの波形サンプルを再
生エリアとして、所定のサンプリング周期毎にその特定
エリアの最初のサンプルから1サンプルづつ順次読み出
し、DAC10に供給し再生する。さらに、DMA9は
その特定エリアを再生しつつ、CPU1から次に再生す
べき別のエリアを指定する予約を受け付ける。予約され
た別の特定エリアの波形サンプルは、再生中の特定エリ
アの再生が完了した後、引き続いてDMA9により同様
に1サンプルづつ順次読み出され、DAC10に供給さ
れ再生される。ここで、再生区間が次に進むというの
は、先に特定エリアとして指定した再生区間の再生が完
了し、次の特定エリアとして予約された別の再生区間に
再生が移ったことを意味する。なお、一度に複数の特定
エリアを再生予約することが可能であり、その場合、複
数の特定エリアは予約した順に順次再生される。
【0056】ステップS510にて今回進行が検出され
た時刻(現在時刻)と過去に検出された時刻から次回の
検出時刻を予測し、予測された検出時刻より所定時間前
の時刻を次回の計算時刻として指定する。次回の検出時
刻の予測の仕方としては、現在時刻と過去の検出時刻を
含む複数回の検出時刻に基づき最小二乗法で誤差の少な
い近似値を求めて予測する方法や、複数回の検出時刻の
変化の様子を2次関数等、別の関数で近似して予測する
方法がある。DMA9では進行が発生してからステップ
S510で検出されるまでの時間は、その時々の処理ス
テップ位置、状況の違い等により、一定でない時間遅れ
が生じ、複数回の検出時刻には、一定でないばらつきが
含まれている。従って、前記近似関数の算出には、複数
回の検出時刻のばらつきを平均化する処理が含まれる。
【0057】前記所定時間は、楽音波形を生成するため
に確保される時間であり、どのくらいの長さにするか
は、確保したい発音数、演算のクォリティ等、その演算
生成に必要な演算量に基づいて決定される。前記所定時
間の長さは、固定値でもよいが、キーボード6で設定で
きるようにしたり、同時に走る複数の処理プログラムと
の兼ね合いでCPU1が自動的に決定するようにしても
よい。
【0058】次に、ステップS520にて次回の計算時
刻とタイマ4が指示する現在時刻とを比較することによ
り、計算時刻に達したか否かが判断され、計算時刻に達
したと判断された場合はステップS530ないしステッ
プS580の処理を実行する。まず、ステップS530
にて現在発音中の発音チャンネルを、どの順番で演算す
るか決定する。後述するステップS550の波形演算生
成処理では、発音中のチャンネルについて、1チャンネ
ルづつ複数サンプル分の発音波形を生成していくわけで
あるが、その時のチャンネルの処理順をここで決めてい
るわけである。
【0059】ここでは、前記した第3の実施の形態の方
法に従って、音楽的に重要な楽音、消えてしまっては困
る楽音から順番に演算を行うように順番付けをする。次
いで、ステップS540にて発音中の全発音チャンネル
を、予定した演算時間(ステップS510で説明した所
定時間)内に演算可能か否かが判定され、不可能の場合
は演算順序が最後の発音チャンネルから消音すべき発音
チャンネルを1ないし複数チャンネル分指定し、予定し
た演算時間内に演算可能になるよう演算量を削減する。
この処理は、前記した第3の実施の形態の楽音生成方法
に基づく具体的な処理である。次いで、ステップS55
0にて発音波形の演算が行われる。ここでは、現在準備
中の出力バッファXが発音波形データで満たされ、準備
完了となるように、バッファXの未計算分について楽音
波形サンプルが演算されて発音波形が算出され、出力バ
ッファXに書き込まれる。この処理は、先に図12に関
連して説明した発音波形A3 等の演算生成処理に対応す
る。
【0060】発音波形で満たされ準備完了となったバッ
ファXの各サンプルは、さらに、ステップS560にて
ローパスフィルタ(LPF)処理が施され、高域成分が
カットされる。次いで、ステップS570にて波形再生
部(DMA)9に、LPF処理済の発音波形を記憶する
出力バッファXのエリアが、続いて再生すべき再生波形
を記憶する特定エリアとして予約登録される。これによ
り、現在再生中の特定エリアおよび既に予約されている
特定エリアの発音波形が再生完了した後に再生されるよ
う予約される。そして、ステップS580にて、それま
でバッファXとして使用していた出力バッファとは別の
新規の出力バッファ領域が確保され、全てのサンプル値
がゼロにクリアされて、次の区間の発音波形を作成し準
備するための出力バッファXとして新たに設定され、音
源処理が終了する。なお、ステップS520にて計算時
刻に達していないと判断された場合は、そのまま終了す
る。
【0061】次に、ノートオン処理、ノートオフ処理お
よび音源処理にて実行される発音波形演算処理のフロー
チャートを図11に示す。この処理が行われる場合に
は、既に説明したように前もって発音波形が演算される
発音波形の時間範囲が定められている。すなわち、ノー
トオン処理等のMIDIデータ受信時の処理として本フ
ローを実行する場合は、前記時間範囲とは前述した部分
波形のことであり、音源処理中で本フローを実行する場
合は、バッファXの全サンプルのうち、未計算部分の発
音波形サンプルのことである。なお、MIDIデータ受
信時には、直前の音源処理で決定した演算順序に基づい
て演算を行うため、発音チャンネルの演算順序を新たに
決定していない。新たなノートオンがあった場合は、他
の全発音チャンネルの順位を1つ繰り下げ、その新たな
ノートオンのチャンネルを演算順序の第1番に順次加え
ていく。
【0062】発音波形演算処理が開始されると、ステッ
プS600にて演算順序の1番の発音チャンネル(c
h)の最初の楽音波形サンプルの演算準備が行われる。
演算準備処理とは、前回の読み出しアドレス、各種EG
値、各種EGのステート(アタックやリリース等の状
態)、LFO値等のデータを、ただちに演算に使えるよ
うにアクセス準備したりCPU1の内部レジスタにロー
ドしたりする処理のことである。そして、ステップS6
10にてLFO、フィルタG、音量EGの波形演算を行
い、指定された前記時間範囲の演算に必要なLFO波
形、FEG波形、AEG波形のサンプルを生成する。L
FO波形はFナンバ、FEG波形、AEG波形に加算さ
れ、各データを変調する。また、ステップS540で消
音すべきチャンネルとして指定された発音チャンネルに
関しては、音量EGとして前記範囲内で急速に減衰する
ダンプ用のAEG波形が演算生成される。
【0063】次いで、ステップS620にて上記前回の
読み出しアドレスを初期値としてFナンバを繰り返し加
算し前記時間範囲内の各サンプルの読み出しアドレスを
発生し、この読み出しアドレスの整数部に基づいて音色
データ内の波形記憶領域WDより波形サンプルを読み出
すと共に、この読み出しアドレスの小数部に基づいて読
み出された波形サンプル間の補間を行い、前記時間範囲
内の全補間サンプルを算出するようにする。例えば、前
記時間範囲が100サンプル分の時間に相当する場合、
100サンプル分まとめてこのステップにより処理が行
われる。ここで、前記時間範囲内の複数サンプル分の処
理は、読み出しアドレスに対するFナンバの加算と、加
算により生成されたアドレスに基づく読み出しから補間
の処理までの処理を単位処理として、この単位処理を繰
り返して行うようになっているため、読み出しアドレス
のCPUレジスタへの読み込みが全体として1回で済
み、処理が高速化されている。
【0064】さらに、ステップS630にて前記時間範
囲内の補間サンプルに対し音色フィルタ処理が行われ、
前記FEG波形に基づいて音色制御が行われ、ステップ
S640にて、フィルタ処理済の前記時間範囲内のサン
プルに対し振幅制御処理が行われ、前記AEGおよび音
量データに基づいて楽音波形サンプルの振幅制御が行わ
れると共に、振幅制御処理された前記時間範囲分の楽音
波形サンプルがそれぞれ出力バッファXの対応するサン
プルに足し込まれる累算書込処理が実行される。この処
理においては、前記時間範囲内の各サンプルについて、
振幅制御とバッファXの対応サンプルへの足し込みを連
続して行うようになっているので、サンプルのCPUレ
ジスタへの取り込み回数が少なくて済み、処理速度が向
上している。
【0065】上述したように、ステップS620からス
テップS640にかけての楽音波形サンプルの演算生成
処理は、基本的には前記所定時間範囲内の全サンプルを
生成するように行われるわけであるが、ステップS61
0における音量EGの波形演算の結果、AEG波形のレ
ベルが下がり音量が十分減衰した範囲については、演算
の対象からはずされ、その分処理を少なくするようにな
っている。特に、ステップS540の指示により、ダン
プ用AEG波形を生成した発音チャンネルに関しては、
前記所定時間範囲の途中で十分な減衰が得られる場合が
多い。
【0066】そして、ステップS650にて、波形演算
処理をこのまま続行したい場合にDMA9に対し期限内
に波形を供給できそうか否か判定されて、演算を打ち切
るか否かの判断が行われる。ここで、期限内に波形を供
給するというのは、先に生成された発音波形を記憶する
特定エリアを再生中のDMA9が、そのエリアの再生を
終了してしまう前に、バッファXにそれに引き続く発音
波形を準備し、そのバッファXのエリアを再生予約でき
ることである。そのまま続行すると間に合わなくなる場
合は、演算を打ち切ると判断され、ステップS670に
て打ち切り処理が実行されて、この発音波形演算処理は
終了する。
【0067】また、また演算を続行しても大丈夫と判定
された場合、演算を打ち切る必要がないと判断され、続
くステップS660にて演算すべき全発音チャンネル分
の楽音波形の演算生成が終了したか否かが判断され、全
発音チャンネルの演算が終了したと判断されない場合
は、ステップS680にて次の演算順序を付与された発
音チャンネルの最初の楽音波形サンプルが指定され、次
順の発音チャンネルの楽音チャンネルの楽音波形の演算
生成準備が行われる。準備が完了したら、処理はステッ
プS610に戻り、その発音チャンネルのついて先程と
同様にステップS610ないしステップS640に渡る
楽音生成の処理が実行される。このようにして、全発音
チャンネルの演算が終了するまでステップS610ない
しステップS660の処理が繰り返し行われるようにな
る。各発音チャンネルの処理毎に、生成された前記所定
時間範囲分のサンプルは、ステップS640にてバッフ
ァXの対応するサンプルに順次足し込まれる。
【0068】ステップS660で演算生成処理が終了し
たと判定された場合、本発音波形演算を終了する。この
時、バッファXには、演算すべき全発音チャンネルの生
成された楽音波形サンプルを累算した累算値が、前記時
間範囲に対応するサンプル数分、新たに記憶されてい
る。一方、ステップS650で打ち切りを行うと判断さ
れ、ステップS670の打ち切り処理を経て発音波形演
算が終了した場合、バッファXには、演算すべき全発音
チャンネルの内、その時点までに演算生成を完了した発
音チャンネルについての楽音波形サンプルの累算値が、
前記時間範囲に対応するサンプル数分、新たに記憶され
ている。
【0069】打ち切り以降の演算順序を付与された発音
チャンネルについては楽音の演算生成が行われず、結果
的にそのチャンネルの楽音が消えてしまうわけである
が、ステップS530の処理により、消えてしまった場
合に影響の少ないチャンネルほど後ろの演算順序とされ
ているので、打ち切りによる悪影響は最小限に抑えられ
る。なお、ステップS670の打ち切り処理では、一旦
演算できなかったチャンネルについて、次回以降の発音
波形演算においても消音したままになるよう、chレジ
スタを設定している。
【0070】以上説明した発音波形演算処理が図9
(a)にフローチャートを示すノートオン処理のステッ
プS340にて実行された場合には、上述した発音波形
演算処理が終了すると、該フローチャートのステップS
350の処理が続けて実行されて、ノートオン処理が終
了する。また、発音波形演算処理が図9(b)にフロー
チャートを示すノートオフ処理のステップS430にて
実行された場合には、上述した発音波形演算処理が終了
すると、該フローチャートのステップS440の処理が
続けて実行されて、ノートオフ処理が終了する。
【0071】さらに、発音波形演算処理が図10にフロ
ーチャートを示す音源処理のステップS550にて実行
された場合には、上述した発音波形演算処理が終了する
と、該フローチャートのステップS560以降の処理が
続けて実行されて、ステップS580の処理が終了する
と音源処理が終了する。これらのノートオン処理、ノー
トオフ処理、および音源処理は、図6に示す定常ループ
内において循環して繰り返し行われ、発音される楽音波
形サンプルが順次生成されるようになる。
【0072】なお、本発明の楽音生成方法において、い
うまでもないことであるが、例えば複数の楽音の発生を
指示するステップと、所定時間時間間隔で演算開始を指
示するステップのように、互いに独立したデータを扱う
ステップについては、前記説明した順番で処理を行う必
要はなく、その処理の順番を入れ替えて実行するように
してもよい。また、本発明の楽音生成方法においては、
前記した楽音生成演算処理の空き時間を利用して他のア
プリケーションソフトから依頼された発音指示を含む処
理を行うことができる。他のアプリケーションソフトと
しては、ゲームソフト、通信ソフト、事務処理ソフト等
がある。
【0073】以上においては、前記図1に示す楽音生成
装置にて実行されるプログラムとして本発明の楽音生成
方法の説明を行った。また、本発明の楽音生成方法を、
Windows (米マイクロソフト社のパソコン用OS)やそ
の他のオペレーティングシステムの動作する汎用コンピ
ュータ上で、1つのアプリケーションプログラムとし
て、他のアプリケーションプログラムと並列実行させて
もよい。
【0074】
【発明の効果】本発明は以上のように構成されているた
め、複数の楽音波形サンプルの演算について1回だけ各
発音チャンネルの準備処理を行えば良いようになり、オ
ーバヘッドを小さくすることができる。このため、生成
された楽音の質を向上することができると共に、同時発
音チャンネル数を増加することができる。また、楽音波
形サンプルの演算をMIDIイベントが入力される毎に
行うようにすると、演算が分散されるようになり、発音
初期処理による発音数の減少を防止することができる。
【0075】さらにまた、演奏情報の発生時に演奏情報
の受入処理を行い、受け入れた演奏情報に基づく楽音制
御あるいは波形生成は、該受入処理の空き時間に実行さ
れるメインステップに含まれるようにしたので、演奏情
報が発生した時点での処理の増加分を前記空き時間内に
分散させることができ、一時的な処理の増加を防止する
ことができる。
【図面の簡単な説明】
【図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 サウンドシステム

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 複数の楽音の発生を指示する第1のス
    テップと、 指示された楽音をいずれかのチャンネルに割り当て、該
    楽音の制御データを割り当てたチャンネルレジスタに書
    き込んで記憶させる第2のステップと、 所定時間間隔で演算開始を指示する第3のステップと、 前記第3のステップにおける演算開始の指示に応じて各
    チャンネルの楽音生成演算を順次実行し、前記チャンネ
    ルレジスタに記憶された複数チャンネル分の制御データ
    に基づき複数サンプル分の波形データを生成する第4の
    ステップと、 各サンプル毎に、生成された複数チャンネル分の波形デ
    ータを混合し、複数サンプル分の混合サンプルを生成す
    る第5のステップと、 該複数サンプル分の混合サンプルを、サンプリング周期
    毎にアナログ信号に変換する第6のステップとからな
    り、 前記第4のステップの楽音生成演算においては、各発音
    チャンネル毎に、前記チャンネルレジスタからの1回の
    制御データの読出しに基づいて、該制御データの読み出
    された発音チャンネルの複数サンプル分の波形データの
    生成と、前記チャンネルレジスタへの前記波形データ生
    成後の制御データの書き込みを行うようにしたことを特
    徴とする楽音生成方法。
  2. 【請求項2】 前記複数の楽音の内の各楽音の発生の
    指示に応じて、途中演算開始を指示する第7のステップ
    をさらに備え、 前記第4のステップにおいて、前記途中演算開始の指示
    に応じて、生成済の波形データの末尾から前記楽音の発
    生の指示時点までの区間に対応する複数サンプルの波形
    データを生成することを特徴とする請求項1記載の楽音
    生成方法。
  3. 【請求項3】 発音指示された楽音をいずれかのチャ
    ンネルに割り当て、該楽音の制御データを割り当てたチ
    ャンネルレジスタに書き込んで記憶する第1のステップ
    と、 所定時間間隔で演算開始を指示する第2のステップと、 前記第2のステップにおける演算開始の指示に応じて、
    前記チャンネルレジスタに記憶された複数チャンネル分
    の制御データに基づき複数サンプル分の波形データを生
    成する第3のステップと、 各サンプル毎に、生成された複数チャンネル分の波形デ
    ータを混合し、複数サンプル分の混合サンプルを生成す
    る第4のステップと、 該複数サンプル分の混合サンプルを、サンプリング周期
    毎にアナログ信号に変換する第5のステップと、 前記第1のステップないし第5のステップの処理の空き
    時間を利用して複数の楽音の発音指示を含む処理を行う
    第6のステップとからなり、 前記第3のステップにおいては、楽音生成中のチャンネ
    ルの楽音生成演算のみを行うことを特徴とする楽音生成
    方法。
  4. 【請求項4】 制限時間を検出する第7のステップ
    と、 該制限時間内に、演算すべき全チャンネルの演算が完了
    するか否か判定し、完了しないと判定された場合に、演
    算すべきチャンネルの内のいずれかのチャンネルの消音
    を指示する第8のステップをさらに備えることを特徴と
    する請求項3記載の楽音生成方法。
  5. 【請求項5】 複数の楽音の発生を指示する第1のス
    テップと、 指示された楽音をいずれかのチャンネルに割り当て、該
    楽音の制御データを割り当てたチャンネルレジスタに書
    き込んで記憶させる第2のステップと、 前記各チャンネルで生成する楽音の重要度に応じて、複
    数のチャンネルの演算順序を決定する第3のステップ
    と、 所定時間間隔で演算開始を指示する第4のステップと、 前記第4のステップにおける演算開始の指示に応じて、
    前記チャンネルレジスタに記憶された複数チャンネル分
    の制御データに基づき複数サンプル分の波形データを生
    成する第5のステップと、 各サンプル毎に、生成された複数チャンネル分の波形デ
    ータを混合し、複数サンプル分の混合サンプルを生成す
    る第6のステップと、 該複数サンプル分の混合サンプルを、サンプリング周期
    毎にアナログ信号に変換する第7のステップとからな
    り、 前記第5のステップにおいて、決定された演算順序に従
    って、各発音チャンネル毎の楽音生成を行うと共に、実
    行中の楽音生成が間に合わず、前記第7のステップにお
    いて変換された前記アナログ信号が途切れるおそれがあ
    る場合には、前記演算順序の途中の発音チャンネルの時
    点で該楽音生成演算を終了することにより、前記アナロ
    グ信号が途切れないようにしたことを特徴とする楽音生
    成方法。
  6. 【請求項6】 演奏情報を供給する供給ステップと、 波形データの生成を行うメインステップと、 前記供給ステップより演奏情報が供給された時、前記メ
    インステップを一時的に中断し、供給された演奏情報の
    受入処理を実行し、その完了後に再び前記メインステッ
    プを中断したところからスタートさせる割込ステップ
    と、 生成された波形データに基づき、演算生成時点より後の
    タイミングで対応する楽音を発生させる楽音発生ステッ
    プとを含み、 前記メインステップは、前記受入処理された演奏情報に
    基づいて楽音制御データを生成する演奏情報処理ステッ
    プと、前記楽音制御データに基づいて波形データを演算
    生成する音源処理ステップを含むものであることを特徴
    とする、演算装置で実行される楽音生成方法。
JP7299185A 1995-05-19 1995-10-23 楽音生成方法 Expired - Lifetime JP3003559B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7299185A JP3003559B2 (ja) 1995-05-19 1995-10-23 楽音生成方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP14415995 1995-05-19
JP7-144159 1995-05-19
JP7299185A JP3003559B2 (ja) 1995-05-19 1995-10-23 楽音生成方法

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP28390499A Division JP3627590B2 (ja) 1995-05-19 1999-10-05 音生成方法
JP28390399A Division JP3632744B2 (ja) 1995-05-19 1999-10-05 音生成方法

Publications (2)

Publication Number Publication Date
JPH0944160A true JPH0944160A (ja) 1997-02-14
JP3003559B2 JP3003559B2 (ja) 2000-01-31

Family

ID=26475669

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7299185A Expired - Lifetime JP3003559B2 (ja) 1995-05-19 1995-10-23 楽音生成方法

Country Status (1)

Country Link
JP (1) JP3003559B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5770812A (en) * 1996-06-06 1998-06-23 Yamaha Corporation Software sound source with advance synthesis of waveform
JP4834821B2 (ja) * 2000-03-22 2011-12-14 ミュージックプレイグラウンド・インコーポレーテッド 電子音楽ファイルから音楽パートを生成する方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3675362B2 (ja) * 2000-08-18 2005-07-27 ヤマハ株式会社 楽音生成装置および携帯端末装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62271147A (ja) * 1986-05-20 1987-11-25 Mitsubishi Electric Corp タスク制御方法
JPH0451000A (ja) * 1990-06-15 1992-02-19 Yamaha Corp 音源装置
JPH0458291A (ja) * 1990-06-28 1992-02-25 Casio Comput Co Ltd 楽音波形発生装置
JPH0549152A (ja) * 1991-08-13 1993-02-26 Nissin Electric Co Ltd 実効値演算リレーにおけるサンプルデータの処理回路
JPH05274788A (ja) * 1992-03-26 1993-10-22 Matsushita Electric Ind Co Ltd フラグ記録方法と記録再生装置
JPH06149594A (ja) * 1992-11-10 1994-05-27 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH06187170A (ja) * 1992-12-18 1994-07-08 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH06187169A (ja) * 1992-12-18 1994-07-08 Matsushita Electric Ind Co Ltd マルチタスク実行装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62271147A (ja) * 1986-05-20 1987-11-25 Mitsubishi Electric Corp タスク制御方法
JPH0451000A (ja) * 1990-06-15 1992-02-19 Yamaha Corp 音源装置
JPH0458291A (ja) * 1990-06-28 1992-02-25 Casio Comput Co Ltd 楽音波形発生装置
JPH0549152A (ja) * 1991-08-13 1993-02-26 Nissin Electric Co Ltd 実効値演算リレーにおけるサンプルデータの処理回路
JPH05274788A (ja) * 1992-03-26 1993-10-22 Matsushita Electric Ind Co Ltd フラグ記録方法と記録再生装置
JPH06149594A (ja) * 1992-11-10 1994-05-27 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH06187170A (ja) * 1992-12-18 1994-07-08 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH06187169A (ja) * 1992-12-18 1994-07-08 Matsushita Electric Ind Co Ltd マルチタスク実行装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5770812A (en) * 1996-06-06 1998-06-23 Yamaha Corporation Software sound source with advance synthesis of waveform
JP4834821B2 (ja) * 2000-03-22 2011-12-14 ミュージックプレイグラウンド・インコーポレーテッド 電子音楽ファイルから音楽パートを生成する方法

Also Published As

Publication number Publication date
JP3003559B2 (ja) 2000-01-31

Similar Documents

Publication Publication Date Title
KR100421589B1 (ko) 악음생성방법및장치
KR100319481B1 (ko) 악음발생방법,파형데이터압축방법,이러한방법을실행하기위한제어명령어를포함하는기계판독가능한기록매체및사운드장치
JP3637578B2 (ja) 楽音生成方法
KR100402364B1 (ko) 악음발생장치, 악음발생방법 및 기억매체
KR100500077B1 (ko) 악음 생성 방법 및 장치
JPH09325778A (ja) 楽音発生方法
KR100302626B1 (ko) 악음생성장치 및 방법
US20040055449A1 (en) Rendition style determination apparatus and computer program therefor
JP3003559B2 (ja) 楽音生成方法
JP3632744B2 (ja) 音生成方法
JPH07121181A (ja) 音声情報処理装置
US6169243B1 (en) Automatic performance apparatus with quick start by accelerated loading of setting data
JP3627590B2 (ja) 音生成方法
JP3637577B2 (ja) 楽音生成方法
JP3799711B2 (ja) 楽音発生方法および楽音発生装置
JP3409642B2 (ja) 自動演奏装置、自動演奏データ処理方法及び電子的情報記憶媒体
JPH11202866A (ja) 楽音発生方法および楽音発生装置
JP3000894B2 (ja) 楽音発生方法
JP3257400B2 (ja) エフェクト装置
JP3716701B2 (ja) 発音チャンネル割り当て方法及び装置
JP2005049497A (ja) 音源回路の制御プログラムおよび音源回路の制御装置
JP3223827B2 (ja) 音源波形データ生成方法および装置
JP3486938B2 (ja) レガート演奏可能な電子楽器
JPH09311681A (ja) 楽音生成処理方法
JP3627557B2 (ja) 楽音発生装置及び方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19991019

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

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 14

EXPY Cancellation because of completion of term