以下添付図面を参照して、この発明に係る波形編集装置の一例について説明する。この実施例において、波形編集装置はサンプリング機能を有するサウンドカードを搭載したパーソナルコンピュータ(PC)により構成されるものとする。図1はこの発明の一実施例に係る波形編集装置の全体的なハードウェア構成を示すブロック図である。
図1において、波形編集装置(PC)は、当該PCの全体の動作を制御するCPU1を備え、CPU1にはバスライン1Bを介して、ROM2、RAM3、表示器4、操作部5、外部MIDI機器との間でMIDIデータの授受を行うMIDIインターフェース6、CD(Compact Disk)やHD(ハードディスク)等の外部記録媒体11にアクセスするためのドライバ7、書込回路8、アクセス管理部9、音源10がそれぞれ接続される。書込回路8には、外部から波形データを入力するための外部波形入力端子12が接続され、アクセス管理部9には波形メモリ13が接続され、音源10にはサウンドシステム14が接続される。
CPU1は、ROM2、RAM3乃至外部記録媒体11等のメモリ内に格納された各種制御プログラムを実行する。CPU1が実行するプログラムには、装置の全体的な制御を行うプログラムに加えて、この実施例に係る波形データ編集機能を実現するためのソフトウェアプログラムや、音源用に加工された波形を用いた波形メモリ音源機能を実現するための演奏処理プログラムなどが含まれる。RAM3は、また、各種プログラム実行時に波形メモリ13から読み出した波形データを一時記憶するワーキングメモリや波形編集のための各種パラメータを記憶するレジスタとして使用される。操作部5は、例えばマウスやキーボードなど各種操作・入力用のユーザインターフェースである。表示器4は、例えばLCD等のディスプレイで構成されるものであって、波形編集装置の各種機能に応じた表示画面(ウィンドウ)を表示する。この実施例において、前記表示画面として、波形データの編集を行うため画面が表示され、当該画面には編集対象となるデータ(詳しくは後述)がグラフィカルに表示される。作業者は、波形編集ツールを用いて波形データの編集作業をグラフィカルに行うことができる。この波形データ編集作業におけるデータの入力、指示、編集範囲の指定等の各種操作は、GUIによる表示画面上からマウスやキーボードなど(操作部5)を用いて行なうことができる。
書込回路8は外部入力端子12から入力される波形データをアクセス管理部9を介して波形メモリ13に書き込む。アクセス管理部9は、書込回路8、音源10、或いは、CPU1からの波形メモリ13に対するアクセスが互いに衝突しないように、波形メモリ13のアクセスタイムスロットを管理するものであり、時分割で各装置からの波形メモリ13に対する平行アクセスを可能にする。波形メモリ13は、外部入力端子12或いは外部記憶媒体11から供給される波形データや、当該波形編集装置において編集した波形データ等、複数の波形データを記憶するものである。波形データの記憶の仕方及び読み出し方式は従来から知られるどのような方式であってもよく、また、メモリに記憶するデータ符号化形式も従来から知られる適宜の形式であってよい。また、CPU1は、演奏処理実行時において、MIDIインターフェース6、外部記録媒体11あるいはRAM3などから供給される演奏情報に応じて、音源10の発音チャンネルの楽音生成状態を制御する。音源10は、CPU1による発音制御の下、波形メモリ13から読み出された波形データを使用して、再生すべき音色の楽音波形信号を生成する。該生成された楽音波形信号はサウンドシステム14を介して発音される。
図2は、図1に示した波形編集装置において、外部の波形データを波形メモリ13に記録して、該記録した波形データを適宜編集し、これに基づく楽音が発音されるまでにユーザが行うべき作業の流れの概要を示すフローチャートである。ステップS1において、ユーザは波形メモリ13に波形データを記録する。ユーザが操作部5の操作により録音指示を行うと、CPU1は、書込回路8に対して外部入力端子12や外部記憶媒体11等から入力される外部の波形を波形メモリ13に書き込む命令を発生する。これにより、書込回路8は、サンプリングすべき外部波形信号(例えば楽器演奏による楽音波形など)の波形データを、所定周期のサンプリングクロックパルスに従い、波形メモリ13に書き込む。
ステップS2において、ユーザは、波形メモリ13に記憶されている波形データを編集し、音源用の波形データを作成する作業を行う。編集対象となる波形データは、波形メモリ13からRAM3に読み込まれ、該RAM3に読み込まれた波形データに対して編集処理が行われる。すなわち、CPU1は、該RAM3に読み込まれた波形データに対して、各種編集パラメータに基づき信号処理を行い、該波形データを音源用に加工する。波形データの編集内容としては、波形データを用いてアッタク部とループ部からなる波形データを作成する処理やノイズ消し処理等と共に、この実施例に係るピッチ修正処理が含まれる。詳しくは後述する通り、この実施例によれば、ユーザは、ピッチ修正処理に特化したツールを用いてグラフィカルに波形データのピッチ修正作業を行うことができる。
ステップS3において、前記音源用に加工された波形データを用いた波形メモリ音源の音色データを作成する作業を行う。ここで音色データは、音源10において波形データに基づく楽音波形信号を生成するために必要なパラメータ群であって、ピッチ制御のためのパラメータ、波形データのスタートアドレス、同波形データのループスタート/エンドアドレス、音量エンベロープを制御するパラメータや、各種効果付与のためのディジタルフィルタ特性を制御するパラメータなどである。そして、ステップS4では、リアルタイムに発生する演奏情報に応じて、前記作成した音色データに基づき、前記波形メモリから前記音源用の波形データを読み出し、ピッチ変化、音量の変化、各種効果などを制御して楽音波形信号を作成することにより、該音色での楽音の演奏を行う。前記演奏情報は、MIDIインターフェース6、記録媒体11、あるいは、図示しない通信ネットワーク等からリアルタイム入力されるMIDIデータ等の演奏データであってよい。または、楽曲の曲データの自動演奏を行うことにより再生される演奏データであってもよい。
この実施例に係る波形編集装置は、波形メモリ13に記憶(サンプリング)した波形データにおけるピッチ変化を編集(修正)する機能において、該波形データのピッチ修正作業に特化したGUIを使用することに特長がある。すなわち、ユーザは、波形データのピッチ修正作業を実行すべきときに、この実施例に係るピッチ修正機能を呼び出し、表示器4上に波形データのピッチ修正を行うための表示画面(ピッチ修正ツール)を表示させ、該表示画面上においてピッチ修正作業を行うことができる。なお、以下に述べる実施例では、一例として、編集対象となる波形データが2チャンネルで構成されるステレオ波形データである例を示す。
図3は、波形データのピッチ修正を行うための表示画面(ピッチ修正ツール)15の一例を示す。図3に示す通り、ピッチ修正ツール15は、大別して波形表示部20と、当該ピッチ修正ツール15上において各種入力操作を行うためのユーザインターフェース(各種ボタン画像、数値入力ボックス、チェックボックスなど)から構成される。
波形表示部20には、編集対象となる元波形データの振幅エンベロープ(以下「元波形」と称する)21a,21b、該元波形から抽出したピッチ変化を示す修正前ピッチ変化カーブ23a,23b(以下「修正前カーブ」と称する)、ピッチ修正に使用する修正カーブ24及び該修正カーブにより元波形データを修正した結果として得られるピッチ変化を示す修正後ピッチ変化カーブ25a,25b(以下「修正後カーブ」と称する)の各データがグラフィカルに表示される。なお、波形表示部20の横軸は時間(ミリ秒「msec」単位)を示す。縦軸は元波形21a,21bについては振幅に対応し、また、各折れ線カーブについては、基準ピッチに対する音高差(セント値)を示し、その略中心位置が基準ピッチ=0セントに対応する。以上のように、ピッチに関連する各カーブはセント単位としているが、それに限らず周波数比の対数に基づくいかなる単位であってもよい。
ユーザは、ロード(Load)ボタン30の操作により、編集対象となる波形データ(元波形データ)を波形メモリ13から読み出す指示を行い、波形表示部20において当該読み込んだ元波形データについて前記各データをグラフィック表示させる。
Loadボタン30の操作に応じて実行される処理の手順は図4(a)のフローチャートに示す通りである。Loadボタン30が操作されると、ステップS10において、編集対象として指定された元波形の波形データWDが波形メモリ13からRAM3内のワークメモリ領域に読み込まれる。なお、該ワークメモリ領域において元波形データWDを記憶する領域を「第1領域」と称する。
ステップS11では、RAM3に読み込んだ元波形データWDを分析し、該元波形データWDから、ユーザ指定した音高(基準ピッチ)について基本波のピッチ変化を抽出し、該抽出した値を各時刻iごとにピッチレジスタpit(i)に格納する。この各時刻iごとのピッチレジスタpit(i)に基づき、抽出ピッチpitの変化を表す修正前カーブが作成される。ここで元波形データWDは2chステレオデータであるから、ピッチ変化の抽出は左右両chの夫々について行われる。図3に示すとおり、ピッチ修正ツール15には、前記基準ピッチを指定するためのキー指定ボックス26が設けられており、ユーザは該キー指定ボックス26において任意の音高(図3の例では音高「B6」)を基準ピッチとして指定することができる。なお、同図において音高指定ボックス26の左側の文字列「A4=440Hz」に示される通り、この波形編集装置のスタンダード・ピッチは、音高「A4」の基本波周波数を440Hzとし、これを標準として平均律の各音高毎の周波数が基準ピッチとして規定される。前記ピッチレジスタpit(i)の値は、基本波のピッチに対するピッチ偏差を対数値すなわちセント値centで表現した値である。なお、元波形のデータから指定された音高の基本波のピッチを抽出する処理は従来から知られるどのような方法によって行われても良い。
ステップS12において、抽出ピッチpitを反転した修正カーブcurを算出し、該算出した修正カーブcurの各時刻の値を反転値レジスタcur(i)にレジストする。ユーザは、図3の表示画面15上段に設けられたラジオボタン「Reference」27において、修正カーブcurを算出するための参照パラメータの選択を行うことができる。ラジオボタン「Reference」27により選択可能な参照パラメータは、ステレオ2ch構成の元波形データWDの左右両チャンネルの平均値(Average)、左chの波形データ(Lch)又は右chの波形データ(Rch)のいずれかである。図3では、左右両チャンネルの平均(Average)が選択された例を示している。この場合、左右両chのピッチ変化(抽出ピッチ)を平均することで、平均された1通りのピッチ変化(抽出ピッチ)を作成し、該1通りのピッチ変化に基づき1つの修正カーブcurを生成する。修正カーブcurは、元波形のピッチ変化の反転値をセント値centで表現したものである。よって、ここで作成される修正カーブcurは、典型的には、元波形から抽出されたピッチ変化を相殺する(基準ピッチに正規化する)特性を持つ。
そして、ステップS13において、上記ピッチレジスタpit(i)の各値と反転値レジスタcur(i)の各値に基づき波形表示部20における全表示物の表示が更新される。また、エディットフラグEFを「1」にセットする。エディットフラグEFは、修正カーブ24が更新された(新規に設定された/又は編集された)場合に「1」にセットされる2状態フラグであり、後述するピッチ修正後波形の試聴(再生)において参照されるものである。
上記ステップS13により波形表示部20の表示は次の通り更新される。ワークメモリ第1領域(RAM3)に読み込まれた波形データWDの振幅エンベロープ(図において波形21aが左ch、同21bが右ch)が表示されると共に、指定音高の基音部分が該元波形21a,21bの白抜き部分22により表示される。また、各時刻(i)ごとのピッチレジスタpit(i)の値に基づき作成される修正前カーブ(図においてカーブ23bが左ch、同23aが右chの波形)が表示され、反転値レジスタcur(i)の各値に基づき作成される修正カーブ24が表示される。この修正カーブ24と左右各chの修正前カーブ23a,23bに基づき修正後カーブ(カーブ25bが左ch、同カーブ25aが右ch)が算出され、この修正後カーブ25a,25bが、当該修正カーブ24により元波形をピッチ修正した結果得られる波形データのピッチ変化として表示される。
例えば、図3においては、修正カーブ24により修正前カーブ23a,23bを修正すれば、修正前カーブ23a,23bにおける基準ピッチに対するピッチの偏差が相殺されるので、修正後のピッチ変化(修正後カーブ25a,25b)は基準ピッチに対してフラットな傾向にピッチシフトされることが見て取れる。ここで、2ch構成の元波形に対して、各チャンネルの平均に基づく1つの修正カーブ24でピッチ修正をかけているので、修正後の各カーブ25a,25bには、元のステレオ波形データとしてのピッチ変化のニュアンス(細かいピッチの揺れ、左chと右chの位相差など)が残存している。なお、波形表示部20に表示された各折れ線カーブにおいて、データのない部分は図示の便宜上直線で示されている。
ユーザは、修正カーブ24の形状を編集するための修正メニューを用いて、該修正カーブ24の形状を任意に編集することができる。この実施例において、前記修正カーブ24の形状を編集するための修正メニューには、「Set」、「Offset」、「Scale」、「TieLine」、「Average」及び「ResetCurve」がある。ユーザは各修正メニューに対応するボタン、すなわち、セットボタン「Set」31、オフセットボタン「Offset」32、スケールボタン「Scale」33、タイラインボタン「TieLine」34及びリセットカーブボタン「ResetCurve」35及びアベレージボタン「Average」36の操作により、所望の修正メニューの実行を指示することができる。上記修正メニューのうち「Set」、「Offset」、「Scale」及び「TieLine」は、修正カーブ24のうちユーザが任意に選択した部分について実行されるものであり、「Average」は修正カーブ24の全体に対して実行される修正メニューである。後述する通り、ユーザの編集操作に応じて修正カーブ24の形状が編集されると、該編集内容に応じて修正カーブ24の表示が更新されると共に、該編集された修正カーブ24と修正前カーブ23a,23bに基づき修正後カーブが算出され、これに基づき修正後カーブ25a,25bの表示が更新される。従って、ユーザは、波形表示部20において、元波形のピッチ変化(修正前カーブ)、修正カーブ及び修正後カーブの各データが表すピッチ変化をグラフィック表示で確認しながら、修正カーブの形状を編集することができる。
また、ユーザは、波形表示部20上において所望の選択範囲開始点から終了点を指定するようにドラッグ操作をすることで、修正カーブの編集すべき範囲を任意に設定することができる。すなわち、表示上でドラッグ操作が行われると、図4(b)に示す範囲選択処理が行われる。同図(b)のステップS14において、ドラッグ操作により指定された開始点の時刻aと、同終了点の時刻bをレジストし、ステップS15において両時刻a,bに基づき選択範囲[a〜b]が設定されると共に、波形表示部20の表示を更新する。このステップS15における表示更新は、例えば、選択範囲[a〜b]に該当する部分を網掛け或いは色替え等により視認しうるように行われるものである。図3の波形表示部20においては、選択範囲28が網掛け表示により示されている。
一般に、サンプリングした波形データのピッチの編集においては、例えば、波形データのアタック部(波形の立ち上がり部)に対しては修正を施す必要であるが、波形の後半部分ではピッチが安定しているため修正が不要である場合等のように、部分的に編集したい場合が多い。このため、この実施例のように、波形表示部20において、編集対象とする範囲を任意に選び、当該範囲に対して後述する修正メニューに応じたピッチ修正を行えるように構成する利便性は大きい。
次に、各修正メニューの動作を説明する。図5は上記各修正メニューに応じた修正カーブの編集の様子を示す図である。(a)は元(編集前)の修正カーブであり、(b)〜(f)は各メニュー毎の編集の様子を示す。なお、図5(b)〜(f)に示す各修正カーブにおいて元の編集カーブを点線で示している。また、図6(a)〜(h)は、前記各種修正カーブ編集を行うための操作に応じて、実行される信号処理手順の概略を示すフローチャートである。
セットボタン「Set」31の操作により修正メニュー「Set」を実行すると、図5(b)に示す通り、選択範囲における修正カーブの値がユーザが指定したsetパラメータに均一化される。setパラメータは、図3においてセットボタン31の近傍に設けられたsetパラメータ入力ボックス41に入力された数値により設定される。該数値入力は、一般的なGUIにおけるそれと同様に、ポインタ等を用いてsetパラメータ入力ボックス41を選択し、操作部5に具わるテンキー等により該ボックス41に所望の数値(セント値)を入力すればよい。setパラメータ入力ボックス41における数値入力操作が行われると、図6(a)のフローチャートに示す通り、該入力された数値がsetパラメータsxに設定されると共に、波形表示部20においてsetパラメータ入力ボックス41の表示値が前記パラメータsxの設定値に基づき更新される(ステップS16)。
また、setパラメータ入力ボックス41の近傍に設けられた「AVR」ボタン51は、選択範囲28における修正カーブ24の平均値をsetパラメータsxに設定せしめることを指示するためのボタンである。「Set」についての「AVR」ボタン51が操作されると、図6(b)のフローチャートに示す通り、現在選択されている選択範囲[a〜b]における修正カーブcurの平均値av{cur(i)}が算出され、該算出した平均値がsetパラメータsxに設定されると共に、波形表示部20においてsetパラメータ入力ボックス41の表示値が前記パラメータsxの設定値に基づき更新される。
なお、上記修正メニューのパラメータ値設定については、他の修正メニュー「Offset」及び「Scale」についても同様である。すなわち、ユーザは、offsetパラメータ入力ボックス42における数値入力、又は、「AVR」ボタン52の操作に応じた選択範囲[a〜b]の平均値の算出により、offsetパラメータoxの値を設定することができる。また、ユーザは、ratioパラメータ入力ボックス43における数値入力により、「Scale」のratioパラメータrxの値を設定し、centerボックス43への数値入力、又は、「AVR」ボタン53の操作に応じた選択範囲[a〜b]の平均値の算出により、「Scale」のcenterパラメータcxの値を設定することができる。
修正メニュー「Set」による修正カーブ24の編集処理の一例について、図6(c)のフローチャートを参照する。セットボタン「Set」31が操作されると、ステップS18において、選択範囲[a〜b]における修正カーブ24に対して、setパラメータsxの設定値を書き込む。すなわち、選択範囲[a〜b]における各時刻iの修正カーブの値cur(i)をsetパラメータsxに書き換える。また、選択範囲[a〜b]の前後において、スムージング(「smoothing」)パラメータswに基づきクロスフェード処理を施す(ステップS19)。前記smoothingパラメータswは、修正メニューに従い編集される選択範囲のカーブと、修正されない選択範囲外(前後)のカーブとの間でスムージング(クロスフェード)処理を施す範囲(スムージング範囲)を設定するパラメータであり、ユーザはピッチ修正ツール15におけるsmoothingパラメータ入力ボック45に所望の数値(msec単位)を入力することで、該smoothingパラメータswを任意に設定できる。
そして、ステップS20において、上記新規に設定されたcur(i)とスムージングパラメータswに基づき、波形表示部20上の修正カーブ24の表示を更新すると共に、修正後カーブ25a,25bの表示を、該編集後の修正カーブ24と修正前カーブ23a,23bに基づき算出されたカーブに更新する。また、前記編集された修正カーブ24に基づき修正前カーブ23a,23bを修正した結果に改める。また、修正カーブ24が編集されたので、エディットフラグEFを「1」にセットする。
なお、図5(b)においては、smoothingパラメータswが、0msecに設定された場合を想定し、クロスフェード処理の様子を示していない。この点は以下に述べる同図(c)〜(e)の各カーブにおいても同様である。これに対して図5(g)は、同図(b)に示すような「Set」により編集した修正カーブをスムージング範囲swでクロスフェード処理した例を示している。同図(g)に示す通り、smoothingパラメータswによるスムージング処理により、設定値swの分だけ選択範囲[a〜b]を外側に拡張し、該拡張部分(スムージング範囲)において、選択範囲[a〜b]内のカーブと、選択範囲外(スムージング範囲の外)の修正カーブとが、適宜重み付けされて滑らかに接続される。なお、同図(g)ではスムージング範囲は、設定値swの分だけ選択範囲[a〜b]を外側に拡張するものとしたが、これに限らず、選択範囲[a〜b]の両端の各内側に設定したり、該範囲の両端の各前後に設定してもよい。また、クロスフェードによりスムージングを行うものとしたが、ローパスフィルタ処理やカーブの傾斜の制限などによりスムージングを行うようにしてもよい。また、このsmoothingパラメータswによるスムージング処理は、以下に述べる他の修正メニューにおいても同様に実行されうる。
オフセットボタン「Offset」32の操作に応じて修正メニュー「Offset」が実行されると、図5(c)に示す通り、選択範囲における修正カーブの値がユーザが指定したoffsetパラメータoxに応じてオフセットされる。なお、offsetパラメータoxの設定については上述の通りである。
修正メニュー「Offset」による修正カーブ24の編集処理の一例について、図6(d)のフローチャートを参照して説明する。オフセットボタン「Offset」32が操作されると、ステップS21において、選択範囲[a〜b]における修正カーブcurに対して、offsetパラメータoxの設定値を足し込む。すなわち、選択範囲[a〜b]における各時刻iの修正カーブの値cur(i)を、演算cur(i)+oxの結果に書き換える。また、選択範囲[a〜b]の前後において、スムージングパラメータswに基づきクロスフェード処理を施す(ステップS22)。そして、ステップS23において、上記新規に設定されたcur(i)とスムージングパラメータswに基づき波形表示部20上の修正カーブ24の表示を更新すると共に、修正後カーブ25a,25bの表示を、該編集後の修正カーブ24と修正前カーブ23a,23bに基づき算出されたカーブに更新する。また、修正カーブ24が編集されたので、エディットフラグEFを「1」にセットする。
スケールボタン「Scale」33の操作に応じて修正メニュー「Scale」が実行されると、図5(d)に示す通り、選択範囲における修正カーブの値がユーザが指定した中心値(centerパラメータcx)を中心にして、スケール制御値(ratioパラメータrx)に基づき当該修正カーブの振幅方向を拡大乃至縮小する。なお、同図(d)では縮小制御された例を示している。また、centerパラメータcxとratioパラメータrxの設定については上述の通りである。ratioパラメータrxの設定値に応じて、「Scale」による修正カーブの編集後に元波形におけるピッチ変化の特性をどのくらい残すかを制御することができる。修正メニュー「Scale」により、編集前の修正カーブ24を振幅方向に拡大乃至縮小したカーブ、すなわち、元波形のピッチ変化に対応する振幅スペクトルの構造自体はある程度残したカーブを得ることができるので、これにより元波形を修正すれば、ピッチ変化の傾向をある程度残したままピッチ修正(ピッチシフト)することができる。従って、この修正メニューによれば、元波形データが持つピッチ変化の傾向、ピッチの細かい揺れ等を保持したピッチ修正を実現できる。
修正メニュー「Scale」による修正カーブ24の編集処理の一例は図6(e)のフローチャートに示す通りである。すなわち、スケールボタン「Scale」33が操作されると、ステップS24において、選択範囲[a〜b]における修正カーブcurを、centerパラメータcxの設定値(セント値)を中心に、ratioパラメータrxの設定値(パーセンテージ)に基づき拡大乃至縮小する。すなわち、選択範囲[a〜b]における各時刻iの修正カーブの値cur(i)を、演算「(cur(i)−cx)*rx+cx」の結果に書き換える。また、選択範囲[a〜b]の前後において、スムージングパラメータswに基づきクロスフェード処理を施す(ステップS25)。そして、ステップS26において、上記新規に設定されたcur(i)とスムージングパラメータswに基づき波形表示部20上の修正カーブ24の表示を変更すると共に、修正後カーブ25a,25bの表示を、該編集後の修正カーブ24と修正前カーブ23a,23bとに基づき算出したカーブに更新する。また、修正カーブ24が編集されたので、エディットフラグEFを「1」にセットする。
また、タイラインボタン「TieLine」34の操作に応じて修正メニュー「TieLine」が実行されると、図5(e)に示す通り、選択範囲の開始点aと終了点bの間が直線で結ばれる。
修正メニュー「TieLine」による修正カーブ24の編集処理の一例について、図6(f)のフローチャートを参照して説明する。タイラインボタン「TieLine」34が操作されると、ステップS27において、選択範囲の開始点aにおける修正カーブcurの値cur(a)を、タイライン始点パラメータaxにセットする(ax←cur(a))と共に、選択範囲の終了点bにおける修正カーブcurの値cur(b)を、タイライン終点パラメータbxにセットする(bx←cur(b))。ステップS28では、選択範囲[a〜b]の修正カーブcurを直線化する。すなわち、選択範囲[a〜b]の各反転値レジスタcur(i)を、演算(bx−ax)*(i−a)/(b−a)+axの結果に書き換える。そして、ステップS29において、上記新規に設定されたcur(i)とスムージングパラメータswに基づき波形表示部20上の修正カーブ24の表示を更新すると共に、修正後カーブ25a,25bの表示を、該編集後の修正カーブ24と修正前カーブ23a,23bに基づき算出されたカーブに更新する。また、修正カーブ24が編集されたので、エディットフラグEFを「1」にセットする。
アベレージボタン「Average」36の操作に応じて修正メニュー「Average」が実行されると、制御値(widthパラメータax)に基づき、修正カーブ全体に対してフィルタ処理(ローパスフィルタ処理)することで修正カーブ全体がスムージングされる。widthパラメータaxは、図3のピッチ修正ツール15においてアベレージボタン「Average」36の近傍に設けられたwidthパラメータ入力ボックス46に入力された数値に応じて設定される。修正メニュー「Average」による修正カーブの編集の様子は図5(f)に示す通りである。widthパラメータaxの設定値に応じて、「Average」による修正カーブの編集後に、元波形におけるピッチ変化の特性をどのくらい残すかを制御することができる。修正カーブをローパスフィルタ処理(スムージング処理)すると、典型的には図5(f)に示す通り、当該カーブの基本波成分のみを抽出した修正カーブを得ることができる。よって、これで元波形を修正すれば、基本波成分のピッチのみを修正(ピッチシフト)することとなる。従って、この修正メニューによれば、元波形データが持つピッチ変化の傾向、ピッチの細かい揺れ等を保持したピッチ修正を実現できる。
修正メニュー「Average」による修正カーブ24の編集処理の一例について、図6(g)のフローチャートを参照して説明する。アベレージボタン「Average」36が操作されると、ステップS30において、波形の全体における各時刻i毎に、当該時刻i付近の平均値av{cur(i)}を算出し、各時刻i毎に算出した平均値av{cur(i)}をbuf(i)にバッファする。該平均値av{cur(i)}は、時刻iを中心としたwidthパラメータax(msec単位)の範囲内[i‐aw/2〜i+aw/2]の平均値である。ステップS31において、波形の全範囲について、当該修正カーブを構成するcur(i)の値を、前記バッファした各平均値buf(i)に書き換える。そして、ステップS26において、上記新規に設定されたcur(i)に基づき波形表示部20上の修正カーブ24の表示を更新すると共に、修正後カーブ25a,25bの表示を、該編集後の修正カーブ24と修正前カーブ23a,23bに基づき算出されたカーブに更新する。また、修正カーブ24が編集されたので、エディットフラグEFを「1」にセットする。
以上説明した「オフセットする」、「拡大乃至縮小する」、「直線で結ぶ」及び「フィルタをかける」といったカーブ編集処理は、本実施例のように、修正カーブの単位を周波数比の対数(セント)としている場合に効果的に行うことができる。
また、リセットカーブボタン「ResetCurve」35の操作に応じて修正メニュー「ResetCurve」が実行されると、修正カーブに対して施された編集がリセットされ、ロードボタン30の操作により元波形データをロードしたときの修正カーブ、すなわち、元波形の修正前カーブ23a,23bに基づく反転カーブを再表示する。
リセットカーブボタン「ResetCurve」35の操作が行われると、図6(h)のフローチャートの処理が起動し、元波形WD全体を対象として元波形の抽出ピッチの各値pit(i)の反転値cur(i)を算出し、抽出ピッチpitを反転した修正カーブcurを作成する(ステップS33)。そして、新規に設定されたcur(i)に基づき波形表示部20上の修正カーブ24の表示を更新することで該修正カーブ24の形状を未編集の状態にリセットすると共に、修正後カーブ25a,25bの表示を、前記リセットされた修正カーブ24と修正前カーブ23a,23bとに基づき算出されたカーブに更新する。また、修正カーブ24が編集されたので、エディットフラグEFを「1」にセットする。なお、以上に説明した図6(h)のステップS33及びS34の処理は、図4(a)のフローのステップS12及びS13の処理と同一である。
オーディション「Audition」ボタン37は、修正カーブ24によりピッチ修正した波形の発音指示するためのボタンである。ストア「Store」ボタン38は修正カーブ24によるピッチ修正後の波形データの保存を指示するボタンである。また、プレイ・オリジナル「PlayOriginal」ボタン39は、元波形を再生するボタンであり、この操作に応じて、ワークメモリ第1領域に記録されている元波形データWDを読み出して、該読み出した元波形データWDに基づく楽音波形が再生される。
図4に戻り、同図(c)のフローチャートを参照して、ピッチ修正した波形の再生処理の手順を説明する。Auditionボタン37が操作されると、ステップS40においてエディットフラッグEFを調べる。修正カーブ24を編集した(乃至新規に読み込んだ)状態では、エディットフラッグEFは1にセットされている(ステップS40のno)。ステップS41において、ワークメモリ第1領域に記録された波形データWDを読み出し、該読み出した波形データWDを修正カーブcurでピッチシフトした波形データWDxを、ワークメモリ第2領域に書き込む。このときに、初めて元波形データWDに対して修正カーブcurに基づくピッチ修正が施されることになる。波形データWDに対して実施されるピッチ修正の内容は、修正カーブcurに施された編集内容(Set、Offset、Scale、TieLine乃至Average)に応じる。
波形データWDxをワークメモリ第2領域に書き込み、修正カーブcurでピッチシフトした波形データWDxの再生準備ができたら、エディットフラグEFを0にセットする(ステップS42)と共に、ワークメモリ第2領域の波形データWDxを音源10(図1参照)に供給して再生する(ステップS43)。これによりユーザは該再生された波形データWDxに基づく楽音波形を試聴することができる。
一方、ステップS40においてエディットフラグEFが0であった場合(ステップS40のyes)、修正カーブcurに基づいてピッチ修正された波形データWDxが既にワークメモリ第2領域に記憶されていることを意味するので、そのままステップS43に進み、ワークメモリ第2領域の波形データWDxを音源10(図1参照)に供給して再生する(ステップS43)。これにより、同じ修正カーブcurに関する2回目以降の発音指示(試聴)では、既にピッチ修正されている波形データWDxを再生するだけでよく、波形演算が不要となり、直ちにピッチ修正後の波形データの発音(試聴)を行える。
前記図4(c)のステップS41における波形データWDのリサンプリング処理構成の一例について、図7のブロック図を参照して説明する。なお、以下に説明するリサンプリング処理は、この実施例ではPCのソフトウェア処理で実現するものとするが、これに限らず、専用のハードウェア(専用の信号処理回路)で構成してもよい。
ワークメモリ第1領域70には、波形メモリ13(図1参照)から読み出されたリサンプリングの対象となる元波形データWDが格納されている。サンプリングクロック発生器71は、任意の周期のサンプリングクロックパルスを発生するものであり、発生されたクロックは読み出し用アドレスカウンタ72と書き込み用アドレスカウンタ73に供給される。すなわち、サンプリングクロック発生器71は、当該リサンプリング処理の信号処理のためのクロックを発生する。読み出し用アドレスカウンタ72と書き込み用アドレスカウンタ73は与えられるクロックのタイミングに従い動作する。
読み出し用アドレスカウンタ72は、Fナンバ変換部74から入力されるFナンバ(詳しくは後述)を、前記サンプリングクロックパルスに従う周期で累算するアドレスカウンタである。読み出し用アドレスカウンタ72は、波形再生開始時(Auditionの実行時)にリセットされ、Fナンバの累算を0から開始する。読み出し用アドレスカウンタ72の出力(累算値)がワークメモリ第1領域70に対する読み出しアドレス信号として出力される。読み出し用アドレスカウンタ72から出力される読み出しアドレス信号は、整数部と小数部とからなる。読み出しアドレスの整数部のデータがワークメモリ第1領域70のアドレス入力に与えられ、該整数部のデータにより読み出すべき波形サンプルデータ(複数)のアドレスが特定される。また、同小数部のデータはサンプル間補間部75に供給される。
また、スケール変換部76は、読み出し用アドレスカウンタ72から出力される読み出しアドレスの整数部を時刻iに変換し、該時刻iを修正カーブメモリ77に供給する。修正カーブメモリ77は、各時刻i毎の修正カーブcurの値cur(i)を記憶しており、供給された時刻iの値cur(i)をFナンバ変換部74に出力する。Fナンバ変換部74は、時刻iにおける修正カーブcurの値cur(i)を、これに対応するFナンバに変換する。タイミングiにおけるFナンバは、下記式(1)で表すことができる。
F=2^(cur(i)/1200)・・・(1)
なお、上記数式における記号「^n」はn乗を示す(nは変数「cur(i)/1200」)。従って、上記式(1)は、「2の(cur(i)/1200)」乗を表している。
この式(1)により、セントスケールにより表現された数値cur(i)を、リニアスケールの表現である周波数比(Fナンバ)に変換する。式(1)により求めたFナンバの累算値が読み出しアドレス信号である。
従って、読み出しアドレス信号の変化レート(Fナンバ)は、各時刻i毎の修正カーブcurの値「cur(i)」に応じて制御される。サンプル間補間部75は、読み出しアドレス信号整数部に応じてワークメモリ第1領域70から読み出された波形データWD(複数サンプル)を小数部に応じてサンプル補間して、補間済み波形データを出力する。補間演算には、例えばラグランジュ補間、直線補間、SINC関数による補間など、周知の適宜の補間演算を適用してよい。書き込み用アドレスカウンタ73からは、前記サンプリングクロックパルスに応じてワークメモリ第2領域78に対する書き込みアドレス信号が出力される。ワークメモリ第2領域78においては、前記書き込みアドレス信号に従って、サンプル間補間部75から出力される補間済み波形データが書き込まれる。これにより、修正カーブcurによりピッチ修正された波形データWDxを得ることができる。ワークメモリ第2領域78上の波形データWDxは後述する保存指示に応じて波形メモリ13に書き込むことができる。
例えば、元波形WDが基準ピッチの+10centの波形データであり、修正カーブが該波形データを−10cent下にピッチシフトさせるカーブである場合、cur(i)=−10centに対応するFナンバは、下記に示す「2の(-10/1200)」乗という計算式により求めることができる。
F=2^(−10/1200)=0.994240・・・
上記式「2の(-10/1200)」乗により求めたFナンバを累算して作成した読み出しアドレスで、当該波形データWDの読み出し及び補間を行うことで、波形データWDを−10cent下にシフトした(基準ピッチ±0cent)の波形データWDxを得ることができる。
ユーザは、Storeボタン38の操作により、修正カーブによりピッチ修正した後の波形データWDxの保存指示を行うことができる。すなわち、Auditionにより再生されたピッチ修正後の波形データWDxがユーザにとって満足できるものであれば、RAM3(ワークメモリ第2領域)上の波形データWDxを波形メモリ13に保存することができる。これにより、任意にピッチ修正した波形データを波形メモリ13上に記録することができ、該ピッチ修正した波形データを波形メモリ音源の素材としてで使えるようになる。なお、Storeボタン38は、修正カーブ24に対して何らかの編集操作が施されると無効状態になり、上記Auditionの実行によりピッチ修正後の波形データWDxが少なくとも1度再生された後に有効状態に戻る。すなわち、エディットフラグEFが「1」であればStoreボタン38は無効であり、同フラグEFが「0」であればStoreボタン38は有効になり、波形データの保存指示を受け付ける状態となる。また、ピッチ修正された波形データWDxを波形メモリ13に保存した後も、ワークメモリ第1記憶領域には元波形データWDが入っているので、当該元波形データWDに対する編集作業を継続することができる。従って、複数通りにピッチ修正された複数の波形データを効率よく保存することができる。
ユーザは、修正カーブの編集を行った後、Auditionボタン37を1乃至複数回操作して、その結果を試聴し、確認する。修正カーブの編集後のAuditionボタン37の最初の操作で、修正カーブに基づく元波形データWDのリサンプリングが行われ、その結果の波形データWDxがワークメモリ第2領域に保存されるので、2回目以降の操作についてはリサンプリングを行う必要がなく、既にワークメモリ第2領域に保存されている波形データWDxが直ちに再生される。プレイ・オリジナルボタン39とAuditionボタン37を交互に操作することにより、元波形データWDとピッチ修正した波形データWDxとの比較試聴を行うことができる。ユーザが試聴結果に満足すれば、ストアボタン38を操作して、ワークメモリ第2領域の波形データWDxを保存することができるし、満足できなければ、再び修正カーブの編集を行うことができる。
以上説明した通り、この実施例に従う波形編集装置によれば、修正メニュー「Scale」により、制御値(ratioパラメータrx)に基づき修正カーブ24を振幅方向に拡大乃至縮小することで、元波形データが持つピッチ変化の傾向、ピッチの細かい揺れ等を或る程度残しつつ、元波形のピッチ変化を修正することができる。また、修正メニュー「Average」により、制御値(widthパラメータwx)に基づきローパスフィルタ処理することで、元波形データが持つピッチ変化の傾向、ピッチの細かい揺れ等を或る程度残しつつ、元波形のピッチ変化を修正することができる。上記の2通り何れの場合も、制御値(「Scale」ではratioパラメータ/「Average」ではwidthパラメータ)に応じて元波形データが持つピッチ変化の傾向をどの程度残すかを制御することができる。従って、元の楽音波形が持つピッチ変化の傾向、ピッチの揺れを残しつつ、つまり、元の楽音波形が持つ音の特徴を残しつつ、ピッチ変化の修正を施すことができるので、ピッチ修正後の楽音波形として自然な、質の良いものを得ることができる。また、そのような高度なピッチ修正作業を、ピッチ修正に特化したピッチ修正ツール(図3)の使用により効率的に行うことができるようになる。
なお、上記実施例においては、修正カーブcurは抽出ピッチpitのマイナス反転カーブとしたが、これに限らず、抽出ピッチ又は基準ピッチに対する修正値(マイナス値)を指定することにより修正カーブcurを作成してもよい。また、上記実施例では、元波形データWDは2chで構成されたステレオ波形データとしたが、この発明に係る波形編集装置で扱いうる波形データはこれに限定されない。また、上記実施例では、この実施例に係る波形編集装置をサンプリング機能を有するサウンドカードを搭載したパーソナルコンピュータ(PC)により構成するものとしたが、これに限らず、専用の信号処理装置で構成してもよい。
また、上記実施例では、修正カーブが編集された後、Auditionボタン37が操作され、試聴が行われるまで、Storeボタン38を無効にしておくようにしていたが、波形データWDxを波形メモリ13に一旦記憶して、音源10が波形メモリ13から該波形データWDxを読み出して再生することにより、試聴を行うことも考えられる。その場合、Storeボタン38を常時有効としておき、Storeボタン38の操作があった場合に、修正カーブcurでピッチ修正された波形データがワークメモリ第2領域に記憶されているかどうか確認し、記憶されていなければ図4(c)のステップS41及びS42の処理を実行することで、何れにせよワークメモリ第2領域に波形データWDxが用意された状態にしておき、それから、該ワークメモリ第2領域に用意した波形データWDxを読み出して、該読み出した波形データWDxを波形メモリ13に保存するようにすればよい。
1 CPU、2 ROM、3 RAM、4 表示器、5 操作部、6 MIDIインターフェース、7 ドライブ、8 書込回路、9 アクセス管理部、10 音源、11 外部記録媒体、12 外部波形入出端子、13 波形メモリ、14サウンドシステム、15 ピッチ修正ツール表示画面(表示手段)、20 波形表示部(表示手段)、21 元波形、22 基音部分、23 修正前カーブ、24 修正カーブ、25、修正後カーブ、26 キー指定ボックス、27 参照パラメータ設定部、30 Loadボタン、31 Setボタン、32 Offsetボタン、33 Scaleボタン、34 TieLineボタン、35 RestCurveボタン、36 Averageボタン、37 Auditionボタン、38 Storeボタン、39 PlayOriginalボタン