(57)【特許請求の範囲】
【請求項１】
音源用のデータを記憶するメモリと、
時分割チャンネル処理で動作し、非同期で動作する処理装置からの楽音生成に関するデータに基づいて１又は複数チャンネル分の前記音源用のデータを前記メモリから読み出して所望の楽音信号を生成する楽音生成手段と、
この楽音生成手段が楽音信号を生成している時に、前記時分割チャンネル中の該楽音信号生成に使用しているチャンネルの楽音信号生成動作を停止させることなく、該時分割チャンネル中の他の少なくとも１チャンネルを用いて前記処理装置から与えられるデータを前記メモリに書き込んだり又は前記メモリ内の前記データを読み出して前記処理装置に供給するアクセス手段と
を備えたことを特徴とする波形メモリ音源。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は波形メモリに記憶されている波形データを読み出すことによって楽音波形を発生する波形メモリ音源に関する。
【０００２】
【従来の技術】
従来の波形メモリ音源は、発生すべき楽音の音高に対応する位相データに基づいて楽音波形のサンプル値データを記憶している波形メモリから波形データを順次読み出すことによって、楽音信号を発生している。
このような波形メモリを搭載した電子楽器においては、複数の楽音信号を同時に発音するために、時分割チャンネル処理という手法を用いている。この時分割チャンネル処理とは、ある一定時間を複数にタイムスロットに分割し、そのタイムスロット毎に波形データを読み出し、その一定時間内の複数のタイムスロットで読み出された波形データを累算することによって、波形メモリからは一定時間毎に複数の波形データが同時に読み出されるようにすることをいう。
【０００３】
【発明が解決しようとする課題】
従来の時分割チャンネル処理においては、ある一定時間が可能な限り多くのタイムスロットに分割されており、また、一般には波形メモリ音源はＣＰＵの動作クロックとは非同期で動作しているために、波形メモリ音源が時分割チャンネル発音処理を行っている場合には、ＣＰＵによる波形メモリへのアクセスを行うことはできなかった。
【０００４】
本発明は上述の点に鑑みてなされたものであり、波形メモリ音源が時分割チャンネル発音処理を行っている場合でも、外部のマイクロプロセッサすなわち処理装置によるメモリに対するアクセスを行うことのできる波形メモリ音源を提供することを目的とする。
【０００５】
【課題を解決するための手段】
この発明に係る波形メモリ音源は、音源用のデータを記憶するメモリと、時分割チャンネル処理で動作し、非同期で動作する処理装置からの楽音生成に関するデータに基づいて１又は複数チャンネル分の前記音源用のデータを前記メモリから読み出して所望の楽音信号を生成する楽音生成手段と、この楽音生成手段が楽音信号を生成している時に、前記時分割チャンネル中の該楽音信号生成に使用しているチャンネルの楽音信号生成動作を停止させることなく、該時分割チャンネル中の他の少なくとも１チャンネルを用いて前記処理装置から与えられるデータを前記メモリに書き込んだり又は前記メモリ内の前記データを読み出して前記処理装置に供給するアクセス手段とを備えたものである。
【０００６】
【作用】
この発明に従う波形メモリ音源によれば、楽音生成手段は、時分割チャンネル処理で動作し、楽音生成に関するデータに基づいて１又は複数チャンネル分の楽音波形データをメモリから読み出して所望の楽音信号を生成する。楽音生成に関するデータは、楽音信号の生成動作とは非同期で動作する処理装置すなわちマイクロプロセッサから供給される。アクセス手段は、楽音生成手段が楽音信号を生成している時に時分割チャンネルの少なくとも１チャンネルを用いてマイクロプロセッサからの楽音波形データをメモリに書き込んだり又はメモリ内の楽音波形データを読み出してマイクロプロセッサに供給するので、時分割チャンネル発音処理中でもマイクロプロセッサは音源内の波形メモリに自由にアクセスすることができる。
【０００７】
【実施例】
以下、この発明の実施例を添付図面に従って詳細に説明する。
図２は、本発明の一実施例に係るサンプラータイプの波形メモリ音源を内蔵した電子楽器の全体構成を示す図である。
マイクロプロセッサユニット（ＣＰＵ）２０は、この電子楽器全体の動作を制御するものである。このＣＰＵ２０に対しては、データ及びアドレスバス２Ｊを介してＲＯＭ２１、ＲＡＭ２２、鍵盤２３、パネルスイッチ２４、パネル表示器２５、インターフェイス２６、アナログ−ディジタル変換器（ＡＤＣ）２７及び音源回路２Ａが接続されている。
【０００８】
ＲＯＭ２１はＣＰＵ２０の各種プログラムや各種データを格納するものであり、リードオンリーメモリ（ＲＯＭ）で構成されている。
ＲＡＭ２２は、ＣＰＵ２０がプログラムを実行する際に発生する各種データを一時的に記憶するものであり、ランダムアクセスメモリ（ＲＡＭ）の所定のアドレス領域がそれぞれ割り当てられ、レジスタ、フラグ、バッファ等として利用される。
【０００９】
鍵盤２３は、発音すべき楽音の音高を選択するための複数の鍵を備えており、各鍵の操作に応じてノートオン、ノートオフ、ベロシティ、ピッチデータ等の各種データをデータ及びアドレスバス２Ｊを介してＣＰＵ２０に出力する。鍵盤２３の代わりにコンピュータ等を接続し、所望の演奏データを入力するようにしてもよい。
【００１０】
パネルスイッチ２４は、音色、音量、効果等を選択・設定・制御するための各種操作子を含むものである。
パネル表示器２５はＣＰＵ２０の制御状態、設定データの内容等の各種の情報を液晶パネル（ＬＣＤ）等に表示するものである。
マイク２８は音声信号や楽器音等をアナログの電圧信号に変換して、ＡＤＣ２７に出力する。ＡＤＣ２７はマイク２８からのアナログの電圧信号をディジタル信号に変換して、データ及びアドレスバス２Ｊに出力する。
ハードディスク２９は数十〜数百メガバイト（ＭＢ）の記憶容量を有し、インターフェイス２６を介してデータ及びアドレスバス２Ｊに接続されている。
【００１１】
音源回路２Ａは、発生すべき楽音の音高に対応して変化する周波数データに応じて音源回路２Ａ内の波形メモリ２Ｄから楽音波形データを順次読み出すメモリ読み出し方式により、楽音信号を発生するものであり、複数のチャンネルで楽音信号の同時発生が可能であり、データ及びアドレスバス２Ｊを経由して与えられた演奏データ（ＭＩＤＩ規格に準拠したデータ等）を入力し、このデータに基づき楽音信号を発生する。なお、この実施例では、電子楽器は３２チャンネル時分割で動作し、その中の３１チャンネルを同時発音に使用し、残りの１チャンネルをＣＰＵ２０によるデータ読出書込用として使用している。
【００１２】
音源回路２Ａは、複数のチャンネルで楽音信号の同時発生が可能であり、データ及びアドレスバス２Ｊを経由して与えられた演奏データ（ピッチデータ、ノートオン、波形スタートアドレス（ＷＳＡ）、ループスタートアドレス（ＬＰＳ）、ループエンドアドレス（ＬＰＥ）、レート、レベル、その他の各種のパラメータやＭＩＤＩ規格に準拠したデータ等）を入力し、これらのデータに基づき楽音信号を発生し、サウンドシステム２Ｈに出力する。
【００１３】
音源回路２Ａは、音源Ｉ／Ｏ２Ｂ、波形発生部２Ｃ、波形メモリ２Ｄ、エンベロープ付与部２Ｅ、チャンネル累算部２Ｆ及びディジタル−アナログ変換器（ＤＡＣ）２Ｇからなる。
音源Ｉ／Ｏ２Ｂは、データ及びアドレスバス２Ｊを介してＣＰＵ２０から供給される演奏データを音源側に入力したり、音源側のデータをデータ及びアドレスバス２Ｊを介してＣＰＵ２０に出力したりする。
【００１４】
波形発生部２Ｃは、音源Ｉ／Ｏ２Ｂを介して入力される演奏データに基づいて波形メモリ２Ｄから波形データを読み出し、読み出された波形データに応じた楽音信号をエンベロープ付与部２Ｅに出力する。
波形メモリ２Ｄは、立上り部（アタック部）を構成する複数周期分のデータと、その後の持続部（ループ部）を構成する１周期分のデータとからなる波形データやマイク２８によってサンプルされた波形データ等を記憶しており、波形発生部２Ｃからのアドレス信号を入力し、このアドレス信号に応じた領域に記憶されている波形データを出力する。
【００１５】
エンベロープ付与部２Ｅは、音源Ｉ／Ｏ２Ｂを介して入力されるレート、レベル等の演奏データに基づいた形状のエンベロープを波形発生部２Ｃからの楽音信号に付加し、それをキーオンの入力に同期したタイミングでチャンネル累算部２Ｆに出力する。
チャンネル累算部２Ｆは、３２チャンネル時分割でエンベロープ付与部２Ｅから出力される各チャンネルの楽音信号を累算処理してＤＡＣ２Ｇに出力する。
【００１６】
ＤＡＣ２Ｇは、ディジタルの楽音信号をアナログの楽音信号に変換してサウンドシステム２Ｈに出力する。
音源回路２Ａから出力された楽音信号は、サウンドシステム２Ｈを介してスピーカから発音される。
【００１７】
図１は、図２の音源Ｉ／Ｏ２Ｂの詳細構成を示す図である。
この実施例では、音源Ｉ／Ｏ２Ｂは、ＣＰＵバス制御部１１、アドレスラッチ（Ａラッチ）１２、データラッチ（Ｄラッチ）１３、書込用バッファアンプ１４、読出用バッファアンプ１５、書込用デコーダ１６、書込パルス発生部１７、読出用デコーダ１８、チャンネルラッチ（ｃｈラッチ）１９、チャンネル変換部（ｃｈ変換部）１Ａ、チャンネルカウンタ（ｃｈカウンタ）１Ｂ、セレクタ１Ｃ、楽音制御レジスタ１Ｄ、波形メモリＩ／Ｏ１Ｅから構成される。
【００１８】
音源Ｉ／Ｏ２Ｂは、データ及びアドレスバスを介して下位アドレスＡＤＲ（８ビット構成）、データＤＡＴＡ（８ビット構成）、書込制御信号＊ＷＲ及び読出制御信号＊ＲＤをＣＰＵ２０から入力する。ここで、書込制御信号＊ＷＲ及び読出制御信号＊ＲＤの「＊」はローレベル“０”でイネーブルとなるアクティブローを示す。ＣＰＵ２０が出力するアドレスの中の上位アドレスは、各機器指定用アドレスとして利用されるので、この音源Ｉ／Ｏ２Ｂには、下位アドレスＡＤＲのみが入力する。
【００１９】
ＣＰＵバス制御部１１は、書込制御信号＊ＷＲがローレベル“０”の場合には、書込用バッファアンプ１４にイネーブル信号を供給し、逆に、読出制御信号＊ＲＤがローレベル“０”の場合には、読出用バッファアンプ１５にイネーブル信号を供給する。すなわち、ＣＰＵバス制御部１１は、書込用バッファアンプ１４又は読出用バッファアンプ１５のいずれか一方のみをイネーブルとするように動作する。また、ＣＰＵバス制御部１１は、書込制御信号＊ＷＲ又は読出制御信号＊ＲＤがローレベル“０”になった場合、その立下りのタイミングでアドレスラッチ１２及びデータラッチ１３にラッチパルスＬＷを出力する。
【００２０】
アドレスラッチ１２は、ＣＰＵバス制御部１１からのラッチパルスＬＷを入力することによって下位アドレスＡＤＲをラッチする。データラッチ１３は、ＣＰＵバス制御部１１からラッチパルスＬＷを入力することによってデータＤＡＴＡをそれぞれラッチする。
書込用バッファアンプ１４は、ＣＰＵバス制御部１１からのイネーブル信号の入力に応じてデータＤＡＴＡをデータラッチ１３に出力する。読出用バッファアンプ１５は、ＣＰＵバス制御部１１からのイネーブル信号の入力に応じて波形メモリＩ／Ｏからの読出データＷＤＲをデータバスＤＡＴＡに出力する。
【００２１】
書込用デコーダ１６は、書込制御信号＊ＷＲがローレベル“０”になった場合に、アドレスラッチ１２にラッチされているアドレスＡＤＲをデコードし、書込デコード信号を書込パルス発生部１７に出力する。
書込パルス発生部１７は、書込用デコーダ１６からの書込デコード信号に応じた書込パルス信号ＷＰ１を波形メモリＩ／Ｏ１Ｅの書込アドレス端子ＷＡＤに、書込パルス信号ＷＰ２を楽音制御レジスタ１Ｄに出力すると共に、ラッチパルスＬＣをチャンネルラッチ１９に出力する。すなわち、書込パルス発生部１７はアドレスラッチ１２にラッチされているアドレスＡＤＲが「０」、「１」、「３」、「４」の場合にそれぞれ、対応するＡ０、Ａ１、Ａ３及びＡ４のいずれかの書込パルス信号ＷＰ１を出力する。
【００２２】
読出用デコーダ１８は、読出制御信号＊ＲＤがローレベル“０”になった場合に、アドレスラッチ１２にラッチされているアドレスＡＤＲをデコードし、読出デコード信号ＲＰ１を波形メモリＩ／Ｏ１Ｅの読出アドレス端子ＲＡＤに出力する。すなわち、読出デコーダ１８はアドレスラッチ１２にラッチされているアドレスＡＤＲが「２」、「５」、「６」の場合にそれぞれ、対応するＡ２、Ａ５及びＡ６の読出デコード信号ＲＰ１のうちの１つを出力する。
【００２３】
チャンネルラッチ１９は、書込パルス発生部１７からラッチパルスＬＣを入力すると、それに応じてデータラッチ１３からのデータＤＡＴＡをラッチする。このデータＤＡＴＡはチャンネル選択データＣＳＤとしてチャンネル変換部１Ａに出力される。
チャンネル変換部１Ａは、アドレスラッチ１２からのアドレスＡＤＲ及びチャネルラッチ１９からのチャンネル選択データＣＳＤを入力し、それに基づいて楽音制御レジスタ１Ｄのどのチャンネルタイミング位置にデータを書き込むのか、そのチャンネル指定アドレスＣＤＡを発生する。
チャンネルカウンタ１Ｂは、０チャンネルから３１チャンネルまでを順次カウントし、そのチャンネル番号をセレクタ１Ｃに出力する。なお、チャンネルカウンタ１Ｂは、最後の３２番目の３１チャンネルに対応した１チャンネル分の期間だけハイレベル“１”をとるようなタイミング信号φ３１ｃｈを波形メモリＩ／Ｏのチャンネル端子ｃｈに出力する。
【００２４】
セレクタ１Ｃは、チャンネル変換部１Ａからのチャンネル指定アドレスＣＤＡ及びチャンネルカウンタ１Ｂからのチャンネル番号を入力し、いずれか一方を規則的なクロックに基づいて楽音制御レジスタ１Ｄに出力する。
楽音制御レジスタ１Ｄは、波形発生部２Ｃにおける波形生成動作を制御するための複数種類のデータ（音高を制御するピッチデータ、楽音の発生の開始及び終了を指示するノートオン、波形スタートアドレス（ＷＳＡ）、ループスタートアドレス（ＬＰＳ）、ループエンドアドレス（ＬＰＥ）及び、その他変調効果やタッチによる音色変化等を制御するデータ）やエンベロープ付与部における音量エンベロープ付与動作を制御するための複数種類のデータ（演算型エンベロープ発生に必要な各ステートのレートデータとレベルデータ、ノートオン及びその他のデータ）をそれぞれ各時分割チャンネルタイミングに対応した領域に格納する複数のレジスタで構成されている。ここで、セレクタ１Ｃの出力するデータは、複数時分割チャンネル分記憶された各レジスタのデータのうちの、どのチャンネルタイミングのデータをアクセスするか指示するタイミング位置を指示する指示データとして使用される。
【００２５】
音源の各時分割チャンネルにおいて、波形発生部２Ｃ及びエンベロープ付与部２Ｅでそれぞれ必要とされる上記複数種類のデータを供給するため、楽音制御レジスタ１Ｄに記憶された上記複数種類のデータは、音源の各時分割チャンネルのタイミングにおいてセレクタ１Ｃを介してチャンネルカウンタ１Ｂから供給されるチャンネル番号に応じて並列に読み出され、読み出された複数種類のデータはそれぞれ波形発生部２Ｃやエンベロープ付与部２Ｅに並列に供給される。
一方、ＣＰＵ２０からの楽音制御レジスタ１Ｄに対する書き込みは、上述したチャンネルカウンタ１Ｂによる読み出しに重ならないタイミングにおいて、セレクタ１Ｃがチャンネル変換部１Ａの出力するチャンネル指定アドレスＣＤＡを選択しつつ行われる。
【００２６】
ところで、Ａラッチ１２にラッチされたアドレスＡＤＲは８ビットであるので、このアドレスにより、「０」〜「２５５」のアドレスの指定が可能である。上述したように、書込パルス信号ＷＰ１と読出デコード信号ＲＰ１として、アドレスの「０」〜「６」が使われており、さらにチャンネルラッチ１９用のラッチパルスＬＣのアドレス「７」とすると、この楽音制御レジスタ１Ｄ中の上記複数種類のレジスタのそれぞれのアドレスとしては、それ以外の「８」〜「２５５」のアドレスが使用可能である。例えば、ノートオンがアドレス「８」、ピッチデータがアドレス「９」、アタックステートのレートデータがアドレス「１０」といった具合にアドレスが割り当てられている。
【００２７】
つまり、楽音制御レジスタ１Ｄの書き込み時、ＣＰＵ２０は、前もってチャンネルラッチ１９に書き込みを行いたい時分割チャンネルの番号を書き込み、その後に、上述したような書き込みを行う楽音制御レジスタ１Ｄ中のレジスタの種類を指定するアドレスをＡラッチ１２に供給すると共に書き込む値をＤラッチ１３に供給し、その状態で書き込み信号＊ＷＲをイネーブルにして書き込みを実行する。
この時、チャンネル変換部１Ａから楽音制御レジスタ１Ｄに対して上記指示データとして供給されているチャンネル指示アドレスＣＤＡは、Ａラッチ１２の指定するアドレスにあるレジスタのチャンネルラッチ１９に書き込まれたチャンネル番号に対応したタイミング位置を指定している。書き込み信号＊ＷＲのイネーブルで書き込み用デコーダ１６にて発生するデコード信号を受けて、書込パルス発生部１７は書込パルス信号ＷＰ２の複数信号線の中のＡラッチ１２に指定するアドレスに対応したラインに一発の書き込みパルスを発生する。この書き込みパルスに応じて、楽音制御レジスタ１Ｄの中の、Ａラッチ１２のアドレスにより指定された種類のレジスタの、チャンネルラッチ１９にラッチされたチャンネル番号に対応したタイミング位置に、Ｄラッチ１３にラッチされた値のデータが書き込まれる。
【００２８】
波形メモリＩ／Ｏ１Ｅは、チャンネルカウンタ１Ｂからのタイミング信号φ３１ｃｈをチャンネル端子ｃｈに、データラッチ１３からの書込波形データＷＤをデータ入力端子ＤＩに、書込パルス発生部１７からの書込パルス信号ＷＰ１を書込アドレス端子ＷＡＤに、読出用デコーダ１８からの読出デコード信号ＲＰ１を読出アドレス端子ＲＡＤにそれぞれ入力し、波形メモリ２Ｄから読み出された読出波形データＷＤＲ及び読出終了データＷＥＤ（但し、バスはＷＲＤと共通）をデータ出力端子ＤＯから読出用バッファアンプ１５に出力する。すなわち、波形メモリＩ／Ｏ１Ｅは、波形メモリ２Ｄに書き込むべき書込波形データＷＤを取り込み、それを所定のタイミング（チャンネルカウンタ１Ｂからタイミング信号φ３１ｃｈが出力されるタイミング）で波形メモリ２Ｄに書き込む。なお、この波形メモリＩ／Ｏの詳細構成については後述する。
【００２９】
図３は、図１の波形メモリＩ／Ｏ１Ｅの詳細構成を示す図である。
チャンネル制御レジスタ３１には、アドレスＡＤＲが「０」の場合に書込パルス発生部１７から出力される書込パルス信号Ａ０に応じてデータラッチ１３からの書込データＷＤが書き込まれ、書き込まれたデータのうち動作中信号ＵＳＥをアクセス回数検出部３５及び４連続パルス発生部３Ｅに出力すると共に、書込読出制御信号Ｗ／＊Ｒを４連続パルス発生部３Ｅ及びセレクタ３Ｈの制御端子に出力する。なお、この動作中信号ＵＳＥは図４の周波数ナンバ発生器（Ｆナンバ発生器）４１にも出力される。
【００３０】
パルス発生部３２は、アドレスＡＤＲが「６」の場合に読出デコーダ１８から出力される読出デコード信号Ａ６を入力した時点で１サンプル読出完了パルスＲＳＰをオア回路３３に出力する。
オア回路３３は、パルス発生部３２から１サンプル読出完了パルスＲＳＰとアドレスＡＤＲが「４」の場合に書込パルス発生部１７から出力される書込パルス信号Ａ４を入力し、両者の論理和出力をオア回路３Ｆ及びアクセス回数検出部３５に出力する。
【００３１】
上位ラッチ３４は、アドレスＡＤＲが「３」の場合に書込パルス発生部１７から出力される書込パルス信号Ａ３を入力した時点でデータラッチ１３からの書込波形データＷＤをラッチし、それを次のアドレスＡＤＲ「４」と共に送られてくる下位８ビット構成の書込波形データＷＤと並列にセレクタ３ＨのＢ端子に出力する。すなわち、上位ラッチ３４は８ビット構成の書込波形データＷＤを１６ビット構成に拡張する。
【００３２】
アクセス回数検出部３５は、アドレスＡＤＲが「１」の場合に書込パルス発生部１７から出力される書込パルス信号（以下「スタート信号」とする）Ａ１と、チャンネル制御レジスタ３１からの動作中信号ＵＳＥと、オア回路３３からの論理和信号を入力する。アクセス回数検出部３５はスタート信号Ａ１によりクリアされ、その後オア回路３３の出力する信号をカウントして、ＣＰＵ２０からのアクセスが４回あったかどうか、すなわちＣＰＵ２０からの書き込みの場合、４個のラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍにそれぞれ書込波形データＷＤが転送されたかどうか、又、ＣＰＵ２０による読出しの場合は、同４個のラッチに書き込まれていた４つの１６ビットデータが読み出されたかどうかを検出し、その検出信号をオア回路３６に出力する。
【００３３】
オア回路３６は、スタート信号Ａ１とアクセス回数検出部３５からの検出信号との論理和信号をフリップフロップ回路３７のセット端子Ｓに出力する。
フリップフロップ回路３７は、オア回路３６からの論理和信号をセット端子Ｓに、ディレイ３Ｃからの遅延信号をリセット端子Ｒに入力し、セット出力をアンド回路３８に出力し、その反転出力をゲート回路３Ｐに出力する。
ゲート回路３Ｐは、アドレスＡＤＲが「２」の場合に読出デコーダ１８から出力される読出デコード信号Ａ２を入力した時点でフリップフロップ回路３７の反転出力を読出終了データＷＥＤをデータ出力端子ＤＯから読出用バッファアンプ１５を介してＣＰＵ２０に出力する。
【００３４】
アンド回路３８は、チャンネルカウンタ１Ｂからのタイミング信号φ３１ｃｈとフリップフロップ回路３７のセット出力との論理積信号をディレイ３９に出力する。
ディレイ３９は、アンド回路３８からの論理積信号を１チャンネル期間だけ遅延し、それをタイミング信号ＴＳとして波形発生部２Ｃ及びディレイ３Ａに出力する。
ディレイ３Ａは、ディレイ３９からのタイミング信号を１チャンネル期間だけ遅延し、それを４連続パルス発生部３Ｅ及びディレイ３Ｃに出力する。
ディレイ３Ｃは、ディレイ３Ａからの遅延信号をからに１チャンネル期間だけ遅延し、それをフリップフロップ回路３７のリセット端子Ｒに出力する。
【００３５】
４連続パルス発生部３Ｅは、チャンネル制御レジスタ３１からの動作中信号ＵＳＥ及び書込読出制御信号Ｗ／＊Ｒ、並びにディレイ３Ａからの遅延信号を入力し、この遅延信号がハイレベル“１”の場合に、第３１チャンネルのタイムスロットの期間で連続する４つのパルスを発生し、それをオア回路３Ｆに出力すると共にそれを書込信号ＷＳとして波形メモリ２Ｄに出力する。
【００３６】
オア回路３Ｆは、オア回路３３からの論理和信号と４連続パルス発生部３Ｅからの４連続パルスを入力し、両者の論理和信号を送りパルス発生器３Ｇに出力する。
送りパルス発生器３Ｇは、オア回路３Ｆからの論理和信号を入力する毎に送りパルスＬ１〜Ｌ４をラッチ３Ｍ，３Ｌ，３Ｋ，３Ｊに順番に出力する。
ラッチ３Ｊは、セレクタ３Ｈからの１６ビット構成のデータを送りパルスＬ４の入力時点でラッチして、次段のラッチ３Ｋに出力する。ラッチ３Ｋは、前段のラッチ３Ｊからのデータを送りパルスＬ３の入力時点でラッチして、次段のラッチ３Ｌに出力する。ラッチ３Ｌは、前段のラッチ３Ｋからのデータを送りパルスＬ２の入力時点でラッチして、次段のラッチ３Ｍに出力する。ラッチ３Ｍは、前段のラッチ３Ｌからのデータを送りパルスＬ１の入力時点でラッチして、セレクタ３Ｎ及び波形発生部２Ｂに出力する。なお、ラッチ３Ｍからセレクタ３Ｎに出力されるデータは波形メモリ２Ｃから読み出されたメモリ読出データＭＲＤであり、一方ラッチ３Ｍから波形発生部２Ｃに出力されるデータは波形メモリ２Ｄに書き込まれるべきメモリ書込データＭＷＤである。
【００３７】
ここに、ラッチパルスＬ１〜Ｌ４は、アンド回路３Ｆからのパルスが入力する毎に、Ｌ１，Ｌ２，Ｌ３，Ｌ４の時間順で微妙に遅れた送りパルスを発生するようになっており、アンド回路３Ｆから１パルスの入力に応じてラッチ３Ｌのデータがラッチ３Ｍに、ラッチ３Ｋのデータがラッチ３Ｌに、ラッチ３Ｊのデータがラッチ３Ｋに、そしてセレクタ３Ｈから新規に供給されるデータがラッチ３Ｊにラッチされ、全体として１データ分シフトしている。
【００３８】
セレクタ３Ｎは、ラッチ３Ｍからのメモリ読出データＭＲＤの上位８ビットを上位端子Ｈに、下位８ビットを下位端子Ｌにそれぞれ入力し、アドレスＡＤＲが「５」の場合に読出デコーダ１８から出力される読出デコード信号Ａ５を上位選択端子ＳＨに入力し、アドレスＡＤＲが「６」の場合に読出デコーダ１８から出力される読出デコード信号Ａ６を下位選択端子ＳＬに入力する。従って、アドレスＡＤＲが「５」の場合にはメモリ読出データＭＲＤの上位８ビットを読出波形データＷＤＲとして出力し、アドレスＡＤＲが「６」の場合にはメモリ読出データＭＲＤの下位８ビットを読出波形データＷＤＲとして出力する。
【００３９】
図４は、図２の波形発生部２Ｃの詳細構成を示す図である。
周波数ナンバ（Ｆナンバ）発生器４０は、楽音制御レジスタ１Ｄからのピッチデータに対応した周波数ナンバ（Ｆナンバ）をアドレスカウンタ４１に出力すると共に、図３のチャンネル制御レジスタ３１からの動作中信号ＵＳＥ及びディレイ３９からのタイミング信号ＴＳを入力している。動作中信号ＵＳＥがハイレベル“１”である場合、ＣＰＵ２０のアクセスのために第３１チャンネルが使用されており、Ｆナンバ発生器４０はタイミング信号ＴＳが“０”の場合、第３１チャンネルのＦナンバとして“０”を出力し、タイミング信号ＴＳが“１”の場合、第３１チャンネルのＦナンバとて“４”をアドレスカウンタ４１に出力する。この周波数ナンバは、整数部と小数部とからなるデータである。
【００４０】
アドレスカウンタ４１は、図１の楽音制御レジスタ１Ｄからのノートオンパルス及び書込パルス発生部１７からのスタート信号Ａ１をオア回路４２を介して入力すると共に、楽音制御レジスタ１Ｄからの波形スタートアドレス（ＷＳＡ）、ループスタートアドレス（ＬＰＳ）及びループエンドアドレス（ＬＰＥ）及び周波数ナンバ発生器４０からの周波数ナンバを入力する。そして、アドレスカウンタ４１は、スタート信号Ａ１又は各時分割発音チャンネルの楽音の発音開始を指示するノートオンパルスの入力に応じて、その周波数ナンバを波形スタートアドレス（ＷＳＡ）を初期値として順次カウントする。
【００４１】
アドレスカウンタ４１は、ノートオンパルス又はスタート信号を入力することによって初期アドレス（波形スタートアドレスＷＳＡ）にセットされ、周波数ナンバの大きさに応じてその波形スタートアドレス（ＷＳＡ）を基準に順次カウントアップされたアドレスを加算器４３及び４４に出力する。なお、アドレスカウンタ４１は読出アドレスのうち整数部のデータＩｎを加算器４３に出力し、小数部のデータＤｃを加算器４４に出力する。周波数ナンバの値が小さい時は読出アドレスの増加量は小さくなるため、波形メモリ２Ｄから出力される楽音波形信号の音高は相対的に低くなり、周波数ナンバの値が大きい時は読出アドレスの増加量は大きくなるため、波形メモリ２Ｄから出力される楽音波形信号の音高は高くなる。
【００４２】
補助カウンタ４５は、時分割チャンネルの１チャンネル内に補助アドレスＡＡとして「０」，「１」，「２」，「３」を順次加算器４３及び４４に出力する。加算器４３はアドレスカウンタ４１からの整数部のアドレスＩｎに補助カウンタ４５からの補助アドレスＡＡの「０」，「１」，「２」，「３」を順次加算する。従って、波形メモリ２Ｄには時分割チャンネルの１チャンネル内で連続した４個のアドレスＩｎＡが順次供給され波形メモリ２Ｄ中のアドレスＩｎに対応した４つの連続した波形データが順次読み出されるようになる。一方、加算器４４はアドレスカウンタ４１からの小数部のアドレスＤｃに補助カウンタ４５からの補助アドレスＡＡの「０」，「１」，「２」，「３」を加算するので、補間係数メモリ４Ａには１チャンネル内でアドレス小数部Ｄｃに応じた、該４つの連続した波形データにそれぞれ対応する４個のアドレスＤｃＡが順次供給され、４つの係数が順次読み出される。
【００４３】
波形メモリ２Ｄは、立上り部（アタック部）の波形データとして複数周期分、その後の持続部（ループ部）の波形データとして１周期分を記憶しており、加算器４３からのアドレスＩｎＡに対応するメモリ読出データＭＲＤ（１６ビット構成）をバッファアンプ４８及び乗算器４９を介して補間累算器４Ｂに出力すると共に、バッファアンプ４６にも出力する。なお、波形メモリ２Ｄには、図３の４連続パルス発生部３Ｅからの書込信号ＷＳに応じてバッファアンプ４７を介して入力してくる４個のメモリ書込データＭＷＤが順次加算器４３からの４個のアドレスＩｎＡに書き込まれる。
【００４４】
バッファアンプ４６は、アンド回路４Ｅからの制御信号に応じて波形メモリ２Ｄからのメモリ読出データＭＲＤを図３のセレクタ３ＨのＡ端子に出力する。バッファアンプ４７は、アンド回路４Ｇからの制御信号に応じて図３のラッチ３Ｍからのメモリ書込データＭＷＤを波形メモリ２Ｄ及びバッファアンプ４８に出力する。バッファアンプ４８は、反転回路４Ｊからの制御信号に応じて波形メモリ２Ｄからのメモリ読出データＭＲＤ又はバッファアンプ４７からのメモリ書込データＭＷＤを乗算器４９に出力する。
【００４５】
補間係数メモリ４Ａは、加算器４４から出力される１チャンネル当たり４個のアドレスに対応した補間係数を順次乗算器４９に出力する。
乗算器４９は、補間係数メモリ４Ａからの補間係数を各メモリ読出データＭＲＤに乗じて補間累算器４Ｂに出力する。
補間累算器４Ｂは、乗算器４９から順次出力される値を１チャンネル内で累算処理して、１つの補間出力サンプル値としてエンベロープ付与部２Ｅに出力する。
【００４６】
バッファアンプ４６、４７及び４８の制御は、ディレイ４Ｃ，４Ｄ、アンド回路４Ｅ，４Ｆ，４Ｇ及び反転回路４Ｈ，４Ｊによって行われる。ディレイ４Ｃ及び４Ｄは、タイミング信号φ３１ｃｈが通過する経路（アンド回路３８及びディレイ３９，３Ａ）との間でタイミングを調整するための遅延回路である。
アンド回路４Ｅは、チャンネル制御レジスタ３１からの動作中信号ＵＳＥとタイミング信号φ３１ｃｈとを入力し、両者の論理積信号をアンド回路４Ｆ，４Ｇ及び反転回路４Ｊに出力する。反転回路４Ｈは、チャンネル制御レジスタ３１からの書込読出制御信号Ｗ／＊Ｒを入力し、その反転出力をアンド回路４Ｆに出力する。アンド回路４Ｆは、アンド回路４Ｅの論理積信号と書込読出制御信号Ｗ／＊Ｒの反転出力とを入力し、その論理積信号をバッファアンプ４６に出力する。アンド回路４Ｇは、アンド回路４Ｅの論理積信号と書込読出制御信号Ｗ／＊Ｒとを入力し、両者の論理積信号をバッファアンプ４７に出力する。反転回路４Ｊは、アンド回路４Ｅの論理積信号を入力し、その反転出力をバッファアンプ４８に出力する。
【００４７】
エンベロープ付与部２Ｅは、レジスタ１Ｄから供給される各時分割チャンネルのノートオンに応じて音源Ｉ／Ｏ２Ｂに予め設定されたパラメータに基いて波形エンベロープ信号（１４ビット構成）を生成し、波形発生部２Ｃの補間累算器４Ｂから出力される補間されたサンプル値に対し、該エンベロープ信号に応じた振巾エンベロープ制御を行い、振巾制御されたサンプル値をチャンネル累算部２Ｆに出力する。
【００４８】
次に、この発明に係る電子楽器が行う波形データの書込処理及び読出処理について説明する。
まず、ＣＰＵ２０が波形メモリ２Ｄから例えば、アドレス「５Ｆ」以降に書かれたサンプリング波形データを読み出す処理について説明する。
ＣＰＵ２０は、タイミング信号φ３１ｃｈのタイミングで波形メモリ２Ｄのアドレス「５Ｆ」から順番にサンプリング波形データを読み出すために、楽音制御レジスタ１Ｄのタイミング信号φ３１ｃｈの波形スタートアドレス（ＷＳＡ）として「５Ｆ」を設定する。
【００４９】
これと同時に、ＣＰＵ２０はアドレスＡＤＲとして「Ａ０」を出力し、チャンネル制御レジスタ３１の動作中信号ＵＳＥをハイレベル“１”、書込読出制御信号Ｗ／＊Ｒをローレベル“０”とするようなデータＤＡＴＡを出力する。これに応じて書込用デコーダ１６は「Ａ０」に対応した書込デコード信号を書込パルス発生部１７に出力する。書込パルス発生部１７は、ハイレベル“１”の書込パルス信号Ａ０をチャンネル制御レジスタ３１に出力する。チャンネル制御レジスタ３１は、ハイレベル“１”の動作中信号ＵＳＥをアクセス回数検出部３５及び４連続パルス発生部３Ｅ、周波数ナンバ発生器４０及びアンド回路４Ｅに出力し、ローレベル“０”の書込読出制御信号Ｗ／＊Ｒを４連続パルス発生部３Ｅ、セレクタ３Ｈ、反転回路４Ｈ、アンド回路４Ｇにそれぞれ出力するようになる。
次に、ＣＰＵ２０は、アドレスＡＤＲとして「Ａ１」を出力する。これに応じて書込用デコーダ１６は「Ａ１」に対応した書込デコード信号を書込パルス発生部１７に出力し、書込パルス発生部１７は、ハイレベル“１”のスタート信号Ａ１をアクセス回数検出部３５、オア回路３６及びアドレスカウンタ４１に出力する。
【００５０】
ＣＰＵ２０が上述のような処理を行うと、波形メモリＩ／Ｏ１Ｅ及び波形発生部２Ｃは、次のように動作する。
フリップフロップ回路３７のセット端子Ｓにはオア回路３６を介してスタート信号Ａ１が入力するので、フリップフロップ回路３７はハイレベル“１”のセット出力Ｑをアンド回路３８に、ローレベル“０”の反転出力＊Ｑをゲート３Ｐに出力する。
アクセス回数検出部３５は、スタート信号Ａ１の入力に応じて検出回数値をクリアする。
アドレスカウンタ４１にオア回路４２を介してスタート信号Ａ１が入力すると、アドレスカウンタ４１は波形メモリ読出アドレスとして楽音制御レジスタ１Ｄ内の波形スタートアドレス（ＷＳＡ）の「５Ｆ」をカウンタ初期値としてセットする。
【００５１】
チャンネルカウンタ１Ｂは、時分割チャンネルのタイミングが３２番目のチャンネルになると、ハイレベル“１”のタイミング信号φ３１ｃｈをアンド回路３８に出力する。アンド回路３８は、タイミング信号φ３１ｃｈがハイレベル“１”の間、フリップフロップ回路３７からの出力Ｑ（ハイレベル“１”）をディレイ３９に出力する。従って、このハイレベル“１”の信号は、ディレイ３９によって１チャンネル期間だけ遅延してディレイ３Ａに入力すると共に周波数ナンバ発生器４０にタイミング信号ＴＳとして入力する。
【００５２】
さらに、ディレイ３９から出力される遅延信号（タイミング信号ＴＧ）は、ディレイ３Ａによってさらに１チャンネル期間だけ遅延して４連続パルス発生部３Ｅ及びディレイ３Ｃに入力する。ディレイ３Ａからのハイレベル“１”の遅延信号を入力した４連続パルス発生部３Ｅは、書込読出制御信号Ｗ／＊Ｒがローレベル“０”なので、その時点から１チャンネル内において連続する４個のパルスをオア回路３Ｆに出力する。なお、４連続パルス発生部３Ｅは、書込読出制御信号Ｗ／＊Ｒがハイレベル“１”の場合には、３２番目のチャンネルの間、該４個のパルスに応じてバッファ４７を通じて波形メモリ２Ｄに順次供給される４つの書き込みサンプルデータ（メモリ書込データ）ＭＷＤに同期したタイミングで書込信号ＷＳを波形メモリ２Ｄに出力する。
【００５３】
周波数ナンバ発生器４０は、３１チャンネルのタイミングでタイミング信号ＴＳが入力した場合、３１チャンネルの周波数データとして通常の楽音制御レジスタ１Ｄから供給されるピッチデータに応じたＦナンバに代えて“４”の値をもつＦナンバをアドレスカウンタ４１に出力する。これによって、アドレスカウンタ４１は３１チャンネルにおいてＣＰＵによる読出書込みを行う場合、４ずつインクリメントされたアドレスＩｎを加算器４３及び４４に出力する。
【００５４】
このとき、補助カウンタ４５は、時分割チャンネルの１チャンネル分の間に、「０」，「１」，「２」，「３」の補助アドレスＡＡを加算器４３及び４４に出力するので、波形メモリ２Ｄには、アドレスカウンタ４１からのアドレスＩｎと補助カウンタ４５の補助アドレスＡＡとの加算されたアドレスＩｎＡが読出アドレスとして入力する。これによって波形メモリ２Ｄからは、これらの４個の読出アドレスに対応したメモリ読出データＭＲＤがバッファアンプ４６及び４８に順次出力される。
【００５５】
このとき、アンド回路４Ｆには反転回路４Ｈを介してハイレベル“１”の書込読出制御信号Ｗ／＊Ｒが入力し、アンド回路４Ｇにはローレベル“０”の書込読出制御信号Ｗ／＊Ｒが入力しているので、アンド回路４Ｆのゲートは開いた状態となり、アンド回路４Ｇのゲートは閉じた状態となる。従って、アンド回路４Ｅの論理積出力はアンド回路４Ｆを介してバッファアンプ４６に入力する。アンド回路４Ｅの一方の端子にはハイレベル“１”の動作中信号ＵＳＥが入力し、他方の端子にはディレイ４Ｃ，４Ｄを介して２チャンネル期間遅れた時点でハイレベル“１”のタイミング信号φ３１ｃｈが入力するので、バッファアンプ４６にはタイミング信号φ３１ｃｈがハイレベル“１”になってから２チャンネル期間経過した時点でアンド回路４Ｅ及び４Ｆを介してハイレベル“１”の論理積信号が入力する。これによって、３１チャンネルに対応する波形メモリのアクセス期間において波形メモリ２Ｄからのメモリ読出データＭＲＤは、バッファアンプ４６を介してセレクタ３ＨのＡ端子に入力するようになる。
【００５６】
セレクタ３Ｈは、ローレベル“０”の書込読出制御信号Ｗ／＊Ｒを入力しているので、バッファアンプ４６を介して入力されるメモリ読出データＭＲＤをラッチ３Ｊに出力する。このとき、送りパルス発生器３Ｇには、オア回路３Ｆを介して４連続パルス発生部３Ｅからのパルスが入力し、ラッチＬ１〜Ｌ４のデータが該パルスに応じて順送りされることにより、波形メモリ２Ｄから順次読み出された４個のメモリ読出データＭＲＤは次々とラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍに転送され、ラッチされる。
【００５７】
４個のメモリ読出データＭＲＤがラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍに転送され、ラッチされると、その取り込み終了に合わせてディレイ３Ｃからハイレベル“１”出力がフリップフロップ回路３７のリセット端子Ｒに入力し、フリップフロップ回路３７のセット出力Ｑをローレベル“０”に反転出力＊Ｑをハイレベル“１”にセットする。
ＣＰＵ２０は、アドレスＡＤＲとして「Ａ２」を出力する。これに応じて読出用デコーダ１８は「Ａ２」に対応した読出デコード信号Ａ２をゲート３Ｌに出力し、ゲート３Ｌを開き、フリップフロップ回路３７の反転出力＊Ｑを読出して、該反転出力＊Ｑが“１”になったタイミングで、波形メモリ２Ｄからのメモリ読出データＭＲＤのラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍへの取り込みが完了したことを検出する。
【００５８】
以上の処理が終了した後、ＣＰＵ２０は、アドレスＡＤＲ（Ａ５，Ａ６）を交互に４回出力し、セレクタ３ＮのＬ端子及びＨ端子を選択し、８個の８ビットの読出データＷＤＲをバッファアンプ１５を介して順次読み出す。
すなわち、ＣＰＵ２０がアドレスＡＤＲとして「Ａ５」を出力すると、読出用デコーダ１８は読出デコード信号Ａ５をセレクタ３Ｎに出力する。セレクタ３Ｎは、ラッチ３Ｍにラッチされているメモリ読出データＭＲＤの上位８ビットを読出データＷＤＲとして読出データバスに出力され、該上位８ビットがバッファ１５を介してＣＰＵにより読み出される。次に、ＣＰＵ２０がアドレスＡＤＲとして「Ａ６」を出力すると、読出用デコーダ１８は読出デコード信号Ａ６をセレクタ３Ｎに出力する。セレクタ３Ｎは、ラッチ３Ｍにラッチされているメモリ読出データＭＲＤの下位８ビットを読出データＷＤＲとして読出データバスに出力され、バッファ１５を介してＣＰＵにより読み出される。
【００５９】
このとき、パルス発生部３２はデコード信号Ａ６を入力する度に１サンプル読出完了パルスＲＳＰをオア回路３３を介してアクセス回数検出部３５に出力すると共にオア回路３３及び３Ｆを介して送りパルス発生器３Ｇに出力する。アクセス回数検出部３５は、パルス発生部３２からの１サンプ読出完了パルスＲＳＰの入力回数をカウントし、そのカウント値が『４』になったかどうか、すなわちＣＰＵ２０が４回読出しアクセスしたかどうかを検出する。なお、この時点では、ＣＰＵ２０は１回のアクセスしかしていない。
一方、送りパルス発生器３Ｇは、この１サンプル読出完了パルスＲＳＰの入力に応じてラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍのデータを１段ずつラッチ３Ｍ側にシフトする。
【００６０】
ＣＰＵ２０は、上記の動作（アドレスＡＤＲ（Ａ５，Ａ６）を交互に出力する動作）を４回繰り返すことによって、波形メモリ２Ｄの４ワード分のデータを読み出す。
この読出動作が終了すると、アクセス回数検出部３５はオア回路３３から出力される１サンプル読出完了パルスＲＳＰを計数して、４ワード分のデータ読み出しが終了した事を検出し、ハイレベル“１”の検出信号をオア回路３６を介してフリップフロップ回路３７のセット端子Ｓに出力する。これによって、フリップフロップ回路３７は、再びセットされ、ハイレベル“１”のセット出力Ｑをアンド回路３８に出力する。そして、次回のタイミング信号φ３１ｃｈの間に波形メモリ２Ｄから４ワード分のデータが先程と同様に波形メモリ２Ｄから順次読み出され、４段のラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍに取り込まれ、その後、再びフリップフロップ回路３７がリセットされる。なお、この場合には、波形発生部２Ｃのアドレスカウンタ４１への波形スタートアドレス（ＷＳＡ）の書込処理は行われずに、前回のカウント値が継続して使用される。
【００６１】
ＣＰＵ２０は、以上の動作を繰り返し実行することにより、波形スタートアドレス（ＷＳＡ）の「５Ｆ」から順次４ずつアドレスを増加させながら、対応するアドレスに記憶されているデータを連続して読み出すことができる。
波形メモリ２Ｄからのデータ読み出し処理を終了する時は、ＣＰＵ２０は、フリップフロップ回路３７がリセットされている状態（セット出力Ｑがローレベル“０”の状態）で、アドレスＡＤＲとして「Ａ０」を出力し、書込パルス信号Ａ０をチャンネル制御レジスタ３１に出力し、チャンネル制御レジスタ３１の動作中信号ＵＳＥをローレベル“０”とするようなデータＤＡＴＡを出力する。これによって、チャンネル制御レジスタ３１は、ローレベル“０”の動作中信号ＵＳＥをアクセス回数検出部３５及び４連続パルス発生部３Ｅ、周波数ナンバ発生器４０及びアンド回路４Ｅに出力するようになるので、これ以降のデータ読み出し動作は行われなくなる。
【００６２】
次に、ＣＰＵ２０が波形メモリ２Ｄの、例えばアドレス「６Ｆ」以降の領域にサンプリング波形データを書き込む処理について説明する。
ＣＰＵ２０は、タイミング信号φ３１ｃｈのタイミングで波形メモリ２Ｄのアドレス「６Ｆ」から順番にサンプリング波形データを書き込むために、楽音制御レジスタ１Ｄのタイミング信号φ３１ｃｈの波形スタートアドレス（ＷＳＡ）すなわち波形メモリ２Ｄの書き込み先頭アドレスに「６Ｆ」を設定する。
【００６３】
これと同時に、ＣＰＵ２０はアドレスＡＤＲとして「Ａ０」を出力し、チャンネル制御レジスタ３１の書込読出制御信号Ｗ／＊Ｒをハイレベル“１”とするようなデータＤＡＴＡを出力する。これに応じて書込用デコーダ１６は「Ａ０」に対応した書込デコード信号を書込パルス発生部１７に出力し、書込パルス発生部１７は、ハイレベル“１”の書込パルス信号Ａ０をチャンネル制御レジスタ３１に出力する。チャンネル制御レジスタ３１は、ハイレベル“１”の書込読出制御信号Ｗ／＊Ｒを４連続パルス発生部３Ｅ、セレクタ３Ｈ、反転回路４Ｈ、アンド回路４Ｇにそれぞれ出力する。
なお、この時点では動作中信号ＵＳＥはローレベル“０”にしておく。
【００６４】
この処理が終了した後、ＣＰＵ２０は、アドレスＡＤＲ（Ａ３，Ａ４）を交互に４回ずつ出力し、書込波形データＷＤをラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍに書き込む。
すなわち、ＣＰＵ２０が最初の波形データの上位８ビットと共にアドレスＡＤＲとして「Ａ３」を出力すると、書込用デコーダ１６は「Ａ３」に対応した書込デコード信号を書込パルス発生部１７に出力し、書込パルス発生部１７は、ハイレベル“１”の書込パルス信号Ａ３を上位ラッチ３４に出力する。上位ラッチ３４は、データラッチ１３からの上位８ビットの書込波形データをラッチする。次に、ＣＰＵ２０が同波形データの下位８ビットと共にアドレスＡＤＲとして「Ａ４」を出力すると、書込用デコーダ１６は「Ａ４」に対応した書込デコード信号を書込パルス発生部１７に出力し、書込パルス発生部１７は、ハイレベル“１”の書込パルス信号Ａ４をオア回路３３及び３Ｆを介して送りパルス発生器３Ｇに出力する。
【００６５】
セレクタ３Ｈは、ハイレベル“１”の書込読出制御信号Ｗ／＊Ｒを入力しているので、データラッチ１３からの下位８ビットとラッチ３４からの上位８ビットの全１６ビットで構成される書込波形データＷＤをラッチ３Ｊに出力する。このとき、送りパルス発生器３Ｇには、オア回路３３及び３Ｆを介して書込パルス信号Ａ４が入力するので、上位ラッチ３４にラッチされた上位８ビットのデータと今回供給された下位８ビットのデータとの組み合わされた１６ビットの書込波形データＷＤがラッチ３Ｊに取り込まれると共に、もともとラッチ３Ｊ，３Ｋ，３Ｌにラッチされていたデータがそれぞれラッチ３Ｋ，３Ｌ，３Ｍにラッチされ、全体としてラッチされているデータが１つ順送りされる。
ＣＰＵ２０は、上述の動作（アドレスＡＤＲ（Ａ３，Ａ４）を交互に出力する動作）を４回繰り返し行うことによって、４ワード分の書込波形データＷＤをラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍに蓄える。
【００６６】
次に、ＣＰＵ２０はアドレス「Ａ１」のチャンネル制御レジスタ３１の動作中信号ＵＳＥに“１”を書き込む。そして、ＣＰＵ２０は、アドレスＡＤＲとして「Ａ１」を出力する。これに応じて書込用デコーダ１６は「Ａ１」に対応した書込デコード信号を書込パルス発生部１７に出力し、書込パルス発生部１７は、ハイレベル“１”のスタート信号Ａ１をアクセス回数検出部３５、オア回路３６及びアドレスカウンタ４１に出力する。
【００６７】
フリップフロップ回路３７は、スタート信号Ａ１をオア回路３６を介してセット端子Ｓに入力することによって、ハイレベル“１”のセット出力Ｑをアンド回路３８に、ローレベル“０”の反転出力＊Ｑをゲート３Ｌに出力する。
アクセス回数検出部３５は、スタート信号Ａ１の入力に応じて検出回数値をクリアする。
アドレスカウンタ４１は、スタート信号Ａ１をオア回路４２を介して入力することによって、波形メモリ書込アドレスとして楽音制御レジスタ１Ｄ内の波形スタートアドレス（ＷＳＡ）の「６Ｆ」をカウンタ初期値として格納する。
【００６８】
チャンネルカウンタ１Ｂは、時分割チャンネルのタイミングが３２番目のチャンネルになると、ハイレベル“１”のタイミング信号φ３１ｃｈをアンド回路３８に出力する。アンド回路３８は、タイミング信号φ３１ｃｈがハイレベル“１”の間、フリップフロップ回路３７からのセット出力Ｑ（ハイレベル“１”）をディレイ３９に出力する。このハイレベル“１”の信号は、ディレイ３９によって１チャンネル期間だけ遅延してディレイ３Ａに入力すると共に周波数ナンバ発生器４０にタイミング信号ＴＳとして入力する。
【００６９】
さらに、ディレイ３９から出力される遅延信号（タイミング信号ＴＧ）は、ディレイ３Ａによってさらに１チャンネル期間だけ遅延して４連続パルス発生部３Ｅ及びディレイ３Ｃに入力する。ディレイ３Ａからのハイレベル“１”の遅延信号を入力した４連続パルス発生部３Ｅは、書込読出制御信号Ｗ／＊Ｒがハイレベル“１”なので、その時点から１チャンネル内において連続する３個のパルスをオア回路３Ｆを介して送りパルス発生器３Ｇに出力すると共にタイミング信号φ３１ｃｈがハイレベル“１”の間、連続する４個のパルスを書込信号ＷＳとして波形メモリ２Ｄに出力する。
なお、この場合の上記３個のパルスは、読み出し時（書込読出制御信号Ｗ／＊Ｒが“０”の時）に発生する４個のパルスのうちの最初の一発を除いた残りの３個のタイミングで発生している。
【００７０】
周波数ナンバ発生器４０は、タイミング信号ＴＳを入力する度にアドレスカウンタ４１に通常出力している３１チャンネルのピッチデータに対応するＦナンバに代えて“４”の値のＦナンバを出力している。これによって、アドレスカウンタ４１は３１チャンネルについて、４ずつインクリメントされたアドレスＩｎを加算器４３及び４４に出力する。
このとき、補助カウンタ４５は、時分割チャンネルの１チャンネル分の間に、「０」，「１」，「２」，「３」の補助アドレスＡＡを加算器４３及び４４に出力するので、波形メモリ２Ｄには、アドレスカウンタ４１からのアドレスＩｎと補助カウンタ４５の補助アドレスＡＡとの加算された４連続のアドレスＩｎＡが書込アドレスとして入力する。
【００７１】
アンド回路４Ｆには反転回路４Ｈを介してローレベル“０”の書込読出制御信号Ｗ／＊Ｒが入力し、アンド回路４Ｇにはハイレベル“１”の書込読出制御信号Ｗ／＊Ｒが入力しているので、アンド回路４Ｆのゲートは閉じた状態となり、アンド回路４Ｇのゲートは開いた状態となる。従って、アンド回路４Ｅの論理積出力はアンド回路４Ｇを介してバッファアンプ４７に入力する。アンド回路４Ｅの一方の端子にはハイレベル“１”の動作中信号ＵＳＥが入力し、他方の端子にはディレイ４Ｃ，４Ｄを介して２チャンネル期間分遅れた時点でハイレベル“１”のタイミング信号φ３１ｃｈが入力するので、バッファアンプ４７にはタイミング信号φ３１ｃｈがハイレベル“１”になってから２チャンネル期間経過した時点でアンド回路４Ｅ及び４Ｇを介してハイレベル“１”の論理積信号が入力する。これによって、３１チャンネルに対応する波形メモリ２Ｄのアクセス期間においてラッチ３Ｍからのメモリ書込データＭＷＤは、バッファアンプ４７を介して波形メモリ２Ｄのデータ入力端子及びバッファアンプ４８に入力するようになる。
【００７２】
送りパルス発生器３Ｇには、オア回路３Ｆを介して４連続パルス発生部３Ｅからの３個の連続パルスが入力する。送りパルス発生器３Ｇは、このパルス入力に応じてラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍのデータを１段ずつラッチ３Ｍ側にシフトする。ラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍにラッチされていたメモリ書込データＭＷＤは次々とラッチ３Ｍに転送され、ラッチ３Ｍからバッファアンプ４７を介して波形メモリ２に入力する。これと同時に４連続パルス発生部３Ｅからは４個の連続する書込信号ＷＳ及び４連続のアドレスＩｎＡが波形メモリ２Ｄには入力するので、このアドレス領域に４ワード分の書込波形データＷＤが順次書き込まれる。
ラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍに蓄積されていた４個のメモリ書込データＭＷＤが波形メモリ２Ｄに書き込まれると、それに合わせてディレイ３Ｃからハイレベル“１”の出力がフリップフロップ回路３７のリセット端子Ｒに入力し、フリップフロップ回路３７のセット出力Ｑをローレベル“０”に反転出力＊Ｑをハイレベル“１”にセットする。
【００７３】
ＣＰＵ２０は、上述した４データの波形メモリ２Ｄへの書込みの完了を検知するために、アドレス「Ａ２」のデータを読み出す。この際、読出用デコーダ１８は「Ａ２」に対応した読出デコード信号Ａ２をゲート３Ｐに出力し、ゲート３Ｐを開き、ＣＰＵ２０は、フリップフロップ回路３７の反転出力＊Ｑを読出し、メモリ書込データＭＷＤのラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍから波形メモリ２Ｄへの書込処理が終了したことを検出する。
書込処理の終了を検出したＣＰＵ２０は、アドレスＡＤＲ（Ａ３，Ａ４）を交互に４回ずつ出力し、新たな４ワード分の書込波形データＷＤをラッチ３Ｊ，３Ｋ，３Ｌ，３Ｍに蓄え、上述の動作を繰り返し実行して、メモリ書込データＭＷＤを波形メモリ２Ｄに書き込む。ＣＰＵ２０は、以上の動作を繰り返し実行することにより、波形スタートアドレス（ＷＳＡ）の「６Ｆ」から順次４ずつアドレスを増加させながら、対応するアドレスにメモリ書込データＭＷＤを書き込む。
【００７４】
波形メモリ２Ｄへのデータ書込処理を終了する時は、ＣＰＵ２０は、フリップフロップ回路３７がリセットされている状態（セット出力Ｑがローレベル“０”の状態）で、アドレスＡＤＲとして「Ａ０」を出力し、書込パルス信号Ａ０をチャンネル制御レジスタ３１に出力し、チャンネル制御レジスタ３１の動作中信号ＵＳＥ及び書込読出制御信号Ｗ／＊Ｒをローレベル“０”とするようなデータＤＡＴＡを出力する。これによって、チャンネル制御レジスタ３１は、ローレベル“０”の動作中信号ＵＳＥをアクセス回数検出部３５及び４連続パルス発生部３Ｅ、周波数ナンバ発生器４０及びアンド回路４Ｅに出力するようになるので、これ以降のデータ書き込み動作は行われなくなる。
【００７５】
【発明の効果】
以上のようにこの発明によれば、波形メモリ音源が時分割チャンネル発音処理を行っていても、ＣＰＵ等の処理装置による波形メモリへのアクセスを行うことができるという効果がある。
【図面の簡単な説明】
【図１】図２の音源Ｉ／Ｏの詳細構成を示す図である。
【図２】本発明の一実施例に係るサンプラータイプの波形メモリ音源を内蔵した電子楽器の全体構成を示す図である。
【図３】図１の波形メモリＩ／Ｏの詳細構成を示す図である。
【図４】図２の波形発生部の詳細構成を示す図である。
【符号の説明】
１１…ＣＰＵバス制御部、１２…アドレスラッチ、１３…データラッチ、１４…書込用バッファ、１５…読出用バッファアンプ、１６…書込用デコーダ、１７…書込パルス発生部、１８…読出用デコーダ、１９…チャンネルラッチ、１Ａ…チャンネル変換部、１Ｂ…チャンネルカウンタ、１Ｃ…セレクタ、１Ｄ…楽音制御レジスタ、１Ｅ…波形メモリＩ／Ｏ
【図１】
0003561939.tif 000002
【図２】
0003561939.tif 000003
【図３】
0003561939.tif 000004
【図４】
0003561939.tif 000005