a.全体構成
本発明の一実施形態に係る演奏装置10の全体概略について図1を用いて説明する。演奏装置10は、メロディ、伴奏などの演奏を表わす演奏情報に基づいて、楽器の演奏音(以下、単に楽音という)を放音する。また、演奏装置10は、演奏装置10とともに使用される楽譜表示装置20を制御する楽譜データSDを用いて搬送波を変調した制御音も放音する。楽譜表示装置20は、演奏装置10から放音された制御音を入力して、制御音に従って楽譜を表示器22に表示する。
つぎに、演奏装置10について詳しく説明する。演奏装置10は、図2に示すように、鍵盤11、パネル操作子12、操作子インターフェース回路13、表示器14、音源回路15、サウンドシステム16、コンピュータ部17、記憶装置18及び外部インターフェース回路19を備えている。
鍵盤11は、演奏者の手によって操作されて、それぞれ発生させる楽音信号の音高を指定するとともに楽音信号の発生及び停止を指示する複数の白鍵及び黒鍵からなる。パネル操作子12は、電子楽器の操作パネル上に設けられた複数の操作子からなる。これらの操作子も、演奏者の手によって操作されて、発生される楽音信号の音色、音量、効果等の楽音特性を設定する操作子を含み、電子楽器全体の動作を設定するためのものである。演奏装置10は、楽譜表示装置20を制御する制御モード及び楽譜表示装置20を制御しない単独モードを備えており、ユーザは、パネル操作子12を用いて、いずれかのモードを選択することができる。また、演奏装置10は、予め記憶しておいた演奏情報に基づいて自動演奏する自動演奏機能を備えており、ユーザは、パネル操作子12を用いて、自動演奏する曲を選択し、演奏開始、演奏停止などを指示することができる。また、ユーザは、パネル操作子12を用いて、自動演奏における演奏パートの音量バランス、定位などを設定することができる。例えば、パネル操作子12に含まれるマスターボリューム操作子は、発生中の全ての楽音の音量を同時に変化させる操作子である。これらの操作子には、オン・オフ操作子に加えて、回転式操作子、スライド式操作子などの各種操作子が含まれる。また、パネル操作子12にはオン・オフ操作子に対応したスイッチ、回転式操作子に対応したボリューム又はロータリーエンコーダ、スライド式操作子に対応したボリューム又はリニアエンコーダなど、各操作子に対応した作動素子も含まれる。
鍵盤11及びパネル操作子12は、バスBSに接続された操作子インターフェース回路13に接続されている。そして、鍵盤11及びパネル操作子12の操作を表す操作情報が、操作子インターフェース回路13及びバスBSを介して後述するコンピュータ部17に供給される。表示器14は、液晶ディスプレイ(LCD)によって構成され、表示画面上に文字、図形などを表示する。この表示器14の表示は、バスBSを介してコンピュータ部17によって制御される。
音源回路15は、複数の波形データを記憶した波形メモリWMから、CPU17aによって指定された楽音波形データ及び制御波形データを読み出してディジタル音信号を生成し、サウンドシステム16に供給する。なお、詳しくは後述するように、楽音にコーラス効果、残響効果などの各種効果を付加するエフェクタ回路は、音源回路15に含まれている。上記の波形メモリWM及び音源回路15については、詳しく後述する。サウンドシステム16は、音源回路15から供給されたディジタル音信号をアナログ音信号に変換するD/A変換器、変換したアナログ音信号を増幅するアンプ、及び増幅されたアナログ音信号を音響信号に変換して出力する左右一対のスピーカを備えている。
コンピュータ部17は、バスBSにそれぞれ接続されたCPU17a、タイマ17b、ROM17c及びRAM17dからなる。CPU17aは、操作子インターフェース回路13及び外部インターフェース回路19から供給される演奏情報に応じて、発音のために必要な情報を、音源回路15に供給する。とくに、CPU17aは、演奏者による鍵盤11の押離鍵操作によって発生したキーイベント、及び外部インターフェース回路19を介して外部機器から供給される演奏情報又は記憶装置18に記憶されていて再生される演奏情報に基づいて発生したイベントに応じて、楽音に関するパラメータ(以下、楽音パラメータという。)を音源回路15に供給する。
また、記憶装置18は、HDD、FDD、CD−ROM、MO、DVDなどの大容量の不揮発性記録媒体と、同各記録媒体に対応するドライブユニットを含むものであり、各種データ及びプログラムの記憶及び読出しを可能にしている。これらのデータ及びプログラムは予め記憶装置18に記憶されていてもよいし、外部インターフェース回路19を介して外部から取り込んでもよい。そして、記憶装置18に記憶された各種データ及びプログラムは、CPU17aによって読み込まれ、電子楽器の制御に利用される。上記の各種データには、楽曲の演奏内容を表わす曲データが含まれる。この曲データは、楽音の発音に関するノートイベントデータ、表示する楽譜に関する楽譜イベントデータ、各種イベントデータ間の時間を表わすデルタタイムデータなどからなる。外部インターフェース回路19は、MIDIインターフェース回路及び通信インターフェース回路を含んでいる。演奏装置10は、外部インターフェース回路19を介して、他の電子音楽装置、パーソナルコンピュータなどのMIDI対応の外部機器に接続可能であり、インターネットなどの通信ネットワークにも接続可能である。
つぎに、波形メモリWMについて詳しく説明する。波形メモリWMには、複数の楽音波形データが記憶されている。楽音波形データは、楽音を所定のサンプリング周波数(例えば、44.1kHz)でサンプリングした複数の波高値からなる。1つの楽音についての複数の波高値は、波形メモリWMの連続するアドレスに順に記憶されている。
また、波形メモリWMには、図3A及び図3Bに示すような、制御音の一部を構成する音の波形を表わす制御波形データG1〜G8も記憶されている。以下、制御波形データG1〜G8の生成について説明する。楽譜データSDは、図4に示すように、ヘッダー部、本体部及びフッター部からなる。ヘッダー部は、本体部の長さを表わす情報を含む1バイトのデータからなる。本体部は、曲の番号を表わす曲情報と楽譜のページ位置を表わすページ情報を含む2バイトのデータからなる。フッター部は、楽譜データSDの終わりを表わす情報を含む1バイトのデータからなる。以下、この楽譜データSDを全体として32ビットのデータとして説明する。すなわち、フッター部の第0ビットを楽譜データSDの最下位ビットLSBと呼び、ヘッダー部の第7ビットを楽譜データSDの最上位ビットMSBと呼ぶ。最上位ビットMSB及び最下位ビットLSBはダミーデータであり、楽譜表示装置20においては、これらのダミーデータは無視される。
制御波形データG1〜G8は、演奏装置10及び楽譜表示装置20とは別に設けられた、図5に示す制御波形データ生成装置WPによって生成されて、波形メモリWMに記憶されている。楽譜データSDは、その最下位ビットLSBから最上位ビットMSBへ向かって、1ビットずつ順に拡散処理部WP1へ入力される。以下、楽譜データSDのそれぞれのビットをシンボルと言う。また、拡散処理部WP1には、拡散符号PNも入力される。拡散符号PNは、一定の周期を有する疑似乱数符号列である。本実施形態においては、拡散符号PNは、図6に示すような、11チップの符号である。なお、拡散符号PNのそれぞれのビットをチップという。ベースバンドにおける楽譜データSDの送信速度であるシンボルレートfaは、400.9sps(シンボル/秒)である(図7参照)。拡散符号PNの周期は、シンボルレートfaに一致している。したがって、拡散符号PNのチップレートfbは、4,410cps(チップ/秒)である。
拡散処理部WP1に入力されたシンボルは、拡散符号PNを用いて拡散処理される。すなわち、図7に示すように、シンボルの値が「1」であれば、拡散符号PNが拡散処理部WP1からそのまま出力され、シンボルの値が「0」であれば、拡散符号PNの位相を反転した符号が拡散処理部WP1から出力される。
拡散処理部WP1によって拡散処理されたシンボルは、先頭のチップから末尾のチップへ向かって1チップごとに、差動位相変調部WP2に入力される。差動位相変調部WP2は、図8に示すように、遅延部WP2aとXOR演算部WP2bからなる。遅延部WP2aは、次に説明するXOR演算部WP2bから出力された演算結果を1チップ分の期間だけ遅延して、XOR演算部WP2bに出力する。XOR演算部WP2bは、遅延部WP2aから入力した符号の値と、拡散処理部WP1から入力した符号の値との排他的論理和を演算して出力する。拡散処理部WP1によって拡散処理されたシンボルは、差動位相変調部WP2によって、図9に示すように、4種類の符号のうちのいずれか1つの符号に変換される。すなわち、値が「1」であるシンボルは、差動符号P1又は差動符号N1に変換され、値が「0」であるシンボルは、差動符号P0又は差動符号N0に変換される。
XOR演算部WP2bから出力された差動符号は、ローパスフィルタWP3に入力される。ローパスフィルタWP3は、後述するパスバンド変調部WP5から出力される制御音の周波数帯域を制限するフィルタである。ローパスフィルタWP3から出力された差動符号は、ヒルベルト変換部WP4に入力される。ヒルベルト変換部WP4は、差動符号の位相をシフトさせることにより、差動符号をヒルベルト変換する。パスバンド変調部WP5は、搬送波生成部WP6から出力された搬送波を、ヒルベルト変換部WP4から出力された信号を用いて変調して、差動符号の周波数帯域を可聴帯域内の高周波帯域にシフトするとともに、上側波帯のみを取り出して、この上側波帯に含まれる周波数成分からなる制御音を出力する。このように差動符号の周波数帯域を半分に減らすことにより、ノイズによる影響を低減して、後述する復号回路29における楽譜データSDの復号精度を向上させる。なお、この搬送波の周波数は、17.64kHzであるので、一般には、制御音は聴取され難い。そして、波形データ取り出し部WP7は、制御音をサンプリングして、各サンプリング期間における波高値を制御音の波形データとしてバッファメモリに記憶する。このサンプリング周波数は、44.1kHzである。
差動符号P1,P0,N1,N0は、差動位相変調部WP2から順次出力されるが、差動符号の種類の遷移の仕方は、図3Bに示す8つの遷移の仕方に限られる。そこで、差動位相変調部WP2の出力として上記の8つの遷移が表れるようなディジタル信号(例えば、1つ又は複数の楽譜データ)を、制御波形データ生成装置WPの拡散処理部WP1に入力して、制御音の波形データをバッファメモリに記憶する。そして、波形データ取り出し部WP7は、バッファメモリに記憶した制御音の波形データから所定の複数の波高値を基本波形データg1〜g8として取り出す。具体的には、差動符号の切り替わりに相当する部分を中央とし、この中央の前後に相当する複数の波高値を取り出す。本実施形態においては、サンプリング周波数を44.1kHzとしたので、上記のように、差動符号の切り替わりに対応する部分を中心として110個の波高値を取り出せば、各基本波形データg1〜g8の先頭が、前半の差動符号の中央に相当し、各基本波形データg1〜g8の終端が後半の差動符号の中央に相当する。
さらに具体的には、図10に示すように、差動符号P0の後半から差動符号N1の前半に相当する部分を基本波形データg1として取り出す。基本波形データg2〜基本波形データg8についても、基本波形データg1と同様に取り出す。すなわち、差動符号P0の後半から差動符号N0の前半に相当する部分を基本波形データg2として取り出す。また、差動符号N0の後半から差動符号P1の前半に相当する部分を基本波形データg3とし、差動符号N0の後半から差動符号P0の前半に相当する部分を基本波形データg4として取り出す。また、差動符号P1の後半から差動符号P1の前半に相当する部分を基本波形データg5とし、差動符号P1の後半から差動符号P0の前半に相当する部分を基本波形データg6として取り出す。さらに、差動符号N1の後半から差動符号N1の前半に相当する部分を基本波形データg7とし、差動符号N1の後半から差動符号N0の前半に相当する部分を基本波形データg8として取り出す。上記のようにして取り出した基本波形データg1〜g8の先頭に、共通の長さの無音部分をそれぞれ付加して、制御波形データG1〜G8として波形メモリWMに記憶する。ただし、上記の無音部分を付加しなくてもよい。各制御波形データを構成する複数の波高値は、制御波形データごとに、連続するアドレスに、サンプリングされた順に記憶されている。制御波形データG1〜G8のデータサイズは共通である。また、各制御波形データにおける、先頭アドレスと基本波形データの先頭アドレスとのオフセット量を表わすオフセットアドレスは共通である。演奏装置10においては、上記のようにして取り出した制御波形データG1〜G8を組み合わせることにより、任意の楽譜データSDを用いて搬送波を変調した制御音全体の波形データを構成することができる。
b.音源回路の構成
次に、音源回路15の構成について詳しく説明する。まず音源回路15の全体構成について説明する。音源回路15は、図11に示すように、波形メモリWMから波形データを読み出してディジタル音信号を生成する複数(例えば32個)の発音チャンネルCH0,CH1・・・CH31を備えている。また、音源回路15は、発音チャンネルCH0,CH1・・・CH31にて生成されたディジタル音信号を累算してサウンドシステム16に出力するチャンネル累算回路15aを備えている。また、音源回路15は、CPU17aから出力された各発音チャンネルを制御する楽音パラメータを入力し、入力した楽音パラメータを各発音チャンネルCH0,CH1・・・CH31に所定のタイミングで出力する楽音パラメータ入出力回路15bを備えている。つぎに、これらの発音チャンネルCH0,CH1・・・CH31、チャンネル累算回路15a及び楽音パラメータ入出力回路15bについて詳しく説明する。
b1.発音チャンネル
各発音チャンネルCH0,CH1・・・CH31は、それぞれ同様に構成されており、サンプリング周期ごとにディジタル音信号をそれぞれ生成する。以下の説明では、発音チャンネルにおける信号のディジタル音信号の生成を単に発音という。各発音チャンネルCH0,CH1・・・CH31は、低周波信号発生回路LFO、ピッチ変更回路PEG、カットオフ周波数変更回路FEG及び音量変更回路AEGを備えている。さらに、各発音チャンネルCH0,CH1・・・CH31は、アドレス発生回路ADR、サンプル補間回路SPI、フィルタ回路FLT及び音量制御回路AMPも備えている。
低周波信号発生回路LFOは、発音開始後、音高、音色及び音量を周期的に変化させる低周波信号を生成して、アドレス発生回路ADR、フィルタ回路FLT及び音量制御回路AMPにそれぞれ供給する。低周波信号発生回路LFOには、楽音パラメータ入出力回路15bを介して、CPU17aから低周波信号制御パラメータが供給される。低周波信号制御パラメータには、低周波信号発生回路LFOから出力する低周波信号の波形、周波数及び振幅を指定するデータが含まれる。
ピッチ変更回路PEGは、ディジタル音信号の音高を制御する音高制御信号をアドレス発生回路ADRに供給する。ピッチ変更回路PEGは、発音開始後の時間経過に従ってエレメント信号の音高が変化するように、時間経過に従って変化する音高制御信号を生成してアドレス発生回路ADRに供給する。この時間経過に従って変化する一連の音高制御信号をピッチエンベロープと呼ぶ。また、カットオフ周波数変更回路FEGは、ディジタル音信号の周波数特性を制御するカットオフ周波数制御信号をフィルタ回路FLTに供給する。カットオフ周波数変更回路FEGは、発音開始後の時間経過に従ってフィルタのカットオフ周波数が変化するように、時間経過に従って変化するカットオフ周波数制御信号を生成して、フィルタ回路FLTに供給する。この時間経過に従って変化する一連のカットオフ周波数制御信号をカットオフエンベロープと呼ぶ。また、音量変更回路AEGは、ディジタル音信号の音量を制御する音量制御信号を音量制御回路AMPに供給する。音量変更回路AEGは、発音開始後の時間経過に従ってディジタル音信号の音量が変化するように、時間経過に従って変化する音量制御信号を生成して音量制御回路AMPに供給する。この時間経過に従って変化する一連の音量制御信号を音量エンベロープと呼ぶ。
アドレス発生回路ADRは、CPU17aから楽音パラメータ入出力回路15bを介して供給された楽音パラメータに含まれる押鍵された鍵の鍵音高を表す音高値、ピッチ変更回路PEGから供給された音高制御信号及び低周波信号発生回路LFOから供給された低周波信号を合成してピッチシフト量を算出する。なお、アドレス発生回路ADRには、CPU17aから、楽音パラメータ入出力回路15bを介して、波形データ情報が供給される。波形データ情報は、波形メモリWMから読み出す波形データの先頭アドレス及び末尾アドレス、ループ開始アドレス、ループ終端アドレス並びにこの波形データの音高を表す元ピッチからなる。
アドレス発生回路ADRは、ループ開始アドレスとループ終端アドレスの間のアドレスを循環的に生成することができる。これにより、各発音チャンネルは、波形データの一部の区間のデータをループして再生することができる。この機能をループ機能という。また、元ピッチと発音する楽音のピッチとの差が、ピッチシフト量である。アドレス発生回路ADRは、ピッチシフト量に応じて、波形データの読み出しレートを決定する。そして、アドレス発生回路ADRは、前記決定した読み出しレートで波形メモリWMから波形データを読み出す。ただし、ピッチシフト量に応じて決定される読み出しレートは、通常、小数部を含むので、波形データの読み出しアドレスも整数部と小数部からなる。そこで、この波形データの読み出しにおいては、整数部を用いて波形データの隣り合う前後一対の波高値を読み出し、サンプル補間回路SPIへ供給する。ただし、制御波形データの読み出しにおいては、ピッチシフト量は「0」であり、制御音は、元ピッチのまま発音される。サンプル補間部SPIは、供給された一対の波高値とアドレスの小数部とを用いて補間演算して、ディジタル楽音データを生成して、フィルタ回路FLTに供給する。
フィルタ回路FLTは、カットオフ周波数変更回路FEGから供給されたカットオフ周波数制御信号及び低周波信号発生回路LFOから供給された低周波信号を合成して、フィルタのカットオフ周波数を算出する。フィルタ回路FLTには、CPU17aから、楽音パラメータ入出力回路15bを介して、フィルタ制御パラメータも供給される。フィルタ制御パラメータには、フィルタの種類(例えば、ハイパスフィルタ、ローパスフィルタなど)を選択するフィルタ選択情報が含まれる。フィルタ回路FLTは、フィルタ選択情報に従って選択したフィルタのカットオフ周波数を前記算出したカットオフ周波数に設定し、サンプル補間回路SPIから供給された波形データをこのフィルタでフィルタリング処理した後、音量制御回路AMPへ出力する。ただし、制御波形データについては、フィルタリング処理は実行されない。
音量制御回路AMPは、音量変更回路AEGから供給された音量制御信号及び低周波信号発生回路LFOから供給された低周波信号を合成して、発生すべき楽音信号の音量を算出する。そして、音量制御回路AMPは、フィルタ回路FLTから供給された波形データを前記算出された音量に応じて増幅して、チャンネル累算回路15aへ出力する。ただし、制御波形データについては、前記算出した音量ではなく、所定の音量(例えば、最大音量)に増幅される。
なお、演奏装置10が、楽譜表示装置20を制御する制御モードに設定されているときは、いずれか1つの発音チャンネル(例えば、発音チャンネルCH31)が、制御音専用に確保される。すなわち、前記確保された発音チャンネルは、制御音のみを生成し、楽音を生成しない。したがって、楽音の同時発音数が31音に制限される。
b2.チャンネル累算回路15a
チャンネル累算回路15aは、図12Aに示すように、パート累算回路15a1、エフェクト処理回路15a2、音量調整回路15a3、パン調整回路15a4、加算回路15a5及び音響エフェクト回路15a6を備えている。パート累算回路15a1は、サンプリング周期ごとに、各発音チャンネルCH0,CH1・・・CH31から出力されたディジタル音信号をマニュアル演奏パート及び複数の自動演奏パートごとに累算して、エフェクト処理回路15a2に出力するとともに、音量調整回路15a3に出力する。エフェクト処理回路15a2は、マニュアル演奏パート及び複数の自動演奏パートに共通の効果(例えば、コーラス効果、残響効果など)を付加する。また、音量調整回路15a3は、楽音パラメータ入出力回路15bから入力した音量設定パラメータに基づいて、各パートの音量を増幅して、パン調整回路15a4に出力する。パン調整回路15a4は、楽音パラメータ入出力回路15bから入力したパン設定パラメータに基づいて、各パートのディジタル音信号の定位を調整して、加算回路15a5に出力する。加算回路15a5は、入力した各パートのディジタル音信号を加算して、音響エフェクト回路15a6に出力する。音響エフェクト回路15a6は、加算されたディジタル音信号に効果を付加して、サウンドシステム16に出力する。
ただし、楽譜表示装置20を制御する制御モードに設定されているときは、発音チャンネルCH31は、制御音のディジタル音信号を生成する発音チャンネルとして設定され、図12Bに示すように、発音チャンネルCH31から出力されたディジタル音信号は、エフェクト処理回路15a2には出力されず、音量調整回路15a3へのみ出力される。また、各演奏パートの音量調整回路15a3にそれぞれ供給されて、演奏パートの音量バランスを設定する音量設定パラメータのうち、制御音用の音量調整回路15a3に供給される音量設定パラメータの値は、固定値である。この音量設定パラメータの固定値は、例えば、最大値「127」である。また、各演奏パートのパン調整回路15a4にそれぞれ供給されて、演奏パートの定位を設定するパン設定パラメータのうち、制御音用のパン調整回路15a4に供給されるパン設定パラメータの値も固定値である。このパン設定パラメータの固定値は、例えば、一方のスピーカ(例えば、左側のスピーカ)のみから出力する設定値である。なお、左右のスピーカから放音される制御音同士の干渉による問題が生じなければ、他方のスピーカから制御音を多少放音してもよい。
b3.楽音パラメータ入出力回路15b
つぎに、楽音パラメータ入出力回路15bについて説明する。楽音パラメータ入出力回路15bは、バスBSを介してCPU17aから供給された楽音パラメータを入力して、各発音チャンネルCH0,CH1・・・CH31の各回路に出力する。楽音パラメータ入出力回路15bは、発音チャンネルCH0,CH1・・・CH31に転送された波形データ情報であって、発音チャンネルCH0,CH1・・・CH31にて、発音中の制御音に関する波形データ情報を記憶している処理用レジスタと、発音チャンネルCH0,CH1・・・CH31にて、次に発音させる制御音に関する波形データ情報を記憶しておく予約用レジスタを備えている。また、楽音パラメータ入出力回路15bは、音源回路15の各回路(アドレス発生回路ADR、ピッチ変更回路PEG、カットオフ周波数変更回路FEG、音量変更回路AEGなど)の状態を表すパラメータを入力して、CPU17aに出力する。
つぎに、上記のように構成した演奏装置10の動作について説明する。ユーザがこの演奏装置10の図示しない電源スイッチをオンにすると、CPU17aは、図13の初期化プログラムを実行する。CPU17aは、ステップS10にて初期化処理を開始すると、ステップS12にて、演奏装置10の各回路を初期状態に設定する。すなわち、鍵盤11に割り当てられる音色のデータ、表示器14に表示する画像データなどをROM17cから読み出して、それぞれの初期値として設定する。つぎに、CPU17aは、ステップS14にて、タイマ17bを作動開始させ、所定の間隔(例えば、1ミリ秒間隔)でタイマ割り込みを発生させるよう設定する。つぎに、CPU17aは、ステップS16にて、操作子インターフェース回路13からの割り込みを許可する。そして、CPU17aは、ステップS18にて初期化処理を終了する。
CPU17aは、操作子インターフェース回路13から割り込みが発生し、その割り込み要因がユーザによる押離鍵操作であることを検出すると、図示しない楽音生成プログラムを実行して、前記押離鍵操作に応じて、楽音の生成を開始又は楽音の生成を停止させる。また、その割り込み要因がユーザによるモード切り替え指示であることを検出すると、図示しないモード切り替えプログラムを実行して、前記モード切り替え指示に応じて、動作モードを切り替える。
また、CPU17aは、操作子インターフェース回路13からの割り込み要因がユーザによる自動演奏の開始指示であることを検出すると、図14に示す自動演奏プログラムを実行する。
CPU17aは、ステップS20にて自動演奏処理を開始すると、ステップS22にて、タイマ17bを用いて時間計測を開始する。つぎに、CPU17aは、ステップS24にて、ユーザによって選択された曲データを記憶装置18(又は、予めコピーしておいたRAM17d)から読み出し、前記読み出した曲データに含まれるイベントデータのうち、テンポクロックタイミングと現在時刻が一致するイベントデータを検索する。該当するイベントデータが無い場合には、「No」と判定して、再びステップS24を実行する。一方、該当するイベントデータがある場合には、「Yes」と判定して、ステップS26にて、そのイベントデータを読み出してイベント処理バッファに記憶する。そして、CPU17aは、ステップS28にて、イベント処理バッファに記憶されているイベントデータの種類に応じて、次に実行する処理を決定する。すなわち、イベントデータが押鍵又は離鍵に関するキーイベントデータである場合には、ステップS30にて、図示しない楽音生成プログラムを実行して、キーイベントデータに対応した楽音の生成を開始又はキーイベントデータに対応した楽音の生成を停止し、ステップS24に戻る。
また、ステップS28において検出したイベントデータが、楽譜表示装置20に表示させる楽譜のページを表わす楽譜データSDを含む楽譜イベントデータである場合には、CPU17aは、ステップS32にて、現在の動作モードが単独モード又は制御モードのいずれのモードであるか判定する。現在の動作モードが単独モードである場合には、ステップS24に戻る。一方、現在の動作モードが制御モードである場合には、ステップS34にて、図15に示す制御音生成プログラムを実行する。
以下、図15及び図16を用いて、制御音の生成について具体的に説明する。なお、図16の例においては、楽譜データSDの最下位ビットLSB側から最上位ビットMSB側へ向かうシンボルの値の順列が「0101・・・」であるとする。そして、楽譜データSDの最下位ビットLSB側から最上位ビットMSB側へ向かう隣り合う2つのビットには、制御波形データG4、制御波形データG1、制御波形データG8、制御波形データG3・・・がそれぞれ対応している。すなわち、第0ビット及び第1ビットには、制御波形データG4が対応していて、第1ビット及び第2ビットには、制御波形データG1が対応している。また、第2ビット及び第3ビットには、制御波形データG8が対応していて、第3ビット及び第4ビットには、制御波形データG3が対応している。また、図16においては、後述するステップの実行タイミングに対応する位置にそのステップの番号を記載している。
CPU17aは、ステップS40にて制御音生成処理を開始すると、ステップS42にて、前記楽譜データSDの先頭部分の2つのシンボル(すなわち、第0ビット及び第1ビット)を最初の処理対象のシンボルとして選択する。つぎに、CPU17aは、ステップS44にて、制御波形データG1〜G8のうち、前記選択した2つのシンボルに対応した制御波形データ(図16の例においては、制御波形データG4)を選択して、前記選択した制御波形データの各種アドレスを、楽音パラメータ入出力回路15bにおける発音チャンネルCH31の処理用レジスタに書き込む。なお、各種アドレスとは、先頭アドレス、末尾アドレス、ループ先頭アドレス及びループ終端アドレスである。ループ先頭アドレスは、制御波形データを構成する基本波形データの先頭アドレスである。また、ループ終端アドレスは、末尾アドレスである。
つぎに、CPU17aは、ステップS46にて、前記ステップS44において選択した制御波形データを用いたディジタル音信号の生成開始を発音チャンネルCH31に指示する。発音チャンネルCH31のアドレス発生回路ADRは、サンプリング周期ごとに、オフセットアドレスをインクリメントすることにより、処理用レジスタに書き込まれている先頭アドレスを起点として、読み出しアドレスを1つずつ進める。そして、アドレス発生回路ADRは、読み出しアドレスに記憶されている波高値を読み出す。このようにして、発音チャンネルCH31は、ステップS44において選択した制御波形データに対応するディジタル音信号を生成する。
つぎに、CPU17aは、ステップS48にて、読み出しアドレスが、処理用レジスタに書き込まれているループ先頭アドレスを超えているか否かを判定する。すなわち、オフセットアドレスが、先頭アドレスと無音部分の終端に対応するアドレスとの差分よりも大きいか否かを判定する。読み出しアドレスが、ループ先頭アドレスを超えていなければ、CPU17aは、再びステップS48を実行する。一方、読み出しアドレスが、ループ先頭アドレスを超えていれば、CPU17aは、ステップS50にて、処理対象のシンボルに楽譜データSDの最上位ビットMSBが含まれているか否か判定する。処理対象のシンボルに、楽譜データSDの最上位ビットMSBが含まれていないときには、CPU17aは、「No」と判定して、ステップS52に処理を進める。CPU17aは、ステップS52にて、処理対象の2つのシンボルを1ビット分だけ楽譜データSDの最上位ビットMSB側にずらして、次の処理対象の2つのシンボルとして選択する。例えば、最初、処理対象のシンボルは、ステップS42において、楽譜データSDの第0ビット及び第1ビットに設定されているので、ステップS52の初回の実行時には、楽譜データSDの第2ビット及び第1ビットを処理対象のシンボルとして選択する。
つぎに、CPU17aは、ステップS54にて、前記ステップS52において選択した処理対象のシンボルに対応する制御波形データを選択し、選択した制御波形データの各種アドレスを、楽音パラメータ入出力回路15bにおける発音チャンネルCH31の予約用レジスタに書き込む。つぎに、CPU17aは、ステップS56にて、読み出しアドレスが、処理用レジスタに書き込まれているループ終端アドレスに到達したか否かを判定する。読み出しアドレスが、ループ終端アドレスに到達していなければ、CPU17aは、「No」と判定して、再びステップS56を実行する。一方、読み出しアドレスがループ終端アドレスに到達していれば、CPU17aは、「Yes」と判定して、ステップS48に戻る。
発音チャンネルCH31においては、読み出しアドレスが、ループ終端アドレスに到達すると、アドレス発生回路ADRが、予約用レジスタに書き込まれた各種アドレスを処理用レジスタにコピーする。この段階においては、オフセットアドレスは、変更されない。そして、アドレス発生回路ADRは、次のサンプリング周期における読み出しアドレスを、以下のようにして設定する。まず、アドレス発生回路ADRは、前記処理用レジスタにコピーされた先頭アドレスにオフセットアドレスを加算する。この場合、前記加算処理により算出されたアドレスは、処理用レジスタにコピーされた末尾アドレス(ループ終端アドレス)に相当する。したがって、オフセットアドレスを、処理用レジスタにコピーされた先頭アドレスとループ先頭アドレスとのオフセット量に設定する。これにより、次のサンプリング周期における読み出しアドレスが、処理用レジスタにコピーされたループ先頭アドレスに設定される。
以降、CPU17aは、上記のステップS48〜ステップS56からなる処理を繰り返すことにより、処理対象の2つのシンボルにそれぞれ対応した制御波形データ(図16の例においては、制御波形データG4、制御波形データG1、制御波形データG8、制御波形データG3・・・)を順に選択するごとに、それらの各種アドレスを予約レジスタに書き込む。そして、ステップS50において、処理対象のシンボルに、楽譜データSDの最上位ビットMSBが含まれていると、CPU17aは、「Yes」と判定し、ステップS58にて、予約用レジスタをクリアする。例えば、予約用レジスタに、先頭アドレス、末尾アドレス、ループ先頭アドレス及びループ終端アドレスとして、「0」をそれぞれ書き込む。予約レジスタに「0」が書き込まれているとき、発音チャンネルCH31は、再生中の制御波形データの末尾のデータを読み出して再生した後、発音を停止する。そして、CPU17aは、ステップS60にて、制御音生成処理を終了する。
再び、自動演奏処理(図14)の説明に戻る。イベント処理バッファに記憶されているイベントデータがその他のデータである場合には、ステップS36にて、そのイベントデータに応じた処理を実行して、ステップS24に戻る。例えば、イベントデータが音色を変更するプログラムチェンジデータである場合には、音色を変更することを表す楽音制御パラメータを生成して音源回路15に出力し、ステップS24に戻る。また、ステップS26において記憶したイベントデータがエンドデータである場合には、CPU17aは、ステップS38にて、自動演奏処理を終了する。
つぎに、楽譜表示装置20について説明する。楽譜表示装置20は、小型コンピュータ、携帯電話などの携帯情報端末であり、図17に示すように、パネル操作子21、表示器22、表示制御回路23、タッチパネル24、操作子インターフェース回路25、コンピュータ部26、通信インターフェース回路27、集音装置28及び復号回路29を備えている。パネル操作子21は、楽譜表示装置20の電源をオン・オフするための電源スイッチ、表示器22の明るさを調整するボタンなどからなる。パネル操作子21は、操作子インターフェース回路25に接続されていて、操作子インターフェース回路25によって、パネル操作子21の操作状態が検出される。
表示器22は、液晶ディスプレイ(LCD)によって構成され、表示画面上に文字、図形などを表示する。この表示器22の表示は、表示制御回路23によって制御される。楽譜表示装置20の表示器22の表示領域は、演奏装置10の表示器14の表示領域よりも広い。表示制御回路23は、バスBUSを介して、後述のコンピュータ部26から表示器22に表示する画像を表す画像データを入力する。
タッチパネル24は、表示器22の表示画面に重なるようにして配置されている。タッチパネル24も操作子インターフェース回路25に接続されていて、操作子インターフェース回路25によって制御されて、ユーザによってタッチされた位置の座標を表す座標データを操作子インターフェース回路25に出力する。
操作子インターフェース回路25は、パネル操作子21の操作及びタッチパネル24の操作に関する各種データを、バスBUSを介して、コンピュータ部26に供給する。
コンピュータ部26は、演奏装置10のコンピュータ部17と同様に、CPU26a、タイマ26b、ROM26c及びRAM26dからなる。また、通信インターフェース回路27は、楽譜表示装置20をパーソナルコンピュータなどのMIDI対応の外部機器に、無線又は有線で接続可能にするとともに、インターネットなどの通信ネットワークに接続可能にしている。
集音装置28は、音響信号を入力するマイク及び増幅回路からなる。集音装置28は、楽譜表示装置20の角部であって、楽譜表示装置20が演奏装置10に取り付けられたとき、演奏装置10の左側のスピーカに近い位置に設けられている(図1参照)。復号回路29は、集音装置28によって集音されて増幅された音響信号を入力し、演奏装置10によって放音された制御音から楽譜データSDを復号する。復号回路29に入力された音響信号は、図18に示すように、ハイパスフィルタ29aに入力される。ハイパスフィルタ29aは、入力した音響信号から、制御音の周波数帯域よりも低い周波数帯域に含まれる周波数成分を除去して、遅延部29b及び乗算部29cに出力する。
遅延部29bは、入力した信号を差動符号の1チップ分の時間だけ遅延させて乗算部29cに出力する。乗算部29cは、ハイパスフィルタ29aから入力した信号と、遅延部29bから入力した信号とを乗算することにより、遅延検波処理を実行する。そして、乗算部29cからの出力信号は、ローパスフィルタ29dによって、ベースバンド信号に変換され、相関部29eに入力される。相関部29eは、拡散符号PN(図6参照)を用いて、相関係数を出力する。そして、相関部29eから出力された相関係数は、ピーク検出部29fに入力され、ピーク検出部29fにおいて、拡散符号PNの周期で、入力された相関係数のうちの正負のピーク成分が抽出される。抽出されたピーク成分の値は、符号判定部29gに入力される。符号判定部29gは、入力したピーク成分の値が「1」であれば、符号(すなわち、楽譜データSDを構成するシンボル)の値を「0」とし、入力したピーク成分の値が「−1」であれば、符号の値を「1」とする。
なお、制御波形データは、シンボルの中間から隣のシンボルの中間までに相当するので、楽譜データSDの最下位ビットLSB及び最上位ビットMSBにそれぞれ対応する差動符号の端部の5ビット(又は、6ビット)の部分に相当する制御音が放音されない。そのため、復号した楽譜データSDの最下位ビットLSB及び最上位ビットMSBの値は、演奏装置10が送信した楽譜データSDの最下位ビットLSB及び最上位ビットMSBの値とは異なることがある。しかし、上記のように、第0ビット及び第31ビットは、ダミーデータであるので問題ない。上記のようにして、復号された楽譜データSDは、バスBUSを介してCPU26aに出力され、CPU26aは、入力した楽譜データSDに対応する画像データを、ROM26cから読み出して、表示制御回路23に出力する。これにより、復号した楽譜データSDに対応する画像が表示器22に表示される。すなわち、演奏装置10による演奏の進行に応じて、楽譜の画像が表示器22に表示される。なお、集音装置28によって集音されて増幅された音響信号を、復号回路29ではなくコンピュータ部26に入力し、CPU26aは、復号回路29を用いることなく、入力した音響信号から楽譜データSDを復号するプログラムを実行するようにしてもよい。
上記のように構成した演奏装置10によれば、演奏装置10と楽譜表示装置20とをケーブルによって接続する必要が無いので、簡単に楽譜データSDを楽譜表示装置20に送信できる。また、演奏装置10と楽譜表示装置20とをケーブルによって接続する場合に比べて、楽譜表示装置20の配置位置の制限が緩和される。また、上記従来の情報伝達装置のような変調器を搭載する必要が無いので、コストダウンできる。また、複数の制御波形データを組み合わせることにより、任意の楽譜データSDに対応する制御音を生成することができるので、値の異なる楽譜データSDごとに搬送波を変調した制御音全体の波形データをそれぞれ記憶しておく場合に比べて、波形メモリWMの容量を大幅に節約できる。また、制御波形データは、差動符号の切り替わり部分がデータの中央に位置する基本波形データからなるようにした。したがって、前記切り替わり部分が制御波形データの末尾に位置する場合とは異なり、前記切り替わり部分に対応する制御音の区間が不連続になることがない。これにより、楽譜表示装置20における楽譜データSDの復号の精度を向上させることができる。
また、発音チャンネルCH31のループ機能を用いて、楽譜データSDを構成する隣り合う2つのシンボルにそれぞれ対応する複数の制御波形データを連続して読み出すようにした。これらの複数の制御波形データの発音を、1つ又は複数の発音チャンネルに割り当てて、複数の制御波形データごとに発音開始を指示する場合、1つの制御波形データの発音が終了すると同時に、次の制御波形データを割り当てた発音チャンネルに発音を開始させる必要がある。すなわち、複数の制御波形データの読み出し開始タイミングをCPU17a又は音源回路15によって調整する必要がある。しかし、上記のように構成すれば、複数の制御波形データを全体として途切れることなく、簡単かつ確実に再生できる。したがって、CPU17a、音源回路15及び制御音制御プログラムの構成を簡単にできる。また、上記のように、楽譜データSDに対応する制御音全体として途切れることが無いので、楽譜表示装置20における楽譜データSDの復号の精度を向上させることができる。また、上記のように構成した場合、制御音において、シンボルの境界付近に相当する部分に、ローパスフィルタWP3及びヒルベルト変換部WP4における処理の影響が生じる。そこで、基本波形データg1〜g8をシンボル(差動符号)の境界を中心として取り出すようにした。したがって、送信する楽譜データSDのシンボルの各境界に相当する部分において、広帯域に亘る雑音が発生することを防止できるので、演奏を妨げることが無い。
また、演奏装置10が制御モードに設定されているとき、制御音を生成する発音チャンネルCH31の音量を一定にした。すなわち、ユーザがマスターボリューム操作子を操作しても、楽音のパートの音量を変化させるだけで、制御音の音量を最大音量に固定するようにした。また、制御音の音程が元ピッチのままであるように、発音チャンネルCH31のアドレス発生回路ADR及び補間回路SPIを設定した。したがって、楽譜表示装置20における楽譜データSDの復号の精度を一定に保つことができる。なお、制御音の周波数帯域は、18kHzを中心とした高く、かつ狭い帯域であるので、音量を最大音量に固定しても、ユーザは、制御音の発生をほとんど認識できない。したがって、演奏を妨げることが無い。
また、制御音を左側のスピーカのみから発生するようにした。したがって、複数のスピーカから同時に制御音を発生した場合に発生する複数の制御音同士の干渉を防止することができる。これにより、楽譜表示装置20による楽譜データSDの復号の精度が低下することを防止できる。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
例えば、上記実施形態においては、発音チャンネルCH31のループ機能を用いて、複数の制御波形データを途切れることなく連続的に読み出して再生するようにした。しかし、制御音に限られず、発音チャンネルCH1〜CH30のループ機能を用いて、複数の楽音波形データを途切れることなく連続的に読み出して再生するようにしてもよい。これによれば、連続的に読み出す複数の楽音波形データの順列を変更することにより、多様な音色の楽音を発生させることができる。また、これらの音色の楽音波形データを全体として波形メモリWMにそれぞれ記憶しておく場合に比べて、波形メモリWMの容量を大幅に節約することができる。
また、上記実施形態においては、曲データ中に、楽譜データSDを楽譜イベントデータとして埋め込んでおき、この楽譜イベントデータを検出したとき、制御音生成処理を実行するようにした。しかし、パネル操作子12のうちのいずれかの操作子に、楽譜のページを変更する機能を割り当てておき、前記操作子が操作されたことを検出したとき、制御音生成処理を実行するようにしてもよい。
また、上記実施形態においては、ステップS52及びステップS54を実行して、処理対象のシンボルを選択するごとに、対応する制御波形データを選択するようにしたが、ステップS46による発音開始指示の前に、楽譜データSDに対応する制御波形データの順列を決定するようにしておいてもよい。そして、ステップS52及びステップS54に代えて、前記予め決定した順列に従って、制御波形データの先頭アドレス、末尾アドレス、ループ開始アドレス及びループ終端アドレスを楽音パラメータ入出力回路15bに書き込むようにしてもよい。この場合、所定の楽譜データSDと制御波形データの順列との関係を表わしたテーブルを記憶しておき、このテーブルに従って、制御波形データの順列を決定するようにしてもよい。これによれば、制御音生成プログラムにおける、処理対象シンボルを選択するごとに、前記選択したシンボルに対応する制御波形データを選択する必要が無いので、制御音生成プログラムを簡単にできる。
また、上記実施形態においては、ユーザがマスターボリューム操作子を操作しても、楽音のパートの音量を変化させるだけで、制御音の音量を最大音量に固定するようにした。しかし、制御音の音量をマスターボリューム操作子の操作に連動させてもよい。この場合、楽音のパートの音量の低下に比べて、制御音の音量の低下が小さくなるように構成すればよい。
また、例えば、楽音の周波数成分のうち、制御音の周波数帯域に含まれる周波数成分の音量が、制御音の音量よりも十分小さくなるように、楽音を発生する発音チャンネルのフィルタ回路FLTのカットオフ周波数を調整してもよい。また、楽音をサンプリングするときに、制御音の周波数帯域に含まれる周波数成分の音量を十分小さくしておいてもよい。例えば、楽音の周波数成分のうち制御音の周波数帯域に含まれる周波数成分の音量と、制御音の音量との差を10dB以上にするとよい。また、楽音の周波数帯域が制御音の周波数帯域に重ならないように、楽音を発生する発音チャンネルのフィルタ回路FLTのカットオフ周波数を調整してもよい。また、楽音をサンプリングするときに、制御音の周波数帯域に含まれる周波数成分を予め除去しておいてもよい。これによれば、楽譜表示装置20における楽譜データSDの復号の精度をさらに向上させることができる。
また、例えば、図19A及び図19Bに示すように、基本波形データg1〜g8を2つずつ組み合わせた、制御波形データG14,G16,・・・,G23,G24,・・・・・・,G84,G87を波形メモリWMに記憶しておいてもよい。基本波形データg1〜g8を2つずつ組み合わせることにより、最大で56種類の制御波形データを構成することができる。しかし、連続することがありえない基本波形データを組み合わせて構成される制御波形データは不要であるので、図20に丸印で示した、28種類の制御波形データを波形メモリWMに記憶しておけばよい。それぞれの制御波形データは、先頭に共通の長さの無音部分を有している。ただし、上記実施形態と同様に、この無音部分を設けなくてもよい。
この場合、図15の制御音生成プログラムに代えて、図21の制御音生成プログラムを実行する。すなわち、CPU17aは、ステップS70にて制御音生成処理を開始すると、ステップS72にて、楽譜データSDの各シンボルの値の順列に応じて、制御波形データの順列を決定する。図22に示す例において、楽譜データSDの最下位ビットLSB側から最上位ビットMSB側へ向かうシンボルの値の順列が「0101・・・」であるとする。この場合、CPU17aは、まず、楽譜データSDの第0ビットと第1ビットの値に対応する制御波形データG41を第1の制御波形データとして選択する。すなわち、制御波形データG41を構成する、基本波形データg4の後半部と基本波形データg1の前半部とが、楽譜データSDの第0ビットの値に対応している。また、基本波形データg1の後半部と、次に説明する第2の制御波形データを構成する基本波形データg8の前半部とが、楽譜データSDの第1ビットの値に対応している。
つぎに、CPU17aは、楽譜データSDの第1ビット及び第2ビットの値、並びに第1の制御波形データに対応する制御波形データG81を第2の制御波形データとして選択する。すなわち、制御波形データG81は、第1の制御波形データと同様に後段部が基本波形データg1により構成されている。また、制御波形データG81を構成する基本波形データg8の前半部は、基本波形データg1の後半部に対応している。また、基本波形データg8の後半部と、次に説明する第3の制御波形データを構成する基本波形データg3の前半部分とが、楽譜データSDの第2ビットの値に対応している。
つぎに、CPU17aは、楽譜データSDの第2ビット及び第3ビットの値、並びに第2の制御波形データに対応する制御波形データG83を第3の制御波形データとして選択する。すなわち、制御波形データG83は、第2の制御波形データと同様に前段部が基本波形データg8により構成されている。また、制御波形データG83を構成する基本波形データg3の後半部は、楽譜データSDの第3ビットの値に対応している。
楽譜データSDの容量は、4バイト(32ビット)であるが、CPU17aは、第3ビットよりも上位に位置する隣り合う2つのシンボルに対応する第4の制御波形データ〜第32の制御波形データについても、上記の第0ビット〜第3ビットの場合と同様にして選択する。すなわち、次の4つの条件を満たすように制御波形データを選択する。第1の条件は、楽譜データの対象のシンボルに対応した制御波形データであることである。第2の条件は、偶数番目の制御波形データの後段部は、1つ前の奇数番目の制御波形データの後段部と同じ基本波形データで構成され、奇数番目の制御波形データの前段部は、1つ前の偶数番目の制御波形データの前段部と同じ基本波形データで構成されていることである。第3の条件は、偶数番目の制御波形データの後段部の基本波形データの後半部と、その制御波形データの前段部を構成する基本波形データの前半部は、同一の差動符号に対応していることである。第4の条件は、奇数番目の制御波形データの前段部の基本波形データの後半部と、その制御波形データの後段部の基本波形データの前半部は、同一の差動符号に対応していることである。
つぎに、制御波形データの読み出しについて説明する。まず、CPU17aは、ステップS74にて、処理中の制御波形データを識別するための制御波形カウンタnを「1」に初期化する。つぎに、CPU17aは、ステップS76にて、第1の制御波形データの各種アドレスを楽音パラメータ入出力回路15bにおける発音チャンネルCH31の処理用レジスタに書き込む。図22の例においては、制御波形データG41の各種アドレスを楽音パラメータ入出力回路15bにおける発音チャンネルCH31の処理用レジスタに書き込む。なお、ループ先頭アドレスは、無音部分の終端に対応するアドレスである。つぎに、CPU17aは、ステップS78にて、第1の制御波形データを用いたディジタル音信号の生成開始を発音チャンネルCH31に指示して、制御音の発音開始を指示する。
つぎに、CPU17aは、ステップS80にて、読み出しアドレスが、第nの制御波形データのループ中央アドレス(制御波形データを構成する2つの基本波形データのうちの後段部の基本波形データの先頭アドレス)を超えているか否かを判定する。読み出しアドレスが、第nの制御波形データのループ中央アドレスを超えていなければ、CPU17aは、「No」と判定して、再びステップS80を実行する。一方、読み出しアドレスが、第nの制御波形データのループ中央アドレスを超えていれば、CPU17aは、「Yes」と判定して、ステップS82にて、制御波形カウンタnをインクリメントする。最初、制御波形カウンタnは、「1」に初期化されているから、第1の制御波形データである制御波形データG41のループ中央アドレスを超えていれば、制御波形データを「2」に設定する。
つぎに、CPU17aは、ステップS84にて、第nの制御波形データの各種アドレスを楽音パラメータ入出力回路15bにおける発音チャンネルCH31の処理用レジスタに書き込む。ループ先頭アドレスは、第nの制御波形データの前段部を構成する基本波形データの先頭アドレスである。ループ終端アドレスは、第nの制御波形データの末尾アドレスである。発音チャンネルCH31のアドレス発生回路ADRは、第nの制御波形データの先頭アドレスにオフセットアドレスを加算したアドレスを読み出しアドレスとして算出する。このとき、オフセットアドレスは、上記ステップS84の実行によっては変化しない。上記のように、偶数番目の制御波形データとその1つ前の奇数番目の制御波形データは、後段部が同じ基本波形データから構成されていて、かつステップS84による先頭アドレスの変更前後において、オフセットアドレスが変化しないため、アドレス発生回路ADRは、同一の基本波形データの読み出しを継続することができる。
例えば、図22の例においては、第1の制御波形データ及び第2の制御波形データの後段部は、基本波形データg1から構成されており、アドレス発生回路ADRは、ステップS84の実行前後において、基本波形データg1の読み出しを継続することができる。そして、アドレス発生回路ADRは、第nの制御波形データにおけるループ終端アドレスまで読み出しアドレスを進めると、次のサンプリング周期における読み出しアドレスを、ループ開始アドレスに設定する。すなわち、オフセットアドレスを先頭アドレスとループ開始アドレスとの差に設定する。そして、第nの制御波形データの前段部の基本波形データの読み出しを開始する。図22の例においては、制御波形データG81におけるループ終端アドレスまで読み出しアドレスを進めると、次のサンプリング周期における読み出しアドレスを、制御波形データG81の前段部を構成する基本波形データg8の先頭アドレスに設定する。
つぎに、CPU17aは、ステップS86にて、読み出しアドレスが、末尾アドレスからループ開始アドレスに遷移したか否かを判定する。未だ、読み出しアドレスが末尾アドレスからループ開始アドレスに遷移していなければ、CPU17aは、「No」と判定して、再びステップS86を実行する。
一方、読み出しアドレスが末尾アドレスからループ開始アドレスに遷移していれば、CPU17aは「Yes」と判定して、ステップS88にて、制御波形カウンタnをインクリメントする。図22の例において、読み出しアドレスが、第2の制御波形データの末尾アドレスに到達して、第2の制御波形データの前段部を構成する基本波形データg8の先頭アドレスに遷移していれば、制御波形カウンタnを「3」に設定する。そして、CPU17aは、ステップS90にて、第nの制御波形データの各種アドレスを楽音パラメータ入出力回路15bの処理用レジスタに書き込む。この場合、ループ先頭アドレスは、第nの制御波形データの前段部を構成する基本波形データの先頭アドレスであり、ループ終端アドレスは、第nの制御波形データの末尾アドレスである。
発音チャンネルCH31のアドレス発生回路ADRは、第nの制御波形データの先頭アドレスにオフセットアドレスを加算したアドレスを読み出しアドレスとして設定する。この場合も、オフセットアドレスは、上記ステップS90の実行によっては変化しない。上記のように、奇数番目の制御波形データと、その1つ前の偶数番目の制御波形データは、前段部が同じ基本波形データから構成されていて、かつステップS80による先頭アドレスの変更前後において、オフセットアドレスが変化しないため、アドレス発生回路ADRは、同一の基本波形データの読み出しを継続することができる。例えば、図22の例においては、第2の制御波形データ及び第3の制御波形データの前段部は、基本波形データg8から構成されており、アドレス発生回路ADRは、ステップS90の実行前後において、基本波形データg8の読み出しを継続することができる。
つぎに、CPU17aは、ステップS92にて、制御波形カウンタnの値が「32」であるか否かを判定することにより、楽譜データSDを構成する32ビット分の制御音を生成するための指示を終了したか否かを判定する。制御波形カウンタnの値が「32」とは異なっていれば、CPU17aは「No」と判定してステップS80に処理を進める。一方、制御波形カウンタnの値が「32」であれば、CPU17aは、「Yes」と判定して、ステップS94にて、読み出しアドレスが第nの制御波形データの末尾アドレスに到達したか否か判定する。未だ、読み出しアドレスが第nの制御波形データの末尾アドレスに到達していないときには、CPU17aは、「No」と判定して再びステップS94を実行する。一方、読み出しアドレスが第nの制御波形データの末尾アドレスに到達したときには、CPU17aは「Yes」と判定して、ステップS96にて、発音チャンネルCH31にディジタル音信号の生成の停止を指示して、制御音の生成を停止させ、ステップS98にて、制御音生成処理を終了して、自動演奏処理に戻る。
これによれば、上記実施形態とは異なり、予約用レジスタが不要であるので、楽音パラメータ入出力回路15bの構成を簡単にできる。
また、例えば、図23A及び図23Bに示すように、基本波形データg1〜g8の前部に基本波形データg1〜g8と同じ長さの無音部分をそれぞれ設け、さらにその前部に短い無音部分を設けた制御波形データG01〜G08及び基本波形データg1〜g8の後部に基本波形データg1〜g8と同じ長さの無音部分をそれぞれ設け、さらに基本波形データg1〜g8の前部に短い無音部分を設けた制御波形データG10〜G80を波形メモリWMに記憶しておいてもよい。制御波形データG01〜G08及び制御波形データG10〜G80の先頭部分に設けた短い無音部分の長さは共通であるが、上記実施形態と同様に、この短い無音部分を設けなくてもよい。
なお、この場合、波形メモリWMには、基本波形データg1〜g8と、無音部分とを交互に連続するアドレスに配置している。この無音部分の長さは、基本波形データと同じ長さの無音部分と、前記先頭に設けた短い無音部分を足した長さである。そして、無音部分が基本波形データg1〜g8の前部に配置されるように先頭アドレス及び末尾アドレスを指定することにより、制御波形データG01〜G08のうちの1つの制御波形データを選択する。また、無音部分が基本波形データg1〜g8の前部及び後部に配置されるように先頭アドレス及び末尾アドレスを指定することにより、制御波形データG10〜G80のうちの1つの制御波形データを選択する。
この場合、上記実施形態及びその変形例とは異なり、制御音の生成のために、発音チャンネルCH30と発音チャンネルCH31が用いられる。すなわち、演奏装置10が、楽譜表示装置20を制御する制御モードに設定されているときは、発音チャンネルCH30及び発音チャンネルCH31は、制御音のディジタル音信号を生成する発音チャンネルとして設定され、発音チャンネルCH30及び発音チャンネルCH31から出力されたディジタル音信号は、エフェクト処理回路15a2には出力されず、音量調整回路15a3へのみ出力される。また、上記実施形態と同様に、制御音用の音量調整回路15a3に供給される音量設定パラメータの値は、固定値(例えば、最大値「127」)である。また、制御音用のパン調整回路15a4に供給されるパン設定パラメータの値も固定値(例えば、左側スピーカのみから出力する設定値)である。
また、この場合、CPU17aは、図15の制御音生成プログラムに代えて、図24の制御音生成プログラムを実行する。CPU17aは、ステップS100にて制御音生成処理を開始すると、ステップS102にて、楽譜データSDの各シンボルの値の順列に応じて、制御波形データの順列を決定する。図25に示す例においては、楽譜データSDの最下位ビットLSB側から最上位ビットMSB側へ向かうシンボルの値の順列が「0101・・・」であるとする。この場合、CPU17aは、まず、楽譜データSDの第0ビットと第1ビットの値に対応する制御波形データG40を第1の制御波形データとして選択し、制御波形データG01を第2の波形データとして選択する。第1の制御波形データは、発音チャンネルCH30によって読み出され、第2の制御波形データは、発音チャンネルCH31によって読み出される。制御波形データG40を構成する基本波形データg4の後半部と、制御波形データG01を構成する基本波形データg1の前半部とが、楽譜データSDの第0ビットの値に対応している。また、基本波形データg1の後半部と、次に説明する第3の制御波形データを構成する基本波形データg8の前半部とが、楽譜データSDの第1ビットの値に対応している。
つぎに、CPU17aは、楽譜データSDの第1ビット及び第2ビットの値、並びに第1の制御波形データに対応する制御波形データG80を第3の制御波形データとして選択し、制御波形データG03を第4の制御波形データとして選択する。第3の制御波形データは、発音チャンネルCH30によって読み出され、第4の制御波形データは、発音チャンネルCH31によって読み出される。制御波形データG80を構成する基本波形データg8の後半部と、制御波形データG03を構成する基本波形データg3の前半部とが、楽譜データSDの第2ビットの値に対応している。
楽譜データSDは4バイト(32ビット)であるが、第3ビット以上の隣り合う2つのシンボルに対応する第5の制御波形データ〜第32の制御波形データについても、上記の第0ビット〜第2ビットの場合と同様にして選択する。すなわち、奇数番目の制御波形データの後段部は無音部分であり、偶数番目の制御波形データの前段部は無音部分である。そして、奇数番目の制御波形データの前段部を構成する基本波形データの後半部と、その1つ後の偶数番目の制御波形データの後段部を構成する基本波形データの前半部とが、楽譜データSDの1つのシンボルに対応し、この偶数番目の制御波形データの後段部を構成する基本波形データの後半部と、さらに1つ後の奇数番目の制御波形データの前半部とが、楽譜データSDの1つのシンボルに対応するように、制御波形データを選択する。
つぎに、CPU17aは、ステップS104にて、発音チャンネルCH30において処理中の制御波形データを識別するための制御波形カウンタnを「1」に初期化し、発音チャンネルCH31において処理中の制御波形データを識別するための制御波形カウンタmを「2」に初期化する。つぎに、CPU17aは、ステップS106にて、第1の制御波形データの各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH30の処理用レジスタに書き込む。なお、ループ先頭アドレスは、第1の制御波形データを構成する基本波形データの先頭アドレスである。ループ終端アドレスは、末尾アドレスである。図25の例においては、制御波形データG40の各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH30の処理用レジスタに書き込む。
つぎに、CPU17aは、ステップS108にて、第2の制御波形データの各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH31の処理用レジスタに書き込む。なお、ループ先頭アドレスは、第2の制御波形データを構成する基本波形データの前部に設けられた、基本波形データと同じ長さの無音部分の先頭に対応するアドレスである。ループ終端アドレスは、末尾アドレスである。図25の例においては、制御波形データG01の各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH31の処理用レジスタに書き込む。
つぎに、CPU17aは、ステップS110にて、第1の制御波形データ及び第2の制御波形データを用いたディジタル音信号の生成開始を発音チャンネルCH30及び発音チャンネルCH31にそれぞれ指示して、両チャンネルに制御音の発音を同時に開始させる。第2の制御波形データの前段は無音部分なので、最初、発音チャンネルCH30のみが発音する。
つぎに、CPU17aは、ステップS112にて、発音チャンネルCH30の読み出しアドレスが、第nの制御波形データのループ中央アドレス(制御波形データを構成する基本波形データの後部に付加された無音部分の先頭に対応するアドレス)を超えているか否かを判定する。発音チャンネルCH30の読み出しアドレスが、第nの制御波形データのループ中央アドレスを超えていなければ、CPU17aは、再びステップS112を実行する。一方、発音チャンネルCH30の読み出しアドレスが、第nの制御波形データのループ中央アドレスを超えていれば、CPU17aは、ステップS114にて、制御波形カウンタnに「2」を加算する。
つぎに、CPU17aは、ステップS116にて、第nの制御波形データの各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH30の処理用レジスタに書き込む。この場合、ループ先頭アドレスは、第nの制御波形データを構成する基本波形データの先頭アドレスである。ループ終端アドレスは、末尾アドレスである。最初、制御波形カウンタnは「1」に初期化されているので、読み出しアドレスが、第1の制御波形データのループ中央アドレスを超えていれば、ステップS114にて、制御波形カウンタnを「3」に設定し、ステップS116にて、第3の制御波形データの各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH30の処理用レジスタに書き込む。図25の例においては、読み出しアドレスが、制御波形データG40のループ中央アドレスを超えていれば、制御波形データG80の各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH30の処理用レジスタに書き込む。
発音チャンネルCH30のアドレス発生回路ADRは、先頭アドレスにオフセットアドレスを加算したアドレスを読み出しアドレスとして算出する。このとき、オフセットアドレスは、上記ステップS116の実行によっては変化しない。上記のように、奇数番目の制御波形データは、後段部が無音部分から構成されていて、かつステップS116による先頭アドレスの変更前後において、オフセットアドレスが変化しないため、発音チャンネルCH30のアドレス発生回路ADRは、ステップS116の実行直後において、無音部分の波形データの読み出しを継続する。図25の例においては、制御波形データG40及び制御波形データG80の後段部は、無音部分から構成されており、発音チャンネルCH30のアドレス発生回路ADRは、ステップS116の初回(n=3)の実行において、制御波形データG40の無音部分の読み出しから制御波形データG80の無音部分の読み出しに切り替える。
一方、発音チャンネルCH30の読み出しアドレスが、第nの制御波形データのループ中央アドレスを超えると、発音チャンネルCH31の読み出しアドレスも、第mの制御波形データのループ中央アドレスを超える。これにより、発音チャンネルCH31のアドレス発生回路ADRは、第mの制御波形データ後段を構成する基本波形データの読み出しを開始する。図25の例において、ステップS116の初回(m=2)の実行後、発音チャンネルCH31のアドレス発生回路ADRは、第2の制御波形データの後段部を構成する基本波形データg1の読み出しを開始する。
発音チャンネルCH30のアドレス発生回路ADRは、第n(=m+1)の制御波形データにおけるループ終端アドレスまで読み出しアドレスを進めると、次のサンプリング周期における読み出しアドレスをループ開始アドレスに設定する。すなわち、オフセットアドレスを先頭アドレスとループ開始アドレスとの差に設定する。そして、第nの制御波形データの前段部を構成する基本波形データの読み出しを開始する。図25における制御波形カウンタnの値が「3」である場合において、読み出しアドレスを制御波形データG80の末尾まで進めると、次のサンプリング周期における読み出しアドレスを、基本波形データg8の先頭アドレスに設定する。一方、発音チャンネルCH31のアドレス発生回路ADRも、第mの制御波形データにおけるループ終端アドレスまで読み出しアドレスを進めると、次のサンプリング周期における読み出しアドレスをループ開始アドレスに設定する。そして、第mの制御波形データの前段部を構成する無音部分の読み出しを開始する。したがって、発音チャンネルCH30のみが発音する。図25における制御波形カウンタmの値が「2」である場合において、読み出しアドレスを制御波形データG01の末尾まで進めると、次のサンプリング周期における読み出しアドレスを、基本波形データg1の前部に設けられた、基本波形データg1と同じ長さの無音部分の先頭に対応するアドレスに設定する。
つぎに、CPU17aは、ステップS118にて、発音チャンネルCH30及び発音チャンネルCH31の読み出しアドレスが、ループ終端アドレスからループ開始アドレスに遷移したか否かを判定する。未だ、読み出しアドレスがループ終端アドレスからループ開始アドレスに遷移していなければ、CPU17aは、「No」と判定して、再びステップS118を実行する。
一方、発音チャンネルCH30及び発音チャンネルCH31の読み出しアドレスがループ終端アドレスからループ開始アドレスに遷移していれば、CPU17aは「Yes」と判定して、ステップS120にて、制御波形カウンタmに「2」を加算する。そして、CPU17aは、ステップS122にて、第mの制御波形データの各種アドレスを発音チャンネルCH31の楽音パラメータ入出力回路15bの処理用レジスタに書き込む。この場合、ループ先頭アドレスは、先頭に付加された無音部分の終端のアドレスであり、ループ終端アドレスは、第mの制御波形データの末尾アドレスである。最初、制御波形カウンタmは「2」に初期化されているので、読み出しアドレスがループ終端アドレスからループ開始アドレスに遷移していれば、ステップS120にて、制御波形カウンタmを「4」に設定し、ステップS122にて、第4の制御波形データの各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH31の処理用レジスタに書き込む。図25の例においては、読み出しアドレスが制御波形データG01のループ終端アドレスからループ開始アドレスに遷移していれば、制御波形データG03の各種アドレスを楽音パラメータ入出力回路15bの発音チャンネルCH31の処理用レジスタに書き込む。
発音チャンネルCH31のアドレス発生回路ADRは、第mの制御波形データの先頭アドレスにオフセットアドレスを加算したアドレスを読み出しアドレスとして設定する。この場合も、オフセットアドレスは、上記ステップS122の実行によっては変化しない。上記のように、偶数番目の制御波形データは、前段部が無音部分から構成されていて、かつステップS122による先頭アドレスの変更前後において、オフセットアドレスが変化しないため、発音チャンネルCH31のアドレス発生回路ADRは、第m(=n+1)の制御波形データの無音部分を読み出す。図25の例においては、制御波形データG01及び制御波形データG03の前段部は、無音部分から構成されており、発音チャンネルCH31のアドレス発生回路ADRは、ステップS122の初回(m=4)の実行において、制御波形データG01の無音部分の読み出しから制御波形データG03の無音部分の読み出しに切り替える。このとき、発音チャンネルCH30のアドレス発生回路ADRは、第3の制御波形データを構成する基本波形データg8の読み出しを開始している。
つぎに、CPU17aは、ステップS124にて、制御波形カウンタnの値が「32」であるか否かを判定することにより、楽譜データSDを構成する32ビット分の制御音を生成するための指示を終了したか否かを判定する。制御波形カウンタnの値が「32」とは異なっていれば、CPU17aは「No」と判定してステップS112に処理を進める。一方、制御波形カウンタnの値が「32」であれば、CPU17aは、「Yes」と判定して、ステップS126にて、読み出しアドレスが第nの制御波形データの末尾アドレスに到達したか否か判定する。未だ、読み出しアドレスが第nの制御波形データの末尾アドレスに到達していないときには、CPU17aは、「No」と判定して再びステップS126を実行する。一方、読み出しアドレスが第nの制御波形データの末尾アドレスに到達したときには、CPU17aは「Yes」と判定して、ステップS128にて、発音チャンネルCH31にディジタル音信号の生成の停止を指示して、制御音の生成を停止させ、ステップS130にて、制御音生成処理を終了して、自動演奏処理に戻る。
上記のように構成しても、図19A乃至図22を用いて説明した例と同様に、予約レジスタが不要なので、楽音パラメータ入出力回路15bの構成を簡単にできる。
なお、上記実施形態及びその変形例において、制御波形データG1〜G8のデータ長は同一なので、処理用レジスタ及び予約用レジスタには、末尾アドレス(すなわち、ループ終端アドレス)を書き込むこと無く、先頭アドレスのみを書き込んでおいて、先頭アドレスに、制御波形データG1〜G8のデータ長に応じたオフセットアドレスを加算することにより、末尾アドレスを算出するようにしてもよい。また、各制御波形データG1〜G8の先頭に設けられた無音部分のデータ長は同一なので、先頭アドレスに、無音部分のデータ長に応じたオフセットアドレスを加算することにより、ループ先頭アドレスを算出するようにしてもよい。
また、楽譜データSDの形式は、上記実施形態及びその変形例に限られず、どのような形式であってもよい。また、演奏装置10から放音する制御音によって制御する制御対象は、楽譜表示装置20に限られず、演奏装置10とともに用いられる外部機器であればよい。
また、上記実施形態及びその変形例においては、発音チャンネルCH30及び発音チャンネルCH31を制御音のディジタル音信号を生成する発音チャンネルとして設定した。しかし、これに限られず、他の発音チャンネルを制御音のディジタル音信号を生成する発音チャンネルとして設定してもよい。また、単独モードにおいて、幾つかの発音チャンネルを用いて楽音のディジタル音信号を生成している最中に制御モードに移行した場合には、楽音の生成に使用されていない発音チャンネル、生成中の楽音のディジタル音信号の音量が十分に小さい発音チャンネルをCPU17aによって選択し、前記選択した発音チャンネルを制御音のディジタル音信号を生成する発音チャンネルとして設定してもよい。