JPH11126069A - 楽音生成方法 - Google Patents
楽音生成方法Info
- Publication number
- JPH11126069A JPH11126069A JP9305022A JP30502297A JPH11126069A JP H11126069 A JPH11126069 A JP H11126069A JP 9305022 A JP9305022 A JP 9305022A JP 30502297 A JP30502297 A JP 30502297A JP H11126069 A JPH11126069 A JP H11126069A
- Authority
- JP
- Japan
- Prior art keywords
- sound source
- tone
- data
- processing
- musical
- 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
Links
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H7/00—Instruments in which the tones are synthesised from a data store, e.g. computer organs
- G10H7/002—Instruments in which the tones are synthesised from a data store, e.g. computer organs using a common processing for different operations or calculations, and a set of microinstructions (programme) to control the sequence thereof
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H2230/00—General physical, ergonomic or hardware implementation of electrophonic musical tools or instruments, e.g. shape or architecture
- G10H2230/025—Computing or signal processing architecture features
- G10H2230/041—Processor load management, i.e. adaptation or optimization of computational load or data throughput in computationally intensive musical processes to avoid overload artifacts, e.g. by deliberately suppressing less audible or less relevant tones or decreasing their complexity
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H2240/00—Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
- G10H2240/011—Files or data streams containing coded musical information, e.g. for transmission
- G10H2240/046—File format, i.e. specific or non-standard musical file format used in or adapted for electrophonic musical instruments, e.g. in wavetables
- G10H2240/056—MIDI or other note-oriented file format
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
る発音数に影響を与えないようにする。 【解決手段】集中して入力されたMIDI入力M1〜M
3の音源ドライバ処理は、処理a〜処理gの7回の処理
に分散して行われ、発生された音源パラメータはPバッ
ファに格納される。そして、発音タイミングとなったと
きに、Pバッファ内の音源パラメータに基づいて波形生
成処理Bとして楽音波形が生成される。音源ドライバ処
理は分散して行われるため、その処理量Jd1〜JD4
は急激に増加することがなく、波形生成処理に十分な処
理量を割り当てることができる。
Description
サに楽音生成処理プログラムを実行させることにより音
源波形を生成する場合に好適な楽音生成方法に関するも
のである。
のタイミングでMIDI(Musical Instrument Digital
Interface)イベントを送出するプレーヤ(自動演奏プ
ログラム)、MIDIイベントが入力される毎に入力さ
れたMIDIイベントに応じた音源パラメータを発生す
る音源ドライバ、発生された音源パラメータに基づいて
楽音波形を生成する音源から構成されている。なお音源
ドライバは、入力されたMIDIイベントに応じて、チ
ャンネルアサイン、音源パラメータ変換等の音源ドライ
バ処理を実行し、当該イベントに割り当てられたチャン
ネルに、変換した音源パラメータと発音開始指示(ノー
トオン)を供給する。音源は、専用のLSI(Large Sc
ale Integrated circuit)やDSP(Digital Signal P
rocessor)等のハードウェアで構成(ハードウェア音
源)されたり、楽音生成処理手順を記述したプログラム
をCPUに実行させるソフトウェア音源により構成され
ている。
源ドライバ、音源により構成されているが、これらの処
理負荷は一定ではなく時間の経過と共に大きく変動して
いるのが一般的である。たとえば、MIDIイベントが
多いときにはプレーヤおよび音源ドライバで処理すべき
負荷が大きくなる。特に、音源ドライバでは、ノートオ
ンイベントが多いときに処理負荷が大きくなる。これ
は、ノートオンイベント時では、空きチャンネルをサー
チして、ノートオンされた楽音を発生するチャンネルの
発音割当処理が行われるが、この際に行われるサーチ処
理およびトランケート処理は時間のかかる負荷の大きい
処理であるからである。さらに、ノートオンイベント時
には、キータッチに応じた音色設定処理等も行われる。
このように、ノートオンイベントが多いときには音源ド
ライバ処理の負荷が大きくなるのである。また、音源が
ソフトウェア音源で構成されている場合には、同時発音
数が多いときに音源における処理の負荷が大きくなる。
音源における処理のタイミングチャートを例示して具体
的に説明する。図9は楽音生成装置の各処理タイミング
を示すタイミングチャートの例であり、MIDI入力と
記されているM1〜M4はMIDIイベントであり下向
きの矢印で示すタイミングで入力されている。このMI
DIイベントは、たとえば、プレーヤがMIDIファイ
ル等を読み出して楽譜通りのタイミングで送出したMI
DIイベントである。このMIDIイベントM1〜M4
が受信される毎にMIDI処理を起動する優先度の高い
割り込みが発生し、起動されたMIDI処理においてM
IDIイベントM1〜M4は、受信された時刻と共に入
力バッファに格納される。
は、入力バッファに格納されたMIDIイベントを音源
ドライバが受け取り、該MIDIイベントに応じてチャ
ンネルアサイン、音源パラメータの発生等を行う。ここ
で発生された音源パラメータは音源パラメータバッファ
に格納される。また、波形生成と記されている処理A,
B,・・・,Eは、時刻t1,t2,・・・,t5,・
・の一定周期で起動されて音源で実行される波形生成処
理のタイミングであり、音源パラメータバッファから読
み出された音源パラメータに基づいて楽音波形サンプル
を生成している。なお、一定周期の単位を1フレームと
している。この波形生成処理では、たとえば、時刻t1
から時刻t2のフレームにおいて発生された音源パラメ
ータに基づいて、次のフレームである時刻t2から時刻
t3のフレームにおいて1フレーム周期に対応するサン
プル数の楽音波形サンプルが波形生成処理で生成されて
出力バッファに格納される。この場合、波形生成処理に
おいて、継続音の楽音波形サンプルも生成される。そし
て、各発音チャンネルの楽音波形サンプルが足し込まれ
て、DAC(デジタル・アナログコンバータ)等の再生
デバイスに再生予約される。
生デバイスが出力バッファからサンプリング周期毎に楽
音波形サンプルを読み出して再生するタイミングを示し
ている。たとえば、時刻t2から時刻t3のフレームに
おいて波形生成された楽音波形サンプルは、次のフレー
ムである時刻t3から時刻t4のフレームにおいて再生
される。従って、MIDIイベントが入力されてから実
際に発音されるまでの発音遅れ時間Δtは2フレーム以
内となり、楽音波形の生成は次のフレームで再生する楽
音波形を、現時点のフレームの期間内に生成し終えるよ
うにしなければならない。なお、1フレームは数mse
cの周期とされている。
ドライバはCPUに音源ドライバプログラムを実行させ
ることにより実現されており、音源ドライバ処理は、基
本的にノートオンイベント,ノートオフイベント,プロ
グラムチェンジ等のイベント発生時に起動される。この
ため、図9にイベントM1〜M3として示すようにイベ
ントが同時刻に集中して入力されると、音源ドライバ処
理が急激に増加する。従って、イベントの集中時には、
音源ドライバ処理を実行するCPUに大きな負担がかか
り、同時にCPUが実行している自動演奏プログラム、
ゲームプログラム、あるいは、画像処理等の実行を行え
なくなるおそれが生じる。
ており、ソフトウェア音源で演算すべき発音数が多いと
きには、生成する楽音波形サンプル数が増加するためソ
フトウェア音源の負荷が多いことは当然であるが、発音
数が多いことからイベントの発生も多く、音源ドライバ
およびプレーヤで処理すべき負荷が大きくなることにな
る。従って、ソフトウェア音源において演算すべき発音
数が多い時には、他の楽音生成のための処理も増加し演
算可能な発音数が低下してしまうおそれがあった。たと
えば、ソフトウェア音源において通常32音発音可能な
場合でも、ノートオンイベントが集中して発生した際に
は、音源ドライバで実行されるノートオンイベント処理
のためにCPUの演算能力の大部分が費やされるように
なり(図9MIDI入力および音源ドライバの処理タイ
ミング参照)、ソフトウェア音源に割り当てられるCP
Uの演算能力が減少し、32音の楽音波形をソフトウェ
ア音源で生成することができなくなる。
るときに音源ドライバの生成した音源パラメータに基づ
いて、発音タイミングより事前に楽音波形を音源におい
て先行生成しておき、生成した音源波形を波形バッファ
に記憶しておくようにする。そして、発音タイミング時
に波形バッファから音源波形を読み出して発音するよう
にする方法が提案されている。しかしながらこの方法で
は、先行生成した音源波形を記憶するために大容量の波
形バッファが必要になる。また、曲データの演奏途中に
おいて音量制御、パン制御、効果制御等の操作が行われ
た際には、すでに先行生成された楽音波形の各パートの
楽音波形が合成されていることから、楽音波形を修正す
るのが困難となる。修正するには、たとえば16パート
の各パート別に独立して波形バッファに記憶させなけれ
ばならず、さらに多くの波形バッファが必要となる。
うなCPU負荷が急激に増加するイベントが集中して発
生しても、演算可能な発音数が低下することがないと共
に、各パート別に音量制御可能な楽音生成方法を提供す
ることを目的としている。
に、本発明の楽音生成方法は、複数の楽音データを対応
するタイミングデータと共に第1記憶手段に記憶する第
1のステップと、前記第1記憶手段に記憶された楽音デ
ータを読み出して、該楽音データに対応する楽音波形を
生成するための音源パラメータを生成し、該音源パラメ
ータを対応するタイミングデータと共に第2記憶手段に
記憶する第2のステップと、前記第2記憶手段に記憶さ
れた前記音源パラメータと対応するタイミングデータに
基づいて前記楽音波形を生成し、生成された前記楽音波
形を第3記憶手段に記憶する第3のステップと、前記第
3記憶手段に記憶されている楽音波形を順次再生する第
4のステップと、前記第4のステップにおける再生の進
行に応じて第1のタイミングを発生し、該第1のタイミ
ングで前記第3のステップを起動する第5のステップ
と、前記タイミングデータの示すタイミングとは独立し
た所定の周期で第2のタイミングを発生し、該第2のタ
イミングで前記第2のステップを起動する第6のステッ
プとを備えている。この楽音生成方法によれば、楽音デ
ータの演奏されるタイミングとは独立したタイミングで
楽音データに応じた音源パラメータの生成が行われるの
で、演奏データのタイミングが蜜となってもそのために
音源パラメータの生成処理がきつくなることを防止する
ことができる。
6のステップは、前記楽音生成方法を実行する演算装置
の使用状況を判定し、演算装置の負荷が軽いときに前記
第2のタイミングを発生している。この楽音生成方法に
よれば、楽音パラメータの生成処理を、演算装置の負荷
が軽いタイミングに分散して処理することができる。さ
らに、前記楽音生成方法において、前記第6のステップ
は、前記楽音生成方法を実行する演算装置がソフトウェ
ア的に検出する所定時間ごとに前記第2のタイミングを
発生している。この楽音生成方法によれば、楽音パラメ
ータの生成処理をソフトウェアタイマに設定された時間
に応じた密度で分散して行うことができる。また、ソフ
トウェアタイマであれば、演算装置の処理が込んでいる
時に検出落ちとなるので処理の集中を防止することがで
きる。
前記第2のステップが1回起動される毎に、1つの楽音
データに対応した音源パラメータが生成されている。こ
の楽音生成方法によれば、複数の楽音データが短時間の
うちに演奏された場合でも、対応する音源パラメータの
生成を各楽音データ毎に分散したタイミングで行うこと
ができる。さらにまた、前記楽音生成方法において、前
記第2のステップが複数回起動された結果、1つの楽音
データに対応した音源パラメータが生成されている。こ
の楽音生成方法によれば、楽音データの種類に応じて音
源パラメータの生成処理にかかる処理の大きさが異なる
が、処理の大きい楽音データの場合でも、1つの楽音デ
ータに応じた音源パラメータの生成処理を複数の部分に
分けて実行するので、処理量の時間的な集中を防止する
ことができる。
前記第3のステップが起動されたときに、前記第1記憶
手段に記憶された前記楽音データのうち、前記楽音波形
の生成範囲に含まれるタイミングデータに対応した楽音
データの音源パラメータが生成済みであるか否かを判定
し、生成済みでない場合には未生成の楽音データに対応
する音源パラメータを発生してから楽音波形を生成する
ようにしている。この楽音生成方法によれば、分散処理
による音源パラメータの生成が完了しないまま楽音生成
のタイミングとなった場合でも、その完了していない処
理を先に終了してから楽音生成を行うようにしているの
で、生成する楽音に悪影響を与えない。また、その場合
にも一部の音源パラメータは分散的に処理されるように
なる。
音データをバッファに記憶しておき、音源ドライバがバ
ッファに記憶された楽音データを非同期で分散処理する
ことにより音源パラメータを発生するようにしている。
従って、イベントが集中して発生しても、音源ドライバ
の処理は分散して実行されるため、CPU負荷が急激に
増加することがなく、一時的な処理の集中による発音数
の減少を防止することができる。特に、ソフトウェア音
源における楽音波形の生成には安定した演算能力を必要
としているが、音源ドライバにおける処理は、イベント
単位で瞬間的に計算パワーを必要とするだけで長時間で
その負荷を平均すると数パーセント程度であるため、音
源ドライバ処理を分散して実行する効果は非常に大きい
ものとなる。また、音源ドライバまでの処理を先行して
実行し、波形生成は発音タイミングになったときに実行
するようにしているので、生成する楽音に対し、パート
別の音量制御やパン制御等の処理をリアルタイムで行う
ことができる。
ことのできる処理装置の構成例を図1に示す。ただし、
図1に示す処理装置は、パソコン、ワークステーション
等の汎用の処理装置と同等であり、それらの上で本発明
の楽音発生方法を実施することができる。この図におい
て、1はアプリケーションプログラム等を実行してファ
イルから読み出した演奏データに基づいて自動演奏を行
うための各種演算処理を行うマイクロプロセッサ(CP
U)、2はCPU1の動作プログラムやプリセット音色
データ等が記憶されているリードオンリメモリ(RO
M)、3はCPU1のワークメモリエリアや入力バッフ
ァエリア(Mバッファ)、音源パラメータエリア(Pバ
ッファ)、パート設定データエリア、音源レジスタエリ
ア、出力バッファエリア等の記憶エリアを有するランダ
ムアクセスメモリ(RAM)、4は時刻を指示すると共
に、タイマ割り込み処理のタイミングをCPU1に指示
するタイマ、5はMIDIイベントが入力されると共
に、生成されたMIDIイベントを出力するMIDIイ
ンターフェースである。
用する楽音波形データ等やオペレーションシステム(O
S)、本発明の楽音生成方法にかかるプログラムや各種
アプリケーションプログラム等が格納されるハードディ
スクであり、CPU1による実行時に楽音生成方法にか
かるプログラムはRAM3にロードされる。7は楽音波
形サンプルを生成するために使用する楽音波形データ等
やOS、各種アプリケーションプログラム等が格納され
る光ディスクやハードディスク等の差し替え可能な記憶
媒体がセットされるリムーバブルディスク、8はユーザ
が楽音生成装置と対話するためのディスプレイ(モニ
タ)、9は英字、かな、数字、記号などのキーを備える
いわゆるパソコン用のキーボードおよびポインティング
デバイスの一種であるマウス、10はDSP等が搭載さ
れたサウンドボード等のハードウェア音源であり、ソフ
トウェア音源を有している場合は、必ずしも必要なもの
ではない。11はデータのやりとりを行うCPUバスで
ある。なお、プログラムは、図示しないネットワークイ
ンターフェースを介して、外部のネットワークからダウ
ンロードすることもできる。
記憶されるエリアを有しているが、そのエリアの内容の
例を図2(a)に、そのうちのPバッファエリアの内容
の例を図2(b)に、そのうちのMバッファの内容の例
を図2(c)に示す。図2(a)に示すようにRAM3
には、Mバッファ、Pバッファ、パート設定データ、音
源レジスタ、音源ワークエリアの各エリアが存在してい
る。ただし、出力バッファのエリアは示されていない
が、必ずしもRAM3に設定される必要はなく、ハード
ディスク6やリムーバブルディスク7に出力バッファの
エリアを設定するようにしてもよい。
ーバブルディスク7に格納されているMIDIファイル
から読み出されたMIDIのフォームの曲データや、M
IDIインターフェース5を介して入力されるノートオ
ン、ノートオフやプログラムチェンジ等の各種MIDI
イベントが、その受信時刻と共に書き込まれる。受信時
刻はタイマ4の値を用いることができる。イベントが書
き込まれたMバッファの状態を図2(c)に示している
が、デュレーションと受信されたMIDIイベントが組
として書き込まれている。このデュレーションはその直
前に受信されたMIDIイベントの受信時刻と、今回受
信されたMIDIイベントの受信時刻との時間間隔を示
している。なお、この図に示す例では、データ数を示す
位置にデータ数が「2」と示されており、デュレーショ
ンとイベントとの組が2組分Mバッファに格納されてい
ることが示されている。
使用されており、その読出ポインタのアドレスと書込ポ
インタのアドレスとがMバッファ内の所定位置に格納さ
れている。これにより、音源ドライバがMバッファから
音源ドライバ処理が未完のイベントデータを読み出し
て、音源ドライバ処理を実行できるようになる。すなわ
ち、Mバッファの読出ポインタアドレスを読み出して、
Mバッファの当該アドレス位置からデュレーションとイ
ベントの組のデータを読み出して、そのイベントデータ
に応じた音源パラメータを発生する音源ドライバ処理を
実行することができる。さらに、受信したMIDIイベ
ントをMバッファに書き込むMIDI入力処理時には、
Mバッファの書込ポインタアドレスを読み出して、Mバ
ッファの当該アドレス位置からデュレーションとイベン
トの組のデータを書き込むようにすればよい。
発生された音源パラメータがデュレーションデータと組
とされて格納されている。このPバッファの状態を図2
(b)に示しているが、このデュレーションの値はMバ
ッファに格納されていた時に音源ドライバ処理が行われ
たイベントと組とされていたデュレーションと同じ値で
ある。なお、この図に示す例では、データ数を示す位置
にデータ数が「3」と示されており、デュレーションと
イベントとの組が3組分Pバッファに格納されているこ
とが示されている。また、Pバッファもリングバッファ
として使用されており、その読出ポインタのアドレスと
書込ポインタのアドレスとがPバッファ内の所定位置に
格納されている。これにより、発音タイミングとなった
か否かを読出ポインタ位置のデュレーションをみて判定
し、発音タイミングとなったときに、当該音源パラメー
タを音源レジスタに送ることができ、音源ドライバ処理
に発生された音源パラメータのPバッファへの格納は、
書込ポインタ位置から書き込むことにより行えるように
なる。
ト別の音色選択データ、音量データ、定位位置(パン)
データ等が格納されている。発音開始時には、該音色選
択データで指定された音色データ(図示せず)に基づい
て楽音生成に使用する波形データ(図示せず)のアドレ
スパラメータや音量エンベロープの各種EGパラメータ
等が生成されると共に、該音量データや該定位位置デー
タに基づいて音量パラメータが生成される。これらのパ
ラメータは、これから発音を開始するチャンネルに対応
した音源レジスタエリアの記憶領域に格納される。
タイミングチャートに基づいて、図1に示す構成の処理
装置が実行する場合の説明を行う。なお、図3(a)は
MIDI入力処理、音源ドライバ処理、波形生成処理、
波形再生処理のタイミングを示しており、図3(b)は
MIDI入力に応じた従来と本発明における音源ドライ
バ処理量、および、波形生成処理量の変化を示してい
る。まず、図3(a)のMIDI入力に示すように時刻
t1から時刻t2までのフレームの期間内において、集
中したMIDIイベントM1,M2,M3が連続して受
信されたとする。このMIDIイベントM1,M2,M
3は、順次受信時刻に応じたデュレーションと組とされ
てMバッファに書き込まれる。
ように時刻t2から始まる次のフレーム以降の期間にお
いて、MバッファからデュレーションとMIDIイベン
トの組からなるデータが読み出されてイベントに応じた
音源ドライバ処理が分散して実行される。図示する例で
は、MIDIイベントM1,M2,M3に対応した音源
ドライバ処理は、処理aないし処理gの7回に分散され
て実行されて、処理が実行される毎に発生された音源パ
ラメータがPバッファに書き込まれるようになる。そし
て、波形生成処理で生成する楽音波形サンプルの時刻が
Pバッファに格納された音源パラメータと組とされてい
るデュレーションの時刻に達したときに、Pバッファか
ら音源レジスタに当該音源パラメータが送られ、その音
源パラメータに基づいて音源において楽音波形生成処理
が実行される。図示する例では、時刻tn−1から始ま
るフレームの期間内において、実行される楽音波形生成
処理Bにおいて、MIDIイベントM1,M2,M3に
応じて生成されPバッファに記憶されている音源パラメ
ータが、それぞれ対応するデュレーションで指定される
時刻位置で音源レジスタに導入され、そのタイミングで
変化する音源レジスタの内容に応じて楽音波形サンプル
が生成される。各波形生成処理A、B・・・の終わりに
は、生成した1フレーム分の複数楽音波形サンプルを収
納した出力バッファが再生デバイスに再生予約される。
において、サンプリング周期毎に1サンプルづつ出力バ
ッファから読み出され、DACでアナログの楽音波形と
されて発音される波形再生処理が行われるようになる。
従って、この際の制御遅れ時間Δtは時刻t1と時刻t
nとの時間間隔となる。たとえば、制御遅れ時間Δtは
1sec程度とすることができる。なお、1フレームは
数msecの周期とされている。また、時刻t3から時
刻t4までのフレームの期間中において、MIDIイベ
ントM4が入力されているが、この場合も同様にMID
IイベントM4は受信時刻に応じたデュレーションと組
とされてMバッファに書き込まれる。
ように時刻t4から始まる次のフレーム以降の期間にお
いて、MバッファからデュレーションとMIDIイベン
トの組からなるデータが読み出されてイベントに応じた
音源ドライバ処理が分散して実行される。図示する例で
は、MIDIイベントM4に対応した音源ドライバ処理
は、処理h,iの2回に分散されて実行されて、処理が
実行される毎に発生された音源パラメータがPバッファ
に書き込まれるようになる。そして、波形生成処理で生
成する楽音波形サンプルの時刻がPバッファに格納され
た音源パラメータと組とされているデュレーションの時
刻に達したときに、Pバッファから音源レジスタに当該
音源パラメータが送られ、音源パラメータに基づいて楽
音波形生成処理が音源で実行される。この結果、生成処
理Cでは、時刻tn+1から始まるフレームの途中で、
MIDIイベントM4に対応して変化をする楽音波形サ
ンプルが生成され、再生デバイスに再生予約される。
Iイベントが入力されると、リアルタイムで音源ドライ
バ処理が実行されるため、MIDIイベントが集中して
入力された際に音源ドライバ処理の負荷が急激に増加す
るようになる。この様子を図3(b)に示すが、MID
IイベントM1,M2,M3が集中して入力されたとき
は、急激に負荷が増加することが破線で示されている音
源ドライバ処理量Jd’1となる。また、MIDIイベ
ントM4が入力されたときは、瞬間的に負荷が増加する
ことが破線で示されている音源ドライバ処理量Jd’2
となる。このように、従来では音源ドライバの処理量が
急激に増大するために、音源に割り当てられる処理量が
減少し発音数に影響を与えるが、本発明の楽音生成方法
では、音源ドライバ処理は分散して実行されるため、そ
の音源ドライバ処理量は、図3(b)に示すように少量
づつ分散された処理量Jd1から処理量Jd6となる。
て、MIDIイベントM1,M2,M3が集中して入力
されたときは、図3(b)に示す処理量Jd1から処理
量Jd4の少量づつ分散された音源ドライバ処理量とな
り、音源ドライバ処理量が急激に増加しないことからイ
ベントが集中して入力されても、音源処理には十分な処
理量が割り当てられ、発音数に影響を与えないことが理
解される。また、MIDIイベントM4が入力されたと
きは、図3(b)に示す処理量Jd5、Jd6に少量づ
つ分散された音源ドライバ処理量となり、音源ドライバ
処理量は急激に増加せず発音数に影響を与えない。な
お、音源で実行される波形生成の処理量Jwは、発音数
に応じて変動するが、音の持続性から急激に変動するこ
とはなく、その処理量は大きいが図3(b)に示すよう
に緩やかに変動するようになる。
アプリケーションソフト(音楽ソフト)として、図1に
示す処理装置で実行される場合のフローチャートを図4
に示す。音楽ソフト処理が起動されると、まず、ステッ
プS1において各種レジスタのクリアや、表示器8に表
示する画面の準備処理などの初期設定が行われる。つい
で、ステップS2において起動要因が存在するか否かの
チェックが行われる。起動要因としては、(1)再生中
の曲データのイベントタイミングとなったこと、(2)
MIDIイベントが入力されたタイミングであること、
(3)CPU1の能力に余裕ができたこと(空き時間)
が検出された、あるいは、一定期間、例えば1フレーム
分の時間の経過がソフトウェアタイマにより検出された
こと、(4)1フレームが終了したタイミングであるこ
と、(5)曲データの再生ボタンのダブルクリック、パ
ート音量制御操作のされたタイミングであること、
(6)終了ボタンがダブルクリックされたタイミングで
あることの6通りの要因が存在している。なお、起動要
因(3)において、「空き時間の検出」の方法を採用す
れば、CPU1の負荷が重くないときに音源ドライバ処
理を分散して実行することができる。また、「一定期間
の経過検出」の方法を採用すれば、音源ドライバ処理を
一定期間を単位として分散することができる。該一定期
間の長さをパラメータで変化すれば、処理の分散の程度
を制御することができる。
のうちの1つでも起動要因があるか否かがステップS3
で判定され、起動要因が発生していることが検出された
ときにはステップS4に進み、起動要因が1つも検出さ
れないときにはステップS2に戻って、起動要因の発生
を待つようになる。ステップS4では、前記起動要因
(1)が検出されたときに、ステップS5にて自動演奏
処理が実行されて、ステップS2に戻る。この自動演奏
処理では、MIDIファイルから読み出された曲データ
に応じて楽譜通りのタイミングでMIDIのフォームの
イベントを発生する処理が行われる。なお、起動要因
(1)に応じて発生したMIDIフォームのイベント
も、入力イベントとして起動要因(2)の要因となる。
は、ステップS4からステップS6に進みMIDI入力
処理が行われ、ステップS2に戻る。このMIDI入力
処理のフローチャートを図5に示すが、MIDI入力処
理が起動されるとステップS21にて発生されてMID
Iイベントが受け取られる。ついで、ステップS22に
て受け取ったMIDIイベントを、受信時刻と共にMバ
ッファに書き込む処理が行われる。これにより、入力さ
れたMIDIイベントは順次Mバッファに書き込まれて
いくようになる。さらに、起動要因(3)が検出された
ときには、ステップS4からステップS7に進み音源ド
ライバ処理1が実行され、ステップS2に戻る。この音
源ドライバ処理1のフローチャートを図6に示すが、音
源ドライバ処理1が起動されると、ステップS31にて
Mバッファ内に音源ドライバ処理が終了していない未完
のイベントがあるか否かが判定される。ここで、音源ド
ライバ処理が未完のイベントが検出されると、ステップ
S32に分岐して所定演算量の部分的な音源ドライバ処
理(図3(b)音源ドライバ処理量Jd1〜Jd6参
照)が行われる。また、未完のイベントが検出されない
場合は、音源ドライバ処理1では何も行われない。
2(c)に示すMバッファ内の格納データ数が1以上で
あることを検出すればよい。すなわち、格納データ数が
書かかれている部分をアクセスすることにより未完のイ
ベントの有無を検出することができ、未完のイベントが
あるときは、その読出ポインタ位置からデータを読み出
して音源ドライバ処理を施せばよい。なお、格納データ
数は音源ドライバ処理が終了していない未完のデータ数
であり、このデータ数は書込ポインタと読出ポインタと
の間のデータ数に相当し、イベントの音源ドライバ処理
が終了する毎に読み出しポインタは次のイベントのデュ
レーションのアドレス位置に移動されて、データ数は
「1」だけデクリメントされる。
ライバ処理の一例としてイベントがノートオンの際に行
われる音源ドライバ処理(ノートオン)のフローチャー
トを図7に示す。音源ドライバ処理(ノートオン)が起
動されると、ステップS41にて発音開始の準備を行う
ためにイベント中に含まれているパートナンバ情報、ノ
ートコード情報、および、ベロシティ情報を受け取る。
ついで、ステップS42にて発音すべきチャンネルの発
音割当が後着優先で行われる。この際、分散された音源
ドライバ処理が先行されて行われるため、音源ドライバ
処理は終了しているが、未だ発音されていない発音チャ
ンネルが存在していることがある。このため、空きチャ
ンネルがないときには、最も早く入力されたノートオン
イベントに割り当てられているチャンネルをトランケー
ト処理するようにする。ただし、ベース音の音色選択デ
ータが設定されているパートについては後着優先処理の
対象とせず最後まで発音させるのが好適である。
音色に従って、音源パラメータを発生すると共に、発生
された音源パラメータをPバッファに書き込む処理が行
われる。なお、図7に示す例ではステップS42及びス
テップS43の処理を、1回の音源ドライバ処理(ノー
トオン)で実行するようにしているが、1回の音源ドラ
イバ処理(ノートオン)において、ステップS42の処
理あるいはステップS43の処理のいずれかの処理を行
うようにして、2回の音源ドライバ処理(ノートオン)
で2つの処理を行うようにしてもよい。また、ステップ
S43において発生する全音源パラメータの1/nづつ
を、1回毎の音源ドライバ処理(ノートオン)において
発生するようにしてもよい。
動要因(4)が検出されたときは、ステップS4からス
テップS8に進み楽音波形サンプルを生成する音源エン
ジン処理が行われステップS2に戻る。この音源エンジ
ン処理のフローチャートを図8(a)に示すが、各フレ
ームの開始時に音源エンジン処理が起動され、ステップ
S51にて音源パラメータ再生が行われ、発音タイミン
グが到来した音源パラメータが、Pバッファから音源レ
ジスタに送られる。ついで、ステップS52にて、波形
生成すべき楽音波形のフレーム(現フレーム)の時刻範
囲に関し、Mバッファに格納されているイベントの音源
ドライバ処理が未完か否かが判定される。これは、音源
ドライバ処理が分散して行われるため、発音タイミング
に達しているにもかかわらず、音源ドライバ処理が終了
しておらず波形生成のためのすべての音源パラメータが
揃っていないことを検出するために行われる。
バ処理が未完と検出された場合は、ステップS53に分
岐して前記時刻範囲の未完のイベントに対応する音源パ
ラメータを発生するための音源ドライバ処理2が行わ
れ、発生された音源パラメータは音源レジスタに送られ
る。これにより、楽音波形を生成するためのすべての音
源パラメータが用意されたことになる。また、音源ドラ
イバ処理が未完のイベントはないと検出されたときは、
ステップS53の処理はスキップされる。そして、ステ
ップS54にて音源レジスタに格納されている音源パラ
メータに基づいて、発音中とされているチャンネル毎の
楽音波形サンプルが所定サンプル数生成されて、それら
の混合した1フレーム分の楽音波形サンプルが出力バッ
ファに格納される。ついで、ステップS55にて出力バ
ッファに格納された各チャンネルの楽音波形サンプルが
足し込まれた楽音波形サンプルに、エフェクト処理が施
されて再度出力バッファに格納される。そして、ステッ
プS56にて出力バッファの楽音波形サンプルが再生デ
バイスに再生予約される。これにより、次フレームにお
いてサンプリング周期毎に出力バッファから1サンプル
づつ読み出されて、DAC等の再生デバイスによりアナ
ログの楽音信号に変換されて発音されるようになる。
動要因(5)が検出されたときは、ステップS4からス
テップS9に進みその他の処理が行われステップS2に
戻る。その他の処理としては、曲データの再生ボタンが
ダブルクリックされて再生が指示されたときに行われる
再生処理、あるいは、パート別の音量を設定する操作子
が操作されてパート別音量設定が行われたとき行われる
パート音量制御処理等がある。再生処理は、曲データの
再生ボタンがダブルクリックされて再生が指示されたと
きに起動され、指定された曲データをハードディスク6
やリムーバブルディスク7等に記憶されているMIDI
ファイルにアクセスする処理等の、再生にかかる処理が
行われ、前記ステップS5に関して説明された自動演奏
がスタートされる。また、パート別の音量を設定する操
作子が操作された時は、図8(b)に示すフローチャー
トのパート音量制御処理が起動されて、パート別の音量
制御処理が実行される。
て、パート音量制御処理が起動されると、ステップS6
1にて音量操作されたパートのパートナンバと、そのパ
ートに設定された音量データを受け取る。ついで、ステ
ップS62にて音量操作された指定パートの音量の設定
データが、ユーザが操作した操作子の操作量に応じて書
き換えられる。この設定データは、前記図2(a)に示
すRAM3のパート設定データエリアに格納されてい
る。続いて、ステップS63にて指定パートの発音中あ
るいは待機中のチャンネルがあるか否かが判定される。
ここで、発音中のチャンネル、あるいは、まだPバッフ
ァに音源パラメータが格納されている待機中のチャンネ
ルが検出されたときは、ステップS64に進む。
ネルが検出されたときは、音源レジスタ内の検出された
チャンネルに対応する音量データが操作子の操作量に応
じて書き換えられる。また、待機中のチャンネルが検出
されたときには、Pバッファ内の検出されたチャンネル
に対応する音量データが操作子の操作量に応じて書き換
えられる。なお、指定されたパートの発音中あるいは待
機中のチャンネルが検出されないときは、ステップS6
4の処理はスキップされる。なお、図3(a)に示す時
間Δtが1sec以内に設定されているときは、待機中
のチャンネルの音量データの書き換えを行わず、Δtが
1secを越えて設定されているときだけ音量データの
書き換えを行うようにしてもよい。その場合、新たに設
定された音量データは、その後に発生するMIDIイベ
ントのみに対して作用する。このように、音源パラメー
タを発音タイミングより先行して分散生成するようにし
ても、楽音波形は発音タイミングとなるまで生成しない
ためリアルタイムでパート別の音量制御を行うことがで
きる。
因(6)が検出されたときは、ステップS4からステッ
プS10に進み、音源ソフト処理を終了させるための関
連する画面の表示を消去する等の所定の終了処理が行わ
れ、音楽ソフト処理が終了される。なお、前記起動要因
において、起動要因(1)および(2)の優先度が一番
高く、ついで起動要因(4)の優先度とされ、ついで起
動要因(5)の優先度が高く、最も優先度の低い起動要
因は起動要因(3)および(6)とされる。
設定されていたが、必ずしもRAM3に設定することな
く、すでにハードディスク6やリムーバブルディスク7
に記憶されている再生中の曲データ上の、再生位置の少
し先の領域をMバッファと見なすようにしてもよい。ま
た、Pバッファに格納されている音源パラメータは、組
とされたデュレーションの時刻に達したときに音源レジ
スタに転送されたが、デュレーションの時刻に達したと
きに音源がPバッファ上の音源パラメータに基づいて楽
音波形サンプルを生成することにより、Pバッファを音
源レジスタとして使用するようにしてもよい。また、図
3に示す「制御遅れ時間Δt」は、時間フレーム単位の
遅れではなく「aフレーム(aは0を含む正の整数)と
3分の2」等の遅れでもよい。さらに、以上の説明では
楽音データはMIDIフォームで表されるとしたが、こ
れに限らず楽音の発生/停止、音色、音量等を指示する
ことのできるデータであればいかなるデータで楽音デー
タを表わすようにしてもよい。
を起動する楽音生成タイミングとして起動要因(4)1
フレーム毎の例が示されているが、1フレーム毎に限る
ことはなく2フレームに1回とか1フレームに3回とか
としてもよい。さらにまた、音源エンジンが1回起動さ
れる毎に生成する楽音波形データの量も、1フレーム分
に限ることはない。さらにまた、本発明においては、音
源エンジンが起動されたとき、まずステップS52で音
源パラメータの生成が完了しているか否か判定して生成
できていない音源パラメータを生成するようにしていた
が、この処理を省略するようにしてもよい。その場合、
該起動の時点で生成されていた音源パラメータだけが楽
音生成に使用され、未生成の音源パラメータは無視され
る。音源パラメータが分散生成できないのは全体として
処理が重くなっている場合であり、この省略により処理
の削減を図ることができる。また、本発明の楽音生成方
法を、Windows (米マイクロソフト社のパソコン用O
S)やその他のオペレーティングシステムの動作する汎
用コンピュータ上で、1つのアプリケーションプログラ
ムとして、ゲームソフトやカラオケソフト等の他のアプ
リケーションプログラムと並列実行させてもよい。
で、受け取ったMIDIのフォームとされた楽音データ
をバッファに記憶しておき、音源ドライバがバッファに
記憶された楽音データを非同期で分散処理することによ
り音源パラメータを発生することができるようにしてい
る。従って、イベントが集中して発生しても、音源ドラ
イバの処理は分散して実行されるため、CPU負荷が急
激に増加することがなく、一時的な処理の集中による発
音数の減少を防止することができる。特に、ソフトウェ
ア音源における楽音波形の生成には安定した演算能力を
必要としているが、音源ドライバにおける処理は、イベ
ント単位で瞬間的に計算パワーを必要とするだけで長時
間でその負荷を平均すると数パーセント程度であるた
め、音源ドライバ処理を分散して実行する効果は非常に
大きなものとなる。また、音源ドライバまでの処理を先
行して実行し、波形生成は発音タイミングになったとき
に実行するようにしているので、生成する楽音に対し、
パート別の音量制御やパン制御等の処理をリアルタイム
で行うことができる。
の構成例を示すブロック図である。
エリアを示す図である。
ングを示すタイミングチャート、および、本発明と従来
の音源ドライバ処理量と波形生成処理量の変動を示す図
である。
理のフローチャートである。
処理のフローチャートである。
処理1のフローチャートである。
処理(ノートオン)のフローチャートである。
処理、および、パート音量制御処理のフローチャートで
ある。
ートを示す図である。
MIDIインターフェース、6 ハードディスク、7
リムーバブルディスク、8 表示器、9 キーボード
&マウス、10 音源、11 CPUバス
Claims (6)
- 【請求項1】 複数の楽音データを対応するタイミン
グデータと共に第1記憶手段に記憶する第1のステップ
と、 前記第1記憶手段に記憶された楽音データを読み出し
て、該楽音データに対応する楽音波形を生成するための
音源パラメータを生成し、該音源パラメータを対応する
タイミングデータと共に第2記憶手段に記憶する第2の
ステップと、 前記第2記憶手段に記憶された前記音源パラメータと対
応するタイミングデータに基づいて前記楽音波形を生成
し、生成された前記楽音波形を第3記憶手段に記憶する
第3のステップと、 前記第3記憶手段に記憶されている楽音波形を順次再生
する第4のステップと、 前記第4のステップにおける再生の進行に応じて第1の
タイミングを発生し、該第1のタイミングで前記第3の
ステップを起動する第5のステップと、 前記タイミングデータの示すタイミングとは独立した所
定の周期で第2のタイミングを発生し、該第2のタイミ
ングで前記第2のステップを起動する第6のステップ
と、 を備えていることを特徴とする楽音生成方法。 - 【請求項2】 前記第6のステップは、前記楽音生成
方法を実行する演算装置の使用状況を判定し、演算装置
の負荷が軽いときに前記第2のタイミングを発生するこ
とを特徴とする請求項1記載の楽音生成方法。 - 【請求項3】 前記第6のステップは、前記楽音生成
方法を実行する演算装置がソフトウェア的に検出する所
定時間ごとに前記第2のタイミングを発生することを特
徴とする請求項1記載の楽音生成方法。 - 【請求項4】 前記第2のステップが1回起動される
毎に、1つの楽音データに対応した音源パラメータが生
成されるようにしたことを特徴とする請求項1記載の楽
音生成方法。 - 【請求項5】 前記第2のステップが複数回起動され
た結果、1つの楽音データに対応した音源パラメータが
生成されるようにしたことを特徴とする請求項1記載の
楽音生成方法。 - 【請求項6】 前記第3のステップが起動されたとき
に、前記第1記憶手段に記憶された前記楽音データのう
ち、前記楽音波形の生成範囲に含まれるタイミングデー
タに対応した楽音データの音源パラメータが生成済みで
あるか否かを判定し、生成済みでない場合には未生成の
楽音データに対応する音源パラメータを発生してから楽
音波形を生成するようにしたことを特徴とする請求項1
記載の楽音生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30502297A JP3637577B2 (ja) | 1997-10-21 | 1997-10-21 | 楽音生成方法 |
US09/174,844 US5945619A (en) | 1997-10-21 | 1998-10-19 | Asynchronous computation of tone parameter with subsequent synchronous synthesis of tone waveform |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30502297A JP3637577B2 (ja) | 1997-10-21 | 1997-10-21 | 楽音生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11126069A true JPH11126069A (ja) | 1999-05-11 |
JP3637577B2 JP3637577B2 (ja) | 2005-04-13 |
Family
ID=17940157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30502297A Expired - Fee Related JP3637577B2 (ja) | 1997-10-21 | 1997-10-21 | 楽音生成方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5945619A (ja) |
JP (1) | JP3637577B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449661B1 (en) * | 1996-08-09 | 2002-09-10 | Yamaha Corporation | Apparatus for processing hyper media data formed of events and script |
US6366971B1 (en) * | 1998-01-09 | 2002-04-02 | Yamaha Corporation | Audio system for playback of waveform sample data |
JP4240575B2 (ja) * | 1998-05-15 | 2009-03-18 | ヤマハ株式会社 | 楽音合成方法、記録媒体および楽音合成装置 |
US7127528B2 (en) * | 2002-07-22 | 2006-10-24 | Honeywell International Inc. | Caching process data of a slow network in a fast network environment |
JP2006030517A (ja) * | 2004-07-15 | 2006-02-02 | Yamaha Corp | 発音割当装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596159A (en) * | 1995-11-22 | 1997-01-21 | Invision Interactive, Inc. | Software sound synthesis system |
-
1997
- 1997-10-21 JP JP30502297A patent/JP3637577B2/ja not_active Expired - Fee Related
-
1998
- 1998-10-19 US US09/174,844 patent/US5945619A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP3637577B2 (ja) | 2005-04-13 |
US5945619A (en) | 1999-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3637578B2 (ja) | 楽音生成方法 | |
JP3293434B2 (ja) | 楽音発生方法 | |
JPH09179556A (ja) | 楽音生成方法および装置 | |
US5770812A (en) | Software sound source with advance synthesis of waveform | |
JP2924745B2 (ja) | 楽音発生装置及び方法 | |
JPH0922287A (ja) | 楽音波形生成方法 | |
JPH11126069A (ja) | 楽音生成方法 | |
US6770806B2 (en) | Tone signal processing apparatus with intermittent clock supply | |
JPH07121181A (ja) | 音声情報処理装置 | |
US6040516A (en) | Tone generation system using computer software and storage medium storing the computer software | |
JP4096952B2 (ja) | 楽音発生装置 | |
JP3000894B2 (ja) | 楽音発生方法 | |
JP2000242265A (ja) | 自動演奏装置 | |
JP3003559B2 (ja) | 楽音生成方法 | |
JPH10207465A (ja) | 楽音発生方法および楽音発生装置 | |
JP3127873B2 (ja) | 波形再生方法、波形再生装置、波形出力回路およびシーケンス再生装置 | |
JP3603638B2 (ja) | 楽音発生方法 | |
JP2641851B2 (ja) | 自動演奏装置 | |
JP3257400B2 (ja) | エフェクト装置 | |
JP4120979B2 (ja) | 波形再生装置 | |
JP3603849B2 (ja) | 楽音発生方法 | |
JP3235557B2 (ja) | 波形再生装置、波形録音再生装置、波形出力回路、波形入出力回路、波形再生方法および波形録音再生方法 | |
JP3627557B2 (ja) | 楽音発生装置及び方法 | |
JP3705203B2 (ja) | 楽音発生方法 | |
USRE40364E1 (en) | Tone signal processing apparatus with intermittent clock supply |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20030318 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041124 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041228 |
|
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: 20090121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100121 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110121 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120121 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130121 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |