(57)【特許請求の範囲】
【請求項１】
所定のサンプリングレートでサンプリングされてアタック部及びサステイン部を有する楽音波形データを入力し、順次読み出されて楽音信号のアタック部を構成するアタック波形データと、アタック波形データの読み出し後に繰り返し読み出されて楽音信号のサステイン部を構成するループ波形データとを生成する波形データ処理装置において、
前記入力した楽音波形データのうちで、ユーザによって指定されたアタックスタートポイントからアタックエンドポイントまでの楽音波形データをアタック波形データとして記憶するとともに、ユーザによって指定されたループスタートポイントからループエンドポイントまでの楽音波形データをループ波形データとして記憶する波形メモリと、
前記波形メモリに記憶されているアタック波形データを再生することによって得られる楽音波形信号のアタック部のピッチを周波数解析によって計算するアタック部ピッチ計算手段と、
前記波形メモリに記憶されているループ波形データを繰り返し読み出すことによって再生される楽音波形信号のループ部のピッチを、周波数解析によって得たループ部のピッチ、ループスタートポイントからループエンドポイントまでのサンプル数を表すループサイズ及び前記所定のサンプリングレートを用いて計算するループ部ピッチ計算手段と、
前記第アタック波形データ及び前記ループ波形データのうちの少なくともいずれか一方を、前記計算された楽音波形信号のアタック部のピッチとループ部のピッチとの比に応じたサンプリングレートに変更してリサンプリングするリサンプリング手段と
を備えたことを特徴とする波形データ処理装置。
【請求項２】
所定のサンプリングレートでサンプリングされてアタック部及びサステイン部を有する楽音波形データを入力し、順次読み出されて楽音信号のアタック部を構成するアタック波形データと、アタック波形データの読み出し後に繰り返し読み出されて楽音信号のサステイン部を構成するループ波形データとを生成する波形データ処理方法において、
前記入力した楽音波形データのうちで、ユーザによって指定されたアタックスタートポイントからアタックエンドポイントまでの楽音波形データをアタック波形データとして波形メモリに記憶するとともに、ユーザによって指定されたループスタートポイントからループエンドポイントまでの楽音波形データをループ波形データとして波形メモリに記憶し、
前記波形メモリに記憶されているアタック波形データを再生することによって得られる楽音波形信号のアタック部のピッチを周波数解析によって計算し、
前記波形メモリに記憶されているループ波形データを繰り返し読み出すことによって再生される楽音波形信号のループ部のピッチを、周波数解析によって得たループ部のピッチ、ループスタートポイントからループエンドポイントまでのサンプル数を表すループサイズ及び前記所定のサンプリングレートを用いて計算し、
前記第アタック波形データ及び前記ループ波形データのうちの少なくともいずれか一方を、前記計算された楽音波形信号のアタック部のピッチとループ部のピッチとの比に応じたサンプリングレートに変更してリサンプリングする
ようにしたことを特徴とする波形データ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、波形メモリに記憶されていて楽音信号を生成するための複数の波形サンプル値からなる波形データを修正処理する波形データ処理装置及び同方法に関する。
【０００２】
【従来の技術】
従来から、一つの楽音波形を時間的に異なる複数の部分に分割して、例えばアタック部とサステイン部に分割して、各部分の楽音波形を表す複数の波形サンプル値からなる波形データを独立して波形メモリにそれぞれ記憶しておき、これらの各部分の波形データを連続して読み出して一つの楽音波形信号を生成するようにした楽音信号生成装置はよく知られている。この場合、同一レートで読み出した各部分の波形データに基づいて生成される楽音信号のピッチが異なってしまうことがあり、これを回避するために、前記各部分の波形データを読み出す際に、読出しレートを各部分毎に調整できるようにした楽音信号生成装置も出現してきている。
【０００３】
【発明が解決しようとする課題】
しかし、上記読出しレートを各部分毎に調整できるようにした楽音信号生成装置にあっても、読み出しレートの変更を各部分の波形データの読出しの切り替えに精度よく同期させるとともに精度よく読出しレートを変更することは難しく、各部分の波形データの読出しの切り替え時に生成される楽音信号のピッチが不連続になるという問題があった。また、上記読出しレートを各部分毎に調整できる機能を備えていない楽音信号生成装置にあっては、各部分の波形データの読出しの切り替えの際に大きなピッチ変動が発生する可能性もある。
【０００４】
【本発明の概要】
本発明は、上記問題に対処するためになされたもので、その目的は、波形メモリに記憶されている各部分の波形データを予め修正処理しておいて、各部分の波形データを同一レートで連続して読出して楽音信号を生成しても、ピッチ変動が生じないようにする波形データ処理装置及び同方法を提供するものである。
【０００５】
上記目的を達成するために、本発明の構成上の特徴は、所定のサンプリングレートでサンプリングされてアタック部及びサステイン部を有する楽音波形データを入力し、順次読み出されて楽音信号のアタック部を構成するアタック波形データと、アタック波形データの読み出し後に繰り返し読み出されて楽音信号のサステイン部を構成するループ波形データとを生成する波形データ処理装置において、前記入力した楽音波形データのうちで、ユーザによって指定されたアタックスタートポイントからアタックエンドポイントまでの楽音波形データをアタック波形データとして記憶するとともに、ユーザによって指定されたループスタートポイントからループエンドポイントまでの楽音波形データをループ波形データとして記憶する波形メモリと、前記波形メモリに記憶されているアタック波形データを再生することによって得られる楽音波形信号のアタック部のピッチを周波数解析によって計算するアタック部ピッチ計算手段と、前記波形メモリに記憶されているループ波形データを繰り返し読み出すことによって再生される楽音波形信号のループ部のピッチを、周波数解析によって得たループ部のピッチ、ループスタートポイントからループエンドポイントまでのサンプル数を表すループサイズ及び前記所定のサンプリングレートを用いて計算するループ部ピッチ計算手段と、前記第アタック波形データ及び前記ループ波形データのうちの少なくともいずれか一方を、前記計算された楽音波形信号のアタック部のピッチとループ部のピッチとの比に応じたサンプリングレートに変更してリサンプリングするリサンプリング手段とを備えたことにある。また、本発明の他の構成上の特徴は、上記各手段の機能を実現する方法にもある。
【０００６】
上記のように構成した本発明においては、アタック波形データを再生することによって得られる楽音波形信号のアタック部のピッチと、ループ波形データを繰り返し読み出すことによって再生される楽音波形信号のループ部のピッチとの比に応じて変更されたサンプリングレートで、アタック波形データ及びループ波形データのうちの少なくともいずれか一方がリサンプリングされて波形メモリに記憶されることになる。したがって、楽音信号の生成の際には、アタック波形データ及びループ波形データを同一レートで連続して読出しても、アタック波形データからループ波形データの切り替えの際におけるピッチ変動を回避することができ、アタック波形データ及びループ波形データを用いた楽音信号の生成の際、常に前記切り替えに伴うピッチ変動を極力抑えた楽音信号を提供できるようになる。
【０００７】
【発明の実施の形態】
以下、本発明の一実施形態について図面を用いて説明すると、図１は、同実施形態に係る楽音波形処理装置をブロック図により概略的に示している。
【０００８】
この楽音波形処理装置は、バス１０に接続されて、コンピュータ本体部を構成するＣＰＵ１１、タイマ１２、ＲＯＭ１３及びＲＡＭ１４を備えている。ＣＰＵ１１は、この楽音波形処理装置全体の制御を行うものであって、各種プログラムを実行する。タイマ１２は、ＣＰＵ１１に対し前記プログラムを実行する際に必要な時間に関する情報を提供する。ＲＯＭ１３は、前記プログラムの一部と、楽音発生に必要な諸情報とを記憶している。ＲＡＭ１４は、前記プログラムの一部と、プログラムの実行時において必要な情報等とを一時的に記憶する。
【０００９】
また、この楽音波形処理装置は、波形メモリ２１、アクセス管理回路２２、書き込み回路２３、バッファ回路２４、音源回路２５及びサウンドシステム２６を備えている。書き込み回路２３、バッファ回路２４及び音源回路２５は、バス１０に接続されている。波形メモリ２１は、書き換え可能な不揮発性メモリ（電力供給を遮断してもデータを保存可能なメモリ）で構成され、楽音波形を表す波形データ及び同波形データに付随した付随データを記憶するものである。アクセス管理回路２２は、波形メモリ２１に対する波形データ及び付随データの書き込みと読み出しを管理するものである。
【００１０】
書き込み回路２３は、Ａ／Ｄ変換器を含み、外部音入力端子２７に供給されるアナログ形式の外部音信号を予め決められたサンプリング周波数（標準サンプリング周波数）ｆsでサンプリングするとともに、同サンプリングした外部音信号をＡ／Ｄ変換してアクセス管理回路２２に供給する。なお、外部音信号としては、マイクから入力したものでも、テープレコーダに記録されているものでもよい。また、書き込み回路２３は、予めディジタル信号に変換された外部音信号も入力可能としており、この場合には前記Ａ／Ｄ変換は不要となる。バッファ回路２４は、バス１０とアクセス管理回路２２との間で、波形データを一時的に記憶する。
【００１１】
音源回路２５は、ＣＰＵ１１の指示により楽音信号を形成して出力するもので、同指示に応答して、アクセス管理回路２２を介して波形メモリ２１に記憶されている波形データを読み出して、同読み出した波形データに基づいて楽音信号を形成して出力する。この場合、波形データは、一つの楽音に対してアタック部及びループ部の２つの波形データからなり、アタック部の波形データは先頭から順次読み出され、その後にループ部の波形データが繰り返し読み出されて、同読み出された波形データはＤ／Ａ変換されて楽音信号として出力される。サウンドシステム２６は、アンプ、スピーカなどからなり、音源回路２５から出力された楽音信号を音響信号に変換して出力する。
【００１２】
また、この楽音波形処理装置は、バス１０に接続された表示器３１、パネルスイッチ３２、インターフェース３３及びドライブ回路３４も備えている。表示器３１は、ＣＰＵ１１により制御されて、ユーザに対する指示、各種データを表す図形、文字などを表示するものである。パネルスイッチ３２は、ユーザのＣＰＵ１１に対する指示及び各種データを入力するものである。インターフェース３３は、他の楽音発生装置、電子楽器、シーケンサ、自動演奏装置、パーソナルコンピュータ、通信回線などに接続されて、ＭＩＤＩ情報を含む種々の情報を送受信するためのものである。ドライブ回路３４は、外部メモリとしてのハードディスク、コンパクトディスク、フレキシブルディスクなどの各種ディスクに対して、各種データ及びプログラムを書き込み及び読み出し可能とするものである。
【００１３】
なお、この楽音波形処理装置においては、後述する図３のプログラム及び図示しないプログラムを、予めＲＯＭ１３に記憶させておいて使用するようにしてもよいし、ディスク３５に記録されているものをＲＡＭ１４に書き込んだ後に使用するようにしてもよい。また、同プログラムをインターフェース３３を介して外部から入力してＲＡＭ１４又はディスク３５に書き込んだ後に、使用するようにしてもよい。
【００１４】
次に、上記のように構成した楽音波形処理装置の動作について説明する。まず、図２のステップ１０２に示すように、ユーザは、外部から一音分の楽音波形データを取得するためにパネルスイッチ３２を操作する。この場合、所望の音高周波数を有する外部音信号（例えば、自然楽器音信号）を、自然楽器の演奏又はテープレコーダの再生により外部音入力端子２７を介して書き込み回路２３に入力する。また、外部記録媒体としてのディスク３５に記録された一音分の外部音信号（外部音波形データ）をドライブ回路３４で読み出して、バス１０を介して書き込み回路２３に供給するようにしてもよい。
【００１５】
書き込み回路２３は、入力された外部音信号がアナログ形式であれば、所定のサンプリング周波数（標準サンプリング周波数）ｆsで同入力された外部音信号をサンプリングするとともにＡ／Ｄ変換し、同Ａ／Ｄ変換した外部音信号を波形メモリ２１に書き込む。入力された外部音信号がディジタル形式であれば、同外部音信号をそのまま波形メモリ２１に書き込む。この場合、ディジタル形式に変換されている外部音信号が前記サンプリング周波数ｆsと同じサンプリング周波数でサンプリングされていれば問題ないが、そうでない場合には、前記と同じサンプリング周波数でリサンプリングするか、外部音信号と共にサンプリング周波数を表すデータを波形メモリ２１に書き込んでおく。なお、前記外部音信号を波形メモリ２１に代えて、バッファ回路２４、ＲＡＭ１４などの他の書き込み可能なメモリに記憶させておいてもよい。
【００１６】
次に、ユーザは、ステップ１０４にて、前記入力した外部音信号の音高周波数に対応したノートナンバＮＮをパネルスイッチ３２を用いて入力するとともに、前記入力した外部音信号の波形図を表示器３１に表示させる。なお、前記外部音信号と共にノートナンバＮＮが入力される場合には、前記パネルスイッチ３２を用いたノートナンバＮＮの入力は省略される。次に、ユーザは、同ステップ１０４にて、表示器３１における外部音信号の波形図を見ながら、パネルスイッチ３２を用いてアタック部及びループ部の切り出し作業を各サンプル値を単位として行う。
【００１７】
この切り出し作業においては、ユーザは、表示器３１上にて、外部音信号のアタックスタートポイントＰ１、アタックエンドポイントＰ２、ループスタートポイントＰ３及びループエンドポイントＰ４を指定する。アタックスタートポイントＰ１は、楽音信号の振幅エンベロープが「０」から立ち上がり始めるタイミング位置に指定される。アタックエンドポイントＰ２は、振幅エンベロープの変化がほぼなくなって安定し始めたタイミング位置（サステイン部の開始タイミング位置）に指定される。ループスタートポイントＰ３及びループエンドポイントＰ４は、サステイン部の中で楽音信号波形が繰り返して変化する区間の開始及び終了タイミング位置に指定される。なお、この場合、サステイン部の楽音信号波形の１周期又は複数周期を前記区間として指定するとよい。
【００１８】
この指定により、ＣＰＵ１１は、図示しないプログラムの実行により、前記波形メモリ２１（又はバッファ回路２４、ＲＡＭ１４などの他の書き込み可能なメモリ）に書き込まれた外部音信号を表す一連のサンプル値のうちで、前記指定されたアタックスタートポイントＰ１からアタックエンドポイントＰ２までに属するサンプル値をアタック波形データＡＤＴとして波形メモリ２１に書き込むとともに、ループスタートポイントＰ３からループエンドポイントＰ４までに属するサンプル値をループ波形データＬＤＴとして波形メモリ２１に書き込む。そして、このときのアタック波形データＡＤＴの先頭及び最終アドレス、ループ波形データＬＤＴの先頭及び最終アドレス、並びに前記入力したノートナンバＮＮを、前記アタック波形データＡＤＴ及びループ波形データＬＤＴに付随させて波形メモリ２１に書き込む。以降において、これらのアタック波形データＡＤＴの先頭及び最終アドレスをアタックスタートアドレス及びアタックエンドアドレスと呼び、ループ波形データＬＤＴの先頭及び最終アドレスをループスタートアドレス及びループエンドアドレスと呼ぶ。なお、前記外部音信号を表す一連のサンプル値は、この時点で消去されるが、前記のように外部音信号のサンプリング周波数が外部音信号と共に書き込まれている場合には、このサンプリング周波数を前記各データと共に波形メモリ２１に書き込んでおく。
【００１９】
ここで、後述するリサンプリングによるアタック部とループ部（サステイン部）のピッチ調整の必要性について説明しておく。楽音信号の形成においては、アタック波形データＡＤＴを順次読み出した後、ひきつづいてループ波形データＬＤＴを繰り返し読み出して、楽音信号を形成するものである。しかし、この場合、アタック波形データＡＤＴ及びループ波形データＬＤＴの両読み出しレートを同じにすると、発生される楽音信号のアタック部からサステイン部（ループ部）に切り替わる時点において大きなピッチ変動が発生するおそれがある。
【００２０】
すなわち、形成される楽音信号のアタック部においては、外部音信号のサンプリングレートと前記読み出しレートの比に正確に比例した周波数の楽音信号が得られる。しかし、前記波形データの切り出しをサンプル値単位で行ったので、サステイン部（ループ部）においては、図４(Ｂ)に示すように、ループスタートポイントＰ３及びループエンドポイントＰ４が外部音信号のサステイン部の繰り返し波形の前端及び後端に正確に一致しない。例えば、ループスタートポイントをＰ３に設定した場合、同ポイントＰ３に対応する理想的なループエンドポイントはＰ4*になるが、サンプリング周波数ｆsが正確に外部音信号の整数倍ではないので、ループスタートポイントＰ３〜ループエンドポイントＰ4*までの波形データを切り出すことができず、図４(Ｂ)に示す誤差Δｔが生じる。このことは、読み出しレートを外部音信号のサンプリングレートと同じにしてループ波形データＬＤＴを読み出しても、新たに形成された楽音信号が外部音信号と同じ周波数にならないことを考えれば明らかである。したがって、一定の読み出しレート（例えば、外部音信号のサンプリングレートと同じ読み出しレート）でアタック波形データＡＤＴを読み出した後、ループ波形データＬＤＴを繰り返し読み出せば、発生される楽音信号のアタック部からサステイン部（ループ部）に切り替わる時点において大きなピッチ変動が発生するおそれがある。
【００２１】
前記図２のステップ１０４の処理後、ユーザは、ステップ１０６にて、パネルスイッチ３２を用いて波形メモリ２１に記憶した波形データのリサンプリングを指示する。この指示に応答して、ＣＰＵ１１は、図３のリサンプリングプログラムをステップ２００にて開始し、ステップ２０２にて波形メモリ２１に書き込んだ外部音信号に対してループ設定処理が行われているか否か、すなわち波形メモリ２１にアタック波形データＡＤＴ及びループ波形データＬＤＴが記憶されているか否かを判定する。なぜならば、減衰系でかつピッチの明確でない、すなわちループを指定し難い音色の楽音波形（例えば、バスドラなどの打楽器音、銃声のような効果音に関する波形）には上述のループ波形データの設定処理が行われずに、外部音信号がそのまま記憶されているからである。ループ設定処理が行われていなければ、ステップ２０２にて「ＮＯ」と判定して、ステップ２０４にてこのリサンプリングプログラムの実行を終了する。
【００２２】
一方、波形メモリ２１に書き込んだ外部音信号に対してループ設定処理が行われていれば、ステップ２０２にて「ＹＥＳ」と判定して、プログラムをステップ２０６〜２１０に進める。ステップ２０６においては、アタック波形データＡＤＴを構成する一連のサンプル値のうちでアタックエンドに近い部分の複数周期分のサンプル値を取り出して、同取り出したサンプル値により表された波形データをアタックエンド波形データＡＥＤＴとする。具体的には、波形メモリ２１に記憶されているアタックエンドアドレスから複数周期分遡った複数のサンプル値を読み出して、同読み出したサンプル値により表された波形データをアタックエンド波形データＡＥＤＴとする。そして、このアタックエンド波形データＡＥＤＴに高速フーリェ変換（ＦＦＴ）処理を施して、同波形データＡＥＤＴにより表された波形信号を周波数分析して、同波形信号に含まれる周波数成分を検出する。これにより、通常の場合、図５に示すような複数の特定の周波数にそれぞれ対応してピークを有する解析結果が得られる。なお、ノイズ成分などが多くて、前記ピークが検出されないこともある。
【００２３】
次に、ステップ２０８にて、波形メモリ２１にアタック及びループ波形データＡＤＴ，ＬＤＴに付随して記憶されているノートナンバＮＮを読み出して、前記周波数解析結果から同ノートナンバＮＮに対応したピッチＦnn（外部音信号の音高周波数）近傍の周波数帯域にあるピークを検出する。そして、該当するピークが検出されれば、同検出ピークを基本波ピークＰＫ１とし、同ピークＰＫ１の現れる周波数を基本波周波数ＰＦ１として設定するとともに、同ピークＰＫ１のレベルを基本波レベルＰＬ１として設定する。なお、前記ノートナンバＮＮに対応したピッチＦnnは、各ノートナンバＮＮに対応してＲＯＭ１３又は波形メモリ２１に予め記憶されている。
【００２４】
次に、ステップ２１０にて、前記周波数解析結果から、前記ノートナンバＮＮに対応したピッチＦnnの２倍近傍の周波数帯域にあるピークを検出する。そして、該当するピークが検出されれば、同検出ピークを２倍音ピークＰＫ２とし、同ピークＰＫ２の現れる周波数を２倍音周波数ＰＦ２として設定するとともに、同ピークＰＫ２のレベルを２倍音レベルＰＬ２として設定する。
【００２５】
前記ステップ２１０の処理後、ステップ２１２にて、前記ステップ２０６〜２１０の検出結果に基づく次の判定処理を行う。まず、基本波及び２倍音ピークＰＫ１，ＰＫ２が共に検出されなかった場合、ステップ２１２の判定処理により、プログラムはステップ２１４に進められる。ステップ２１４においては、アタックピッチＡＰを前記と同様にして導出されたノートナンバＮＮに対応したピッチＦnn（外部音信号の音高周波数）に設定するとともに、倍音ナンバＨＮを「１」に設定する。
【００２６】
また、前記ステップ２０６〜２１０の処理により、２倍音ピークＰＫ２が検出されず、基本波ピークＰＫ１のみが検出された場合には、ステップ２１２の判定処理により、プログラムはステップ２１６に進められる。ステップ２１６においては、アタックピッチＡＰを基本波周波数ＰＦ１に設定するとともに、倍音ナンバＨＮを「１」に設定する。また、前記ステップ２０６〜２１０の処理により、基本波ピークＰＫ１が検出されず、２倍音ピークＰＫ２のみが検出された場合には、ステップ２１２の判定処理により、プログラムはステップ２１８に進められる。ステップ２１８においては、アタックピッチＡＰを２倍音周波数ＰＦ２に設定するとともに、倍音ナンバＨＮを「２」に設定する。
【００２７】
また、前記ステップ２０６〜２１０の処理により、基本波及び２倍音ピークＰＫ１，ＰＫ２が共に検出された場合には、ステップ２１２の判定処理により、プログラムはステップ２２０に進められる。ステップ２２０においては、前記いずれのピークが有力であるかが判定される。この場合、基本波レベルＰＬ１と２倍音レベルＰＬ２の大小関係、基本波及び２倍音ピークＰＫ１，ＰＫ２の周辺のレベルに基づいて判定されるピッチの安定度、継続性などが判断されて、各ピークの有効度の高い方が有力とみなされる。
【００２８】
基本波ピークＰＫ１が有力であると判定されると、ステップ２２０における「ＹＥＳ」との判定のもとに、プログラムはステップ２２０に進められる。ステップ２２０においては、ステップ２１６の場合と同様に、アタックピッチＡＰを基本波周波数ＰＦ１に設定するとともに、倍音ナンバＨＮを「１」に設定する。また、２倍音ピークＰＫ２が有力であると判定されると、ステップ２２０における「ＮＯ」との判定のもとに、プログラムはステップ２２２に進められる。ステップ２２２においては、ステップ２１８の場合と同様に、アタックピッチＡＰを２倍音周波数ＰＦ２に設定するとともに、倍音ナンバＨＮを「２」に設定する。
【００２９】
これらのステップ２０６〜２２２の処理により、外部音信号のアタック部（正確には、アタックエンド部）のピッチ（周波数）が検出される。言いかえれば、波形メモリ２１に記憶されたアタック波形データＡＤＴを外部音信号のサンプリング周波数ｆsと同一の読み出しレートで読み出して楽音信号を形成したとき、同楽音信号のアタック部（正確には、アタックエンド部）のピッチ（周波数）が検出される。
【００３０】
次に、ステップ２２４〜２２８の処理により、ループ波形データＬＤＴを前記同一の読み出しレートで読み出して楽音信号を形成した場合における楽音信号のピッチ（周波数）を検出する。
【００３１】
ステップ２２４においては、前記ステップ２０６，２０８の場合と同様にして波形メモリ２１から読み出したノートナンバＮＮに対応したピッチＦnnを導出し、外部音信号をサンプリングしたサンプリング周波数ｆsを前記導出したピッチＦnnで除算して、外部音信号の１周期当たりのサンプル数ｆs／Ｆnnを計算する。次に、同ステップ２２４にて、波形メモリ２１に記憶されているループ波形データＬＤＴのループスタートアドレス及びループエンドアドレスを読み出して、同読み出した両アドレスからループサイズＬＳ（設定したループ波形データＬＤＴのサンプル数）を計算する。そして、このループサイズＬＳを前記１周期のサンプル数ｆs／Ｆnnで除算して、ループ波形データＬＤＴに含まれる波数ＷＮ（＝ＬＳ・Ｆnn／ｆs）を計算する。具体的に、前記計算結果（ＬＳ・Ｆnn／ｆs）の小数部１桁目を四捨五入して整数値として計算するとよい。
【００３２】
ステップ２２６においては、サンプリング周波数ｆsを前記計算したループサイズＬＳで除算することにより、ループ部の１ループ当たりのピッチ（周波数）を示すループピッチＬＰ（＝ｆs／ＬＳ）を計算する。ステップ２２８においては、前記計算した波数ＷＮとループピッチＬＰとを乗算することにより、ループ部内に含まれる波形信号のピッチ（周波数）ＬＷＰ（＝ＷＮ・ＬＰ）を計算する。これにより、波形メモリ２１に記憶されたループ波形データＬＤＴを外部音信号のサンプリング周波数ｆsと同一の読み出しレートで繰り返し読み出して楽音信号を形成したとき、同楽音信号のループ部（サステイン部）のピッチ（周波数）が検出される。
【００３３】
このようにして同一の読み出しレートで読み出した場合における両波形データＡＤＴ，ＬＤＴに基づく楽音信号のピッチ（周波数）ＡＰ，ＬＷＰを計算した後、ＣＰＵ１１は、ステップ２３０にて倍音ナンバＨＮが「１」であるか否かを判定する。
【００３４】
倍音ナンバＨＮが「１」すなわちアタック部のピッチ（周波数）として基本波のピッチ（周波数）が検出されていれば、ステップ２３０にて「ＹＥＳ」と判定して、プログラムをステップ２３２に進める。ステップ２３２においては、波形メモリ２１に記憶されているアタック波形データＡＤＴをアタック部のピッチＡＰとループ部のピッチＬＷＰに応じてリサンプリング処理する。すなわち、波形メモリ２１に記憶されていてサンプリング周波数ｆsでサンプリングされたアタック波形データＡＤＴを、前記両ピッチＡＰ，ＬＷＰの比に応じたリサンプリング周波数ｆs・ＡＰ/ＬＷＰでサンプリングし直して（リサンプリングして）、波形メモリ２１に以前から記憶されていたアタック波形データＡＤＴを前記リサンプリングしたアタック波形データＡＤＴ’に書き換える。このリサンプリングしたアタック波形データＡＤＴ’を波形メモリ２１に書き込む際には、同データＡＤＴ’を波形メモリ２１のアタックエンドアドレスから前方に向かって書き込む。そして、ステップ２３６にて波形メモリ２１内のアタックスタートアドレスをアタック波形データＡＤＴ’の先頭アドレスに書き換えておく。
【００３５】
一方、倍音ナンバＨＮが「２」すなわちアタック部のピッチ（周波数）として２倍音のピッチ（周波数）が検出されていれば、ステップ２３０にて「ＮＯ」と判定して、プログラムをステップ２３４に進める。ステップ２３４においては、波形メモリ２１に記憶されているアタック波形データＡＤＴを前記リサンプリング周波数ｆs・ＡＰ/ＬＷＰの「１／２」に相当するリサンプリング周波数ｆs・ＡＰ/２・ＬＷＰでリサンプリングする。これは、アタック部のピッチ検出において、外部音信号の２倍音に相当するピッチが検出されているためである。そして、波形メモリ２１に以前から記憶されていたアタック波形データＡＤＴを前記のようにしてリサンプリングしたアタック波形データＡＤＴ’に書き換える。この場合も、ステップ２３６にて、前記と同様に、波形メモリ２１内のアタックスタートアドレスをアタック波形データＡＤＴ’の先頭アドレスに書き換えておく。
【００３６】
このようなリサンプリング処理により、波形メモリ２１に記憶されているアタック波形データＡＤＴ（図６(Ａ)）は、図６(Ｂ)に示すようなリサンプリングされたアタック波形データＡＤＴ’に書き換えられる。図６(Ｂ)の例は、アタック部（正確にはアタックエンド部）のピッチがループ部のピッチよりも高い場合の例を示すものである。この場合、アタック部のピッチＡＰはループ部のピッチＬＷＰよりも大きく、前記リサンプリング周波数ｆs・ＡＰ/ＬＷＰは元のサンプリング周波数ｆsよりも大きくなるので、リサンプリング後のアタック波形データＡＤＴ’のサンプル数は元のアタック波形データＡＤＴよりも両ピッチの比ＡＰ/ＬＷＰに応じた量だけ多くなる。逆に、アタック部のピッチがループ部のピッチよりも低ければ、リサンプリング後のアタック波形データＡＤＴ’のサンプル数は元のアタック波形データＡＤＴよりも両ピッチの比ＡＰ/ＬＷＰに応じた量だけ少なくなる。
【００３７】
なお、前記説明では予め決められた標準のサンプリング周波数ｆsを用いた場合であるが、上述したように外部音信号のサンプリングの際に波形メモリ２１にサンプリング周波数を書き込んでおいた場合には、同書き込んだサンプリング周波数を前記サンプリング周波数ｆsに代えて用いるとよい。
【００３８】
そして、前記ステップ２３６の処理後、ステップ２３８にて、このリサンプリングプログラムの実行を終了する。そして、新たな外部音信号を楽音波形処理する場合には、上述した図２の操作にしたがって、波形メモリ２１にアタック波形データＡＤＴ、ループ波形データＬＤＴ、及びこれらに付随するデータを波形メモリ２１に記憶させる。
【００３９】
このようにして波形メモリ２１に書き込んだ波形データを読み出して楽音信号を形成する場合、ＣＰＵ１１は音源回路２５に対して所望の音高周波数の楽音の発生を指示する。この指示に応答して、音源回路２５は、前記音高周波数に対応した読み出しレート（例えば、元のサンプリング周波数ｆsと同じ読み出しレート）で、波形メモリ２１からアクセス管理回路２２を介してリサンプリング後のアタック波形データＡＤＴ’を読み出し、その後にループ波形データＬＤＴを繰り返し読み出す。そして、これらの読み出したアタック波形データＡＤＴ’及びループ波形データＬＤＴに基づいて楽音信号を形成して、サウンドシステム２６を介して出力する。なお、この場合、ＣＰＵ１１の指示により、リリース開始が指示されたときには、音源回路２５はループ波形データＬＤＴにより表されたサンプル値の振幅エンベロープを徐々に減衰させて出力するようにすればよい。
【００４０】
このようにして楽音信号が発生される結果、アタック部（正確にはアタックエンド部）のピッチがループ部（サステイン部）のピッチよりも高い場合、前記のように波形メモリ２１に記憶されていてリサンプリングされたアタック波形データＡＤＴ’のサンプル数は元のアタック波形データＡＤＴのサンプル数よりもピッチ比ＡＰ/ＬＷＰに比例して多くなっているので、同一の読み出しレートでアタック波形データＡＤＴ’及びループ波形データＬＤＴを連続して読み出しても、アタック部とループ部との切り替えタイミングにおけるピッチ変動を回避することができる。逆に、アタック部（正確にはアタックエンド部）のピッチがループ部（サステイン部）のピッチよりも低い場合、リサンプリングされたアタック波形データＡＤＴ’のサンプル数は元のアタック波形データＡＤＴのサンプル数よりもピッチ比ＡＰ/ＬＷＰに比例して少なくなっているので、同一の読み出しレートでアタック波形データＡＤＴ’及びループ波形データＬＤＴを連続して読み出しても、アタック部とループ部との切り替えタイミングにおけるピッチ変動を回避することができる。
【００４１】
上記作動説明からも理解できるとおり、上記実施形態によれば、ステップ２０６〜２２２の処理及びステップ２２４〜２２８の処理により、外部音信号をサンプリングして形成したアタック波形データＡＤＴ及びループ波形データＬＤＴを同一レートで読み出して形成した場合の各楽音信号のピッチ（周波数）ＡＰ，ＬＷＰをそれぞれ検出した。そして、ステップ２３０〜２３６の処理により、前記アタック波形データＡＤＴを両ピッチＡＰ，ＬＷＰの比ＡＰ／ＬＷＰに応じてリサンプリングすることによりサンプル数を変更した新たなアタック波形データＡＤＴ’を形成して、元のアタック波形データＡＤＴを前記リサンプリングしたアタック波形データＡＤＴ’に書き換えた。これにより、前記アタック波形データＡＤＴ’及びループ波形データＬＤＴを同一読み出してレートで連続して読み出しても、両波形データＡＤＴ’，ＬＤＴに基づく楽音信号にピッチ差が生じないようにしたので、波形データに応じて読み出しレートを切り替えるなどの方法をとらなくても、アタック部とループ部との切り替え時におけるピッチ変動を避けることができる。
【００４２】
また、上記ステップ２０６〜２２２の処理のように、ＦＦＴ処理による複数のピークを用いて楽音信号のピッチを検出するようにしたので、いずれかのピークしか検出されない場合でも、楽音信号のピッチを計算できる。また、複数のピークを検出できた場合には、同複数の検出ピークを用いて楽音信号のピッチとしてより適切な値を計算できる。その結果、楽音信号のピッチが広く検出できるようになるとともに、同ピッチを精度よく検出できるようになる。
【００４３】
なお、上記実施形態においては、アタック波形データＡＤＴに対してリサンプリング処理を施すようにしたが、ループ波形データＬＤＴにリサンプリング処理を施すようにしてもよい。この場合、上記実施形態のステップ２３２，２３４にて両ピッチＡＰ，ＬＷＰを逆にして、ループ波形データＬＤＴをｆs・ＬＷＰ/ＡＰ，ｆs・２・ＬＷＰ/ＡＰでそれぞれリサンプリング処理するようにすればよい。図６(Ｃ)はその例を示しており、アタック部（正確にはアタックエンド部）のピッチがループ部（サステイン部）のピッチよりも低い場合、リサンプリングされたループ波形データＬＤＴ’のサンプル数は元のループ波形データＬＤＴのサンプル数よりも前記ピッチ比ＬＷＰ/ＡＰに比例して少なくなる。また、逆にアタック部のピッチがループ部のピッチよりも高い場合、リサンプリングされたループ波形データＬＤＴ’のサンプル数は元のループ波形データＬＤＴのサンプル数よりも前記ピッチ比ＬＷＰ/ＡＰに比例して多くなる。
【００４４】
また、上記実施形態では、ステップ２０６〜２２２の処理により、波形データをＦＦＴ処理して基本波ピークＰＫ１及び２倍音ピークＰＫ２のみを検出するようにしたが、３倍音、４倍音・・などのさらに多くの倍音に関するピークＰＫ３，ＰＫ４・・などをＦＦＴ処理により検出するようにして、これらの検出された多数のピークを選択的かつ効果的に用いて楽音信号のピッチを検出するようにしてもよい。これによれば、基本波ピークＰＫ１及び２倍音ピークＰＫ２が検出されなくても、３倍音、４倍音・・などに関するピークＰＫ３，ＰＫ４・・などに基づいて楽音信号のピッチを検出できるようになる。また、より多くのピークを組み合わせて用いることにより、楽音信号のピッチの検出精度を良好にできる。
【００４５】
また、上記実施形態では、アタック部のピッチ（周波数）を高速フーリェ変換（ＦＦＴ）処理を用いたステップ２０６〜２２２からなる処理により計算し、ループ部のピッチ（周波数）をサンプリング周波数ｆs、ループサイズＬＳ、波数ＷＮ等を用いたステップ２２４〜２２８からなる処理により計算した。しかし、ループ読み出しが設定された波形データ同士を接続する場合には、両方の波形データについて後者の処理により両波形データに関するピッチを計算すればよい。また、ループ読み出しが設定されない波形データ同士を接続する場合には、両方の波形データについて前者の処理により両波形データに関するピッチを計算すればよい。この場合、上記実施形態のアタックエンド波形データＡＥＤＴをＦＦＴ処理するのに代えて、各波形データについて接続するポイントから所定周期又は所定サンプル数分の波形データをそれぞれ取り出して、同取り出した波形データをそれぞれＦＦＴ処理するようにすればよい。また、ループ読み出しが設定された波形データの後にループ読み出しが行われない波形データを接続しようとする場合には、ループ読み出しが設定された波形データに関するピッチを後者の処理によって計算し、ループ読み出しが行われない波形データのピッチを前者の処理によって計算するようにすればよい。さらに、前記アタック部、ループ部、及び後述する複数に区分した各波形データのピッチを、再生ピッチが計算されるものであればどのような方法で計算してもよい。
【００４６】
特に、前記ループ読み出しが設定されない波形データ同士を接続する場合には、上述のように、両方の波形データについてＦＦＴ処理による両波形データに関するピッチを計算するとよい。すなわち、上述したように、基本波ピークＰＫ１及び２倍音ピークＰＫ２、又はこれらのピークに応じて３倍音ピークＰＫ３及び４倍音ピークＰＫ４などの複数のピークを検出して、同検出した複数のピークを用いて両波形データに関するピッチを計算するとよい。これによれば、両波形データは、ピッチとして認識される可能性の高い倍音に基づいて接続されることになり、両波形データの適切な接続が実現される。
【００４７】
また、上記実施形態は、ループ部の切り出しをサンプル値単位で行ったために生じる問題を解決するものであるが、この波形データのリサンプリング処理は広く応用されるものである。すなわち、波形メモリ２１に所定のサンプリングレートで記憶されていてそれぞれ複数の波形サンプル値からなる複数の波形データを連続して読み出して、同読み出した波形データに基づいて楽音信号を形成する場合には広く応用できる。波形データの切り出しに問題がなく、かつ楽音信号のピッチ（周波数）が同一であるべきにもかかわらず、異なる条件のもとで複数の波形データを採取したために、同楽音信号のピッチ（周波数）が若干ずれることがある。例えば、異なる気温、チューニングの若干変化した状態などの異なる環境下でアタック波形データＡＤＴとループ波形データＬＤＴを自然楽器音からそれぞれ独立して採取した場合、タッチの異なる波形データに対してループ波形データＬＤＴを共通に利用しようとする場合などである。このような場合であっても、前記のように連続して読み出される２つ波形データの一方を上記のようなピッチ比に応じてリサンプリングしておけば、前記２つの波形データに基づく楽音信号の再生ピッチ（周波数）を合わせることができる。
【００４８】
また、上記実施形態においては、波形データの区分をアタック部とループ部（サステイン部）に分けるようにしたが、アタック部及びループ部（サステイン部）に加え、リリース部も一つの区分として扱って複数のサンプル値からなるリリース波形データを用意するようにしてもよい。また、アタック部、サステイン部及びリリース部をさらに小区分化するようにしてもよい。
【図面の簡単な説明】
【図１】  本発明の一実施形態に係る楽音波形処理装置の全体ブロック図である。
【図２】  ユーザによる音源用波形データの作成手順を示すフローチャートである。
【図３】  図２のリサンプリング指示により実行されるプログラムのフローチャートである。
【図４】  (Ａ)は外部音信号を示す波形図であり、(Ｂ)は同外部音信号のループ部の前端及び後端部を拡大して示す波形図である。
【図５】  図３のＦＦＴ処理によるスペクトル図である。
【図６】  リサンプリングを説明するための楽音波形の振幅エンベロープ波形図である。
【符号の説明】
１０…バス、１１…ＣＰＵ、１３…ＲＯＭ、１４…ＲＡＭ、２１…波形メモリ、２３…書き込み回路、２５…音源回路、３１…表示器、３２…パネルスイッチ。
【図１】
0003714397.tif 000002
【図２】
0003714397.tif 000003
【図３】
0003714397.tif 000004
【図４】
0003714397.tif 000005
【図５】
0003714397.tif 000006
【図６】
0003714397.tif 000007