JPH0522920B2 - - Google Patents
Info
- Publication number
- JPH0522920B2 JPH0522920B2 JP57083450A JP8345082A JPH0522920B2 JP H0522920 B2 JPH0522920 B2 JP H0522920B2 JP 57083450 A JP57083450 A JP 57083450A JP 8345082 A JP8345082 A JP 8345082A JP H0522920 B2 JPH0522920 B2 JP H0522920B2
- Authority
- JP
- Japan
- Prior art keywords
- cent
- frequency
- address
- harmonic
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
本発明は、電子楽器に適した、周波数を表現す
るためのデータを発生する周波数制御装置に関
し、特にデイジタル方式で周波数を制御するよう
にしたものである。
従来、デイジタル方式を用いた楽音発生装置に
は種々の提案がなされている。これらの中で、正
弦波や楽音の一波形のデイジタルデータをメモリ
に記憶しておき、これを順次繰返して読み出して
連続的な楽音波形とし、これに、エンベロープ信
号に相当するエンベロープデータを掛け算して、
その振幅値を変化させることにより、音の立上り
から立下りまでの楽音信号を形成するようにした
ものがある。発生する波形の周波数を変更するに
は、デイジタルデータの各サンプルを順次連続的
に読み出さずに、所定のサンプル数だけ飛び越し
て読み出せばよい。飛越数をJとすると、Jに正
比例して周波数を設定できる。このような信号の
発生方法の手順については1969年にTHE M.I.T.
PRESSより出版された書物「The Technology
of Computer Music」の第134頁〜138頁に記述
されている。また、雑誌IEEETrans.on Audio
and Electroacous−tics,19巻、No.1,48−58,
1971の文献A Digital Frequency Synthesizer」
には、具体的な構成が示されている。これらの公
知例にもとづいてさらに具体的かつ実際的な方式
として、特願昭56−165189号がある。
これらの楽音合成方式に対しては、飛越数Jを
発生して供給する必要がある。本発明は、この飛
越数Jを発生し供給する方法に関するもので、と
くに種々の周波数を効率的に発生させるように工
夫したものである。
つぎに本発明の方式と従来例との関連について
述べる。
従来、ミユージツクシンセサイザでは、鍵盤の
各鍵に対応する鍵電圧VKを発生させ、これに周
波数を設定する電圧VF、ビブラート電圧VVを重
畳し、2V1=(VK+VF+VV)を得、指数変換器を
通してVO=K1exp(VK+VF+VVを得、電圧VOによ
つて、電圧制御発振器(VCO)の発振周波数f
を決定する。電圧VFがoVのときには、鍵電圧VK
によつて決まる周波数、すなわち、楽音の音階に
対応する(C3であれば261.625Hz)周波数が発生
する。通常鍵電圧VKは、オクターブ当り1Vが標
準とされている。電圧VFとして1Vを加えると、
1オクターブ上昇して513.25Hzが発生する。これ
は、C4に当ると同時に、C3の第2高調波にも当
る。電圧VFとして1V以外の電圧を与えると、第
3、第4など任意の高調波成分が得られる。ビブ
ラート電圧VVは、上記各周波数を中心に上下に
周波数変調させるものであるが、ここで重要なこ
とは、VKやVFが種々の値をとつても周波数の変
動の割合い、すなわち、ピツチの変動は、VVが
一定なら、一定に保たれる点である。このような
方式をデイジタル演算におきかえたものとして特
開昭54−81824号が知られている。しかしながら、
このような従来のものは、アナログ回路で作るた
めに不安定であつたり、デイジタル演算の演算器
が、高精度かつ多数必要とするなどの欠点があつ
た。
本発明は、これらの点を解決し、現実に構成し
やすくした周波数制御装置を提供するものであ
る。
第1図は、本発明の周波数制御装置を採用した
電子楽器のブロツク図である。1は鍵盤部、2は
音色タブレツトスイツチやビブラート効果のオン
オフスイツチ、ビブラート効果の深さを設定する
ボリユームなどにより構成される操作部、3は中
央処理装置(CPU)で、コンピユータなどに用
いられているものと同様のもの、4は読み書き可
能な記憶装置(ランダムアクセスメモリ、通常
RAMと呼ぶ)、5はCPU3の動作を決定するプロ
グラムが格納された読み出し専用記憶装置(リー
ドオンリーメモリ、通常RMと呼ぶ)、6は、
音色の合成するためのパラメータのうちエンベロ
ープパラメータを記憶しているROM、7は音色
の合成を行なうためのパラメータのうち周波数に
関するデータを記憶しているROMである。8は
本発明の周波数制御装置、9は先に引用した正弦
波発生器、10はエンベロープデータ発生器、1
1は、正弦波とエンベロープデータを掛け合わせ
る掛算器、12は時分割多重化されている掛算結
果のうち、所定のものを加え合わせたり、時分割
多重の順序と入れかえるタイムスロツト制御装
置、13は時分割多重化された位相変調器、14
はデイジタルアナログ変換器、15,16は電気
音響変換器である。
鍵盤部1、操作部2、CPU3、RAM4、
ROM5、ROM6、ROM7、周波数制御装置
8、エンベロープデータ発生器10は、データバ
ス、アドレスバスおよびコントロール線で結合さ
れている。このようにデータバスとアドレスバス
とコントロール線とで結合する方法そのものは、
ミニコンピユータやマイクロコンピユータを中心
とした構成方法として公知のものである。データ
バスとしては8〜16本位用いられ、このバス線上
をデータが一方向でなく多方向に時分割的に送受
信される。アドレスバスも複数本たとえば16本用
意され、通常はCPU3がアドレスコードを出力
し、他の部分がアドレスコードを受け取る。コン
トロール線は、通常、メモリ・リクエスト線
()、I/リクエスト線()、リー
ド線()、ライト線()などが用いられ
る。
は、メモリを読み書きすることを示し、
IORQは入出力装置(I/)の内容を取り出し
することを示し、はメモリやI/からデー
タを読み出すタイミングを示し、はメモリや
I/にデータを書き込むタイミングを示す。こ
のようなコントロール線を用いたものとしては、
ザイログ社のマイクロプロセツサZ80があげら
れる。
つぎに第1図の電子楽器の動作について述べ
る。鍵盤部1は、複数の鍵スイツチを複数の群に
分けて、群内の鍵スイツチのN−FF状態を
一括してデータバスに送ることができるように構
成される。たとえば、5オクターブの鍵盤の場合
60鍵を6鍵(半オクターブ)ずつの10群と1鍵の
11群に分け、各群にアドレスコードを1つずつ割
りつける。アドレスラインに、上記各群のうちの
1つを示すアドレスコードが到来し、と
RDが印加されると、鍵盤部1はそのアドレスコ
ードを解読して、対応する群内のキースイツチの
ON−FFを示す6ビツトまたは1ビツトのデ
ータをデータバスに出力する。これらは、デコー
ダ、バスドライバおよび若干のゲート回路を用い
て構成することができる。操作部2のうち、タブ
レツトスイツチについては、鍵盤部1と同様の構
成をとることができる。ボリユームの設定状態に
ついては、ボリユームの出力する電圧をアナログ
デイジタル変換器によりデイジタルコードに変換
し、これを、アドレスコードとコントロール線
IORQとにより読み出すようにする。
CPU3はその内部にあるプログラムカウンタの
コードに対応するRM5のアドレスから命令コ
ードを読み取り、これを解読して、算術演算、論
理演算、データの読み込みと書き込み、プログラ
ムカウンタの内容の変更による命令のジヤンプな
どの作業を行なう。これらの作業の手順はRM
5に書き込まれている。まずCPU3はROM5よ
り鍵盤部1のデータを取り込むための命令を読み
取り鍵盤部1の各鍵のN−FFを示すコード
を各群ごとに取り込んで行く。そして、押鍵され
ている鍵コードを、楽音発生部の有限のチヤンネ
ルに割り当ててゆく。
つぎにCPU3は、操作部2よりデータを取り
込むための一群の命令を順次RM5から読み取
り、これらを解読して、操作部2に対応するアド
レスコードとコントロール信号とを出
力し、データバスに操作部2のスイツチやボリユ
ームの状態を表現するコードを出力させ、CPU
3内に読み込む。そして、どの音色の楽音信号を
合成すべきかをCPU3は知る。
以上で、楽音発生部のどのチヤンネルにどの周
波数をもつたどの音色を発生させるべきかが明確
になつたので、CPU3は、各音色の周波数に関
するデータを記憶しているROM7より、所望の
音色の周波数パラメータを格納してあるアドレス
コードとコントロール信号MREQとRDとを出力
してデータバスに所望の周波数パラメータを読み
出してCPU3内に取り込み周波数制御装置8に
書き込む。書き込むためには、周波数制御装置8
の内部に設けられたデータレジスタに対応するア
ドレスコードをCPU3が出力し、同時にと
WRとを出力すると、信号の立上り時にデー
タバス上に出力されている周波数パラメータを表
わすデータが上記データレジスタに書き込まれ
る。
つぎに、出力すべき音色の内容を表わす音色パ
ラメータをRM6より読み出し、エンベロープ
発生器10の内部のレジスタに書き込む。つぎに
周波数制御装置8とエンベロープ発生器10の両
方に、発音出力指令を与えると、周波数制御装置
8は、飛越数Jを正弦波発生器9に与え、エンベ
ロープ発生器10はエンベロープデータを発生す
る。正弦波発生器9の出力する正弦波データとエ
ンベロープデータは掛算されて、エンベロープが
正弦波に付与される。正弦波データとエンベロー
プデータとはそれぞれ時分割多重化されて発生す
る。時分割多重は、例えば、160多重とし、1チ
ヤンネル当り20の正弦波を割り当て、8チヤンネ
ル設けることにする。通常は、20本の正弦波の合
成により、ひとつの楽音を合成することになる。
したがつて、フーリエ級数の式で知られるとお
り、20の正弦波データを加算することになる。こ
のためのタイムスロツト間のデータ加算を、タイ
ムスロツト変換器12で実施する。タイムスロツ
ト変換器は、160のタイムスロツトで時分割多
重されて入力される、エンベロープデータで変調
された正弦波データ列のうち、所定のデータを加
算しタイムスロツトの数を減らしたり、あるい
は、特願昭57−202790号の時分割多重変換装置の
ようにタイムスロツトの変換を行なうものであ
る。時分割多実位相変調器13は、特願昭56−
182083号「デイジタル楽音変調装置」のように、
時分割多重で複数種の変調を同時に実施するもの
である。時分割多重位相変調装置13の出力はア
ナログデイジタル変換器14によりアナログ信号
に直されて、電気音響変換器15,16より出力
される。
第1図では図示を省いたが、タイムスロツト変
換器12や時分割多重位相変調装置13に対して
も、アドレスバス、データバス、コントロール線
を介してCPU3と結合して、操作部2によつて
行なわれる音色や変調効果の設定に対応して、タ
イムスロツトの変換や変調条件を変えて設定する
ようにすることができる。
本発明の周波数制御は、まず、各鍵のノートオ
クターブ、各高調波の周波数などを、セント尺度
上に配置して処理する。出力すべき楽音の基本波
のノートやオクターブの位置、基本波を基準とし
た高調波の位置、非高調波の相対的なずれなどを
セント単位で表現し、セント尺度上でのセントア
ドレスの加減算を行なつて、実際の周波数成分の
セント値に対するセントアドレスを求め、これを
指数変換する。システムをデイジタル化し、か
つ、多数のスペクトルに対する飛越数Jを求める
れために、セント尺度上で1オクターブを量子化
して扱い、かつ、時分割多重で演算処理を行なう
ように考慮している。また、演算されたJが、正
弦波発生器9に適切に転送されるようタイミング
を考えている。
本発明は、第1図の如き電子楽器の一部分とし
て、CPU3より供給される周波数パラメータを
受け入れて、正弦波発生器9に対し飛越数Jを供
給する機能を実現する、周波数制御装置8に関す
るものである。その1実施例を第2図に示す。
第2図の周波数制御装置は、データバスDB,
アドレスバスADR、コントロール線と
とチツプセレクト線CSとにより、CPU3と結合
して、周波数パラメータを受け取り、マイコンイ
ンタフエース回路(MIF)25でアドレスバス
ADRのコードを解読して、内部のレジスタ群に
書き込み、内部に設けた飛越数Jを計算する機構
を介して、必要な複数個のJiを計算させ、バツフ
アメモリ29、オクターブシフタ30を介して、
正弦波発生器9に供給する。
まず、構成要素について説明する。21は、タ
イミングパルスを供給するプログラムカウンタ、
(PC)22はタイミングパルスから論理をとつて
必要なアドレスコードをつくつたり、コントロー
ル用のフラグ(FLG)信号を受けとつて制御信
号をつくり出すタイミングパルス発生器
(TPG)、23は、タイミングパルスや制御信号
により読み出され、後述する算術演算や論現演算
の内容と手順とを記憶しているシーケンサ
(SEQ)でRMから成るもの、24はシーケン
サの内容を解読して、アドレスコード、出力指令
信号(OC1〜12)、書込指令信号(0〜
3)、演算指令信号(Pコード)などを出力す
る命令解読器である。25はマイコンインターフ
エース回路(MIF)で先に説明したものである。
26は演算装置(ALU)で、加算、減算、比較
を、2つの入力であるAバスとBバスの間で行な
い、Cバスに演算結果を出力し、演算結果のうち
の符号、上位ビツトなどをFLGとして出力する。
FLGはTPG22に供給される。
27はワーキングレジスタ(WREG)で
WREG1とWREG2の2ワードのメモリで構成
され、Cバスより入力を受け入れ、Bバスに出力
を供給する。AD2が2ワードのどちらかを選択
し1の立上りで書き込み、C8が“H”の
とき出力を供給する。28は16ワード×15ビツト
より成るRAMで、Cバスより入力を受け取りD
バスに出力を供給する。160ワードは20ワードず
つ8チヤンネルに分けられており、20ワード内の
任意の1ワードを5ビツトのアドレスコードAD
1で指定し、8チヤンネルのうちの任意の1チヤ
ンネルを3ビツトのアドレスコードAD4で選択
し、2の立上り時にCバス上のデータを書き
込み出力はDバスに出たままである。ただし、出
力の上位5ビツトはバツフアメモリ29に供給さ
れる。バツフアメモリ29は160ワード×17ビツ
トのRAMで、CバスのデータとRAM28の上
位5ビツトを入力として受け入れる。160ワード
は20ワードずつ8チヤンネルに分けられており、
20ワード内の1ワードをアドレスコードAD3で
選択し、8チヤンネルのうちの1つをアドレスコ
ードAD4で選択し、3の立上りで入力デー
タを書き込み、OC9が“H”のとき出力する。
バツフアメモリ29の出力はオクターブシフタ3
0に供給される。バツフアメモリ29の上位5ビ
ツトのコードにより、それより下位のデータが、
所定のビツト数だけビツトシフトされて出力され
る。
この出力は、正弦波発生器9の内部に設けられ
飛越数を格納するレジスタのうち所定のアドレス
に対応するものに転送される。
33はノートオクターブレジスタ(ND
(n))で最新のノートオクターブデータを、
CPU3よりデータバスDBを介して受け入れ、必
要な時に、Aバスに出力する。書き込みを
2で、読出しをOC2で行なう。34はノートオ
クターブレジスタ(ND(n−1))で、前回の
ノートオクターブデータを、CPU3よりデータ
バスDBを介して受け入れ、必要な時にBバスに
出力する。また、Bバスから途中の処理データを
受け取り記憶する。DBよりのデータの書き込み
を3で、Bバスよりの書き込みをWROで
行ない、Bバスへの出力をC3で行なう。35
はハーモニツクデータメモリ(HMD)で、64ワ
ード×13ビツトのRMにより構成されている。
64ワードのうちのどれを選択するかは、パーシヤ
ル番号メモリ36が出力する6ビツトのコードに
より決定される。パーシヤル番号メモリ36は、
20ワード×6ビツトのRAMで、データバスDB
から入力を受け入れる。20ワードのうちの1ワー
ドをアドレスコードAD1で選択し、4の
立上りで書き込む。出力は常にハーモニツクデー
タメモリ35に供給される。ハーモニツクデータ
メモリの出力はC4が“H”のときAバスに出
力される。37は非高調波メモリ(INH)で、
20ワード×6ビツトのRAMにより構成される。
20ワードのうちの1ワードがアドレスコードAD
1で選択され、5の立上りでデータバス
DB上のデータが書き込まれ、C5が“H”の
ときAバスに出力される。38は、指数変換テー
ブル(EXP)で。RMにより構成される。D
バスを入力とし、C6が“H”のときその内容
をAバスに出力する。39は差分指数変換テーブ
ル(DEXP)で、RMにより構成され、Dバス
を入力とし、C6が“H”のとき、記憶内容を
Bバスに出力する。これら2つのテーブルの内容
については後述する。40はゲートであつてDバ
スを入力としC7が“H”のときBバスに出力
する。
32は、ポルタメントレジスタ(PRT)であ
つて、ポルタメントスピードを表わすコードをデ
ータバスより受け入れ、1の立上りで記憶
する。31は、ポルタメントデータ変換器であつ
て、周波数の増減データをポルタメントレジスタ
32の内容をもとにつくり出し、C1が“H”
のときにAバスに出力する。通常ポルタメントレ
ジスタ32の内容と同じものを出力する。42は
ビブラートデータ発生器で、ビブラート波形を表
わすコードを発生すると共に、C10が“H”
のときVIB(n)をBバスに、C11が“H”
のときVIB(n)をAバスに、C12が“H”
のときVIB(n−1)をBバスに出力する。VIB
(n)は、現在のビブラートデータを表わし、
VIB(n−1)は前回のビブラートデータを表わ
す。41はステータスフリツプフロツプ(SFF)
で、データバスDBのデータを6の立上り
で記憶し、その内容を、TPG22に供給する。
TPG22は、周波数制御装置が新たなデータ
を外部のCPU3に要求するとき割込信号INTと、
割込内容を示す割込ベクトルコードをデータバス
DB上に出力する。出力指令信号C1〜12が
“L”のときは、それらに対応しているメモリや
レジスタの出力は、高インピーダンスになつてA
バスやBバスに何ら影響を及ぼさないようにして
いる。
<データ構造>
つぎに、本発明で行なう周波数制御の指数変換
の機構と変換前と変換後のデータ構造について述
べる。
1オクターブは周波数比で1:2の関係であ
る。周波数Fに正比例する数値として、飛越数J
をつぎのように定義する。音源の1波形を記憶し
ているメモリが218ワード(サンプル)より成り
立つているとする。サンプルの読出周波数をcK
Hzとすると、1サンプルずつ全サンプルを読み出
す場合出力波形の周波数はc/218Hzとなる。こ
れは飛越数J=1に当る。飛越数Jに対して一般
的に周波数Fは
F=c/218×J (1)
と表わせる。
本発明では、1オクターブをセント尺度上で量
子化し、演算されたセント尺度で表わされた周波
数値を指数変換により、周波数に正比例する飛越
数に変換している。
指数変換の方法についてつぎに述べる。
1オクターブをセント(cent)で表わすと、1200
セントになる。2つの周波数FAとFBの比はセン
ト尺度CEではつぎのようになる。
CE(cent)=1200log2(FA/FB) (2)
周波数FA,FBの飛越数をJA,JBとすると
JBを平均律12半音階のCに対応するものとし、
かつその値を2048とし、JAをJと表わすと
となる。これを、CE=0〜1200(セント)の範囲
について書くと第3図Aのようになる。5式は曲
線であるがこれをつぎのように折線で近似する。
CE(0〜1200)を、12に等分すると、100セン
ト間隔になる。これは、12平均律の半音階に対応
する。100セント内をさらに8等分し、12.5セン
ト間隔とする。このようにすると、12×8=96の
点になる。これらの96の点
CEi=12.5×i(i=0〜L−1,L=96)
に対するJをJiとする。
iとi+1との間、12.5セントをさらに8等分
する。
CEi,j=12.5i+12.5/8j (7)
i=0〜L−1,L=96
j=0〜M−1,M=8
(7)式のCEi,j(j=1〜7)に対しては、直線補
間した値を用いる。すなわち Ji,jは次式となる。
一般的には
Ji,j=Jc〔2i/L+2i/L(21/L−1)j/M(9)
Jc:基準点での飛越数
L:1オクターブの分割数
M:直線補間区間内の分割数
i=0,1,2,……,L−1
j=0,1,2,……,M−1
と表わすことができる。
先に述べたように、L=96,M=8とすると
1200セント区間は、1.5625セント間隔で768点に
量子化される。誤差は±0.78125セント以下とな
る。この768点に対してアドレスを割りつける。
これをセントアドレスとする。つぎに、(8)式の
Ji,jを計算する方法について説明する。
第3図によれば、Jは、1オクターブに対し
て、2進12ビツトで表わされる。2048〜4096で表
わされている。CE=0〜100(セント)の範囲を
詳しく示したものが第3図Bである。100セント
内が12.5セントで等分されている。
(8)式は
と表わせる。iを2進化96進数で表わす。
96=4×3×8
であるから、上位2進2桁、中位を2進化3進
数、下位を2進3桁で表わすことができる。中位
は2ビツトであればよいから、合計7ビツトにな
る。jは2進3桁で表わされ、iの下位となる。
すなわち、1200セント内の96×8=768点は第4
図AのN3〜N0,S5〜S0の10ビツトのコードで表
わすことができる。このコードをセントアドレス
と呼ぶ。このうちN1とN0とが、2進化3進表示
となる。このような(i,j)の値に対して、
Ji,pの値96通りを、第2図のEXP38に用意す
る。アドレス96通り、それぞれ12ビツトとすると
96×12=1152ビツトのROMとなる。このJi,pは
(10)式の第1項に相当する。
つぎに、差分として、(10)式の第2項の一部であ
る
を第2図のDEXP39に用意する。DJi,jの最大
値は、i=95,j=7のときで、DJ95,7=25.784
になるから、DJi,jは5ビツトの2進数で表わせ
る。また、(i,j)は、96×8=768通りであ
る。したがつて、セントアドレス768通り、768×
5=3840ビツトのRMになる。
EXP38のROMに対するセントアドレス入力
は、第4図Aの{N3〜N0,S5〜S3}の7ビツ
ト、DEXP39のROMに対するアドレスすなわ
ちセントアドレスは、第4図Aの{N3〜N0,S5
〜S0}の10ビツトのコードにすればよい。EXP
38とDEXP39の出力を加算すれば、(10)式
のJi,jが2進数12桁の表示で得られる。
第4図Aは、セント尺度上に量子化されたピツ
チを表示する2進数すなわち拡張されたセントア
ドレスを表わしている。O4,O3,O2,O1,O0
は、オクターブを表わす。N3,N2,N1,N0は
1オクターブ内の12平均律半音階の各音(ノー
ト)を表わす。このうち(N1,N0)は2進化3
進数の(0,0),(0,1),(1,0)を表わ
し、(1,1)は発生しない。したがつて、(N3,
N2,N1,N0)は12進数となる。第5図に(N3
〜N0)と音階の対応を示す。S5,S4,S3,S2,
S1,S0は6ビツトの2進数で、半音区間を64等分
した各ピツチを表現する。1オクターブは、1200
セントで、半音は100セントであるから、{S5〜
S0}は、1.5625セント間隔で100セントの区間を
表現する。
第4図Bは、ND(n)のデータフオーマツト
で、下位4ビツトがノートを、上位4ビツトがオ
クターブを示す。ND(n)は、指定されるオクタ
ーブとノートをもつ楽音の基本周波数1に対応す
る。
第4図Cは、高調波性をもつた楽音に含まれる
各高調波成分の周波数Kの基本周波数1に対する
比をセントで表わした、ハーモニツクデータ
HMDKである。
HMDK=1200log2(K/1) (12)
(k=1,2,3,……,64)
を2進数で表わしたものである。{H12〜H0}の
13ビツトを用いると、±0.78125セントの精度で、
28=256次高調波まで表現できる。{H7,H6}は
{N1,N0}と同様2進化3進数表示である。
第4図Dは、非高調波性を表わすインハーモニ
シテイデータINHKのフオーマツトである。INH
は、第4図CのHMDデータからの何セントかの
ずれで表わすことにしているので、半音内の区間
を表現する6ビツトデータ{I5〜I0}で良い。
第4図Eは、ビブラートやグライドなどの過渡
的または定常的な変動をセント尺度で表現するも
のである。変動の巾を±100セント以内とすると
{V6〜V0}の7ビツトのコードで表わすことがで
きる。このうち、V6は符号ビツトになる。
これらの第4図に示されたデータから、所望の
飛越数Jを求める手順について説明する。まず、
各記号はつぎの意味を持つものとする。
(1) N(n):時刻nにおけるノートオクターブデ
ータに対するセントアドレス
(2) HMDK:k次の高調波数の基本周波数に対
するセント表示で2進表示したもの(差セント
アドレス)
HMDK=1200log2(K/1),K=
k1(k=1,2,3,……,64) (13)
(3) IHMk:k次の高調波周波数からの周波数の
ずれをセント表示で、かつ2進表示したもの。
(差セントアドレス
K=k1+dkとすると
INHk=1200log2(k1+dk/k1) (14)
を基本とするが、INHkが100セントを越える
ときには、取り扱い上、100セント以下の
INHkを求めるためにつぎのようになる。
INHk+p=1200log2k1+p1+(dk−p1)/k1+p
1(15)
(p=0,1,2,3,……,かつdk−p1
≧0)
すなわち、k次の高調波からdkだけずれたも
のであるが、これを(k+p)次高調波から
(dk−p1)だけ、ずれたものとみることを意味
する。
(4) VIB(n):時刻nにおけるビブラートやグライ
ドによる周波数の偏移を、セント表示し、かつ
2進表示したもの。(変調セントアドレス)
以上の変数から、k次高調波の周波数セント表
示すなわちセントアドレスを、記号LGJ(i,
j)で表わすと
LGJi,j=ND(n)+VIB(n)+HMDK+INHk
……(16)
となる。LGJi,jは、第4図Aのデータフオー
マツトを持つ。このうち{N3,N2,N1,N0,
S5,S4,S3,}の7ビツトは、96進数で、(10)式に
おけるiを表わす。{S2,S1,S0}の3ビツトは
同じくjを表わす。これらのコードを前述の
EXP38とDEXP39の指数変換テーブルと差
分指数変換テーブルのアドレスデータとして与え
ると、(10)式にしたがつた指数変換ができる。これ
を次式で表わす。
J*,j=EXP〔LGJi,0〕+DEXP〔LGJi,j〕
……(17)
第3図Aより、指数変換テーブルは1オクターブ
の範囲しか設けていない。Ji,*は、この範囲内
での値を示すものである。オクターブを越える範
囲にある場合は、第4図Aのオクターブデータ
{O4,O3,O2,O1,O0}にしたがつてJi,*をビ
ツトシフトすればよい。たとえば、
{O4〜O0}=(00011)
のときは、3ビツト上位へシフトすればよい。何
ビツトシフトするかについては、正弦波発生器9
のビツト位置に合わせるようにすればよい。
以上で、データ構造とそれにもとづく飛越数J
の計算の手順が明らかになつた。
(16)式、(17)式、(18)式を一気に実行する構成も実現
できるが、本発明の実施例(第2図)では、順次
手順を追つて実行するようにしている。(16)式、
(17)式、(18)式を手順を追つて実行するには、種々の
手法が考えられる。先に述べた第2図の構成によ
る手順を、第1表に示す。
The present invention relates to a frequency control device suitable for electronic musical instruments that generates data for expressing frequencies, and particularly to one that controls frequencies using a digital method. Conventionally, various proposals have been made for musical tone generators using digital systems. Among these, digital data of a sine wave or a musical sound waveform is stored in memory, and this is read out sequentially to create a continuous musical sound waveform, which is then multiplied by envelope data corresponding to an envelope signal. hand,
There is a device in which a musical tone signal from the rise to the fall of a sound is formed by changing the amplitude value. In order to change the frequency of the generated waveform, it is sufficient to skip over a predetermined number of samples and read each sample of the digital data, instead of reading each sample sequentially. If the jump number is J, the frequency can be set in direct proportion to J. Instructions on how to generate such signals were published in 1969 by THE MIT
The book “The Technology” published by PRESS
of Computer Music", pages 134 to 138. Also, the magazine IEEETrans.on Audio
and Electroacous-tics, Volume 19, No. 1, 48-58,
1971 Document A Digital Frequency Synthesizer”
shows the specific configuration. Japanese Patent Application No. 165189/1989 provides a more specific and practical system based on these known examples. For these musical tone synthesis methods, it is necessary to generate and supply the jump number J. The present invention relates to a method for generating and supplying this jumping number J, and is particularly devised to efficiently generate various frequencies. Next, the relationship between the method of the present invention and the conventional example will be described. Conventionally, music synthesizers generate a key voltage V K corresponding to each key on the keyboard, and then superimpose the voltage V F that sets the frequency and the vibrato voltage V V on this, and calculate 2V 1 = (V K + V F + V V ), and through an exponential converter, we obtain V O =K 1exp (V K + V F + V
Determine. When the voltage V F is oV, the key voltage V K
A frequency determined by , that is, a frequency corresponding to the musical scale (261.625 Hz for C 3 ) is generated. Normally, the standard key voltage V K is 1V per octave. When 1V is added as voltage V F ,
It rises one octave and generates 513.25Hz. This hits C 4 as well as the second harmonic of C 3 . If a voltage other than 1V is applied as the voltage V F , arbitrary harmonic components such as the third and fourth harmonic components can be obtained. The vibrato voltage V V modulates the frequency up and down around each of the above frequencies, but what is important here is that even if V K and V F have various values, the rate of frequency fluctuation is , the pitch fluctuation remains constant if V V is constant. Japanese Patent Laid-Open No. 81824/1984 is known as a method in which such a method is replaced with digital calculation. however,
Such conventional devices have drawbacks such as being unstable because they are made of analog circuits, and requiring a large number of highly accurate digital arithmetic units. The present invention solves these problems and provides a frequency control device that can be easily configured in practice. FIG. 1 is a block diagram of an electronic musical instrument employing the frequency control device of the present invention. 1 is a keyboard section, 2 is an operation section consisting of a tone tablet switch, a vibrato effect on/off switch, a volume for setting the depth of the vibrato effect, etc., and 3 is a central processing unit (CPU), which is used in computers etc. 4 is a read/write storage device (random access memory, usually
5 is a read-only storage device (read-only memory, usually called RM) in which a program that determines the operation of the CPU 3 is stored; 6 is a
A ROM 7 stores envelope parameters among parameters for synthesizing timbres, and a ROM 7 stores data related to frequencies among parameters for synthesizing timbres. 8 is a frequency control device of the present invention, 9 is the above-mentioned sine wave generator, 10 is an envelope data generator, 1
1 is a multiplier that multiplies the sine wave and envelope data; 12 is a time slot control device that adds predetermined results of time-division multiplexed multiplication results or replaces them with the order of time-division multiplexing; time division multiplexed phase modulator, 14
is a digital-to-analog converter, and 15 and 16 are electroacoustic transducers. Keyboard section 1, operation section 2, CPU 3, RAM 4,
ROM5, ROM6, ROM7, frequency control device 8, and envelope data generator 10 are coupled by a data bus, an address bus, and a control line. The method of connecting the data bus, address bus, and control line in this way is as follows:
This is a well-known method for configuring minicomputers and microcomputers. Eight to 16 data buses are used, and data is transmitted and received on these bus lines not in one direction but in multiple directions in a time-division manner. A plurality of address buses, for example 16, are prepared, and normally the CPU 3 outputs the address code, and other parts receive the address code. As the control line, a memory request line (), an I/request line (), a read line (), a write line (), etc. are usually used. indicates reading and writing memory,
IORQ indicates the retrieval of the contents of the input/output device (I/), indicates the timing to read data from the memory or I/, and indicates the timing to write data to the memory or I/. Using such a control line,
An example is the microprocessor Z80 from Zilog. Next, the operation of the electronic musical instrument shown in FIG. 1 will be described. The keyboard section 1 is configured such that a plurality of key switches are divided into a plurality of groups and the N-FF states of the key switches in the group can be sent to the data bus all at once. For example, for a 5-octave keyboard
60 keys in 10 groups of 6 keys (half octave) and 1 key
Divide into 11 groups and assign one address code to each group. When an address code indicating one of the above groups arrives on the address line,
When RD is applied, the keyboard section 1 decodes the address code and outputs 6-bit or 1-bit data indicating ON-FF of the key switches in the corresponding group to the data bus. These can be constructed using decoders, bus drivers and some gate circuits. Of the operating section 2, the tablet switch can have the same configuration as the keyboard section 1. Regarding the setting status of the volume, the voltage output from the volume is converted into a digital code by an analog-to-digital converter, and this is converted into an address code and a control line.
Read by IORQ. CPU3 reads the instruction code from the address of RM5 that corresponds to the code of the internal program counter, decodes it, performs arithmetic operations, logical operations, reads and writes data, and jumps instructions by changing the contents of the program counter. Perform tasks such as The steps for these tasks are RM
It is written in 5. First, the CPU 3 reads a command for importing data of the keyboard section 1 from the ROM 5, and imports codes indicating N-FF of each key of the keyboard section 1 for each group. Then, the pressed key code is assigned to a finite channel of the musical tone generator. Next, the CPU 3 sequentially reads a group of instructions from the RM 5 for importing data from the operating section 2, decodes them, outputs the address code and control signal corresponding to the operating section 2, and connects the operating section to the data bus. It outputs the code that expresses the switch and volume status in step 2, and
Load within 3. Then, the CPU 3 knows which tone of musical tone signal should be synthesized. Now that it has become clear which channel of the musical tone generation section should generate which tone at which frequency, the CPU 3 selects the desired tone from the ROM 7 which stores data regarding the frequency of each tone. The address code storing the frequency parameters and the control signals MREQ and RD are output, and the desired frequency parameters are read out onto the data bus, taken into the CPU 3, and written into the frequency control device 8. In order to write, the frequency control device 8
CPU3 outputs the address code corresponding to the data register provided inside the CPU3, and at the same time
When WR is output, data representing the frequency parameter being output on the data bus at the rising edge of the signal is written into the data register. Next, timbre parameters representing the content of the timbre to be output are read from the RM 6 and written into a register inside the envelope generator 10. Next, when a sound output command is given to both the frequency control device 8 and the envelope generator 10, the frequency control device 8 gives the jump number J to the sine wave generator 9, and the envelope generator 10 generates envelope data. . The sine wave data output from the sine wave generator 9 and the envelope data are multiplied to give an envelope to the sine wave. The sine wave data and envelope data are generated by being time-division multiplexed, respectively. Time division multiplexing is, for example, 160 multiplexed, 20 sine waves are assigned to each channel, and 8 channels are provided. Normally, one musical tone is synthesized by combining 20 sine waves.
Therefore, as known from the Fourier series formula, 20 sine wave data will be added. Data addition between time slots for this purpose is performed by the time slot converter 12. The time slot converter adds predetermined data from among the sine wave data strings modulated with envelope data, which are time-division multiplexed and input into 160 time slots to reduce the number of time slots, or This converts time slots like the time division multiplex converter of Japanese Patent No. 57-202790. The time-division multi-real phase modulator 13 is based on the patent application filed in 1983-
Like No. 182083 “Digital musical tone modulation device”,
Multiple types of modulation are performed simultaneously using time division multiplexing. The output of the time-division multiplexing phase modulation device 13 is converted into an analog signal by an analog-to-digital converter 14 and output from electroacoustic transducers 15 and 16. Although not shown in FIG. 1, the time slot converter 12 and time division multiplexing phase modulation device 13 are also connected to the CPU 3 via address buses, data buses, and control lines, and are controlled by the operating section 2. The time slot conversion and modulation conditions can be changed and set in accordance with the tone color and modulation effect settings that are made at the same time. In the frequency control of the present invention, first, the note octave of each key, the frequency of each harmonic, etc. are arranged on a cent scale and processed. The note and octave position of the fundamental wave of the musical tone to be output, the position of harmonics relative to the fundamental wave, the relative shift of non-harmonics, etc. are expressed in cents, and the cent address can be added or subtracted on the cent scale. Then, the cent address for the cent value of the actual frequency component is obtained, and this is subjected to exponential conversion. In order to digitize the system and to obtain the jump number J for a large number of spectra, consideration is given to quantizing and handling one octave on the cent scale and performing arithmetic processing by time division multiplexing. Also, the timing is considered so that the calculated J is appropriately transferred to the sine wave generator 9. The present invention relates to a frequency control device 8 as a part of an electronic musical instrument as shown in FIG. It is. One embodiment is shown in FIG. The frequency control device in Fig. 2 includes a data bus DB,
The address bus ADR is connected to the CPU 3 through the control line and the chip select line CS to receive frequency parameters, and the address bus is connected to the microcomputer interface circuit (MIF) 25.
The ADR code is decoded and written to the internal register group, and the necessary multiple J i are calculated through the internally provided mechanism for calculating the jump number J. ,
The signal is supplied to a sine wave generator 9. First, the constituent elements will be explained. 21 is a program counter that supplies timing pulses;
(PC) 22 is a timing pulse generator (TPG) that extracts logic from timing pulses to create necessary address codes and receives control flag (FLG) signals to generate control signals; 23 is a timing pulse generator 24 is a sequencer (SEQ) consisting of RM that stores the contents and procedures of arithmetic operations and discursive operations, which will be described later. Command signal (OC1~12), write command signal (0~
3) It is an instruction decoder that outputs an operation command signal (P code), etc. 25 is the microcomputer interface circuit (MIF) described earlier.
26 is an arithmetic unit (ALU) that performs addition, subtraction, and comparison between two inputs, the A bus and the B bus, outputs the operation result to the C bus, and records the sign, upper bit, etc. of the operation result. Output as FLG.
FLG is supplied to TPG22. 27 is the working register (WREG)
It consists of two words of memory, WREG1 and WREG2, and accepts input from the C bus and supplies output to the B bus. AD2 selects one of the two words and writes it at the rising edge of 1, and provides an output when C8 is "H". 28 is a RAM consisting of 16 words x 15 bits, which receives input from the C bus.
Provides output to the bus. The 160 words are divided into 8 channels of 20 words each, and any one word within the 20 words can be converted into a 5-bit address code AD.
1, select any one of the 8 channels with the 3-bit address code AD4, write the data on the C bus at the rising edge of 2, and the output remains on the D bus. However, the upper five bits of the output are supplied to the buffer memory 29. The buffer memory 29 is a 160 word x 17 bit RAM, and accepts the data on the C bus and the upper 5 bits of the RAM 28 as input. The 160 words are divided into 8 channels of 20 words each.
One word out of 20 words is selected with address code AD3, one of the eight channels is selected with address code AD4, input data is written at the rising edge of 3, and output when OC9 is "H".
The output of the buffer memory 29 is the octave shifter 3
0. The code of the upper 5 bits of the buffer memory 29 causes the lower data to be
It is bit shifted by a predetermined number of bits and output. This output is transferred to a register corresponding to a predetermined address among the registers provided inside the sine wave generator 9 and storing the jump number. 33 is the note octave register (ND
(n)) to get the latest note octave data,
It is accepted from the CPU 3 via the data bus DB and output to the A bus when necessary. Write is performed with 2, and read with OC2. 34 is a note octave register (ND(n-1)) which receives the previous note octave data from the CPU 3 via the data bus DB, and outputs it to the B bus when necessary. It also receives and stores intermediate processing data from the B bus. Write data from DB using 3, write from B bus using WRO, and output to B bus using C3. 35
is a harmonic data memory (HMD), which is composed of 64 words x 13 bits RM.
Which of the 64 words is selected is determined by a 6-bit code output from the partial number memory 36. The partial number memory 36 is
Data bus DB with 20 words x 6 bits RAM
Accept input from. Select 1 word out of 20 words with address code AD1 and write at the rising edge of 4. The output is always supplied to harmonic data memory 35. The output of the harmonic data memory is output to the A bus when C4 is "H". 37 is non-harmonic memory (INH),
It consists of 20 words x 6 bits RAM.
1 word out of 20 words is address code AD
1 is selected, data bus is selected at the rising edge of 5.
Data on the DB is written and output to the A bus when C5 is "H". 38 is the exponent conversion table (EXP). Constructed by RM. D
The bus is input, and when C6 is "H", the contents are output to the A bus. Reference numeral 39 denotes a differential index conversion table (DEXP), which is composed of RM, receives the D bus as an input, and outputs the stored contents to the B bus when C6 is "H". The contents of these two tables will be described later. 40 is a gate which inputs the D bus and outputs to the B bus when C7 is "H". 32 is a portamento register (PRT) which accepts a code representing portamento speed from the data bus and stores it at the rising edge of 1. 31 is a portamento data converter, which generates frequency increase/decrease data based on the contents of the portamento register 32, and when C1 is "H"
Output to the A bus when . The same contents as the normal portamento register 32 are output. 42 is a vibrato data generator that generates a code representing a vibrato waveform, and C10 is set to "H".
When VIB(n) is connected to B bus, C11 is “H”
When VIB(n) is connected to the A bus, C12 is “H”
When , VIB (n-1) is output to the B bus. VIB
(n) represents the current vibrato data,
VIB(n-1) represents the previous vibrato data. 41 is status flip-flop (SFF)
Then, the data on the data bus DB is stored at the rising edge of 6, and the contents are supplied to the TPG 22. The TPG 22 outputs an interrupt signal INT when the frequency control device requests new data from the external CPU 3.
The interrupt vector code indicating the interrupt contents is sent to the data bus.
Output on DB. When the output command signals C1 to C12 are "L", the outputs of the memories and registers corresponding to them become high impedance and A
We are trying not to have any impact on buses or B buses. <Data Structure> Next, the mechanism of index conversion for frequency control performed in the present invention and the data structure before and after conversion will be described. One octave has a frequency ratio of 1:2. As a numerical value directly proportional to the frequency F, the jumping number J
is defined as follows. Assume that the memory that stores one waveform of a sound source consists of 218 words (samples). Sample readout frequency cK
If it is Hz, the frequency of the output waveform will be c/2 18 Hz when all samples are read out one sample at a time. This corresponds to the jump number J=1. Generally, the frequency F for the jump number J can be expressed as F=c/2 18 ×J (1). In the present invention, one octave is quantized on the cent scale, and the calculated frequency value expressed on the cent scale is converted into an interlaced number directly proportional to the frequency by exponential conversion. The method of index conversion will be described below. If one octave is expressed in cents, it is 1200.
Become a cent. The ratio of the two frequencies F A and F B in cent scale CE is as follows. CE (cent) = 1200log 2 (F A /F B ) (2) If the jump numbers of frequencies F A and F B are J A and J B , Let J B correspond to C on the equal-tempered 12 chromatic scale,
And if its value is 2048 and J A is expressed as J, then becomes. If this is written for the range of CE = 0 to 1200 (cents), it will look like Figure 3 A. Equation 5 is a curved line, but it is approximated by a broken line as follows. If you divide CE (0-1200) into 12 equal parts, you will get 100 cent intervals. This corresponds to the chromatic scale of 12 equal temperaments. Divide the 100 cents into 8 equal parts, making them 12.5 cents apart. Doing this will result in 12 x 8 = 96 points. Let J be J for these 96 points CE i =12.5×i (i=0 to L-1, L=96). Between i and i+1, further divide 12.5 cents into 8 equal parts. CE i , j = 12.5i + 12.5/8j (7) i = 0 ~ L-1, L = 96 j = 0 ~ M-1, M = 8 CE i , j (j = 1 ~ For 7), linearly interpolated values are used. In other words, J i and j are as follows. In general, J i , j = J c [2 i/L + 2 i/L (2 1/L - 1) j/M(9) J c : Number of jumps at the reference point L: Number of divisions in one octave M: number of divisions within the linear interpolation interval i=0, 1, 2,..., L-1 j=0, 1, 2,..., M-1. As mentioned earlier, if L=96 and M=8
The 1200 cent interval is quantized into 768 points at intervals of 1.5625 cents. The error will be less than ±0.78125 cents. Assign addresses to these 768 points.
Let this be the cent address. Next, in equation (8),
We will explain how to calculate J i and j . According to FIG. 3, J is represented by 12 binary bits for one octave. It is represented by 2048-4096. Figure 3B shows the range of CE=0 to 100 (cents) in detail. 100 cents is divided equally into 12.5 cents. Equation (8) is It can be expressed as Express i as a binary coded 96-decimal number. Since 96 = 4 x 3 x 8, the upper digits can be represented by two binary digits, the middle digit by a binary coded ternary number, and the lower part by three binary digits. The middle bit only needs to be 2 bits, so the total is 7 bits. j is represented by three binary digits and is the lower order of i.
In other words, 96 x 8 = 768 points within 1200 cents is the 4th point.
It can be represented by 10-bit codes N3 to N0 and S5 to S0 in Figure A. This code is called a cent address. Of these, N 1 and N 0 are expressed in binary coded ternary notation. For such values of (i, j),
96 values of J i and p are prepared in EXP 38 in FIG. Assuming 96 addresses, each with 12 bits,
96 x 12 = 1152 bits of ROM. This J i , p is
This corresponds to the first term of equation (10). Next, as a difference, a part of the second term of equation (10) Prepare in DEXP39 in Figure 2. The maximum value of DJ i , j is when i = 95, j = 7, DJ 95 , 7 = 25.784
Therefore, DJ i and j can be expressed as 5-bit binary numbers. Furthermore, (i, j) has 96×8=768 ways. Therefore, St. Address 768 Street, 768×
5 = 3840 bits of RM. The cent address input to the ROM of the EXP38 is the 7 bits {N 3 to N 0 , S 5 to S 3 } in FIG. N 0 , S 5
~S 0 } 10-bit code. EXP
By adding the outputs of 38 and DEXP 39, J i , j in equation (10) can be obtained as a 12-digit binary number. FIG. 4A represents a binary number or expanded cents address displaying quantized pitches on a cents scale. O 4 , O 3 , O 2 , O 1 , O 0
represents an octave. N 3 , N 2 , N 1 , and N 0 represent each note of the 12 equal-tempered chromatic scale within one octave. Of these, (N 1 , N 0 ) is binary evolution 3
Represents base numbers (0, 0), (0, 1), (1, 0), and (1, 1) does not occur. Therefore, (N 3 ,
N 2 , N 1 , N 0 ) are decimal numbers. In Figure 5 (N 3
~N 0 ) and the musical scale. S5 , S4 , S3 , S2 ,
S 1 and S 0 are 6-bit binary numbers that represent each pitch of the semitone interval divided into 64 equal parts. 1 octave is 1200
Since a semitone is a cent and a semitone is 100 cents, {S 5 ~
S 0 } represents an interval of 100 cents at intervals of 1.5625 cents. FIG. 4B shows the data format of ND(n), where the lower 4 bits indicate a note and the upper 4 bits indicate an octave. ND(n) corresponds to the fundamental frequency 1 of the musical tone with the specified octave and note. Figure 4C shows harmonic data representing the ratio of the frequency K of each harmonic component included in a harmonic musical tone to the fundamental frequency 1 in cents.
This is HMD K. HMD K = 1200log 2 ( K / 1 ) (12) (k = 1, 2, 3, ..., 64) expressed in binary. {H 12 ~ H 0 }
Using 13 bits, the accuracy is ±0.78125 cents,
Can express up to 2 8 = 256th harmonic. {H 7 , H 6 } are expressed in binary coded ternary numbers like {N 1 , N 0 }. FIG. 4D is a format of inharmonicity data INH K representing non-harmonicity. INH
is expressed as a deviation of several cents from the HMD data in FIG. FIG. 4E expresses transient or steady fluctuations such as vibrato and glide on a cent scale. If the range of fluctuation is within ±100 cents, it can be represented by a 7-bit code {V 6 to V 0 }. Of these, V6 becomes the sign bit. The procedure for determining the desired jump number J from the data shown in FIG. 4 will be explained. first,
Each symbol shall have the following meaning. (1) N(n): Cent address for note octave data at time n (2) HMD K : Binary representation of cents for the fundamental frequency of the kth harmonic number (difference cent address) HMD K = 1200log 2 ( K / 1 ), K = k 1 (k = 1, 2, 3, ..., 64) (13) (3) IHM k : Frequency deviation from the kth harmonic frequency in cents and Displayed in binary.
(Basically, if the difference cent address K = k 1 + d k , then INH k = 1200 log 2 (k 1 + d k /k 1 ) (14), but when INH k exceeds 100 cents, it must be less than 100 cents for handling purposes. of
To find INH k , proceed as follows. INH k+p = 1200log 2 k 1 + p 1 + (d k − p 1 )/k 1 + p
1 (15) (p=0, 1, 2, 3, ..., and d k −p 1
≧0) That is, it is shifted by d k from the k-th harmonic, but this means that it is considered to be shifted by (d k −p 1 ) from the (k+p)-th harmonic. (4) VIB(n): Frequency deviation due to vibrato or glide at time n expressed in cents and in binary. (Modulation cent address) From the above variables, the frequency cent representation of the k-th harmonic, that is, the cent address, can be determined with the symbol LGJ (i,
j), LGJ i , j = ND(n) + VIB(n) + HMD K + INH k
...(16) becomes. LGJ i , j has the data format shown in FIG. 4A. Among these, {N 3 , N 2 , N 1 , N 0 ,
The 7 bits of S 5 , S 4 , S 3 , } are in 96-decimal notation and represent i in equation (10). Similarly, the three bits {S 2 , S 1 , S 0 } represent j. These codes mentioned above
When given as address data for the exponent conversion table and differential exponent conversion table for EXP38 and DEXP39, exponent conversion can be performed according to equation (10). This is expressed by the following formula. J*, j = EXP [LGJ i , 0 ] + DEXP [LGJ i , j ]
...(17) From Figure 3A, the exponent conversion table has a range of only one octave. J i , * indicates a value within this range. If the range exceeds an octave, J i ,* may be bit-shifted according to the octave data {O 4 , O 3 , O 2 , O 1 , O 0 } in FIG. 4A. For example, when {O 4 to O 0 }=(00011), it is sufficient to shift 3 bits upward. As for how many bits to shift, use the sine wave generator 9
All you have to do is match it to the bit position. The above describes the data structure and the number of jumps J based on it.
The calculation procedure has been clarified. Although it is possible to implement a configuration in which equations (16), (17), and (18) are executed all at once, in the embodiment of the present invention (FIG. 2), they are executed in sequence. (16) formula,
Various methods can be considered to execute equations (17) and (18) step by step. The procedure according to the configuration shown in FIG. 2 described above is shown in Table 1.
【表】【table】
【表】
第1表において、命令群A,B,Cのうち、A
とBが、8チヤンネル、各チヤンネルで20本のス
ペクトルに対する飛越数Jを計算する手順を示し
ている。命令群Aは命令4〜7、命令群Bは命令
8〜11により成つている。各命令の内容は、命
令内容により示される。たとえば命令4は、N
D(n)とVIB(n)とを加算し、ワーキングレジスタ
WREG2に格納することを意味する。命令5は
ワーキングレジスタWREG2の内容と、ハーモ
ニツクデータHMDIとを読み出してそれらを加
えてWREG2に格納する。命令6は、WREG2
の内容と、インハーモニシテイデータINHIとを
加算し、レジスタLGJ(K,I)に格納する。
命令7は、レジスタLGJ(K,I)の内容をア
ドレスコードとして、指数変換テーブルEXP2
8と差分指数変換テーブルDEXP39に与えて、
それぞれの出力を加えて、バツフアメモリBUF
(K,I)29に格納する。ここで、Iは、後述
する処理タイムスロツト(PTS)を表わすと共
に、各チヤンネルにおけるスペクトルの番号をも
表わしている。I=1,2,……,20である。
Kはチヤンネルタイムスロツト(CHS)を表わ
している。K=1,2,……,8である。CHS
については後述する。
命令群Bも第1表より同様にその演算内容の意
味を読み取ることができる。命令8における△は
零としておく。命令群Aは、ノートオクターブデ
ータND(n)が変更されたときに実行され、それ
以降は、命令群Bが実行される。命令群Bでは、
ND(n),HMDI,INHIが変化しないので、こ
れらの計算をせず、前回の値LGJ(K,I)か
らVIB(n−1)を引いてVIB(n)の新しい値に対
しての計算を行ない指数変換を実行する。ノート
オクターブデータND(n)が更新されると一度命
令群Aにもどりそのあと再び命令群Bを実行す
る。
第1表において、ITSは命令タイムスロツト
で、ITS1〜4まであり、命令0,4,8はITS
1で実行されることを示している。また、それぞ
れの命令実行時において活性化される書き込み
線、書き込みパルス、出力コントロール線を示し
ている。
以上の命令を実行するには、チヤンネルタイム
スロツトCHS、処理タイムスロツトPTS、命令
タイムスロツトITSの所定の時刻に、第2図のプ
ログラムカウンタ21、タイミングパルスジエネ
レータ22、シーケンサ23、インストラクシヨ
ンデコーダ24が動作する必要がある。以下に、
タイミングについて説明する。
第6図は、第2図の実施例のタイミングを示す
図である。第6図Aは、正弦波波形のサンプル並
びを示すもので、ある1つの正弦波波形のサンプ
ル周期は20μsである。第6図Bは、20μsの中を拡
大したもので、この中に8×20=160個のタイム
スロツトがあり、160個のサンプルが存在する。
各サンプルは、125nsきざみで処理される。チヤ
ンネル1(CH1)には、20個のサンプルがあ
る。CH2〜8も同様である。一方、第6図C
は、Aに同期しながら、飛越数Jの計算を行なう
タイミングである。160μsを単位とするチヤンネ
ルタイムスロツトCHSが1〜8まで設けられて
いる。CHS1では、チヤンネル1のJ計算が行
なわれ、以下順に対応するチヤンネルのJ計算が
行なわれる。160×8=1280μs(1.28ms)周期で
各チヤンネルのJ計算が繰り返される。第6図D
は、各チヤンネルタイムスロツトCHSの内部を
表わしたもので、例として、CHS1を拡大して
いる。CHS1の中には、5μsを単位として、処理
タイムスロツトPTSが1〜32まである。
PTSI,I=1〜20では、チヤンネル1におけ
る、20個のスペクトル(正弦波形)に対応する周
波数を決める飛越数を計算する。そして、PTS
21の前半の2.5μsにおいて、計算された20個の
Jの値を第6図Fに示すように125nsきざみで、
正弦波発生器9(第1図)へ転送する。この転送
のタイミングは、CHS1〜8で異なる。たとえ
ば、CHS8ではPST24の後半で実行される。
第6図Eは、各処理タイムスロツトPTS1〜2
0の中味を拡大したものである。PTS1〜20
は、それぞれ、命令タイムスロツトITS1〜4の
4つの部分に分かれている。それぞれは1.25μsの
長さである。これらの命令タイムスロツトITSに
おいて前記第1表の命令が実行される。PTS1
〜20の間は、第2図の実施例において、ALU
26を中心とする演算が行なわれる。PTS21
〜32の間に、第2図におけるMIF25を中心
とするデータの新たな書き込みをデータバスDB
を介して行ない、かつ、VIB(n),VIB(n−1)
データの更新を行なう。
第6図の如きタイミングをつくり出す方法とい
しては種々のものがある。第7図と第8図は、そ
の一例を示している。第7図はタイミングカウン
タで、51は14段のカウンタでCKを入力とし、
P0〜P13を出力する。P0〜P2は2進化5進のカウ
ントを行ない、P3〜P13は2進の計数を行なう。
{P5,P4}は、命令タイムスロツトITS1〜4を
表わすコード、{P10〜P6}の5ビツトは処理タイ
ムスロツトPTS1〜32を表わすコード、{P13,
P12,P11}は、チヤンネルタイムスロツトCH1
〜8を表わす3ビツトのコードに相当する。カウ
ンタ52は5段より成る20進カウンタで、{Q4,
Q3,Q2,Q1,Q0}を出力する。カウンタ51と
52は、同期している。カウンタ51と52の出
力より第8図に示すタイミングパルスがTPG2
2の内部でつくられる。CKは、125ns(8MHz)の
周波数である。P1,P2,3,4,5より、
WRC,IST1〜4,1〜4が得られる。
IST1〜4信号は、第2図の出力指令信号C1
〜12をつくり出すもとになる信号、1〜
WRC4は書き込み指令信号0〜3をつくり
出す元になる信号である。
第9図は、バツフアメモリ29に加えられるア
ドレスコードAD3とAD4、出力指令信号C
9、書込指令信号3を発生させる回路例であ
る。アドレスコードAD4は{P13,P12,P11},
AD3は、{P10〜P16}か{Q4〜Q0}をセレクタ
69で選択した一方である。3は、インバー
ト入力のアンドゲート70とインバート付オアゲ
ート71により作られた処理タイムスロツト
PTS1〜20におけるITS4に対応する4で
ある。アンドゲート60,61,62,63は、
{P10,P9,P8}={1,0,1}を検出する。こ
れは、PTS21〜24に相当する。このときは
セレクタ69はQ4〜Q0を選択する。EXRゲー
ト64,65,66は{P7,P6,P5}と{P13,
P12,P11}の一致判定を行なう。アンドゲート6
7はPTS21〜24の中でCHS番号に一致した
PTSの半区間を選択し、出力が“H”のときに
OC9を出力する。したがつて、まとめると、
PTS1〜20の中のITS4において、AD4と
AD3はそれぞれKとIを指定し、ITS4におい
て3を出力し、第1表の命令7または11の
バツフアメモリ29(BUF(K,I))への書き
込みを行なう。PTS21〜24の間のCHS=K
に対応する2.5μsの間、C9は“H”となり、
BUF(K,I)のI=1〜20の内容が、アドレ
スコードAD4とAD3にしたがつて出力される。
第10図は、第2図におけるシーケンサ23が
記憶している命令コードのフオーマツトの一例を
示すものである。操作用のPコード2ビツト、
データの転送または格納先を表わすデステイネー
シヨンコード3ビツト、データを取り出してくる
レジスタを示すソース1コード3ビツト、ソース
2コード4ビツトより成る。それぞれのコードの
意味を、第10図B〜Eに示している。Pコー
ドは、ALU26の機能を指定する。第1表に示
した12通りの命令の演算は、第10図の命令コー
ドによつて書き表わされる。第10図EのZER
Oは、AバスにZERを出力させることを意味
する。
第9図に例示したと同様の考え方で第10図の
命令コードと第1表のCHS,PTS,ITS、書き
込み線、出力コントロール線などにもとづいて、
インストラクシヨンデコーダ24や必要な制御信
号やタイミングパルスを発生させる回路を設計す
ることができる。
第11図は、第1表の命令群AとBの実行切り
替えのタイミングを示すものである。上から、チ
ヤンネルタイムスロツト、演算実行、J転送、割
込パルス、データ転送、KNフラグが示されて
いる。演算AまたはBは、処理タイムスロツト
PTS1〜20(第6図)で、20回実行される。
20回目の最終時に割込パルスが、第2図の
TPG22より、第1図のCPU3に出力される。
このとき、同時に、割込ベクタとして、CHS8
を示すコード{P13,P12,P11}が、第2図のデ
ータバスDBに出力される。CPU3は、この割込
ベクタ{P13,P12,P11}を読み取り、つぎの
CHSが1であることを知り、チヤンネル1の出
すべき音高が変化している場合、データ転送を行
なう。データ転送は、CPU3のデータバスから
第2図のデータバスDBへ行なわれる。そして、
ND(n)33,PN36,INH37およびステ
ータスFF41に所定のデータを書き込む。そし
て、とくに、ステータスFFの中に含まれるK
Nフラグフリツプフロツプ(FF)をセツトする。
KNフラグは、CHS1に対応する音の高さが
変更されたことを示す。KNフラグが“1”の
ときは、命令群Aが読み出されてCHS1の間に
実行される。実行が終ると再び、割込パルスが発
生し、CHS1を示す割込ベクタが出力される。
同時にKNフラグFFはリセツトされる。割込
パルスと割込ベクタ{P13,P12,P11}に対
応してCPU3は、つぎのCHS2で前回の音高の
ままか、どうかを判断し、同じ音高を出すべきと
きはデータ転送が行なわれない。したがつてK
Nフラグは“0”のままである。このときは、命
令群Bが20回実行される。
命令群Aは、新たなND(n)データをもとに、
Jを算出するプログラムで、命令群Bは、前回の
Jに対してビブラートデータの変化のみを修正す
る命令群である。命令群AとBの読み出しと切り
替えは、第7図のカウンタ51の処理タイムスロ
ツトコード{P10〜P6}がPTS1〜20を示す時
間内で、命令タイムスロツトITS1〜4に対応し
て命令群AとBを読み出し、KNフラグで一方
を選して出力するようにすれば行なえる。
CPU3から本発明の周波数制御装置へ転送す
べきデータ量は、第2図の実施例においては、N
OD(n)1ワード、PNが20ワード、INHが20ワ
ード、ステータスFF用1ワード、PRT用1ワー
ドで計43ワードで良い。
上記説明では、ビブラートデータ発生器42を
8チヤンネルに対して共通の1個とした。グライ
ド効果の場合には、グライドデータGL(n,K)
とGL(n−1,K),(K=1,2,……,8)を
各チヤンネルに対して独立に備えて、各CHS1
〜8に対応して、それぞれのデータを出力させる
ようにすれば、チヤンネルごとに独立のグライド
がかけられる。
上記説明では、バツフアメモリ29として、
160ワード用意したが、一度の転送は20ワード単
位で行なわれるから、20ワード用意するようにし
てもよい。
第2図のパーシヤル番号メモリ36とハーモニ
ツクデータメモリ35については、前者が1ワー
ド当り13ビツト、後者が1ワード当り6ビツトで
良い。最大高調波次数を64としたが、これを増加
させるときには、パーシヤル番号メモリのワード
数64を増加させ、かつ、ハーモニツクデータの1
ワードを6ビツトからさらに増やせばよい。ハー
モニツクデータを直接CPU3から転送するよう
にしてもよいが、第2図の実施例の方が転送デー
タ量が少なくてすむ。また、本発明の実施例で
は、多数の高調波次数のうち一部を省略して、歯
抜け状の周波数制御値である飛越数Jを発生させ
ることができる。また、パーシヤル番号メモリ3
6の20ワードのRAMには、別のパーシヤル番号
を与えるように説明したが、任意の複数ワードに
同じパーシヤル番号を格納し、非高調波メモリ3
7に、少し異なつたINHデータを書き込むと、
非常に近い周波数の2つ以上の周波数成分の発生
が可能になる。すなわちコーラス効果が得られ
る。
鍵盤楽器のうちでもピアノでは、鍵盤の音域に
対して低域ではピツチが下がり気味、高域ではピ
ツチが上がり気味であつて、1オクターブが正確
に1:2の周波数比になつていない。この現象を
ピツチエクステンドと呼ぶことができる。このた
めには、このずれを発生させるためのRMを設
け、このRMを、ND(n)のデータによりアク
セスして、ノートオクターブに対応するずれの量
を出力させ、この量を差分アドレスとしてALU
26で加えるようにしてもよい。また、非高調波
メモリ37に書き込むデータに、上記ずれを含ま
せることもできる。
なお、非高調波性をもたない楽音を発生させる
には、INHデータとしてゼロ値を書き込めばよ
いことは言うまでもない。
上記説明では、データフオーマツトとして一部
に2進化3進表示するようにした。この代りに2
進化12進化、2進化6進などの表示も可能であ
る。また、完全な2進表示でデータを表示しかつ
演算し、最後にこれを、ノートデータの部分を含
むより高位の桁について、2進化3進変換するこ
とにより、オクターブデータを得るようにしても
よい。このためには2−3進変換ROMを設けれ
ばよい。
上記第2図の実施例では、ND(n)用のレジス
タを1個のみとした。これらのレジスタやRAM
の数を8チヤンネル分設ければ、演算手順は、A
群だけで良くなる。このように、構成と演算手順
とには関連があり、本実施例に限らず種々のもの
があるが、これらの説明については省略する。
上記説明では、正弦波合成のための飛越数Jを
計算する手順と構成として述べたが、正弦波以外
の波形を読み出す方式の波形発生器のための、周
波数制御にも使うことができる。たとえば、20本
の高調波成分でなく、1つの波形に対してJを1
つだけ発生させる場合にも上記と同様の考え方
で、最適構成ができる。
<ポルタメント効果>
第2図の実施例において、ポルタメント効果に
対応して、飛越数Jを徐々に変化させることもで
きるようにしている。第2図の実施例では、1チ
ヤンネルすなわちCHS1についてのみポルタメ
ントがかかるようにしたものを示している。
まず先述のとおり、ポルタメントモードでは、
今回のノートオクターブデータがND(n)33
に、前回のノートオクターブデータがND(n
−1)34に格納される。と同時に、ポルタメン
トスピードと押鍵間隔ND(n)−ND(n−1)
に対応する増分を表わすデータがPRT32に格
納される。このデータはそのままあるいは若干の
変換を受けてポルタメント変換器において格納さ
れる。
第1表の命令群Cは、ポルタメントの増減判別
を行なう。命令0は、前回のND(n−1)に
増分△を加える。命令1は、その結果が、目標値
であるND(n)に到達したか、丁度一致したか、
越えたかを、比較判断する。CPはcompareの意
味である。この比較の結果、ALU26は、その
内部のフラグFLGを設定する。ALU26のフラ
グFLGとしては、ゼロフラグZと符号フラグS
を設ける。これらのフラグは、通常の加減算器に
付属して設けられ、ゼロフラグZは演算結果が全
ビツト共“0”のときに“1”となり、それ以外
では“0”になるフリツプフロツプ、符号フラグ
Sは、演算結果の最上位ビツトが“1”のときに
“1”となり、それ以外では“0”になるフリツ
プフロツプで構成される。命令1の比較結果と、
増分△の符号を表わす△Sとにより、命令2と3
の一方が実行される。命令2は、現状のノートオ
クターブデータND(n−1)に△を加算した
ものを、新たなノートオクターブデータND
(n−1)として格納する。命令3は、最終目標
であるND(n)を、新たなND(n−1)とし
て格納する。以上の命令群Cによつて、ポルタメ
ント効果において、増分△を加算することにより
ピツチが目標のノートオクターブデータND(n)
に達していないか、丁度か、あるいは目標値を越
えてしまうかを判断し、その結果にもとづいて、
基本波や高調波のセント尺度上の周波数を増分△
だけ増やす命令群Bを実行するか、あるいは、目
標値ND(n)にもとづく到達点での演算を行なう
命令群Aを実行するかを選択させる。
第12図は、3つのフラグ△S,Z,Sの組み
合わせ状態により、命令0〜11のうち実行され
るものがどれになるかを示したものである。命令
0と1は毎回実行される。命令1における演算結
果であるフラグZ,Sと△Sとにより、命令3と
命令群A(命令4〜7)とが実行される場合と、
命令2と命令群B(命令8〜11)とが実行され
る場合とに分類される。前者は、増分△の累算に
より目標値ND(n)に丁度達するか、越えてしま
う場合である。後者は、増分△を累算しても、ま
だ目標値ND(n)に達しない場合である。
第13図はポルタメントモードにおけるタイミ
ングチヤートである。演算が実施される処理タイ
ムスロツトPTSは、命令群CはPTS32におい
て、命令群AとBはPTS1〜20において実行
される。PTS20の終りまたはPTS21の初め
に割込パルスが発生し第1図のCPU3に対して、
新たなデータを要求する。このとき、CHSコー
ド{P13,P12,P11}が割込ベクターとしてデー
タバスDBに出力され、CPU3は、いま、どの
CHSにあるがまた、つぎのCHSが何かを知るこ
とができる。もしも鍵が押しかえられていて、新
たなノートオクターブに移るべき状態になつてい
れば、CPU3は、新たなND(n)、前回のN
D(n−1),PN,INHの一群のデータとステ
ータスフラブデータをデータ転送する。ステータ
スデータの中にはKNフラグが含まれており、
KNフラグFFを“1”にする。ポルタメント
モードでは、このKNフラグにかかわらず、演
算処理をすればよい。まず、CHS1の直前の
CHS8のPTS32で命令群Cの命令0〜3を実
行する。ただし命令2と3の一方は第12図のフ
ラグ△S,Z,Sにより、その一方の実行は無視
される。このあと、上記フラグの状況に従つて命
令群AまたはBがCHS1のPTS1〜20におい
て実行される。
命令群Cの読み出しは、PTSが32すなわち
処理タイムスロツトコード{P10〜P6}が
{111111}になるタイミングにおいて、命令0〜
3を示すアドレスコードを順次シーケンサ23内
の命令RMに加えて命令0〜3を読み出すよう
にすればよい。命令2と3の一方を無視するに
は、読み出された命令出力をフラグ△S,Z,S
のコードにしたがつてゲートするようにすればよ
い。
命令群AとBの選択については、処理タイムス
ロツトコード{P10〜P6}が0〜19を示すタイ
ミングにおいて命令群AとBを読み出す下位アド
レスコード2ビツトを{P5,P4}により発生さ
せ、命令群AとBとを区別するアドレスコードの
上位2ビツトをフラグ△S,Z,Sの組み合わせ
により指定して、4ビツトのアドレスを加えるこ
とにより命令RM内の命令4〜7と8〜11と
を選択的に読み出すようにすればよい。
第14図は、第4図において示したデータ構造
をもつデータの演算を行なうALU26のうち加
算器の例である。N1とN0は2進化3進数である
ため、下位S5からの桁上げCSとAバス上のN1,
N0およびBバス上のN1,N0を入力として、出力
であるCバス上のN1,N0と上位への桁上げCNが
第14図Aの真理値表のように決まる。Bはハー
ドウエアの例である。80はAバスとBバス上の
S5〜S0の6ビツトを入力とする2進加算器、82
はAバスとBバス上のO5〜O0,N3,N2を入力と
する2進加算器、81は真理値表のパターンをも
つ読み出し専用メモリ(ROM)である。CSは2
進加算器80のキヤリー、CNはROM81から出
力されるキヤリーである。同様の考え方で、減算
器や比較器も構成できる。
第2図におけるビブラートデータ発生器42
は、デイジタル方式の正弦波発生器のようなもの
でよい。たとえば、ビブラート信号の波形を記憶
したROMから、前記VIB(n),VIB(n−1)を更
新するタイミングにおいて、RMを読み出し、
レジスタにそれぞれ書き込むようにしたものでよ
い。
オクターブシフタ30は、バツフアメモリ29
の出力を1ビツト〜必要ビツトまでシフトした複
数組のコードを、それぞれに対応するゲートに加
えてこれらのゲートのうちの1組を、{O4,O3,
O2,O1,O0}のコードで選択するようにすれば
よい。オクターブコードは、本実施例では5ビツ
トあるから、25=32種のオクターブが取り得るけ
れども、人の聴き得る周波数レンジは、20KHz〜
20Hzとして、103倍10オクターブであるから、
ビツトシフトの可能性としては、10通り位と考え
てよい。このときは、MSBのO4を省いてもよ
い。
第4図において、データは、O4〜S0までの15
ビツトを扱いうるように考えた。第4図B〜Eの
ようにデータ長が15ビツト以下の場合には、その
上下の余分のビツトは、“0”が並ぶようにすれ
ばよいことは言うまでもない。負数においては、
2の補数表示や1の補数表示などの表示をとるか
によつて異なるが、後者では最上位に“1”を出
力し他に“0”を出力させる、前者では上位全ビ
ツトに“1”を出力させるようにすればよい。1
の補数の場合第4図Eの場合符号ビツトV6を最
上位として使用すればよい。
以上のように第2図の実施例においては、第4
図と共に説明したフオーマツトの各データを、手
順を追つて演算することによつて、飛越数Jを計
算するようにした。ポルタメントモード(第13
図)と通常のノーマルモード(第11図)との切
り替えは、第2図のステータスFFの中にN
RMAL/PRTAMETOのモードビツトを用意
しておき、CPU3からこのビツトに“1”を送
るとノーマルモード、“0”を送るとポルタメン
トモードとし、モードビツトにしたがつて、命令
読出しを切りかえるようにすればよい。なお、ノ
ーマルモードでは、PRT32(第2図)にゼロ
を書き込み、△がゼロになるようにしておく。
第15図は、指数変換の他の実施例である。3
8は第2図と同じEXP38でJi,pを記憶している。
39−1は{N3〜S3}の7ビツトに対するアド
レスをもつ差分ROMで、96の指数サンプル値の
差分値(Ji+1,p−Ji,p)を記憶している。出力は5
ビツトである。39−2は、{S2,S1,S0}の3
ビツトに応じて、差分値の補間値を出力するため
の簡易化された掛算用RMである。すなわち、
(Ji+1,p− Ji,p)×j/8を記憶している。このよう
に
すると、量子化誤差が少し増えるが、メモリのサ
イズが768×5=3840ビツトから、96×5+25+3
×5=1760ビツトに減る。
上記第3図Aでは1オクターブを2048〜4095に
割当てた。したがつて、12ビツトである。この場
合、12平均律の音は、±0.78125セントの誤差内に
なる。しかし、低域周波数ではオクターブコード
にしたがつてビツトシフトされて、しかも低位側
へシフトされることも考えられる。このときに
は、12ビツトの下位が切り捨てられることにな
り、8〜9ビツトになることもある。このときに
は、上記誤差が増える。9ビツトのときには、3
ビツトシフトされたのであるから誤差は8倍で±
6.25セントになつてしまう。しかし周知のよう
に、9ビツトでは、239,253,268,284,301,
319,338,358,379,402,451の12個の数字の組
み合わせのとき、12平均律からの誤差は±1.2セ
ント以下となる。したがつて、Cとして、2048の
代わりに、253×8=2024をCとし、239×16=
3824をBとすれば、12ビツトで最も高精度のセン
トアドレスから飛越数への変換ができる。
以上、本発明を要約すると、少なくとも1オク
ターブ区間を等間隔のセント間隔をもつ複数の区
間に分けてその区間境界点にそれぞれセントアド
レスを与え、発生すべき楽音の単一または複数の
周波数成分の周波数を上記セントアドレスのアド
レス値で表現し、近似的に指数変換特性を有する
変換器に上記アドレスを与えることにより、発生
すべき楽音の上記周波数に近似した周波数制御値
を得るようにしたものである。ここで、少なくと
も1オクターブ区間を等間隔のセント間隔をもつ
複数の区間に分けてその区間境界点にそれぞれセ
ントアドレスを与えるものは、実施例において
は、指数変換テーブル38、または指数変換テー
ブル38と差分指数変換テーブル39である。こ
のテーブルによつて設定されているアドレス値が
本発明の周波数制御装置に入力されることによ
り、所望の周波数情報である飛び越し数が発生さ
れる。近似的に指数変換特性を有する変換器は、
例えば、指数変換テーブル38、差分指数変換テ
ーブル39および演算装置(ALU)26、ワー
キングレジスタ(WREG)27、RAM28およ
びそれらを制御するプログラムカウンタ21、タ
イミングパルス発生器22、シーケンサ23、命
令デコーダ24等により構成される。
以上の説明より明らかなように本発明は、発生
すべき楽音の音高情報を発生する手段(実施例に
おいては、ノートオクターブレジスタ33,3
4)と、発生すべき楽音の音色情報に対応して楽
音の高調波周波数に対応する高調波情報を発生す
る手段(実施例においては、パーシヤル番号メモ
リ36、ハーモニツクデータメモリ35)と、上
記音高情報と高調波情報とを組み合わせて発生す
べき楽音の基本周波数と高調波周波数に対応する
セントアドレスを発生する手段(実施例において
は、ALU26、ワーキングレジスタ27,RAM
28、およびそれらを制御するプログラムカウン
タ21、タイミングパルス発生器22、シーケン
サ23、命令デコーダ24)と、上記セントアド
レスを入力とし、上記セントアドレスに対応する
周波数制御値に変換するための近似的に指数変換
特性を有する変換器(実施例においては、指数変
換テーブル38、差分指数変換テーブル39およ
び演算装置(ALU)26、ワーキングレジスタ
(WREG)27,RAM28およびそれらを制御
するプログラムカウンタ21、
タイミングパルス発生器22、シーケンサ23、
命令デコーダ24)とを備え、少なくとも1オク
ターブ区間を等間隔のセント間隔をもつ複数の区
間に分け、その境界にセントアドレスを割りつ
け、上記音高情報を上記境界のセントアドレスと
して発生させ、上記高調波情報をセントアドレス
の差アドレスとして発生させ、上記音高情報と高
調波情報の和セントアドレスを得、上記和セント
アドレスを上記変換器に供給することにより上記
楽音の基本周波数と高調波周波数の各々を表わす
周波数制御値を得るようにしているので、種々の
周波数をもつ正弦波などの波形を多数発生させる
ことができ、その際、比較的少ないデータ量で周
波数を決定でき、かつ、演算の桁数が少なくてす
むという特徴を有する。 [Table] In Table 1, of instruction groups A, B, and C, A
and B show the procedure for calculating the jump number J for 8 channels and 20 spectra in each channel. The instruction group A consists of instructions 4 to 7, and the instruction group B consists of instructions 8 to 11. The content of each command is indicated by the command content. For example, instruction 4 is N
Add D(n) and VIB(n) and write working register
This means storing in WREG2. Instruction 5 reads the contents of working register WREG2 and harmonic data HMDI, adds them, and stores them in WREG2. Instruction 6 is WREG2
and inharmonicity data INHI are added and stored in register LGJ (K, I).
Instruction 7 uses the contents of register LGJ (K, I) as an address code and converts it to exponent conversion table EXP2.
8 and the difference index conversion table DEXP39,
Add each output to buffer memory BUF
(K, I) Store in 29. Here, I represents a processing time slot (PTS), which will be described later, and also represents the spectrum number in each channel. I=1, 2, ..., 20.
K stands for channel time slot (CHS). K=1, 2, ..., 8. CHS
This will be discussed later. Regarding instruction group B, the meaning of the operation contents can be similarly read from Table 1. △ in instruction 8 is set to zero. Command group A is executed when note octave data ND(n) is changed, and thereafter command group B is executed. In instruction group B,
Since ND(n), HMDI, and INHI do not change, we do not calculate these, but subtract VIB(n-1) from the previous value LGJ(K, I) to calculate the value for the new value of VIB(n). Perform calculations and perform exponential conversion. When the note octave data ND(n) is updated, the program returns to the instruction group A and then executes the instruction group B again. In Table 1, ITS is an instruction time slot, and there are ITS1 to ITS4, and instructions 0, 4, and 8 are ITS
1 is executed. Also shown are write lines, write pulses, and output control lines that are activated when each instruction is executed. To execute the above instructions, the program counter 21, timing pulse generator 22, sequencer 23, and instruction decoder shown in FIG. 24 needs to work. less than,
Explain timing. FIG. 6 is a diagram showing the timing of the embodiment of FIG. 2. FIG. 6A shows a sample arrangement of sinusoidal waveforms, and the sampling period of one sinusoidal waveform is 20 μs. FIG. 6B is an enlarged view of 20 μs, in which there are 8×20=160 time slots and 160 samples.
Each sample is processed in 125ns steps. Channel 1 (CH1) has 20 samples. The same applies to CH2 to CH8. On the other hand, Fig. 6C
is the timing at which the jump number J is calculated in synchronization with A. Channel time slots CHS 1 to 8 are provided in units of 160 μs. In CHS1, the J calculation for channel 1 is performed, and the J calculations for the corresponding channels are performed in the following order. J calculation for each channel is repeated at a cycle of 160×8=1280 μs (1.28 ms). Figure 6D
shows the inside of each channel time slot CHS, and as an example, CHS1 is enlarged. In CHS1, there are processing time slots PTS 1 to 32 in units of 5 μs.
For PTSI,I=1 to 20, the number of jumps that determine the frequencies corresponding to 20 spectra (sine waveforms) in channel 1 is calculated. And P.T.S.
In the first half of 2.5μs, the calculated 20 J values are calculated in 125ns steps as shown in Figure 6F.
The signal is transferred to the sine wave generator 9 (FIG. 1). The timing of this transfer differs for CHS1 to CHS8. For example, in CHS8, it is executed in the latter half of PST24.
Figure 6E shows each processing time slot PTS1 to 2.
This is an enlarged version of the contents of 0. PTS1~20
are divided into four parts, instruction time slots ITS1 to ITS4, respectively. Each is 1.25μs long. The instructions in Table 1 above are executed in these instruction time slots ITS. PTS1
~20, in the embodiment of FIG. 2, the ALU
An operation centered on 26 is performed. PTS21
~32, new data is written mainly to MIF25 in Figure 2 to the data bus DB.
and VIB(n), VIB(n-1)
Update data. There are various methods for creating the timing shown in FIG. FIG. 7 and FIG. 8 show an example. Figure 7 shows a timing counter, and 51 is a 14-stage counter with CK as input.
Output P 0 to P 13 . P 0 to P 2 perform binary coded quinary counting, and P 3 to P 13 perform binary counting.
{P 5 , P 4 } are codes representing instruction time slots ITS1 to ITS 4, 5 bits of {P 10 to P 6 } are codes representing processing time slots PTS 1 to 32, {P 13 ,
P 12 , P 11 } is the channel time slot CH1
It corresponds to a 3-bit code representing ~8. The counter 52 is a 20-decimal counter consisting of five stages, {Q 4 ,
Q 3 , Q 2 , Q 1 , Q 0 } are output. Counters 51 and 52 are synchronized. From the outputs of counters 51 and 52, the timing pulse shown in Figure 8 is TPG2.
It is made inside 2. CK has a frequency of 125ns (8MHz). From P 1 , P 2 , 3 , 4 , 5 ,
WRC, IST1-4, 1-4 are obtained.
The IST1-4 signals are the output command signal C1 in Fig. 2.
The signal that is the source of ~12, 1~
WRC4 is a signal from which write command signals 0 to 3 are generated. Figure 9 shows the address codes AD3 and AD4 added to the buffer memory 29 and the output command signal C.
9. This is an example of a circuit that generates the write command signal 3. Address code AD4 is {P 13 , P 12 , P 11 },
In AD3, either {P 10 to P 16 } or {Q 4 to Q 0 } is selected by the selector 69. 3 is a processing time slot created by the AND gate 70 with invert input and the OR gate 71 with invert input.
It is 4 corresponding to ITS4 in PTS1-20. AND gates 60, 61, 62, 63 are
Detect {P 10 , P 9 , P 8 }={1, 0, 1}. This corresponds to PTS21-24. At this time, the selector 69 selects Q4 to Q0 . EXR gates 64, 65, 66 are {P 7 , P 6 , P 5 } and {P 13 ,
P 12 , P 11 }. and gate 6
7 matched CHS number among PTS21-24
Select half interval of PTS and when output is “H”
Output OC9. Therefore, to summarize,
In ITS4 of PTS1-20, AD4 and
AD3 specifies K and I, respectively, outputs 3 at ITS4, and writes instruction 7 or 11 in Table 1 to buffer memory 29 (BUF(K,I)). CHS between PTS21-24=K
C9 becomes “H” for 2.5μs corresponding to
The contents of I=1 to 20 of BUF (K, I) are output according to address codes AD4 and AD3. FIG. 10 shows an example of the format of the instruction code stored in the sequencer 23 in FIG. 2-bit P code for operation,
It consists of a 3-bit destination code that indicates the data transfer or storage destination, a 3-bit source 1 code that indicates the register from which the data is taken out, and a 4-bit source 2 code. The meaning of each code is shown in FIGS. 10B-E. The P code specifies the function of the ALU 26. The operations of the 12 instructions shown in Table 1 are expressed by the instruction codes shown in FIG. Figure 10 E ZER
O means to output ZER to the A bus. Using the same concept as illustrated in Figure 9, based on the instruction code in Figure 10 and the CHS, PTS, ITS, write line, output control line, etc. in Table 1,
The instruction decoder 24 and circuits that generate necessary control signals and timing pulses can be designed. FIG. 11 shows the timing of execution switching between instruction groups A and B in Table 1. From the top, channel time slot, operation execution, J transfer, interrupt pulse, data transfer, and KN flag are shown. Operation A or B is the processing time slot
PTS 1 to 20 (Figure 6) are executed 20 times.
At the end of the 20th time, the interrupt pulse is as shown in Figure 2.
The TPG 22 outputs the signal to the CPU 3 shown in FIG.
At this time, at the same time, CHS8 is used as an interrupt vector.
A code {P 13 , P 12 , P 11 } indicating this is output to the data bus DB in FIG. The CPU 3 reads this interrupt vector {P 13 , P 12 , P 11 } and executes the next
If it knows that CHS is 1 and the pitch to be played on channel 1 is changing, data transfer is performed. Data transfer is performed from the data bus of the CPU 3 to the data bus DB shown in FIG. and,
Predetermined data is written to ND(n) 33, PN 36, INH 37 and status FF 41. In particular, K included in the status FF
Set the N flag flip-flop (FF).
The KN flag indicates that the pitch of the sound corresponding to CHS1 has been changed. When the KN flag is "1", instruction group A is read out and executed during CHS1. When the execution is finished, an interrupt pulse is generated again and an interrupt vector indicating CHS1 is output.
At the same time, KN flag FF is reset. In response to the interrupt pulse and interrupt vector {P 13 , P 12 , P 11 }, the CPU 3 determines whether or not the previous pitch remains the same in the next CHS 2, and if the same pitch should be output, the CPU 3 uses the data. No transfer occurs. Therefore K
The N flag remains at "0". At this time, instruction group B is executed 20 times. Instruction group A is based on new ND(n) data,
In the program for calculating J, instruction group B is a group of instructions that corrects only changes in vibrato data with respect to the previous J. The reading and switching of instruction groups A and B are performed by reading out and switching instructions corresponding to instruction time slots ITS1 to ITS4 within the time period in which the processing time slot codes {P10 to P6 } of the counter 51 in FIG. 7 indicate PTS1 to PTS20. This can be done by reading out groups A and B, selecting one using the KN flag, and outputting it. In the embodiment of FIG. 2, the amount of data to be transferred from the CPU 3 to the frequency control device of the present invention is N
A total of 43 words is sufficient, including 1 word for OD(n), 20 words for PN, 20 words for INH, 1 word for status FF, and 1 word for PRT. In the above description, one vibrato data generator 42 is common to eight channels. In case of glide effect, glide data GL(n,K)
and GL (n-1, K), (K = 1, 2, ..., 8) are provided independently for each channel, and each CHS1
By outputting the respective data corresponding to 8, an independent glide can be applied to each channel. In the above explanation, as the buffer memory 29,
Although 160 words have been prepared, one transfer is performed in units of 20 words, so 20 words may be prepared. Regarding the partial number memory 36 and harmonic data memory 35 in FIG. 2, the former may have 13 bits per word, and the latter may have 6 bits per word. The maximum harmonic order is set to 64, but when increasing it, the number of words in the partial number memory must be increased to 64, and 1 of the harmonic data must be increased.
Just increase the number of words from 6 bits. Although the harmonic data may be transferred directly from the CPU 3, the amount of data to be transferred can be smaller in the embodiment shown in FIG. Further, in the embodiment of the present invention, it is possible to omit some of the many harmonic orders to generate a skip number J that is a toothless frequency control value. In addition, partial number memory 3
Although we explained that a different partial number is given to the 20-word RAM of 6, the same partial number can be stored in any plural words, and non-harmonic memory 3
When writing slightly different INH data to 7,
The generation of two or more frequency components of very close frequency becomes possible. In other words, a chorus effect can be obtained. Among keyboard instruments, the pitch of the piano tends to fall in the low range and rise in the high range compared to the keyboard range, and one octave does not have an exact 1:2 frequency ratio. This phenomenon can be called pitch extend. To do this, an RM is provided to generate this shift, and this RM is accessed by the data of ND(n) to output the amount of shift corresponding to the note octave, and this amount is used as the difference address in the ALU
It may be added at 26. Further, the above deviation can also be included in the data written to the non-harmonic memory 37. It goes without saying that in order to generate a musical tone that does not have non-harmonic properties, it is sufficient to write a zero value as INH data. In the above explanation, part of the data is displayed in binary coded ternary notation. instead of this 2
It is also possible to display evolution, 12 evolution, binary evolution, hexadecimal, etc. It is also possible to obtain octave data by displaying and calculating data in complete binary format, and then converting it into binary code and ternary code for higher-order digits, including the note data part. good. For this purpose, a binary-ternary conversion ROM may be provided. In the embodiment shown in FIG. 2, only one register is provided for ND(n). These registers and RAM
If the number of channels is provided for 8 channels, the calculation procedure is A
It gets better just in groups. As described above, there is a relationship between the configuration and the calculation procedure, and there are various types other than those in this embodiment, but a description thereof will be omitted. In the above description, the procedure and configuration are described for calculating the jump number J for sine wave synthesis, but it can also be used for frequency control of a waveform generator that reads out waveforms other than sine waves. For example, instead of 20 harmonic components, J is 1 for one waveform.
Even when only one is generated, an optimal configuration can be made using the same concept as above. <Portamento Effect> In the embodiment shown in FIG. 2, the number of jumps J can be gradually changed in response to the portamento effect. In the embodiment shown in FIG. 2, portamento is applied only to one channel, that is, CHS1. First of all, as mentioned earlier, in portamento mode,
This note octave data is ND(n)33
, the previous note octave data is ND(n
-1) Stored in 34. At the same time, portamento speed and key press interval ND(n)-ND(n-1)
Data representing the increment corresponding to is stored in PRT32. This data is stored as is or after some transformation in the portamento converter. Instruction group C in Table 1 determines whether portamento is increased or decreased. Instruction 0 adds an increment Δ to the previous ND(n-1). For instruction 1, whether the result reached or exactly matched the target value ND(n),
Compare and judge whether you have surpassed it. CP means compare. As a result of this comparison, ALU 26 sets its internal flag FLG. The flags FLG of ALU26 include zero flag Z and sign flag S.
will be established. These flags are attached to a normal adder/subtractor, and the zero flag Z is a flip-flop which becomes "1" when all bits of the operation result are "0" and becomes "0" otherwise.The sign flag S is a flip-flop. , is composed of a flip-flop which becomes "1" when the most significant bit of the operation result is "1" and becomes "0" otherwise. The comparison result of instruction 1,
With △S representing the sign of the increment △, instructions 2 and 3 are
One of the two is executed. Instruction 2 adds △ to the current note octave data ND (n-1) and creates new note octave data ND.
(n-1). Instruction 3 stores the final target ND(n) as a new ND(n-1). With the above instruction group C, in the portamento effect, by adding the increment △, the pitch becomes the target note octave data ND(n).
Determine whether the target value has not been reached, exactly, or exceed the target value, and based on the results,
Increment the frequency on the cent scale of the fundamental wave or harmonics △
The user is asked to select whether to execute the instruction group B that increases the target value ND(n) or the instruction group A that performs an operation at the destination point based on the target value ND(n). FIG. 12 shows which of the instructions 0 to 11 will be executed depending on the combination of three flags ΔS, Z, and S. Instructions 0 and 1 are executed every time. A case where instruction 3 and instruction group A (instructions 4 to 7) are executed by flags Z, S and △S which are the operation results of instruction 1;
It is classified into cases where instruction 2 and instruction group B (instructions 8 to 11) are executed. The former case is a case where the target value ND(n) is exactly reached or exceeded by accumulating the increments Δ. The latter is a case where the target value ND(n) is not yet reached even after accumulating the increments Δ. FIG. 13 is a timing chart in portamento mode. In the processing time slot PTS in which the operation is performed, instruction group C is executed in PTS32, and instruction groups A and B are executed in PTS1-20. An interrupt pulse is generated at the end of PTS20 or the beginning of PTS21 and is sent to CPU3 in Figure 1.
Request new data. At this time, the CHS code {P 13 , P 12 , P 11 } is output to the data bus DB as an interrupt vector, and CPU3
CHS, but you can also find out what the next CHS is. If the key has been changed and it is time to move to a new note octave, CPU 3 will write the new ND(n), the previous N
A group of data of D(n-1), PN, and INH and status flag data are transferred. The status data includes the KN flag,
Set KN flag FF to “1”. In portamento mode, arithmetic processing can be performed regardless of this KN flag. First, just before CHS1
The PTS 32 of the CHS 8 executes instructions 0 to 3 of the instruction group C. However, execution of one of instructions 2 and 3 is ignored due to flags ΔS, Z, and S in FIG. Thereafter, instruction group A or B is executed in PTS1 to PTS20 of CHS1 according to the status of the flags. Reading of instruction group C is performed at the timing when PTS becomes 32, that is, when the processing time slot code {P 10 -P 6 } becomes {111111}.
The address code indicating 3 may be added to the instructions RM in the sequencer 23 in order, and instructions 0 to 3 may be read out. To ignore one of instructions 2 and 3, set the read instruction output to flags △S, Z, S
All you have to do is gate according to the code. Regarding the selection of instruction groups A and B, the 2 bits of the lower address code for reading instruction groups A and B are selected by {P 5 , P 4 } at the timing when the processing time slot codes {P 10 to P 6 } indicate 0 to 19. By specifying the upper 2 bits of the address code that is generated and distinguishing instruction groups A and B by a combination of flags △S, Z, and S, and adding a 4-bit address, instructions 4 to 7 in instruction RM are 8 to 11 may be selectively read out. FIG. 14 shows an example of an adder in the ALU 26 that performs operations on data having the data structure shown in FIG. Since N 1 and N 0 are binary coded ternary numbers, the carry C S from the lower S 5 and the N 1 on the A bus,
With N 0 and N 1 , N 0 on the B bus as inputs, the outputs N 1 , N 0 on the C bus and carry C N to the higher order are determined as shown in the truth table in FIG. 14A. B is an example of hardware. 80 is on the A bus and B bus
Binary adder with 6 bits S5 to S0 as input, 82
is a binary adder whose inputs are O 5 to O 0 , N 3 , and N 2 on the A bus and B bus, and 81 is a read-only memory (ROM) having a truth table pattern. C S is 2
The carry of the adder 80, C N , is the carry output from the ROM 81. Subtractors and comparators can also be constructed using a similar idea. Vibrato data generator 42 in FIG.
may be something like a digital sine wave generator. For example, at the timing of updating the VIB(n) and VIB(n-1), read the RM from the ROM that stores the waveform of the vibrato signal,
It may be possible to write to each register. The octave shifter 30 has a buffer memory 29
By adding multiple sets of codes obtained by shifting the output of 1 bit to the required bit to the respective gates, one set of these gates is converted to {O 4 , O 3 ,
The selection may be made using the code O 2 , O 1 , O 0 }. In this example, the octave code has 5 bits, so 2 5 = 32 different octaves can be taken, but the frequency range that humans can hear is from 20KHz to
As 20Hz, it is 10 3 times 10 octaves, so
There are about 10 possibilities for bit shift. In this case, the MSB O 4 may be omitted. In Figure 4, the data are 15 from O 4 to S 0 .
I thought it would be possible to handle bits. It goes without saying that when the data length is 15 bits or less as shown in FIGS. 4B to 4E, the extra bits above and below it may be arranged with "0"s. For negative numbers,
It differs depending on whether the display is 2's complement or 1's complement, but in the latter, "1" is output at the top and "0" is output at the other bits, and in the former, "1" is output in all upper bits. All you have to do is output it. 1
In the case of the complement of FIG. 4E, sign bit V6 may be used as the most significant. As mentioned above, in the embodiment shown in FIG.
The jump number J is calculated by calculating each data in the format explained with the drawings in a step-by-step manner. Portamento mode (13th
To switch between the normal mode (Figure 11) and the normal mode (Figure 11), enter the status FF in Figure 2.
Prepare the RMAL/PRTAMETO mode bit, and send "1" to this bit from CPU3 to set it to normal mode, and send "0" to portamento mode, and change the instruction reading according to the mode bit. . In the normal mode, zero is written in the PRT32 (FIG. 2) so that Δ becomes zero. FIG. 15 is another example of index conversion. 3
8 stores J i,p in EXP38, which is the same as in FIG.
39-1 is a differential ROM having addresses for 7 bits {N 3 to S 3 }, and stores differential values (J i+1,p −J i,p ) of 96 index sample values. The output is 5
It's bit. 39-2 is 3 of {S 2 , S 1 , S 0 }
This is a simplified multiplication RM for outputting an interpolated value of a difference value according to the bit. That is,
(J i+1,p − J i,p )×j/8 is stored. If you do this, the quantization error will increase a little, but the memory size will change from 768 x 5 = 3840 bits to 96 x 5 + 2 5 + 3
×5 = 1760 bits. In FIG. 3A above, one octave is assigned to 2048 to 4095. Therefore, it is 12 bits. In this case, the 12 equal temperament notes will be within an error of ±0.78125 cents. However, at low frequencies, the bits are shifted according to the octave code, and it is also conceivable that the bits are shifted to the lower side. At this time, the lower 12 bits are truncated, sometimes resulting in 8 to 9 bits. At this time, the above error increases. For 9 bits, 3
Since it was bit shifted, the error is 8 times ±
It becomes 6.25 cents. However, as is well known, in 9 bits, 239, 253, 268, 284, 301,
For the combination of 12 numbers 319, 338, 358, 379, 402, 451, the error from 12 equal temperament is less than ±1.2 cents. Therefore, instead of 2048, let C be 253×8=2024, and 239×16=
If 3824 is B, it is possible to convert a cent address to an interlaced number with the highest precision using 12 bits. To summarize the present invention, at least one octave section is divided into a plurality of sections having equidistant cent intervals, and a cent address is given to each section boundary point, and a single or multiple frequency components of a musical tone to be generated are divided into sections. By expressing the frequency with the address value of the above-mentioned cent address and giving the above-mentioned address to a converter having approximately exponential conversion characteristics, a frequency control value that approximates the above-mentioned frequency of the musical tone to be generated is obtained. be. Here, in the embodiment, what divides at least one octave interval into a plurality of intervals having equal cent intervals and gives cent addresses to the interval boundary points is the exponent conversion table 38 or the exponent conversion table 38. This is a difference index conversion table 39. By inputting the address values set by this table to the frequency control device of the present invention, an interlace number that is desired frequency information is generated. A converter with approximately exponential conversion characteristics is
For example, an index conversion table 38, a differential index conversion table 39, an arithmetic unit (ALU) 26, a working register (WREG) 27, a RAM 28, a program counter 21 that controls them, a timing pulse generator 22, a sequencer 23, an instruction decoder 24, etc. Consisted of. As is clear from the above description, the present invention provides means for generating pitch information of a musical tone to be generated (in the embodiment, the note octave registers 33, 3
4), means for generating harmonic information corresponding to the harmonic frequency of the musical tone corresponding to the timbre information of the musical tone to be generated (in the embodiment, the partial number memory 36 and the harmonic data memory 35); Means (in the embodiment, ALU 26, working register 27, RAM
28, and a program counter 21, a timing pulse generator 22, a sequencer 23, an instruction decoder 24) that control them, and an approximate system that takes the above cent address as input and converts it into a frequency control value corresponding to the above cent address. A converter having index conversion characteristics (in the embodiment, an index conversion table 38, a differential index conversion table 39, an arithmetic unit (ALU) 26, a working register (WREG) 27, a RAM 28, a program counter 21 that controls them, and a timing pulse) generator 22, sequencer 23,
an instruction decoder 24), which divides at least one octave section into a plurality of sections having equidistant cent intervals, assigns cent addresses to the boundaries thereof, generates the pitch information as the cent addresses of the boundaries, and generates the pitch information as the cent address of the boundaries; Generate harmonic information as a difference address between cent addresses, obtain the sum cent address of the pitch information and harmonic information, and supply the sum cent address to the converter to obtain the fundamental frequency and harmonic frequency of the musical tone. Since the frequency control value representing each of It has the characteristic that it requires only a small number of digits.
第1図は本発明を適用したデイジタル式の電子
楽器のブロツク図、第2図は本発明の一実施例の
ブロツク図、第3図は指数変換テーブルの説明
図、第4図は上記実施例で用いるデータのフオー
マツトの一例を示す図、第5図は上記実施例のノ
ートコードを表わす図、第6図は上記実施例の動
作タイミングチヤートを示す図、第7図はタイミ
ングパルス発生用のカウンタを示す図、第8図は
タイミングパルスチヤートを示す図、第9図はデ
コーダを示す図、第10図は命令コードのフオー
マツトの一例を示す図、第11図はノーマルモー
ドにおける大局的なタイミングチヤートの図、第
12図はポルタメントモードにおける命令の実行
パターンを示す図、第13図はポルタメントモー
ドにおける大局的動作タイミングチヤートを示す
図、第14図は加算器の動作説明図、第15図は
指数変換テーブルの一例を示す図である。
1……鍵盤部、2……操作部、3……CPU、
4……RAM、5……RM、6……エンベロー
プパラメータROM、7……周波数パラメータ
ROM、8……周波数制御装置、9……正弦波発
生器、10……エンベロープデータ発生器、11
……掛算器、12……タイムスロツト制御装置、
13……位相変調器、14……デイジタルアナロ
グ変換器、21……プログラムカウンタ、22…
…タイミングパルス発生器、23……シーケン
サ、24……命令解読器、25……マイコンイン
タフエース回路、26……演算装置、27……ワ
ーキングレジスタ、28……RAM、29……バ
ツフアメモリ、30……オクターブシフタ、31
……ポルタメントデータ変換器、32……ポルタ
メントレジスタ、33,34……ノートオクター
ブレジスタ、35……ハーモニツクデータメモ
リ、36……パーシヤル番号メモリ、37……非
高調波メモリ、38……指数変換テーブル、39
……差分指数変換テーブル、40……ゲート、4
1……ステータフリツプフロツプ、42……ビブ
ラートデータ発生器。
Fig. 1 is a block diagram of a digital electronic musical instrument to which the present invention is applied, Fig. 2 is a block diagram of an embodiment of the present invention, Fig. 3 is an explanatory diagram of an index conversion table, and Fig. 4 is a diagram of the above embodiment. FIG. 5 is a diagram showing an example of the data format used in the above embodiment, FIG. 6 is a diagram showing an operation timing chart of the above embodiment, and FIG. 7 is a diagram showing a counter for timing pulse generation. 8 is a diagram showing a timing pulse chart, FIG. 9 is a diagram showing a decoder, FIG. 10 is a diagram showing an example of an instruction code format, and FIG. 11 is a general timing chart in normal mode. , FIG. 12 is a diagram showing the instruction execution pattern in portamento mode, FIG. 13 is a diagram showing the global operation timing chart in portamento mode, FIG. 14 is a diagram explaining the operation of the adder, and FIG. 15 is an exponent diagram. It is a figure which shows an example of a conversion table. 1...Keyboard section, 2...Operation section, 3...CPU,
4...RAM, 5...RM, 6...Envelope parameter ROM, 7...Frequency parameter
ROM, 8... Frequency control device, 9... Sine wave generator, 10... Envelope data generator, 11
... Multiplier, 12 ... Time slot control device,
13...Phase modulator, 14...Digital-to-analog converter, 21...Program counter, 22...
...Timing pulse generator, 23...Sequencer, 24...Instruction decoder, 25...Microcomputer interface circuit, 26...Arithmetic unit, 27...Working register, 28...RAM, 29...Buffer memory, 30... ...octave shifter, 31
... Portamento data converter, 32 ... Portamento register, 33, 34 ... Note octave register, 35 ... Harmonic data memory, 36 ... Partial number memory, 37 ... Non-harmonic memory, 38 ... Exponential conversion table, 39
...Difference index conversion table, 40...Gate, 4
1...Stator flip-flop, 42...Vibrato data generator.
Claims (1)
と、発生すべき楽音の音色情報に対応して楽音の
高調波周波数に対応する高調波情報を発生する手
段と、上記音高情報と高調波情報とを組み合わせ
て発生すべき楽音の基本周波数と高調波周波数に
対応するセントアドレスを発生する手段と、上記
セントアドレスを入力とし、上記セントアドレス
に対応する周波数制御値に変換するための近似的
に指数変換特性を有する変換器とを備え、少なく
とも1オクターブ区間を等間隔のセント間隔をも
つ複数の区間に分け、その境界にセントアドレス
を割りつけ、上記音高情報を上記境界のセントア
ドレスとして発生させ、上記高調波情報をセント
アドレスの差アドレスとして発生させ、上記音高
情報と高調波情報の和セントアドレスを得、上記
和セントアドレスを上記変換器に供給することに
より上記楽音の基本周波数と高調波周波数のそれ
ぞれを表わす周波数制御値を得るようにしたこと
を特徴とする周波数制御装置。 2 発生すべき楽音の音高周波数に対応する音高
情報を発生する手段と、発生すべき楽音の音色情
報に対応して楽音の高調波周波数の近傍にある正
高調波周波数に対応する正高調波周波数情報を発
生する手段と、上記高調波周波数が上記正高調波
周波数から偏移する量を表わす非高調波情報を発
生する手段と、ビブラート、グライド、ポルタメ
ントなどによる周波数変移を表わす変調情報を発
生する手段と、上記各手段の出力を加算する手段
と、その加算出力を周波数に正比例する周波数制
御値に変換する変換手段とを備え、少なくとも1
オクターブ区間を等間隔のセント間隔をもつ複数
の区間に分け、その境界にセントアドレスを割り
つけ、上記音高情報を上記セントアドレスの形で
発生させ、上記正高調波周波数情報を上記正高調
波周波数と音高周波数との比に対応するセント値
を表わす正高調波差セントアドレスの形で出力さ
せ、上記非高調波情報を上記偏位に対応する非高
調波差セントアドレスの形で出力させ、上記変調
情報を変調セントアドレスの形で発生させ、上記
セントアドレスを加えて和セントアドレスを得、
和セントアドレスを上記変換器に加えて上記周波
数制御値を得るようにし、上記変換器が上記境界
に割りつけられたセントアドレスを入力として対
応する周波数制御情報を出力するようにし、上記
少なくとも1オクターブ区間外のセントアドレス
入力に対しては、上記区間からのはずれを上記セ
ントアドレスの上位のオクターブデータとして
得、このオクターブデータにしたがつて上記変換
器の出力の桁をずらすことにより広範囲の周波数
制御値を得るようにした周波数制御装置。[Scope of Claims] 1. Means for generating pitch information of a musical tone to be generated, means for generating harmonic information corresponding to a harmonic frequency of the musical tone corresponding to timbre information of the musical tone to be generated, and the above-mentioned means for generating a cent address corresponding to the fundamental frequency and harmonic frequency of a musical tone to be generated by combining pitch information and harmonic information; and a means for generating a cent address corresponding to the fundamental frequency and harmonic frequency of a musical tone to be generated; a converter having approximate exponential conversion characteristics for conversion, divides at least one octave section into a plurality of sections having equally spaced cent intervals, assigns cent addresses to the boundaries thereof, and converts the pitch information into generate the above-mentioned boundary cent address, generate the harmonic information as a difference address between the cent addresses, obtain the sum cent address of the pitch information and the harmonic information, and supply the sum cent address to the converter. A frequency control device characterized in that frequency control values representing each of the fundamental frequency and harmonic frequency of the musical tone are obtained by using the above-described method. 2. A means for generating pitch information corresponding to the pitch frequency of the musical tone to be generated, and a positive harmonic corresponding to a positive harmonic frequency in the vicinity of the harmonic frequency of the musical tone corresponding to the timbre information of the musical tone to be generated. means for generating wave frequency information, means for generating non-harmonic information representing the amount by which said harmonic frequency deviates from said positive harmonic frequency, and modulation information representing frequency shifts due to vibrato, glide, portamento, etc. at least one
Divide the octave section into multiple sections with equally spaced cent intervals, assign cent addresses to the boundaries, generate the pitch information in the form of the cent addresses, and convert the positive harmonic frequency information to the positive harmonic frequency information. output in the form of a positive harmonic difference cent address representing a cent value corresponding to the ratio of the frequency and the pitch frequency, and output the above-mentioned non-harmonic information in the form of a non-harmonic difference cent address corresponding to the deviation. , generate the above modulation information in the form of a modulated cent address, add the above cent address to obtain a sum cent address,
The sum cent address is applied to the converter to obtain the frequency control value, the converter receives the cent address assigned to the boundary as input and outputs corresponding frequency control information, and the at least one octave For cent address input outside the interval, the deviation from the above interval is obtained as the upper octave data of the cent address, and the digit of the output of the converter is shifted according to this octave data, thereby achieving wide range frequency control. A frequency control device designed to obtain a value.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP57083450A JPS58199394A (en) | 1982-05-17 | 1982-05-17 | Frequency controller |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP57083450A JPS58199394A (en) | 1982-05-17 | 1982-05-17 | Frequency controller |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS58199394A JPS58199394A (en) | 1983-11-19 |
| JPH0522920B2 true JPH0522920B2 (en) | 1993-03-31 |
Family
ID=13802775
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP57083450A Granted JPS58199394A (en) | 1982-05-17 | 1982-05-17 | Frequency controller |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS58199394A (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS60147792A (en) * | 1984-01-11 | 1985-08-03 | カシオ計算機株式会社 | Frequency control system for electronic musical instrument |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5748791A (en) * | 1980-09-08 | 1982-03-20 | Nippon Musical Instruments Mfg | Electronic musical instrument |
| JPS5756895A (en) * | 1980-09-24 | 1982-04-05 | Nippon Musical Instruments Mfg | Electronic musical instrument |
-
1982
- 1982-05-17 JP JP57083450A patent/JPS58199394A/en active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS58199394A (en) | 1983-11-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0035658B1 (en) | Electronic musical instrument | |
| US4201105A (en) | Real time digital sound synthesizer | |
| KR0135601B1 (en) | Digital signal generator for electronic instruments | |
| USRE30736E (en) | Tone wave generator in electronic musical instrument | |
| JPH027078B2 (en) | ||
| EP0454047A2 (en) | Tone generation apparatus | |
| US4566364A (en) | Electronic musical instrument controlling a tone waveshape by key scaling | |
| JP2605916B2 (en) | Waveform signal generator | |
| JPH0756592B2 (en) | Electronic musical instrument | |
| US4672875A (en) | Waveshape memory for an electronic musical instrument | |
| JPH033239B2 (en) | ||
| JPS5895790A (en) | Musical sound generator | |
| JPH0522920B2 (en) | ||
| USRE31648E (en) | System for generating tone source waveshapes | |
| US5113740A (en) | Method and apparatus for representing musical tone information | |
| JPS636796Y2 (en) | ||
| JPH033238B2 (en) | ||
| US4338844A (en) | Tone source circuit for electronic musical instruments | |
| JP3435702B2 (en) | Music generator | |
| EP0255151B1 (en) | Electronic musical instrument | |
| JP2510090Y2 (en) | Music signal generator | |
| JPS6352399B2 (en) | ||
| JPS5926790A (en) | Combination tone generator for musical instruments | |
| JPS5865494A (en) | Multiple waveform generator | |
| JPS6032094A (en) | Electronic musical instrument |