JPH09325778A - 楽音発生方法 - Google Patents
楽音発生方法Info
- Publication number
- JPH09325778A JPH09325778A JP8165161A JP16516196A JPH09325778A JP H09325778 A JPH09325778 A JP H09325778A JP 8165161 A JP8165161 A JP 8165161A JP 16516196 A JP16516196 A JP 16516196A JP H09325778 A JPH09325778 A JP H09325778A
- Authority
- JP
- Japan
- Prior art keywords
- musical tone
- processing
- tone
- generated
- waveform
- 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
- G10H1/00—Details of electrophonic musical instruments
- G10H1/18—Selecting circuits
- G10H1/183—Channel-assigning means for polyphonic instruments
- G10H1/185—Channel-assigning means for polyphonic instruments associated with key multiplexing
- G10H1/186—Microprocessor-controlled keyboard and assigning means
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S84/00—Music
- Y10S84/12—Side; rhythm and percussion devices
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
れたときに発生される割込によりMIDI処理が実行さ
れ、演奏情報に対応する楽音制御情報が生成される。複
数サンプルに対応する1フレーム時間の再生終了時に発
生される割込により、波形生成処理が起動され、該処理
において楽音制御情報に基づき、1フレーム時間分の楽
音波形サンプルがまとめて演算生成される。前記MID
I処理、波形生成処理および他のプログラムの処理のい
ずれもが実行されないCPUの空き時間に、先行するフ
レーム時間分の楽音波形サンプルの先行生成が行なわれ
る。先行生成した楽音を変更するMIDIイベントが入
力されたときには、先行生成してあった楽音波形サンプ
ルを破棄して、出力すべき楽音波形サンプルの再計算を
行なう。
Description
える汎用処理装置により楽音波形サンプルを演算により
生成する楽音発生方法に関するものである。
(Musical Instrument Digital Interface)、鍵盤、あ
るいはシーケンサ等からの演奏情報を入力する演奏入力
部、楽音波形を生成する音源部、入力した演奏情報に応
じて前記音源部を制御するマイクロプロセッサ(CP
U)等から構成されていた。CPUは、入力した演奏情
報に応じて、チャンネルアサイン、パラメータ変換等の
音源ドライバ処理(演奏処理)を実行し、音源部の割り
当てたチャンネルに変換したパラメータと発音開始指示
(ノートオン)を音源部に供給する。音源部は、LSI
(Large Scale Integrated circuit)等の電子回路(ハ
ードウェア)で構成され、供給されたパラメータに基づ
いて楽音波形を生成する。このため、楽音生成装置は楽
音を生成するための専用機器となってしまい、楽音を生
成する時には専用の楽音生成装置を用意する必要があっ
た。
は、前記ハードウエア音源の動作をコンピュータプログ
ラムによる音源処理(ソフトウエア音源)に置き換え、
CPUにより演奏処理と音源処理とを実行させるように
した楽音生成方法が提案されている。ここで、演奏処理
とは、前述した音源ドライバ処理に相当する処理であっ
て、入力されたMIDIなどの演奏情報に基づき、生成
される楽音を制御するための制御情報を作成する処理で
ある。また、音源処理とは、前記演奏処理において作成
された制御情報に基づき楽音の波形サンプルデータを生
成する処理のことである。この楽音生成方法によれば、
専用の楽音生成装置を用いることなく、CPUとソフト
ウエアの他にはDA変換用のチップを備えるだけで、楽
音を発生させることが可能となる。また、楽音を生成す
るプログラムのほかに他のアプリケーションプログラム
を並行して実行させることが可能となる。
には、サンプリング周期、すなわち、DAC(Digtal A
nalog Converter )における変換タイミング毎に波形サ
ンプルをDACに供給することが必要である。そこで、
従来の楽音生成方法においては、CPUは、通常時は押
鍵検出等の演奏処理を実行し、該演奏処理に対して各サ
ンプリング周期毎に音源処理を割り込み実行して、複数
チャンネルの楽音の1サンプル分の波形データを演算生
成した後、再び演奏処理に復帰するという動作を行なう
ようになされていた。
処理を行う場合、まず、前回の当該発音チャンネルの演
算に用いた各種レジスタ値をメモリからCPUのレジス
タに読み出す等の準備処理が必要であり、また、当該発
音チャンネルの楽音生成処理後には次回の処理のため、
前記レジスタ値をメモリに書き込むことが必要である。
したがって、各発音チャンネルの楽音波形サンプルの演
算処理を1サンプルずつ生成する場合には、楽音を生成
する処理以外の準備処理などに多くの演算時間が費やさ
れ、演算効率が悪くなり応答や楽音生成処理が遅くなる
という問題点があった。そこで、CPUの処理効率を向
上するために、サンプリング周期よりも長い周期、例え
ば、MIDIに同期した割込サイクルで波形生成演算を
行ない、サンプリング周波数に同期した割込サイクルで
該演算生成した楽音波形を再生することが行われてい
る。
の演奏操作やシーケンサでのイベントの再生により発生
し、演奏情報が発生した場合には演奏処理により演奏情
報が処理される。つまり、演奏情報の発生した時点で
は、CPUは、通常の音源処理に加えて演奏処理を実行
しなければならないため、非定期的に発生する演奏情報
により、演算量が一時的に増加することになる。しかし
ながら、従来の楽音生成方法においては、音源処理は、
演奏情報のあるなしにかかわらず定期的に優先実行さ
れ、場合によっては演奏処理が遅れてしまうという問題
点があった。さらに、ゲームソフトなどにおいては、画
像表示など他のプログラムもマルチタスクで実行されて
おり、それらのタスクの混み具合によって、音源処理に
余裕のある状態と余裕の無い状態が生じてしまい、場合
によっては楽音の再生がとぎれたりするという不都合が
生じることがある。
することができる楽音発生方法を提供することを目的と
している。
に、本発明の楽音発生方法は、演算処理装置により楽音
波形サンプルを演算生成し、該演算生成された楽音波形
サンプルを記憶する出力バッファからサンプリング周期
毎に前記楽音波形サンプルを読出再生することにより楽
音を発生する楽音発生方法であって、(イ)演奏情報の
入力により起動され、該演奏情報に応じて複数の発音チ
ャンネル分の楽音制御情報を生成する第1のステップ、
(ロ)所定時間毎に起動され、前記楽音制御情報に基づ
いて複数の発音チャンネル分の楽音波形サンプルを演算
生成して出力バッファに記憶する第2のステップ、およ
び、(ハ)演算処理装置における処理の空き時間を検出
することにより起動され、所定の発音チャンネルに対応
する楽音波形サンプルを演算生成して記憶手段に記憶す
る第3のステップを有し、前記第2のステップは、前記
記憶手段中に前記第3のステップにより演算生成された
楽音波形サンプルが記憶されている発音チャンネルにつ
いては、楽音波形サンプルを演算生成する代わりに、該
記憶手段中に記憶されている楽音波形サンプルを前記出
力バッファに記憶するようになされている楽音発生方法
である。そして、前記所定の発音チャンネルは、所定の
音色が割り当てられた発音チャンネルあるいは所定の演
奏パートの演奏情報が割り当てられた発音チャンネルで
あるようになされた楽音発生方法である。
により前記記憶手段に楽音波形サンプルが記憶されてい
る発音チャンネルについて、その楽音波形サンプルを変
更する必要がある演奏情報が入力されたことを検出した
ときに、前記記憶手段に記憶されている当該楽音波形サ
ンプルのキャンセルを行う第4のステップを有する楽音
発生方法である。
形態を実行することのできる楽音生成装置の構成を図1
に示す。この図において、1はアプリケーションプログ
ラムや楽音波形サンプルの生成等の各種演算処理を行う
マイクロプロセッサなどの中央処理装置(CPU)、2
はプリセット音色データ等が記憶されているリードオン
リメモリ(ROM)、3はCPU1のワークメモリエリ
アや音色データエリア、チャンネルレジスタエリア、出
力バッファエリア等の記憶エリアを有するランダムアク
セスメモリ(RAM)、4は時刻を指示すると共に、タ
イマ割り込み処理のタイミングをCPU1に指示するタ
イマ、5はMIDIイベントが入力されると共に、生成
されたMIDIイベントを出力するMIDIインターフ
ェース、6は英字、かな、数字、記号などのキーと備え
るいわゆるパソコン用のキーボードである。
のディスプレイ(モニタ)装置、8は楽音を発生するシ
ーケンサソフトやゲームソフトなどの各種アプリケーシ
ョンプログラムが格納されているとともに、楽音波形サ
ンプルを生成するために使用する波形データ等が記憶さ
れているハードディスク(HDD)、10は、RAM3
の一部のCPUにより指定されたエリア(DMAバッフ
ァ)に記憶されている楽音波形サンプルデータを、一定
のサンプリング周期(例えば、48kHz)毎にCPU
1を介することなく直接にサウンド入出力回路(COD
EC)11内のデジタル・アナログ変換器(DAC)に
供給するためのダイレクトメモリアクセス制御回路(D
MAC;Direct Memory Access Controller)からなる再
生部である。
出力回路であり、その内部には、デジタル・アナログ変
換器(DAC)、アナログ・デジタル変換器(AD
C)、前記ADCに接続された入力用の先入れ先出しバ
ッファ(FIFO)および前記DACに接続された出力
用のFIFOが設けられている。このサウンド入出力回
路(CODEC)11は、サンプリングクロック発生器
12から入力される周波数Fsのサンプリングクロック
に応じて前記ADCによりA/D変換された外部オーデ
ィオ信号入力回路13からのオーディオ入力信号を前記
入力用のFIFOに取り込み、また、前記DMAC10
から前記出力用のFIFOに書き込まれた波形サンプル
データを該サンプリングクロックに応じて読み出して前
記DACに1サンプルずつ出力する。そして、前記入力
用FIFOにデータが存在するとき、および、前記出力
用FIFOに空があるときには、データ処理を要求する
信号を前記DMAC10に対して出力するように動作す
る。
数Fsのサンプリングクロックを発生するサンプリング
クロック発生回路、13は外部オーディオ信号入力回路
であり、その出力は前記サウンド入出力回路11内のA
DCに接続されている。また、14は前記サウンド入出
力回路11内のDACからの出力に接続されたサウンド
システムであり、1サンプリング周期毎にDACから出
力されるアナログ信号に変換された楽音信号を増幅して
外部出力する。さらに、15はフロッピィディスクを駆
動するためのフロッピィディスク装置、16は前記各構
成要素間のデータ転送を行なうためのバスである。な
お、CD- ROM装置やMO装置などの上記した以外の
外部記憶装置が接続されている場合もある。以上の構成
は通常のパーソナルコンピュータやワークステーション
等と同等であり、それらの上で本発明の楽音発生方法を
実施することができる。
タエリアについて、図2および図3を参照して説明す
る。図2の(a)はシーケンサソフトやゲームソフトな
どの演奏情報を発生するソフトウエアにより発生される
ノートオン、ノートオフなど各種のMIDIイベントデ
ータID1,ID2,ID3,・・・が順次書き込まれ
る入力バッファである。これらMIDIイベントデータ
ID1,ID2,ID3,・・・は、MIDIイベント
のデータ内容(例えば、データ1内容)と、そのデータ
の発生時刻(データ1発生時刻)とにより構成されてお
り、この発生時刻はMIDIイベントデータ受信時にタ
イマ4の現在時刻を取り込むことにより知ることができ
る。
り、この音色データレジスタには、各MIDIチャンネ
ル(演奏パート)で生成される楽音波形を決定する音色
データTP(1)、TP(2)・・・が記憶されてい
る。この音色データTPとしては、各音色毎に素材とす
る波形テーブルを指定する波形指定データ、ビブラート
等をかける時に使用するLFO(Low Frequency Oscill
ator)制御用のデータ、音色フィルタ特性を制御するフ
ィルタエンベロープの発生制御用のデータ(FEG制御
OD)、振幅を制御する振幅エンベロープの発生制御用
のデータ(AEG制御OD)、ベロシティにより楽音の
立ち上がりの速さ等を変えるタッチ制御用のデータ(タ
ッチ制御OD)、その他のデータ(その他OD)が記憶
されている。なお、ODはオリジナルデータであること
を示しており、発音指示時のタッチデータ,音高データ
等に応じてこれらのオリジナルデータに加工を施すこと
により音源が使用する発音用のデータが作成される。
音源レジスタは、各発音チャンネル(ch)別に該発音
チャンネルで生成される楽音波形を決定するデータを記
憶するものであり、この例では1ch,2ch,・・
・,32chの32チャンネル分のエリアが用意されて
いる。各チャンネルのエリアはノートナンバ、波形テー
ブルのアドレスを示す波形指定データ、LFO制御デー
タ(LFO制御D)、フィルタエンベロープ制御データ
(FEG制御D)、振幅エンベロープ制御データ(AE
G制御D)、ノートオンデータ、タイミングデータ(T
M)、その他のデータ(その他D)、およびCPU1が
プログラム実行時に使用するワークエリアからなってい
る。この波形指定D、LFO制御D、FEG制御D、A
EG制御Dは前記したオリジナルデータに加工が施され
た発音用のデータである。
る。本発明の楽音発生方法においてはCPUの空き時間
を利用して楽音波形サンプルの先行生成を行っており、
この先行生成された楽音波形サンプルを格納するための
バッファがこの先行生成バッファSBである。この先行
生成バッファSBは、先行生成した楽音波形サンプルが
再生されるフレーム時間(先行タイミング)ST1、S
T2・・・毎に、先行生成された発音チャンネル(ch
1〜chn)の1フレーム時間(この例においては12
8サンプル)分の楽音波形サンプルを各発音チャンネル
別に格納するものである。そして、各先行時刻STの先
行バッファSB中にどの発音チャンネルの楽音波形サン
プルが先行生成されているかを示す管理データを用い、
該管理データにより示される発音チャンネル分の波形デ
ータを記憶するために充分な大きさの領域を先行生成バ
ッファSBの領域とすることにより、先行生成されない
チャンネルのための無駄な領域を設定することを防止す
ることができる。
演算生成された例えば128サンプル分の楽音波形デー
タ記憶エリアOD1〜OD128を備えている。この出
力バッファOBには、演算により生成された最大32発
音チャンネルの楽音波形サンプルデータを順次加算合成
した楽音波形データが記憶される。波形データの演算
は、1つのチャンネル毎に1フレーム時間分(128サ
ンプル)の楽音波形サンプルをまとめて演算生成し、こ
れを発音しているチャンネル分(最大32チャンネル
分)繰り返すという手順で行われるが、一つのチャンネ
ルの楽音波形データが演算生成される毎にこの楽音波形
データを出力バッファOB内に格納されている楽音波形
データに累算していくことにより行なわれる。
0ワード、500ワード、1Kワード、5Kワード等任
意に設定することができるが、サイズを大きくすると発
音に遅れを生じ、サイズを小さくすると時間的マージン
が減少し、一時的な演算量の増加時に応答が悪くなるこ
とになる。そこで、リアルタイム性が要求されない、例
えばシーケンサ演奏等の場合は、演奏タイミングを前に
ずらすことにより発音遅れを吸収できるため、出力バッ
ファのサイズを大きくすることができるが、リアルタイ
ムの演奏が必要とされる、例えば鍵盤演奏等の場合にお
いては、発音遅れを防止するため、バッファサイズは1
00〜200サンプルとするのが好適である。以上は、
再生のサンプリング周波数が40kHz〜50kHzの
場合であり、サンプリング周波数を低く設定する場合
は、発音遅れを防止するためもっと小さいサイズにする
必要がある。
発明の楽音発生方法は実行されるのであるが、この実施
の形態においては、入力される演奏情報(MIDIイベ
ント)により楽音制御情報を生成する処理(MIDI処
理)を該MIDIイベントが入力される毎に実行し、該
楽音制御情報に基づいて各発音チャンネル分の楽音波形
サンプルを1フレーム時間分まとめて演算生成する処理
(波形生成処理)を所定の計算時刻(1フレーム時間)
毎に実行するようにしている。そして、波形生成処理に
より演算生成され出力バッファOBに記憶された楽音波
形サンプルは、再生部(DMAC)10により管理され
るDMAバッファに転送され、該再生部10によりDM
Aバッファからサンプリング周期毎に1サンプルずつ読
み出されてDACに供給され、サウンドシステム14か
ら発音されることとなる。
レーム時間毎に起動されるだけではなく、前記CPU1
における処理に空が生じたことを検出したときにも起動
されるようになされており、この空き時間を利用して楽
音波形サンプルの先行生成が行なわれるようにされてい
る。このように所定の計算時刻に達していないときで
も、CPUの空き時間を利用して先のフレーム時間分の
楽音波形サンプルを先行して演算生成しておくことによ
り、一時的に処理が輻輳して楽音波形の演算生成が間に
合わなくなることを防止することが可能となる。
の形態における各処理のタイミングについて図8を参照
して説明する。この図において横軸は時間軸である。前
述したように本発明の楽音生成方法においては波形生成
演算は1フレーム(128サンプル)を単位として実行
されており、この図において、時刻taからtbまでの
期間Ta、tb〜tcの期間Tb、tc〜tdの期間T
cはいずれも1フレーム時間である。
ソフトやシーケンスソフトなどのアプリケーションプロ
グラムからMIDIイベントが発生したときに生じるソ
フトウエア割込の発生タイミングを示しており、この図
の例においては、期間Ta中の時刻t1およびt3、ま
た、期間Tb中の時刻t6にMIDIイベントによるソ
フトウエア割込が発生している。図の次の段に記載され
ているのは、MIDI処理(S10)の実行されるタイ
ミングであり、この図に示すように、MIDIイベント
によるソフトウエア割込が発生される毎にこのMIDI
処理が実行されている。
により行なわれる楽音波形サンプルの読出再生の様子を
示したもので、1フレーム時間分の楽音波形サンプルの
出力が終了する毎に1フレーム再生完了割込が発生され
る(時刻ta、tb、tc、tdに発生されている上向
きの矢印)。この割込により、波形生成処理(S20)
が起動される。この波形生成処理において演算生成され
た楽音波形サンプルは該波形生成演算の終了時に前述し
たDMAバッファに転送され、次のフレーム周期に再生
部により読出再生される。
ベントに対応する波形生成演算は期間Tbに実行され、
該波形生成された楽音波形サンプルは期間Tcに読出再
生される。したがって、演奏入力があってから(MID
Iイベントが発生してから)実際に楽音が発生されるま
で(あるいは消音されるまで)に約2フレーム分の時間
ずれが生じることとなるが、1フレームが128サンプ
ルの時には1フレーム時間は約2.67ミリ秒(サンプ
リング周波数=48kHzのとき)であり、その時間ず
れはわずかなものである。
のは、楽音の発生に係る処理以外の処理が実行されるタ
イミングである。前述したように、本発明の楽音発生方
法が実行される演算処理装置においては、楽音の発生以
外の処理も並行して実行することができるものであり、
この図に示すように、時刻t2において波形生成処理が
終了した後にこの他の処理の実行が開始される。そし
て、この図の例においては、途中でMIDI処理および
波形生成処理に割り込まれながら、該他の処理が時刻t
5まで実行されている。
ているのは空き時間処理(S30)である。この処理
は、前記MIDI処理、他の処理および波形生成処理の
いずれも起動していないときに実行される最も優先順位
の低い処理であり、この例においては、時刻t5におい
て他の処理が終了した後時刻t6においてMIDI処理
が起動されるまでの間、および、時刻t8においてMI
DI処理が終了した後時刻t9に他の処理が起動される
までの間に実行されている。この処理において楽音波形
の先行生成が行なわれる。
前記波形生成処理とが最も高い優先順位とされ、その次
に前記他の処理、さらにその次に前記空き時間処理とさ
れている。したがって、MIDI処理あるいは波形生成
処理を実行中に1フレーム完了割込あるいはMIDIイ
ベント発生割込が発生したときは、実行中の処理を中断
して、後に発生した割込に対応する処理が実行されるこ
ととなる。例えば、この図において、時刻taに発生し
たハードウエア割込に対応する波形生成処理を実行して
いる途中の時刻t1にソフトウエア割込が発生して、当
該MIDIイベントに対応するMIDI処理が実行さ
れ、このMIDI処理が終了した後に、前記波形生成処
理の続きが実行される。また、時刻t6に発生したソフ
トウエア割込に対応するMIDI処理を実行中の時刻t
cに再生部10からのハードウエア割込が発生して、該
MIDI処理が中断されて当該波形生成処理が実行さ
れ、この波形生成処理が時刻t7に終了した後に、再び
前記中断されていたMIDI処理が再開されている。ま
た、他の処理を実行中の時刻t3にMIDIイベントが
発生したときは、該他の処理が中断されてMIDI処理
が実行され、該MIDI処理が終了した後に前記他の処
理が再開されている。
細について図4を参照して説明する。 (メインルーチン)図4の(a)はメインルーチンを示
す図である。このソフトウエア音源が起動されると、ま
ず、ステップS1においてRAM3上の各種バッファ領
域の確保などの初期設定処理が行なわれ、続いてステッ
プS2においてこのソフトウエア音源の表示画面が準備
される。そして、ステップS3に進み、何らかの起動要
因が発生しているか否かがチェックされ、ステップS4
において起動要因の有無が判定されて、起動要因が発生
しているときはステップS5に進み、発生していないと
きは前記ステップS3に戻って、起動要因の発生を待
つ。
においてその起動要因が何であるのかが判定され、起動
要因に応じてそれぞれ対応する処理が実行される。起動
要因としては、(1)シーケンサソフトなどからのMI
DIイベントの発生、(2)1フレーム分の波形サンプ
ルの再生(DACへの出力)の完了、(3)CPUの空
き時間の検出、(4)パネル入力やコマンド入力などの
各種の要求、および、(5)終了コマンド入力などによ
る終了要求がある。
MIDIイベントの発生はソフトウエア割込として、ま
た、上記(2)の1フレーム分の再生完了はサウンド入
出力回路11あるいはDMAC10により発生されるハ
ードウエア割込としてCPUに通知される。また、上記
(3)の各種要求および(4)の終了コマンド入力は、
キーボード6や操作パネルあるいはディスプレイ7のウ
インドウ画面などからのユーザー操作により入力され
る。前記ソフトウエア割込およびハードウエア割込は前
記ユーザー操作入力よりも高い優先順位とされており、
上記(1)および(2)に対応する各処理が上記(3)
および(4)に対応する各処理よりも優先して実行され
る。
による判定の結果、(1)MIDIイベントの発生が起
きたときは、S10のMIDI処理が実行される。この
MIDI処理S10においては、シーケンサソフト、ゲ
ームソフトなどの楽音を生成するアプリケーションプロ
グラムから発生されるMIDIイベントに対応して、ノ
ートオン、ノートオフ、プログラムチェンジ、コントロ
ールチェンジ、システムエクスクルーシブなどそれぞれ
のMIDIイベントに対応した処理が行われる。
ンイベントの場合にはノートオンイベント処理が行われ
る。このノートオンイベント処理のフローチャートを図
5の(a)に示す。ノートオンイベント処理が開始され
ると、まず、ステップS61において、そのノートオン
イベントデータのノートナンバおよびパート別音色デー
タをそれぞれNNレジスタおよびtレジスタに記憶す
る。次に、ステップS62において32チャンネルの発
音チャンネルのなかからこのノートオンに係る楽音を発
音する発音チャンネルを割り当て、割り当てられたチャ
ンネルの番号をiとしてレジスタに記憶する。次にステ
ップS63に進み、このノートオンイベントを受信した
MIDIチャンネルに対応した音色データTP(t)を
前記ノートナンバNNおよびベロシティVELの値に応
じて加工して得られる音色データをノートオンを示すデ
ータおよび発生タイミングTMとともに、この割り当て
られた発音チャンネルiに対応する音源レジスタに書き
込む。
トオフイベントであるときは、図5の(b)に示すノー
トオフイベント処理が実行される。ノートオフイベント
処理が開始されると、まず、ステップS71において、
そのノートオフイベントのノートナンバがNNレジスタ
に取り込まれ、また、そのノートナンバNNで発音され
ている発音チャンネル(ch)がサーチされて、対応す
る発音チャンネルの番号がiとしてレジスタに取り込ま
れる。次に、ステップS72において、ichの音源レ
ジスタにこのノートオフイベントの発生時刻TMとノー
トオフを示すデータを書き込む。
チャンネルiの楽音波形サンプルが先行生成されている
か否かが判定され、先行生成された楽音波形が有る場合
には、ステップS75において該先行生成された楽音波
形のキャンセル処理を実行する。これは、ノートオフイ
ベントが発生したときには、当該発音チャンネルの波形
を立ち下げることが必要となり、ノートオフ後の楽音波
形を生成し直さなければならないために、先行生成され
ている当該発音チャンネルの楽音波形を破棄する処理で
ある。前述したように、先行生成バッファSBは先行タ
イミングST毎に発音チャンネル別に先行生成された楽
音波形を記憶しているために、ノートオフイベントが入
力された発音チャンネルに対応する楽音波形のみをキャ
ンセルすることは容易に行うことができる。
イベント処理においてのみ実行されるわけではなく、例
えば、イクスプレッションイベント処理などの発音開始
後の楽音波形の変更を要求する楽音制御イベントが発生
したときに実行されるものである。上記のようにMID
I処理(S10)が実行された後は、ステップS11に
進み、ディスプレイ装置7にMIDIイベントが受信さ
れた旨の表示処理が実行され、再びステップS3に戻
り、次の起動要因の発生を待つ。
フレーム分の波形サンプルの再生完了であるときは、S
20の波形生成処理が実行される。この波形生成処理は
ハードウエア音源の機能をシミュレートするものであ
り、前記MIDI処理において生成された発音制御情報
に基づいて1フレーム期間分の楽音波形サンプルをまと
めて演算生成し、出力バッファに記憶する処理である。
図6にこの波形生成処理のフローチャートを示す。
と、まず、ステップS81において、演算順序の第1番
目の発音チャンネル(ch)の最初の楽音波形サンプル
の演算準備が行なわれる。本発明のようにCPUにより
楽音波形サンプルの演算生成を行なう場合には、他の処
理からの割込などにより波形生成演算のためのCPU占
有時間が少なくなり、全発音チャンネル分の楽音波形サ
ンプルの供給が間に合わなくなるおそれがある。そこ
で、複数の発音チャンネル分の楽音を演算生成するとき
に、重要度の高い発音チャンネルから先に演算するよう
に、該複数の発音チャンネルに演算順序を付している。
ここで、重要度の高い発音チャンネルとは、発音レベル
が高いチャンネル、発音開始からの時間が短いチャンネ
ル、複数パート音演奏されているときの一番高い音、一
番低い音あるいはソロのパートの音を発音しているチャ
ンネルなどである。この最も優先順位の高い発音チャン
ネルが前記演算順序の第1番目の発音チャンネルであ
る。また、演算準備処理とは、前回の読み出しアドレ
ス、各種EG値、各種EGのステート(アタックやリリ
ースなどの状態)、LFO(Low Frequency Oscillato
r)値等のデータを、ただちに演算に使えるようにアク
セス準備したりCPU1の内部レジスタにロードしたり
する処理である。
ンネルの先行生成された楽音波形サンプルが有るか否か
を判定する。この発音チャンネルが先行生成の対象とな
る発音チャンネルであり対応する楽音波形サンプルが先
行生成バッファSB内に格納されているときには、ステ
ップS83に進み、出力バッファOBに先行生成バッフ
ァSB(ST1)に格納されている楽音波形サンプルを
足し込む。したがって、楽音波形生成演算を行わないの
で、非常に短時間に当該発音チャンネルについての処理
は終了することとなる。
きには、ステップS84に進み、波形生成演算が行われ
る。このステップS84においては、LFO、フィルタ
EG(FEG)、音量EG(AEG)の波形計算を行な
い、1フレーム時間分の演算に必要なLFO波形、FE
G波形、AEG波形のサンプルを生成する。LFO波形
はFナンバ、FEG波形、AEG波形に加算され、各デ
ータを変調するために用いられる。次いで、前回の読み
出しアドレスを初期値としてFナンバを繰り返し加算
し、1フレーム時間内の各波形サンプルの読み出しアド
レスを発生する。この読み出しアドレスの整数部に基づ
いて音色データ内の波形記憶領域より波形サンプルを読
み出すとともに、この読み出しアドレスの小数部に基づ
いて読み出された波形サンプル間の補間を行ない、1フ
レーム時間内の全補間サンプルを算出する。1フレーム
時間が、例えば128サンプル分の時間に相当する場
合、128サンプル分まとめて処理される。
プルに対し、前記FEG波形に基づいて音色制御を行な
う音色フィルタ処理が行なわれ、次いで、フィルタ処理
済みの各サンプルに対し前記AEGおよび音量データに
基づく振幅制御処理が行われる。次にステップS85に
おいて、S84の波形生成演算からの振幅制御処理され
た前記1フレーム時間分の楽音波形サンプルがそれぞれ
出力バッファOBの対応するサンプルに足し込まれる累
算書込処理が実行される。
5が実行された後、ステップS86において演算する必
要のある全発音チャンネル分の処理が完了したか否かが
判定され、完了していないときは、ステップS87にお
いて次の演算順序の発音チャンネルを指定して、再び前
記ステップS82に戻る。また、演算する必要のある全
発音チャンネルについて処理が完了したときは、ステッ
プS88に進む。このとき、発音中の全発音チャンネル
について演算生成された楽音波形サンプルの累算値が1
フレーム時間分の楽音波形サンプルとして出力バッファ
OB内に記憶されている。ステップS88では設定に応
じてリバーブ演算などのエフェクト処理が実行される。
次に、ステップS89に進み、該リバーブ効果などが付
与された出力バッファOB中の楽音波形サンプルの再生
予約を行なう。これは、出力バッファOBの内容を例え
ば2つあるDMAバッファのうちの現在波形の出力が行
われていない方のバッファに転送することにより行われ
る。以上が波形生成処理である。
て、起動要因がCPUの処理に空き時間があることの検
出であったときには、ステップS30の空き時間処理が
実行される。この空き時間処理のフローチャートを図7
に示す。空き時間処理が開始されると、まず、ステップ
S91において、特定の音色又は特定のパートの発音が
なされているかを検出する。これは、ノートオフイベン
トなどの発音開始後の楽音制御イベントが発生されるこ
とが少ない音色またはパートが楽音波形サンプルの先行
生成に適しているために、このような音色またはパート
が発音チャンネル中に有るのか否かを判定するためであ
る。
においてはノートオフイベントなどの発音開始後の楽音
制御イベントが発生されることは非常に希であり、この
ような音色が割り当てられている発音チャンネルについ
ては、楽音波形サンプルを先行生成しても該楽音波形サ
ンプルがキャンセルされることは少ない。一方、トラン
ペットなど持続音の音色あるいはピアノ音色などの場合
には、ノートオフイベントあるいはイクスプレッション
イベントなどのイベントが発生される場合が多く、この
ような音色については、先行生成してもキャンセルされ
る確率が高い。したがって、この実施の形態において
は、ノートオフイベントなどの発音開始後の楽音制御イ
ベントの発生が少ない楽音を発生する発音チャンネルに
ついて優先的に先行生成するようにしている。したがっ
て、前記ステップS91の判定の結果、ノートオフイベ
ントなどの発音開始後の楽音制御イベントが発生される
ことが少ない音色またはパートが発音されていないとき
には、先行生成を行うことなく空き時間処理が終了す
る。
中であるときは、ステップS93に進み、先行時刻ST
の楽音波形サンプルが未生成のチャンネルが検出され
る。ここで、先行時刻STはフレーム時間を単位とする
ものであり、ST1は現在発音しているフレームの次の
フレーム、ST2はさらにその次のフレームを指す。こ
の判定の結果、先行時刻STにおいて未生成のチャンネ
ルがあるときには、ステップS95に進み、該チャンネ
ルの先行時刻STにおける楽音波形を生成し、生成した
楽音波形を対応する先行時刻の先行生成バッファSBの
当該発音チャンネルの領域に格納する。なお、この先行
生成演算は、前述した波形生成処理と同様にして実行さ
れる。また、前記ステップS94の判定結果がNOのと
きは、ステップS96において先行時刻STを一つ先に
進める。
実行した後、ステップS97に進み、まだ空き時間であ
るか否かを判定し、空き時間であるときは、再び、ステ
ップS93に戻って、前述した処理を実行する。また、
他のタスクが発生して空き時間でなくなったときは、こ
の処理を終了する。そして、ステップS41(図4)に
おいて、この空き時間処理の結果などを表示した後、再
び、ステップS3にもどり、起動要因の発生を待つ。
おいて、起動要因がその他の処理であると判定されたと
きは、ステップS40に進み、それに対応する処理が実
行されることとなる。この処理としては、例えば、操作
者によりなされたパネル要求やコマンド入力などに応答
して、このソフトウエア音源の発音チャンネル数、サン
プリング周波数の選択、出力バッファの容量(これは1
フレーム時間の長さに相当する。)あるいはエフェクト
処理の設定など各種の設定処理が実行される。そして、
その結果などがステップS41において画面上に表示さ
れ、再び、ステップS3に戻る。
了コマンドの入力であった場合は、ステップS50に進
み、終了処理を行なったのち、ステップS51において
このソフト音源に対応する表示画面を消去してこのソフ
ト音源の処理を終了する。
するためのフローチャートである。前述したようにCO
DEC11内のFIFOに空きが検出されたとき、DM
AC10に対して割込が発生し、このDMAC10の処
理が起動される。起動されると、ステップS100に進
み、ポインタレジスタの内容pにより指定されるDMA
バッファのアドレスから楽音波形サンプルデータを読み
出して、前記FIFOに転送する。そして、ステップS
110に進み、ポインタレジスタの内容pをインクリメ
ントして、この処理を終了する。このようにして、FI
FOに空きが生じる毎にDMAバッファから楽音波形サ
ンプルデータがFIFOに転送される。そして、このF
IFOからサンプリングパルス発生回路により発生され
るサンプリングパルスに応じてDACに楽音波形サンプ
ルが出力されることとなる。
述したような構成に限られることはなく、先行生成され
た楽音波形サンプルを記憶することができるものであれ
ばいかなるものであってもよい。また、前述した実施の
形態においては、MIDIイベント発生のソフトウエア
割込と1フレーム再生完了のハードウエア割込とが同じ
優先順位とされていたが、必ずしもこれに限られること
はなく、例えばMIDIイベント発生割込の優先順位の
方が1フレーム再生完了割込よりも高い優先順位を有す
るようにしてもよい。MIDI処理は波形生成処理より
も短い時間で終了するために、このように設定したほう
がより効率的な処理を期待できる。
説明した時間的な処理の流れは、1つの例であり、フレ
ームのサイズやMIDIイベント、波形生成処理、読出
再生のそれぞれの時間フレームの切り替わり位置が異な
っていてもよい。さらにまた、前述の実施の形態におい
ては、1フレームの再生完了毎に発生される割込により
波形生成処理が起動されていたが、これに限られること
はなく、例えばMIDIイベントが発生したときにMI
DI処理と波形生成処理とを連続して行なうようにして
もよい。さらにまた、楽音の生成方式としては、前述し
た波形メモリ方式に限られることはなく、FM方式、物
理モデル方式、ADPCM方式など、どのような方式の
ものであってもよい。
め、CPUの処理の空き時間に楽音波形サンプルを先行
生成することができ、タスクが一時的に多数発生した場
合においても、楽音の発生が途切れたりすることがなく
なる。
装置のブロック図である。
る。
る。
る。
る。
ャートである。
MIDIインターフェース、6 キーボード、7 デ
ィスプレイ、8 ハードディスク、10 再生部(DM
AC)、11 サウンド入出力回路(CODEC)、1
2 サンプリング周波数発生器、13 外部入力回路、
14 サウンドシステム、15 フロッピィディスク装
置、16 バス
Claims (3)
- 【請求項1】 演算処理装置により楽音波形サンプルを
演算生成し、該演算生成された楽音波形サンプルを記憶
している出力バッファからサンプリング周期毎に前記楽
音波形サンプルを読出再生することにより楽音を発生す
る楽音発生方法であって、 (イ)演奏情報の入力により起動され、該演奏情報に応
じて複数の発音チャンネル分の楽音制御情報を生成する
第1のステップ、 (ロ)所定時間毎に起動され、前記楽音制御情報に基づ
いて複数の発音チャンネル分の楽音波形サンプルを演算
生成して出力バッファに記憶する第2のステップ、 (ハ)演算処理装置における処理の空き時間を検出する
ことにより起動され、所定の発音チャンネルに対応する
楽音波形サンプルを演算生成して記憶手段に記憶する第
3のステップ、を有し、 前記第2のステップは、前記記憶手段中に前記第3のス
テップにより演算生成された楽音波形サンプルが記憶さ
れている発音チャンネルについては、楽音波形サンプル
を演算生成する代わりに、該記憶手段中に記憶されてい
る楽音波形サンプルを前記出力バッファに記憶するよう
になされていることを特徴とする楽音発生方法。 - 【請求項2】 前記所定の発音チャンネルは、所定の音
色が割り当てられた発音チャンネルあるいは所定の演奏
パートの演奏情報が割り当てられた発音チャンネルであ
ることを特徴とする前記請求項1記載の楽音発生方法。 - 【請求項3】 (ニ)前記第3のステップにより前記記
憶手段に楽音波形サンプルが記憶されている発音チャン
ネルについて、その楽音波形サンプルを変更する必要が
ある演奏情報が入力されたことを検出したときに、前記
記憶手段に記憶されている当該楽音波形サンプルのキャ
ンセルを行う第4のステップをさらに有することを特徴
とする前記請求項1記載の楽音発生方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16516196A JP3293474B2 (ja) | 1996-06-06 | 1996-06-06 | 楽音発生方法 |
US08/868,413 US5770812A (en) | 1996-06-06 | 1997-06-03 | Software sound source with advance synthesis of waveform |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16516196A JP3293474B2 (ja) | 1996-06-06 | 1996-06-06 | 楽音発生方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09325778A true JPH09325778A (ja) | 1997-12-16 |
JP3293474B2 JP3293474B2 (ja) | 2002-06-17 |
Family
ID=15807036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16516196A Expired - Fee Related JP3293474B2 (ja) | 1996-06-06 | 1996-06-06 | 楽音発生方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5770812A (ja) |
JP (1) | JP3293474B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6414232B2 (en) | 2000-06-22 | 2002-07-02 | Yamaha Corporation | Tone generation method and apparatus based on software |
JP2021141391A (ja) * | 2020-03-03 | 2021-09-16 | 株式会社東芝 | 通信装置、通信システム、通信方法、および処理プログラム |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6362409B1 (en) | 1998-12-02 | 2002-03-26 | Imms, Inc. | Customizable software-based digital wavetable synthesizer |
US6658309B1 (en) * | 1997-11-21 | 2003-12-02 | International Business Machines Corporation | System for producing sound through blocks and modifiers |
US6081854A (en) * | 1998-03-26 | 2000-06-27 | Nvidia Corporation | System for providing fast transfers to input/output device by assuring commands from only one application program reside in FIFO |
JP4240575B2 (ja) * | 1998-05-15 | 2009-03-18 | ヤマハ株式会社 | 楽音合成方法、記録媒体および楽音合成装置 |
JP3675362B2 (ja) * | 2000-08-18 | 2005-07-27 | ヤマハ株式会社 | 楽音生成装置および携帯端末装置 |
US6789139B2 (en) * | 2001-11-13 | 2004-09-07 | Dell Products L.P. | Method for enabling an optical drive to self-test analog audio signal paths when no disc is present |
CA2436679C (en) * | 2002-08-08 | 2009-01-27 | Yamaha Corporation | Performance data processing and tone signal synthesizing methods and apparatus |
US7420115B2 (en) * | 2004-12-28 | 2008-09-02 | Yamaha Corporation | Memory access controller for musical sound generating system |
US7758274B2 (en) * | 2006-04-11 | 2010-07-20 | Warsaw Orthopedic, Inc. | Quick attachment apparatus for use in association with orthopedic instrumentation and tools |
JP5084484B2 (ja) * | 2007-09-07 | 2012-11-28 | ローランド株式会社 | 電子打楽器 |
US20110015767A1 (en) * | 2009-07-20 | 2011-01-20 | Apple Inc. | Doubling or replacing a recorded sound using a digital audio workstation |
JP7124371B2 (ja) * | 2018-03-22 | 2022-08-24 | カシオ計算機株式会社 | 電子楽器、方法及びプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5319151A (en) * | 1988-12-29 | 1994-06-07 | Casio Computer Co., Ltd. | Data processing apparatus outputting waveform data in a certain interval |
JP3228394B2 (ja) * | 1995-03-03 | 2001-11-12 | ヤマハ株式会社 | 電子楽器 |
JP3223757B2 (ja) * | 1995-06-02 | 2001-10-29 | ヤマハ株式会社 | 楽音波形発生方法 |
JP3003559B2 (ja) * | 1995-05-19 | 2000-01-31 | ヤマハ株式会社 | 楽音生成方法 |
-
1996
- 1996-06-06 JP JP16516196A patent/JP3293474B2/ja not_active Expired - Fee Related
-
1997
- 1997-06-03 US US08/868,413 patent/US5770812A/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6414232B2 (en) | 2000-06-22 | 2002-07-02 | Yamaha Corporation | Tone generation method and apparatus based on software |
JP2021141391A (ja) * | 2020-03-03 | 2021-09-16 | 株式会社東芝 | 通信装置、通信システム、通信方法、および処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
US5770812A (en) | 1998-06-23 |
JP3293474B2 (ja) | 2002-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3293474B2 (ja) | 楽音発生方法 | |
JP2904088B2 (ja) | 楽音生成方法および装置 | |
JP3293434B2 (ja) | 楽音発生方法 | |
JP3637578B2 (ja) | 楽音生成方法 | |
JP2924745B2 (ja) | 楽音発生装置及び方法 | |
JPH0922287A (ja) | 楽音波形生成方法 | |
US6754351B1 (en) | Music apparatus with dynamic change of effects | |
JP3637577B2 (ja) | 楽音生成方法 | |
JP3546739B2 (ja) | 自動演奏装置と記録媒体 | |
JP3152198B2 (ja) | 楽音発生方法および楽音発生装置 | |
JP3658826B2 (ja) | 楽音生成方法 | |
JP4096952B2 (ja) | 楽音発生装置 | |
JP3003559B2 (ja) | 楽音生成方法 | |
US11042380B2 (en) | Apparatus, method and computer program for processing instruction | |
JP3572847B2 (ja) | コンピュータソフトウェアを用いた音源システム及び方法 | |
JP3632744B2 (ja) | 音生成方法 | |
JP3409642B2 (ja) | 自動演奏装置、自動演奏データ処理方法及び電子的情報記憶媒体 | |
JP3781171B2 (ja) | 楽音発生方法 | |
JP3627557B2 (ja) | 楽音発生装置及び方法 | |
JP3705203B2 (ja) | 楽音発生方法 | |
JP3740717B2 (ja) | 音源装置及び楽音生成方法 | |
JPH10207465A (ja) | 楽音発生方法および楽音発生装置 | |
JP3627590B2 (ja) | 音生成方法 | |
JPH0997067A (ja) | 楽音発生方法および楽音発生装置 | |
JP3693046B2 (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: 20020305 |
|
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: 20090405 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090405 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100405 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110405 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |