JP3603343B2 - Waveform reading device - Google Patents
Waveform reading device Download PDFInfo
- Publication number
- JP3603343B2 JP3603343B2 JP23713594A JP23713594A JP3603343B2 JP 3603343 B2 JP3603343 B2 JP 3603343B2 JP 23713594 A JP23713594 A JP 23713594A JP 23713594 A JP23713594 A JP 23713594A JP 3603343 B2 JP3603343 B2 JP 3603343B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- waveform
- data
- address
- integral
- 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 - Lifetime
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【0001】
【産業上の利用分野】
本発明は、所定の波形圧縮方式を用いて波形の振幅値の差分値が仮数部、指数部からなる浮動小数点データに符号化された波形データを記憶手段から読み出して波形を生成する波形読出装置に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】
近年、例えば、電子楽器においてはデジタル化が進み、コンピュータ技術が広く導入されている。このため、電子楽器においては、波形をデジタル処理で生成(再生)するPCM方式のデジタル音源装置(PCM音源装置)が広く搭載されている。
【0003】
PCM方式は、自然楽器等から発せられた音(楽音)を所定のサンプリング周期でサンプリングし、これにより得たサンプル値を量子化して2進符号に符号化したデータを波形データとするものであり、PCM音源装置は、このような波形データを記憶した、或いは記憶するメモリを備えている。このようなPCM音源装置に搭載される波形読出装置は、メモリから波形データを読み出して波形を生成するものであり、PCM音源装置は、この波形読出装置が生成した波形を用いて楽音を再生するものである。
【0004】
PCM方式では、自然界の様々な音の音色を常に忠実に再生できるという利点がある。しかし、周波数特性及びS/N比が優れた音を再生するためには、音を高いサンプリング周波数でサンプリングし、且つ、これにより得たサンプル値を大きなビット数で量子化する必要がある。このため、PCM方式では波形データを記憶するために大容量のメモリが必要であるという不具合があった。
【0005】
この不具合を回避するために、波形データを圧縮する波形圧縮方式が多く開発されている。例えば、波形データの差分値をメモリに記憶させるDPCM方式はこれの代表的なものである。また、波形データを指数部、及び仮数部からなる浮動小数点データに変換することで、データの精度を高く維持するとともに、データ量の低減を図っているものがあり(浮動小数点方式)、この浮動小数点方式の一つの方式として差分化圧縮浮動小数点方式がある。
【0006】
この差分化圧縮浮動小数点方式は、波形の振幅値の差分値を浮動小数点データで単に表現するのではなく、更にその指数部を差分値で表現、即ちそれまでの指数部を累算した値(以降、積分指数値と記す)からの差分値を指数部の値とするものである。従って、この方式を用いた場合、単にDPCM方式と浮動小数点方式を組み合わせるよりも更にデータ量を低減することができる。また、この方式には、1つの指数部を複数の仮数部に共通とさせることで、さらにデータ量の低減を図っている方式もある。
【0007】
なお、この方式により符号化された波形データは、先ず、指数部を順次累算することで復号し、次にこの復号した指数部(積分指数値)を用いて仮数部を復号、即ち波形の振幅値の差分値を復号し、最後にこの復号した差分値を順次累算することで波形の振幅値が復号される。
【0008】
ところで、一般の波形読出装置には、メモリに記憶される波形データ量を低減するための機能として、ループ機能を備えている。この機能は、メモリに記憶された波形データの一部(ループ範囲)を繰り返し読み出して波形を生成する機能である。
【0009】
大抵の自然楽器は音が長く持続するので、その音を全てサンプリングするとそのデータ量は膨大となる。しかし、このループ機能により波形の生成(楽音の再生)を持続させることができることから、メモリに記憶させるデータ量を大幅に低減させることができる。ループ機能により生成した波形は、エンベローブを付加することで減衰させることができる。
【0010】
ループ機能により繰り返し読み出されるループ範囲は、通常、スタートアドレス(ポイント)とエンドアドレス(ポイント)で管理される。しかし、上記した差分化圧縮指数浮動小数点方式で波形データがメモリに記憶されている場合、例えばエンドアドレスまで波形データを読み出した後、スタートアドレスに戻って波形データを読み出すと、波形データの指数部、及び仮数部が各々差分値で符号化されているため、このスタートアドレスに記憶された波形データをそれまで累算した積分指数値等を用いて復号することになり、波形を正確に生成できないという問題点があった。
【0011】
差分化圧縮指数浮動小数点方式により波形データ量を低減することはできるが、サンプリングする期間の長さに応じて波形データ量が増大することから、波形データ量の圧縮(低減)とともに、波形の生成を持続できる波形読出装置が望まれていた。
【0012】
なお、このような問題点を回避するために、そこに記憶された波形データの振幅値が0となるようなアドレスをスタートアドレス、エンドアドレスとして選択する波形読出装置がある。しかし、この波形読出装置では任意のループ範囲を選択できないため、所望の部分の波形を生成できないという問題点や、そのアドレスを検出するための煩雑な作業が必要であるという問題点があった。
【0013】
また、その他の波形読出装置としては、ループ範囲において、その範囲の波形データの平均値が0となるようにメモリに記憶された波形データ(差分値)を修正しているものもある。しかし、この装置では、数多くの種類(音色)の波形データを記憶した音源装置に適用された場合、各種類毎に上記した修正を行わなければならず、それに要する作業が非常に煩雑となるという問題点があった。また、この修正により、再生される楽音の音質を劣化させることがあるという問題点もあった。
【0014】
本発明の課題は、波形の振幅値の差分値を符号化した波形データが記憶されている場合に、そのデータ量をさらに低減するとともに、波形の生成を正確に持続する波形読出装置を提供することにある。
【0015】
【課題を解決するための手段】
本発明の波形読出装置は、先ず、所定の波形圧縮方式を用いて波形の振幅値の差分値が仮数部、及び指数部からなる浮動小数点データに符号化された波形データと、予め設定されたループ範囲内の波形データから波形の振幅値を生成するための生成情報を記憶した記憶手段を有する。
【0016】
この記憶手段には、例えば、浮動小数点データである所定数Nの仮数部、及び該所定数Nの仮数部に共通化させた指数部を差分値とした差分化指数部を同一の記憶場所に記憶した波形データと、ループ範囲の先頭から、音高に対応する記憶場所の歩進量の最大値に基づく個数の記憶場所に対応した、波形の振幅値及び積分指数値が記憶される。
【0017】
指定手段は、この記憶手段から波形データを読み出す記憶場所を所定タイミングで順次指定するとともに、記憶手段に記憶された波形データのループ範囲内の記憶場所を繰り返して指定する。
【0018】
波形生成手段は、指定手段が指定した記憶場所から波形データを読み出し、該所定タイミングをN+1分割した第1の演算処理タイミングにおいて、その差分化指数部を順次累算して積分指数値を生成し、第2以降の演算処理タイミングにおいて、該生成した積分指数値を用いて仮数部を伸長し、該演算処理タイミング各々に対応する差分値を生成し、該生成した差分値を順次累算することで波形を生成するとともに、指定手段がループ範囲内の先頭部分に戻って記憶場所を指定したとき、該記憶場所から読み出した仮数部及び該記憶場所に対応した生成情報の積分指数値を用いて差分値を生成し、該記憶場所に対応した生成情報の振幅値を用いて波形を生成する。
【0020】
【作用】
本発明の波形読出装置は、ループ範囲の波形データから波形を生成するための生成情報を保持し、このループ範囲の指定が繰り返されたとき、それまで波形の生成に用いていた情報をこの生成情報に置き換え、このループ範囲内の波形データによる波形の生成を行う。これにより、ループ範囲の指定が任意に行えるとともに、このループ範囲内で生成すべき波形が正確に生成される。
【0021】
例えば、波形圧縮方式として差分化圧縮浮動小数点方式が採用されている場合、例えばループ範囲の先頭の波形データを復号するために、この波形データに対応する積分指数値、及び積分波形値を生成情報として保持し、ループ範囲の指定が繰り返されて再びその先頭の波形データが指定されると、生成情報の積分指数値を用いて振幅値の差分値を復号し、この復号した差分値を生成情報の積分波形値に加算することで波形を生成する。
【0022】
【実施例】
以下、本発明の実施例について、第1の実施例、第2の実施例の順序で図面を参照して詳細に説明する。
【0023】
図1は、第1の実施例による波形読出装置100の構成を示すブロック図であり、この波形読出装置100は、電子楽器に搭載された音源装置に適用されたものである。
【0024】
図1に示す如く、この波形読出装置100は、差分化圧縮指数浮動小数点方式で楽音波形の振幅値の差分値(波形差分値)を圧縮した波形データ(記憶データ)を記憶した波形メモリ101と、後述するようにして波形メモリ101から波形データを読み出すアドレスを更新するアドレスジェネレータ102と、波形メモリ101から読み出された記憶データを入力し、アドレスジェネレータ102から入力した各種信号等に基づいてこれを復号し、楽音波形を生成する積分補間回路103とから構成されている。
【0025】
以上の構成において、その概略動作を説明する。
アドレスジェネレータ102は、特には図示しない電子楽器の制御部からの音色、音高(ピッチ)等の指示に基づいて波形メモリ101から記憶データを読み出すアドレスを決定し、これをアドレスデータとして波形メモリ101に出力する。このアドレスデータは、後述するように、所定のタイミングで複数連続して出力されるものである。
【0026】
また、アドレスジェネレータ102は、詳細は後述するが、積分補間回路103が波形メモリ101から入力した記憶データを用いて楽音波形を生成するための補間用小数部データ、積分値ステップ信号、及びループ信号を生成し、これらの信号を積分補間回路103に出力する。
【0027】
ここで、波形メモリ101に記憶された記憶データについて説明する。図2(a)はこの波形メモリ101に記憶された記憶データのフォーマットを示す説明図であり、同図(b)はこの記憶データにより生成される楽音波形を示す説明図である。
【0028】
図2において、その先頭が“A”である記号はアドレスを表し、他の記号においてその先頭が“E”は記憶データの指数部(の値)、“D”は波形差分値を各々表す。また、各記号におけるn、n+1等の添字は、ある任意の位置、この位置からの変位を表すものである(以降、他の記号についても同様とし、特に限定しないときは“x”を添字とする)。
【0029】
また、図2(a)において、各枠は各々1ビットを表しており(以降、他の図においても同様)、第1の実施例では指数部(差分化指数部)が2ビットで仮数部が6ビットの計8ビットのデータが1回のサンプリングにより得た記憶データとして波形メモリ101に記憶されていることを示している。
【0030】
第1の実施例で採用した差分化圧縮指数浮動小数点方式は、楽音をサンプリングしたとき、今回と前回で得たそれの振幅値の差分値を浮動小数点データに符号化し、更にその指数部を指数部における差分値としたものである。
【0031】
従って、この方式で波形メモリ101に記憶された記憶データから楽音波形をアドレス毎に生成するには、先ず、各アドレスに記憶された記憶データの差分化指数部を順次累算することで指数部を復号し、次にこの復号した指数部(積分指数値)を用いて仮数部を復号、即ち波形差分値を復号し、最後にこの波形差分値をこれまでに累算した値(積分波形値)に加算することで生成される。
【0032】
この楽音波形の生成は、記憶データを読み出す速さ(アドレス歩進量)により、アドレス毎に行われるだけでなく、あるアドレスとその次のアドレスの間の振幅値を得なければならない、即ち補間(演算)しなければならない場合も多くある。
【0033】
その場合の補間演算は、例えばアドレスAn+2とAn+3間で補間演算(直線補間演算)を行うとすると、図2(b)に示した楽音波形からも分かるように、例えば、アドレスAn+1までの振幅値の積分値をIW、アドレスAn+2に浮動小数点データとして記憶された差分値をDW、An+2から振幅値を得たい位置までの差(通常、アドレスは1つずつ増えるので、この値は小数で表されたアドレス間との比となる)をDAとすると、その振幅値Wは以下のようにして算出することができる。
【0034】
【数1】
W = IW + DW・DA
波形メモリ101は、アドレスジェネレータ102から出力されたアドレスデータに従って上記のように記憶された記憶データを読み出し、これを積分補間回路103に出力する。積分補間回路103は、詳細は後述するが、波形メモリ101から入力した記憶データに対し、アドレスジェネレータ102から入力した各種信号に基づいて楽音波形を生成し、これを特には図示しない楽音出力部に出力する。これにより、楽音出力部から楽音が放音されることになる。
【0035】
以上が概略動作である。次に、図3を参照して、アドレスジェネレータ102について詳細に説明する。図3は、アドレスジェネレータ102の回路構成を示すブロック図であり、このアドレスジェネレータ102は、大別して、アドレス更新部、ステップ演算器310、及びアドレス生成器311から構成されたものである。
【0036】
このアドレス更新部は、現在値アドレスRAM(Random Access Memory)301、アドレス歩進量RAM302、エンドアドレスRAM303、ループスタートアドレスRAM304、加算器305、データセレクタ306、比較器307、減算器308、加算器309から構成される。
【0037】
この構成において、先ず、アドレス更新部の動作から説明する。上記した各RAM301〜304は各々電子楽器の制御部により、現在値アドレスRAM301はユーザが指定した音色に対応する記憶データが記憶されている波形メモリ101のアドレスの初期値を保持し、アドレス歩進量RAM302はユーザが操作した演奏操作子(図示せず)に割り当てられた音高に対応するアドレス歩進量を保持し、エンドアドレスRAM303はその音色の記憶データが記憶された最後のアドレスの値(エンドアドレス値)を保持し、ループスタートアドレスRAM304はその記憶データにおけるループ範囲の先頭アドレスの値(ループスタートアドレス値)を保持する。このエンドアドレス値は、記憶データが記憶された波形メモリ101の最後のアドレスを示すとともに、ループ範囲の最後のアドレスを示すものである。
【0038】
現在値アドレスRAM301は、波形メモリ101から記憶データを読み出すアドレスの現在値(現在値アドレス)を随時更新してこれを保持する。加算器305は、この現在値アドレスとアドレス歩進量RAM302に保持されたアドレス歩進量を加算し、この加算結果をデータセレクタ306、比較器307、及び減算器308に出力する。
【0039】
図4は、各部から出力されるデータを示す説明図であり、上記の現在値アドレス、アドレス歩進量、及び加算器305出力(演算結果)の各データを示したものである。
【0040】
上記したように、各枠は1ビットを表すことから、図4に示す如く、現在値アドレスは整数部12ビットで小数部6ビットの計18ビットのデータであり、アドレス歩進量は整数部2ビットで小数部6ビットの計8ビットのデータであることを示している。また、この現在値アドレスとアドレス歩進量を加算した値である加算器305の出力は、現在値アドレスと同様に、整数部12ビットで小数部6ビットの計18ビットのデータであることを示している。なお、第1の実施例では、アドレス歩進量は整数部が2ビットである8ビットデータであることから、このビットデータで表現できる範囲で音高を変化させることができるものである。
【0041】
ここで、図4において、現在値アドレスと加算器305出力の整数部下位3ビットのデータであるna、nbは、後述するように、通常アドレス更新時においてステップ演算器310が積分ステップ信号を生成するための信号となるものである。
【0042】
比較器307は、加算器305の出力値とエンドアドレスRAM303が保持しているエンドアドレス値を比較し、その比較結果を1ビットの信号(ループ信号)として出力する。この比較結果は、加算器305の出力値がエンドアドレス値よりも小さいと比較したときにはL(論理値が0)であり、そうでないと比較したときはH(論理値が1)である。
【0043】
減算器308は、加算器305の出力値とエンドアドレス値の減算を行い、その演算結果を加算器309に出力する。加算器309は、この演算結果とループスタートアドレスRAM304が保持しているループスタートアドレス値を加算し、その演算結果をデータセレクタ306に出力する。
【0044】
図6は、これらループスタートアドレス、減算器308出力、及び加算器309出力の各データを示す説明図である。この図6において、ループスタートアドレスと減算器308出力の整数部下位3ビットのデータであるla、lbは、後述するように、現在値アドレスをループ範囲の先頭部分に戻すループ動作時においてステップ演算器310が積分ステップ信号を生成するための信号となるものである。
【0045】
データセレクタ306は、加算器305、及び309の演算結果を入力すると、比較器307から入力したその比較結果に従って何方か一方を選択、即ち比較結果がLのときは加算器305の演算結果、Hのときは加算器309の演算結果を選択して出力する。このデータセレクタ306から出力された演算結果は、現在値アドレスRAM301に新たに保持されることで現在値アドレスが更新され、また、その小数部は補間用小数部データとして積分補間回路103に出力される。
【0046】
比較器307がHを出力したときは、上記したように、加算器305の出力値がエンドアドレス値以上であることから、ループ範囲の先頭部分に戻って記憶データの読み出しを行うときである。即ち、比較器307は、ループ動作を行うか否かを指示するものであり、これの比較結果がループ信号として積分補間回路103に出力される。
【0047】
比較器307がHを出力したときの減算器308は、加算器305の出力値からエンドアドレス値を引いた値(以降、超過分と記す)を出力し、加算器309はこの値とループスタートアドレス値を加算している。即ち、このときの加算器309の出力値は、エンドアドレス値の超過分をループスタートアドレス値に加算した値である。この加算器309の出力値は、データセレクタ306を介して現在値アドレスRAM301に入力され、現在値アドレスとして新たに保持される。
【0048】
このアドレス更新部の動作を要略すると、次のようになる。
電子楽器の制御部により現在値アドレスRAM301に最初に保持された現在値アドレスは、エンドアドレス値を越えるまで、その値にアドレス歩進量が加算されることで順次更新される。アドレス歩進量を加算した値がエンドアドレス値を越えると、その超過分をループスタートアドレス値に加算し、この加算した値を新たな現在値アドレスとしてループを行うとともに、信号レベルをHとしたループ信号を積分補間回路103に出力する。
【0049】
次に、ステップ演算器310について説明する。
第1の実施例では、差分化圧縮浮動小数点方式を採用しているので、現在値アドレスの更新に対応させて積分指数値、及び積分波形値を更新しなければならない。しかし、上記したように、アドレス歩進量は整数部と小数部を有する値なので、現在値アドレスはアドレス歩進量が一定であってもその整数部の変化量が異なることになる。ステップ演算器310は、現在値アドレスの整数部における更新量、即ち波形メモリ101における読出アドレスの更新量を積分値ステップとして生成し、これを積分補間回路103に出力するものである。
【0050】
このステップ演算器310は、積分値ステップ信号を生成するために、現在値アドレスRAM301から読み出された現在値アドレスの整数部下位3ビットデータである信号naを始めとして、同様に加算器305の出力から信号nb、ループスタートアドレスRAM304から信号la、及び加算器309の出力から信号lbを各々入力し(図4及び図6参照)、さらに比較器307からループ信号を入力する。
【0051】
前述したように、現在値アドレスの更新は、その値がエンドアドレス値よりも小さいときに行われる通常アドレス更新時と、その値がエンドアドレス値以上となったときに行われるループ動作時とがある。
【0052】
ステップ演算器310は、通常アドレス更新時、即ちループ信号がLの場合、信号nbから信号naを減算した値を、ループ動作時、即ちループ信号がHの場合、信号lbから信号laを減算した値を積分ステップ信号として積分補間回路103に出力する。
【0053】
図5は、通常アドレス更新時における積分値ステップを示す説明図であり、図7は、ループ動作時における積分値ステップを示す説明図である。
第1の実施例では、上記したように、アドレス歩進量の整数部を2ビットとしている。このため、図5に示す如く、信号naと信号nbの値の組み合わせにより、積分値ステップの値は1〜4D(4D=100B)の範囲となる。これは、図7に示したループ動作時においても同じである。
【0054】
次に、アドレス生成器311の動作について説明する。アドレス生成器311は、データセレクタ306の出力値を始め、比較器307の比較結果、エンドアドレスRAM303が保持したエンドアドレス値、ステップ演算器310が出力した積分値ステップ信号を各々入力し、比較器307の比較結果に応じてアドレスの生成を行うものである。
【0055】
比較器307の比較結果がLのとき、アドレス生成器311は、通常アドレス更新時として、入力したデータセレクタ306の出力値、即ち現在値アドレスを切り上げ、或いは切り下げることで整数化する。現在値アドレスを整数化すると、これを基準とし、その値を減算することで得る3種類のアドレス値を生成し、これらを所定のタイミングで波形メモリ101にアドレスデータとして順次出力する。
【0056】
図8(a)は、この通常アドレス更新時にアドレス生成器311が出力するアドレスデータ例を示す説明図である。同図(a)に示す如く、その値が小さいほうから順に4つのアドレスデータが出力される。
【0057】
一方、比較器307の比較結果がHのとき、アドレス生成器311は、ループ動作時として、上記と同様に現在値アドレス値を整数化するとともに、エンドアドレス値に積分値ステップを加算したアドレス値と、そのアドレス値にさらに5を加算したアドレス値、及びループ範囲の先頭部分に戻した現在値アドレスを生成する。
【0058】
図8(b)は、このループ動作時にアドレス生成器311が出力するアドレスデータ例を示す説明図である。同図(b)に示すように、生成したアドレスデータが出力される。
【0059】
ここで、波形メモリ101に記憶されたループ範囲の記憶データについて図9を参照して説明する。図9(a)は、ループ範囲の先頭部分とエンドアドレス以降に記憶されたデータ例を示す説明図であり、同図(b)は、そのループ範囲の先頭部分の記憶データにより生成される楽音波形を示す説明図である。図9において、Lnはループスタートアドレス、EAはエンドアドレスである。
【0060】
第1の実施例では、上記したように、エンドアドレスEAからの超過分は最大で4Dであることから、ループ範囲の先頭部分に戻したときの現在値アドレスは、アドレスLn〜Ln+4の間となる。この先頭部分の記憶データから楽音波形を生成できるように、第1の実施例では、そのアドレスLn〜Ln+4の記憶データに対応した積分指数値、及び積分波形値を予め算出し、これをエンドアドレスEA以降に記憶したものである。
【0061】
即ち、ループスタートアドレスLnの記憶データまでの積分波形値IWV0、及び積分指数値IEV0をエンドアドレスEA、及びアドレスEA+5に各々記憶し、アドレスLn+1〜Ln+4の各記憶データに対応した積分波形値IWV1〜4、及び積分指数値IEV1〜4を同様にしてエンドアドレスEA以降に記憶させたものである。
【0062】
このため、例えば、ループスタートアドレスLnに現在値アドレスをループさせた場合、エンドアドレスEA、アドレスEA+5に記憶されたデータを読み出すことでそれに対応した楽音波形を正確に生成することができる。他のアドレスLn+1〜4においてもこれは同様である。
次に、積分補間回路103について、図10を参照して説明する。図10は、この積分補間回路103の回路構成を示すブロック図である。
【0063】
制御回路1001は、アドレスジェネレータ102から積分値ステップ信号、及びループ信号を入力し、これらの信号に基づいて、sub、sel1、sel2、clr1、及びclr2の各種信号を生成して出力することで、全体的な制御を行うものである(各種信号については後述する)。
【0064】
データレジスタ1002は、波形メモリ101が出力した記憶データをストアし、これをデータセレクタ1003、及びシフタ1004に出力する。この記憶データは浮動小数点データであることから、データレジスタ1002は、記憶データとともに、その指数部のみのデータをデータセレクタ1003に出力している。
【0065】
データセレクタ1003は、制御回路1001からセレクト信号sel2、制御信号clr2を入力し、各信号に応じて動作する。具体的には、セレクト信号sel2の値が0のときはデータレジスタ1002から入力した指数部データ、1のときはそれがストアした記憶データ(浮動小数点データ)、2のときはシフタ1004から入力したデータを選択し、制御信号clr2の値により、この値が0のときはこのようにして選択したデータを加減算器1005に出力し、この値が1のときはデータの出力を停止(このときのデータ値は0)する。
【0066】
シフタ1004は、データレジスタ1002から入力した記憶データの仮数部を加減算器1005から入力した演算結果に応じてシフトすることにより伸長する。即ち、波形差分値を復号するとともに、浮動小数点データから固定小数点データに変換するものである。
【0067】
積分指数値RAM1007は、現在の積分指数値を記憶するものである。この積分指数値RAM1007は制御回路1001により制御され、後述するタイミングで加減算器1005の演算結果の書き込みを行うことで、波形メモリ101からの記憶データの読み出しに応じて積分指数値を更新する。
【0068】
積分波形値RAM1008は、現在の積分波形値を記憶するものである。積分指数値RAM1007と同様に、この積分波形値RAM1008は制御回路1001により制御され、後述するタイミングで加減算器1005の演算結果の書き込みを行うことで、波形メモリ101からの記憶データの読み出しに応じて積分波形値を更新する。
【0069】
データセレクタ1006は、積分指数値RAM1007、及び積分波形値RAM1008から読み出されたデータを入力し、制御回路1001から入力したセレクト信号sel1、制御信号clr1に応じて動作する。具体的には、セレクト信号sel1の値が0のときは積分波形値RAM1008から入力した積分波形値データ、1のときは積分指数値RAM1007から入力した積分指数値データを選択し、制御信号clr1の値により、この値が0のときはこのようにして選択したデータを加減算器1005に出力し、この値が1のときはデータの出力を停止(このときのデータ値は0)する。
【0070】
加減算器1005は、データセレクタ1003、及びデータセレクタ1006から入力したデータの加減算を行うものである。この加減算器1005は、制御回路1001から制御信号subを入力し、その信号の値が0のときは加算、1のときは減算を行う。加減算器1005の演算結果は、前述したシフタ1004の他に、積分指数値RAM1007、積分波形値RAM1008、及びデータレジスタ1009に各々出力される。
【0071】
データレジスタ1009は、補間演算を行うために、加減算器1005の演算結果を保持するものである。乗算器1010は、アドレスジェネレータ102が出力した補間用小数部データとシフタ1004が出力した波形差分値の乗算を行い、この乗算結果を加算器1011に出力する。加算器1011は、乗算器1010から乗算結果を入力すると、この乗算結果とデータレジスタ1009が保持している積分波形値の加算を行い、この加算結果を出力する。この加算結果が補間演算回路103から出力される波形出力となる。
【0072】
以上の補間演算回路103の動作を通常アドレス更新時、ループ動作時に分け、図11、図12を参照して説明する。図11は、通常アドレス更新時における各部の動作状態を示すタイミングチャートであり、図12は、ループ動作時における各部の動作状態を示すタイミングチャートである。
【0073】
図2と同様に、図11において、An、An+1〜3はアドレスジェネレータ102から波形メモリ101に出力されたアドレスデータであり、dn、dn+1〜3はそのアドレスデータにより読み出された記憶データである。
【0074】
先ず、積分補間回路103の基本的な動作を、図11(a)を参照して説明する。ここで、図11(a)において、op1〜op8は加減算器1005が行う演算処理を示すものであり、An+3は現在値アドレスである。
【0075】
例えば、アドレスジェネレータ102から波形メモリ101にアドレスデータAnが出力されると、そのアドレスデータAnで指定されるアドレスから記憶データdnが読み出され、図に示すタイミングでデータレジスタ1002にストアされる。
【0076】
データセレクタ1006に入力されるセレクト信号sel1は、データレジスタ1002がデータdnをストアしている間に、その値を1から0、即ち積分指数値RAM1007から積分波形値RAM1008にその選択する出力を切り換える。一方のデータセレクタ1003に入力されるセレクト信号sel2は、同様にしてその値を0から2、即ちデータレジスタ1002にストアされた記憶データの指数部データから、加減算器1005の演算結果によりシフタ1004が復号した記憶データdnの波形差分値に選択する出力を切り換える。
【0077】
加減算器1005は、この間、即ちデータレジスタ1002がデータdnをストアしている間、op1、op2で示す演算処理を実行し、この演算結果を出力する。以降、データレジスタ1002が他の記憶データをストアする毎に、各部は同様な動作を行う。ここで、図10では制御回路1001から制御信号eslがデータレジスタ1003に出力され、補間用小数部データがシフタ1004に入力されているが、これは後述するように、第2の実施例においてのものである。
【0078】
積分指数値RAM1007、積分波形値RAM1008がその記憶している内容の更新を行う場合を例にとると、上記この動作の要略は以下のようになる。
即ち、演算処理op1が行われるタイミングでは、データセレクタ1003はデータレジスタ1002から出力された差分化指数部のデータを選択し、データセレクタ1006は積分指数値RAM1007から出力された積分指数値を選択し、加減算器1005は、この差分化指数部データと積分指数値を加算する。この加算結果は、シフタ1004に入力されるとともに、積分指数値RAM1007に新たな積分指数値として書き込まれ、積分指数値が更新される。
【0079】
演算処理op2が行われるタイミングでは、シフタ1004は演算処理op1で加減算器1005から入力した演算結果に従ってデータdnの仮数部を伸長したデータ、即ち復号した波形差分値をデータセレクタ1003に出力しており、この波形差分値は加減算器1005にデータセレクタ1003を介して出力される。このとき、データセレクタ1006は、積分波形値RAM1008が出力した積分波形値を加減算器1005に出力しており、加減算器1005は、この積分波形値と波形差分値を加算する。この加算結果は、積分波形値RAM1008に書き込まれ、これにより、積分波形値が更新される。
【0080】
データレジスタ1002が波形メモリ101から読み出された記憶データをストアする毎にこのような動作が行われる。これにより、積分指数値RAM1007、及び積分波形値RAM1008が記憶している内容は、波形メモリ101から記憶データを読み出すアドレスに応じて更新される。
【0081】
次に、積分値ステップの大きさに応じての各部の動作について説明する。この積分値ステップは、上述したように、アドレスジェネレータ102から積分補間回路103(実際には制御回路1001)に出力される、波形メモリ101のアドレスの更新量である。
【0082】
先ず、図11(a)及び(b)を参照して、この積分値ステップが0のときの動作について説明する。
図11(b)は、積分指数値RAM1007、及び積分波形値RAM1008がアドレスAn+3(現在値アドレス)までの積分指数値、積分波形値を各々既に記憶された場合の動作例を示している。このため、特には図示していないが、図11(b)において、これらのRAM1007、1008は各々書き込みは行われないように制御回路1001が制御を行っている。
【0083】
この積分値ステップが0のときにおいて、補間演算を行う場合、必要となるデータは数1から分かるように、アドレスAn+2までの積分波形値と、アドレスAn+3における波形差分値と、補間用小数部データである。補間用小数部データは、アドレスジェネレータ102から出力されるので、この積分波形値と波形差分値を得なければならない。
【0084】
図11(b)において、演算処理op8が行われるときだけ制御信号clr2は0(このとき、セレクト信号sel2で選択されたものが出力される)、制御信号subは1(減算)となっている。演算処理op7において、シフタ1004には加減算器1005からアドレスAn+3までの積分指数値が出力されているので、シフタ1004はこのアドレスAn+3に対応する波形差分値を出力している。
【0085】
従って、この演算処理op8では、アドレスAn+3までの積分波形値からそのときの波形差分値を減算した値が加減算器1005からデータレジスタ1009に出力される。一方、乗算器1010は、補間用小数部データとこのときのシフタ1004の出力値を乗算した結果を出力している。このため、データレジスタ1009がストアしている値と乗算器1010の乗算結果を加算器1011で加算することで、楽音波形(の振幅値)が生成されることになる。
【0086】
なお、この加算器1011の加算結果が積分補間回路103が生成した波形の出力となるが、加算器1011の出力は演算処理OP8が行われるタイミングでこれが楽音出力部に入力されるようになっている。即ち、演算処理op1〜op7までの間、加算器1011からの出力は無視される。
【0087】
図11(c)は、積分値ステップが1のときの動作例を示す。この動作例においては、演算処理op7で積分指数値の更新が行われ、演算処理op8で積分波形値の更新が行われたことを示している。
【0088】
図11(d)、図11(e)、図11(f)は、積分値ステップが2のとき、積分値ステップが3のとき、積分値ステップが4のときの動作例を各々示している。これらの図から、積分値ステップの値に応じて積分指数値、積分波形値の更新が行われることが分かる。
【0089】
次に、ループ動作時における各部の動作について、図12を参照して説明する。図12は、ループ動作時における各部の動作状態例を示すタイミングチャートである。
【0090】
図12に示す如く、このループ動作時においては、演算処理op3〜6が行われる間、制御信号clr1は1、セレクト信号sel2は1、制御信号clr2は0である。このため、加減算器1005からは、演算処理op3及び4ではデータレジスタ1002がストアしている積分波形値IWVxが出力され、演算処理op5及び6ではデータレジスタ1002がストアしている積分指数値IEVxが出力される。
【0091】
制御回路1001は、演算処理op4が行われたときに加減算器1005の演算結果を積分波形値RAM1008に書き込ませ、演算処理op5が行われたときに加減算器1005の演算結果を積分指数値RAM1007に書き込ませる。これにより、積分指数値RAM1007、及び積分波形値RAM1008は、ループ動作、即ち現在値アドレスのループ範囲の先頭部分への移行に対応してその記憶した内容を書き換えることになる。
【0092】
演算処理op7では、制御信号clr2が1であることから、加減算器1005は積分指数値RAM1007から出力された積分指数値を演算結果として出力する。このとき積分指数値RAM1007が記憶している積分指数値は、記憶データdn+xまでの差分化指数部を累算したものである。このため、シフタ1004は、加減算器1005の演算結果に応じてこの記憶データdn+xの仮数部を伸長することで、この波形差分値を正確に復号することができる。
【0093】
演算処理op8では、積分波形値RAM1008から出力された積分波形値とこのシフタ1004が復号した波形差分値の減算が行われる。これにより、加減算器1005からは、このアドレスLn+xの一つまえまでの積分波形値がデータレジスタ1009に出力される。
【0094】
一方、このとき乗算器1010は、シフタ1004から入力した波形差分値と補間用小数部データを乗算した値を加算器1011に出力している。この乗算器1010が乗算した値とデータレジスタ1009にストアされた積分波形値を加算器1011により加算することで、ループ動作時における楽音波形が正確に生成される。
【0095】
このように、ループ範囲の先頭部分に現在値アドレスを戻してもその先頭部分の記憶データから楽音波形を正確に生成できる。このため、音をサンプリングする期間を短縮できることから、記憶データ量を低減することができるとともに、楽音波形の生成を持続させることができる。また、ループ範囲の先頭部分の記憶データからの楽音波形の生成は、この先頭部分の楽音波形を生成するために保持したデータ(生成情報)を用いて行うことから、この保持するデータを変更することにより、ループ範囲を任意、且つ容易に変更することができる。なお、このループ動作時以降は、通常アドレス更新時の動作となる。
【0096】
次に、第2の実施例について説明する。この第2の実施例は、2つの仮数部が1つの差分化指数部を共通とした記憶データを波形メモリ101に記憶したものであり、その構成は第1の実施例の構成と略同じである。このため、第1の実施例と同じ符号を用いて第1の実施例から異なる部分だけ説明する。
【0097】
図13(a)は、波形メモリ101に記憶された記憶データのフォーマットを示す説明図であり、同図(b)は、この記憶データにより生成される楽音波形を示す説明図である。
【0098】
図13(a)に示す如く、第2の実施例は、波形メモリ101の1つのアドレスは16ビットであり、この16ビットのうち2ビットを差分化指数部、残りの14ビットをそれぞれ7ビットの仮数部とした記憶データである。このため、波形メモリ101から1つのアドレスの記憶データを読み出すことで、図13(b)に示す如く、2つの波形差分値を得ることができる。
【0099】
ここで、図13(b)における各記号は、例えば、Dn−1及びDm−1はこのアドレスAn−1に記憶された波形差分値、En−1はこのアドレスAn−1に記憶された差分化指数部の値を示すものである。
【0100】
上記したように、第2の実施例では、1つのアドレスに記憶された記憶データは2つの仮数部を有している。このため、アドレスジェネレータ102は、以下のように波形メモリ101から記憶データを読み出すアドレスを決定する。
【0101】
図14は、各部から出力されるデータを示す説明図であり、同図(a)は現在値アドレスRAM301から出力されるデータ(現在値アドレス)、アドレス歩進量RAM302から出力されるデータ(アドレス歩進量)、及び加算器305の出力データを示している。
【0102】
図14(a)に示したように、第2の実施例では、12ビットの整数部と5ビットの小数部の間にセレクトビットを割り当てている。このセレクトビットは、1つのアドレスに2つ記憶されている2つの仮数部の何方を選択するかを指示するためのものである。例えば、アドレスAn−1が指定された場合において、セレクトビットの値が0のときは仮数部Dn−1が選択され、1のときは仮数部Dm−1が選択される。
【0103】
このセレクトビットは、第1の実施例における整数部の下位1ビットに対応するものである。このため、加算器305は、現在値アドレスとアドレス歩進量を単に加算し、この加算結果を出力する。
【0104】
図14(b)は、ループスタートアドレスRAM304から出力されるデータ、減算器308の出力データ、及び加算器309の出力データを示している。この説明図である。
【0105】
上記した加算器305の加算結果が現在値アドレスとされるのは通常アドレス更新時であり、加算器309の加算結果が現在値アドレスとされるときは、ループ動作時である。図14(b)に示す如く、このループ動作時においても通常アドレス更新時と同様にセレクトビットが割り当てられている。
【0106】
図15(a)は、第2の実施例におけるループ範囲の先頭部分とエンドアドレス以降に記憶されたデータを示す説明図であり、同図(b)は、この先頭部分の記憶データにより生成される楽音波形を示す説明図である。
【0107】
第2の実施例は、図15(a)に示す如く、ループ範囲の先頭部分の記憶データに対応した積分波形値IWV0〜4をエンドアドレスEAからアドレスEA+4に各々記憶させ、積分指数値IEV0〜4をアドレスEA+5に全て記憶させたものである。この第2の実施例では、それを表現するためのビット数が少なくて済む積分指数値IEV0〜4をアドレスEA+5に全て記憶させることで、波形メモリ101の使用効率の向上、即ち記憶データの記憶に要する領域を低減させている。
【0108】
このため、第2の実施例では、ループ動作時におけるアドレス生成器311から出力されるアドレスデータは、図8(b)において、エンドアドレスEAと積分値ステップを加算したアドレスデータが出力された後、エンドアドレスEAに5を加算したアドレスデータが出力されることになる。ここで、第2の実施例では1つのアドレスに2つの仮数部を有する記憶データとしているが、各積分波形値IWV0〜4、及び積分指数値IEV0〜4は第1の実施例の場合と同様に、ループ範囲の先頭部分のそのアドレスまで累算した積分波形値、積分指数値である。
【0109】
次に、第2の実施例による積分補間回路103について説明する。先ず、図10を参照して、第1の実施例から異なる主な点について説明する。
上記したように、第2の実施例による積分補間回路103は、制御回路1001から制御信号eslがデータセレクタ1003に出力され、アドレスジェネレータ102が出力した補間用小数部データが乗算器1010の他にシフタ1004に入力される。
【0110】
この制御信号eslは、1つのアドレスにまとめて記憶された積分指数値(生成情報)を選択するための制御信号である。例えば、データセレクタ1003がデータレジスタ1002を介してアドレスEA+5に記憶された積分指数値IEV0〜4を入力すると、制御信号eslの値が0のときは積分指数値IEV0を選択し、その値が1のときは積分指数値IEV1を、その値が2のときは積分指数値IEV2を、その値が3のときは積分指数値IEV3を、その値が4のときは積分指数値IEV4を選択する。
【0111】
シフタ1004は、データレジスタ1002から記憶データを入力し、加減算器1005から入力した演算結果(積分指数値)に応じてその記憶データの2つの仮数部を伸長し、別々に順次データセレクタ1003に出力する。また、入力した補間用小数部データのセレクトビット(この補間用小数部データの最上位ビットである)に従って復号した波形差分値を選択し、これを乗算器1010に出力する。
【0112】
以上が第1の実施例から異なる主な点である。次に図16を参照して、通常アドレス更新時における動作を説明する。図16は、通常アドレス更新時における各部の動作状態例を示すタイミングチャートである。
【0113】
図16に示す如く、第2の実施例では1つのアドレスに記憶された記憶データが2つの仮数部を有することから、データレジスタ1002が1つの記憶データを記憶している間に3回の演算処理が実行される。
【0114】
図16(a)の基本動作において、例えば、データレジスタ1002が記憶データdnをストアしている間には、以下のような基本動作が行われる。
演算処理op1が行われるタイミングでは、セレクト信号sel1が1でセレクト信号sel2が0であることから、加減算器1005は積分指数値RAM1007から入力した積分指数値とデータレジスタ1002から入力した差分化指数部を加算する。この加算結果は、シフタ1004に入力されるとともに、積分指数値RAM1007に書き込まれる。これにより、積分指数値が更新されることになる。
【0115】
演算処理op2が行われるタイミングでは、セレクト信号sel1が0でセレクト信号sel2が2であり、このときシフタ1004は演算処理op1における加減算器1005の演算結果に応じて復号した波形差分値の一方(セレクトビットが0で指定される方)をデータセレクタ1003に出力している。加減算器1005は、データセレクタ1003を介して入力したこの復号した波形差分値と積分波形値RAM1008から入力した積分波形値の加算を行う。この加算結果は、積分波形値1008に書き込まれ、その積分波形値が更新されるが、制御回路1001はシフタ1004がこの加算結果を入力しないように制御することで、シフタ1004は演算処理op1で入力した積分指数値を維持する。
【0116】
演算処理op3が行われるタイミングでは、セレクト信号sel1が0でセレクト信号sel2が2である。このときシフタ1004は、演算処理op1で入力した演算結果に応じて伸長した仮数部の他方(セレクトビットが1で指定される方)をデータセレクタ1003に出力している。加減算器1005は、データセレクタ1003を介して入力したこの復号した波形差分値と積分波形値RAM1008から入力した積分波形値の加算を行う。この加算結果は積分波形値RAM1008に書き込まれ、積分波形値が更新される。
【0117】
データレジスタ1002が新たな記憶データをストアする毎にこのような動作が行われる。これにより、積分指数値RAM1007、積分波形値RAM1008は、波形メモリ101から記憶データを読み出す現在値アドレスの更新に応じてその記憶した内容を更新することになる。
【0118】
次に、図16(a)、及び同図(b)を参照して、積分値ステップが0のときの動作を説明する。
図16(b)は、積分指数値RAM1007、及び積分波形値RAM1008がアドレスAn+3(現在値アドレス)までの積分指数値、積分波形値を各々既に記憶された場合の動作例を示している。このため、特には図示していないが、これらのRAM1007、1008が各々書き込みを行わないように制御回路1001が制御を行っている。
【0119】
図16(b)において、演算処理op11、及び12が行われるときだけ制御信号clr2は0であり、このときの制御信号subは1(減算)となっている。演算処理op10において、加減算器1005からアドレスAn+3までの積分指数値をシフタ1004は入力しているので、このときのシフタ1004はこのアドレスAn+3に対応する波形差分値を演算処理op11、及びop12において各々出力している。
【0120】
従って、演算処理op11、及び12が行われることで、データレジスタ1009は記憶データdn+2までの積分波形値をストアすることになる。一方、乗算器1010は、補間用小数部データとこのときシフタ1004が選択して出力している波形差分値を乗算しており、この乗算器1010の乗算結果とデータレジスタ1009がストアしている積分波形値を加算器1011が加算することで、楽音波形が生成される。
【0121】
図16(c)は、積分値ステップが1のときの動作例を示す。この動作例においては、演算処理op10で積分指数値の更新が行われ、演算処理op11、及び12で積分波形値の更新が行われたことを示している。
【0122】
図16(d)、図16(e)、図16(f)は、積分値ステップが2のとき、積分値ステップが3のとき、積分値ステップが4のときの動作例を各々示している。これらの図から、積分値ステップの値に応じて積分指数値、積分波形値の更新が行われることが分かる。
【0123】
次に、ループ動作時における各部の動作について、図17を参照して説明する。図17は、ループ動作時における各部の動作状態例を示すタイミングチャートである。
【0124】
図17に示す如く、このループ動作時においては、演算処理op4〜9が行われる間、制御信号clr1は1、セレクト信号sel2は1、制御信号clr2は0である。このため、加減算器1005からは、演算処理op4〜6ではデータレジスタ1002がストアしている積分波形値IWVxが出力され、演算処理op7〜9ではデータレジスタ1002がストアしている積分指数値IEVxが出力される。
【0125】
制御回路1001は、演算処理op6が行われたときに加減算器1005の演算結果を積分波形値RAM1008に書き込ませ、演算処理op7が行われたときに加減算器1005の演算結果を積分指数値RAM1007に書き込ませる。これにより、積分指数値RAM1007、及び積分波形値RAM1008は、ループ動作、即ち現在値アドレスのループ範囲の先頭部分への移行に対応してその記憶した内容を書き換えることになる。
【0126】
演算処理op10では、制御信号clr2が1であることから、セレクト信号sel2の値に係わらず、加減算器1005は積分指数値RAM1007から出力された積分指数値を演算結果として出力する。このとき積分指数値RAM1007が記憶している積分指数値は、記憶データdn+xまでの差分化指数部を累算したものである。このため、シフタ1004は、加減算器1005の演算結果に応じてこの記憶データdn+xの2つの仮数部を伸長することで、波形差分値を正確に復号することができる。
【0127】
演算処理op11では、積分波形値RAM1008から出力された積分波形値からこのシフタ1004が復号した一方の波形差分値を引く減算が行われ、演算処理op12では、演算処理op11で加減算器1005が出力した積分波形値からシフタ1004が復号した他方の波形差分値を引く減算が行われる。これにより、加減算器1005からは、このアドレスLn+xの一つまえまで(Ln+x−1)の積分波形値がデータレジスタ1009に出力される。
【0128】
一方、このときシフタ1004は、補間用小数部データのセレクトビットで選択した波形差分値を乗算器1010に出力しており、乗算器1010は、シフタ1004から入力した波形差分値と補間用小数部データを乗算した値を加算器1011に出力している。この乗算器1010が乗算した値とデータレジスタ1009にストアされた積分波形値を加算器1011により加算することで、ループ動作時における楽音波形が正確に生成される。
【0129】
このように、第2の実施例においても第1の実施例と同様の効果があるが、この第2の実施例では、1つの差分化指数部を2つの仮数部に共通させ、更にループ動作時に用いる積分指数値を1つのアドレスにまとめて波形メモリ101に書き込んでいるため、波形メモリ101が記憶させるデータ量をより低減できるという効果がある。
【0130】
なお、第1及び第2の実施例(本実施例)では、ループ動作時に用いる生成情報(複数の積分波形値、及び積分指数値)を予めエンドアドレス以降に記憶させているが、楽音波形の生成には順次積分波形値、及び積分指数値を更新しなければならないことから、そのループ範囲の先頭部分の積分波形値、積分指数値を更新した時点でこれを生成情報として保持するようにしても良い。これは、数多くの音色を備えた音源装置等において、データ量を低減するのに効果的である。
【0131】
【発明の効果】
以上、説明したように本発明の波形読出装置は、ループ範囲の波形データから楽音波形を生成するための生成情報を保持し、このループ範囲の指定が繰り返されたとき、それまで楽音波形の生成に用いていた情報をこの生成情報に置き換え、このループ範囲内の波形データによる楽音波形の生成を行うため、楽音波形の生成を正確に持続させることができ、また、楽音波形の生成を正確に持続できることから、音(楽音)のサンプリング期間を短縮することができるので、波形データのデータ量を低減することができる。
【図面の簡単な説明】
【図1】第1の実施例による波形読出装置の構成を示すブロック図である。
【図2】記憶データのフォーマットを示す説明図(a)、記憶データにより生成される楽音波形を示す説明図(b)である。
【図3】アドレスジェネレータの回路構成を示すブロック図である。
【図4】各部から出力されるデータを示す説明図である。
【図5】通常アドレス更新時における積分値ステップを示す説明図である。
【図6】各部から出力されるデータを示す説明図である。
【図7】ループ動作時における積分値ステップを示す説明図である。
【図8】アドレス生成器が出力するアドレスデータ例を示す説明図である。
【図9】ループ範囲の先頭部分とエンドアドレス以降に記憶されたデータを示す説明図(a)、ループ範囲の先頭部分の記憶データにより生成される楽音波形を示す説明図(b)である。
【図10】積分補間回路の回路構成を示すブロック図である。
【図11】通常アドレス更新時における各部の動作状態例を示すタイミングチャートである(第1の実施例)。
【図12】ループ動作時における各部の動作状態例を示すタイミングチャートである(第1の実施例)。
【図13】記憶データのフォーマットを示す説明図(a)、記憶データにより生成される楽音波形を示す説明図(b)である(第2の実施例)。
【図14】各部から出力されるデータを示す説明図である(第2の実施例)。
【図15】ループ範囲の先頭部分とエンドアドレス以降に記憶されたデータを示す説明図(a)、ループ範囲の先頭部分の記憶データにより生成される楽音波形を示す説明図(b)である(第2の実施例)。
【図16】通常アドレス更新時における各部の動作状態例を示すタイミングチャートである(第2の実施例)。
【図17】ループ動作時における各部の動作状態例を示すタイミングチャートである(第2の実施例)。
【符号の説明】
100 波形読出装置
101 波形メモリ
102 アドレスジェネレータ
103 積分補間回路
301 現在値アドレスRAM
302 アドレス歩進量RAM
303 エンドアドレスRAM
304 ループスタートアドレスRAM
310 ステップ演算器
311 アドレス生成器
1001 制御回路
1003、1006 データセレクタ
1004 シフタ
1005 加減算器
1007 積分指数値RAM
1008 積分波形値RAM[0001]
[Industrial applications]
The present invention relates to a waveform reading apparatus for generating a waveform by reading, from a storage means, waveform data in which a difference between amplitude values of a waveform is encoded into floating-point data including a mantissa part and an exponent part using a predetermined waveform compression method. About.
[0002]
Problems to be solved by the prior art and the invention
In recent years, for example, digitalization has been advanced in electronic musical instruments, and computer technology has been widely introduced. For this reason, in an electronic musical instrument, a PCM digital sound source device (PCM sound source device) that generates (reproduces) a waveform by digital processing is widely mounted.
[0003]
In the PCM system, a sound (musical sound) emitted from a natural musical instrument or the like is sampled at a predetermined sampling cycle, and a sample value obtained by the sampling is quantized and converted into binary code to form waveform data. , The PCM tone generator has a memory that stores or stores such waveform data. A waveform reading device mounted on such a PCM tone generator reads waveform data from a memory and generates a waveform, and the PCM tone generator reproduces a musical tone using the waveform generated by the waveform reading device. Things.
[0004]
The PCM method has the advantage that the timbres of various sounds in the natural world can always be faithfully reproduced. However, in order to reproduce a sound having excellent frequency characteristics and an excellent S / N ratio, it is necessary to sample the sound at a high sampling frequency and quantize the sample value obtained thereby with a large number of bits. For this reason, the PCM method has a problem that a large-capacity memory is required to store waveform data.
[0005]
In order to avoid this problem, many waveform compression methods for compressing waveform data have been developed. For example, a DPCM method in which a difference value of waveform data is stored in a memory is a typical example. In some cases, the waveform data is converted into floating-point data including an exponent part and a mantissa part, thereby maintaining high data accuracy and reducing the amount of data (floating-point method). One of the decimal point methods is a differential compression floating point method.
[0006]
In this differential compression floating-point method, the difference value of the amplitude value of a waveform is not simply represented by floating-point data, but its exponent is further represented by a difference value, that is, a value obtained by accumulating the exponent up to that point ( Hereinafter, the difference value from the integral exponent value) is used as the value of the exponent part. Therefore, when this method is used, the data amount can be further reduced as compared with a case where the DPCM method and the floating point method are simply combined. In addition, in this method, there is a method in which one exponent part is shared by a plurality of mantissa parts to further reduce the data amount.
[0007]
The waveform data encoded by this method is first decoded by sequentially accumulating the exponent part, and then the mantissa part is decoded using the decoded exponent part (integral exponent value), that is, the waveform is decoded. The difference value of the amplitude value is decoded, and finally, the decoded difference value is sequentially accumulated to decode the amplitude value of the waveform.
[0008]
Incidentally, a general waveform reading apparatus has a loop function as a function for reducing the amount of waveform data stored in a memory. This function is a function of repeatedly reading out a part (loop range) of the waveform data stored in the memory to generate a waveform.
[0009]
Most natural instruments have long duration sounds, so sampling all of the sounds would result in a huge amount of data. However, since the generation of a waveform (reproduction of a musical tone) can be continued by this loop function, the amount of data stored in the memory can be significantly reduced. The waveform generated by the loop function can be attenuated by adding an envelope.
[0010]
The loop range that is repeatedly read by the loop function is usually managed by a start address (point) and an end address (point). However, when the waveform data is stored in the memory by the above-described differential compression exponent floating point method, for example, after reading out the waveform data to the end address, returning to the start address and reading out the waveform data, the exponent portion of the waveform data is read. , And the mantissa are each encoded with a difference value, so that the waveform data stored at this start address is decoded using an integral index value or the like accumulated up to that point, and a waveform cannot be accurately generated. There was a problem.
[0011]
Although the amount of waveform data can be reduced by the differential compression exponent floating-point method, the amount of waveform data increases according to the length of the sampling period. There has been a demand for a waveform reading device capable of maintaining the above.
[0012]
In order to avoid such a problem, there is a waveform reading apparatus that selects an address at which the amplitude value of the waveform data stored therein becomes 0 as a start address and an end address. However, in this waveform reading device, since an arbitrary loop range cannot be selected, there is a problem that a waveform of a desired portion cannot be generated, and a problem that a complicated operation for detecting the address is required.
[0013]
Another type of waveform reading device corrects waveform data (difference value) stored in a memory so that the average value of waveform data in the loop range becomes zero. However, in this device, when applied to a sound source device in which many types (tone colors) of waveform data are stored, the above-described correction must be performed for each type, and the work required for the correction becomes extremely complicated. There was a problem. In addition, there is also a problem that the sound quality of the reproduced musical tone may be deteriorated by this correction.
[0014]
An object of the present invention is to provide a waveform reading device that further reduces the data amount when waveform data obtained by encoding a difference value between waveform amplitude values is stored, and that accurately maintains waveform generation. It is in.
[0015]
[Means for Solving the Problems]
According to the waveform reading apparatus of the present invention, first, a waveform data in which a difference value of the amplitude value of a waveform is encoded into floating-point data including a mantissa part and an exponent part using a predetermined waveform compression method.And generation information for generating a waveform amplitude value from waveform data within a preset loop range.Is stored.
[0016]
In this storage means, for example, floating point dataAre stored in the same storage location as a predetermined number N of mantissa parts and a differential exponent part having an exponent part shared by the predetermined number N as a difference value.From the top of the loop range, the waveform data and the amplitude value and integral exponent value of the waveform corresponding to the number of storage locations based on the maximum value of the step amount of the storage location corresponding to the pitch are stored.
[0017]
The designation means specifies a storage location from which the waveform data is read from the storage means.At a predetermined timingWhile sequentially specifying, the storage location within the loop range of the waveform data stored in the storage means is repeatedly specified.
[0018]
The waveform generating means reads the waveform data from the storage location specified by the specifying means., At a first arithmetic processing timing obtained by dividing the predetermined timing by N + 1,The difference exponent part is sequentially accumulated to generate an integral exponent value,At the second and subsequent arithmetic processing timings,Expand the mantissa using the generated integral index value., Corresponding to each of the arithmetic processing timingsA difference value is generated, a waveform is generated by sequentially accumulating the generated difference value, and when the designating means returns to the head portion in the loop range and designates a storage location, the mantissa read from the storage location is designated. A difference value is generated using the integral index value of the generated information corresponding to the storage location and the storage location, and a waveform is generated using the amplitude value of the generated information corresponding to the storage location.
[0020]
[Action]
The waveform reading device of the present invention generates a waveform from waveform data in a loop range.DoWhen the designation of the loop range is repeated, the information used for generating the waveform is replaced with the generated information, and the waveform is generated by the waveform data in the loop range. Thus, the loop range can be arbitrarily specified, and the waveform to be generated within the loop range is accurately generated.
[0021]
For example, when the differential compression floating-point method is adopted as the waveform compression method, for example, in order to decode the waveform data at the beginning of the loop range, the integral exponent value and the integral waveform value corresponding to the waveform data are generated. When the loop range specification is repeated and the first waveform data is specified again, the difference value of the amplitude value is decoded using the integral index value of the generation information, and the decoded difference value is generated as the generation information. A waveform is generated by adding the integral waveform value to
[0022]
【Example】
Hereinafter, embodiments of the present invention will be described in detail in the order of the first embodiment and the second embodiment with reference to the drawings.
[0023]
FIG. 1 is a block diagram showing a configuration of a
[0024]
As shown in FIG. 1, the
[0025]
The schematic operation of the above configuration will be described.
The
[0026]
Although details will be described later, the
[0027]
Here, the storage data stored in the
[0028]
In FIG. 2, a symbol whose head is "A" indicates an address, and in the other symbols, "E" indicates an exponent part (value) of stored data, and "D" indicates a waveform difference value. Subscripts such as n and n + 1 in each symbol indicate a given position and displacement from this position (hereinafter, the same applies to other symbols, and unless otherwise limited, “x” is a subscript. Do).
[0029]
In FIG. 2A, each frame represents one bit (the same applies to other drawings hereinafter). In the first embodiment, the exponent part (differential exponent part) is two bits and the mantissa part. Indicates that a total of 8 bits of 6 bits are stored in the
[0030]
In the differential compression exponent floating-point method adopted in the first embodiment, when a musical tone is sampled, the difference between the amplitude values obtained this time and the previous time is encoded into floating-point data, and the exponent part is converted to an exponent. This is the difference value in the section.
[0031]
Therefore, in order to generate a musical tone waveform for each address from the stored data stored in the
[0032]
The generation of the musical tone waveform is performed not only for each address according to the speed at which the stored data is read (address increment), but also for obtaining an amplitude value between a certain address and the next address, that is, interpolation. In many cases, (operation) must be performed.
[0033]
In the interpolation calculation in this case, for example, if an interpolation calculation (linear interpolation calculation) is performed between addresses An + 2 and An + 3, as can be seen from the tone waveform shown in FIG. Is the integral value of IW, the difference value stored as floating point data at address An + 2 is DW,AnAssuming that the difference from +2 to the position where the amplitude value is to be obtained (usually, the address is increased by one, this value is a ratio to the address expressed as a decimal number) is DA, and the amplitude value W is as follows: It can be calculated as follows.
[0034]
(Equation 1)
W = IW + DW · DA
The
[0035]
The above is the schematic operation. Next, the
[0036]
The address updating unit includes a current value address RAM (Random Access Memory) 301, an
[0037]
In this configuration, the operation of the address updating unit will be described first. Each of the
[0038]
The current
[0039]
FIG. 4 is an explanatory diagram showing data output from each unit, and shows each data of the current value address, the address increment, and the output of the adder 305 (operation result).
[0040]
As described above, since each frame represents one bit, as shown in FIG. 4, the current value address is a total of 12 bits for the integer part and 6 bits for the decimal part.18This indicates that the address increment is 2 bits of the integer part and 6 bits of the decimal part, that is, a total of 8 bits of data. The output of the
[0041]
Here, in FIG. 4, as described later, the
[0042]
The comparator 307 compares the output value of the
[0043]
The
[0044]
FIG. 6 is an explanatory diagram showing each data of the loop start address, the output of the
[0045]
When the
[0046]
When the comparator 307 outputs H, as described above, since the output value of the
[0047]
When the comparator 307 outputs H, the
[0048]
The operation of the address updating unit is summarized as follows.
The current value address initially held in the current
[0049]
Next, the
In the first embodiment, since the differential compression floating-point method is employed, the integral index value and integral waveform value must be updated in accordance with the update of the current value address. However, as described above, since the address increment is a value having an integer part and a decimal part, even if the address increment is constant, the change amount of the integer part of the current value address is different. The
[0050]
In order to generate an integrated value step signal, the
[0051]
As described above, the update of the current value address is performed at the time of the normal address update performed when the value is smaller than the end address value, and at the time of the loop operation performed when the value becomes equal to or more than the end address value. is there.
[0052]
The
[0053]
FIG. 5 is an explanatory diagram showing an integral value step when updating a normal address, and FIG. 7 is an explanatory diagram showing an integral value step during a loop operation.
In the first embodiment, as described above, the integer part of the address increment is 2 bits. Therefore, as shown in FIG. 5, the value of the integral value step is in the range of 1 to 4D (4D = 100B) depending on the combination of the values of the signal na and the signal nb. This is the same during the loop operation shown in FIG.
[0054]
Next, the operation of the
[0055]
When the comparison result of the comparator 307 is L, the
[0056]
FIG. 8A is an explanatory diagram showing an example of address data output by the
[0057]
On the other hand, when the comparison result of the comparator 307 is H, the
[0058]
FIG. 8B is an explanatory diagram showing an example of address data output by the
[0059]
Here, the stored data of the loop range stored in the
[0060]
In the first embodiment, as described above, since the excess from the end address EA is 4D at the maximum, the current value address when returning to the beginning of the loop range is between addresses Ln to Ln + 4. Become. In the first embodiment, the integral exponent value and the integral waveform value corresponding to the storage data at the addresses Ln to Ln + 4 are calculated in advance so that a tone waveform can be generated from the storage data at the head portion, and these are calculated as end addresses. This is stored after EA.
[0061]
That is, the integrated waveform value IWV0 and the integrated exponent value IEV0 up to the storage data of the loop start address Ln are stored at the end address EA and the address EA + 5, respectively, and the integrated waveform values IWV1 to IWV1 corresponding to the storage data at the addresses Ln + 1 to Ln + 4 are stored. 4, and the integral exponent values IEV1 to IEV4 are similarly stored after the end address EA.
[0062]
Therefore, for example, when the current value address is looped to the loop start address Ln, by reading out the data stored in the end address EA and the address EA + 5, it is possible to accurately generate a tone waveform corresponding to the data. The same applies to the other addresses Ln + 1 to 4.
Next, the
[0063]
The
[0064]
The data register 1002 stores the storage data output from the
[0065]
The
[0066]
The
[0067]
The integral
[0068]
The integrated
[0069]
The
[0070]
The adder /
[0071]
The data register 1009 holds the operation result of the adder /
[0072]
The above operation of the
[0073]
As in FIG. 2, in FIG. 11, An and An + 1 to 3 are address data output from the
[0074]
First, the basic operation of the
[0075]
For example, when the address data An is output from the
[0076]
The select signal sel1 input to the
[0077]
During this time, that is, while the data register 1002 stores the data dn, the adder /
[0078]
Taking the case where the contents stored in the integral
That is, at the timing when the operation process op1 is performed, the
[0079]
At the timing when the operation process op2 is performed, the
[0080]
Such an operation is performed each time the data register 1002 stores the storage data read from the
[0081]
Next, the operation of each unit according to the size of the integral value step will be described. This integral value step is, as described above, the update amount of the address of the
[0082]
First, with reference to FIGS. 11A and 11B, the operation when the integral value step is 0 will be described.
FIG. 11 (b)Integral index valueAn operation example in the case where the
[0083]
When the interpolation operation is performed when the integral value step is 0, the necessary data is, as can be seen from
[0084]
In FIG. 11B, the control signal clr2 is 0 (the signal selected by the select signal sel2 is output) and the control signal sub is 1 (subtraction) only when the operation process op8 is performed. . In the operation op7, since the integral index value from the adder /
[0085]
Accordingly, in the operation op8, a value obtained by subtracting the waveform difference value at that time from the integrated waveform value up to the address An + 3 is output from the adder /
[0086]
Note that the addition result of the
[0087]
FIG. 11C shows an operation example when the integral value step is 1. In this operation example, in the operation process op7Integral index valueHas been updated, indicating that the integrated waveform value has been updated in the operation process op8.
[0088]
FIGS. 11D, 11E, and 11F show operation examples when the integral value step is 2, the integral value step is 3, and the integral value step is 4, respectively. . From these figures, it is understood that the integration index value and the integration waveform value are updated according to the value of the integration value step.
[0089]
Next, the operation of each unit during the loop operation will be described with reference to FIG. FIG. 12 is a timing chart showing an example of the operation state of each unit during the loop operation.
[0090]
As shown in FIG. 12, during the loop operation, the control signal clr1 is 1 and the select signal sel2 is1, The control signal clr2 is 0. For this reason, the adder /
[0091]
The
[0092]
In the operation op7, since the control signal clr2 is 1, the adder /
[0093]
In the operation process op8, subtraction is performed between the integrated waveform value output from the integrated
[0094]
Meanwhile, at this time, the
[0095]
As described above, even if the current value address is returned to the head of the loop range, the tone waveform can be accurately generated from the stored data of the head. For this reason, since the period for sampling the sound can be shortened, the amount of stored data can be reduced, and the generation of the musical sound waveform can be continued. Further, since the generation of the musical tone waveform from the stored data of the head portion of the loop range is performed using the data (generation information) held for generating the musical tone waveform of the head portion, the held data is changed. Thus, the loop range can be arbitrarily and easily changed. Note that after this loop operation, the operation is a normal address update operation.
[0096]
Next, a second embodiment will be described. In the second embodiment, stored data in which two mantissas share one differential exponent is stored in the
[0097]
FIG. 13A is an explanatory diagram showing a format of storage data stored in the
[0098]
As shown in FIG. 13 (a), in the second embodiment, one address of the
[0099]
Here, each symbol in FIG. 13B is, for example, Dn-1 and Dm-1 are the waveform difference values stored at this address An-1, and En-1 is the difference stored at this address An-1. It shows the value of the chemical exponent.
[0100]
As described above, in the second embodiment, the storage data stored at one address has two mantissas. Therefore, the
[0101]
14A and 14B are explanatory diagrams showing data output from each unit. FIG. 14A shows data (current value address) output from the current
[0102]
As shown in FIG. 14A, in the second embodiment, select bits are allocated between a 12-bit integer part and a 5-bit decimal part. This select bit is for designating which of the two mantissa parts stored in one address is to be selected. For example, when the address An-1 is designated, if the value of the select bit is 0, the mantissa Dn-1 is selected, and if it is 1, the mantissa Dm-1 is selected.
[0103]
This select bit corresponds to the lower one bit of the integer part in the first embodiment. Therefore, the
[0104]
FIG. 14B shows data output from the loop
[0105]
The addition result of the
[0106]
FIG. 15A is an explanatory diagram showing the data stored after the beginning of the loop range and the end address in the second embodiment, and FIG. 15B is generated by using the stored data of this beginning. FIG. 4 is an explanatory diagram showing a musical sound waveform.
[0107]
In the second embodiment, as shown in FIG. 15A, the integrated waveform values IWV0 to IWV4 corresponding to the storage data at the beginning of the loop range are respectively stored at the end address EA to the address EA + 4, and the integrated exponent values IEV0 to IEV0 are stored. 4 is stored in the address EA + 5. In the second embodiment, the use efficiency of the
[0108]
For this reason, in the second embodiment, the address data output from the
[0109]
Next, an
As described above, in the
[0110]
The control signal esl is a control signal for selecting an integral index value (generation information) stored collectively at one address. For example, when the
[0111]
[0112]
The above is a main point different from the first embodiment. Next, the operation at the time of updating the normal address will be described with reference to FIG. FIG. 16 is a timing chart showing an operation state example of each unit at the time of normal address update.
[0113]
As shown in FIG. 16, in the second embodiment, since the storage data stored at one address has two mantissas, three operations are performed while the data register 1002 stores one storage data. Processing is executed.
[0114]
In the basic operation of FIG. 16A, for example, while the data register 1002 stores the storage data dn, the following basic operation is performed.
At the timing when the operation process op1 is performed, the select signal sel1 is 1 and the select signal sel2 is 0. Is added. The result of this addition is input to
[0115]
At the timing when the operation process op2 is performed, the select signal sel1 is 0 and the select signal sel2 is 2, and at this time, the
[0116]
At the timing when the operation process op3 is performed, the select signal sel1 is 0 and the select signal sel2 is 2. At this time, the
[0117]
Such an operation is performed each time the data register 1002 stores new storage data. Thus, the contents of the integral
[0118]
Next, with reference to FIGS. 16A and 16B, the operation when the integral value step is 0 will be described.
FIG. 16 (b)Integral index valueAn operation example in the case where the
[0119]
In FIG. 16B, the control signal clr2 is 0 only when the operation processes op11 and op12 are performed, and the control signal sub at this time is 1 (subtraction). In the operation process op10, the
[0120]
Therefore, by performing the operation processes op11 and op12, the data register 1009 stores the integrated waveform values up to the storage data dn + 2. On the other hand, the
[0121]
FIG. 16C shows an operation example when the integral value step is 1. In this operation example, in the operation process op10Integral index valueHas been updated, and the integrated waveform values have been updated in the operation processes op11 and op12.
[0122]
FIGS. 16D, 16E, and 16F show operation examples when the integral value step is 2, the integral value step is 3, and the integral value step is 4, respectively. . From these figures, it is understood that the integration index value and the integration waveform value are updated according to the value of the integration value step.
[0123]
Next, the operation of each unit during the loop operation will be described with reference to FIG. FIG. 17 is a timing chart showing an example of the operation state of each unit during the loop operation.
[0124]
As shown in FIG. 17, during this loop operation, the control signal clr1 is 1, the select signal sel2 is 1, and the control signal clr2 is 0 during the operation processes op4 to op9. For this reason, the adder /
[0125]
The
[0126]
In the operation process op10, since the control signal clr2 is 1, the value of the select signal sel2 isRegardless, The adder /
[0127]
In the operation op11, subtraction is performed by subtracting one of the waveform difference values decoded by the
[0128]
On the other hand, at this time,
[0129]
As described above, the second embodiment has the same effect as the first embodiment. However, in the second embodiment, one differential exponent is shared by two mantissas, and a loop operation is performed. Since the integral exponent value used at one time is collectively written into one address and written in the
[0130]
In the first and second embodiments (this embodiment), the generation information (a plurality of integral waveform values and integral exponent values) used during the loop operation is stored in advance after the end address. Since the integral waveform value and integral exponent value must be updated sequentially for generation, when the integral waveform value and integral exponent value at the beginning of the loop range are updated, these are retained as generation information. Is also good. This is effective in reducing the amount of data in a sound source device or the like having many tones.
[0131]
【The invention's effect】
As described above, the waveform reading apparatus of the present invention holds the generation information for generating a musical tone waveform from the waveform data of the loop range, and when the loop range is repeatedly specified, the generation of the musical tone waveform has been performed until then. This information is replaced with the generated information, and the generation of the musical tone waveform is performed using the waveform data within the loop range, so that the generation of the musical tone waveform can be accurately maintained, and the generation of the musical tone waveform can be accurately performed. Since the sound can be sustained, the sampling period of the sound (musical sound) can be shortened, so that the data amount of the waveform data can be reduced.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a waveform reading device according to a first embodiment.
FIGS. 2A and 2B are an explanatory diagram showing a format of stored data and an explanatory diagram showing a tone waveform generated by the stored data; FIGS.
FIG. 3 is a block diagram showing a circuit configuration of an address generator.
FIG. 4 is an explanatory diagram showing data output from each unit.
FIG. 5 is an explanatory diagram showing an integral value step when updating a normal address.
FIG. 6 is an explanatory diagram showing data output from each unit.
FIG. 7 is an explanatory diagram showing an integral value step during a loop operation.
FIG. 8 is an explanatory diagram showing an example of address data output by an address generator.
FIGS. 9A and 9B are an explanatory diagram showing data stored after the beginning of the loop range and the end address, and an explanatory diagram showing a musical tone waveform generated based on the stored data at the beginning of the loop range. FIGS.
FIG. 10 is a block diagram illustrating a circuit configuration of an integration interpolation circuit.
FIG. 11 is a timing chart showing an operation state example of each unit at the time of updating a normal address (first embodiment);
FIG. 12 is a timing chart showing an example of an operation state of each unit during a loop operation (first embodiment).
FIGS. 13A and 13B are an explanatory diagram showing a format of stored data and an explanatory diagram showing a musical tone waveform generated by the stored data (second embodiment).
FIG. 14 is an explanatory diagram showing data output from each unit (second embodiment).
FIGS. 15A and 15B are an explanatory diagram showing data stored after the beginning of the loop range and the end address, and an explanatory diagram showing a musical tone waveform generated based on data stored at the beginning of the loop range; FIGS. Second Embodiment).
FIG. 16 is a timing chart showing an operation state example of each unit at the time of updating a normal address (second embodiment).
FIG. 17 is a timing chart showing an example of an operation state of each unit during a loop operation (second embodiment).
[Explanation of symbols]
100 Waveform reading device
101 Waveform memory
102 Address Generator
103 Integral interpolation circuit
301 Current value address RAM
302 Address increment RAM
303 End address RAM
304 Loop start address RAM
310 step calculator
311 Address generator
1001 control circuit
1003, 1006 Data selector
1004 shifter
1005 adder / subtractor
1007 Integral exponent value RAM
1008 Integrated waveform value RAM
Claims (1)
前記記憶手段から波形データを読み出す記憶場所を所定タイミングで順次指定するとともに、前記記憶手段に記憶された波形データの前記ループ範囲内の記憶場所を繰り返して指定する指定手段と、
前記指定手段が指定した記憶場所から波形データを読み出し、前記所定タイミングをN+1分割した第1の演算処理タイミングにおいて、その差分化指数部を順次累算して積分指数値を生成し、第2以降の演算処理タイミングにおいて、該生成した積分指数値を用いて仮数部を伸長し、該演算処理タイミング各々に対応する差分値を生成し、該生成した差分値を順次累算することで前記波形を生成するとともに、前記指定手段が前記ループ範囲内の先頭部分に戻って記憶場所を指定したとき、該記憶場所から読み出した仮数部及び該記憶場所に対応した前記生成情報の積分指数値を用いて差分値を生成し、該記憶場所に対応した前記生成情報の振幅値を用いて前記波形を生成する波形生成手段と、
を具備したことを特徴とする波形読出装置。Using a predetermined waveform compression method, a difference value between a mantissa part of a predetermined number N whose difference value of a waveform amplitude value is floating-point data and an exponent part shared by the mantissa part of the predetermined number N is set as a difference value. The waveform data storing the exponent part in the same storage location, and as generation information for generating the amplitude value of the waveform from the waveform data in a preset loop range, from the beginning of the loop range to the pitch Storage means for storing an amplitude value and an integral index value of the waveform corresponding to the number of storage locations based on the maximum value of the amount of advance of the corresponding storage location;
Designating means for sequentially designating storage locations for reading waveform data from the storage means at predetermined timing, and repeatedly designating storage locations within the loop range of the waveform data stored in the storage means,
It reads waveform data from the storage location in which the designating means designates the predetermined timing in the first arithmetic processing timing N + 1 division, to produce an integrated index value by sequentially accumulating the difference of the exponent, the second and subsequent In the arithmetic processing timing, the mantissa is expanded using the generated integral exponent value, a difference value corresponding to each of the arithmetic processing timings is generated, and the generated difference value is sequentially accumulated, thereby forming the waveform. When the specifying means returns to the head portion in the loop range and specifies a storage location, the mantissa part read from the storage location and an integral index value of the generation information corresponding to the storage location are generated. A waveform generation unit that generates a difference value and generates the waveform using an amplitude value of the generation information corresponding to the storage location;
A waveform reading device comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23713594A JP3603343B2 (en) | 1994-09-30 | 1994-09-30 | Waveform reading device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP23713594A JP3603343B2 (en) | 1994-09-30 | 1994-09-30 | Waveform reading device |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08101690A JPH08101690A (en) | 1996-04-16 |
JP3603343B2 true JP3603343B2 (en) | 2004-12-22 |
Family
ID=17010929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23713594A Expired - Lifetime JP3603343B2 (en) | 1994-09-30 | 1994-09-30 | Waveform reading device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3603343B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4735196B2 (en) * | 2005-11-04 | 2011-07-27 | ヤマハ株式会社 | Audio playback device |
-
1994
- 1994-09-30 JP JP23713594A patent/JP3603343B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH08101690A (en) | 1996-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7692087B2 (en) | Compressed data structure and apparatus and method related thereto | |
JPH03282498A (en) | Musical sound generating device | |
US8706506B2 (en) | Waveform compressing apparatus, waveform decompressing apparatus, and method of producing compressed data | |
JP3603343B2 (en) | Waveform reading device | |
EP3144926B1 (en) | Waveform data structure for musical instrument with scalable storage-frame length depending on tones . | |
JPH07199996A (en) | Waveform data coding device, waveform data coding method, waveform data decoding device, and waveform data coding / decoding device | |
US5886277A (en) | Electronic musical instrument | |
JPS59168493A (en) | Musical tone waveform generator | |
JP3826870B2 (en) | Compressed data structure, waveform generation device, and waveform storage device | |
JPH0310959B2 (en) | ||
JP3933072B2 (en) | Wave compressor | |
JP3912304B2 (en) | Compressed data structure, waveform generation device, and waveform storage device | |
JP2882464B2 (en) | Waveform memory sound generator | |
JP2993344B2 (en) | Waveform generation device, waveform storage device, waveform generation bubble, and waveform storage method | |
JP3933073B2 (en) | Waveform expansion device | |
JPH0125079B2 (en) | ||
JPH043556B2 (en) | ||
JPS6145289A (en) | Electronic musical instrument | |
JP3223555B2 (en) | Waveform reading device | |
JPS6352399B2 (en) | ||
JP2900076B2 (en) | Waveform generator | |
KR920006183B1 (en) | Envelope data generation circuit of electronic musical instrument | |
JP2944069B2 (en) | Music signal generator | |
JP2678970B2 (en) | Tone generator | |
JPH056171A (en) | Sound wave compression method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040120 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040322 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040518 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040630 |
|
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: 20040907 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040920 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081008 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091008 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091008 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101008 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101008 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111008 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111008 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121008 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121008 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131008 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term |