JP3735172B2 - Performance information processing method - Google Patents

Performance information processing method Download PDF

Info

Publication number
JP3735172B2
JP3735172B2 JP01304397A JP1304397A JP3735172B2 JP 3735172 B2 JP3735172 B2 JP 3735172B2 JP 01304397 A JP01304397 A JP 01304397A JP 1304397 A JP1304397 A JP 1304397A JP 3735172 B2 JP3735172 B2 JP 3735172B2
Authority
JP
Japan
Prior art keywords
performance
sound source
processing
supplied
performance information
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.)
Expired - Fee Related
Application number
JP01304397A
Other languages
Japanese (ja)
Other versions
JPH10198382A (en
Inventor
郁太郎 梯
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.)
Roland Corp
Original Assignee
Roland 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 Roland Corp filed Critical Roland Corp
Priority to JP01304397A priority Critical patent/JP3735172B2/en
Publication of JPH10198382A publication Critical patent/JPH10198382A/en
Application granted granted Critical
Publication of JP3735172B2 publication Critical patent/JP3735172B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、演奏情報処理方法に関し、さらに詳細には、パーソナルコンピュータやワークステーションなどの汎用のコンピュータ上でソフトウェアによりシンセサイザを構築する際に用いて好適な演奏情報処理方法に関する。
【0002】
【発明の背景および発明が解決しようとする課題】
従来、楽音を生成するためには、楽音生成用の専用のハードウェア、所謂、電子楽器を用いることが必要であった。
【0003】
しかしながら、近年、汎用のコンピュータに高性能のCPUおよびCPUが処理したデータをアナログ信号として外部へ出力するためのD/A変換器(デジタル−アナログ変換器)が搭載されるようになってきたことに伴い、専用のハードウェアを用いることなしに、汎用のコンピュータ上で楽音をリアルタイムに生成することができる可能性が検討されてきている。
【0004】
具体的には、楽音のデータは正確にサンプリング周期毎にD/A変換器に出力しなければならないため、タイマに応じてサンプリング周期毎に楽音のデータを生成する処理を行うことが検討されている。
【0005】
この処理を実現するためには、サンプリング周期毎に発生するタイマインタラプトに応じて、インタラプトルーチンの中で楽音のデータを生成する処理を行うことが考えられるが、楽音のデータを生成する処理は複雑であり、こうした複雑な処理をインタラプトルーチンの中で行うのは困難であるという問題点が指摘されていた。
【0006】
あるいはまた、上記した処理を実現するためには、サンプリング周期毎に起動されるタスクで楽音のデータを生成する処理を行うことも考えられるが、これによると、サンプリング周期毎という複雑なタイミングでタスクを切り換える処理を行う必要があり、タスク切り換えのためのオーバーヘッドが増大することになり、CPUが実際に処理することができる時間が短くなってしまうという問題点が指摘されていた。
【0007】
ところで、一般に、一つのソフトウェアを様々な汎用のコンピュータで使用することが可能であるが、これら様々な汎用のコンピュータにそれぞれ搭載されているCPUの能力は区々であり、低い能力のCPUに合わせてソフトウェアを作成すると、能力の高いCPUが搭載されたコンピュータではCPUの能力を使いきることができないという問題点があった。
【0008】
また、汎用のコンピュータにおいては、複数のソフトウェアを同時に実行させるという使用方法が一般的に行われているが、楽音を生成する処理とともに、楽音を生成する処理以外の他の処理も同時に行う場合には、他の処理の処理状況に応じてCPUの負荷は刻々と変化することとなる。このため、CPUの負荷が最も重い状態に合わせてソフトウェアを作成すると、負荷が軽い場合にCPUの能力を使いきることができないという問題点があった。
【0009】
さらに、一般に、CPUによる楽音を生成する処理の少なくとも一部は、一定の時間間隔で繰り返し行われることになるが、例えば、MIDI情報のノートオン(発音開始)/ノートオフ(発音終了)を示す指示は、使用者(ユーザー)の所望のタイミングに応じてこの繰り返し間隔とは非同期で発生する。即ち、ノートオン/ノートオフを示す指示に応じて楽音を生成する処理にデータを受け渡し、データを受け渡された楽音を生成する処理においては、受け渡されたデータに基づいて楽音を生成する処理を行うこととなるが、ノートオン/ノートオフを示す指示は上記繰り返し間隔とは非同期であるため、楽音を生成する処理をしている最中に、ノートオン/ノートオフを示す指示に応じてデータを書き換えてしまったり、あるいはノートオン/ノートオフを示す指示に応じてデータを書き換えている最中に楽音を生成する処理を行うと、生成中の楽音にノイズが生じるという問題点があり、データの受け渡し方法を改良する必要性が指摘されていた。
【0010】
このため、本願出願人は、汎用のコンピュータに適した処理を行うことにより上記した種々の問題点の解決を図り、汎用のコンピュータ上で楽音をリアルタイムで効率的に生成することのできる楽音生成処理方法を、平成8年特許願第147820号(出願日:平成8年5月20日)「楽音生成処理方法」として既に特許出願している。
【0011】
この平成8年特許願第147820号「楽音生成処理方法」においては、楽音生成用の専用のハードウェアを用いることなしに、汎用のコンピュータ上で楽音をリアルタイムで効率的に生成する、即ち、汎用のコンピュータ上でソフトウェアによりシンセサイザを構築するようになされている。
【0012】
ここで、平成8年特許願第147820号「楽音生成処理方法」に関して説明すると、平成8年特許願第147820号「楽音生成処理方法」は、10ms分の楽音信号を記憶可能なウェーブバッファを4本以上設けており、10ms毎に起動される音源タスクは、10ms分の楽音信号を生成するとこれをウェーブバッファに記憶し、10ms分の楽音信号を記憶したウェーブバッファを出力タスクに渡すのと同時に新しいウェーブバッファを受け取るようになされている。
【0013】
出力タスクは、音源タスクより10ms分の楽音信号を記憶したウェーブバッファ受け取ると、空いているウェーブバッファを音源タスクに返し、オーディオデータ出力デバイスへの記憶内容の転送が済んでいないウェーブバッファのうち転送の順番が1番のもの、即ち、最も古く楽音信号を受け取ったウェーブバッファの記憶内容を、時間的に古い順にオーディオデータ出力デバイスからの割り込みに応じてオーディオデータ出力デバイスが必要とする所定サンプル分だけオーディオデータ出力デバイスにDMA転送するようになされている。
【0014】
オーディオデータ出力デバイスは、出力するオーディオデータを一時記憶するためのバッファを内蔵しており、サンプリング周期毎に一時記憶しているオーディオデータを1サンプリング分づつ出力し、内蔵バッファに残っているオーディオデータが所定量より少なくなると出力タスクに割り込みをかけるようになされている。そして、オーディオデータ出力デバイスから出力されたオーディオデータは、楽音として放音されることになる。
【0015】
なお、上記した出力タスクへの割り込みは、通常は数ms程度の周期でかかるものである。
【0016】
上記した4本以上のウェーブバッファのうち常に1つは出力タスクがオーディオデータ出力デバイスに出力を行い、1つは音源タスクが処理に用い、1つは空いており、1つはオーディオデータ出力デバイスへの出力待ちとなっており、残りのものは空いているか、オーディオデータ出力デバイスへの出力待ちとなっているという、ローテーションを繰り返すようになされている。
【0017】
以上において説明したように、平成8年特許願第147820号「楽音生成処理方法」においては、ウェーブバッファやオーディオデータ出力デバイスの内蔵バッファを介して楽音信号を出力するように構成されている。このため、音源タスクは楽音信号の生成処理を10ms分まとめて行うことができるとともに、音源タスク以外の他のタスクの処理のために音源タスクの起動タイミングが多少遅れても、楽音信号が途切れることなく出力されるという優れた効果を奏するものである。
【0018】
なお、音源タスクの起動タイミングの遅れの許容量を増したい場合には、上記のウェーブバッファの本数を増やすことにより、オーディオデータ出力デバイスへの出力待ち状態となっているウェーブバッファの本数を増やせばよい。
【0019】
ところで、平成8年特許願第147820号「楽音生成処理方法」においては、上記したようにウェーブバッファやオーディオデータ出力デバイスの内蔵バッファなどのバッファを介して楽音信号を出力するように構成されているので、MIDI情報としてノートオンを受け取ってから、受け取ったノートオンに対応する楽音が実際に放音されるまでには、少なくとも数10ms以上の時間間隔を要することとなっていた。このため、MIDI情報がシーケンサ(自動演奏)により供給されるものである場合には、演奏全体における発音タイミングがそれぞれ数10msづつ遅延することになるが、演奏全体として捉えた場合には演奏開始および演奏終了が数10ms遅延するのみで、何らの問題を生ずることもない。しかしながら、MIDI情報が演奏者の鍵盤演奏などによるリアルタイム演奏により供給されるものである場合には、演奏者が鍵盤を押鍵することによりノートオンが供給されてから当該ノートオンに対応する楽音が実際に放音されるまでに数10msという遅延が生じるために、その遅延の時間が大きすぎてしまって演奏者による演奏と放音される楽音との追従性に劣り、演奏者が自然な演奏を行うことができないという問題点があった。特に、こうした問題点は、演奏者がリアルタイムで演奏した演奏データをシーケンスデータとしてシーケンサに入力する場合に、極めて憂慮すべきものとなっていた。
【0020】
出力待ち状態となっているウェーブバッファの本数を増やした場合には、この遅延量はより大きなものとなり、こうした問題点はより大きなものとなっていた。
【0021】
本発明は、上記したような問題点に鑑みてなされたものであり、その目的とするところは、パーソナルコンピュータやワークステーションなどの汎用のコンピュータ上でソフトウェアによりシンセサイザを構築する際において、演奏者のリアルタイム演奏に対応して放音すべき楽音を、発音指示から大きな遅延時間を要することなく迅速に放音することができるようにした演奏情報処理方法を提供しようとするものである。
【0022】
【課題を解決するための手段】
上記目的を達成するために、本発明による演奏情報処理方法は、近年の汎用のコンピュータの中には、汎用のコンピュータとは独立した専用のハードウェア音源として、例えば、楽音信号を生成するための専用のハードウェアから構成される音源ボードが搭載されているものがあるということに着目してなされたものである。
【0023】
上記した音源ボードは安価であって、またコンピュータゲームの音源用として用いられるため、かなり多くの汎用のコンピュータに搭載されていることが知られている。即ち、多くの汎用コンピュータは、使用者が購入した時点で既に音源ボードが搭載されていることになる。
【0024】
ところで、こうした音源ボードは、上記したように、安価なものであってコンピュータゲームの音源用として用いられることを主な用途としているため、生成される楽音信号の品質は、平成8年特許願第147820号「楽音生成処理方法」の汎用のコンピュータ上でソフトウェアによりシンセサイザを構築することにより生成されるものと比較すると、音楽的には満足できるものでは勿論ないが、専用のハードウェアから構成されているために、ノートオンが供給されてから当該ノートオンに対応する楽音信号が外部に出力されるまでの遅延時間、即ち、ノートオンが供給されてから当該ノートオンに対応する楽音が実際に放音されるまでの遅延時間が短く、演奏者によるリアルタイム演奏にも十分追従可能である。本発明による演奏情報処理方法においては、汎用のコンピュータとは独立した専用のハードウェア音源として、例えば、こうした音源ボードを使用して、演奏者によるリアルタイム演奏に基づく楽音信号を当該音源ボードにより生成しようとするものである。
【0025】
即ち、本発明のうち請求項1に記載の演奏情報処理方法は、汎用の処理装置をソフトウェアに基づいて動作させることにより第1の音源手段を構成する音源処理と、供給された演奏情報が自動演奏によるものか演奏者の演奏によるものかを判別する判別処理と、上記判別処理により供給された演奏情報が自動演奏によるものと判別された場合には、供給された演奏情報に基づき上記音源処理にて楽音信号を生成させ、上記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合には、供給された演奏情報に基づいて上記汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段により楽音信号を生成させる演奏制御処理とを行うようにしたものである。
【0026】
従って、本発明のうち請求項1に記載の演奏情報処理方法によれば、演奏者の演奏により供給された演奏情報は、汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段により楽音信号の生成が行われるので、演奏者の演奏に対応して放音すべき楽音を、発音指示から大きな遅延時間を要することなく迅速に放音することができる。
【0027】
ここで、上記判別処理は、例えば、本発明のうち請求項2に記載の演奏情報処理方法のように、上記汎用の処理装置のシーケンサのプログラムから供給された演奏情報を自動演奏によるものと判別し、演奏情報入力インターフェースから供給された演奏情報を演奏者の演奏によるものと判別する処理であってもよい。
【0028】
また、本発明のうち請求項3に記載の演奏情報処理方法のように、請求項1記載の演奏情報処理方法において、さらに、演奏者の指示に応じて上記第1の音源手段と上記第2の音源手段とに共通の制御情報を供給する処理とを有するようにしてもよい。
【0029】
従って、本発明のうち請求項3に記載の演奏情報処理方法によれば、第1の音源手段と第2の音源手段とにおいて、調律や音色の共通化を図ることができるようになる。
【0030】
また、本発明のうち請求項4に記載の演奏情報処理方法は、汎用の処理装置をソフトウェアに基づいて動作させることにより第1の音源手段を構成する音源処理と、供給された演奏情報が自動演奏によるものか演奏者の演奏によるものかを判別する判別処理と、上記判別処理により供給された演奏情報が自動演奏によるものと判別された場合における処理のモードとして、第1のモードと第2のモードとを設定する設定処理と、上記判別処理により供給された演奏情報が自動演奏によるものと判別された場合であって上記設定処理により上記第1のモードが設定されている場合には、供給された演奏情報に基づき上記音源処理にて楽音信号を生成させ、上記判別処理により供給された演奏情報が自動演奏によるものと判別された場合であって上記設定処理により上記第2のモードが設定されている場合には、供給された演奏情報の一部に基づいて上記音源処理にて楽音信号を生成させ、上記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合には、供給された演奏情報に基づいて上記汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段により楽音信号を生成させる演奏制御処理とを行うようにしたものである。
【0031】
従って、本発明のうち請求項4に記載の演奏情報処理方法によれば、例えば、自動演奏による演奏の特定のパートに関しては第1の音源手段で楽音の生成を行わず、当該特定パートを演奏者が演奏することにより第2の音源手段で楽音の生成を行うようにすることができる。
【0032】
また、本発明のうち請求項5に記載の演奏情報処理方法は、汎用の処理装置をソフトウェアに基づいて動作させることにより第1の音源手段を構成する音源処理と、供給された演奏情報が自動演奏によるものか演奏者の演奏によるものかを判別する判別処理と、上記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合における処理のモードとして、第1のモードと第2のモードとを設定する設定処理と、上記判別処理により供給された演奏情報が自動演奏によるものと判別された場合には、供給された演奏情報に基づき上記音源処理にて楽音信号を生成させ、上記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合であって上記設定処理により上記第1のモードが設定されている場合には、供給された演奏情報に基づいて上記汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段により楽音信号を生成させ、上記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合であって上記設定処理により上記第2のモードが設定されている場合には、供給された演奏情報に基づいて上記音源処理にて楽音信号を生成させる演奏制御処理とを行うようにしたものである。
【0033】
従って、本発明のうち請求項5に記載の演奏情報処理方法によれば、モードの切り換えによって、演奏者の演奏により供給された演奏情報を第1の音源手段に供給し、第1の音源手段により楽音の生成を行うことができる。
【0034】
なお、上記したように、音源ボードは既に多くの汎用のコンピュータに搭載されているものであるので、汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段として音源ボードを用いる場合には、使用者がハードウェアに新たな投資を行う必要はないという効果がある。
【0035】
また、上記したように、音源ボードで生成される楽音信号の品質は音楽的には満足できるものでは勿論ないが、演奏者がリアルタイムで演奏した演奏データをシーケンスデータとしてシーケンサに入力する場合には、シーケンサへの演奏データの入力が目的であるため、音源ボードで生成される楽音信号の品質が音楽的に満足できるものでなくて何らの不都合も生じない。即ち、音源ボードにより生成される楽音を聴取しながら入力されたシーケンスデータをシーケンサにより再生する場合には、音源ボードを用いて楽音信号を生成するのではなくて、平成8年特許願第147820号「楽音生成処理方法」の汎用のコンピュータ上でソフトウェアによりシンセサイザを構築することにより楽音信号を生成すれば良く、シーケンスデータの再生時には音楽的に満足できる品質の楽音信号を得ることが可能となる。
【0036】
なお、コンピュータに上記した請求項1乃至請求項5に記載された演奏情報処理を実行させるためのプログラムを記録した媒体も、本発明の範囲に属するものである。
【0037】
【発明の実施の形態】
以下、添付の図面を参照しながら、本発明の演奏情報処理方法の実施の形態の一例を詳細に説明する。
【0038】
図1は、本発明の演奏情報処理方法によるプログラムを搭載可能な、典型的な汎用のコンピュータのハードウェア構成を示すブロック図である。
【0039】
この図1に示す汎用のコンピュータは、極めて一般的な構成を備えており、バス10を介して、CPU12と、メモリ14と、ディスクコントローラ16と、ビデオカード18と、I/Oカード20と、サウンドカード22と、MIDIインターフェース32と、当該汎用のコンピュータとは独立したハードウェアにより構成される音源ボード34とが接続されており、さらに、ディスクコントローラ16にはハードディスク24が接続され、ビデオカード18にはディスプレイ装置26が接続され、I/Oカード20にはキーボード28およびマウス30が接続され、MIDIインターフェース32には鍵盤などの他の電子楽器36が接続されている。そして、この汎用のコンピュータにおいては、サウンドカード22と音源ボード34とから、適宜楽音信号が出力されることになる。
【0040】
即ち、この汎用のコンピュータにおいては、図2に示すように、振り分けプログラムによって、汎用のコンピュータにおける楽音生成処理のプログラム(以下、「シンセサイザプログラム」と称する。)と同時に起動されるシーケンサのプログラムから供給されるMIDI情報と、他の電子楽器36から供給されるMIDI情報とを、サウンドカード22と音源ボード34とに適宜振り分けるようになされている。
【0041】
具体的には、シーケンサのプログラムから供給されるMIDI情報は、振り分けプログラムによりシンセサイザプログラムへ供給されて楽音信号が生成され、当該楽音信号はサウンドカード22を介して出力されることになる。
【0042】
一方、他の電子楽器36から供給されるMIDI情報は振り分けプログラムにより音源ボード34へ供給され、音源ボード34は供給されたMIDI情報に応じて楽音信号を生成して出力することになる。つまり、この汎用のコンピュータにおいては、他の電子楽器36からMIDI情報がMIDIインターフェース32に入力されると、この入力に応じてMIDIインターフェース32はCPU12に割り込みをかけ、CPU12はこの割り込み応じて音源ボード34から楽音信号を出力するための処理、即ち、音源ボード34がMIDIインターフェース32に供給されたMIDI情報に応じて楽音信号を生成して出力する処理を実行するものである。
【0043】
図3には、振り分けプログラムの処理内容を示すフローチャートが示されており、シーケンサのプログラムからMIDI情報が供給された場合、あるいは他の電子楽器36からMIDIインターフェース32を介してMIDI情報が供給された場合には、まずこの振り分けプログラムが起動されることになる。
【0044】
振り分けプログラムが起動されると、まず、供給されたMIDI情報がシーケンサのプログラムからのものであるか、MIDIインターフェース32からのものであるかを判断する(ステップS302)。
【0045】
ステップS302において、供給されたMIDI情報がMIDIインターフェース32からのものであると判断された場合には、そのMIDI情報を音源ボード34へ供給し(ステップS304)、この振り分けプログラムを終了する。
【0046】
そして、音源ボード34は、供給されたMIDI情報に応じて楽音信号を生成して、生成した楽音信号を出力する。
【0047】
一方、ステップS302において、供給されたMIDI情報がシーケンサのプログラムからのものであると判断された場合には、そのMIDI情報をシンセサイザプログラムへ供給して(ステップS306)、この振り分けプログラムを終了する。
【0048】
次に、シンセサイザプログラムの処理内容を説明するが、図4はシンセサイザプログラムの全体構成を示し、制御タスク、音源タスクおよび出力タスクより構成されている。
【0049】
即ち、制御タスクは制御プログラムを実行し、シーケンサのプログラムとの間でMIDI情報のやりとりを行うとともに、音源タスク側へイベントフラグ、発音パラメータ、定常処理パラメータ、エフェクトパラメータを引き渡し、音源タスク側からボイス解放情報を受け取る。
【0050】
音源タスクは、複数のボイス(楽音生成チャンネル)ならびにエフェクトに関する処理を行い、ウェーブバッファへ生成した楽音信号を記憶させて出力タスクへ引き渡す。即ち、複数のボイスのそれぞれの処理を行い、後述する発音パラメータのエフェクト送り量に応じて各ボイスの出力をエフェクトへ引き渡し、エフェクトを付加されていない各ボイスの出力とエフェクトを付加された各ボイスの出力とを最終的にミキシングしてウェーブバッファへ記憶し、出力タスクへ引き渡すことになる。
【0051】
出力タスクにおいては、ウェーブバッファを用いてウェーブ出力処理を行い、外部へ楽音信号を出力する。そして、出力タスクにおいて使用されたウェーブバッファは、音源タスク側へ戻される。
【0052】
上記したように、制御タスクと音源タスクとがやりとりする情報には、イベントフラグ、発音パラメータ、定常処理パラメータ、エフェクトパラメータおよびボイス解放情報がある。以下、これらの情報に関して説明する。
【0053】
(1)イベントフラグ
イベントフラグはボイス数分用意されていて、音源タスクは制御タスクからイベントフラグにより各ボイスの発音開始および発音終了の情報(フラグ)を受ける。イベントフラグは、制御タスクと音源タスクとの両方からアクセス可能な共有メモリに記憶される。
【0054】
(2)発音パラメータ
後述するように、音源タスクは起動される度にイベントフラグの内容をサーチし、発音開始フラグを見つけると、発音パラメータに従って発音を開始するが、発音パラメータには、ボイス毎に以下の(a)乃至(i)に示す情報が含まれている。
(a)波形読み出し関係パラメータ
(波形開始アドレス、ループ関係アドレス、ピッチ)
(b)ピッチLFO関係パラメータ
(波形、周期、遅延など)
(c)フィルタLFO関係パラメータ
(波形、周期、遅延など)
(d)アンプLFO関係パラメータ
(波形、周期、遅延など)
(e)ピッチエンベロープ関係パラメータ
(アタック、ディケイ、サスティン、リリースなどの各時間やレベル)
(f)TVF(Time Variable Filter:時変フィルタ) エンベロープ関係パラメータ
(アタック、ディケイ、サスティン、リリースなどの各時間やレベル)
(g)TVA(Time Variable Amplifier:時変アンプ)エンベロープ関係パラメータ
(アタック、ディケイ、サスティン、リリースなどの各時間やレベル)
(h)パン
(i)エフェクト送り量
これらの情報を含む発音パラメータは、制御タスクと音源タスクとの両方からアクセス可能な共用メモリに記憶される。そして、発音パラメータを記憶するメモリ空間は、ボイス毎に2面づつ設けられている。即ち、音源タスクがイベントフラグに発音開始のフラグを見つけると、音源タスクはこれ以後に音源タスクが参照するメモリ空間を今まで参照していた面からもう一つの面に切り換えるとともに、今まで参照していた面を制御タスクに渡す。従って、制御タスクは、同じボイス番号の発音パラメータを設定する場合でも、音源タスクから渡された現在処理中の面とは異なるもう一面の新しいメモリ空間を用いることによって、音源タスク側で発音時に参照される現在処理中の面のパラメータエリアを壊すことなしに、音源タスクへ発音パラメータの引き渡し行うことができる。逆に、制御タスク側で書き換えている途中のパラメータエリアを音源タスクが参照するという事態の発生を防ぐこともできる。
【0055】
(3)定常処理パラメータ
定常処理パラメータは、ボイス毎に以下の(a)乃至(c)に示す情報が含まれている。
(a)ピッチオフセット
(b)フィルタオフセット
(c)アンプオフセット
これらの定常処理パラメータは、制御タスクと音源タスクとの両方からアクセス可能な共用メモリに記憶され、ピッチベンダやホイルなどの操作子などから得られた情報をサービスするためのものである。
【0056】
これらの定常処理パラメータは、音源タスクが起動される度に読み込まれ、発音中に音源タスク内部で生成されるエンベロープやLFOなどと合成されることになり、こうして合成されたデータを発音サービスパラメータと称する。
【0057】
発音サービスパラメータは、波形読み出しのピッチや、TVFのカットオフ周波数、TVAのアンプリチュード(増幅度)を制御する。
【0058】
(4)エフェクトパラメータ
エフェクトパラメータは、制御タスクと音源タスクとの両方からアクセス可能な共用メモリに記憶されたエフェクト制御用の情報であり、エフェクトに渡される。このエフェクトパラメータは、音源タスクが起動される度に読み込まれ、前回読み込んだ内容と異なるパラメータがあれば、それをエフェクトに反映することになる。
【0059】
なお、エフェクトパラメータは、エフェクトの具体的内容によってパラメータが異なるものであり、エフェクトの具体的内容は本発明の要旨から外れるものであるので、その詳細な説明は省略する。
【0060】
(5)ボイス開放情報
ボイス開放情報は、音源タスクから制御タスクへ返されるものであり、発音が終了したボイスの番号を示す。なお、各ボイスの発音終了は、TVAのエンベロープにより判断する。このボイス開放情報はメモリ空間を用いるのではなく、イベントによって制御タスクへ渡される。
【0061】
ここで、イベントフラグ、発音パラメータ、定常処理パラメータおよびエフェクトパラメータが共有メモリを用いて受け渡しが行われるのに対して、ボイス開放情報がイベントで渡されるというタスク間の通信方法の違いは、音源タスクはタイマにより起動されるため、制御タスク側から非同期なイベント情報を受け取ることができないためである。
ところで、上記した制御タスク、音源タスクおよび出力タスクには優先度(プライオリティ:priority)が設けられていて、他のタスクなどにより処理を中断されることが好ましくないタスクは、優先度を高くするようになされている。なお、この実施の形態においては、出力タスクの優先度が最も高く、次に音源タスクの優先度が高く、制御タスクの優先度が最も低くなされている。
【0062】
以下、図4および図5を参照しながら、制御タスク、音源タスクおよび出力タスクを詳細に説明する。
【0063】
(1)制御タスク
制御タスクはMIDI情報を得て音源タスクを制御するものであり、シーケンサのプログラムからのMIDI情報や音源タスクからのボイス解放情報を受け取ることにより起動される。
【0064】
ここで、制御タスクは、各ボイスに関して、当該ボイスが発音中か空いているかを示すボイス情報を常に管理しているものであり、MIDI情報としてノートオンを受け取ると、ボイス情報を参照して適当な空いているボイスを指定し、当該ボイスを用いて当該ノートオンを発音するように、当該ボイスに対して当該ノートオンに必要な発音パラメータを設定するとともにその後にイベントフラグに発音開始を設定し、指定したボイスのボイス情報を更新する処理を行う。そして、音源タスクにおいては、上記した制御タスクの処理に応じて、指定されたボイスで新たな発音を開始する。
【0065】
また、制御タスクは、MIDI情報としてノートオンを受け取ったときに、ボイス情報を参照して空きボイスが無い場合には、発音中のレベルが小さいボイスを選択したり、あるいは最も過去に発音開始されたボイスを選択したりするなど所定の選択基準により不必要と思われるボイスを選択し、当該ボイスを用いて当該ノートオンを発音するように、当該ボイスに対して当該ノートオンに必要な発音パラメータを設定するとともにその後にイベントフラグに発音開始を設定する処理を行う。そして、音源タスクにおいては、上記した制御タスクの処理に応じて、すばやく選択されたボイスの現在の発音をミュートしてから、選択されたボイスにより新たな発音を開始する。
【0066】
上記したように、制御タスクにおいては、MIDI情報としてノートオンを受け取ると、ボイスの割り当て、所謂、アサイン処理を行うことになる。
【0067】
一方、制御タスクは、MIDI情報としてノートオフを受け取ると、当該ノートオフに対応する発音中のボイスに対して発音を終了するように、イベントフラグに発音終了を設定する処理を行う。そして、音源タスクにおいては、上記した制御タスクの処理に応じて、当該ノートオフに対応する発音中のボイスを消音する。
【0068】
なお、後述するように、音源タスク中のボイスの処理に関しては、発音していないボイスに対しては行われない。従って、発音ボイス数に応じて、音源タスクの演算量が増減することになる。このため、本発明においては、最大発音可能な発音数は、コンピュータの能力に応じて予め設定できるとともに、適宜変更することができるようになされている。
【0069】
また、制御タスクは、MIDI情報として定常処理パラメータ、エフェクトパラメータの値を変更するメッセージを受け取ると、対応する定常処理パラメータ、エフェクトパラメータを音源タスクに引き渡す処理を行う。
【0070】
さらに、制御タスクは、音源タスクから制御タスクへボイス解放情報が渡された場合には、渡されたボイス解放情報に応じて指定したボイスのボイス情報を更新する。
【0071】
(2)音源タスク
音源タスクは10ms(ミリ秒)毎にタイマによって起動され、10ms分の波形読み出し、TVF、TVA、パン、エンベロープ、LFO、エフェクト処理をまとめてなるべく短時間で行う。上記したように、音源タスクは10ms分の処理を行うものであるので、サンプリング周波数を32KHzとすると、320サンプル分の処理を行うことになる。
【0072】
そして、音源タスクは起動される度にイベントフラグの内容をサーチし、発音開始フラグを見つけると、発音パラメータに従って発音を開始する。この際に、発音パラメータを記憶するメモリ空間は、ボイス毎に2面づつ設けられており、音源タスクがイベントフラグに発音開始のフラグを見つけると、音源タスクはこれ以後に音源タスクが参照するメモリ空間を今まで参照していた面からもう一つの面に切り換えるとともに、今まで参照していた面を制御タスクに渡す。従って、制御タスクは、同じボイス番号の発音パラメータを設定する場合でも、音源タスクから渡された現在処理中の面とは異なるもう一面の新しいメモリ空間を用いることによって、音源タスク側で発音時に参照される現在処理中の面のパラメータエリアを壊すことなしに、音源タスクへ発音パラメータの引き渡し行うことができる。
【0073】
ここで、各ボイスにおける処理を説明すると、音源タスクにおいては、共有のメモリに記憶される発音パラメータおよび定常処理パラメータは、音源タスクが起動される度に取り込まれ、エンベロープやLFOの演算およびそれに定常処理パラメータを反映し、発音サービスパラメータを生成する演算を行う。こうして生成された発音サービスパラメータにより、波形読み出しのピッチや、TVFのカットオフ周波数、TVAのアンプリチュード(増幅度)が制御され、発音パラメータのエフェクト送り量に応じてボイスの出力をエフェクトへ引き渡し、エフェクトを付加されていないボイスの出力は発音パラメータのパンによりパンポットを制御されてステレオ出力される(図5(a))。
【0074】
そして、エフェクトパラメータによって制御されたエフェクトを付加された各ボイスの出力とエフェクトを付加されていない各ボイスの出力とが、ミキシングされてステレオ出力され(図5(b))、最終的にウェーブバッファへ記憶されて出力タスクへ引き渡される。
【0075】
図6には、発音サービスパラメータの生成の処理を示すフローチャートが示されており、最初のボイスからボイス毎に順次処理が行われる。
【0076】
まず、イベントフラグが発音開始を示しているかチェックし(ステップS602)、イベントフラグが発音開始を示していない場合には、イベントフラグが発音終了を示しているかチェックする(ステップS604)。
【0077】
ステップS604でイベントフラグが発音終了を示していない場合には、発音中を示すフラグであるvoiceActiveに「1」がセットされていて、発音中であることを示しているかをチェックする(ステップS606)。
【0078】
一方、ステップS604でイベントフラグが発音終了を示している場合には、それを受けてエンベロープをリリース処理へ進め(ステップS608)、前回処理の際の発音サービスパラメータの計算値n1をn0にセット(ステップS610)した後に、エンベロープ、LFOおよび定常処理パラメータを反映させた演算を行い発音サービスパラメータを生成して計算値n1にセットする(ステップS612)。即ち、前回処理からの10msの時間経過に応じてエンベロープ、LFOの値を変化させ新たなエンベロープ、LFOおよび定常処理パラメータを合成(加算あるいは乗算)して発音サービスパラメータを生成する。なお、発音サービスパラメータは、波形読み出しのピッチ、TVF、TVAそれぞれについて独立に演算する。
【0079】
また、ステップS606でvoiceActiveに「1」がセットされていて、発音中である場合にも、前回処理の際の発音サービスパラメータの計算値n1をn0にセット(ステップS610)した後に、エンベロープ、LFOおよび定常処理パラメータを反映させた演算を行い発音サービスパラメータを生成して計算値n1にセットする(ステップS612)。なお、発音サービスパラメータは、波形読み出しのピッチ、TVF、TVAそれぞれについて独立に演算する。ところで、ステップS602でイベントフラグが発音開始である場合には、制御タスク、音源タスクの使用する発音パラメータエリアを示すポインタを、もう一面の発音パラメータエリアを示すものに更新し(ステップS614)、voiceActiveに「1」がセットされていて、発音中であることを示しているかをチェックする(ステップS616)。
【0080】
ステップS616でvoiceActiveに「1」がセットされていて、発音中である場合には、現在発音中のボイスを急速にミュートしてから(ステップS618)、エンベロープ、LFOおよび定常処理パラメータを反映させた演算を行い発音開始時の発音サービスパラメータを生成して計算値n0にセットする(ステップS620)。なお、発音サービスパラメータは、波形読み出しのピッチ、TVF、TVAそれぞれについて独立に演算する。
【0081】
一方、ステップS616でvoiceActiveに「1」がセットされておらず、発音中でない場合には、そのままステップS620へ進み、エンベロープ、LFOおよび定常処理パラメータを反映させた演算を行い発音開始時の発音サービスパラメータを生成して計算値n0にセットする。
【0082】
上記のようにして、ステップS620でエンベロープ、LFOおよび定常処理パラメータを反映させた演算を行い発音開始時の発音サービスパラメータを生成して計算値n0にセットし、それからvoiceActiveに「1」をセットして発音中であることを示し(ステップS622)た後に、発音開始からの10msの時間経過に応じてエンベロープ、LFOおよび定常処理パラメータを反映させた演算を行い発音サービスパラメータを生成して計算値n1にセットする(ステップS612)。なお、発音サービスパラメータは、波形読み出しのピッチ、TVF、TVAそれぞれについて独立に演算する。
【0083】
そして、ステップS612でエンベロープ、LFOおよび定常処理パラメータを反映させた演算を行い発音サービスパラメータを生成して計算値n1にセットすると、必要に応じて補間処理を行う際に用いるために、今回の発音サービスパラメータの計算値n1と前回の発音サービスパラメータの計算値n0との差分dを求め(ステップS624)、TVAのエンベロープが最後まで来ているかをチェックする(ステップS626)。
【0084】
ステップS626でTVAのエンベロープが最後まで来ていない場合には、そのままイベントフラグをクリアし(ステップS628)、ステップS626でTVAのエンベロープが最後まで来ている場合には、制御タスクにボイス解放情報を返し(ステップS630)、voiceActiveに「0」をセットして発音中でないことを示してから(ステップS632)、イベントフラグをクリアする(ステップS628)。
【0085】
また、ステップS606でvoiceActiveに「1」がセットされておらず発音中でない場合には、そのままイベントフラグをクリアする(ステップS628)。
【0086】
そして、イベントフラグをクリアすると(ステップS628)、それから全ボイスの処理が終わったかチェックする(ステップS634)。ステップS634でのチェックにより全ボイスの処理が終わったならば、このフローチャートの処理を終了するが、ステップS634でのチェックにより全ボイスの処理が終わっていないならば、ステップS602へ戻り以降の処理を繰り返して次のボイスの処理を行う。即ち、全ボイスの処理が終わるまで、このフローチャートの処理を繰り返すことになる。
【0087】
なお、発音サービスパラメータを受けて行われる波形読み出し、TVF、TVA、パンおよびエフェクトへの送り量の処理は、音源タスクが起動される度にこれらの処理をまとめて10ms分行い、その後に、エフェクト処理を10ms分まとめて行うものであり、図7にはこの処理のフローチャートが示されている。即ち、図7のフローチャートにおいては、最初のボイスからボイス毎に順次処理が行われる。
【0088】
まず、voiceActiveに「1」がセットされていて、発音中であることを示しているかをチェックし(ステップS702)、ステップS702でvoiceActiveに「0」がセットされていて、発音中でない場合には、全ボイスの処理が終わったかをチェックするステップS714へジャンプして進み、次のボイスの処理へ移る。つまり、このフローチャートにおいては、発音されていないボイスの処理は行わないことになる。
【0089】
一方、ステップS702でvoiceActiveに「1」がセットされていて、発音中である場合には、発音サービスパラメータの示すピッチで発音するように波形読み出しを行う(ステップS704)。ここで、発音サービスパラメータは、図6に示すフローチャートのステップS624で求めた差分dを用いて、必要な精度まで直線補間される。即ち、サンプリング周波数32KHzとすると、図6に示すフローチャートのステップS610あるいはステップS620で求めた計算値n0にセットされた発音サービスパラメータとステップS624で求めた差分dを用いて、
n0+d×k/320
なる演算を行い補間値とする。なお、320はサンプリング周波数32KHz時の10ms分のサンプル数であり、kは320サンプルのうちの何番目のサンプルであるかを示しており、最初の処理では‘0’、以後処理の度に‘1’、‘2’、・・・とされる値である。
【0090】
次に、ステップS704の波形読み出しの出力をTVFによりフィルタリングする(ステップS706)。ここで、TVFのカットオフ周波数は発音サービスパラメータによって制御され、発音サービスパラメータは、図6に示すフローチャートのステップS624で求めた差分dを用いて、必要な精度に直線補間して用いる。
【0091】
さらに、ステップS706のフィルタリングされた出力のアンプリチュードを、TVAにより発音サービスパラメータに従って制御する(ステップS708)。ここで、発音サービスパラメータは、図6に示すフローチャートのステップS624で求めた差分dを用いて、必要な精度に直線補間して用いる。
【0092】
さらに次に、発音パラメータによって、パンおよびエフェクトへの送り量を制御するとともに図5(b)に示される他のボイスの楽音信号との加算混合処理を行い(ステップS710)、その後に、10ms分の処理を終えたかチェックされ(ステップS712)、10ms分の処理を終わっていなければ、ステップS704へ戻って次のサンプルに関してステップS704以降の処理を行う。即ち、ステップS704乃至ステップS710の処理は、サンプル毎の処理であり、10ms分のサンプル個数の処理が行われる。
【0093】
一方、10ms分の処理を終わったならば、全ボイスの処理が終わったかチェックする(ステップS714)。このチェックにより、全ボイスの処理が終わったならば、エフェクトの処理を10ms分まとめて行い(ステップS716)、上記した処理の行われた10ms分の楽音信号を記憶したウェーブバッファを出力タスクに渡し(ステップS718)、このフローチャートの処理を終了する。ここで、上記した処理の行われた楽音信号を記憶したウェーブバッファを出力タスクに渡すと同時に、新しいウェーブバッファを受け取り、新しいウェーブバッファは、次回のステップS702乃至ステップS716の処理に用いる。
【0094】
一方、ボイスの処理が終わっていないならば、ステップS702へ戻り以降の処理を繰り返して次のボイスの処理を行う。即ち、全ボイスの処理が終わるまで、このフローチャートの処理を繰り返すことになる。
【0095】
(3)出力タスク
出力タスクは、音源タスクより受け取ったウェーブバッファの記憶内容を、オーディオデータ出力デバイス(図1に示すコンピュータにおいては、サウンドカード22である。)にDMA転送する。このDMA転送は、オーディオデータ出力デバイスからの割り込みによって開始される。
【0096】
ここで、サウンドカード22などのオーディオデータ出力デバイス(以下、「出力デバイス」と称す。)は、出力するオーディオデータを一時記憶するためのバッファを内蔵しており、サンプリング周期毎に一時記憶しているオーディオデータを1サンプリング分づつ出力する。そして、内蔵バッファに残っているオーディオデータが所定量より少なくなると出力タスクに割り込みをかけ、この割り込みに応じて、出力タスクは出力デバイスが必要とする所定サンプル分のオーディオデータを出力デバイスにDMA転送するものである。
【0097】
なお、上記した出力タスクへの割り込みは、通常は、数ms程度の周期でかかるものである。
【0098】
即ち、図1に示すコンピュータにおいては、出力タスクは、サウンドカード22からの割り込みと音源タスクからのウェーブバッファを受け取るときに起動される。
【0099】
そして、出力タスクは、音源タスクから10ms分のウェーブバッファを受け取ると、空いているウェーブバッファを音源タスクに返す。ウェーブバッファは4本以上あり、常に1つは出力タスクが出力デバイスに出力を行い、1つは音源タスクが処理に用い、1つは空いており、1つは出力デバイスへの出力待ちとなっており、残りのものは空いているか、出力デバイスへの出力待ちとなっているという、ローテーションを繰り返すようになされている。
【0100】
なお、コンピュータ本体とサウンドカード22とに別々にその動作速度を決定する源発振器である水晶が搭載されており、両者の動作速度の同期がなされていない場合には、水晶の発振周波数の誤差の分だけ両者の動作速度に誤差が生じることとなる。
【0101】
この場合、音源タスクが楽音信号を生成する速さと出力デバイスが楽音信号を出力する速さとが異なることとなる。音源タスクの速度の方が速い場合には、出力待ち状態とされているウェーブバッファの上に音源タスクが新たなデータを上書きしてしまいノイズ発生の原因となり、音源タスクの速度の方が遅い場合には、出力待ち状態とされているウェーブバッファのデータを出力デバイスが全て出力してしまい音が途切れることとなる。
【0102】
このようなことを防ぐために、ウェーブバッファの空き具合を常に監視し、空いているウェーブバッファの数が所定量よりも少ない場合には、音源タスクの起動周期を長くし(例えば、11msとする。)、空いているウェーブバッファの数が所定量よりも多い場合には、起動タスクの起動周期を短くする(例えば、9msとする。)。勿論この場合であっても、音源タスクの一度の起動により生成する楽音信号のサンプル数は一定(例えば、10ms分)としておく。このような処理を行うことにより、ウェーブバッファには常に一定量の出力待ち状態の楽音信号が蓄えられるようになるため、上記したようなノイズの発生や音切れを防ぐことができる。
【0103】
ところで、このシンセサイザプログラムにおいては、音源タスクとそれを制御する制御タスクとの通信をメモリ空間を共有することで実現するようにしている。
【0104】
即ち、図8に示すように、音源タスクと制御タスクとが共有するメモリ空間は2面(図8におけるメモリ空間Aおよびメモリ空間B)設けられていて、それらを交互に用いるようになされている。
【0105】
具体的には、制御タスク側は発音に必要なパラメータをメモリ空間Aの発音パラメータエリアに用意し、発音パラメータが用意できた旨をフラグを立てることによって音源タスク側に知らせる。そして、音源タスク側においては、メモリ空間Aの発音パラメータエリアを取り込むと、もう一面(メモリ空間B)の発音パラメータエリアを制御タスク側に渡す。制御タスク側は、新たに同じボイスで発音する場合には、新しく渡されたメモリ空間Bの発音パラメータエリアに対してパラメータを用意する。
【0106】
これによって、音源タスク側が発音中で発音パラメータを使用していても、制御タスク側はそれを気にすることなく新しい発音パラメータを設定することができる。
【0107】
なお、2面のメモリ空間の管理方法として1つのポインタのみを設けるようにした場合には、制御タスクはこのポインタの指し示す片方のメモリ空間に新たなパラメータを記憶するとともに、音源タスクは他方のメモリ空間に記憶されたパラメータを参照する。あるいは、制御タスクがパラメータを書き込むメモリ空間を指し示すポインタと、音源タスクがパラメータを参照するメモリ空間を指し示すポインタとを別々に設けるようにした場合には、これらのポインタの指し示すメモリ空間を互いに逆とすればよい。
【0108】
なお、この汎用のコンピュータにおいては、使用者はキーボード28を介して、音源ボード34ならびにシンセサイザプログラムに対して種々の指示を行うことが可能となされている。そして、キーボード28から何らかの指示がなされた場合には、当該指示の種類に応じた処理のプログラムが起動されて、当該指示に応じた制御情報が音源ボード34ならびにシンセサイザプログラムへ供給され、音源ボード34ならびにシンセサイザプログラムは当該制御情報に応じてその設定状態が変化される。
【0109】
ここで、上記した設定状態には、例えば、調律(キーボード28の中央Cを指定したときに生成される楽音の音高の設定)や生成される楽音の音色(「ピアノ」、「オルガン」、「バイオリン」、「トランペット」などのそれぞれの自然楽器に対応する音色の指定)などがある。
【0110】
ところで、上記した設定状態に関しては、音源ボード34とシンセサイザプログラムとが同一の設定状態になっている方が、演奏上は好都合である。即ち、音源ボード34とシンセサイザプログラムとで調律が異なっていると、同じキーボード28の中央Cを指定したとしても、音源ボード34とシンセサイザプログラムとで異なる音高の楽音が生成されることとなってしまい、演奏上不都合を生じさせることとなる。このため、設定状態の変更して調律の変更が指示された場合には、図9に示す調律指示処理プログラムが起動され、音源ボード34とシンセサイザプログラムとに同じ音高指定値たる調律値に対応する音高制御情報が同時に供給されるようになされている。
【0111】
即ち、調律指示処理プログラムが起動されると、シンセサイザプログラムに指示された調律値に対応する音高制御情報を供給し(ステップS902)、さらに、音源ボード34に指示された調律値に対応する音高制御情報を供給してから(ステップS904)、この調律指示処理プログラムの処理を終了する。
【0112】
また、この汎用のコンピュータにおいては、音源ボード34とシンセサイザプログラムとでは音源が異なるので、音源ボード34とシンセサイザプログラムとで全く同じ音色が生成されることはなく、音源ボード34とシンセサイザプログラムとにおいて同一の音色の名称で示される音色といえども、実際には両者で類似した音色が生成されることになる。従って、この汎用のコンピュータにおいては音色は音色番号により指定するので、音源ボード34とシンセサイザプログラムとでは、同一の音色の名称で示される音色に対してそれぞれ異なる音色番号が対応することになる。
【0113】
そこで、この汎用のコンピュータにおいては、音源ボード34あるいはシンセサイザプログラムのいずれかに対して音色の変更を指示した場合には、図10に示す音色指示処理プログラムが起動されて、指示した音色と類似の音色が、音色の変更を指示されていない音源ボード34あるいはシンセサイザプログラムにも設定されるようになっている。即ち、メモリ14には、音源ボード34およびシンセサイザプログラムの各音色に関して、それぞれ相手方の類似の音色の対応表が記憶されており、音源ボード34あるいはシンセサイザプログラムのいずれかに対して音色の変更の指示がなされた場合には、上記した対応表を参照して、相手方にも指定した音色と類似の音色への音色の変更が指示されることになる。
【0114】
図10に示す音色指示処理プログラムの処理を、より詳細に説明すると、まず音色指示処理プログラムが起動されると、音源ボード34とシンセサイザプログラムとのいずれの音色の変更が指示されたかを判断する(ステップS1002)。
【0115】
ステップS1002において、音源ボード34の音色の変更が指示されたと判断された場合には、指示された音色への変更を示す音色変更制御情報を音源ボード34へ供給し(ステップS1004)、さらに、上記した対応表を参照して指示された音色と類似の音色への変更を示す音色変更制御情報をシンセサイザプログラムへ供給して(ステップS1006)、この音色指示処理プログラムの処理を終了する。
【0116】
一方、ステップS1002において、シンセサイザプログラムの音色の変更が指示されたと判断された場合には、指示された音色への変更を示す音色変更制御情報をシンセサイザプログラムへ供給し(ステップS1008)、さらに、上記した対応表を参照して指示された音色と類似の音色への変更を示す音色変更制御情報を音源ボード34へ供給して(ステップS1010)、この音色指示処理プログラムの処理を終了する。
【0117】
なお、上記した実施の形態においては、シーケンサのプログラムから供給されたMIDI情報は全てシンセサイザプログラムにより楽音信号を生成するようにしているが、シンセサイザプログラムが複数チャンネルのMIDI情報を受け取り、各チャンネルに対応する複数のパートで異なる音色の楽音を同時に生成可能となされている場合、即ち、シンセサイザプログラムにより、所謂、マルチティンバ音源の動作が実現される場合には、シーケンサのプログラムから供給される特定のチャンネルのMIDI情報は、シンセサイザプログラムに供給しないようにしてもよい。
【0118】
このように、シーケンサのプログラムから供給される特定のチャンネルのMIDI情報をシンセサイザプログラムに供給しないようにした場合には、当該特定のチャンネルに対応するパートに関しては、他の電子楽器36による演奏者の演奏により音源ボード34で楽音信号を生成することができる。つまり、演奏者はシーケンサのプログラムによる自動演奏を聴取しながら、特定のパートに関しては演奏者自らが演奏を行うことができるようになる。
【0119】
こうした場合に、全てのパートでシーケンサのプログラムに基づいてシンセサイザプログラムにより楽音信号を生成するモードと、演奏者により指定された特定のパートに関しては音源ボード34により演奏者の演奏による楽音信号を生成させ、その他のパートに関してはシーケンサのプログラムに基づいてシンセサイザプログラムにより楽音信号を生成するモードとを、任意に切り換えることができるようにしてもよい。
【0120】
また、上記した実施の形態においては、他の電子楽器36から供給されたMIDI情報は全て音源ボード34により楽音信号を生成するようにしているが、他の電子楽器36から供給されたMIDI情報により音源ボード34で楽音信号を生成するモードと、他の電子楽器36から供給されたMIDI情報によりシンセサイザプログラムで楽音信号を生成するモードとを設定し、これらのモードを任意に切り換えることができるようにしてもよい。
【0121】
さらに、上記した実施の形態においては、シンセサイザプログラム、音源ボードのいずれで楽音信号を生成させるかを、これらのいずれにMIDI情報を供給するかにより制御しているが、他の方法により制御してもよい。例えば、シンセサイザプログラム、音源ボードのいずれにもMIDI情報を供給するが、楽音信号を生成させない方には、音量を0に設定する音量制御信号も供給するようにすればよい。
【0122】
【発明の効果】
以上において説明したように、本発明による演奏情報処理方法は、パーソナルコンピュータやワークステーションなどの汎用のコンピュータ上でソフトウェアによりシンセサイザを構築する際において、演奏者のリアルタイム演奏に対応して放音すべき楽音を、発音指示から大きな遅延時間を要することなく迅速に放音することができるという優れた効果を奏する。
【図面の簡単な説明】
【図1】本発明の演奏情報処理方法によるプログラムを搭載可能な、典型的な汎用のコンピュータのハードウェア構成を示すブロック図である。
【図2】本発明の演奏情報処理方法の概念図である。
【図3】振り分けプログラムの処理内容を示すフローチャートである。
【図4】シンセサイザプログラムの全体構成を示す概念図である。
【図5】音源タスクにおける処理を示す概念図であり、(a)は1ボイス分の処理を示し、(b)はボイスおよびエフェクトのミキシングを示す。
【図6】音源タスクにおける発音サービスパラメータの生成の処理を示すフローチャートである。
【図7】音源タスクにおける発音サービスパラメータを受けて行われる波形読み出し、TVF、TVA、パンおよびエフェクトへの送り量の処理を示すフローチャートである。
【図8】音源タスクと制御タスクとが共有するメモリ空間が2面設けられていて、それを交互に使用する状態を示した説明図である。
【図9】調律指示処理プログラムの処理内容を示すフローチャートである。
【図10】音色指示処理プログラムの処理内容を示すフローチャートである。
【符号の説明】
10 バス
12 CPU
14 メモリ
16 ディスクコントローラ
18 ビデオカード
20 I/Oカード
22 サウンドカード
24 ハードディスク
26 ディスプレイ装置
28 キーボード
30 マウス
32 MIDIインターフェース
34 音源ボード
36 他の電子楽器
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a performance information processing method, and more particularly to a performance information processing method suitable for use in constructing a synthesizer by software on a general-purpose computer such as a personal computer or a workstation.
[0002]
BACKGROUND OF THE INVENTION AND PROBLEMS TO BE SOLVED
Conventionally, in order to generate a musical sound, it has been necessary to use dedicated hardware for generating a musical sound, a so-called electronic musical instrument.
[0003]
However, in recent years, general-purpose computers have been equipped with high-performance CPUs and D / A converters (digital-analog converters) for outputting data processed by the CPU as analog signals to the outside. Accordingly, the possibility that musical sounds can be generated in real time on a general-purpose computer without using dedicated hardware has been studied.
[0004]
Specifically, since the musical sound data must be output to the D / A converter accurately at every sampling period, it is considered to perform processing for generating musical sound data at every sampling period according to a timer. Yes.
[0005]
In order to realize this processing, it is conceivable to perform processing for generating musical tone data in the interrupt routine according to the timer interrupt generated at each sampling period, but the processing for generating musical tone data is complicated. It has been pointed out that it is difficult to perform such complicated processing in the interrupt routine.
[0006]
Alternatively, in order to realize the above-described processing, it is conceivable to perform processing for generating musical tone data by a task activated at each sampling cycle, but according to this, the task is performed at a complicated timing at every sampling cycle. It is necessary to perform the process of switching the task, and the overhead for task switching increases, and the time that the CPU can actually process is shortened.
[0007]
By the way, in general, it is possible to use one software on various general-purpose computers. However, the capabilities of the CPUs mounted on these various general-purpose computers vary widely, and are adjusted to match those of low-performance CPUs. When software is created, there is a problem that a computer equipped with a high-capacity CPU cannot fully use the CPU power.
[0008]
In general-purpose computers, a method of using a plurality of software programs at the same time is generally performed. However, when processing other than the processing for generating a musical tone is performed simultaneously with the processing for generating a musical tone, The load on the CPU changes every moment according to the processing status of other processes. For this reason, when software is created in accordance with the heaviest CPU load, there is a problem in that the CPU capacity cannot be fully used when the load is light.
[0009]
Further, in general, at least a part of the process of generating a musical tone by the CPU is repeatedly performed at regular time intervals. For example, note-on (sounding start) / note-off (sounding end) of MIDI information is indicated. The instruction is generated asynchronously with the repetition interval in accordance with a user (user) desired timing. That is, data is transferred to a process for generating a musical tone in accordance with an instruction indicating note-on / note-off, and a process for generating a musical tone based on the transferred data in the process of generating a musical sound that has received the data. However, since the instruction indicating note-on / note-off is asynchronous with the repetition interval, the instruction indicating note-on / note-off is performed during the process of generating a musical tone. There is a problem that noise is generated in the musical tone being generated if the processing is performed to rewrite the data or generate the musical tone while rewriting the data according to the instruction indicating note on / note off. The need to improve the data transfer method was pointed out.
[0010]
For this reason, the applicant of the present application solves the various problems described above by performing processing suitable for a general-purpose computer, and can generate a musical sound efficiently in real time on the general-purpose computer. A patent application has already been filed as a “musical tone generation processing method” in 1996 Patent Application No. 147820 (filing date: May 20, 1996).
[0011]
In this 1996 Patent Application No. 147820 “Musical Sound Generation Processing Method”, musical sounds are efficiently generated in real time on a general purpose computer without using dedicated hardware for generating musical sounds. It is designed to build a synthesizer by software on a computer.
[0012]
Here, the 1996 Patent Application No. 147820 “Musical Sound Generation Processing Method” will be described. The 1996 Patent Application No. 147820 “Musical Sound Generation Processing Method” includes four wave buffers capable of storing a musical sound signal for 10 ms. The sound source task that is provided more than 10 ms and is activated every 10 ms stores a musical sound signal for 10 ms in the wave buffer, and simultaneously passes the wave buffer storing the musical sound signal for 10 ms to the output task. It is designed to receive new wave buffers.
[0013]
When the output task receives a wave buffer storing a musical tone signal for 10 ms from the sound source task, it returns the free wave buffer to the sound source task and transfers the stored wave buffer to the audio data output device. Is stored in the wave buffer that has received the earliest musical sound signal for the predetermined number of samples required by the audio data output device in response to an interrupt from the audio data output device in chronological order. Only the DMA transfer to the audio data output device is made.
[0014]
The audio data output device has a built-in buffer for temporarily storing the audio data to be output, outputs the audio data temporarily stored for each sampling period for each sampling, and the audio data remaining in the built-in buffer. The output task is interrupted when becomes less than a predetermined amount. Then, the audio data output from the audio data output device is emitted as a musical sound.
[0015]
The interruption to the output task described above usually takes a cycle of about several ms.
[0016]
One of the four or more wave buffers described above is always output by the output task to the audio data output device, one is used by the sound source task for processing, one is free, and one is the audio data output device. The rotation is repeated such that the remaining ones are free or the other ones are free or waiting for output to the audio data output device.
[0017]
As described above, the 1996 Patent Application No. 147820 “Musical Sound Generation Processing Method” is configured to output a musical sound signal via a wave buffer or an internal buffer of an audio data output device. For this reason, the tone generator task can perform the generation process of the tone signal for 10 ms, and the tone signal is interrupted even if the start timing of the tone generator task is slightly delayed due to the processing of tasks other than the tone generator task. This produces an excellent effect of being output without any problems.
[0018]
If you want to increase the allowable delay in the start timing of the sound source task, increase the number of wave buffers, and increase the number of wave buffers waiting to be output to the audio data output device. Good.
[0019]
By the way, the 1996 Patent Application No. 147820 “Musical Sound Generation Processing Method” is configured to output a musical sound signal via a buffer such as a wave buffer or an internal buffer of an audio data output device as described above. Therefore, it takes a time interval of at least several tens of ms from when note-on is received as MIDI information until the musical sound corresponding to the received note-on is actually emitted. For this reason, when MIDI information is supplied by a sequencer (automatic performance), the sound generation timing in the entire performance is delayed by several tens of ms, respectively. The end of the performance is only delayed by several tens of ms, and does not cause any problems. However, when the MIDI information is supplied by a real-time performance such as a keyboard performance of the performer, the musical tone corresponding to the note-on is supplied after the player presses the keyboard to supply the note-on. Since a delay of several tens of ms occurs before the sound is actually emitted, the delay time is too long, and the follower between the performance by the performer and the musical sound to be emitted is inferior, and the performer performs naturally. There was a problem that could not be done. In particular, such problems have become extremely alarming when the performance data played by the performer in real time is input to the sequencer as sequence data.
[0020]
When the number of wave buffers in the output waiting state is increased, this delay amount becomes larger, and such a problem becomes larger.
[0021]
The present invention has been made in view of the above-described problems, and the object of the present invention is to perform a player's synthesizer with a software on a general-purpose computer such as a personal computer or a workstation. It is an object of the present invention to provide a performance information processing method capable of promptly emitting a musical sound to be emitted in correspondence with a real-time performance without requiring a large delay time from a pronunciation instruction.
[0022]
[Means for Solving the Problems]
In order to achieve the above object, the performance information processing method according to the present invention is a method for generating a musical tone signal, for example, as a dedicated hardware sound source independent of a general-purpose computer among recent general-purpose computers. It was made by paying attention to the fact that some sound source boards composed of dedicated hardware are installed.
[0023]
It is known that the above-described sound source board is inexpensive and is used for a sound source of a computer game, so that it is mounted on a large number of general-purpose computers. That is, many general-purpose computers are already equipped with a sound source board when purchased by a user.
[0024]
By the way, as described above, such a sound source board is inexpensive and mainly used for a sound source of a computer game. Compared to the one generated by building a synthesizer by software on a general-purpose computer of No. 147820 “Musical sound generation processing method”, it is not satisfactory in terms of music, but it is composed of dedicated hardware. Therefore, a delay time from when a note-on is supplied until the tone signal corresponding to the note-on is output to the outside, that is, a tone corresponding to the note-on after the note-on is supplied is actually released. The delay time until the sound is played is short, and it can sufficiently follow the real-time performance by the performer. In the performance information processing method according to the present invention, for example, such a sound source board is used as a dedicated hardware sound source independent of a general-purpose computer, and a musical tone signal based on a real-time performance by a performer is generated by the sound source board. It is what.
[0025]
That is, in the performance information processing method according to the first aspect of the present invention, the general-purpose processing device is operated based on software, and the sound source processing constituting the first sound source means and the supplied performance information are automatically performed. A discriminating process for discriminating whether the performance is due to the performance or the performance of the performer, and if the performance information supplied by the discriminating process is determined to be due to an automatic performance, the sound source processing is performed based on the supplied performance information When the musical performance signal supplied by the discrimination process is determined to be due to the performance of the performer, a dedicated signal independent of the general-purpose processing device is generated based on the supplied performance information. And a performance control process for generating a musical sound signal by the second sound source means constituted by the hardware sound source.
[0026]
Therefore, according to the performance information processing method of the first aspect of the present invention, the performance information supplied by the performer's performance is a dedicated hardware sound source that is independent of the general-purpose processing device. Since the tone signal is generated by the two tone generator means, the tone to be emitted in response to the performance of the performer can be emitted promptly without requiring a large delay time from the pronunciation instruction.
[0027]
Here, for example, the discriminating process discriminates that the performance information supplied from the sequencer program of the general-purpose processing device is based on the automatic performance as in the performance information processing method according to claim 2 of the present invention. The performance information supplied from the performance information input interface may be processing for determining that the performance information is based on the performance of the performer.
[0028]
Further, in the performance information processing method according to claim 1 as in the performance information processing method according to claim 3 of the present invention, the first sound source means and the second sound source means according to instructions from the performer. And a process of supplying common control information to the sound source means.
[0029]
Therefore, according to the performance information processing method of the third aspect of the present invention, tuning and timbre can be shared between the first sound source means and the second sound source means.
[0030]
In the performance information processing method according to the fourth aspect of the present invention, the general-purpose processing device is operated based on software, and the sound source processing constituting the first sound source means and the supplied performance information are automatically performed. The first mode and the second mode are discriminating processing for discriminating whether the performance is due to the performance or the performance of the performer, and the processing information when the performance information supplied by the discrimination processing is determined to be due to the automatic performance. And when the first mode is set by the setting process when it is determined that the performance information supplied by the determination process is based on the automatic performance, and the setting process sets the first mode, A musical tone signal is generated by the sound source process based on the supplied performance information, and the performance information supplied by the determination process is determined to be an automatic performance. When the second mode is set by the setting process, a tone signal is generated by the tone generator process based on a part of the supplied performance information, and the performance information supplied by the discrimination process is If it is determined that the performance is performed by the performer, a musical tone signal is generated by the second sound source means composed of a dedicated hardware sound source independent of the general-purpose processing device based on the supplied performance information. Performance control processing to be performed.
[0031]
Therefore, according to the performance information processing method according to claim 4 of the present invention, for example, with respect to a specific part of the performance by automatic performance, the first sound source means does not generate a musical sound, and the specific part is played. The music can be generated by the second sound source means when the person performs.
[0032]
In the performance information processing method according to claim 5 of the present invention, the general-purpose processing device is operated based on software, whereby the sound source processing constituting the first sound source means and the supplied performance information are automatically performed. A determination process for determining whether it is due to a performance or a performance by a performer, and a first mode as a processing mode when it is determined that the performance information supplied by the determination process is due to a performer's performance, When it is determined that the performance information supplied by the setting processing for setting the second mode and the performance determination processing is based on the automatic performance, a musical tone signal is generated by the sound source processing based on the performance performance information supplied. And the first mode is set by the setting process when it is determined that the performance information supplied by the determination process is based on the performance of the performer. Generates a musical tone signal by the second sound source means composed of a dedicated hardware sound source independent of the general-purpose processing device based on the supplied performance information, and the performance information supplied by the discrimination processing is If it is determined that the performance is performed by the performer and the second mode is set by the setting process, a tone signal is generated by the tone generator process based on the supplied performance information. The performance control process is performed.
[0033]
Therefore, according to the performance information processing method according to claim 5 of the present invention, the performance information supplied by the performer's performance is supplied to the first sound source means by switching the mode, and the first sound source means. Thus, a musical tone can be generated.
[0034]
As described above, since the sound source board is already mounted on many general-purpose computers, the sound source is used as the second sound source means constituted by a dedicated hardware sound source independent of the general-purpose processing device. When using a board, there is an effect that the user does not need to make a new investment in hardware.
[0035]
In addition, as described above, the quality of the tone signal generated by the tone generator board is not satisfactory in terms of music. However, when the performance data played by the performer in real time is input to the sequencer as sequence data. Since the purpose is to input performance data to the sequencer, the quality of the tone signal generated by the tone generator board is not musically satisfactory, and no inconvenience arises. That is, when the sequence data inputted while listening to the musical sound generated by the tone generator board is reproduced by the sequencer, the musical tone signal is not generated using the tone generator board, but the 1996 Japanese Patent Application No. 147820. A musical tone signal may be generated by constructing a synthesizer by software on a general-purpose computer of the “musical sound generation processing method”, and a musical tone signal having a quality satisfactory in terms of music can be obtained when sequence data is reproduced.
[0036]
Note that a medium recording a program for causing a computer to execute the performance information processing described in claims 1 to 5 belongs to the scope of the present invention.
[0037]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, an example of an embodiment of a performance information processing method of the present invention will be described in detail with reference to the accompanying drawings.
[0038]
FIG. 1 is a block diagram showing a hardware configuration of a typical general-purpose computer on which a program according to the performance information processing method of the present invention can be installed.
[0039]
The general-purpose computer shown in FIG. 1 has a very general configuration, and via a bus 10, a CPU 12, a memory 14, a disk controller 16, a video card 18, an I / O card 20, A sound card 22, a MIDI interface 32, and a sound source board 34 composed of hardware independent of the general-purpose computer are connected. Furthermore, a hard disk 24 is connected to the disk controller 16, and the video card 18. Is connected to a display device 26, a keyboard 28 and a mouse 30 are connected to the I / O card 20, and another electronic musical instrument 36 such as a keyboard is connected to the MIDI interface 32. In this general-purpose computer, musical sound signals are appropriately output from the sound card 22 and the sound source board 34.
[0040]
That is, in this general-purpose computer, as shown in FIG. 2, the program is supplied from a sequencer program that is started simultaneously with a music generation process program (hereinafter referred to as a “synthesizer program”) in a general-purpose computer. The MIDI information and the MIDI information supplied from the other electronic musical instrument 36 are appropriately distributed to the sound card 22 and the sound source board 34.
[0041]
Specifically, the MIDI information supplied from the sequencer program is supplied to the synthesizer program by the distribution program to generate a tone signal, and the tone signal is output via the sound card 22.
[0042]
On the other hand, the MIDI information supplied from the other electronic musical instrument 36 is supplied to the tone generator board 34 by the distribution program, and the tone generator board 34 generates and outputs a tone signal according to the supplied MIDI information. That is, in this general-purpose computer, when MIDI information is input from the other electronic musical instrument 36 to the MIDI interface 32, the MIDI interface 32 interrupts the CPU 12 in response to the input, and the CPU 12 responds to the interrupt by the sound source board. The processing for outputting a musical tone signal from the 34, that is, the processing for generating and outputting the musical tone signal in accordance with the MIDI information supplied to the MIDI interface 32 by the tone generator board 34 is executed.
[0043]
FIG. 3 shows a flowchart showing the processing contents of the distribution program. When MIDI information is supplied from a sequencer program, or MIDI information is supplied from another electronic musical instrument 36 via the MIDI interface 32. In this case, this distribution program is started first.
[0044]
When the distribution program is activated, it is first determined whether the supplied MIDI information is from the sequencer program or from the MIDI interface 32 (step S302).
[0045]
If it is determined in step S302 that the supplied MIDI information is from the MIDI interface 32, the MIDI information is supplied to the tone generator board 34 (step S304), and the distribution program is terminated.
[0046]
Then, the tone generator board 34 generates a tone signal according to the supplied MIDI information, and outputs the generated tone signal.
[0047]
On the other hand, if it is determined in step S302 that the supplied MIDI information is from the sequencer program, the MIDI information is supplied to the synthesizer program (step S306), and the distribution program is terminated.
[0048]
Next, the processing contents of the synthesizer program will be described. FIG. 4 shows the overall configuration of the synthesizer program, which includes a control task, a sound source task, and an output task.
[0049]
In other words, the control task executes the control program, exchanges MIDI information with the sequencer program, and passes the event flag, sound generation parameter, steady processing parameter, and effect parameter to the sound source task side, and the voice task from the sound source task side. Receive release information.
[0050]
The tone generator task performs processing relating to a plurality of voices (musical tone generation channels) and effects, stores the musical tone signal generated in the wave buffer, and delivers it to the output task. In other words, each of the multiple voices is processed, the output of each voice is transferred to the effect according to the effect feed amount of the sound generation parameter, which will be described later, and the output of each voice to which no effect is added and each voice with the effect added Are finally mixed and stored in the wave buffer and delivered to the output task.
[0051]
In the output task, wave output processing is performed using a wave buffer, and a musical sound signal is output to the outside. Then, the wave buffer used in the output task is returned to the sound source task side.
[0052]
As described above, information exchanged between the control task and the sound source task includes an event flag, a sound generation parameter, a steady process parameter, an effect parameter, and voice release information. Hereinafter, such information will be described.
[0053]
(1) Event flag
There are as many event flags as the number of voices, and the tone generator task receives information (flags) of the start and end of each voice by the event flag from the control task. The event flag is stored in a shared memory accessible from both the control task and the sound source task.
[0054]
(2) Pronunciation parameters
As will be described later, each time the sound source task is activated, the contents of the event flag are searched, and when the sound generation start flag is found, the sound generation starts according to the sound generation parameter. The sound generation parameter includes the following (a) for each voice: To (i).
(A) Parameters related to waveform readout
(Waveform start address, loop related address, pitch)
(B) Pitch LFO related parameters
(Waveform, period, delay, etc.)
(C) Filter LFO related parameters
(Waveform, period, delay, etc.)
(D) Amplifier LFO related parameters
(Waveform, period, delay, etc.)
(E) Pitch envelope parameters
(Attack, decay, sustain, release time and level)
(F) TVF (Time Variable Filter) Envelope-related parameters
(Attack, decay, sustain, release time and level)
(G) TVA (Time Variable Amplifier) envelope-related parameters
(Attack, decay, sustain, release time and level)
(H) Bread
(I) Effect feed amount
The sound generation parameters including these pieces of information are stored in a shared memory accessible from both the control task and the sound source task. Two memory spaces for storing the sound generation parameters are provided for each voice. In other words, when the tone generator task finds the sound start flag in the event flag, the tone generator task switches the memory space referenced by the tone generator task from the previously referenced plane to the other plane and refers to it until now. Pass the face that was left to the control task. Therefore, even when the sound parameters for the same voice number are set, the control task uses the new memory space on the other side that is different from the currently processed surface that is passed from the sound source task, so that the sound source task references The sound generation parameters can be transferred to the sound source task without destroying the parameter area of the currently processed surface. Conversely, it is possible to prevent the sound source task from referring to the parameter area being rewritten on the control task side.
[0055]
(3) Steady processing parameters
The steady process parameters include information shown in the following (a) to (c) for each voice.
(A) Pitch offset
(B) Filter offset
(C) Amplifier offset
These steady processing parameters are stored in a shared memory accessible from both the control task and the sound source task, and serve to service information obtained from an operator such as a pitch bender or a wheel.
[0056]
These steady process parameters are read each time the sound source task is activated, and are synthesized with an envelope or LFO generated inside the sound source task during sound generation. The synthesized data is used as a sound service parameter. Called.
[0057]
The sound generation service parameter controls the waveform readout pitch, the TVF cutoff frequency, and the TVA amplitude.
[0058]
(4) Effect parameters
The effect parameter is information for effect control stored in a shared memory accessible from both the control task and the sound source task, and is passed to the effect. This effect parameter is read every time the sound source task is activated, and if there is a parameter different from the previously read content, it is reflected in the effect.
[0059]
The effect parameters are different depending on the specific contents of the effect, and the specific contents of the effect are not included in the gist of the present invention, and thus detailed description thereof is omitted.
[0060]
(5) Voice release information
The voice release information is returned from the sound source task to the control task, and indicates the number of the voice that has been sounded. Note that the end of pronunciation of each voice is determined by the envelope of TVA. This voice release information does not use the memory space but is passed to the control task by an event.
[0061]
Here, the event flag, sound generation parameter, steady processing parameter, and effect parameter are exchanged using a shared memory, while the voice release information is delivered by event, the difference in the communication method between tasks is that the sound source task This is because asynchronous event information cannot be received from the control task side.
By the way, the above-described control task, sound source task, and output task are provided with a priority (priority: priority), and a task whose processing is not preferably interrupted by another task or the like should have a higher priority. Has been made. In this embodiment, the output task has the highest priority, the sound source task has the next highest priority, and the control task has the lowest priority.
[0062]
Hereinafter, the control task, the sound source task, and the output task will be described in detail with reference to FIGS. 4 and 5.
[0063]
(1) Control task
The control task obtains MIDI information and controls the sound source task, and is activated by receiving MIDI information from the sequencer program and voice release information from the sound source task.
[0064]
Here, for each voice, the control task always manages voice information indicating whether the voice is sounding or vacant. When note-on is received as MIDI information, the voice information is referred to as appropriate. To specify a free voice and use that voice to sound the note-on, set the sound parameters necessary for the note-on for that voice and then set the event flag to start sounding. The voice information of the designated voice is updated. Then, in the sound source task, a new pronunciation is started with the designated voice in accordance with the processing of the control task described above.
[0065]
In addition, when the control task receives note-on as MIDI information, if there is no free voice by referring to the voice information, the control task selects a voice with a low sounding level or starts sounding most recently. Select a voice that seems unnecessary according to a predetermined selection criterion such as selecting a voice, and use the voice to sound the note-on. Is set, and thereafter, the event flag is set to start sounding. In the sound source task, the current pronunciation of the quickly selected voice is muted in accordance with the processing of the control task described above, and then a new pronunciation is started by the selected voice.
[0066]
As described above, in the control task, when note-on is received as MIDI information, voice assignment, so-called assignment processing, is performed.
[0067]
On the other hand, when the control task receives note-off as MIDI information, the control task performs a process of setting the end of sounding in the event flag so as to end sounding for the sounding sound corresponding to the note-off. In the sound source task, the sounding voice corresponding to the note-off is muted in accordance with the processing of the control task described above.
[0068]
As will be described later, the processing of voices in the sound source task is not performed for voices that are not sounded. Therefore, the calculation amount of the sound source task increases / decreases according to the number of voiced voices. Therefore, in the present invention, the maximum number of pronunciations that can be generated can be set in advance according to the ability of the computer and can be changed as appropriate.
[0069]
Further, when the control task receives a message for changing the value of the steady process parameter and the effect parameter as MIDI information, the control task performs a process of delivering the corresponding steady process parameter and the effect parameter to the sound source task.
[0070]
Further, when the voice release information is transferred from the sound source task to the control task, the control task updates the voice information of the designated voice according to the received voice release information.
[0071]
(2) Sound source task
The sound source task is started by a timer every 10 ms (milliseconds), and waveform reading for 10 ms, TVF, TVA, pan, envelope, LFO, and effect processing are performed in as short a time as possible. As described above, since the sound source task performs processing for 10 ms, if the sampling frequency is 32 KHz, processing for 320 samples is performed.
[0072]
Each time the sound source task is activated, the contents of the event flag are searched, and when the sound generation start flag is found, sound generation starts according to the sound generation parameter. At this time, two memory spaces for storing the sound generation parameters are provided for each voice, and when the sound source task finds the sound generation start flag in the event flag, the sound source task is a memory to which the sound source task refers thereafter. The space is switched from the previously referenced plane to another plane, and the previously referenced plane is passed to the control task. Therefore, even when the sound parameters for the same voice number are set, the control task uses the new memory space on the other side that is different from the currently processed surface that is passed from the sound source task, so that the sound source task references The sound generation parameters can be transferred to the sound source task without destroying the parameter area of the currently processed surface.
[0073]
Here, the processing in each voice will be described. In the sound source task, the sound generation parameter and the steady processing parameter stored in the shared memory are taken in each time the sound source task is activated, and the calculation of the envelope and LFO and the steady state parameter are performed. The processing parameter is reflected to perform a calculation for generating the pronunciation service parameter. The pitch of waveform readout, the cutoff frequency of TVF, and the amplitude of TVA (amplification degree) are controlled by the sound generation service parameters generated in this way, and the voice output is delivered to the effect according to the effect feed amount of the sound generation parameter. The output of the voice to which no effect is added is output in stereo with the panpot controlled by the sound parameter pan (FIG. 5A).
[0074]
Then, the output of each voice to which the effect controlled by the effect parameter is added and the output of each voice to which the effect is not added are mixed and stereo output (FIG. 5B), and finally the wave buffer. Is stored and transferred to the output task.
[0075]
FIG. 6 is a flowchart showing the process of generating the sound generation service parameter, and the process is sequentially performed for each voice from the first voice.
[0076]
First, it is checked whether the event flag indicates the start of sound generation (step S602). If the event flag does not indicate the start of sound generation, it is checked whether the event flag indicates the end of sound generation (step S604).
[0077]
If the event flag does not indicate the end of sound generation in step S604, it is checked whether “1” is set in voiceActive, which is a flag indicating sound generation, to indicate that sound generation is in progress (step S606). .
[0078]
On the other hand, if the event flag indicates the end of sound generation in step S604, the envelope is advanced to the release process in response to this (step S608), and the calculated value n1 of the sound service parameter in the previous process is set to n0 ( After step S610), an operation reflecting the envelope, LFO and steady process parameters is performed to generate a sound generation service parameter and set it to the calculated value n1 (step S612). That is, the envelope service and LFO values are changed in accordance with the passage of time of 10 ms from the previous process, and the new envelope, LFO and steady process parameters are synthesized (added or multiplied) to generate the sound generation service parameter. Note that the sound generation service parameter is calculated independently for each of the waveform readout pitch, TVF, and TVA.
[0079]
Even if “1” is set in voiceActive in step S606 and sounding is in progress, the calculated value n1 of the sounding service parameter in the previous process is set to n0 (step S610), and then the envelope, LFO Then, an operation reflecting the steady process parameters is performed to generate a sound generation service parameter and set it to the calculated value n1 (step S612). Note that the sound generation service parameter is calculated independently for each of the waveform readout pitch, TVF, and TVA. By the way, if the event flag indicates that the sound generation is started in step S602, the pointer indicating the sound parameter area used by the control task and the sound source task is updated to indicate the other sound parameter area (step S614), and voiceActive is updated. It is checked whether or not “1” is set to indicate that the sound is being generated (step S616).
[0080]
If voiceActive is set to “1” in step S616 and sounding, the currently sounding voice is rapidly muted (step S618), and the envelope, LFO, and steady processing parameters are reflected. Calculation is performed to generate a sound generation service parameter at the start of sound generation and set it to the calculated value n0 (step S620). Note that the sound generation service parameter is calculated independently for each of the waveform readout pitch, TVF, and TVA.
[0081]
On the other hand, if “1” is not set in voiceActive in step S616 and the sound is not being sounded, the process proceeds to step S620 as it is and the sounding service at the start of sounding is performed by performing an operation reflecting the envelope, LFO and steady process parameters. A parameter is generated and set to the calculated value n0.
[0082]
As described above, in step S620, calculation that reflects the envelope, LFO, and steady process parameters is performed to generate a sound generation service parameter at the start of sound generation, set it to the calculated value n0, and then set “1” to voiceActive. After indicating that the sound is being generated (step S622), the sound processing service parameter is generated by performing an operation reflecting the envelope, the LFO, and the steady processing parameter according to the passage of time of 10 ms from the start of the sound generation, and the calculated value n1 (Step S612). Note that the sound generation service parameter is calculated independently for each of the waveform readout pitch, TVF, and TVA.
[0083]
Then, in step S612, calculation that reflects the envelope, LFO, and steady process parameters is performed to generate a sound generation service parameter and set it to the calculated value n1, so that the current sound generation is used for performing interpolation processing as necessary. A difference d between the calculated value n1 of the service parameter and the calculated value n0 of the previous pronunciation service parameter is obtained (step S624), and it is checked whether the envelope of the TVA has reached the end (step S626).
[0084]
If the TVA envelope has not come to the end in step S626, the event flag is cleared as it is (step S628). If the TVA envelope has come to the end in step S626, voice release information is sent to the control task. Returning (step S630), setting “0” in voiceActive to indicate that no sound is being generated (step S632), the event flag is cleared (step S628).
[0085]
If “1” is not set in voiceActive in step S606 and no sound is being generated, the event flag is cleared as it is (step S628).
[0086]
Then, when the event flag is cleared (step S628), it is checked whether all voices have been processed (step S634). If the processing of all voices is completed as a result of the check in step S634, the processing of this flowchart is terminated. If the processing of all voices is not completed as a result of the check in step S634, the processing returns to step S602 and the subsequent processing is performed. Repeat to process the next voice. That is, the processing of this flowchart is repeated until processing of all voices is completed.
[0087]
Note that the waveform readout, TVF, TVA, pan, and effect feed processing performed in response to the sound generation service parameters are performed for 10 ms each time the sound source task is activated, and then the effect The processing is performed collectively for 10 ms, and a flowchart of this processing is shown in FIG. That is, in the flowchart of FIG. 7, processing is performed sequentially for each voice from the first voice.
[0088]
First, it is checked whether “1” is set in voiceActive to indicate that sounding is being performed (step S702). If “0” is set in voiceActive in step S702 and sounding is not being performed, The process jumps to step S714 for checking whether all voices have been processed, and proceeds to the next voice process. That is, in this flowchart, the processing of voices that are not pronounced is not performed.
[0089]
On the other hand, if “1” is set in voiceActive in step S702 and sound is being generated, the waveform is read so that the sound is generated at the pitch indicated by the sound generation service parameter (step S704). Here, the tone generation service parameters are linearly interpolated to the required accuracy using the difference d obtained in step S624 in the flowchart shown in FIG. That is, assuming that the sampling frequency is 32 KHz, the tone generation service parameter set to the calculated value n0 obtained in step S610 or step S620 of the flowchart shown in FIG. 6 and the difference d obtained in step S624 are used.
n0 + d × k / 320
To obtain an interpolated value. Note that 320 is the number of samples corresponding to 10 ms when the sampling frequency is 32 KHz, k indicates what number of the 320 samples, and is “0” in the first process, and “ These values are 1 ',' 2 ',.
[0090]
Next, the waveform readout output in step S704 is filtered by the TVF (step S706). Here, the cut-off frequency of the TVF is controlled by the sound generation service parameter, and the sound generation service parameter is used by linear interpolation to the required accuracy using the difference d obtained in step S624 of the flowchart shown in FIG.
[0091]
Further, the amplitude of the filtered output in step S706 is controlled by the TVA according to the sound generation service parameter (step S708). Here, the sound generation service parameter is used by linearly interpolating to a required accuracy using the difference d obtained in step S624 of the flowchart shown in FIG.
[0092]
Next, the feed amount to the pan and the effect is controlled by the sound generation parameter, and addition and mixing processing with the tone signal of the other voice shown in FIG. 5B is performed (step S710), and then for 10 ms. Is checked (step S712), and if the process for 10 ms has not been completed, the process returns to step S704 to perform the processes after step S704 on the next sample. That is, the processing from step S704 to step S710 is processing for each sample, and processing for the number of samples for 10 ms is performed.
[0093]
On the other hand, if the processing for 10 ms has been completed, it is checked whether all voices have been processed (step S714). When the processing of all voices is completed by this check, the effect processing is performed for 10 ms collectively (step S716), and the wave buffer storing the musical sound signal for 10 ms subjected to the above processing is passed to the output task. (Step S718), the process of this flowchart is terminated. Here, the wave buffer storing the musical tone signal subjected to the above processing is transferred to the output task, and at the same time, a new wave buffer is received, and the new wave buffer is used for the next processing in steps S702 to S716.
[0094]
On the other hand, if the voice processing is not completed, the process returns to step S702 and the subsequent processing is repeated to perform the next voice processing. That is, the processing of this flowchart is repeated until processing of all voices is completed.
[0095]
(3) Output task
The output task DMA-transfers the stored contents of the wave buffer received from the sound source task to an audio data output device (in the computer shown in FIG. 1, it is the sound card 22). This DMA transfer is started by an interrupt from the audio data output device.
[0096]
Here, an audio data output device such as the sound card 22 (hereinafter referred to as “output device”) has a built-in buffer for temporarily storing audio data to be output, and temporarily stores it at every sampling period. Audio data is output for each sampling. When the amount of audio data remaining in the built-in buffer falls below a predetermined amount, the output task is interrupted, and in response to this interrupt, the output task DMA-transfers audio data for a predetermined sample required by the output device to the output device. To do.
[0097]
The interruption to the output task described above usually takes a cycle of about several ms.
[0098]
That is, in the computer shown in FIG. 1, the output task is activated when an interrupt from the sound card 22 and a wave buffer from the sound source task are received.
[0099]
When the output task receives a wave buffer for 10 ms from the sound source task, the output task returns a free wave buffer to the sound source task. There are four or more wave buffers. One is always output to the output device by the output task, one is used by the sound source task for processing, one is free, and one is waiting for output to the output device. The rotation is repeated so that the rest is free or waiting for output to the output device.
[0100]
In addition, when the crystal | crystallization which is a source oscillator which determines the operating speed separately is mounted in the computer main body and the sound card 22 and both operation speed is not synchronized, the error of the oscillation frequency of crystal | crystallization is not carried out. There will be an error in the operating speed of both.
[0101]
In this case, the speed at which the tone generator task generates the musical tone signal and the speed at which the output device outputs the musical tone signal are different. If the sound source task is faster, the sound source task overwrites new data on the wave buffer that is waiting for output, causing noise, and the sound source task is slower. In this case, the output device outputs all the wave buffer data in the output waiting state, and the sound is interrupted.
[0102]
In order to prevent such a situation, the free state of the wave buffer is constantly monitored, and when the number of free wave buffers is smaller than a predetermined amount, the activation cycle of the sound source task is lengthened (for example, 11 ms). ) If the number of free wave buffers is larger than a predetermined amount, the activation cycle of the activation task is shortened (for example, 9 ms). Of course, even in this case, the number of musical tone signal samples generated by one activation of the sound source task is set constant (for example, for 10 ms). By performing such processing, a certain amount of tone signal waiting for output is always stored in the wave buffer, so that it is possible to prevent the occurrence of noise and sound interruption as described above.
[0103]
By the way, in this synthesizer program, communication between the sound source task and the control task for controlling it is realized by sharing the memory space.
[0104]
That is, as shown in FIG. 8, there are two memory spaces (memory space A and memory space B in FIG. 8) shared by the sound source task and the control task, and they are used alternately. .
[0105]
Specifically, the control task side prepares parameters necessary for sound generation in the sound generation parameter area of the memory space A, and notifies the sound source task side by setting a flag that the sound generation parameters have been prepared. On the sound source task side, when the sound generation parameter area in the memory space A is captured, the sound generation parameter area on the other side (memory space B) is transferred to the control task side. The control task side prepares a parameter for the newly generated sound generation parameter area in the memory space B when the sound is newly generated with the same voice.
[0106]
As a result, even if the sound source task side is sounding and using the sound generation parameter, the control task side can set a new sound generation parameter without worrying about it.
[0107]
If only one pointer is provided as a management method for the two memory spaces, the control task stores a new parameter in one memory space pointed to by this pointer, and the tone generator task is stored in the other memory space. Refers to parameters stored in space. Alternatively, if a pointer indicating the memory space in which the control task writes the parameters and a pointer indicating the memory space in which the sound source task refers to the parameters are provided separately, the memory spaces indicated by these pointers are opposite to each other. do it.
[0108]
In this general-purpose computer, the user can give various instructions to the tone generator board 34 and the synthesizer program via the keyboard 28. When an instruction is given from the keyboard 28, a processing program corresponding to the type of the instruction is activated, and control information corresponding to the instruction is supplied to the tone generator board 34 and the synthesizer program. The setting state of the synthesizer program is changed according to the control information.
[0109]
Here, the above-described setting state includes, for example, tuning (setting of the pitch of a musical tone generated when the center C of the keyboard 28 is designated) and generated musical tone (“piano”, “organ”, (Designation of timbres corresponding to natural instruments such as “violin” and “trumpet”).
[0110]
By the way, with respect to the above-described setting state, it is more advantageous in terms of performance if the sound source board 34 and the synthesizer program are in the same setting state. That is, if the tuning is different between the tone generator board 34 and the synthesizer program, even if the center C of the same keyboard 28 is specified, musical tones having different pitches are generated between the tone generator board 34 and the synthesizer program. This will cause inconvenience in performance. For this reason, when a change in tuning is instructed by changing the setting state, the tuning instruction processing program shown in FIG. 9 is activated, and the tone generator board 34 and the synthesizer program correspond to the tuning value that is the same pitch designation value. The pitch control information to be supplied is supplied at the same time.
[0111]
That is, when the tuning instruction processing program is activated, pitch control information corresponding to the tuning value specified by the synthesizer program is supplied (step S902), and further, the sound corresponding to the tuning value specified by the tone generator board 34 is supplied. After the high control information is supplied (step S904), the processing of this tuning instruction processing program is terminated.
[0112]
In this general-purpose computer, the sound source board 34 and the synthesizer program have different sound sources, so the sound source board 34 and the synthesizer program do not generate exactly the same tone, and the sound source board 34 and the synthesizer program have the same tone. Even though the timbre indicated by the name of the timbre is actually a timbre that is similar to the timbre. Therefore, in this general-purpose computer, the timbre is specified by the timbre number, and therefore, the tone generator board 34 and the synthesizer program correspond to different timbre numbers with respect to the timbre indicated by the same timbre name.
[0113]
Therefore, in this general-purpose computer, when an instruction to change the timbre is given to either the tone generator board 34 or the synthesizer program, the timbre instruction processing program shown in FIG. The tone color is also set to the tone generator board 34 or the synthesizer program that is not instructed to change the tone color. That is, the memory 14 stores a correspondence table of similar timbres of the other party for the timbres of the tone generator board 34 and the synthesizer program, and instructs the timbre change to either the tone generator board 34 or the synthesizer program. In the case where the timbre is made, referring to the above correspondence table, the other party is also instructed to change the timbre to a timbre similar to the timbre specified.
[0114]
The timbre instruction processing program shown in FIG. 10 will be described in more detail. First, when the timbre instruction processing program is activated, it is determined which timbre change is instructed between the tone generator board 34 and the synthesizer program ( Step S1002).
[0115]
If it is determined in step S1002 that an instruction to change the tone color of the tone generator board 34 has been given, tone color change control information indicating a change to the indicated tone color is supplied to the tone generator board 34 (step S1004). The timbre change control information indicating the change to the timbre similar to the timbre instructed with reference to the correspondence table is supplied to the synthesizer program (step S1006), and the processing of the timbre instruction processing program is terminated.
[0116]
On the other hand, if it is determined in step S1002 that an instruction to change the timbre of the synthesizer program has been issued, the timbre change control information indicating the change to the instructed timbre is supplied to the synthesizer program (step S1008). The timbre change control information indicating the change to the timbre similar to the timbre instructed with reference to the correspondence table is supplied to the sound source board 34 (step S1010), and the processing of the timbre instruction processing program is terminated.
[0117]
In the above-described embodiment, all MIDI information supplied from the sequencer program is generated by the synthesizer program. However, the synthesizer program receives multiple channels of MIDI information and supports each channel. When a plurality of parts can generate different tones of music at the same time, that is, when a so-called multitimbral sound source operation is realized by a synthesizer program, a specific channel supplied from the sequencer program This MIDI information may not be supplied to the synthesizer program.
[0118]
As described above, when the MIDI information of a specific channel supplied from the sequencer program is not supplied to the synthesizer program, the part corresponding to the specific channel is not played by the other electronic musical instrument 36. A musical tone signal can be generated by the tone generator board 34 by playing. That is, the performer can perform the performance by himself / herself with respect to a specific part while listening to the automatic performance by the sequencer program.
[0119]
In such a case, in all parts, a tone signal is generated by the synthesizer program based on the sequencer program, and a tone signal generated by the performer is generated by the tone generator board 34 for a specific part specified by the performer. As for the other parts, it may be possible to arbitrarily switch the mode in which the tone signal is generated by the synthesizer program based on the sequencer program.
[0120]
Further, in the above-described embodiment, all the MIDI information supplied from the other electronic musical instrument 36 is generated by the tone generator board 34. However, the MIDI information supplied from the other electronic musical instrument 36 is used. A mode in which a tone signal is generated by the tone generator board 34 and a mode in which a tone signal is generated by a synthesizer program based on MIDI information supplied from another electronic musical instrument 36 are set, and these modes can be switched arbitrarily. May be.
[0121]
Furthermore, in the above-described embodiment, which one of the synthesizer program and the tone generator board generates the tone signal is controlled by which one of the MIDI information is supplied. Also good. For example, MIDI information is supplied to both the synthesizer program and the tone generator board, but a volume control signal for setting the volume to 0 may be supplied to those who do not generate a musical tone signal.
[0122]
【The invention's effect】
As described above, the performance information processing method according to the present invention should emit sound corresponding to the real-time performance of the performer when a synthesizer is constructed by software on a general-purpose computer such as a personal computer or a workstation. There is an excellent effect that the musical sound can be emitted promptly without requiring a large delay time from the pronunciation instruction.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a hardware configuration of a typical general-purpose computer on which a program according to a performance information processing method of the present invention can be installed.
FIG. 2 is a conceptual diagram of a performance information processing method according to the present invention.
FIG. 3 is a flowchart showing processing contents of a distribution program.
FIG. 4 is a conceptual diagram showing an overall configuration of a synthesizer program.
5A and 5B are conceptual diagrams showing processing in a sound source task, where FIG. 5A shows processing for one voice, and FIG. 5B shows mixing of voice and effect.
FIG. 6 is a flowchart showing a sound generation service parameter generation process in a sound source task.
FIG. 7 is a flowchart showing processing of waveform readout, TVF, TVA, panning and effect feed amount performed in response to a sound generation service parameter in a sound source task.
FIG. 8 is an explanatory diagram showing a state in which two memory spaces shared by a sound source task and a control task are provided and used alternately.
FIG. 9 is a flowchart showing the processing contents of a tuning instruction processing program.
FIG. 10 is a flowchart showing the processing contents of a timbre instruction processing program.
[Explanation of symbols]
10 buses
12 CPU
14 memory
16 disk controller
18 Video card
20 I / O card
22 Sound card
24 hard disk
26 Display device
28 keyboard
30 mice
32 MIDI interface
34 Sound board
36 Other electronic musical instruments

Claims (5)

汎用の処理装置をソフトウェアに基づいて動作させることにより第1の音源手段を構成する音源処理と、
供給された演奏情報が自動演奏によるものか演奏者の演奏によるものかを判別する判別処理と、
前記判別処理により供給された演奏情報が自動演奏によるものと判別された場合には、供給された演奏情報に基づき前記音源処理にて楽音信号を生成させ、前記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合には、供給された演奏情報に基づいて前記汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段により楽音信号を生成させる演奏制御処理と
を行うことを特徴とする演奏情報処理方法。
Sound source processing that constitutes the first sound source means by operating a general-purpose processing device based on software;
A discrimination process for discriminating whether the supplied performance information is due to an automatic performance or a performer's performance;
When it is determined that the performance information supplied by the determination processing is based on the automatic performance, a musical tone signal is generated by the sound source processing based on the supplied performance information, and the performance information supplied by the determination processing is If it is determined that the performance is performed by the performer, a musical tone signal is generated by the second sound source means composed of a dedicated hardware sound source independent of the general-purpose processing device based on the supplied performance information. A performance information processing method characterized by performing a performance control process.
前記判別処理は、前記汎用の処理装置のシーケンサのプログラムから供給された演奏情報を自動演奏によるものと判別し、演奏情報入力インターフェースから供給された演奏情報を演奏者の演奏によるものと判別する請求項1記載の演奏情報処理方法。The discriminating process discriminates that the performance information supplied from the sequencer program of the general-purpose processing device is based on automatic performance, and discriminates that the performance information supplied from the performance information input interface is based on the performance of the performer. Item 1. The performance information processing method according to Item 1. 請求項1記載の演奏情報処理方法において、
さらに、演奏者の指示に応じて前記第1の音源手段と前記第2の音源手段とに共通の制御情報を供給する処理と
を行うことを特徴とする演奏情報処理方法。
The performance information processing method according to claim 1,
Furthermore, the performance information processing method characterized by performing the process which supplies common control information to a said 1st sound source means and a said 2nd sound source means according to a player's instruction | indication.
汎用の処理装置をソフトウェアに基づいて動作させることにより第1の音源手段を構成する音源処理と、
供給された演奏情報が自動演奏によるものか演奏者の演奏によるものかを判別する判別処理と、
前記判別処理により供給された演奏情報が自動演奏によるものと判別された場合における処理のモードとして、第1のモードと第2のモードとを設定する設定処理と、
前記判別処理により供給された演奏情報が自動演奏によるものと判別された場合であって前記設定処理により前記第1のモードが設定されている場合には、供給された演奏情報に基づき前記音源処理にて楽音信号を生成させ、前記判別処理により供給された演奏情報が自動演奏によるものと判別された場合であって前記設定処理により前記第2のモードが設定されている場合には、供給された演奏情報の一部に基づいて前記音源処理にて楽音信号を生成させ、前記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合には、供給された演奏情報に基づいて前記汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段により楽音信号を生成させる演奏制御処理と
を行うことを特徴とする演奏情報処理方法。
Sound source processing that constitutes the first sound source means by operating a general-purpose processing device based on software;
A determination process for determining whether the supplied performance information is based on an automatic performance or a performance of a performer;
A setting process for setting the first mode and the second mode as processing modes when it is determined that the performance information supplied by the determination process is based on an automatic performance;
When it is determined that the performance information supplied by the determination processing is based on the automatic performance and the first mode is set by the setting processing, the sound source processing is performed based on the supplied performance information. Is generated when the musical performance signal is generated by the determination process and it is determined that the performance information supplied by the determination process is based on the automatic performance and the second mode is set by the setting process. When a musical tone signal is generated by the sound source processing based on a part of the performance information and the performance information supplied by the determination processing is determined to be due to the performance of the performer, the supplied performance information is And a performance control process for generating a musical tone signal by a second sound source means comprising a dedicated hardware sound source independent of the general-purpose processing device. Kanade information processing method.
汎用の処理装置をソフトウェアに基づいて動作させることにより第1の音源手段を構成する音源処理と、
供給された演奏情報が自動演奏によるものか演奏者の演奏によるものかを判別する判別処理と、
前記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合における処理のモードとして、第1のモードと第2のモードとを設定する設定処理と、
前記判別処理により供給された演奏情報が自動演奏によるものと判別された場合には、供給された演奏情報に基づき前記音源処理にて楽音信号を生成させ、前記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合であって前記設定処理により前記第1のモードが設定されている場合には、供給された演奏情報に基づいて前記汎用の処理装置とは独立した専用のハードウェア音源により構成される第2の音源手段により楽音信号を生成させ、前記判別処理により供給された演奏情報が演奏者の演奏によるものと判別された場合であって前記設定処理により前記第2のモードが設定されている場合には、供給された演奏情報に基づいて前記音源処理にて楽音信号を生成させる演奏制御処理と
を行うことを特徴とする演奏情報処理方法。
Sound source processing that constitutes the first sound source means by operating a general-purpose processing device based on software;
A determination process for determining whether the supplied performance information is based on an automatic performance or a performance of a performer;
A setting process for setting the first mode and the second mode as processing modes when it is determined that the performance information supplied by the determination process is based on the performance of the performer;
When it is determined that the performance information supplied by the determination processing is based on the automatic performance, a musical tone signal is generated by the sound source processing based on the supplied performance information, and the performance information supplied by the determination processing is When it is determined that the performance is performed by the performer and the first mode is set by the setting process, the dedicated processing device is independent from the general-purpose processing device based on the supplied performance information. When the musical tone signal is generated by the second sound source means constituted by the hardware sound source and the performance information supplied by the determination processing is determined to be due to the performance of the performer, the setting processing performs the first When the mode 2 is set, a performance control process for generating a tone signal by the sound source process based on the supplied performance information is performed. Information processing method.
JP01304397A 1997-01-08 1997-01-08 Performance information processing method Expired - Fee Related JP3735172B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01304397A JP3735172B2 (en) 1997-01-08 1997-01-08 Performance information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01304397A JP3735172B2 (en) 1997-01-08 1997-01-08 Performance information processing method

Publications (2)

Publication Number Publication Date
JPH10198382A JPH10198382A (en) 1998-07-31
JP3735172B2 true JP3735172B2 (en) 2006-01-18

Family

ID=11822098

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01304397A Expired - Fee Related JP3735172B2 (en) 1997-01-08 1997-01-08 Performance information processing method

Country Status (1)

Country Link
JP (1) JP3735172B2 (en)

Also Published As

Publication number Publication date
JPH10198382A (en) 1998-07-31

Similar Documents

Publication Publication Date Title
JPH04128796A (en) Music reproduction device
JP3915807B2 (en) Automatic performance determination device and program
JP2001067078A (en) Performance device, effect control device, and record medium therefor
JP3625880B2 (en) Sound generator
JP2019168517A (en) Electronic musical instrument, method, and program
JP3735172B2 (en) Performance information processing method
JPH07121181A (en) Sound information processor
JP3312939B2 (en) Electronic musical instrument
JP3725247B2 (en) Music generation processing method
US5942711A (en) Roll-sound performance device and method
JP3246405B2 (en) Musical sound generating method, musical sound generating device, and recording medium recording musical sound generating program
JPH10268866A (en) Automatic musical performance control device
JPH0631977B2 (en) Electronic musical instrument
JP3632744B2 (en) Sound generation method
JP3919833B2 (en) Sound generator
JP2972364B2 (en) Musical information processing apparatus and musical information processing method
JP3924909B2 (en) Electronic performance device
JPH07104667B2 (en) Automatic playing device
JP3627557B2 (en) Musical sound generating apparatus and method
JPH10319958A (en) Automatic player, automatic performance data processing method and electronic information storage medium
JPH0926787A (en) Timbre control device
JP3660379B2 (en) Sound source control information storage method and sound source control apparatus
JP3627590B2 (en) Sound generation method
JPH0944160A (en) Musical tone generating method
JP4205563B2 (en) Performance device, performance method, and computer program for performance

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051007

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051021

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

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees