JPH09258736A - コンピュータソフトウェアを用いた音源システム及び方法 - Google Patents

コンピュータソフトウェアを用いた音源システム及び方法

Info

Publication number
JPH09258736A
JPH09258736A JP9019676A JP1967697A JPH09258736A JP H09258736 A JPH09258736 A JP H09258736A JP 9019676 A JP9019676 A JP 9019676A JP 1967697 A JP1967697 A JP 1967697A JP H09258736 A JPH09258736 A JP H09258736A
Authority
JP
Japan
Prior art keywords
program
software
sound
data
tone
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
JP9019676A
Other languages
English (en)
Other versions
JP3572847B2 (ja
Inventor
Takeshi Nimase
剛 二間瀬
Genichi Tamura
元一 田邑
Katsutoshi Kawachi
克俊 河内
Takeshi Kikuchi
菊池  健
Satoru Motoyama
悟 本山
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 JP01967697A priority Critical patent/JP3572847B2/ja
Publication of JPH09258736A publication Critical patent/JPH09258736A/ja
Application granted granted Critical
Publication of JP3572847B2 publication Critical patent/JP3572847B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 プラグインソフトを使用して楽音を発生する
場合、音源ボードを不要にすること。 【解決手段】 所定のオペレーティングシステム(O
S)と該OS上で動く所定のアプリケーションプログラ
ム(APS)とを搭載したコンピュータにおいて、ソフ
トウェア音源のプログラム(PIS)をアプリケーショ
ンプログラムにプラグインし、該アプリケーションプロ
グラムから与えられらる命令に従って起動されて、音波
形サンプルデータを生成する処理を実行し、生成した音
波形サンプルデータをOSに備わった波形入力用インタ
フェースに出力する。OSに備わった波形出力用のプロ
グラムにより、波形入力インタフェースを介して与えら
れる前記生成済みの音波形サンプルデータを外部に出力
する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、CPUのような
汎用の演算処理手段すなわちコンピュータを使用して、
ソフトウェアとして記述された音波形サンプルデータ生
成処理プログラムを実行することに基づき音波形サンプ
ルデータを生成する音源システム及び方法に関する。
【0002】
【従来の技術】電子楽器では、楽音生成処理(楽音生成
処理によって生成した楽音波形データにエフェクトを付
加する処理を含む場合もある)を、マイクロプロセッサ
に実行させることが広く行なわれている。そのようなマ
イクロプロセッサとしては、楽音生成方式(例えば波形
メモリ方式やFM合成方式等)に応じた回路構成を採用
して成る専用のハードウェア(例えば音源LSIやDS
P(ディジタルシグナルプロセッサ)等)を設計するこ
とが一般的であった。
【0003】しかし、近年、CPUの演算能力の向上に
伴って、汎用コンピュータや専用の楽音発生装置に搭載
したCPUにおいて、所定の楽音生成処理手順を記述し
たプログラムを実行させることにより、楽音波形データ
を生成させるようにしたものが登場している。ここで
は、そのような楽音生成処理プログラムを基礎としてい
る楽音生成装置や楽音生成方法のことをCPU音源また
はソフトウェア音源(必要に応じてソフト音源と略称す
る)と呼び、これに対し、専用のハードウェアを使用す
る従来からの楽音生成装置や楽音生成方法をハード音源
と呼ぶことにする。
【0004】一方、WWW(World Wide Web)ブラウザ
や、ワープロソフト、表計算ソフト等の各種アプリケー
ションソフトウェアにおいては、プラグイン機能によっ
て、所定の機能を実行するプラグインソフトを取り込む
ことができるものがある。例えば、自動演奏用のシーケ
ンサ機能を実現するプラグインソフトが知られており、
これを使用することによりMIDI(Musical Instrume
nt Digital Interface)ファイルの再生が可能である。
しかし、シーケンサ機能を実現するソフトウェアだけで
は、楽音波形サンプルデータの生成を行うことができ
ず、音源ボードと言われるハード音源をコンピュータに
搭載し、このハード音源によって再生されたMIDIメ
ッセージに基づく楽音波形サンプルデータを生成するよ
うにしていた。ところで、この種の音源ボードには種々
のタイプのものがあり、そのタイプやグレードによっ
て、同じ内容のMIDIメッセージに対して生成される
楽音の特性は異なるものとなってしまうことがあった。
【0005】
【発明が解決しようとする課題】この発明は、上述の点
に鑑みてなされたもので、ソフトウェア音源をアプリケ
ーションソフトにプラグインで取り込み、該アプリケー
ションソフトの実行中においてソフトウェア音源のプロ
グラムを起動させることにより、音源ボードを必要とす
ることなく、音波形サンプルデータの生成を行うことが
できるようにした音源システム及び方法を提供しようと
するものである。
【0006】ところで、MIDIメッセージ等の演奏情
報に基づいて楽音発生処理を行おうとする場合、コンピ
ュータが楽音発生処理のみを実行することは希であり、
他のソフトウェアのプログラムを同じOS上で並行して
処理することが多い。例えば、ゲームソフトを実行する
ときは、音声発生処理に並行して動画像の発生処理等を
行う必要があるし、カラオケソフトを実行する場合でも
歌詞画像及び背景画像の発生処理を同時並行的に行う必
要がある。そのような場合、ソフトウェア音源を使用す
る場合、コンピュータはそのソフトウェア音源のプログ
ラムと他の必要なソフトウェアのプログラムを同じOS
上で並行して処理することになる。その場合には、他の
処理に影響されることなくソフトウェア音源による楽音
波形データ生成処理の実行が確保されるようにするため
に、マルチタスク機能を有するOS(例えばWindo
ws95(商標)等)上で楽音生成処理を実行させるこ
とが望ましい。しかし、完全なマルチタスク機能を有し
ないOS(例えばWindows3.1(商標)等)も
広く普及しており、そうしたOS上でも楽音生成処理を
実行させたいというニーズが存在している。しかるに、
そうしたOS上では、他のソフトウェアの処理の影響に
よって楽音生成処理の実行が遅れ、その結果、発音に支
障が生じることがあり得るし、逆に、楽音生成処理に長
い時間を費やすことに影響されて他の処理の実行が遅れ
るという問題も起こり得る。特に、従来は、ハードウェ
ア音源を用いていたので、そのような並行処理の問題が
起こらなかったアプリケーションソフトにおいて、本発
明に従ってソフトウェア音源を使用するようにすると、
そのような並行処理の問題が起こるおそれが出てくるの
で、予め解決策を講ずることが望まれる。
【0007】この発明は上述の点に鑑みてなされたもの
で、完全なマルチタスク機能を有しないOS上でソフト
ウェア音源による音波形サンプルデータ生成処理と他の
ソフトウェアの処理を並行して実行させる場合でも、楽
音生成処理や他の処理に支障が生じないようにしたコン
ピュータソフトウェアを用いた音源システム及び方法を
提供しようとするものである。
【0008】
【課題を解決するための手段】この発明に係る音源シス
テムは、所定のオペレーティングシステムと該オペレー
ティングシステム上で動く所定のアプリケーションプロ
グラムとを搭載したコンピュータを用いて、音波形サン
プルデータを生成するための音源システムであって、前
記オペレーティングシステムに備わった波形入力用イン
タフェースと、前記アプリケーションプログラムにプラ
グインされたソフトウェア音源のプログラムであって、
該アプリケーションプログラムから与えられらる命令に
従って起動されて、音波形サンプルデータを生成する処
理を実行し、生成した音波形サンプルデータを前記波形
入力用インタフェースに出力するものと、前記オペレー
ティングシステムに備わった波形出力用のプログラムで
あって、前記波形入力インタフェースを介して与えられ
る前記生成済みの音波形サンプルデータを外部に出力す
るものとを具備することを特徴とするものである。
【0009】これによって、ソフトウェア音源のプログ
ラムをアプリケーションプログラムにプラグインで組み
込むだけで、コンピュータを使用した音波形サンプルデ
ータ生成を容易に行うことができるようになり、かつ、
格別の音源ボードが不要となる、という優れた効果を奏
する。また、どのようなコンピュータを使用しても、そ
のハードウェア構成にかかわらず、プラグインしたソフ
トウェア音源プログラムに応じた均質の楽音特性を持つ
音波形サンプルデータを生成することができるようにな
る。
【0010】この発明の音源システムは、前記アプリケ
ーションプログラムにプラグインされた自動演奏用シー
ケンサのプログラムを更に具備し、該シーケンサのプロ
グラムの実行によって自動的に発生すべき楽音を指示
し、前記ソフトウェア音源のプログラムでは、前記指示
された楽音の音波形サンプルデータを生成するようにし
てもよい。これによって、アプリケーションプログラム
を介して任意の自動演奏データファイル(例えばMID
Iファイル)を受け取ることにより、アプリケーション
プログラムの実行中において、その自動演奏データファ
イルを再生演奏することができる。この場合、ソフトウ
ェア音源のプログラムと自動演奏用シーケンサのプログ
ラムは、それぞれ別モジュールのソフトウェアであって
もよいし、別モジュールのソフトウェアでなくてもよ
い。すなわち、1つのソフトウェアの中に自動演奏用シ
ーケンサのプログラムとソフトウェア音源のプログラム
とが一体的に組み込まれていてもよい。
【0011】ところで、高度なアプリケーションプログ
ラム(例えばWWWブラウザ)においては、例えばイン
ターネットのホームページを2箇所同時にアクセスする
ことができるものがある。そのような場合、アクセス中
の2つのホームページの双方で音楽ソフトの再生を行う
ようなことが起こり得る。そうすると、該アプリケーシ
ョンプログラムにプラグインされたソフトウェア音源プ
ログラムが重複して起動されることになり、異常動作が
起こる可能性がある。このような異常動作を未然に防止
するための1つの対策として、ソフトウェア音源のプロ
グラムにおいて、前記アプリケーションプログラムから
呼び出しを受けたとき、該ソフトウェア音源のプログラ
ムが既に実行中であるかどうかを判定し、既に実行中で
あれば後からの呼び出しを受け付けない処理を行うよう
にするとよい。これによって、アプリケーションプログ
ラムにプラグインされたソフトウェア音源プログラムが
重複して起動されることなく、先に起動中の波形生成処
理を優先して遂行させることができる。そのための別の
対策として、ソフトウェア音源のプログラムにおいて、
前記アプリケーションプログラムから呼び出しを受けた
とき、該ソフトウェア音源のプログラムが既に実行中で
あるかどうかを判定し、既に実行中であれば該実行中の
処理を中止し、後からの呼び出しを受け付けるようにし
てもよい。これによって、アプリケーションプログラム
にプラグインされたソフトウェア音源プログラムが重複
して起動されることなく、先に実行中の波形生成処理を
中止し、後から呼び出しのかかった波形生成処理を優先
して実行することができる。
【0012】更にそのための別の対策として、ソフトウ
ェア音源のプログラムにおいて、前記アプリケーション
プログラムから呼び出しを受けたとき、該ソフトウェア
音源のプログラムが既に実行中であるかどうかを判定
し、既に実行中であれば、後からの呼び出しを受け付け
ない処理を行うか、又は、該実行中の処理を中止して後
からの呼び出しを受け付ける処理を行うか、のどちらか
を選択可能に実行するようにしてもよい。この場合の選
択の仕方としては、ディスプレイ画面に選択用のアイコ
ンを表示して、操作者によってどちらかを選択させるよ
うにしてもよいし、あるいは、再生すべき自動演奏デー
タファイル中若しくはその他の適宜の領域に選択情報を
格納しておき、この選択情報を参照して自動的に選択す
るようにしてもよい。あるいは、ディスプレイ画面にお
ける表示形態(例えば開いたページ画像の前後関係な
ど)に応じてどちらでソフトウェア音源を使用するかを
自動的に選択するようにしてもよいし、若しくはランダ
ム選択によって選択するようにしてもよい。
【0013】この発明に係る方法は、所定のオペレーテ
ィングシステムと該オペレーティングシステム上で動く
所定のアプリケーションプログラムとを搭載したコンピ
ュータを用いて、音波形サンプルデータを生成するため
の方法であって、前記アプリケーションプログラムにソ
フトウェア音源のプログラムをプラグインする処理と、
前記アプリケーションプログラムの実行中に、前記プラ
グインされたソフトウェア音源のプログラムを呼び出す
処理と、前記アプリケーションプログラムからの呼び出
しに応じて、前記ソフトウェア音源のプログラムを起動
する処理と、起動された前記ソフトウェア音源のプログ
ラムによって、再生すべき音を指示する演奏データを受
け付けるステップと、受け付けた演奏データに基づき音
波形サンプルデータを所定の再生サンプリングクロック
とは非同期で生成し、生成した音波形サンプルデータを
出力バッファに一時蓄積するステップと、出力デバイス
のプログラムを起動するステップとを含む処理を実行す
ることと、起動された前記出力デバイスのプログラムの
実行によって、前記出力バッファに一時蓄積された音波
形サンプルデータを前記所定の再生サンプリングクロッ
クに従って読み出し、外部に対して出力する処理を実行
することとを具備する。これによっても、ソフトウェア
音源のプログラムをアプリケーションプログラムにプラ
グインで組み込むだけで、コンピュータを使用した音波
形サンプルデータ生成を容易に行うことができるように
なり、かつ、格別の音源ボードが不要となる、という優
れた効果を奏する。また、どのようなコンピュータを使
用しても、そのハードウェア構成にかかわらず、プラグ
インしたソフトウェア音源プログラムに応じた均質の楽
音特性を持つ音波形サンプルデータを生成することがで
きるようになる。
【0014】上記方法において、前述と同様に、アプリ
ケーションプログラムに、ソフトウェア音源のプログラ
ムのみならず、自動演奏用シーケンサのプログラムをも
プラグインする処理を含んでいてもよい。この場合も、
ソフトウェア音源のプログラムと自動演奏用シーケンサ
のプログラムとは、別モジュールのソフトウェアである
か否かを問わない。また、上記方法において、前述と同
様に、アプリケーションプログラムにプラグインされた
ソフトウェア音源プログラムが重複して起動されること
を防止するための上述の対策を施すようにしてもよい。
【0015】この発明に係る音源システムにおいて、前
記コンピュータは、前記ソフトウェア音源のプログラム
とその他のプログラムを並行して実行する制御を行うメ
イン制御部を有しており、このメイン制御部は、所定時
間内の複数回の起動機会のうち、前記ソフトウェア音源
のプログラムを実際に実行してよい機会に起動命令を発
生する起動命令発生手段を具備しており、また、前記ソ
フトウェア音源のプログラムにおいて、前記起動命令に
応じて波形データ生成処理を実際に起動した機会だけ
で、通算として前記所定時間内に所定サンプル数分の波
形サンプルデータを生成させるように、波形サンプルデ
ータ生成処理を調整する調整処理手段を具備するように
してもよい。
【0016】これによれば、コンピュータのメイン制御
部において起動命令発生手段を設け、波形データ生成処
理を起動する機会を所定時間内に複数回設定し、この複
数回の機会のうち、前記ソフトウェア音源のプログラム
を実際に実行してよい機会にだけ起動命令を発生する。
これにより、メイン制御部は、他のプログラムの実行状
況との兼ね合いで、ソフトウェア音源のプログラムを実
際に実行してよい機会にだけ起動命令を発生することが
でき、ソフトウェア音源のプログラムとその他のプログ
ラムとを適切に時分割制御して並行して実行させること
ができる。
【0017】一方、ソフトウェア音源において、前記起
動命令に応じて波形サンプルデータ生成処理を実際に起
動した機会だけで、通算として前記所定時間内に所定サ
ンプル数分の波形サンプルデータを生成させるように、
波形サンプルデータ生成処理を調整する調整処理手段を
具備することにより、所定時間内に設定された複数回の
起動機会のうち何回かの機会で起動命令が発生されなか
ったとしても、起動命令に応じて波形データ生成処理を
実際に起動した機会だけを使用して、通算して上記所定
時間内に所定サンプル数分の音波形サンプルデータを生
成が完了するように制御される。すなわち、ソフトウェ
ア音源における1回の起動命令に基づく波形サンプルデ
ータ生成処理量がフレキシブルに可変制御され、所定時
間内における実際の起動命令発生回数がメイン制御部の
状況に依存する可変数であっても、通算して上記所定時
間内に所定サンプル数分の音波形サンプルデータを生成
が完了するように制御することができる。
【0018】従って、完全なマルチタスク機能を有しな
いOS上でソフトウェア音源による音波形データ生成処
理と他のソフトウェアの処理を並行して実行させる場合
でも、音波形データ生成処理及び他のソフトウェアの処
理に支障が生じないようにすることができる、という優
れた効果を奏する。すなわち、他のソフトウェアの処理
の影響によって音波形サンプルデータ生成処理の起動命
令発生回数が相対的に減ったとしても、通算して上記所
定時間内に所定サンプル数分の音波形サンプルデータを
生成が完了するように制御されるので、発音遅れ等の支
障が生じることがなくなる。逆に、音波形サンプルデー
タ生成処理を固定の時分割的処理時間で行わないことに
より、他のソフトウェアの処理の実行が音波形データ生
成処理によって阻害されてその処理が遅れるという問題
が起こらないようにすることができる。
【0019】一実施態様として、前記調整処理手段は、
各起動命令に対応する時点において、その時点までに生
成処理すべき波形サンプルデータの未処理量の関数とし
て、該時点の1起動命令に応じて生成すべき波形サンプ
ルデータ量を決定するものであってよく、その場合、前
記ソフトウェア音源は、該決定された波形サンプルデー
タ量分の波形サンプルデータを生成する処理を、該1起
動命令に応じて実行する。これによって、上記関数を適
切に定めることにより、生成処理すべき波形サンプルデ
ータの未処理量との兼ね合いで、1起動命令に応じて生
成すべき波形サンプルデータ量を適切に決定することが
でき、1起動命令に対応するソフトウェア音源の処理に
よってメイン制御部の作業が占有されることによって他
の処理の実行が阻害されることが起こる確率をできるだ
け低くするように制御することができるようになる。
【0020】
【発明の実施の形態】以下、添付図面を参照してこの発
明の実施の形態を詳細に説明しよう。図1は、この発明
に従う音源システムの一実施形態のソフトウェアシステ
ム構成例を概念的に示す図である。オペレーティングシ
ステム(OS)としては、例えばWindows95
(マイクロソフト社の商標)を使用する。なお、使用す
るアプリケーションソフトによっては別のOS、例えば
Windows3.1(マイクロソフト社の商標)を使
用してもよい。この種のOSには、音波形サンプルデー
タを受け付けるための波形入力用インターフェース(例
えば“waveAPI”)が用意されている。また、こ
の波形入力用インターフェース(“waveAPI”)
を介して受け取った波形サンプルデータを外部のハード
ウェアに対して出力する処理を行う波形出力用ドライバ
モジュール(以下「出力デバイス」とも言う)がインス
トールされている。
【0021】このOSに所定のアプリケーションソフト
APSがインストールされ、そのプログラム内容に応じ
た処理を行うことができる。この所定のアプリケーショ
ンソフトAPSは、任意のプラグインソフトウェアをプ
ラグインで組み込むことができる機能を有するものであ
り、一例として、WWWブラウザ(例えば“NetscapeNa
vigator”(商標))のようなインターネット検索ソウ
トウェアを使用してよい。この発明に従って、アプリケ
ーションソフトAPSに、所定のソフトウェア音源のプ
ログラムを含むプラグインソフトPISがプラグインさ
れる。このプラグインソフトPISは、ソフトウェア音
源のプログラムに限らず、自動演奏用のシーケンサプロ
グラムを含んでいてよい。また、前述の通り、自動演奏
用のシーケンサプログラムとソフトウェア音源のプログ
ラムは別々のソフトウェアモジュールを組み合わせたも
のであってもよいし、両者を一体的にプログラムしたも
のであってもよい。
【0022】通信ネットワークへコンピュータを接続す
るための入出力ハードウェア装置としてネットワークI
/O(入出力装置)が設けられ、また、OSにはネット
ワークドライバが組み込まれ、これによって、アプリケ
ーションソフトAPSが外部の通信ネットワークに接続
される。例えば、アプリケーションソフトAPSの実行
時において、外部の通信ネットワークを介して任意の音
楽の自動演奏データファイル(MIDIファイル)を取
り込み、これに基づきプラグインソフトPISを起動さ
せて、該自動演奏データファイルの曲を再生演奏するこ
とができる。すなわち、プラグインソフトPIS内のシ
ーケンサプログラムを実行することによってMIDIメ
ッセージを順次再生し、該プラグインソフトPIS内の
ソフト音源プログラムを実行することによって該再生さ
れたMIDIメッセージに対応する楽音の音波形サンプ
ルデータを生成する。プラグインソフトPIS内のソフ
ト音源プログラムの実行によって生成された波形サンプ
ルデータは、前記波形入力用インターフェース(“wa
veAPI”)を介してOSに渡され、波形出力用ドラ
イバ(すなわち「出力デバイス」)を介して外部の装置
例えばcodecハードウェア(すなわちディジタル/
アナログ変換器DAC)に対して出力される。波形出力
用ドライバ(すなわち「出力デバイス」)は、例えば、
ソフト音源プログラムの処理によって生成されてハード
ディスクのような記憶装置にバッファ記憶された波形デ
ータをダイレクトメモリアクセスコントローラ(DMA
C)を介して読み出して、例えばディジタル/アナログ
コンバータ(DAC)を含む外部ハードウェアに対して
出力する処理を行うソフトウェアからなっている。
【0023】なお、上記OSを具備したコンピュータに
対して、通信ネットワークを介して任意の上記アプリケ
ーションソフトAPSを転送し、インストールするよう
にしてもよい。また、通信ネットワークを介して任意の
上記プラグインソフトPISを転送し、これを該アプリ
ケーションソフトAPSにプラグインするようにしても
よい。プラグインされたソフトPISは、アプリケーシ
ョンソフトAPSからの命令を受け取るだけのみなら
ず、該ソフト音源プログラム又はシーケンサプログラム
中にイメージ情報が埋め込まれている場合、これをアプ
リケーションソフトAPSに与えてディスプレイ表示さ
せる。例えば、ソフト音源プログラム及びシーケンサプ
ログラムの動作を制御するための各種機能スイッチ類の
アイコン表示情報をアプリケーションソフトAPSに与
えてこれをディスプレイ表示させ、各種機能スイッチ類
の操作を可能にする。
【0024】図2は、通信ネットワークの一例を概念的
に示す図である。この図では、インターネットを介して
WWWサーバー、その他のサーバー、プロバイダーが接
続され、個別ユーザーのパソコン(パーソナルコンピュ
ータ)が公衆回線を介してプロバイダーに接続され、所
要のサーバーにLANを介して個別のパソコンが接続さ
れる、といった状態が例示されている。図2に示された
各パソコン内において、図1に示されたソフトウェアシ
ステムが構築される。
【0025】図3は、この発明に係るコンピュータソフ
トウェアを用いた音源システムの実施に使用するハード
ウェア構成例を示す全体ブロック図である。この図3
は、1つのパソコンのハードウェア構成例を示すもので
あり、すなわち、図1に示されたソフトウェアシステム
を駆動するためのハードウェア構成例を示している。こ
の音源システムでは、メイン制御部としてパーソナルコ
ンピュータのCPU(中央処理部)3を使用し、このC
PU3の制御の下でアプリケーションソフトAPSを実
行し、かつ該アプリケーションソフトAPSの実行中に
おいて起動されるソフトウェア音源プログラムによる波
形サンプルデータ生成処理とその他のプログラムの処理
を並行して実行する。なお、以下では「楽音生成処理」
という用語も使用するが、これは「波形サンプルデータ
生成処理」と実質的に同義であり、さらには「波形サン
プルデータ生成処理」のみならずエフェクト等の各種楽
音処理を含んでいてよい。なお、以下では、「波形デー
タ生成処理」という用語も使用するが、これは「波形サ
ンプルデータ生成処理」と同義である。すなわち、「波
形サンプルデータ」と「波形データ」は同義に用いるこ
とにする。
【0026】CPU3には、ネットワークI/O(入出
力装置)1,タイマ2,ROM(リードオンリーメモ
リ)4,RAM(ランダムアクセスメモリ)5,マウス
7,キーボード8,ディスプレイ9,ハードディスク装
置10,DMAC(ダイレクトメモリアクセスコントロ
ーラ)11,サウンドI/O(入出力装置)12,サン
プリングクロック発生回路14,外部メモリドライブ1
6が、データ及びアドレスバス6を介して接続されてい
る。DMAC11は、楽音生成処理の実行によって生成
されてRAM5内の出力バッファに書き込まれた楽音デ
ータを、サウンドI/O12からの再生サンプリングク
ロックに同期して1サンプルずつダイレクトメモリアク
セス方式で出力バッファから読み出してサウンドI/O
12に送る処理(再生処理)を実行する。
【0027】サウンドI/O12は、CODECと呼ば
れるサウンド入出力装置であって、その内部にはディジ
タル/アナログ変換器(DAC)、アナログ/ディジタ
ル変換器(ADC)、ADCに接続された入力用のFI
FO(先入れ先出しバッファ)、DACに接続された出
力用のFIFOを含んでいる。このサウンドI/O12
内の前記ADCには外部オーディオ信号入力端子15か
らアナログオーディオ信号が入力され、サンプリングク
ロック発生回路14から発生される所定の周波数(例え
ば48kHz)のサンプリングクロックFsに応じてこ
れをA/D変換し、このA/D変換したオーディオ信号
を前記入力用のFIFOに取り込む。また、前記DMA
C11の制御によって前記出力用のFIFOに書き込ま
れた波形サンプルデータを前記サンプリングクロックF
sに従って該出力用のFIFOから読み出し、前記DA
Cに与えてD/A変換する。そして、前記入力用FIF
Oにデータが存在するとき、または、前記出力用FIF
Oに空きがあるとき、データ処理を要求する信号をDM
AC11に出力するように動作する。上記DACでアナ
ログ変換された音波形サンプルデータは、サウンドシス
テム13に送られて音響的に発音される。
【0028】ハードディスク装置10内のハードディス
クには、OS(ここでは、マイクロソフト社製のWin
dows3.1(商標)を使用するものとする)やユー
ティリティソフトといったソフトウェアの他に、アプリ
ケーションソフトAPSと、そこにプラグインされたプ
ラグインソフトPIS(ソフト音源プログラムとシーケ
ンサプログラムを含む)が格納され、更に、複数種類の
音色についての1または複数周期分の波形サンプルデー
タ群を予め記憶した波形データメモリの領域を含んでい
る。なお、各種プログラムをハードディスク装置10に
記憶してもよいし、あるいはRAM5又はROM4に記
憶してもよい。なお、以下の説明では、ハードディスク
装置10内の波形データメモリに予め記憶されている
「波形データ」群と、ソフトウェア音源プログラムの処
理によってこの記憶波形データを利用して(読み出し
て)生成する「波形サンプルデータ」とを区別するため
に、ソフトウェア音源プログラムの処理によって生成す
る「波形サンプルデータ」を「楽音データ」ということ
にする。外部メモリドライブ16は、フロッピーディス
クあるいはCD−ROMやMOなどの外部記録媒体17
を着脱自在に装着して、該外部記録媒体17に対するデ
ータの読み書きを行うものである。外部記録媒体17
は、アプリケーションソフトAPSやプラグインソフト
PISのプログラムを格納するために使用してもよい
し、波形データ等を格納するために使用してもよい。
【0029】図17は、この発明に係るコンピュータソ
フトウェアを用いた音源システムにおけるアプリケーシ
ョンソフトAPSとプラグインソフトPISと間の情報
のやりとり例を簡単に示す説明図である。図に沿って処
理手順の概略を説明すると、まず、アプリケーションソ
フトAPSの実行中に「演奏データ有り」と判定される
と、音源用のプラグインソフトPIS(本例では、自動
演奏用シーケンサプログラムとソフト音源プログラムの
双方を含んでいるとして説明する)に対して「初期化指
示」を与え、該プラグインソフトPISを起動する。例
えば、アプリケーションソフトAPSが、インターネッ
トのブラウザである場合、MIDIファイルの有るペー
ジを開けたとき、そのMIDIファイルがユーザのパソ
コンに転送されてくる。このとき、実行中のアプリケー
ションソフトAPSでは上記のように「演奏データ有
り」と判定し、音源用のプラグインソフトPISを起動
する。
【0030】音源用プラグインソフトPISでは、アプ
リケーションソフトAPSから与えられる上記「初期化
指示」に応じて所定の「初期化」処理を行い、該プラグ
インソフトPISを起動する。アプリケーションソフト
APSでは、プラグインソフトPISにより「初期化」
処理が行われたことを確認すると、「OPEN指示」を
プラグインソフトPISに与える。プラグインソフトP
ISでは、上記「OPEN指示」に応じて所定のイメー
ジ情報をアプリケーションソフトAPSに対して与え、
アプリケーション画面中にそのイメージ情報に対応する
「コントロールパネル画面」表示を行うことを指示す
る。これに応じて、アプリケーションソフトAPSで
は、ディスプレイ9で表示しているアプリケーション画
面中においてプラグインソフトPISから指示されたイ
メージ情報に対応する「コントロールパネル画面」を表
示する。
【0031】図18はこの「コントロールパネル画面」
の表示例を示す。この「コントロールパネル画面」で
は、シーケンサ用の各種コントロールボタンC1〜C9
と所定のロゴC10が表示される。各コントロールボタ
ンC1〜C9は、マウス7のクリックによってオンされ
る。再生ボタンC1は再生演奏開始指示を行うためのも
の、ポーズボタンC2は演奏中の曲の一時停止を指示す
るためのもの、停止ボタンC3は演奏中の曲の停止を指
示するためのもの、テンポダウンボタンC4はクリック
する毎に演奏中のテンポをダウンするためのもの、テン
ポリセットボタンC5はオリジナルテンポに戻すための
もの、テンポアップボタンC6はクリックする毎に演奏
中のテンポをアップするためのもの、トランスポーズダ
ウンボタンC7はクリックする毎に演奏キーを半音下げ
るためのもの、トランスポーズリセットボタンC8はオ
リジナルキーに戻すためのもの、トランスポーズアップ
ボタンC9はクリックする毎に演奏キーを半音上げるた
めのもの、である。なお、ボタンC4,C6,C7,C
9でアップ又はダウンの操作を行うと、所定色(例えば
緑)でボタンが点灯することにより、テンポ又はキーの
変更操作がなされたことを報知する。また、ロゴC10
のエリアをクリックすることにより、ポップアップメニ
ューが表示され、上記各コントロールボタンと同等の機
能の操作が行えるようになっている。なお、このポップ
アップメニューでは、シーケンサの音源として、内部の
ソフト音源を使用するか、またはMIDI Manag
erを経由して外部の適宜のMIDI音源を使用するか
の選択も行える。
【0032】図17に戻り、アプリケーションソフトA
PIでは、「コントロールパネル画面」の表示処理の
後、「STREAM開始」を指示する。プラグインソフ
トPISでは、この「STREAM開始」指示を受け
て、「データ受信開始」状態となる。以後、アプリケー
ションソフトAPIの側から、上記MIDIファイルの
データ(つまりMIDIメッセージ)を次々に送信し、
プラグインソフトPISでは、これを次々に受信してバ
ッファ記憶する。MIDIファイルの全データを送受信
し終えると、「再生開始指示」がアプリケーションソフ
トAPIの側から送信され、プラグインソフトPISの
側では上記MIDIファイルの自動演奏再生処理を開始
する。やがて「再生終了指示」が与えられると、自動演
奏再生処理が終了する。なお、クライアントやサーバー
の側で、MIDIファイルと共に所定の制御情報を送信
することにより、該MIDIファイルを取り込んだ側で
の自動演奏の再生開始及び停止を自動制御するようにす
ることができる。すなわち、MIDIファイルを受信し
たら速やかに自動演奏を再生開始するように制御情報を
組み込むこともできるし、若しくは再生ボタンC1のク
リックを待って自動演奏を再生開始するように制御情報
を組み込むこともできる。また、MIDIファイルの再
生が1回終わっても、停止ボタンC3がクリックされる
まで同じMIDIファイルを繰り返し再生演奏するよう
に制御情報を組み込むこともできるし、若しくはMID
Iファイルの再生が1回終わったらその自動演奏を自動
的に停止するように制御情報を組み込むこともできる。
【0033】次に、以下で詳細に説明しようとするCP
U3による起動制御に基づく、ソフトウェア音源プログ
ラムによる楽音生成処理の一例の概要を、図4を参照し
て説明する。プラグインソフトPIS内のソフトウェア
音源プログラムは、CPU3の制御の下で、基本的に
は、所定の時間長の区間(フレームと呼ぶ)毎に設定さ
れる起動機会に応じて起動されて、それぞれその直前の
フレーム内に供給されたMIDIメッセージに基づく楽
音生成処理を、各制御パラメータに従って実行する(例
えば、図4に示すように、時刻T1からT2までのフレ
ーム内に供給されたMIDIメッセージに基づく楽音生
成処理を、時刻T2からT3までのフレームで実行す
る)。楽音生成処理の一例として、波形メモリ方式の楽
音生成処理では、まず、発音を割り当てられている各発
音チャンネル毎に、当該発音チャンネル用の音源レジス
タに格納された制御パラメータに従うピッチでRAM5
から波形データを読み出し、その波形データに、音色制
御(フィルタ演算)と、音量制御(音量エンベロープデ
ータの乗算)と、ピッチ,音色または音量等の変調制御
とを制御パラメータに従って施すことにより、当該発音
チャンネルについての所定数サンプル分の楽音データを
生成する。そして、各発音チャンネルについての楽音デ
ータを累算し、累算した楽音データを(あるいは、累算
した楽音データにエフェクトを付加し、その楽音データ
を)、RAM5内の出力バッファに書き込む。そして、
その出力バッファの再生を「出力デバイス」に予約す
る。この出力バッファの再生を「出力デバイス」に予約
することが、生成した楽音データをソフト音源からOS
レベルの波形入力用インターフェース(“wave A
PI”)に与えることに相当する。
【0034】「出力デバイス」は、各フレーム毎に、そ
れぞれその直前のフレームで「音源部」によって再生予
約された出力バッファから1サンプルずつ楽音データを
読み出してサウンドI/O12に送る(例えば、図4に
示すように、時刻T2からT3までのフレームで生成さ
れた楽音データを書き込まれて再生予約された出力バッ
ファから、時刻T3からT4までのフレームで楽音デー
タを読み出す)。こうしたソフトウェアのうち、アプリ
ケーションソフトAPSのプログラムの起動と、プラグ
インソフトPIS内のシーケンサプログラムの実行によ
って発生されたMIDIメッセージに基づくMIDI処
理の起動は、リアルタイムに行なわれる。また、「出力
デバイス」は、DMAC11による割込み処理として強
制的に起動されるので、時間的な遅れが生じることはな
い。これに対し、波形サンプルデータそのものの生成処
理(楽音生成処理)の起動は、CPU3自身の内部割込
みによる起動命令によって行なわれるので、完全なマル
チタスク機能を有しないOS上でこのソフトウェアを走
らせた場合には、他の処理の影響によって楽音生成処理
の起動が遅れることにより、発音に支障が生じることが
ある。そこで、この音源システムでは、次のような対策
を講じることにより、発音に支障が生じる事態を防止し
ている。
【0035】〔対策1〕楽音生成処理を起動させる内部
割込み信号(すなわち起動命令)を発生するための機会
を、各フレーム内でそれぞれ複数回設定し(例えばタイ
マによって定期的に設定する)、ソフト音源で楽音生成
処理を実行してよい機会に対応して内部割込み信号(す
なわち起動命令)を実際に発生する。内部割込み信号
(すなわち起動命令)に基づく各起動毎に、それぞれ上
記所定数サンプル分(1出力バッファ分)の楽音データ
のうちの一部の楽音データを生成することにより、通算
として当該フレーム内に1出力バッファ分の楽音データ
が生成されるように調整を行なう。そして、いずれかの
機会で、内部割込み信号(すなわち起動命令)が発生し
なかったために「音源部」が起動せず、その結果楽音デ
ータが生成されなかった場合には、その未生成の楽音デ
ータを、当該フレーム内のその後の内部割込み信号が発
生した機会で併せて生成することにより、当該フレーム
内での1出力バッファ分の楽音データの生成が確保され
るように調整を行なう。
【0036】このように、楽音生成処理を起動させる内
部割込み信号(起動命令)を発生する機会を各フレーム
毎に複数回設け、この複数回の機会のうち何回か内部割
込み信号(起動命令)が発生しなくても、内部割込み信
号(起動命令)が発生した機会だけで、当該フレーム内
に1出力バッファ分の楽音データの生成を完了するよう
にしたので、発音に支障が生じる事態が防止される。図
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として示している)。この図5のような
処理方式は、未生成分がこれを直ちに一括して生成する
ので、楽音生成遅れが起こりにくい、という利点を持
つ。
【0038】これに対し、図6の例では、内部割込み信
号が発生しなかった機会での未生成の楽音データを、そ
の後に内部割込み信号が発生した複数の機会で分散して
生成するようにしている。すなわち、内部割込み信号が
発生しなかった2,3回目の機会(図の10,20ミリ
秒目)で未生成となった楽音データを、その後に内部割
込み信号が発生した4,5回目の機会(図の30及び4
0ミリ秒目)での処理で、それらの機会での楽音データ
と併せてそれぞれ分散して生成している(図ではそれぞ
れ2,3と4,5として示している)。但し、最後の1
0回目の機会(図の90ミリ秒目)では、当該フレーム
内での1出力バッファ分の楽音データの生成を確保する
ために、内部割込み信号が発生しなかった7,8,9回
目の機会(図の60,70,80ミリ秒目)で未生成と
なった楽音データを全て生成している。この図6のよう
な処理方式は、未生成量が多い場合に、これを適切に分
散した回数で処理するので、1回分の処理時間が多すぎ
ないように制御でき、CPUの有効活用に有利である。
【0039】図6では、未生成の楽音データを、1回の
起動の機会で生成する量の楽音データに分散してその後
に内部割込み信号が発生した機会で生成しているが、こ
れに限らず、未生成の楽音データを、適宜の量の楽音デ
ータ(例えば、1回の起動の機会で生成する量の楽音デ
ータや、1回の起動の機会で生成する量の1.5倍の楽
音データや、1回の起動の機会で生成する量の半分の楽
音データ)に分散してその後の機会で生成するようにし
てもよい。また、更に別の例として、内部割込み信号が
発生しなかった機会での未生成の楽音データを、当該フ
レーム内の最後の機会(図5及び図6では10回目の機
会)までに徐々に生成するようにしてもよい。
【0040】図16は、上記と同様に、〔対策1〕の一
例を示す図であるが、1回の内部割込み信号(起動命
令)に対応して生成される楽音データの量が、図5や図
6に示したように1出力バッファ分の楽音データの10
分の1の量の整数倍になるとは限らず、該単位に対する
端数を持った量になることがありうる例を示すものであ
る。この図16の例では、各内部割込み信号(起動命
令)に対応する時点において、その時点までに生成処理
すべき楽音データの未処理量の関数として、該時点の1
回の内部割込み信号(起動命令)に応じて生成すべき楽
音データ量を決定するようにしており、図16は、その
ようにして決定される楽音データの量の一例を内部割込
み信号の発生との関係で示す図である。同図では、或る
フレームにおいて内部割込み信号が発生した1回目の機
会(図の0ミリ秒目)に、当該フレームにおける1出力
バッファ分の楽音データの10分の1の量の楽音データ
を生成している。そして、内部割込み信号が発生しなか
った2及び3回目の機会(図の10及び20ミリ秒目)
の後、内部割込み信号が発生した4回目の機会(図の3
0ミリ秒目)に、未生成の楽音データのうち、1出力バ
ッファ分の楽音データの10分の1.6の量の楽音デー
タを生成している(したがってこの機会までに通算とし
て当該フレームにおける1出力バッファ分の楽音データ
の10分の2.6の量の楽音データを生成したことにな
り、図ではこのことを2.6と示している)。
【0041】続いて、内部割込み信号が発生した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と示している)。
【0042】そして次のフレームにおいて、内部割込み
信号が発生した1回目の機会(図の100ミリ秒目)
に、直前のフレームにおける残りの未生成の楽音データ
である1出力バッファ分の楽音データの10分の1.2
の量の楽音データと、今回のフレームにおける1出力バ
ッファ分の楽音データの10分の0.3の量の楽音デー
タとを生成している(図ではこのことを10.3と示し
ている)。この段階で、1出力バッファ分を超える楽音
データが生成されることになるので、そのうち1出力バ
ッファ分の楽音データ量に相当する10分の10の量の
楽音データについては、生成済みの楽音データ群から取
り出して「出力デバイス」に供給して再生予約するもの
とする。従って、生成中の楽音データとして、1出力バ
ッファ分の楽音データの10分の0.3の量の楽音デー
タが残されることになる。
【0043】続いて、内部割込み信号が発生した2回目
の機会(図の110ミリ秒目)に、今回のフレームにお
ける1出力バッファ分の楽音データの10分の1.4の
量の楽音データを生成し(したがってこの機会までに通
算として今回のフレームにおける1出力バッファ分の楽
音データの10分の1.7の量の楽音データを生成した
ことになり、図ではこのことを1.7と示している)、
以下同様にして、内部割込み信号が発生した機会毎に、
楽音データを生成していく。なお、追って詳しく説明す
る通り、決定された生成すべき楽音データ量が所定の上
限値SRmaxを超える場合は、該上限値SRmaxの
範囲内に収まるように制御される。
【0044】このように、図16の例では、ソフトタイ
マによる内部割込み信号が発生する毎に、それまでに未
生成となっている楽音データの量の関数として、楽音生
成処理に要する時間があまり長くならないような一定範
囲内で楽音データの生成量を決定し、その量だけ楽音デ
ータを生成する処理を実行する。内部割込み信号が発生
する毎にこうした処理が実行されることにより、未生成
の楽音データが徐々に生成されていくことになる。すな
わち、この方式は、内部割込み信号の発生を起動要因と
して楽音生成処理を実行する点では、図5,図6の例と
同じであるから、これらの例と同様の効果を期待するこ
とができる。他方、未生成の楽音データを一度に全て生
成せずに所定の関数に従って徐々に生成していく点で、
それらとは異なっており、その点で特有の効果を有す
る。すなわち、CPU3がソフトウェア音源プログラム
による楽音生成処理のために長時間連続して独占される
ことはないので、CPU3において他のソフトウェアの
プログラムを並行して実行する場合や、ソフトウェア音
源プログラムにおける優先度の低い他の処理を行なう要
求が生じた場合に、それらの処理に比較的速やかに移行
させることができるので、資源の効率的な利用が図れ
る。
【0045】すなわち、例えば図5のような方式では、
未生成の楽音データの生成を最も早期に行なうことがで
きるという点では優れているが、内部割込み信号が何回
も連続して発生しなかったような場合には、その直後に
内部割込み信号が発生した機会での楽音データの生成量
が大きくなってしまう。このように生成量が大きくなる
と、一回の起動でソフトウェア音源プログラムによる楽
音生成処理を行なうためにCPU3が費やさなければな
らない時間が長くなり、したがってCPU3がソフトウ
ェア音源プログラムによる楽音生成処理の実行のために
長時間連続して独占されるようになるので、その実行中
にソフトウェア音源プログラムによる楽音生成処理より
も優先順位の低い処理の起動要因が発生しても、CPU
3がそれらの処理をなかなか実行できなくなってしまう
ことがある。また、そのように1回分の楽音データ生成
量が大きくなると、演算可能時間が残り少ない場合に
は、楽音データを生成可能な発音チャンネル数が極端に
減少してしまうことがある。これに対して、図16のよ
うな方式を採用すれば、それらの問題点を解決すること
ができる。従って、以下で詳細に説明する実施例では、
図16のような方式に従って処理する例について説明す
ることにする。
【0046】ところで、内部割込み信号が発生しなかっ
た機会が多くなると、その後の内部割込み信号が発生し
た機会で、楽音生成処理を割り当てられている全ての発
音チャンネルについて楽音データを生成しきれなくなる
場合がある。そこで、上記〔対策1〕において、そのよ
うな機会では、楽音データを生成する発音チャンネル数
を減少させることにより、楽音データの生成を確保する
ようにすることが望ましい。楽音データを生成する発音
チャンネル数を減少させなければならない頻度は、図5
の例の場合が最も高く、図6の例の場合や、未生成の楽
音データを当該フレーム内の最後の機会までに徐々に生
成する場合、あるいは図16の例の場合には、図5の例
の場合よりも低くなる(但し、未生成の楽音データの生
成を早期に行なうという観点からは、図5の例が最も望
ましい)。
【0047】〔対策2〕各発音チャンネル用の音源レジ
スタとして、発音チャンネルが未使用である際に割り当
てた楽音生成処理を制御するパラメータを格納するため
の第1の音源レジスタ(表の音源レジスタ)と、当該発
音チャンネル使用中となった際に割り当てた新たな楽音
生成処理を制御するパラメータを格納するための第2の
音源レジスタ(裏の音源レジスタ)とを設ける。そし
て、当該発音チャンネルで用いるべき音源レジスタとし
て、新たな楽音生成処理を開始すべきタイミングまで
は、表の音源レジスタを選択し、該タイミング以降は、
表の音源レジスタに替えて裏の音源レジスタを選択す
る。
【0048】これにより、現在使用中の発音チャンネル
に新たな楽音生成処理を割り当てた場合でも、表の音源
レジスタを用いて当該発音チャンネルでの現在の楽音生
成処理の実行を確保しつつ、当該発音チャンネルでの新
たな楽音生成処理を直ちに裏の音源レジスタに用意する
ことができる。したがって、楽音生成処理の用意の遅れ
を原因とする楽音データの生成の遅れを防止することが
できる。
【0049】〔対策3〕RAM5内に複数の出力バッフ
ァの領域を設けておき、楽音生成処理の起動に先行し
て、そのうちの一部の出力バッファの再生を「出力デバ
イス」に予約しておく。これにより、他の処理の影響に
より、各フレームで起動すべき楽音生成処理が当該フレ
ーム内に起動しなくても、先行して再生予約した出力バ
ッファの再生処理が全て完了するまでに楽音生成処理が
起動して出力バッファの再生が予約されれば、楽音の再
生に音切れが生じなくなる。したがって、音切れを生じ
させないための楽音生成処理の起動時間の遅れの許容範
囲が拡がる。
【0050】図7は、この〔対策3〕の一例を示す図で
ある。この例では、楽音生成処理の起動に先行して、4
つの出力バッファの再生を「出力デバイス」に予約して
いる。そして、フレームF1の開始時には、それより前
のフレームで1出力バッファ分の再生処理が完了したこ
とによって予約数が3になっているが、フレームF1の
途中に、1出力バッファ分の楽音データの生成が完了し
てその出力バッファが再生予約されたために、予約数が
4に増えている。そして、フレームF1の終了時に、次
の1出力バッファ分の再生処理が完了したことによって
予約数が3に減るが、フレームF2の途中に、次の1出
力バッファ分の楽音データの生成が完了してその出力バ
ッファが再生予約されたために、予約数が4に増えてい
る。
【0051】そしてその後、楽音生成処理の起動の遅れ
により楽音データが生成されないために、フレームF4
の終了時には予約数が1に減っている。そして、フレー
ムF5で、再生予約済の最後の出力バッファ(フレーム
F2の途中に再生予約した出力バッファ)が読み出され
ている(図では、この再生予約と読み出しとの関係を明
らかにするために、フレームF2の途中に再生予約の発
生を太い矢印で示し、フレームF5を斜線で網かけして
いる)が、フレームF5の途中に、1出力バッファ分の
楽音データの生成が完了してその出力バッファが再生予
約されたために、予約数が2に増えている。そしてその
後も、再生処理の完了と再生予約の発生とに応じて予約
数が増減している。
【0052】このように、各フレームで起動すべき楽音
生成処理が当該フレーム内に起動しなくても、先行して
再生予約した4つの出力バッファの再生処理が全て完了
するまでに楽音生成処理が起動して出力バッファの再生
が予約されれば、楽音の再生に遅れが生じなくなる。
尚、予約数が4であるときにフレームの途中で次の1出
力バッファ分の楽音データの生成が完了した場合には、
当該フレームでの再生処理の完了を待って出力バッファ
の再生予約を行なうことにより、予約数が4を越えない
ようにするものとする。
【0053】この〔対策3〕を実施するためにRAM5
内に設けておくべき出力バッファの数は、楽音生成処理
の起動に先行して再生予約する出力バッファの数と、楽
音生成処理で生成を完了した楽音データを書き込むため
の1つの出力バッファと、楽音生成処理で生成した楽音
データの量が1出力バッファ分を越えた場合のための予
備の出力バッファとの合計(図7の例では、6つ)にな
る。尤も、楽音生成処理において、生成した楽音データ
の量が1出力バッファ分を越える場合には生成をストッ
プするようにすれば、予備の出力バッファは不要になる
(したがって、図7の例では、5つで足りるようにな
る)。
【0054】〔対策4〕所定時間内に「出力デバイス」
に出力バッファが再生予約されていない場合、そのタイ
ミングで生成完了しているはずの楽音データの生成を打
ち切り、そのタイミングで生成開始する楽音データから
生成動作を新たに開始する。これにより、再生予約が間
に合わず、一時的に楽音が乱れた場合でも、すぐに安定
した楽音生成動作に復帰し、ノイズを最小限に抑えるこ
とができる。例えば、前述の〔対策3〕の図7の例で
は、先行して「出力デバイス」に再生予約した出力バッ
ファの再生処理が全て完了するまでに、楽音生成処理で
生成を完了した楽音データを書き込んだ出力バッファが
再生予約されている。しかし、他の処理の影響により楽
音生成処理の起動が大幅に遅れた場合には、先行して再
生予約した出力バッファの再生処理が全て完了した区間
内においても、楽音生成処理で生成を完了した楽音デー
タを書き込んだ出力バッファがまだ再生予約されていな
いこと(予約数が0になること)も起こりうる。そのよ
うな場合でも、〔対策3〕及び〔対策4〕を併せて実施
すれば、予約数が0になった場合、そのタイミングで生
成完了しているはずの楽音データの生成が打ち切られ、
「出力デバイス」に出力バッファの再生の先行予約を再
び行なった後、そのタイミングで生成開始する楽音デー
タから生成動作が新たに開始する。
【0055】次に、以上のような対策の実施を含んだこ
のコンピュータソフトウェアを用いた音源システムの実
施例を、図8以下を参照して説明する。まず、始めに、
図1のシステム構成に対応する実施例について説明す
る。図8は、CPU3によって実行される音源用プラグ
インソフトPISのメインルーチンを示すフローチャー
トである。この例では、音源用プラグインソフトPIS
として、ソフトウェア音源プログラムと自動演奏用シー
ケンサプログラムとを一体的に組み込んでなるものを使
用している。一般にプラグインソフトPISのメインル
ーチンがスタートする条件は、アプリケーションソフト
APSの実行中において、その処理データ中に該アプリ
ケーションソフトAPSでは解釈不能のデータがあった
場合、該アプリケーションソフトAPSのプラグインに
登録してあるそのデータを処理するソフトがあるかどう
かをサーチし、そのプラグインソフトを起動(RAMに
ロード)して該ロードしたプラグインソフトに処理を任
せることによりスタートする。従って、図8の音源用プ
ラグインソフトPISのメインルーチンがスタートする
条件は、これを組み込んだアプリケーションソフトAP
Sの実行中において、スタンダードMIDIファイルの
ような音楽情報が埋め込まれたデータを処理する段階に
至ったときである。すなわち、アプリケーションソフト
APSからの問合せに応じて、音源用プラグインソフト
PISがロードされて、起動(スタート)する。
【0056】音源用プラグインソフトPISがスタート
すると、まず、「初期設定」(ステップS1)を実行す
る。「初期設定」では、図9に示すように、最初に、各
発音チャンネル用の音源レジスタ(〔対策2〕として説
明したように、表の音源レジスタと裏の音源レジスタと
が設けられている)内のデータと、RAM5のワークエ
リア(このワークエリア内には、〔対策3〕として説明
したように、複数の出力バッファの領域が含まれてい
る)内のデータとを全てクリアする(ステップS2
1)。続いて、ハードディスク装置10内のハードディ
スクに記録されている所要の音色の波形データをRAM
5にロードする(ステップS22)。続いて、「出力デ
バイス」を初期設定し(ステップS23)、〔対策3〕
として説明したように、楽音生成処理の起動に先行し
て、データをクリアされた幾つか(ここでは、図7の例
と同じく4つとする)の出力バッファの再生を「出力デ
バイス」に予約する(ステップS24)。続いて、サウ
ンドI/O12から再生サンプリングクロックFsを発
生させてDMAC11に与えることにより「出力デバイ
ス」を起動するとともに、楽音生成処理を起動する内部
割込み信号(起動命令)を発生するためのソフトタイマ
(例えば、ハード的に構成したタイマ2をCPU3が参
照することによって内部割込み信号を発生するようにし
たもの)をスタートさせる(ステップS25)。
【0057】ソフトタイマは、この内部割込み信号(起
動命令)を、前記〔対策1〕として説明したように各フ
レーム毎にそれぞれ複数の機会で発生可能である(ここ
では、図5,図6,図16の例と同じく、100ミリ秒
の長さのフレーム内に、10ミリ秒毎に合計10回の機
会において発生することが可能であるものとする)。な
お、前述の通り、ソフトタイマによる内部割込み信号
(起動命令)は、各起動機会で(つまり10ミリ秒毎
に)必ず発生できるとは限らず、起動機会が到来して
も、CPU3がOSの処理や他のソフトウェアの処理に
占有されているときは、ソフトウェア音源プログラムに
対する内部割込み信号(起動命令)をかけることができ
ない。そのための起動命令発生手段の構成としては、例
えば、タイマ2で1回の起動機会に対応する所定時間
(例えば10ミリ秒)を計時する毎にフラグを立てるよ
うにし、CPU3がソフト音源の処理を実行してもよい
状態のとき、このフラグの有無をチェックするように
し、未処理のフラグが立っていれば内部割込み信号(起
動命令)を発生するようにすると共にそのフラグを消去
するようにする。従って、1回の起動機会に対応する所
定時間(例えば10ミリ秒)の間に、CPU3がソフト
音源の処理をする余裕がある場合は、1回の内部割込み
信号(起動命令)が発生される。しかし、1回の起動機
会に対応する所定時間(例えば10ミリ秒)の間に、C
PU3がソフト音源の処理をする余裕がない場合は、フ
ラグチェックに行かないので、内部割込み信号(起動命
令)が発生されることなく、所定時間が経過してしま
い、次のフラグが立ってしまう。つまり、前のフラグに
対応して内部割込み信号(起動命令)が発生されること
がない。こうして、内部割込み信号(起動命令)は、図
5,図6,図16に例示されるように、各起動機会毎に
必ず発生できるとは限らないものとなる。また、上記か
ら理解できるように、内部割込み信号(起動命令)がい
くつかの各起動機会で連続して発生される場合でも、そ
の発生時間間隔は正確な上記所定時間(例えば10ミリ
秒)とはならず、10ミリ秒の前後で適宜の変動があ
る。すなわち、内部割込み信号(起動命令)の微視的な
発生タイミングはCPU3の処理状態(いつタイマフラ
グを見に行くか)に依存しているからである。
【0058】図8に戻り、初期設定を終えると、前記
「コントロールパネル画面」(図18)をディスプレイ
9に表示させるための所要の準備処理及びその他必要な
デイスプレイ表示準備処理を行う(ステップS2)。す
なわち、「コントロールパネル画面」のイメージ情報を
アプリケーションソフトAPSに与える。アプリケーシ
ョンソフトAPSでは、前述の通り、イメージ情報を受
け取って「コントロールパネル画面」(図18)をディ
スプレイ9に表示させる。尚、楽音生成処理の起動に先
行して「初期設定」(図9)で出力バッファを「出力デ
バイス」に再生予約しているので、「出力デバイス」で
は、この先行予約しした4つの出力バッファについての
再生処理が完了してから、その後に再生予約した出力バ
ッファについての再生処理を実行する。したがって、最
初の音発生を指示するMIDIメッセージが発生されて
から実際に楽音が再生発音されるまでの時間が、この先
行予約した出力バッファの数に等しい数のフレーム分
(図7の例では4フレーム分)だけ長くなる(遅れる)
ことになる。そこで、ディスプレイ9では、MIDIメ
ッセージの発生に基づく何らかの表示を行なう場合に
は、その表示のタイミングをこのフレーム分だけ後にず
らすようにすることが望ましい。
【0059】ステップS2に続くステップS3では、下
記の各起動要因の発生をチェックする。 起動要因:アプリケーションソフトAPSから1シー
ケンス分のMIDIファイルのデータが転送されてきた
こと。 起動要因:MIDIファイルの再生処理(自動演奏シ
ーケンス処理)によってMIDIイベントタイミングが
到来したこと。 起動要因:ソフトタイマにより、楽音生成処理を起動
する内部割込み信号(起動命令)が発生したこと。(こ
の発生タイミングは、上記のように、所定時間すなわち
10ミリ秒毎に割り込みを入れることを目標としてはい
るが、必ずしもその通りに正確に発生されるものではな
い。) 起動要因:「出力デバイス」からの処理要求が検出さ
れたこと。 起動要因:その他の処理要求が検出されたこと(特
に、「コントロールパネル画面」のオン操作等に基づ
き、若しくはアプリケーションソフト処理過程で自動的
に、前述の自動的シーケンス再生処理用の各種コマンド
がアプリケーションソフトAPSから与えられたこ
と)。 起動要因:このプラグインソフトPISの終了要求が
検出されたこと(アプリケーションソフトAPSの実行
状態がMIDIファイル若しくはMIDメッセージを処
理しない状態となったとき、例えばMIDIファイルの
埋め込まれていないページに切り替わったとき、音源用
プラグインソフトPISの終了要求がアプリケーション
ソフトAPSから出される。)
【0060】続いて、上記起動要因のいずれかが発生し
たか否かを判断する(ステップS4)。ノーであれば、
ステップS3に戻り、いずれかの起動要因が発生するま
でステップS3及びS4の処理を繰り返す。そしていず
れかの起動要因が発生すると、ステップS4でイエスと
なってステップS5に進む。ステップS5では、どの起
動要因が発生したのかを判定する。以後、発生した起動
要因に応じた処理を行なう。ここで、各起動要因の処理
優先度は、>,>,>であり、起動要因
の優先度が最も高い。例えば、起動要因とが同時に
発生した場合、起動要因に対応する処理が先に行われ
る。
【0061】ステップS5において、起動要因が発生
したことが判定されると、ステップS16(データ受信
処理)に行き、アプリケーションソフトAPSから順次
転送されてくる1シーケンス分のMIDIファイルの各
データをRAM5にバッファ記憶する。次のステップS
17(受信表示)では、MIDIファイルの受信を行っ
たことを表示する。ステップS5において、起動要因
が発生したことが判定されると、ステップS6に行き、
MIDI処理を実行する。それから、ステップS7に行
き、所定の状態表示(例えば、どのMIDIチャンネル
についてのMIDIメッセージが発生されたかの表示
等)を、パネル上に行なう。そして、ステップS3に戻
り、ステップS3以下の処理を繰り返す。
【0062】ステップS6で実行するMIDI処理は、
バッファ記憶したMIDIファイルから、到来したイベ
ントタイミングに対応するMIDIメッセージデータを
読み出すことと読み出したMIDIメッセージに対応す
る処理を行うことを含む。このMIDI処理には、読み
出したMIDIメッセージが次のイベントまでの時間を
示すデュレーションデータである場合にそのデュレーシ
ョンデータをデュレーションタイマにセットする処理
と、読み出したMIDIメッセージがノートオンイベン
トを含む場合に行うノートオンイベント処理や、読み出
したMIDIメッセージがノートオフイベントを含む場
合に行うノートオフイベント処理等が含まれる。デュレ
ーションデータがセットされたデュレーションタイマ
は、図示しないテンポクロック割込み処理によって規則
的に割込みカウントされる。セットしたデュレーション
データに対応する時間が到来したとき、このテンポクロ
ック割込み処理から図8のメインルーチンの起動要因チ
ェックステップS3に対して、MIDIイベントタイミ
ングの到来を知らせる。これ基づき起動要因が発生し
たことが検出される。この処理が自動演奏用シーケンサ
プログラムの処理に該当している。
【0063】図10は、MIDI処理におけるノートオ
ンイベント処理の一例を示すフローチャートである。最
初に、ノートナンバ,ベロシティ,ノートオンを入力し
たMIDIチャンネルを受信するパートのパート番号,
MIDIメッセージの入力時刻を示す時間軸上でノート
オンイベントが発生した時刻を示すデータを、それぞれ
所定のレジスタNN,VEL,p,TMに格納する(ス
テップS31)。続いて、当該ノートオンに基づく発音
の割当て処理を行ない、割り当てた発音チャンネルのチ
ャンネル番号をレジスタiに格納する(ステップS3
2)。続いて、レジスタp内のパート番号に対応して選
択されている音色のボイスデータをRAM5から読み出
し、そのボイスデータを、レジスタNN,VEL内のノ
ートナンバ,ベロシティに応じて楽音生成処理制御用の
制御パラメータ(ピッチを指定する周波数ナンバFNを
含む)に変換する(ステップS33)。
【0064】続いて、この制御パラメータを、ノートオ
ン及びレジスタTM内の発生時刻のデータとともに、レ
ジスタi内のチャンネル番号の発音チャンネル用の音源
レジスタに格納することにより、当該発生時刻に応じた
タイミングでのノートオンの予約を行なう(ステップS
34)。レジスタTM内の発生時刻のデータを音源レジ
スタに格納するのは、次のような理由による。ノートオ
ンイベントの発生時刻と、当該ノートオンイベントに基
づく楽音が再生される時刻とには、前述のように約4フ
レーム分の時間差がある(楽音の再生がそれだけ遅れ
る)。楽音生成処理(後述する「音源処理1」)は、そ
の時間差の範囲内の任意のタイミングで、対応する楽音
データを生成すればよい(つまり、その範囲内での処理
の遅れが許容されている)。したがって、ノートオンイ
ベントの発生時刻と異なる任意のタイミングで実行され
る楽音生成処理では、ノートオンイベントの発生時刻が
わかっていないと、対応する楽音データが生成できない
からである。
【0065】尚、ステップS34において、当該発音チ
ャンネルが使用中であれば、〔対策2〕として説明した
ように、当該発音チャンネル用の表の音源レジスタと裏
の音源レジスタとのうち、裏の音源レジスタに制御パラ
メータ等を格納する。これにより、表の音源レジスタを
用いて当該発音チャンネルでの現在の楽音生成処理の実
行を確保しつつ、当該発音チャンネルでの新たな楽音生
成処理を直ちに裏の音源レジスタに用意することができ
る。またこのように裏の音源レジスタに格納を行なった
場合には、表の音源レジスタ内の予約領域にも、レジス
タTM内の発生時刻に応じたタイミングでのダンプ(音
量エンベロープを急激に減少させる処理)の予約を行な
う。ステップS34に続くステップS35では、ノート
オンの発生時刻が遅い発音チャンネルの順に楽音生成演
算が行なわれるように、発音の割当て処理を行なった各
発音チャンネルの間での演算順序を決定する。(すなわ
ち、後着のノートオンに対応した発音チャンネルが、楽
音の生成において優先的に処理されるようになる)。そ
してリターンする。
【0066】図11は、ノートオフイベント処理の一例
を示すフローチャートである。最初に、ノートナンバ,
ノートオフを入力したMIDIチャンネルを受信するパ
ートに対応して選択されている音色,MIDIメッセー
ジの入力時刻を示す時間軸上でノートオフイベントが発
生した時刻を示すデータを、それぞれ所定のレジスタN
N,t,TMに格納する(ステップS41)。続いて、
レジスタt内の音色での発音を割り当てた発音チャンネ
ルを捜し、その発音チャンネルのチャンネル番号をレジ
スタiに格納する(ステップS42)。続いて、レジス
タi内のチャンネル番号の発音チャンネル用の表の音源
レジスタと裏の音源レジスタのうち、レジスタt内の音
色に対応するほうの音源レジスタ内の予約領域に、レジ
スタTM内の発生時刻に応じたタイミングでのノートオ
フの予約を行なう(ステップS43)。そしてリターン
する。
【0067】図8の説明に戻り、ステップS5において
起動要因が発生していることが判定されると、「音源
処理1」を実行し(ステップS8)、それから、所定の
状態表示(例えば、CPU3の演算能力や、生成した楽
音の音量レベル等の表示)を、パネル上に行なう(ステ
ップS9)。そしてステップS3に戻り、ステップS3
以下の処理を繰り返す。
【0068】「音源処理1」は、前述の楽音生成処理の
一部を成すものである。この「音源処理1」の詳細例は
図12に示されている。図12において、最初のステッ
プS50では、MIDIメッセージの入力時刻を示す時
間軸上での現在の時刻GTから、その時間軸上でのMI
DIメッセージの入力時刻のうち当該MIDIメッセー
ジに基づく楽音生成処理が終了しているものの最終の入
力時刻STを減じた時間を、遅れ量OR(現時点までに
生成すべき楽音データでありながら未生成である楽音デ
ータの量を時間の長さで表わしたもの)として設定す
る。続くステップS51では、生成量SR(今回の1起
動で生成すべき楽音データの目標サンプル数を時間の長
さで表現したもの)を、遅れ量ORの関数として決定す
る。
【0069】図19は、この関数の特性の一例を示す図
である。この例では、遅れ量ORが一定未満である場合
には、生成量SRは10ミリ秒(1出力バッファ分の楽
音データの10分の1に対応した時間)であるが、遅れ
量ORが一定以上になると、遅れ量ORが増加するにつ
れて、生成量SRが連続的に増加していく。そして、生
成量SRが、楽音生成処理に要する時間があまり長くな
らないような範囲内の一定の上限値SRmaxに達する
と、遅れ量ORがそれ以上増加しても、生成量SRは上
限値SRmaxを維持する。上限値SRmaxは、例え
ば20ミリ秒であってもよく、あるいはそれ以外の値で
あってもよい。図20は、この関数の特性の別の一例を
示す図である。この例では、遅れ量ORが一定未満であ
る場合には、生成量SRは10ミリ秒であるが、遅れ量
ORが一定以上になると、遅れ量ORが増加するにつれ
て、生成量SRが不連続に増加していく。そして、生成
量SRが、楽音生成処理に要する時間があまり長くなら
ないような範囲内の一定の上限値SRmaxに達する
と、遅れ量ORがそれ以上増加しても、生成量SRは上
限値SRmaxを維持する。
【0070】尚、このようにして決定される生成量SR
は、10ミリ秒を単位としてその整数倍の値のみをとる
のではなく、該単位に対する端数を持った値をとりう
る。したがって、一回の「音源処理1」の実行によって
生成される楽音データの量は、1出力バッファ分の楽音
データの10分の1の量の整数倍になるとは限らず、図
16に示したように、該単位に対する端数を持った量に
なることがありうる。すなわち、この図12の「音源処
理1」は、図16に示したような態様で、楽音生成処理
を行なうものである。従って、前述の通り、1フレーム
内の所定の起動機会において何回か内部割込み信号(起
動命令)が発生しなかったとしても、実際に内部割込み
信号(起動命令)が発生した機会だけで、当該フレーム
内で生成すべき1出力バッファ分の楽音データの生成を
効率的に行なうことができ、発音に支障が生じる事態を
防止することができると共に、他の処理を阻害するおそ
れが少なくなる。
【0071】ステップS51に続くステップS52で
は、「初期設定」で再生予約した出力バッファ以外の残
りの出力バッファのうちの1つの出力バッファ上に、時
刻STを先頭とした生成量SR分の楽音生成領域を設定
する。続くステップS53では、生成量SRの楽音デー
タを生成する発音チャンネル数を決定する。ここで、こ
の発音チャンネル数は、一例として、遅れ量ORの関数
として決定するようにしてよい。図21は、そのような
関数の特性の一例を示す図である。この例では、遅れ量
ORが一定未満である場合には、ノートオンイベント処
理(図10)で発音割当てを行なった発音チャンネル数
CHmaxが、そのまま楽音データを生成する発音チャ
ンネル数となるが、遅れ量ORが一定以上になると、遅
れ量ORが増加するにつれて、楽音データを生成する発
音チャンネル数がCHmaxよりも減少していく。この
ように、遅れ量ORが一定以上である場合には、発音チ
ャンネル数が減少することにより、楽音生成処理に要す
る時間が短縮されるようになる。
【0072】ステップS53に続くステップS54で
は、演算順序(ノートオンイベント処理のステップS3
5で決定したもの)が1位である発音チャンネルのチャ
ンネル番号をレジスタiに格納し、スタートポインタs
pで時刻STを指す。続いて、レジスタi内のチャンネ
ル番号の発音チャンネル用の表の音源レジスタの予約領
域を参照して、スタートポインタsp以降から時刻GT
までの間で、最初の予約(ピッチベンドの予約,ノート
オフの予約,ダンプの予約等)を検出する(ステップS
55)。続いて、予約が検出されたか否かを判断する
(ステップS56)。
【0073】イエスであれば、当該発音チャンネルにつ
いて、当該予約の時刻までの楽音生成処理を実行し、ス
タートポインタspを当該予約の時刻にまで進める(ス
テップS57)。この楽音生成処理では、前述のよう
に、音源レジスタに格納された制御パラメータに従うピ
ッチでRAM5から波形データを読み出し、その波形デ
ータに、音色制御(フィルタ演算)と、音量制御(音量
エンベロープデータの乗算)と、ピッチ,音色または音
量等の変調制御と、エフェクトの付加とを制御パラメー
タに従って施すことによって楽音データを生成する。
【0074】ステップS57に続くステップS58で
は、当該予約の内容を当該音源レジスタに格納すること
により、その予約内容を実行する。ここで、ノートオフ
の予約が検出された場合には、当該発音チャンネルの表
の音源レジスタにノートオフを書き込み、音量エンベロ
ープのリリーススラートを開始する。また、ダンプの予
約が検出された場合には、ダンプの実行の完了後(すな
わち、音量エンベロープのレベルが一定以下の低い値に
なった後)、〔対策2〕として示したように、当該発音
チャンネルで用いるべき音源レジスタとして、表の音源
レジスタに替えて裏の音源レジスタを選択する(尤も、
先に表の音源レジスタから裏の音源レジスタへの入替え
を行なった後で、表の音源レジスタについてダンプを実
行してもよい)。尚、図10のステップS34で説明し
たように、裏の音源レジスタに制御パラメータ,ノート
オン及びレジスタTM内のノートオンの発生時刻のデー
タを格納する場合には、表の音源レジスタの予約領域
に、レジスタTM内の発生時刻に応じたタイミングでの
ダンプの予約がされる。したがって、楽音生成処理にお
いて、このレジスタTM内の発生時刻に応じたタイミン
グが来ると、ダンプが実行された後、表の音源レジスタ
に替えて裏の音源レジスタを用いた楽音生成処理が開始
されることになる。
【0075】ステップS58を終了すると、ステップS
55に戻り、ステップS55以下の処理を繰り返す。他
方、ステップS56でノーと判断されれば(あるいは、
最初はイエスと判断されたがその後ステップS57及び
S58を経由することによりノーと判断されるようにな
れば)、当該発音チャンネルについて、スタートポイン
タspから時刻GTまでの楽音生成処理を全て実行する
(ステップS59)。これにより、当該発音チャンネル
について、生成量SR分の楽音生成領域に亘る楽音デー
タの生成が完了する。
【0076】続いて、ステップS53で決定した数の発
音チャンネルについて楽音生成処理を全て完了したか否
かを判断する(ステップS60)。ノーであれば、演算
順序が次順位である発音チャンネルのチャンネル番号を
レジスタiに格納し、スタートポインタspを時刻ST
に設定する(ステップS61)。そしてステップS55
に戻り、ステップS55以下の処理を繰り返す。他方、
ステップS60でイエスと判断されれば(あるいは、最
初はノーと判断されたが、その後ステップS55以下を
繰り返すことによりイエスと判断されるようになれば)
楽音生成処理を終了してステップS62に進む。これに
より、生成可能な発音チャンネル数が、発音の割当て処
理を行なった発音チャンネル数未満である場合には、演
算順序の遅い発音チャンネルについての楽音生成処理が
省略されるという形で、同時発音チャンネル数が減少す
ることになる。
【0077】ステップS62では、累算された各発音チ
ャンネルについて楽音データ(あるいは、累算された楽
音データに適宜のエフェクトを付加したもの)を、出力
バッファ上の楽音生成領域(ステップS52で設定した
もの)に書き込む。続いて、時刻STに生成量SRの長
さを加えた時刻を、新たな時刻STとして設定する(ス
テップS63)。この新たな時刻STは、次に「音源処
理1」を実行する際の演算スタート位置になる。続くス
テップS264では、今回ノートオフのあった発音チャ
ンネルについての音量エンベロープの大きさを、徐々に
ゼロに向けて下げる。続いて、1出力バッファ分の楽音
データが完成したか否かを判断する(ステップS6
5)。ノーであればリターンする。他方イエスになる
と、その出力バッファを、後述の「音源処理2」によっ
て当該出力バッファに連結されている他の出力バッファ
から切り離して、「出力デバイス」に再生予約する(ス
テップS66)。そしてリターンする。
【0078】なお、ステップS50及びS51の別の例
として、「GT−ST」の結果をそのままSRとして設
定することも可能である。その場合は、前記〔対策1〕
における図5の例のように、いずれかの機会で内部割込
み信号が発生しなかったために楽音生成処理が起動しな
かった場合に、その機会での未生成の楽音データを、そ
の直後に内部割込み信号が発生した機会で全て生成する
ようになる。これによっても、1フレーム内に何回か内
部割込み信号が発生しなくても、内部割込み信号が発生
した機会だけで、当該フレーム内に1出力バッファ分の
楽音データの生成が完了するので、発音に支障が生じる
事態が防止される。また、内部割込み信号が発生しなか
った機会での未生成の楽音データを、図6の例のように
その後に内部割込み信号が発生した複数の機会で分散し
て生成するようにしたり、あるいは当該フレーム内の最
後の機会までに徐々に生成するようにしてもよいこと
は、前記〔対策1〕において述べたとおりである。
【0079】また、ステップS53における発音チャン
ネル数の決定法の別の例として、次のようにしてもよ
い。まず、1つの発音チャンネルで生成量SR分の楽音
データを生成するのに要する演算時間と、今回の演算可
能時間EJ(次に内部割込み信号が発生する予定の時刻
である演算終了時刻SJから、今回内部割込み信号が実
際に発生した時刻である演算開始時刻KJを減じた時
間)とに基づき、時間EJ内に幾つの発音チャンネルで
生成量SR分の楽音データの生成が可能かを算出する。
そして、算出した生成可能な発音チャンネル数が、ノー
トオンイベント処理(図10)で発音割当てを行なった
発音チャンネル数以上であれば、当該発音割当てを行な
った発音チャンネル数を、そのまま楽音データを生成す
る発音チャンネル数として決定する。他方、算出した生
成可能な発音チャンネル数が、発音割当てを行なった発
音チャンネル数未満であれば、当該生成可能な発音チャ
ンネル数を、楽音データを生成する発音チャンネル数と
して決定する(すなわち、〔対策1〕として説明したよ
うに、楽音データを生成する発音チャンネル数を減少さ
せることにより、1フレーム内に1出力バッファ分の楽
音データの生成を確保する)。
【0080】図8の説明に戻り、ステップS5において
起動要因が発生していることが判定されると、「音源
処理2」を実行し(ステップS10)、所定の状態表示
をパネル上に行なう(ステップS11)。そしてステッ
プS3に戻り、ステップS3以下の処理を繰り返す。
「音源処理2」も、楽音生成処理の一部を成すものであ
る。この「音源処理2」は、「出力デバイス」(すなわ
ちDMAC11による外部割込み処理)の実行によって
発生する要求に基づいて実行される。
【0081】図13は、DMAC11による外部割込み
処理の一例を示すフローチャートである。この外部割込
み処理は、サウンドI/O12に楽音データを1サンプ
ル分ずつ送るタイミング(サウンドI/O12の再生サ
ンプリング周期)で、DMAC11が実行するものであ
り、この処理によって、出力バッファに記憶された1フ
レーム分の楽音データが、再生サンプリング周期毎に1
サンプル分ずつ読み出されてサウンドI/O12に供給
される。これは、図1における「出力デバイス」の処理
に相当する。すなわち、OSのドライバである「出力デ
バイス」によって、波形入力用のインターフェース
(“wave API”)に対してソフト音源から与え
られた楽音データを受け取り、これを外部のハードウェ
アつまりサウンドI/O12に出力する処理に対応して
いる。最初に、「初期処理」(図9)または「音源処理
1」(図12)によって「出力デバイス」に再生予約さ
れた出力バッファのうちの現在読出し中の出力バッファ
(ポインタPBで指した出力バッファ)内の現在読出し
中の1サンプル分の楽音データ(ポインタppで指した
楽音データ)を、サウンドI/O12に送る(ステップ
S71)。続いて、ポインタppを1サンプル分進め
(ステップS72)、当該出力バッファ内の全ての楽音
データをサウンドI/O12に送り終えたか(すなわち
当該出力バッファについての再生処理を完了したか)否
かを判断する(ステップS73)。ノーであればリター
ンする。
【0082】他方、ステップS73でイエスと判断され
れば、次の出力バッファの再生予約があるか否かを判断
する(ステップS74)。これは、インターフェース
(“wave API”)に対してOSを介して「出力
デバイス」からアクセスする処理、つまりOSを介在さ
せた処理に相当する。他の何らかの処理の影響により楽
音生成処理の起動が遅れているために、楽音生成処理で
生成を完了した楽音データを書き込んだ出力バッファが
未だ再生予約されていない場合であっても、既に再生予
約されている出力バッファ(「初期設定」(図9)で先
行して再生予約した出力バッファや、音源処理1で既に
再生予約している出力バッファ)があれば、その再生処
理が全て完了するまでは、ステップS74でイエスと判
断されてステップS75に進み、その出力バッファにポ
インタPBを進める。これにより、〔対策3〕として説
明したように、楽音生成処理の遅れによる音切れを防ぐ
ための楽音生成処理の起動時間の許容範囲が拡がること
になる。ステップS75に続くステップS76では、再
生処理を完了した出力バッファを、「音源処理2」のル
ーチンに返却する要求を発生する。そしてリターンす
る。
【0083】他方、楽音生成処理の起動が大幅に遅れて
いるために、既に再生予約している出力バッファの再生
処理を全て完了した区間内においても、楽音生成処理で
生成を完了した楽音データを書き込んだ出力バッファが
まだ再生予約されていない場合には、ステップS74で
ノーと判断されてステップS77に進む。ステップS7
7では、ノイズ音の発生を防止するためにサウンドI/
O12の出力をミュートする。続いてステップS78で
は、「音源処理2」に対してリセット要求(楽音生成処
理のリセットを要求するもの)を発生する。そしてリタ
ーンする。
【0084】図14は、「出力デバイス」からの返却要
求(図13のステップS76)に基づく「音源処理2」
の一例を示すフローチャートである。最初に、「出力デ
バイス」から返却された出力バッファを受け取る(ステ
ップS81)。続いて、その出力バッファをクリアし
て、楽音生成処理が既に保有している出力バッファの後
にその出力バッファを連結する(ステップS82)。
尚、この連結とは、出力バッファ同士を仮想的に順番に
つなげて大きな1つのバッファとして扱うことである。
したがって、RAM5内で物理的に相互に隣接した領域
にそれらの出力バッファを存在させることは必要ではな
い。ステップS82に続くステップS83では、楽音生
成処理と「出力デバイス」との間での時刻のずれの有無
を確認して楽音生成処理の動作を補正するために、「出
力デバイス」からの返却要求のタイミングを示すデータ
を作成する。そしてリターンする。
【0085】図15は、「出力デバイス」からのリセッ
ト要求(図13のステップS78)に基づく「音源処理
2」の一例を示すフローチャートである。最初に、各発
音チャンネル用の音源レジスタ内のデータと、RAM5
の出力バッファ内のデータとを全てクリアする(ステッ
プS91)。続いて、「初期設定」(図9)のステップ
S23乃至S25と同じく、「出力デバイス」を初期設
定し(ステップS92)、データをクリアされた4つの
出力バッファの再生を再び「出力デバイス」に予約し
(ステップS93)、「出力デバイス」を起動するとと
もに、ソフトタイマをスタートさせる(ステップS9
4)。そしてリターンする。
【0086】このように、リセット要求に基づく「音源
処理2」では、「出力デバイス」に出力バッファが再生
予約されていない場合には、〔対策4〕として説明した
ように、それまでに楽音生成処理で実行していた楽音生
成処理を打ち切り、クリアされた出力バッファの再生の
先行予約を「出力デバイス」に再び行なった後、それ以
降に供給されるMIDIメッセージに基づいて楽音生成
処理を起動することにより、楽音生成処理を新たに開始
している。これにより、再生予約が間に合わず、一時的
に楽音が乱れた場合でも、すぐに安定した楽音生成動作
に復帰するので、ノイズを最小限に抑えることができ
る。
【0087】図8のステップS5に戻って、起動要因
が発生していると判定されると、その要求に応じたコマ
ンド処理を実行し(ステップS12)、それに応じた表
示をパネル上に行なう(ステップS13)。そしてステ
ップS3に戻り、ステップS3以下の処理を繰り返す。
他方、起動要因が発生していると判定されると、この
音源用プラグインソフトPISのメインルーチンを終了
させるための所定の処理をステップS14で実行し(例
えば、ソフト音源プログラムが使用していたRAM5の
メモリを開放する)、所定の画面消去処理を行う(ステ
ップS15)。
【0088】尚、ステップS5において、起動要因乃
至のうちの2以上の起動要因が同時的に発生している
と判断された場合には、前述の通り、起動要因が最優
先,起動要因とがその次の優先順位,起動要因と
が更にその次の優先順位,起動要因が最下位の優先
順位、で該優先順位に従って処理されるものとする。起
動要因との間には特段の優先順位を付けず、対等と
する。また、起動要因との間にも特段の優先順位を
付けず、対等とする。また、ステップS3乃至ステップ
S5は、擬似マルチタスク処理におけるタスク管理を仮
想的に示したものであり、実際には、いずれかの起動要
因の発生に基づいて処理を実行している途中で、それよ
りも優先順位の高い起動要因が発生したことにより、割
込みで別の処理を実行すること(例えば、起動要因の
発生に基づいて「音源処理1」を実行している途中で、
起動要因が発生したことにより、割込みで「MIDI
処理」を実行すること等)がある。ところで、例えば、
起動要因の発生に基づいて「音源処理1」を実行して
いる途中で、それよりも優先順位の低い起動要因又は
が発生された場合、これらの起動要因又はについ
ての起動は、起動要因の発生に基づく1回の「音源処
理1」が終了するまで待たなければならない。しかし、
図19又は図20に示すような適切な関数に従って1回
の起動に対応する生成量SRを遅れ量ORの関数として
適切に決定するようにしたことにより、遅れ量ORが多
い場合でも、起動要因の発生に基づく1回の「音源処
理1」が過度に処理時間を占有することかなくなるの
で、優先順位の低い起動要因に対応する処理を阻害する
確率が低くなり、有効である。
【0089】次に、上記実施の形態の変更例について説
明する。アプリケーションソフトAPSとして高度なア
プリケーションプログラム(例えばWWWブラウザ)を
使用する場合、アプリケーションソフトAPSの実行中
において、例えばインターネットのホームページを2箇
所同時にアクセスすることができるものがある。そのよ
うな場合、アクセス中の2つのホームページの双方で音
楽ソフトの再生を行うようなことが起こり得る。そうす
ると、該アプリケーションプログラムにプラグインされ
たソフト音源プログラムが重複して起動されることにな
り、異常動作が起こる可能性がある。
【0090】このような異常動作を未然に防止するため
の1つの対策として、ソフトウェア音源のプログラムに
おいて、前記アプリケーションプログラムから呼び出し
を受けたとき、該ソフトウェア音源のプログラムが既に
実行中であるかどうかを判定し、既に実行中であれば後
からの呼び出しを受け付けない処理を行うようにすると
よい。これによって、アプリケーションプログラムにプ
ラグインされたソフトウェア音源プログラムが重複して
起動されることなく、先に起動中の波形生成処理を優先
して遂行させることができる。図22は、上記の対策を
実現するために採用することができる図8の変更例を示
す。図22において、ステップS1の前に、ステップS
18,S19,S20が設けられている点が図8とは異
なり、他は同一である。ステップS18では、既に、こ
の音源用プラグインソフトPISが開かれているか否か
を判定する。今回初めて音源用プラグインソフトPIS
が開かれた場合は、NOであり、ステップS19に行っ
て、該音源用プラグインソフトPISの本体プログラム
をメモリにロードする。その後、ステップS1に行き、
図8と同様の処理を行う。一方、既に音源用プラグイン
ソフトPISが開かれている場合は、ステップS18は
YESであり、ステップS20に行き、「開けません」
の表示をディスプレイ9で行わせて、処理を終了する。
こうして、先に起動中の波形生成処理を優先して遂行さ
せることができる。
【0091】そのための別の対策として、ソフトウェア
音源のプログラムにおいて、前記アプリケーションプロ
グラムから呼び出しを受けたとき、該ソフトウェア音源
のプログラムが既に実行中であるかどうかを判定し、既
に実行中であれば該実行中の処理を中止し、後からの呼
び出しを受け付けるようにしてもよい。これによって、
アプリケーションプログラムにプラグインされたソフト
ウェア音源プログラムが重複して起動されることなく、
先に実行中の波形生成処理を中止し、後から呼び出しの
かかった波形生成処理を優先して実行することができ
る。図23は、上記の対策を実現するために採用するこ
とができる図8の変更例を示す。図23において、ステ
ップS1の前に、ステップS18,S19,S200が
設けられている点が図8とは異なり、他は同一である。
ステップS18,S19の処理は、図22と同様の処理
である。図23では、既に音源用プラグインソフトPI
Sが開かれている場合は、ステップS18のYESから
ステップS200に行き、現在演奏中の曲の演奏シーケ
ンスを強制的に終了させる。その後。ステップS1に行
き、図8と同様の処理を行う。こうして、先に実行中の
波形生成処理を中止し、後から呼び出しのかかった波形
生成処理を優先して実行することができる。
【0092】更にそのための別の対策として、ソフトウ
ェア音源のプログラムにおいて、前記アプリケーション
プログラムから呼び出しを受けたとき、該ソフトウェア
音源のプログラムが既に実行中であるかどうかを判定
し、既に実行中であれば、後からの呼び出しを受け付け
ない処理を行うか、又は、該実行中の処理を中止して後
からの呼び出しを受け付ける処理を行うか、のどちらか
を選択可能に実行するようにしてもよい。この場合の選
択の仕方としては、ディスプレイ画面に選択用のアイコ
ンを表示して、操作者によってどちらかを選択させるよ
うにしてもよいし、あるいは、再生すべき自動演奏デー
タファイル中若しくはその他の適宜の領域に選択情報を
格納しておき、この選択情報を参照して自動的に選択す
るようにしてもよい。あるいは、ディスプレイ画面にお
ける表示形態(例えば開いたページ画像の前後関係な
ど)に応じてどちらでソフトウェア音源を使用するかを
自動的に選択するようにしてもよいし、若しくはランダ
ム選択によって選択するようにしてもよい。
【0093】上記実施例は、音源用プラグインソフトP
ISとして、自動演奏用シーケンサのプログラムとソフ
トウェア音源のプログラムとをプラグインしたが、ソフ
トウェア音源のプログラムのみをプラグインしてもよ
い。その場合は、音源用プラグインソフトPISは、適
宜入力されるMIDIメッセージに対応する楽音波形サ
ンプルデータを生成する構成となる。
【0094】尚、以上の実施の形態では、〔対策1〕に
おいて、通算として1フレーム内に所定サンプル数の楽
音データを生成するようにしている。しかし、ここで
「通算として」というのは、必ずしも1つのフレーム内
で該所定サンプル数の楽音データの生成が完了すること
を要求するものではない。特に、これらの実施の形態で
は、図7に示すように、楽音データを書き込んだ出力バ
ッファを複数再生予約できるようになっているので、1
つのフレーム内で楽音データの生成演算が完了しなくて
も、その後のフレームでその分を補う演算を行なうこと
が可能である。図6を例にとってこのことを説明すれ
ば、図6では、内部割込み信号の発生しなかった機会で
の未生成の楽音データを、1つのフレーム内の最後の機
会までに間に合うように生成するようにしているが、該
最後の機会までに生成できなくても、その次のフレーム
にその生成を持ち越すようにしてよい(例えば、未生成
の4回分の楽音データを図6のように10回目の機会
(100ミリ秒目)で全て生成するかわりに、10回目
の機会で7,8回目の2回分の楽音データだけを生成
し、それ以降のフレームで内部割込み信号が発生した機
会で、残りの9,10回目の2回分の楽音データを生成
するようにしてよい)。尚、図16に例示しているよう
に、或るフレームにおける未生成の楽音データの生成
を、その次のフレームに持ち越すことがありうる。
【0095】また、以上の実施の形態では、ノートオン
イベント処理やノートオフイベント処理といったMID
I処理において、楽音生成処理制御用の制御パラメー
タ,ノートオン及びイベントの発生時刻を示すデータ
を、各発音チャンネル毎に設けた音源レジスタに格納し
ている。しかし、このようにこれら制御パラメータ等を
各発音チャンネル毎に別の音源レジスタに格納するかわ
りに、1つの記憶エリアに、制御パラメータ等を発音チ
ャンネルのチャンネル番号を示すデータと組にして順次
書き込むようにしてもよい。その場合には、MIDIメ
ッセージの供給に基づいて、一旦シーケンスデータを作
成し、このシーケンスデータに基づいて楽音データの生
成を行なうことになる。
【0096】また、以上の実施の形態では、「音源処理
2」において、「出力デバイス」から返却された出力バ
ッファを、楽音生成処理が既に保有している出力バッフ
ァの後に連結しており、したがって「音源処理1」にお
いては、このように連結された出力バッファに、1出力
バッファ分ずつ楽音データを生成している。しかし、こ
のように出力バッファを連結するかわりに、個々の出力
バッファを単位として楽音データを生成するようにして
もよい。
【0097】また、以上の実施の形態では、楽音生成処
理の起動に先行して、4つの出力バッファの再生を「出
力デバイス」に予約している。しかし、楽音生成処理の
起動に先行して「出力デバイス」に再生予約する出力バ
ッファの数は、もちろん4以外であってよい。また、ま
た、RAM5内に設ける出力バッファの数も、楽音生成
処理の起動に先行して「出力デバイス」に再生予約する
出力バッファの数よりも1以上多い適宜の数であってよ
い。
【0098】また、以上の実施の形態では、〔対策
1〕,〔対策2〕,〔対策3〕及び〔対策4〕を全て実
施している。しかし、これらの対策は、それぞれ相互に
独立して実施しても、楽音生成処理の起動の遅れを原因
として発音に支障が生じる事態を防止できるものであ
る。したがって、これらの対策のうちのいずれか1つの
みを実施したり、2つまたは3つを適宜組み合わせて実
施したりしてもよい。また、上記の実施形態において
は、ソフト音源においては、生成した楽音波形データを
出力バッファに最大で400ms分貯めてから、これを
出力するようにしている。そのため、他のソフトウェア
によって処理される該再生音楽情報に関連する他の情報
(例えばカラオケの背景画像や歌詞画像情報)の再生タ
イミングと同期がとれなくなると不都合が生じるので、
適宜の同期化対策を講ずるようにすかるのがよい。例え
ば、MIDIメッセージを出力するタイミングを、該M
IDIメッセージに対応する再生音楽情報に同期される
べき他の情報(例えばカラオケの背景画像や歌詞画像情
報)の出力タイミングよりも早めてやり、ソフト音源に
おける楽音生成処理が他の処理よりも幾分先行して行な
われるようにしてやれば、最終的に必要な全情報を同期
して出力することができる。
【0099】また、以上の実施の形態では、波形メモリ
方式の楽音生成処理をCPUに実行させるタイプのソフ
トウェア音源にこの発明を適用しているが、他の適宜の
楽音生成方式(例えばFM合成方式等)をCPUに実行
させるタイプのソフトウェア音源プログラムを採用して
この発明を実施してもよい。また、この発明は、パーソ
ナルコンピュータ(つまり汎用コンピュータ)のCPU
によって楽音生成処理を実行させるようにしたソフトウ
ェア音源において適用することができるのみならず、専
用の楽音発生装置やその他の特機化された適宜の装置内
に搭載されたコンピュータのCPUによって楽音生成処
理を実行させるソフトウェア音源を具備するシステムに
おいて適用することができる。また、波形データ生成の
基となる演奏情報は、必ずしもMIDIフォームの情報
に限定されるものではなく、その他の形式であってもよ
い。
【0100】
【発明の効果】以上の通り、この発明によれば、ソフト
ウェア音源のプログラムをアプリケーションプログラム
にプラグインで組み込むだけで、コンピュータを使用し
た音波形サンプルデータ生成を容易に行うことができる
ようになり、かつ、格別の音源ボードが不要となる、と
いう優れた効果を奏する。また、どのようなコンピュー
タを使用しても、そのハードウェア構成にかかわらず、
プラグインしたソフトウェア音源プログラムに応じた均
質の楽音特性を持つ音波形サンプルデータを生成するこ
とができるようになる。また、アプリケーションプログ
ラムにプラグインされたソフトウェア音源プログラムが
重複して起動されることのないように、優先順位をつけ
て、若しくは選択的に処理するようにしたので、異常動
作を防止することができる。
【0101】また、この発明によれば、コンピュータの
メイン制御部(CPU3)において起動命令発生手段を
設け、波形データ生成処理を起動する機会を所定時間内
に複数回設定し、この複数回の機会のうち、前記ソフト
ウェア音源のプログラムを実際に実行してよい機会にだ
け起動命令を発生し、これにより、メイン制御部は、他
のプログラムの実行状況との兼ね合いで、ソフトウェア
音源のプログラムを実際に実行してよい機会にだけ起動
命令を発生することができ、ソフトウェア音源のプログ
ラムとその他のプログラムとを適切に時分割制御して並
行して実行させることができる一方で、ソフトウェア音
源(SSM)において、前記起動命令に応じて波形デー
タ生成処理を実際に起動した機会だけで、通算として前
記所定時間内に所定サンプル数分の波形データを生成さ
せるように、波形データ生成処理を調整する調整処理手
段を具備したので、所定時間内に設定された複数回の起
動機会のうち何回かの機会で起動命令が発生されなかっ
たとしても、起動命令に応じて波形データ生成処理を実
際に起動した機会だけを使用して、通算して上記所定時
間内に所定サンプル数分の音波形データを生成が完了す
るように制御することができ、発音遅れの問題を解決す
ることができる。従って、完全なマルチタスク機能を有
しないOS上でソフトウェア音源による音波形データ生
成処理と他のソフトウェアの処理を並行して実行させる
場合でも、音波形データ生成処理及び他のソフトウェア
の処理に支障が生じないようにすることができる、とい
う優れた効果を奏する。すなわち、他のソフトウェアの
処理の影響によって音波形データ生成処理の起動命令発
生回数が相対的に減ったとしても、通算して上記所定時
間内に所定サンプル数分の音波形データを生成が完了す
るように制御されるので、発音遅れ等の支障が生じるこ
とがなくなる。逆に、音波形データ生成処理を固定の時
分割的処理時間で行わないことにより、他のソフトウェ
アの処理の実行が音波形データ生成処理によって阻害さ
れてその処理が遅れるという問題が起こらないようにす
ることができる。
【0102】その場合、各起動命令に対応する時点にお
いて、その時点までに生成処理すべき波形データの未処
理量の関数として、該時点の1起動命令に応じて生成す
べき波形データ量を決定し、該決定された波形データ量
分の波形データを生成する処理を、該1起動命令に応じ
て実行するようにしたことにより、上記関数を適切に定
めることにより、生成処理すべき波形データの未処理量
との兼ね合いで、1起動命令に応じて生成すべき波形デ
ータ量を適切に決定することができ、1起動命令に対応
するソフトウェア音源の処理によってメイン制御部の作
業が占有されることによって他の処理の実行が阻害され
ることが起こる確率をできるだけ低くするように制御す
ることができるようになる。
【図面の簡単な説明】
【図1】 この発明に従う実施形態のソフトウェアシス
テム構成を略示する図。
【図2】 上記ソフトウェアシステムに接続される通信
ネットワークの一例を示すブロック図。
【図3】 この発明の一実施形態に係る音源システムの
ハードウェア構成例を示す全体ブロック図。
【図4】 この発明の一例として採用するソフトウェア
による楽音生成処理の概略を説明する図。
【図5】 この発明の一実施形態において採用可能な
〔対策1〕の一例を示す説明図。
【図6】 この発明の一実施形態において採用可能な
〔対策1〕の別の例を示す説明図。
【図7】 この発明の一実施形態において採用可能な
〔対策3〕の一例を示す説明図。
【図8】 図3のCPUによって実行されるソフトウェ
ア音源プログラムのメインルーチンの一例を示すフロー
チャート。
【図9】 図8における初期設定処理の一例を示すフロ
ーチャート。
【図10】 図8におけるMIDI処理において実行さ
れるノートオンイベント処理の一例を示すフローチャー
ト。
【図11】 図8におけるMIDI処理において実行さ
れるノートオフイベント処理の一例を示すフローチャー
ト。
【図12】 図8における音源処理1の一例を示すフロ
ーチャート。
【図13】 図3のDMAコントローラによる割込み処
理の一例を示すフローチャート。
【図14】 図3のDMAコントローラからの返却要求
に基づいて実行される図8の音源処理2の一例を示すフ
ローチャート。
【図15】 図3のDMAコントローラからのリセット
要求に基づいて実行される図8の音源処理2の一例を示
すフローチャート。
【図16】 この発明の一実施形態において採用可能な
〔対策1〕の更に別の例を示すものであって、内部割込
み信号の発生と楽音データの生成量との関係の一例を示
す説明図。
【図17】 この発明の一実施形態におけるアプリケー
ションソフトと音源用プラグインソフトとの間の情報の
やり取り例を略示する図。
【図18】 上記音源用プラグインソフトから与えられ
入メジ情報に応じて上記アプリケーションソフトによっ
て表示制御されるコントロールパネル画面の一例を示す
図。
【図19】 生成量SRを遅れ量ORの関数として決定
する際の関数の特性の一例を示す図。
【図20】 生成量SRを遅れ量ORの関数として決定
する際の関数の特性の別の一例を示す図。
【図21】 発音チャンネル数を遅れ量ORの関数とし
て決定する際の関数の特性の一例を示す図。
【図22】 図8の変更例を示すフローチャート。
【図23】 図8の別の変更例を示すフローチャート。
【符号の説明】
APS アプリケーションソフト PIS 音源用プラグインソフト FMD フェイクMIDIドライバ 1 ネットワークI/O 2 タイマ 3 CPU 4 ROM 5 RAM 6 データ及びアドレスバス 7 マウス 8 キーボード 9 ディスプレイ 10 ハードディスク装置 11 DMAC 12 サウンドI/O 13 サウンドシステム
───────────────────────────────────────────────────── フロントページの続き (72)発明者 菊池 健 静岡県浜松市中沢町10番1号 ヤマハ株式 会社内 (72)発明者 本山 悟 静岡県浜松市中沢町10番1号 ヤマハ株式 会社内

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 所定のオペレーティングシステムと該オ
    ペレーティングシステム上で動く所定のアプリケーショ
    ンプログラムとを搭載したコンピュータを用いて、音波
    形サンプルデータを生成するための音源システムであっ
    て、 前記オペレーティングシステムに備わった波形入力用イ
    ンタフェースと、 前記アプリケーションプログラムにプラグインされたソ
    フトウェア音源のプログラムであって、該アプリケーシ
    ョンプログラムから与えられらる命令に従って起動され
    て、音波形サンプルデータを生成する処理を実行し、生
    成した音波形サンプルデータを前記波形入力用インタフ
    ェースに出力するものと、 前記オペレーティングシステムに備わった波形出力用の
    プログラムであって、前記波形入力インタフェースを介
    して与えられる前記生成済みの音波形サンプルデータを
    外部に出力するものとを具備するコンピュータソフトウ
    ェアを用いた音源システム。
  2. 【請求項2】 前記アプリケーションプログラムにプラ
    グインされた自動演奏用シーケンサのプログラムを更に
    具備し、該シーケンサのプログラムの実行によって自動
    的に発生すべき楽音を指示し、前記ソフトウェア音源の
    プログラムでは、前記指示された楽音の音波形サンプル
    データを生成することを特徴とする請求項1に記載のコ
    ンピュータソフトウェアを用いた音源システム。
  3. 【請求項3】 前記ソフトウェア音源のプログラムは、
    前記アプリケーションプログラムから呼び出しを受けた
    とき、該ソフトウェア音源のプログラムが既に実行中で
    あるかどうかを判定し、既に実行中であれば後からの呼
    び出しを受け付けない処理を行うものである請求項1又
    は2に記載のコンピュータソフトウェアを用いた音源シ
    ステム。
  4. 【請求項4】 前記ソフトウェア音源のプログラムは、
    前記アプリケーションプログラムから呼び出しを受けた
    とき、該ソフトウェア音源のプログラムが既に実行中で
    あるかどうかを判定し、既に実行中であれば該実行中の
    処理を中止し、後からの呼び出しを受け付けるものであ
    る請求項1又は2に記載のコンピュータソフトウェアを
    用いた音源システム。
  5. 【請求項5】 前記ソフトウェア音源のプログラムは、
    前記アプリケーションプログラムから呼び出しを受けた
    とき、該ソフトウェア音源のプログラムが既に実行中で
    あるかどうかを判定し、既に実行中であれば、後からの
    呼び出しを受け付けない処理を行うか、又は、該実行中
    の処理を中止して後からの呼び出しを受け付ける処理を
    行うか、のどちらかを選択可能に実行するものである請
    求項1又は2に記載のコンピュータソフトウェアを用い
    た音源システム。
  6. 【請求項6】 前記コンピュータは、前記ソフトウェア
    音源のプログラムとその他のプログラムを並行して実行
    する制御を行うメイン制御部を有しており、このメイン
    制御部は、所定時間内の複数回の起動機会のうち、前記
    ソフトウェア音源のプログラムを実際に実行してよい機
    会に起動命令を発生する起動命令発生手段を具備してお
    り、 前記ソフトウェア音源において、前記起動命令に応じて
    波形サンプルデータ生成処理を実際に起動した機会だけ
    で、通算として前記所定時間内に所定サンプル数分の波
    形サンプルデータを生成させるように、波形サンプルデ
    ータ生成処理を調整する調整処理手段を具備しているこ
    とを特徴とする請求項1乃至5のいずれかに記載のコン
    ピュータソフトウェアを用いた音源システム。
  7. 【請求項7】 前記調整処理手段は、各起動命令に対応
    する時点において、その時点までに生成処理すべき波形
    サンプルデータの未処理量の関数として、該時点の1起
    動命令に応じて生成すべき波形サンプルデータの量を決
    定するものであり、前記ソフトウェア音源において、該
    決定されたデータ量分の波形サンプルデータを生成する
    処理を、該1起動命令に応じて実行するようにした請求
    項6に記載のコンピュータソフトウェアを用いた音源シ
    ステム。
  8. 【請求項8】 所定のオペレーティングシステムと該オ
    ペレーティングシステム上で動く所定のアプリケーショ
    ンプログラムとを搭載したコンピュータを用いて、音波
    形サンプルデータを生成するための方法であって、 前記アプリケーションプログラムにソフトウェア音源の
    プログラムをプラグインする処理と、 前記アプリケーションプログラムの実行中に、前記プラ
    グインされたソフトウェア音源のプログラムを呼び出す
    処理と、 前記アプリケーションプログラムからの呼び出しに応じ
    て、前記ソフトウェア音源のプログラムを起動する処理
    と、 起動された前記ソフトウェア音源のプログラムによっ
    て、再生すべき音を指示する演奏データを受け付けるス
    テップと、受け付けた演奏データに基づき音波形サンプ
    ルデータを所定の再生サンプリングクロックとは非同期
    で生成し、生成した音波形サンプルデータを出力バッフ
    ァに一時蓄積するステップと、出力デバイスのプログラ
    ムを起動するステップとを含む処理を実行することと、 起動された前記出力デバイスのプログラムの実行によっ
    て、前記出力バッファに一時蓄積された音波形サンプル
    データを前記所定の再生サンプリングクロックに従って
    読み出し、外部に対して出力する処理を実行することと
    を具備する方法。
  9. 【請求項9】 所定のオペレーティングシステムと該オ
    ペレーティングシステム上で動く任意のアプリケーショ
    ンプログラムとを搭載したコンピュータを用いて、音波
    形サンプルデータを生成するための方法であって、 前記アプリケーションプログラムに自動演奏用シーケン
    サ及びソフトウェア音源のプログラムをプラグインする
    処理と、 前記アプリケーションプログラムの実行中に、前記プラ
    グインされた自動演奏用シーケンサ及びソフトウェア音
    源のプログラムを呼び出す処理と、 前記アプリケーションプログラムからの呼び出しに応じ
    て、前記自動演奏用シーケンサ及びソフトウェア音源の
    プログラムを起動する処理と、 起動された前記自動演奏用シーケンサ及びソフトウェア
    音源のプログラムによって、自動演奏データを受け付け
    るステップと、受け付けた自動演奏データの再生イベン
    トに従って再生べき音を指示する演奏データを順次提供
    するステップと、提供された演奏データに基づき音波形
    サンプルデータを所定の再生サンプリングクロックとは
    非同期で生成し、生成した音波形サンプルデータを出力
    バッファに一時蓄積するステップと、出力デバイスのプ
    ログラムを起動するステップとを含む処理を実行するこ
    とと、 起動された前記出力デバイスのプログラムの実行によっ
    て、前記出力バッファに一時蓄積された音波形サンプル
    データを前記所定の再生サンプリングクロックに従って
    読み出し、外部に対して出力する処理を実行することと
    を具備する方法。
  10. 【請求項10】 前記アプリケーションプログラムから
    呼び出しを受けたとき、前記ソフトウェア音源のプログ
    ラムが既に実行中であるかどうかを判定し、既に実行中
    であれば後からの呼び出しに応じて前記ソフトウェア音
    源のプログラムを起動しないようにする処理を更に具備
    する請求項8又は9に記載の方法。
  11. 【請求項11】 前記アプリケーションプログラムから
    呼び出しを受けたとき、前記ソフトウェア音源のプログ
    ラムが既に実行中であるかどうかを判定し、既に実行中
    であれば該実行中の処理を中止し、後からの呼び出しに
    応じて前記ソフトウェア音源のプログラムを起動する処
    理を更に具備する請求項8又は9に記載の方法。
  12. 【請求項12】 前記アプリケーションプログラムから
    呼び出しを受けたとき、前記ソフトウェア音源のプログ
    ラムが既に実行中であるかどうかを判定し、既に実行中
    であれば該実行中の処理を一時中止し、後からの呼び出
    しに応じて前記ソフトウェア音源のプログラムを起動す
    る処理と、 その後、前記アプリケーションプログラムかのら呼び出
    しに応じて前記一時中止した処理を再開する処理とを更
    に具備する請求項8又は9に記載の方法。
  13. 【請求項13】 前記アプリケーションプログラムから
    呼び出しを受けたとき、前記ソフトウェア音源のプログ
    ラムが既に実行中であるかどうかを判定し、既に実行中
    であれば、後からの呼び出しに応じて前記ソフトウェア
    音源のプログラムを起動しないようにするか、又は、該
    実行中の処理を中止して後からの呼び出しに応じて前記
    ソフトウェア音源のプログラムを起動するか、の選択を
    行う処理を更に具備する請求項8又は9に記載の方法。
JP01967697A 1996-01-17 1997-01-17 コンピュータソフトウェアを用いた音源システム及び方法 Expired - Fee Related JP3572847B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01967697A JP3572847B2 (ja) 1996-01-17 1997-01-17 コンピュータソフトウェアを用いた音源システム及び方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2474896 1996-01-17
JP8-24748 1996-01-17
JP01967697A JP3572847B2 (ja) 1996-01-17 1997-01-17 コンピュータソフトウェアを用いた音源システム及び方法

Publications (2)

Publication Number Publication Date
JPH09258736A true JPH09258736A (ja) 1997-10-03
JP3572847B2 JP3572847B2 (ja) 2004-10-06

Family

ID=26356523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01967697A Expired - Fee Related JP3572847B2 (ja) 1996-01-17 1997-01-17 コンピュータソフトウェアを用いた音源システム及び方法

Country Status (1)

Country Link
JP (1) JP3572847B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7684883B2 (en) 2004-04-28 2010-03-23 Sony Corporation Information processing apparatus, information processing method, and program
JP2010108523A (ja) * 2010-02-05 2010-05-13 Toshiba Corp 情報処理装置およびエフェクトプログラム
US8688804B2 (en) 2005-09-26 2014-04-01 Samsung Electronics Co., Ltd. Apparatus and method for transmitting sound information in web-based control system
US8935444B2 (en) 2004-01-15 2015-01-13 Yamaha Corporation Remote control method of external devices

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935444B2 (en) 2004-01-15 2015-01-13 Yamaha Corporation Remote control method of external devices
US7684883B2 (en) 2004-04-28 2010-03-23 Sony Corporation Information processing apparatus, information processing method, and program
US8688804B2 (en) 2005-09-26 2014-04-01 Samsung Electronics Co., Ltd. Apparatus and method for transmitting sound information in web-based control system
JP2010108523A (ja) * 2010-02-05 2010-05-13 Toshiba Corp 情報処理装置およびエフェクトプログラム

Also Published As

Publication number Publication date
JP3572847B2 (ja) 2004-10-06

Similar Documents

Publication Publication Date Title
US5703310A (en) Automatic performance data processing system with judging CPU operation-capacity
US5895877A (en) Tone generating method and device
US6140566A (en) Music tone generating method by waveform synthesis with advance parameter computation
JP3293434B2 (ja) 楽音発生方法
US5770812A (en) Software sound source with advance synthesis of waveform
JP2970526B2 (ja) コンピュータソフトウェアを用いた音源システム
JP3372124B2 (ja) 電子楽器
JPH09258736A (ja) コンピュータソフトウェアを用いた音源システム及び方法
JP3221314B2 (ja) 楽音合成装置及び方法
JP2962217B2 (ja) 楽音生成装置及び方法
JP3152198B2 (ja) 楽音発生方法および楽音発生装置
JP3781171B2 (ja) 楽音発生方法
US11042380B2 (en) Apparatus, method and computer program for processing instruction
JP3405181B2 (ja) 楽音発生方法
JP3141789B2 (ja) コンピュータソフトウェアを用いた音源システム
JP3139490B2 (ja) 楽音生成装置及び方法
JPH0719150B2 (ja) 電子楽器のアサイナ
JPH10124064A (ja) 音源波形データ生成方法および装置
JP2019028199A (ja) 楽音発生装置、方法、プログラム、及び電子楽器
JP2000293173A (ja) 楽音発生装置及び楽音発生処理プログラムを記録した記録媒体
JP2005292858A (ja) 楽音発生方法及び装置
JP2002196763A (ja) 楽音発生方法
JP2005346110A (ja) 楽音形成装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040608

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040621

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090709

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100709

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100709

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110709

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110709

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120709

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees