JPH0535271A - 電子楽器のアサイナ - Google Patents

電子楽器のアサイナ

Info

Publication number
JPH0535271A
JPH0535271A JP3190702A JP19070291A JPH0535271A JP H0535271 A JPH0535271 A JP H0535271A JP 3190702 A JP3190702 A JP 3190702A JP 19070291 A JP19070291 A JP 19070291A JP H0535271 A JPH0535271 A JP H0535271A
Authority
JP
Japan
Prior art keywords
task
tone generation
tone
event
processing
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.)
Pending
Application number
JP3190702A
Other languages
English (en)
Inventor
Takenori Yamamori
丈範 山森
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 JP3190702A priority Critical patent/JPH0535271A/ja
Publication of JPH0535271A publication Critical patent/JPH0535271A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 楽音情報を割り当てる楽音発生チャネルを選
定するアサイナに関するものであり、他の機能を犠牲に
したりコストアップを招いたりすることなく、電子楽器
のアサイナにレベルアサイン方式を使用できるように
し、またレベルアサイン方式のアサイナにおいて、押鍵
等から発音開始までの遅延を少なくして演奏の違和感が
生じないようにする。 【構成】 新たな楽音発生チャネルの選定後発音停止し
ても演奏表現に与える影響がより少ない楽音発生チャネ
ルを処理対象の楽音発生チャネルとして全楽音発生チャ
ネルのうちからその全楽音発生チャネル数よりも少ない
数選択する処理対象楽音発生チャネル選択手段と、この
処理対象楽音発生チャネル選択手段で選択された処理対
象の楽音発生チャネルのうちからそれらの楽音発生チャ
ネルの発音量に基づき新たに入力される楽音情報を割り
当てる楽音発生チャネルの選定を行う選定手段を備え
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は電子楽器に係わり、さら
に詳しくは、新たな楽音の発音に際して鍵盤等から入力
される楽音情報を割り当てる楽音発生チャネルを選定す
るアサイナに関するものである。
【0002】
【従来の技術】一般に電子楽器は複数の楽音発生チャネ
ルを有し、新たな押鍵等に基づく楽音の発音に際して
は、入力される楽音情報を割り当てる楽音発生チャネル
をその複数の楽音発生チャネルのうちから選定している
が、その選定は例えば次のような方法で行われている。 ・発音終了した空いている楽音発生チャネルを選定す
る。 ・最も早く発音を開始(つまり最も早く押鍵)した楽音
発生チャネルを選定する。 ・最も早く離鍵した鍵に対応する楽音発生チャネルを選
定する。 ・最も発音量(例えばエンベロープレベルあるいは残存
発音量)の少ない楽音発生チャネルを選定する。いわゆ
るレベルアサイン方式である。 ・例えば離鍵順−押鍵順などのように、これらを組み合
わせて選定する。
【0003】
【発明が解決しようとする課題】各楽音発生チャネルの
発音量を比較し発音量の少ない楽音発生チャネルを選定
して新たな楽音情報を割り当てるレベルアサイン方式で
は、各楽音発生チャネルの発音量を比較するための演算
に要する処理負担が大きい。このため、装置のハードウ
ェアの処理能力が限られている場合には、レベルアサイ
ンを行ったことにより他の機能の性能を落とさなければ
ならなかったり、あるいは他の種々の機能を電子楽器に
搭載することができなかったりする。より処理能力の高
いハードウェアを採用すればかかる問題は解決されるも
ではあるが、これは製品のコストアップを招く。また上
述の比較演算はその処理時間が一般に長いので、新たな
押鍵等に対してその楽音が発音されるまでの遅延が大き
くなり、演奏表現上の違和感を生じさせるおそれがあ
る。
【0004】本発明は以上のような問題点に鑑みてなさ
れたものであり、その目的とするところは、他の機能を
犠牲にしたりコストアップを招いたりすることなく、電
子楽器のアサイナにレベルアサイン方式を使用できるよ
うにすることにある。またかかるレベルアサイン方式を
使用したアサイナにおいて、押鍵等から発音開始までの
遅延を少なくして演奏表現上の違和感が生じないように
することにある。
【0005】
【課題を解決するための手段】上述の課題を解決するた
めに、本発明に係る電子楽器のアサイナは、新たに入力
される楽音情報を割り当てる楽音発生チャネルの選定を
行う電子楽器のアサイナであって、選定したことにより
発音停止しても演奏表現に与える影響がより少ないまた
は無い楽音発生チャネルを処理対象の楽音発生チャネル
として全楽音発生チャネルのうちからその全楽音発生チ
ャネル数よりも少ない数、選択する処理対象楽音発生チ
ャネル選択手段と、この処理対象楽音発生チャネル選択
手段で選択された処理対象の楽音発生チャネルのうちか
らそれらの楽音発生チャネルの発音量に基づき新たに入
力される楽音情報を割り当てる楽音発生チャネルの選定
を行う選定手段とを備えたものである。
【0006】また本発明に係る電子楽器のアサイナは、
他の形態として、新たに入力される楽音情報を割り当て
る楽音発生チャネルの選定を行う電子楽器のアサイナで
あって、選定したことにより発音停止すると演奏表現に
与える影響がより大きい楽音発生チャネルを処理対象外
の楽音発生チャネルとして全楽音発生チャネルのうちか
らその全楽音発生チャネル数よりも少ない数、選択する
処理対象外楽音発生チャネル選択手段と、この処理対象
外楽音発生チャネル選択手段で選択された処理対象外の
楽音発生チャネルを除いた楽音発生チャネルのうちから
それらの楽音発生チャネルの発音量に基づき新たに入力
される楽音情報を割り当てる楽音発生チャネルの選定を
行う選定手段とを備えたものである。
【0007】
【作用】前者の形態の電子楽器のアサイナにおいては、
新たに入力される楽音情報を割り当てる楽音発生チャネ
ルの選定を行うにあたり、まず処理対象楽音発生チャネ
ル選定手段により、選定したことにより発音停止しても
演奏表現に与える影響がより少ないまたは無い楽音発生
チャネルを処理対象の楽音発生チャネルとして全楽音発
生チャネルのうちからその全楽音発生チャネル数よりも
少ない数、例えば全楽音発生チャネル数を16チャネル
とすれば8チャネルだけ選択する。
【0008】選定手段はこの処理対象楽音発生チャネル
によって選定された処理対象の楽音発生チャネルについ
て発音量等を求める演算を行って、それらの楽音発生チ
ャネルの発音量に基づき新たに入力される楽音情報を割
り当てる楽音発生チャネルの選定を行う。ここで発音量
としては、楽音発生チャネルのエンベロープレベル、残
存発音量、実際に発音されている楽音のエンベロープレ
ベル、疑似的なエンベロープレベルなど種々のものがあ
る。
【0009】このように選定手段が処理対象とする楽音
発生チャネル数を全楽音発生チャネル数よりも少ない数
に限定することで、選定手段が行わなければならない演
算量が全楽音発生チャネルを対象とする場合に比べて大
幅に削減され、したがってその処理負担が軽減され、ま
た処理時間が短縮される。
【0010】なお、選定したことにより発音停止しても
演奏表現に与える影響がより少ないまたは無い楽音発生
チャネルの選択の仕方としては例えば次のような種々の
仕方がある。 選定手段による選定の古い順(すなわち押鍵の古い
順)に楽音発生チャネルを選択する。 まず発音終了した楽音発生チャネルを選択し、次に
選定手段による選定の古い順に楽音発生チャネルを選択
する。 まず発音終了した楽音発生チャネルを選択し、次に
離鍵状態にある楽音発生チャネルを選定し、その後に選
定手段による選定の古い順に楽音発生チャネルを選択す
る。
【0011】なお、所定の除外条件を満たす楽音発生チ
ャネルは処理対象楽音発生チャネル選択手段による選択
対象から除外することが適当である。この所定の除外条
件とは、例えばアタック中、あるいはアタックに続いて
ディケイ中などの楽音発生チャネルであり、これらの状
態にある楽音発生チャネルは突然に発音停止すると演奏
表現に与える違和感が大きいので、上記の〜等に該
当するものであっても選択しないことが適当である。
【0012】また後者の形態の電子楽器のアサイナにお
いては、新たに入力される楽音情報を割り当てる楽音発
生チャネルの選定を行うにあたり、まず処理対象外楽音
発生チャネル選定手段により、選定したことにより発音
停止すると演奏表現に与える影響がより大きい楽音発生
チャネルを処理対象外の楽音発生チャネルとして全楽音
発生チャネルのうちからその全楽音発生チャネル数より
も少ない数、例えば全楽音発生チャネル数を16チャネ
ルとすると8チャネル選択する。
【0013】選定手段は、該処理対象外楽音発生チャネ
ル選択手段で選択された処理対象外の楽音発生チャネル
を除いた楽音発生チャネル(すなわち残りの8チャネ
ル)のうちからそれらの楽音発生チャネルの発音量に基
づき新たに入力される楽音情報を割り当てる楽音発生チ
ャネルの選定を行う。このように選定手段が処理対象と
する楽音発生チャネル数を全楽音発生チャネル数よりも
少ない数に限定することで、選定手段が行わなければな
らない演算量が全楽音発生チャネルを対象とする場合に
比べて大幅に削減され、したがってその処理負担が軽減
され、また処理時間が短縮される。
【0014】なお、選定したことにより発音停止すると
演奏表現に与える影響がより大きい楽音発生チャネルと
しては、例えば上記の所定の除外条件を満たす楽音発生
チャネル、あるいは選定手段による選定がより新しい楽
音発生チャネルなどを選択する。
【0020】
【実施例】次に、本発明による電子楽器の割当装置を、
減衰音系の楽音を発生する電子楽器に適用した場合の具
体的実施例につき、図面を参照しつつ説明する。まず、
図1において、鍵盤部20は鍵盤および鍵操作検出回路
より構成されるとともに、鍵盤において操作された鍵を
鍵操作検出回路で検出し、この検出された鍵に対応する
キーデータを生成してバス21を介してCPU22に割
込みをかける。また、操作子群23は音色の選択などを
行う複数個の操作子より構成されているとともに、ペダ
ル群24はダンパーペダル、ソステヌートペダルなどよ
り構成されている。さらに、ROM25にはCPU22
の実行するプログラム、各処理に必要なデータおよびテ
ーブルなどが予め記憶されているとともに、RAM26
にはプログラムを実行するに必要な各種レジスタなどを
含むワーキングエリアが設定されている。なお、タイマ
27は、所定時間間隔(1mSec)でCPU22にタイマ
割込みをかける。
【0021】CPU22は所定プログラムを実行し、鍵
盤部20からの割込みに応じて鍵盤部20からキーデー
タを受け取り、このキーデータをRAM26の対応する
レジスタに書き込む。また、タイマ27からのタイマ割
込みにもとづき所定時間間隔で操作子群23の操作設定
状態およびペダル群24の操作状態を各操作子検出回路
28およびペダル検出回路29を制御して検出し、操作
子データ、ペダルデータとしてRAM26の対応するレ
ジスタに書き込む。さらに、これら書き込まれたキーデ
ータなどにもとづき、所定プログラムを実行することに
より16個の楽音発生チャネルを有する楽音発生回路3
0を制御する。この楽音発生回路30は、CPU22の
制御のもとに所望の楽音信号を生成し、増幅器31を介
してスピーカ32に送り、楽音を発生させる。楽音発生
チャネルは、CPU22による楽音発生の指示およびそ
の際に与えられる楽音発生パラメータにもとづき楽音信
号を生成し、この生成される楽音信号を時間経過に対応
して推移させる。また、楽音発生チャネルは、CPU2
2によって与えられる次に到達するエンベロープレベル
を示す目標値と所定時間当りのエンベロープレベルの変
化量を示すレートとにもとづいてエンベロープレベルを
補間して滑らかなエンベロープを発生させて楽音信号の
振幅を制御するとともに、急速減衰の指示によりエンベ
ロープレベルを所定の急速減衰レートにしたがって減衰
させ、エンベロープレベルが“0”になると楽音発生回
路30に設けられている急速減衰終了FIFOに楽音発
生チャネル番号を積む。
【0022】次に、RAM26の所定領域に設定されて
いるノートマップなどの各種マップについて、図2〜図
5を参照して説明する。なお、図2〜図5は、これらマ
ップの一部を示すものである。
【0023】ノートマップ(図2) “0”〜“127”によって楽音の音高を示すノート番
号に対応して、次のものが記憶される。 (1) ノートステータス:ノートオンを“1”でもって、
ノートオフを“0”でもって示す。 (2) ソステヌートステータス:ソステヌートオンを
“1”でもって、ソステヌートオフを“0”でもって示
す。
【0024】タスク管理マップ(図4) “1”〜“7”によってタスクの種類を示すタスク番号
に対応して、次のものが記憶される。なお、タスク番号
は、“1”はキーデータ受信タスク、“2”はメインア
サイナタスク、“3”は発音タスク、“4”はプリアサ
イナタスク、“5”はエンベロープタスク、“6”はペ
ダルタスク、“7”は操作子タスクであり、番号が若い
ほど優先順位が高いタスクとなっている。 (1) タイマ処理要求フラグ:タイマ処理が必要なことを
“1”でもって示す。 (2) ステータス:タスクの状態がランであることを
“0”でもって、レディであることを“1”でもって、
ウェイトであることを“2”でもって示す。 (3) 待ちイベント値:ステータスがウェイトにおける待
ち中のイベントの種類を示す。 (4) イベント発生フラグ:タスクの各イベント毎にイベ
ントの発生を“1”でもって示す。
【0025】楽音発生チャネル管理マップ(図5) “0”〜“15”の番号により16個の楽音発生チャネ
ルを示す楽音発生チャネル番号に対応して、次のものが
記憶される。 (1) 発音量:現在発音中の楽音の発音量を“0000
H”〜“FFFFH”でもって示す。 (2) トランケート禁止フラグ:新たな楽音の割当ての禁
止を“1”でもって示す。 (3) 急速減衰中フラグ:従前の楽音を急速減衰中であ
ることを“1”でもって示す。 (4) 処理待ちフラグ1:発音タスクにおける第1処理の
処理待ちを“1”でもって示す。 (5) 処理待ちフラグ2:発音タスクにおける第2処理の
処理待ちを“1”でもって示す。 (6) 処理待ちフラグ3:発音タスクにおける第3処理の
処理待ちを“1”でもって示す。 (7) ノート番号:楽音の音高を示す。 (8) ベロシティ:楽音のベロシティを示す。 (9) 楽音発生パラメータ群:楽音発生に関する各種パラ
メータの値を示す。 (10) 押鍵順位:押鍵順位を“0〜15”でもって示
し、最も古い押鍵順位を“0”でもって示す。
【0026】エンベロープ管理マップ(図3) 各楽音発生チャネルに対応して“0”〜“15”の番号
により16個のエンベロープチャネルを示すエンベロー
プチャネル番号に対応して、次のものが記憶される。 (1) エンベロープレベル:エンベロープレベルを“00
00H”〜“FFFFH”でもって示す。 (2) 目標値:次に到達するべきエンベロープレベルを
“0000H”〜“FFFFH”でもって示す。 (3) レート:所定時間(5mSec )当たりのエンベロー
プレベルの変化量を示す。具体的には、正負を示す符号
ビットと絶対値を“0000H”〜“FFFFH”で示
すデータビットとより構成される。 (4) フェーズ番号:現在のフェーズ番号(楽音発生開始
からの経過段階)を示す。 (5) トランケート禁止フェーズ番号:新たな楽音の割当
てを禁止する最終フェーズ番号を示す。 (6) エンベロープ生成パラメータ群:楽音のエンベロー
プ生成に関する各種パラメータの値を示す。
【0027】次に、前述のように構成される電子楽器の
基本的な動作について、図6〜図17に示されているフロ
ーチャート図を参照しつつ説明する。なお、これら図6
〜図17のフローチャート図において用いられる各種の変
数としては、次のものがある。 NSTK 要求元タスク番号:モニタコールをしたタスクの
タスク番号を示す。 NSET 要求元イベント値:モニタコールをしたタスクに
おいて次に処理を行おうとするイベントの種類を示す。 NDTK 要求先タスク番号:次に実行を予定するタスクの
タスク番号を示す。 NDET 要求先イベント値:次に実行を予定するタスクに
おいて処理を行おうとするイベントの種類を示す。 IEDF 初期設定完了フラグ:全てのタスクにおける初期
設定の完了を“1”でもって示す。 TCTN タイマ割込み処理対象番号:タイマ割込み処理対
象のタスク番号を示す。 TCNE[N] 第Nタスクタイマカウンタ値:タスク番号が
Nであるタスク用タイマカウンタの値を示す。 TCND[N] 第Nタスク時間間隔:タスク番号がNである
タスクに対してタイマイベントを発行する時間間隔を示
す。 TCNE[TCTN] 第TCTNタスクタイマカウンタ値:タスク番
号がタイマ割込み処理対象番号TCTNであるタスク用タイ
マカウンタの値を示す。 TCND[TCTN] 第TCTNタスク時間間隔:タスク番号がタイ
マ割込み処理対象番号TCTNであるタスクに対してタイマ
イベントを発行する時間間隔を示す。
【0028】〔キーデータ受信タスク〕 NTNM ノート番号:ノートオンメッセージおよび/また
はノートオフメッセージにもとづく演奏情報の音高を示
す。 NTST ノートステータス:ノートオンメッセージにもと
づく演奏情報であることを“1”でもって、ノートオフ
メッセージにもとづく演奏情報であることを“0”でも
って示す。 NTVL ベロシティ:ノートオンメッセージにもとづく演
奏情報のベロシティを示す。
【0029】〔メインアサイナタスク〕 MASS[N] 第Nアサイン順位の楽音発生チャネル番号:
アサイン順位が第Nアサイン順位(N番目のアサイン順
位)である楽音発生チャネルの楽音チャネル番号を示
す。 TASN 対象アサイン順位:アサイン対象のアサイン順位
番号を示す。 MAEF メインアサイナ処理中フラグ:メインアサイナタ
スクにおいて新たなアサイン処理を行ったことを“1”
でもって示す。 MASS[TASN] アサイン順位TASNの楽音発生チャネル番
号:アサイン順位が対象アサイン順位TASNである楽音発
生チャネルの楽音発生チャネル番号を示す。 GACN 割当て可能楽音発生チャネル数:割当てが可能な
楽音発生チャネル数を示す。
【0030】〔発音タスク〕 GCTN 発音処理対象楽音発生チャネル番号:処理対象の
楽音発生チャネル番号を示す。 TDNF 急速減衰未了フラグ:いずれかの楽音発生チャネ
ルが急速減衰中であることを“1”でもって示す。
【0031】〔プリアサイナタスク〕 GN 楽音発生チャネル番号 PLEV[GN] 楽音発生チャネル番号GNのプリアサイナ発音
量 N プリアサイン順位 PASS[N] 第Nプリアサイン順位楽音発生チャネル番号:
プリアサイン順位が第N順位である楽音発生チャネルの
楽音発生チャネル番号を示す。 PACN プリアサイナ割当て可能楽音発生チャネル数:プ
リアサイナタスクにおいて割当て可能な楽音発生チャネ
ル数を示す。 PSTN 選択対象押鍵順位
【0032】〔エンベロープタスク〕 ECTN エンベロープ処理対象番号 ENNM エンベロープ処理対象ノート番号 〔ペダルタスク〕 DMPV ダンパー値
【0033】以上のように構成された電子楽器の動作を
図6〜図17のフローチャートを参照して以下に説明す
る。まず、この実施例の電子楽器の動作を概略的に説明
する。
【0034】この実施例の電子楽器では、各種タスク、
すなわちキーデータ受信タスク、メインアサイナタス
ク、発音タスク、プリアサイナタスク、エンベロープタ
スク、ペダルタスク、操作子タスクの各タスクは、モニ
タプログラムの管理下に、タスク間の優先処理をしつつ
マルチタスキングによって実行される。ここでモニタプ
ログラムとしては、リセットルーチン、イベント待ちモ
ニタコールルーチン、イベント発生モニタコールルーチ
ン、タイマ割込み処理ルーチン、キーデータ受信割込み
処理ルーチンがある。キーデータ受信タスク(図11)
は、鍵盤部20等から楽音情報(キーデータ)を読み込
み、ノートオンメッセージの時にはノートオン処理をし
てメインアサイナに起動をかける。メインアサイナタス
ク(図12)は、プリアサイナタスクで設定される楽音
発生チャネルのプリアサイン順位に基づき設定されたア
サイン順位に従って楽音発生チャネルを選定し、発音タ
スクに対して発音要求を行う。発音タスク(図13、図
14)は、メインアサイナタスクで選定された楽音発生
チャネルに対して、それが発音中であればその発音を停
止させる処理を行い、発音が停止されていれば、または
停止されると、入力された楽音情報に基づきその楽音情
報を発音するために楽音発生チャネルで必要な各種のパ
ラメータ等を演算して、その演算したパラメータ等をそ
の楽音発生チャネルに転送して発音開始を指示する。
【0035】プリアサイナタスク(図15)は、タイマ
により定期的に起動されて、処理対象の選択ルーチンに
従って処理対象として選択する楽音発生チャネル(選択
対象楽音発生チャネル)を選択し、楽音発生チャネル管
理マップからこれら選択対象楽音発生チャネルの発音量
を読み込んでこれをプリアサイナ発音量とし、これらの
プリアサイナ発音量の小なる順に選択対象楽音発生チャ
ネルにプリアサイン順位を設定する。上記の処理対象の
選択ルーチンでは、原則として押鍵順位の古い順に所定
数の楽音発生チャネルを選択する。この際、トランケー
ト禁止状態(例えばアタック中)にある楽音発生チャネ
ルや急速減衰中の楽音発生チャネルは選択対象から除外
する。プリアサイナ発音量はエンベロープタスクによっ
て逐次に更新される。エンベロープタスク(図16)で
は、楽音発生チャネルが発音終了をしているか否かを調
べ、発音終了していないものについては、原則として、
その楽音発生チャネルの押鍵状態(ノートステータス)
やペダル状態を考慮しつつ発音量の更新を行う。以下、
各フローチャートについて詳細に説明する。まずモニタ
プログラムについて図6〜図10に示されるフローチャ
ートを参照して説明する。
【0036】リセットルーチン(図6) 電源の投入時などにおいてリセットがかかると実行され
るルーチンである。各ステップZA1、ZA2において
の処理は、次の通りである。 〔ZA1〕 タスク管理マップにおける全てのタスク番
号のステータスを“1:レディ”に設定し、またタイマ
処理要求フラグ、待ちイベント値およびイベント発生フ
ラグを“0”に設定する。さらに、初期設定完了フラグ
IEDFを“0:初期設定未完了”に設定するなどの初期設
定を行う。 〔ZA2〕 要求元タスク番号NSTKを“1:キーデータ
受信タスク”に更新するとともに、タスク管理マップに
おけるタスク番号“1:キーデータ受信タスク”のステ
ータスを“0:ラン”に設定する。 〔ZA3〕 キーデータ受信タスクを実行する。
【0037】イベント待ちモニタコールルーチン(図
7) 実行中のタスクがイベント待ちモニタコールを行うと実
行されるルーチンである。各ステップZB1〜ZB5に
おいての処理は、次の通りである。 〔ZB1〕 タスク管理マップにおける要求元タスク番
号NSTKに対応するタスク番号について、要求元イベント
値NSETの2進数表現における“1”であるビットに対応
するイベント発生フラグのいずれかが“1:イベント発
生”であるか否かを判断する。この対応するイベント発
生フラグのいずれかが“1:イベント発生”である場合
には、イベント待ちモニタコールを行ったタスクに戻
る。なお、イベント発生フラグの判断に際して、例えば
要求元イベント値NSETが“1”である場合には第1イベ
ント発生フラグ、要求元イベント値NSETが“2”である
場合には第2イベント発生フラグ、要求元イベント値NS
ETが“3”である場合には第1および第2イベント発生
フラグを判断する。 〔ZB2〕 ステップZB1における判断において、判
断対象のイベント発生フラグがいずれも“1”でなくて
イベントの発生を示していない場合には、タスク管理マ
ップにおける要求元タスク番号NSTKに対応するタスク番
号のステータスを“2:ウェイト”に設定するととも
に、待ちイベント値を要求元イベント値NSETとする。ま
た、処理の再開に備えて要求元タスクにおいて使用中の
レジスタなどの内容をスタック領域に退避するなどの中
断処理(以下、単に要求元タスクの中断処理と記する)
を行う。 〔ZB3〕 タスク管理マップを調べて、イベント待ち
モニタコールを行なったタスクより優先順位が低くかつ
対応するステータスが“1:レディ”を示す“レディ”
タスクをタスク番号順に探す。このステータスが“1:
レディ”を示す“レディ”タスクがない場合には、要求
元タスク番号NSTKをスリープを示す“8”に設定してス
リープする。なお、スリープからはタイマ27または鍵
操作検出回路からのハードウェア割込みにもとづいて、
後述するタイマ割込み処理ルーチン、またはキーデータ
受信割込み処理ルーチンが起動される。 〔ZB4〕 ステップZB3において最優先の“レデ
ィ”タスクを探し出すと、要求元タスク番号NSTKをその
最優先の“レディ”タスクのタスク番号に更新するとと
もに、タスク管理マップにおけるその最優先の“レデ
ィ”タスクのタスク番号のステータスを“0:ラン”に
設定する。 〔ZB5〕 要求元タスク番号NSTKに対応するタスクを
実行する。なお、タスクの実行に際しては、タスクの中
断処理においてスタック領域に退避したデータなどを元
のレジスタなどに戻すなどの再開処理(以下、単に再開
処理と記する)を行う。
【0038】イベント発生モニタコールルーチン(図
8) 実行中のタスクがイベント発生モニタコールを行うと実
行されるルーチンである。各ステップZC1〜ZC7お
いての処理は、次の通りである。 〔ZC1〕 タスク管理マップにおける要求先タスク番
号NDTKに対応するタスク番号について、要求先イベント
値NDETの2進数表現における“1”であるビットに対応
するイベント発生フラグを“1”に設定する。例えば、
要求先イベント値NDETが“1”である場合には第1イベ
ント発生フラグを、要求先イベント値NDETが“2”であ
る場合には第2イベント発生フラグを“1”に設定す
る。 〔ZC2〕 タスク管理マップにおける要求先タスク番
号NDTKに対応するタスク番号のステータスが“2:ウェ
イト”でかつ待ちイベント値が要求先イベント値NDETに
対応しているか否かを判断する。このステータスが
“2:ウェイト”でなく、または待ちイベント値が要求
先イベント値NDETに対応しない場合には、このモニタコ
ールを行ったタスクに戻る。なお、待ちイベント値が要
求先イベント値NDETに対応しているか否かの判断は、待
ちイベント値の2進数表現における“1”であるビット
に対応する要求先イベント値NDETの2進数表現における
ビットのいずれかのビットが“1”であるか否かによっ
て行う。例えば、待ちイベント値が“1”である場合に
は要求先イベント値NDETの第1ビットが“1”、待ちイ
ベント値が“2”である場合には要求先イベント値NDET
の第2ビットが“1”、待ちイベント値が“3”である
場合には要求先イベント値NDETの第1または第2ビット
が“1”であるときに対応していると判断する。 〔ZC3〕 ステップZC2における判断において、判
断対象のステータスが“2:ウェイト”でかつ待ちイベ
ント値が要求先イベント値NDETに対応する場合には、こ
のステータスを“1:レディ”に設定する。 〔ZC4〕 要求先タスク番号NDTKが要求元タスク番号
NSTK未満か否かにより要求先タスクの優先順位が要求元
タスクの優先順位より高いか否かを判断する。この要求
先タスク番号NDTKが要求元タスク番号NSTK未満でなくて
要求先タスクの優先順位が高くない場合には、このモニ
タコールを行ったタスクに戻る。 〔ZC5〕 ステップZC4における判断において、要
求先タスク番号NDTKが要求元タスク番号NSTK未満で要求
先タスクの優先順位が高い場合には、タスク管理マップ
における要求元タスク番号NSTKに対応するタスク番号の
ステータスを“1:レディ”に設定するとともに、処理
の再開に備えて要求元タスクの中断処理を行う。 〔ZC6〕 要求元タスク番号NSTKを要求先タスク番号
NDTKに更新するとともに、タスク管理マップにおける要
求先タスク番号NDTKに対応するタスク番号のステータス
を“0:ラン”に設定する。 〔ZC7〕 要求先タスク番号NDTKに対応するタスク番
号のタスクを実行する。なお、タスクの実行に際しては
そのタスクの再開処理を行う。
【0039】タイマ割込み処理ルーチン(図9) タイマ27からタイマ割込みがかかると、まず各タスク
に対応するタイマカウンタを調べ、このタイマカウンタ
の値が“1”を超えている場合にはそのタイマカウンタ
の値を“1”だけデクリメントし、“1”を超えていな
い場合にはタスク管理マップにおける当該タスクのタス
ク番号の第1イベント発生フラグを“1:イベント発
生”に設定するとともに、このタスク番号のステータス
が“2:ウェイト”であるときにはそのステータスを
“1:レディ”に設定し、次に優先順位の高いタスクか
ら順次に、タスクを実行するべきか否かを判断して最初
に条件を満たすタスクを実行させるルーチンである。各
ステップZD1〜ZD16においての処理は、次の通り
である。 〔ZD1〕 初期設定完了フラグIEDFが“1:初期設定
完了”であるか否かを判断する。この初期設定完了フラ
グIEDFが“1”でない場合には、全てのタスクの初期設
定がいまだ終了していないために、タイマ割込み処理を
終了してタイマ割込み前の処理に戻り、“1”である場
合には後述する各タスクの初期設定を全て終了している
ために、次のステップZD2に進む。 〔ZD2〕 タイマ割込み処理対象のタスク番号を示す
タイマ割込み処理対象番号TCTNを“7”に設定する。 〔ZD3〕 タスク管理マップにおけるタイマ割込み処
理対象番号TCTNに対応するタスク番号のタイマ処理要求
フラグが“1:要求有り”であるか否かを判断する。こ
のタイマ処理要求フラグが“1”でない場合には、ステ
ップZD8に進む。 〔ZD4〕 ステップZD3における判断において、判
断対象のタイマ処理要求フラグが“1:要求有り”であ
る場合には、第TCTNタスクタイマカウンタ値TCNE[TCTN]
が“1”を超えているか否かを判断する。この第TCTNタ
スクタイマカウンタ値TCNE[TCTN]が“1”を超えている
場合には、ステップZD10に進む。 〔ZD5〕 ステップZD4における判断において、第
TCTNタスクタイマカウンタ値TCNE[TCTN]が“1”を超え
ていない場合には、まず第TCTNタスクタイマカウンタ値
TCNE[TCTN]に第TCTNタスク時間間隔TCND[TCTN]を加算し
て、この加算した値を新たな第TCTNタスクタイマカウン
タ値TCNE[TCTN]とする。次に、タスク管理マップにおけ
るタイマ割込み処理対象番号TCTNに対応するタスク番号
の第1イベント発生フラグを“1:イベント発生”に設
定する。
【0040】〔ZD6〕 タスク管理マップにおけるタ
イマ割込み処理対象番号TCTNに対応するタスク番号のス
テータスが“2:ウェイト”でかつそのタスク番号の待
ちイベント値の2進数表現における第1ビットが“1”
(例えば、待ちイベント値が“1”,“3”)であるか
否かを判断する。このステータスが“2:ウェイト”で
ないまたは待ちイベント値の2進数表現における第1ビ
ットが“1”でない場合には、ステップZD8に進む。 〔ZD7〕 ステップZD6における判断において、判
断対象のステータスが“2:ウェイト”でかつ判断対象
の待ちイベント値の2進数表現における第1ビットが
“1”である場合には、タスク管理マップにおけるタイ
マ割込み処理対象番号TCTNに対応するタスク番号のステ
ータスを“1:レディ”に設定する。 〔ZD8〕 タイマ割込み処理対象番号TCTNが“1”を
超えているか否かを判断する。このタイマ割込み処理対
象番号TCTNが“1”を超えていない場合には、イベント
発生フラグの設定処理が全て終了したために、ステップ
ZD11に進む。 〔ZD9〕 ステップZD8における判断において、タ
イマ割込み処理対象番号TCTNが“1”を超えている場合
には、タイマ割込み処理対象番号TCTNを“1”だけデク
リメントしてステップZD3に戻る。 〔ZD10〕 ステップZD4における判断において、
第TCTNタスクタイマカウンタ値TCNE[TCTN]が“1”を超
えている場合には、第TCTNタスクタイマカウンタ値TCNE
[TCTN]を“1”だけデクリメントしてステップZD8に
進む。 〔ZD11〕 タイマ割込み処理対象番号TCTNが当該ル
ーチンにおいてはタイマ割込み発生前の処理を示す要求
元タスク番号NSTK未満であるか否かを判断する。このタ
イマ割込み処理対象番号TCTNが要求元タスク番号NSTK未
満でない場合には、タイマ割込み発生時に実行していた
タスクの優先順位が処理対象番号TCTNに対応するタスク
の優先順位より低くないために、タイマ割込み処理を終
了してそのタスクに戻る。
【0041】〔ZD12〕 ステップZD11における
判断において、タイマ割込み処理対象番号TCTNが要求元
タスク番号NSTK未満である場合には、タスク管理マップ
におけるタイマ割込み処理対象番号TCTNに対応するタス
ク番号のステータスが“1:レディ”であるか否かを判
断する。このステータスが“1”でない場合には、ステ
ップZD16に進む。 〔ZD13〕 ステップZD12における判断におい
て、判断対象のステータスが“1:レディ”である場合
には、タスク管理マップにおける要求元タスク番号NSTK
に対応するタスク番号のステータスを“1:レディ”に
設定するとともに、処理の再開に備えて要求元タスク番
号NSTKに対応するタスクの中断処理を行う。 〔ZD14〕 要求元タスク番号NSTKをタイマ割込み処
理対象番号TCTNに更新するとともに、タスク管理マップ
におけるタイマ割込み処理対象番号TCTNに対応するタス
ク番号のステータスを“0:ラン”に設定する。 〔ZD15〕 タイマイベントを発生する。言い換えれ
ば、タイマ割込み処理対象番号TCTNに対応するタスク番
号のタスクを実行する。なお、タスクの実行に際しては
そのタスクの再開処理を行う。 〔ZD16〕 ステップZD12における判断におい
て、判断対象のステータスが“1:レディ”でない場合
には、タイマ割込み処理対象番号TCTNを“1”だけイン
クリメントしてステップZD11に戻る。
【0042】キーデータ受信割込み処理ルーチン(図1
0) 鍵操作検出回路から割込みがかかると実行されてキーデ
ータ受信イベントを発生するルーチンである。各ステッ
プZE1〜ZE6おいての処理は、次の通りである。 〔ZE1〕 初期設定完了フラグIEDFが“1:完了”で
あるか否かを判断する。この初期設定完了フラグIEDFが
“1”でない場合には、全てのタスクの初期設定がいま
だ終了していないために、キーデータ受信割込み処理を
終了してキーデータ受信割込み発生前の処理に戻る。 〔ZE2〕 ステップZE1における判断において初期
設定完了フラグIEDFが“1:完了”である場合には、タ
スク管理マップにおけるタスク番号“1:キーデータ受
信タスク”の第1イベント発生フラグを“1:発生”に
設定する。 〔ZE3〕 タスク管理マップにおけるタスク番号
“1:キーデータ受信タスク”のステータスが“2:ウ
ェイト”でかつ待ちイベント値が“1:キーデータ受信
イベント待ち”であるか否かを判断する。このステータ
スが“2:ウェイト”でない、または待ちイベント値が
“1:キーデータ受信イベント待ち”でない場合には、
キーデータ受信割込み処理を終了してキーデータ受信割
込み発生前の処理に戻る。 〔ZE4〕 ステップZE3における判断において、判
断対象のステータスが“2”でかつ待ちイベント値が
“1”でキーデータ受信イベント待ちである場合には、
当該ルーチンにおいてキーデータ受信割込み発生前の処
理を示す要求元タスク番号NSTKが“8”未満であるか否
かを判断する。この要求元タスク番号NSTKが“8”未満
である場合にはタスク管理マップにおける要求元タスク
番号NSTKに対応するタスク番号のステータスを“1:レ
ディ”に設定するとともに、処理の再開に備えてタイマ
割込み発生前のタスクの中断処理を行う。なお、“8”
未満でない場合には格別の処理は不要である。 〔ZE5〕 要求元タスク番号NSTKをタスク番号“1:
キーデータ受信タスク”に更新するとともに、タスク管
理マップにおけるタスク番号“1:キーデータ受信タス
ク”のステータスを“0:ラン”に設定する。 〔ZE6〕 キーデータ受信イベントを発生する。言い
換えれば、キーデータ受信タスクを実行する。なお、タ
スクの実行に際してはキーデータ受信タスクの再開処理
を行う。
【0043】次に、各タスクをキーデータ受信タスク、
メインアサイナタスク、発音タスク、プリアサイナタス
ク、エンベロープタスク、ペダルタスク、操作子タスク
の順に説明する。なお、電源の投入時などにおいてリセ
ットがかかった後の各タスクでの最初の処理に際して
は、先頭のステップ、例えば次に説明するキーデータ受
信タスクではステップA1より開始する。また、あるタ
スクの処理を中断しその後処理を再開するに際しては、
このタスクにおける中断時の処理を継続するように中断
した処理を再開する。例えば、キーデータ受信タスクの
ステップA2でイベント待ちモニタコールをし、イベン
ト待ちモニタコールルーチンでの判断においてイベント
発生でなく中断処理を行った場合には、その後キーデー
タ受信割込みの発生によりキーデータ受信割込みルーチ
ンにおいて再開処理を行うと、ステップA2のイベント
待ちモニタコールに引き続くステップA3より処理を再
開する。
【0044】キーデータ受信タスク(図11) キーデータ受信イベントが発生すると、鍵操作検出回路
からキーデータを読み込み、アサイン要求イベントを発
生するタスクである。各ステップA1〜A7においての
処理は、次の通りである。 〔A1〕 ノートマップをクリヤするとともに、当該キ
ーデータ受信タスクで占有する変数などを初期値に設定
する。 〔A2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。キーデータ受信イベン
トが発生すると、次のステップA3に進む。 〔A3〕 タスク管理マップにおけるタスク番号“1:
キーデータ受信タスク”の第1イベント発生フラグと待
ちイベント値とを“0”に設定する。 〔A4〕 鍵操作検出回路からキーデータを読み込み、
このキーデータのノート番号、ノートステータスおよび
ノートベロシティを各対応するところのノート番号NTN
M、ノートステータスNTSTおよびベロシティNTVLとす
る。 〔A5〕 ノートステータスNTSTが“1:押鍵”である
か否かを判断する。このノートステータスNTSTが“1”
でない場合には次のステップA6に進み、“1”である
場合にはステップA7に進む。 〔A6〕 離鍵処理 まず、ノートマップにおけるノート番号NTNMに対応する
ノート番号のノートステータスを“0”に設定する。次
に楽音発生チャネル管理マップのノート番号がノート番
号NTNMでかつノートステータスが“1”である楽音発生
チャネル番号を押鍵順位の小なる順に探し、押鍵順位の
最も小なるその楽音発生チャネル番号のノートステータ
スを“0”に設定する。そして、ステップA2に戻る。 〔A7〕 押鍵処理 まず、ノートマップにおけるノート番号NTNMに対応する
ノート番号のノートステータスを“1”に設定する。次
に、アサイン要求イベントを発生する。言い換えれば、
要求先タスク番号NDTKを“2:メインアサイナタスク”
に、要求先イベント値NDETを“1”に設定してイベント
発生モニタコールを行う。そして、ステップA2に戻
る。
【0045】メインアサイナタスク(図12) アサイン要求イベントが発生すると、後述するプリアサ
イナタスクで設定するアサイン順位にもとづいて、楽音
発生チャネル管理マップの所定の領域にノート番号NTNM
などを書き込み、発音要求イベントを発生するタスクで
ある。各ステップB1〜B7においての処理は、次の通
りである。 〔B1〕 楽音発生チャネル管理マップを初期設定する
とともに、このメインアサイナタスクで占有する変数な
どを初期値に設定する。なお楽音発生チャネル管理マッ
プにおける各楽音発生チャネル番号の押鍵順位をその楽
音発生チャネル番号に設定する。また、第Nアサイン順
位楽音発生チャネル番号MASS[N] (Nは0,1,〜15)を各
対応する“N( =0,1,〜15) ”に設定する。また、対象
アサイン順位TASNを“0”に、割当て可能楽音発生チャ
ネル数GACNを最大数の“16”に設定する。 〔B2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。なお、アサイン要求イ
ベントが発生すると、次のステップB3に進む。 〔B3〕 タスク管理マップにおけるタスク番号“2:
メインアサインタスク”の待ちイベント値と第1イベン
ト発生フラグとを“0”に設定する。 〔B4〕 対象アサイン順位TASNが割当て可能楽音発生
チャネル数GACN未満であるか否かを判断する。この対象
アサイン順位TASNが割当て可能楽音発生チャネル数GACN
未満でない場合には、割当てるべき楽音発生チャネルが
最早やないためにステップB2に戻る。 〔B5〕 ステップB4における判断において対象アサ
イン順位TASNが割当て可能楽音発生チャネル数GACN未満
である場合、楽音発生チャネル管理マップにおけるアサ
イン順位TASNの楽音発生チャネル番号MASS[TASN]に対応
する楽音発生チャネル番号の処理待ちフラグ1、処理待
ちフラグ2および処理待ちフラグ3を“1:処理待ち
中”に、ノート番号をノート番号NTNMに、ノートステー
タスを“1”に、べロシティをベロシティNTVLに設定す
る。またメインアサイナ処理中フラグMAEFを“1:メイ
ンアサイナ処理中”に設定する。 〔B6〕 発音要求イベントを発生する。言い換えれ
ば、要求先タスク番号NDTKを“3:発音タスク”に、要
求先イベント値NDETを“2”に設定してイベント発生モ
ニタコールを行う。 〔B7〕 対象アサイン順位TASNを“1”だけインクリ
メントしてステップB2に戻る。
【0046】発音タスク(図13、図14) 発音要求イベントが発生すると新たな楽音を発生する楽
音発生チャネルにおいて前の発音が終了していない場合
には急速減衰の開始を指示し(第1処理)、またノート
番号NTNMなどにもとづいて楽音発生に関するパラメータ
を演算して設定し(第2処理)、さらに発音が終了して
いた、または終了した場合には楽音発生チャネルに新た
な発音を指示する(第3処理)タスクである。各ステッ
プC1〜C27においての処理は、次の通りである。 〔C1〕 当該タスクで占有する変数などを初期値に設
定するとともに、急速減衰を終了した楽音発生チャネル
番号を記憶する急速減衰終了FIFOをクリヤするなど
するとともに、楽音発生回路30を初期化する。また、
第3タスクタイマカウンタ値TCNE[3] と、第3タスク時
間間隔TCND[3] とを“0”に設定するとともに、タスク
管理マップにおけるタスク番号“3:発音タスク”のタ
イマ処理要求フラグを“1:要求有り”に設定する。 〔C2〕 要求元イベント値NSETを“2”に設定してイ
ベント待ちモニタコールを行う。なお、発音要求イベン
トが発生すると、次のステップC3に進む。 〔C3〕 まず、タスク管理マップにおけるタスク番号
“3:発音タスク”の待ちイベント値と第2イベント発
生フラグとを“0”に設定して、次に発音処理対象楽音
発生チャネル番号GCTNを“0”に設定する。 〔C4〕 楽音発生チャネル管理マップにおける発音処
理対象楽音発生チャネル番号GCTNに対応する楽音発生チ
ャネル番号の処理待ちフラグ1が“1:処理待ち中”で
あるか否かを判断する。この処理待ちフラグ1が“1”
である場合には次のステップC5に進み、“1”でなく
て第1処理(ステップC5〜C7)が不要である場合に
はステップC8に進む。 〔C5〕 エンベロープ管理マップにおける発音処理対
象楽音発生チャネル番号GCTNに対応するエンベロープチ
ャネル番号のエンベロープレベルが“0”であるか否か
を判断する。このエンベロープレベルが“0”でない場
合には次のステップC6に進み、“0”で急速減衰処理
が不要である場合にはステップC7に進む。
【0047】〔C6〕 楽音発生チャネル管理マップに
おける発音処理対象楽音発生チャネル番号GCTNに対応す
る楽音発生チャネル番号の急速減衰中フラグを“1:急
速減衰中”に、発音量を急速減衰中を示す“FFFF
H" に設定するとともに、対応する楽音発生チャネルに
急速減衰を指示する。なお、急速減衰の指示に際しては
目標値を“0”に、レートを急速減衰用のレートに設定
して対応する楽音発生チャネルに転送する。 〔C7〕 楽音発生チャネル管理マップにおける発音処
理対象楽音発生チャネル番号GCTNに対応する楽音発生チ
ャネル番号の処理待ちフラグ1を”0”に設定する。 〔C8〕 発音処理対象楽音発生チャネル番号GCTNが
“15”未満であるか否かを判断する。この楽音処理対
象楽音発生チャネル番号GCTNが“15”未満である場合
には次のステップC9に進み、“15”未満でなくて全
ての楽音発生チャネルについて第1処理を終えている場
合にはステップC10に進む。 〔C9〕 発音処理対象楽音発生チャネル番号GCTNを
“1”だけインクリメントし、次の楽音発生チャネルの
処理の準備を行ってステップC4に戻る。 〔C10〕 発音処理対象楽音発生チャネル番号GCTNを
“0”に設定する。 〔C11〕 楽音発生チャネル管理マップにおける発音
処理対象楽音発生チャネル番号GCTNに対応する楽音発生
チャネル番号の処理待ちフラグ2が“1:処理待ち中”
であるか否かを判断する。この処理待ちフラグ2が
“1”である場合には次のステップC12に進み、
“1”でなくて第2処理(ステップC12)が不要であ
る場合にはステップC13に進む。
【0048】〔C12〕 発音処理対象楽音発生チャネ
ル番号GCTNに対応する楽音発生チャネルの、楽音の発生
と楽音のエンベロープ生成とに関する各種パラメータの
値を、楽音発生チャネル管理マップにおける発音処理対
象楽音発生チャネル番号GCTNに対応する楽音発生チャネ
ル番号のノート番号、ベロシティおよび後述する操作子
データ受信タスクのステップG4において設定される音
色パラメータ群より演算して、これら演算された各種パ
ラメータの値を、楽音発生チャネル管理マップにおける
発音処理対象楽音発生チャネル番号GCTNに対応する楽音
発生チャネル番号の楽音発生パラメータ群およびエンベ
ロープ管理マップにおける発音処理対象楽音発生チャネ
ル番号GCTNに対応するエンベロープチャネル番号のエン
ベロープ生成パラメータ群の対応するパラメータに設定
する。同時に、処理待ちフラグ2を”0”に設定する。
また、楽音発生チャネル管理マップにおける発音処理対
象楽音発生チャネル番号GCTNに対応する楽音発生チャネ
ル番号の押鍵順位以上の押鍵順位を次のように更新す
る。発音処理対象楽音発生チャネル番号GCTNに対応する
楽音発生チャネル番号の押鍵順位より大きな押鍵順位を
“1”だけデクリメントするとともに、発音処理対象楽
音発生チャネル番号GCTNに対応する楽音発生チャネル番
号の押鍵順位を“15”に設定する。例えば、押鍵順位
が“5”の楽音発生チャネルに新たな楽音を割り当てる
と、押鍵順位が“6”〜“15”の楽音発生チャネルの
押鍵順位は“5”〜“14”に設定され、新たな楽音が
割り当てられた楽音発生チャネルの押鍵順位は“15”
に設定される。 〔C13〕 発音処理対象楽音発生チャネル番号GCTNが
“15”未満であるか否かを判断する。この発音処理対
象楽音発生チャネル番号GCTNが“15”未満である場合
には次のステップC14に進み、“15”未満でない場
合にはステップC15に進む。 〔C14〕 発音処理対象楽音発生チャネル番号GCTNを
“1”だけインクリメントしてステップC11に戻る。 〔C15〕 急速減衰未了フラグTDNFと発音処理対象楽
音発生チャネル番号GCTNとを“0”に設定する。 〔C16〕 楽音発生チャネル管理マップにおける発音
処理対象楽音発生チャネル番号GCTNに対応する楽音発生
チャネル番号の処理待ちフラグ3が“1:処理待ち中”
であるか否かを判断する。この処理待ちフラグ3が
“1”である場合には次のステップC17に進み、
“1”でなくて第3処理(ステップC17,C18,C
21)が不要である場合にはステップC19に進む。
【0049】〔C17〕 楽音発生チャネル管理マップ
における発音処理対象楽音発生チャネル番号GCTNに対応
する楽音発生チャネル番号の急速減衰中フラグが“1:
急速減衰中”であるか否かを判断する。この急速減衰中
フラグが“1”でない場合には次のステップC18に進
み、“1”である場合には割当てるべき楽音発生チャネ
ルにおける従前に割当てられていた楽音の発音がいまだ
終了していないために、ステップC21に進む。 〔C18〕 エンベロープ管理マップにおける発音処理
対象楽音発生チャネル番号GCTNに対応するエンベロープ
チャネル番号のエンベロープ生成パラメータ群にもとづ
いて第1フェーズの目標値、レートおよびトランケート
禁止フェーズ番号を演算してそれらの値などにエンベロ
ープ管理マップの目標値、レートおよびトランケート禁
止フェーズ番号を設定するとともに、フェーズ番号を
“1”に、エンベロープレベルを“0”に設定する。な
お、楽音発生チャネル管理マップにおける発音処理対象
楽音発生チャネル番号GCTNに対応する楽音発生チャネル
番号の発音量を、エンベロープ生成パラメータ群に含ま
れるアタックレベルの上位15ビットに“8000H”
を加算した値に、トランケート禁止フラグを“1:トラ
ンケート禁止”に設定する。また、楽音発生チャネル管
理マップにおける発音処理対象楽音発生チャネル番号GC
TNに対応する楽音発生チャネル番号の楽音発生パラメー
タ群とエンベロープ管理マップにおける発音処理対象楽
音発生チャネル番号GCTNに対応するエンベロープチャネ
ル番号の目標値およびレートを、楽音発生回路30にお
ける発音処理対象楽音発生チャネル番号GCTNに対応する
楽音発生チャネルに転送する。また、処理待ちフラグ3
を“0”に設定するとともに、対応する楽音発生チャネ
ルに楽音発生の開始を指示する。 〔C19〕 発音処理対象楽音発生チャネル番号GCTNが
“15”未満であるか否かを判断する。この発音処理対
象楽音発生チャネル番号GCTNが“15”未満である場合
には次のステップC20に進み、“15”未満でない場
合にはステップC22に進む。 〔C20〕 発音処理対象楽音発生チャネル番号GCTNを
“1”だけインクリメントしてステップC16に戻る。 〔C21〕 急速減衰未了フラグTDNFを“1:未了”に
設定してステップC19に進む。
【0050】〔C22〕 急速減衰未了フラグTDNFが
“1:未了”であるか否かを判断する。この急速減衰未
了フラグTDNFが“1”である場合には次のステップC2
3に進み、“1”でなく全ての発音処理が終了している
場合にはステップC2に戻る。 〔C23〕 要求元イベント値NSETを“3”に設定して
イベント待ちモニタコールを行う。なお、発音要求イベ
ントまたは発音タスクに対するタイマイベントのいずれ
かが発生すると、次のステップC24に進む。 〔C24〕 タスク管理マップにおけるタスク番号
“3:発音タスク”の第2イベント発生フラグが“1”
であるか否かを判断する。この第2イベント発生フラグ
が“1”でない場合には次のステップC25に進み、
“1”である場合には発音要求イベントの発生であるた
めに、ステップC3に戻る。 〔C25〕 タスク管理マップにおけるタスク番号
“3:発音タスク”の第1イベント発生フラグが“1”
であるタイマイベントの発生であるために、まずタスク
管理マップにおけるタスク番号“3:発音タスク”の待
ちイベント値と第1イベント発生フラグとを“0”に設
定する。 〔C26〕 楽音発生回路30に設けられている急速減
衰終了FIFOが“空”であるか否か判断する。この急
速減衰終了FIFOが“空”である場合にはステップC
23に戻り、“空”でない場合には次のステップC27
に進む。 〔C27〕 急速減衰終了FIFOから急速減衰処理に
よりエンベロープレベルが“0”になった楽音発生チャ
ネルの楽音発生チャネル番号を順次に降ろし、この降ろ
した楽音発生チャネル番号に対応する楽音発生チャネル
管理マップにおける楽音発生チャネル番号の急速減衰中
フラグを“0”に設定する。そして、ステップC15に
戻る。
【0051】プリアサイナタスク(図15) プリアサイナタスクに対応するタイマイベントが発生す
ると実行を開始し、発音量にもとづいてアサイン順位を
更新するタスクである。各ステップD1〜D12におい
ての処理は、次の通りである。 〔D1〕 エンベロープ管理マップをクリヤするととも
に、このプリアサイナタスクで占有する変数などを初期
値に設定する。また、第4タスクタイマカウンタ値TCNE
[4] を“5”に、第4タスク時間間隔TCND[4] を“4”
に設定する。さらに、タスク管理マップにおけるタスク
番号“4:プリアサイナタスク”のタイマ処理要求フラ
グを“1:要求有り”に設定する。 〔D2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。なお、プリアサイナタ
スクに対するタイマイベントが発生すると、次のステッ
プD3に進む。 〔D3〕 タスク管理マップにおけるタスク番号“4:
プリアサイナタスク”の待ちイベント値と第1イベント
発生フラグとを“0”に設定する。 〔D4〕 メインアサイナ処理中フラグMAEFを“0”に
設定する。 〔D5〕 処理対象の選択ルーチンを実行する。この処
理対象の選択ルーチンの詳細は後に説明する。 〔D6〕 プリアサイン順位Nをプリアサイナ割当て可
能楽音発生チャネル数PACNとする。
【0052】〔D7〕 プリアサイン順位が“0”から
プリアサイナ割当て可能楽音発生チャネル数PACNから
“1”を減じた順位までの第Nプリアサイン順位楽音発
生チャネル番号PASS[N]を対応する楽音発生チャネル番
号GNのプリアサイナ発音量PLEV[GN]の小なる順に並べ換
える。例えば、プリアサイナ発音量PLEV[GN]がPLEV[3]
<PLEV[5] <PLEV[2] ・・・の順であれば、第Nプリア
サイン順位楽音発生チャネル番号PASS[N] はPASS[0] =
3、PASS[1] =5、PASS[2] =2・・・とする。 〔D8〕 タスクロックをかける。言い換えれば、鍵操
作検出回路、タイマ回路27からの割込みを禁止する。
このタスクロックが解除されるまで他のタスクの実行は
禁止され、当該タスクの実行の継続は保証される。 〔D9〕 メインアサイナ処理中フラグMAEFが“0:非
処理中”であるか否かを判断する。このメインアサイナ
処理フラグMAEFが“0”である場合にはステップD11
に進む。 〔D10〕 ステップD9の判断においてメインアサイ
ナ処理中フラグMAEFが“0”でない場合、言い換えれば
ステップD5〜D7の処理中に鍵盤部における新たな鍵
操作などにもとづく一連の処理によりメインアサイナタ
スクが実行されると、楽音発生チャネルの発音態様がス
テップD5の開始時と異なっているために、タスクロッ
クを解除して再設定をするべくステップD4に戻る。 〔D11〕 まず、第Nプリアサイン順位楽音発生チャ
ネル番号PASS[N] を各対応する第Nアサイン順位楽音発
生チャネル番号MASS[N] とするとともに、対象アサイン
順位TASNを“0”に設定する。また、プリアサイナ割当
て可能楽音発生チャネル数PACNを割当て可能楽音発生チ
ャネル数GACNとする。 〔D12〕 タスクロックを解除してステップD2に戻
る。なお、タスクロック中に発生した割込みはタスクロ
ック解除後に実行される。
【0053】処理対象の選択ルーチン プリアサイナタスクにおけるステップD5の処理対象の
選択ルーチンは、所定押鍵順位までの楽音発生チャネル
について新たな楽音の割当ての可否を調べ、新たな楽音
の割当ての可能な楽音発生チャネルの楽音発生チャネル
番号を順次第Nプリアサイン順位楽音発生チャネル番号
PASS[N] に設定する。 〔D501〕 プリアサイン順位Nおよび選択対象押鍵
順位PSTNを“0”に設定する。 〔D502〕 楽音発生チャネル管理マップにおける選
択対象押鍵順位PSTNに対応する押鍵順位の楽音発生チャ
ネルのトランケート禁止フラグおよび急速減衰中フラグ
が共に“0”であるか否かを判断する。共に“0”であ
る場合には次のステップD503に進み、いずれかが
“0”でない場合にはステップD504に進む。 〔D503〕 まず、楽音発生チャネル管理マップにお
ける選択対象押鍵順位PSTNに対応する押鍵順位の楽音発
生チャネルの楽音発生チャネル番号を楽音発生チャネル
番号GNおよび第Nプリアサイン順位楽音発生チャネル番
号PASS[N] とし、発音量をプリアサイナ発音発音量PLEV
[GN]とする。次にプリアサイン順位Nを“1”だけイン
クリメントしてステップD504に進む。 〔D504〕 選択対象押鍵順位PSTNが所定押鍵順位で
ある“7”未満であるか否かを判断する。“7”未満で
ある場合にはステップD505に進む。“7”未満でな
い場合にはこのルーチンを終了してステップD6に進
む。 〔D505〕 選択対象押鍵順位PSTNを“1”だけイン
クリメントしてステップD502に戻る。
【0054】エンベロープタスク(図16) 当該タスクに対するタイマイベントが発生すると実行を
開始し、各エンベロープチャネルのエンベロープレベル
および発音量を順次に更新するとともに、ノートステー
タス、ソステヌートステータス、ダンパー値およびエン
ベロープ生成パラメータにもとづいて新たな目標値およ
びレートを演算し、楽音発生回路30の楽音発生チャネ
ルへの転送を行うタスクである。各ステップE1〜E1
4においての処理は、次の通りである。 〔E1〕 当該タスクで占有する変数などを初期値に設
定する。また、第5タスクタイマカウンタ値TCNE[5] を
“4”に、第5タスク時間間隔TCND[5] を“4”に設定
する。さらに、タスク管理マップにおけるタスク番号
“5:エンベロープタスク”のタイマ処理要求フラグを
“1:要求有り”に設定する。 〔E2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。なお、エンベロープタ
スクタイマイベントが発生すると、次のステップE3に
進む。 〔E3〕 タスク管理マップにおけるタスク番号“5:
エンベロープタスク”の待ちイベント値と第1イベント
発生フラグとを“0”に設定するとともに、エンベロー
プ処理対象番号ECTNを“0”に設定する。 〔E4〕 タスクロックをかける。 〔E5〕 エンベロープ管理マップにおけるエンベロー
プ処理対象番号ECTNに対応するエンベロープチャネル番
号の目標値が“0”であり、かつそのエンベロープレベ
ルが“0”であるか否かを判断する。この目標値が
“0”でかつエンベロープレベルが“0”である場合に
は発音を終了しているためにステップE14に進み、い
ずれかが“0”でない場合にはステップE6に進む。 〔E6〕 楽音発生チャネル管理マップにおけるエンベ
ロープ処理対象番号ECTNに対応する楽音発生チャネル番
号の急速減衰中フラグが“1:急速減衰中”であるか否
かを判断する。この急速減衰中フラグが“1”でない場
合には次のステップE7に進み、“1”である場合には
当該タスクによるエンベロープ処理は不要なために、ス
テップE14に進む。
【0055】〔E7〕 エンベロープ管理マップにおけ
るエンベロープ処理対象番号ECTNに対応するエンベロー
プチャネル番号のエンベロープレベルとレートとを加算
して新たなエンベロープレベルとし、フェーズ番号を
“1”だけインクリメントするとともに、楽音発生チャ
ネル管理マップにおけるエンベロープ処理対象番号ECTN
に対応する楽音発生チャネル番号のノート番号を読み出
してエンベロープ処理対象ノート番号ENNMとする。 〔E8〕 ノートマップにおけるエンベロープ処理対象
ノート番号ENNMに対応するノート番号のノートステータ
スが“1:押鍵”であるか否かを判断する。このノート
ステータスが“1”でない場合には次のステップE9
に、“1”である場合にはステップE11に進む。 〔E9〕 ノートマップにおけるエンベロープ処理対象
ノート番号ENNMに対応するノート番号のソステヌートス
テータスが“1:ソステヌートオン”であるか否かを判
断する。このソステヌートステータスが“1”である場
合にはステップE11に進む。 〔E10〕 ステップE9の判断においてソステヌート
ステータスが“1”でない場合には、既に離鍵していて
かつ後述するペダルタスクのステップF4において説明
するようにソステヌートペダルが踏み下げられていない
かまたはソステヌートペダルが踏み下げられていても踏
み下げ時にすでに離鍵していたために、離鍵に対応する
エンベロープ処理を行う。言い換えれば、エンベロープ
管理マップにおけるエンベロープ処理対象番号ECTNに対
応するエンベロープチャネル番号の目標値およびレート
などをダンパー値DMPVおよびエンベロープ生成パラメー
タなどにもとづき演算して更新するとともに、目標値お
よびレートを楽音発生回路30の対応する楽音発生チャ
ネルに転送する。また、処理を終了するとステップE1
2に進む。
【0056】〔E11〕 ステップE8の判断におい
てノートステータスが“1:押鍵”であるか、またはス
テップE9の判断においてソステヌートステータスが
“1:ソステヌートオン”である場合には、いまだ押鍵
中であるか、または離鍵していてもソステヌートペダル
が踏み下げられていてかつ踏み下げ時に押鍵中であった
ために、押鍵中に対応するエンベロープ処理を行う。言
い換えれば、エンベロープ管理マップにおけるエンベロ
ープ処理対象番号ECTNに対応するエンベロープチャネル
番号の目標値およびレートなどを最大値としたダンパー
値およびエンベロープ生成パラメータなどにもとづき演
算して更新するとともに、目標値およびレートを楽音発
生回路30の対応する楽音発生チャネルに転送する。 〔E12〕 エンベロープ管理マップにおけるエンベロ
ープ処理対象番号ECTNに対応するエンベロープチャネル
番号のフェーズ番号が、トランケート禁止フェーズ番号
を超えているか否かを判断する。このフェーズ番号がト
ランケート禁止フェーズ番号を超えていない場合には、
ステップE14に進み、発音量を更新しない。また、こ
のフェーズ番号がトランケート禁止フェーズ番号を超え
ている場合にはステップE13に進んで発音量を更新す
る。 〔E13〕 楽音発生チャネル管理マップにおけるエン
ベロープ処理対象番号ECTNに対応する楽音発生チャネル
番号の発音量をエンベロープレベルの上位15ビットに
更新するとともに、楽音発生チャネル管理マップにおけ
るエンベロープ処理対象番号ECTNに対応する楽音発生チ
ャネル番号のトランケート禁止フラグを“0”に設定す
る。 〔E14〕 タスクロックを解除する。 〔E15〕 エンベロープ処理対象番号ECTNが“15”
未満であるか否かを判断する。このエンベロープ処理対
象番号ECTNが“15”未満でない場合には、ステップE
2に戻る。 〔E16〕 エンベロープ処理対象番号ECTNを“1”だ
けインクリメントしてステップE4に戻る。なお、前述
したように、急速減衰中およびタイマイベント間のエン
ベロープレベルの細かな推移に関する処理は、楽音発生
チャネルにおいて処理を行う。
【0057】ペダルタスク 当該タスクに対するタイマイベントが発生すると実行を
開始して、ダンパーペダル、ソステヌートペダルなどの
ペダルの設定状態を検出するタスクである。なお、公知
技術であるために要点のみを説明する。各ステップF1
〜F4においての処理は、次の通りである。 〔F1〕 まず、新たなペダルの設定状態をペダル毎に
記憶する新ペダルマップと、前回のペダルの設定状態を
ペダル毎に記憶する旧ペダルマップと、当該タスクで占
有する変数などとを初期値に設定する。次に、第6タス
クタイマカウンタ値TCNE[6] を“11”に、第6タスク
時間間隔TCND[6] を“9”に設定する。さらに、タスク
管理マップにおけるタスク番号“6:ペダルタスク”の
タイマ処理要求フラグを“1”に設定する。 〔F2〕 要求元イベント値NSETを“1”に設定して、
イベント待ちモニタコールを行う。なお、ペダルタスク
タイマイベントが発生すると、次のステップF3に進
む。 〔F3〕 タスク管理マップにおけるタスク番号“6:
ペダルタスク”の待ちイベント値と第1イベント発生フ
ラグとを“0”に設定する。 〔F4〕 公知技術にもとづいて各ペダルを所定順次に
走査して設定状態を読み込み、設定状態に変化があった
か否かを判断して変化があれば対応する処理を行う。例
えば、ダンパーペダルの設定状態が変化していれば、新
たなダンパーの踏込み量をダンパー値DMPVとする。ま
た、ソステヌートペダルが踏み下げられると、ノートマ
ップにおける各ノート番号のソステヌートステータスを
対応するノートステータスと同じになるように更新す
る。さらに、ソステヌートペダルが戻されると、ノート
マップにおける各ノート番号のソステヌートステータス
を“0”に設定する。なお、変化がない場合、または対
応する処理を終了した場合にはステップF2に戻る。
【0058】操作子タスク(図17) 当該タスクに対するタイマイベントが発生すると実行を
開始して、音色の選択あるいは音色に関するパラメータ
の設定などを行う操作子群23の設定状態を検出するタ
スクである。なお、公知技術であるために要点のみを説
明する。各ステップG1〜G4においての処理は、次の
通りである。 〔G1〕 まず、新たな操作子の設定状態を操作子毎に
記憶する新操作子マップと、前回の操作子の設定状態を
操作子毎に記憶する旧操作子マップと、操作子の操作に
対応して設定される各種パラメータと、この操作子タス
クで占有する変数などとを初期値に設定する。次に、第
7タスクタイマカウンタ値TCNE[7] を“12”に、第7
タスク時間間隔TCND[7] を“9”に設定する。さらに、
タスク管理マップにおけるタスク番号“7:操作子タス
ク”のタイマ処理要求フラグを“1”に設定する。 〔G2〕 要求元イベント値NSETを“1”に設定すると
ともに、初期設定完了フラグを“1”に設定してイベン
ト待ちモニタコールを行う。なお、操作子タスクタイマ
イベントが発生すると、次のステップG3に進む。 〔G3〕 タスク管理マップにおけるタスク番号“7:
操作子タスク”の待ちイベント値と第1イベント発生フ
ラグとを“0”に設定する。 〔G4〕 公知技術にもとづいて各操作子を所定順次に
走査して設定状態を読み込み、設定状態に変化があった
か否かを判断して変化があれば対応する処理を行う。例
えば、音色番号を変更した場合には音色パラメータ群を
変更する。なお、変化がない場合、または対応する処理
を終了した場合にはステップG2に戻る。
【0059】次に、以上に説明した本実施例装置のマル
チタスキング等についての動作を説明する。 (1) 初期設定 電源を投入すると、モニタプログラムのリセットルーチ
ンZAによる処理後に(ステップZA1〜ZA3)、キ
ーデータ受信タスク(ルーチンA)、メインアサイナタ
スク(ルーチンB)、発音タスク(ルーチンC)、プリ
アサイナタスク(ルーチンD)、エンベロープタスク
(ルーチンE)、ペダルタスク(ルーチンF)および操
作子タスク(ルーチンG)の初期設定処理がタスク優先
順位にしたがって順次に行われる(ステップA1,A
2、ステップB1,B2、ステップC1,C2、ステッ
プD1,D2、ステップE1,E2、ステップF1,F
2、ステップG1,G2)。 (2) 受信キーデータによる発音処理 鍵盤の鍵を操作し鍵操作検出回路から割込みがかかる
と、モニタプログラムのキーデータ受信割込み処理ルー
チンZEが開始される。 (2の1) キーデータ受信割込み処理ルーチンZEに
おいては、キーデータ受信イベント待ちの状態にあるた
めに(ステップZE1,ZE3)、タスク管理マップに
おけるタスク番号“1:キーデータ受信タスク”のステ
ータスを“0:ラン”に設定する(ステップZE5)。
次に、キーデータ受信タスクを実行して(ステップA2
〜A7)、キーデータを鍵操作検出回路から読み込み、
このキーデータにもとづいてノートマップを更新すると
ともに、ノートオンであればイベント発生モニタコール
を行う(ステップA7)。 (2の2) モニタプログラムのイベント発生モニタコ
ールルーチンZCにおいて、タスク管理マップにおける
タスク番号“2:メインアサイナタスク”の第1イベン
ト発生フラグを“1”に設定するとともに(ステップZ
C1)、ステータスを“1:レディ”に設定する(ステ
ップZC2,ZC3)。なお、キーデータ受信タスクは
タスク優先順位がメインアサイナタスクのタスク優先順
位より高いために、キーデータ受信タスクを再び開始し
て(ステップZC4)、このキーデータ受信タスクにお
いてイベント待ちモニタコールを行う(ステップA
2)。
【0060】(2の3) モニタプログラムのイベント
待ちモニタコールルーチンZBにおいて、キーデータ受
信イベントが発生しているか否かを調べる(ステップZ
B1)。この調べた結果、次のキーデータ受信イベント
がまだ発生していないために、タスク管理マップにおけ
るタスク番号“1:キーデータ受信タスク”のステータ
スを“2:ウェイト”に設定して(ステップZB2)、
タスク管理マップを調べる(ステップZB3)。このタ
スク管理マップを調べた結果、ステータスが“1:レデ
ィ”である最優先タスクのタスク番号 が“2:メイン
アサイナタスク”であるために、このタスク番号“2:
メインアサイナタスク”のステータスを“0:ラン”に
設定して(ステップZB4)、メインアサイナタスクを
実行させる(ステップZB5)。このメインアサイナタ
スクにおいては、ノート番号NTNMなどを楽音発生チャネ
ル管理マップに書き込む(ステップB2〜B5)。次
に、イベント発生モニタコールを行う(ステップB
6)。 (2の4) モニタプログラムのイベント発生モニタコ
ールルーチンZCにおいて、タスク管理マップにおける
タスク番号“3:発音タスク”の第2イベント発生フラ
グを“1”に設定するとともに、ステータスを“1:レ
ディ”に設定する。なお、メインアサイナタスクのタス
ク優先順位が発音タスクのタスク優先順位より高いため
に、メインアサイナタスクを再び開始して、このメイン
アサイナタスクにおいて対象アサイン順位を“1”だけ
インクリメントして次のアサイン順位に更新し(ステッ
プB7)、イベント待ちモニタコールを行う(ステップ
B2)。
【0061】(2の5) モニタプログラムのイベント
待ちモニタコールルーチンZBにおいてアサイン要求イ
ベントが発生しているか否かを調べる。この調べた結
果、次のアサイン要求イベントがまだ発生していないた
めに、タスク管理マップにおけるタスク番号“2:メイ
ンアサイナタスク”のステータスを“2:ウェイト”に
設定してタスク管理マップを調べる。このタスク管理マ
ップを調べた結果、ステータスが“1:レディ”である
最優先タスクのタスク番号が“3:発音タスク”である
ために、タスク番号“3:発音タスク”のステータスを
“0:ラン”に設定して、発音タスクを実行させる。こ
の発音タスクにおいては、楽音発生チャネル管理マップ
に書き込まれたノート番号NTNMなどにもとづき楽音発生
に関する各種パラメータを演算して設定し、発音の開始
を指示する(ステップC2〜C27)。次に、イベント
待ちモニタコールを行う(ステップC2)。 (2の6) モニタプログラムのイベント待ちモニタコ
ールルーチンZBにおいて発音要求イベントが発生して
いるか否かを調べる。この調べた結果、次の発音要求イ
ベントがまだ発生していないために、タスク管理マップ
におけるタスク番号“3:発音タスク”のステータスを
“2:ウェイト”に設定してタスク管理マップを調べ
る。このタスク管理マップを調べた結果、全てのタスク
番号のステータスが“2:ウェイト”である場合にはス
リープする。
【0062】(3) プリアサイナタスク(ルーチン
D)は対応するタイマイベントが発生すると、楽音発生
チャネル管理マップの発音量にもとづいてアサイン順位
を更新する(ステップD2〜D12)。次に、イベント
待ちモニタコールを行う(ステップD2)。 (4) エンベロープタスク(ルーチンE)は対応する
タイマイベントが発生すると、ノートステータス、ペダ
ルのデータ、楽音発生チャネル管理マップおよびエンベ
ロープ管理マップにもとづいて楽音発生チャネル管理マ
ップの発音量およびエンベロープ管理マップのエンベロ
ープレベルなどを更新などする(ステップE2〜E1
6)。次に、イベント待ちモニタコールを行う(ステッ
プE2)。
【0063】以上に説明したように本実施例において
は、アサイン順位を所定押鍵順位までの楽音発生チャネ
ルについて発音量にもとづいて設定している。なお、本
実施例においては発音量をエンベロープレベルによった
が、エンベロープレベルに適当な重み付け処理をした
り、楽音発生チャネルから発生している楽音のエンベロ
ープレベルによったり、疑似エンベロープレベル、特開
平1−169496号公報などで提案した残存発音量、
あるいは発音継続時間(発音を終了するまでの時間)な
どによっても良い。上記の実施例においてはプリアサイ
ナタスクの処理対象の選択ルーチンで、所定の条件を満
たしている楽音発生チャネルを選択し、選択した楽音発
生チャネルについて発音量の比較を行なったが、割当て
が古い順に所定数の楽音発生チャネルを選択しても良
い。あるいは、割当てが古い順に新たな楽音の割当てが
可能な楽音発生チャネルを所定数選択しても良い。また
楽音発生チャネルを押鍵順に選択したが、まず離鍵済み
の楽音発生チャネルから、次に押鍵中の楽音発生チャネ
ルから選択するようにしても良い。なお離鍵済みの楽音
発生チャネルからの選択に際し、まず発音終了済みの楽
音発生チャネルから、次に離鍵済みの楽音発生チャネル
から選択するようにしても良い。さらに離鍵済みの楽音
発生チャネルからの選択に際し、まずペダルオフ、次に
ペダルオンの楽音発生チャネルから、あるいは、まずペ
ダルオフ、次にダンパーペダルオン、さらにソステヌー
トペダルオンの楽音発生チャネルから選択するようにし
ても良い。また離鍵済みの楽音発生チャネルについては
離鍵順に選択するようにしても良い。
【0064】また、発音量が所定レベル以下の楽音発生
チャネルのアサイン順位を、押鍵順、楽音発生チャネル
番号順、所定レベル以下になった順などに設定するよう
にして発音量に基づくアサイン順位の設定処理を簡略化
してもよい。またエンベロープタスクにおける発音量の
更新処理対象も前記のようにして選択した楽音発生チャ
ネルについてのみ行なうようにしても良い。また、トラ
ンケート禁止フェーズ番号をアタックを終了するフェー
ズ番号としたが、発音開始直後の演奏表現に大きな影響
を与える期間がさらに長い場合などする場合にはその期
間に応じて変更しても良い。例えば、ディケイ期間を含
める。また、マルチティンバ電子楽器に適用しても良
い。例えば特開昭64-19393号公報に示されているリザー
ブ数による処理に準じた処理に適用する場合においてパ
ート内のアサイン順位を発音量にもとづいて設定する場
合には、押鍵の新しい順にリザーブ数までの楽音発生チ
ャネルをリザーブ対象の楽音発生チャネルとし、それよ
り押鍵の古い楽音発生チャネルをリザーブ対象外とし、
リザーブ対象外の楽音発生チャネルについては発音量に
もとづいてアサイン順位を設定する。あるいはリザーブ
対象として、まず急速減衰中の楽音発生チャネルを選定
し、次にアタック中の楽音発生チャネルを選定する。選
定した楽音チャネル数がリザーブ数に満たない場合には
不足する数の楽音発生チャネルを押鍵の新しい順に選定
し、リザーブ数を超える場合には超えた数の楽音発生チ
ャネルについてはリザーブ対象から除外しても良いし、
リザーブ対象としても良い。
【0065】本実施例では、マルチタスク処理による例
を示したが、シングルタスク処理により実施しても良
い。またアサイン順位を予め設定し、設定したアサイン
順位に従って選定するプリアサイン処理によったが、ノ
ートオン情報を受信するつど新たな楽音を割り当てる楽
音発生チャネルを選定する一般的な処理によっても良
い。本発明は、鍵盤部を有する電子楽器に加えて、鍵盤
部を有しない他の電子楽器、例えば自動演奏装置などよ
り受信する演奏情報にもとづいて楽音を発生するいわゆ
る楽音発生装置、あるいは自動リズムなどにも適用でき
る。
【0066】
【発明の効果】以上に説明したように、本発明によれ
ば、電子楽器の種々の機能を犠牲にしたりコストアップ
を招いたりすることなく、電子楽器のアサイナにレベル
アサイン方式を使用できるようになる。またかかるレベ
ルアサイン方式を使用したアサイナにおいて、押鍵等か
ら発音開始までの遅延に起因して演奏表現上の違和感が
生じるといったことを防止できる。
【図面の簡単な説明】
【図1】本発明の一実施例としてのアサイナが適用され
る電子楽器の全体構成図である。
【図2】ノートマップを示す図である。
【図3】エンベロープ管理マップを示す図である。
【図4】タスク管理マップを示す図である。
【図5】楽音発生チャネル管理マップを示す図である。
【図6】リセットルーチンを示す流れ図である。
【図7】イベント待ちモニタコールルーチンを示す流れ
図である。
【図8】イベント発生モニタコールルーチンを示す流れ
図である。
【図9】タイマ割込み処理ルーチンを示す流れ図であ
る。
【図10】キーデータ受信割込み処理ルーチンを示す流
れ図である。
【図11】キーデータ受信タスクを示す流れ図である。
【図12】メインアサイナタスクを示す流れ図である。
【図13】発音タスクを示す流れ図である。
【図14】発音タスクを示す流れ図である。
【図15】プリアサイナタスクを示す流れ図である。
【図16】エンベロープタスクを示す流れ図である。
【図17】操作子タスクを示す流れ図である。
【符号の説明】
20 鍵盤部 21 バス 22 中央処理装置(CPU) 23 操作子群 24 ペダル群 25 ROM(読出し専用メモリ) 26 RAM(ランダムアクセスメモリ) 27 楽音発生回路 28 操作子検出回路 29 ペダル検出回路 30楽音発生回路
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成3年11月5日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0035
【補正方法】変更
【補正内容】
【0035】プリアサイナタスク(図15)は、タイマ
により定期的に起動されて、処理対象の選択ルーチンに
従って処理対象として選択する楽音発生チャネル(選択
対象楽音発生チャネル)を選択し、楽音発生チャネル管
理マップからこれら選択対象楽音発生チャネルの発音量
を読み込んでこれをプリアサイナ発音量とし、これらの
プリアサイナ発音量の小なる順に選択対象楽音発生チャ
ネルにプリアサイン順位を設定する。上記の処理対象の
選択ルーチンでは、原則として押鍵順位の古い順に所定
数の楽音発生チャネルを選択する。この際、トランケー
ト禁止状態(例えばアタック中)にある楽音発生チャネ
ルや急速減衰中の楽音発生チャネルは選択対象から除外
する。楽音発生チャネル管理マップの発音量はエンベロ
ープタスクによって逐次に更新される。エンベロープタ
スク(図16)では、楽音発生チャネルが発音終了をし
ているか否かを調べ、発音終了していないものについて
は、原則として、その楽音発生チャネルの押鍵状態(ノ
ートステータス)やペダル状態を考慮しつつ発音量の更
新を行う。以下、各フローチャートについて詳細に説明
する。まずモニタプログラムについて図6〜図10に示
されるフローチャートを参照して説明する。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0036
【補正方法】変更
【補正内容】
【0036】リセットルーチン(図6) 電源の投入時などにおいてリセットがかかると実行され
るルーチンである。各ステップZA1〜ZA3において
の処理は、次の通りである。 〔ZA1〕 タスク管理マップにおける全てのタスク番
号のステータスを“1:レディ”に設定し、またタイマ
処理要求フラグ、待ちイベント値およびイベント発生フ
ラグを“0”に設定する。さらに、初期設定完了フラグ
IEDFを“0:初期設定未完了”に設定するなどの初期設
定を行う。 〔ZA2〕 要求元タスク番号NSTKを“1:キーデータ
受信タスク”に更新するとともに、タスク管理マップに
おけるタスク番号“1:キーデータ受信タスク”のステ
ータスを“0:ラン”に設定する。 〔ZA3〕 キーデータ受信タスクを実行する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0044
【補正方法】変更
【補正内容】
【0044】キーデータ受信タスク(図11) キーデータ受信イベントが発生すると、鍵操作検出回路
からキーデータを読み込み、アサイン要求イベントを発
生するタスクである。各ステップA1〜A7においての
処理は、次の通りである。 〔A1〕 ノートマップをクリヤするとともに、当該キ
ーデータ受信タスクで占有する変数などを初期値に設定
する。 〔A2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。キーデータ受信イベン
トが発生すると、次のステップA3に進む。 〔A3〕 タスク管理マップにおけるタスク番号“1:
キーデータ受信タスク”の第1イベント発生フラグ
“0”に、待ちイベント値を“0”に設定する。 〔A4〕 鍵操作検出回路からキーデータを読み込み、
このキーデータのノート番号、ノートステータスおよび
ノートベロシティを各対応するところのノート番号NTN
M、ノートステータスNTSTおよびベロシティNTVLとす
る。 〔A5〕 ノートステータスNTSTが“1:押鍵”である
か否かを判断する。このノートステータスNTSTが“1”
でない場合には次のステップA6に進み、“1”である
場合にはステップA7に進む。 〔A6〕 離鍵処理 まず、ノートマップにおけるノート番号NTNMに対応する
ノート番号のノートステータスを“0”に設定する。次
に楽音発生チャネル管理マップのノート番号がノート番
号NTNMでかつノートステータスが“1”である楽音発生
チャネル番号を押鍵順位の小なる順に探し、押鍵順位の
最も小なるその楽音発生チャネル番号のノートステータ
スを“0”に設定する。そして、ステップA2に戻る。 〔A7〕 押鍵処理 まず、ノートマップにおけるノート番号NTNMに対応する
ノート番号のノートステータスを“1”に設定する。次
に、アサイン要求イベントを発生する。言い換えれば、
要求先タスク番号NDTKを“2:メインアサイナタスク”
に、要求先イベント値NDETを“1”に設定してイベント
発生モニタコールを行う。そして、ステップA2に戻
る。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0045
【補正方法】変更
【補正内容】
【0045】メインアサイナタスク(図12) アサイン要求イベントが発生すると、後述するプリアサ
イナタスクで設定するアサイン順位にもとづいて、楽音
発生チャネル管理マップの所定の領域にノート番号NTNM
などを書き込み、発音要求イベントを発生するタスクで
ある。各ステップB1〜B7においての処理は、次の通
りである。 〔B1〕 楽音発生チャネル管理マップを初期設定する
とともに、このメインアサイナタスクで占有する変数な
どを初期値に設定する。なお楽音発生チャネル管理マッ
プにおける各楽音発生チャネル番号の押鍵順位をその楽
音発生チャネル番号に設定する。また、第Nアサイン順
位楽音発生チャネル番号MASS[N] (Nは0,1,〜15)を各
対応する“N( =0,1,〜15) ”に設定する。また、対象
アサイン順位TASNを“0”に、割当て可能楽音発生チャ
ネル数GACNを最大数の“16”に設定する。 〔B2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。なお、アサイン要求イ
ベントが発生すると、次のステップB3に進む。 〔B3〕 タスク管理マップにおけるタスク番号“2:
メインアサインタスク”の待ちイベント値を“0”に、
第1イベント発生フラグを“0”に設定する。 〔B4〕 対象アサイン順位TASNが割当て可能楽音発生
チャネル数GACN未満であるか否かを判断する。この対象
アサイン順位TASNが割当て可能楽音発生チャネル数GACN
未満でない場合には、割当てるべき楽音発生チャネルが
最早やないためにステップB2に戻る。 〔B5〕 ステップB4における判断において対象アサ
イン順位TASNが割当て可能楽音発生チャネル数GACN未満
である場合、楽音発生チャネル管理マップにおけるアサ
イン順位TASNの楽音発生チャネル番号MASS[TASN]に対応
する楽音発生チャネル番号の処理待ちフラグ1、処理待
ちフラグ2および処理待ちフラグ3を“1:処理待ち
中”に、ノート番号をノート番号NTNMに、ノートステー
タスを“1”に、べロシティをベロシティNTVLに設定す
る。またメインアサイナ処理中フラグMAEFを“1:メイ
ンアサイナ処理中”に設定する。 〔B6〕 発音要求イベントを発生する。言い換えれ
ば、要求先タスク番号NDTKを“3:発音タスク”に、要
求先イベント値NDETを“2”に設定してイベント発生モ
ニタコールを行う。 〔B7〕 対象アサイン順位TASNを“1”だけインクリ
メントしてステップB2に戻る。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0046
【補正方法】変更
【補正内容】
【0046】発音タスク(図13、図14) 発音要求イベントが発生すると新たな楽音を発生する楽
音発生チャネルにおいて前の発音が終了していない場合
には急速減衰の開始を指示し(第1処理)、またノート
番号NTNMなどにもとづいて楽音発生に関するパラメータ
を演算して設定し(第2処理)、さらに発音が終了して
いた、または終了した場合には楽音発生チャネルに新た
な発音を指示する(第3処理)タスクである。各ステッ
プC1〜C27においての処理は、次の通りである。 〔C1〕 当該タスクで占有する変数などを初期値に設
定するとともに、急速減衰を終了した楽音発生チャネル
番号を記憶する急速減衰終了FIFOをクリヤするなど
するとともに、楽音発生回路30を初期化する。また、
第3タスクタイマカウンタ値TCNE[3] と、第3タスク時
間間隔TCND[3] とを“0”に設定するとともに、タスク
管理マップにおけるタスク番号“3:発音タスク”のタ
イマ処理要求フラグを“1:要求有り”に設定する。 〔C2〕 要求元イベント値NSETを“2”に設定してイ
ベント待ちモニタコールを行う。なお、発音要求イベン
トが発生すると、次のステップC3に進む。 〔C3〕 まず、タスク管理マップにおけるタスク番号
“3:発音タスク”の待ちイベント値を“0”に、第2
イベント発生フラグを“0”に設定して、次に発音処理
対象楽音発生チャネル番号GCTNを“0”に設定する。 〔C4〕 楽音発生チャネル管理マップにおける発音処
理対象楽音発生チャネル番号GCTNに対応する楽音発生チ
ャネル番号の処理待ちフラグ1が“1:処理待ち中”で
あるか否かを判断する。この処理待ちフラグ1が“1”
である場合には次のステップC5に進み、“1”でなく
て第1処理(ステップC5〜C7)が不要である場合に
はステップC8に進む。 〔C5〕 エンベロープ管理マップにおける発音処理対
象楽音発生チャネル番号GCTNに対応するエンベロープチ
ャネル番号のエンベロープレベルが“0”であるか否か
を判断する。このエンベロープレベルが“0”でない場
合には次のステップC6に進み、“0”で急速減衰処理
が不要である場合にはステップC7に進む。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0047
【補正方法】変更
【補正内容】
【0047】〔C6〕 楽音発生チャネル管理マップに
おける発音処理対象楽音発生チャネル番号GCTNに対応す
る楽音発生チャネル番号の急速減衰中フラグを“1:急
速減衰中”に、発音量を急速減衰中を示す“FFFF
H" に設定するとともに、対応する楽音発生チャネルに
急速減衰を指示する。なお、急速減衰の指示に際しては
目標値を“0”に、レートを急速減衰用のレートに設定
して対応する楽音発生チャネルに転送する。 〔C7〕 楽音発生チャネル管理マップにおける発音処
理対象楽音発生チャネル番号GCTNに対応する楽音発生チ
ャネル番号の処理待ちフラグ1を0”に設定する。 〔C8〕 発音処理対象楽音発生チャネル番号GCTNが
“15”未満であるか否かを判断する。この楽音処理対
象楽音発生チャネル番号GCTNが“15”未満である場合
には次のステップC9に進み、“15”未満でなくて全
ての楽音発生チャネルについて第1処理を終えている場
合にはステップC10に進む。 〔C9〕 発音処理対象楽音発生チャネル番号GCTNを
“1”だけインクリメントし、次の楽音発生チャネルの
処理の準備を行ってステップC4に戻る。 〔C10〕 発音処理対象楽音発生チャネル番号GCTNを
“0”に設定する。 〔C11〕 楽音発生チャネル管理マップにおける発音
処理対象楽音発生チャネル番号GCTNに対応する楽音発生
チャネル番号の処理待ちフラグ2が“1:処理待ち中”
であるか否かを判断する。この処理待ちフラグ2が
“1”である場合には次のステップC12に進み、
“1”でなくて第2処理(ステップC12)が不要であ
る場合にはステップC13に進む。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0048
【補正方法】変更
【補正内容】
【0048】〔C12〕 発音処理対象楽音発生チャネ
ル番号GCTNに対応する楽音発生チャネルの、楽音の発生
と楽音のエンベロープ生成とに関する各種パラメータの
値を、楽音発生チャネル管理マップにおける発音処理対
象楽音発生チャネル番号GCTNに対応する楽音発生チャネ
ル番号のノート番号、ベロシティおよび後述する操作子
データ受信タスクのステップG4において設定される音
色パラメータ群より演算して、これら演算された各種パ
ラメータの値を、楽音発生チャネル管理マップにおける
発音処理対象楽音発生チャネル番号GCTNに対応する楽音
発生チャネル番号の楽音発生パラメータ群およびエンベ
ロープ管理マップにおける発音処理対象楽音発生チャネ
ル番号GCTNに対応するエンベロープチャネル番号のエン
ベロープ生成パラメータ群の対応するパラメータに設定
する。同時に、処理待ちフラグ2を0”に設定する。
また、楽音発生チャネル管理マップにおける発音処理対
象楽音発生チャネル番号GCTNに対応する楽音発生チャネ
ル番号の押鍵順位以上の押鍵順位を次のように更新す
る。発音処理対象楽音発生チャネル番号GCTNに対応する
楽音発生チャネル番号の押鍵順位より大きな押鍵順位を
“1”だけデクリメントするとともに、発音処理対象楽
音発生チャネル番号GCTNに対応する楽音発生チャネル番
号の押鍵順位を“15”に設定する。例えば、押鍵順位
が“5”の楽音発生チャネルに新たな楽音を割り当てる
と、押鍵順位が“6”〜“15”の楽音発生チャネルの
押鍵順位は“5”〜“14”に設定され、新たな楽音が
割り当てられた楽音発生チャネルの押鍵順位は“15”
に設定される。 〔C13〕 発音処理対象楽音発生チャネル番号GCTNが
“15”未満であるか否かを判断する。この発音処理対
象楽音発生チャネル番号GCTNが“15”未満である場合
には次のステップC14に進み、“15”未満でない場
合にはステップC15に進む。 〔C14〕 発音処理対象楽音発生チャネル番号GCTNを
“1”だけインクリメントしてステップC11に戻る。 〔C15〕 急速減衰未了フラグTDNFを“0”に、発音
処理対象楽音発生チャネル番号GCTNを“0”に設定す
る。 〔C16〕 楽音発生チャネル管理マップにおける発音
処理対象楽音発生チャネル番号GCTNに対応する楽音発生
チャネル番号の処理待ちフラグ3が“1:処理待ち中”
であるか否かを判断する。この処理待ちフラグ3が
“1”である場合には次のステップC17に進み、
“1”でなくて第3処理(ステップC17,C18,C
21)が不要である場合にはステップC19に進む。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0050
【補正方法】変更
【補正内容】
【0050】〔C22〕 急速減衰未了フラグTDNFが
“1:未了”であるか否かを判断する。この急速減衰未
了フラグTDNFが“1”である場合には次のステップC2
3に進み、“1”でなく全ての発音処理が終了している
場合にはステップC2に戻る。 〔C23〕 要求元イベント値NSETを“3”に設定して
イベント待ちモニタコールを行う。なお、発音要求イベ
ントまたは発音タスクに対するタイマイベントのいずれ
かが発生すると、次のステップC24に進む。 〔C24〕 タスク管理マップにおけるタスク番号
“3:発音タスク”の第2イベント発生フラグが“1”
であるか否かを判断する。この第2イベント発生フラグ
が“1”でない場合には次のステップC25に進み、
“1”である場合には発音要求イベントの発生であるた
めに、ステップC3に戻る。 〔C25〕 タスク管理マップにおけるタスク番号
“3:発音タスク”の第1イベント発生フラグが“1”
であるタイマイベントの発生であるために、タスク管理
マップにおけるタスク番号“3:発音タスク”の待ちイ
ベント値を“0”に、第1イベント発生フラグを“0”
に設定する。 〔C26〕 楽音発生回路30に設けられている急速減
衰終了FIFOが“空”であるか否か判断する。この急
速減衰終了FIFOが“空”である場合にはステップC
23に戻り、“空”でない場合には次のステップC27
に進む。 〔C27〕 急速減衰終了FIFOから急速減衰処理に
よりエンベロープレベルが“0”になった楽音発生チャ
ネルの楽音発生チャネル番号を順次に降ろし、この降ろ
した楽音発生チャネル番号に対応する楽音発生チャネル
管理マップにおける楽音発生チャネル番号の急速減衰中
フラグを“0”に設定する。そして、ステップC15に
戻る。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0051
【補正方法】変更
【補正内容】
【0051】プリアサイナタスク(図15) プリアサイナタスクに対応するタイマイベントが発生す
ると実行を開始し、発音量にもとづいてアサイン順位を
更新するタスクである。各ステップD1〜D12におい
ての処理は、次の通りである。 〔D1〕 エンベロープ管理マップをクリヤするととも
に、このプリアサイナタスクで占有する変数などを初期
値に設定する。また、第4タスクタイマカウンタ値TCNE
[4] を“5”に、第4タスク時間間隔TCND[4] を“4”
に設定する。さらに、タスク管理マップにおけるタスク
番号“4:プリアサイナタスク”のタイマ処理要求フラ
グを“1:要求有り”に設定する。 〔D2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。なお、プリアサイナタ
スクに対するタイマイベントが発生すると、次のステッ
プD3に進む。 〔D3〕 タスク管理マップにおけるタスク番号“4:
プリアサイナタスク”の待ちイベント値を“0”に、第
1イベント発生フラグを“0”に設定する。 〔D4〕 メインアサイナ処理中フラグMAEFを“0”に
設定する。 〔D5〕 処理対象の選択ルーチンを実行する。この処
理対象の選択ルーチンの詳細は後に説明する。 〔D6〕 プリアサイン順位Nをプリアサイナ割当て可
能楽音発生チャネル数PACNとする。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0054
【補正方法】変更
【補正内容】
【0054】エンベロープタスク(図16) 当該タスクに対するタイマイベントが発生すると実行を
開始し、各エンベロープチャネルのエンベロープレベル
および発音量を順次に更新するとともに、ノートステー
タス、ソステヌートステータス、ダンパー値およびエン
ベロープ生成パラメータにもとづいて新たな目標値およ
びレートを演算し、楽音発生回路30の楽音発生チャネ
ルへの転送を行うタスクである。各ステップE1〜E1
4においての処理は、次の通りである。 〔E1〕 当該タスクで占有する変数などを初期値に設
定する。また、第5タスクタイマカウンタ値TCNE[5] を
“4”に、第5タスク時間間隔TCND[5] を“4”に設定
する。さらに、タスク管理マップにおけるタスク番号
“5:エンベロープタスク”のタイマ処理要求フラグを
“1:要求有り”に設定する。 〔E2〕 要求元イベント値NSETを“1”に設定してイ
ベント待ちモニタコールを行う。なお、エンベロープタ
スクタイマイベントが発生すると、次のステップE3に
進む。 〔E3〕 タスク管理マップにおけるタスク番号“5:
エンベロープタスク”の待ちイベント値を“0”に、第
1イベント発生フラグを“0”に設定するとともに、エ
ンベロープ処理対象番号ECTNを“0”に設定する。 〔E4〕 タスクロックをかける。〔E5〕 楽音発生チャネル管理マップにおけるエンベ
ロープ処理対象番号ECTNに対応する楽音発生チャネル番
号の急速減衰中フラグが“1:急速減衰中”であるか否
かを判断する。この急速減衰中フラグが“1”でない場
合には次のステップE6に進み、“1”である場合には
当該タスクによるエンベロープ処理は不要なために、ス
テップE14に進む。 〔E6〕 エンベロープ管理マップにおけるエンベロー
プ処理対象番号ECTNに対応するエンベロープチャネル番
号の目標値が“0”であり、かつそのエンベロープレベ
ルが“0”であるか否かを判断する。この目標値が
“0”でかつエンベロープレベルが“0”である場合に
は発音を終了しているために、楽音発生チャネル管理マ
ップにおけるエンベロープ処理対象番号ECTNに対応する
楽音発生チャネル番号の発音量を“0”に、トランケー
ト禁止フラグを“0”に設定し、ステップE14に進
み、いずれかが“0”でない場合には次のステップE7
に進む。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】0057
【補正方法】変更
【補正内容】
【0057】ペダルタスク 当該タスクに対するタイマイベントが発生すると実行を
開始して、ダンパーペダル、ソステヌートペダルなどの
ペダルの設定状態を検出するタスクである。なお、公知
技術であるために要点のみを説明する。各ステップF1
〜F4においての処理は、次の通りである。 〔F1〕 まず、新たなペダルの設定状態をペダル毎に
記憶する新ペダルマップと、前回のペダルの設定状態を
ペダル毎に記憶する旧ペダルマップと、当該タスクで占
有する変数などとを初期値に設定する。次に、第6タス
クタイマカウンタ値TCNE[6] を“11”に、第6タスク
時間間隔TCND[6] を“9”に設定する。さらに、タスク
管理マップにおけるタスク番号“6:ペダルタスク”の
タイマ処理要求フラグを“1”に設定する。 〔F2〕 要求元イベント値NSETを“1”に設定して、
イベント待ちモニタコールを行う。なお、ペダルタスク
タイマイベントが発生すると、次のステップF3に進
む。 〔F3〕 タスク管理マップにおけるタスク番号“6:
ペダルタスク”の待ちイベント値を“0”に、第1イベ
ント発生フラグを“0”に設定する。 〔F4〕 公知技術にもとづいて各ペダルを所定順次に
走査して設定状態を読み込み、設定状態に変化があった
か否かを判断して変化があれば対応する処理を行う。例
えば、ダンパーペダルの設定状態が変化していれば、新
たなダンパーの踏込み量をダンパー値DMPVとする。ま
た、ソステヌートペダルが踏み下げられると、ノートマ
ップにおける各ノート番号のソステヌートステータスを
対応するノートステータスと同じになるように更新す
る。さらに、ソステヌートペダルが戻されると、ノート
マップにおける各ノート番号のソステヌートステータス
を“0”に設定する。なお、変化がない場合、または対
応する処理を終了した場合にはステップF2に戻る。
【手続補正12】
【補正対象書類名】明細書
【補正対象項目名】0058
【補正方法】変更
【補正内容】
【0058】操作子タスク(図17) 当該タスクに対するタイマイベントが発生すると実行を
開始して、音色の選択あるいは音色に関するパラメータ
の設定などを行う操作子群23の設定状態を検出するタ
スクである。なお、公知技術であるために要点のみを説
明する。各ステップG1〜G4においての処理は、次の
通りである。 〔G1〕 まず、新たな操作子の設定状態を操作子毎に
記憶する新操作子マップと、前回の操作子の設定状態を
操作子毎に記憶する旧操作子マップと、操作子の操作に
対応して設定される各種パラメータと、この操作子タス
クで占有する変数などとを初期値に設定する。次に、第
7タスクタイマカウンタ値TCNE[7] を“12”に、第7
タスク時間間隔TCND[7] を“9”に設定する。さらに、
タスク管理マップにおけるタスク番号“7:操作子タス
ク”のタイマ処理要求フラグを“1”に設定する。 〔G2〕 要求元イベント値NSETを“1”に設定すると
ともに、初期設定完了フラグを“1”に設定してイベン
ト待ちモニタコールを行う。なお、操作子タスクタイマ
イベントが発生すると、次のステップG3に進む。 〔G3〕 タスク管理マップにおけるタスク番号“7:
操作子タスク”の待ちイベント値を“0”に、第1イベ
ント発生フラグを“0”に設定する。 〔G4〕 公知技術にもとづいて各操作子を所定順次に
走査して設定状態を読み込み、設定状態に変化があった
か否かを判断して変化があれば対応する処理を行う。例
えば、音色番号を変更した場合には音色パラメータ群を
変更する。なお、変化がない場合、または対応する処理
を終了した場合にはステップG2に戻る。
【手続補正13】
【補正対象書類名】明細書
【補正対象項目名】図13
【補正方法】変更
【補正内容】
【図13】発音タスク(1/2)を示す流れ図である。
【手続補正14】
【補正対象書類名】明細書
【補正対象項目名】図14
【補正方法】変更
【補正内容】
【図14】発音タスク(2/2)を示す流れ図である。
【手続補正15】
【補正対象書類名】明細書
【補正対象項目名】図16
【補正方法】変更
【補正内容】
【図16】ンベロープタスクを示す流れ図である。
【手続補正16】
【補正対象書類名】明細書
【補正対象項目名】符号の説明
【補正方法】変更
【補正内容】
【符号の説明】 20 鍵盤部 21 バス 22 中央処理装置(CPU) 23 操作子群 24 ペダル群 25 ROM(読出し専用メモリ) 26 RAM(ランダムアクセスメモリ) 27 タイマ 28 操作子検出回路 29 ペダル検出回路 30音発生回路
【手続補正17】
【補正対象書類名】図面
【補正対象項目名】図9
【補正方法】変更
【補正内容】
【図9】
【手続補正18】
【補正対象書類名】図面
【補正対象項目名】図16
【補正方法】変更
【補正内容】
【図16】

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 新たに入力される楽音情報を割り当てる
    楽音発生チャネルの選定を行う電子楽器のアサイナであ
    って、 選定したことにより発音停止しても演奏表現に与える影
    響がより少ないまたは無い楽音発生チャネルを処理対象
    の楽音発生チャネルとして全楽音発生チャネルのうちか
    らその全楽音発生チャネル数よりも少ない数、選択する
    処理対象楽音発生チャネル選択手段と、 該処理対象楽音発生チャネル選択手段で選択された処理
    対象の楽音発生チャネルのうちからそれらの楽音発生チ
    ャネルの発音量に基づき新たに入力される楽音情報を割
    り当てる楽音発生チャネルの選定を行う選定手段とを備
    えた電子楽器のアサイナ。
  2. 【請求項2】 該処理対象楽音発生チャネル選択手段は
    処理対象の楽音発生チャネルとして該選定手段による選
    定の古い順に楽音発生チャネルを選択するように構成さ
    れた請求項1記載の電子楽器のアサイナ。
  3. 【請求項3】 新たに入力される楽音情報を割り当てる
    楽音発生チャネルの選定を行う電子楽器のアサイナであ
    って、 選定したことにより発音停止すると演奏表現に与える影
    響がより大きい楽音発生チャネルを処理対象外の楽音発
    生チャネルとして全楽音発生チャネルのうちからその全
    楽音発生チャネル数よりも少ない数、選択する処理対象
    外楽音発生チャネル選択手段と、 該処理対象外楽音発生チャネル選択手段で選択された処
    理対象外の楽音発生チャネルを除いた楽音発生チャネル
    のうちからそれらの楽音発生チャネルの発音量に基づき
    新たに入力される楽音情報を割り当てる楽音発生チャネ
    ルの選定を行う選定手段とを備えた電子楽器のアサイ
    ナ。
JP3190702A 1990-08-06 1991-07-04 電子楽器のアサイナ Pending JPH0535271A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3190702A JPH0535271A (ja) 1990-08-06 1991-07-04 電子楽器のアサイナ

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2-208654 1990-08-06
JP20865490 1990-08-06
JP22330190 1990-08-24
JP2-223301 1990-08-24
JP3190702A JPH0535271A (ja) 1990-08-06 1991-07-04 電子楽器のアサイナ

Publications (1)

Publication Number Publication Date
JPH0535271A true JPH0535271A (ja) 1993-02-12

Family

ID=27326369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3190702A Pending JPH0535271A (ja) 1990-08-06 1991-07-04 電子楽器のアサイナ

Country Status (1)

Country Link
JP (1) JPH0535271A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522362A (ja) * 2007-03-22 2010-07-01 クゥアルコム・インコーポレイテッド オーディオ・デバイスにおける参照波形の検索のための帯域幅制御

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522362A (ja) * 2007-03-22 2010-07-01 クゥアルコム・インコーポレイテッド オーディオ・デバイスにおける参照波形の検索のための帯域幅制御

Similar Documents

Publication Publication Date Title
US4703680A (en) Truncate prioritization system for multi channel electronic music generator
US5703310A (en) Automatic performance data processing system with judging CPU operation-capacity
KR950002946B1 (ko) 악음 발생 제어장치
JP2924745B2 (ja) 楽音発生装置及び方法
US5280129A (en) Assigning device which assigns new musical tones to tone-generating channels based upon a successive strike relation among the channels
JP3372124B2 (ja) 電子楽器
JP2500489B2 (ja) 電子楽器
JPH0535271A (ja) 電子楽器のアサイナ
JP3117482B2 (ja) 電子楽器のアサイナ
JPH056181A (ja) 電子楽器の連打処理装置
JPS5943758B2 (ja) 電子楽器用アサイナ
JP3152198B2 (ja) 楽音発生方法および楽音発生装置
JPH052392A (ja) 電子楽器の割当装置
JPH0619474A (ja) 電子楽器のアサイナ
JPH05134668A (ja) マルチテインバ電子楽器のアサイナ
JPH04218097A (ja) マルチティンバ電子楽器のアサイナ
JPH05158477A (ja) 電子楽器のアサイナ
JPH05150784A (ja) 電子楽器のアサイナ
JP3405020B2 (ja) 電子楽器
JP3646611B2 (ja) 楽音発生装置
JPH05150783A (ja) 電子楽器のアサイナ
JP2936872B2 (ja) 楽音制御装置
JP3387179B2 (ja) 電子楽器
JP2640267B2 (ja) 電子楽器
JP2715795B2 (ja) 発音割当手段を有する楽音合成装置