JP2008003222A - 楽音合成装置及びプログラム - Google Patents
楽音合成装置及びプログラム Download PDFInfo
- Publication number
- JP2008003222A JP2008003222A JP2006171434A JP2006171434A JP2008003222A JP 2008003222 A JP2008003222 A JP 2008003222A JP 2006171434 A JP2006171434 A JP 2006171434A JP 2006171434 A JP2006171434 A JP 2006171434A JP 2008003222 A JP2008003222 A JP 2008003222A
- Authority
- JP
- Japan
- Prior art keywords
- sound
- musical
- information
- waveform
- control 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.)
- Pending
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】 楽音制御情報の更新間隔を動的に変更しながら楽音を合成する。
【解決手段】 各発音スロット毎に割り当てる波形データの選択を指示する楽音制御情報、及び/又は選択済みの波形データの加工を指示する楽音制御情報を所定の周期時間毎に更新する際に、楽音合成手段における複数の制御処理の実行に基づく処理負荷を判断し、該判断した処理負荷に応じて、波形データの選択を指示する楽音制御情報の前記周期時間と、選択済みの波形データの加工を指示する楽音制御情報の前記周期時間とを、各発音スロットにおいて個別に変更する。前記処理負荷は、各発音スロットに対して楽音制御情報に対応する複数の制御処理を実行させることに伴う処理負荷である。こうすると、楽音制御情報が時間的に重なって更新されることがないので、合成すべき楽音が増えた場合であっても、発音遅れを生じさせたり音質を大きく悪化させることなく楽音を合成することができるようになる。
【選択図】 図6
【解決手段】 各発音スロット毎に割り当てる波形データの選択を指示する楽音制御情報、及び/又は選択済みの波形データの加工を指示する楽音制御情報を所定の周期時間毎に更新する際に、楽音合成手段における複数の制御処理の実行に基づく処理負荷を判断し、該判断した処理負荷に応じて、波形データの選択を指示する楽音制御情報の前記周期時間と、選択済みの波形データの加工を指示する楽音制御情報の前記周期時間とを、各発音スロットにおいて個別に変更する。前記処理負荷は、各発音スロットに対して楽音制御情報に対応する複数の制御処理を実行させることに伴う処理負荷である。こうすると、楽音制御情報が時間的に重なって更新されることがないので、合成すべき楽音が増えた場合であっても、発音遅れを生じさせたり音質を大きく悪化させることなく楽音を合成することができるようになる。
【選択図】 図6
Description
この発明は、波形メモリ等に記憶した波形サンプルデータに基づいて、楽音あるいは音声若しくはその他任意の音を合成する楽音合成装置及びプログラムに関する。特に、楽音合成時にかかる制御部の処理負荷に応じて、楽音制御情報の更新間隔を動的に変更しながら楽音を合成する楽音合成装置及びプログラムに関する。
従来から、楽音波形を合成するための発音スロット(発音チャンネル、発音トラックなどとも呼ぶ)を複数具えており、CPUやDSPなどの制御部が各発音スロットにおける楽音の形成を制御(例えば、演奏情報に応じての楽音の発音/消音の指示や所定のパラメータに基づく波形の加工など)することにより、各発音スロット毎に楽音波形を合成して楽音を発生することのできる装置が知られている。こうした装置において、複数の発音スロットで同時に楽音を合成して多数の楽音を同時に発音させるような場合には、楽音合成のために制御すべき発音スロットが多くなり、それに伴い制御部にかかる処理負荷が大きくなることから、発生される楽音の品質の低下を引き起こしたり、演奏者による演奏指示(ノートオン)から該演奏指示に対応する楽音が発音されるまでに聴感上の発音遅れが生じてしまうことがある。そこで、これらの不都合を防止するために、制御部にかかる処理負荷が大きくならないように、楽音合成時において制御部にかかる処理負荷に応じて、所望の楽音発生のために参照あるいは取得すべきパラメータの種類やパラメータの更新間隔などを各発音スロット毎に適宜に調整しながら、楽音を合成することができるようにした装置がある。このような装置に関連するものとして、例えば下記に示す特許文献1に記載されている発明がその一例である。
特開2000-221983号公報
ところで、最近では自然楽器固有の各種奏法(若しくはアーティキュレーション)のリアルな再現とその制御を容易にした技術として、所謂AEM(Articulation Element Modeling)技術が知られており、該AEM技術を適用した音源(AEM音源と呼ぶ)を用いて高品質な楽音波形を合成することが行われている。従来知られているように、AEM音源においては、音の立ち上がり区間を表すヘッド系奏法モジュール、音の定常区間を表すボディ系奏法モジュール、音の立ち下がり区間を表すテール系奏法モジュール、あるいは連続する音と音との間(又は音部分と音部分の間)を例えばレガート奏法などの任意の奏法で音を途切れさせることなくつなぐ接続区間を表すジョイント系奏法モジュール、などの各区間に対応する奏法モジュールを時系列的に複数組み合わせ、これらの奏法モジュールを演奏情報に応じて適宜に制御することにより、ユーザ所望の一連の楽音波形を高品質に生成するようにしている。なお、この明細書において、楽音波形という場合、音楽的な音の波形に限るものではなく、音声あるいはその他任意の音の波形を含んでいてもよい意味あいで用いるものとする。
しかし、上述したAEM音源を用いて楽音を合成する際においても、場合によっては楽音の品質が劣化してしまったり、聴感上の発音遅れが生じてしまうことなどがあった。これは、AEM音源においても、各発音スロット毎に楽音を合成する際に制御部にかかる処理負荷が時間的に刻一刻と変動することに起因する。特に、AEM音源においては、定期的に楽音制御情報を更新し(例えば、振幅やピッチをコントロールするための加算値などのパラメータやベクタ情報など)、該更新された楽音制御情報に基づいて細やかな波形制御を行うことで各発音スロットにおける楽音の形成を制御していることから、楽音合成にかかる処理量が非常に多く、従って制御部にかかる処理の負担が大きい。また、そうした上に、同時発音数が増えて、各発音スロットにおける楽音制御情報の更新の多くが時間的に重なると、制御部で同時に処理可能な数以上に制御すべき動作の数が多くなってしまい、制御部にかかる処理負荷が飽和してしまう。そうすると、演奏者の操作に応じた楽音の発音遅れが大きくなって演奏者が演奏しにくくなったり、演奏者が意図しない楽音の品質低下を引き起こしたりする。そこで、AEM音源においても、楽音合成の際に制御部にかかる処理負荷を合成すべき楽音毎(つまり発音スロット毎)に制御することが考えられるが、上述したようにAEM音源では他の音源に比べると多くの制御を行わなければならないことから、そのようなものは考えられていなかった。
本発明は上述の点に鑑みてなされたもので、楽音合成時における制御部にかかる処理負荷に応じて、動的に各発音スロットにおける楽音制御情報の更新間隔を制御することによって、聴感上の発音遅れを生じさせることなく、また品質のよい楽音を合成することができるようにした楽音合成装置及びプログラムを提供しようとするものである。
本発明に係る楽音合成装置は、波形データを記憶する記憶手段と、楽音波形を形成する複数の発音スロットと、演奏情報を取得する取得手段と、前記取得した演奏情報に応じて、前記各発音スロット毎に割り当てる波形データの選択を指示する楽音制御情報、及び/又は選択済みの波形データの加工を指示する楽音制御情報を所定の周期時間毎に更新する更新手段と、該当する各発音スロットに対して前記更新した楽音制御情報に対応する複数の制御処理を実行して楽音波形を生成する楽音合成手段と、前記楽音合成手段における複数の制御処理の実行に基づく処理負荷を判断し、該判断した処理負荷に応じて前記周期時間を適宜に変更する変更手段とを具えてなり、前記変更手段は、波形データの選択を指示する楽音制御情報の前記周期時間と選択済みの波形データの加工を指示する楽音制御情報の前記周期時間とを各発音スロットにおいて個別に変更することを特徴とする。
本発明によると、各発音スロット毎に割り当てる波形データの選択を指示する楽音制御情報、及び/又は選択済みの波形データの加工を指示する楽音制御情報を所定の周期時間毎に更新する際に、楽音合成手段における複数の制御処理の実行に基づく処理負荷を判断し、該判断した処理負荷に応じて、波形データの選択を指示する楽音制御情報の前記周期時間と、選択済みの波形データの加工を指示する楽音制御情報の前記周期時間とを、各発音スロットにおいて個別に変更する。前記処理負荷は、各発音スロットに対して楽音制御情報に対応する複数の制御処理を実行させることに伴う処理負荷である。こうすることによって、楽音制御情報が時間的に重なって更新されることがないので、合成すべき楽音が増えた場合であっても、発音遅れを生じさせたり音質を大きく悪化させることなく楽音を合成することができるようになる。
本発明は、装置の発明として構成し、実施することができるのみならず、方法の発明として構成し実施することができる。また、本発明は、コンピュータまたはDSP等のプロセッサのプログラムの形態で実施することができるし、そのようなプログラムを記憶した記憶媒体の形態で実施することもできる。
本発明によれば、各発音スロットにおける楽音合成のための楽音更新制御の時間間隔を、制御部にかかる処理負荷に応じて動的に制御することができることから、これにより合成すべき楽音が増えた場合であっても、発音遅れを生じさせたり音質を大きく悪化させることなく楽音を合成することができるようになる、という効果が得られる。
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図1は、この発明に係る楽音合成装置を適用した電子楽器のハードウエア構成例を示すブロック図である。ここに示す電子楽器は、演奏者による演奏操作子5の演奏操作に応じてリアルタイムに供給される演奏情報(ノートオン情報やノートオフ情報などの演奏イベントデータ、ダイナミクス情報やピッチ情報などの各種コントロールデータを含む)に基づいて楽音を発生したり、あるいは演奏進行順に供給される予め作成済みの演奏情報に基づいて楽音を発生したりする電子的な楽音合成機能を有する。
なお、この実施例に示す電子楽器はここに示す以外のハードウェアを有する場合もあるが、ここでは必要最小限の資源を用いた場合について説明する。また、音源としては、例えば様々な楽器毎の特有な奏法に対応する波形データとして、ヘッド区間、テール区間、ボディ区間などの1音についての一部区間、あるいは連続する2音間についてのジョイント区間において、任意の奏法に対応した波形全体を記憶しておき(奏法モジュール)、これらを時系列的に複数組み合わせることで1音又は連続する複数音の楽音を形成することにより、自然楽器固有の各種奏法若しくはアーティキュレーションによる音色変化を忠実に表現した奏法などのリアルな再現とその制御を目的とした、従来から知られているAEM(Articulation Element Modeling)と称する楽音波形制御技術を用いた音源(所謂AEM音源)を例にして説明する。
図1に示した電子楽器はコンピュータを用いて構成されており、そこにおいて、上記したような楽音合成機能を実現する処理(例えば、図示しない楽音合成処理や後述する図5に示す「持続音部制御処理」など)は、コンピュータが各々の処理を実現する所定のプログラム(ソフトウエア)を実行することにより実施される。勿論、これらの処理はコンピュータソフトウエアの形態に限らず、DSP(ディジタル・シグナル・プロセッサ)によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。
本実施例に示す電子楽器は、マイクロプロセッサユニット(CPU)1、リードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3からなるマイクロコンピュータの制御の下に各種の処理が実行されるようになっている。CPU1は、この電子楽器全体の動作を制御するものである。このCPU1に対して、通信バス1D(例えば、データ及びアドレスバスなど)を介してROM2、RAM3、外部記憶装置4、演奏操作子5、パネル操作子6、表示器7、音源8、インタフェース9がそれぞれ接続されている。更に、CPU1には、タイマ割込み処理(インタラプト処理)における割込み時間や各種時間を計時するタイマ1Aが接続されている。すなわち、タイマ1Aは時間間隔を計数したり、所定の演奏情報に従って楽曲を演奏する際の演奏テンポを設定したりするためのテンポクロックパルスを発生する。このテンポクロックパルスの周波数は、パネル操作子6の中の例えばテンポ設定スイッチ等によって調整される。このようなタイマ1AからのテンポクロックパルスはCPU1に対して処理タイミング命令として与えられたり、あるいはCPU1に対してインタラプト命令として与えられる。CPU1は、これらの命令に従って各種処理を実行する。
ROM2は、CPU1により実行される各種プログラム、あるいは波形メモリとして様々な楽器毎の特有な奏法に対応する波形データ(例えば、ビブラート奏法などの音色変化の有る波形やストレートな音色を持つ波形等)などの各種データを格納するものである。RAM3は、CPU1が所定のプログラムを実行する際に発生する各種データを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを記憶するメモリ等として使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。外部記憶装置4は、自動演奏の元となる演奏データや奏法に対応する波形データなどの各種データや、CPU1により実行あるいは参照される「持続音部制御処理」(後述する図5参照)などの各種制御プログラム等を記憶する。前記ROM2に制御プログラムが記憶されていない場合、この外部記憶装置4(例えばハードディスク)に制御プログラムを記憶させておき、それを前記RAM3に読み込むことにより、ROM2に制御プログラムを記憶している場合と同様の動作をCPU1にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。なお、外部記憶装置4はハードディスク(HD)に限られず、フレキシブルディスク(FD)、コンパクトディスク(CD−ROM・CD−RAM)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の着脱自在な様々な形態の外部記録媒体を利用する記憶装置であってもよい。あるいは、半導体メモリなどであってもよい。
演奏操作子5は楽音の音高を選択するための複数の鍵を備えた、例えば鍵盤等のようなものであり、各鍵に対応してキースイッチを有しており、この演奏操作子5は演奏者自身の手弾きによる楽音のマニュアル演奏のために使用できるのは勿論のこと、自動演奏対象とする予め用意されている演奏データを選択するなどの入力手段として使用することもできる。勿論、演奏操作子5は鍵盤等の形態に限らず、楽音の音高を選択するための弦を備えたネック等のような形態のものなど、どのようなものであってもよいことは言うまでもない。パネル操作子(スイッチ等)6は、例えば自動演奏対象とする演奏データを選択する演奏データ選択スイッチ、楽音の持続部を「ビブラートボディ」の特性で自動的に合成するよう指示する「オートビブラートモード」、又は楽音の持続部を演奏者の手動(マニュアル)操作に応じた「ビブラートボディ」の特性で合成するよう指示する「マニュアルビブラートモード」、のいずれかのモードを選択的に設定するモード選択スイッチ等、各種の操作子を含んで構成される。勿論、音高、音色、効果等を選択・設定・制御するために数値データ入力用のテンキーや文字データ入力用のキーボード、あるいは表示器7に表示された各種画面の位置を指定するポインタを操作するマウスなどの各種操作子を含んでいてもよい。表示器7は例えば液晶表示パネル(LCD)やCRT等から構成されるディスプレイであって、上記スイッチ操作に応じた各種画面を表示するのは勿論のこと、演奏データや波形データなどの各種情報あるいはCPU1の制御状態などを表示することもできる。演奏者は該表示器7に表示されるこれらの各種情報を参照することで、演奏の際に使用する各種演奏パラメータの設定やモード設定あるいは自動演奏曲の選択などを容易に行うことができる。
音源8はAEM音源であって、複数のチャンネル(発音スロット)で楽音信号の同時発生が可能であり、通信バス1Dを経由して与えられた演奏情報を発音スロット毎に入力し、この演奏情報に基づいて発音スロット毎に楽音を合成して楽音信号を発生する。ここに示す電子楽器においては、演奏情報に基づき該当する波形データがROM2や外部記憶装置4などから読み出されると、該読み出された波形データはバスラインを介して音源8に与えられて適宜バッファ記憶される。そして、音源8ではバッファ記憶された波形データを所定の出力サンプリング周波数に従い出力する。この音源8から発生された楽音信号は、図示しない効果回路(例えば、DSP(Digital Signal Processor))などにより所定のディジタル信号処理が施され、該信号処理された楽音信号はサウンドシステム8Aに与えられて発音される。
インタフェース9は該電子楽器と外部の演奏データ生成機器(図示せず)などとの間で各種情報を送受するための、例えばMIDIインタフェースや通信インタフェースなどである。MIDIインタフェースは、外部の演奏データ生成機器(この場合には、他のMIDI機器等)からMIDI規格の演奏データを当該電子楽器へ供給したり、あるいは当該電子楽器からMIDI規格の演奏データを他のMIDI機器等へ出力するためのインタフェースである。他のMIDI機器はユーザによる操作に応じてMIDI形式の演奏データを発生する機器であればよく、鍵盤型、ギター型、管楽器型、打楽器型、身振り型等どのようなタイプの操作子を具えた(若しくは、操作形態からなる)機器であってもよい。通信インタフェースは、例えばLANやインターネット、電話回線等の有線あるいは無線の通信ネットワーク(図示せず)に接続されており、概通信ネットワークを介して、外部の演奏データ生成機器(この場合には、サーバコンピュータ等)と接続され、当該サーバコンピュータから制御プログラムや演奏データなどの各種情報を該電子楽器に取り込むためのインタフェースである。すなわち、ROM2や外部記憶装置4等に制御プログラムや演奏データなどの各種情報が記憶されていない場合に、サーバコンピュータから各種情報をダウンロードするために用いられる。クライアントとなる電子楽器は、通信インターフェース及び通信ネットワークを介してサーバコンピュータへと制御プログラムや演奏データなどの各種情報のダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求された各種情報を通信ネットワークを介して本電子楽器へと配信し、本電子楽器が通信インタフェースを介して各種情報を受信して外部記憶装置4等に蓄積することにより、ダウンロードが完了する。
なお、上記インタフェース9をMIDIインタフェースで構成した場合、該MIDIインタフェースは専用のMIDIインタフェースを用いるものに限らず、RS-232C、USB(ユニバーサル・シリアル・バス)、IEEE1394(アイトリプルイー1394)等の汎用のインタフェースを用いてMIDIインタフェースを構成するようにしてもよい。この場合、MIDIデータ以外のデータをも同時に送受信するようにしてもよい。MIDIインタフェースとして上記したような汎用のインタフェースを用いる場合には、他のMIDI機器はMIDIデータ以外のデータも送受信できるようにしてよい。勿論、演奏情報に関するデータフォーマットはMIDI形式のデータに限らず、他の形式であってもよく、その場合はMIDIインタフェースと他のMIDI機器はそれにあった構成とする。
図1に示した電子楽器においては、演奏者による演奏操作子の操作に伴い発生される演奏情報、あるいは予め用意されたSMF(Standard MIDI File)形式等の演奏データに基づいて楽音を連続的に発生させることのできる楽音合成機能を有する。そして、該楽音合成機能の実行時において、演奏者による演奏操作子5の操作に伴う演奏進行に応じてリアルタイムに順次に供給される演奏情報、あるいはシーケンサー(図示せず)などから演奏進行順に演奏データの先読み等を行うことに伴い順次に供給される演奏情報に基づいて、各区間について新たに使用すべき波形データの選択を行い、該選択された波形データに従って楽音を合成するようにしている。そこで、こうした楽音合成機能の概要について、図2を用いて説明する。図2は、当該電子楽器が有する楽音合成機能を説明するための機能ブロック図である。図2において、図中の矢印はデータの流れを表すものである。
楽音合成機能の開始に伴い、まず奏法合成部J3に対して入力部J2から演奏情報が演奏進行順に順次に供給される。入力部J2としては、演奏者による演奏操作に応じて適宜に演奏情報を発生する演奏操作子5、予めROM2等に記憶した演奏データから演奏進行順に演奏情報を供給するシーケンサーなどの入力装置がある。こうした入力部J2から供給される演奏情報は、ノートオン情報やノートオフ情報(これらを総称してノート情報と呼ぶ)などの演奏イベントデータと、ダイナミクス情報やピッチ情報などのコントロールデータとを少なくとも含む。奏法合成部J3では演奏イベントデータやコントロールデータなどを受け取ると、例えばノートオン情報に従いヘッド部やジョイント部を特定したり、ノートオフ情報に従いテール部を特定したり、あるいはコントロールデータとして受け取った情報を変換したりするなどして、楽音を合成するために必要とされる各種情報を含む「奏法情報」を生成する。すなわち、奏法合成部J3はデータベースJ1(波形メモリ)にあるデータテーブルなどを参照して、入力されたダイナミクス情報やピッチ情報に対応する奏法モジュールを選択し、該選択した奏法モジュールを特定する情報からなる「奏法情報」を生成する。
上記奏法合成部J3は前記各奏法モジュールを特定する情報(後述のベクタ情報)からなる奏法情報とは別に、さらに奏法モジュール全体を制御する情報(楽音制御情報)からなる奏法情報を、合成すべき楽音毎(つまり各発音スロット毎)に生成する。楽音制御情報としては、例えば入力された演奏情報に基づき、波形ベクタ全体の振幅を調整する振幅制御情報やピッチをシフトするピッチ制御情報などがある。例えば、楽音の持続音部を合成する際においては(後述する「持続音部制御処理」参照)、マニュアルビブラートモードの場合に、10ms間隔で振幅及びピッチの各コントロール用の加算値からなる奏法情報、50ms間隔でベクタ情報からなる奏法情報を生成している(この明細書ではこれらを楽音制御情報とも呼ぶ)。他方、オートビブラートモードの場合には、10ms間隔で振幅及びピッチの各コントロール用の加算値からなる奏法情報を生成している。また、オートビブラートモードにおいてはビブラート1周期の時間長さに対応する分だけ波形データを記憶しているために、ビブラート1周期の合成が終わる前に次のビブラート1周期の合成を開始しなければならない。そこで、オートビブラートモードの場合には、例えば10ms間隔でベクタ情報を更新するための更新チェックを行っており、該更新タイミング毎に新たな演奏情報が入力されたか否かをチェックし、新たな演奏情報に対応するベクタ情報からなる奏法情報を生成する。すなわち、ベクタ情報からなる奏法情報の生成タイミングは、上記マニュアルビブラートモードの場合と異なり、一定の時間間隔とは限らない。
楽音合成部J4では奏法合成部J3が生成した前記「奏法情報」に基づき、データベースJ1から使用する波形データを適宜に読み出し、該読み出した波形データに基づき各発音スロット毎に楽音を合成する。すなわち、生成された「奏法情報」に従って波形データの切り替え及び加工を行いながら楽音合成を行うことにより、楽音が出力される。例えば、楽音の持続音部の波形を合成する場合、マニュアルビブラートモードにおいては、ノート情報によって発生すべき楽音の音高(ノート)が指定され、かつ、ホイール等のピッチ変調操作手段の操作に応じてピッチ変調情報がリアルタイムで入力され、該音高と入力ダイナミクス値に基づき選択された「マニュアルビブラートボディモジュール」(図4(d)参照)から、入力されたピッチ変調情報に対応する波形データを選択し、これを再生することでビブラートの付与された楽音波形の生成を行う。一方、オートビブラートモードにおいては、ノート情報によって発生すべき楽音の音高(ノート)が指定され、該音高と入力ダイナミクス値に応じて選択された「オートビブラートボディモジュール」(図4(c)参照)に含まれる複数の波形データを順次に自動再生することによって、ビブラートの付与された楽音波形の生成を行う。
データベースJ1(波形メモリ)は、楽器毎の種々の奏法に対応する波形を再生する多数のオリジナルの波形データとそれに関連するデータ群(奏法パラメータと呼ぶ)を「奏法モジュール」として記憶している。1つの「奏法モジュール」とは、奏法波形合成システムにおいて1つのかたまりとして処理できる奏法波形の単位である。別の言い方をすると、「奏法モジュール」とは、1つのイベントとして処理できる奏法波形の単位である。ここで、上述したデータベースJ1(波形メモリ)に記憶される奏法モジュールについて、図3及び図4を用いて簡単に説明する。図3は、奏法モジュールの一実施例を説明するための概念図である。ただし、この図3では、「奏法モジュール」のうち、波形データにより表さられる波形の一例をそのエンベロープのみで略示したものを図示している。
図3から理解できるように、種々有る奏法モジュールの波形データの中には、例えば演奏音の奏法的特徴に応じて、ヘッド部やボディ部あるいはテール部等の1音の部分的区間に対応して定義されているものもあれば(ヘッド系、ボディ系、テール系の各奏法モジュール)、また、音と音のつなぎの区間であるジョイント部に対応して定義されているものもある(ジョイント系奏法モジュール)。従来知られているように、奏法モジュールは、奏法の特徴若しくは演奏の時間的部位又は区間等に基づき、大きくいくつかの種類に分類することができる。その例を示すと、次の6種類を挙げることができる。
1)「ノーマルヘッドモジュール」: (無音状態からの)音の立ち上がり区間(ヘッド部)を受け持つヘッド系奏法モジュール。
2)「ノーマルテールモジュール」: (無音状態への)音の立ち下がり区間(テール部)を受け持つテール系奏法モジュール。
3)「ノーマルジョイントモジュール」: 2つの音を(無音状態を経由せずに)レガート(スラー)で接続する接続区間(ジョイント部)を受け持つジョイント系奏法モジュール。
4)「ノーマルボディモジュール」: ビブラートのかからない、音の立ち上がり以降から立ち下がり以前までの音の定常区間(ボディ部)を受け持つボディ系奏法モジュール(後述する図4参照)。
5)「ビブラートボディモジュール」: 上記したノーマルボディモジュールとは異なり、特殊な奏法であるビブラート奏法を実現する音の立ち上がり以降から立ち下がり以前までの音の定常区間(ボディ部)を受け持つボディ系奏法モジュール。この実施例では、大きく分けると、マニュアルビブラートモード時に用いるマニュアルビブラートボディモジュールと、オートビブラートモード時に用いるオートビブラートボディモジュールとがある(後述する図4参照)。
6)「ジョイントヘッドモジュール」: 上記したノーマルヘッドモジュールとは異なり、特殊な奏法であるタンギング奏法を実現する音の立ち上がり区間を受け持つヘッド系奏法モジュール。ここで、所謂タンギング奏法と呼ばれる奏法は例えばサックスなどの管楽器の演奏時に特徴的に表れる奏法であって、演奏者がサックスの吹き口を一旦舌で止めることにより音を切った瞬間に指を変えて音を変更する奏法であり、一瞬だけ音が途切れるようにして発音されるものである。なお、これに似たものとして、バイオリンなどの弦楽器の演奏時に行われる弓返しがある。そこで、こうした弓返しなどによる一瞬だけ音が途切れるようにして発音される音楽的表現などを含め、こうした奏法をここでは便宜的にタンギング奏法と呼ぶ。
なお、上記6種類の分類法は本明細書での説明のための一例にすぎず、他の分類法を採用してもよいし、更に多くの種類が存在してもよい。また、奏法モジュールは、奏者、楽器の種類、演奏ジャンル等のオリジナル音源別にも分類されるのは勿論である。
1)「ノーマルヘッドモジュール」: (無音状態からの)音の立ち上がり区間(ヘッド部)を受け持つヘッド系奏法モジュール。
2)「ノーマルテールモジュール」: (無音状態への)音の立ち下がり区間(テール部)を受け持つテール系奏法モジュール。
3)「ノーマルジョイントモジュール」: 2つの音を(無音状態を経由せずに)レガート(スラー)で接続する接続区間(ジョイント部)を受け持つジョイント系奏法モジュール。
4)「ノーマルボディモジュール」: ビブラートのかからない、音の立ち上がり以降から立ち下がり以前までの音の定常区間(ボディ部)を受け持つボディ系奏法モジュール(後述する図4参照)。
5)「ビブラートボディモジュール」: 上記したノーマルボディモジュールとは異なり、特殊な奏法であるビブラート奏法を実現する音の立ち上がり以降から立ち下がり以前までの音の定常区間(ボディ部)を受け持つボディ系奏法モジュール。この実施例では、大きく分けると、マニュアルビブラートモード時に用いるマニュアルビブラートボディモジュールと、オートビブラートモード時に用いるオートビブラートボディモジュールとがある(後述する図4参照)。
6)「ジョイントヘッドモジュール」: 上記したノーマルヘッドモジュールとは異なり、特殊な奏法であるタンギング奏法を実現する音の立ち上がり区間を受け持つヘッド系奏法モジュール。ここで、所謂タンギング奏法と呼ばれる奏法は例えばサックスなどの管楽器の演奏時に特徴的に表れる奏法であって、演奏者がサックスの吹き口を一旦舌で止めることにより音を切った瞬間に指を変えて音を変更する奏法であり、一瞬だけ音が途切れるようにして発音されるものである。なお、これに似たものとして、バイオリンなどの弦楽器の演奏時に行われる弓返しがある。そこで、こうした弓返しなどによる一瞬だけ音が途切れるようにして発音される音楽的表現などを含め、こうした奏法をここでは便宜的にタンギング奏法と呼ぶ。
なお、上記6種類の分類法は本明細書での説明のための一例にすぎず、他の分類法を採用してもよいし、更に多くの種類が存在してもよい。また、奏法モジュールは、奏者、楽器の種類、演奏ジャンル等のオリジナル音源別にも分類されるのは勿論である。
従来知られているように、1つの奏法モジュールに対応する1つの波形データはそのままデータベースに記憶されているのではなく、複数の波形構成要素の集合からなるものとしてデータベースに記憶されている。この波形構成要素を、以下では「ベクタ(又はベクトル)」情報と呼ぶ。1つの奏法モジュールに対応するベクタの種類には、一例として下記のようなものがある。なお、調和成分及び調和外成分とは、対象たるオリジナルの奏法波形をピッチ調和成分からなる波形とそれ以外の残りの波形成分とに分離することで定義されるものである。
1.調和成分の波形(Timbre)ベクタ: 調和成分の波形構成要素のうち、ピッチと振幅をノーマライズした波形形状のみの特徴を抽出したもの。
2.調和成分の振幅(Amplitude)ベクタ: 調和成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
3.調和成分のピッチ(Pitch)ベクタ: 調和成分の波形構成要素のうち、ピッチ特性を抽出したもの(例えば或る基準ピッチを基準にした時間的ピッチ変動特性を示すもの)。
4.調和外成分の波形(Timbre)ベクタ: 調和外成分の波形構成要素のうち、振幅をノーマライズした波形形状(ノイズ的波形)のみの特徴を抽出したもの。
5.調和外成分の振幅(Amplitude)ベクタ: 調和外成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
上記のほかに、更に別の種類のベクタ(例えば、波形の時間軸の進行を示す時間ベクタ)が含まれていてもよいが、便宜上、本実施例ではその説明を省略する。
1.調和成分の波形(Timbre)ベクタ: 調和成分の波形構成要素のうち、ピッチと振幅をノーマライズした波形形状のみの特徴を抽出したもの。
2.調和成分の振幅(Amplitude)ベクタ: 調和成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
3.調和成分のピッチ(Pitch)ベクタ: 調和成分の波形構成要素のうち、ピッチ特性を抽出したもの(例えば或る基準ピッチを基準にした時間的ピッチ変動特性を示すもの)。
4.調和外成分の波形(Timbre)ベクタ: 調和外成分の波形構成要素のうち、振幅をノーマライズした波形形状(ノイズ的波形)のみの特徴を抽出したもの。
5.調和外成分の振幅(Amplitude)ベクタ: 調和外成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
上記のほかに、更に別の種類のベクタ(例えば、波形の時間軸の進行を示す時間ベクタ)が含まれていてもよいが、便宜上、本実施例ではその説明を省略する。
奏法波形の合成に際しては、これらのベクタ情報に対して適宜の加工処理を施して時間軸上に配置することで、奏法波形の各構成要素に対応する波形若しくはエンベロープを楽音の再生時間軸に沿ってそれぞれ構築し、このようにして時間軸上に配置された各ベクタ情報に基づいて所定の波形合成処理を行うことで、奏法波形を生成する。例えば、調和波形ベクタに調和ピッチベクタに応じたピッチ及びその時間変化特性を付与すると共に調和振幅ベクタに応じた振幅及びその時間変化特性を付与することで調和成分の波形を合成し、調和外波形ベクタに調和外振幅ベクタに応じた振幅及びその時間変化特性を付与することで調和外成分の波形を合成し、調和成分の波形と調和外成分の波形とを加算合成することで、最終的な所定の奏法的特徴を示す奏法波形つまり楽音波形を生成することができる。
ここで、上述したデータベースJ1(波形メモリ)に記憶される持続音部に適用するボディ系奏法モジュール(ノーマルボディモジュール及びビブラートボディモジュール)について、図4を用いて説明する。図4(a)はデータベースにおけるボディ系奏法モジュールのデータ記憶構造を示す概念図であり、図4(b)〜(d)はモジュール単位に記憶されている波形データの一実施例を示す概念図である。
図4(a)に示すように、「ボディ系奏法モジュール(以下、単にモジュールと呼ぶ)」はダイナミクス値にそれぞれ対応付けられており、こうしたダイナミクス値に対応付けられた複数のモジュールを1組として、各音高(図では便宜上C3、D3、E3のみ示している)毎に少なくとも1組ずつ記憶している。例えば、1つの音色(ピアノ等の楽器音色、つまり音色情報で選択可能な1つの音色)について、35種の音高(音階音)のそれぞれに対応して、20種のダイナミクス値に対応付けられたモジュールを記憶するものとすると、データベース全体では当該音色について700個(35×20)のモジュールを記憶することになる。各モジュールに記憶されている波形データは、同じ音高であっても各ダイナミクス値に対応する各モジュールのそれぞれが異なる音色上の特徴を持つ楽音波形(つまり波形形状が異なる楽音波形)からなるものとすることができる。なお、個別の音高(音階音)毎にこのようなモジュールをそれぞれ記憶することなく、2又はそれ以上の音高(例えばC3とC#3など)のグループに対応してこのようなモジュールを記憶するようにしてよい。
さらに、各モジュールは持続音部における各種の奏法(ノーマル、ビブラート、ピッチベンドなど)に対応して、異なる内容の波形データを記憶する。例えばノーマル奏法に対応するノーマルボディの楽音を合成する場合には、図4(b)に示すような1周期分の波形を記録したノーマルボディモジュールを用いる。このようなノーマルボディモジュールの1周期波形が、上述のように、同一音色につき、各種音高毎に複数のダイナミクス値に対応して記憶されている。この場合、同じダイナミクス値に対応するノーマルボディモジュールの波形データを繰り返し読み出しても、その音色は時間変化せず、ストレートな音色特性を示す。しかし、ダイナミクス値が変化すると、使用されるノーマルボディモジュールが変更されるので、それに応じて音色も微妙に変化する。
他方、ビブラート奏法に対応する持続音部の楽音を合成する場合であって、オートビブラートモード設定時においては、図4(c)に示すようなビブラート1周期にわたる複数周期(又は複数の区間)からなる波形データ(ビブラート付与された波形データ)を記録したオートビブラートボディモジュールを使用する。図4(c)では、ビブラート1周期において、n周期(又はn区間)分の波形データ(単位は計データ)が存在することが示されている。このオートビブラートボディモジュールの波形データは(オリジナルのビブラート波形同様に)ビブラート1周期の間で音色が微妙に又は複雑に時間変化し、勿論その各周期(又は区間)毎の波形ピッチも変化(ビブラート)している。なお、オートビブラートボディモジュールにおけるn周期(又はn区間)の波形データは、オリジナル波形において元々連続しているものであってもよいし、あるいは、連続していないものであってもよい。オートビブラートボディモジュールにおけるピッチずれを含む各波形データを有効に利用しうるようにするために、各波形データに付属してピッチ情報(ピッチずれ情報)を持たせるようにしている。このようなオートビブラートボディモジュールが、上述のように、同一音色(例えばバイオリンのビブラート奏法のような奏法音色)につき、各種音高毎に複数のダイナミクス値に対応してそれぞれ記憶されている。
さらに、ビブラート奏法に対応するビブラートボディの楽音を合成する場合であって、マニュアルビブラートモードの設定時においては、図4(d)に示すように、1つのダイナミクス値に対応して複数m個の異なるピッチずれ(例えばセント値)にそれぞれ対応する波形データを複数含むマニュアルビブラートボディモジュールを用いる。例えば、或る音色の或る1つの音高(ノート)に対応する或る1つのダイナミクス値に対応して、ピッチずれなし(0セント)の波形データを含む−50セント乃至+50セントの範囲の複数ステップ(例えば10セントきざみ)のピッチずれに対応する波形データをそれぞれ個別に記憶することにより、1つのマニュアルビブラートボディモジュールを構成する。この場合、各波形データは、その波形データに付属してピッチ情報(ピッチずれ情報)を持ち、指示されたピッチずれに対応するモジュール(1周期波形)を検索/選択することができるようになっている。なお、マニュアルビブラートモード設定時における持続音部の楽音を合成するための波形データとして、図4(d)に示すような専用の波形データを記憶せずに、前記「オートビブラートボディモジュール」の波形データを使用するようにしてもよい。その場合は、図4(c)に示すような「オートビブラートボディモジュール」における各1周期波形データが持つピッチ情報(ピッチずれ情報)を参照して、必要なピッチずれに対応する波形データを「オートビブラートボディモジュール」から抽出するようにするとよい。
なお、ノーマルボディモジュールの波形データは1周期に限らず、2又はそれ以上の複数周期の波形で構成してもよいし、あるいは、公知のように1/2周期等、1周期未満の波形をノーマルボディモジュールの波形データとして記憶してもよい。また、マニュアルビブラートボディモジュールの波形データも同様に1周期からなるものに限らない。また、オートビブラートボディモジュールの波形データは、ビブラート1周期に限らず、複数のビブラート周期にわたるものであってもよく、あるいは、ビブラートの1/2周期など、ビブラート1周期未満からなるものであってもよい。
上記データベースJ1において、前記したような奏法モジュール毎に波形データと共に付加的に記憶されるデータ群としては、例えばその記憶しているオリジナルの波形データのダイナミクス値やピッチ情報(オリジナル波形の音高ピッチ及びそれに対するピッチずれを示す情報)、あるいは合成時に用いられる基本のクロスフェード長(時間長)などの情報がある。さらに、ビブラート1周期にわたる全波形データを記録した「ビブラートボディモジュール」においてはビブラート1周期の情報としてユニットの長さや平均パワー値などの情報が記録される。勿論、こうしたデータ群は、他のモジュールと同様に「データテーブル」として一括管理できる。なお、ビブラートボディモジュールにおいては、前述の通り、該ビブラートボディモジュール内の各波形データに付属してピッチ情報(ピッチずれ情報)をそれぞれ持たせており、所望のピッチずれに対応する波形データを検索することができるようになっている。すなわち、奏法パラメータは当該奏法モジュールに係る波形の時間やレベルなどを制御するためのパラメータであり、各奏法モジュールの性格に応じて適宜異なる1又は複数種類のパラメータが含まれていてよい。また、上記したベクタ情報の全部又は一部が、奏法パラメータに含まれていてよい。こうした奏法パラメータは、波形メモリ等に予め記憶されていてもよいし、あるいはユーザの入力操作によって入力するようにしたり、あるいは既存のパラメータをユーザの操作によって適宜変更できるようになっていたりしてもよい。なお、奏法波形の再生に際して、奏法パラメータが与えられなかったような場合には、標準的な奏法パラメータを自動的に付加するようにしてもよい。また、処理の過程で、適宜のパラメータが自動的に生成されて付加されるようになっていてもよい。
上記した楽音合成部J4による楽音合成時にかかる処理負荷は、奏法合成部J3による各発音スロット毎に生成される前記「奏法情報」の更新間隔に左右される。すなわち、楽音合成部J4は奏法合成部J3から同時に多くの奏法情報を取得し、各発音スロット毎に楽音合成を行うために奏法情報に応じた適宜の楽音合成処理を同じタイミングで同時並行的に実行しなければならないことから、多数の発音スロットの奏法情報の更新間隔がすべて同じタイミングになると、それだけ同時に実行すべき処理が増え、制御部による処理パフォーマンスが低下する。そこで、本発明においては、奏法合成部J3による前記「奏法情報」の生成時に、制御部の処理負荷に応じて各発音スロット毎に前記「奏法情報」の更新間隔を異ならせるように変更することで、楽音合成部J4で奏法情報に応じた適宜の楽音合成処理を多数の発音スロットにおいて同じタイミングで実行することがないようにする。特に、楽音の持続音部の合成は音のほかの箇所(アタック部、テール部、接続音部)に比べると、比較的に長い時間をかけて合成される箇所であることから、楽音の持続音部において各発音スロット毎に前記「奏法情報」の更新間隔を制御する。
図5は、奏法合成部J3における「持続音部制御処理」の動作の一実施例を示すフローチャートである。ただし、ここでは図示の便宜上、「持続音部制御処理」の前半部分の処理を図5Aに、「持続音部制御処理」の後半部分の処理を図5Bに、それぞれ分けて図示した。当該処理は本電子楽器におけるCPU1により、各発音スロット毎に対する波形合成の開始指示と共にカウントが開始されるタイマ1Aに応じて、開始指示された発音スロット毎に例えば1ms(ミリ秒)間隔で実行する割り込み処理である。この「持続音部制御処理」は、演奏者の操作又は演奏データの演奏情報に応じて、例えばビブラート奏法あるいはピッチベンド奏法などによって1つの楽音の発音中にそのピッチ及び音色が微妙に又は複雑に時間的に変化する特性で、楽音の持続音部を合成する処理である。なお、楽音のアタック部の波形合成は図示しないアタック部合成処理によって別途行われるようになっており、空いている発音スロットにアサインしてアタック部の波形合成を開始する処理に引き続き、ここに示す「持続音部制御処理」が実行されて、持続音部の波形合成が行われる。なお、上述したように、当該処理の開始時には、振幅及びピッチの各コントロール用の加算値(楽音制御情報)からなる奏法情報やベクタ情報からなる奏法情報の生成、ベクタ情報を更新するための更新チェックは、予め決められた時間間隔毎に行われるように初期セットされている。
図5Aに示すように、ステップS1は、システム発音数を検出する。すなわち、各発音スロットにおいて波形合成中である楽音の数(同時発音数)を、現時点における制御部(CPU)の処理負荷として検出する。ここで、合成中の楽音としては、演奏者による演奏操作に基づく楽音(例えばメロディ音)、予め用意された演奏データに基づく楽音(例えば伴奏音)などである。ステップS2は、所定のルール(判定条件)に従って振幅更新間隔を動的制御するか否かを判定する。前記所定のルール(判定条件)は、例えば前記検出したシステム発音数(同時発音数)が9音以上である場合に振幅更新間隔を更新するなど適宜の条件であってよく、例えば同時発音数が9音以上になると10ms間隔を20ms間隔などのようにして振幅更新間隔を長くするルールが予め決められている。また、振幅更新間隔は振幅コントロール用の加算値(振幅制御情報)の更新間隔であって、前記振幅更新間隔毎に取得される振幅コントロール用の加算値に基づき、合成する波形の振幅が制御されるようになっている。例えば同時発音数が9音以上であって、上記したような所定のルールに従って振幅更新間隔を動的制御すると判定した場合には(ステップS2のYES)、振幅更新間隔を変更する(ステップS3)。ステップS4は、前記振幅更新間隔に基づく振幅制御情報の更新タイミングであるか否かを判定する。現在時刻が振幅制御情報の更新タイミングであると判定した場合には(ステップS4のYES)、振幅制御情報からなる奏法情報を生成する(ステップS5)。楽音合成部J4では、該生成された振幅制御情報からなる奏法情報に基づき、波形の振幅を調整する。
ステップS6は、所定のルール(判定条件)に従ってピッチ更新間隔を動的制御するか否かを判定する。このピッチ更新間隔はピッチコントロール用の加算値(ピッチ制御情報)の更新間隔であって、前記ピッチ更新間隔毎に取得されるピッチコントロール用の加算値に基づき、合成する波形のピッチが制御される。例えば同時発音数が9音以上であって、上記したような所定のルールに従ってピッチ更新間隔を動的制御すると判定した場合には(ステップS6のYES)、ピッチ更新間隔を変更する(ステップS7)。このピッチ更新間隔の更新についても、上記振幅更新間隔と同様にして、同時発音数が9音以上になると例えば10ms間隔を15ms間隔などのようにピッチ更新間隔を長くするルールが予め決められている。ステップS8は、前記ピッチ更新間隔に基づくピッチ更新情報の更新タイミングであるか否かを判定する。現在時刻がピッチ更新情報の更新タイミングであると判定した場合には(ステップS8のYES)、ピッチ制御情報からなる奏法情報を生成する(ステップS9)。楽音合成部J4では、該生成されたピッチ制御情報からなる奏法情報に基づき、波形全体をピッチシフトする。
図5Bに示すように、ステップS10は、自動的にビブラートをかける設定か否か、つまりモード設定がオートビブラートモードであるか否かを判定する。モード設定がオートビブラートモードでない場合、つまりマニュアルビブラートモードである場合には(ステップS10のNO)、所定のルール(判定条件)に従ってベクタ更新間隔を動的制御するか否かを判定する(ステップS19)。例えば同時発音数が9音以上であって、所定のルールに従いベクタ更新間隔を動的制御すると判定した場合には(ステップS19のYES)、ベクタ更新間隔を変更する(ステップS20)。すなわち、ベクタ更新間隔の更新についても、同時発音数が9音以上になるとベクタ更新間隔を長くするルールが予め決められている。例えば、50ms間隔を100ms間隔にするなどのように、同時発音数が9音以上になるとベクタ更新間隔を長くするルールが予め決められている。このベクタ更新間隔は、上述した振幅ベクタ、ピッチベクタ、波形ベクタの各ベクタ情報の更新タイミングである。ステップS21は、前記ベクタ更新間隔に基づくベクタ情報の更新タイミングであるか否かを判定する。ベクタ情報の更新タイミングである場合には(ステップS21のYES)、ベクタ情報からなる奏法情報を生成する(ステップS22)。すなわち、マニュアルビブラートモード時においてはベクタ更新間隔毎に、常にダイナミクス値に対応したベクタ情報からなる奏法情報が生成される(値は同じであってよい)。楽音合成部J4では、ベクタ情報からなる奏法情報に基づき波形の細やかな制御を行う。なお、ベクタ更新間隔の動的制御に応じてクロスフェード期間を変更することは言うまでもない。
一方、モード設定がオートビブラートモードである場合には(ステップS10のYES)、所定のルール(判定条件)に従ってベクタ更新チェック間隔を動的制御するか否かを判定する(ステップS11)。例えば同時発音数が9音以上であって、所定のルールに従いベクタ更新チェック間隔を動的制御すると判定した場合には(ステップS11のYES)、ベクタ更新チェック間隔を変更する(ステップS12)。ベクタ更新チェック間隔は、ベクタ情報の更新の有無(具体的には、新たなダイナミクス値の入力の有無など)をチェックする更新チェックタイミングである。このベクタ更新チェック間隔の更新についても、同時発音数が9音以上になるとベクタ更新チェック間隔を長くするルールが予め決められている。例えば、10ms間隔を20ms間隔にするなどのように、同時発音数が9音以上になるとベクタ更新チェック間隔を長くするルールが予め決められている。ステップS13は、前記ベクタ更新チェック間隔に基づくベクタ情報の更新チェックタイミングであるか否かを判定する。ベクタ情報の更新チェックタイミングである場合には(ステップS13のYES)、ベクタ情報の更新チェックを行う(ステップS14)。すなわち、オートビブラートモード時においては、ベクタ更新チェック間隔毎にベクタ情報の更新(新たなダイナミクス値の入力など)があるか否かのチェックが行われる。
ステップS15は、上記ベクタ情報の更新チェックに基づき、現在時刻(ベクタ情報の更新チェックタイミング)にベクタ情報の更新があるか否かを判定する。ベクタ情報の更新があると判定した場合、つまり現在時刻におけるベクタ情報の更新チェックタイミングがベクタ情報の更新があるベクタ更新タイミングである場合には(ステップS15のYES)、所定のルールに従い波形ベクタ個数を動的制御するか否かを判定する(ステップS16)。この波形ベクタ個数の制御についても、例えば1つのオートビブラートボディモジュールに含まれる複数の波形データの一部のみを用いるように、同時発音数が9音以上になると波形データを減らして用いるルールが予め決められている(この場合、前記ルールに、楽音合成時に使用する波形データの指定情報を含むようにするとよい)。例えば同時発音数が9音以上であって、所定のルールに従い波形ベクタ個数を動的制御すると判定した場合には(ステップS16のYES)、1つのオートビブラートボディモジュールに含まれる複数の波形データの一部の波形を間引いた波形ベクタ情報を含むベクタ情報からなる奏法情報を生成する(ステップS17)。一方、波形ベクタ個数を動的制御しないと判定した場合には(ステップS16のNO)、波形を間引いていない波形ベクタ情報を含むベクタ情報からなる奏法情報を生成する(ステップS18)。楽音合成部J4では、ベクタ情報からなる奏法情報に基づき波形の細やかな制御を行う際に、前記波形ベクタ情報に従って対応する波形データのみを選択する。
次に、上記した「持続音部制御処理」(図5参照)による楽音制御情報の更新間隔の動的制御について、マニュアルビブラートモードの場合とオートビブラートモードの場合とで、それぞれ図を分けて説明する。図6は、マニュアルビブラートモード時における楽音制御情報の更新間隔の動的制御を模式的に説明するための概要図である。図6の左側に動的制御前の楽音制御情報の更新間隔を、右側に動的制御後の楽音制御情報の更新間隔を、それぞれ各発音スロット毎に示している。また、図6においては、各発音スロットSLにおける振幅コントロール用の加算値(振幅制御情報)の更新間隔を丸Aで、ピッチコントロール用の加算値(ピッチ制御情報)の更新間隔を菱形Pで、ベクタ情報の更新間隔を長方形Bで示している。なお、図中において最上段に示した発音スロットSL1は、優先処理する楽音(例えば、演奏者による演奏操作に応じて発生する楽音)を形成するものとして予め割り当て済みのものである。
図6左図に示すように、楽音制御情報の更新間隔の動的制御を行う前においては、制御部による上述した「持続音部制御処理」(図5参照)の実行に伴って、各発音スロット毎に10ms間隔で振幅及びピッチの各コントロール用の加算値からなる奏法情報を生成することから、制御部にかかる処理負荷は、上記2つの楽音制御情報の更新(奏法情報の生成)が重なる10ms間隔毎に大きくなる。また、50ms間隔でベクタ情報からなる奏法情報を生成する(ただし、マニュアルビブラートモードにおいては、予め記憶済みの振幅ベクタ及びピッチベクタを用いないことから、ここで生成されるベクタ情報は主に波形ベクタである)ことから、上記3つの楽音制御情報の更新が全て重なる50ms間隔毎に、制御部にかかる処理負荷は最大となる。上記楽音制御情報の更新は各発音スロット毎に行われることから、同時発音数が増えるに従って制御部にかかる処理負荷は大きくなる。例えば、1つの楽音制御情報の更新にかかる処理負荷を「1」負荷とし、制御部にかかる処理負荷が最大となる50ms間隔毎の処理負荷を表すとすると、同時発音数が1音のみだと「3」、同時発音数が2音だと「6(3×2)」、…、同時発音数が4音だと「12(3×4)」といったようにして、同時発音数が増えるに従って制御部にかかる処理負荷は大きくなる。
制御部による同じタイミングで1度に処理可能な処理量は決まっており、上記のようにして同時発音数が増えるに伴い処理量が増して処理負荷が飽和すると、上記楽音制御情報の更新に遅れが生ずる。そこで、例えば同時発音数が9音以上に増えたような場合には、図6右図に示すように、優先処理を行う発音スロット以外の全ての発音スロットについて、振幅コントロール用の加算値の更新間隔を例えば10msから20msに、ピッチコントロール用の加算値の更新間隔を例えば10msから15msに、さらにはベクタ情報の更新間隔を例えば50msから100msに、それぞれ更新間隔を長くするようにして変更する。このような楽音制御情報の更新間隔の動的制御を行うと、各楽音制御情報の更新が同じタイミングに1度に重なることがなくなり分散処理されるようになり、同時発音数が増えたとしても同じタイミングで処理する処理量が増すことがないので処理負荷は飽和しない。したがって、上記楽音制御情報の更新に遅れが生ずることがないので、聴感上の発音遅れを生じさせることなく、また品質のよい楽音を合成することができるようになる。
図7は、オートビブラートモード時における楽音制御情報の更新間隔の動的制御を模式的に説明するための概要図である。この図7においても左側に動的制御前の楽音制御情報の更新間隔を、右側に動的制御後の楽音制御情報の更新間隔を、それぞれ各発音スロット毎に示している。また、図7においては、各発音スロットSLにおける振幅コントロール用の加算値(振幅制御情報)の更新間隔を丸Aで、ピッチコントロール用の加算値(ピッチ制御情報)の更新間隔を菱形Pで、ベクタの更新チェック間隔を三角形Cで、ベクタ情報の更新間隔を三角形Dで示している。これに加えて、さらにオートビブラートボディモジュールにおける波形の間引きについて説明するための図を下に示している。
図7左図に示すように、楽音制御情報の更新間隔の動的制御を行う前においては、制御部による上述した「持続音部制御処理」(図5参照)の実行に伴って、各発音スロット毎に10ms間隔で振幅及びピッチの各コントロール用の加算値からなる奏法情報を生成すると共に、ベクタ更新を行うか否かの更新チェックを行っている(ただし、ここでは50ms間隔でベクタ更新を行うものと判断してベクタ情報からなる奏法情報を生成している)。オートビブラートモードの場合においても、図7右図に示すように、優先処理を行う発音スロット以外の全ての発音スロットについて、振幅コントロール用の加算値の更新間隔を例えば10msから20msに、ピッチコントロール用の加算値の更新間隔を例えば10msから15msに、さらにはベクタ情報(振幅ベクタ情報HA、ピッチベクタ情報HP、波形ベクタ情報HTを含む)の更新チェック間隔を例えば10msから20msに、それぞれ更新間隔を長くするようにして変更する。このような楽音制御情報の更新間隔の動的制御を行うと、各楽音制御情報の更新が同じタイミングに1度に重なることがなくなり分散処理されるようになり、同時発音数が増えたとしても同じタイミングで処理する処理量が増すことがない。さらに、オートビブラートモードの場合には図示のように、ビブラート1周期に使用する波形ベクタ情報HTとして、例えばオートビブラートモジュールに含まれる16個の単位波形データのうち8個の単位波形データを間引き、波形数を減らすようにする(勿論、これに応じてクロスフェード期間を変更する)。こうした場合においても、上記楽音制御情報の更新に遅れが生ずることがないので、聴感上の発音遅れを生じさせることなく、また品質のよい楽音を合成することができるようになる。
なお、上記したような各楽音制御情報の更新間隔(振幅更新間隔、ピッチ振幅更新間隔、ベクタ更新間隔)の動的制御を行うか否かを判定するための所定のルール(判定条件)は一例であり、これに限らない。また、同時発音数などの動的制御を行うか否かを決定する閾値はユーザが任意に設定することができてよく、さらに、振幅更新間隔、ピッチ振幅更新間隔、ベクタ更新間隔毎に個別に閾値を設定できるようにしてあってもよい。音質の低下を容認すれば、各更新間隔をさらに広げるように設定することで、制御部にかかる楽音合成のための処理負荷を容易に減らすことができる。なお、各楽音制御情報の更新間隔を設定する場合に、ピッチは演奏上において更新が遅れると発生される楽音に音楽の観点から致命的な欠陥が生まれてしまい都合が悪いが、波形ベクタなどは多少更新が遅れたとしても音色変化が遅れるだけであり、ピッチに比べると致命的な欠陥とはならないことから、こうした点を考慮して各楽音制御情報の更新間隔を決定するようにするのがよい。
なお、上述した実施例では優先処理する発音スロット以外の全ての発音スロット(又はグループ化された発音スロット)に対して、同一の更新間隔に変更するようにしたがこれに限らず、各発音スロット毎に個別に異なる更新間隔に変更するようにして、発生すべき楽音(又は発音スロット)毎に異なるルールを割り当てておいてもよい。例えば、発生すべき楽音(又は発音スロット)に対して順列をつけておき、該順列に従って順列の低い方から更新間隔を長くするように異なるルールを割り当てておいてもよい。あるいは、発音スロットをグループ化して、各グループ毎に異なる更新間隔に変更するようにして、ルールを割り当てておいてもよい。勿論、グループ化は発音スロットに限らず、音高など適宜にグループ化してあってよい。
なお、優先処理をする楽音に関しては楽音制御情報の更新間隔を動的制御しない例を示したがこれに限らず、優先処理する楽音の音質が若干低下することを許容するのであれば、優先処理する楽音(所定の発音スロット)に対しても楽音制御情報の更新間隔を動的制御するようにしてもよい。
なお、同時発音数が増えてから減ったような場合には、楽音制御情報の更新間隔を変更前の既定値に変更するなどして更新間隔を元の状態に戻すようにするとよい。また、同時発音数が所定数よりも大きく減少するような場合には、楽音制御情報の更新間隔を短縮するように動的制御するようにしてもよい。
なお、楽音合成の方式としては、既存の演奏情報を本来の演奏時間到来前に先行取得しておき、これを解析して楽音を合成する所謂プレイバック方式であってもよいし、リアルタイムに供給された演奏情報に基づき楽音を合成するリアルタイム方式のどちらであってもよい。
なお、同時発音数が増えてから減ったような場合には、楽音制御情報の更新間隔を変更前の既定値に変更するなどして更新間隔を元の状態に戻すようにするとよい。また、同時発音数が所定数よりも大きく減少するような場合には、楽音制御情報の更新間隔を短縮するように動的制御するようにしてもよい。
なお、楽音合成の方式としては、既存の演奏情報を本来の演奏時間到来前に先行取得しておき、これを解析して楽音を合成する所謂プレイバック方式であってもよいし、リアルタイムに供給された演奏情報に基づき楽音を合成するリアルタイム方式のどちらであってもよい。
なお、本発明において使用する波形データは、上述したような各種奏法に対応して「奏法モジュール」化されたものに限らず、その他のタイプのものであってもよい。また、各モジュールの波形データは、メモリに記憶したPCM、DPCM、ADPCMのような適宜の符号化形式からなる波形サンプルデータを単純に読み出すことで生成されるようなものであってもよいし、あるいは、高調波合成演算やFM演算、AM演算、フィルタ演算、フォルマント合成演算、物理モデル音源など、各種の公知の楽音波形合成方式を適宜採用したものであってもよいことは言うまでもない。すなわち、音源8における楽音信号発生方式は、いかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出す波形メモリ読み出し方式、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるFM方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるAM方式等の公知の方式を適宜採用してよい。このように、音源回路8の方式は波形メモリ方式、FM方式、物理モデル方式、高調波合成方式、フォルマント合成方式、VCO+VCF+VCAのアナログシンセサイザ方式、アナログシミュレーション方式等、どのような方式であってもよい。また、専用のハードウェアを用いて音源8を構成するものに限らず、DSPとマイクロプログラム、あるいはCPUとソフトウェアを用いて音源回路8を構成するようにしてもよい。さらに、共通の回路を時分割で使用することによって複数の発音チャンネルを形成するようなものでもよいし、各発音チャンネルがそれぞれ専用回路で構成されるようなものであってもよい。
なお、この楽音合成装置を電子楽器に適用する場合、電子楽器は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、演奏操作子、表示器、音源等を1つの電子楽器本体に内蔵したものに限らず、それぞれが別々に構成され、MIDIインタフェースや各種ネットワーク等の通信手段を用いて各機器を接続するように構成されたものにも同様に適用できることはいうまでもない。また、パソコンとアプリケーションソフトウェアという構成であってもよく、この場合処理プログラムを磁気ディスク、光ディスクあるいは半導体メモリ等の記憶メディアから供給したり、ネットワークを介して供給するものであってもよい。さらに、カラオケ装置や自動演奏ピアノのような自動演奏装置、ゲーム装置、携帯電話等の携帯型通信端末などに適用してもよい。携帯型通信端末に適用した場合、端末のみで所定の機能が完結している場合に限らず、機能の一部をサーバコンピュータ側に持たせ、端末とサーバコンピュータとからなるシステム全体として所定の機能を実現するようにしてもよい。すなわち、本発明に従う所定のソフトウエア又はハードウエアを用いることによって、演奏情報に従って楽音合成のために使用すべき奏法モジュールを適宜に切り替えることができ、また同時発音数などに応じて更新間隔を適宜に制御することで、楽音合成時に制御部にかかる処理負荷を適宜に調整することのできるようにしたものであればどのようなものであってもよい。
1…CPU、1A…タイマ、2…ROM、3…RAM、4…外部記憶装置、5…演奏操作子(鍵盤等)、6…パネル操作子、7…表示器、8…音源、8A…サウンドシステム、9…インタフェース、1D…通信バス、J1…データベース、J2…入力部、J3…奏法合成部、J4…楽音合成部
Claims (5)
- 波形データを記憶する記憶手段と、
楽音波形を形成する複数の発音スロットと、
演奏情報を取得する取得手段と、
前記取得した演奏情報に応じて、前記各発音スロット毎に割り当てる波形データの選択を指示する楽音制御情報、及び/又は選択済みの波形データの加工を指示する楽音制御情報を所定の周期時間毎に更新する更新手段と、
該当する各発音スロットに対して前記更新した楽音制御情報に対応する複数の制御処理を実行して楽音波形を生成する楽音合成手段と、
前記楽音合成手段における複数の制御処理の実行に基づく処理負荷を判断し、該判断した処理負荷に応じて前記周期時間を適宜に変更する変更手段と
を具えてなり、
前記変更手段は、波形データの選択を指示する楽音制御情報の前記周期時間と選択済みの波形データの加工を指示する楽音制御情報の前記周期時間とを各発音スロットにおいて個別に変更することを特徴とする楽音合成装置。 - 前記変更手段は、前記更新した楽音制御情報に対応する複数の制御処理の実行により楽音波形を生成中の発音スロットの数に応じて、処理負荷を判断することを特徴とする請求項1に記載の楽音合成装置。
- 前記変更手段は、予め決められた1又は複数の発音スロットに前記生成周期を変更することを特徴とする請求項2に記載の楽音合成装置。
- 前記記憶手段は複数の単位波形データをグループ化した波形データを記憶してなり、前記更新手段は、前記更新した楽音制御情報に対応する複数の制御処理を実行して楽音波形を生成中の発音スロットの数に応じて、波形データに含まれる複数の単位波形データのうちのいずれかを間引くように指示する楽音制御情報を生成することを特徴とする請求項2又は3に記載の楽音合成装置。
- 波形データを記憶するメモリを使用して、コンピュータに、
演奏情報を取得する手順と、
前記取得した演奏情報に応じて、楽音波形を形成する複数の発音スロット毎に割り当てる波形データの選択を指示する楽音制御情報、及び/又は選択済みの波形データの加工を指示する楽音制御情報を所定の周期時間毎に更新する手順と、
該当する各発音スロットに対して前記更新した楽音制御情報に対応する複数の制御処理を実行して楽音波形を生成する手順と、
前記複数の制御処理の実行に基づく処理負荷を判断し、該判断した処理負荷に応じて、前記波形データの選択を指示する楽音制御情報の前記周期時間と選択済みの波形データの加工を指示する楽音制御情報の前記周期時間とを各発音スロットにおいて個別に変更する手順と
を実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006171434A JP2008003222A (ja) | 2006-06-21 | 2006-06-21 | 楽音合成装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006171434A JP2008003222A (ja) | 2006-06-21 | 2006-06-21 | 楽音合成装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008003222A true JP2008003222A (ja) | 2008-01-10 |
Family
ID=39007676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006171434A Pending JP2008003222A (ja) | 2006-06-21 | 2006-06-21 | 楽音合成装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008003222A (ja) |
-
2006
- 2006-06-21 JP JP2006171434A patent/JP2008003222A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1638077A1 (en) | Automatic rendition style determining apparatus, method and computer program | |
JP4702160B2 (ja) | 楽音合成装置及びプログラム | |
JP2007011217A (ja) | 楽音合成装置及びプログラム | |
JP4802857B2 (ja) | 楽音合成装置及びプログラム | |
JP4561636B2 (ja) | 楽音合成装置及びプログラム | |
JP3829780B2 (ja) | 奏法決定装置及びプログラム | |
JP4407473B2 (ja) | 奏法決定装置及びプログラム | |
JP4802947B2 (ja) | 奏法決定装置及びプログラム | |
JP4816441B2 (ja) | 楽音合成装置及びプログラム | |
JP5104414B2 (ja) | 自動演奏装置及びプログラム | |
JP2008003222A (ja) | 楽音合成装置及びプログラム | |
JP4172509B2 (ja) | 奏法自動判定装置及び方法 | |
JP2000003175A (ja) | 楽音生成方法、楽音デ―タ作成方法、楽音波形デ―タ作成方法、楽音デ―タ生成方法、および記憶媒体 | |
JP2003271142A (ja) | 奏法表示編集装置及び方法 | |
JP3755468B2 (ja) | 楽曲データの表情付け装置及びプログラム | |
JP3760909B2 (ja) | 楽音生成装置及び方法 | |
JP3832421B2 (ja) | 楽音生成装置及び方法 | |
JP4826276B2 (ja) | 楽音合成装置及びプログラム | |
JP2006133464A (ja) | 奏法決定装置及びプログラム | |
JP3832422B2 (ja) | 楽音生成装置及び方法 | |
JP5104415B2 (ja) | 自動演奏装置及びプログラム | |
JP4218566B2 (ja) | 楽音制御装置及びプログラム | |
JP3832420B2 (ja) | 楽音生成装置及び方法 | |
JP3832419B2 (ja) | 楽音生成装置及び方法 | |
JP2009157052A (ja) | 自動演奏装置 |