(57)【特許請求の範囲】
【請求項１】
音高情報の内の上位桁情報を入力し、指数変換する第１の変換手段と、
音高情報の内の前記上位桁情報を除く下位桁情報を入力し、指数変換する第２の変換手段と、
第１の変換手段の出力情報と第２の変換手段の出力情報とを乗算して、波形メモリから波形を読み出すための周波数ナンバを算出する乗算手段と、を備え、
前記第１の変換手段及び前記第２の変換手段の少なくとも一方は、前記音高情報以外の情報を指数変換するための変換手段としても使用されることを特徴とする電子楽器。
【請求項２】
前記上位桁情報は、音高情報の内の半音単位のキーナンバ情報であり、
前記下位桁情報は、音高情報の内の半音未満の情報であることを特徴とする請求項１に記載の電子楽器。
【請求項３】
前記第１の変換手段は、
前記上位桁情報を、所定のオクターブとの差をオクターブ単位で表した差情報とオクターブ内の音名情報とに変換する変換手段と、
音名情報を入力して、所定のオクターブ内の音名に対応する周波数ナンバを出力する周波数ナンバテーブル手段と、
周波数ナンバテーブル手段から出力された周波数ナンバデータを前記差情報が示すビット数だけシフトするデータシフト手段とからなることを特徴とする請求項１あるいは２のいずれかに記載の電子楽器。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は電子楽器に関し、特にメモリの容量を削減することが可能な波形読み出し回路を備えた電子楽器に関するものである。
【０００２】
【従来の技術】
従来、電子ピアノ等の波形読み出し方式の楽音発生回路を用いた電子楽器においては、音色毎に特定の音高に対応する波形をＰＣＭ録音して、加工した波形データを波形メモリに記憶し、この波形を発音すべき音高に比例したアドレス間隔で読み出すように構成されており、このアドレス間隔データを周波数ナンバと呼んでいる。そして、従来はキーボードの半音単位の各鍵に対応したキーナンバを周波数ナンバに変換するために、各キーナンバに対応する周波数ナンバを記憶した変換テーブルを用いていた。しかし、この方式では鍵の数に対応した多数の周波数ナンバを記憶する必要があるという問題点があり、この問題点を解決するために、例えば特開平２−１３９５９９号公報に記載されているような技術が提案されている。この方式は、周波数ナンバがオクターブ上がる毎に２倍になることに着目し、キーナンバをオクターブ情報とノート（音名）情報とに変換し、ノート情報を周波数ナンバに変換して、オクターブ情報に応じてビットシフトすることにより、目的の周波数ナンバを得るものである。
【０００３】
【発明が解決しようとする課題】
前記したような従来の周波数ナンバ変換方式においては、半音単位で周波数ナンバを得る場合には、１オクターブ内の１２個の周波数ナンバを記憶すればよいが、例えばビブラート効果の付与、チューニング、ベンダーによる周波数変更に対応するためには、半音間を例えば１００分割したセント単位での制御が必要となり、全てのセントに対応する周波数ナンバを記憶すると記憶容量が非常に大きくなってしまうという問題点があった。
本発明の目的は、前記のような従来技術の問題点を改良し、少ない記憶容量で、細かい周波数変化に対応可能な楽音発生手段を有する電子楽器を提供することにある。
【０００４】
【課題を解決するための手段】
本発明は、音高情報の内の上位桁情報を入力し、指数変換する第１の変換手段と、
音高情報の内の前記上位桁情報を除く下位桁情報を入力し、指数変換する第２の変換手段と、第１の変換手段の出力情報と第２の変換手段の出力情報とを乗算して、波形メモリから波形を読み出すための周波数ナンバを算出する乗算手段と、を備え、前記第１の変換手段及び前記第２の変換手段の少なくとも一方は、前記音高情報以外の情報を指数変換するための変換手段としても使用されることを特徴とする。
【０００５】
【作用】
本発明は、上記したような構成によって、周波数ナンバ変換手段は、例えばキーナンバの整数部に対応する１２個の周波数ナンバのみを変換すればよく、また指数変換手段は、例えば小数点以下２桁（セント単位）あるいは２進で小数点以下７ビットまでに対応する１００個あるいは１２８個の指数データに変換できればよいので、変換手段をテーブルによって構成した場合には、該テーブルの記憶容量が従来例に較べて非常に小さくなる。また、変換手段は時分割で使用することによって、例えばエンベロープ信号の発生のための演算等の他の用途にも使用可能である。
【０００６】
【実施例】
以下、本発明の一実施例を図面を参照して詳細に説明する。図２は本発明の前提となる電子楽器の回路構成の一例を示すブロック図である。ＣＰＵ１は、ＲＯＭ２に格納されている制御プログラムに基づき、電子楽器全体の制御を行う中央処理装置である。ＣＰＵ１には、設定された所定の周期でタイマ割り込みをかけるタイマ回路も内蔵されている。ＲＯＭ２には、プログラム、音色パラメータ等が記憶されている。ＲＡＭ３はワークエリアあるいはデータバッファとして使用され、バッテリバックアップされていてもよい。キーボード４は例えばそれぞれ２つのスイッチを有する複数の鍵およびスキャン回路から成り、パネル５は、各種スイッチ、液晶あるいはＬＥＤ等により文字や図形を表示する表示装置およびそのインターフェース回路からなる。
【０００７】
楽音発生回路６は、後述するように、デジタル楽音波形情報が記憶されている波形メモリから発音すべき音高に比例したアドレス間隔で順次楽音波形を読み出し、エンベロープ信号を乗算することによって楽音信号を発生させる複数の楽音発生チャネルを有し、実際には、１つの楽音発生回路を時分割多重動作させることにより同時に複数の楽音信号を独立して発生可能に構成されている。また、音像効果回路、残響効果回路等を含んでいてもよい。Ｄ／Ａ変換器７はデジタル楽音信号をＤ／Ａ変換し、アナログ信号処理回路８はノイズ除去のために簡単なフィルタ処理を行う。アンプ９はスピーカ１０を駆動するために楽音信号を増幅する。バス１１は電子楽器内の各回路を接続している。なお、この他に、ＭＩＤＩインターフェース回路、フロッピディスクドライブ回路、メモリカードインターフェース回路等を備えていてもよい。
【０００８】
図３は、図２の楽音発生回路６の構成を示すブロック図である。波形読み出し回路２０は、ＣＰＵ１から、小数点以下の情報も含むキーナンバ信号、キーオンあるいはキーオフを示す信号、音色情報を入力し、後述するような構成によって、波形メモリ２１に対する読み出しアドレスを発生する。また補間回路２２に対しては読み出しアドレスの小数部のデータを出力する。波形メモリ２１には、音色毎に特定の音高（例えばＣ７）に対応する波形をＰＣＭ録音して、エンベロープあるいは繰り返し読み出し部分の波形を加工した波形データが記憶されている。
【０００９】
補間回路２２は、波形メモリ２１から読み出された、読み出しアドレスの整数部に対応する波形データ、及び該アドレスに１を加算したアドレスに対応する波形データを入力し、波形読み出し回路２０から出力される読み出しアドレスの小数部データに基づき周知の補間演算を行う。エンベロープ発生器２４は、ＣＰＵ１から与えられた各種情報あるいはエンベロープパラメータに従って、公知の任意の方式によって振幅エンベロープ信号を発生する。乗算器２３は、補間回路２２から出力された波形信号に振幅エンベロープ信号を乗算し、楽音信号を出力する。なお、楽音発生回路２０は、時分割多重動作し、複数の楽音信号を独立して発生可能であり、それぞれの楽音発生チャネルの楽音信号は乗算器２３の後段にある図示しない累算器によって加算合成され、Ｄ／Ａ変換器７に出力される。
【００１０】
図１は、図３の波形読み出し回路２０の構成を示すブロック図である。波形読み出し回路２０内ではキーナンバ信号を周波数ナンバに変換する処理が行われる。そこで、まず変換原理について説明する。キーナンバＫと周波数ナンバＦは、Ｘ＝（Ｋ−ＫＳ  ）／１２とすると、Ｆ＝（２のＸ乗）の関係にある。但しＫＳ  は波形メモリ２１に記憶されている波形の基準キーナンバ（例えば９６＝Ｃ７）である。ここで、キーナンバＫをＫ＝１２＊ｏｃｔ＋ｎｏｔｅ＋Ｆｒａｃと表すことができる。但し、ｏｃｔ  はＫを１２で割った商の整数部、ｎｏｔｅは余りの整数部（０≦ｎｏｔｅ≦１１）、Ｆｒａｃは余りの小数部（０≦Ｆｒａｃ＜１）である。ここでＫｓ  ＝９６であるとするとＸは、Ｘ＝（ｏｃｔ−９６／１２  ）＋ｎｏｔｅ／１２  ＋Ｆｒａｃ／１２  と表され、Ｆは、Ｆ＝（２の（ｏｃｔ−８  ）乗）×（２のｎｏｔｅ／１２  乗）×（２のＦｒａｃ／１２  乗）となる。この式の右辺の第２項および第３項の演算は周波数ナンバテーブル３２及び指数変換テーブル３０による変換処理によりそれぞれ実行され、第１項の演算は変換器３１およびシフト回路３３によって実行される。
【００１１】
変換器３１は入力されたキーナンバ信号の整数部  ｋｅｙｎｏを１２で割り、その商の整数部ｏｃｔ  及び余りｎｏｔｅを出力する除算回路あるいは変換テーブルである。周波数ナンバテーブル３２は、図４（ａ）にその記憶内容を示すように、ｎｏｔｅ番号に対応した１２個の周波数ナンバＦを記憶している変換テーブルである。シフト回路３３は、周波数ナンバＦを入力し、ｏｃｔ  から８（＝Ｋｓ／１２）を引いた値だけ右ビットシフトした値を出力する。例えばキーナンバ信号として５６（Ａ３）が入力された場合には、ｏｃｔ  が４、ｎｏｔｅが９となる。従って、周波数ナンバテーブル３２からは１．６８１７…というＦ値が出力され、シフト回路３３によって４−８＝−４ビット右シフト、即ち４ビット左シフト（２の４乗で除算）されて、０．１０５１…という周波数ナンバ値が出力される。
【００１２】
キーナンバ信号の小数部Ｆｒａｃは、例えば７ビットの２進数で表され、指数変換テーブル３０は、この７ビットの２進数をアドレスとして、［２のＦｒａｃ／（１２＊１２８）  乗］を出力する。図４（ｂ）は、指数変換テーブル３０の記憶内容を示す説明図である。この図においては、Ｆｒａｃをアドレスを表す７ビットの整数値と見なして表現してある。中央のセント（ｃｅｎｔ）はＦｒａｃを百分率で示した場合の対応する値が示されており、例えばＦｒａｃ値３（０００００１１）は２．３４セント、即ち０．０２３４に対応する。乗算器３４は、シフト回路３３の出力と指数変換テーブル３０の出力値とを乗算し、入力されたキーナンバ信号に対応する周波数ナンバ値Ｆを出力し、保持する。
【００１３】
累算器３５は、加算器３６、保持回路３７、アンド回路３８等からなり、入力された周波数ナンバ値をサンプリング周期毎に累算して波形メモリ２１に対する読み出しアドレスの下位ビットを出力する。エッジ検出器３９は、通常は１を出力しており、キーオン信号の立ち上がりエッジ（０から１への変化点）を検出した場合には１周期のみ出力を０にする。ＣＰＵ１は、キーナンバ信号を楽音発生回路６に設定し、加算器３６に乗算器３４から周波数ナンバ値が入力された後にキーオン信号を立ち上げる。すると、アンド回路３８から加算器３６への入力が０となり、加算器３６の出力は周波数ナンバ値となり、該値が保持回路３７に保持される。その後はエッジ検出器３９の出力が１となるので、保持回路３７の記憶値が加算器３６に入力され、乗算器３４から入力される周波数ナンバ値と加算されて、再び保持回路３７に記憶される。従って、累算器３５からは読み出し周期毎に周波数ナンバ値だけ増加するアドレス信号が順次出力される。なお、実際には補間演算を行うために、累算器３５の出力部に図示しない＋１加算器が設けられており、加算器３６から出力されるアドレス値及び該アドレス値に１を加算した値が時分割出力される。
【００１４】
波形選択器４０は、例えば変換テーブルから成り、音色情報、キーナンバ信号の上位ビット、あるいはタッチ情報等を入力し、波形メモリ中の波形を選択するための波形読み出しアドレスの上位ビットを出力する。なお波形選択器の出力をキーオン時に保持回路３７にセットするような構成であってもよい。波形メモリ２１は累算器３５から出力される読み出しアドレスの整数部および波形選択器４０から出力される上位アドレスに基づき、波形データを順次出力し、補間回路２２は波形メモリ２１から出力される２つの波形データおよび累算器３５から出力される読み出しアドレスの小数部データに基づき、周知の補間演算を行う。以上のような構成により、少ない容量の変換テーブルによって精度の高い周波数ナンバへの変換が可能となる。
【００１５】
上記例においては、キーナンバＫをＫ＝１２＊ｏｃｔ＋ｎｏｔｅ＋Ｆｒａｃと表し、ｎｏｔｅは余りの整数部（０≦ｎｏｔｅ≦１１）、Ｆｒａｃは余りの小数部（０≦Ｆｒａｃ＜１）であるとしたが、ｎｏｔｅとＦｒａｃの分割の仕方は任意であり、例えば２進数で表したＫの小数点以下２ビットまでをｎｏｔｅとし、小数点以下３〜７ビットをＦｒａｃとしてもよい。この場合には、周波数ナンバテーブル３２に記憶される周波数ナンバ個数が４倍の４８個となるが、指数変換テーブル３０の指数データ個数は１／４の３２個となり、両テーブルの合計データ個数は８０個となって、第１の実施例より減少する。また、シフト回路３３は乗算機能を果たしているので、乗算器３４の後ろに配置しても結果は同じである。
【００１６】
図５は、指数変換テーブル３０を他の用途にも兼用した、本発明における波形読み出し回路２０の実施例を示すブロック図である。なお、図１、３と同じ機能のブロックには同じ番号が付与してある。前記例と異なるところは、指数変換テーブルの前に選択器５０が設けられ、後ろに保持回路５１、５２が設けられたところである。周波数ナンバ変換処理時には、選択器５０はキーナンバ信号を選択、出力し、指数変換テーブル３０によって指数変換された値は保持回路５１に保持される。
【００１７】
一方、エンベロープ信号の演算に使用される時には、選択器５０からはエンベロープ発生器２４の信号が出力され、指数変換された値は保持回路５２に保持され、加算器５３によって−１が加算されて、４ビットシフタ５４により左４ビットシフトされて選択器５５に出力される。指数変換テーブル３０には、図４（ｂ）に示すような指数データが記憶されており、このままでは、例えば０から１の間の値を取る入力値を同じく０から１の間の値を取る指数値に変換することはできない。そこで、指数変換テーブル３０の出力値から１を減算し、４ビットシフト（１６倍）することによって、出力範囲がほぼ０から１の間に収まるようになる（実際は０〜０．９４３７６…の間である）。ここで、エンベロープ発生器２４から例えば０から１の間の値を取る三角波を発生し、下りの時には選択器５５が４ビットシフタ５４からの信号を出力するように選択器５５を制御すれば、選択器５５の出力には、上昇時には直線的に上昇し、下降時には指数関数的に減少するエンベロープ波形が得られる。
【００１８】
図６は、図５の実施例の変形例の要部を示すブロック図である。前記実施例においては、エンベロープ発生器２４の出力を指数変換テーブルを用いて変換する例を開示したが、この変形例は、エンベロープ発生器２４の内部において、スピードパラメータの変換に指数変換テーブル３０を用いた例である。図６の端子Ａ及びＢが、図５のエンベロープ発生器２４、選択器５５の代わりに、読み出しアドレス発生回路の端子Ａ、Ｂにそれぞれ接続される。図６のエンベロープ発生回路は、図示するような構成によって、Ｅｎ＋１  ＝Ｅｎ  ＋Ｓ＊（Ｔ−Ｅｎ  ）という演算を行い、目標値Ｔに漸近するエンベロープ信号Ｅｎ  を発生する。スピードパラメータは指数変換されることにより、スピードの小さい部分がより詳細に設定可能となり、精度が向上する。
【００１９】
以上、実施例を説明したが、次のような変形例も考えられる。前記実施例においては、指数変換テーブルを他の用途と兼用する例を開示したが、前記したように、周波数ナンバテーブルの精度を上げることも可能であり、例えばキーナンバ信号の小数点以下３ビットまで周波数ナンバテーブルで変換するようにすれば、０から９６（１２×８）までの値に対応して１〜２の間の値を取る指数を出力する変換テーブルが得られ、このテーブルを他の用途に兼用してもよい。このようにすれば４ビットシフタ５４は不要となる。
【００２０】
【発明の効果】
以上述べたように、本発明においては、周波数ナンバ変換手段は、例えばキーナンバの整数部に対応する１２個の周波数ナンバのみを変換すればよく、また指数変換手段は、例えば小数点以下７ビットまでに対応する１２８個の指数データに変換できればよいので、変換手段をテーブルによって構成した場合には該テーブルの記憶容量が従来例に較べて非常に小さくなるという効果がある。また、変換手段は時分割で使用することによって、例えばエンベロープ信号の発生のための演算等の他の用途にも兼用でき、ハードウェアを削減させることができるという効果もある。
【図面の簡単な説明】
【図１】図３の波形読み出し回路２０の構成を示すブロック図である。
【図２】本発明の前提となる電子楽器の回路構成の一例を示すブロック図である。
【図３】図２の楽音発生回路６の構成を示すブロック図である。
【図４】各テーブルの内容を示す説明図である。
【図５】指数変換テーブルを兼用した本発明の実施例を示すブロック図である。
【図６】図５の実施例の変形例の要部を示すブロック図である。
【図１】
0003551992.tif 000002
【図２】
0003551992.tif 000003
【図３】
0003551992.tif 000004
【図６】
0003551992.tif 000005
【図４】
0003551992.tif 000006
【図５】
0003551992.tif 000007