JPH09204177A - 楽音生成装置及び方法 - Google Patents

楽音生成装置及び方法

Info

Publication number
JPH09204177A
JPH09204177A JP8024747A JP2474796A JPH09204177A JP H09204177 A JPH09204177 A JP H09204177A JP 8024747 A JP8024747 A JP 8024747A JP 2474796 A JP2474796 A JP 2474796A JP H09204177 A JPH09204177 A JP H09204177A
Authority
JP
Japan
Prior art keywords
tone
musical
generation
generated
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.)
Granted
Application number
JP8024747A
Other languages
English (en)
Other versions
JP2962217B2 (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
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP8024747A priority Critical patent/JP2962217B2/ja
Priority to TW85102189A priority patent/TW312776B/zh
Priority to DE69618907T priority patent/DE69618907T2/de
Priority to EP96118454A priority patent/EP0775996B1/en
Priority to DE69625942T priority patent/DE69625942T2/de
Priority to EP00122559A priority patent/EP1069550B1/en
Priority to SG1996011315A priority patent/SG43444A1/en
Priority to US08/752,924 priority patent/US6284963B1/en
Priority to KR1019960056560A priority patent/KR100302626B1/ko
Publication of JPH09204177A publication Critical patent/JPH09204177A/ja
Application granted granted Critical
Publication of JP2962217B2 publication Critical patent/JP2962217B2/ja
Priority to US09/864,579 priority patent/US6353171B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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
    • G10H5/00Instruments in which the tones are generated by means of electronic generators
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Details of electrophonic musical instruments
    • G10H1/18Selecting circuits
    • G10H1/183Channel-assigning means for polyphonic instruments
    • G10H1/185Channel-assigning means for polyphonic instruments associated with key multiplexing
    • G10H1/186Microprocessor-controlled keyboard and assigning means
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/002Instruments 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC 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/00Data organisation or data communication aspects, specifically adapted for electrophonic musical tools or instruments
    • G10H2240/171Transmission of musical instrument data, control or status information; Transmission, remote access or control of music data for electrophonic musical instruments
    • G10H2240/281Protocol or standard connector for transmission of analog or digital data to or from an electrophonic musical instrument
    • G10H2240/311MIDI transmission

Abstract

(57)【要約】 【課題】完全なマルチタスク機能を有しないOS上で汎
用のプロセッサに楽音生成処理を実行させる場合でも、
発音に支障が生じないようにする。 【解決手段】楽音生成処理を起動する機会を、所定時間
内に複数回設け、この複数回の機会のうち何回か処理が
起動しなくても、処理が起動したタイミングだけで、該
時間内に所定数サンプル分の楽音データを生成する。処
理が起動したタイミングのみでは、全ての割当てチャン
ネルについて該サンプル数分の楽音データを該時間内に
生成できない場合には、楽音データを生成するチャンネ
ル数を減少させることにより、該サンプル数分の楽音デ
ータの生成を確保する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、楽音データを生
成する技術分野に属し、特に、CPUのような汎用の演
算処理手段に楽音生成処理を実行させるのに適した装置
及び方法に関する。
【0002】
【従来の技術】今日の電子楽器では、楽音生成処理(楽
音生成処理によって生成した楽音データにエフェクトを
付加する処理を含む場合もある)を、マイクロプロセッ
サに実行させることが広く行なわれている。そうしたマ
イクロプロセッサとしては、楽音生成方式(例えば波形
メモリ方式やFM合成方式等)に応じた回路構成の専用
のハードウェア(例えば音源LSIやDSP(ディジタ
ルシグナルプロセッサ)等)を設計することが長らく一
般的であった。
【0003】しかし近年、CPUの演算能力の向上に伴
って、汎用コンピュータや専用の楽音発生装置に搭載し
たCPUに楽音生成処理を実行させるようにしたものが
登場している。ここでは、そうした楽音生成装置や楽音
生成方法のことをCPU音源またはソフト音源と呼び、
これに対し、専用のハードウェアを使用する従来からの
楽音生成装置や楽音生成方法をハード音源と呼ぶことに
する。
【0004】
【発明が解決しようとする課題】ソフト音源では、CP
Uは、楽音生成処理だけでなく他の様々な処理を並行し
て実行しなければならない。したがって、汎用コンピュ
ータを使用してソフト音源を実現しようとする場合に
は、他の処理に影響されることなく楽音生成処理の実行
が確保されるようにするために、マルチタスク機能を有
するOS(オペレーティングシステム)(例えば、マイ
クロソフト社製のWindows95(商標)等)上で
楽音生成処理を実行させることが望ましい。
【0005】しかし、完全なマルチタスク機能を有しな
いOS(例えば、マイクロソフト社製のWindows
3.1(商標)等)も広く普及しており、そうしたOS
上でも楽音生成処理を実行させたいというニーズが存在
している。しかるに、そうしたOS上では、他の処理の
影響によって楽音生成処理の実行が遅れ、その結果、発
音に支障が生じることがある。この発明は上述の点に鑑
みてなされたもので、完全なマルチタスク機能を有しな
いOS上で楽音生成処理を実行させる場合でも、発音に
支障が生じないようにしたソフト音源方式の楽音生成装
置及び楽音生成方法を提供しようとするものである。
【0006】
【課題を解決するための手段】この発明に係る第1の楽
音生成装置は、演奏情報を供給する供給手段と、前記演
奏情報に基づく楽音生成処理を、所定時間内に複数回起
動させるための起動手段と、前記起動手段によって起動
された楽音生成処理を実行する楽音生成手段と、前記起
動手段が前記楽音生成処理を実際に起動した機会だけ
で、通算として前記所定時間内に所定サンプル数分の楽
音データを生成させるように、前記楽音生成手段の実行
する楽音生成処理の調整を行なう調整手段とを具えたこ
とを特徴としている。
【0007】また、この発明に係る第1の楽音生成方法
は、供給された演奏情報に基づき、汎用の演算処理手段
に楽音生成処理を実行させる楽音生成方法であって、楽
音生成処理を、所定時間内に複数回起動させるための第
1のステップと、前記第1のステップにおいて楽音生成
処理が実際に起動した機会だけで、通算として前記所定
時間内に所定サンプル数分の楽音データを生成させるよ
うに、前記楽音生成処理の調整を行なう第2のステップ
と、前記第1のステップで起動された楽音生成処理を、
前記第2のステップでの調整に従って実行する第3のス
テップとを含んだことを特徴としている。
【0008】ソフト音源には、所定時間毎に所定サンプ
ル数分の楽音データを生成し、該所定サンプル数分の楽
音データをひとまとめとして再生するようにしているも
のがある。こうしたソフト音源では、一般に、各所定時
間毎に、該所定数サンプル分の楽音データを全て生成す
る楽音生成処理を一度だけのタイミングで起動してい
る。しかし、完全なマルチタスク機能を有しないOS上
では、他の処理の影響によってそのタイミングで楽音生
成処理が起動しなかったり遅れて起動したりすることに
より、該所定時間内に楽音データの生成が完了せず、発
音に支障が生じることがある。
【0009】これに対し、第1の楽音生成装置及び楽音
生成方法では、こうしたソフト音源において、楽音生成
処理を起動する機会を上記所定時間内に複数回設け、こ
の複数回の機会のうち何回か処理が起動しなくても、処
理が起動した機会だけで、上記所定時間内に上記所定数
サンプル分の楽音データの生成が完了する。したがっ
て、発音に支障が生じる事態が防止される。
【0010】尚、処理が起動しないタイミングが多くな
ると、処理が実際に起動した機会だけでは、楽音生成処
理を割り当てられている全ての発音チャンネルについて
上記所定サンプル数分の楽音データを上記所定時間内に
生成できなくなる場合がある。そこで、そのような場合
には、第1の楽音生成装置及び楽音生成方法において、
楽音データを生成する発音チャンネル数を減少させるこ
とにより、前記所定サンプル数分の楽音データの生成を
確保するようにすることが望ましい。
【0011】次に、この発明に係る第2の楽音生成装置
は、演奏情報を供給する供給手段と、前記演奏情報に基
づく楽音生成処理を、未使用の発音チャンネルに割り当
てた際に、該処理を制御するパラメータを格納しておく
ための第1のレジスタと、使用中となった前記発音チャ
ンネルに、別の前記演奏情報に基づく新たな楽音生成処
理を割り当てた際に、該処理を制御するパラメータを格
納するための第2のレジスタと、前記新たな楽音生成処
理を開始すべきタイミングまでは、前記第1のレジスタ
を選択し、該タイミング以降は、前記第1のレジスタに
替えて前記第2のレジスタを選択する選択手段と、前記
選択手段の選択したレジスタを用いて前記発音チャンネ
ルでの楽音データの生成を行なう楽音生成手段とを具え
たことを特徴としている。
【0012】また、この発明に係る第2の楽音生成方法
は、供給された演奏情報に基づき、汎用の演算処理手段
に楽音生成処理を実行させる楽音生成方法であって、未
使用の発音チャンネルに楽音生成処理を割り当て、該処
理を制御するパラメータを、第1のレジスタに格納する
第1のステップと、使用中となった前記発音チャンネル
に新たな楽音生成処理を割り当て、該処理を制御するパ
ラメータを、前記第1のレジスタとは別に設けられた第
2のレジスタに格納する第2のステップと、前記新たな
楽音生成処理を開始すべきタイミングまでは、前記第1
のレジスタを選択し、該タイミング以降は、前記第1の
レジスタに替えて前記第2のレジスタを選択する第3の
ステップと、前記第3のステップで選択したレジスタを
用いて前記発音チャンネルでの楽音データの生成を行な
う第4のステップとを含んだことを特徴としている。
【0013】ソフト音源において、他の処理の影響によ
って楽音生成処理が起動しなかったり遅れて起動したり
すると、演奏情報が供給されてからその演奏情報に基づ
く楽音生成処理が開始されるまでの時間が長くなる。し
たがって、楽音生成処理を割り当てられた多くの発音チ
ャンネルが、楽音生成処理を制御するパラメータを格納
しておくためのレジスタにパラメータを格納したまま、
まだ楽音生成処理を開始していないという状態が起こり
うる。このような状態で、新たに供給された演奏情報に
基づく楽音生成処理を、使用中の発音チャンネルに割り
当てると、当該発音チャンネルでの楽音生成処理が完了
するまでの長い時間、新たな楽音生成処理を制御するパ
ラメータをレジスタに格納することができない(すなわ
ち、当該発音チャンネルに新たな楽音生成処理の用意が
できない)ことになる。そして、その間に楽音生成処理
が起動されても、当該発音チャンネルでの新たな楽音生
成処理は実行されないので、楽音データの生成にますま
す遅れが生じてしまう。
【0014】これに対し、第2の楽音生成装置及び楽音
生成方法では、現在使用中の発音チャンネルに新たな楽
音生成処理を割り当てた場合でも、第1のレジスタを用
いて当該発音チャンネルでの現在の楽音生成処理の実行
を確保しつつ、当該発音チャンネルでの新たな楽音生成
処理を直ちに第2のレジスタに用意することができる。
したがって、楽音生成処理の用意の遅れを原因とする楽
音データの生成の遅れを防止することができる。
【0015】次に、この発明に係る第3の楽音生成装置
は、演奏情報を供給する供給手段と、それぞれ楽音デー
タを書き込むための複数の出力バッファと、楽音生成処
理に先行して、前記複数の出力バッファのうちの一部の
出力バッファの再生を予約する予約手段と、前記演奏情
報に基づいて楽音データを生成し、生成した楽音データ
を前記複数の出力バッファのうちの残りのいずれかの出
力バッファに書き込み、該出力バッファの再生を予約す
る楽音生成手段と、再生を予約された順に前記出力バッ
ファの読出しを行なう再生手段とを具えたことを特徴と
している。
【0016】また、この発明に係る第3の楽音生成方法
は、供給された演奏情報に基づき、汎用の演算処理手段
に楽音生成処理を実行させる楽音生成方法であって、そ
れぞれ楽音データを書き込むための1または複数の出力
バッファの再生を、楽音生成処理に先行して予約する第
1のステップと、楽音データを生成し、生成した楽音デ
ータを、前記第1のステップで再生を予約した出力バッ
ファ以外の出力バッファに書き込み、該出力バッファの
再生を予約する第2のステップと、前記第1のステップ
及び前記第2のステップで再生を予約した順に前記出力
バッファを読み出す制御を行なう第3のステップとを含
んだことを特徴としている。
【0017】ソフト音源において、或る所定時間内に起
動すべき楽音生成処理が、他の処理の影響によって該所
定時間の経過後に起動したような場合、楽音の再生が遅
れてしまい、発音に支障が生じる。これに対し、第3の
楽音生成装置及び楽音生成方法では、楽音生成処理が所
定時間内に起動しなくても、先行して再生予約した出力
バッファの読出しが全て完了するまでに当該楽音生成処
理が起動して出力バッファの再生が予約されれば、楽音
の再生に音切れが生じなくなる。したがって、音切れを
生じさせないための楽音生成処理の起動時間の遅れの許
容範囲が拡がる。
【0018】次に、この発明に係る第4の楽音生成装置
は、演奏情報を供給する供給手段と、楽音データを書き
込むための出力バッファと、前記演奏情報に基づいて楽
音データを生成し、生成した楽音データを前記出力バッ
ファに書き込み、該出力バッファの再生を予約する楽音
生成手段と、再生を予約された順に前記出力バッファの
読出しを行なう再生手段と、所定時間内に前記再生手段
に出力バッファの再生が予約されていない場合、前記楽
音生成手段がそれまでに生成を完了しているべき楽音デ
ータの生成を打ち切り、それ以降に生成を開始すべき楽
音データの生成を前記楽音生成手段に新たに開始させる
更新手段とを具えたことを特徴としている。
【0019】また、この発明に係る第4の楽音生成方法
は、供給された演奏情報に基づき、汎用の演算処理手段
に楽音生成処理を実行させる楽音生成方法であって、楽
音データを生成し、生成した楽音データを出力バッファ
に書き込み、該出力バッファの再生を予約する第1のス
テップと、前記第1のステップで再生を予約した順に前
記出力バッファを読み出す制御を行なう第2のステップ
と、所定時間内に出力バッファの再生が予約されていな
い場合、それまでに生成を完了しているべき楽音データ
の生成を打ち切り、それ以降に生成を開始すべき楽音デ
ータの生成を新たに開始する第3のステップとを含んだ
ことを特徴としている。
【0020】この第4の楽音生成装置及び楽音生成方法
によれば、所定の時間内に出力バッファの再生が予約さ
れていない場合には楽音生成処理を更新することによ
り、再生予約が間に合わずに一時的に楽音が乱れた場合
でも、すぐに安定した楽音生成動作に復帰するので、ノ
イズを最小限に抑えることができるようになる。
【0021】次に、この発明に係る第5の楽音生成装置
は、演奏情報を供給する供給手段と、前記演奏情報に基
づく楽音生成処理を、所定時間内に複数回起動させるた
めの起動手段と、前記起動手段によって起動された楽音
生成処理を実行する楽音生成手段と、前記起動手段が前
記楽音生成処理を起動した場合、各起動の時刻に対応し
たサンプル数を目標値として、該楽音生成処理で生成す
る楽音データのサンプル数が該目標値に追従するように
制御する制御手段とを具えたことを特徴としている。
【0022】また、この発明に係る第5の楽音生成方法
は、供給された演奏情報に基づき、汎用の演算処理手段
に楽音生成処理を実行させる楽音生成方法であって、楽
音生成処理を、所定時間内に複数回起動させるための第
1のステップと、前記第1のステップで楽音生成処理が
起動した場合、各起動の時刻に対応したサンプル数を目
標値として、該楽音生成処理で生成する楽音データのサ
ンプル数が該目標値に追従するように制御する第2のス
テップと、前記第1のステップで起動された楽音生成処
理を、前記第2のステップでの制御に従って実行する第
3のステップとを含んだことを特徴としている。
【0023】この第5の楽音生成装置及び楽音生成方法
によれば、楽音生成処理が起動した機会毎に、その起動
時刻に対応したサンプル数を目標値として楽音データを
生成する制御が行なわれることにより、処理が起動した
機会だけで楽音データの生成が完了する。この目標値
は、上述の第1の楽音生成装置及び楽音生成方法のよう
に、所定時間内に所定サンプル数の楽音データの生成を
完了させるような値に設定してもよいが、必ずしもそう
した値に限定する必要はない。すなわち、特に上述の第
3の楽音生成装置及び楽音生成方法のように、楽音生成
処理に先行して出力バッファを再生予約するようにした
場合には、この目標値を、所定時間内に所定サンプル数
の楽音データの生成が完了しなくてもその後の所定時間
内にその未生成の楽音データを補って生成するような値
に設定することも可能である。要するに、音切れを生じ
させないための楽音生成処理の起動時間の遅れの許容範
囲内に所定サンプル数の楽音データの生成が完了するよ
うな値に設定されていればよいことになる。
【0024】尚、この楽音データの生成の制御の具体的
方法としては、楽音生成処理が遅れた場合、次の起動時
の生成サンプル数に遅れた分の楽音データを全て加える
ことによって遅れを回復することや、その後の各起動時
の生成サンプル数をそれぞれ一定数増やすことによって
遅れを回復することや、その後の各起動時の生成サンプ
ル数を、それぞれ遅れた分の楽音データに比例した数だ
け増やすことによって遅れを回復することなどが挙げら
れる。
【0025】
【発明の実施の形態】以下、添付図面を参照してこの発
明の実施の形態を詳細に説明する。図1は、この発明を
採用したソフト音源方式のコンピュータミュージックシ
ステムの全体構成ブロック図である。このコンピュータ
ミュージックシステムでは、パーソナルコンピュータの
CPU3に楽音生成処理を実行させる。CPU3には、
MIDIのインターフェース1,タイマ2,ROM(リ
ードオンリーメモリ)4,RAM(ランダムアクセスメ
モリ)5,マウス7,キーボード8,ディスプレイ9,
ハードディスク装置10,及びDMA(ダイレクトメモ
リアクセス)コントローラ11が、データ及びアドレス
バス6を介して接続されている。
【0026】DMAコントローラ11は、楽音生成処理
の実行によって生成されてRAM5内の出力バッファに
書き込まれた楽音データを、DAC(ディジタル/アナ
ログ変換器)12からの再生サンプリングクロックに同
期して1サンプルずつダイレクトメモリアクセス方式で
出力バッファから読み出してDAC12に送る処理(再
生処理)を実行するためのものである。DAC12でア
ナログ変換された楽音データは、サウンドシステム13
に送られて、該システム13から音響的に発音される。
【0027】ハードディスク装置10内のハードディス
クには、OS(ここでは、マイクロソフト社製のWin
dows3.1(商標)とする)やユーティリティソフ
トといったソフトウェアの他に、ソフト音源を実現する
ためのソフトウェアと、複数種類の音色についての1ま
たは複数周期分の波形データとが記録されている。図2
は、ソフト音源を実現するためのソフトウェアの構造の
一例を示す図である。このソフトウェアは、プログラミ
ングの複雑さの低減化を目的として、独立にプログラミ
ングできる最小単位(モジュール)の複合体として階層
的に構成されている。最上位の階層の「シーケンサプロ
グラム」は、MIDIメッセージを作成するためのモジ
ュールである。具体的には、「シーケンサプログラム」
はアプリケーションソフト(例えば、シーケンサソフト
やゲームソフトやカラオケソフト等)の形態をとってい
る。SGMMIDIoutAPIは、モジュール間で情
報の授受を行なうためにソフト音源で用意されているイ
ンターフェース(API(アプリケーションプログラミ
ングインターフェース))の一種である。
【0028】下位の階層の「SGM−AP」は、「シー
ケンサプログラム」からSGMMIDIoutAPI経
由で供給されるMIDIメッセージに基づいて楽音デー
タを生成するためのプログラムである。図3に示すよう
に、「SGM−AP」は、「MIDI出力ドライバ部」
と「音源部(エンジン部)」との2つのモジュールで構
成されている。「MIDI出力ドライバ部」は、「音源
部」を駆動するためのモジュールであり、MIDIメッ
セージに応じて、ボイスデータを「音源部」制御用の制
御パラメータに変換する。この制御パラメータは、モジ
ュール間のインターフェースであるSGMengine
API経由で「音源部」に送られる。また、「MIDI
出力ドライバ部」が初期化されるとき、波形データがフ
ァイルからロードされてengineAPI経由で「音
源部」に送られる。「音源部」は、この制御パラメータ
に従い、波形データを用いて楽音データを生成する。
【0029】図2に戻り、WAVEoutAPIは、W
indows3.1(商標)で用意されているAPIの
一種である。「出力デバイス」は、WAVEoutAP
I経由で「SGM−AP」から供給される楽音データを
DAC12に送るためのモジュールである。前述のよう
に、このコンピュータミュージックシステムでは、DM
Aコントローラ11がダイレクトメモリアクセス方式で
楽音データをDAC12に送るようになっている。した
がって、「出力デバイス」は、CPU3の制御のもと
で、DMAコントローラ11による割込み処理として実
行される。
【0030】次に、図2に示したようなソフトウェアに
よる処理の一例の概要を、図4を参照して説明する。
「シーケンサプログラム」が起動すると、MIDIメッ
セージが供給されはじめる。MIDIメッセージが供給
されると、「MIDI出力ドライバ部」が起動され、各
MIDIメッセージに応じてボイスデータを制御パラメ
ータに変換し、その制御パラメータ等を、当該MIDI
メッセージに基づく発音を割り当てた発音チャンネル用
の音源レジスタに格納する。
【0031】「音源部」は、所定の時間長の区間(フレ
ームと呼ぶ)毎に起動されて、それぞれその直前のフレ
ーム内に供給されたMIDIメッセージに基づく楽音生
成処理を、各制御パラメータに従って実行する(例え
ば、図4に示すように、時刻T1からT2までのフレー
ム内に供給されたMIDIメッセージに基づく楽音生成
処理を、時刻T2からT3までのフレームで実行す
る)。楽音生成処理の一例として、波形メモリ方式の楽
音生成処理では、まず、発音を割り当てられている各発
音チャンネル毎に、当該発音チャンネル用の音源レジス
タに格納された制御パラメータに従うピッチでRAM5
から波形データを読み出し、その波形データに、音色制
御(フィルタ演算)と、音量制御(音量エンベロープデ
ータの乗算)と、ピッチ,音色または音量等の変調制御
とを制御パラメータに従って施すことにより、当該発音
チャンネルについての所定数サンプル分の楽音データを
生成する。そして、各発音チャンネルについての楽音デ
ータを累算し、累算した楽音データを(あるいは、累算
した楽音データにエフェクトを付加し、その楽音データ
を)、RAM5内の出力バッファに書き込む。そして、
その出力バッファの再生を「出力デバイス」に予約す
る。
【0032】「出力デバイス」は、各フレーム毎に、そ
れぞれその直前のフレームで「音源部」によって再生予
約された出力バッファから1サンプルずつ楽音データを
読み出してDAC12に送る(例えば、図4に示すよう
に、時刻T2からT3までのフレームで生成された楽音
データを書き込まれて再生予約された出力バッファか
ら、時刻T3からT4までのフレームで楽音データを読
み出す)。
【0033】こうしたソフトウェアのうち、「シーケン
サプログラム」の起動と、MIDIメッセージの供給に
基づく「MIDI出力ドライバ部」の起動とは、リアル
タイムに行なわれる。また、「出力デバイス」は、DM
Aコントローラ11による割込み処理として強制的に起
動されるので、時間的な遅れが生じることはない。これ
に対し、「音源部」の起動は、CPU3自身の内部割込
みによって行なわれるので、完全なマルチタスク機能を
有しないOS上でこのソフトウェアを走らせた場合に
は、他の処理の影響によって「音源部」の起動が遅れる
ことにより、発音に支障が生じることがある。そこで、
このコンピュータミュージックシステムでは、次のよう
な幾つかの対策を講じることにより、発音に支障が生じ
る事態を防止している。
【0034】〔対策1〕「音源部」を起動させる内部割
込み信号を、各フレーム内にそれぞれ複数回の機会発生
し、各起動毎に、それぞれ上記所定数サンプル分(1出
力バッファ分)の楽音データのうちの一部の楽音データ
を生成することにより、通算として当該フレーム内に1
出力バッファ分の楽音データが生成されるように調整を
行なう。そして、いずれかの機会で、内部割込み信号が
発生しなかったために「音源部」が起動せず、その結果
楽音データが生成されなかった場合には、その未生成の
楽音データを、当該フレーム内のその後の内部割込み信
号が発生した機会で併せて生成することにより、当該フ
レーム内での1出力バッファ分の楽音データの生成が確
保されるように調整を行なう。
【0035】このように、「音源部」を起動させる内部
割込み信号を発生する機会を各フレーム毎に複数回設
け、この複数回の機会のうち何回か内部割込み信号が発
生しなくても、内部割込み信号が発生した機会だけで、
当該フレーム内に1出力バッファ分の楽音データの生成
を完了するようにしたので、発音に支障が生じる事態が
防止される。
【0036】図5及び図6は、それぞれこの〔対策1〕
の一例を示す図である。これらの例では、100ミリ秒
の長さのフレーム内に、「音源部」を起動する内部割込
み信号を10ミリ秒毎のタイミングで(したがって、1
フレーム内に合計10回)発生し、各起動毎に、それぞ
れ1出力バッファ分の楽音データの10分の1の量の楽
音データを生成するようにしている。
【0037】そして、図5の例では、内部割込み信号が
発生しなかったタイミングでの未生成の楽音データを、
その直後に内部割込み信号が発生した機会で全て生成す
るようにしている。すなわち、内部割込み信号が発生し
なかった2回目の機会(図の10ミリ秒目)で未生成と
なった楽音データを、その直後に内部割込み信号が発生
した3回目の機会(図の20ミリ秒目)での処理で、当
該機会での楽音データと併せて全て生成し(図では2,
3として示している)、内部割込み信号が発生しなかっ
た6,7回目の機会(図の50,60ミリ秒目)で未生
成となった楽音データを、その直後に内部割込み信号が
発生した8回目の機会(図の70ミリ秒目)での処理
で、当該機会での楽音データと併せて全て生成している
(図では6〜8として示している)。
【0038】これに対し、図6の例では、内部割込み信
号が発生しなかった機会での未生成の楽音データを、そ
の後に内部割込み信号が発生した複数の機会で分散して
生成するようにしている。すなわち、内部割込み信号が
発生しなかった2,3回目の機会(図の10,20ミリ
秒目)で未生成となった楽音データを、その後に内部割
込み信号が発生した4,5回目の機会(図の30,40
ミリ秒目)での処理で、それらの機会での楽音データと
併せてそれぞれ分散して生成している(図ではそれぞれ
2,3と4,5として示している)。但し、最後の10
回目の機会(図の90ミリ秒目)では、当該フレーム内
での1出力バッファ分の楽音データの生成を確保するた
めに、内部割込み信号が発生しなかった7,8,9回目
の機会(図の60,70,80ミリ秒目)で未生成とな
った楽音データを全て生成している。
【0039】図6では、未生成の楽音データを、1回の
起動の機会で生成する量の楽音データに分散してその後
に内部割込み信号が発生した機会で生成しているが、こ
れに限らず、未生成の楽音データを、適宜の量の楽音デ
ータ(例えば、1回の起動の機会で生成する量の楽音デ
ータや、1回の起動の機会で生成する量の1.5倍の楽
音データや、1回の起動の機会で生成する量の半分の楽
音データ)に分散してその後の機会で生成するようにし
てもよい。また、更に別の例として、内部割込み信号が
発生しなかった機会での未生成の楽音データを、当該フ
レーム内の最後の機会(図5及び図6では10回目の機
会)までに徐々に生成するようにしてもよい。
【0040】尚、内部割込み信号が発生しなかった機会
が多くなると、その後の内部割込み信号が発生した機会
で、楽音生成処理を割り当てられている全ての発音チャ
ンネルについて楽音データを生成しきれなくなる場合が
ある。そこで、この〔対策1〕において、そのような機
会では、楽音データを生成する発音チャンネル数を減少
させることにより、楽音データの生成を確保するように
することが望ましい。楽音データを生成する発音チャン
ネル数を減少させなければならない頻度は、図5の例の
場合が最も高く、図6の例の場合や、未生成の楽音デー
タを当該フレーム内の最後の機会までに徐々に生成する
場合には、図5の例の場合よりも低くなる(但し、未生
成の楽音データの生成を早期に行なうという観点から
は、図5の例が最も望ましい)。
【0041】〔対策2〕各発音チャンネル用の音源レジ
スタとして、発音チャンネルが未使用である際に割り当
てた楽音生成処理を制御するパラメータを格納するため
の第1の音源レジスタ(表の音源レジスタ)と、当該発
音チャンネル使用中となった際に割り当てた新たな楽音
生成処理を制御するパラメータを格納するための第2の
音源レジスタ(裏の音源レジスタ)とを設ける。そし
て、当該発音チャンネルで用いるべき音源レジスタとし
て、新たな楽音生成処理を開始すべきタイミングまで
は、表の音源レジスタを選択し、該タイミング以降は、
表の音源レジスタに替えて裏の音源レジスタを選択す
る。
【0042】これにより、現在使用中の発音チャンネル
に新たな楽音生成処理を割り当てた場合でも、表の音源
レジスタを用いて当該発音チャンネルでの現在の楽音生
成処理の実行を確保しつつ、当該発音チャンネルでの新
たな楽音生成処理を直ちに裏の音源レジスタに用意する
ことができる。したがって、楽音生成処理の用意の遅れ
を原因とする楽音データの生成の遅れを防止することが
できる。
【0043】〔対策3〕RAM5内に複数の出力バッフ
ァの領域を設けておき、「音源部」の起動に先行して、
そのうちの一部の出力バッファの再生を「出力デバイ
ス」に予約しておく。これにより、他の処理の影響によ
り、各フレームで起動すべき「音源部」が当該フレーム
内に起動しなくても、先行して再生予約した出力バッフ
ァの再生処理が全て完了するまでに「音源部」が起動し
て出力バッファの再生が予約されれば、楽音の再生に音
切れが生じなくなる。したがって、音切れを生じさせな
いための楽音生成処理の起動時間の遅れの許容範囲が拡
がる。
【0044】図7は、この〔対策3〕の一例を示す図で
ある。この例では、「音源部」の起動に先行して、4つ
の出力バッファの再生を「出力デバイス」に予約してい
る。そして、フレームF1の開始時には、それより前の
フレームで1出力バッファ分の再生処理が完了したこと
によって予約数が3になっているが、フレームF1の途
中に、1出力バッファ分の楽音データの生成が完了して
その出力バッファが再生予約されたために、予約数が4
に増えている。そして、フレームF1の終了時に、次の
1出力バッファ分の再生処理が完了したことによって予
約数が3に減るが、フレームF2の途中に、次の1出力
バッファ分の楽音データの生成が完了してその出力バッ
ファが再生予約されたために、予約数が4に増えてい
る。
【0045】そしてその後、「音源部」の起動の遅れに
より楽音データが生成されないために、フレームF4の
終了時には予約数が1に減っている。そして、フレーム
F5で、再生予約済の最後の出力バッファ(フレームF
2の途中に再生予約した出力バッファ)が読み出されて
いる(図では、この再生予約と読み出しとの関係を明ら
かにするために、フレームF2の途中に再生予約の発生
を太い矢印で示し、フレームF5を斜線で網かけしてい
る)が、フレームF5の途中に、1出力バッファ分の楽
音データの生成が完了してその出力バッファが再生予約
されたために、予約数が2に増えている。そしてその後
も、再生処理の完了と再生予約の発生とに応じて予約数
が増減している。
【0046】このように、各フレームで起動すべき「音
源部」が当該フレーム内に起動しなくても、先行して再
生予約した4つの出力バッファの再生処理が全て完了す
るまでに「音源部」が起動して出力バッファの再生が予
約されれば、楽音の再生に遅れが生じなくなる。尚、予
約数が4であるときにフレームの途中で次の1出力バッ
ファ分の楽音データの生成が完了した場合には、当該フ
レームでの再生処理の完了を待って出力バッファの再生
予約を行なうことにより、予約数が4を越えないように
するものとする。
【0047】この〔対策3〕を実施するためにRAM5
内に設けておくべき出力バッファの数は、「音源部」の
起動に先行して再生予約する出力バッファの数と、「音
源部」で生成を完了した楽音データを書き込むための1
つの出力バッファと、「音源部」で生成した楽音データ
の量が1出力バッファ分を越えた場合のための予備の出
力バッファとの合計(図7の例では、6つ)になる。尤
も、「音源部」において、生成した楽音データの量が1
出力バッファ分を越える場合には生成をストップするよ
うにすれば、予備の出力バッファは不要になる(したが
って、図7の例では、5つで足りるようになる)。
【0048】〔対策4〕所定時間内に「出力デバイス」
に出力バッファが再生予約されていない場合、そのタイ
ミングで生成完了しているはずの楽音データの生成を打
ち切り、そのタイミングで生成開始する楽音データから
生成動作を新たに開始する。これにより、再生予約が間
に合わず、一時的に楽音が乱れた場合でも、すぐに安定
した楽音生成動作に復帰し、ノイズを最小限に抑えるこ
とができる。
【0049】例えば、前述の〔対策3〕の図7の例で
は、先行して「出力デバイス」に再生予約した出力バッ
ファの再生処理が全て完了するまでに、「音源部」で生
成を完了した楽音データを書き込んだ出力バッファが再
生予約されている。しかし、他の処理の影響により「音
源部」の起動が大幅に遅れた場合には、先行して再生予
約した出力バッファの再生処理が全て完了した区間内に
おいても、「音源部」で生成を完了した楽音データを書
き込んだ出力バッファがまだ再生予約されていないこと
(予約数が0になること)も起こりうる。そのような場
合でも、〔対策3〕及び〔対策4〕を併せて実施すれ
ば、予約数が0になった場合、そのタイミングで生成完
了しているはずの楽音データの生成が打ち切られ、「出
力デバイス」に出力バッファの再生の先行予約を再び行
なった後、そのタイミングで生成開始する楽音データか
ら生成動作が新たに開始する。
【0050】次に、以上のような対策の実施を含んだこ
のコンピュータミュージックシステムの動作例を、図8
以下を参照して説明することにする。図8は、CPU3
の実行するメインルーチンを示すフローチャートであ
る。最初に、「初期設定」(ステップS1)を実行す
る。「初期設定」では、図9に示すように、最初に、各
発音チャンネル用の音源レジスタ(〔対策2〕として説
明したように、表の音源レジスタと裏の音源レジスタと
が設けられている)内のデータと、RAM5のワークエ
リア(このワークエリア内には、〔対策3〕として説明
したように、複数の出力バッファの領域が含まれてい
る)内のデータとを全てクリアする(ステップS2
1)。続いて、ハードディスク装置10内のハードディ
スクに記録されている波形データをRAM5にロードす
る(ステップS22)。続いて、「出力デバイス」を初
期設定し(ステップS23)、〔対策3〕として説明し
たように、「音源部」の起動に先行して、データをクリ
アされた幾つか(ここでは、図7の例と同じく4つとす
る)の出力バッファの再生を「出力デバイス」に予約す
る(ステップS24)。続いて、DAC12から再生サ
ンプリングクロックを発生させてDMAコントローラ1
1に与えることにより「出力デバイス」を起動するとと
もに、「音源部」を起動する内部割込み信号を発生する
ためのソフトタイマ(例えば、ハード的に構成したタイ
マをCPU3が参照することによって内部割込み信号を
発生するようにしたもの)をスタートさせる(ステップ
S25)。
【0051】ソフトタイマは、この内部割込み信号を、
前記〔対策1〕として説明したように各フレーム毎にそ
れぞれ複数の機会で発生可能である(ここでは、図5の
例と同じく、100ミリ秒の長さのフレーム内に、10
ミリ秒毎に合計10回の機会において発生することが可
能であるものとする)。なお、前述の通り、ソフトタイ
マによる内部割込み信号は、各起動機会で(つまり10
ミリ秒毎に)必ず発生できるとは限らず、起動機会が到
来しても、CPU3がOSの処理や他のソフトウェアの
処理に占有されているときは、ソフト音源に対する内部
割込み信号をかけることができない。そのための起動命
令発生手段の構成としては、例えば、タイマ2で1回の
起動機会に対応する所定時間(例えば10ミリ秒)を計
時する毎にフラグを立てるようにし、CPU3がソフト
音源の処理を実行してもよい状態のとき、このフラグの
有無をチェックするようにし、未処理のフラグが立って
いれば内部割込み信号を発生するようにすると共にその
フラグを消去するようにする。従って、1回の起動機会
に対応する所定時間(例えば10ミリ秒)の間に、CP
U3がソフト音源の処理をする余裕がある場合は、1回
の内部割込み信号が発生される。しかし、1回の起動機
会に対応する所定時間(例えば10ミリ秒)の間に、C
PU3がソフト音源の処理をする余裕がない場合は、フ
ラグチェックに行かないので、内部割込み信号が発生さ
れることなく、所定時間が経過してしまい、次のフラグ
が立ってしまう。つまり、前のフラグに対応して内部割
込み信号が発生されることがない。こうして、内部割込
み信号は、図5,図6に例示されるように、各起動機会
毎に必ず発生できるとは限らないものとなる。また、上
記から理解できるように、内部割込み信号がいくつかの
各起動機会で連続して発生される場合でも、その発生時
間間隔は正確な上記所定時間(例えば10ミリ秒)とは
ならず、10ミリ秒の前後で適宜の変動がある。すなわ
ち、内部割込み信号の微視的な発生タイミングはCPU
3の処理状態(いつタイマフラグを見に行くか)に依存
しているからである。
【0052】図8に戻り、初期設定を終えると、ディス
プレイ9に、処理の進行に応じた情報を表示したり、マ
ウス7を用いて各種の制御データを入力したりするため
のパネル(図示せず)を表示する(ステップS2)。
尚、「音源部」の起動に先行して「初期設定」(図9)
で出力バッファを「出力デバイス」に再生予約している
ので、「出力デバイス」では、この先行予約しした4つ
の出力バッファについての再生処理が完了してから、
「音源部」でその後に再生予約した出力バッファについ
ての再生処理を実行する。したがって、MIDIメッセ
ージが供給されてから楽音が再生されるまでの時間が、
この先行予約した出力バッファの数に等しい数のフレー
ム分(図7の例では4フレーム分)だけ長くなる(遅れ
る)ことになる。そこで、ディスプレイ9のパネルにM
IDIメッセージの供給に基づく表示を行なう際には、
表示のタイミングをこのフレーム分だけ後にずらすよう
にすることが望ましい。
【0053】ステップS2に続くステップS3では、下
記の各起動要因の発生をチェックする。 起動要因:「シーケンサプログラム」(図2参照)か
らMIDIメッセージが供給されたこと 起動要因:ソフトタイマにより、「音源部」を起動す
る内部割込み信号が発生したこと 起動要因:「出力デバイス」からの処理要求が検出さ
れたこと 起動要因:その他の要求(パネルの入力イベントや、
キーボード8のコマンド入力イベント(メインルーチン
終了コマンドを除く)が検出されたこと 起動要因:キーボード8のメインルーチン終了コマン
ドの入力イベントが検出されたこと
【0054】続いて、上記起動要因のいずれかが発生し
たか否かを判断する(ステップS4)。ノーであれば、
ステップS3に戻り、いずれかの起動要因が発生するま
でステップS3及びS4の処理を繰り返す。そしていず
れかの起動要因が発生すると、ステップS4でイエスと
なってステップS5に進む。ステップS5では、どの起
動要因が発生したのかを判定する。起動要因が発生し
ていれば、MIDI処理を実行し(ステップS6)、所
定の受信表示(例えば、どのMIDIチャンネルについ
てのMIDIメッセージが供給されたかの表示等)を、
パネル上に行なう(ステップS7)。そしてステップS
3に戻り、ステップS3以下の処理を繰り返す。
【0055】ステップS6で実行するMIDI処理に
は、例えば、ノートオンに基づくノートオンイベント処
理や、ノートオフに基づくノートオフイベント処理等が
含まれる。図10は、ノートオンイベント処理の一例を
示すフローチャートである。最初に、ノートナンバ,ベ
ロシティ,ノートオンを入力したMIDIチャンネルを
受信するパートのパート番号,MIDIメッセージの入
力時刻を示す時間軸上でノートオンイベントが発生した
時刻を示すデータを、それぞれ所定のレジスタNN,V
EL,p,TMに格納する(ステップS31)。続い
て、当該ノートオンに基づく発音の割当て処理を行な
い、割り当てた発音チャンネルのチャンネル番号をレジ
スタiに格納する(ステップS32)。続いて、レジス
タp内のパート番号に対応して選択されている音色のボ
イスデータをRAM5から読み出し、そのボイスデータ
を、レジスタNN,VEL内のノートナンバ,ベロシテ
ィに応じて「音源部」制御用の制御パラメータ(ピッチ
を指定する周波数ナンバFNを含む)に変換する(図2
参照)(ステップS33)。
【0056】続いて、この制御パラメータを、ノートオ
ン及びレジスタTM内の発生時刻のデータとともに、レ
ジスタi内のチャンネル番号の発音チャンネル用の音源
レジスタに格納することにより、当該発生時刻に応じた
タイミングでのノートオンの予約を行なう(ステップS
34)。レジスタTM内の発生時刻のデータを音源レジ
スタに格納するのは、次のような理由による。ノートオ
ンイベントの発生時刻と、当該ノートオンイベントに基
づく楽音が再生される時刻とには、前述のように約4フ
レーム分の時間差がある(楽音の再生がそれだけ遅れ
る)。楽音生成処理(後述する「音源処理1」)は、そ
の時間差の範囲内の任意のタイミングで、対応する楽音
データを生成すればよい(つまり、その範囲内での処理
の遅れが許容されている)。したがって、ノートオンイ
ベントの発生時刻と異なる任意のタイミングで実行され
る楽音生成処理では、ノートオンイベントの発生時刻が
わかっていないと、対応する楽音データが生成できない
からである。
【0057】尚、ステップS34において、当該発音チ
ャンネルが使用中であれば、〔対策2〕として説明した
ように、当該発音チャンネル用の表の音源レジスタと裏
の音源レジスタとのうち、裏の音源レジスタに制御パラ
メータ等を格納する。これにより、表の音源レジスタを
用いて当該発音チャンネルでの現在の楽音生成処理の実
行を確保しつつ、当該発音チャンネルでの新たな楽音生
成処理を直ちに裏の音源レジスタに用意することができ
る。またこのように裏の音源レジスタに格納を行なった
場合には、表の音源レジスタ内の予約領域にも、レジス
タTM内の発生時刻に応じたタイミングでのダンプ(音
量エンベロープを急激に減少させる処理)の予約を行な
う。ステップS34に続くステップS35では、ノート
オンの発生時刻が遅い発音チャンネルの順に楽音生成演
算が行なわれるように、発音の割当て処理を行なった各
発音チャンネルの間での演算順序を決定する。(すなわ
ち、後着のノートオンに対応した発音チャンネルが、楽
音の生成において優先的に処理されるようになる)。そ
してリターンする。
【0058】図11は、ノートオフイベント処理の一例
を示すフローチャートである。最初に、ノートナンバ,
ノートオフを入力したMIDIチャンネルを受信するパ
ートに対応して選択されている音色,MIDIメッセー
ジの入力時刻を示す時間軸上でノートオフイベントが発
生した時刻を示すデータを、それぞれ所定のレジスタN
N,t,TMに格納する(ステップS41)。続いて、
レジスタt内の音色での発音を割り当てた発音チャンネ
ルを捜し、その発音チャンネルのチャンネル番号をレジ
スタiに格納する(ステップS42)。続いて、レジス
タi内のチャンネル番号の発音チャンネル用の表の音源
レジスタと裏の音源レジスタのうち、レジスタt内の音
色に対応するほうの音源レジスタ内の予約領域に、レジ
スタTM内の発生時刻に応じたタイミングでのノートオ
フの予約を行なう(ステップS43)。そしてリターン
する。
【0059】図8のステップS5に戻り、起動要因が
発生していれば、「音源処理1」を実行し(ステップS
8)、所定の状態表示(例えば、CPU3の演算能力
や、生成した楽音の音量レベル等の表示)を、パネル上
に行なう(ステップS9)。そしてステップS3に戻
り、ステップS3以下の処理を繰り返す。
【0060】「音源処理1」は、「音源部」の一部を成
すものである。この「音源処理1」では、図12に示す
ように、最初に、MIDIメッセージの入力時刻を示す
時間軸上での現在の時刻GTから、その時間軸上でのM
IDIメッセージの入力時刻のうち当該MIDIメッセ
ージに基づく楽音生成処理が終了しているものの最終の
入力時刻STを減じた時間を、生成量SR(今回の起動
で生成すべき楽音データの目標サンプル数を時間の長さ
で表現したもの)として設定する(ステップS51)。
【0061】すなわち、ステップS51では、〔対策
1〕における図5の例のように、いずれかの機会で内部
割込み信号が発生しなかったために「音源部」が起動し
なかった場合に、その機会での未生成の楽音データを、
その直後に内部割込み信号が発生した機会で全て生成す
るようにしている。これにより、1フレーム内に何回か
内部割込み信号が発生しなくても、内部割込み信号が発
生した機会だけで、当該フレーム内に1出力バッファ分
の楽音データの生成が完了するので、発音に支障が生じ
る事態が防止される。この生成量SRを図5を参照して
具体的に示せば、1回目の機会では10ミリ秒になる
が、2回目の機会で内部割込み信号が発生していないの
で、3回目の機会では20ミリ秒になる。尚、図5の例
のようにするかわりに、内部割込み信号が発生しなかっ
た機会での未生成の楽音データを、図6の例のようにそ
の後に内部割込み信号が発生した複数の機会で分散して
生成するようにしたり、あるいは当該フレーム内の最後
の機会までに徐々に生成するようにしてもよいことは、
〔対策1〕において述べたとおりである。
【0062】続いて、「初期設定」(図9)で再生予約
した出力バッファ以外の残りの出力バッファのうちの1
つの出力バッファ上に、時刻STを先頭とした生成量S
R分の楽音生成領域を設定する(ステップS52)。続
いて、楽音データを生成する発音チャンネル数を決定す
る(ステップS53)。この発音チャンネル数の決定
は、次のようにして行なう。まず、1つの発音チャンネ
ルで生成量SR分の楽音データを生成するのに要する演
算時間と、今回の演算可能時間EJ(次に内部割込み信
号が発生する予定の時刻である演算終了時刻SJから、
今回内部割込み信号が実際に発生した時刻である演算開
始時刻KJを減じた時間)とに基づき、時間EJ内に幾
つの発音チャンネルで生成量SR分の楽音データの生成
が可能かを算出する。そして、算出した生成可能な発音
チャンネル数が、ノートオンイベント処理(図10)で
発音割当てを行なった発音チャンネル数以上であれば、
当該発音割当てを行なった発音チャンネル数を、そのま
ま楽音データを生成する発音チャンネル数として決定す
る。他方、算出した生成可能な発音チャンネル数が、発
音割当てを行なった発音チャンネル数未満であれば、当
該生成可能な発音チャンネル数を、楽音データを生成す
る発音チャンネル数として決定する(すなわち、〔対策
1〕として説明したように、楽音データを生成する発音
チャンネル数を減少させることにより、1フレーム内に
1出力バッファ分の楽音データの生成を確保する)。
【0063】ステップS53に続くステップS54で
は、演算順序(ノートオンイベント処理のステップS3
5で決定したもの)が1位である発音チャンネルのチャ
ンネル番号をレジスタiに格納し、スタートポインタs
pで時刻STを指す。続いて、レジスタi内のチャンネ
ル番号の発音チャンネル用の表の音源レジスタの予約領
域を参照して、スタートポインタsp以降から時刻GT
までの間で、最初の予約(ピッチベンドの予約,ノート
オフの予約,ダンプの予約等)を検出する(ステップS
55)。続いて、予約が検出されたか否かを判断する
(ステップS56)。
【0064】イエスであれば、当該発音チャンネルにつ
いて、当該予約の時刻までの楽音生成処理を実行し、ス
タートポインタspを当該予約の時刻にまで進める(ス
テップS57)。この楽音生成処理では、前述のよう
に、音源レジスタに格納された制御パラメータに従うピ
ッチでRAM5から波形データを読み出し、その波形デ
ータに、音色制御(フィルタ演算)と、音量制御(音量
エンベロープデータの乗算)と、ピッチ,音色または音
量等の変調制御と、エフェクトの付加とを制御パラメー
タに従って施すことによって楽音データを生成する。
【0065】ステップS57に続くステップS58で
は、当該予約の内容を当該音源レジスタに格納すること
により、その予約内容を実行する。ここで、ノートオフ
の予約が検出された場合には、当該発音チャンネルの表
の音源レジスタにノートオフを書き込み、音量エンベロ
ープのリリーススラートを開始する。また、ダンプの予
約が検出された場合には、ダンプの実行の完了後(すな
わち、音量エンベロープのレベルが一定以下の低い値に
なった後)、〔対策2〕として示したように、当該発音
チャンネルで用いるべき音源レジスタとして、表の音源
レジスタに替えて裏の音源レジスタを選択する(尤も、
先に表の音源レジスタから裏の音源レジスタへの入替え
を行なった後で、表の音源レジスタについてダンプを実
行してもよい)。尚、図10のステップS34で説明し
たように、裏の音源レジスタに制御パラメータ,ノート
オン及びレジスタTM内のノートオンの発生時刻のデー
タを格納する場合には、表の音源レジスタの予約領域
に、レジスタTM内の発生時刻に応じたタイミングでの
ダンプの予約がされる。したがって、楽音生成処理にお
いて、このレジスタTM内の発生時刻に応じたタイミン
グが来ると、ダンプが実行された後、表の音源レジスタ
に替えて裏の音源レジスタを用いた楽音生成処理が開始
されることになる。
【0066】ステップS58を終了すると、ステップS
55に戻り、ステップS55以下の処理を繰り返す。
【0067】他方、ステップS56でノーと判断されれ
ば(あるいは、最初はイエスと判断されたがその後ステ
ップS57及びS58を経由することによりノーと判断
されるようになれば)、当該発音チャンネルについて、
スタートポインタspから時刻GTまでの楽音生成処理
を全て実行する(ステップS59)。これにより、当該
発音チャンネルについて、生成量SR分の楽音生成領域
に亘る楽音データの生成が完了する。
【0068】続いて、ステップS53で決定した数の発
音チャンネルについて楽音生成処理を全て完了したか否
かを判断する(ステップS60)。ノーであれば、演算
順序が次順位である発音チャンネルのチャンネル番号を
レジスタiに格納し、スタートポインタspを時刻ST
に設定する(ステップS61)。そしてステップS55
に戻り、ステップS55以下の処理を繰り返す。他方、
ステップS60でイエスと判断されれば(あるいは、最
初はノーと判断されたが、その後ステップS55以下を
繰り返すことによりイエスと判断されるようになれば)
楽音生成処理を終了してステップS62に進む。これに
より、生成可能な発音チャンネル数が、発音の割当て処
理を行なった発音チャンネル数未満である場合には、演
算順序の遅い発音チャンネルについての楽音生成処理が
省略されるという形で、同時発音チャンネル数が減少す
ることになる。
【0069】ステップS62では、累算された各発音チ
ャンネルについて楽音データ(あるいは、累算された楽
音データにエフェクトを付加したもの)を、出力バッフ
ァ上の楽音生成領域(ステップS52で設定したもの)
に書き込む。続いて、時刻STに生成量SRの長さを加
えた時刻を、新たな時刻STとして設定する(ステップ
S63)。この新たな時刻STは、次に「音源処理1」
を実行する際の演算スタート位置になる。続いて、1出
力バッファ分の楽音データが完成したか否かを判断する
(ステップS64)。ノーであればリターンする。他方
イエスになると、その出力バッファを、後述の「音源処
理2」によって当該出力バッファに連結されている他の
出力バッファから切り離して、「出力デバイス」に再生
予約する(ステップS65)。そしてリターンする。
【0070】図8のステップS5に戻り、起動要因が
発生していれば、「音源処理2」を実行し(ステップS
10)、所定の状態表示をパネル上に行なう(ステップ
S11)。そしてステップS3に戻り、ステップS3以
下の処理を繰り返す。
【0071】「音源処理2」も、「音源部」の一部を成
すものである。この「音源処理2」は、「出力デバイ
ス」(すなわちDMAコントローラ11による外部割込
み処理)の実行によって発生する要求に基づいて実行さ
れる。図13は、DMAコントローラ11による外部割
込み処理の一例を示すフローチャートである。この外部
割込み処理は、DAC12に楽音データを1サンプル分
ずつ送るタイミング(DAC12の再生サンプリング周
期)で、DMAコントローラ11が実行するものであ
り、この処理によって、出力バッファに記憶された1フ
レーム分の楽音データが、再生サンプリング周期毎に1
サンプル分ずつ読み出されてDAC12に供給される。
最初に、「初期処理」(図9)または「音源処理1」(図
12)によって「出力デバイス」に再生予約された出力
バッファのうちの現在読出し中の出力バッファ(ポイン
タPBで指した出力バッファ)内の現在読出し中の1サ
ンプル分の楽音データ(ポインタppで指した楽音デー
タ)を、DAC12に送る(ステップS71)。続い
て、ポインタppを1サンプル分進め(ステップS7
2)、当該出力バッファ内の全ての楽音データをDAC
12に送り終えたか(すなわち当該出力バッファについ
ての再生処理を完了したか)否かを判断する(ステップ
S73)。ノーであればリターンする。
【0072】他方、ステップS73でイエスと判断され
れば、次の出力バッファの再生予約があるか否かを判断
する(ステップS74)。他の処理の影響により「音源
部」の起動が遅れているために、「音源部」で生成を完
了した楽音データを書き込んだ出力バッファが再生予約
されていなくても、既に再生予約している出力バッファ
(「初期設定」(図9)で先行して再生予約した出力バ
ッファや、音源処理1で既に再生予約している出力バッ
ファ)の再生処理が全て完了するまでは、ステップS7
4でイエスと判断されてステップS75に進み、その出
力バッファにポインタPBを進める。これにより、〔対
策3〕として説明したように、楽音生成処理の遅れによ
る音切れを防ぐための楽音生成処理の起動時間の許容範
囲が拡がることになる。ステップS75に続くステップ
S76では、再生処理を完了した出力バッファを、「音
源処理2」のルーチンに返却する要求を発生する。そし
てリターンする。
【0073】他方、「音源部」の起動が大幅に遅れてい
るために、既に再生予約している出力バッファの再生処
理を全て完了した区間内においても、「音源部」で生成
を完了した楽音データを書き込んだ出力バッファがまだ
再生予約されていない場合には、ステップS74でノー
と判断されてステップS77に進む。ステップS77で
は、ノイズ音の発生を防止するためにDAC12の出力
をミュートする。続いてステップS78では、「音源処
理2」に対してリセット要求(楽音生成処理のリセット
を要求するもの)を発生する。そしてリターンする。
【0074】図14は、「出力デバイス」からの返却要
求(図13のステップS76)に基づく「音源処理2」
の一例を示すフローチャートである。最初に、「出力デ
バイス」から返却された出力バッファを受け取る(ステ
ップS81)。続いて、その出力バッファをクリアし
て、「音源部」が既に保有している出力バッファの後に
その出力バッファを連結する(ステップS82)。尚、
この連結とは、出力バッファ同士を仮想的に順番につな
げて大きな1つのバッファとして扱うことである。した
がって、RAM5内で物理的に相互に隣接した領域にそ
れらの出力バッファを存在させることは必要ではない。
ステップS82に続くステップS83では、「音源部」
と「出力デバイス」との間での時刻のずれの有無を確認
して「音源部」の動作を補正するために、「出力デバイ
ス」からの返却要求のタイミングを示すデータを作成す
る。そしてリターンする。
【0075】図15は、「出力デバイス」からのリセッ
ト要求(図13のステップS78)に基づく「音源処理
2」の一例を示すフローチャートである。最初に、各発
音チャンネル用の音源レジスタ内のデータと、RAM5
の出力バッファ内のデータとを全てクリアする(ステッ
プS91)。続いて、「初期設定」(図9)のステップ
S23乃至S25と同じく、「出力デバイス」を初期設
定し(ステップS92)、データをクリアされた4つの
出力バッファの再生を再び「出力デバイス」に予約し
(ステップS93)、「出力デバイス」を起動するとと
もに、ソフトタイマをスタートさせる(ステップS9
4)。そしてリターンする。
【0076】このように、リセット要求に基づく「音源
処理2」では、「出力デバイス」に出力バッファが再生
予約されていない場合には、〔対策4〕として説明した
ように、それまでに「音源部」で実行していた楽音生成
処理を打ち切り、クリアされた出力バッファの再生の先
行予約を「出力デバイス」に再び行なった後、それ以降
に供給されるMIDIメッセージに基づいて「音源部」
を起動することにより、楽音生成処理を新たに開始して
いる。これにより、再生予約が間に合わず、一時的に楽
音が乱れた場合でも、すぐに安定した楽音生成動作に復
帰するので、ノイズを最小限に抑えることができる。
【0077】図8のステップS5に戻り、起動要因が
発生していれば、その要求に応じた処理(例えば、ディ
スプレイ9上のパネルの入力イベント処理や、キーボー
ド8からのコマンド入力イベント処理等)を実行し(ス
テップS12)、それに応じた表示をパネル上に行なう
(ステップS13)。そしてステップS3に戻り、ステ
ップS3以下の処理を繰り返す。他方、起動要因が発
生していれば、メインルーチンを終了させるための所定
の処理を実行し(ステップS14)、ディスプレイ9か
らパネルを消去する(ステップS15)。そしてリター
ンする。
【0078】尚、ステップS5において、起動要因乃
至のうちの2以上の起動要因が発生していると判断さ
れた場合には、起動要因,,,,の順に、ス
テップS5以下の処理を実行するものとする。また、ス
テップS3乃至ステップS5は、擬似マルチタスク処理
におけるタスク管理を仮想的に示したものであり、実際
には、いずれかの起動要因の発生に基づいて処理を実行
している途中で、それよりも優先順位の高い起動要因が
発生したことにより、割込みで別の処理を実行すること
(例えば、起動要因の発生に基づいて「音源処理1」
を実行している途中で、起動要因が発生したことによ
り、割込みで「MIDI処理」を実行すること等)があ
る。
【0079】次に、以上の実施の形態に対する変更例に
ついて説明する。以上の実施の形態では、ソフトタイマ
による内部割込み信号が発生する毎に、図12の「音源
処理1」のステップS51に示したように、楽音生成処
理を終了している最終の時刻STを現在の時刻GTから
減じた時間を生成量SRとして設定する(すなわち、内
部割込み信号が発生しなかったことによって未生成とな
っている楽音データを、その直後に内部割込み信号が発
生した機会で全て生成する)という方式を採っている。
こうした方式は、未生成の楽音データの生成を最も早期
に行なうことができるという点では優れている。しかし
この方式では、内部割込み信号が何回も連続して発生し
なかったような場合には、その直後に内部割込み信号が
発生した機会での楽音データの生成量SRが大きくなっ
てしまう。このように生成量SRが大きくなると、「音
源処理1」を一度実行するためにCPU3が費やさなけ
ればならない時間が長くなり、したがってCPU3が
「音源処理1」の実行のために長時間連続して独占され
るようになるので、その実行中に「音源処理1」よりも
優先順位の低い「音源処理2」等の処理の起動要因が発
生しても、CPU3がそれらの処理をなかなか実行でき
なくなってしまうことがある。またこのように生成量S
Rが大きくなると、演算可能時間EJが残り少ない場合
には、楽音データを生成可能な発音チャンネル数が極端
に減少してしまうことがある。そこで以下では、変更例
として、未生成の楽音データを徐々に生成していく方式
を具体的に説明することにする。
【0080】〔変更例1〕この変更例では、ソフトタイ
マによる内部割込み信号が発生する毎に、「音源処理
1」を実行するかわりに、内部割込み信号が発生したこ
と(したがって楽音波形を生成すべきこと)を合図する
情報(波形生成キュー(cue)と呼ぶことにする)
を、その直前に内部割込み信号が発生してからの経過時
間に応じた数だけ生成してRAM5内の所定のバッファ
(キューバッファと呼ぶことにする)に書き込む処理
(キュー処理と呼ぶことにする)を実行するようにして
いる。そして、キューバッファに波形生成キューが書き
込まれていると、楽音生成処理に要する時間があまり長
くならないような一定範囲内で楽音データの生成量を決
定し、その量だけ楽音データを生成し、キューバッファ
内の波形生成キューをその生成量に応じた数だけクリア
する処理(「音源処理1’」と呼ぶことにする)を実行
するようにしている。キューバッファに波形生成キュー
が書き込まれている毎にこうした処理が実行されること
により、未生成の楽音データが徐々に生成されていくこ
とになる。この方式によれば、1フレーム内で内部割込
み信号が連続して複数回発生しなかったような場合、キ
ューバッファ内の波形生成キューの数は増加するが、一
度の「音源処理1’」における楽音データの生成量は上
記一定範囲内に抑えられるので、CPU3が「音源処理
1’」のために長時間連続して独占されることはない。
したがって、優先順位の低い処理の実行が確保されやす
くなり、且つ楽音データを生成する発音チャンネル数の
極端な減少が防止される。
【0081】次に、この変更例を、図16乃至図20を
参照して具体的に説明する。図16は、この変更例にお
いてCPU3が実行するメインルーチンを示すフローチ
ャートである。最初のステップS101の「初期設定」
では、図8のステップS1の「初期設定」(図9参照)
と同じ処理に加えて、RAM5の上記キューバッファ内
のデータをクリアする。続くステップS102では、図
8のステップS2と同じ処理を行なう。
【0082】続くステップS103では、下記の各起動
要因の発生をチェックする。 起動要因:「シーケンサプログラム」(図2参照)か
らMIDIメッセージが供給されたこと 起動要因:ソフトタイマにより、「音源部」を起動す
る内部割込み信号が発生したこと 起動要因:キューバッファに波形生成キューが書き込
まれていること 起動要因:「出力デバイス」からの処理要求が検出さ
れたこと 起動要因:その他の要求(パネルの入力イベントや、
キーボード8のコマンド入力イベント(メインルーチン
終了コマンドを除く)が検出されたこと 起動要因:キーボード8のメインルーチン終了コマン
ドの入力イベントが検出されたこと 上記起動要因のうち、起動要因以外は、図8のステッ
プS3でチェックする起動要因と同じである。
【0083】続くステップS104は、図8のステップ
S4と同じく、上記起動要因のいずれかが発生したか否
かを判断する。そしていずれかの起動要因が発生する
と、ステップS105に進み、どの起動要因が発生した
のかを判定する(起動要因が複数発生していた場合の優
先順位は、が最も高く、以下,,,,の順
に低くなる)。ステップS105で起動要因が発生し
たと判定した場合のその後の処理(ステップS106の
「MIDI処理」及び及びS107の処理)は、図8の
ステップS5で起動要因が発生したと判定した場合の
図8のステップS6及びS7の処理と同じである。
【0084】他方、起動要因(ソフトタイマによる内
部割込み信号)が発生したと判定した場合には、ステッ
プS108の「キュー処理」に進む。(尚、この変更例
においても、図8の例におけると同様、CPU3が実行
しなければならない他の処理の影響によって、内部割込
み信号の発生が遅れたり、内部割込み信号が発生しなか
ったりすることがあることはもちろんである。したがっ
て、内部割込み信号が発生してから次に今回内部割込み
信号が発生するまでの経過時間は、10ミリ秒であると
は限らず、10ミリ秒を越えることがある。)
【0085】「キュー処理」では、図17に示すよう
に、その直前に内部割込み信号が発生してから今回内部
割込み信号が発生するまでの経過時間が10ミリ秒の何
倍以上であるかに応じて、その倍数分の波形生成キュー
を生成し(すなわち、経過時間が10ミリ秒以上20ミ
リ秒未満であれば1つ、経過時間が20ミリ秒以上30
ミリ秒未満であれば2つ、…というように波形生成キュ
ーを生成し)、生成した波形生成キューをキューバッフ
ァに書き込む(ステップS120)。そしてリターンす
る。「キュー処理」を終えると、パネル上への所定の状
態表示(ステップS109)を行ない、そしてステップ
S103に戻る。
【0086】この「キュー処理」によってキューバッフ
ァに波形生成キューが書き込まれると、起動要因が発
生したことになる。ステップS105でこの起動要因
が発生したと判定した場合には、ステップS110の
「音源処理1’」に進む。図18は「音源処理1’」の
一例を示すフローチャートである。最初のステップS1
21では、生成量SRを、10ミリ秒(1出力バッファ
分の楽音データの10分の1に対応した時間)に設定す
る。続くステップS122では、図12のステップS5
2と同じく、「初期設定」で再生予約した出力バッファ
以外の残りの出力バッファのうちの1つの出力バッファ
上に、時刻ST(MIDIメッセージの入力時刻のう
ち、当該MIDIメッセージに基づく楽音生成処理が終
了しているものの最終の時刻)を先頭とした生成量SR
分の楽音生成領域を設定する。
【0087】続くステップS123では、生成量SRの
楽音データを生成する発音チャンネル数を、キューバッ
ファ内の波形生成キューの数に応じて決定する。より詳
細には、キューバッファ内の波形生成キューの数が一定
未満である場合(すなわち内部割込み信号が連続して発
生しなかった回数が上記一定数未満である場合)には、
ノートオンイベント処理(図10)で発音割当てを行な
った発音チャンネル数を、そのまま楽音データを生成す
る発音チャンネル数として決定する。他方、キューバッ
ファ内の波形生成キューの数が上記一定数以上である場
合(すなわち内部割込み信号が連続して発生しなかった
回数が上記一定数以上である場合)には、楽音データを
生成する発音チャンネル数を、ノートオンイベント処理
で発音割当てを行なった発音チャンネル数よりも少なく
決定する。このように発音チャンネル数を減少させる理
由は、内部割込み信号が何度も連続して発生していない
場合には未生成の楽音データがかなり多くなっているの
で、発音チャンネル数の減少によって一度の「音源処理
1’」に要する時間を短縮させることにより、未生成の
楽音データの生成を早めることにある。尚、このステッ
プS123では、図12のステップS53と異なり、演
算可能時間EJとの関係で発音チャンネル数を一義的に
減少させる必要はない(そもそもこの変更例では、内部
割込み信号の発生によってではなくキューバッファに波
形生成キューが書き込まれることによって「音源処理
1’」が起動するので、演算可能時間EJの概念自体が
存在しない)ので、発音チャンネル数が極端に減少する
事態は生じない。続くステップS124乃至S135で
は、図12のステップS54乃至S65と同じ処理を行
なう。続くステップS136では、キューバッファ内の
波形生成キューを1つだけクリアする。そしてリターン
する。
【0088】このように、図18の例では、一度の「音
源処理1’」における生成量SRは、常に10ミリ秒
(1出力バッファ分の楽音データの10分の1に対応し
た時間)に固定されている。したがって、CPU3が
「音源処理1’」のために長時間連続して独占されるこ
とがなくなるので、「音源処理1’」よりも優先順位の
低い処理の実行が確保されやすくなり、且つ「音源処理
1’」における発音チャンネル数の極端な減少が防止さ
れる。
【0089】次に、図19は「音源処理1’」の別の一
例を示すフローチャートである。最初のステップS14
1では、キューバッファ内の波形生成キューの数に応じ
て、生成量SRと、楽音データを生成する発音チャンネ
ル数とを決定する処理を行なう。発音チャンネル数の決
定は、図18のステップS123と同様にして行なう。
生成量SRの決定についてより詳細に述べると、キュー
バッファ内の波形生成キューの数が一定未満である場合
(すなわち内部割込み信号が連続して発生しなかった回
数が上記一定数未満である場合)には、生成量SRを1
0ミリ秒に決定する。他方、キューバッファ内の波形生
成キューの数が上記一定数以上である場合(したがって
内部割込み信号が連続して発生しなかった回数が上記一
定数以上である場合)には、生成量SRを20ミリ秒
(1出力バッファ分の楽音データの10分の2に対応し
た時間)に決定する。(具体例としては、内部割込み信
号が20回以上連続して発生しなかったためにキューバ
ッファ内の波形生成キューの数が20以上になった場合
には、図7に示した予約数が当初の4から2にまで減少
してしまっているので、その場合に生成量SRを20ミ
リ秒に決定するようにしてもよい。)尚、キューバッフ
ァ内の波形生成キューの数が上記一定数をある程度以上
回った場合には、一度の「音源処理1’」に要する時間
があまり長くならないような一定範囲内で、生成量SR
を更に大きな量に決定するようにしてもよい。
【0090】続くステップS142では、図12のステ
ップS52と同じく、「初期設定」で再生予約した出力
バッファ以外の残りの出力バッファのうちの1つの出力
バッファ上に、時刻ST(MIDIメッセージの入力時
刻を示す時間軸上で、MIDIメッセージに基づく楽音
生成処理が終了している最終の時刻)を先頭とした生成
量SR分の楽音生成領域を設定する。続くステップS1
43乃至S154では、図12のステップS54乃至S
65と同じ処理を行なう。続くステップS155では、
ステップS141で決定した生成量SRが10ミリ秒の
何倍であるかに応じて、その倍数分だけ(生成量SRが
10ミリ秒であれば1つだけ、生成量SRが20ミリ秒
であれば2つだけ)キューバッファ内の波形生成キュー
をクリアする。そしてリターンする。
【0091】このように、図19の例では、内部割込み
信号が何度も連続して発生していない場合には、一度の
「音源処理1’」における生成量SRが、一度の「音源
処理1’」に要する時間があまり長くならないような一
定範囲内で、10ミリ秒よりも長く決定される。これに
より、図18の例に示したような効果を奏するのみなら
ず、未生成の楽音データがかなり多くなっている場合に
未生成の楽音データの生成を早めることもできるように
なる。
【0092】上述のような「音源処理1’」を終える
と、図16のステップS111でパネル上への所定の状
態表示を行ない、そしてステップS103に戻る。ステ
ップS105で起動要因が発生したと判定した場合の
その後の処理(ステップS112の「音源処理2」及び
ステップS113の処理)は、「出力デバイス」からの
リセット要求(図13のステップS78)に基づく「音
源処理2」を除いて、図8のステップS5で起動要因
が発生したと判定した場合の図8のステップS10の
「音源処理2」及びステップS11の処理と同じであ
る。
【0093】図20は、「出力デバイス」からのリセッ
ト要求に基づく「音源処理2」の一例を示すフローチャ
ートである。ステップS161では、音源レジスタ及び
出力バッファに加え、この変更例において設けられてい
るキューバッファ内のデータも全てクリアする。続くス
テップS162乃至ステップS164では、図15のス
テップS92乃至S94と同じ処理を行なう。そしてリ
ターンする。
【0094】図16に戻り、ステップS105で起動要
因,起動要因が発生したと判定した場合のその後の
処理(ステップS114及びS115,ステップS11
6及びS117)は、それぞれ図8のステップS5で起
動要因,起動要因が発生したと判定した場合の図8
のステップS12及びS13,ステップS14及びS1
5の処理と同じである。
【0095】〔変更例2〕この変更例では、ソフトタイ
マによる内部割込み信号が発生する毎に、それまでに未
生成となっている楽音データの量の関数として、楽音生
成処理に要する時間があまり長くならないような一定範
囲内で楽音データの生成量を決定し、その量だけ楽音デ
ータを生成する処理(「音源処理1’’」と呼ぶことに
する)を実行するようにしている。内部割込み信号が発
生する毎にこうした処理が実行されることにより、未生
成の楽音データが徐々に生成されていくことになる。す
なわち、この方式は、内部割込み信号の発生を起動要因
として楽音生成処理を実行する点では、図8のメインル
ーチンと同じであるが、未生成の楽音データを一度に全
て生成せずに徐々に生成していく点では、図12の「音
源処理1」とは異なっており、〔変更例1〕における
「音源処理1’」と同じである。したがって、CPU3
が「音源処理1’’」のために長時間連続して独占され
ることはないので、〔変更例1〕におけると同じ効果を
奏する。しかも、〔変更例1〕では、「音源処理1’」
の起動要因(キューバッファに波形生成キューが書き込
まれていること)の優先順位を、「キュー処理」の起動
要因(内部割込み信号の発生)よりも低くせざるを得な
いのに対し、この方式で、内部割込み信号の発生自体が
「音源処理1’’」の起動要因になっているので、楽音
生成処理が一層優先的に実行されやすくなるという利点
がある。
【0096】次に、この変更例を、図21乃至図25を
参照して具体的に説明する。この変更例においてCPU
3が実行するメインルーチンは、「音源処理1」のかわ
りに「音源処理1’’」を実行する点を除き、図8と全
く同様である。図21は「音源処理1’’」の一例を示
すフローチャートである。最初のステップS201で
は、MIDIメッセージの入力時刻を示す時間軸上での
現在の時刻GTから、その時間軸上でのMIDIメッセ
ージの入力時刻のうち当該MIDIメッセージに基づく
楽音生成処理が終了しているものの最終の入力時刻ST
を減じた時間を、遅れ量OR(未生成の楽音データの量
を時間の長さで表わしたもの)として設定する。続くス
テップS202では、生成量SRを、遅れ量ORの関数
として決定する。
【0097】図22は、この関数の特性の一例を示す図
である。この例では、遅れ量ORが一定未満である場合
には、生成量SRは10ミリ秒(1出力バッファ分の楽
音データの10分の1に対応した時間)であるが、遅れ
量ORが一定以上になると、遅れ量ORが増加するにつ
れて、生成量SRが連続的に増加していく。そして、生
成量SRが、楽音生成処理に要する時間があまり長くな
らないような範囲内の一定の上限値SRmaxに達する
と、遅れ量ORがそれ以上増加しても、生成量SRは上
限値SRmaxを維持する。上限値SRmaxは、例え
ば20ミリ秒であってもよく、あるいはそれ以外の値で
あってもよい。
【0098】図23は、この関数の特性の別の一例を示
す図である。この例では、遅れ量ORが一定未満である
場合には、生成量SRは10ミリ秒であるが、遅れ量O
Rが一定以上になると、遅れ量ORが増加するにつれ
て、生成量SRが不連続に増加していく。そして、生成
量SRが、楽音生成処理に要する時間があまり長くなら
ないような範囲内の一定の上限値SRmaxに達する
と、遅れ量ORがそれ以上増加しても、生成量SRは上
限値SRmaxを維持する。
【0099】尚、このようにして決定される生成量SR
は、10ミリ秒を単位としてその整数倍の値のみをとる
のではなく、該単位に対する端数を持った値をとりう
る。したがって、一度の「音源処理1’’」で生成され
る楽音データの量は、図5や図6に示したように1出力
バッファ分の楽音データの10分の1の量の整数倍にな
るとは限らず、該単位に対する端数を持った量になるこ
とがありうる。図24は、この変更例において生成され
る楽音データの量の一例を内部割込み信号の発生との関
係で示す図である。同図では、或るフレームにおいて内
部割込み信号が発生した1回目の機会(図の0ミリ秒
目)に、当該フレームにおける1出力バッファ分の楽音
データの10分の1の量の楽音データを生成している。
そして、内部割込み信号が発生しなかった2,3回目の
機会(図の10,20ミリ秒目)の後、内部割込み信号
が発生した4回目の機会(図の30ミリ秒目)に、未生
成の楽音データのうち、1出力バッファ分の楽音データ
の10分の1.6の量の楽音データを生成している(し
たがってこの機会までに通算として当該フレームにおけ
る1出力バッファ分の楽音データの10分の2.6の量
の楽音データを生成したことになり、図ではこのことを
2.6と示している)。
【0100】続いて、内部割込み信号が発生した5回目
の機会(図の40ミリ秒目)に、1出力バッファ分の楽
音データの10分の1.5の量の楽音データを生成し
(したがってこの機会までに通算として1出力バッファ
分の楽音データの10分の4.1の量の楽音データを生
成したことになり、図ではこのことを4.1と示してい
る)、内部割込み信号が発生した6回目の機会(図の5
0ミリ秒目)に、1出力バッファ分の楽音データの10
分の1.4の量の楽音データを生成している(したがっ
てこの機会までに通算として1出力バッファ分の楽音デ
ータの10分の5.5の量の楽音データを生成したこと
になり、図ではこのことを5.5と示している)。そし
て、内部割込み信号が発生しなかった7,8回目の機会
(図の60,70ミリ秒目)の後、内部割込み信号が発
生した9回目の機会(図の80ミリ秒目)に、1出力バ
ッファ分の楽音データの10分の1.7の量の楽音デー
タを生成している(したがってこの機会までに通算とし
て1出力バッファ分の楽音データの10分の7.2の量
の楽音データを生成したことになり、図ではこのことを
7.2と示している)。続いて、内部割込み信号が発生
した10回目の機会(図の90ミリ秒目)に、1出力バ
ッファ分の楽音データの10分の1.6の量の楽音デー
タを生成している(したがって1フレーム内に通算とし
て当該フレームにおける1出力バッファ分の楽音データ
の10分の8.8の量の楽音データを生成したことにな
り、図ではこのことを8.8と示している)。
【0101】そして次のフレームにおいて、内部割込み
信号が発生した1回目の機会(図の100ミリ秒目)
に、直前のフレームにおける残りの未生成の楽音データ
である1出力バッファ分の楽音データの10分の1.2
の量の楽音データと、今回のフレームにおける1出力バ
ッファ分の楽音データの10分の0.3の量の楽音デー
タとを生成している(図ではこのことを10.3と示し
ている)。続いて、内部割込み信号が発生した2回目の
機会(図の110ミリ秒目)に、今回のフレームにおけ
る1出力バッファ分の楽音データの10分の1.4の量
の楽音データを生成し(したがってこの機会までに通算
として今回のフレームにおける1出力バッファ分の楽音
データの10分の1.7の量の楽音データを生成したこ
とになり、図ではこのことを1.7と示している)、以
下同様にして、内部割込み信号が発生した機会毎に、上
限値SRmaxの範囲内の楽音データを生成していく。
【0102】ステップS202に続くステップS203
では、「初期設定」で再生予約した出力バッファ以外の
残りの出力バッファのうちの1つの出力バッファ上に、
時刻STを先頭とした生成量SR分の楽音生成領域を設
定する。続くステップS204では、生成量SRの楽音
データを生成する発音チャンネル数を決定する。この発
音チャンネル数は、一例として、遅れ量ORの関数とし
て決定するようにしてよい。図25は、この関数の特性
の一例を示す図である。この例では、遅れ量ORが一定
未満である場合には、ノートオンイベント処理(図1
0)で発音割当てを行なった発音チャンネル数CHma
xが、そのまま楽音データを生成する発音チャンネル数
となるが、遅れ量ORが一定以上になると、遅れ量OR
が増加するにつれて、楽音データを生成する発音チャン
ネル数がCHmaxよりも減少していく。このように、
遅れ量ORが一定以上である場合には、発音チャンネル
数が減少することにより、楽音生成処理に要する時間が
短縮されるようになる。また別の例として、この発音チ
ャンネル数を、図12のステップS53におけると同様
にして決定するようにしてもよい。
【0103】ステップS204に続くステップS205
乃至S214では、図12のステップS53乃至S63
と同じ処理を行なう。続くステップS215では、今回
ノートオフのあった発音チャンネルについての音量エン
ベロープの大きさを、徐々にゼロに向けて下げる。続く
ステップS216乃至S217では、図12のステップ
S64乃至S65と同じ処理を行なう。そしてリターン
する。
【0104】以上に示したように、このコンピュータミ
ュージックシステムでは、完全なマルチタスク機能を有
しないOS上で処理を実行させた場合でも、他の処理の
影響による「音源部」の起動の遅れを原因として発音に
支障が生じる事態が防止されている。
【0105】尚、以上の実施の形態では、〔対策1〕に
おいて、通算として1フレーム内に所定サンプル数の楽
音データを生成するようにしている。しかし、ここで
「通算として」というのは、必ずしも1つのフレーム内
で該所定サンプル数の楽音データの生成が完了すること
を要求するものではない。特に、これらの実施の形態で
は、図7に示すように、楽音データを書き込んだ出力バ
ッファを複数再生予約できるようになっているので、1
つのフレーム内で楽音データの生成演算が完了しなくて
も、その後のフレームでその分を補う演算を行なうこと
が可能である。図6を例にとってこのことを説明すれ
ば、図6では、内部割込み信号の発生しなかった機会で
の未生成の楽音データを、1つのフレーム内の最後の機
会までに間に合うように生成するようにしているが、該
最後の機会までに生成できなくても、その次のフレーム
にその生成を持ち越すようにしてよい(例えば、未生成
の4回分の楽音データを図6のように10回目の機会
(100ミリ秒目)で全て生成するかわりに、10回目
の機会で7,8回目の2回分の楽音データだけを生成
し、それ以降のフレームで内部割込み信号が発生した機
会で、残りの9,10回目の2回分の楽音データを生成
するようにしてよい)。尚、〔変更例1〕及び〔変更例
2〕においては、図24に例示しているように、或るフ
レームにおける未生成の楽音データの生成を、その次の
フレームに持ち越すことがありうる。
【0106】また、以上の実施の形態では、ノートオン
イベント処理やノートオフイベント処理といったMID
I処理において、「音源部」制御用の制御パラメータ,
ノートオン及びイベントの発生時刻を示すデータを、各
発音チャンネル毎に設けた音源レジスタに格納してい
る。しかし、このようにこれら制御パラメータ等を各発
音チャンネル毎に別の音源レジスタに格納するかわり
に、1つの記憶エリアに、制御パラメータ等を発音チャ
ンネルのチャンネル番号を示すデータと組にして順次書
き込むようにしてもよい。その場合には、MIDIメッ
セージの供給に基づいて、一旦シーケンスデータを作成
し、このシーケンスデータに基づいて楽音データの生成
を行なうことになる。
【0107】また、以上の実施の形態では、「音源処理
2」において、「出力デバイス」から返却された出力バ
ッファを、「音源部」が既に保有している出力バッファ
の後に連結しており、したがって「音源処理1」におい
ては、このように連結された出力バッファに、1出力バ
ッファ分ずつ楽音データを生成している。しかし、この
ように出力バッファを連結するかわりに、個々の出力バ
ッファを単位として楽音データを生成するようにしても
よい。
【0108】また、以上の実施の形態では、「音源部」
の起動に先行して、4つの出力バッファの再生を「出力
デバイス」に予約している。しかし、「音源部」の起動
に先行して「出力デバイス」に再生予約する出力バッフ
ァの数は、もちろん4以外であってよい。また、また、
RAM5内に設ける出力バッファの数も、「音源部」の
起動に先行して「出力デバイス」に再生予約する出力バ
ッファの数よりも1以上多い適宜の数であってよい。
【0109】また、以上の実施の形態では、〔対策
1〕,〔対策2〕,〔対策3〕及び〔対策4〕を全て実
施している。しかし、これらの対策は、それぞれ相互に
独立して実施しても、「音源部」の起動の遅れを原因と
して発音に支障が生じる事態を防止できるものである。
したがって、これらの対策のうちのいずれか1つのみを
実施したり、2つまたは3つを適宜組み合わせて実施し
たりしてもよい。
【0110】また、以上の実施の形態では、波形メモリ
方式の楽音生成処理をCPUに実行させるソフト音源に
この発明を適用しているが、他の適宜の楽音生成方式
(例えばFM合成方式等)をCPUに実行させるソフト
音源にこの発明を適用してもよい。また、以上の実施の
形態では、パーソナルコンピュータのCPUに楽音生成
処理を実行させるソフト音源にこの発明を適用している
が、専用の楽音発生装置に搭載されたCPUに楽音生成
処理を実行させるソフト音源にこの発明を適用してもよ
い。
【0111】
【発明の効果】以上のように、この発明に係る第1の楽
音生成装置及び楽音生成方法によれば、所定時間内に楽
音生成処理が何回か起動しなくても、該所定時間内に所
定数サンプル分の楽音データを生成することができる。
また、この発明に係る第2の楽音生成装置及び楽音生成
方法によれば、現在使用中の発音チャンネルに新たな楽
音生成処理を割り当てた場合でも、当該発音チャンネル
での新たな楽音生成処理の用意を直ちに行なうことがで
きる。
【0112】また、この発明に係る第3の楽音生成装置
及び楽音生成方法によれば、音切れを生じさせないため
の楽音生成処理の起動時間の遅れの許容範囲を拡げるこ
とができる。また、この発明に係る第4の楽音生成装置
及び楽音生成方法によれば、再生予約が間に合わず、一
時的に楽音が乱れた場合でも、すぐに安定した楽音生成
動作に復帰するので、ノイズを最小限に抑えることがで
きる。
【0113】また、この発明に係る第5の楽音生成装置
及び楽音生成方法によれば、音切れを生じさせないため
の楽音生成処理の起動時間の遅れの許容範囲内で、楽音
生成処理が起動した機会だけで楽音データの生成が完了
する。このように、これらの発明は、それぞれ、楽音生
成処理の起動の遅れを原因として発音に支障が生じる事
態を防止することができるという優れた効果を奏する。
【図面の簡単な説明】
【図1】この発明を採用したコンピュータミュージック
システムの全体構成ブロック図
【図2】ソフト音源を実現するためのソフトウェアの構
造の一例を示す図
【図3】図2の「SGM−AP」の構成の一例を示す図
【図4】図2のソフトウェアによる処理の一例を示す図
【図5】この発明に係る〔対策1〕の実施の一例を示す
【図6】この発明に係る〔対策1〕の実施の別の一例を
示す図
【図7】この発明に係る〔対策3〕の実施の一例を示す
【図8】CPUの実行するメインルーチンの一例を示す
フローチャート
【図9】CPUの実行する初期設定の一例を示すフロー
チャート
【図10】CPUの実行するノートオンイベント処理の
一例を示すフローチャート
【図11】CPUの実行するノートオフイベント処理の
一例を示すフローチャート
【図12】CPUの実行する音源処理1の一例を示すフ
ローチャート
【図13】DMAコントローラの実行する割込み処理の
一例を示すフローチャート
【図14】DMAコントローラからの返却要求に基づい
てCPUの実行する音源処理2の一例を示すフローチャ
ート
【図15】DMAコントローラからのリセット要求に基
づいてCPUの実行する音源処理2の一例を示すフロー
チャート
【図16】CPUの実行するメインルーチンの一例を示
すフローチャート
【図17】CPUの実行するキュー処理の一例を示すフ
ローチャート
【図18】CPUの実行する音源処理1’の一例を示す
フローチャート
【図19】CPUの実行する音源処理1’の別の一例を
示すフローチャート
【図20】DMAコントローラからのリセット要求に基
づいてCPUの実行する音源処理2の別の一例を示すフ
ローチャート
【図21】CPUの実行する音源処理1’’の一例を示
すフローチャート
【図22】生成量SRを遅れ量ORの関数として決定す
る際の関数の特性の一例を示す図
【図23】生成量SRを遅れ量ORの関数として決定す
る際の関数の特性の別の一例を示す図
【図24】内部割込み信号の発生と楽音データの生成量
との関係の一例を示す図
【図25】発音チャンネル数を遅れ量ORの関数として
決定する際の関数の特性の一例を示す図
【符号の説明】
1 MIDI 2 タイマ 3 CPU 4 ROM 5 RAM 6 データ及びアドレスバス 7 マウス 8 キーボード 9 ディスプレイ 10 ハードディスク装置 11 DMAコントローラ 12 DAC 13 サウンドシステム

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 演奏情報を供給する供給手段と、 前記演奏情報に基づく楽音生成処理を、所定時間内に複
    数回起動させるための起動手段と、 前記起動手段によって起動された楽音生成処理を実行す
    る楽音生成手段と、 前記起動手段が前記楽音生成処理を実際に起動した機会
    だけで、通算として前記所定時間内に所定サンプル数分
    の楽音データを生成させるように、前記楽音生成手段の
    実行する楽音生成処理の調整を行なう調整手段とを具え
    た楽音生成装置。
  2. 【請求項2】 前記調整手段は、楽音生成処理が実際に
    起動した機会だけでは、楽音生成処理を割り当てられて
    いる全ての発音チャンネルについて前記所定サンプル数
    分の楽音データを生成できない場合、楽音データを生成
    する発音チャンネル数を減少させることにより、前記所
    定サンプル数分の楽音データの生成を確保する請求項1
    に記載の楽音生成装置。
  3. 【請求項3】 供給された演奏情報に基づき、汎用の演
    算処理手段に楽音生成処理を実行させる楽音生成方法で
    あって、 楽音生成処理を、所定時間内に複数回起動させるための
    第1のステップと、 前記第1のステップにおいて楽音生成処理が実際に起動
    した機会だけで、通算として前記所定時間内に所定サン
    プル数分の楽音データを生成させるように、前記楽音生
    成処理の調整を行なう第2のステップと、 前記第1のステップで起動された楽音生成処理を、前記
    第2のステップでの調整に従って実行する第3のステッ
    プとを含んだ楽音生成方法。
  4. 【請求項4】 前記第3のステップでは、前記楽音生成
    処理が実際に起動した機会だけでは、楽音生成処理を割
    り当てられている全ての発音チャンネルについて前記所
    定サンプル数分の楽音データを生成できない場合、楽音
    データを生成する発音チャンネル数を減少させることに
    より、前記所定サンプル数分の楽音データの生成を確保
    する請求項3に記載の楽音生成方法。
  5. 【請求項5】 演奏情報を供給する供給手段と、 前記演奏情報に基づく楽音生成処理を、未使用の発音チ
    ャンネルに割り当てた際に、該処理を制御するパラメー
    タを格納しておくための第1のレジスタと、 使用中となった前記発音チャンネルに、別の前記演奏情
    報に基づく新たな楽音生成処理を割り当てた際に、該処
    理を制御するパラメータを格納するための第2の音源レ
    ジスタと、 前記新たな楽音生成処理を開始すべきタイミングまで
    は、前記第1のレジスタを選択し、該タイミング以降
    は、前記第1のレジスタに替えて前記第2のレジスタを
    選択する選択手段と、 前記選択手段の選択したレジスタを用いて前記発音チャ
    ンネルでの楽音データの生成を行なう楽音生成手段とを
    具えた楽音生成装置。
  6. 【請求項6】 供給された演奏情報に基づき、汎用の演
    算処理手段に楽音生成処理を実行させる楽音生成方法で
    あって、 未使用の発音チャンネルに楽音生成処理を割り当て、該
    処理を制御するパラメータを、第1のレジスタに格納す
    る第1のステップと、 使用中となった前記発音チャンネルに新たな楽音生成処
    理を割り当て、該処理を制御するパラメータを、前記第
    1のレジスタとは別に設けられた第2のレジスタに格納
    する第2のステップと、 前記新たな楽音生成処理を開始すべきタイミングまで
    は、前記第1のレジスタを選択し、該タイミング以降
    は、前記第1のレジスタに替えて前記第2のレジスタを
    選択する第3のステップと、 前記第3のステップで選択したレジスタを用いて前記発
    音チャンネルでの楽音データの生成を行なう第4のステ
    ップとを含んだ楽音生成方法。
  7. 【請求項7】 演奏情報を供給する供給手段と、 それぞれ楽音データを書き込むための複数の出力バッフ
    ァと、 楽音生成処理に先行して、前記複数の出力バッファのう
    ちの一部の出力バッファの再生を予約する予約手段と、 前記演奏情報に基づいて楽音データを生成し、生成した
    楽音データを前記複数の出力バッファのうちの残りのい
    ずれかの出力バッファに書き込み、該出力バッファの再
    生を予約する楽音生成手段と、 再生を予約された順に前記出力バッファの読出しを行な
    う再生手段とを具えた楽音生成装置。
  8. 【請求項8】 供給された演奏情報に基づき、汎用の演
    算処理手段に楽音生成処理を実行させる楽音生成方法で
    あって、 それぞれ楽音データを書き込むための1または複数の出
    力バッファの再生を、楽音生成処理に先行して予約する
    第1のステップと、 楽音データを生成し、生成した楽音データを、前記第1
    のステップで再生を予約した出力バッファ以外の出力バ
    ッファに書き込み、該出力バッファの再生を予約する第
    2のステップと、 前記第1のステップ及び前記第2のステップで再生を予
    約した順に前記出力バッファを読み出す制御を行なう第
    3のステップとを含んだ楽音生成方法。
  9. 【請求項9】 演奏情報を供給する供給手段と、 楽音データを書き込むための出力バッファと、 前記演奏情報に基づいて楽音データを生成し、生成した
    楽音データを前記出力バッファに書き込み、該出力バッ
    ファの再生を予約する楽音生成手段と、 再生を予約された順に前記出力バッファの読出しを行な
    う再生手段と、 前記再生手段に出力バッファの再生が予約されていない
    場合、前記楽音生成手段がそれまでに生成を完了してい
    るべき楽音データの生成を打ち切り、それ以降に生成を
    開始すべき楽音データの生成を前記楽音生成手段に新た
    に開始させる更新手段とを具えた楽音生成装置。
  10. 【請求項10】 供給された演奏情報に基づき、汎用の
    演算処理手段に楽音生成処理を実行させる楽音生成方法
    であって、 楽音データを生成し、生成した楽音データを出力バッフ
    ァに書き込み、該出力バッファの再生を予約する第1の
    ステップと、 前記第1のステップで再生を予約した順に前記出力バッ
    ファを読み出す制御を行なう第2のステップと、 所定の時間内に出力バッファの再生が予約されていない
    場合、それまでに生成を完了しているべき楽音データの
    生成を打ち切り、それ以降に生成を開始すべき楽音デー
    タの生成を新たに開始する第3のステップとを含んだ楽
    音生成方法。
  11. 【請求項11】 演奏情報を供給する供給手段と、 前記演奏情報に基づく楽音生成処理を、所定時間内に複
    数回起動させるための起動手段と、 前記起動手段によって起動された楽音生成処理を実行す
    る楽音生成手段と、 前記起動手段が前記楽音生成処理を起動した場合、各起
    動の時刻に対応したサンプル数を目標値として、該楽音
    生成処理で生成する楽音データのサンプル数が該目標値
    に追従するように制御する制御手段とを具えた楽音生成
    装置。
  12. 【請求項12】 供給された演奏情報に基づき、汎用の
    演算処理手段に楽音生成処理を実行させる楽音生成方法
    であって、 楽音生成処理を、所定時間内に複数回起動させるための
    第1のステップと、 前記第1のステップで楽音生成処理が起動した場合、各
    起動の時刻に対応したサンプル数を目標値として、該楽
    音生成処理で生成する楽音データのサンプル数が該目標
    値に追従するように制御する第2のステップと、 前記第1のステップで起動された楽音生成処理を、前記
    第2のステップでの制御に従って実行する第3のステッ
    プとを含んだ楽音生成方法。
  13. 【請求項13】 前記制御手段は、前記起動手段が前記
    楽音生成処理を起動した場合、各起動の時刻における未
    生成の楽音データのサンプル数に対応する楽音データの
    生成サンプル数を発生し、該生成サンプル数の楽音デー
    タが前記楽音生成処理で生成されるように制御するもの
    である請求項11に記載の楽音生成装置。
  14. 【請求項14】 前記第2のステップでは、前記第1の
    ステップで前記楽音生成処理が起動した場合、各起動の
    時刻における未生成の楽音データのサンプル数に対応す
    る楽音データの生成サンプル数を発生し、該生成サンプ
    ル数の楽音データが前記楽音生成処理で生成されるよう
    に制御する請求項12に記載の楽音生成方法。
  15. 【請求項15】 前記制御手段は、前記起動手段が前記
    楽音生成処理を起動した場合、各起動の時刻における未
    生成の楽音データのサンプル数に基づいて所定の上限値
    の範囲内で決定される楽音データの生成サンプル数を発
    生し、該生成サンプル数の楽音データが前記楽音生成処
    理で生成されように制御するものである請求項11に記
    載の楽音生成装置。
  16. 【請求項16】 前記第2のステップでは、前記第1の
    ステップで前記楽音生成処理が起動した場合、各起動の
    時刻における未生成の楽音データのサンプル数に基づい
    て所定の上限値の範囲内で決定される楽音データの生成
    サンプル数を発生し、該生成サンプル数の楽音データが
    前記楽音生成処理で生成されるように制御する請求項1
    2に記載の楽音生成方法。
JP8024747A 1995-11-22 1996-01-17 楽音生成装置及び方法 Expired - Lifetime JP2962217B2 (ja)

Priority Applications (10)

Application Number Priority Date Filing Date Title
JP8024747A JP2962217B2 (ja) 1995-11-22 1996-01-17 楽音生成装置及び方法
TW85102189A TW312776B (ja) 1996-01-17 1996-02-26
EP96118454A EP0775996B1 (en) 1995-11-22 1996-11-18 Tone generating method and device
DE69625942T DE69625942T2 (de) 1995-11-22 1996-11-18 Verfahren und Vorrichtung zur Tonerzeugung
EP00122559A EP1069550B1 (en) 1995-11-22 1996-11-18 Tone generating method and device
DE69618907T DE69618907T2 (de) 1995-11-22 1996-11-18 Verfahren und Vorrichtung zur Tonerzeugung
SG1996011315A SG43444A1 (en) 1995-11-22 1996-11-20 Tone generating method and device
US08/752,924 US6284963B1 (en) 1995-11-22 1996-11-20 Tone generating method and device based on software
KR1019960056560A KR100302626B1 (ko) 1995-11-22 1996-11-22 악음생성장치 및 방법
US09/864,579 US6353171B2 (en) 1995-11-22 2001-05-24 Tone generating method and device

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-328428 1995-11-22
JP32842895 1995-11-22
JP8024747A JP2962217B2 (ja) 1995-11-22 1996-01-17 楽音生成装置及び方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP11125137A Division JP3139490B2 (ja) 1995-11-22 1999-04-30 楽音生成装置及び方法

Publications (2)

Publication Number Publication Date
JPH09204177A true JPH09204177A (ja) 1997-08-05
JP2962217B2 JP2962217B2 (ja) 1999-10-12

Family

ID=26362322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8024747A Expired - Lifetime JP2962217B2 (ja) 1995-11-22 1996-01-17 楽音生成装置及び方法

Country Status (6)

Country Link
US (2) US6284963B1 (ja)
EP (2) EP0775996B1 (ja)
JP (1) JP2962217B2 (ja)
KR (1) KR100302626B1 (ja)
DE (2) DE69618907T2 (ja)
SG (1) SG43444A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3409686B2 (ja) 1998-03-17 2003-05-26 ヤマハ株式会社 複数音源ドライバの制御方法、および、複数音源ドライバの制御用プログラムが記録された記録媒体、ならびに、複数生成プログラムの制御方法
JP3781171B2 (ja) 2000-06-22 2006-05-31 ヤマハ株式会社 楽音発生方法
KR100636906B1 (ko) * 2004-03-22 2006-10-19 엘지전자 주식회사 미디 재생 장치 그 방법
JP2006030517A (ja) * 2004-07-15 2006-02-02 Yamaha Corp 発音割当装置
JP4778872B2 (ja) * 2005-10-20 2011-09-21 パナソニック株式会社 楽音出力装置
US7678986B2 (en) * 2007-03-22 2010-03-16 Qualcomm Incorporated Musical instrument digital interface hardware instructions
US7663051B2 (en) * 2007-03-22 2010-02-16 Qualcomm Incorporated Audio processing hardware elements
US8383924B2 (en) * 2010-03-10 2013-02-26 Yamaha Corporation Musical tone signal generating apparatus

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3778401D1 (de) * 1986-01-31 1992-05-27 Casio Computer Co Ltd Wellenformerzeuger fuer ein elektronisches musikinstrument.
US5007323A (en) * 1987-08-07 1991-04-16 Casio Computer Co., Ltd. Polyphonic electronic musical instrument
US5319151A (en) 1988-12-29 1994-06-07 Casio Computer Co., Ltd. Data processing apparatus outputting waveform data in a certain interval
JPH02254496A (ja) 1989-03-29 1990-10-15 Yamaha Corp 楽音発生装置
JP2576647B2 (ja) * 1989-11-30 1997-01-29 ヤマハ株式会社 波形発生装置
JP2545297B2 (ja) 1990-07-18 1996-10-16 株式会社河合楽器製作所 電子楽器のパラメータ設定装置
US5522010A (en) * 1991-03-26 1996-05-28 Pioneer Electronic Corporation Pitch control apparatus for setting coefficients for cross-fading operation in accordance with intervals between write address and a number of read addresses in a sampling cycle
US5283386A (en) * 1991-08-30 1994-02-01 Casio Computer Co., Ltd. Musical-tone signal generating apparatus and musical-tone controlling apparatus including delay means and automatic reset means
JP2722907B2 (ja) * 1991-12-13 1998-03-09 ヤマハ株式会社 波形発生装置
US5345035A (en) 1992-07-10 1994-09-06 Yamaha Corporation Musical tone generating apparatus
JP2755051B2 (ja) 1992-07-10 1998-05-20 ヤマハ株式会社 楽音発生装置
JPH06195075A (ja) 1992-12-24 1994-07-15 Kawai Musical Instr Mfg Co Ltd 楽音発生装置
US5376752A (en) * 1993-02-10 1994-12-27 Korg, Inc. Open architecture music synthesizer with dynamic voice allocation
US5596159A (en) * 1995-11-22 1997-01-21 Invision Interactive, Inc. Software sound synthesis system

Also Published As

Publication number Publication date
KR100302626B1 (ko) 2001-11-22
DE69625942D1 (de) 2003-02-27
DE69618907D1 (de) 2002-03-14
KR970029320A (ko) 1997-06-26
US6284963B1 (en) 2001-09-04
US6353171B2 (en) 2002-03-05
JP2962217B2 (ja) 1999-10-12
EP1069550B1 (en) 2003-01-22
SG43444A1 (en) 1997-10-17
DE69618907T2 (de) 2003-01-16
DE69625942T2 (de) 2003-11-27
EP1069550A1 (en) 2001-01-17
EP0775996A1 (en) 1997-05-28
EP0775996B1 (en) 2002-01-30
US20010023634A1 (en) 2001-09-27

Similar Documents

Publication Publication Date Title
US5895877A (en) Tone generating method and device
JPH0997064A (ja) 自動演奏データ処理装置
JPH09179556A (ja) 楽音生成方法および装置
JP2962217B2 (ja) 楽音生成装置及び方法
KR100500077B1 (ko) 악음 생성 방법 및 장치
JP3221314B2 (ja) 楽音合成装置及び方法
JP3139490B2 (ja) 楽音生成装置及び方法
JP3572847B2 (ja) コンピュータソフトウェアを用いた音源システム及び方法
JP3637577B2 (ja) 楽音生成方法
US11042380B2 (en) Apparatus, method and computer program for processing instruction
JP3003559B2 (ja) 楽音生成方法
JP3632744B2 (ja) 音生成方法
JP2936872B2 (ja) 楽音制御装置
TW316966B (ja)
JP4477159B2 (ja) カラオケ装置
JP3050779B2 (ja) 信号処理装置
JPH10207465A (ja) 楽音発生方法および楽音発生装置
TW312776B (ja)
JP3539480B2 (ja) 楽音信号発生装置、楽音信号発生方法及び楽音信号を発生させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JPS6250898A (ja) 電子楽器
JP3627590B2 (ja) 音生成方法
JP2005049497A (ja) 音源回路の制御プログラムおよび音源回路の制御装置
JP4720893B2 (ja) カラオケ装置
JP2002006844A (ja) 楽音発生方法
JP3067145B2 (ja) エンベロープ発生制御装置、放音形態制御装置、エンベロープ発生制御方法及び放音形態制御方法

Legal Events

Date Code Title Description
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: 20070806

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20080806

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090806

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100806

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100806

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20110806

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20120806

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 14

EXPY Cancellation because of completion of term