JPH033238B2 - - Google Patents
Info
- Publication number
- JPH033238B2 JPH033238B2 JP57083448A JP8344882A JPH033238B2 JP H033238 B2 JPH033238 B2 JP H033238B2 JP 57083448 A JP57083448 A JP 57083448A JP 8344882 A JP8344882 A JP 8344882A JP H033238 B2 JPH033238 B2 JP H033238B2
- Authority
- JP
- Japan
- Prior art keywords
- cent
- address
- frequency
- data
- frequency control
- 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 Conputer Music」の第134頁〜138頁に記述さ
れている。また、雑誌IEEE Trans.on Audio
and Eectroacoustics,19巻、No.1,48−58,
1971の文献A Digital Frequency Synthesizei」
には、具体的な構成が示されている。これらの公
知例にもとづいてさらに具体的かつ実載的な方式
として、特開昭58−65493号公報に記載のものが
ある。
これらの楽音合成方式に対しては、飛越数Jを
発生して供給する必要がある。本発明は、飛越数
Jを発生し供給する方法に関するもので、とくに
種々の周波数を効率的に発生させるように工夫し
たものである。
つぎに本発明の方式と従来例との関連について
述べる。
従来、ミユージツクシンセサイザでは、鍵盤の
各鍵に対応する鍵電圧VKを発生させ、これに周
波数を設定する電圧VF、ビブラート電圧VVを重
畳してV1=(VK+VF+VV)を得、指数変換器を
通してV0=K1e×p(VK+VF+VV)を得、V0に
よつて、電圧制御発振器(VCO)の発振周波数
を決定する。電圧VFが0Vのときには鍵電圧VK
によつて決まる周波数、すなわち、楽音の音階に
対応する(C3であれば261.625Hz)周波数が発生
する。通常鍵電圧VKは、オクターブ当り1Vが標
準とされている。電圧VFとして1Vを加えると、
1オクターブ上昇して513.25Hzが発生する。これ
は、C4に当ると同時に、C3の第2高調波にも当
る。電圧VFとして1V以外の電圧を与えると、第
3,第4など任意の高調波成分が得られる。ビブ
ラート電圧VVは、上記周波数を中心に上下に周
波数変調させるものであるが、ここで重要なこと
は、VKやVFが種々の値をとつても周波数の変動
の割合、すなわち、ピツチの変動は、VVが一定
なら、一定に保たれる点である。このような方式
をデイジタル演算におきかえたものとして特開昭
54−81824が知られている。しかしながら、この
ような従来のものでは、アナログ回路で作るため
に不安定であつたり、デイジタル演算の演算器
が、高精度かつ多数必要とするなどの欠点があつ
た。
本発明は、これらの点を解決し、現実に構成し
やすくした周波数制御装置を提供するものであ
る。
また別の従来例として、特開昭56−74298号公
報がある。これは周波数情報をセント尺度で表し
その尺度上でポルタメント効果を発生制御するも
のである。しかしながら、セント尺度の全領域を
単純な2進法で表わすようにしているため、12半
音階のそれぞれの音高位置において、セント誤差
が出る欠点を有している。本願はこのようなこと
のない周波数制御装置を提供することを目的とし
ている。
また本願はポルタメント効果が広い音域のどこ
でも一様に掛かり、音域によつて、早くなつたり
遅くなつたりしない効果が得られる装置を提供す
ることも、目的としている。
第1図は、本発明の周波数制御装置を採用した
電子楽器のブロツク図である。1は鍵盤部、2は
音色タブレツトスイツチやビブラート効果のオン
オフスイツチ、ビブラート効果の深さを設定する
ボリユームなどにより構成される操作部、3は中
央処理装置(CPU)で、コンピユータなどに用
いられているものと同様なもの、4は読み書き可
能な記憶装置(ランダムアクセスメモリ、通常
RAMと呼ぶ)、5はCPU3の動作を決定するプ
ログラムが格納された読み出し専用記憶装置(リ
ードオンリーメモリ、通常ROMと呼ぶ)、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がアドレスコードを出力
し、他の部分がアドレスコードを受け取る。コン
トロール線は、通常、メモリ・リクエスト線
(MREO)、I/Oリクエスト線(IORQ)、リー
ド線(RD)、ライト線(WR)などが用いられ
る。
MREQは、メモリを読み書きすることを示し
IORQは入出力装置(I/O)の内容を取り出し
することを示し、RDはメモリやI/Oからデー
タを読み出すタイミングを示し、WRはメモリや
I/Oにデータを書き込むタイミングを示す。こ
のようなコントロール線を用いたものとしては、
ザイログ社のマイクロプロセツサZ80があげられ
る。
つぎに第1図の電子楽器の動作について述べ
る。鍵盤部1は、複数の鍵スイツチを複数の群に
分けて、群内の鍵スイツチのON−OFF状態を一
括してデータバスに送ることができるように構成
される。たとえば、5オクターブの鍵盤の場合61
鍵を6鍵(半オクターブ)ずつの10群と1鍵のみ
の1群の11群に分け、各群にアドレスコードを1
つずつ割りつける。アドレスラインに、上記各群
のうちの1つを示すアドレスコードが到来し、
IORQとRDが印加されると、鍵盤部1はそのア
ドレスコードを解読して対応する群内のキースイ
ツチのON−OFFを示す6ビツトまたは1ビツト
のデータをデータバスに出力する。これらは、デ
コーーダ、バスドライバおよび若干のゲート回路
を用いて構成することができる。操作部2のう
ち、タブレツトスイツチについては、鍵盤部1と
同様の構成をとることができる。ボリユームの設
定状態については、ボリユームの出力する電圧を
アナログデイジタル変換器によりデイジタルコー
ドに変換し、これを、アドレスコードとコントロ
ール線IORQとRDにより読み出すようにする。
CPU3はその内部にあるプログラムカウンタ
のコードに対応するROM5のアドレスから命令
コードを読み取り、これを解読して、算術演算、
論理演算、データの読み込みと書き込み、プログ
ラムカウンタの内容の変更による命令のジヤンプ
などの作業を行なう。これらの作業の手順は
ROM5により書き込まれている。まずCPU3は
ROM5より鍵盤部1のデータを取り込むための
命令を読み取り鍵盤部1の各鍵のON−OFFを示
すコードを各群ごとに取り込んで行く。そして、
押鍵されている鍵コードを、楽音発生部の有限の
チヤンネルに割り当ててゆく。
つぎにCPU3は、操作部2よりデータを取り
込むための一群の命令を順次ROM5から読み取
り、これらを解読して、操作部2に対応するアド
レスコードとコントロール信号IORQとRDを出
力し、データバスに操作部2のスイツチやボリユ
ームの状態を表現するコードを出力させ、CPU
3内に読み込む。そして、どの音色の楽音信号を
合成すべきかをCPU3は知る。
以上で、楽音発生部のどのチヤンネルにどの周
波数をもつたどの音色を発生させるべきかが明確
になつたので、CPU3は、各音色の周波数に関
するデータを記憶しているROM7より、所望の
音色の周波数パラメータを格納してあるアドレス
コードとコントロール信号MREQとRDとを出力
してデータバスに所望の周波数パラメータを読み
出してCPU3内に取り込み周波数制御装置8に
書き込む。書き込むためには、周波数制御装置8
の内部に設けられたデータレジスタに対応するア
ドレスコードをCPU3が出力し、同時にIORQと
WRとを出力すると、WR信号の立上り時にデー
タバス上に出力されている周波数パラメータを表
わすデータが上記データレジスタに書き込まれ
る。
つぎに、出力すべき音色の内容を表わす音色パ
ラメータをROM6より読み出し、エンベロープ
発生器10の内部のレジスタに書き込む。つぎに
周波数制御装置8とエンベロープ発生器10の両
方に、発音出力指令を与えると、周波数制御装置
8は、飛越数Jを正弦波発生器9に与え、エンベ
ロープ発生器10はエンベロープデータを発生す
る。正弦波発生器9の出力する正弦波データとエ
ンベロープデータは掛算されて、エンベロープが
正弦波に付与される。正弦波データとエンベロー
プデータとはそれぞれ時分割多重化されて発生す
る。時分割多重は、例えば、160多重とし、1チ
ヤンンネル当り20の正弦波を割り当て、8チヤン
ネル設けることにする。通常は、20本の正弦波の
合成により、ひとつの楽音を合成することにな
る。したがつて、フーリエ級数の式で知られると
おり、20の正弦波データを加算することにな
る。このためのタイムスロツト間のデータ加算を
タイムスロツト変換器12で実施する。タイムス
ロツト変換器は、160のタイムスロツトで時分割
多重されて入力される、エンベロープデータで変
調された正弦波データ列のうち、所定のデータを
加算しタイムスロツトの数を減らしたり、あるい
は、特開昭58−10324号公報に記載の時分割多重
変換装置のようにタイムスロツトの交換を行なう
ものである。時分割多重位相変調器13は、特開
昭58−83894号公報「デイジタル楽音変調装置」
のように、時分割多重で複数種の変調を同時に実
施するものである。時分割多重位相変調装置13
の出力はアナログデイジタル変換器14によりア
ナログ信号に直されて、電気音響変換器15,1
6より出力される。
第1図では図示を省いたが、タイムスロツト変
換器12や時分割多重位相変調装置13に対して
も、アドレスバス、データバス、コントロール線
を介してCPU3と結合して、操作部2によつて
行なわれる音色や変調効果の設定に対応して、タ
イムスロツトの変換や変調条件を変えて設定する
ようにすることができる。
本発明の周波数制御は、まず、各鍵のノートオ
クターブ、各高調波の周波数などを、セント尺度
上に配置して処理する。出力すべき楽音の基本波
のノートやオクターブの位置、基本波を基準とし
た高調波の位置、非高調波の相対的なずれなどを
セント単位で表現し、セント点度上でのセントア
ドレスの加減算を行なつて、実際の周波数成分の
セント値に対するセントアドレスを求め、これを
指数変換する。システムをデイジタル化し、かつ
多数のスペクトルに対する飛越数Jを求めるため
に、セント尺度上で1オクターブを量子化して扱
い、かつ、時分割多重で演算処理を行なうように
考慮している。また、演算されたJが、正弦波発
生器9に適切に転送されるようタイミングを考え
ている。
本発明は、第1図の如き電子楽器の一部分とし
て、CPU3より供給される周波数パラメータを
受け入れて、正弦波発生器9に対し飛越数Jを供
給する機能を実現する。周波数制御装置8に関す
るものである。その1実施例を第2図に示す。
第2図の周波数制御装置は、データバスDB、
アドレスバスADR、コントロール線IORQとWR
とチツプセレクト線CSとにより、CPU3と結合
して、周波数パラメータを受け取り、マイコンイ
ンタフエース回路(MIF)25でアドレスバス
ADRのコードを解読して、内部のレジスタ群に
書き込み、内部に設けた飛越数Jを計算する機構
を介して、必要な複数個のJiを計算させ、バツフ
アメモリ29、オクターブシフタ30を介して、
正弦波発生器9に供給する。
まず、構成要素について説明する。21はタイ
ムミングパルスを供給するプログラムカウンタ
(PC)、22はタイミングパルスから論理をとつ
て必要なアドレスコードをつくつたり、コントロ
ール用のフラグ(FLG)信号を受けとつて制御
信号をつくり出すタイミングパルス発生器
(TPG)、23はタイミングパルスや制御信号に
より読み出され、後述する算術演算や論理演算の
内容と手順とを記憶しているシーケンサ(SEQ)
でROMから成るもの、24はシーケンサの内容
を解読して、アドレスコード、出力指令信号
(OC1〜12)、書込指令信号(WR0〜3)、演
算指令信号(OPコード)などを出力する命令解
読器である。25はマイコンインタフエース回路
(MIF)で先に説明したものである。26は演算
装置(ALU)で、加算、減算、比較を、2つの
入力であるAバスとBバスの間で行ない、Cバス
に演算結果を出力し、演算結果のうちの符号、上
位ビツトなどをFLGとして出力する。FLGは
TPG22に供給される。
27はワーキングレジスタ(WREG)で
WREG1とWREG2の2ワードのメモリで構成
され、Cバスより入力を受け入れ、Bバスに出力
を供給する。AD2が2ワードのどちらかを選択
しWR1の立上りで書き込み、OC8が“H”の
とき出力を供給する。28は160ワード×15ビツ
トより成るRAMで、Cバスより入力を受け取り
Dバスに出力を供給する。160ワードは20ワード
ずつ8チヤンネルに分けられており、20ワード内
の任意の1ワードを5ビツトのアドレスコード
AD1で指定し、8チヤンネルのうちの任意の1
チヤンネルを3ビツトのアドレスコードAD4で
選択し、WR2の立上り時にCバス上のデータを
書き込み、出力はDバスに出たままである。ただ
し、出力の上位5ビツトはバツフアメモリ29に
供給される。バツフアメモリ29は160ワード×
17ビツトのRAMで、CバスのデータとRAM2
8の上位5ビツトを入力として受け入れる。160
ワードは20ワードずつ8チヤンネルに分けられて
おり、20ワード内の1ワードをアドレスコード
AD3で選択し、8チヤンネルのうちの1つをア
ドレスコードAD4で選択し、WR3の立上りで
入力データを書き込み、OC9が“H”のとき出
力する。バツフアメモリ29の出力はオクターブ
シフタ30に供給される。バツフアメモリ29の
上位5ビツトのコードにより、それより下位のデ
ータが、所定のビツト数だけビツトシフトされて
出力される。
この出力は、正弦波発生器9の内部に設けられ
飛越数を格納するレジスタのうち所定のアドレス
に対応するものに転送される。
33はノートオクターブレジスタ(NOD(n))
で最新のノートオクターブデータを、CPU3よ
りデータバスDBを介して受け入れ、必要な時に
Aバスに出力する。書き込みをMRW2で、読出
しをOC2で行なう。34はノートオクターブレ
ジスタ(NOD(n−1))で、前回のノートオク
ターブデータを、CPU3よりデータバスDBを介
して受け入れ、必要な時にBバスに出力する。ま
た、Bバスから途中の処理データを受け取り記憶
する。DBよりのデータの書き込みをMRW3で、
Bバスよりの書き込みをWROで行ない、Bバス
への出力をOC3で行なう。35はハーモニツク
データメモリ(HMD)で、64ワード×13ビツト
のROMにより構成されている。64ワードのうち
のどれを選択するかは、パーシヤル番号メモリ3
6が出力する6ビツトのコードにより決定され
る。パーシヤル番号メモリ36は、20ワード×6
ビツトのRAMで、データバスDBから入力を受
け入れる。20ワードのうちの1ワードをアドレス
コードAD1で選択し、MRW4の立上りで書き
込む。出力は常にハーモニツクデータメモリ35
に供給される。ハーモニツクデータメモリの出力
はOC4が“H”のときAバスに出力される。3
7は非高調波メモリ(INH)で、20ワード×6
ビツトのRAMにより構成される。20ワードのう
ちの1ワードがアドレスコードAD1で選択さ
れ、MRW5の立上りでデータバスDB上のデー
タが書き込まれる。OC5が“H”のときAバス
に出力される。38は、指数変換テーブル(E×
P)で、ROMにより構成される。Dバスを入力
とし、OC6が“H”のときその内容をAバスに
出力する。39は差分指数変換テーブル(DE×
P)で、ROMにより構成され、Dバスを入力と
し、OC6が“H”のとき、記憶内容をBバスに
出力する。これら2つのテーブルの内容について
は後述する。40はゲートであつてDバスを入力
としOC7が“H”のときBバスに出力する。
32は、ポルタメントレジスタ(PRT)であ
つて、ポルタメントスピードを表わすコードをデ
ータバスより受け入れ、MRW1の立上りで記憶
する。31は、ポルタメントデータ変換器であつ
て、周波数の増減データをポルタメントレジスタ
32の内容をもとにつくり出し、OC1が“H”
のときにAバスに出力する。通常ポルタメントレ
ジスタ32の内容と同じものを出力する。42は
ビブラートデータ発生器で、ビブラート波形を表
わすコードを発生すると共に、OC10が“H”
のときVIB(n)をBバスに、OC11が“H”の
ときVIB(n)をAバスに、OC12が“H”のと
きVIB(n−1)をBバスに出力する。VIB(n)
は、現在のビブラートデータを表わし、VIB(n
−1)は前回のビブラートデータを表わす。41
はステータスフリツプフロツプ(SFF)で、デー
タバスDBのデータをMRW6の立上りで記憶し、
その内容を、TPG22に供給する。
TPG22は、周波数制御装置が新たなデータ
を外部のCPU3に要求するとき割込信号INTと、
割込内容を示す割込ベクトルコードをデータバス
DB上に出力する。出力指令信号OC1〜12が
“L”のときは、それらに対応しているメモリや
レジスタの出力は、高インビーダンスになつてA
バスやBバスに何ら影響を及ぼさないようにして
いる。
<データ構造>
つぎに、本発明で行なう周波数制御の指数変換
の機構C変換前と変換後のデータ構造について述
べる。
1オクターブは周波数比で1:2の関係であ
る。周波数に正比例する数値として、飛越数J
をつぎのように定義する。音源の1波形を記憶し
ているメモリが、218ワード(サンプル)より成
り立つているとする。サンプルの読出周波数をc
KHzとすると、1サンプルずつ全サンプルを読み
出す場合出力波形の周波数はc/218Hzとなる。
これは飛越数J=1に当る。飛越数Jに対して一
般的に周波数は
=c/218×J ……(1)
と表わせる。
本発明では、1オクターブをセント尺度上で量
子化し、指数変換により、演算されたセント尺度
で表わされた周波数値を周波数に正比例する飛越
数に変換している。
指数変換の方法についてつぎに述べる。
1オクターブをセント(cent)で表わすと、
1200セントになる。2つの周波数AとBの比はセ
ント尺度CEではつぎのようになる。
CE(cent)=1200log2(A/B) …(2)
周波数A,Bの飛越数を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は次式となる。
一般的には
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図のE×P38に用意する。ア
ドレス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ビツトのROMになる。
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は、NOD(n)のデータフオーマツト
で、下位4ビツトがノートを、上位4ビツトがオ
クターブを示す。NOD(n)は、指定されるオク
ターブとノートをもつ楽音の基本周波数1に対応
する。
第4図cは、高調波性をもつた楽音に含まれる
各高調波成分の周波数Rの基本周波数1に対する
比をセントで表わした、ハーモニツクデータ
HMDkである。
HMDk=1200log2(R/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) NOD(n):時刻nにおけるノートオクター
ブデータ(音高情報)に対する音高周波数
をセントアドレスで表わしたもの
(2) HMDk:基本周波数に対するk次の正高調
波周波数のセント表示であつて2進表示し
たもの(正高調波差セントアドレス)
HMDk=1200log2(R/1),R=k1(k=1
,
2,3……64) ……(13)
(3) INHk:k次の正高調波周波数からの周波数
のずれをセント表示で、かつ2進表示した
もの(非高調波差セントアドレス)。
k=k1+dkとすると
INHk=1200log2(k1+dk/k1)……(14)
を基本とするが、INHkが100セントを越
えるときには、取り扱い上、100セント以
下のINHkを求めるためにつぎのようにす
る。
INHk+p=1200log2k1+p1+(dk−p1)/k1+
p1
……(15)
(p=0,1,2,3,……かつdk−p10)
すなわち、k次の高調波からdkだけずれたもので
あるが、これを(k+p)次高調波から(dk−
p1)だけ、ずれたものとみることを意味する。
(4) VIB(n):時刻nにおけるビブラートやグラ
イドによる周波数の偏移をセント表示し、
かつ2進表示したもの。(変調セントアド
レス)
以上の変数から、k次高調波の周波数のセント
表示すなわちセントアドレスを、記号LOGJ(i,
j)で表わすと
LOGJi,j=NOD(n)+VIB(n)+HMDk+
INHk ……(16)
となる。LOGJi,jは、第4図Aのデータフオーマ
ツトを持つ。このうち{N3,N2,N1,N0,S5,
S4,S3}の7ビツトは、96進数で、(10)式における
iを表わす。{S2,S1,S0}の3ビツトは同じく
jを表わす。これらのコードを前述のEXP38
とDEXP39の指数変換テーブルと差分指数変換
テーブルのアドレスデータをして与えると、(10)式
にしたがつた指数変換ができる。これを次式で表
わす。
Ji,j=EXP〔LOGJi,p〕+DEXP〔LOGJi,j〕
……(17)
第3図Aより、指数変換テーブルは1オクター
ブの範囲しか設けていない。Ji,jは、この範囲内
での値を示すものである。オクターブを越える範
囲にある場合は、第4図Aのオクターブデータ
{O4,O3,O2,O1,O0}にしたがつてJi,jをビツ
トシフトすればよい。たとえば
{O4〜O1}=(00011)
のときは、3ビツト上位へシフトすればよい。何
ビツトシフトするかについては、正弦波発生器9
のビツト位置に合わせるようにすればよい。
以上で、データ構造とそれにもとづく飛越数J
の計算の手順が明らかになつた。
(16)式、(17)式、(18)式を一気に実行する
構成も実現できるが、本発明の実施例(第2図)
では、順次手順を追つて実行するようにしてい
る。(16)式、(17)式、(18)式を手順を追つて
実行するには、種々の方法が考えられる。先に述
べた第2図の構成による手順を、第1表に示す。
The present invention corresponds to a musical sound waveform generation method or apparatus that generates a frequency proportional to a frequency control value, and provides the following features:
This relates to a device that calculates frequency control values, and its purpose is to generate a portamento effect and to simplify the configuration by combining calculation methods that are compatible with the structure of the musical scale. Conventionally, various proposals have been made for musical tone generators using digital methods. 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,
By changing the amplitude value, a musical tone signal from the rise to the fall of the sound is formed. 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 IEEE Trans.on Audio
and Eectroacoustics, Volume 19, No. 1, 48-58,
1971 Document A Digital Frequency Synthesize
shows the specific configuration. A more specific and practical system based on these known examples is described in Japanese Patent Application Laid-open No. 58-65493. 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 a 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 a frequency setting voltage V F and a vibrato voltage V V on this voltage to obtain V 1 = (V K + V F + V V ) is obtained through an index converter to obtain V 0 =K 1 e×p (V K +V F +V V ), and the oscillation frequency of the voltage controlled oscillator (VCO) is determined by V 0 . When the voltage V F is 0V, 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 the above frequency, but what is important here is that even if V K and V F take various values, the rate of frequency fluctuation, that is, the pitch The fluctuation of is a point that remains constant if V V is constant. In Japanese Patent Application Publication No. 2003-130001, this method was replaced with digital calculation.
54−81824 is known. 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. Another conventional example is JP-A-56-74298. This expresses frequency information on a cent scale and controls the generation of the portamento effect on that scale. However, since the entire range of the cent scale is expressed in a simple binary system, it has the disadvantage that cent errors occur at each pitch position of the 12 chromatic scale. The purpose of the present application is to provide a frequency control device that does not cause such problems. Another object of the present application is to provide a device in which the portamento effect is uniformly applied throughout a wide range of sounds, and the effect is not too fast or slow depending on the range. 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 ROM) in which the 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 from the time-division multiplexed multiplication results or replaces them with the order of time-division multiplexing;
13 is a 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 (MREO), an I/O request line (IORQ), a read line (RD), a write line (WR), etc. are usually used. MREQ indicates reading and writing memory
IORQ indicates retrieving the contents of an input/output device (I/O), RD indicates timing to read data from memory or I/O, and WR indicates timing to write data to memory or I/O. Using such a control line,
An example of this is Zilog's microprocessor Z80. 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 ON-OFF states of the key switches in the groups can be collectively sent to the data bus. For example, for a 5-octave keyboard, 61
The keys are divided into 11 groups, 10 groups of 6 keys (half octave) and 1 group of only 1 key, and each group is assigned an address code.
Allocate one by one. An address code indicating one of the above groups arrives on the address line,
When IORQ and RD are applied, the keyboard section 1 decodes the address code and outputs 6-bit or 1-bit data indicating ON/OFF 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 state of the volume, the voltage output from the volume is converted into a digital code by an analog-to-digital converter, and this is read out using the address code and control lines IORQ and RD. The CPU 3 reads the instruction code from the address of the ROM 5 that corresponds to the code of the internal program counter, decodes it, performs arithmetic operations,
Performs tasks such as logical operations, reading and writing data, and jumping instructions by changing the contents of the program counter. The steps for these tasks are
It is written by ROM5. First, CPU3
A command for importing data of the keyboard section 1 is read from the ROM 5, and codes indicating ON/OFF of each key of the keyboard section 1 are fetched for each group. and,
The key code being pressed is assigned to a finite channel of the tone generator. Next, the CPU 3 sequentially reads a group of instructions from the ROM 5 for importing data from the operating section 2, decodes them, outputs the address code and control signals IORQ and RD corresponding to the operating section 2, and outputs them to the data bus. The CPU outputs the code that expresses the switch and volume status of the operation section 2.
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 outputs the IORQ and
When WR is output, data representing the frequency parameter being output on the data bus at the rising edge of the WR signal is written into the data register. Next, timbre parameters representing the contents of the timbre to be output are read from the ROM 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 multiplexing, and 20 sine waves are assigned to each channel, providing 8 channels. Normally, one musical tone is synthesized by combining 20 sine waves. Therefore, as known from the Fourier series formula, 20 sine wave data are added. For this purpose, the time slot converter 12 performs data addition between time slots. 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 is a device for exchanging time slots like the time division multiplex converter described in Japanese Patent Publication No. 10324/1983. The time-division multiplex phase modulator 13 is a digital musical tone modulator disclosed in Japanese Patent Application Laid-Open No. 58-83894.
In this method, multiple types of modulation are performed simultaneously using time division multiplexing. Time division multiplex phase modulation device 13
The output of
It is output from 6. 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 cent units, and the cent address on the cent point degree is expressed. Addition and subtraction are performed to obtain the cent address for the cent value of the actual frequency component, and this is subjected to exponential conversion. In order to digitize the system and find 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 realizes a function, as a part of an electronic musical instrument as shown in FIG. This relates to the frequency control device 8. One embodiment is shown in FIG. The frequency control device in Fig. 2 includes a data bus DB,
Address bus ADR, control lines IORQ and WR
It is connected to the CPU 3 through the chip select line CS, receives frequency parameters, and is connected to the address bus by the microcomputer interface circuit (MIF) 25.
The code of ADR is decoded and written to the internal register group, and the required number of Ji is 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 (PC) that supplies timing pulses; 22 is a timing pulse that extracts logic from timing pulses to create necessary address codes, or receives control flag (FLG) signals to create control signals. Generator (TPG), 23 is a sequencer (SEQ) which is read out by timing pulses and control signals and stores the contents and procedures of arithmetic operations and logical operations, which will be described later.
24 is an instruction that decodes the contents of the sequencer and outputs address codes, output command signals (OC1-12), write command signals (WR0-3), operation command signals (OP code), etc. It is a decoder. 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
It 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 WR1, and provides an output when OC8 is "H". 28 is a RAM consisting of 160 words x 15 bits, which receives input from the C bus and supplies output to the D 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.
Specified by AD1, any one of the 8 channels
The channel is selected with the 3-bit address code AD4, data on the C bus is written at the rising edge of WR2, and the output remains on the D bus. However, the upper five bits of the output are supplied to the buffer memory 29. Buffer memory 29 is 160 words x
17-bit RAM, C bus data and RAM2
The upper 5 bits of 8 are accepted as input. 160
The words are divided into 8 channels of 20 words each, and one word out of the 20 words is used as an address code.
Select with AD3, select one of the 8 channels with address code AD4, write input data at the rising edge of WR3, and output when OC9 is "H". The output of buffer memory 29 is supplied to octave shifter 30. Based on the code of the upper 5 bits of the buffer memory 29, the lower data 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 note octave register (NOD(n))
The latest note octave data is accepted from the CPU 3 via the data bus DB, and output to the A bus when necessary. Write is performed with MRW2, and read with OC2. 34 is a note octave register (NOD(n-1)) which accepts 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 MRW3,
Writing from the B bus is performed using WRO, and output to the B bus is performed using OC3. 35 is a harmonic data memory (HMD), which is composed of a ROM of 64 words x 13 bits. Which of the 64 words to select is determined by partial number memory 3.
It is determined by the 6-bit code output by 6. Partial number memory 36 is 20 words x 6
Bit RAM accepts input from data bus DB. Select 1 word out of 20 words with address code AD1 and write at the rising edge of MRW4. Output is always harmonic data memory 35
is supplied to The output of the harmonic data memory is output to the A bus when OC4 is "H". 3
7 is non-harmonic memory (INH), 20 words x 6
Consists of bits of RAM. One word among the 20 words is selected by address code AD1, and data on data bus DB is written at the rising edge of MRW5. When OC5 is "H", it is output to the A bus. 38 is an index conversion table (E×
P) and is configured by ROM. The D bus is input, and when OC6 is "H", its contents are output to the A bus. 39 is a differential index conversion table (DE×
P) is composed of ROM, takes the D bus as input, and outputs the stored contents to the B bus when OC6 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 OC7 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 MRW1. 31 is a portamento data converter which generates frequency increase/decrease data based on the contents of the portamento register 32, and when OC1 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, which generates a code representing a vibrato waveform, and when OC10 is “H”
When OC11 is "H", VIB (n) is output to the A bus, and when OC12 is "H", VIB (n-1) is output to the B bus. VIB(n)
represents the current vibrato data and VIB(n
-1) represents the previous vibrato data. 41
is a status flip-flop (SFF) that stores data on the data bus DB at the rising edge of MRW6.
The contents are supplied to the TPG22. 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 OC1 to OC12 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 data structure before and after the index conversion mechanism C for frequency control performed in the present invention will be described. One octave has a frequency ratio of 1:2. As a number directly proportional to the frequency, 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). Set the sample readout frequency to c
If KHz is used, 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 for the jump number J can be expressed as = c / 2 18 × J ... (1). In the present invention, one octave is quantized on the cent scale, and by exponential transformation, the calculated frequency value expressed in the cent scale is converted into an interlaced number that is directly proportional to the frequency. The method of index conversion will be described next. One octave is expressed in cents,
It will be 1200 cents. The ratio of the two frequencies A and B in cent scale CE is as follows. CE (cent) = 1200log 2 ( A / B ) …(2) If the jump numbers of frequencies A and B are J A and J B , then 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, which can be 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 i 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 of equation (7) ( For j=1 to 7), linearly interpolated values are used. That is, J i,j becomes the following formula. In general 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 Expressed as Can be done. 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, a method for calculating J i,j in equation (8) will be explained. According to Figure 3, J is for one octave,
It is represented by 2048 to 4096 in binary 12 bits. Figure 3B shows the range of CE=0 to 100 (cents) in detail. Within 100 cents
It is divided into equal parts such as 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. Since 2 bits are sufficient for the middle level, 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 which N 1 and N 0 are expressed in binary coded ternary notation. For such a value of (i, j), J i,p
Prepare 96 values for E×P38 in FIG. Assuming 96 addresses, each with 12 bits, 96×
12 = 1152 bits of ROM. This J i,p corresponds to the first term of equation (10). Next, as a difference, it is a part of the second term of equation (10). Prepare in DEXP39 in Figure 2. Since the maximum value of DJ i,j is DJ 95.7 =25.784 when i=95 and j=7, DJ i,j can be expressed as a 5-bit binary number.
Furthermore, (i, j) has 96×8=768 ways. Therefore, 768 St. Addresses, 768 x 5 =
It becomes a 3840-bit ROM. 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 DEXP39, the equation (10) can be obtained.
J i,j is obtained as a 12-digit binary number. FIG. 4A represents a binary number or extended cent address representing a quantized pitch on a cent 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. One octave is
Since it is 1200 cents 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 NOD(n), where the lower 4 bits indicate a note and the upper 4 bits indicate an octave. NOD(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 R of each harmonic component included in a harmonic musical tone to the fundamental frequency 1 in cents.
HMD k . HMD k = 1200log 2 ( R / 1 ) ... (12) (k = 1, 2, 3, ..., 64) expressed in binary. (H 12 ~ H 0 )
Using 13 bits, the accuracy is ±0.78125 cents,
2 8 = up to 256th harmonic can be achieved. {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) NOD(n): The pitch frequency for note octave data (pitch information) at time n, expressed in cents address. (2) HMD k : The cents expression of the kth positive harmonic frequency relative to the fundamental frequency. Once expressed in binary (positive harmonic difference cent address) HMD k = 1200log 2 ( R / 1 ), R = k 1 (k = 1
,
2, 3...64) ...(13) (3) INH k : Frequency deviation from the k-th positive harmonic frequency expressed in cents and in binary (non-harmonic difference cent address). If k = k 1 + d k , then INH k = 1200log 2 (k 1 + d k /k 1 )... (14) is the basic formula, but when INH k exceeds 100 cents, INH of less than 100 cents is To find k , do the following. 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) In other words, it is a harmonic of the kth order shifted by d k , but it is expressed as (k + p ) harmonic to (d k −
p 1 ). (4) VIB(n): Displays the frequency deviation due to vibrato and glide at time n in cents,
and expressed in binary. (Modulation cent address) From the above variables, the cent display of the frequency of the k-th harmonic, that is, the cent address, can be determined with the symbol LOGJ (i,
j), LOGJ i,j = NOD (n) + VIB (n) + HMD k +
INH k ……(16) becomes. LOGJ i,j has the data format shown in FIG. 4A. Among these, {N 3 , N 2 , N 1 , N 0 , S 5 ,
The 7 bits of 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 can be converted to the EXP38 mentioned above.
By giving the address data of the exponent conversion table of DEXP39 and the differential exponent conversion table, exponent conversion can be performed according to equation (10). This is expressed by the following formula. J i,j = EXP〔LOGJ i,p 〕+DEXP〔LOGJ i,j 〕
...(17) From Figure 3A, the exponent conversion table has a range of only one octave. J i,j indicates a value within this range. If the range exceeds an octave, J i,j may be bit-shifted according to the octave data {O 4 , O 3 , O 2 , O 1 , O 0 } shown in FIG. 4A. For example, when {O 4 -O 1 }=(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 realize a configuration in which equations (16), (17), and (18) are executed all at once, the embodiment of the present invention (Fig. 2)
Now, let's do it step by step. Various methods can be considered to execute equations (16), (17), and (18) step by step. Table 1 shows the procedure according to the configuration shown in FIG. 2 described above.
【表】
第1表において、命令群A,B,Cのうち、A
とBが、8チヤンネル、各チヤンネルで20本のス
ペクトルに対する飛越数Jを計算する手順を示し
ている。命令群Aは命令4〜7、命令群は命令8
〜11により成つている。各命令の内容は、命令内
容により示される。たとえば命令4はNOD(n)
とVIB(n)とを加算し、ワーキングレジスタ
WREG2に格納することを意味する。命令5は
ワーキングレジスタWREG2の内容と、ハーモ
ニツクデータHMD(I)とを読み出して、それらを
加えてWREG2に格納する。命令6は、WREG
2の内容と、インハーモンシテイデータINH(I)
とを加算し、レジスタLOGJ(K,I)に格納す
る。命令7は、レジスタLOGJ(K,I)の内容
をアドレスコードとして、指数変換テーブル
EXP38と差分指数変換テーブルDEXP39に
与えて、それぞれの出力を加えて、バツフアメセ
リBUF(K,I)29に格納する。ここで、Iは
後述する処理タイムスロツト(PTS)を表わす
と共に、各チヤンネルにおけるスペクトルの番号
をも表わしている。I=1,2,……20である。
Kはチヤンネルタイムスロツト(CHS)を表わ
している。K=1,2,……,8である。CHS
については後述する。
命令群Bも第1表より同様にその演算内容の意
味を読み取ることができる。命令8における△は
零としておく。命令群Aは、ノートオクターブデ
ータNOD(n)が変更されたときに実行され、そ
れ以降は、命令群Bが実行される。命令群Bで
は、NOD(n),HMD(I),INH(I)が変化しな
いので、これらの計算をせず、前回の値LOGJ
(K,I)からVIB(n−1)を引いてVIB(n)
の新しい値に対しての計算を行ない指数変換を実
行する。ノートオクターブデータNOD(n)が更
新されると一度命令群Aにもどり、そのあと再び
命令群Bを実行する。
第1表において、ITSは命令タイムスロツト
で、ITS1〜4まであり、命令04,8はITS1で
実行されることを示している。また、それぞれの
命令実行時において活性化される書き込み線、書
き込みパルス、出力コントロール線を示してい
る。
以上の命令を実行するには、チヤンネルタイム
スロツト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まである。PTS(I)、I=
1〜20ではチヤンネル1における、20個のスペク
トル(正弦波形)に対応する周波数を決める飛越
数を計算する。そして、PTS21の前半の2.5μs
においた、計算された20個のJの値を第6図Fに
示すように125nsきざみで、正弦波発生器9(第
1図)へ転送する。この転送のタイミングは、
CHS1〜8で異なる。たとえば、CHS8ではPST
24の後半で実行される。第6図Eは、各処理タ
イムスロツトPTS1〜20の中味を拡大したも
のである。PTS1〜20は、それぞれ、命令タ
イムスロツトITS1〜4の4つの部分に分かれて
いる。それぞれは1.25μsの長さである。これらの
命令タイムスロツトITSにおいて上記第1表の命
令が実行される。PTS1〜20の間は、第2図
の実施例において、ALU26を中心とする演算
が行なわれる。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}は、チヤンネルタイムスロツトCHS
1〜8を表わす3ビツトのコードに相当する。カ
ウンタ52は5段より成る20進カウンタで、
{Q4,Q3,Q2,Q1,Q0}を出力する。カウンタ
51と52は、同期している。カウンタ51と5
2の出力より第8図に示すタイミングパルスが
TPG22の内部でつくられる。CKは、125ns
(8MHz)の周波数である。P1,P2,P3,P4,P5
より、WRC,ITS1〜4,WRC1〜4が得られ
る。ITS1〜4信号は、第2図の出力指令信号
OC1〜12をつくり出すもとになる信号、WRC
1〜WRC4は書き込み指令信号WR0〜WR3を
つくり出す元になる信号である。
第9図は、バツフアメモリ29に加えられるア
ドレスコードAD3とAD4、出力指令信号OC
9、書込指令信号WR3を発生させる回路例であ
る。アドレスコードAD4は{P13,P12,P11},
AD3は、{P10〜P16)か{Q4〜Q0}をセレクタ
69で選択した一方である。WR3は、インバー
ト入力のアンドゲート70とインバート付オアゲ
ート71により作られた処理タイムスロツト
PTS1〜20におけるITS4に対応するWRC4
である。アンドゲート60,61,62,63
は、{P10,P9,P8}={1,0,1}を検出する。
これは、PTS21〜24に相当する。このとき
はセレクタ69はQ4〜Q0を選択する。EXORゲ
ート64,65,66は{P7,P6,P5}と
{P13,P12,P11}の一致判定を行なう。アンドゲ
ート67はPTS21〜24の中でCHS番号に一
致したPTSの半区間を選択し、出力が“H”の
ときにOC9を出力する。したがつて、まとめる
と、PTS1〜20の中のITS4において、AD4
とAD3はそれぞれKとIを指定し、ITS4にお
いてWR3を出力し、第1表の命令7または11の
バツフアメモリ29(BUF(K,I))への書き
込みを行なう。PTS21〜24の間のCHS=K
に対応する2.5μsの間、OC9は“H”となり、
BUF(K,I)のI=1〜20の内容が、アドレ
スコードAD4とAD3にしたがつて出力される。
第10図は、第2図におけるシーケンサ23が
記憶している命令コードのフオーマツトの一例を
示すものである。操作用のOPコード2ビツト、
データの転送または格納先を表わすデステイネー
シヨンコード3ビツト、データを取り出してくる
レジスタを示すソース1コード3ビツト、ソース
2コード4ビツトより成る。それぞれのコードの
意味を、第10図B〜Eに示している。OPコー
ドは、ALU26の機能を指定する。第1表に示
した12通りの命令の演算は、第10図の命令コー
ドによつて書き表わされる。第10図EのZERO
は、AバスにZEROを出力させることを意味す
る。
第9図に例示したと同様の考え方で第10図の
命令コードと第1表のCHS,PTS,ITS,書き
込み線、出力コントロール線などにもとづいて、
インストラクシヨンデコーダ24や必要な制御信
号やタイミングパルスを発生させる回路を設計す
ることができる。
第11図は、第1表の命令群AとBの実行切り
替えのタイミングを示すものである。上から、チ
ヤンネルタイムスロツト、演算実行、J転送、割
込パルス、データ転送、KONフラグが示されて
いる。演算AまたはBは、処理タイムスロツト
PTS1〜20(第6図)で、20回実行される。
20回目の最終時に割込パルスINTが、第2図の
TPG22より、第1図のCPU3に出力される。
このとき、同時に割込ベクタとして、CHS8を
示すコード{P13,P12,P11}が、第2図のデー
タバスDBに出力される。CPU3は、この割込ベ
クタ{P13,P12,P11}を読み取り、つぎのCHS
が1であることを知り、チヤンネル1の出すべき
音高が変化している場合、データ転送を行なう。
データ転送は、CPU3のデータバスから第2図
のデータバスDBへ行なわれる。そして、NOD
(n)33、PNO36、INH37およびステータ
スFF41に所定のデータを書き込む。そして、
とくに、ステータスFFの中に含まれるKONフラ
グフリツプフロツプ(FF)をセツトする。KON
フラグは、CHS1に対応する音の高さが変更さ
れたことを示す。KONフラグが“1”のときは、
命令群Aが読み出されてCHS1の間に実行され
る。実行が終ると再び、割込パルスが発生し、
CHS1を示す割込ベクタが出力される。同時に
KONフラグFFはリセツトされる。割込パルス
INTと割込ベクタ{P13,P12,P11}に対応して
CPU3は、つぎのCHS2で前回の音高のままか、
どうかを判断し、同じ音高を出すべきとはデータ
転送が行なわれない。したがつてKONフラグは
“0”のままである。このときは、命令群Bが20
回実行される。
命令群Aは、新たなNOD(n)データをもと
に、Jを算出するプログラムで、命令群Bは、前
回のJに対してビブラートデータの変化のみを修
正する命令群である。命令群AとBの読み出しと
切り替えは、第7図のカウンタ51の処理タイム
スロツトコード{P10〜P6}がPTS1〜20に示
す時間内で、命令タイムスロツトITS1〜4に対
応して命令群AとBを読み出し、KONフラグで
一方を選して出力するようにすれば行なえる。
CPU3から本発明の周波数制御装置へ転送す
べきデータ量は、第2図の実施例においては、
NOD(n)1ワード、PNOが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を発生させるこ
とができる。また、パーシヤル番号メモリ36の
20ワードのRAMには、別のパーシヤル番号を与
えるように説明したが、任意の複数ワードに同じ
パーシヤル番号を格納し、非高調波メモリ37
に、少し異なつたINHデータを書き込むと、非
常に近い周波数の2つ以上の周波数成分の発生が
可能になる。すなわちコーラス効果が得られる。
鍵盤楽器のうちでもピアノでは、鍵盤の音域に
対して、低域ではピツチが下がり気味、高域では
ピツチが上がり気味であつて、1オクターブが正
確に1:2の周波数比になつていない。この現象
をピツチエクステンドと呼ぶことができる。この
ためには、このずれを発生させるためのROMを
設け、このROMを、NOD(n)のデータにより
アクセスして、ノートオクターブに対応するずれ
の量を出力させ、この量を差分アドレスとして
ALU26で加えるようにしてもよい。また、非
高調波メモリ37に書き込むデータに、上記ずれ
を含ませることもできる。
なお、非高調波性をもたない楽音を発生させる
には、INHデータとしてゼロ値を書き込めばよ
いことは云うまでもない。
上記説明では、データフオーマツトとして一部
に2進化3進表示をするようにした。この代りに
2進化して進、2進化6進などの表示も可能であ
る。また、完全な2進表示でデータを表示しかつ
演算し、最後にこれを、ノートデータの部分を含
むより高位の桁について、2進化3進変化するこ
とにより、オクターブデータを得るようにしても
よい。このためには2−3進変換ROMを設けれ
ばよい。
上記第2図の実施例では、NOD(n)用のレジ
スタを1個のみとした。これらのレジスタや
RAMの数を8チヤンネル分設ければ、演算手順
は、A群だけで良くなる。このように、構成と演
算手順とには関連があり、本実施例に限らず種々
のものがあるが、これらの説明については省略す
る。
上記説明では、正弦波合成のための飛越数Jを
計算する手順として述べたが、正弦波以外の波形
を読み出す方式の波形発生器のための、周波数制
御にも使うことができる。たとえば、20本の高調
波成分でなく、1つの波形に対してJを1つだけ
発生させる場合にも、上記と同様の考え方で最適
構成ができる。
<ポルタメント効果>
第2図の実施例において、ポルタメント効果に
対応して、飛越数Jを徐々に変化させることもで
きるようにしている。第2図の実施例では、1チ
ヤンネルすなわちCHS1についてのみポルタメ
ントがかかるようにしたものを示している。
まず先述のとおり、ポルタメントモードでは、
今回のノートオクターブデータがNOD(n)33
に、前回のノートオクターブデータがNOD(n−
1)34に格納される。と同時に、ポルタメント
スピードと押鍵間隔NOD(n)−NOD(n−1)
に対応する増分Δを表わすデータがPRT32に
格納される。
ここで増分Δは、ポルタメントスピードの設定
値に比例し、押鍵間隔にも比例する値である。押
鍵間隔に比例させるのは、その大小に係わらず、
鍵NOD(n−1)から鍵NOD(n)に音高が徐々
に代わる際に遷移時間が同じになるようにするこ
とができるようにするためである。増分Δは鍵盤
1やタブレツト2などの設定状態をCPU3が読
み取つてデータバスDBを通じてPRT32に格納
される。このデータはそのままあるいは若干の変
換を受けてポルタメント変換器において格納され
る。
第1表の命令群Cは、ポルタメントの増減判別
を行なう。命令Oは、前回のNOD(n−1)に増
分△を加える。命令1は、その結果が、目標値で
あるNOD(n)に到達したか、丁度一致したか、
越えたかを、比較判断する。CPはCompareの意
味である。この比較の結果、ALU26は、その
内部のフラグFLGを設定する。ALU26のフラ
グFLGとしては、ゼロフラグZと符号フラグS
を設ける。これらのフラグは、通常の加減算器に
付属して設けられ、ゼロフラグZは演算結果が全
ビツト共“0”のときに“1”となり、それ以外
では“0”になるフリツプフロツプ、符号フラグ
Sは、演算結果の最上位ビツトが“1”のときに
“1”となり、それ以外では“0”になるフリツ
プフロツプで構成される。命令1の比較結果と、
増分△の符号を表わす△Sとにより、命令2と3
の一方が実行される。命令2は、現状のノートオ
クターブデータNOD(n−1)に△を加算したも
のを、新たなノートオクターブデータNOD(n−
1)として格納する。命令3は、最終目標である
NOD(n)を、新たなNOD(n−1)として格納
する。
以上の命令群Cによつて、ポルタメント効果に
おいて、増分△を加算することによりピツチが目
標のノートオクターブデータNOD(n)に達して
いないか、丁度か、あるいは目標値を越えてしま
うかを判断し、その結果にもとづいて、基本波や
高調波のセント尺度上の周波数を増分△だけ増や
す命令群Bを実行するか、あるいは、目標値
NOD(n)にもとづく到達点での演算を行なう命
令群Aを実行するかを選択させる。
第12図は、3つのフラグ△S,Z,Sの組み
合わせ状態により、命令0〜11のうち実行される
ものがどれになるかを示したものである。命令0
と1は毎回実行される。命令1における演算結果
であるフラグZ,Sと△Sとにより、命令3と命
令群A(命令4〜7)とが実行される場合と、命
令2と命令群B(命令8〜11)とが実行される場
合とに分類される。前者は、増分△の累算により
目標値NOD(n)に丁度達するか、越えてしまう
場合である。後者は、増分△を累算しても、まだ
目標値NOD(n)に達しない場合である。
第13図はポルタメントモードにおけるタイミ
ングチヤートである。演算が実施される処理タイ
ムスロツトPTSは、命令群CはPTS32におい
て、命令群AとBはPTS1〜20において実行
される。PTS20の終りまたはPTS21の初め
に割込パルスが発生し第1図のCPU3に対して、
新たなデータを要求する。このとき、CHSコー
ド{P13,P12,P11}が割込ベクターとしてデー
タバスDBに出力され、CPU3は、いま、どの
CHSにあるかまた、つぎのCHSが何かを知るこ
とができる。もしも鍵が押しかえられていて、新
たなノートオクターブに移るべき状態になつてい
れば、CPU3は新たなNOD(n)、前回のNOD
(n−1)、PNO,INHの一群のデータとステー
タスフラグデータをデータ転送する。ステータス
データの中にはKONフラグが含まれており、
KONフラグFFを“1”にする。ポルタメントモ
ードでは、このKONフラグにかかわらず、演算
処理をすればよい。まず、CHS1の直前のCHS
8のPTS32で、命令群Cの命令0〜3を実行
する。ただし命令2と3の一方は第12図のフラ
グ△S、Z,Sにより、その一方の実行は無視さ
れる。このあと、上記フラグの状況に従つて命令
群AまたはBがCHS1のPTS1〜20において
実行される。
命令群Cの読み出しは、PTSが32すなわち処
理タイムスロツトコード{P10〜P6}が{111111}
になるタイミングにおいて、命令0〜3を示すア
ドレスコードを順次シーケンサ23内の命令
ROMに加えて命令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ビツトのアドレスを加えることに
より命令ROM内の命令4〜7と8〜11とを選択
的に読み出すようにすればよい。
第14図は、第4図において示したデータ構造
をもつデータの演算を行なうALU26のうち加
算器の例である。N1とN0は2進化3進数である
ため、下位S5からの桁上げCsとAバス上のN1,
N0およびBバス上のN1,N0を入力として、出力
であるCバス上のN1,N0と上位への桁上げCNが
第14図の真理値表のように決まる。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)を更新
するタイミングにおいて、ROMを読み出し、レ
ジスタにそれぞれ書き込むようにしたものでよ
い。
オクターブシフタ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の中に
NORMAL/PORTAMETOのモードビツトを用
意しておき、CPU3からこのビツトに“1”を
送るとノーマルモード、“0”を送るとポルタメ
ントモードとし、モードビツトにしたがつて、命
令読出しを切りかえるようにすればよい。なお、
ノーマルモードでは、PRT32(第2図)にゼ
ロを書き込む。△がゼロになるようにしておく。
第15図は、指数変換の他の実施例である。3
8は第2図と同じEXP38でJi,pを記憶している。
39−1は{N3〜S3}の7ビツトに対するアド
レスをもつ差分ROMで、96の指数サンプル値の
差分値(Ji+1,0−Ji+0))を記憶している。出力は
5ビツトである。39−2{S2,S1,S0}の3ビ
ツトに応じて、等分値の補間値を出力するための
簡易化された掛算用ROMである。すなわち、
(Ji-1,0−Ji,0)×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とし、23×16=3824
をBとすれば、12ビツトで最も高精度のセントア
ドレスから飛越数への変換ができる。
以上を要約すると本願は、基音および高調波か
らなる発生すべき楽音の基音の音高周波数に対応
する音高情報、上記楽音の音調波次数に関する正
高調波周波数情報およびポルタメントによる周波
数増減に対応する増分データを入力とし、少なく
とも1オクターブ区間を等間隔の所定のセント間
隔を持つ複数の区間に分け、上記区間の境界に対
してセント尺度上のアドレスを割り付け、上記音
高情報をセントアドレスの形式で与え、上記正高
調波周波数情報を音高情報からの差の形のセント
アドレスとして出力させ、上記音高情報のセント
アドレス、上記正高調波周波数情報に対応する差
セントアドレスを加算し、さらに上記増分データ
を累加(減)算して和セントアドレスを得、和セ
ントアドレスを周波数に正比例する周波数制御値
に変換する変換器に加えて周波数制御値を得るよ
うにするものであつて、上記音高情報、正高調波
数情報、増分データを格納する格納手段と、上記
格納手段に結合された情報伝達用の少なくとも1
本のバスラインと、上記バラインに接続された加
減算用の演算器と、その演算結果を格納する格納
手段と、演算結果を上記バスラインに出力する装
置と、上記変換器とを備え、上記セントアドレス
の区間分けは、1オクターブ区間内のセントアド
レス数の中位の桁の表現を2進化された3の倍数
進形式にし、上記ポルタメントによる周波数偏位
の増分を表わすデータを発生する手段は、前回の
音高周波数と今回の音高周波数ののセント差およ
びポルタメント速度の設定に対応した増分データ
を発生するようにし、上記音高情報を格納する手
段は、前回音高情報格納手段と今回音高情報格納
手段とよりなり、前回音高情報に上記増分データ
を累加(減)算することにより、和(差)セント
アドレスを得、これを変換器に加えて周波数制御
値に変換すると共に、上記累加(減)算に際し
て、上記和(差)セントアドレスが今回音高情報
のセントアドレスを越えたときには、累算結果の
変りに今回音高情報のセントアドレスを採用する
ようにして、セント尺度上で直線的なポルタメン
トを実現することを特徴とする周波数制御装置で
ある。
したがつてセント尺度上で直線的なポルタメン
トを実現することができ、全音域にわたつて、ほ
ぼ同じピツチ精度で周波数の移動ができ、しか
も、音域が変わつても、ポルタメント速度はアド
レス増分データ△に対しては一定に保たれる。し
かも、目標のノートオクターブに対するセントア
ドレスを越えることもなく、確実なポルタメント
が実現できる。
また、本発明は、1オクターブ内のセントアド
レス数を(L×M)とし、M間隔のL個について
対応する周波数制御値を記憶した第1の記憶装置
と、上記L個のうち隣接する周波数制御値の差分
値を基にした補間値を記憶した第2の記憶装置を
用いるようにしたので、セントアドレスの演算が
複雑な対数変換演算なしで精度良く行なえるとい
う効果をもつている。[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. Instruction group A is instructions 4 to 7, instruction group is instruction 8.
It consists of ~11. The content of each command is indicated by the command content. For example, instruction 4 is NOD(n)
and VIB(n), and write the working register
This means storing in WREG2. Instruction 5 reads the contents of working register WREG2 and harmonic data HMD(I), adds them, and stores them in WREG2. Instruction 6 is WREG
2 contents and Inharmonity data INH(I)
are added and stored in register LOGJ (K, I). Instruction 7 uses the contents of register LOGJ (K, I) as an address code and converts it to an exponent conversion table.
It is applied to EXP 38 and differential index conversion table DEXP 39, and the respective outputs are added and stored in buffer memory BUF (K, I) 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 NOD(n) is changed, and thereafter command group B is executed. In instruction group B, NOD(n), HMD(I), and INH(I) do not change, so these calculations are not performed and the previous value LOGJ is
Subtract VIB(n-1) from (K, I) to get VIB(n)
Perform calculations on the new value of and perform exponential transformation. When the note octave data NOD(n) is updated, the program returns to instruction group A, and then executes instruction group B again. In Table 1, ITS is an instruction time slot, and there are ITS1 to ITS4, indicating that instructions 04 and 8 are executed in ITS1. 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. 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 supply is processed in 125ns steps. Channel 1 (CH1) has 20 samples.
The same applies to CH2 to CH8. On the other hand, Fig. 6C shows A
This is the timing to calculate the jump number J in synchronization with . Channel time slots CHS 1 to 8 are provided in units of 160 μs.
In CHS1, J calculation for channel 1 is performed,
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). FIG. 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. PTS(I), I=
1 to 20 calculates the number of jumps that determine the frequencies corresponding to the 20 spectra (sine waveforms) in channel 1. And 2.5μs in the first half of PTS21
The 20 calculated J values are transferred to the sine wave generator 9 (FIG. 1) in 125 ns steps as shown in FIG. 6F. The timing of this transfer is
Different for CHS1-8. For example, in CHS8, PST
It will be executed in the second half of 24th. FIG. 6E is an enlarged view of the contents of each processing time slot PTS1 to PTS20. PTS1-20 are divided into four parts, instruction time slots ITS1-4, respectively. Each is 1.25μs long. The instructions in Table 1 above are executed in these instruction time slots ITS. During PTS1 to PTS20, calculations are mainly performed in the ALU 26 in the embodiment shown in FIG. Between PTS21 and PTS32, new data is written mainly to MIF25 in FIG. 2 via data bus DB, and VIB(n) and VIB(n-1) data are updated. 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 ITS4, 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 CHS
It corresponds to a 3-bit code representing 1 to 8. The counter 52 is a 20-decimal counter consisting of five stages.
Output {Q 4 , Q 3 , Q 2 , Q 1 , Q 0 }. Counters 51 and 52 are synchronized. counters 51 and 5
From the output of 2, the timing pulse shown in Figure 8 is obtained.
Created inside TPG22. CK is 125ns
(8MHz) frequency. P1 , P2 , P3 , P4 , P5
Therefore, WRC, ITS1-4, and WRC1-4 are obtained. ITS1 to 4 signals are the output command signals shown in Figure 2.
WRC, the signal that creates OC1-12
1 to WRC4 are signals from which write command signals WR0 to WR3 are generated. Figure 9 shows the address codes AD3 and AD4 added to the buffer memory 29 and the output command signal OC.
9. This is an example of a circuit that generates the write command signal WR3. 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. WR3 is a processing time slot created by the AND gate 70 with invert input and the OR gate 71 with invert input.
WRC4 corresponding to ITS4 in PTS1-20
It is. And gate 60, 61, 62, 63
detects {P 10 , P 9 , P 8 }={1,0,1}.
This corresponds to PTS21-24. At this time, the selector 69 selects Q4 to Q0 . EXOR gates 64, 65, and 66 perform a match determination between {P 7 , P 6 , P 5 } and {P 13 , P 12 , P 11 }. The AND gate 67 selects the half section of the PTS that matches the CHS number among the PTS21 to 24, and outputs OC9 when the output is "H". Therefore, to summarize, in ITS4 among PTS1-20, AD4
and AD3 designate K and I, respectively, output WR3 at ITS4, and write to buffer memory 29 (BUF (K, I)) of instruction 7 or 11 in Table 1. CHS between PTS21-24=K
OC9 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 OP 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 OP 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 ZERO
means to output ZERO to the A bus. Based on the instruction code in Figure 10 and the CHS, PTS, ITS, write line, output control line, etc. in Table 1, using the same idea as illustrated in Figure 9,
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 KON 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 INT is as shown in Figure 2.
The TPG 22 outputs the signal to the CPU 3 shown in FIG.
At this time, a code {P 13 , P 12 , P 11 } indicating CHS8 is simultaneously outputted to the data bus DB in FIG. 2 as an interrupt vector. The CPU 3 reads this interrupt vector {P 13 , P 12 , P 11 } and executes the next CHS.
is 1, and if 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 NOD
(n) Write predetermined data to 33, PNO 36, INH 37 and status FF 41. and,
In particular, it sets the KON flag flip-flop (FF) contained in the status FF. KON
The flag indicates that the pitch of the sound corresponding to CHS1 has been changed. When the KON flag is “1”,
Instruction group A is read and executed during CHS1. When the execution is finished, an interrupt pulse is generated again.
An interrupt vector indicating CHS1 is output. at the same time
KON flag FF is reset. interrupt pulse
Corresponding to INT and interrupt vector {P 13 , P 12 , P 11 }
Does CPU3 remain at the previous pitch in the next CHS2?
Data transfer will not occur if the same pitch is to be played. Therefore, the KON flag remains at "0". At this time, instruction group B is 20
Executed times. The instruction group A is a program that calculates J based on new NOD(n) data, and the instruction group B is a program that corrects only changes in vibrato data with respect to the previous J. The reading and switching of the instruction groups A and B are performed within the time indicated by the processing time slot codes {P 10 -P 6 } of the counter 51 in FIG. This can be done by reading out groups A and B, selecting one using the KON 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 as follows:
NOD(n) 1 word, PNO 20 words, INH
20 words, 1 word for status FF, 1 word for PRT
A total of 43 words is sufficient. 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
64 and further increase one word of harmonic data 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. Moreover, in the embodiment of the present invention,
By omitting some of the many harmonic orders, it is possible to generate a jumping number J that is a toothless frequency control value. In addition, the partial number memory 36
Although it was explained that a different partial number is given to the 20 words of RAM, the same partial number can be stored in arbitrary multiple words and the non-harmonic memory 37
By writing slightly different INH data to , it is possible to generate two or more frequency components with very close frequencies. In other words, a chorus effect can be obtained. Among keyboard instruments, the pitch of the piano tends to be lower in the low range and higher in the high range compared to the range of the keyboard, and the frequency ratio of one octave is not exactly 1:2. This phenomenon can be called pitch extend. To do this, a ROM is provided to generate this shift, and this ROM is accessed by NOD(n) data to output the amount of shift corresponding to the note octave, and this amount is used as the difference address.
It may be added by ALU26. 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 the INH data. In the above explanation, part of the data is displayed in binary coded ternary notation. Alternatively, it is also possible to display binary coded base, binary coded hexadecimal, etc. Alternatively, you can obtain octave data by displaying and calculating data in complete binary representation, and then converting it into binary coded ternary notation 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, there is only one register for NOD(n). These registers and
If the number of RAMs is provided for 8 channels, the calculation procedure can be reduced to only group A. 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 is described as a procedure 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, when generating only one J for one waveform instead of 20 harmonic components, an optimal configuration can be achieved 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 NOD(n)33
, the previous note octave data is NOD (n-
1) Stored in 34. At the same time, portamento speed and key press interval NOD (n) - NOD (n - 1)
Data representing the increment Δ corresponding to is stored in the PRT32. Here, the increment Δ is a value that is proportional to the portamento speed setting value and also proportional to the key depression interval. Making it proportional to the key press interval, regardless of its size,
This is to enable the transition time to be the same when the pitch gradually changes from the key NOD(n-1) to the key NOD(n). The increment Δ is read by the CPU 3 from the setting states of the keyboard 1, tablet 2, etc. and stored in the PRT 32 via the data bus DB. This data is stored in the portamento converter either as is or after some transformation. Instruction group C in Table 1 determines whether portamento is increased or decreased. Instruction O adds an increment Δ to the previous NOD(n-1). Instruction 1 determines whether the result has reached or exactly matched the target value NOD(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 that 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 NOD(n-1) and adds it to new note octave data NOD(n-1).
1). Command 3 is the final goal
Store NOD(n) as a new NOD(n-1). With the above instruction group C, in the portamento effect, by adding the increment △, it is determined whether the pitch has not reached the target note octave data NOD(n), has just reached it, or has exceeded the target value. Then, based on the results, execute command group B that increases the frequency on the cent scale of the fundamental wave or harmonic by an increment of △, or set it to the target value.
The user is asked to select whether to execute instruction group A that performs an operation at the arrival point based on NOD(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. command 0
and 1 are executed every time. Depending on the flags Z, S and △S, which are the operation results of instruction 1, there are cases in which instruction 3 and instruction group A (instructions 4 to 7) are executed, and instruction 2 and instruction group B (instructions 8 to 11). It is classified into cases in which it is executed. The former case is a case where the target value NOD(n) is exactly reached or exceeded by accumulating the increments Δ. The latter is a case where the target value NOD(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
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, CPU3 will change the new NOD(n) and the previous NOD.
(n-1), PNO, INH group data and status flag data are transferred. The status data includes the KON flag,
Set KON flag FF to “1”. In portamento mode, calculations can be performed regardless of this KON flag. First, the CHS immediately before CHS1
The PTS 32 of No. 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. When reading instruction group C, PTS is 32, that is, processing time slot code {P 10 to P 6 } is {111111}.
At the timing when the address code indicating instructions 0 to 3 is
What is necessary is to read instructions 0 to 3 in addition to the ROM. In order to ignore one of instructions 2 and 3, the read instruction output may be gated according to the codes of flags ΔS, Z, and S. 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. cause it to occur,
By specifying the upper 2 bits of the address code that distinguishes instruction groups A and B by a combination of flags △S, Z, and S, and adding a 4-bit address, instructions 4 to 7 and 8 to 11 in the instruction ROM are specified. What is necessary is to read out selectively. 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 Cs 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 of FIG. 14. B is an example of hardware. 80 is S 5 on A bus and B bus
A binary adder that takes 6 bits of S0 as input, 82 is A
A binary adder 81 which receives O 5 to O 0 , N 3 , and N 2 on the bus and B bus as input is a read-only memory (ROM) having a truth table pattern. C s is a carry of the binary adder 80, and C N is a carry output from the ROM 81. Subtractors and comparators can also be constructed using a similar idea. The vibrato data generator 42 in FIG. 2 may be a digital sine wave generator or the like. For example, if you have memorized the waveform of a vibrato signal,
The ROM may be read from the ROM and written to the registers at the timing when VIB(n) and VIB(n-1) are updated. 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, 2
The difference depends on whether the display is a complement of 1 or a complement of 1, but in the latter case, "1" is output to the topmost position and "0" is output to the others. In the former case, all upper bits may be outputted as "1". In the case of one's complement, the sign bit V 6 may be used as the most significant in the case of FIG. 4E. 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 (Fig. 11) and the normal mode (Fig. 11), enter the status FF in Fig. 2.
Prepare the NORMAL/PORTAMETO mode bit, and send "1" to this bit from the CPU 3 to set it to normal mode, and send "0" to this bit to set it to portamento mode, and change the instruction reading according to the mode bit. . In addition,
In normal mode, zero is written to PRT32 (Figure 2). Make sure 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,0 −J i+0 ) of 96 index sample values. The output is 5 bits. 39-2 This is a simplified multiplication ROM for outputting an interpolated value of equally divided values according to the three bits {S 2 , S 1 , S 0 }. That is,
(J i-1,0 −J i,0 )×j/8 is stored. This will increase the quantization error a little, but the memory size will change from 768 x 5 = 3840 bits to 96 x 5 + 2 5 + 3 x
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, 253 x 8 = 2024 is set as C, and 23 x 16 = 3824.
If we let B be the most accurate 12-bit cent address, we can convert it to an interlaced number. To summarize the above, the present application provides pitch information corresponding to the pitch frequency of the fundamental tone of a musical tone to be generated consisting of a fundamental tone and harmonics, positive harmonic frequency information regarding the harmonic order of the musical tone, and frequency increase/decrease due to portamento. Incremental data is input, at least one octave interval is divided into a plurality of intervals having predetermined cent intervals at equal intervals, an address on the cent scale is assigned to the boundary of the interval, and the pitch information is expressed in the form of a cent address. The positive harmonic frequency information is output as a cent address in the form of a difference from the pitch information, the cent address of the pitch information and the difference cent address corresponding to the positive harmonic frequency information are added, and The above-mentioned incremental data is accumulated (subtracted) to obtain a sum cent address, and is added to a converter that converts the sum cent address to a frequency control value directly proportional to the frequency to obtain the frequency control value, storage means for storing pitch information, positive harmonic number information, and incremental data; and at least one for information transmission coupled to said storage means.
a main bus line, an addition/subtraction calculation unit connected to the bus line, a storage means for storing the calculation result, a device for outputting the calculation result to the bus line, and the converter; The address is divided into sections by expressing the middle digit of the cent address number within one octave section in a binary coded multiple of 3 format, and the means for generating data representing the increment of frequency deviation due to portamento is as follows: Incremental data is generated corresponding to the cent difference between the previous pitch frequency and the current pitch frequency and the portamento speed setting, and the means for storing the pitch information is configured to store the previous pitch information storage means and the current pitch frequency. By adding (subtracting) the above-mentioned increment data to the previous pitch information, a sum (difference) cent address is obtained, and this is added to a converter to convert it into a frequency control value. In the above cumulative addition (subtraction) operation, if the sum (difference) cent address exceeds the cent address of the current pitch information, the cent address of the current pitch information is used instead of the cumulative result. This is a frequency control device characterized by realizing linear portamento on the top. Therefore, it is possible to realize a linear portamento on the cent scale, and the frequency can be moved with almost the same pitch accuracy over the entire range.Moreover, even if the range changes, the portamento speed is the same as the address increment data △ is kept constant for . Furthermore, reliable portamento can be achieved without exceeding the cent address for the target note octave. The present invention also provides a first storage device that stores frequency control values corresponding to L cent addresses in one octave, and a first storage device that stores frequency control values corresponding to L cent addresses at intervals of M, and adjacent frequencies among the L cent addresses. Since the second storage device that stores the interpolated value based on the difference value of the control value is used, the cent address can be calculated with high accuracy without complicated logarithmic conversion calculation.
第1図は本発明を適用したデイジタル式の電子
楽器のブロツク図、第2図は本発明の一実施例の
ブロツク図、第3図は指数変換テーブルの説明
図、第4図は上記実施例で用いるデータのフオー
マツトの一例を示す図、第5図は上記実施例のノ
ートコードを表わす図、第6図は上記実施例の動
作タイミングチヤートを示す図、第7図はタイミ
ングパルス発生用のカウンタを示す図、第8図は
タイミングパルスチヤートを示す図、第9図はデ
コーダを示す図、第10図は命令コードのフオー
マツトの一例を示す図、第11図はノーマルモー
ドにおける大局的なタイミングチヤートの図、第
12図はポルタメントモードにおける命令の実行
パターンを示す図、第13図はポルタメントモー
ドにおける大局的動作タイミングチヤートを示す
図、第14図は加算器の動作説明図、第15図は
指数変換テーブルの一例を示す図である。
1……鍵盤部、2……操作部、3……CPU、
4……RAM、5……ROM、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...ROM, 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...Status flip-flop, 42...Vibrato data generator.
Claims (1)
基音の音高周波数に対応する音高情報、上記楽音
の音調波次数に関する正高調波周波数情報および
ポルタメントによる周波数増減に対応する増分デ
ータを入力とし、 1オクターブ区間を等間隔の所定のセント間隔
を持つ複数の区間に分け、上記区間の境界に対し
てセント尺度上のアドレスを割り付け、上記音高
情報をセントアドレスの形式で与え、上記正高調
波周波数情報を高調波の基本周波数に対応するセ
ントアドレスから差の形のセントアドレスとして
出力させ、 上記音高情報のセントアドレス、上記正高調波
周波数情報に対応する差セントアドレスを加算
し、さらに上記増分データを累加(減)算して和
セントアドレスを得、和セントアドレスを周波数
に正比例する周波数制御値に変換する変換器に加
えて周波数制御値を得るようにした装置であつ
て、 上記音高情報、正高調波数情報、増分データを
格納する格納手段と、上記格納手段に結合された
情報伝達用の少なくとも1本のバスラインと、上
記バスラインに接続された加減算用の演算器と、
その演算結果を格納する格納手段と、演算結果を
上記バスラインに出力する装置と、上記変換器と
を備え、 上記セントアドレスの区間分けは、1オクター
ブ区間内のセントアドレス数の中位の桁の表現を
2進化された3の倍数進形式にし、 上記ポルタメントによる周波数偏位の増分を表
わすデータを発生する手段は、前回の音高周波数
と今回の音高周波数のセント差およびポルタメン
ト速度の設定に対応した増分データを発生するよ
うにし、上記音高情報を格納する手段は、前回音
高情報格納手段と今回音高情報格納手段とよりな
り、前回音高情報に上記増分データを累加(減)
算することにより、和(差)セントアドレスを
得、これを変換器に加えて周波数制御値に変換す
ると共に、上記累加(減)算に際して、上記和
(差)セントアドレスが今回音高情報のセントア
ドレスを越えたときには、累算結果の変わりに今
回音高情報のセントアドレスを採用するようにし
て、セント尺度上で直線的なポルタメントを実現
することを特徴とする周波数制御装置。 2 特許請求の範囲第1項の記載において、音高
情報の格納手段、正高調波周波数情報の格納手
段、増分データの格納手段および演算結果の格納
手段のうち所定のものを発音チヤンネル数に対応
して設け、上記各格納手段を少なくとも1本のバ
スラインに結合し、上記バスラインに演算器を結
合して、上記各情報の演算を上記演算器において
時分割多重で行なうことを特徴とする周波数制御
装置。 3 特許請求の範囲第1項の記載において、セン
トアドレスの中位の桁を2進化12進、2進化6
進、2進化3進のうちの1つで表示し、演算器の
中位を上記表示に対応した演算とするようにした
周波数制御装置。 4 特許請求の範囲第1項の記載において、セン
トアドレスを2進表示とし、演算器を2進演算器
とし、演算結果のセントアドレスの中位を2進化
12進、2進化6進、2進化3進のうちの1つに変
換する変換器でオクターブコードとノートコード
に分け、上記ノートコードを上記変換器に加えて
その出力を上記オクターブコードでビツトシフト
することにより、周波数制御装置を得るようにし
た周波数制御装置。 5 特許請求の範囲第1項の記載において、変換
器は少なくとも1オクターブ区間内のセントアド
レス数(L×M)のうち、M間隔のL個について
対応する周波数制御値を記憶した第1の記憶装置
と上記L個のうち隣接する周波数制御値の差分値
をもとにした補間値を記憶した第2の記憶装置を
備え、上記第1と第2の記憶装置にセントアドレ
スを加えて両記憶装置の出力を演算器で加算する
ことにより上記区間内に対応する周波数制御値を
得るようにした周波数制御装置。 6 特許請求の範囲第5項の記載において、第2
の記憶装置は、隣接する周波数制御値の差分値を
記憶する第3の記憶装置と、上記第3の記憶装置
の出力と、セントアドレスの下位の所定ビツトを
入力とする第4の記憶装置とより成り、上記第4
の記憶装置の出力が上記第2の記憶装置の出力と
なるようにしたことを特徴とする周波数制御装
置。[Claims] 1. Pitch information corresponding to the pitch frequency of the fundamental tone of a musical tone to be generated consisting of a fundamental tone and harmonics, positive harmonic frequency information regarding the harmonic order of the musical tone, and corresponding to frequency increase/decrease due to portamento. Inputs incremental data, divides one octave section into multiple sections with predetermined cent intervals at equal intervals, assigns addresses on the cent scale to the boundaries of the sections, and outputs the pitch information in the form of cent addresses. The positive harmonic frequency information is output as a cent address in the form of a difference from the cent address corresponding to the fundamental frequency of the harmonic, and the cent address of the pitch information and the difference cent address corresponding to the positive harmonic frequency information are output. and further accumulates (subtracts) the above incremental data to obtain a sum cent address, and in addition to a converter that converts the sum cent address into a frequency control value directly proportional to frequency, the device obtains a frequency control value. storage means for storing the pitch information, positive harmonic number information, and incremental data; at least one bus line for information transmission coupled to the storage means; and an addition/subtraction unit connected to the bus line. a computing unit for
It comprises a storage means for storing the calculation result, a device for outputting the calculation result to the bus line, and the converter, and the cent address is divided into sections by the middle digit of the number of cent addresses within one octave section. The means for converting the representation into a binary coded multiple of 3 format and generating data representing the increment of frequency deviation due to portamento is to set the cent difference between the previous pitch frequency and the current pitch frequency and the portamento speed. The means for storing the above-mentioned pitch information includes a previous pitch information storage means and a current pitch information storage means, and the means for accumulating (decreasing) the above-mentioned incremental data on the previous pitch information. )
By calculating, the sum (difference) cent address is obtained, and this is added to the converter to convert it into a frequency control value, and in the above cumulative (subtraction) calculation, the sum (difference) cent address is the current pitch information. A frequency control device characterized in that when the cent address is exceeded, the cent address of current pitch information is used instead of the cumulative result, thereby realizing linear portamento on the cent scale. 2. In the statement of claim 1, a predetermined one of the storage means for pitch information, the storage means for positive harmonic frequency information, the storage means for incremental data, and the storage means for calculation results corresponds to the number of sound generation channels. Each of the storage means is coupled to at least one bus line, an arithmetic unit is coupled to the bus line, and the arithmetic operations of each of the information are performed in the arithmetic unit in a time division multiplexed manner. Frequency control device. 3 In the description of claim 1, the middle digit of the cent address is binary coded decimal, binary coded 6
A frequency control device that displays in one of decimal, binary or ternary format, and uses the middle part of an arithmetic unit to perform calculations corresponding to the above display. 4 In the statement of claim 1, the cent address is expressed in binary, the arithmetic unit is a binary arithmetic unit, and the middle of the cent address of the calculation result is expressed in binary.
A converter that converts into one of decimal, binary coded hexadecimal, or binary coded ternary code is used to separate the code into an octave code and a note code, and the note code is added to the converter and its output is bit-shifted using the octave code. A frequency control device obtained by obtaining a frequency control device. 5. In the description of claim 1, the converter has at least a first memory that stores frequency control values corresponding to L cent addresses at M intervals among the number of cent addresses (L×M) within one octave interval. and a second storage device storing an interpolated value based on the difference value between adjacent frequency control values among the L frequency control values, and a cent address is added to the first and second storage devices to store both. A frequency control device that obtains a frequency control value corresponding to the above interval by adding the outputs of the device using an arithmetic unit. 6 In the description of claim 5, the second
The storage device includes a third storage device that stores the difference value between adjacent frequency control values, and a fourth storage device that receives the output of the third storage device and a predetermined lower bit of the cent address as input. Consisting of the above 4th
A frequency control device characterized in that the output of the storage device becomes the output of the second storage device.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP57083448A JPS58199392A (en) | 1982-05-17 | 1982-05-17 | frequency control device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP57083448A JPS58199392A (en) | 1982-05-17 | 1982-05-17 | frequency control device |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS58199392A JPS58199392A (en) | 1983-11-19 |
| JPH033238B2 true JPH033238B2 (en) | 1991-01-18 |
Family
ID=13802717
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP57083448A Granted JPS58199392A (en) | 1982-05-17 | 1982-05-17 | frequency control device |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS58199392A (en) |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5674298A (en) * | 1979-11-21 | 1981-06-19 | Nippon Musical Instruments Mfg | Electronic musical instrument |
-
1982
- 1982-05-17 JP JP57083448A patent/JPS58199392A/en active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS58199392A (en) | 1983-11-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0035658B1 (en) | Electronic musical instrument | |
| KR0135601B1 (en) | Digital signal generator for electronic instruments | |
| USRE30736E (en) | Tone wave generator in electronic musical instrument | |
| US5340938A (en) | Tone generation apparatus with selective assignment of one of tone generation processing modes to tone generation channels | |
| JP2605916B2 (en) | Waveform signal generator | |
| JPH0756592B2 (en) | Electronic musical instrument | |
| US5117725A (en) | Device for changing and controlling the rate of generating waveform data | |
| JPH033239B2 (en) | ||
| JPS5895790A (en) | Musical sound generator | |
| US5113740A (en) | Method and apparatus for representing musical tone information | |
| USRE31648E (en) | System for generating tone source waveshapes | |
| JPH033238B2 (en) | ||
| JPH0522920B2 (en) | ||
| US5665931A (en) | Apparatus for and method of generating musical tones | |
| US5627334A (en) | Apparatus for and method of generating musical tones | |
| JPH0310959B2 (en) | ||
| US4468996A (en) | Note group selectable musical effects in an electronic musical instrument | |
| JP3435702B2 (en) | Music generator | |
| JPS6352399B2 (en) | ||
| JPH043556B2 (en) | ||
| EP0255151B1 (en) | Electronic musical instrument | |
| JPS6322312B2 (en) | ||
| JP2510090Y2 (en) | Music signal generator | |
| JPS5926790A (en) | Combination tone generator for musical instruments | |
| JPS6352400B2 (en) |