JPH06308958A - 電子楽器の楽音制御装置 - Google Patents

電子楽器の楽音制御装置

Info

Publication number
JPH06308958A
JPH06308958A JP5099515A JP9951593A JPH06308958A JP H06308958 A JPH06308958 A JP H06308958A JP 5099515 A JP5099515 A JP 5099515A JP 9951593 A JP9951593 A JP 9951593A JP H06308958 A JPH06308958 A JP H06308958A
Authority
JP
Japan
Prior art keywords
voice
service
musical tone
control data
value
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.)
Withdrawn
Application number
JP5099515A
Other languages
English (en)
Inventor
Norio Matsushika
範生 松鹿
Shinobu Katayama
忍 片山
Takeshi Sakata
毅 坂田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Roland Corp
Original Assignee
Roland Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Roland Corp filed Critical Roland Corp
Priority to JP5099515A priority Critical patent/JPH06308958A/ja
Publication of JPH06308958A publication Critical patent/JPH06308958A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【目的】比較的低速なCPU等の処理手段を用いること
によりコストの上昇を押え、かつ楽音の品質の低下を防
止しつつ多くのボイスのサービスを行うことのできる電
子楽器の楽音制御装置を提供する。 【構成】所定時間あたりの楽音の特質の変化量に基づい
て楽音生成手段に制御データを供給する周期を変化させ
る。また発音開始からの時間を計測して処理上の現在の
時間位置を知り、この現在の時間位置に基づいて楽音の
特質を変化させるための制御データを求める。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子楽器に組み込まれ
る、発音中の楽音の状態、即ち、楽音の音高,音質,音
量などの特質に経時的な変化を与える楽音制御装置に関
する。
【0002】
【従来の技術】電子楽器において発音中の特質(音高,
音質,音量等)に経時的な変化を与えることにより、表
情のより豊かな演奏を行うことができることが知られて
おり、従来より、電子楽器には発音中の楽音の特質を経
時的に変化させる楽音制御装置が組み込まれている。通
常、電子楽器には、同時にはそれぞれ1つずつの楽音の
発音を担当する発音チャンネル(ボイス)が複数備えら
れており、発音中の楽音の特質に変化を与えるには、所
定周期毎に時分割に、複数のボイスそれぞれに対する状
態変移(楽音の特質の変化量)を演算し、演算結果に基
づいて各ボイスを制御することによって行われる。ここ
ではこの制御をボイスサービス(もしくは単に「サービ
ス」)と呼ぶこととする。このようなボイスサービス
は、一般には、CPUによって行われる。
【0003】
【発明が解決しようとする課題】ところで多彩な演奏を
行うためには、多数の楽音を同時に発音することができ
ることが好ましく、これを実現するために多数のボイス
を備えると、同時にサービスすべきボイス数が増え、各
ボイスに対するサービスは基本的には所定周期毎に行う
ものであるが、通常CPUは、ボイスサービス以外にも
時分割的に多くの処理を行っているので、MIDI信号
の受信処理などサービス以外の処理による負担が一時的
に重くなった場合などにはサービスを所定周期毎に行え
なくなる場合が生じる。この場合、サービス内容として
例えばLFO(Low Frequency Osci
llator)波形の生成をしている場合にはLFOの
周期が変動するようになったり、エンベロープ波形の生
成をしている場合には生成されるエンベロープ波形の形
状が時間軸に対して長くなってしまうという問題点があ
る。
【0004】これを防止するためにサービスの周期を長
くすることが考えられるが、サービスの周期を長くする
と楽音の特質の変化が粗くなり、楽音の品質が低下する
という問題がある。楽音の品質の低下を防止するために
サービス周期を短く保ち、かつ同時にサービスすること
のできるボイス数を増やすことができるように高速のC
PU等を用いることも考えられるが、この場合はコスト
の上昇を伴うという問題がある。
【0005】本発明は、上記事情に鑑み、サービス周期
が変動した場合であってもボイスに対して適切なサービ
スを行うことができる電子楽器の楽音制御装置を提供す
ることを目的とする。
【0006】
【課題を解決するための手段】上記目的を達成する本発
明の電子楽器の楽音制御装置は、 (1)楽音を生成するとともに供給される楽音制御デー
タに基づいて発音中の楽音の特質を変化させる楽音生成
手段 (2)所定の周期毎に前記楽音制御データを生成し、生
成した制御データを楽音生成手段へ供給する制御データ
作成手段 (3)実際の演算周期が上記所定の周期に対して変動し
た場合に、制御データ作成手段で生成される楽音制御デ
ータの値を周期の変動に基づいて可変制御する制御デー
タ値可変手段 を備えたことを特徴とする。
【0007】
【作用】本発明の楽音制御装置は、実際の演算周期が、
予めサービスを予定していた所定の周期に対して変動し
た場合に、その変動に基づいて楽音制御データの値を可
変制御するものであるため、サービス周期の変動が許容
される。
【0008】
【実施例】以下、本発明の実施例について説明する。こ
こでは先ず早いサービス周期を必要とする場合について
まとめる。 (1)エンベロープが急峻な場合 図8は、楽音の一般的なエンベロープを示した図であ
る。
【0009】この図には、押鍵直後は急峻にエンベロー
プが立ち上がり(アタック)、その後少し下がり(ディ
ケイ)、楽音が持続し(サスティン)、離鍵後急速に低
下する(リリース)というエンベロープの変化が示され
ている。この図のエンベロープの場合、ディケイDの期
間中はサスティンSの期間中よりも勾配が大きく、アタ
ックAやリリースRの期間中はさらに勾配が大きい。し
たがってアタックAやリリースRの期間中は短い周期で
サービスする必要があり、サスティンSの期間中はサー
ビスを最も効率的に間引くことができる。
【0010】(2)LFOレイトが速い場合、もしくは
LFOデプスが大きい場合 LFO(low frequency oscilla
tor)によってビブラートやトレモロが大きくかかっ
ている場合、即ち、一定時間あたりの音高や音量などの
変化が大きい(深い変調,速い変調がかかっている)場
合には定常的に短い周期でサービスを行う必要がある。
一方変調が浅くかつゆっくりとした変調の場合はサービ
スを間引くことができる。
【0011】(3)CC(操作子)が操作された直後 ベンダレバーやレベルスライダなどのCC(conti
nuous contorolar)操作された直後、
もしくはこれと等価なMIDIデータ(演奏データ)を
受信した直後は、直ちにサービスを行う必要がある。以
下に説明する実施例では、演奏データに基づいて生成さ
れる楽音の所定時間あたりの特質の変化量に基づいて、
本発明にいう楽音生成手段に楽音制御データを供給する
サービス周期が求められる。すなわち、以下に説明する
実施例では、上記(1)〜(3)の3つの条件を各ボイ
スについて所定周期毎に観察し、これら(1)〜(3)
のそれぞれから算出されるサービス周期のうち最も短い
サービス周期がそのボイスについてのその時点における
サービス周期とされる。このようにして求められたサー
ビス周期でボイスサービスを行うことにより、楽音の特
質の変化が大きいときは短い周期でボイスサービスが行
われ、また楽音の特質の変化が小さいときは長い周期で
ボイスサービスが行われる。従来はボイスサービス周期
が固定されていたため楽音の特質の変化が大きい場合に
合わせたサービス周期を設定しておく必要があったが、
多数のボイスで発音中の楽音の特質が同時に大きく変化
することはまれであり、本実施例では上記のように楽音
の特質の変化が小さいときはサービス周期を長くする構
成を採用し、これにより、その分楽音の特質の変化の大
きい楽音のサービスに振り向け、比較的低速の処理手段
を用いてかつ楽音の品質の低下を招くことなく多数のボ
イスのサービスを行うことができるよう構成されてい
る。
【0012】上記のようにしてサービス周期が求められ
ると、本実施例では、この求められたサービス周期毎
に、生成中の楽音の時間位置に基づいて楽音制御データ
を生成し、生成した楽音制御データを本発明にいう楽音
生成手段へ供給する。このように、本実施例は、生成中
の楽音の時間位置に基づいて楽音制御データを生成して
楽音の特質を変化させるように構成することにより、例
えばまれに多数の楽音の特質が同時に大きく変化した場
合やCPUが他の処理を行っているときにサービスを実
行すべき時刻となってしまいその結果処理が間引かれた
場合(すなわち、長いサービス周期とされた場合)や遅
れたりした場合であっても正確な楽音制御が行われる。
【0013】図1は、本発明の楽音制御装置の一例が組
み込まれた電子楽器の構成ブロック図である。この電子
楽器は、受信したMIDI信号(演奏データ)に基づい
て楽音信号を生成して出力するものである。制御部1
は、各種のプログラムを実行するCPU、プログラムや
プログラム実行時に必要な各種データ等が記憶されたR
OM、プログラム実行時の作業領域等として用いられる
RAM、および時間を計測して割込み信号を発生するタ
イマ等から構成されており、この制御部1では、MID
I信号に基づいて制御データが生成され、この制御デー
タは楽音生成回路2に供給される。なおこの実施例の電
子楽器はMIDI信号を受信し受信したMIDI信号に
基づいて楽音信号を生成するものであるが、電子楽器に
鍵盤や演奏用操作子などを備え、外部からMIDI信号
を受信することに代え、もしくはその受信とともに、備
えられた鍵盤等の操作従って生成される演奏データに基
づいて楽音信号を生成するようにしてもよいことはもち
ろんである。
【0014】楽音生成回路2には、1つの楽音信号を生
成させるハードウェア(ここではこれを「ボイス」と称
している)が複数備えられており、これにより複数の楽
音が同時に生成可能なように構成されている。制御部1
は、MIDI信号の1つであるノート・オン信号が与え
られた時にはいずれか空いているボイスを選択してその
ボイスに対して音高、音色、音量などの制御データを与
え対応する楽音信号を生成させる。またノート・オフ信
号が与えられた場合には、そのノート・オフ信号に対す
る楽音が生成されているボイスに対して制御データを与
え、楽音信号の生成を停止させる。また、制御部1は、
発音中の各ボイスに関するエンベロープ、LFO(Lo
w FrequencyOscillator)の信号
を定期的に演算し、さらにMIDI信号により与えられ
る演奏用操作子(ベンダー・レバー、モジュレーション
・ホイール、エクスプレッション・ペダルなど)の操作
子信号に基づいて音高、音色(フィルタのカットオフ周
波数等)、音量などの各パラメータを制御する制御デー
タを供給する。本発明はこの定期的に制御データを供給
する処理に関するものである。
【0015】制御部1のCPUで実行されるプログラム
の全体はマルチタスク形式で構成されており、モニタ・
プログラム(以下「モニタ」と称する)が各タスクの起
動条件をモニタし、起動条件に合致するとその起動条件
に合致した各タスクを起動する。ここでは、本発明に関
係するボイス処理タスク(エンベロープ、LFO、操作
子信号に基づいて音高、音色、音量などの制御データを
各ボイスに供給するタスク)のみを示す。なお、楽音の
生成開始/停止の各処理は、ノート・オン信号/ノート
・オフ信号の受信を起動条件として起動される図示しな
い楽音生成開始タスク/楽音生成停止タスクによって行
われる。
【0016】以下、制御部1のCPUで実行されるボイ
ス処理タスクについて説明するが、ここでは簡単のた
め、各レジスタ、フラグとこれら各レジスタ、フラグに
格納された内容とを区別せずにこれらに同一の符号を用
いることがある。図2はボイス処理タスクのメインルー
チンを示すフローチャートである。このボイス処理タス
クは、モニタにより、以下のようにして起動される。即
ちタイマによる割り込みにより起動される図示されない
割り込みルーチンによってプログラム実行中の時間が計
測され、モニタはこの計測結果に基づいて一定時間(ボ
イス処理タスク起動周期、例えば8mS)毎にボイス処
理タスクを起動しようとする。この時、もしボイス処理
タスクよりも優先順位の高いタスク(例えば、MIDI
信号の受信処理を行うタスク、楽音生成開始タスク/楽
音生成停止タスクなど)、あるいはボイス処理タスクそ
のものが前回の処理を終了しておらず実行中である場合
には、そのタスクの処理が終了した後にボイス処理タス
クを起動する。従って、ボイス処理タスクは基本的に一
定時間毎に起動されるものであるが、起動しようとした
時点でのCPUにおけるタスクの処理状況によっては起
動が遅れることがあり得る。
【0017】このボイス処理タスクは、一通りの処理が
終了するとモニタによる起動待ち(タイマ待ち」と称す
る)の状態となる(ステップ(2_1))。モニタによ
り起動されると、ステップ(2_2)に進み、レジスタ
DELAYに、「タイマ・オーバフロー回数」に1を加
えた値が格納される。「タイマ・オーバフロー回数」
は、モニタがこのボイス処理タスクを起動しようとした
ときに他に実行中のタスクが存在しており、このためボ
イス処理タスクが起動できなかった場合に、所定のボイ
ス処理タスク周期毎にモニタによって「+1」されるも
のである。このタイマ・オーバーフロー回数は、ボイス
処理タスクによってその値が読み出された時にモニタに
よって「0」にクリアされる。すなわち、「タイマ・オ
ーバフロー回数」はボイス処理タスクの処理がどれだけ
遅れているかを示している。実行中のタスクが存在せ
ず、ボイス処理タスクが直ちに起動される場合には、こ
の値は「0」とされている。
【0018】DELAYには、このボイス処理タスクが
直ちに起動された場合に「1」、ボイス処理タスクの起
動が1回遅れると「2」のように、起動が遅れた回数
(タイマ・オーバフロー回数)+1が格納される。ボイ
ス処理ルーチンのその後の処理(ステップ(2_3)〜
ステップ(2_7))は、発音中の各ボイス毎に、制御
データを生成してボイスに供給するものである。尚、現
在発音処理を行っていない(空いている)ボイスに関し
ては処理を省略することにより、CPUの負荷の軽減が
図られている。
【0019】次に、図2に示すステップ(2_5)のボ
イス処理サブルーチンについて説明する。このボイス処
理サブルーチンでは、本来は音高,音色,音量の各パラ
メータに関してそれぞれ独立に同様の処理が行われる
が、煩雑さを避けるため、ここでは代表して1つのパラ
メータに関してのみ図示および説明する。図3は、この
ボイス処理サブルーチンのフローチャートである。
【0020】このボイス処理サブルーチンが起動される
と、先ずステップ(3_1)において、各ボイス(ボイ
ス番号VOICE)に対応してそれぞれ備えられたレジ
スタNEXT_SRV(VOICE)の内容がDELA
Yだけ減少される。このNEXT_SRV(VOIC
E)は、後述するステップ(3_4)のNEXT_SR
V(VOICE)の演算サブルーチンで前回求められた
サービス間隔、即ち、次回にこのボイスに対して制御デ
ータを与える処理を実行するまでの予定経過時間を、ボ
イス処理タスク起動周期を単位として示している。すな
わちボイス処理タスク起動周期が8mSの場合にはNE
XT_SRV(VOICE)=1は8mSを意味するこ
とになる。ステップ(3_1)の処理において、NEX
T_SRV(VOICE)の値からDELAYだけ減ら
されることにより、NEXT_SRV(VOICE)は
前回のサービスから今回のサービスまでの予定経過時間
の残り時間を示すことになる。NEXT_SRV(VO
ICE)の値が零もしくは負になった場合、そのボイス
に対して新たなサービスを行うタイミングが到来したこ
とを意味する(ステップ(3_3)参照)。
【0021】次にステップ(3_2)に進み、前回の処
理の後新たに操作子が操作されているか否かが判断され
る。ここでいう操作子とはその操作がこのボイス処理サ
ブルーチンで処理対象とされているパラメータに反映さ
れるものをいう。例えば、このボイス処理サブルーチン
で音高のパラメータに関して処理を行っている場合にお
いて、ベンダ・レバーによって音高が制御されるように
なっている場合にはベンダ・レバーが操作された場合に
新たな操作があったと判断され、ベンダ・レバーによっ
て音高が制御されるようにはなっていない場合には、ベ
ンダ・レバーが操作されても新たな操作はなかったと判
断される。また、操作子の操作量に対するパラメータの
変化量、即ち操作子の感度が変更可能な場合には、その
感度が変更された時にも、操作子が操作されたと判断さ
れる。
【0022】ここで、操作子が新たに操作された/操作
されないによって処理を分けているのは、操作子が操作
された場合には本来のサービスタイミング以前に直ちに
サービスをする必要があるからである。ここでは、操作
子の新たな操作がなかった場合について先ず説明する。
ステップ(3_2)で操作子の新たな操作はなかったと
判断された場合ステップ(3_3)に進む。ステップ
(3_3)では、NEXT_SRV(VOICE)≦0
か否か、即ち現在処理中のボイスに対する新たなサービ
スを行うタイミングが到来したか否かが判断され、NE
XT_SRV(VOICE)>0、即ちまだ新たなサー
ビスを行うタイミングに到っていないと判断されたとき
は、そのままこのボイス処理サブルーチンを抜ける。一
方、ステップ(3_3)において新たなサービスを行う
べきタイミングが到来したと判断された場合は、ステッ
プ(3_4)に進む。このステップ(3_4)では、こ
のボイスに関し、新たなNEXT_SRV(VOIC
E)の値、即ち現時点から次回サービスするまでのサー
ビス間隔が求められる。このステップ(3_4)のNE
XT_SRV(VOICE)演算サブルーチンについて
は後述する。このステップ(3_4)で新たなNEXT
_SRV(VOICE)の値が求められた後、ステップ
(3_5)に進み、そのボイスの発音の開始(図8の
‘押鍵’の位置に対応する)からの経過時間(図8の横
軸の位置)を示すCOUNT(VOICE)の値が求め
られる。尚このCOUNT(VOICE)は楽音生成開
始タスク(図示せず)において、そのボイスの発音を開
始したときに“0”にクリアされている。ステップ(3
_5)で変更される前のCOUNT(VOICE)の値
は、前回のサービス時における経過時間を示しているた
め、ここでは、この前回のサービス時における経過時間
COUNTに、前回のサービス時から現時点までの経過
時間である。SRV_OLD(VOICE)+DELA
Y−1が加算される。ここで、SRV_OLD(VOI
CE)は、前回のサービスから今回のサービスまでの予
定経過時間、即ち前回のサービス時に求められたNEX
T_SRV(VOICE)であり(ステップ(3_7)
参照)、DELAY−1は、処理遅れ時間、即ち前述し
たタイマ・オーバフロー回数である。このステップ(3
_5)の演算により、図8に示す横軸上の位置、押鍵に
相当する時点からの現在の経過時間、即ち図8の横軸上
の現在位置が求められる。
【0023】なお、このステップ(3_5)、および後
述するステップ(3_8)においては、上述の演算処理
方法以外の演算処理方法を採用してもよい。即ち、例え
ばタイマ割り込みルーチンにおける時間計測によって発
音開始からの時間を直接求めたり、前回のサービスから
の経過時間を求め、これに発音を開始から前回のサービ
スまで経過時間を足すなどの演算処理方法を採用しても
よい。また、ボイスが発音を開始してからの時間経過以
外に、LFO波形の一周期中の位置や、あるいはエンベ
ロープ波形のフェイズ(アタック、ディケイ、サスティ
ン、リリースなど)中の位置などを用いても良い。要す
るに処理遅れがあった時であってもサービス時の時間的
な位置が求められればよい。
【0024】上述のようにして新たなNEXT_SRV
(VOICE)、COUNT(VOICE)の値が求め
られると、ステップ(3_6)に進み、次回のサービス
時(NEXT_SRV(VOICE)の後)に到達すべ
き制御値が求められ、この制御値を表わす制御データが
ボイスに供給される。このボイス制御サブルーチン(ス
テップ(3_6))の詳細については後述する。制御デ
ータをボイスに供給すると、次回のサービスのためにS
RV_OLD(VOICE)が更新される(ステップ
(3_7))。
【0025】ステップ(3_2)で操作子の新たな操作
があったと判断された場合は、ステップ(3_8)に進
み、新たなCOUNTの値、即ち図8の横軸上の現在位
置が求められる。前述したようにSRV_OLD(VO
ICE)は、前回のサービスの時点から起算した今回の
サービスの予定経過時間であり、またNEXT_SRV
(VOICE)はステップ(3_1)で順次減少されて
いるためこの予定経過時間の残り時間を示している。し
たがって、SRV_OLD(VOICE)−NEXT_
SRV(VOICE)は、前回のサービスから今回のサ
ービスまでの実際の経過時間を示している。したがって
前回のサービスの時点を表わす更新前のCOUNTの値
に、SRV_OLD(VOICE)−NEXT_SRV
(VOICE)を加算することにより今回のサービスの
時点が求められる。
【0026】ステップ(3_8)に続いてステップ(3
_9)に進み、サービス間隔NEXT_SRV(VOI
CE)に“1”が格納される。これは、操作子が操作さ
れたことを受けて、最も近い次回のサービスタイミング
において、新たなサービス間隔を設定する(ステップ
(3_4))ためである。本実施例では後述するように
LFO波形、エンベロープ波形のレートに基づいてサー
ビス間隔を決めるようにしているが、操作子が動かされ
た場合にこのような処理を行うことにより操作子の操作
によってLFO波形、エンベロープ波形のレートが変更
された場合にも新たなレートに適したサービス間隔が直
ちに設定されるようになる。
【0027】以上のようにしてNEXT_SRV(VO
ICE)に“1”が格納され、COUNT(VOIC
E)の値が求められると、ステップ(3_6)に進み、
次回のサービス時(NEXT_SRV(VOICE)=
1)に到達すべき制御値が求められる。図4は、図3の
ステップ(3_4)に示す、NEXT_SRV(VOI
CE)演算サブルーチンのフローチャートである。ここ
では、次回のサービスまでのサービス間隔が求められ
る。
【0028】このサブルーチンでは、各ステップ(4_
1),(4_2)において、それぞれLFO_NEXT
(VOICE),EG_NEXT(VOICE)が求め
られ、ステップ(4_3)では、これらの2つの値のう
ち小さい方がNEXT_SRV(VOICE)とされ
る。LFO_NEXT(VOICE)は、そのパラメー
タに関するLFO波形のレート(周波数)とレベルとを
乗算した結果から求められるサービス間隔である。この
LFO_NEXT(VOICE)には、レートが大きい
程、およびレベルが大きい程小さい値が設定される。即
ちこのことはサービス間隔を短くすることを意味する。
例えば乗算の積が所定値よりも大きい場合にはサービス
間隔を“1”とし、それよりも小さい場合には、例えば
その割合の逆数に応じてサービス間隔を大きくする。例
えばその割合が1/2であればサービス間隔LFO_N
EXT(VOICE)の値は“2”とする。すなわち、
LFO波形の値の所定時間あたりの変化量が大きい場合
はサービス間隔を小さくしてきめこまかな楽音制御を行
うようにし、逆に変化量が小さい場合にはサービス間隔
を大きくしてCPUの負荷を軽くしている。
【0029】EG_NEXT(VOICE)は、そのパ
ラメータに関するエンベロープ波形(“EG”は“En
velope Generator”の略)のレート
(傾き)から求められるサービス間隔である。このEG
_NEXT(VOICE)には、レートが大きい程小さ
い値が設定される。即ちサービス間隔が短縮される。こ
の場合にも、レートが所定値よりも大きい場合にはサー
ビス間隔を“1”とし、それよりも小さい場合には、例
えばその割合の逆数に応じてサービス間隔を大きくす
る。すなわち、エンベロープ波形の値の所定時間あたり
の変化量が大きい場合にはサービス間隔を小さくしてき
めこまかな楽音制御を行ない、逆に変化量が小さい場合
にはサービス間隔を大きくしてCPUの負荷を軽くして
いる。
【0030】ステップ(4_3)では、上記のLFO_
NEXT(VOICE)、EG_NEXT(VOIC
E)のうち小さい方をNEXT_SRV(VOICE)
とすることにより、ここで問題としているパラメータの
値の、所定時間当たりの変化の最も大きな要素に基づい
てサービス間隔が決定されることになる。なお、LFO
_NEXT(VOICE)の値を求める演算は毎回行う
のではなく、LFO波形のレート、レベルのいずれかが
変更された時のみ行い、その値を記憶しておくようにし
てもよい。またこれと同様に、EG_NEXT(VOI
CE)の値を求める演算も毎回行うのではなく、エンベ
ロープ波形のレートが変化した時(例えばエンベロープ
波形がアタックAからディケイDに移った時など)に一
度だけ行い、その値を記憶しておくようにしてもよい。
このようにした場合には演算量が減るのでCPUの負荷
が一層軽減される。
【0031】さらに、LFO_NEXT(VOIC
E)、EG_NEXT(VOICE)をLFO波形、エ
ンベロープ波形のレートに基づいてリアルタイムに演算
して求めるのではなく、これらのレートに基づいて予め
演算して求めメモリに記憶しておき、必要なタイミング
になったらメモリから読み出して使用するようにしても
よい。例えば、エンベロープ波形ではアタックAやディ
ケイD毎にそのレートに対応するEG_NEXT(VO
ICE)をレート同様にアタックAやディケイD毎に記
憶しておく。
【0032】また、本実施例ではサービス間隔を求める
に当たって、処理遅れの有無は考慮に入れていないが、
処理遅れがない場合には上述のようにして求められるサ
ービス間隔よりもサービス間隔を小さくするようにして
もよい。なぜならば、処理遅れがないということはCP
Uの負荷に余裕があるということであり、また発音中の
ボイスの数が少ないことを意味し、この場合楽音のアラ
が目立ち易いからである。
【0033】図5は、図3のステップ(3_6)に示す
ボイス制御サブルーチンのフローチャートである。ステ
ップ(5_1),(5_2)では、それぞれLFO波
形、エンベロープ波形の、NEXT_SRV(VOIC
E)が示すだけ先の時間、即ちボイスが発音を開始して
からの時間経過を示すCOUNTにNEXT SRV
(VOICE)の値を足した値が示す時間における値が
求められる。LFO波形、エンベロープ波形の発生処理
は公知の技術を用いればよい。
【0034】例えば次の様な処理を用いることができ
る。通常エンベロープ波形を生成するにあたっては、エ
ンベロープのレート(傾き)を示す値を所定時間毎に累
算し、その累算値をエンベロープ波形の値としている。
このような処理方法に本発明を適用する場合には、NE
XT_SRV(VOICE)が“1”である場合には従
来のものと同じ様に現在のエンベロープ波形の値にエン
ベロープのレートを示す値を加算し、NEXT_SRV
(VOICE)が“2”である場合には現在のエンベロ
ープは波形値にエンベロープのレートを示す値を2倍し
たものを加算する。すなわち、現在のエンベロープ波形
の値に、エンベロープのレートを示す値とNEXT_S
RV(VOICE)の値とを乗算した積を加算する。な
お、LFO波形に関しても同様の処理方法を用いること
ができる。
【0035】なお、本実施例ではNEXT_SRV(V
OICE)が示すだけ先の時間における値を求めるよう
にしているが、これは単に、NEXT_SRV(VOI
CE)が示す値だけLFO波形、エンベロープ波形がず
れることを意味しているだけであり、したがって必ずし
もこの通りでなくてもよく、COUNTの値が示す現在
の時刻に対応する値を求めるようにしてもよい。
【0036】さらにステップ(5_3)では操作子に関
連する値が求められ、ステップ(5_4)ではLFO波
形の値、エンベロープ波形の値と、さらに操作子に関連
する値とに基づいてNEXT_SRV(VOICE)が
示す時間だけ先の制御データの総合的な値が求められ、
ボイスに供給される。すなわち、本発明ではボイスに対
して制御データを供給する間隔が広がったり、狭まった
りするため、それに応じて供給する制御データの値もそ
の間隔に対応したものとしている。
【0037】図6、図7は、ボイスに供給される制御デ
ータの値の変化を示した図である。図6、図7のいずれ
も基本的にはサービス間隔は“3”であり、図6は処理
遅れがあった場合、図7は操作子の操作があった場合を
示す。各図の横軸の△印の時刻が実際のサービスの行わ
れた時刻を示し、×印がその時刻においてボイスに供給
された制御データの値を示している。尚一点鎖線は、楽
音の特質が理想的に変化した場合を示している。
【0038】図6に示すように、処理遅れがあった場合
は、次のサービス時に制御データの値がその処理遅れの
分補正され、図7に示すように、操作子が操作された場
合は直ちにサービスが行われる。なお、本実施例では楽
音生成回路は与えられた制御データの示す通りの音高、
音色、音量の楽音信号を生成するものとしたが、一般的
に使用されるCPUを使用した場合には制御データが与
えられる間隔は数mS程度であるため、制御データの示
す通りの音高等とした場合には、図6、図7に実線で示
すように、音高等は段階的に粗く変化することとなる。
これを防ぐために、楽音生成回路2(図1参照)に補間
回路を設けることにより音高等が滑らかに変化するよう
に構成してもよい。この場合例えば次の様な処理を行う
とよい。すなわち、制御部1から楽音生成回路2(ボイ
ス)に対してサービス間隔(NEXT_SRV(VOI
CE))が示す時間だけ先の制御データを供給するのに
加えて、サービス間隔値(NEXT_SRV(VOIC
E)の値)も供給するようにする。楽音生成回路2では
音高,音色,音量をサービス間隔値が示す時間の後に供
給された制御データが示すものになるように補間をす
る。この補間は、各ボイス毎に異なるサービス間隔値に
基づいて行われる。補間の方法として、エンベロープ波
形を生成するのに用いられる処理方法やポルタメント時
の音高変化処理方法と同様の方法を採用することができ
る。例えばサービス間隔値の示す時間に対応する時定数
を有する積分回路を用いることができる。この場合には
音高等は指数カーブを描きながら制御データの示す値に
近づく。あるいは、サービス間隔値を補間演算周期で除
算した商で、現在の音高等と制御データが示す音高等と
の差を除算した商(微小音高等)を得て、音高等を補間
演算周期毎にこの微小音高等の分だけ変化させるように
する。この場合音高等は、図6,図7に破線で示すよう
に、直線を描きながら制御データの示すものに近づく。
なお、この場合、音高等が制御データの示すものに到達
した場合にはその到達した音高等をそのまま持続するよ
うにする。
【0039】なお、楽音生成回路2で補間を行う場合に
は制御データの値の変化に対して楽音生成回路2で生成
される楽音の音高等がなだらかに変化するようになるの
で、制御データの値が変化した時にそれが直ちに楽音生
成回路2で生成される楽音の音高等に反映されないこと
になる。このため、操作子の操作があった場合にサービ
ス間隔を変更しないようにすると、LFO波形、エンベ
ロープ波形のレートとも小さい値で長いサービス間隔に
基づいて補間を行う場合には緩やかな補間レートで補間
が行われるため、操作子の操作によって制御データの値
が変化したにもかかわらずそれがなかなか音高等に反映
されないことになり、演奏者に違和感を感じさせること
になる。本実施例では操作子の操作があった場合にサー
ビス間隔を強制的に最も短い“1”としているので、そ
れ以前にサービス間隔が長く設定されている場合であっ
ても操作子の操作が音高等に速やかに反映されるように
なり演奏者に違和感を感じさせることはない。
【0040】なお、前記実施例ではLFO波形、エンベ
ロープ波形のそれぞれについて求めたサービス間隔値の
うち小さい方に基づいて両方をまとめてボイス処理を行
うようにしたが、波形毎に求めた最適なサービス間隔に
基づいて各波形の処理を独立して行うようにしてもよ
い。また、楽音の特質に経時的な変化を与える制御波形
としてLFO波形、エンベロープ波形以外のものにも本
発明を適用できる。
【0041】
【発明の効果】以上説明したように、本発明によれば、
所定時間あたりの楽音の特質の変化量に基づいて楽音生
成手段に制御データを供給する周期を変化させるため、
従来通りのCPUを用いて、楽音の品質を落とさずにC
PUの負荷を減らすことができ、したがって従来よりも
多くのボイスを制御することができる。また、発音開始
からの時間を計測して処理上の現在の時間位置を知り、
この現在の時間位置に基づいて制御データを求めること
により、処理周期が変化したり処理遅れのある/なしに
かかわらず正確な楽音制御が行われる。
【図面の簡単な説明】
【図1】本発明の楽音制御装置の一例が組み込まれた電
子楽器の構成ブロック図である。
【図2】ボイス処理タスクのメインルーチンを示すフロ
ーチャートである。
【図3】ボイス処理サブルーチンのフローチャートであ
る。
【図4】NEXT_SRV(VOICE)演算サブルー
チンのフローチャートである。
【図5】ボイス制御サブルーチンのフローチャートであ
る。
【図6】ボイスに供給される制御データの値の変化を示
した図である。
【図7】ボイスに供給される制御データの値の変化を示
した図である。
【図8】楽音の一般的なエンベロープを示した図であ
る。
【符号の説明】
1 制御部 2 楽音生成回路

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 楽音を生成するとともに、供給される楽
    音制御データに基づいて発音中の楽音の特質を変化させ
    る楽音生成手段と、 所定の周期毎に前記楽音制御データを生成し、生成した
    制御データを前記楽音生成手段へ供給する制御データ作
    成手段と、 実際の演算周期が前記所定の周期に対して変動した場合
    に、前記制御データ作成手段で生成される楽音制御デー
    タの値を周期の変動に基づいて可変制御する制御データ
    値可変手段とを備えたことを特徴とする電子楽器の楽音
    制御装置。
JP5099515A 1993-04-26 1993-04-26 電子楽器の楽音制御装置 Withdrawn JPH06308958A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5099515A JPH06308958A (ja) 1993-04-26 1993-04-26 電子楽器の楽音制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5099515A JPH06308958A (ja) 1993-04-26 1993-04-26 電子楽器の楽音制御装置

Publications (1)

Publication Number Publication Date
JPH06308958A true JPH06308958A (ja) 1994-11-04

Family

ID=14249394

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5099515A Withdrawn JPH06308958A (ja) 1993-04-26 1993-04-26 電子楽器の楽音制御装置

Country Status (1)

Country Link
JP (1) JPH06308958A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE41297E1 (en) 1995-07-05 2010-05-04 Yamaha Corporation Tone waveform generating method and apparatus based on software

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE41297E1 (en) 1995-07-05 2010-05-04 Yamaha Corporation Tone waveform generating method and apparatus based on software

Similar Documents

Publication Publication Date Title
US5895877A (en) Tone generating method and device
US5760326A (en) Tone signal processing device capable of parallelly performing an automatic performance process and an effect imparting, tuning or like process
JPH06308958A (ja) 電子楽器の楽音制御装置
US6066793A (en) Device and method for executing control to shift tone-generation start timing at predetermined beat
JP4258991B2 (ja) 楽音発生装置及び楽音発生処理のプログラム
JP2969138B2 (ja) ピッチ検出装置
US5942711A (en) Roll-sound performance device and method
JP3583575B2 (ja) 電子楽器
JP2715795B2 (ja) 発音割当手段を有する楽音合成装置
JP3632744B2 (ja) 音生成方法
JP2770770B2 (ja) 電子楽器
JP2692024B2 (ja) ピアノの自動演奏装置
JPH09114461A (ja) 電子楽器
JP3346710B2 (ja) 発音指示処理方法および発音指示処理装置
JPH0944160A (ja) 楽音生成方法
JP4311667B2 (ja) 電子楽音発生装置
JP3646611B2 (ja) 楽音発生装置
JP2513341B2 (ja) 電子楽器
JP2790069B2 (ja) 電子楽器
JP2578327B2 (ja) 自動演奏装置
JP2629564B2 (ja) 和音検出装置
JP3716701B2 (ja) 発音チャンネル割り当て方法及び装置
JPH0640268B2 (ja) 電子楽器の周波数制御装置
JP3296248B2 (ja) 楽音演奏装置
JPH07199931A (ja) 周波数データ生成装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20000704