楽音波形の情報圧縮方法、情報伸長方法、情報圧縮のためのコンピュータプログラム、情報圧縮装置、情報伸長装置及びデータ構造
【課題】楽音波形の振幅が大きい部分が細かく量子化され、振幅が小さい部分が粗く量子化され、楽音波形の記憶容量が小さくされる。
【解決手段】標準振幅NX(i)は限界値Xtから差し引かれ、振幅差値RNX(i)が求められる(ステップ11)。RNX(i)=SIG{NX(i)}×〔Xt−ABS{NX(i)}〕SIG{NX(i)}:NX(i)が負なら「−1」、負ではないなら「1」ABS{NX(i)}:{NX(i)}の絶対値。この振幅差値RNX(i)は、8ビットの浮動小数点表記FRNX(i)とされる。これにより、上記楽音波形の振幅値X(i)は、上記楽音波形の限界値Xと、上記楽音波形の振幅値X(i)との差に変換され、楽音波形の振幅Xが大きいときに、量子化の精度がより細かくされる。
【解決手段】標準振幅NX(i)は限界値Xtから差し引かれ、振幅差値RNX(i)が求められる(ステップ11)。RNX(i)=SIG{NX(i)}×〔Xt−ABS{NX(i)}〕SIG{NX(i)}:NX(i)が負なら「−1」、負ではないなら「1」ABS{NX(i)}:{NX(i)}の絶対値。この振幅差値RNX(i)は、8ビットの浮動小数点表記FRNX(i)とされる。これにより、上記楽音波形の振幅値X(i)は、上記楽音波形の限界値Xと、上記楽音波形の振幅値X(i)との差に変換され、楽音波形の振幅Xが大きいときに、量子化の精度がより細かくされる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、楽音波形の情報圧縮方法、情報伸長方法、情報圧縮のためのコンピュータプログラム、情報圧縮装置、情報伸長装置及びデータ構造に関し、特に楽音波形の圧縮記憶などに関する。
【背景技術】
【0002】
従来、楽音波形を記憶するための記憶容量を小さくするために種々の手法が考えられてきている。このようなものの1つに、楽音波形をフーリエ変換して圧縮してまたは圧縮しないで記憶するものが知られている。
【0003】
【特許文献1】特許3673384号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところが、このような圧縮記憶される楽音波形では、量子化を細かくするほうが、元波形をより緻密に再現できるが、記憶容量が増えてしまうという問題があった。
【課題を解決するための手段】
【0005】
上記目的を達成するため、本件発明では、所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換し、 このフーリエ変換またはコサイン変換された情報につき、振幅成分及び位相成分を量子化し、 この量子化を振幅成分の値が小さいときに比べて大きいときに、より細かくするようにした。
【0006】
また、上記圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、 この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行い、 この復元された楽音波形をフーリエ逆変換またはコサイン逆変換するようにした。
【発明の効果】
【0007】
これにより、振幅成分の値が大きい部分の量子化レベルを細かくするが、楽音波形の振幅が小さい部分の量子化レベルを粗くできるので、この分楽音波形の記憶容量を小さくできる。また、この圧縮された楽音波形を伸長復元して元の楽音波形を再生できる。
【0008】
さらに、楽音波形の中の大きな成分ほど高い精度で量子化され、楽音波形の中の小さな成分ほど低い精度で量子化される。この結果、大きな音が鳴っている背景での小さな音のわずかな大小変化は簡略化され、人間の聴感に合致させることができる。
【発明を実施するための最良の形態】
【0009】
(1)全体回路
図1は、楽音波形の情報圧縮方法及び情報伸長方法を実現する全体回路、情報圧縮方法のためのコンピュータプログラムを実行する全体回路、並びに情報圧縮装置、情報伸長装置、楽音制御装置、自動演奏装置または電子楽器の全体回路1を示す。
【0010】
キーボード11の各キーは、楽音の発音及び消音を指示するもので、キースキャン回路12によってスキャンされ、キーオン、キーオフを示すデータが検出され、コントローラ2(CPU、DSP:デジタルシグナルプロセッサ)によってプログラム/データ記憶部4に書き込まれる。そして、それまでプログラム/データ記憶部4に記憶されていた各キーのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が、コントローラ2によって行われる。
【0011】
このキーボード11の各キーには段差タッチスイッチなどの速度センサー、加速度センサー、圧力センサーが設けられ、段差スイッチごとに上記スキャンが行われ、各段差スイッチの先頭のオン/オフごとにオンイベント/オフイベントの検出が行われる。この段差スイッチなどのセンサーによってタッチの速さと強さを示す上記タッチ情報つまりイニシャルタッチデータとアフタタッチデータとが発生される。なお、キーボード11は、電子弦楽器、電子吹奏(管)楽器、電子打楽器(パッド等)、コンピュータのキーボード等で代用される。
【0012】
パネルスイッチ群13の各スイッチは、スイッチスキャン回路14によって、スキャンされる。このスキャンにより、各スイッチのオン、オフを示すデータが検出され、コントローラ2によってプログラム/データ記憶部4に書き込まれる。そして、それまでプログラム/データ記憶部4に記憶されていた各スイッチのオン、オフの状態を示すデータと比較され、各スイッチのオンイベント、オフイベントの判別が、コントローラ2によって行われる。
【0013】
ミディ回路15は、外部接続された電子楽器との間で演奏情報や楽音波形信号の送受を行うためのインターフェースである。この演奏情報はMIDI(ミュージカルインスツルメントデジタルインターフェース)規格のもので、この演奏情報に基づいた発音も行われる。
【0014】
上記キーボード11またはミディ回路15には、自動演奏装置も含まれる。これらキーボード11、パネルスイッチ群13、ミディ回路15及び自動演奏装置から発生された演奏情報(楽音発生情報)は、楽音を発生させるための情報である。
【0015】
上記演奏情報(楽音発生情報)は、音楽的ファクタ(因子)情報であり、音高(音域)情報(音高決定因子)、発音時間情報、演奏分野情報、発音数情報、共鳴度情報などである。発音時間情報は楽音の発音開始からの経過時間を示す。演奏分野情報は、演奏パート情報、楽音パート情報、楽器パート情報等を示し、例えばメロディ、伴奏、コード、ベース、リズム、MIDI等に対応したり、または上鍵盤、下鍵盤、足鍵盤、ソロ鍵盤、MIDI等に対応したりしている。
【0016】
上記音高情報はキーナンバデータKNとして取り込まれる。このキーナンバデータKNはオクターブデータ(音域データ)と音名データとからなる。演奏分野情報は、パートナンバデータPNとして取り込まれ、このパートナンバデータPNは各演奏エリアを識別するデータであって、発音操作された楽音がどの演奏エリアからのものかによって設定される。
【0017】
発音時間情報は、トーンタイムデータTMとして取り込まれ、キーオンイベントからのタイムカウントデータに基づいたり、またはエンベロープフェーズなどが転用されたりする。この発音時間情報は特願平6−219324号明細書及び図面に発音開始からの経過時間情報として詳しく示される。
【0018】
発音数情報は同時に発音している楽音の数を示し、例えばアサインメントメモリ40のオン/オフデータが「1」の楽音の数に基づき、この数は特願平6−242878号の図9及び図15、特願平6−2476855号の図8及び図18、特願平6−276857号の図9及び図20、特願平6−276858号の図9及び図21のフローチャートに基づいて求められる。
【0019】
さらに、上記パネルスイッチ群13には各種スイッチが設けられ、この各種スイッチは音色タブレット、エフェクトスイッチ、リズムスイッチ、ペダル、ホイール、レバー、ダイヤル、ハンドル、タッチスイッチ等であって楽器用のものである。このペダルはダンパーペダル、サスティンペダル、ミュートペダル、ソフトペダル等である。
【0020】
この各種スイッチより、楽音制御情報が発生され、この楽音制御情報は発生された楽音を制御する情報であって音楽的ファクタ(因子)情報であり、音色情報(音色決定因子)、タッチ情報(発音指示操作の速さ/強さ)、発音数情報、共鳴度情報、エフェクト情報、リズム情報、音像(ステレオ)情報、クオンタイズ情報、変調情報、テンポ情報、音量情報、エンベロープ情報等である。これら音楽的ファクタ情報も上記演奏情報(楽音情報)に合体され、上記各種スイッチより入力されるほか、上記自動演奏情報に合体されたり、上記インターフェースで送受される演奏情報に合体されたりする。
【0021】
上記音色情報は、鍵盤楽器(ピアノ等)、管楽器(フルート等)、弦楽器(バイオリン等)、打楽器(ドラム等)の楽器(発音媒体/発音手段)の種類等に対応しており、トーンナンバデータTNとして取り込まれる。上記エンベロープ情報は、エンベロープレベルEL、エンベロープタイムET、エンベロープフェーズEFなどである。
【0022】
このような音楽的ファクタ情報は、コントローラ2へ送られ、後述の各種信号、データ、パラメータの切り換えが行われ、楽音の内容が決定される。上記演奏情報(楽音発生情報)及び楽音制御情報はコントローラ2で処理され、各種データが楽音波形発生部5へ送られ、楽音波形信号MWが発生される。コントローラ2はCPU、DSP(デジタルシグナルプロセッサ)、ROM及び/またはRAMなどからなっている。このようなコントローラ2は、図1の回路ごとに分散されて設けられてもよい。
【0023】
マイク16からはアコーステックな楽器の音や人声や種々の器物の音や自然界の音や動物の声が集音されて音響変換回路17でサンプリング及びA−D変換され、電気的なデジタルの楽音波形信号に変換され、この楽音波形信号は所定の時間長で切り出されてフーリエ変換またはコサイン変換され、このフーリエ変換またはコサイン変換された楽音波形信号の振幅成分及び位相成分が量子化され、プログラム/データ記憶部4に書き込まれる。このような変換されて圧縮された楽音波形データMWは、複数の音色、楽器、タッチ、音域/音高、エフェクト、リズム等の音楽的ファクタにわたって多数種類記憶される。
【0024】
プログラム/データ記憶部4には、ミディ回路15から送られてきた楽音波形信号も書き込まれる。この楽音波形信号も、所定の時間長で切り出されてフーリエ変換され、このフーリエ変換された楽音波形信号の振幅成分及び位相成分が量子化されるか、もともとこのフーリエ変換及び量子化がなされている。
【0025】
このプログラム/データ記憶部4の楽音波形信号は、情報記憶部7にコピーされて、本装置から取り外され、上記圧縮記憶された楽音波形信号が生産され、他の装置に組み込まれる。また、このような楽音波形信号が記憶された情報記憶部7は本件装置に装着され、上記圧縮記憶された楽音波形信号がプログラム/データ記憶部4にコピーされ、伸長復元再生されて、楽音信号発生部5に書き込まれる。
【0026】
プログラム/データ記憶部4(内部記憶媒体/手段)はROMまたは書き込み可能なRAM、フラッシュメモリまたはEEPROM等の記憶装置からなり、光ディスクまたは磁気ディスク等の着脱自在な情報記憶部7(外部記憶媒体/手段)に記憶されるコンピュータのプログラムが書き写され記憶される(インストール/転送される)。またプログラム/データ記憶部4には外部の電子楽器またはコンピュータから上記ミディ回路15または送受信装置を介して送信されるプログラムも記憶される(インストール/転送される)。このプログラムの記憶媒体は通信媒体も含む。
【0027】
このインストール(転送/複写)は、情報記憶部7が本楽音生成装置にセットされたとき、または本楽音生成装置の電源が投入されたとき自動的に実行され、または操作者による操作によってインストールされる。上記プログラムは、コントローラ2が各種処理を行うための後述するフローチャートに応じたプログラムである。
【0028】
なお、本装置に予め別のオペレーティングシステム、システムプログラム(OS)、その他のプログラムが記憶され、上記プログラムはこれらのOS、その他のプログラムとともに実行されてもよい。このプログラムは本装置(コンピュータ本体)にインストールされ実行されたときに、別のプログラムとともにまたは単独で請求項(クレーム)に記載された処理・機能を実行させることができればよい。
【0029】
また、このプログラムの一部又は全部が本装置以外の1つ以上の別装置に記憶されて実行され、本装置と別装置との間には通信手段を介して、これから処理するデータ/既に処理されたデータ/プログラムが送受され、本装置及び別装置全体として、本発明が実行されてもよい。
【0030】
このプログラム/データ記憶部4には、上述した音楽的ファクタ情報、上述した各種データ及びその他の各種データも記憶される。この各種データには時分割処理に必要なデータや時分割チャンネルへの割当のためデータ等も含まれる。
【0031】
楽音信号発生部5では、上記伸長復元再生された楽音波形信号がいったん記憶され、指定された音高に応じた速度で読み出され、エンベロープ波形信号が合成されて、サウンドシステム6で楽音として出力され放音される。
【0032】
このような楽音波形信号の波形は、上述の音色、タッチ、音高、音域、発音時間、演奏分野、発音数、共鳴度などの情報によって、切り換えられ変化される。このような楽音波形信号は伸長復元再生前の圧縮記憶状態のものが楽音信号発生部5に記憶され、楽音信号発生部5で伸長復元再生されてもよい。
【0033】
タイミング発生部3からは、楽音生成装置の全回路の同期を取るためのタイミングコントロール信号が各回路に出力される。このタイミングコントロール信号は、各周期のクロック信号のほか、これらのクロック信号を論理積または論理和した信号、時分割処理のチャンネル分割時間の周期を持つ信号、チャンネルナンバデータCHNo、タイムカウントデータTIなどを含む。
【0034】
このタイムカウントデータTIは、絶対時間つまり時間の経過を示し、このタイムカウントデータTIのオーバーフローリセットから次のオーバーフローリセットまでの周期は、各楽音のうち最も長い発音時間より長く、場合によって数倍に設定される。
【0035】
(2)楽音信号発生部5
図2は上記楽音信号発生部5を示す。アサインメントメモリ40の各チャンネルエリアから順次読み出された各チャンネルのキーナンバデータKN及びオン/オフデータに基づき、楽音波形読出回路41によって、楽音波形メモリ42(バッファ)から楽音波形データMWが読み出される。この読み出された楽音波形データMWは、乗算器43でエンベロープ波形データENが乗算され、累算器44で全チャンネル分が累算されて上記サウンドシステム6へ送られる。
【0036】
楽音伸長復元回路46では、上述フーリエ変換またはコサイン変換され、振幅成分及び位相成分が量子化(符号化)された情報/データ圧縮された楽音波形データから、この楽音波形が伸長/復元され、フーリエ変換の場合、量子化された位相成分も付加され、この伸長復元された楽音波形がフーリエ逆変換またはコサイン逆変換され、この伸長復元された楽音波形データMWは、上記楽音波形メモリ42(バッファ)に書き込まれる。この伸長復元再生(復号化)では、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元が行われる。
【0037】
上記サインメントメモリ40の各チャンネルエリアから順次読み出された各チャンネルのエンベロープレベルデータELはエンベロープジェネレータ45へ送られる。上記サインメントメモリ40の各チャンネルエリアから順次読み出された各チャンネルのエンベロープスピードデータESは、エンベロープジェネレータ45へ送られる。エンベロープジェネレータ45では、エンベロープスピードデータESに応じたスピードで、エンベロープレベルデータELに応じた大きさ/レベルでエンベロープ波形データENが演算され、上記乗算器43へ送られる。
【0038】
上記エンベロープレベルデータELとエンベロープスピードデータESとは、エンベロープ波形のアタック、ディケイ、サスティーン、リリースのフェーズごとに設定される。エンベロープジェネレータ45では、上記オン/オフデータが「1」にされると、エンベロープフェーズがアタックにされ、発音処理に入る。このオン/オフデータが「0」にされると、エンベロープフェーズがリリースにされ、消音処理に入る。
【0039】
(3)楽音波形の圧縮処理
図3は楽音波形の圧縮処理のフローチャートを示す。この処理は操作者によって所定の指示がなされたときに開始される。まず、上記マイク16またはミディ回路15を通じて取り込まれた楽音波形が所定周期でサンプリング(標本化)され、プログラム/データ記憶部4に記憶される(ステップ01)。
【0040】
次いで自己相関演算が行なわれて(ステップ02)、楽音波形の一周期に応じたフレーム長/時間窓nが求められる(ステップ03)。この自己相関演算は、公知であり、例えば以下の式に基づいて演算される。
lim(1/T)∫s(k)・s(k+τ)dt
【0041】
lim:Tを無限大∞にする演算
∫:一フレーム/一周期分の積分
T:一フレーム/一周期の長さ
k:フレーム内の全サンプルポイント数のk番目
τ:遅れ時間lag
s(k):サンプリング(標本化)された楽音波形のフレーム内でのk番目の振幅値(サンプル値)
【0042】
s(k)に正弦波・余弦波のような周期的な成分が含まれると、上記演算式にはこのパワーに比例した成分が含まれ、これによって一周期に応じたフレーム長/時間窓nが求められる。この信号s(k)のパワースペクトルは上記自己相関関数のフーリエ変換で定義することができる。
【0043】
そして、この基本周波数/基本周期(時間長)に対応した略等しいフレーム長/時間窓nで、当該楽音波形が切り出される(ステップ05)。この一フレームごとの切り出しは半フレームずつ位相がずれて、半フレームずつ重複して行われる。この切り出された楽音波形が、上記ステップ02と同じく再度フーリエ変換または再度コサイン変換され、プログラム/データ記憶部4に記憶される(ステップ06)。
【0044】
なお、ステップ02〜03の処理は省略されてもよく、上記フレーム長/時間窓nは操作者によって上記パネルスイッチ群13から適当な値で入力される。この場合、入力された楽音波形の形状がパネルスイッチ群13のディスプレイ(図示せず)などに表示され、操作者によって楽音波形の一周期の長さの先頭と末尾とがディスプレイの画面上でマウスなど指定される。また、予め一周期=一フレームとなるような周期でサンプリングされた楽音波形が用いられても良い。
【0045】
周波数分解能または演算精度を上げるためには、上記時間窓nの幅は大きいほうがよいが、この幅があまり大きいと、高速フーリエ変換などが用いられても、演算量が大きくなりすぎるので、コントローラ2の性能と必要な精度との間で適切な値が選定される。本実施レベルでは時間窓n=16であるが、この値に限定されない。
【0046】
コントローラ2の能力が許されれば、外部から与えられた楽音波形の周期を基準に一フレームあたりのサンプル数が定められてもよい。自己相関分析などの既知の演算方法によって、得られたデータから楽音波形の周期が求められてもよい。
【0047】
上記ステップ06の離散フーリエ変換(フーリエ分析)は以下の式でコントローラ2によって演算される。
c(i)=Σs(k)×exp(−j×2πik/n)…(1)
ここで離散コサイン変換でも同様の変換ができる。この離散コサイン変換は以下の式でコントローラ2によって演算される。
c(i)=Σs(k)×cos{i×π(2k+1)/2n}…(2)
【0048】
ここで各項、各数値は以下を表す。
n:フレーム内の全サンプルポイント数
k:フレーム内の全サンプルポイント数のk番目
i:各周波数成分の各スペクトル値のi番目
j:虚数単位(√−1)
【0049】
s(k):サンプリング(標本化)された楽音波形のフレーム内でのk番目の振幅値(サンプル値)
c(i)=X(i):i番目の周波数成分のスペクトル値(フーリエ変換では複素数、コサイン変換では実数)、振幅値
2πi:i番目の周波数成分(角周波数)の周期
Σ:k=0〜n−1の全累計
【0050】
上記離散フーリエ変換(フーリエ分析)された振幅スペクトルc(i)=RE(i)+j・IM(i)は、実数部データRE(i)と虚数部データIM(i)とに分離して表すことができる。すなわち、2πiがc(i)の実数部と虚数部の関係を表しているといえる。上記フーリエ変換(フーリエ分析)された振幅スペクトルは、このような実数部データRE(i)と虚数部データIM(i)に変換される(ステップ07)。
【0051】
上記元の楽音波形の実波形データの精度は例えば16ビットであり、フーリエ変換後の楽音波形の1フレームつまり一周期は例えば16ワードであり、1ワードは例えば19ビットである。
【0052】
上記実数部データRE(i)と虚数部データIM(i)から、コントローラ2によって、周波数軸変換によって、振幅データX(i)と位相データP(i)とが求められる(ステップ08)。この演算式は以下の通りである。
X(i)=√(RE(i)<SUP>2</SUP>+IM(i)<SUP>2</SUP>)…(3)
P(i)=tan<SUP>-1</SUP>{IM(i)/RE(i)}…(4)
√は続く()内の平方根を求めることを示す。
【0053】
図4はこれらの実数部データRE(i)及び虚数部データIM(i)と振幅データX(i)及び位相データP(i)との関係を示す。この図4の各関係において、周波数軸変換によって、上記演算式(3)(4)が成立することがわかる。このような振幅データX(i)と位相データP(i)とは、上記楽音波形を所定ビット数に「量子化」したものといえる。
【0054】
離散コサイン変換の場合には、振幅データX(i)=c(i)(i番目の周波数成分のスペクトル値)とされる。このコサイン変換では、位相データはない。その他の変換方法を用いる場合でも、適宜演算が行なわれて振幅データX(i)が求められ、さらに必要に応じて位相データP(i)が求められる。
【0055】
上記楽音波形の分解能を16ビットとし、フレーム幅nを16サンプル(16ワード)とすると、一フレームの楽音波形は16ビット×16ワード(時間窓n=16サンプルポイント)=256ビットとなる。上記変換後は、実数部データRE(i)=19ビット、虚数部データIM(i)=19ビット、振幅データX(i)=19ビット、位相データP(i)=16ビットとされる。ここまでの分解能はコントローラ2の演算能力が許す限り大きくすることができる。
【0056】
この振幅データX(i)は19ビット、位相データP(i)は16ビットの各精度で求められる。そして、位相データP(i)の精度は7ビットに下げられ、データ圧縮される(ステップ09)。この7ビットはもともとの位相データP(i)の上位7ビットが選択される。この場合、位相データP(i)の上位から8ビット目を用いて「まるめ」を行なってから上位7ビットが選択されてもよい。
【0057】
そして、このフレーム内の最大の振幅値または最大絶対値がサーチされて検出され、振幅データX(i)はフレーム内の最大値Xmax及び限界値Xtによって標準振幅NX(i)に圧縮される(ステップ10)。この演算式は以下の通りである。
NX(i)=X(i)×Xt/Xmax…(5)
NX(i):標準化された振幅値データ
【0058】
Xt:限界値(次述)
Xmax:最大値または最大絶対値(離散コサイン変換)
最大値Xmax及び限界値Xtはプログラム/データ記憶部4などに、後述する圧縮された楽音波形データの一部として記憶されている。
【0059】
この限界値Xtは、ビット幅/データ幅(本実施例では19ビット)が許す限り取り得る大きな限界の値であり、離散フーリエ変換の場合には正値のみであるので、Xt=524287である。離散コサイン変換の場合には正負いずれの値もとりうるので、Xt=262143である。なお、この限界値Xtは、楽音波形データのビット幅mから演算によって求められても良い。
Xt=2<SUP>m</SUP>−1…(6)
【0060】
上記最大値(絶対最大値)Xmaxは、離散フーリエ変換などの場合にはフレーム中のもっとも大きな値であり、離散コサイン変換などの場合にはフレーム中のもっとも大きな絶対値である。
【0061】
この最大値(絶対最大値)Xmaxは、フレーム/周期ごとに求められ、プログラム/データ記憶部4などに一時的に記憶される。この場合、離散フーリエ変換などと離散コサイン変換などとで処理が分けられてもよいが、変換方法によらず常に絶対最大値が求められてもよい。
【0062】
以上のように、上記楽音波形の最大値Xmaxに対する、取り得る最大振幅の限界値Xtの比率が、上記楽音波形の振幅データX(i)に演算される。これにより、振幅データX(i)の全ビットを無駄なく使って振幅データX(i)を表記できる。
【0063】
次いで、標準振幅NX(i)は限界値Xtから差し引かれ、振幅差値RNX(i)が求められる(ステップ11)。この演算式は以下の通りである。
RNX(i)=SIG{NX(i)}×〔Xt−ABS{NX(i)}〕…(7)
RNX(i):振幅差値データ
SIG{NX(i)}:NX(i)が負なら「−1」、負ではないなら「1」
ABS{NX(i)}:{NX(i)}の絶対値
【0064】
この振幅差値RNX(i)は、8ビットの浮動小数点表記FRNX(i)とされ、プログラム/データ記憶部4などに書き込まれる。この浮動小数点表記の振幅差値FRNX(i)はパワー3ビット、マンティッサ5ビットから構成される。
【0065】
このマンティッサは実質6ビットであるが、パワーが「0」ではないとき、下から6ビット目に「1」があるものとみなされる。したがって、この浮動小数点表記の実効精度は6ビットである。パワーが「0」のとき、最上位ビットは「0」であるが、この最上位ビットは記憶の必要性がないので、下位5ビットのみが記憶される。
【0066】
以上のように、上記楽音波形の振幅値X(i)は、上記楽音波形の限界値Xと、上記楽音波形の振幅値X(i)との差に変換される。これにより、楽音波形の振幅Xが大きいときに、量子化の精度をより細かくできる。
【0067】
以上の離散フーリエ変換の「具体例」は以下の通りである。コントローラ2の第1レジスタに「0b1000000000000000000(2進数)」がストアされ、第2レジスタに「0b111(2進数)」がストアされ、第3レジスタに振幅差値データRNX(i)がストアされる。この振幅差値データRNX(i)と第1レジスタ「0b1000000000000000000」との論理積がとられる。
【0068】
この論理積が「0」ではなかった場合、振幅差値データRNX(i)の上位2ビット目乃至6ビット目がマンティッサとされ、上記第2レジスタの全カウンタ値がパワーとされる。この論理積が「0」であった場合、振幅差値データRNX(i)の値が上位に1ビットシフトされ、下位から20ビット目(シフト前の19ビット目)が捨てられ、上記第2レジスタのカウンタ値が−1され、再び論理積が取られる。
【0069】
以上の処理が、論理積が「0」ではなくなるか、カウンタ値が「0」になるまで繰り返され、再度パワーとマンティッサとが得られる。カウンタ値が「0」になった場合、以上の論理積はこれ以上取られず、上位1ビット目乃至5ビット目がマンティッサとされ、パワーは「0」とされる。
【0070】
以上のステップ07〜11の演算処理は、一フレームごと全フレームにわたって繰り返される(ステップ12)。この一フレームごとの演算処理は半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複して繰り返される。こうして、図5及び図6のように楽音波形が圧縮されて記憶される。また、この楽音波形データMWの圧縮では、半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複した、同じフレーム(時間長)につき、奇数番目フレームと偶数番目フレームの複数の楽音波形データMW(振幅データ)につき行われる。
【0071】
以上のように、周波数軸に変換された楽音波形の振幅データX(i)の絶対値が小さいほど、すなわち振幅差値データRNX(i)の絶対値が大きいほど、楽音波形は粗く量子化され、振幅データX(i)の絶対値が大きいほど、すなわち振幅差値データRNX(i)の絶対値が小さいほど、楽音波形は細かく量子化される。
【0072】
これにより、楽音波形の中の絶対値が大きな成分ほど高い精度で量子化され、楽音波形の中の絶対値が小さな成分ほど低い精度で量子化される。この結果、大きな音が鳴っている背景での小さな音のわずかな大小変化は簡略化され、人間の聴感に合致させることができる。
【0073】
(4)圧縮された楽音波形データのデータ構造
図5及び図6は圧縮された楽音波形データのデータ構造の半フレームずれた二フレームを示す。離散フーリエ変換などを用いた場合、8ビットの振幅差値FRNX(i)は一周期分の変換結果である、16ワード全てではなく、前半の9ワードのみが記憶される。残りの後半の7ワードは、記憶される前半の9ワードから再現される。離散コサイン変換などを用いた場合、一フレーム分の変換結果である16ワード全てが記憶される。
【0074】
また、離散フーリエ変換などを用いた場合、これら前半の9ワードの9つの位相データP(i)が記憶される。この位相データP(i)は上記ステップ05で求められ、7ビットである。末尾には上記フレーム内の16ビットの最大値Xmaxの7ビット分が記憶される。また、9つの位相データPの最上位ビットは空いているので、ここに16ビットの最大値Xmaxの残り9ビット分が記憶される。末尾の最上位ビットには何も記憶されない(NC)。
【0075】
離散フーリエ変換などを用いた場合、このように楽音波形16ビット×16ワード(時間窓n=16サンプルポイント)=256ビットが、図5の8ビット×19ワード=152ビットに圧縮される。離散コサイン変換などを用いた場合、図6の8ビット×16ワード(16サンプルポイント)+16ビット(最大値Xmax)=144ビットに圧縮される。このようにして、楽音波形の他の各フレームも同様に圧縮記憶される。
【0076】
(5)振幅が大きいほど量子化精度が細かい
上記振幅差値RNX(i)は、上述の下記(5)式で求められ、標準振幅NX(i)がマイナスの逆特性にされる。
RNX(i)=SIG(NX(i))×〔Xt−ABS{NX(i)}〕…(5)
【0077】
そして、振幅差値FRNX(i)は、この逆特性の振幅差値RNX(i)が浮動小数点表記されるから、リニア特性からイクスポーネンシャル特性に変換される。これにより、振幅が大きいほど量子化精度が細かくされ、振幅が小さいほど量子化精度が粗くされる。図16は、このような楽音波形の振幅が小さいときに比べて大きいときに、量子化精度がより細かくされる特性を示す。
【0078】
また、上記量子化によって、振幅データXは19ビットから8ビットとされ、位相データPは16ビットから7ビットとされ、振幅データXの量子化精度は位相データの量子化精度より細かい。これにより、振幅の記憶精度が細かくできる。位相の記憶精度は多少粗くても、再生した楽音波形の音質への影響は少ない。
【0079】
このような記憶ビット数/量子化ビット数/ワード数/サンプルポイント数は、上記のものに限られない。上記例より多くても少なくてもよい。また、振幅データXの量子化精度は位相データの量子化精度より粗くても細かくてもよい。
【0080】
(6)差分圧縮処理
図7は差分圧縮の演算処理のフローチャートを示す。この処理は操作者によって所定の指示がなされたときに開始されたり、上記図3の楽音波形圧縮処理の後に続けて実行されたりする。この処理では、上記図3の楽音波形の圧縮処理によって求められた、図5及び図6の圧縮記憶された楽音波形データにつき、1フレームごとの差分が求められてさらに圧縮記憶される。
【0081】
まず、サンプル順番「i」が「0」とされ(ステップ21)、先頭の一フレームの先頭の振幅差値FRNX(0)と次の一フレームの先頭の振幅差値FRNX(0)との差分振幅ΔFRNX(0)(4ビット)が求められる(ステップ22)。
【0082】
続いて、サンプル順番「i」が順次+1され(ステップ23)、次の振幅差値FRNX(1)についても、先頭の一フレームと次の一フレームとの差ΔFRNX(1)(4ビット)が求められ、順次FRNX(2)、振幅差値FRNX(3)、振幅差値FRNX(4)、振幅差値FRNX(5)、振幅差値FRNX(6)、振幅差値FRNX(7)、振幅差値FRNX(8)についても差分振幅ΔFRNX(2)(4ビット)、差分振幅ΔFRNX(3)(4ビット)、差分振幅ΔFRNX(4)(4ビット)、差分振幅ΔFRNX(5)(4ビット)、差分振幅ΔFRNX(6)(4ビット)、差分振幅ΔFRNX(7)(4ビット)、差分振幅ΔFRNX(8)(4ビット)が求められ、サンプル順番「i」が「8」になるまで繰り返される(ステップ24)。
【0083】
この各フレームの振幅の差ΔFRNX(1)(4ビット)は、一フレーム分ずれて重なっていないフレームどうしのものであり、上述の半フレームずつずれて重なっているフレーム同士では行われない。むろん半フレームずつずれて重なっているフレーム同士で行われてもよい。半フレームずつずれて重なっているフレーム同士で差をとると、データ量が増大する可能性が大きくなる。
【0084】
次いで、サンプル順番「i」が再び「0」とされ(ステップ26)、先頭の一フレームの先頭の位相データP(0)と次の一フレームの先頭の位相データP(0)との差分位相ΔP(0)(4ビット)が求められる(ステップ27)。
【0085】
続いて、サンプル順番「i」が順次+1され(ステップ28)、次の位相データP(1)についても、先頭の一フレームと次の一フレームとの差ΔP(1)(4ビット)が求められ、順次位相データP(2)、位相データP(3)、位相データP(4)、位相データP(5)、位相データP(6)、位相データP(7)、位相データP(8)についても差分位相ΔP(2)(4ビット)、差分位相ΔP(3)(4ビット)、差分位相ΔP(4)(4ビット)、差分位相ΔP(5)(4ビット)、差分位相ΔP(6)(4ビット)、差分位相ΔP(7)(4ビット)、差分位相ΔP(8)(4ビット)が求められ、サンプル順番「i」が「8」になるまで繰り返される(ステップ29)。
【0086】
この各フレームの位相の差ΔP(1)(4ビット)は、一フレーム分ずれて重なっていないフレームどうしのものであり、上述の半フレームずつずれて重なっているフレーム同士では行われない。むろん半フレームずつずれて重なっているフレーム同士で行われてもよい。半フレームずつずれて重なっているフレーム同士で差をとると、データ量が増大する可能性が大きくなる。
【0087】
そして、先頭の一フレームの末尾の最大値Xmaxと次の一フレームの末尾の最大値Xmaxとの差ΔXmax(7ビット)が求められる(ステップ31)。この最大値差ΔXmax(7ビット)の最上位ビットにデータ形式が差分形式であることを示す「0」(FALS)が付加される(ステップ32)。また、上記先頭の一フレームの末尾の最大値差ΔXmax(7ビット)の最上位にデータ形式が真値形式であることを示す「1」(TRUE)が付加される(ステップ33)。
【0088】
以上の差分圧縮は、二番目の一フレームと三番目の一フレームとの差、三番目の一フレームと四番目の一フレームとの差、四番目の一フレームと五番目の一フレームとの差、………について繰り返され(ステップ34、35)、末尾の一フレームまで達したら終了される(ステップ34)。
【0089】
上記図5及び図6の楽音波形データMW(振幅データ)は、半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複した、奇数番目フレームと偶数番目フレームとに分かれているので、この楽音波形データMWの差分圧縮処理も、半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複した、同じフレーム(時間長)につき、奇数番目フレームと偶数番目フレームの複数の楽音波形データMW(振幅データ)につき行われる。
【0090】
(7)差分圧縮された楽音波形データのデータ構造
図8及び図9は上記図7の処理によって差分圧縮された楽音波形データのデータ構造の半フレームずれた二フレームを示す。この楽音波形データは8ビット×19ワード=152ビットを示す。差分振幅ΔFRNX(0)(4ビット)、差分振幅ΔFRNX(1)(4ビット)、差分振幅ΔFRNX(2)(4ビット)、差分振幅ΔFRNX(3)(4ビット)、差分振幅ΔFRNX(4)(4ビット)、差分振幅ΔFRNX(5)(4ビット)、差分振幅ΔFRNX(6)(4ビット)、差分振幅ΔFRNX(7)(4ビット)、差分振幅ΔFRNX(8)は、2つずつ一緒に8ビット形式で記憶される。
【0091】
また、差分位相ΔP(0)(4ビット)、差分位相ΔP(1)(4ビット)、差分位相ΔP(2)(4ビット)、差分位相ΔP(3)(4ビット)、差分位相ΔP(4)(4ビット)、差分位相ΔP(5)(4ビット)、差分位相ΔP(6)(4ビット)、差分位相ΔP(7)(4ビット)、差分位相ΔP(8)(4ビット)も、2つずつ一緒に8ビット形式で記憶される。
【0092】
末尾には、最上位に「0」(FALS)が付加された最大値差ΔXmax(7ビット)が記憶される。このような差分圧縮によって、8ビット×19ワード=152ビットが8ビット×10ワード=80ビットに圧縮される。また、先頭の一フレームのデータ形式は上記図5及び図6の形式と同じであるが、末尾の最大値Xmaxの最上位には、データ形式が真値形式であることを示す「1」(TRUE)が付加される。
【0093】
このように、振幅X(i)についても、差分まで小さく圧縮して記憶できる。さらに、位相P(i)についても、差分まで小さく圧縮して記憶できる。また、図5、図6、図8及び図9の楽音波形の最大値Xmaxが量子化されたり、ある周期の楽音波形の最大値Xmaxと、この周期の前または後の周期の楽音波形の最大値Xmaxとにつき差分が求められて圧縮記憶されたりする。これにより、最大値Xmaxについても差分まで小さく圧縮できる。
【0094】
(8)楽音波形データのデータ構造の具体例
図10、図11、図12、図13、図14、図15は上記圧縮された楽音波形データ及び差分圧縮された楽音波形データのデータ構造の具体例を示す。図10は、図11に示す楽音波形についての各データを示す。図13は、図14に示す余弦波形の楽音波形についての各データを示す。
【0095】
図12は、図10のデータの図11の楽音波形について、圧縮波形を伸長復元再生と、この精度を8ビットに減少したものを示す。図15も、図12のデータの図13の楽音波形について、圧縮波形を伸長復元再生と、この精度を8ビットに減少したものを示す。
【0096】
図10及び図13の右端に示すように、左端に示すリニア値の楽音波形のビット数を減らして、楽音波形をかなり圧縮することができる。また、図12及び図15に示すように、伸長復元再生された楽音波形(差分値)の再現精度はよいといえる。但し図11の楽音波形には周期性が少ないため、再現精度は若干落ちている。
【0097】
(9)楽音伸長復元回路46
図17は上記楽音伸長復元回路46を示す。上記プログラム/データ記憶部4または情報記憶部7からコントローラ2などによって読み出された、圧縮された楽音波形データMW(振幅データ)は、楽音波形展開回路21で展開つまり差分形式FRNX(i)から真値形式RNX(i)に変換され、奇数番目のフレームと偶数番目のフレームに分けられる。
【0098】
次いで、不動小数点表記の楽音波形データMW:RNX(i)は、リニア化回路22、32でリニアな値にRNX(i)に変換され、加算器(減算器)23、33で上記限界値Xtからリニア振幅値RNX(i)が減算されて、上記標準振幅NX(i)が求められる。この限界値Xtはコントローラ2などによって、図示しないバッファにストアされて、この加算器(減算器)23、33に送られる。この限界値Xtは、上記図5、図6、図8、図9の楽音波形データのビット数から求められたり、プログラム/データ記憶部4から読み出されたりされる。
【0099】
さらに、乗算器24、34で上記標準振幅NX(i)に上記最大値/限界値:Xmax/Xtが乗算され、上記振幅データX(i)が求められる。この最大値/限界値:Xmax/Xtコントローラ2などによって図示しないバッファにストアされて、この乗算器24、34に送られる。この最大値Xmaxは、上記図5、図6、図8、図9の楽音波形データの各フレームの末尾や位相データの上位ビットから読み出される。
【0100】
この振幅データX(i)は、バッファメモリ25、35にストアされて、このストアされた振幅データX(i)が逆変換回路26、36によって、フーリエ逆変換またはコサイン逆変換処理が行われて、この逆変換されたる振幅データが一フレーム分バッファメモリ27、37にストアされ、クロスフェード回路28で一つに合成される。
【0101】
これらリニア化回路、加算器(減算器)、乗算器、バッファメモリ、逆変換回路、バッファメモリは、奇数番目のフレームの楽音波形データMWを処理する、リニア化回路22、加算器(減算器)23、乗算器24、バッファメモリ25、逆変換回路26、バッファメモリ27と、偶数番目のフレームの楽音波形データMW(振幅データ)を処理する、リニア化回路32、加算器(減算器)33、乗算器34、バッファメモリ35、逆変換回路36、バッファメモリ37とからなっている。
【0102】
したがって、楽音波形データMWの伸長処理は、上記並行して圧縮された奇数フレームと偶数フレームの複数の楽音波形データMWにつき並行して実行される。これら奇数番目のフレームの楽音波形データMW(振幅データ)と偶数番目のフレームの楽音波形データMWとが、クロスフェード回路28で一つに合成される。
【0103】
上記逆変換回路26、36における、フーリエ逆変換は、以下の式であらわされる。
s(k)=(1/n)Σc(i)×exp{−(j×2πik/n)}…(11)
上記逆変換回路26、36における、コサイン逆変換、以下の式であらわされる。
s(k)=(2/n)〔c(0)/2+Σc(i)×cos{i×π(2k+1)/2n}〕…(12)
【0104】
ここで各項、各数値は以下を表す。
n:フレーム内の全サンプルポイント数
k:フレーム内の全サンプルポイント数のk番目
i:各周波数成分の各スペクトル値のi番目
j:虚数単位(√−1)
【0105】
s(k):サンプリング(標本化)された楽音波形のフレーム内でのk番目の振幅値(サンプル値)
c(i)=X(i):i番目の周波数成分のスペクトル値(フーリエ変換では複素数、コサイン変換では実数)(上記c(i)と同じ)、振幅値
2πi:i番目の周波数成分(角周波数)の周期
Σ:i=0〜n−1の全累計
【0106】
この楽音伸長復元回路46の伸長復元処理で、上記図3の楽音波形圧縮処理と逆の伸長復元処理が行われる。したがって、以上のような量子化された楽音波形の伸長復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元も行われる。
【0107】
クロスフェード回路28からの伸長復元された楽音波形データMW(振幅データ)は、上記楽音波形メモリ42に書き込まれ、キーボード11の操作キーの音高に応じた速度で読みだされる。この楽音波形メモリ42から半フレームずつ読みだされるごとに、半フレーム検出信号が楽音波形メモリ42から上記楽音波形展開回路21に入力される。
【0108】
この図17の逆変換回路26、36とバッファメモリ27、37との間には、ディレイ回路が挿入される。このディレイ回路には、リニア回路22、32から出力されてくる位相データP(i)が入力され、この位相データP(i)と周波数に応じた時間長、移相(ディレイ)されて、伸長された振幅データX(i)の位相が付加される。次述する楽音波形展開回路21では、差分形式の位相データP(i)及び真値形式の位相データP(i)に基づいて、位相が同様にして伸長復元される。位相データP(i)がすべて真値形式であれば、そのまま読み出されて、上記ディレイ回路に入力される。
【0109】
上記逆変換回路26、36でのフーリエ逆変換によって、図5、図8、図9の振幅データX(i)と位相データP(i)とが周波数軸逆変換されて、実数部データRE(i)と虚数部データIM(i)とが求められ、この実数部データRE(i)と虚数部データIM(i)とから、位相成分に応じた移相処理された振幅が復元される。これにより、位相成分も合わせて伸長復元もできる。
【0110】
なお、上記図3の楽音波形圧縮処理では、上記フーリエ変換によって、実数部データRE(i)と虚数部データIM(i)とが求められ、この実数部データRE(i)と虚数部データIM(i)とが周波数軸変換されて振幅成分と位相成分とに変換される。これにより、位相成分も合わせて圧縮変換もできる。
【0111】
(10)楽音波形展開回路21
図18は上記楽音波形展開回路21を示す。アドレスジェネレータ51で発生された読み出しアドレスは、上記プログラム/データ記憶部4または情報記憶部7に送られ、差分形式の圧縮された楽音波形データMW(振幅データ)が読みだされ、セレクタ52、62を経て、差分バッファ53、63にストアされ、浮動小数点形式の加算器54、64でそれまで累算されてきた振幅データ(楽音波形データMW)にさらに累算され、上記リニア化回路22、32に送られる。
【0112】
上記加算器54、64からの振幅データは、セレクタ55、65を経て、トップバッファ56、66にストアされ、再び加算器54、64に再入力され振幅データが累算される。また、上記読み出された圧縮された楽音波形データMWが、差分形式ではなく、真値形式であれば、上記セレクタ55、65を経て、トップバッファ56、66に直接ストアされ、この真値形式の振幅データ(楽音波形データMW)に差分形式の振幅データ(楽音波形データMW)が順次累算されていき、上記リニア化回路22、32に送られる。
【0113】
上記セレクタ52、62、55、65には、図8及び図9の最下段の最上位の差分/真値ビットがセレクト信号として供給される。この差分/真値ビットは、差分を示す時は「0」(FALS)であり、真値を示す時は「1」(TRUE)である。上記読み出された楽音波形データMW(振幅データ)が真値のときは、セレクタ52、62の出力がセレクタ55、65側に切り換えられ、セレクタ55、65の入力がセレクタ52、62側に切り換えられる。したがって、上記読み出された楽音波形データMW(振幅データ)がトップバッファ56、66にストアされ、この真値から累算が開始される。
【0114】
上記読み出された楽音波形データMW(振幅データ)が差分のときは、セレクタ52、62の出力が差分バッファ53、63側に切り換えられ、セレクタ55、65の入力が加算器54、64側に切り換えられる。したがって、セレクタ55、65→トップバッファ56、66→加算器54、64→セレクタ55、65で楽音波形データMW(振幅データ)が循環され、これに読み出された差分の楽音波形データMW(振幅データ)が順次累算されていく。
【0115】
これらセレクタ、差分バッファ、加算器、セレクタ、トップバッファは、奇数番目のフレームの楽音波形データMW(振幅データ)を処理する、セレクタ52、差分バッファ53、加算器54、セレクタ55、トップバッファ56と、偶数番目のフレームの楽音波形データMW(振幅データ)を処理する、セレクタ62、差分バッファ63、加算器64、セレクタ65、トップバッファ66とからなっている。
【0116】
したがって、楽音波形データMWの伸長処理は、上記並行して圧縮された奇数フレームと偶数フレームの複数の楽音波形データMWにつき並行して実行される。この楽音波形展開回路21の波形展開処理(伸長復元処理)で、上記図7の差分圧縮処理と逆の波形展開処理(伸長復元処理)が行われる。
【0117】
(11)クロスフェード回路28
図19は上記クロスフェード回路28を示す。アドレスジェネレータ71で発生された読み出しアドレスは、コサインテーブル72、82に送られ、コサイン波形が読み出され、上記バッファメモリ27、37からの上記伸長復元された楽音波形データMW(振幅データ)に乗算器73、83で乗算され、加算器74で加算合成されて、上記楽音波形メモリ(バッファ)42に出力されストアされる。
【0118】
コサインテーブル72、82にはコサイン波形が記憶され、このコサイン波形のフレーム/周期は、上記楽音波形データMWのフレーム/周期に等しく、コサインテーブル72のコサイン波形の位相と、コサインテーブル82のコサイン波形の位相とは、半フレーム/半周期ずつ位相がずれている。本クロスフェード回路28の上記アドレスジェネレータ71は、上記楽音波形展開回路21のアドレスジェネレータ51と同じであり、このコサイン波形の読み出しと上記楽音波形データMW(振幅データ)とは同期され位相差もない。
【0119】
図20は上記2つのコサイン波形を示す。
コサインテーブル72のコサイン波形は以下の通りである。
1+(1/2)cos(2πt/T)…(13)
T:一フレーム/一周期の長さ
t:楽音波形データMW(実時間)の読み出しアドレス
コサインテーブル82のコサイン波形は以下の通りである。
1−(1/2)cos(2πt/T)…(14)
したがって、コサインテーブル72のコサイン波形とコサインテーブル82のコサイン波形とは加算すると、常に「1」となる。
【0120】
上記乗算器73には、上記奇数番目のフレームの楽音波形データMW(振幅データ)が入力され、乗算器83には、上記偶数番目のフレームの楽音波形データMW(振幅データ)が入力される。そして、上記コサインテーブル、乗算器は、奇数番目のフレームの楽音波形データMW(振幅データ)を処理する、コサインテーブル72、乗算器73と、偶数番目のフレームの楽音波形データMW(振幅データ)を処理する、コサインテーブル83、乗算器83とからなっている。したがって、楽音波形データMWの伸長処理は、上記並行して圧縮された奇数フレームと偶数フレームの複数の楽音波形データMWにつき並行して実行される。
【0121】
このような奇数番目のフレームの楽音波形データMW(振幅データ)にはコサイン波形1+(1/2)cos(2πt/T)が乗算され、偶数番目のフレームの楽音波形データMW(振幅データ)にはコサイン波形1−(1/2)cos(2πt/T)が乗算される。したがって、奇数番目のフレームの楽音波形データMWと偶数番目のフレームの楽音波形データMWとは、このコサイン波形で重み付けされ、各フレーム(時間長)の中央付近で大きくされ、各フレーム(時間長)の端付近で小さくされる。
【0122】
したがって、楽音波形データMW(振幅データ)の伸長復元で、ノイズの出る各フレーム(時間長)の端付近で重み付けが小さくされ、ノイズが出にくくなる。そして、これらのコサイン波形1+(1/2)cos(2πt/T)と1−(1/2)cos(2πt/T)とは、位相が半フレーム(半時間長)ずつずれており、加算すると常に「1」になり、コサイン波形で重み付けされた楽音波形データMW(振幅データ)は加算器74で加算合成されるので、重み付けされても、加算合成される楽音波形データMW(振幅データ)の重み付けは平坦になる。
【0123】
また、重み付けにコサイン波形を使うと、三角波に比べて、重み付けが「1」付近になっている時間が長くなり、重み付け合成つまりクロスフェードによる、楽音波形データMW(振幅データ)の余分な変異が減少する。
【0124】
(12)全体処理
図21はコントローラ(CPU)2によって実行される全体処理のフローチャートを示す。この処理全体は本成分音合成装置の電源オンによって開始され、電源オフまで繰り返し実行される。まず、コントローラ(CPU)2内のメモリの初期化など種々の後述するイニシャライズ処理が行われる(ステップ01)。
【0125】
次いで、キーボード11またはパネルスイッチ群13のオン操作またはオフ操作などのオンイベントまたはオフイベントがあると(ステップ02)、このイベントに応じた処理が実行される(ステップ03)。そして、時変数処理が行われ(ステップ04)、以上のステップ02から04の処理が電源オフまで繰り返される。この時変数処理は、時間の経過に伴って変化する変数に対する処理であり、エンベロープのフェーズ切換えまたはエンベロープのリリース切換え等のエンベロープ処理、ビブラート等のエフェクト処理などが実行される。
【0126】
(13)イベント処理
図22は上記ステップ03のイベント処理のフローチャートを示す。上記検出されたイベントが音色の設定であれば(ステップ11)、音色の設定処理が行われる(ステップ12)。また、検出されたイベントがキーボード11のキーのオンであれば(ステップ13)、発音処理が開始される(ステップ14)。
【0127】
さらに、検出されたイベントがキーボード11のキーのオフであれば(ステップ15)、消音処理が開始される(ステップ16)。そして、検出されたイベントがこれらのいずれでも無い場合には、その他の処理が実行される(ステップ17)。このその他の処理では、音量、トランスポーズ、リズムの選択、自動演奏のスタート/ストップなどの処理が開始される。
【0128】
(14)音色設定処理
図23は上記ステップ12の音色設定処理のフローチャートを示す。上記設定された音色のトーンナンバデータがコントローラ2内のRAMなどに記憶される(ステップ21)。そして、このトーンナンバデータに応じた圧縮楽音波形データMWがプログラム/データ記憶部4または情報記憶部7が読み出され、図17、図18、図19の楽音伸長復元回路46で伸長復元が開始され、楽音波形メモリ(バッファ)42に先頭フレームの伸長復元された楽音波形データMWがストアされる(ステップ22)。楽音波形展開回路21の圧縮楽音波形データMWの展開(伸長復元)も開始
【0129】
この伸長復元は、楽音波形データMWの一番目の奇数番目フレームで行われ、次の二番目の偶数番目フレームでは行われない。この音色設定ではキーオンはなく、発音開始はされていないが、圧縮楽音波形データMWが読み出されて伸長復元及び楽音波形展開回路21の圧縮楽音波形データMWの展開(伸長復元)が開始される。これにより、次にキーオンがあったとき、伸長復元された楽音波形データMWが直ちに出力され、応答性が向上する。
【0130】
(15)発音処理
図24は上記ステップ14の発音処理のフローチャートを示す。まず、空きチャンネルがサーチされ、割り当てるチャンネルが決定され、このチャンネルに当該音色に関するデータが移動され(ステップ31)、アタック、ディケイ、サスティーンなどのエンベロープなどのパラメータ演算等が行われ(ステップ32)、発音開始の指示が行われ、上記一番目の奇数番目フレームの楽音波形データMWに基づいて発音が開始され、次の二番目の偶数番目フレームの楽音波形データMWの伸長復元が開始され、以降順次、奇数番目フレームと偶数番目フレームとが交互に伸長復元されていき、これにアタック、ディケイ、サスティーンのエンベロープが乗算合成されていく(ステップ32)。
【0131】
このとき、上記クロスフェード回路28の図20に示すクロスフェード処理が開始される。楽音の先頭では先頭のフレームのみ伸長復元されており、他方のフレームは伸長復元されず、クロスフェードは行われていないが、楽音の先頭ではエンベロープレベルは「0」であり、ノイズがあったとしても聴覚上問題とはならない。
【0132】
(16)消音処理
図25は上記ステップ16の消音処理のフローチャートを示す。まず、キーオフに係る楽音が割り当てられているチャンネルがサーチされ、このチャンネルの楽音がオフに切り換えられ(ステップ41)、リリースのエンベロープなどのパラメータ演算等が行われ(ステップ42)、発音終了の指示が行われ、伸長復元されている楽音波形データMWに、リリースのエンベロープが乗算合成されていく(ステップ42)。
【0133】
そして、リリースが終了すると、上記圧縮楽音波形データMWの伸長復元は終了する。このとき、上記クロスフェード回路28の図20に示すクロスフェード処理も終了し、楽音波形展開回路21の圧縮楽音波形データMWの展開(伸長復元)も終了する。こうして、圧縮楽音波形データMWの伸長復元はリリースの末尾まで継続される。
【0134】
(17)他の実施の形態
本件発明は上記実施例に限定されず、本件発明の趣旨を逸脱しない範囲で種々変更可能である。例えば、上記フーリエ変換、コサイン変換は、「時間軸に沿ったデータから周波数軸に沿ったデータへの変換」を意味し、「時間軸に沿ったデータから周波数軸に沿ったデータへの変換」ができれば、フーリエ変換、コサイン変換以外の変換が、上記フーリエ変換、コサイン変換の代わりに実行されてもよい。
【0135】
上記ステップ09の位相データP(i)の精度が7ビットに下げられる処理は省略されてもよい。上記ステップ10の振幅データX(i)がフレーム内の最大値Xmax及び限界値Xtによって標準振幅NX(i)とされる処理は省略されてもよい。
【0136】
上記限界値Xtまたは最大値Xmaxは省略され、また上記ステップ11の標準振幅NX(i)が限界値Xtから差し引かれ、振幅差値RNX(i)が求められる処理は省略されてもよい。
【0137】
図7の差分圧縮処理は省略されても良い。図3の圧縮処理だけでも楽音波形の圧縮は可能である。図7のステップ21〜24の振幅の差分圧縮のみ省略されてもよいし、図7のステップ26〜29の位相の差分圧縮のみ省略されてもよい。
【0138】
図7のステップ31の隣り合うフレーム/周期の両最大値Xmaxの差ΔXmaxが求められる処理波形は省略されてもよい。図7のステップ32のデータ形式が差分形式であることを示す「0」(FALS)が付加される処理は省略されてもよい。図7のステップ33のデータ形式が真値形式であることを示す処理は省略されてもよい。これらのデータが省略されても、フレーム/周期が先頭か否かによって、データ形式が差分形式か真値形式かが判別される。
【0139】
上記圧縮記憶された楽音波形データの伸長復元再生は、上記図7及び図3の各ステップの演算処理が逆算されることによって達成される。位相データPについては圧縮処理が省略され、図5、図6、図8及び図9の記憶データから除外され、振幅データXのみ圧縮記憶されてもよい。
【0140】
上記図7、図8及び図9の差分圧縮は、隣り合う周期/フレームの単純な差だけでなく、2点または3点以上のサンプルポイントの線形予測に基づく値との差分を求めて記憶してもよい。
【0141】
限界値Xtから離れるほど量子化精度が細かくされ、限界値Xtに近づくほど量子化精度が粗くされてもよい。上記ステップ07の実数部データRE(i)と虚数部データIM(i)が求められる処理は省略され、フーリエ変換から直接振幅データX(i)と位相データP(i)とが求められてもよい。
【0142】
上記限界値Xtは、上記楽音波形の当該フレーム/周期または全フレーム/全周期の平均値または最頻値でもよい。この平均値はフレーム/周期の全サンプルの振幅値の平均値、相乗平均値、相加平均値または積分値、もっとも良く現れる振幅値などである。
【0143】
これにより、上記楽音波形の最大値Xmaxに対する平均値または最頻値などの限界値Xtの比率が、上記楽音波形の振幅値X(i)に演算される。よって、限界値Xtから離れるほど、量子化の精度をより細かくできる。
【0144】
上記フーリエ変換またはコサイン変換される楽音波形の一フレームは、当該楽音波形の一周期にほぼ一致していて、一フレーム=一周期=16サンプルポイント、前半フレーム=後半フレーム=半周期=8サンプルポイントであるが、一致していなくてもよい。上記フーリエ変換またはコサイン変換は、離散ではないフーリエ変換またはコサイン変換が含まれてもよい。
【0145】
上記図3のステップ02のフーリエ変換での窓関数(時間窓n)は、無限長または人間の可聴域より低周期に対応した時間長とされてもよい。上記図3のステップ005から11の処理は各ワード(各サンプルポイント)ごと一フレームにわたって繰り返されてもよい。
【0146】
上記ステップ02〜03の処理は以下のようにされても良い。上記離散フーリエ変換が行なわれ(ステップ02)、このフーリエ変換による各周波数成分のスペクトル値(振幅値)c(i)のうちの最大でもっとも周波数の低いものが求められ(ステップ03)、この最大の各周波数(角周波数)の周期jiωtつまり基本周波数/基本周期が求められる(ステップ04)。
【0147】
そして、この基本周波数/基本周期(時間長)に対応した略等しいフレーム長/時間窓nで、当該楽音波形が切り出され(ステップ05)、この切り出された楽音波形が、上記ステップ02と同じく再度フーリエ変換または再度コサイン変換され、プログラム/データ記憶部4に記憶される(ステップ06)。
【0148】
上記フレーム(時間長)の位相のずれは、半フレーム(半時間長)のほか、1/3フレーム(1/3時間長)、1/4フレーム(1/4時間長)、1/5フレーム(1/5時間長)、…などでもよい。この場合、図5、図6、図8、図9の楽音波形データMW(振幅データ)は、3つ、4つ、5つ、…、重複して圧縮記憶される。
【0149】
この場合、図17の音伸長復元回路46、図18の楽音波形展開回路21、図19のクロスフェード回路28は、奇数番目と偶数番目の2列ではなく、3n番目、3n+1番目、3n+2番目の三列、4n番目、4n+1番目、4n+2番目、4n+3番目の四列、5n番目、5n+1番目、5n+2番目、5n+3番目、5n+4番目の五列、…(n=1、2、3、…)となる。また、図18の楽音波形展開回路21のセレクタ52、62、55、65の選択端も3段、4段、5段、…となる。
【0150】
上記クロスフェード28の重み付けのためのコサイン波形は、他にサイン波、三角波、台形波、のこぎり波などでもよい。上記図17、図18、図19で処理される圧縮楽音波形の伸長復元処理はプログラム(ソフトウエア)によって実行され得る。また、この奇数番目フレームの処理と偶数番目フレームの処理とは完全に同期している必要はなく、一方の伸長復元処理後他方の伸長復元処理が行われ交互に切り換えられてもよい。これでも並行に処理されているといえる。
【0151】
図17、図18、図19の回路において、圧縮楽音波形データが記憶されているのは、楽音波形メモリであってもよく、伸長された楽音波形データがストアされるのはバッファメモリであってもよい。
【0152】
圧縮された楽音波形データMWの先頭の奇数番目のフレーム(時間長)の楽音波形データMWの伸長復元は、上記ステップ12の音色設定処理の時ではなく、上記ステップ14の発音処理の時に実行されてもよい。また、圧縮された楽音波形データMWの先頭の次の偶数番目以降のすべてまたは一部のフレーム(時間長)の楽音波形データMWの伸長復元は、上記ステップ14の発音処理の時ではなく、上記ステップ12の音色設定処理の時に予め行われていてもよい。
【0153】
(18)他の発明の効果
[1]コントローラが、 所定の時間長で切り出された楽音波形をフーリエ変換させ、 このフーリエ変換された情報につき、振幅成分及び位相成分を量子化させ、 この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせることを特徴とする楽音波形の情報圧縮方法。
【0154】
[2]コンピュータに対して、 所定の時間長で切り出された楽音波形をフーリエ変換させる処理と、 このフーリエ変換された情報につき、振幅成分及び位相成分を量子化させる処理と、 この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせる処理とを実行させること特徴とする楽音波形の情報圧縮のためのコンピュータプログラム。
【0155】
[3]所定の時間長で切り出された楽音波形をフーリエ変換する手段と、 このフーリエ変換された情報につき、振幅成分及び位相成分を量子化する手段と、 この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくする手段を備えたことを特徴とする楽音波形の情報圧縮装置。
【0156】
[4]上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、 この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行い、 この復元された楽音波形をフーリエ逆変換またはコサイン逆変換することを特徴とする楽音波形の情報伸長方法。
【0157】
[5]上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、 この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行う手段と、 この復元された楽音波形をフーリエ逆変換またはコサイン逆変換する手段とを備えたことを特徴とする楽音波形の情報伸長装置。
【0158】
[6]上記量子化を、上記楽音波形の位相成分に対して振幅成分をより細かくすることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、振幅成分の伸長復元再生において再現性を高めることができる。
【0159】
[7]上記所定の時間長は、上記楽音波形の一周期にほぼ一致していることを特徴とする請求項3、5または6記載の情報圧縮装置または情報伸長装置。これにより、楽音の一周期ごとに量子化でき、楽音波形の周期性を利用した量子化/圧縮ができる。
【0160】
[8]上記楽音波形の取り得る最大振幅の限界値に対する当該楽音波形の最大値の比率が、上記楽音波形の振幅成分に演算されることを特徴とする請求項3、5、6または7記載の情報圧縮装置または情報伸長装置または情報伸長装置。これにより、振幅成分の全ビットを無駄なく使って振幅成分を表記できる。
【0161】
[9]上記楽音波形の振幅成分は、上記楽音波形の取り得る最大振幅の限界値と、上記楽音波形の振幅成分との差に変換されることを特徴とする請求項3、5、6、7または8記載の情報圧縮装置または情報伸長装置または情報伸長装置。これにより、楽音波形の振幅が大きいときに、量子化の精度をより細かくできる。
【0162】
[10]上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における振幅成分の差分を求めることを特徴とする請求項3、5、6、7、8または9記載の情報圧縮装置または情報伸長装置。これにより、記憶する楽音波形の振幅成分を差分まで小さく圧縮できる。
【0163】
[11]上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における位相成分の差分を求めることを特徴とする請求項3、5、6、7、8、9または10記載の情報圧縮装置または情報伸長装置。これにより、位相についても、記憶する楽音波形を差分まで小さく圧縮できる。
【0164】
[12]上記楽音波形の最大値が量子化される、またはある周期の楽音波形の最大値と、この周期の前または後の周期の楽音波形の最大値とにつき差分を求めることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、最大値についても差分まで小さく圧縮できる。
【0165】
[13]上記請求項3における楽音波形の圧縮処理は、上記楽音波形につき重複して実行され、この重複して実行される圧縮処理における上記時間長は同じで位相がずれており、
上記請求項5における楽音波形の伸長処理は、この重複して圧縮された複数の楽音波形につき並行して実行され、 この伸長された複数の楽音波形は合成されて出力され、この合成される各楽音波形の重み付けは、上記位相のずれた各時間長の中央付近で大きくされ、当該時間長の端付近で小さくされることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、楽音波形データ(振幅データ)の伸長復元で、ノイズの出る各時間長(フレーム)の端付近で重み付けが小さくされ、ノイズが出にくくなる。
【0166】
[14]圧縮された楽音波形の先頭の時間長の楽音波形は、音色指定があったときに伸長され、 圧縮された楽音波形の先頭の次以降の時間長の楽音波形は、発音指示があったときに伸長されることを特徴とする請求項13記載の情報圧縮装置または情報伸長装置。これにより、発音指示に遅れずに即座に伸長復元した楽音を出力できる。
【0167】
[15]上記フーリエ変換によって、実数部と虚数部とが求められ、この実数部と虚数部とが周波数軸変換されて振幅成分と位相成分とに変換され、 上記フーリエ逆変換によって、この振幅成分と位相成分とが周波数軸逆変換されて、実数部と虚数部とが求められ、この実数部と虚数部とから位相成分に応じた移相処理された振幅が復元されることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、位相成分も合わせて圧縮変換でき伸長復元もできる。
【0168】
[16]上記請求項1記載の楽音波形の情報圧縮方法によって処理された、圧縮され記憶された楽音波形のデータ構造、または上記請求項4の楽音波形の情報伸長方法によって処理される、圧縮され記憶された楽音波形のデータ構造。これにより、楽音波形のデータの容量が少なくなる。
【0169】
[17]請求項3、5、6、7、8、9、10、11、12、13、14、15または16記載の情報圧縮装置によって処理された、圧縮され記憶された楽音波形のデータ構造、または請求項5、6、7、8、9、10、11、12、13、14、15または16記載の情報伸長装置によって処理される、圧縮され記憶された楽音波形のデータ構造。これにより、楽音波形のデータの容量が少なくなる。
【0170】
[18]上記楽音波形の最大値に対する平均値または最頻値の比率が、上記楽音波形の振幅成分に演算されることを特徴とする請求項3、5、6、7、8、9、10、11、12、13、14、15、16または17記載の情報圧縮装置または情報伸長装置。これにより、平均値または最頻値から離れるほど、量子化の精度をより細かくできる。
【0171】
[19]上記楽音波形の振幅成分は、上記楽音波形の平均値または最頻値と、上記楽音波形の振幅成分との差に変換されることを特徴とする請求項3、5、6、7、8、9、10、11、12、13、14、15、16、17または18記載の情報圧縮装置または情報伸長装置。これにより、楽音波形の振幅が大きいときに、量子化の精度をより細かくできる。
【産業上の利用可能性】
【0172】
楽音波形の振幅が大きい部分が細かく量子化され、振幅が小さい部分が粗く量子化され、楽音波形の記憶容量が小さくされる。標準振幅NX(i)は限界値Xtから差し引かれ、振幅差値RNX(i)が求められる(ステップ11)。
RNX(i)=SIG{NX(i)}×〔Xt−ABS{NX(i)}〕…(7)
【0173】
SIG{NX(i)}:NX(i)が負なら「−1」、負ではないなら「1」
ABS{NX(i)}:{NX(i)}の絶対値
この振幅差値RNX(i)は、8ビットの浮動小数点表記FRNX(i)とされる。これにより、上記楽音波形の振幅値X(i)は、上記楽音波形の限界値Xと、上記楽音波形の振幅値X(i)との差に変換され、楽音波形の振幅Xが大きいときに、量子化の精度がより細かくされる。この圧縮楽音波形は図17、18、19の回路で伸長復元される。
【図面の簡単な説明】
【0174】
【図1】情報圧縮装置などの全体回路1を示す。
【図2】楽音信号発生部5を示す。
【図3】楽音波形の圧縮処理のフローチャートを示す。
【図4】実数部データRE(i)及び虚数部データIM(i)と振幅データX(i)及び位相データP(i)との関係を示す。
【図5】圧縮された楽音波形データ(離散フーリエ変換)の一フレームを示す。
【図6】圧縮された楽音波形データ(離散コサイン変換)の一フレームを示す。
【図7】差分圧縮の演算処理のフローチャートを示す。
【図8】図7の処理によって差分圧縮された楽音波形データを示す。
【図9】図7の処理によって差分圧縮された楽音波形データを示す。
【図10】不規則波形の圧縮された楽音波形データ及び差分圧縮された楽音波形データの具体例を示す。
【図11】図10のデータによる不規則波形を示す。
【図12】図11の例において伸長復元再生された楽音波形データの具体例を示す。
【図13】余弦波の圧縮された楽音波形データ及び差分圧縮された楽音波形データの具体例を示す。
【図14】図13のデータによる余弦波形を示す。
【図15】図13の例において伸長復元再生された楽音波形データの具体例を示す。
【図16】楽音波形の振幅が小さいときに比べて大きいときに、量子化をより細かくする特性を示す。
【図17】図2の楽音信号発生部5の中の楽音伸長復元回路46を示す。
【図18】図17の楽音伸長復元回路46の中の楽音波形展開回路21を示す。
【図19】図17の楽音伸長復元回路46の中のクロスフェード回路28を示す。
【図20】クロスフェード回路28における重み付け合成の2つのコサイン波形を示す。
【図21】全体処理のフローチャートを示す。
【図22】上記ステップ03のイベント処理のフローチャートを示す。
【図23】上記ステップ03のイベント処理のフローチャートを示す。
【図24】上記ステップ14の発音処理のフローチャートを示す。
【図25】上記ステップ16の消音処理のフローチャートを示す。
【符号の説明】
【0175】
1…全体回路、2…コントローラ(CPU)、
3…タイミング発生部、4…プログラム/データ記憶部、
5…楽音信号発生部、6…サウンドシステム、7…情報記憶部、
11…キーボード、12…キーボードスキャン回路、
13…パネルスイッチ群、14…スイッチスキャン回路、
15…ミディ回路、16…マイク、17…音響変換回路、
21…楽音波形展開回路、22、32…リニア化回路、
23、33…加算器(減算器)、24、34…乗算器、
25、35…バッファメモリ、26、36…逆変換回路、
27、37バッファメモリ、28…クロスフェード回路、
40…アサインメントメモリ、41…楽音波形読出回路、
42…楽音波形メモリ(バッファ)、43…乗算器、44…累算器、
45…エンベロープジェネレータ、46…楽音伸長復元回路、
51…アドレスジェネレータ、52、62…セレクタ、
53、63…差分バッファ、54、64…加算器、
55、65…セレクタ、56、66…トップバッファ、
71…アドレスジェネレータ、72、82…コサインテーブル、
73、83…乗算器、74…加算器74。
【技術分野】
【0001】
本発明は、楽音波形の情報圧縮方法、情報伸長方法、情報圧縮のためのコンピュータプログラム、情報圧縮装置、情報伸長装置及びデータ構造に関し、特に楽音波形の圧縮記憶などに関する。
【背景技術】
【0002】
従来、楽音波形を記憶するための記憶容量を小さくするために種々の手法が考えられてきている。このようなものの1つに、楽音波形をフーリエ変換して圧縮してまたは圧縮しないで記憶するものが知られている。
【0003】
【特許文献1】特許3673384号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところが、このような圧縮記憶される楽音波形では、量子化を細かくするほうが、元波形をより緻密に再現できるが、記憶容量が増えてしまうという問題があった。
【課題を解決するための手段】
【0005】
上記目的を達成するため、本件発明では、所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換し、 このフーリエ変換またはコサイン変換された情報につき、振幅成分及び位相成分を量子化し、 この量子化を振幅成分の値が小さいときに比べて大きいときに、より細かくするようにした。
【0006】
また、上記圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、 この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行い、 この復元された楽音波形をフーリエ逆変換またはコサイン逆変換するようにした。
【発明の効果】
【0007】
これにより、振幅成分の値が大きい部分の量子化レベルを細かくするが、楽音波形の振幅が小さい部分の量子化レベルを粗くできるので、この分楽音波形の記憶容量を小さくできる。また、この圧縮された楽音波形を伸長復元して元の楽音波形を再生できる。
【0008】
さらに、楽音波形の中の大きな成分ほど高い精度で量子化され、楽音波形の中の小さな成分ほど低い精度で量子化される。この結果、大きな音が鳴っている背景での小さな音のわずかな大小変化は簡略化され、人間の聴感に合致させることができる。
【発明を実施するための最良の形態】
【0009】
(1)全体回路
図1は、楽音波形の情報圧縮方法及び情報伸長方法を実現する全体回路、情報圧縮方法のためのコンピュータプログラムを実行する全体回路、並びに情報圧縮装置、情報伸長装置、楽音制御装置、自動演奏装置または電子楽器の全体回路1を示す。
【0010】
キーボード11の各キーは、楽音の発音及び消音を指示するもので、キースキャン回路12によってスキャンされ、キーオン、キーオフを示すデータが検出され、コントローラ2(CPU、DSP:デジタルシグナルプロセッサ)によってプログラム/データ記憶部4に書き込まれる。そして、それまでプログラム/データ記憶部4に記憶されていた各キーのオン、オフの状態を示すデータと比較され、各キーのオンイベント、オフイベントの判別が、コントローラ2によって行われる。
【0011】
このキーボード11の各キーには段差タッチスイッチなどの速度センサー、加速度センサー、圧力センサーが設けられ、段差スイッチごとに上記スキャンが行われ、各段差スイッチの先頭のオン/オフごとにオンイベント/オフイベントの検出が行われる。この段差スイッチなどのセンサーによってタッチの速さと強さを示す上記タッチ情報つまりイニシャルタッチデータとアフタタッチデータとが発生される。なお、キーボード11は、電子弦楽器、電子吹奏(管)楽器、電子打楽器(パッド等)、コンピュータのキーボード等で代用される。
【0012】
パネルスイッチ群13の各スイッチは、スイッチスキャン回路14によって、スキャンされる。このスキャンにより、各スイッチのオン、オフを示すデータが検出され、コントローラ2によってプログラム/データ記憶部4に書き込まれる。そして、それまでプログラム/データ記憶部4に記憶されていた各スイッチのオン、オフの状態を示すデータと比較され、各スイッチのオンイベント、オフイベントの判別が、コントローラ2によって行われる。
【0013】
ミディ回路15は、外部接続された電子楽器との間で演奏情報や楽音波形信号の送受を行うためのインターフェースである。この演奏情報はMIDI(ミュージカルインスツルメントデジタルインターフェース)規格のもので、この演奏情報に基づいた発音も行われる。
【0014】
上記キーボード11またはミディ回路15には、自動演奏装置も含まれる。これらキーボード11、パネルスイッチ群13、ミディ回路15及び自動演奏装置から発生された演奏情報(楽音発生情報)は、楽音を発生させるための情報である。
【0015】
上記演奏情報(楽音発生情報)は、音楽的ファクタ(因子)情報であり、音高(音域)情報(音高決定因子)、発音時間情報、演奏分野情報、発音数情報、共鳴度情報などである。発音時間情報は楽音の発音開始からの経過時間を示す。演奏分野情報は、演奏パート情報、楽音パート情報、楽器パート情報等を示し、例えばメロディ、伴奏、コード、ベース、リズム、MIDI等に対応したり、または上鍵盤、下鍵盤、足鍵盤、ソロ鍵盤、MIDI等に対応したりしている。
【0016】
上記音高情報はキーナンバデータKNとして取り込まれる。このキーナンバデータKNはオクターブデータ(音域データ)と音名データとからなる。演奏分野情報は、パートナンバデータPNとして取り込まれ、このパートナンバデータPNは各演奏エリアを識別するデータであって、発音操作された楽音がどの演奏エリアからのものかによって設定される。
【0017】
発音時間情報は、トーンタイムデータTMとして取り込まれ、キーオンイベントからのタイムカウントデータに基づいたり、またはエンベロープフェーズなどが転用されたりする。この発音時間情報は特願平6−219324号明細書及び図面に発音開始からの経過時間情報として詳しく示される。
【0018】
発音数情報は同時に発音している楽音の数を示し、例えばアサインメントメモリ40のオン/オフデータが「1」の楽音の数に基づき、この数は特願平6−242878号の図9及び図15、特願平6−2476855号の図8及び図18、特願平6−276857号の図9及び図20、特願平6−276858号の図9及び図21のフローチャートに基づいて求められる。
【0019】
さらに、上記パネルスイッチ群13には各種スイッチが設けられ、この各種スイッチは音色タブレット、エフェクトスイッチ、リズムスイッチ、ペダル、ホイール、レバー、ダイヤル、ハンドル、タッチスイッチ等であって楽器用のものである。このペダルはダンパーペダル、サスティンペダル、ミュートペダル、ソフトペダル等である。
【0020】
この各種スイッチより、楽音制御情報が発生され、この楽音制御情報は発生された楽音を制御する情報であって音楽的ファクタ(因子)情報であり、音色情報(音色決定因子)、タッチ情報(発音指示操作の速さ/強さ)、発音数情報、共鳴度情報、エフェクト情報、リズム情報、音像(ステレオ)情報、クオンタイズ情報、変調情報、テンポ情報、音量情報、エンベロープ情報等である。これら音楽的ファクタ情報も上記演奏情報(楽音情報)に合体され、上記各種スイッチより入力されるほか、上記自動演奏情報に合体されたり、上記インターフェースで送受される演奏情報に合体されたりする。
【0021】
上記音色情報は、鍵盤楽器(ピアノ等)、管楽器(フルート等)、弦楽器(バイオリン等)、打楽器(ドラム等)の楽器(発音媒体/発音手段)の種類等に対応しており、トーンナンバデータTNとして取り込まれる。上記エンベロープ情報は、エンベロープレベルEL、エンベロープタイムET、エンベロープフェーズEFなどである。
【0022】
このような音楽的ファクタ情報は、コントローラ2へ送られ、後述の各種信号、データ、パラメータの切り換えが行われ、楽音の内容が決定される。上記演奏情報(楽音発生情報)及び楽音制御情報はコントローラ2で処理され、各種データが楽音波形発生部5へ送られ、楽音波形信号MWが発生される。コントローラ2はCPU、DSP(デジタルシグナルプロセッサ)、ROM及び/またはRAMなどからなっている。このようなコントローラ2は、図1の回路ごとに分散されて設けられてもよい。
【0023】
マイク16からはアコーステックな楽器の音や人声や種々の器物の音や自然界の音や動物の声が集音されて音響変換回路17でサンプリング及びA−D変換され、電気的なデジタルの楽音波形信号に変換され、この楽音波形信号は所定の時間長で切り出されてフーリエ変換またはコサイン変換され、このフーリエ変換またはコサイン変換された楽音波形信号の振幅成分及び位相成分が量子化され、プログラム/データ記憶部4に書き込まれる。このような変換されて圧縮された楽音波形データMWは、複数の音色、楽器、タッチ、音域/音高、エフェクト、リズム等の音楽的ファクタにわたって多数種類記憶される。
【0024】
プログラム/データ記憶部4には、ミディ回路15から送られてきた楽音波形信号も書き込まれる。この楽音波形信号も、所定の時間長で切り出されてフーリエ変換され、このフーリエ変換された楽音波形信号の振幅成分及び位相成分が量子化されるか、もともとこのフーリエ変換及び量子化がなされている。
【0025】
このプログラム/データ記憶部4の楽音波形信号は、情報記憶部7にコピーされて、本装置から取り外され、上記圧縮記憶された楽音波形信号が生産され、他の装置に組み込まれる。また、このような楽音波形信号が記憶された情報記憶部7は本件装置に装着され、上記圧縮記憶された楽音波形信号がプログラム/データ記憶部4にコピーされ、伸長復元再生されて、楽音信号発生部5に書き込まれる。
【0026】
プログラム/データ記憶部4(内部記憶媒体/手段)はROMまたは書き込み可能なRAM、フラッシュメモリまたはEEPROM等の記憶装置からなり、光ディスクまたは磁気ディスク等の着脱自在な情報記憶部7(外部記憶媒体/手段)に記憶されるコンピュータのプログラムが書き写され記憶される(インストール/転送される)。またプログラム/データ記憶部4には外部の電子楽器またはコンピュータから上記ミディ回路15または送受信装置を介して送信されるプログラムも記憶される(インストール/転送される)。このプログラムの記憶媒体は通信媒体も含む。
【0027】
このインストール(転送/複写)は、情報記憶部7が本楽音生成装置にセットされたとき、または本楽音生成装置の電源が投入されたとき自動的に実行され、または操作者による操作によってインストールされる。上記プログラムは、コントローラ2が各種処理を行うための後述するフローチャートに応じたプログラムである。
【0028】
なお、本装置に予め別のオペレーティングシステム、システムプログラム(OS)、その他のプログラムが記憶され、上記プログラムはこれらのOS、その他のプログラムとともに実行されてもよい。このプログラムは本装置(コンピュータ本体)にインストールされ実行されたときに、別のプログラムとともにまたは単独で請求項(クレーム)に記載された処理・機能を実行させることができればよい。
【0029】
また、このプログラムの一部又は全部が本装置以外の1つ以上の別装置に記憶されて実行され、本装置と別装置との間には通信手段を介して、これから処理するデータ/既に処理されたデータ/プログラムが送受され、本装置及び別装置全体として、本発明が実行されてもよい。
【0030】
このプログラム/データ記憶部4には、上述した音楽的ファクタ情報、上述した各種データ及びその他の各種データも記憶される。この各種データには時分割処理に必要なデータや時分割チャンネルへの割当のためデータ等も含まれる。
【0031】
楽音信号発生部5では、上記伸長復元再生された楽音波形信号がいったん記憶され、指定された音高に応じた速度で読み出され、エンベロープ波形信号が合成されて、サウンドシステム6で楽音として出力され放音される。
【0032】
このような楽音波形信号の波形は、上述の音色、タッチ、音高、音域、発音時間、演奏分野、発音数、共鳴度などの情報によって、切り換えられ変化される。このような楽音波形信号は伸長復元再生前の圧縮記憶状態のものが楽音信号発生部5に記憶され、楽音信号発生部5で伸長復元再生されてもよい。
【0033】
タイミング発生部3からは、楽音生成装置の全回路の同期を取るためのタイミングコントロール信号が各回路に出力される。このタイミングコントロール信号は、各周期のクロック信号のほか、これらのクロック信号を論理積または論理和した信号、時分割処理のチャンネル分割時間の周期を持つ信号、チャンネルナンバデータCHNo、タイムカウントデータTIなどを含む。
【0034】
このタイムカウントデータTIは、絶対時間つまり時間の経過を示し、このタイムカウントデータTIのオーバーフローリセットから次のオーバーフローリセットまでの周期は、各楽音のうち最も長い発音時間より長く、場合によって数倍に設定される。
【0035】
(2)楽音信号発生部5
図2は上記楽音信号発生部5を示す。アサインメントメモリ40の各チャンネルエリアから順次読み出された各チャンネルのキーナンバデータKN及びオン/オフデータに基づき、楽音波形読出回路41によって、楽音波形メモリ42(バッファ)から楽音波形データMWが読み出される。この読み出された楽音波形データMWは、乗算器43でエンベロープ波形データENが乗算され、累算器44で全チャンネル分が累算されて上記サウンドシステム6へ送られる。
【0036】
楽音伸長復元回路46では、上述フーリエ変換またはコサイン変換され、振幅成分及び位相成分が量子化(符号化)された情報/データ圧縮された楽音波形データから、この楽音波形が伸長/復元され、フーリエ変換の場合、量子化された位相成分も付加され、この伸長復元された楽音波形がフーリエ逆変換またはコサイン逆変換され、この伸長復元された楽音波形データMWは、上記楽音波形メモリ42(バッファ)に書き込まれる。この伸長復元再生(復号化)では、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元が行われる。
【0037】
上記サインメントメモリ40の各チャンネルエリアから順次読み出された各チャンネルのエンベロープレベルデータELはエンベロープジェネレータ45へ送られる。上記サインメントメモリ40の各チャンネルエリアから順次読み出された各チャンネルのエンベロープスピードデータESは、エンベロープジェネレータ45へ送られる。エンベロープジェネレータ45では、エンベロープスピードデータESに応じたスピードで、エンベロープレベルデータELに応じた大きさ/レベルでエンベロープ波形データENが演算され、上記乗算器43へ送られる。
【0038】
上記エンベロープレベルデータELとエンベロープスピードデータESとは、エンベロープ波形のアタック、ディケイ、サスティーン、リリースのフェーズごとに設定される。エンベロープジェネレータ45では、上記オン/オフデータが「1」にされると、エンベロープフェーズがアタックにされ、発音処理に入る。このオン/オフデータが「0」にされると、エンベロープフェーズがリリースにされ、消音処理に入る。
【0039】
(3)楽音波形の圧縮処理
図3は楽音波形の圧縮処理のフローチャートを示す。この処理は操作者によって所定の指示がなされたときに開始される。まず、上記マイク16またはミディ回路15を通じて取り込まれた楽音波形が所定周期でサンプリング(標本化)され、プログラム/データ記憶部4に記憶される(ステップ01)。
【0040】
次いで自己相関演算が行なわれて(ステップ02)、楽音波形の一周期に応じたフレーム長/時間窓nが求められる(ステップ03)。この自己相関演算は、公知であり、例えば以下の式に基づいて演算される。
lim(1/T)∫s(k)・s(k+τ)dt
【0041】
lim:Tを無限大∞にする演算
∫:一フレーム/一周期分の積分
T:一フレーム/一周期の長さ
k:フレーム内の全サンプルポイント数のk番目
τ:遅れ時間lag
s(k):サンプリング(標本化)された楽音波形のフレーム内でのk番目の振幅値(サンプル値)
【0042】
s(k)に正弦波・余弦波のような周期的な成分が含まれると、上記演算式にはこのパワーに比例した成分が含まれ、これによって一周期に応じたフレーム長/時間窓nが求められる。この信号s(k)のパワースペクトルは上記自己相関関数のフーリエ変換で定義することができる。
【0043】
そして、この基本周波数/基本周期(時間長)に対応した略等しいフレーム長/時間窓nで、当該楽音波形が切り出される(ステップ05)。この一フレームごとの切り出しは半フレームずつ位相がずれて、半フレームずつ重複して行われる。この切り出された楽音波形が、上記ステップ02と同じく再度フーリエ変換または再度コサイン変換され、プログラム/データ記憶部4に記憶される(ステップ06)。
【0044】
なお、ステップ02〜03の処理は省略されてもよく、上記フレーム長/時間窓nは操作者によって上記パネルスイッチ群13から適当な値で入力される。この場合、入力された楽音波形の形状がパネルスイッチ群13のディスプレイ(図示せず)などに表示され、操作者によって楽音波形の一周期の長さの先頭と末尾とがディスプレイの画面上でマウスなど指定される。また、予め一周期=一フレームとなるような周期でサンプリングされた楽音波形が用いられても良い。
【0045】
周波数分解能または演算精度を上げるためには、上記時間窓nの幅は大きいほうがよいが、この幅があまり大きいと、高速フーリエ変換などが用いられても、演算量が大きくなりすぎるので、コントローラ2の性能と必要な精度との間で適切な値が選定される。本実施レベルでは時間窓n=16であるが、この値に限定されない。
【0046】
コントローラ2の能力が許されれば、外部から与えられた楽音波形の周期を基準に一フレームあたりのサンプル数が定められてもよい。自己相関分析などの既知の演算方法によって、得られたデータから楽音波形の周期が求められてもよい。
【0047】
上記ステップ06の離散フーリエ変換(フーリエ分析)は以下の式でコントローラ2によって演算される。
c(i)=Σs(k)×exp(−j×2πik/n)…(1)
ここで離散コサイン変換でも同様の変換ができる。この離散コサイン変換は以下の式でコントローラ2によって演算される。
c(i)=Σs(k)×cos{i×π(2k+1)/2n}…(2)
【0048】
ここで各項、各数値は以下を表す。
n:フレーム内の全サンプルポイント数
k:フレーム内の全サンプルポイント数のk番目
i:各周波数成分の各スペクトル値のi番目
j:虚数単位(√−1)
【0049】
s(k):サンプリング(標本化)された楽音波形のフレーム内でのk番目の振幅値(サンプル値)
c(i)=X(i):i番目の周波数成分のスペクトル値(フーリエ変換では複素数、コサイン変換では実数)、振幅値
2πi:i番目の周波数成分(角周波数)の周期
Σ:k=0〜n−1の全累計
【0050】
上記離散フーリエ変換(フーリエ分析)された振幅スペクトルc(i)=RE(i)+j・IM(i)は、実数部データRE(i)と虚数部データIM(i)とに分離して表すことができる。すなわち、2πiがc(i)の実数部と虚数部の関係を表しているといえる。上記フーリエ変換(フーリエ分析)された振幅スペクトルは、このような実数部データRE(i)と虚数部データIM(i)に変換される(ステップ07)。
【0051】
上記元の楽音波形の実波形データの精度は例えば16ビットであり、フーリエ変換後の楽音波形の1フレームつまり一周期は例えば16ワードであり、1ワードは例えば19ビットである。
【0052】
上記実数部データRE(i)と虚数部データIM(i)から、コントローラ2によって、周波数軸変換によって、振幅データX(i)と位相データP(i)とが求められる(ステップ08)。この演算式は以下の通りである。
X(i)=√(RE(i)<SUP>2</SUP>+IM(i)<SUP>2</SUP>)…(3)
P(i)=tan<SUP>-1</SUP>{IM(i)/RE(i)}…(4)
√は続く()内の平方根を求めることを示す。
【0053】
図4はこれらの実数部データRE(i)及び虚数部データIM(i)と振幅データX(i)及び位相データP(i)との関係を示す。この図4の各関係において、周波数軸変換によって、上記演算式(3)(4)が成立することがわかる。このような振幅データX(i)と位相データP(i)とは、上記楽音波形を所定ビット数に「量子化」したものといえる。
【0054】
離散コサイン変換の場合には、振幅データX(i)=c(i)(i番目の周波数成分のスペクトル値)とされる。このコサイン変換では、位相データはない。その他の変換方法を用いる場合でも、適宜演算が行なわれて振幅データX(i)が求められ、さらに必要に応じて位相データP(i)が求められる。
【0055】
上記楽音波形の分解能を16ビットとし、フレーム幅nを16サンプル(16ワード)とすると、一フレームの楽音波形は16ビット×16ワード(時間窓n=16サンプルポイント)=256ビットとなる。上記変換後は、実数部データRE(i)=19ビット、虚数部データIM(i)=19ビット、振幅データX(i)=19ビット、位相データP(i)=16ビットとされる。ここまでの分解能はコントローラ2の演算能力が許す限り大きくすることができる。
【0056】
この振幅データX(i)は19ビット、位相データP(i)は16ビットの各精度で求められる。そして、位相データP(i)の精度は7ビットに下げられ、データ圧縮される(ステップ09)。この7ビットはもともとの位相データP(i)の上位7ビットが選択される。この場合、位相データP(i)の上位から8ビット目を用いて「まるめ」を行なってから上位7ビットが選択されてもよい。
【0057】
そして、このフレーム内の最大の振幅値または最大絶対値がサーチされて検出され、振幅データX(i)はフレーム内の最大値Xmax及び限界値Xtによって標準振幅NX(i)に圧縮される(ステップ10)。この演算式は以下の通りである。
NX(i)=X(i)×Xt/Xmax…(5)
NX(i):標準化された振幅値データ
【0058】
Xt:限界値(次述)
Xmax:最大値または最大絶対値(離散コサイン変換)
最大値Xmax及び限界値Xtはプログラム/データ記憶部4などに、後述する圧縮された楽音波形データの一部として記憶されている。
【0059】
この限界値Xtは、ビット幅/データ幅(本実施例では19ビット)が許す限り取り得る大きな限界の値であり、離散フーリエ変換の場合には正値のみであるので、Xt=524287である。離散コサイン変換の場合には正負いずれの値もとりうるので、Xt=262143である。なお、この限界値Xtは、楽音波形データのビット幅mから演算によって求められても良い。
Xt=2<SUP>m</SUP>−1…(6)
【0060】
上記最大値(絶対最大値)Xmaxは、離散フーリエ変換などの場合にはフレーム中のもっとも大きな値であり、離散コサイン変換などの場合にはフレーム中のもっとも大きな絶対値である。
【0061】
この最大値(絶対最大値)Xmaxは、フレーム/周期ごとに求められ、プログラム/データ記憶部4などに一時的に記憶される。この場合、離散フーリエ変換などと離散コサイン変換などとで処理が分けられてもよいが、変換方法によらず常に絶対最大値が求められてもよい。
【0062】
以上のように、上記楽音波形の最大値Xmaxに対する、取り得る最大振幅の限界値Xtの比率が、上記楽音波形の振幅データX(i)に演算される。これにより、振幅データX(i)の全ビットを無駄なく使って振幅データX(i)を表記できる。
【0063】
次いで、標準振幅NX(i)は限界値Xtから差し引かれ、振幅差値RNX(i)が求められる(ステップ11)。この演算式は以下の通りである。
RNX(i)=SIG{NX(i)}×〔Xt−ABS{NX(i)}〕…(7)
RNX(i):振幅差値データ
SIG{NX(i)}:NX(i)が負なら「−1」、負ではないなら「1」
ABS{NX(i)}:{NX(i)}の絶対値
【0064】
この振幅差値RNX(i)は、8ビットの浮動小数点表記FRNX(i)とされ、プログラム/データ記憶部4などに書き込まれる。この浮動小数点表記の振幅差値FRNX(i)はパワー3ビット、マンティッサ5ビットから構成される。
【0065】
このマンティッサは実質6ビットであるが、パワーが「0」ではないとき、下から6ビット目に「1」があるものとみなされる。したがって、この浮動小数点表記の実効精度は6ビットである。パワーが「0」のとき、最上位ビットは「0」であるが、この最上位ビットは記憶の必要性がないので、下位5ビットのみが記憶される。
【0066】
以上のように、上記楽音波形の振幅値X(i)は、上記楽音波形の限界値Xと、上記楽音波形の振幅値X(i)との差に変換される。これにより、楽音波形の振幅Xが大きいときに、量子化の精度をより細かくできる。
【0067】
以上の離散フーリエ変換の「具体例」は以下の通りである。コントローラ2の第1レジスタに「0b1000000000000000000(2進数)」がストアされ、第2レジスタに「0b111(2進数)」がストアされ、第3レジスタに振幅差値データRNX(i)がストアされる。この振幅差値データRNX(i)と第1レジスタ「0b1000000000000000000」との論理積がとられる。
【0068】
この論理積が「0」ではなかった場合、振幅差値データRNX(i)の上位2ビット目乃至6ビット目がマンティッサとされ、上記第2レジスタの全カウンタ値がパワーとされる。この論理積が「0」であった場合、振幅差値データRNX(i)の値が上位に1ビットシフトされ、下位から20ビット目(シフト前の19ビット目)が捨てられ、上記第2レジスタのカウンタ値が−1され、再び論理積が取られる。
【0069】
以上の処理が、論理積が「0」ではなくなるか、カウンタ値が「0」になるまで繰り返され、再度パワーとマンティッサとが得られる。カウンタ値が「0」になった場合、以上の論理積はこれ以上取られず、上位1ビット目乃至5ビット目がマンティッサとされ、パワーは「0」とされる。
【0070】
以上のステップ07〜11の演算処理は、一フレームごと全フレームにわたって繰り返される(ステップ12)。この一フレームごとの演算処理は半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複して繰り返される。こうして、図5及び図6のように楽音波形が圧縮されて記憶される。また、この楽音波形データMWの圧縮では、半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複した、同じフレーム(時間長)につき、奇数番目フレームと偶数番目フレームの複数の楽音波形データMW(振幅データ)につき行われる。
【0071】
以上のように、周波数軸に変換された楽音波形の振幅データX(i)の絶対値が小さいほど、すなわち振幅差値データRNX(i)の絶対値が大きいほど、楽音波形は粗く量子化され、振幅データX(i)の絶対値が大きいほど、すなわち振幅差値データRNX(i)の絶対値が小さいほど、楽音波形は細かく量子化される。
【0072】
これにより、楽音波形の中の絶対値が大きな成分ほど高い精度で量子化され、楽音波形の中の絶対値が小さな成分ほど低い精度で量子化される。この結果、大きな音が鳴っている背景での小さな音のわずかな大小変化は簡略化され、人間の聴感に合致させることができる。
【0073】
(4)圧縮された楽音波形データのデータ構造
図5及び図6は圧縮された楽音波形データのデータ構造の半フレームずれた二フレームを示す。離散フーリエ変換などを用いた場合、8ビットの振幅差値FRNX(i)は一周期分の変換結果である、16ワード全てではなく、前半の9ワードのみが記憶される。残りの後半の7ワードは、記憶される前半の9ワードから再現される。離散コサイン変換などを用いた場合、一フレーム分の変換結果である16ワード全てが記憶される。
【0074】
また、離散フーリエ変換などを用いた場合、これら前半の9ワードの9つの位相データP(i)が記憶される。この位相データP(i)は上記ステップ05で求められ、7ビットである。末尾には上記フレーム内の16ビットの最大値Xmaxの7ビット分が記憶される。また、9つの位相データPの最上位ビットは空いているので、ここに16ビットの最大値Xmaxの残り9ビット分が記憶される。末尾の最上位ビットには何も記憶されない(NC)。
【0075】
離散フーリエ変換などを用いた場合、このように楽音波形16ビット×16ワード(時間窓n=16サンプルポイント)=256ビットが、図5の8ビット×19ワード=152ビットに圧縮される。離散コサイン変換などを用いた場合、図6の8ビット×16ワード(16サンプルポイント)+16ビット(最大値Xmax)=144ビットに圧縮される。このようにして、楽音波形の他の各フレームも同様に圧縮記憶される。
【0076】
(5)振幅が大きいほど量子化精度が細かい
上記振幅差値RNX(i)は、上述の下記(5)式で求められ、標準振幅NX(i)がマイナスの逆特性にされる。
RNX(i)=SIG(NX(i))×〔Xt−ABS{NX(i)}〕…(5)
【0077】
そして、振幅差値FRNX(i)は、この逆特性の振幅差値RNX(i)が浮動小数点表記されるから、リニア特性からイクスポーネンシャル特性に変換される。これにより、振幅が大きいほど量子化精度が細かくされ、振幅が小さいほど量子化精度が粗くされる。図16は、このような楽音波形の振幅が小さいときに比べて大きいときに、量子化精度がより細かくされる特性を示す。
【0078】
また、上記量子化によって、振幅データXは19ビットから8ビットとされ、位相データPは16ビットから7ビットとされ、振幅データXの量子化精度は位相データの量子化精度より細かい。これにより、振幅の記憶精度が細かくできる。位相の記憶精度は多少粗くても、再生した楽音波形の音質への影響は少ない。
【0079】
このような記憶ビット数/量子化ビット数/ワード数/サンプルポイント数は、上記のものに限られない。上記例より多くても少なくてもよい。また、振幅データXの量子化精度は位相データの量子化精度より粗くても細かくてもよい。
【0080】
(6)差分圧縮処理
図7は差分圧縮の演算処理のフローチャートを示す。この処理は操作者によって所定の指示がなされたときに開始されたり、上記図3の楽音波形圧縮処理の後に続けて実行されたりする。この処理では、上記図3の楽音波形の圧縮処理によって求められた、図5及び図6の圧縮記憶された楽音波形データにつき、1フレームごとの差分が求められてさらに圧縮記憶される。
【0081】
まず、サンプル順番「i」が「0」とされ(ステップ21)、先頭の一フレームの先頭の振幅差値FRNX(0)と次の一フレームの先頭の振幅差値FRNX(0)との差分振幅ΔFRNX(0)(4ビット)が求められる(ステップ22)。
【0082】
続いて、サンプル順番「i」が順次+1され(ステップ23)、次の振幅差値FRNX(1)についても、先頭の一フレームと次の一フレームとの差ΔFRNX(1)(4ビット)が求められ、順次FRNX(2)、振幅差値FRNX(3)、振幅差値FRNX(4)、振幅差値FRNX(5)、振幅差値FRNX(6)、振幅差値FRNX(7)、振幅差値FRNX(8)についても差分振幅ΔFRNX(2)(4ビット)、差分振幅ΔFRNX(3)(4ビット)、差分振幅ΔFRNX(4)(4ビット)、差分振幅ΔFRNX(5)(4ビット)、差分振幅ΔFRNX(6)(4ビット)、差分振幅ΔFRNX(7)(4ビット)、差分振幅ΔFRNX(8)(4ビット)が求められ、サンプル順番「i」が「8」になるまで繰り返される(ステップ24)。
【0083】
この各フレームの振幅の差ΔFRNX(1)(4ビット)は、一フレーム分ずれて重なっていないフレームどうしのものであり、上述の半フレームずつずれて重なっているフレーム同士では行われない。むろん半フレームずつずれて重なっているフレーム同士で行われてもよい。半フレームずつずれて重なっているフレーム同士で差をとると、データ量が増大する可能性が大きくなる。
【0084】
次いで、サンプル順番「i」が再び「0」とされ(ステップ26)、先頭の一フレームの先頭の位相データP(0)と次の一フレームの先頭の位相データP(0)との差分位相ΔP(0)(4ビット)が求められる(ステップ27)。
【0085】
続いて、サンプル順番「i」が順次+1され(ステップ28)、次の位相データP(1)についても、先頭の一フレームと次の一フレームとの差ΔP(1)(4ビット)が求められ、順次位相データP(2)、位相データP(3)、位相データP(4)、位相データP(5)、位相データP(6)、位相データP(7)、位相データP(8)についても差分位相ΔP(2)(4ビット)、差分位相ΔP(3)(4ビット)、差分位相ΔP(4)(4ビット)、差分位相ΔP(5)(4ビット)、差分位相ΔP(6)(4ビット)、差分位相ΔP(7)(4ビット)、差分位相ΔP(8)(4ビット)が求められ、サンプル順番「i」が「8」になるまで繰り返される(ステップ29)。
【0086】
この各フレームの位相の差ΔP(1)(4ビット)は、一フレーム分ずれて重なっていないフレームどうしのものであり、上述の半フレームずつずれて重なっているフレーム同士では行われない。むろん半フレームずつずれて重なっているフレーム同士で行われてもよい。半フレームずつずれて重なっているフレーム同士で差をとると、データ量が増大する可能性が大きくなる。
【0087】
そして、先頭の一フレームの末尾の最大値Xmaxと次の一フレームの末尾の最大値Xmaxとの差ΔXmax(7ビット)が求められる(ステップ31)。この最大値差ΔXmax(7ビット)の最上位ビットにデータ形式が差分形式であることを示す「0」(FALS)が付加される(ステップ32)。また、上記先頭の一フレームの末尾の最大値差ΔXmax(7ビット)の最上位にデータ形式が真値形式であることを示す「1」(TRUE)が付加される(ステップ33)。
【0088】
以上の差分圧縮は、二番目の一フレームと三番目の一フレームとの差、三番目の一フレームと四番目の一フレームとの差、四番目の一フレームと五番目の一フレームとの差、………について繰り返され(ステップ34、35)、末尾の一フレームまで達したら終了される(ステップ34)。
【0089】
上記図5及び図6の楽音波形データMW(振幅データ)は、半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複した、奇数番目フレームと偶数番目フレームとに分かれているので、この楽音波形データMWの差分圧縮処理も、半フレーム(半時間長)ずつ位相がずれて、半フレーム(半時間長)ずつ重複した、同じフレーム(時間長)につき、奇数番目フレームと偶数番目フレームの複数の楽音波形データMW(振幅データ)につき行われる。
【0090】
(7)差分圧縮された楽音波形データのデータ構造
図8及び図9は上記図7の処理によって差分圧縮された楽音波形データのデータ構造の半フレームずれた二フレームを示す。この楽音波形データは8ビット×19ワード=152ビットを示す。差分振幅ΔFRNX(0)(4ビット)、差分振幅ΔFRNX(1)(4ビット)、差分振幅ΔFRNX(2)(4ビット)、差分振幅ΔFRNX(3)(4ビット)、差分振幅ΔFRNX(4)(4ビット)、差分振幅ΔFRNX(5)(4ビット)、差分振幅ΔFRNX(6)(4ビット)、差分振幅ΔFRNX(7)(4ビット)、差分振幅ΔFRNX(8)は、2つずつ一緒に8ビット形式で記憶される。
【0091】
また、差分位相ΔP(0)(4ビット)、差分位相ΔP(1)(4ビット)、差分位相ΔP(2)(4ビット)、差分位相ΔP(3)(4ビット)、差分位相ΔP(4)(4ビット)、差分位相ΔP(5)(4ビット)、差分位相ΔP(6)(4ビット)、差分位相ΔP(7)(4ビット)、差分位相ΔP(8)(4ビット)も、2つずつ一緒に8ビット形式で記憶される。
【0092】
末尾には、最上位に「0」(FALS)が付加された最大値差ΔXmax(7ビット)が記憶される。このような差分圧縮によって、8ビット×19ワード=152ビットが8ビット×10ワード=80ビットに圧縮される。また、先頭の一フレームのデータ形式は上記図5及び図6の形式と同じであるが、末尾の最大値Xmaxの最上位には、データ形式が真値形式であることを示す「1」(TRUE)が付加される。
【0093】
このように、振幅X(i)についても、差分まで小さく圧縮して記憶できる。さらに、位相P(i)についても、差分まで小さく圧縮して記憶できる。また、図5、図6、図8及び図9の楽音波形の最大値Xmaxが量子化されたり、ある周期の楽音波形の最大値Xmaxと、この周期の前または後の周期の楽音波形の最大値Xmaxとにつき差分が求められて圧縮記憶されたりする。これにより、最大値Xmaxについても差分まで小さく圧縮できる。
【0094】
(8)楽音波形データのデータ構造の具体例
図10、図11、図12、図13、図14、図15は上記圧縮された楽音波形データ及び差分圧縮された楽音波形データのデータ構造の具体例を示す。図10は、図11に示す楽音波形についての各データを示す。図13は、図14に示す余弦波形の楽音波形についての各データを示す。
【0095】
図12は、図10のデータの図11の楽音波形について、圧縮波形を伸長復元再生と、この精度を8ビットに減少したものを示す。図15も、図12のデータの図13の楽音波形について、圧縮波形を伸長復元再生と、この精度を8ビットに減少したものを示す。
【0096】
図10及び図13の右端に示すように、左端に示すリニア値の楽音波形のビット数を減らして、楽音波形をかなり圧縮することができる。また、図12及び図15に示すように、伸長復元再生された楽音波形(差分値)の再現精度はよいといえる。但し図11の楽音波形には周期性が少ないため、再現精度は若干落ちている。
【0097】
(9)楽音伸長復元回路46
図17は上記楽音伸長復元回路46を示す。上記プログラム/データ記憶部4または情報記憶部7からコントローラ2などによって読み出された、圧縮された楽音波形データMW(振幅データ)は、楽音波形展開回路21で展開つまり差分形式FRNX(i)から真値形式RNX(i)に変換され、奇数番目のフレームと偶数番目のフレームに分けられる。
【0098】
次いで、不動小数点表記の楽音波形データMW:RNX(i)は、リニア化回路22、32でリニアな値にRNX(i)に変換され、加算器(減算器)23、33で上記限界値Xtからリニア振幅値RNX(i)が減算されて、上記標準振幅NX(i)が求められる。この限界値Xtはコントローラ2などによって、図示しないバッファにストアされて、この加算器(減算器)23、33に送られる。この限界値Xtは、上記図5、図6、図8、図9の楽音波形データのビット数から求められたり、プログラム/データ記憶部4から読み出されたりされる。
【0099】
さらに、乗算器24、34で上記標準振幅NX(i)に上記最大値/限界値:Xmax/Xtが乗算され、上記振幅データX(i)が求められる。この最大値/限界値:Xmax/Xtコントローラ2などによって図示しないバッファにストアされて、この乗算器24、34に送られる。この最大値Xmaxは、上記図5、図6、図8、図9の楽音波形データの各フレームの末尾や位相データの上位ビットから読み出される。
【0100】
この振幅データX(i)は、バッファメモリ25、35にストアされて、このストアされた振幅データX(i)が逆変換回路26、36によって、フーリエ逆変換またはコサイン逆変換処理が行われて、この逆変換されたる振幅データが一フレーム分バッファメモリ27、37にストアされ、クロスフェード回路28で一つに合成される。
【0101】
これらリニア化回路、加算器(減算器)、乗算器、バッファメモリ、逆変換回路、バッファメモリは、奇数番目のフレームの楽音波形データMWを処理する、リニア化回路22、加算器(減算器)23、乗算器24、バッファメモリ25、逆変換回路26、バッファメモリ27と、偶数番目のフレームの楽音波形データMW(振幅データ)を処理する、リニア化回路32、加算器(減算器)33、乗算器34、バッファメモリ35、逆変換回路36、バッファメモリ37とからなっている。
【0102】
したがって、楽音波形データMWの伸長処理は、上記並行して圧縮された奇数フレームと偶数フレームの複数の楽音波形データMWにつき並行して実行される。これら奇数番目のフレームの楽音波形データMW(振幅データ)と偶数番目のフレームの楽音波形データMWとが、クロスフェード回路28で一つに合成される。
【0103】
上記逆変換回路26、36における、フーリエ逆変換は、以下の式であらわされる。
s(k)=(1/n)Σc(i)×exp{−(j×2πik/n)}…(11)
上記逆変換回路26、36における、コサイン逆変換、以下の式であらわされる。
s(k)=(2/n)〔c(0)/2+Σc(i)×cos{i×π(2k+1)/2n}〕…(12)
【0104】
ここで各項、各数値は以下を表す。
n:フレーム内の全サンプルポイント数
k:フレーム内の全サンプルポイント数のk番目
i:各周波数成分の各スペクトル値のi番目
j:虚数単位(√−1)
【0105】
s(k):サンプリング(標本化)された楽音波形のフレーム内でのk番目の振幅値(サンプル値)
c(i)=X(i):i番目の周波数成分のスペクトル値(フーリエ変換では複素数、コサイン変換では実数)(上記c(i)と同じ)、振幅値
2πi:i番目の周波数成分(角周波数)の周期
Σ:i=0〜n−1の全累計
【0106】
この楽音伸長復元回路46の伸長復元処理で、上記図3の楽音波形圧縮処理と逆の伸長復元処理が行われる。したがって、以上のような量子化された楽音波形の伸長復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元も行われる。
【0107】
クロスフェード回路28からの伸長復元された楽音波形データMW(振幅データ)は、上記楽音波形メモリ42に書き込まれ、キーボード11の操作キーの音高に応じた速度で読みだされる。この楽音波形メモリ42から半フレームずつ読みだされるごとに、半フレーム検出信号が楽音波形メモリ42から上記楽音波形展開回路21に入力される。
【0108】
この図17の逆変換回路26、36とバッファメモリ27、37との間には、ディレイ回路が挿入される。このディレイ回路には、リニア回路22、32から出力されてくる位相データP(i)が入力され、この位相データP(i)と周波数に応じた時間長、移相(ディレイ)されて、伸長された振幅データX(i)の位相が付加される。次述する楽音波形展開回路21では、差分形式の位相データP(i)及び真値形式の位相データP(i)に基づいて、位相が同様にして伸長復元される。位相データP(i)がすべて真値形式であれば、そのまま読み出されて、上記ディレイ回路に入力される。
【0109】
上記逆変換回路26、36でのフーリエ逆変換によって、図5、図8、図9の振幅データX(i)と位相データP(i)とが周波数軸逆変換されて、実数部データRE(i)と虚数部データIM(i)とが求められ、この実数部データRE(i)と虚数部データIM(i)とから、位相成分に応じた移相処理された振幅が復元される。これにより、位相成分も合わせて伸長復元もできる。
【0110】
なお、上記図3の楽音波形圧縮処理では、上記フーリエ変換によって、実数部データRE(i)と虚数部データIM(i)とが求められ、この実数部データRE(i)と虚数部データIM(i)とが周波数軸変換されて振幅成分と位相成分とに変換される。これにより、位相成分も合わせて圧縮変換もできる。
【0111】
(10)楽音波形展開回路21
図18は上記楽音波形展開回路21を示す。アドレスジェネレータ51で発生された読み出しアドレスは、上記プログラム/データ記憶部4または情報記憶部7に送られ、差分形式の圧縮された楽音波形データMW(振幅データ)が読みだされ、セレクタ52、62を経て、差分バッファ53、63にストアされ、浮動小数点形式の加算器54、64でそれまで累算されてきた振幅データ(楽音波形データMW)にさらに累算され、上記リニア化回路22、32に送られる。
【0112】
上記加算器54、64からの振幅データは、セレクタ55、65を経て、トップバッファ56、66にストアされ、再び加算器54、64に再入力され振幅データが累算される。また、上記読み出された圧縮された楽音波形データMWが、差分形式ではなく、真値形式であれば、上記セレクタ55、65を経て、トップバッファ56、66に直接ストアされ、この真値形式の振幅データ(楽音波形データMW)に差分形式の振幅データ(楽音波形データMW)が順次累算されていき、上記リニア化回路22、32に送られる。
【0113】
上記セレクタ52、62、55、65には、図8及び図9の最下段の最上位の差分/真値ビットがセレクト信号として供給される。この差分/真値ビットは、差分を示す時は「0」(FALS)であり、真値を示す時は「1」(TRUE)である。上記読み出された楽音波形データMW(振幅データ)が真値のときは、セレクタ52、62の出力がセレクタ55、65側に切り換えられ、セレクタ55、65の入力がセレクタ52、62側に切り換えられる。したがって、上記読み出された楽音波形データMW(振幅データ)がトップバッファ56、66にストアされ、この真値から累算が開始される。
【0114】
上記読み出された楽音波形データMW(振幅データ)が差分のときは、セレクタ52、62の出力が差分バッファ53、63側に切り換えられ、セレクタ55、65の入力が加算器54、64側に切り換えられる。したがって、セレクタ55、65→トップバッファ56、66→加算器54、64→セレクタ55、65で楽音波形データMW(振幅データ)が循環され、これに読み出された差分の楽音波形データMW(振幅データ)が順次累算されていく。
【0115】
これらセレクタ、差分バッファ、加算器、セレクタ、トップバッファは、奇数番目のフレームの楽音波形データMW(振幅データ)を処理する、セレクタ52、差分バッファ53、加算器54、セレクタ55、トップバッファ56と、偶数番目のフレームの楽音波形データMW(振幅データ)を処理する、セレクタ62、差分バッファ63、加算器64、セレクタ65、トップバッファ66とからなっている。
【0116】
したがって、楽音波形データMWの伸長処理は、上記並行して圧縮された奇数フレームと偶数フレームの複数の楽音波形データMWにつき並行して実行される。この楽音波形展開回路21の波形展開処理(伸長復元処理)で、上記図7の差分圧縮処理と逆の波形展開処理(伸長復元処理)が行われる。
【0117】
(11)クロスフェード回路28
図19は上記クロスフェード回路28を示す。アドレスジェネレータ71で発生された読み出しアドレスは、コサインテーブル72、82に送られ、コサイン波形が読み出され、上記バッファメモリ27、37からの上記伸長復元された楽音波形データMW(振幅データ)に乗算器73、83で乗算され、加算器74で加算合成されて、上記楽音波形メモリ(バッファ)42に出力されストアされる。
【0118】
コサインテーブル72、82にはコサイン波形が記憶され、このコサイン波形のフレーム/周期は、上記楽音波形データMWのフレーム/周期に等しく、コサインテーブル72のコサイン波形の位相と、コサインテーブル82のコサイン波形の位相とは、半フレーム/半周期ずつ位相がずれている。本クロスフェード回路28の上記アドレスジェネレータ71は、上記楽音波形展開回路21のアドレスジェネレータ51と同じであり、このコサイン波形の読み出しと上記楽音波形データMW(振幅データ)とは同期され位相差もない。
【0119】
図20は上記2つのコサイン波形を示す。
コサインテーブル72のコサイン波形は以下の通りである。
1+(1/2)cos(2πt/T)…(13)
T:一フレーム/一周期の長さ
t:楽音波形データMW(実時間)の読み出しアドレス
コサインテーブル82のコサイン波形は以下の通りである。
1−(1/2)cos(2πt/T)…(14)
したがって、コサインテーブル72のコサイン波形とコサインテーブル82のコサイン波形とは加算すると、常に「1」となる。
【0120】
上記乗算器73には、上記奇数番目のフレームの楽音波形データMW(振幅データ)が入力され、乗算器83には、上記偶数番目のフレームの楽音波形データMW(振幅データ)が入力される。そして、上記コサインテーブル、乗算器は、奇数番目のフレームの楽音波形データMW(振幅データ)を処理する、コサインテーブル72、乗算器73と、偶数番目のフレームの楽音波形データMW(振幅データ)を処理する、コサインテーブル83、乗算器83とからなっている。したがって、楽音波形データMWの伸長処理は、上記並行して圧縮された奇数フレームと偶数フレームの複数の楽音波形データMWにつき並行して実行される。
【0121】
このような奇数番目のフレームの楽音波形データMW(振幅データ)にはコサイン波形1+(1/2)cos(2πt/T)が乗算され、偶数番目のフレームの楽音波形データMW(振幅データ)にはコサイン波形1−(1/2)cos(2πt/T)が乗算される。したがって、奇数番目のフレームの楽音波形データMWと偶数番目のフレームの楽音波形データMWとは、このコサイン波形で重み付けされ、各フレーム(時間長)の中央付近で大きくされ、各フレーム(時間長)の端付近で小さくされる。
【0122】
したがって、楽音波形データMW(振幅データ)の伸長復元で、ノイズの出る各フレーム(時間長)の端付近で重み付けが小さくされ、ノイズが出にくくなる。そして、これらのコサイン波形1+(1/2)cos(2πt/T)と1−(1/2)cos(2πt/T)とは、位相が半フレーム(半時間長)ずつずれており、加算すると常に「1」になり、コサイン波形で重み付けされた楽音波形データMW(振幅データ)は加算器74で加算合成されるので、重み付けされても、加算合成される楽音波形データMW(振幅データ)の重み付けは平坦になる。
【0123】
また、重み付けにコサイン波形を使うと、三角波に比べて、重み付けが「1」付近になっている時間が長くなり、重み付け合成つまりクロスフェードによる、楽音波形データMW(振幅データ)の余分な変異が減少する。
【0124】
(12)全体処理
図21はコントローラ(CPU)2によって実行される全体処理のフローチャートを示す。この処理全体は本成分音合成装置の電源オンによって開始され、電源オフまで繰り返し実行される。まず、コントローラ(CPU)2内のメモリの初期化など種々の後述するイニシャライズ処理が行われる(ステップ01)。
【0125】
次いで、キーボード11またはパネルスイッチ群13のオン操作またはオフ操作などのオンイベントまたはオフイベントがあると(ステップ02)、このイベントに応じた処理が実行される(ステップ03)。そして、時変数処理が行われ(ステップ04)、以上のステップ02から04の処理が電源オフまで繰り返される。この時変数処理は、時間の経過に伴って変化する変数に対する処理であり、エンベロープのフェーズ切換えまたはエンベロープのリリース切換え等のエンベロープ処理、ビブラート等のエフェクト処理などが実行される。
【0126】
(13)イベント処理
図22は上記ステップ03のイベント処理のフローチャートを示す。上記検出されたイベントが音色の設定であれば(ステップ11)、音色の設定処理が行われる(ステップ12)。また、検出されたイベントがキーボード11のキーのオンであれば(ステップ13)、発音処理が開始される(ステップ14)。
【0127】
さらに、検出されたイベントがキーボード11のキーのオフであれば(ステップ15)、消音処理が開始される(ステップ16)。そして、検出されたイベントがこれらのいずれでも無い場合には、その他の処理が実行される(ステップ17)。このその他の処理では、音量、トランスポーズ、リズムの選択、自動演奏のスタート/ストップなどの処理が開始される。
【0128】
(14)音色設定処理
図23は上記ステップ12の音色設定処理のフローチャートを示す。上記設定された音色のトーンナンバデータがコントローラ2内のRAMなどに記憶される(ステップ21)。そして、このトーンナンバデータに応じた圧縮楽音波形データMWがプログラム/データ記憶部4または情報記憶部7が読み出され、図17、図18、図19の楽音伸長復元回路46で伸長復元が開始され、楽音波形メモリ(バッファ)42に先頭フレームの伸長復元された楽音波形データMWがストアされる(ステップ22)。楽音波形展開回路21の圧縮楽音波形データMWの展開(伸長復元)も開始
【0129】
この伸長復元は、楽音波形データMWの一番目の奇数番目フレームで行われ、次の二番目の偶数番目フレームでは行われない。この音色設定ではキーオンはなく、発音開始はされていないが、圧縮楽音波形データMWが読み出されて伸長復元及び楽音波形展開回路21の圧縮楽音波形データMWの展開(伸長復元)が開始される。これにより、次にキーオンがあったとき、伸長復元された楽音波形データMWが直ちに出力され、応答性が向上する。
【0130】
(15)発音処理
図24は上記ステップ14の発音処理のフローチャートを示す。まず、空きチャンネルがサーチされ、割り当てるチャンネルが決定され、このチャンネルに当該音色に関するデータが移動され(ステップ31)、アタック、ディケイ、サスティーンなどのエンベロープなどのパラメータ演算等が行われ(ステップ32)、発音開始の指示が行われ、上記一番目の奇数番目フレームの楽音波形データMWに基づいて発音が開始され、次の二番目の偶数番目フレームの楽音波形データMWの伸長復元が開始され、以降順次、奇数番目フレームと偶数番目フレームとが交互に伸長復元されていき、これにアタック、ディケイ、サスティーンのエンベロープが乗算合成されていく(ステップ32)。
【0131】
このとき、上記クロスフェード回路28の図20に示すクロスフェード処理が開始される。楽音の先頭では先頭のフレームのみ伸長復元されており、他方のフレームは伸長復元されず、クロスフェードは行われていないが、楽音の先頭ではエンベロープレベルは「0」であり、ノイズがあったとしても聴覚上問題とはならない。
【0132】
(16)消音処理
図25は上記ステップ16の消音処理のフローチャートを示す。まず、キーオフに係る楽音が割り当てられているチャンネルがサーチされ、このチャンネルの楽音がオフに切り換えられ(ステップ41)、リリースのエンベロープなどのパラメータ演算等が行われ(ステップ42)、発音終了の指示が行われ、伸長復元されている楽音波形データMWに、リリースのエンベロープが乗算合成されていく(ステップ42)。
【0133】
そして、リリースが終了すると、上記圧縮楽音波形データMWの伸長復元は終了する。このとき、上記クロスフェード回路28の図20に示すクロスフェード処理も終了し、楽音波形展開回路21の圧縮楽音波形データMWの展開(伸長復元)も終了する。こうして、圧縮楽音波形データMWの伸長復元はリリースの末尾まで継続される。
【0134】
(17)他の実施の形態
本件発明は上記実施例に限定されず、本件発明の趣旨を逸脱しない範囲で種々変更可能である。例えば、上記フーリエ変換、コサイン変換は、「時間軸に沿ったデータから周波数軸に沿ったデータへの変換」を意味し、「時間軸に沿ったデータから周波数軸に沿ったデータへの変換」ができれば、フーリエ変換、コサイン変換以外の変換が、上記フーリエ変換、コサイン変換の代わりに実行されてもよい。
【0135】
上記ステップ09の位相データP(i)の精度が7ビットに下げられる処理は省略されてもよい。上記ステップ10の振幅データX(i)がフレーム内の最大値Xmax及び限界値Xtによって標準振幅NX(i)とされる処理は省略されてもよい。
【0136】
上記限界値Xtまたは最大値Xmaxは省略され、また上記ステップ11の標準振幅NX(i)が限界値Xtから差し引かれ、振幅差値RNX(i)が求められる処理は省略されてもよい。
【0137】
図7の差分圧縮処理は省略されても良い。図3の圧縮処理だけでも楽音波形の圧縮は可能である。図7のステップ21〜24の振幅の差分圧縮のみ省略されてもよいし、図7のステップ26〜29の位相の差分圧縮のみ省略されてもよい。
【0138】
図7のステップ31の隣り合うフレーム/周期の両最大値Xmaxの差ΔXmaxが求められる処理波形は省略されてもよい。図7のステップ32のデータ形式が差分形式であることを示す「0」(FALS)が付加される処理は省略されてもよい。図7のステップ33のデータ形式が真値形式であることを示す処理は省略されてもよい。これらのデータが省略されても、フレーム/周期が先頭か否かによって、データ形式が差分形式か真値形式かが判別される。
【0139】
上記圧縮記憶された楽音波形データの伸長復元再生は、上記図7及び図3の各ステップの演算処理が逆算されることによって達成される。位相データPについては圧縮処理が省略され、図5、図6、図8及び図9の記憶データから除外され、振幅データXのみ圧縮記憶されてもよい。
【0140】
上記図7、図8及び図9の差分圧縮は、隣り合う周期/フレームの単純な差だけでなく、2点または3点以上のサンプルポイントの線形予測に基づく値との差分を求めて記憶してもよい。
【0141】
限界値Xtから離れるほど量子化精度が細かくされ、限界値Xtに近づくほど量子化精度が粗くされてもよい。上記ステップ07の実数部データRE(i)と虚数部データIM(i)が求められる処理は省略され、フーリエ変換から直接振幅データX(i)と位相データP(i)とが求められてもよい。
【0142】
上記限界値Xtは、上記楽音波形の当該フレーム/周期または全フレーム/全周期の平均値または最頻値でもよい。この平均値はフレーム/周期の全サンプルの振幅値の平均値、相乗平均値、相加平均値または積分値、もっとも良く現れる振幅値などである。
【0143】
これにより、上記楽音波形の最大値Xmaxに対する平均値または最頻値などの限界値Xtの比率が、上記楽音波形の振幅値X(i)に演算される。よって、限界値Xtから離れるほど、量子化の精度をより細かくできる。
【0144】
上記フーリエ変換またはコサイン変換される楽音波形の一フレームは、当該楽音波形の一周期にほぼ一致していて、一フレーム=一周期=16サンプルポイント、前半フレーム=後半フレーム=半周期=8サンプルポイントであるが、一致していなくてもよい。上記フーリエ変換またはコサイン変換は、離散ではないフーリエ変換またはコサイン変換が含まれてもよい。
【0145】
上記図3のステップ02のフーリエ変換での窓関数(時間窓n)は、無限長または人間の可聴域より低周期に対応した時間長とされてもよい。上記図3のステップ005から11の処理は各ワード(各サンプルポイント)ごと一フレームにわたって繰り返されてもよい。
【0146】
上記ステップ02〜03の処理は以下のようにされても良い。上記離散フーリエ変換が行なわれ(ステップ02)、このフーリエ変換による各周波数成分のスペクトル値(振幅値)c(i)のうちの最大でもっとも周波数の低いものが求められ(ステップ03)、この最大の各周波数(角周波数)の周期jiωtつまり基本周波数/基本周期が求められる(ステップ04)。
【0147】
そして、この基本周波数/基本周期(時間長)に対応した略等しいフレーム長/時間窓nで、当該楽音波形が切り出され(ステップ05)、この切り出された楽音波形が、上記ステップ02と同じく再度フーリエ変換または再度コサイン変換され、プログラム/データ記憶部4に記憶される(ステップ06)。
【0148】
上記フレーム(時間長)の位相のずれは、半フレーム(半時間長)のほか、1/3フレーム(1/3時間長)、1/4フレーム(1/4時間長)、1/5フレーム(1/5時間長)、…などでもよい。この場合、図5、図6、図8、図9の楽音波形データMW(振幅データ)は、3つ、4つ、5つ、…、重複して圧縮記憶される。
【0149】
この場合、図17の音伸長復元回路46、図18の楽音波形展開回路21、図19のクロスフェード回路28は、奇数番目と偶数番目の2列ではなく、3n番目、3n+1番目、3n+2番目の三列、4n番目、4n+1番目、4n+2番目、4n+3番目の四列、5n番目、5n+1番目、5n+2番目、5n+3番目、5n+4番目の五列、…(n=1、2、3、…)となる。また、図18の楽音波形展開回路21のセレクタ52、62、55、65の選択端も3段、4段、5段、…となる。
【0150】
上記クロスフェード28の重み付けのためのコサイン波形は、他にサイン波、三角波、台形波、のこぎり波などでもよい。上記図17、図18、図19で処理される圧縮楽音波形の伸長復元処理はプログラム(ソフトウエア)によって実行され得る。また、この奇数番目フレームの処理と偶数番目フレームの処理とは完全に同期している必要はなく、一方の伸長復元処理後他方の伸長復元処理が行われ交互に切り換えられてもよい。これでも並行に処理されているといえる。
【0151】
図17、図18、図19の回路において、圧縮楽音波形データが記憶されているのは、楽音波形メモリであってもよく、伸長された楽音波形データがストアされるのはバッファメモリであってもよい。
【0152】
圧縮された楽音波形データMWの先頭の奇数番目のフレーム(時間長)の楽音波形データMWの伸長復元は、上記ステップ12の音色設定処理の時ではなく、上記ステップ14の発音処理の時に実行されてもよい。また、圧縮された楽音波形データMWの先頭の次の偶数番目以降のすべてまたは一部のフレーム(時間長)の楽音波形データMWの伸長復元は、上記ステップ14の発音処理の時ではなく、上記ステップ12の音色設定処理の時に予め行われていてもよい。
【0153】
(18)他の発明の効果
[1]コントローラが、 所定の時間長で切り出された楽音波形をフーリエ変換させ、 このフーリエ変換された情報につき、振幅成分及び位相成分を量子化させ、 この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせることを特徴とする楽音波形の情報圧縮方法。
【0154】
[2]コンピュータに対して、 所定の時間長で切り出された楽音波形をフーリエ変換させる処理と、 このフーリエ変換された情報につき、振幅成分及び位相成分を量子化させる処理と、 この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせる処理とを実行させること特徴とする楽音波形の情報圧縮のためのコンピュータプログラム。
【0155】
[3]所定の時間長で切り出された楽音波形をフーリエ変換する手段と、 このフーリエ変換された情報につき、振幅成分及び位相成分を量子化する手段と、 この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくする手段を備えたことを特徴とする楽音波形の情報圧縮装置。
【0156】
[4]上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、 この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行い、 この復元された楽音波形をフーリエ逆変換またはコサイン逆変換することを特徴とする楽音波形の情報伸長方法。
【0157】
[5]上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、 この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行う手段と、 この復元された楽音波形をフーリエ逆変換またはコサイン逆変換する手段とを備えたことを特徴とする楽音波形の情報伸長装置。
【0158】
[6]上記量子化を、上記楽音波形の位相成分に対して振幅成分をより細かくすることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、振幅成分の伸長復元再生において再現性を高めることができる。
【0159】
[7]上記所定の時間長は、上記楽音波形の一周期にほぼ一致していることを特徴とする請求項3、5または6記載の情報圧縮装置または情報伸長装置。これにより、楽音の一周期ごとに量子化でき、楽音波形の周期性を利用した量子化/圧縮ができる。
【0160】
[8]上記楽音波形の取り得る最大振幅の限界値に対する当該楽音波形の最大値の比率が、上記楽音波形の振幅成分に演算されることを特徴とする請求項3、5、6または7記載の情報圧縮装置または情報伸長装置または情報伸長装置。これにより、振幅成分の全ビットを無駄なく使って振幅成分を表記できる。
【0161】
[9]上記楽音波形の振幅成分は、上記楽音波形の取り得る最大振幅の限界値と、上記楽音波形の振幅成分との差に変換されることを特徴とする請求項3、5、6、7または8記載の情報圧縮装置または情報伸長装置または情報伸長装置。これにより、楽音波形の振幅が大きいときに、量子化の精度をより細かくできる。
【0162】
[10]上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における振幅成分の差分を求めることを特徴とする請求項3、5、6、7、8または9記載の情報圧縮装置または情報伸長装置。これにより、記憶する楽音波形の振幅成分を差分まで小さく圧縮できる。
【0163】
[11]上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における位相成分の差分を求めることを特徴とする請求項3、5、6、7、8、9または10記載の情報圧縮装置または情報伸長装置。これにより、位相についても、記憶する楽音波形を差分まで小さく圧縮できる。
【0164】
[12]上記楽音波形の最大値が量子化される、またはある周期の楽音波形の最大値と、この周期の前または後の周期の楽音波形の最大値とにつき差分を求めることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、最大値についても差分まで小さく圧縮できる。
【0165】
[13]上記請求項3における楽音波形の圧縮処理は、上記楽音波形につき重複して実行され、この重複して実行される圧縮処理における上記時間長は同じで位相がずれており、
上記請求項5における楽音波形の伸長処理は、この重複して圧縮された複数の楽音波形につき並行して実行され、 この伸長された複数の楽音波形は合成されて出力され、この合成される各楽音波形の重み付けは、上記位相のずれた各時間長の中央付近で大きくされ、当該時間長の端付近で小さくされることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、楽音波形データ(振幅データ)の伸長復元で、ノイズの出る各時間長(フレーム)の端付近で重み付けが小さくされ、ノイズが出にくくなる。
【0166】
[14]圧縮された楽音波形の先頭の時間長の楽音波形は、音色指定があったときに伸長され、 圧縮された楽音波形の先頭の次以降の時間長の楽音波形は、発音指示があったときに伸長されることを特徴とする請求項13記載の情報圧縮装置または情報伸長装置。これにより、発音指示に遅れずに即座に伸長復元した楽音を出力できる。
【0167】
[15]上記フーリエ変換によって、実数部と虚数部とが求められ、この実数部と虚数部とが周波数軸変換されて振幅成分と位相成分とに変換され、 上記フーリエ逆変換によって、この振幅成分と位相成分とが周波数軸逆変換されて、実数部と虚数部とが求められ、この実数部と虚数部とから位相成分に応じた移相処理された振幅が復元されることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。これにより、位相成分も合わせて圧縮変換でき伸長復元もできる。
【0168】
[16]上記請求項1記載の楽音波形の情報圧縮方法によって処理された、圧縮され記憶された楽音波形のデータ構造、または上記請求項4の楽音波形の情報伸長方法によって処理される、圧縮され記憶された楽音波形のデータ構造。これにより、楽音波形のデータの容量が少なくなる。
【0169】
[17]請求項3、5、6、7、8、9、10、11、12、13、14、15または16記載の情報圧縮装置によって処理された、圧縮され記憶された楽音波形のデータ構造、または請求項5、6、7、8、9、10、11、12、13、14、15または16記載の情報伸長装置によって処理される、圧縮され記憶された楽音波形のデータ構造。これにより、楽音波形のデータの容量が少なくなる。
【0170】
[18]上記楽音波形の最大値に対する平均値または最頻値の比率が、上記楽音波形の振幅成分に演算されることを特徴とする請求項3、5、6、7、8、9、10、11、12、13、14、15、16または17記載の情報圧縮装置または情報伸長装置。これにより、平均値または最頻値から離れるほど、量子化の精度をより細かくできる。
【0171】
[19]上記楽音波形の振幅成分は、上記楽音波形の平均値または最頻値と、上記楽音波形の振幅成分との差に変換されることを特徴とする請求項3、5、6、7、8、9、10、11、12、13、14、15、16、17または18記載の情報圧縮装置または情報伸長装置。これにより、楽音波形の振幅が大きいときに、量子化の精度をより細かくできる。
【産業上の利用可能性】
【0172】
楽音波形の振幅が大きい部分が細かく量子化され、振幅が小さい部分が粗く量子化され、楽音波形の記憶容量が小さくされる。標準振幅NX(i)は限界値Xtから差し引かれ、振幅差値RNX(i)が求められる(ステップ11)。
RNX(i)=SIG{NX(i)}×〔Xt−ABS{NX(i)}〕…(7)
【0173】
SIG{NX(i)}:NX(i)が負なら「−1」、負ではないなら「1」
ABS{NX(i)}:{NX(i)}の絶対値
この振幅差値RNX(i)は、8ビットの浮動小数点表記FRNX(i)とされる。これにより、上記楽音波形の振幅値X(i)は、上記楽音波形の限界値Xと、上記楽音波形の振幅値X(i)との差に変換され、楽音波形の振幅Xが大きいときに、量子化の精度がより細かくされる。この圧縮楽音波形は図17、18、19の回路で伸長復元される。
【図面の簡単な説明】
【0174】
【図1】情報圧縮装置などの全体回路1を示す。
【図2】楽音信号発生部5を示す。
【図3】楽音波形の圧縮処理のフローチャートを示す。
【図4】実数部データRE(i)及び虚数部データIM(i)と振幅データX(i)及び位相データP(i)との関係を示す。
【図5】圧縮された楽音波形データ(離散フーリエ変換)の一フレームを示す。
【図6】圧縮された楽音波形データ(離散コサイン変換)の一フレームを示す。
【図7】差分圧縮の演算処理のフローチャートを示す。
【図8】図7の処理によって差分圧縮された楽音波形データを示す。
【図9】図7の処理によって差分圧縮された楽音波形データを示す。
【図10】不規則波形の圧縮された楽音波形データ及び差分圧縮された楽音波形データの具体例を示す。
【図11】図10のデータによる不規則波形を示す。
【図12】図11の例において伸長復元再生された楽音波形データの具体例を示す。
【図13】余弦波の圧縮された楽音波形データ及び差分圧縮された楽音波形データの具体例を示す。
【図14】図13のデータによる余弦波形を示す。
【図15】図13の例において伸長復元再生された楽音波形データの具体例を示す。
【図16】楽音波形の振幅が小さいときに比べて大きいときに、量子化をより細かくする特性を示す。
【図17】図2の楽音信号発生部5の中の楽音伸長復元回路46を示す。
【図18】図17の楽音伸長復元回路46の中の楽音波形展開回路21を示す。
【図19】図17の楽音伸長復元回路46の中のクロスフェード回路28を示す。
【図20】クロスフェード回路28における重み付け合成の2つのコサイン波形を示す。
【図21】全体処理のフローチャートを示す。
【図22】上記ステップ03のイベント処理のフローチャートを示す。
【図23】上記ステップ03のイベント処理のフローチャートを示す。
【図24】上記ステップ14の発音処理のフローチャートを示す。
【図25】上記ステップ16の消音処理のフローチャートを示す。
【符号の説明】
【0175】
1…全体回路、2…コントローラ(CPU)、
3…タイミング発生部、4…プログラム/データ記憶部、
5…楽音信号発生部、6…サウンドシステム、7…情報記憶部、
11…キーボード、12…キーボードスキャン回路、
13…パネルスイッチ群、14…スイッチスキャン回路、
15…ミディ回路、16…マイク、17…音響変換回路、
21…楽音波形展開回路、22、32…リニア化回路、
23、33…加算器(減算器)、24、34…乗算器、
25、35…バッファメモリ、26、36…逆変換回路、
27、37バッファメモリ、28…クロスフェード回路、
40…アサインメントメモリ、41…楽音波形読出回路、
42…楽音波形メモリ(バッファ)、43…乗算器、44…累算器、
45…エンベロープジェネレータ、46…楽音伸長復元回路、
51…アドレスジェネレータ、52、62…セレクタ、
53、63…差分バッファ、54、64…加算器、
55、65…セレクタ、56、66…トップバッファ、
71…アドレスジェネレータ、72、82…コサインテーブル、
73、83…乗算器、74…加算器74。
【特許請求の範囲】
【請求項1】
コントローラが、
所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換させ、
このフーリエ変換またはコサイン変換された情報につき、振幅成分を量子化させ、場合によって位相成分も量子化させ、
この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせることを特徴とする楽音波形の情報圧縮方法。
【請求項2】
コンピュータに対して、
所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換させる処理と、
このフーリエ変換またはコサイン変換された情報につき、振幅成分を量子化させ、場合によって位相成分も量子化させる処理と、
この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせる処理とを実行させること特徴とする楽音波形の情報圧縮のためのコンピュータプログラム。
【請求項3】
所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換する手段と、
このフーリエ変換またはコサイン変換された情報につき、振幅成分を量子化し、場合によって位相成分も量子化する手段と、
この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくする手段を備えたことを特徴とする楽音波形の情報圧縮装置。
【請求項4】
上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、
この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行い、
この復元された楽音波形をフーリエ逆変換またはコサイン逆変換することを特徴とする楽音波形の情報伸長方法。
【請求項5】
上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、
この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行う手段と、
この復元された楽音波形をフーリエ逆変換またはコサイン逆変換する手段とを備えたことを特徴とする楽音波形の情報伸長装置。
【請求項6】
上記量子化を、上記楽音波形の位相成分に対して振幅成分をより細かくすることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項7】
上記所定の時間長は、上記楽音波形の一周期にほぼ一致していることを特徴とする請求項3、5または6記載の情報圧縮装置または情報伸長装置。
【請求項8】
上記楽音波形の取り得る最大振幅の限界値に対する当該楽音波形の最大値の比率が、上記楽音波形の振幅成分に演算されることを特徴とする請求項3、5、6または7記載の情報圧縮装置または情報伸長装置または情報伸長装置。
【請求項9】
上記楽音波形の振幅成分は、上記楽音波形の取り得る最大振幅の限界値と、上記楽音波形の振幅成分との差に変換されることを特徴とする請求項3、5、6、7または8記載の情報圧縮装置または情報伸長装置または情報伸長装置。
【請求項10】
上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における振幅成分の差分を求めることを特徴とする請求項3、5、6、7、8または9記載の情報圧縮装置または情報伸長装置。
【請求項11】
上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における位相成分の差分を求めることを特徴とする請求項3、5、6、7、8、9または10記載の情報圧縮装置または情報伸長装置。
【請求項12】
上記楽音波形の最大値が量子化される、またはある周期の楽音波形の最大値と、この周期の前または後の周期の楽音波形の最大値とにつき差分を求めることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項13】
上記請求項3における楽音波形の圧縮処理は、上記楽音波形につき重複して実行され、この重複して実行される圧縮処理における上記時間長は同じで位相がずれており、
上記請求項5における楽音波形の伸長処理は、この重複して圧縮された複数の楽音波形につき並行して実行され、
この伸長された複数の楽音波形は合成されて出力され、この合成される各楽音波形の重み付けは、上記位相のずれた各時間長の中央付近で大きくされ、当該時間長の端付近で小さくされることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項14】
圧縮された楽音波形の先頭の時間長の楽音波形は、音色指定があったときに伸長され、 圧縮された楽音波形の先頭の次以降の時間長の楽音波形は、発音指示があったときに伸長されることを特徴とする請求項13記載の情報圧縮装置または情報伸長装置。
【請求項15】
上記フーリエ変換によって、実数部と虚数部とが求められ、この実数部と虚数部とが周波数軸変換されて振幅成分と位相成分とに変換され、
上記フーリエ逆変換によって、この振幅成分と位相成分とが周波数軸逆変換されて、実数部と虚数部とが求められ、この実数部と虚数部とから位相成分に応じた移相処理された振幅が復元されることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項16】
上記請求項1記載の楽音波形の情報圧縮方法によって処理された、圧縮され記憶された楽音波形のデータ構造、または上記請求項4の楽音波形の情報伸長方法によって処理される、圧縮され記憶された楽音波形のデータ構造。
【請求項17】
請求項3、5、6、7、8、9、10、11、12、13、14、15または16記載の情報圧縮装置によって処理された、圧縮され記憶された楽音波形のデータ構造、または請求項5、6、7、8、9、10、11、12、13、14、15または16記載の情報伸長装置によって処理される、圧縮され記憶された楽音波形のデータ構造。
【請求項1】
コントローラが、
所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換させ、
このフーリエ変換またはコサイン変換された情報につき、振幅成分を量子化させ、場合によって位相成分も量子化させ、
この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせることを特徴とする楽音波形の情報圧縮方法。
【請求項2】
コンピュータに対して、
所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換させる処理と、
このフーリエ変換またはコサイン変換された情報につき、振幅成分を量子化させ、場合によって位相成分も量子化させる処理と、
この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくさせる処理とを実行させること特徴とする楽音波形の情報圧縮のためのコンピュータプログラム。
【請求項3】
所定の時間長で切り出された楽音波形をフーリエ変換またはコサイン変換する手段と、
このフーリエ変換またはコサイン変換された情報につき、振幅成分を量子化し、場合によって位相成分も量子化する手段と、
この量子化を上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくする手段を備えたことを特徴とする楽音波形の情報圧縮装置。
【請求項4】
上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、
この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行い、
この復元された楽音波形をフーリエ逆変換またはコサイン逆変換することを特徴とする楽音波形の情報伸長方法。
【請求項5】
上記請求項1の情報圧縮方法、上記請求項2の情報圧縮のためのコンピュータプログラム、または上記請求項3の情報圧縮装置によって圧縮された量子化された楽音波形を伸長し、場合によって量子化された位相成分も付加し、
この伸長された楽音波形の復元において、上記楽音波形の振幅が小さいときに比べて大きいときに、より細かくされた量子化の復元を行う手段と、
この復元された楽音波形をフーリエ逆変換またはコサイン逆変換する手段とを備えたことを特徴とする楽音波形の情報伸長装置。
【請求項6】
上記量子化を、上記楽音波形の位相成分に対して振幅成分をより細かくすることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項7】
上記所定の時間長は、上記楽音波形の一周期にほぼ一致していることを特徴とする請求項3、5または6記載の情報圧縮装置または情報伸長装置。
【請求項8】
上記楽音波形の取り得る最大振幅の限界値に対する当該楽音波形の最大値の比率が、上記楽音波形の振幅成分に演算されることを特徴とする請求項3、5、6または7記載の情報圧縮装置または情報伸長装置または情報伸長装置。
【請求項9】
上記楽音波形の振幅成分は、上記楽音波形の取り得る最大振幅の限界値と、上記楽音波形の振幅成分との差に変換されることを特徴とする請求項3、5、6、7または8記載の情報圧縮装置または情報伸長装置または情報伸長装置。
【請求項10】
上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における振幅成分の差分を求めることを特徴とする請求項3、5、6、7、8または9記載の情報圧縮装置または情報伸長装置。
【請求項11】
上記楽音波形は周期的であり、このうちのある周期の楽音波形と、この周期の前または後の周期の楽音波形とにつき、当該両周期上の同じ位置における位相成分の差分を求めることを特徴とする請求項3、5、6、7、8、9または10記載の情報圧縮装置または情報伸長装置。
【請求項12】
上記楽音波形の最大値が量子化される、またはある周期の楽音波形の最大値と、この周期の前または後の周期の楽音波形の最大値とにつき差分を求めることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項13】
上記請求項3における楽音波形の圧縮処理は、上記楽音波形につき重複して実行され、この重複して実行される圧縮処理における上記時間長は同じで位相がずれており、
上記請求項5における楽音波形の伸長処理は、この重複して圧縮された複数の楽音波形につき並行して実行され、
この伸長された複数の楽音波形は合成されて出力され、この合成される各楽音波形の重み付けは、上記位相のずれた各時間長の中央付近で大きくされ、当該時間長の端付近で小さくされることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項14】
圧縮された楽音波形の先頭の時間長の楽音波形は、音色指定があったときに伸長され、 圧縮された楽音波形の先頭の次以降の時間長の楽音波形は、発音指示があったときに伸長されることを特徴とする請求項13記載の情報圧縮装置または情報伸長装置。
【請求項15】
上記フーリエ変換によって、実数部と虚数部とが求められ、この実数部と虚数部とが周波数軸変換されて振幅成分と位相成分とに変換され、
上記フーリエ逆変換によって、この振幅成分と位相成分とが周波数軸逆変換されて、実数部と虚数部とが求められ、この実数部と虚数部とから位相成分に応じた移相処理された振幅が復元されることを特徴とする請求項3または5記載の情報圧縮装置または情報伸長装置。
【請求項16】
上記請求項1記載の楽音波形の情報圧縮方法によって処理された、圧縮され記憶された楽音波形のデータ構造、または上記請求項4の楽音波形の情報伸長方法によって処理される、圧縮され記憶された楽音波形のデータ構造。
【請求項17】
請求項3、5、6、7、8、9、10、11、12、13、14、15または16記載の情報圧縮装置によって処理された、圧縮され記憶された楽音波形のデータ構造、または請求項5、6、7、8、9、10、11、12、13、14、15または16記載の情報伸長装置によって処理される、圧縮され記憶された楽音波形のデータ構造。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【公開番号】特開2012−234206(P2012−234206A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2012−179070(P2012−179070)
【出願日】平成24年8月10日(2012.8.10)
【分割の表示】特願2008−234786(P2008−234786)の分割
【原出願日】平成20年9月12日(2008.9.12)
【出願人】(000001410)株式会社河合楽器製作所 (563)
【Fターム(参考)】
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願日】平成24年8月10日(2012.8.10)
【分割の表示】特願2008−234786(P2008−234786)の分割
【原出願日】平成20年9月12日(2008.9.12)
【出願人】(000001410)株式会社河合楽器製作所 (563)
【Fターム(参考)】
[ Back to top ]