以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の実施の一形態に係る楽音生成方法を適用した楽音生成装置の概略構成を示すブロック図である。
同図において、本実施の形態の楽音生成装置は、楽音をサンプリングする指示やサンプリングされた波形データ等のエディットや各種情報の入力等を行うためのパネル操作子1と、該パネル操作子1により入力された各種情報やサンプリングされた波形データ等を表示する表示器2と、装置全体の制御を司るCPU3と、該CPU3が実行する制御プログラムや参照するテーブルデータ等を記憶するROM4と、演奏データ、CPU3による演算結果、パネル操作子1からの各種情報等を一時的に記憶するRAM5と、CPU3が実行するタイマ割込処理の割込間隔や各種時間を計時するタイマ6と、A/D変換器(Analog to Digital Converter)を内蔵し、たとえばマイクロフォン15から入力されたアナログ楽音信号をデジタルの基本波形データ(出力すべき楽音波形データの素材となる波形データ)に変換(サンプリング)して波形RAM12に書き込むための波形入力部7と、波形RAM12に対する波形データの書込みのアクセスと読出しのアクセスとがぶつからないように制御するためのアクセス制御部8と、該アクセス制御部8を介して波形RAM12をアクセスし波形データの読出しを行う波形読出部9と、波形データ、各波形データに関連する情報(後述する奏法分析制御データ、奏法解釈データおよび奏法波形指定データ等)、各種音色パラメータ等から成る音色データを複数種類記憶したり、前記CPU3が実行する制御プログラムを含む各種アプリケーションプログラムや予め作成された演奏情報(曲データ)等を記憶したりするためのディスクをドライブするディスクドライブ10と、外部の電子楽器等から出力されたMIDI(Musical Instrument Digital Interface)信号(コード)を入力したり、MIDI信号を外部の電子楽器等に出力したりするMIDIインターフェース(I/O)11とにより主として構成されている。
上記構成要素1〜11は、バス14を介して相互に接続され、波形入力部7にはマイクロフォン15が接続され、波形入力部7の出力側はアクセス制御部8の入力側に接続され、アクセス制御部8は波形RAM12および波形読出部9と相互に接続され、波形読出部9の出力側は、たとえばアンプやスピーカ等から成るサウンドシステム13の入力側に接続されている。
なお、前記ディスクドライブ10によりドライブされるディスクには、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM、光磁気ディスク等、種々のものがあるが、以下、説明の都合上、ハードディスクとして説明する。
波形読出部9には、図示しないトーンジェネレータおよびD/A変換器(Digital to Analog Converter)が内蔵されている。演奏データが再生されてノートオンイベントが発生し、該ノートオンに対する発音チャンネルが決定される、すなわち発音割り当てされると、そのチャンネルに、該ノートオンに応じた前記基本波形データを読み出すための設定およびその他の楽音パラメータの設定が行われ、波形読出部9は、前者の基本波形データを読み出すための設定に応じて、前記波形RAM12から当該基本波形データを読み出し、上記トーンジェネレータにより、後者のその他の楽音パラメータの設定に応じて、この読み出された波形データの周波数特性や振幅特性等の制御を行い、出力すべきデジタル楽音波形データを生成し、上記D/A変換器により、アナログ楽音信号に変換して、前記サウンドシステム13に出力する。サウンドシステム13は、このアナログ楽音信号を音響に変換する。
図2は、前記パネル操作子1に配設された各種スイッチおよび表示器2に表示された表示の一例を示す図であり、同図には、演奏者が手動で演奏情報に各種奏法を設定できる奏法設定モードを選択したときの状態が示されている。
パネル操作子1には、同図に示すように、後述するフレーズ分割された演奏データの各フレーズ毎に、マニュアルで各種奏法(奏法A,B,C,D,…)を設定するための奏法設定スイッチ、および該奏法設定スイッチによる奏法の設定を解除する、すなわち奏法の指定を無指定に戻すための奏法終了スイッチが配設されている。そして、表示器2には、演奏者が現在選択している音色に応じて選択可能な各種奏法(同図の例では、「チョーキ(ング)」、「トレモ(ロ)1」、「トレモ(ロ)2」、「グリッサ(ンド)」)が表示され、この選択可能な奏法がそれぞれ奏法設定スイッチ対応して表示されている。演奏者は、演奏情報中、奏法を付与したい位置で当該奏法に対応するスイッチを押すことにより、演奏情報に奏法を自由に付与することができる。
図3は、前記ディスクドライブ10のハードディスクに記憶された複数の音色データTCDkおよびそのデータフォーマットの一例を示す図である。同図中、(a)は、複数個の音色データTCDk(k=1,…)が格納されている状態を示し、(b)は、ある1つの音色データTCD5のデータフォーマットを示し、(c)は、音色データTCD5がギターの音色である場合に、各種ギター奏法により演奏された楽音をそれぞれサンプリングして加工し記憶した各種波形データの一例を示し、(d)は、音色データがフルートの音色である場合に、(c)と同様にして記憶した波形データの一例を示している。
各音色データTCDkは、(b)に示す音色データTCD5と同様のデータフォーマットで構成され、音色名やデータ容量等を記憶するヘッダ領域21と、この音色データでサポートされている奏法、換言すればこの音色に対応する自然楽器で用いられる奏法の種類を示す情報(この情報は、本実施の形態では「奏法コード」で表現される)や、奏法コードが指定(付与)されていない演奏情報に奏法コードを付与するときに、どのような演奏情報(たとえば、一連の演奏データ)をその奏法と判別することが適当かを示す情報等を記憶する奏法分析(または指定)制御データ領域22と、演奏情報に奏法コードが指定(付与)されている場合に、その奏法コードに応じて当該演奏情報の各パラメータをどのように加工し制御するかを決定する奏法解釈データを記憶する奏法解釈データ領域23と、各奏法コードとサンプリングされて加工され波形データ領域25に格納された各波形データとを対応付ける奏法波形指定データを記憶する奏法波形指定データ領域24と、サンプリングされて加工された各波形データを格納する波形データ領域25と、その他の音色データを格納するその他音色データ領域26とにより構成されている。
音色データTCD5が、たとえばギターの音色を再生するためのデータである場合には、自然楽器ギターを各種奏法で実際に演奏して発生した楽音波形、たとえば、通常演奏(通常の奏法で演奏)したときのノーマル波形、ミュート演奏したときのミュート波形、グリッサンド演奏したときのグリッサンド波形、トレモロ演奏したときのトレモロ波形、ハンマリングオン演奏したときのハンマリングオン波形、プリングオフ演奏したときのプリングオフ波形等がサンプリングされ、後述するように加工された後に、(c)に示すように、波形データ領域25に格納される。さらに、波形データ領域25には、このような各種波形を再生するときに必要となるその他のデータも格納される。
また、音色データTCD5が、たとえばフルートの音色を再生するためのデータである場合には、自然楽器フルートを各種奏法で実際に演奏して発生した楽音波形、たとえば、通常演奏したときのノーマル波形、短く発音したときのショート波形、タンギング演奏したときのタンギング波形、スラー演奏したときのスラー波形、トリル演奏したときのトリル波形等がサンプリングされ、加工された後に、(d)に示すように、波形データ領域25に格納される。そして、(c)と同様にして、波形データ領域25にはその他のデータも格納される。
このようにしてハードディスクに格納された各音色データTCDkは、演奏者が音色を指定すると、その指定音色に応じて読み出され、前記波形RAM12にロードされる。
図4は、前記波形データ領域25に格納されるグリッサンド波形データを作成する方法を説明するための図である。同図中、縦軸は音高を示し、横軸は時間を示し、実線L1は、演奏者が実際にギターを用いて、音高p1からp2までグリッサンド演奏したときに発生した楽音波形をサンプリングして得られた生波形データの音高の時間変化を示している。
このようにしてサンプリングされた生波形データから各ノート毎に波形データ(図の例では、時間t11ーt13の波形データ)を切り出し、その一部の波形データ(時間t11−t12の波形データ)をアタック部とし、残りの波形データ(時間t12−t13の波形データ)をループ部として各ノート毎のグリッサンド波形データを作成する。したがって、前記図3(c)のグリッサンド波形データは、各ノート毎のグリッサンド波形データが複数個集まって構成されている。
そして、たとえば演奏者が指定した音高間に亘ってグリッサンドの施された楽音を生成するときには、最初にあるノート、すなわち演奏者が指定したスタート音高のノートで発音を開始し、所定時間毎に発音中のノートに対して1ノート高い音高に対応するノートの発音を指示するとともに、発音中のノートのダンプを指示し、以下、同様の処理を、設定されたグリッサンド継続拍数が示す期間繰り返して行う。ここで、スタート音高に対応するノートの発音が指示されると、当該ノートに対応するノーマル波形データ、すなわち上記各ノート毎のグリッサンド波形データではない通常の波形データのアタック部がまず読み出され、続いてそのループ部の読み出しが開始され、この読み出しは、次のノートに対する発音指示を行った時点から所定時間α経過する時点まで、すなわちこれと同時に行う現在発音中のノートの音量のダンプ指示(音量EGを制御して音量を徐々に絞る指示)がなされ、その音量が所定の閾値(“0”でもよい)以下になる時点まで繰り返される。一方、上記次のノートに対する発音指示から所定時間αまでの間には、当該発音指示にかかるグリッサンド波形データのアタック部が読み出され、その後、続いてそのループ部の読み出しが開始される。以下、所定時間毎に発音中のノートに対して1ノート高い音高に対応するノートの発音が指示され、これに応じて当該ノートに対応するグリッサンド波形データ(アタック部+ループ部)が読み出され、前記指定されたグリッサンド演奏を終了する音高(エンド音高)まで繰り返される。なお、この詳細な処理については、図12および13のフローチャートを用いて後述する。
このように、本実施の形態では、各ノート毎のグリッサンド波形データをつなげることにより(ただし、スタート時はノーマル波形データを使用する)グリッサンド演奏をシミュレートしているので、隣接する各ノート毎のグリッサンド波形データ間のつながりをよくするために、各ノート毎のグリッサンド波形データは、実際の各ノート毎のグリッサンド波形(この波形は、図の例では、時間t1−t2の楽音波形で示される)より1つ前の各ノート毎のグリッサンド波形の一部、すなわち時間t11−t1の楽音波形を用いて作成されている。
なお、本実施の形態では、各ノート毎のグリッサンド波形データとして、音高が高くなる方向(アップ方向)のもののみについて説明したが、音高が低くなる方向(ダウン方向)の各ノート毎のグリッサンド波形データも、上述の方法と同様にして作成され、波形データ領域25に記憶されることは云うまでもない。
図5は、前記波形データ領域25に格納されるトリル波形データを作成する方法を説明するための図であり、図中、縦軸は音高を示し、横軸は時間を示している。
同図中、(a)は、演奏者が実際にギターを用いて、プリングオフおよびハンマリングオンの各奏法でトリル演奏したときに発生した楽音波形をサンプリングして得られたトリル生波形データ(実線L2)の音高の時間変化を示している。(b)は、(a)の楽音波形から、トリル演奏で交互に発生する高音高と低音高のうち、低音高の部分をメインとして切り出して作成したプリングオフ波形データを示し、該各プリングオフ波形データは、それぞれ直前に発生する高音高の波形の終わりからの接続部分を含んでいる。(c)は、(a)の楽音波形から、トリル演奏で交互に発生する高音高と低音高のうち、高音高の部分をメインとして切り出して作成したハンマリングオン波形データを示し、該各ハンマリングオン波形データは、それぞれ直前に発生する低音高の波形の終わりからの接続部分を含んでいる。(d)は、(a)の楽音波形から、音高が低音高から高音高を経て低音高に変化する部分、すなわちあるハンマリングオンからこれに続くプリングオフまでの部分を切り出して作成した楽音波形データ(以下、「ダウン波形データ」という)を示し、(e)は、(a)の楽音波形から、音高が高音高から低音高を経て高音高に変化する部分、すなわちあるプリングオフからこれに続くハンマリングオンまでの部分を切り出して作成した楽音波形データ(以下、「アップ波形データ」という)を示している。
プリングオフ波形データDk(k=1,2,…)は、(b)に示すように、サンプリングされたトリル波形から複数個切り出され、プリングオフ波形群を構成して、前記波形データ領域25に格納される。そして、プリングオフ波形データDkによるトリルの生成は、後述するように、いずれかのプリングオフ波形データDkを、プリングオフ波形群からランダムに選択して発音させることによって行われる。これは、各プリングオフ波形データDkは、それぞれ発音を継続する時間や音色等が微妙に異なっているので、プリングオフ波形群からランダムに選択して発音させた方が、いずれか1つのプリングオフ波形データDkを繰り返し読み出して発音させる場合よりも癖のないプリングオフ波形を生成することができるからである。
同様にして、ハンマリングオン波形データUk(k=1,2,…)は、(c)に示すように、サンプリングされたトリル波形から複数個切り出され、ハンマリングオン波形群を構成して、波形データ領域25に格納される。そして、ハンマリングオン波形データUkによるトリルの生成は、上記プリングオフ波形データDkによるトリルの生成と同様に、いずれかのハンマリングオン波形データUkを、ハンマリングオン波形群からランダムに選択して発音させることによって行う。これは、各ハンマリングオン波形データUkが、それぞれ発音を継続する時間や音色等が微妙に異なっているからである。
以下、プリングオフ波形データDkおよびハンマリングオン波形データUkを用いてトリル演奏の楽音を生成する方法を「トリル2」という。
ダウン波形データUDk(k=1,2,…)は、(d)に示すように、トリル生波形データから、高音高から低音高に変化する部分をメインとし、その直前に発生した低音高の波形の終わりからの接続部分を含む部分を切り出して複数個作成され、このようにして作成された複数個のダウン波形データは、ダウン波形群を構成して、波形データ領域25に格納される。なお、ダウン波形データUDkは、これに限らず、前記ハンマリングオン波形群およびプリングオフ波形群からそれぞれ1つずつ波形データが選択され、この選択された2つの波形データをこの順序で結合して作成するようにしてもよい。
同様にして、アップ波形データDUk(k=1,2,…)は、(e)に示すように、トリル生波形データから、低音高から高音高に変化する部分をメインとし、その直前に発生した高音高の波形の終わりからの接続部分を含む部分を切り出して複数個作成され、このようにして作成された複数個のアップ波形データは、アップ波形群を構成して、波形データ領域25に格納される。なお、アップ波形データDUkは、これに限らず、プリングオフ波形群およびハンマリングオン波形群からそれぞれ1つずつ波形データを選択し、この選択された2つの波形データをこの順序で結合して作成するようにしてもよい。
本実施の形態では、このダウン波形群またはアップ波形群を構成する各波形データUDkまたはDUkに基づいてトリル演奏(以下、「トリル1」という)の楽音を生成する。そして、トリル1による楽音の生成も、上記トリル2による楽音の生成と同様にして、ダウン波形群またはアップ波形群からいずれか1つの波形データUDkまたはDUkをランダムに選択して発音することによって行う。
なお、本実施の形態では、トリル1を、トリル2と同様に、トリル生波形データの一部を使用して生成するようにしたが、これに限らず、ピッキングによるトリル演奏のギター音を録音(サンプリング)して、アップ波形データやダウン波形データを作成し、これに基づいてトリル演奏の楽音を生成するようにしてもよい。
次に、予め作成された演奏情報に奏法コードを付与する方法を、図6および7を参照して説明する。
図6は、演奏情報に対する奏法コードの付与方法を説明するためのブロック図であり、同図中、(a)は、奏法コードを自動で付与する方法を示し、(b)は、奏法コードを手動で付与する方法を示している。また、図7は、演奏情報および奏法コードが付与された後の演奏情報のデータフォーマットを示す図であり、同図中、(a)は、演奏情報のデータフォーマットを示し、(b)は、奏法コードが付与された後の演奏情報のデータフォーマットを示している。
たとえば演奏者や演奏者以外の人が作成した複数個の演奏情報(以下、「元演奏情報SMF(Standard MIDI File)」という)は、ファイル形式で前記ハードディスクの所定領域に記憶され、その中から、演奏者の指示に応じて演奏情報が選択され、前記RAM5の所定位置に確保された元演奏情報記憶領域にロードされる。
元演奏情報SMFは、図7(a)に示すように、たとえばその曲名、作成日時、初期テンポ等の初期設定データ、演奏情報の容量等から成るヘッダデータ31と、たとえばキーオンイベント、キーオフイベント、ベロシティデータ等のイベントデータ32と、該各イベントデータの再生タイミングを示すデュレーションデータ33とにより構成されている。
この元演奏情報SMFに自動で奏法コードを付与する場合には、図6(a)に示すように、元演奏情報SMFの各データを順次読み出して分析し、その分析結果に応じてフレーズ分割し、分割後のフレーズに基づいて奏法を判定する演奏情報分析を行い、この分析の結果判定された奏法に対応する奏法コードを出力する。ここで、演奏情報分析は、元演奏情報SMF中のイベントデータやデュレーションデータで表される音譜の並び(シーケンス)を、現在指定されている音色の前記奏法分析制御データ22に基づいて分析し、その分析結果に応じて、当該シーケンスを同じ奏法で演奏されていると判定された範囲毎に分割(フレーズ分割)し、該各分割されたフレーズの奏法の種類を指定する奏法コードを生成する。奏法コードは、付与すべき奏法の名称を示すデータ、該奏法を付与(指定)すべきイベントデータ、該奏法に応じた楽音を生成するために必要なパラメータ、および該奏法を継続する拍数(たとえば奏法がグリッサンド奏法である場合には、前記グリッサンド継続拍数)により構成される。
たとえば、分析すべき元演奏情報SMFがギター用に作成されたものであり、ギター音色が指定されている場合における奏法の具体的な判定方法は、次の通りである。
1)半音または全音間隔の2つの音高の発音指示が交互に発生する部分は、トリル演奏であると判定する。
2)短い時間間隔で発生する上昇または下降音高の発音指示がなされているときには、グリッサンド演奏であると判定する。
また、分析すべき演奏データがフルート用に作成されたものであり、フルート音色が指定されている場合における奏法の具体的判定方法は、次の通りである。
1)なだらかな一連の音高の発音指示がなされているときには、スラー演奏であると判定する。
このようにして出力された奏法コードは、元演奏情報SMFと結合され、C(結合)演奏情報CMFとして、前記RAM5の所定位置に確保されたC演奏情報記憶領域に記憶される。具体的には、図7(a)に示す元演奏情報SMFの所定位置に、演奏情報分析により生成された奏法コードを挿入し、図7(b)に示すC演奏情報CMFが作成される。ここで、奏法コードは、奏法を指定すべきイベントデータより前の位置に格納され、指定すべき奏法の種類と、シーケンス中のその奏法で演奏されるイベントデータ(複数も可)の指定とを行う。
一方、元演奏情報SMFに手動(マニュアル)で奏法コードを付与する場合には、図6(b)に示すように、元演奏情報SMFの各データを順次読み出して、表示器2に楽譜表示させ、演奏者は、この楽譜表示された元演奏情報SMFのシーケンス(図示せず)を見ながら、その中のどの部分をどの奏法で演奏するのが適当かを判断し、その結果に基づいて、イベント指定操作子(前記図2では図示されていない)を操作して、1つの奏法で演奏する区間をフレーズとして分割するとともに、奏法指定操作子(図2の奏法スイッチ)によりその奏法の種類を指定すると、当該奏法に対応する奏法コードが出力される。これにより、前記図6(a)で説明した奏法コードと同様のコードが出力され、この奏法コードが元演奏情報SMFと結合されて、C演奏情報CMFとして前記C演奏情報記憶領域に記憶される。
奏法コードは、前述したように、シーケンスの中のどのイベントをどのような種類の奏法で演奏するかを指定するデータであるが、これに加えて、指定された奏法を継続する時間長のデータや、指定された奏法種類毎にさらに細かい奏法の態様を指定するパラメータを含んでいる。
このパラメータには、たとえば、シミュレートすべき自然楽器がギターであり、奏法がグリッサンドである場合には、グリッサンド演奏で所定時間毎に発生する半音または1全音ずつ高い(または低い)発音指示の発生の仕方を指定するデータである「スピードパラメータ」および「カーブパラメータ」がある。「スピードパラメータ」は、この時間間隔の平均値(平均スピード)を制御するデータであり、「カーブパラメータ」は、たとえばグリッサンド演奏の期間の前半でこの時間間隔が短く、後半で長くなる等のばらつきを制御するデータである。すなわち、「スピードパラメータ」および「カーブパラメータ」は、順次発生する発音指示の発生密度の時間変化を制御するデータである。
また、奏法がトリル1である場合には、当該奏法データには、トリル演奏で発生する上下の音高の交互の発音指示の時間間隔の平均値を制御する「スピードパラメータ」、この時間間隔のばらつきを制御する「カーブパラメータ」、前記アップ波形データおよびダウン波形データの2種類の波形データのうち、いずれの波形データを使用するかを決定する「アップ/ダウンパラメータ」等のパラメータが含まれている。
さらに、ギター演奏の場合には、続けて演奏される2つの音符をチョーキング奏法で実現することもある。したがって、チョーキングで発音される2音目の音を、チョーキング演奏波形から作成したチョーキング波形データで実現してもよい。このチョーキング奏法の場合にも、当該奏法データに含まれるパラメータとしては、「スピードパラメータ」および「カーブパラメータ」がある。「スピードパラメータ」は、チョーキングを開始してからチョーキング後の音に移動するまでの時間を示すデータであり、「カーブパラメータ」は、その変化途中のピッチの軌跡を示すデータである。上記チョーキング波形データを、「スピードパラメータ」および「カーブパラメータ」に合致させるためには、波形データのピッチを保ったままで時間軸を伸縮するタイムストレッチという手法を利用することができる。
このように、奏法コードで設定されるパラメータは、シミュレートされる自然楽器および付与される奏法に応じて、それぞれ異なった種類のものが設定される。
なお、これらのパラメータは、奏法コードで指定されるイベントデータ自身とその間のデユレーションデータを分析し、そのイベントの発生時間間隔等に応じて自動設定されるようにしてもよいし、演奏者が操作子(図示せず)を用いて個別に設定するようにしてもよい。
以上のように構成された楽音生成装置が実行する制御処理方法を、以下、まず図8を用いてその概要を説明した後に、図9〜17を用いてさらに詳細に説明する。
図8は、本実施の形態の楽音生成装置が実行するC演奏情報CMFによる自動演奏処理の概要を示すブロック図である。
同図に示すように、前記C演奏情報記憶領域に記憶されたC演奏情報CMFの各データは、1つずつ読み出されてタイミングデコードされる。タイミングデコードとは、具体的には、読み出されたデータがデュレーションデータのときに、当該デュレーションデータによって示されるタイミング(時間間隔)だけ待った後に、次のデータを読み出す処理をいう。そして、この処理は、当該デュレーションデータ値を前記ヘッダ領域31に記憶されたテンポデータ値に応じて変更し、該変更後のデュレーションデータ値を前記タイマ6が発生するタイマ割込信号に同期して1ずつデクリメントし、デクリメント後の値が“0”になるまでC演奏情報CMFの読み出しを禁止することによって行う。なお、デュレーションデータ値をテンポデータ値に応じて変更する代わりに、1回のデクリメントで減算する値をテンポデータ値に応じて変更するようにしてもよい。さらに、デュレーションデータ値をテンポデータ値に応じて変更する代わりに、テンポデータ値に応じてタイマ割込時間を変更するようにしてもよい。
このようにしてタイミングデコードされた結果、イベントデータおよび奏法コードデータの2種類のデータのうちいずれかのデータが読み出され、それぞれMIDIイベント(前記図7のイベントデータ、すなわちMIDIデータにより発生したイベントのことを示すが、以下、混同の虞がない場合には、「イベント」と略す)または奏法コードが発生する。
奏法コードが発生すると、奏法コードには、前述のように、自動判定(または手動指定)された奏法、該奏法を付与(指定)すべきイベント(以下、「指定イベント」という)、該奏法に固有の各種パラメータ、および該奏法を継続する拍数が書き込まれているため、当該各データを読み出して、前記RAM5の所定位置に確保されたバッファに格納する。そして、まだ発生していないイベントのうち、バッファに格納された指定イベント(以下、このバッファに格納された指定イベントデータも、混同の虞がない限り「指定イベント」という)に対応するイベントをサーチし、当該イベントに所定のマークを付しておく。
イベントが発生すると、当該イベントが前記マークの付されたイベントであるか否かを判別し、マークの付されたイベントであるときにはそのイベント(すなわち指定イベント)を抽出する指定イベント抽出処理を行う。この処理の結果、指定イベントが抽出されたときには、当該指定イベントによる音源制御を行わずに、奏法解釈ブロックにより、当該指定イベントの情報および前記バッファに格納された奏法に応じて、当該奏法の種類に応じた音色変化、音高変化、振幅変化等の楽音変化特性を有する楽音を生成するように音源制御を行う。
一方、指定イベント抽出処理で、指定イベントが抽出されなかったとき、すなわち指定イベントでない通常のイベントが発生したときには、該イベントは通常通りの音源制御に使用される。たとえば、発生したイベントがノートオンイベントであり、かつ指定イベントでないときには、該ノートオンイベントに応じた通常の発音指示が行われる。このとき、通常楽音は、特別な奏法波形でない図3のノーマル波形データを基に、特殊な時間処理等を伴わない1楽音として生成される。
図9は、C演奏情報CMFを再生するC演奏情報再生処理の手順を示すフローチャートであり、本処理は、演奏者がパネル操作子1等によりC演奏情報CMFの再生を指示したときに起動される。
図9において、まず、各種初期設定をおこなう(ステップS1)。この初期設定には、たとえば、演奏者が選択したC演奏情報CMFを前記ハードディスクから読み出して前記C演奏情報記憶領域にロードしたり、このC演奏情報CMFで使用される前記音色データTCDkをハードディスクから読み出して波形RAM12の所定位置にロードしたり、また、このC演奏情報CMFのヘッダに記憶されたテンポデータに応じてテンポを設定したりする処理が含まれる。
次に、下記の各起動要因の発生をチェックする(ステップS2)。
起動要因1:前記イベントが発生したこと
起動要因2:前記奏法コードが発生したこと
起動要因3:前記タイマ6が、設定されたタイマ時間の経過を検出したこと
起動要因4:演奏者がパネル操作子1等を操作してその操作イベントが検出された等の、起動要因1〜3,5以外のその他の要求イベントが検出されたこと
起動要因5:電源スイッチ(図示せず)がオフにされたこと
続くステップS3では、上記起動要因1〜5のうちいずれかが発生したか否かを判別し、起動要因1〜5のいずれも発生していないときには前記ステップS2に戻る一方、起動要因1〜5のいずれかが発生したときにはステップS4に進み、どの起動要因が発生したかを判別する。
ステップS4の判別の結果、「起動要因1」が発生したときにはステップS5に進み、発生したイベントに応じたイベント処理(その詳細は、図10を用いて後述する)を実行し、「起動要因2」が発生したときにはステップS6に進み、発生した奏法コードに応じた奏法コード処理(その詳細は、図11を用いて後述する)を実行し、「起動要因3」が発生したときにはステップS7に進み、図13を用いて後述するタイマ処理サブルーチンを実行し、「起動要因4」が発生したときにはステップS8に進み、当該発生した要求イベントに対応するその他処理を実行し、「起動要因5」が発生したときにはステップS9に進み、所定の終了処理を実行する(ステップS9)。
なお、ステップS5〜S8のいずれかの処理を終了した後は、前記ステップS2に戻って前述の処理を繰り返す一方、ステップS9の処理を終了した後は、本C演奏情報再生処理を終了する。
図10は、上記イベント処理サブルーチンの詳細な手順を示すフローチャートである。
同図において、まず、起動要因となったイベントデータを、前記RAM5の所定位置に確保されたイベントデータ記憶領域ED(以下、この領域に格納された内容を「イベントデータED」という)に格納する(ステップS11)。
次に、イベントデータEDには、「処理済み」が指定されているか否かを判別する(ステップS12)。ここで、「処理済み」とは、前記図8で説明したマークに該当し、したがって、この「処理済み」が指定されているイベントデータは、特殊な奏法が指定されたデータ、すなわち前記指定イベントデータを示している。
ステップS12で、イベントデータEDに「処理済み」が指定されていないときには、イベントデータEDに応じた、奏法処理でない通常の楽音制御を行う(ステップS13)。たとえば、イベントデータEDが「ノートオンイベント」のときには、音源(すなわち、前記アクセス制御部8、波形読出部9および波形RAM12)に対してノーマル波形データに基づく1楽音の発生を指示する一方、イベントデータEDが「ノートオフイベント」のときには、音源で発生中の対応する1楽音をリリース状態に設定する。
一方、ステップS12で、イベントデータEDに「処理済み」が指定されているときには、直ちに本イベント処理サブルーチンを終了する。
図11は、前記ステップS6の奏法コード処理サブルーチンの詳細な手順を示すフローチャートである。
同図において、まず、起動要因となった奏法コードデータを、前記RAM5の所定位置に確保された奏法コードデータ記憶領域PTC(以下、この領域に格納された内容を「奏法コードデータPTC」という)に格納する(ステップS21)。
次に、奏法コードデータPTCにより奏法指定されたイベントデータをサーチする(ステップS22)。このサーチは、C演奏情報CMF中の、まだ発生していない(読み出されていない)イベントデータを対象にして、前記バッファに格納された指定イベントデータに基づいて行う。
このサーチの結果(ステップS23)、指定イベントが見つかったときには、該イベントを「処理済み」指定し(ステップS24)、奏法コードデータPTCに応じた奏法解釈処理サブルーチンを実行する(ステップS25)一方、指定イベントが見つからなかったときには、直ちに本奏法コード処理サブルーチンを終了する。
ここで、奏法解釈処理サブルーチンは、選択された音色毎に、固有の複数奏法に対応する複数のサブルーチンにより構成され、前記図3の奏法解釈制御データ23中に含まれている。指定イベント、すなわち奏法コードで指定されるイベントデータは、C演奏情報CMFシーケンス中、複数のイベントである場合がある。たとえば、指定された奏法がトリルである場合には、シーケンス内に、イベントデータEDとして半音または全音間隔の2音高のノートオンイベントが交互に入っているが、トリルの奏法コードでは、当該複数のイベントが指定される。また、指定された奏法がグリッサンドである場合も同様で、シーケンス内で、グリッサンド演奏される(または、グリッサンド演奏に関連する)一連のイベントデータがすべて、1つのグリッサンドの奏法コードで指定される。そして、「奏法を解釈する」とは、奏法コードで指定されたイベントデータがもともと行っていた楽音制御の代わりに、奏法コードで指定される奏法の種類に応じた楽音制御を行うということを意味する。奏法コードに応じた楽音制御には、イベントデータの内容が影響する。たとえば、トリルの奏法コードによる楽音制御では、上述した交互に入っている2音高のノートオンに対応して、その2音高のトリルを行う。なお、本実施の形態では、スピードパラメータとして、奏法コードに含まれるものを使用したが、これに限らず、上記2音高のノートオンの時間間隔の平均値を使用するようにしてもよい。
図12は、ギター音色が指定されている場合のグリッサンドスタート処理の手順を示すフローチャートである。本処理は、上記奏法解釈処理サブルーチンの一部であり、図11のステップS25において、奏法コードデータPTCが「グリッサンド」を示しているときに1度だけ呼び出されて実行される。
図12において、まず、グリッサンドが施される前記スタート音高およびエンド音高と、前記バッファに格納された各種パラメータのうち、前記スピードパラメータおよびカーブパラメータとに応じて発音スケジュールSSを作成する(ステップS31)。グリッサンドでは、シーケンス中の一連の上昇音列(または下降音列)のイベントが、奏法コードにより指定されている。グリッサンドの奏法コードによる楽音制御における奏法コードは、それらのイベントの代わりに置き換えられるものである。たとえば、前記スタート音高およびエンド音高は、この一連の上昇音列(または下降音列)の最初の音高および最後の音高にそれぞれ相当する。また、グリッサンド発音は、特定の調のスケールに従って上昇(または下降)するので、その一連のイベントの調を判定するとともに、どのスケールを使用するかを判定して制御する。発音スケジュールは、奏法コードで指定された奏法を実際に行うための、複数ノートの発音指示を含む短フレーズデータであり、該フレーズの期間に亘る各奏法に適した発音タイミング、音高変化、波形変化、音量変化等の楽音態様を指定するデータを含んでいる。
次に、この発音スケジュールSSに従ってスタート波形による発音を開始する(ステップS32)。具体的には、発音スケジュールSSが示す音高、波形データ(スタート波形では、前述のように、前記グリッサンド波形データではなく、ノーマル波形データを使用する)、音量EG等を前記音源に設定して、その発音を開始させる。
そして、グリッサンド演奏で順次指定される一連の上昇音列(または下降音列)中、上記スタート音高の音の次の音の発音指示を行うタイミング、すなわちスタート音高の音の発音タイミングとその次の音の発音タイミングとの時間間隔に対応する時間を前記タイマ6に設定した(ステップS33)後に、本グリッサンドスタート処理を終了する。
このようにして、音源では、ステップS32で指示されたスタート波形データのアタック部が読み出された後、同波形データのループ部が繰り返し読み出され、発音スケジュールSSが示す時間、たとえば、次に説明するステップS41のダンプ開始指示により当該音の音量が減少して所定の閾値を下回る(聞こえなくなる)までの時間、スタート波形に基づいて生成された楽音が継続して発音される。
図13は、前記ステップS7のタイマ処理サブルーチンの一部であるグリッサンド継続タイマ処理の手順を示すフローチャートである。本グリッサンド継続タイマ処理は、タイマ6が上記ステップS33で設定された時間の経過を検出したときに、起動される。
同図において、まず、直前に発生されている楽音のダンプを開始する(ステップS41)。
次に、前記発音スケジュールSSに従って次音の発音を開始する(ステップS42)。具体的には、発音スケジュールSSが示す次の音、すなわちグリッサンド演奏で順次指定される一連の上昇音列(または下降音列)中、最後に発音指示された音の次の音に対応する、グリッサンド波形データ中の波形データ(前記図4で説明したアタック部およびループ部で構成される1つの波形データ)が指定され、前記ステップS32と同様にして、この指定された波形データ、および発音スケジュールSSにより示される音高や音量EG等を音源に設定して、その発音を開始させる。
そして、現在発音中の楽音の音高が前記エンド音高であるか否かを判別し(ステップS43)、エンド音高でないとき、すなわち生成すべきグリッサンド波形(読み出すべき各ノート毎のグリッサンド波形)がまだ残っている場合には、前記ステップS33と同様にして、発音スケジュールSSに従って継続タイマを設定した(ステップS44)後に、本グリッサンド継続タイマ処理を終了する。
一方、ステップS43の判別で、現在発音中の楽音の音高がエンド音高のときには、直ちに本グリッサンド継続タイマ処理を終了する。
なお、ストローク奏法をシミュレートする場合には、グリッサンド奏法をシミュレートする上記方法の一部を変更することによって行うことができる。具体的には、前記ステップS31の発音スケジュールSSをストローク奏法用に変更して、発音タイミングの時間パターンをアルペジオよりも密にし、前記ステップS41のダンプ処理を削除する。
図14は、ギター音色が指定されている場合のトリル1スタート処理の手順を示すフローチャートである。本処理は、前記ステップS6の奏法解釈処理サブルーチンの一部であり、図11のステップS25において、奏法コードデータPTCが「トリル1」を示しているときに1度だけ呼び出されて実行される。
同図において、まず、演奏者がトリルの方向としてアップ方向を指定したか否かを判別し(ステップS51)、ダウン方向を指定したときには、前記図5(d)で説明したダウン波形群の中から、前記スピードパラメータに応じた波形群を選択する(ステップS52)一方、アップ方向を指定したときには、前記図5(e)で説明したアップ波形群の中から、スピードパラメータに応じた波形群を選択する(ステップS53)。
続くステップS54では、ステップS52またはS53で選択した波形群のスタート波形による発音を開始した後に、本トリル1スタート処理を終了する。
図15は、前記ステップS7のタイマ処理サブルーチンの一部であるトリル1継続タイマ処理の手順を示すフローチャートである。本トリル1継続タイマ処理は、タイマ6が所定の時間、すなわち上記図14のトリル1スタート処理で発音指示されたスタート波形の読み出しを終了する時間の経過を検出したときに、起動される。
同図において、まず、指定された継続時間、すなわちトリル1演奏を継続する時間内であるか否かを判別し(ステップS61)、継続時間を経過したときには、直ちに本トリル1継続タイマ処理を終了する一方、継続時間内のときにはステップS62に進む。
ステップS62では、乱数を発生させ、ステップS63では、前記選択された波形群の中から、乱数に従って波形を選択し、ステップS64では、選択した波形による発音を開始した後に、本トリル1継続タイマ処理を終了する。
図16は、ギター音色が指定されている場合のトリル2スタート処理の手順を示すフローチャートである。本処理は、前記ステップS6の奏法解釈処理サブルーチンの一部であり、図11のステップS25において、奏法コードデータPTCが「トリル2」を示しているときに1度だけ呼び出されて実行される。
同図において、まず、前記図5(b)で説明したプリングオフ(下)波形群を選択し(ステップS71)、次に、前記図5(c)で説明したハンマリングオン(上)波形群を選択する(ステップS72)。
そして、演奏者がトリルの初期方向としてアップ方向を指定しているか否かを判別し(ステップS73)、ダウン方向を指定しているときには、トリルの方向がアップ方向であることを「1」で示すトリル方向フラグUに“0(ダウン方向)”をセットし(ステップS73)、下波形の中からスタート波形を選択する(ステップS75)。
一方、ステップS73の判別で、演奏者がトリルの初期方向としてアップ方向を指定しているときには、トリル方向フラグUに“1(アップ方向)”をセットし(ステップS76)、上波形の中からスタート波形を選択する(ステップS77)。
続くステップS78では、上記ステップS75またはS77で選択したスタート波形による発音を開始した後に、本トリル2スタート処理を終了する。
図17は、前記ステップS7のタイマ処理サブルーチンの一部であるトリル2継続タイマ処理の手順を示すフローチャートである。本トリル2継続タイマ処理は、タイマ6が所定の時間、すなわち上記図14のトリル2スタート処理で発音指示されたスタート波形の読み出しを終了する時間の経過を検出したときに、起動される。
同図において、まず、指定された継続時間、すなわちトリル2演奏を継続する時間内であるか否かを判別し(ステップS81)、継続時間を経過したときには、直ちに本トリル2継続タイマ処理を終了する一方、継続時間内のときにはステップS82に進み、乱数を発生させる。
続くステップS83では、前記トリル方向フラグUの値が“1”であるか否かを判別し、U=0のとき、すなわちトリルの方向がダウン方向のときには、上波形の中から前記発生した乱数に従ってスタート波形を選択する(ステップS84)一方、U=1のとき、すなわちトリルの方向がアップ方向のときには、下波形の中から前記発生した乱数に従って波形を選択する(ステップS85)。
次に、上記ステップS84またはS85で選択した波形による発音を開始し(ステップS86)、トリル方向フラグUの値を反転(U←/U)させた後に、本トリル2継続タイマ処理を終了する。
このように、本実施の形態では、自然楽器固有の特殊な奏法によって演奏された楽音をサンプリングし、加工して前記ハードディスク等のメモリに記憶し、この記憶した楽音データに基づいて自然楽器固有の奏法をシミュレートするようにしたので、当該自然楽器固有の各種奏法による音色変化を忠実に再現することができる。
なお、本実施の形態では、たとえばグリッサンド波形データやトレモロ波形データ等の各奏法の波形データを各ノート毎に準備するようにしたが、通常の波形メモリ音源では、Fナンバ等を用いて簡単にピッチシフトできるので、連続する複数ノート毎に1つの波形データを用意し、各ノートに合わせてそれをピッチシフトして使用するようにしてもよい。その方が波形メモリの容量を少なくすることができる。
また、本実施の形態では、トリル生波形データとして、プリングオフ、ハンマリングオン奏法による波形を収録するようにしたが、これに限らず、たとえばフレットの指をスライドさせたり、ピッチベンド奏法によるトリル等の演奏波形であってもよい。
なお、本実施の形態では、奏法の指定と演奏情報の再生とを個別に行うようにしたが、これに限らず、マニュアル奏法指定スイッチでリアルタイムに奏法指定を行いながら、リアルタイム演奏または自動演奏再生を行うようにしてもよい。
さらに、本実施の形態では、音源として波形メモリ音源を例に挙げて説明したが、これに限る必要はなく、他の方式の音源にも本発明を適用することができる。その場合には、複数の奏法に応じた複数の波形を用意する代わりに、音色パラメータを設定できる奏法に応じた種類だけ用意し、本発明と同様にして、各奏法に適した発音制御プログラムで制御するようにすればよい。
なお、本実施の形態の楽音生成装置を実現するための関係情報や動作プログラム等を前記ハードディスク等の記憶装置に格納し、CPU3がこれらをRAM5に読み出してから使用するように構成し、さらに、CD−ROMやフロッピィディスク、光磁気ディスク等の可搬型の記憶媒体に記録されたデータをハードディスク等の記憶装置に転送できるように構成すれば、関係情報や動作プログラム等の追加(インストールなど)や更新(バージョンアップなど)の際に便利である。もちろん、可搬型の記録媒体から直接RAM5へデータを転送するようにしてもよい。
さらに、本実施の形態の楽音生成装置を、通信インタフェースを備えた構成にした場合には、可搬型の記録媒体経由ではなく、この通信インタフェース経由で、ハードディスク等の記憶装置上の関係情報や動作プログラム等を通信ネットワーク側からダウンロードするようにしてもよい。以下、ネットワーク側から関係情報や動作プログラム等をダウンロードする例を挙げる。
上記通信インタフェースはLAN(ローカルエリアネットワーク)やインターネット、電話回線等の通信ネットワークに接続されており、当該通信ネットワークを介してサーバコンピュータと接続される。クライアントとなる本実施の形態の楽音生成装置は、自装置が有する記憶装置(ハードディスク等)に関係情報や動作プログラム等が記憶されていない場合、上記通信インタフェースおよび通信ネットワークを介してサーバコンピュータへ、関係情報や動作プログラム等を要求するコマンドを送信する。このコマンドを受け取ると、サーバコンピュータは、要求された関係情報や動作プログラム等を、通信ネットワークを介して本装置へと配信する。そして、配信された関係情報や動作プログラム等を本装置が通信インタフェースを介して受信し、記憶装置に蓄積することにより、ダウンロードが完了する。
また、本装置を、上記関係情報や動作プログラム等をインストールした市販のパーソナルコンピュータ等によって実現してもよい。もちろん、この場合にも、上記関係情報や動作プログラム等のデータの配布方法としては、ROM4等の不揮発性メモリに予め格納しておく方法、可搬型の記録媒体に格納して配布する方法、および通信インタフェース経由で配布する方法等が考えられる。