JP4692056B2 - 音波形生成装置、及び、音波形の波形生成データのデータ構造 - Google Patents
音波形生成装置、及び、音波形の波形生成データのデータ構造 Download PDFInfo
- Publication number
- JP4692056B2 JP4692056B2 JP2005122380A JP2005122380A JP4692056B2 JP 4692056 B2 JP4692056 B2 JP 4692056B2 JP 2005122380 A JP2005122380 A JP 2005122380A JP 2005122380 A JP2005122380 A JP 2005122380A JP 4692056 B2 JP4692056 B2 JP 4692056B2
- Authority
- JP
- Japan
- Prior art keywords
- waveform
- data
- generation
- read pointer
- section
- 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
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
図10は、従来の電子楽器において楽音波形を生成する一例を示す機能構成図である。
図中、1は演奏コントローラであって、鍵盤、外部のMIDI(Musical Instrument Digital Interface)キーボード、シーケンサ等である。音色を指定するプログラムチェンジ・メッセージ、音高、押鍵速度を指示するノートオン・メッセージなどが、演奏制御部2に送られる。
波形情報データメモリ51に記憶された波形情報データは、波形生成に必要なデータであり、後述する波形データメモリ54に記憶されている波形データの記憶領域の先頭位置のデータ、その波形データ中の、どの位置の波形サンプルデータを読み出すか、といったデータである。
この他、演奏制御部2の側の図示しないメモリには、設定音色に応じて、音量レベル、キータッチ(ベロシティ)の感度、フィルタ特性、ビブラート等のエフェクト、等を制御する波形パラメータ群も記憶されている。
波形生成制御部52は、設定音色に応じて、波形情報データメモリ51から波形情報データを読み出し、上述した波形パラメータ群とともに、波形生成制御データとして音源部5に転送する。また、演奏コントローラ1から送られてきたノートオン・メッセージ,ノートオフ・メッセージに応じた波形生成制御データを転送する。
波形データとしては、通常、異なるものが同時に用いられるが、以下の説明では、1つの波形データが使用されるものとして説明する。
例えば、波形データメモリ54に記憶されている一楽音の楽音波形を生成するための波形データが、アタック部波形とリリース部ループ波形とで構成されるとすると、これに対応して、波形情報データメモリ51には、ループ処理を実行する「ループ終了位置」と「ループ長」とがサンプル単位で記憶されている。
上述した具体例では、演奏制御部2の処理はさほど多くない。しかし、近年、「波形メモリ読み出し方式」は複雑化している。
例えば、一楽音の楽音波形を生成するのに、各部分の部分波形として奏法に応じたものを選択し、かつ、1つの部分波形の先頭部と後尾部に波形接続用のループ波形領域を備え、この領域同士を繰り返し用いながらクロスフェードでつないで遷移させる波形生成装置が知られている(特許文献1参照)。
いずれも、ループ処理やジャンプ処理を実行するサンプル位置の個数が増大するにつれ、読み出しポインタを更新する度に、処理を実行する多数のサンプル位置と比較し、一致したときは次の読み出しポインタを指示するため、演奏制御部2の処理が飛躍的に増大し、機器組込み用の低速のCPUでは、電子楽器全体の処理に支障を来すことになる。
その一方法として、音源部5の側に、上述した特許文献1に記載の、複数種類の単位波形データを記憶しておく方法が考えられる。ただし、特許文献1は、音源回路がなく、CPUがソフトウエア音源を実現するものである。
波形シーケンスWSは、一楽音の立ち上がりから立ち下がりまでの一連の楽音波形を生成するために使用する「単位波形データ」を選択するデータ(例えば、アタック部波形AUW(5))と、選択されたものの読み出しを開始する時間のデータ(例えば、Dt0)とを対にして時系列に従って記録されたものである。
図11(b)のL1Sはスタートアドレス、L1Eはエンドアドレス、L1Pはスタート時の初期位相である。
図11(c)のNLSはノンループ波形のスタートアドレス、L2S(=NLE)はノンループ波形のエンドアドレス(=後尾ループ波形のスタートアドレス)、L2Eは後尾ループ波形のエンドアドレス、L2Pは後尾ループ波形の初期位相である。
図11(d)のL1Sは先頭ループ波形のスタートアドレス、L1E(=NLS)は先頭ループ波形のエンドアドレス(=ノンループ波形のスタートアドレス)、L1Pは先頭ループ波形の初期位相、L2S(=NLE)は後尾ループ波形のスタートアドレス(=ノンループ波形のエンドアドレス)、L2Eは後尾ループ波形のエンドアドレス、L2Pは後尾ループ波形の初期位相である。
図11(e)のL1Sは先頭ループ波形のスタートアドレス、L1E(=NLS)は先頭ループ波形のエンドアドレス(=ノンループ波形のスタートアドレス)、L1Pは先頭ループ波形の初期位相、NLEはノンループ波形のエンドアドレスである。
しかし、依然として複数の単位波形データと、波形シーケンスWSとが別々に記憶されているので、処理の低減には限界がある。
しかし、上述した単位波形データをさらに細分化すれば、先頭部分にある管理データの領域に、多数のループ処理のパラメータを記録しなければならない。そうすると、ループ処理を実行するサンプル位置が増大することから、読み出しポインタを更新する毎にループ処理を実行するサンプル位置になったか否かの判定処理が増大する。
また、合成波形データの多様性が増加するほど、単位波形データの種類を増やす必要がある。
しかし、管理データの領域には、多数のループ処理のパラメータが、各単位波形データ毎に独自に定義されて配列されているので、単位波形データの管理が複雑になるという問題もある。
ヘッダには、直後のデータブロックを用いて波形を生成するのに用いるパラメータ(このブロックの次に読み出すブロックの先頭アドレス、このブロックが繰り返し選択される場合の繰り返し数、繰り返し終了後に読み出す次のブロックの先頭アドレス)が記録されている。その結果、波形合成用データの全体を1つのメモリに記憶して管理することが可能となる。
しかし、特許文献4に記載の波形データは、水平走査周期という、予め定められた固定のデータブロック単位でループ処理やジャンプ処理を行うビデオ信号である。これに対し、楽音波形には固定のデータブロックという単位がない。
加えて、管理データの領域は、その単位波形データ内でループ処理を実行するのに必要なパラメータを含んでいるが、さらに、単位波形データを最小単位として、ジャンプ処理やループ処理をするためのイベント識別データ及びパラメータを含めるようにする。
しかし、ある単位波形データ内のあるサンプル位置から、異なる単位波形データ内の別のサンプル位置にループやジャンプをさせることはできない。そのため、単位波形データが決まれば、読み出しポインタの自由な移動が制約され、多様な合成波形を得られないという問題がある。また、先に述べたように、冗長性を少なくするために単位波形データの中を細分化することは、依然として難しいという問題がある。
また、請求項4に記載の音波形生成プログラムは、コンピュータに、請求項1に記載の音波形生成装置の機能を実現させるものである。
また、請求項5に記載の音波形の波形生成データのデータ構造は、請求項4に記載の音波形生成プログラムを用いて、コンピュータに請求項1に記載の音波形生成装置の機能を実現させるものである。
ある区間の波形生成をしているときは、読み出しポインタの値が、この区間に対する管理データとして記憶された波形位置データの指示する波形位置になったかどうかを判定するだけでよいから、波形処理が簡素化される。
波形生成データ記憶手段に波形生成データを記録する際に、区間を単位として、波形データと管理データの挿入、削除、複写等ができるので、編集が簡素化される。
このように区間を単位として波形データを記憶していても、波形処理の実行位置は区間に制約されることなく、任意に指示される。
また、各区間の管理データは、各区間において実行される複数の波形処理を指示する複数のイベント識別データ、及び、この複数の波形処理の実行位置をそれぞれ指示する複数の波形位置データを有するように構成される場合がある。
この場合、読み出しポインタの値が、この読み出しポインタから識別される区間に対する管理データとして波形生成データ記憶手段に記憶された1つの波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、前記1つの波形位置データに対応したイベント識別データの指示する波形処理を実行するようにし、この波形処理が読み出しポインタの値を指定するものである場合は、読み出しポインタ生成手段に対し、読み出しポインタの値を変更させるようにすればよい。
従って、区間を単位として波形特性制御が簡単に行えるとともに、波形データ、波形処理の実行を管理するデータ、及び、波形特性制御パラメータが一元管理される。
請求項2に記載の発明においては、請求項1に記載の音波形生成装置において、前記読み出しポインタの値を指定する波形処理は、当該読み出しポインタの値が当該波形処理を実行する区間とは異なる区間にある波形サンプルデータを指示する波形処理である場合を含むものである。
請求項3に記載の発明においては、請求項1又は2に記載の音波形生成装置において、前記波形処理実行手段は、前記波形生成を制御する側からフラグを入力するものであり、前記波形処理実行手段は、前記イベント識別データにより条件付きの波形処理が指示されたとき、入力されたフラグの値に応じて、指示された条件付きの波形処理を実行するか否かを決定するものである。
区間を単位としていても、区間に制約されることなく波形処理ができる。
波形生成データに管理データが含まれていても、読み出しポインタの生成に際して、管理データの記録領域を考慮する必要がないという効果がある。
従って、背景技術で述べたように、一楽音の全波形データや単位波形データを、区間分割して細分化することにより冗長性の少ない基本的な波形生成データにし、その反面、ジャンプやループなどの波形処理が複雑になる場合でも、波形処理を波形生成装置の側で容易に実現できるようになる。
波形処理を指示する情報はイベント識別データとして、音波形の波形データとともに波形生成データ記憶手段で一元管理されるので、波形データ及び波形情報データのコンテンツとしての販売、アップグレードに大きな効果がある。さらに、本発明を音源部に適用した場合、波形生成を制御する側の処理が低減されるから、低速のCPUでの実装が可能となる。
この実施の形態では、演奏制御部2内の波形情報データメモリ3は、音色に応じて使用される波形生成データを指示するデータを持つ。
図2(a)は波形データを分割する区間であり、固定サイズ(固定サンプル)である。
図2(b)は元の波形データである。一例として、時系列に従った一連の音波形の波形サンプルデータである。より具体的には、アタック部と、ループ処理される中間波形と、リリース部とで構成される一楽音の波形データである。あるいは、従来の図11(b)〜(e)に示した各単位波形データでもよい。
他の例としては、時系列に従った一連の音波形の波形サンプルデータに、同様な一連の音波形の波形サンプルデータを連結したもの、より具体的には、図11(b)〜(e)に示した各単位波形を図11(a)に示した波形シーケンスに従って連結した一連の波形サンプルデータである。
上述した元の波形データは、固定サイズで区間分割される。
言い換えれば、元の波形データが複数の区間に分割され、分割された各区間の波形データに各区間の管理データを組み合わせたものが1つの「構造体」を構成し、図2(c)に示した波形生成データは、この構造体が時系列の順に接続されている構造体配列になっている。
ここで、各管理データA,B,C,…は、これに対応する各区間A,B,C,…において実行される波形処理を指示するイベント識別データ、及び、このイベント識別データに対応し、この波形処理の実行位置を指示する波形位置データを有する。
「イベント識別データ」は、イベントID[0]〜ID[j]によりコード化されて示される。サンプル位置[0]〜[j]は、この管理データの区間に対応する波形データの区間(直後の波形データ)内に存在する「波形位置」をサンプル単位で指示する。
このサンプル位置[0]〜[j]を指示する方法としては、図2(b)に示した元の波形データの先頭からのサンプル位置であっても、各区間A,B,Cにおける波形データの先頭からのサンプル位置であってもよい。
上述した「波形位置」は、サンプル位置に限らず、メモリのアドレス位置(例えば、8ビット単位のアドレス)、複数の波形サンプルデータ(例えば、ステレオのL,R両チャンネルの波形サンプルデータ)を1単位として指定される位置であってもよい。
波形処理の一具体例は、波形データの読み出しを制御する処理であり、この制御によりメモリに記憶された波形データの利用方法を変更して合成波形の形状を制御する処理である。例えば、次に読み出す波形位置を制御するジャンプ処理やループ処理である。ループ処理はジャンプ処理の一例ということができる。
この場合、上述した波形処理は、一般的には、メモリに記憶された楽音波形データに内在する波形の性質の区切りに応じて、例えば、アタック区間と中間波形区間の区切りの前あるいは後のサンプル位置において実行される。
なお、波形処理の実行によって次に読み出す波形位置は、典型的にはサンプル位置で指定するが、これに限らず、区間位置で指定し、区間単位でジャンプ先を指定したりループ先を指定したりしてもよい。
振動音(連続した繰り返し音)と打撃音(過渡的な音)とは、発音構造が異なるため、振動音はピッチを変更するが、打撃音はピッチを変更したくないという場合がある。人声音で言えば、有声音はピッチを変更するが、無声音はピッチを変更したくないという場合がある。
このような場合に、詳細は後述するが、対応する区間のある波形位置から振動音のサンプルデータになるか、打撃音のサンプルデータになるかに応じて、楽音波形の波形データを読み出す間隔を、固定音高用の間隔にするという波形処理を実行したり、可変音高用の間隔にするという波形処理を実行したりする。
上述したサンプル位置[0]〜[j]のデータサイズ、イベントID[1]〜ID[j]のデータサイズ、パラメータ[00]〜パラメータ[0k],…,パラメータ[j1]〜パラメータ[jk]のデータサイズは、それぞれにおいて予め決められた固定サイズとする。
波形生成制御部4は、「音高加算値」として、固定音高用、可変音高用という2種類のものを、波形生成部6に供給する。波形生成部6は、これらを、図示しない音高加算値レジスタに設定しておく。
波形生成部6は、通常、読み出しポインタ(波形読み出しアドレス)に音高加算値を、所定の固定タイミングで累積加算することにより、次の読み出しポインタ(読み出しアドレス)を決定し、それを繰り返し行いながら波形読み出しを行う。
あるサンプル位置のイベントID=3であった場合、そのパラメータ(レジスタ番号)から、固定音高用、可変音高用のどちらかの音高加算値を選択し、これに応じて読み出しポインタ(波形読み出しアドレス)を進める。
その結果、波形生成部6は、波形生成データに含まれた波形生成イベントに応じて波形処理をすることにより、自律的に、打撃音,振動音に適したピッチで楽音合成をすることができるようになる。
波形生成部6がビブラート用のピッチオシレータを備えている場合、音高加算値は一種類のままで、あるサンプル位置以後の時系列において、波形の性質がビブラートをかけるのが好ましいものになるか否かに応じて、パラメータの値を設定し、ピッチオシレータ値を加算する/しないの制御を行うことができる。
図1(b)は、波形生成部6の機能のうち、本発明に関係するものを示す説明図である。波形生成部6は、読み出しポインタ生成部6a、波形サンプルデータ読み出し部6b、及び、波形処理(波形生成イベント)実行部6cを有する。
読み出しポインタ生成部6aは、波形生成を制御する側からの指示に応じて読み出しポインタMPを生成する。この読み出しポインタMPは、図2(c)に示した波形生成データのうち、波形データを指示する。言い換えれば、図2(b)に示した元の波形データを読み出すのと同じ読み出しポインタである。
(1)読み出しポインタMPの値が更新される毎に、このMPの値から識別される区間に対する管理データとして記憶されたサンプル位置、イベントID、及び、パラメータを読み出して、バッファに一時記憶する。記憶した波形位置データを以後の読み出しポインタMPと比較する。
(2)読み出しポインタMPの値から識別される区間が変更されたときに、識別された区間に対応する管理データとして記憶されたサンプル位置、イベントID、及び、パラメータを読み出して、バッファに一時記憶する。
(3)図2(d)に示したように、ある区間の管理データの領域に複数のサンプル位置[0]〜[j]、対応するイベントID[0]〜ID[j]、パラメータ[00]〜[jk]が記憶されている場合、全ての管理データ(波形生成イベントリスト)を読み出して、バッファに一時記憶しておく必要はなく、波形処理が終了する毎に、1つずつ次のサンプル位置、対応するイベントID、パラメータを読み出せばよい。
(4)上述したいずれの方法においても、イベントID及びパラメータは、読み出しポインタMPの値が、読み出しポインタMPから識別される区間のサンプル位置[0]〜サンプル位置[j]になったときに初めて読み出して、これをバッファに一時記憶してもよい。
以上いずれの方法で管理データを読み出してもよいが、必要になるときまで読み出さなくてもよい。逆に、バッファに先読みしておくことにより、次の波形処理の実行準備をする余裕ができるので、波形処理の遅延を少なくでき、処理の遅い音源チップ、DSPチップであっても実装が可能となる。
図3(a)は、波形生成データの構造体配列の説明図である。メモリ上のデータ構造で表現をしている。説明を簡単にするため、パラメータが付随しない場合を説明する。
波形生成データは、区間データWAVS[MN]の配列で構成される。MNは、区間番号である。この区間データは、管理データEVENTLISTと波形データWDATAとをまとめた構造体である。
まず、波形データWDATAは、波形サンプルデータWDATA[MPI]の64個の配列で構成される。MPIは区間内の波形位置(サンプル位置)である。WDATA[MPI]は、例えば、符号付16bitで表現することができる。
一方、管理データEVENTLISTは、イベントリストEV[EIX]の6個の配列である。EIXはイベント番号である。管理データEVENTLIST(波形生成イベントリスト)は、波形処理を実行する波形位置(サンプル位置)WPと波形処理を指定するイベントIDであるEIDとをまとめた構造体である。WP,EIDは、例えば、符号なし16bitで表現される。
上述した例では、WDATA[MPI],WP,EIDをいずれも同じ16bitサイズとしたが、同じにする必要は全くない。
整数部の上位bitで区間番号MNを示し、下位bitで区間内の波形位置MPIを示す。
図3(c)は、管理データ読み出しポインタの一例を示す説明図である。
その上位bitで区間番号MNを示し、下位bitで管理データ内のイベント番号EIXを示す。
従来であれば、所望の波形データが記録されている領域の先頭からのオフセット位置が波形サンプルデータの記録位置と同じ値になる。しかし、管理データが挿入されると、そのままでは、波形サンプルデータにアクセスできない。
ところが、構造体配列に対する一般的な参照方法を用いて、簡単に波形サンプルデータにアクセスすることができる。C言語的に記述する。
管理データ中の「サンプル位置」へアクセスするには、WAVS[MN].EV[EIX].WPでアクセスし、「イベントID」へアクセスするには、WAVS[MN].EV[EIX].EIDでアクセスする。例えば、読み出しポインタMP=1000の波形サンプルデータが属する区間の管理データの先頭の波形処理を実行する「サンプル位置」とその「イベントID」には、WAVS[15].EV[0].WP、WAVS[15].EV[0].EIDでアクセスする。
以上、C言語的な関数を用いることができる場合を説明したが、単純計算によってもアクセスが可能である。波形サンプルデータへアクセスするには、読み出しポインタMPからMN,MPIを求め、既知の各構成データのサイズを用いて計算すればアクセスできる。管理データへアクセスするには、読み出しポインタMPからMNを求め、所望のEIXを指定すれば、同様にアクセスできる。従って、図1に示した波形生成部6をハードウエアで構成する場合でもアクセスができる。
図4(a)に示す元の波形データは固定サイズで分割される。図4(b)に示す波形生成データは、管理データの領域を可変サイズにし、各区間の波形データA,B,C,…に各区間の管理データA,B,Cをヘッダ(先頭部)として組み合わせたものが、時系列の順に接続されたデータ構造を有している。管理データA,B,Cがトレーラ(後尾部)であってもよい。
管理データの領域に記録されるデータは、図2(d)に示した波形生成イベントのリストと同様であるが、各区間において、実際に存在する波形処理の数やパラメータの数に応じて管理データのサイズを設定し、波形生成データメモリ7の記憶容量を低減することができる。
図5(a)に示す元の波形データは可変サイズで分割される。
図5(b)に示す波形生成データは、各区間の波形データA,B,C,…に各区間の管理データA,B,C(図示の通りでは可変サイズであるが、固定サイズでもよい)をヘッダ(先頭部)として組み合わせたものが、時系列の順に接続されたデータ構造を有している。管理データA,B,Cがトレーラ(後尾部)であってもよい。
この具体例では、図5(a)の元波形データを、元波形データに内在する波形の区切り(例えば、アタック区間と中間波形の区間の区切り)のみで分割することにより、分割数を少なくすることができる。その結果、波形生成データの量を少なくして、波形生成データメモリ7の記憶容量を低減することができる。
ただし、あらかじめ各区間の波形データの領域及び各区間の管理データの領域の可変サイズを知っておく必要がある。そのため、管理データは、次の図6(a)に示すものにする。
図6(a)は、図5に示した波形生成データに含まれる管理データ(波形生成イベントリスト)の一例を示す説明図である。
この管理データは、管理データ自身のサイズを記録する領域と、対応する同じ区間の波形データのサイズを記録する領域を備えている。従って、可変サイズに応じたデータバイトあるいはメモリアドレスを累積加算して行くことによって、各区間の波形データ内の波形サンプルデータの波形位置及び対応する各区間の管理データ内の各波形処理の波形位置、イベントIDの記録位置、パラメータの記録位置を知ることができる。
図4に示した波形生成データに含まれる管理データとしては、管理データ自身のサイズを記録する領域のみを追加すればよい。
図3(a)の波形生成データ中に示された管理データに、波形パラメータ[1]〜[m]が加えられている。区間に応じて、波形パラメータの個数および各波形パラメータの値は任意であり、波形パラメータがなくてもよい。しかし、無意味なデータを埋め込んで管理データのサイズを固定にしておく。
波形パラメータ[1]〜[m]は、各区間の波形サンプルデータに対する共通の波形特性制御パラメータである。読み出しポインタの値から識別される区間に対する管理データとして、波形パラメータ[1]〜[m]が記憶されているときは、これらに応じて、その区間の波形データの波形特性を制御する。
また、通常、波形データの読み出し後にAEG(Amplitude Envelope Generator)により、振幅制御を行う。その際、元波形データ自体に大きな振幅変更があった場合は、波形データを読み出した後に、元波形データ自体の振幅値を求めて振幅を補正する必要があった。このような場合、区間波形全体についての平均的な振幅レベルを波形パラメータとして記録しておくことにより、改めて振幅値を求める必要がないので振幅制御を簡素化することが可能になる。
CPUバス11は、複数のハードウエアブロック間でデータを転送する。14はROM(Read Only Memory)であり、処理プログラムや制御データが記憶されている。13はRAM(Random Access Memory)であり、ROM14から処理プログラムがロードされるとともに、作業領域(ワークエリア)が設けられる。CPU12は、処理プログラムに従って、操作子15の操作イベント検出、表示部17に対する表示制御等の一般的な制御を行うとともに、音源回路22が演奏データに応じて楽音信号を合成するために必要な制御をする。
ROM14に制御プログラムや設定データが記憶されていない場合、これらを後述する外部記憶装置21の、ハード磁気ディスク装置(HDD)等に記憶させてもよい。このハード磁気ディスク装置に、制御プログラムや設定データを、CD-ROMからインストールしたり、サーバ装置(外部機器19)からダウンロードしたりすることができる。
19はパーソナルコンピュータ,電子楽器,サーバ等の外部機器である。20は外部機器19との間で演奏データ,ソングデータ等を転送する通信インタフェースであり、例えば、MIDI(Musical Instrument Digital Interface)ケーブル、RS232C、USB(Universal Serial Bus)、IEEE1394等である。
21は外部記憶装置であり、複数の音色に対応した波形情報データや自動演奏用のソングデータ等が記憶されている。例えば、電源オフでも記憶内容を保持し、読み出し書き込み可能な記憶装置、例えば、フラッシュメモリ及び/又はハード磁気ディスク装置(HDD)である。
22は音源回路であり、楽音合成機能を有した集積回路(音源LSI:Large Scale Integrated Circuit)又はDSP(Digital Signal Processor)である。
波形メモリ(ROM)23を差し替えたり増設したりすることができる。これをフラッシュメモリ(フラッシュROM)にすることにより、外部機器19から波形生成データを転送して書き換えることができる。
上述した波形生成データは、図示しない波形メモリ(RAM)に記憶しておくこともできる。波形生成データを外部記憶装置21に記憶しておき、外部記憶装置21から、CPUバス11を経由して波形メモリ(RAM)に書き込んでおく。音源回路22は、この波形メモリ(RAM)から波形生成データを、CPUバス11を経由しないで波形メモリバスを経由して読み出す。
音源回路22は、図1に示した波形生成部6の機能を実行し、指定された音色に対応して設定されたパラメータに従って、図1に示した波形生成データメモリ7に対応する、波形メモリ(ROM)23及び/又は図示しない波形メモリ(RAM)に記憶された波形生成データを読み出し、読み出された波形データを用いて、音色に応じた波形パラメータ群に従い、音量エンベロープを付加し、フィルタ処理等をして、ノートメッセージに応じた合成波形を生成し、アナログ信号に変換してサウンドシステム24に出力する。
このフローチャートは、複数の波形サンプルをまとめて処理するという「フレーム処理」を行った場合の動作を示し、1フレーム分の波形サンプルデータの読み出し処理が指示されたときに起動される。
説明を簡単にするために、図3に示した各区間の波形データ及び管理データが固定サイズのデータ構造で、パラメータは存在しないものとする。
初期化後に、現在の区間MNの管理データ(EVENTLIST)内で次の波形処理を実行する波形位置(波形サンプルデータの位置)NXMP及びこの波形処理を指示するEID(イベントID)をワークメモリ(RAM)にセットしておく。
図3(a)に示した波形生成データの先頭からフレーム処理を始める場合、NXMP=WAVS[0].EV[0].WP、EID=WAVS[0].EV[0].EIDである。
このフローチャートの1回分の処理において、波形生成データメモリ7から読み出された波形読み出しサンプル数をnとする。1回分の処理が終わるとfn=fn+nが計算される。fn=FNになるまで、このフローチャートが繰り返し実行される。
S31において、次の波形処理を実行するイベント位置(サンプル位置)まで来たか否かを、MP(現在の読み出しポインタ)≧NXMP(次の波形処理を実行するサンプル位置)であるかにより判定する。そうであれば、S35以下に処理を進め波形処理を実行する。そうでなければ、S32〜S34の通常の波形読み出し処理を行う。
読み出した波形サンプルデータをRDATAとすると、RDATA[n++]=波形データ[MP]=WAVS[MN].WDATA[MPI]となる。波形読み出しサンプル数nは代入後に+1アップされる。
S34において、更新された読み出しポインタMPが現在の区間を超えたか否かを、MNN(MPの更新後の区間番号)=MNO(MPの更新前の区間番号)か否かによって判定する。区間が更新された場合は、S45へ処理を進め、更新後の区間の波形生成イベントリストにおける最初の波形生成イベントデータを読み出すために、EIX=0とし、MNNの値をMNO(MP更新前の区間番号)に待避させ、S47の波形生成イベントデータ読み出し処理に進める。一方、S34において、同じ区間であれば、S31の処理に戻り、S31において、MPがNXMPを超えるまでS32〜S34を繰り返す。
EID(イベントID)があれば、S37〜S39において、このEIDにより指示された波形処理が何であるかを判定し、その結果に応じてS40〜S42の波形生成イベント処理に進める。
説明を簡単にするため、1つの区間において、波形生成イベントリストには、波形生成イベント処理を実行する「サンプル位置」の小さいものから順に「サンプル位置」及び「イベントID」が記録されているものとする。
一方、S40〜S42の波形生成イベント処理が、ジャンプ処理やループ処理など、MPの値を指定するものであった場合、S44に処理を進め、S33における区間番号更新と同様に、MNN(MP更新後の区間番号)を更新し、S45に処理を進める。
説明を簡単にするため、1つの区間において、読み出しポインタの変更を伴う波形生成イベント処理によってMPの値が変更されるときは、異なる区間に移動するものとする。かつ、その区間における最初の波形生成イベント処理を実行するサンプル位置よりも前(過去)の位置であることを前提とする。
この前提を設けない場合、波形生成イベント処理によって読み出しポインタMPが更新されたときは、更新後の区間の波形生成イベントリストを参照し、何番目(EIX)を読み出せば、更新されたMPの波形位置よりも後(未来)になるかを識別する必要がある。
以上の1回分の処理が終わると、最後に、波形読み出しサンプル数nを返し、最初に説明したように、fn=fn+nが計算され、fn=FNになるまで、このフローチャートが繰り返し実行される。
図9(a)に示すように、元波形データは通常波形A(0〜99),ループ波形B(100〜149),通常波形C(150〜255)が接続された0〜255サンプルである。説明を簡単にするため、この元波形データの全体が、1回のフレーム処理で実行されるものとする。
図9(b)に示す波形生成データは、元波形データが、固定サイズ64サンプルの4区間の波形データに分割され、固定サイズの波形生成イベントリストが挿入されたものである。
図9(c)に示す管理データは波形生成イベントリストであり、3個の波形生成イベントについて、各処理を実行するサンプル位置WP、処理を特定するEID、1つのパラメータを伴っている。
図9(d)は、これまでに説明していなかったNext Flag(ネクストフラグ)であって、0又は1である。このフラグにより、波形生成制御部4の側から波形生成イベント処理の条件を変更して波形生成を制御することが可能になる。
図9(e)は、波形生成された合成波形である。
EID=1は、「条件付波形ジャンプ処理」を指示する。条件付とは、図9(d)に示したNext Flag=1のときに実行される「ジャンプ処理」である。ジャンプ先の波形位置は、付随するパラメータで指示される。
EID=2は、「ループ処理」を指示する。現在の読み出しポインタMPの位置より、付随するパラメータで指示されるループサイズ分、MPを戻す。
初期設定時に、区間番号MN=0、イベント番号EIX=0のWP=「−」,EID=0が読み出されている。S31〜S34の繰り返しにおいて、読み出しポインタMPは、MDを累積加算されて更新されるので、波形データ(0〜63)が時間進行に従って順次読み出される。
MP=120になると、次の波形生成イベントを実行するサンプル位置となり波形生成イベント処理に進められる。しかし、EID=1は条件付ジャンプ処理であり、現在は、図9(d)に示すNext Flag=0である。従って、ジャンプ処理は実行されることなく、区間番号MN=1,次のイベント番号EIX=1のWP=「−」,EID=0を読み出す。その後、波形データ(120〜127)が読み出される。
MP=150になると、次の波形生成イベントを実行するサンプル位置となり波形生成イベント処理に進められ、EID=2であるので読み出しポインタはループ長(50)分戻されて、MP=150−50=100(ループ波形Bの先頭の波形位置である)に更新される。かつ、区間番号MN=1に更新され、区間番号MN=1の波形生成イベントリストからWP=120,EID=1,パラメータ(ジャンプ先の波形位置)が読み出される。その後、波形データ(100〜119)が読み出される。
再度、MP=120になると、次の波形生成イベントを実行するサンプル位置となるが、EID=1であるから、先の場合と同様に、ジャンプ処理は実行されることなく、区間番号MN=1の波形生成イベントリストから次のEIX=1のWP=「−」,EID=0が読み出される。その後、波形データ(120〜127)が読み出される。
再度MP=150になると、次の波形生成イベントを実行するサンプル位置となり、EID=2であるから、読み出しポインタはループ長(50)分戻されて、MP=150−50=100に更新され、かつ、区間番号MN=1に更新され、区間番号MN=1の管理データのイベント番号EIX=0が指定され、S47において、区間番号MN=1の波形生成イベントリストからWP=120,EID=1,パラメータ(ジャンプ先の波形位置)が読み出される。その後、波形データ(100〜119)が読み出される。
再々度、MP=120になると、次の波形生成イベントを実行するサンプル位置となり、EID=1は条件付ジャンプ処理であったが、今回は、図9(d)に示すNext Flag=1になっている。従って、MP=150(パラメータで指示されるジャンプ先の波形位置)に更新され、かつ、区間番号MNN=2に更新される。
すなわち、S44からS45に処理を進め、イベント番号EIX=0のWP=150,EID=2,パラメータ(ループ長50サンプル)が読み出される。ここで、ジャンプ処理によってMP=150になっており、NXMPとなるWP=150と等しい。しかし、波形生成イベント処理によってMPが更新されたときは、更新されたサンプル位置よりも後の波形生成イベント処理を実行する仕様とする。
従って、イベント番号EIX=EIX+1の計算をし、S47において、EIX=1のWP=「−」,EID=0を読み出す。EID=0のときのWP=「−」は、更新されたサンプル位置よりも後の波形処理として扱う。その後、S30に戻る。S31においてnoである場合はS32に処理を進め、S31〜S34が繰り返され、波形データ(150〜191)が読み出される。
S33において、区間番号MN=3に更新されたとき、S47において、区間番号MN=3の管理データからイベント番号EIX=0のWP=「−」,EID=0が読み出され、S30に戻り、S31においてnoである場合はS32に処理を進め、S31〜S34が繰り返され、波形データ(192〜255)が読み出される。
すなわち、各単位波形データよりも単純な構成の波形データをメモリに記憶しておき、ループ処理、ジャンプ処理等の波形生成イベントを実行することにより、これらの単位波形データを生成する。生成された各単位波形データは、波形シーケンスWSに従って接続される。なお、波形シーケンスWSも音源部5側で記憶しておくこともできる。
その結果、複数の単位波形データを用いて合成波形を生成する利点を有するとともに、より単純化されて冗長度の小さいデータ構造の波形データを元波形データとして、少ないメモリ容量で、かつ多様な単位波形データを合成することができる。また、複数種類の単位波形データを共通の、又は、より少ない種類の波形データに基づいて合成することも可能となる。
しかし、本発明は、楽音波形に限らず、人間の発する声(人声音)や動物の声、その他、自然界で発生する音、人工的な音等の波形を含んだ概念としての音波形を生成する音波形生成装置、音波形生成プログラム、及び、音波形生成データのデータ構造に適用できる。
楽音波形以外の音波形は、電子楽器においては効果音として用いられるが、電子楽器の用途に限定されるものではない。一般に、波形メモリを用いて音波形を生成する装置において、多様な音波形を生成するのに適している。
Claims (5)
- 時系列に従った一連の音波形の波形データが複数の区間に分割され、分割された各区間の複数の波形サンプルデータに該各区間の管理データを組み合わせたデータ構造をとり、該管理データは、前記各区間において実行される波形処理を指示するイベント識別データ及び該波形処理の実行位置をサンプル単位で指示する波形位置データを有するように構成された、波形生成データを記憶している波形生成データ記憶手段と、
波形生成を制御する側からの指示に応じて、前記波形サンプルデータの読み出しを指示する読み出しポインタを生成する読み出しポインタ生成手段と、
該読み出しポインタ生成手段により生成された読み出しポインタを用いて、前記波形生成データ記憶手段から、前記分割された各区間の波形サンプルデータを読み出す波形データ読み出し手段と、
前記読み出しポインタ生成手段により生成された読み出しポインタの値が、該読み出しポインタから識別される区間に対する管理データとして前記波形生成データ記憶手段に記憶された波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、当該波形位置データに対応したイベント識別データの指示する波形処理を実行し、前記イベント識別データの指示する波形処理が前記読み出しポインタの値を指定する波形処理である場合、前記読み出しポインタ生成手段に対し、前記読み出しポインタの値を、指定された値に変更させる波形処理実行手段、
を有することを特徴とする音波形生成装置。 - 前記読み出しポインタの値を指定する波形処理は、当該読み出しポインタの値が当該波形処理を実行する区間とは異なる区間にある波形サンプルデータを指示する波形処理である場合を含む、
ことを特徴とする請求項1に記載の音波形生成装置。 - 前記波形処理実行手段は、前記波形生成を制御する側からフラグを入力するものであり、
前記波形処理実行手段は、前記イベント識別データにより条件付きの波形処理が指示されたとき、入力されたフラグの値に応じて、指示された条件付きの波形処理を実行するか否かを決定する、
ことを特徴とする請求項1又は2に記載の音波形生成装置。 - 時系列に従った一連の音波形の波形データが複数の区間に分割され、分割された各区間の複数の波形サンプルデータに該各区間の管理データを組み合わせたデータ構造をとり、該管理データは、前記各区間において実行される波形処理を指示するイベント識別データ及び該波形処理の実行位置をサンプル単位で指示する波形位置データを有するように構成された、波形生成データを記憶している波形生成データ記憶手段を用いて、
波形生成を制御する側からの指示に応じて、前記波形サンプルデータの読み出しを指示する読み出しポインタを生成する読み出しポインタ生成ステップと、
該読み出しポインタ生成ステップにより生成された読み出しポインタを用いて、前記波形生成データ記憶手段から、前記分割された各区間の波形サンプルデータを読み出す波形データ読み出しステップと、
前記読み出しポインタ生成ステップにより生成された読み出しポインタの値が、該読み出しポインタから識別される区間に対する管理データとして前記波形生成データ記憶手段に記憶された波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、当該波形位置データに対応したイベント識別データの指示する波形処理を実行し、前記イベント識別データの指示する波形処理が前記読み出しポインタの値を指定する波形処理である場合、前記読み出しポインタ生成ステップに対し、前記読み出しポインタの値を、指定された値に変更させる波形処理実行ステップ、
をコンピュータに実行させることを特徴とする音波形生成プログラム。 - 波形生成データ記憶装置に記憶されており、波形を生成するためにコンピュータにより読み出されて使用される波形生成データのデータ構造であって、
前記波形生成データは、時系列に従った一連の音波形の波形データが複数の区間に分割され、分割された各区間の複数の波形サンプルデータに該各区間の管理データを組み合わされ、該管理データは、前記各区間において実行される波形処理を指示するイベント識別データ及び該波形処理の実行位置をサンプル単位で指示する波形位置データを有するように構成されたものであり、
前記波形生成データは、前記波形生成データ記憶装置を用いて、
波形生成を制御する側からの指示に応じて、前記波形サンプルデータの読み出しを指示する読み出しポインタを生成する読み出しポインタ生成ステップと、
該読み出しポインタ生成ステップにより生成された読み出しポインタを用いて、前記波形生成データ記憶手段から、前記分割された各区間の波形サンプルデータを読み出す波形データ読み出しステップと、
前記読み出しポインタ生成ステップにより生成された読み出しポインタの値が、該読み出しポインタから識別される区間に対する管理データとして前記波形生成データ記憶手段に記憶された波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、当該波形位置データに対応したイベント識別データの指示する波形処理を実行し、前記イベント識別データの指示する波形処理が前記読み出しポインタの値を指定する波形処理である場合、前記読み出しポインタ生成手段に対し、前記読み出しポインタの値を、指定された値に変更させる波形処理実行ステップ、
を実行する前記コンピュータにより使用されることを特徴とする音波形の波形生成データのデータ構造。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005122380A JP4692056B2 (ja) | 2005-04-20 | 2005-04-20 | 音波形生成装置、及び、音波形の波形生成データのデータ構造 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005122380A JP4692056B2 (ja) | 2005-04-20 | 2005-04-20 | 音波形生成装置、及び、音波形の波形生成データのデータ構造 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006301267A JP2006301267A (ja) | 2006-11-02 |
JP4692056B2 true JP4692056B2 (ja) | 2011-06-01 |
Family
ID=37469632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005122380A Expired - Fee Related JP4692056B2 (ja) | 2005-04-20 | 2005-04-20 | 音波形生成装置、及び、音波形の波形生成データのデータ構造 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4692056B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7687703B2 (en) * | 2007-03-22 | 2010-03-30 | Qualcomm Incorporated | Method and device for generating triangular waves |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000056773A (ja) * | 1998-08-07 | 2000-02-25 | Yamaha Corp | 波形形成装置及び方法 |
JP2000066680A (ja) * | 1998-08-20 | 2000-03-03 | Roland Corp | 波形再生装置 |
JP2004005175A (ja) * | 2002-05-31 | 2004-01-08 | Leader Electronics Corp | 波形合成用データのためのデータ構造および波形合成の方法および装置 |
-
2005
- 2005-04-20 JP JP2005122380A patent/JP4692056B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000056773A (ja) * | 1998-08-07 | 2000-02-25 | Yamaha Corp | 波形形成装置及び方法 |
JP2000066680A (ja) * | 1998-08-20 | 2000-03-03 | Roland Corp | 波形再生装置 |
JP2004005175A (ja) * | 2002-05-31 | 2004-01-08 | Leader Electronics Corp | 波形合成用データのためのデータ構造および波形合成の方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2006301267A (ja) | 2006-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6191459B2 (ja) | オーディオ波形データを使用する自動演奏技術 | |
JP3654079B2 (ja) | 波形生成方法及び装置 | |
JP2007183442A (ja) | 楽音合成装置及びプログラム | |
JP2007316269A (ja) | 楽音合成装置及びプログラム | |
JP4692056B2 (ja) | 音波形生成装置、及び、音波形の波形生成データのデータ構造 | |
JP3221314B2 (ja) | 楽音合成装置及び方法 | |
JP3654084B2 (ja) | 波形生成方法及び装置 | |
JP3630107B2 (ja) | 音データ転送方法、音データ転送装置およびプログラム | |
JP4315116B2 (ja) | 電子音楽装置 | |
JP4238807B2 (ja) | 音源用波形データの決定装置 | |
JP4254677B2 (ja) | 楽音発生装置および楽音発生処理のプログラム | |
JP5691214B2 (ja) | 楽音生成装置及びプログラム | |
JP4172366B2 (ja) | 自動演奏装置、自動演奏プログラム、自動演奏データ及びそのデータを記録した記録媒体 | |
JP3758267B2 (ja) | 音源回路設定方法、該方法によって設定される音源回路を備えたカラオケ装置、および記録媒体 | |
JPH09134177A (ja) | 電子楽器用音源装置 | |
JP3757664B2 (ja) | 演奏情報再生装置および演奏情報再生プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP3407563B2 (ja) | 自動演奏装置及び自動演奏方法 | |
JP3778036B2 (ja) | 波形生成装置及び方法 | |
JPH10124051A (ja) | 曲データ加工方法、加工後曲データ再生方法および記憶媒体 | |
JP3767418B2 (ja) | 自動演奏装置及び自動演奏制御プログラム | |
JP2715833B2 (ja) | 楽音発生装置 | |
JP4048639B2 (ja) | 音源装置 | |
JP3933161B2 (ja) | 波形生成方法及び装置 | |
JPH1031486A (ja) | 演奏データ記憶再生方法および装置 | |
JP3933162B2 (ja) | 波形生成方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090522 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100323 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100521 |
|
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: 20110125 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110207 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140304 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4692056 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |