JP4692056B2 - 音波形生成装置、及び、音波形の波形生成データのデータ構造 - Google Patents

音波形生成装置、及び、音波形の波形生成データのデータ構造 Download PDF

Info

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
Application number
JP2005122380A
Other languages
English (en)
Other versions
JP2006301267A (ja
Inventor
高康 近藤
多伸 近藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2005122380A priority Critical patent/JP4692056B2/ja
Publication of JP2006301267A publication Critical patent/JP2006301267A/ja
Application granted granted Critical
Publication of JP4692056B2 publication Critical patent/JP4692056B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、「波形メモリ読み出し方式」による音波形生成装置に関するものである。
いわゆる「波形メモリ読み出し方式」を用いた電子楽器の音源においては、楽音波形を、PCM(パルス符号変調)、DPCM(差分PCM)、又は、ADPCM(適応差分PCM)等でディジタル化して得られたサンプルデータをメモリに記憶しておく。このサンプルデータを、音高に応じて読み出すことにより楽音波形を生成する。
図10は、従来の電子楽器において楽音波形を生成する一例を示す機能構成図である。
図中、1は演奏コントローラであって、鍵盤、外部のMIDI(Musical Instrument Digital Interface)キーボード、シーケンサ等である。音色を指定するプログラムチェンジ・メッセージ、音高、押鍵速度を指示するノートオン・メッセージなどが、演奏制御部2に送られる。
演奏制御部2は、CPU(Central Processing Unit)側の機能であり、波形情報データメモリ51、波形生成制御部52を備える。
波形情報データメモリ51に記憶された波形情報データは、波形生成に必要なデータであり、後述する波形データメモリ54に記憶されている波形データの記憶領域の先頭位置のデータ、その波形データ中の、どの位置の波形サンプルデータを読み出すか、といったデータである。
この他、演奏制御部2の側の図示しないメモリには、設定音色に応じて、音量レベル、キータッチ(ベロシティ)の感度、フィルタ特性、ビブラート等のエフェクト、等を制御する波形パラメータ群も記憶されている。
波形生成制御部52は、設定音色に応じて、波形情報データメモリ51から波形情報データを読み出し、上述した波形パラメータ群とともに、波形生成制御データとして音源部5に転送する。また、演奏コントローラ1から送られてきたノートオン・メッセージ,ノートオフ・メッセージに応じた波形生成制御データを転送する。
波形データとしては、通常、異なるものが同時に用いられるが、以下の説明では、1つの波形データが使用されるものとして説明する。
5は音源部であって、ディジタル論理回路又はDSP(Digital Signal Processor)で構成され、ICチップ化されている。波形データメモリ54は、楽音波形をサンプリングして得られたサンプルデータを記憶するROM又はRAMであり、ICチップに対して外付けの場合もある。波形生成部53は、波形生成制御データの指示に従って、波形データメモリ54に記憶されたサンプルデータを読み出し、合成波形を出力する。
例えば、波形データメモリ54に記憶されている一楽音の楽音波形を生成するための波形データが、アタック部波形とリリース部ループ波形とで構成されるとすると、これに対応して、波形情報データメモリ51には、ループ処理を実行する「ループ終了位置」と「ループ長」とがサンプル単位で記憶されている。
波形生成制御部52は、図示しないCPUバスを介して、波形生成部53が読み出しているサンプル位置を監視しており、読み出し毎に、「ループ終了位置」との比較をし、現在のサンプル位置が「ループ終了位置」であれば、波形生成部53に対し、「ループ長」に応じた次のサンプル位置を指示することにより、波形データ読み出し処理を制御する。
上述した具体例では、演奏制御部2の処理はさほど多くない。しかし、近年、「波形メモリ読み出し方式」は複雑化している。
例えば、一楽音の楽音波形を生成するのに、各部分の部分波形として奏法に応じたものを選択し、かつ、1つの部分波形の先頭部と後尾部に波形接続用のループ波形領域を備え、この領域同士を繰り返し用いながらクロスフェードでつないで遷移させる波形生成装置が知られている(特許文献1参照)。
また、波形データメモリ54の読み出しポインタは、音高(ピッチ)に応じて更新される。この楽音波形の「ピッチ変更処理」に伴い、読み出しポインタを、同一位相の異なるサンプル位置にジャンプさせて、サンプル位置を進めたり戻したりすることにより、波形データの再生期間を伸縮する「波形データの時間軸伸縮制御」が、上述した特許文献1の他、特許文献2,3等で知られている。
いずれも、ループ処理やジャンプ処理を実行するサンプル位置の個数が増大するにつれ、読み出しポインタを更新する度に、処理を実行する多数のサンプル位置と比較し、一致したときは次の読み出しポインタを指示するため、演奏制御部2の処理が飛躍的に増大し、機器組込み用の低速のCPUでは、電子楽器全体の処理に支障を来すことになる。
このように、単に波形データを記録しておくだけでは、波形生成が困難になっている。そのため、複雑な波形生成の要求にこたえる新たなデータ構造が必要とされている。
その一方法として、音源部5の側に、上述した特許文献1に記載の、複数種類の単位波形データを記憶しておく方法が考えられる。ただし、特許文献1は、音源回路がなく、CPUがソフトウエア音源を実現するものである。
図11は、従来の波形シーケンス及び単位波形データを説明するためのデータ構造図である。図11(a)は、波形情報データメモリ51に記憶する波形シーケンスWSである。図11(b)〜図11(e)は、波形データメモリ54に記憶する波形データである。
波形シーケンスWSは、一楽音の立ち上がりから立ち下がりまでの一連の楽音波形を生成するために使用する「単位波形データ」を選択するデータ(例えば、アタック部波形AUW(5))と、選択されたものの読み出しを開始する時間のデータ(例えば、Dt0)とを対にして時系列に従って記録されたものである。
「単位波形データ」は、先頭部分に管理データの領域を有し、その後に、波形データが記録されている領域がある。TYPEは単位波形データの種類を示すデータであり、IDは各種類別に多数用意された単位波形データを識別するためのIDである。
図1(b)のL1Sはスタートアドレス、L1Eはエンドアドレス、L1Pはスタート時の初期位相である。
図1(c)のNLSはノンループ波形のスタートアドレス、L2S(=NLE)はノンループ波形のエンドアドレス(=後尾ループ波形のスタートアドレス)、L2Eは後尾ループ波形のエンドアドレス、L2Pは後尾ループ波形の初期位相である。
図1(d)のL1Sは先頭ループ波形のスタートアドレス、L1E(=NLS)は先頭ループ波形のエンドアドレス(=ノンループ波形のスタートアドレス)、L1Pは先頭ループ波形の初期位相、L2S(=NLE)は後尾ループ波形のスタートアドレス(=ノンループ波形のエンドアドレス)、L2Eは後尾ループ波形のエンドアドレス、L2Pは後尾ループ波形の初期位相である。
図1(e)のL1Sは先頭ループ波形のスタートアドレス、L1E(=NLS)は先頭ループ波形のエンドアドレス(=ノンループ波形のスタートアドレス)、L1Pは先頭ループ波形の初期位相、NLEはノンループ波形のエンドアドレスである。
波形情報データとして、図1(a)に示した波形シーケンスWSを用いれば、波形生成制御部52の処理が低減され、データ転送量も低減される。
しかし、依然として複数の単位波形データと、波形シーケンスWSとが別々に記憶されているので、処理の低減には限界がある。
また、各単位波形データの楽音波形を子細に分析すれば、波形データに冗長性があることがわかる。その結果、ループ波形部分を、ループ波形の繰り返しとノンループ波形とすることができ、ノンループ波形部分も、ループ波形の繰り返しとノンループ波形とすることができる余地がある。
しかし、上述した単位波形データをさらに細分化すれば、先頭部分にある管理データの領域に、多数のループ処理のパラメータを記録しなければならない。そうすると、ループ処理を実行するサンプル位置が増大することから、読み出しポインタを更新する毎にループ処理を実行するサンプル位置になったか否かの判定処理が増大する。
また、合成波形データの多様性が増加するほど、単位波形データの種類を増やす必要がある。
しかし、管理データの領域には、多数のループ処理のパラメータが、各単位波形データ毎に独自に定義されて配列されているので、単位波形データの管理が複雑になるという問題もある。
一方、メモリに記憶された波形データを用いて波形を生成する技術において、波形データブロックの読み出しを指示するデータを、各ブロックのヘッダ部に記録したものが、特許文献4で知られている。種々の同期信号を含む試験用ビデオ信号は、1水平信号ブロック(1H)毎にヘッダとデータブロックが記憶されている。各ブロックにおいて、まずヘッダが読み出された後にデータブロックが読み出される。
ヘッダには、直後のデータブロックを用いて波形を生成するのに用いるパラメータ(このブロックの次に読み出すブロックの先頭アドレス、このブロックが繰り返し選択される場合の繰り返し数、繰り返し終了後に読み出す次のブロックの先頭アドレス)が記録されている。その結果、波形合成用データの全体を1つのメモリに記憶して管理することが可能となる。
しかし、特許文献4に記載の波形データは、水平走査周期という、予め定められた固定のデータブロック単位でループ処理やジャンプ処理を行うビデオ信号である。これに対し、楽音波形には固定のデータブロックという単位がない。
そこで、特許文献4に記載の技術を前提に、特許文献1に記載の上述した単位波形データを用いる楽音生成においても、複数の単位波形データを波形シーケンスに従って接続したものを1つのメモリに記憶しておく方法が考えられる。
加えて、管理データの領域は、その単位波形データ内でループ処理を実行するのに必要なパラメータを含んでいるが、さらに、単位波形データを最小単位として、ジャンプ処理やループ処理をするためのイベント識別データ及びパラメータを含めるようにする。
しかし、ある単位波形データ内のあるサンプル位置から、異なる単位波形データ内の別のサンプル位置にループやジャンプをさせることはできない。そのため、単位波形データが決まれば、読み出しポインタの自由な移動が制約され、多様な合成波形を得られないという問題がある。また、先に述べたように、冗長性を少なくするために単位波形データの中を細分化することは、依然として難しいという問題がある。
以上の通り、特許文献1に記載の楽音波形生成装置は、奏法に応じて多様な合成波形データを実現できるものであるが、一楽音の全波形データや一楽音の単位波形データを、波形生成部53が容易に処理できるようなデータ構造までは検討されていない。特許文献4に記載の他分野の波形生成技術をそのまま適用しても問題を解決することができない。
特開2000−56773号公報 特開2000−122666号公報 特開2003−84770号公報 特開2004−5175号公報
本発明は、上述した問題点を解決するためになされたもので、音波形の波形データを用いて合成音波形を生成するものにおいて、波形データと波形処理の一元管理、及び、読み出された波形データの波形処理を簡素化する音波形生成装置、音波形生成プログラム、及び、音波形の波形生成データのデータ構造、を提供することを目的とするものである。
本発明は、請求項1に記載の発明においては、音波形生成装置において、時系列に従った一連の音波形の波形データが複数の区間に分割され、分割された各区間の複数の波形サンプルデータに該各区間の管理データを組み合わせたデータ構造をとり、該管理データは、前記各区間において実行される波形処理を指示するイベント識別データ及び該波形処理の実行位置をサンプル単位で指示する波形位置データを有するように構成された、波形生成データを記憶している波形生成データ記憶手段と、波形生成を制御する側からの指示に応じて、前記波形サンプルデータの読み出しを指示する読み出しポインタを生成する読み出しポインタ生成手段と、該読み出しポインタ生成手段により生成された読み出しポインタを用いて、前記波形生成データ記憶手段から、前記分割された各区間の波形サンプルデータを読み出す波形データ読み出し手段と、前記読み出しポインタ生成手段により生成された読み出しポインタの値が、該読み出しポインタから識別される区間に対する管理データとして前記波形生成データ記憶手段に記憶された波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、当該波形位置データに対応したイベント識別データの指示する波形処理を実行し、前記イベント識別データの指示する波形処理が前記読み出しポインタの値を指定する波形処理である場合、前記読み出しポインタ生成手段に対し、前記読み出しポインタの値を、指定された値に変更させる波形処理実行手段を有するものである。
また、請求項に記載の音波形生成プログラムは、コンピュータに、請求項1に記載の音波形生成装置の機能を実現させるものである。
また、請求項に記載の音波形の波形生成データのデータ構造は、請求項に記載の音波形生成プログラムを用いて、コンピュータに請求項1に記載の音波形生成装置の機能を実現させるものである。
従って、各区間の波形データにその区間の管理データを組み合わせたデータ構造をとる波形生成データを記憶し、この管理データとして、各区間において実行される波形処理を指示するイベント識別データ及びこの波形処理の実行位置を指示する波形位置データを有するから、波形データと波形処理の実行を管理する管理データが区間毎に一元管理されたデータ構造である。
ある区間の波形生成をしているときは、読み出しポインタの値が、この区間に対する管理データとして記憶された波形位置データの指示する波形位置になったかどうかを判定するだけでよいから、波形処理が簡素化される。
波形生成データ記憶手段に波形生成データを記録する際に、区間を単位として、波形データと管理データの挿入、削除、複写等ができるので、編集が簡素化される。
このように区間を単位として波形データを記憶していても、波形処理の実行位置は区間に制約されることなく、任意に指示される。
上述した波形処理実行手段が実行する波形処理には、ジャンプ処理やループ処理のように読み出しポインタの値を指定するものである場合と、読み出しポインタの値を指定しない場合がある。実行する波形処理が読み出しポインタの値を指定するものである場合、波形処理実行手段は、上述した読み出しポインタ生成手段に対し、読み出しポインタの値を変更させる。読み出しポインタ生成手段は、波形処理実行手段による読み出しポインタの値の変更がなければ、波形のピッチ情報など、波形生成を制御する側からの指示に応じた通常の読み出しポインタの生成処理を継続する。
また、各区間の管理データは、各区間において実行される複数の波形処理を指示する複数のイベント識別データ、及び、この複数の波形処理の実行位置をそれぞれ指示する複数の波形位置データを有するように構成される場合がある。
この場合、読み出しポインタの値が、この読み出しポインタから識別される区間に対する管理データとして波形生成データ記憶手段に記憶された1つの波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、前記1つの波形位置データに対応したイベント識別データの指示する波形処理を実行するようにし、この波形処理が読み出しポインタの値を指定するものである場合は、読み出しポインタ生成手段に対し、読み出しポインタの値を変更させるようにすればよい。
また、上述した請求項1に記載の発明において、管理データは、前記波形生成データの各区間の波形データに共通の波形特性制御パラメータを有してもよいように構成され、読み出しポインタ生成手段により生成された読み出しポインタの値から識別される区間に対する管理データとして、波形生成データ記憶手段に波形特性制御パラメータが記憶されているときは、この波形特性制御パラメータに応じて、当該区間の波形データの波形特性を制御する波形特性制御手段を有するものとすることができる。
従って、区間を単位として波形特性制御が簡単に行えるとともに、波形データ、波形処理の実行を管理するデータ、及び、波形特性制御パラメータが一元管理される。
請求項2に記載の発明においては、請求項1に記載の音波形生成装置において、前記読み出しポインタの値を指定する波形処理は、当該読み出しポインタの値が当該波形処理を実行する区間とは異なる区間にある波形サンプルデータを指示する波形処理である場合を含むものである。
請求項3に記載の発明においては、請求項1又は2に記載の音波形生成装置において、前記波形処理実行手段は、前記波形生成を制御する側からフラグを入力するものであり、前記波形処理実行手段は、前記イベント識別データにより条件付きの波形処理が指示されたとき、入力されたフラグの値に応じて、指示された条件付きの波形処理を実行するか否かを決定するものである。
波形データと波形処理の実行を管理する管理データが区間毎に組み合わせたデータ構造であることから、波形処理が簡素化されるという効果がある。波形生成データを記録する際にも、編集が簡素化されるという効果がある。
区間を単位としていても、区間に制約されることなく波形処理ができる。
波形生成データに管理データが含まれていても、読み出しポインタの生成に際して、管理データの記録領域を考慮する必要がないという効果がある。
従って、背景技術で述べたように、一楽音の全波形データや単位波形データを、区間分割して細分化することにより冗長性の少ない基本的な波形生成データにし、その反面、ジャンプやループなどの波形処理が複雑になる場合でも、波形処理を波形生成装置の側で容易に実現できるようになる。
波形処理を指示する情報はイベント識別データとして、音波形の波形データとともに波形生成データ記憶手段で一元管理されるので、波形データ及び波形情報データのコンテンツとしての販売、アップグレードに大きな効果がある。さらに、本発明を音源部に適用した場合、波形生成を制御する側の処理が低減されるから、低速のCPUでの実装が可能となる。
図1は、本発明の音波形生成装置の実施の一形態を説明するための機能構成図である。図1(a)は全体構成図、図1(b)は音源部5の内部構成図である。従来の電子楽器を示す図10と同様な部分には同じ符号を付している。
この実施の形態では、演奏制御部2内の波形情報データメモリ3は、音色に応じて使用される波形生成データを指示するデータを持つ。
図2は、図1の波形生成データメモリ7に記憶された波形生成データの第1の具体例を示すデータ構造図である。
図2(a)は波形データを分割する区間であり、固定サイズ(固定サンプル)である。
図2(b)は元の波形データである。一例として、時系列に従った一連の音波形の波形サンプルデータである。より具体的には、アタック部と、ループ処理される中間波形と、リリース部とで構成される一楽音の波形データである。あるいは、従来の図11(b)〜(e)に示した各単位波形データでもよい。
他の例としては、時系列に従った一連の音波形の波形サンプルデータに、同様な一連の音波形の波形サンプルデータを連結したもの、より具体的には、図11(b)〜(e)に示した各単位波形を図11(a)に示した波形シーケンスに従って連結した一連の波形サンプルデータである。
上述した元の波形データは、固定サイズで区間分割される。
図2(c)に示す波形生成データは、図2(b)に示す元の波形データが、固定サイズで複数の区間A,区間B,区間C,…に分割され、かつ、固定サイズの管理データA,B,Cがヘッダ(先頭部)として、分割された各区間の波形データA,B,Cの間に挿入されたデータ構造を有している。管理データがトレーラ(後尾部)として、分割された各区間の波形データの間に挿入されたデータ構造でもよい。
言い換えれば、元の波形データが複数の区間に分割され、分割された各区間の波形データに各区間の管理データを組み合わせたものが1つの「構造体」を構成し、図2(c)に示した波形生成データは、この構造体が時系列の順に接続されている構造体配列になっている。
ここで、各管理データA,B,C,…は、これに対応する各区間A,B,C,…において実行される波形処理を指示するイベント識別データ、及び、このイベント識別データに対応し、この波形処理の実行位置を指示する波形位置データを有する。
図2(d)に示す波形生成イベントリストは、管理データの第1例である。ループ処理,ジャンプ処理等の複数の波形処理を指示する波形生成イベントデータが1又は複数並べられた波形生成イベントリスト(表)形式で記録されている。
「イベント識別データ」は、イベントID[0]〜ID[j]によりコード化されて示される。サンプル位置[0]〜[j]は、この管理データの区間に対応する波形データの区間(直後の波形データ)内に存在する「波形位置」をサンプル単位で指示する。
このサンプル位置[0]〜[j]を指示する方法としては、図2(b)に示した元の波形データの先頭からのサンプル位置であっても、各区間A,B,Cにおける波形データの先頭からのサンプル位置であってもよい。
上述した「波形位置」は、サンプル位置に限らず、メモリのアドレス位置(例えば、8ビット単位のアドレス)、複数の波形サンプルデータ(例えば、ステレオのL,R両チャンネルの波形サンプルデータ)を1単位として指定される位置であってもよい。
上述した「イベント識別データ」は、対応する波形データの区間において、「サンプル位置」で指定された「波形位置」で実行する波形処理を、コード化されたIDによって波形生成部6に指示する一種の命令である。
波形処理の一具体例は、波形データの読み出しを制御する処理であり、この制御によりメモリに記憶された波形データの利用方法を変更して合成波形の形状を制御する処理である。例えば、次に読み出す波形位置を制御するジャンプ処理やループ処理である。ループ処理はジャンプ処理の一例ということができる。
この場合、上述した波形処理は、一般的には、メモリに記憶された楽音波形データに内在する波形の性質の区切りに応じて、例えば、アタック区間と中間波形区間の区切りの前あるいは後のサンプル位置において実行される。
なお、波形処理の実行によって次に読み出す波形位置は、典型的にはサンプル位置で指定するが、これに限らず、区間位置で指定し、区間単位でジャンプ先を指定したりループ先を指定したりしてもよい。
また、波形処理の他の具体例として、楽音波形の波形データを読み出す間隔を、メモリに記憶された波形データの性質に応じて制御することもできる。
振動音(連続した繰り返し音)と打撃音(過渡的な音)とは、発音構造が異なるため、振動音はピッチを変更するが、打撃音はピッチを変更したくないという場合がある。人声音で言えば、有声音はピッチを変更するが、無声音はピッチを変更したくないという場合がある。
このような場合に、詳細は後述するが、対応する区間のある波形位置から振動音のサンプルデータになるか、打撃音のサンプルデータになるかに応じて、楽音波形の波形データを読み出す間隔を、固定音高用の間隔にするという波形処理を実行したり、可変音高用の間隔にするという波形処理を実行したりする。
また、波形処理は、外部(MIDIシーケンサ等)から与えられる演奏情報によって、実行するか否かを決めることもできる。図9を参照して後述するように、任意の波形処理の実行/不実行を、外部から与えられる条件、例えば、フラグビット(Next Flag)を用いることにより、外部から与えられる条件により簡単に制御できる。
パラメータ[00]〜パラメータ[0k],…,パラメータ[j1]〜パラメータ[jk]は、波形処理を実行するのに必要なパラメータである。例えば、「ループ」であれば、ループ長(サンプル単位)を、「ジャンプ」であれば、ジャンプ先のサンプル位置などをパラメータとして記録しておき、音源部5側にある図示しないパラメータ・バッファに設定する。
上述したサンプル位置[0]〜[j]のデータサイズ、イベントID[1]〜ID[j]のデータサイズ、パラメータ[00]〜パラメータ[0k],…,パラメータ[j1]〜パラメータ[jk]のデータサイズは、それぞれにおいて予め決められた固定サイズとする。
イベントID[0]〜ID[j]としては、イベントID=1をジャンプ処理、イベントID=2をループ処理とするように、単純に数値を割り振ればよい。しかし、複数の波形生成イベントを同じ波形位置で実行させたい場合がある。この場合は、「ビット形式」にする。すなわち、イベントID[0]〜ID[j]として、各16ビットを使用し、その各ビット位置を1〜16種の波形生成イベントに対応付ける。実行する波形生成イベントに対応するビット位置を1とし、実行されない波形生成イベントに対応するビット位置を0とする。
区間によって波形処理の数が異なるから、管理データとして記録する波形生成イベントの数は任意でよい。また、パラメータの数も波形処理に応じて任意でよく、なくてもよい。しかし、管理データを固定サイズとしたので、空きが生じる場合がある。そのような場合には、空きの領域に、読み出さなくてもよいが読み出しても無意味なデータを記録しておけばよい。
次に、波形処理の具体例として、楽音の音高変更値を切り替える例を説明しておく。
波形生成制御部4は、「音高加算値」として、固定音高用、可変音高用という2種類のものを、波形生成部6に供給する。波形生成部6は、これらを、図示しない音高加算値レジスタに設定しておく。
波形生成部6は、通常、読み出しポインタ(波形読み出しアドレス)に音高加算値を、所定の固定タイミングで累積加算することにより、次の読み出しポインタ(読み出しアドレス)を決定し、それを繰り返し行いながら波形読み出しを行う。
イベントID=3をピッチ制御処理と定義する。イベントID=3の付随するパラメータとして、対応する区間の、あるサンプル位置からの波形データが、打撃音であるか、振動音であるかに応じたレジスタ番号(音高加算値レジスタの何番目に設定されている音高加算値を使用するかを指定する値)を用いる。
あるサンプル位置のイベントID=3であった場合、そのパラメータ(レジスタ番号)から、固定音高用、可変音高用のどちらかの音高加算値を選択し、これに応じて読み出しポインタ(波形読み出しアドレス)を進める。
その結果、波形生成部6は、波形生成データに含まれた波形生成イベントに応じて波形処理をすることにより、自律的に、打撃音,振動音に適したピッチで楽音合成をすることができるようになる。
より多数の音高加算値を持ち、波形の性質に応じてパラメータの値を設定しておき、音高加算値を多様に変化させてもよい。
波形生成部6がビブラート用のピッチオシレータを備えている場合、音高加算値は一種類のままで、あるサンプル位置以後の時系列において、波形の性質がビブラートをかけるのが好ましいものになるか否かに応じて、パラメータの値を設定し、ピッチオシレータ値を加算する/しないの制御を行うことができる。
その場合、上述した定義のイベントID=3とは別に、ピッチオシレータ加算制御イベントID=4を定義し、付随するパラメータはオシレータ値を加算する/しないのフラグとして使用してもよい。あるサンプル位置以後の時系列において、その波形の性質に応じて、イベントID=3,イベントID=4のそれぞれを管理データとして記録するか、しないかを個別に決めることができる。
図2を参照しながら、図1に戻って説明を続ける。
図1(b)は、波形生成部6の機能のうち、本発明に関係するものを示す説明図である。波形生成部6は、読み出しポインタ生成部6a、波形サンプルデータ読み出し部6b、及び、波形処理(波形生成イベント)実行部6cを有する。
読み出しポインタ生成部6aは、波形生成を制御する側からの指示に応じて読み出しポインタMPを生成する。この読み出しポインタMPは、図2(c)に示した波形生成データのうち、波形データを指示する。言い換えれば、図2(b)に示した元の波形データを読み出すのと同じ読み出しポインタである。
波形データ読み出し部6bは、読み出しポインタMPを用いて、波形生成データメモリ7から、各区間の波形データを、記録された順、すなわち、楽音波形の時系列に従って読み出す。区間分割された波形データ及び管理データの領域が固定長であることから、波形データの領域及び管理データの領域を個別に読み出すことは、後述する構造体の参照によって簡単にできる。従って、このデータ構造は、リアルタイムで波形を生成する場合に適している。
波形処理実行部6cは、波形データ読出部6bが各区間の波形データを読み出し中に、読み出しポインタMPの値が、この読み出しポインタから識別される区間(読み出されている波形サンプルデータの属する区間、例えば、図3(b)に示すように、MPの上位ビットが区間番号MNとなる)に対する管理データとして波形生成データメモリ7に記憶されたサンプル位置[0]〜[j]の指示する波形位置になったときは、その管理データとして波形生成データメモリ7に記憶され、このサンプル位置[0]〜[j]に対応したイベントID[0]〜ID[j]の指示する波形処理を実行する。この波形処理が、ジャンプ処理やループ処理のように、読み出しポインタMPの値を指定するものである場合は、読み出しポインタ生成部6aに対し、読み出しポインタMPの値を変更させる。
読み出しポインタMPの値が、この読み出しポインタから識別される区間の管理データとして記憶されたサンプル位置[0]〜[j]の指示する波形位置になったとき、その波形位置の波形サンプルデータを読み出す前に、イベントID[0]〜ID[j]の指示する波形処理を実行するか、逆に、そのサンプル位置の波形サンプルデータを読み出した後に、波形処理を実行するかは、予め決めておけばどちらでもよい。
波形生成データメモリ7から管理データを読み出すタイミングとしては何通りかある。
(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は、図2に示した波形生成データの具体例において、波形データ及び管理データにアクセスする方法の説明図である。
図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サイズとしたが、同じにする必要は全くない。
図3(b)は、読み出しポインタMPの一例を示す説明図である。読み出しポインタMPは整数部と小数部を有し、整数部の値に応じて読み出しアドレスを指定し、波形サンプルデータを読み出す。前後の2つの波形サンプルデータを読み出せば、小数部で2つの波形サンプルデータの補間演算を行うことができる。
整数部の上位bitで区間番号MNを示し、下位bitで区間内の波形位置MPIを示す。
図3(c)は、管理データ読み出しポインタの一例を示す説明図である。
その上位bitで区間番号MNを示し、下位bitで管理データ内のイベント番号EIXを示す。
図3(d)は、図3(a)に示した構造体配列の参照方法の説明図である。
従来であれば、所望の波形データが記録されている領域の先頭からのオフセット位置が波形サンプルデータの記録位置と同じ値になる。しかし、管理データが挿入されると、そのままでは、波形サンプルデータにアクセスできない。
ところが、構造体配列に対する一般的な参照方法を用いて、簡単に波形サンプルデータにアクセスすることができる。C言語的に記述する。
波形データ中の波形サンプルデータへアクセスするには、WAVS[MN].WDATA[MPI]でアクセスする。例えば、読み出しポインタMP=1000の波形サンプルデータを読み出す場合は、MP/64=15余り40となるので、区間番号MN=15、区間内波形サンプル位置MPI=40となる。従って、WAVS[15].WDATA[40]でアクセスする。
管理データ中の「サンプル位置」へアクセスするには、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は、図1の波形生成データメモリ7に記憶された波形生成データの第2の具体例を示すデータ構造図である。
図4(a)に示す元の波形データは固定サイズで分割される。図4(b)に示す波形生成データは、管理データの領域を可変サイズにし、各区間の波形データA,B,C,…に各区間の管理データA,B,Cをヘッダ(先頭部)として組み合わせたものが、時系列の順に接続されたデータ構造を有している。管理データA,B,Cがトレーラ(後尾部)であってもよい。
管理データの領域に記録されるデータは、図2(d)に示した波形生成イベントのリストと同様であるが、各区間において、実際に存在する波形処理の数やパラメータの数に応じて管理データのサイズを設定し、波形生成データメモリ7の記憶容量を低減することができる。
図5は、図1の波形生成データメモリ7に記憶された波形生成データの第3の具体例を示すデータ構造図である。
図5(a)に示す元の波形データは可変サイズで分割される。
図5(b)に示す波形生成データは、各区間の波形データA,B,C,…に各区間の管理データA,B,C(図示の通りでは可変サイズであるが、固定サイズでもよい)をヘッダ(先頭部)として組み合わせたものが、時系列の順に接続されたデータ構造を有している。管理データA,B,Cがトレーラ(後尾部)であってもよい。
この具体例では、図5(a)の元波形データを、元波形データに内在する波形の区切り(例えば、アタック区間と中間波形の区間の区切り)のみで分割することにより、分割数を少なくすることができる。その結果、波形生成データの量を少なくして、波形生成データメモリ7の記憶容量を低減することができる。
図4,図5に示した第2,第3の具体例では、波形読み出し部6bが読み出しポインタMPを用いて波形データを読み出すための波形位置計算や、波形処理実行部6cが読み出しポインタMPを用いて管理データを読み出すための読出位置計算が複雑になり、処理時間もかかるが、ソングデータの自動演奏など、波形生成したデータを所定時間遅らせて出力してもよい場合、処理時間は余り問題にならない。
ただし、あらかじめ各区間の波形データの領域及び各区間の管理データの領域の可変サイズを知っておく必要がある。そのため、管理データは、次の図6(a)に示すものにする。
図6は、図1の波形生成データメモリに記憶された管理データの第2,第3の具体例の説明図である。
図6(a)は、図5に示した波形生成データに含まれる管理データ(波形生成イベントリスト)の一例を示す説明図である。
この管理データは、管理データ自身のサイズを記録する領域と、対応する同じ区間の波形データのサイズを記録する領域を備えている。従って、可変サイズに応じたデータバイトあるいはメモリアドレスを累積加算して行くことによって、各区間の波形データ内の波形サンプルデータの波形位置及び対応する各区間の管理データ内の各波形処理の波形位置、イベントIDの記録位置、パラメータの記録位置を知ることができる。
図4に示した波形生成データに含まれる管理データとしては、管理データ自身のサイズを記録する領域のみを追加すればよい。
図6(b)は、管理データ(波形生成イベントリスト)としては第3の具体例となるものを示す説明図である。
図3(a)の波形生成データ中に示された管理データに、波形パラメータ[1]〜[m]が加えられている。区間に応じて、波形パラメータの個数および各波形パラメータの値は任意であり、波形パラメータがなくてもよい。しかし、無意味なデータを埋め込んで管理データのサイズを固定にしておく。
波形パラメータ[1]〜[m]は、各区間の波形サンプルデータに対する共通の波形特性制御パラメータである。読み出しポインタの値から識別される区間に対する管理データとして、波形パラメータ[1]〜[m]が記憶されているときは、これらに応じて、その区間の波形データの波形特性を制御する。
ピッチが大きく変化している波形を、一定のピッチで出力するような処理は、従来の方法では困難(波形周期ごとのピッチを記憶しておき、その波形周期毎に波形のピッチを指定する等の方法により可能であるが、波形周期毎の制御は通常困難なため)であった。区間毎にその波形のピッチを記憶しておくことにより、区間波形ごとにピッチの再計算が可能となるため、容易に実現可能となる。
また、通常、波形データの読み出し後にAEG(Amplitude Envelope Generator)により、振幅制御を行う。その際、元波形データ自体に大きな振幅変更があった場合は、波形データを読み出した後に、元波形データ自体の振幅値を求めて振幅を補正する必要があった。このような場合、区間波形全体についての平均的な振幅レベルを波形パラメータとして記録しておくことにより、改めて振幅値を求める必要がないので振幅制御を簡素化することが可能になる。
図6(b)に示した、波形パラメータ[1]〜[m]は、図4,図5に示した波形生成データの管理データに加えてもよい。図5に示した波形生成データの場合、元の波形データに内在する波形の区切りを考慮して可変サイズに分割されていれば、分割された区間毎にパラメータを管理したり設定したりすることが簡単になる。
図7は、本発明の実施の一形態を説明するためのハードウエア構成図である。
CPUバス11は、複数のハードウエアブロック間でデータを転送する。14はROM(Read Only Memory)であり、処理プログラムや制御データが記憶されている。13はRAM(Random Access Memory)であり、ROM14から処理プログラムがロードされるとともに、作業領域(ワークエリア)が設けられる。CPU12は、処理プログラムに従って、操作子15の操作イベント検出、表示部17に対する表示制御等の一般的な制御を行うとともに、音源回路22が演奏データに応じて楽音信号を合成するために必要な制御をする。
ROM14に制御プログラムや設定データが記憶されていない場合、これらを後述する外部記憶装置21の、ハード磁気ディスク装置(HDD)等に記憶させてもよい。このハード磁気ディスク装置に、制御プログラムや設定データを、CD-ROMからインストールしたり、サーバ装置(外部機器19)からダウンロードしたりすることができる。
15は鍵盤、音色設定スイッチ等の操作子、16は検出回路である。17はディスプレイ、インジケータ等の表示部、18は表示回路である。
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に記憶されている。この波形メモリ23は、上述した音源LSI又はDSPに内蔵されていてもよい。
波形メモリ(ROM)23を差し替えたり増設したりすることができる。これをフラッシュメモリ(フラッシュROM)にすることにより、外部機器19から波形生成データを転送して書き換えることができる。
上述した波形生成データは、図示しない波形メモリ(RAM)に記憶しておくこともできる。波形生成データを外部記憶装置21に記憶しておき、外部記憶装置21から、CPUバス11を経由して波形メモリ(RAM)に書き込んでおく。音源回路22は、この波形メモリ(RAM)から波形生成データを、CPUバス11を経由しないで波形メモリバスを経由して読み出す。
CPU12は、図1に示した波形生成制御部4の機能を実行し、鍵盤(操作子15)の操作等に応じた入力演奏データ(ノートメッセージ)に基づいて波形生成制御データを作成し、音源回路22に出力する。
音源回路22は、図1に示した波形生成部6の機能を実行し、指定された音色に対応して設定されたパラメータに従って、図1に示した波形生成データメモリ7に対応する、波形メモリ(ROM)23及び/又は図示しない波形メモリ(RAM)に記憶された波形生成データを読み出し、読み出された波形データを用いて、音色に応じた波形パラメータ群に従い、音量エンベロープを付加し、フィルタ処理等をして、ノートメッセージに応じた合成波形を生成し、アナログ信号に変換してサウンドシステム24に出力する。
パーソナルコンピュータ内のCPUがソフトウエア音源プログラムを実行することにより、楽音波形を生成してもよい。この場合、図1に示した波形生成部6の機能もCPUが実行する。波形生成データは、外部記憶装置21に記憶しておき、外部記憶装置21から、CPUバス11を経由して波形メモリ(RAM)13のワークエリアにロードして使用する。従来の波形データと従来の波形情報データは、波形生成データとして一元管理される。
図8は、図7に示した音源回路22が、図1に示した波形生成部6の機能を実行する動作を説明するためのフローチャートである。DSPを用いた場合は、マイクロプログラムに従って機能を実行する。
このフローチャートは、複数の波形サンプルをまとめて処理するという「フレーム処理」を行った場合の動作を示し、1フレーム分の波形サンプルデータの読み出し処理が指示されたときに起動される。
説明を簡単にするために、図3に示した各区間の波形データ及び管理データが固定サイズのデータ構造で、パラメータは存在しないものとする。
最初の起動時にのみ、各変数を初期化する。1フレーム分のサンプル数をFNとし、処理を終了したサンプル数をfnとすると、初期化時にfn=0にしておく。
初期化後に、現在の区間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になるまで、このフローチャートが繰り返し実行される。
S30において、上述した波形読み出しサンプル数nを0とする。
S31において、次の波形処理を実行するイベント位置(サンプル位置)まで来たか否かを、MP(現在の読み出しポインタ)≧NXMP(次の波形処理を実行するサンプル位置)であるかにより判定する。そうであれば、S35以下に処理を進め波形処理を実行する。そうでなければ、S32〜S34の通常の波形読み出し処理を行う。
S32において、波形サンプルデータを読み出す。MP(現在の読み出しポインタ)及びMD(読み出しポインタの加算値)は、整数部と小数部とを有し、図3(b)に示したように、整数部により読み出し位置を指定する。MD(読み出しポインタの加算値)の値は、生成する波形のピッチ等によって決まる。
読み出した波形サンプルデータをRDATAとすると、RDATA[n++]=波形データ[MP]=WAVS[MN].WDATA[MPI]となる。波形読み出しサンプル数nは代入後に+1アップされる。
S33において、MPに上述したMDを加算してMPを更新するとともに、区間番号MNの更新をする。MNNをMPの更新後の区間番号とし、FSMPを1区間の波形データに含まれる波形データサンプルの数とすると、MNN=MP/FSMPとなる。なお、MNNはMPから求められるため、必要な際にMPから取り出してもよい。
S34において、更新された読み出しポインタMPが現在の区間を超えたか否かを、MNN(MPの更新後の区間番号)=MNO(MPの更新前の区間番号)か否かによって判定する。区間が更新された場合は、S45へ処理を進め、更新後の区間の波形生成イベントリストにおける最初の波形生成イベントデータを読み出すために、EIX=0とし、MNNの値をMNO(MP更新前の区間番号)に待避させ、S47の波形生成イベントデータ読み出し処理に進める。一方、S34において、同じ区間であれば、S31の処理に戻り、S31において、MPがNXMPを超えるまでS32〜S34を繰り返す。
一方、S31において次の波形処理位置まで来たと判定されたときは、S35に処理を進め、EID(イベントID)があるか否かを判定し、EID=0のとき、この区間内には実行すべき波形処理がないと判定し、S36に処理を進め、区間番号MNN(MP更新後の区間番号)を+1することにより次の区間を指定し、S45へ処理を進め、次の区間の波形生成イベントリストの最初の波形生成イベントデータを読み出すために、EIX=0として波形生成イベントリストの先頭に戻し、MNNの値をMNO(MP更新前の区間番号)に待避させ、S47の波形生成イベントデータ読み出し処理に進める。
EID(イベントID)があれば、S37〜S39において、このEIDにより指示された波形処理が何であるかを判定し、その結果に応じてS40〜S42の波形生成イベント処理に進める。
S40〜S42の処理が、MPの値を指定する処理でなければ、S43からS46に処理を進め、前と同じ区間MNNの波形生成イベントリスト内の次のイベント番号EIXに更新し、S47の波形生成イベントデータ読み出し処理に進める。
説明を簡単にするため、1つの区間において、波形生成イベントリストには、波形生成イベント処理を実行する「サンプル位置」の小さいものから順に「サンプル位置」及び「イベントID」が記録されているものとする。
一方、S40〜S42の波形生成イベント処理が、ジャンプ処理やループ処理など、MPの値を指定するものであった場合、S44に処理を進め、S33における区間番号更新と同様に、MNN(MP更新後の区間番号)を更新し、S45に処理を進める。
S45において、更新後の区間の波形生成イベントリストにおける最初の波形生成イベントデータを指定するために、EIX=0とし、MNNをMNO(MP更新前の区間番号)に格納し、S47の管理データ読み出し処理に進める。
説明を簡単にするため、1つの区間において、読み出しポインタの変更を伴う波形生成イベント処理によってMPの値が変更されるときは、異なる区間に移動するものとする。かつ、その区間における最初の波形生成イベント処理を実行するサンプル位置よりも前(過去)の位置であることを前提とする。
この前提を設けない場合、波形生成イベント処理によって読み出しポインタMPが更新されたときは、更新後の区間の波形生成イベントリストを参照し、何番目(EIX)を読み出せば、更新されたMPの波形位置よりも後(未来)になるかを識別する必要がある。
S47では、図3(d)に示した構造体配列の参照方法を用いて、指定された区間MNNの管理データにおける、指定されたイベント番号EIXの波形生成イベント処理を実行するサンプル位置(次のイベントのサンプル位置NXMP)及び波形生成イベント処理を特定するイベントID(EID)を読み出す。
以上の1回分の処理が終わると、最後に、波形読み出しサンプル数nを返し、最初に説明したように、fn=fn+nが計算され、fn=FNになるまで、このフローチャートが繰り返し実行される。
図9は、図1に示した機能構成図において、波形生成データが処理される動作例を示す説明図である。図8に示したフローチャートにほぼ従うが、説明を簡単にするため、原則として図8とは切り離して説明する。
図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)は、波形生成された合成波形である。
図9(c)の波形生成イベントリストにおいて、EID=0は、この波形生成イベントリストに、これ以後波形生成イベントが無いことを示す。この場合、その後続のデータは読み込む必要がない。リスト中、「−」の記号は読み出しても無意味なデータを表す。
EID=1は、「条件付波形ジャンプ処理」を指示する。条件付とは、図9(d)に示したNext Flag=1のときに実行される「ジャンプ処理」である。ジャンプ先の波形位置は、付随するパラメータで指示される。
EID=2は、「ループ処理」を指示する。現在の読み出しポインタMPの位置より、付随するパラメータで指示されるループサイズ分、MPを戻す。
以下、波形生成部6が波形生成イベントを処理する動作例を説明する。
初期設定時に、区間番号MN=0、イベント番号EIX=0のWP=「−」,EID=0が読み出されている。S31〜S34の繰り返しにおいて、読み出しポインタMPは、MDを累積加算されて更新されるので、波形データ(0〜63)が時間進行に従って順次読み出される。
MP=64となり、区間番号がMN=1に更新されたとき、区間番号MN=1の波形生成イベントリストからEIX=0のWP=120,EID=1,パラメータ(ジャンプ先の波形位置)が読み出される。その後、波形データ(64〜119)が読み出される。この間、合成波形は、通常波形Aから通常波形Bに移行している。
MP=120になると、次の波形生成イベントを実行するサンプル位置となり波形生成イベント処理に進められる。しかし、EID=1は条件付ジャンプ処理であり、現在は、図9(d)に示すNext Flag=0である。従って、ジャンプ処理は実行されることなく、区間番号MN=1,次のイベント番号EIX=1のWP=「−」,EID=0を読み出す。その後、波形データ(120〜127)が読み出される。
区間番号がMN=2に更新されたとき、区間番号MN=2の波形生成イベントリストからEIX=0のWP=150,EID=2,パラメータ(ループ長50サンプル)が読み出される。その後、波形データ(128〜149)が読み出される(MP=149はループ波形Bの最後尾の波形位置である)。
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)が読み出される。
区間番号がMN=2に更新されたとき、先の場合と同様に、区間番号MN=2の波形生成イベントリストからEIX=0のWP=150,EID=2,パラメータ(ループ長50サンプル)が読み出される。その後、波形データ(128〜149)が読み出される。
再度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に更新される。
この場合は、図8に示した簡略化されたフローチャートでは正しく動作しない。正しく動作するフローチャートは複雑になるので省略するが、次のような処理が行われるようにする。
すなわち、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)が読み出される。
上述した動作からわかるように、元の波形データの区切りとは無関係に、波形データを任意の固定サイズで分割しても、元の波形データの区切りに応じて、ループ処理やジャンプ処理等をサンプル単位できめ細かく実行できる。また、外部の条件で制御できるNext Flagを用いることにより、任意の波形生成イベントを条件付で実行するか否かを簡単に決定できる。
上述した説明では、主として、1系列の波形生成データをメモリに記憶しておいて、楽音波形を合成する場合について説明した。これに代えて、特許文献1に記載のような各単位波形データについて、個別に、本発明のデータ構造を適用してもよい。
すなわち、各単位波形データよりも単純な構成の波形データをメモリに記憶しておき、ループ処理、ジャンプ処理等の波形生成イベントを実行することにより、これらの単位波形データを生成する。生成された各単位波形データは、波形シーケンスWSに従って接続される。なお、波形シーケンスWSも音源部5側で記憶しておくこともできる。
その結果、複数の単位波形データを用いて合成波形を生成する利点を有するとともに、より単純化されて冗長度の小さいデータ構造の波形データを元波形データとして、少ないメモリ容量で、かつ多様な単位波形データを合成することができる。また、複数種類の単位波形データを共通の、又は、より少ない種類の波形データに基づいて合成することも可能となる。
上述した説明では、メモリに記憶された1系列の波形生成データを1つの読み出しポインタMPを用いて波形生成データを読み出していた。これに代えて、2個の読み出しポインタMP1,MP2を用いて波形生成データを読み出すようにすれば、クロスフェード合成ができる。また、同時に複数系列の波形生成データを、それぞれの読み出しポインタMP1,MP2で互いに同期して読み出せば、各系列の波形生成データを合成することによりクロスフェード合成ができる。
上述した説明では、楽音波形を生成する波形生成装置について説明した。
しかし、本発明は、楽音波形に限らず、人間の発する声(人声音)や動物の声、その他、自然界で発生する音、人工的な音等の波形を含んだ概念としての音波形を生成する音波形生成装置、音波形生成プログラム、及び、音波形生成データのデータ構造に適用できる。
楽音波形以外の音波形は、電子楽器においては効果音として用いられるが、電子楽器の用途に限定されるものではない。一般に、波形メモリを用いて音波形を生成する装置において、多様な音波形を生成するのに適している。
本発明の音波形生成装置の実施の一形態を説明するための機能構成図である。 図1の波形生成データメモリに記憶された波形生成データの第1の具体例を示すデータ構造図である。 図2に示した波形生成データの具体例において、波形データ及び管理データにアクセスする方法の説明図である。 図1の波形生成データメモリに記憶された波形生成データの第2の具体例を示すデータ構造図である。 図1の波形生成データメモリに記憶された波形生成データの第3の具体例を示すデータ構造図である。 図1の波形生成データメモリに記憶された波形生成データにおける管理データの第2,第3の具体例の説明図である。 本発明の実施の一形態を説明するためのハードウエア構成図である。 図7に示した音源回路が、図1に示した波形生成部の機能を実行する動作を説明するためのフローチャートである。 図1に示した機能構成図において、波形生成データが処理される動作例を示す説明図である。 従来の電子楽器において楽音波形を生成する一例を示す機能構成図である。 従来の波形シーケンス及び単位波形データを説明するためのデータ構造図である。
符号の説明
1…演奏コントローラ、2…演奏制御部、3…波形情報データ、4…波形生成制御部、5…音源部、6…波形生成部、7…波形生成データメモリ

Claims (5)

  1. 時系列に従った一連の音波形の波形データが複数の区間に分割され、分割された各区間の複数の波形サンプルデータに該各区間の管理データを組み合わせたデータ構造をとり、該管理データは、前記各区間において実行される波形処理を指示するイベント識別データ及び該波形処理の実行位置をサンプル単位で指示する波形位置データを有するように構成された、波形生成データを記憶している波形生成データ記憶手段と、
    波形生成を制御する側からの指示に応じて、前記波形サンプルデータの読み出しを指示する読み出しポインタを生成する読み出しポインタ生成手段と、
    該読み出しポインタ生成手段により生成された読み出しポインタを用いて、前記波形生成データ記憶手段から、前記分割された各区間の波形サンプルデータを読み出す波形データ読み出し手段と、
    前記読み出しポインタ生成手段により生成された読み出しポインタの値が、該読み出しポインタから識別される区間に対する管理データとして前記波形生成データ記憶手段に記憶された波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、当該波形位置データに対応したイベント識別データの指示する波形処理を実行し、前記イベント識別データの指示する波形処理が前記読み出しポインタの値を指定する波形処理である場合、前記読み出しポインタ生成手段に対し、前記読み出しポインタの値を、指定された値に変更させる波形処理実行手段、
    を有することを特徴とする音波形生成装置。
  2. 前記読み出しポインタの値を指定する波形処理は、当該読み出しポインタの値が当該波形処理を実行する区間とは異なる区間にある波形サンプルデータを指示する波形処理である場合を含む、
    ことを特徴とする請求項1に記載の音波形生成装置。
  3. 前記波形処理実行手段は、前記波形生成を制御する側からフラグを入力するものであり、
    前記波形処理実行手段は、前記イベント識別データにより条件付きの波形処理が指示されたとき、入力されたフラグの値に応じて、指示された条件付きの波形処理を実行するか否かを決定する、
    ことを特徴とする請求項1又は2に記載の音波形生成装置。
  4. 時系列に従った一連の音波形の波形データが複数の区間に分割され、分割された各区間の複数の波形サンプルデータに該各区間の管理データを組み合わせたデータ構造をとり、該管理データは、前記各区間において実行される波形処理を指示するイベント識別データ及び該波形処理の実行位置をサンプル単位で指示する波形位置データを有するように構成された、波形生成データを記憶している波形生成データ記憶手段を用いて、
    波形生成を制御する側からの指示に応じて、前記波形サンプルデータの読み出しを指示する読み出しポインタを生成する読み出しポインタ生成ステップと、
    該読み出しポインタ生成ステップにより生成された読み出しポインタを用いて、前記波形生成データ記憶手段から、前記分割された各区間の波形サンプルデータを読み出す波形データ読み出しステップと、
    前記読み出しポインタ生成ステップにより生成された読み出しポインタの値が、該読み出しポインタから識別される区間に対する管理データとして前記波形生成データ記憶手段に記憶された波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、当該波形位置データに対応したイベント識別データの指示する波形処理を実行し、前記イベント識別データの指示する波形処理が前記読み出しポインタの値を指定する波形処理である場合、前記読み出しポインタ生成ステップに対し、前記読み出しポインタの値を、指定された値に変更させる波形処理実行ステップ、
    をコンピュータに実行させることを特徴とする音波形生成プログラム。
  5. 波形生成データ記憶装置に記憶されており、波形を生成するためにコンピュータにより読み出されて使用される波形生成データのデータ構造であって、
    前記波形生成データは、時系列に従った一連の音波形の波形データが複数の区間に分割され、分割された各区間の複数の波形サンプルデータに該各区間の管理データを組み合わされ、該管理データは、前記各区間において実行される波形処理を指示するイベント識別データ及び該波形処理の実行位置をサンプル単位で指示する波形位置データを有するように構成されたものであり、
    前記波形生成データは、前記波形生成データ記憶装置を用いて、
    波形生成を制御する側からの指示に応じて、前記波形サンプルデータの読み出しを指示する読み出しポインタを生成する読み出しポインタ生成ステップと、
    該読み出しポインタ生成ステップにより生成された読み出しポインタを用いて、前記波形生成データ記憶手段から、前記分割された各区間の波形サンプルデータを読み出す波形データ読み出しステップと、
    前記読み出しポインタ生成ステップにより生成された読み出しポインタの値が、該読み出しポインタから識別される区間に対する管理データとして前記波形生成データ記憶手段に記憶された波形位置データの指示する波形位置になったときは、当該管理データとして前記波形生成データ記憶手段に記憶され、当該波形位置データに対応したイベント識別データの指示する波形処理を実行し、前記イベント識別データの指示する波形処理が前記読み出しポインタの値を指定する波形処理である場合、前記読み出しポインタ生成手段に対し、前記読み出しポインタの値を、指定された値に変更させる波形処理実行ステップ、
    を実行する前記コンピュータにより使用されることを特徴とする音波形の波形生成データのデータ構造。
JP2005122380A 2005-04-20 2005-04-20 音波形生成装置、及び、音波形の波形生成データのデータ構造 Expired - Fee Related JP4692056B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 波形合成用データのためのデータ構造および波形合成の方法および装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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