JPH0973292A - 楽音制御装置 - Google Patents
楽音制御装置Info
- Publication number
- JPH0973292A JPH0973292A JP7252067A JP25206795A JPH0973292A JP H0973292 A JPH0973292 A JP H0973292A JP 7252067 A JP7252067 A JP 7252067A JP 25206795 A JP25206795 A JP 25206795A JP H0973292 A JPH0973292 A JP H0973292A
- Authority
- JP
- Japan
- Prior art keywords
- data
- control means
- midiin
- musical tone
- power
- 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
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
て、データ処理の効率を低下させることなくCPU間に
おけるデータの授受を行う。 【解決手段】 メインCPU1及びサブCPU2とを備
え、メインCPU1及びサブCPU2がともにアクセス
可能な共有RAM13と、サブCPU2のみがアクセス
可能な非共有RAM14とを備えている。そして、メイ
ンCPU1は共有RAM13にアクセスしてサブCPU
2との間で授受すべき楽音データの読み出し又は書き込
みを行う。サブCPU2は外部MIDI装置から受信す
るMIDIinデータを非共有RAM14に書き込み、
その書き込んだMIDIinデータを共有RAM13に
転送する構成とする。
Description
技術分野に属する。
ッチ群及び入力された楽音データに基づいて音源回路を
制御して楽音を発生する電子楽器等の楽音制御装置は広
く知られている。特に最近の電子楽器は大型の表示装置
を備えたものがあり、音符や操作に関する情報の画像を
表示することができる。このような表示機能を具備する
電子楽器においては、CPUにより鍵盤やスイッチ群か
ら入力される楽音発生トリガのデータを処理するととも
に、表示装置に供給する画像データを処理する。さら
に、楽音発生トリガに基づいて音源回路を制御して楽音
を発生させる必要がある。ところが、負担の重い画像デ
ータの処理及び他の処理を単一のCPUでまかなうこと
は困難である。このため、2つのCPUを設けて処理を
分担するシステムが考えられる。
ータの処理をメインCPUに分担させ、音源回路を制御
する音源処理及びMIDI装置等の外部装置との間のM
IDIデータの送受信の処理をサブCPUに分担させ
る。この場合、楽音発生トリガのデータはメインCPU
によってRAMに書き込まれ、メインCPUからサブC
PUにデータ処理のコマンドが与えられる。サブCPU
はこのコマンドに従って楽音発生トリガをRAMから読
み出して音源処理を行う。一方、ピッチベンダ等のアナ
ログデータはA/D変換されてサブCPUに取り込ま
れ、RAMに書き込まれる。また、MIDI装置から受
信するMIDIinデータはサブCPUによってRAM
に書き込まれる。メインCPUはRAMからこれらのデ
ータを読み出して、ピッチベンダのデータである場合に
はベンダ値を作成してRAMを介してサブCPUに送信
する。また、MIDIinデータの場合にはその解析を
して解析結果の楽音データをRAMを介してサブCPU
に送信する。
CPUがRAMにアクセスしてデータの書き込み又は読
み出しを行っている最中に、サブCPUが外部からMI
DIinデータを受信した場合には、RAMをメインC
PUから開放させてMIDIinデータを優先してRA
Mに書き込まなければならない。このため、メインCP
Uのデータ処理が中断することになり、メインCPUか
らサブCPUへの楽音データの送信が遅くなる。この結
果、サブCPUの音源処理の効率が低下して「音切れ」
が発生するという問題がある。また、一方のCPU例え
ばサブCPUにオートパワーオフ機能がある場合、サブ
CPUがオートパワーオフ指令を発して一定時間が経過
すると電源がオフとなるため、その時他方のCPUであ
るメインCPUがデータ処理を行っている場合にはその
処理中のデータが破壊されるおそれがあるという問題が
ある。この発明の第1の課題は、複数のCPUを有する
楽音制御装置において、データ処理の効率を低下させる
ことなくCPU間におけるデータの授受を行うことであ
る。また、この発明の第2の課題は、複数のCPUを有
する楽音制御装置において、データの破壊を招くことな
くオートパワーオフ機能を発揮させることである。
複数の制御手段と、複数の制御手段のうち特定の制御手
段がアクセス可能な専用記憶手段と、特定の制御手段及
び他の制御手段がアクセス可能な共有記憶手段とを有
し、他の制御手段は、共有記憶手段にアクセスして特定
の制御手段の間で授受すべき楽音データの読み出し又は
書き込みを行い、特定の制御手段は、処理に係る楽音デ
ータを専用記憶手段に書き込み、その書き込んだ楽音デ
ータを共有記憶手段に転送する構成になっている。かか
る構成により、他の制御手段が共有記憶手段にアクセス
して楽音データの書き込み又は読み出しのデータ処理を
行っているときに、特定の制御手段が楽音データを取り
込んだ場合にはその楽音データを専用記憶手段に書き込
むので、他の制御手段のデータ処理を中断することなく
特定の制御手段によって取り込まれた楽音データを保存
する。
機能を有する特定の制御手段及び他の制御手段からなる
複数の制御手段を有し、特定の制御手段は、他の制御手
段に電源停止の旨の通知信号を送信し、他の制御手段か
ら応答信号を受信したときにオートパワーオフ機能を作
動させる構成になっている。かかる構成により、特定の
制御手段が一方的にオートパワーオフを行うのではな
く、他の制御手段の許可(応答信号)を受けてオートパ
ワーオフを行う。
の発明の実施形態を説明する。図1は、この発明の楽音
制御装置の実施形態である電子楽器のブロック図であ
る。まず、図1に基づいてこの実施形態の構成及び各ブ
ロックの機能について説明する。この電子楽器は、メイ
ンCPU1及びサブCPU2の2つのCPU(制御手
段)を備えている。メインCPU1は、バス3によりプ
ログラムROM4、ワークRAM5、表示部6、押鍵検
出回路7及びスイッチ検出回路8に接続されている。鍵
盤部9は押鍵検出回路7に接続され、ユーザの操作によ
り、音高、音の開始タイミング、発音時間等を入力す
る。押鍵検出回路7は鍵盤部9の操作を検出する。スイ
ッチ群10はスイッチ検出回路8に接続され、ユーザの
操作により、音量、音色、オクターブ切換、演奏モード
等を入力する。スイッチ検出回路8はスイッチ群10の
操作を検出する。そして、メインCPU1は、プログラ
ムROM4に格納されているプログラムに従って、押鍵
検出回路7及びスイッチ検出回路8からの入力に応じて
楽音データを生成してワークRAM5に格納する。
ログラムROM12、共有RAM13、非共有RAM1
4、割り込みコントローラ15、タイマ回路16、A/
Dコンバータ17、シリアルコントローラ18、電源ス
イッチ検出回路19及び楽音発生回路(音源回路)20
のブロックに接続されている。サブCPU2は、プログ
ラムROM12に格納されているプログラムに従って、
楽音データを処理するとともに共有RAM13又は非共
有RAM14にアクセスして楽音データの書き込み又は
読み出しを行う。共有RAM13は、メインCPU1又
はサブCPU2のいずれからもアクセス可能な共有記憶
手段である。このため、メインCPU1のバス3及びサ
ブCPU2のバス11はCPUインターフェース21に
よって接続できるようになっている。CPUインターフ
ェース21はスリーステートのゲート回路等で構成さ
れ、ゲートが開のときにバス同士が接続され、ゲートが
閉のときにはハイインピーダンスとなってバス同士が切
り離される。もっとも、接続又は切離しがなされるバス
はアドレスバス及びデータバスであり、特定の制御バス
についてはメインCPU1とサブCPU2との間で常時
接続されており、メインCPU1からサブCPU2への
外部割り込み、バス使用権、MIDIデータの入力又は
出力の割り込みについては、いつでも両CPU間で情報
の交換をすることができる構成になっている。以下、単
に「バス」というときはアドレスバス及びデータバスを
指すものとする。外部メインCPU1は、バスの使用権
を得たときに共有RAM13にアクセスしてMIDIo
utデータ、発音コマンド、残響データ等の楽音データ
を共有RAM13に書き込む。サブCPU2は、共有R
AM13に書き込まれた発音コマンドの楽音データに基
づいて音源処理を行い、MIDIoutデータの楽音デ
ータを外部に送信する。音源処理においては、共有RA
M13を介してメインCPU1から受信した楽音データ
を楽音発生回路20に供給しディジタル音響信号を生成
させる。楽音発生回路20にはD/Aコンバータ22が
接続されており、楽音発生回路20で生成されたディジ
タル音響信号をアナログ音響信号に変換する。そして、
D/Aコンバータ22に接続されている電力増幅回路2
3によってアナログ音響信号が増幅され、電力増幅回路
23に接続されているスピーカ24から音響が発生す
る。また、非共有RAM14は、サブCPU2のみがア
クセス可能なワークRAMすなわち専用記憶手段であ
り、メインCPU1はアクセスすることはできない。こ
の非共有RAM14には、シリアルコントローラ18を
介して外部のMIDI装置(図示せず)からの割り込み
によって受信するMIDIinデータが書き込まれる。
ボリューム等の操作子から入力されるアナログ信号をサ
ブCPU2に取り込み可能なディジタル信号に変換す
る。タイマ回路16は、LFO作成やENV処理等の定
常処理を一定時間ごとの割り込み処理で行うためのタイ
マ割り込み信号を発生する。割り込みコントローラ15
は、このタイマ回路16からのタイマ割り込み、メイン
CPU1からの外部割り込み、及びMIDI装置からの
割り込みの優先順位を決定してサブCPU2に通知す
る。サブCPU2は、オートパワーオフ機能を備えてお
り、電源スイッチがオフになった場合やその他あらかじ
め定めた条件(これについては後述する)に応じてオー
トパワーオフ指令を発して内部への電源供給を停止す
る。このため、電源スイッチ検出回路19は電源スイッ
チ25に接続されており、そのオン・オフ状態を監視す
る。
4の内部構成について、図2を参照して説明する。共有
RAM13には、図2(A)に示すように、サブCPU
2からメインCPU1に渡すためのMIDIinデータ
用のエリア31、メインCPU1からサブCPU2に渡
すためのMIDIoutデータ用のエリア32、A/D
コンバータ17から入力されるデータを書き込むA/D
データバッファ33、サブCPU2のみがアクセスでき
るコマンドポインタ34、メインCPU1からのコマン
ドを格納するコマンドバッファ35、オートパワーオフ
のためのパワーオフビット36その他のデータエリアが
設けられている。エリア31は、MIDIinデータを
格納するMIDIinバッファ、サブCPU2がMI
DIinバッファにデータを書き込むときに更新され
るMIDIin書き込みポインタ、メインCPU1が
MIDIinバッファのデータを読み出すときに更新
されるMIDIin読み出しポインタ、及び、MID
Iinバッファの状態を表すMIDIinコンディシ
ョンで構成されている。このMIDIinコンディシ
ョンには、MIDIinバッファ内のデータの空き
状態すなわちデータフルかどうかを示すビットb0が設
けられており、データフルのときにはサブCPU2がこ
のビットb0を「1」にセットしてオンとし、メインC
PU1がデータを読み出してデータフルでなくなったと
きにはメインCPU1がこのビットb0を「0」にして
オフとする。エリア32は、MIDIoutデータを格
納するMIDIoutバッファ、メインCPU1がMI
DIoutバッファにデータを書き込むときに更新され
るMIDIout書き込みポインタ、及び、サブCPU
2がMIDIoutバッファのデータを読み出すときに
更新されるMIDIout読み出しポインタで構成され
ている。
ように、シリアルコントローラ18から入力されるMI
DIinデータを格納するエリア41、非共有RAM1
4から共有RAM13にMIDIinデータを転送する
ためのMIDIin転送カウンタ42、オートパワーオ
フのためのパワーオフビット43その他のデータエリア
が設けられている。エリア41は、MIDIinデータ
を格納するMIDIinバッファ、サブCPU2がM
IDIinバッファにデータを書き込むときに更新さ
れるMIDIin書き込みポインタ、サブCPU2が
MIDIinバッファのデータを読み出して共有RA
M13に転送するときに更新されるMIDIin読み出
しポインタ、及び、MIDIinバッファの状態を
表すMIDIinコンディションで構成されている。
MIDIinコンディションには、データフル用ビッ
トb1及びポインタ追いつきビットb0が設けられてい
る。データフル用ビットb1は、MIDIinバッファ
がデータフルのときに「1」(オン)にセットされ
る。したがって、このビットb1が「1」にセットされ
ている場合にMIDIinデータを受信してもそのデー
タを受け取ることはできない。ポインタ追いつきビット
b0は、書き込みポインタが読み出しポインタに追
いついたときに「1」(オン)にセットされる。
CPU1及びサブCPU2のフローチャートに基づいて
詳細に説明する。図3は、メインCPU1が実行するメ
インルーチンのフローチャートである。メインCPU1
が起動すると、まず、所定のイニシャライズ処理を行う
(ステップS1)。次に、押鍵検出回路7及びスイッチ
検出回路8を走査して鍵盤部9及びスイッチ群10から
楽音発生トリガの有無を検出する(ステップS2)。そ
して、鍵盤部9又はスイッチ群10から入力があった場
合にはその楽音発生トリガのデータ処理(鍵盤処理)を
行う(ステップS3)。次に、この楽音発生トリガのデ
ータに基づいて発音コマンド作成を行う(ステップS
4)。すなわち、楽音発生回路20に供給してディジタ
ル音響信号を発生させるための発音コマンドを作成す
る。次に、この発音コマンドをリアルタイムで録音中で
あるか否かを判別し(ステップS5)、リアルタイム録
音中の場合にはリアルタイム録音処理を行う(ステップ
S6)。次に、データ取り込み処理を行う(ステップS
7)。
トを示す。この処理では、常時接続されている制御バス
を介して、サブCPU2の外部INT中フラグ(図示せ
ず)がオンであるか又はオフであるかを判別する(ステ
ップS21)。このフラグがオンのときにはメインCP
U1はサブCPU2に対して外部INTをかけることが
できない。このフラグがオフの場合に外部INTをサブ
CPU2に出力する(ステップS22)。次に、制御バ
スを介してサブCPU2にバス解放要求を送出し、バス
11が解放されたか否かを判別する(ステップS2
3)。バス11が解放されたならば共有RAM13にア
クセスして(ステップS24)、データの書き込み又は
読み出しを行う。データの書き込み又は読み出しが終了
したときはバス使用終了をサブCPU2に送出してバス
を返還し(ステップS25)、図3のメインルーチンの
ステップS8に移行する。
ャートを示す。この処理では、制御バスを介してサブC
PU2のフラグを参照してMIDIoutデータの出力
か否かを判別し(ステップS26)、MIDIoutデ
ータの出力の場合には共有RAM13にMIDIout
データを書き込む処理を行う(ステップS27)。MI
DIoutデータの出力でない場合には、制御バスを介
してサブCPU2のフラグを参照してMIDIinデー
タの入力か否かを判別し(ステップS28)、MIDI
inデータの入力である場合には共有RAM13からM
IDIinデータを読み出す処理を行う(ステップS2
9)。MIDIinデータの入力ではない場合には、共
有RAM13のパワーオフビット36の内容をメインC
PU1のワークRAM5に転送する(ステップS3
0)。次に、共有RAM13のMIDIinコンディシ
ョンの内容をワークRAM5に転送し(ステップS3
1)、図4のサブルーチンのステップS25に移行す
る。
ローチャートを示す。この処理では、共有RAM13の
コマンドバッファ35にエンドマークをセットする(ス
テップS32)。次に、メインCPU1のワークRAM
5に格納されているMIDIoutデータのバイト数、
又は、共有RAM13のMIDIout読み出しポイン
タの値からMIDIout書き込みポインタの値に
「1」加算した値を差し引いた値のうちいずれか少ない
方をポインタnにセットする(ステップS33)。すな
わち、書き込むMIDIoutデータのバイト数又はM
IDIoutバッファの空き領域のバイト数のうちどち
らか少ない方をセットする。次に、ポインタnの値が
「0」であるか否かを判別し(ステップS34)、
「0」でない場合にはnの値を「1」だけデクリメント
して(ステップS35)、ワークRAM5のMIDIo
utデータを共有RAM13のMIDIoutバッファ
に書き込む(ステップS36)。この場合において、デ
ータを書き込むエリアのアドレスはMIDIoutバッ
ファの先頭アドレスにMIDIout書き込みポインタ
の値を加算したアドレスとなる。そして、書き込みと同
時にMIDIout書き込みポインタの値を「1」だけ
インクリメントし、ステップS34に移行する。MID
Iout書き込みポインタはリングカウンタで構成さ
れ、ポインタ値がMIDIoutバッファの最終アドレ
スであるときにポインタ値が「1」インクリメントされ
ると、ポインタ値はMIDIoutバッファの先頭アド
レスに戻る。なお、ポインタnにMIDIoutバッフ
ァの空き領域のバイト数をセットした場合には、安全を
確保するためにMIDIoutバッファが全部うまる1
バイト手前で書き込みを停止する。ステップS33にお
いて読み出しポインタから書き込みポインタに「1」加
算した値を差し引くのはそのためである。そして、n=
「0」になるまでステップS34〜ステップS36の各
処理を繰り返し実行し、n=「0」になった場合、すな
わち、書き込むべきMIDIoutデータがすべて書き
込まれたか、あるいは書き込みアドレスが読み出しアド
レスの1バイト手前になった場合には、このMIDIo
ut書き込み処理を終了する。
ーチャートである。この処理では、メインCPU1のワ
ークRAM5の空き領域のバイト数、又は、共有RAM
13のMIDIin書き込みポインタからMIDIi
n読み出しポインタに「1」加算した値を差し引いた
値のうちいずれか少ない方をポインタnにセットする
(ステップS37)。次に、ポインタnの値が「0」で
あるか否かを判別し(ステップS38)、「0」でない
場合にはnの値を「1」だけデクリメントして(ステッ
プS39)、MIDIinバッファにおいてその先頭
アドレスにMIDIin読み出しポインタの値を加算
したアドレスのMIDIinデータを読み出してワーク
RAM5に書き込む(ステップS40)。さらに、MI
DIin読み出しポインタの値を「1」だけインクリ
メントし、ステップS38に移行する。そして、n=
「0」になるまでステップS38〜ステップS40の各
処理を繰り返し実行し、n=「0」になった場合、すな
わち、読み出すべきMIDIinデータがすべて読み出
されたか、あるいは読み出しアドレスが書き込みアドレ
スの1バイト手前になった場合には、このMIDIin
読み出し処理を終了する。
み処理が終了すると、図3のステップS8に移行して、
共有RAM13のパワーオフビット36からワークRA
M5に転送したデータを参照し、パワーオフビットがオ
ンか否かを判別する。パワーオフビットがオフの場合に
は、コマンド送出を行う(ステップS9)。図8にコマ
ンド送出のフローチャートを示す。この処理では、制御
バスを介して、サブCPU2の外部INT中フラグがオ
ンであるか又はオフであるかを判別する(ステップS4
1)。このフラグがオフの場合に外部INTをサブCP
U2に出力する(ステップS42)。次に、制御バスを
介してサブCPU2にバス解放要求を送出し、バス11
が解放されたか否かを判別する(ステップS43)。バ
ス11が解放されたならば共有RAM13にアクセスし
て、ワークRAM5のコマンドを共有RAM13のコマ
ンドバッファ35に書き込む(ステップS44)。続い
てコマンドバッファ35に書き込んだコマンドデータの
最後にエンドマークを書き込む(ステップS45)。こ
の後、バス使用終了信号をサブCPU2に送出してバス
を返還し(ステップS46)、図3のメインルーチンの
ステップS10に移行する。図3のステップS10にお
いて、メインCPU1は画像データを表示部6に転送し
て表示処理を行わせる。次に、共有RAM13のMID
Iinコンディションがデータフルか否かを判別する
(ステップS11)。データフルでない場合には、ステ
ップS2のスイッチ群10の走査処理に移行し、データ
フルである場合にはMIDIinデータを受け取ること
ができないので、所定のエラー処理を行って(ステップ
S12)、ステップS2のスイッチ群10の走査処理に
移行する。
ットがオンである場合には、サブCPU2から電源停止
の旨の通知信号を受信したことを意味する。この場合に
は、リアルタイム録音中であるか否かを判別し(ステッ
プS13)、録音中である場合には電源が停止するとそ
のデータが破壊されるので、リアルタイム録音の終了処
理を行って(ステップS14)、パワーオフコマンドを
作成する(ステップS15)。リアルタイム録音中でな
い場合には、そのままステップS15に移行してパワー
オフコマンドを作成する。次に、作成したパワーオフコ
マンドをコマンド送出する(ステップS16)。コマン
ド送出の処理は、図8に示すフローチャートと同じであ
るので説明は省略する。なお、ステップS16のコマン
ド送出処理を終了すると再びステップS15のパワーオ
フコマンド作成処理に移行し、その後はステップS15
及びステップS16を繰り返し実行する。これはパワー
オフコマンドの送出をすると、サブCPU2によって電
源供給が停止されるので他の処理ができないからであ
る。
る。図9は、サブCPU2が実行するメインルーチンの
フローチャートである。サブCPU2が起動すると、ま
ず、所定のイニシャライズ処理を行う(ステップS5
1)。次に、INTイネーブルすなわち割り込みを可能
とする処理を行う(ステップS52)。次に、フロー1
周ボリューム処理を行う(ステップS53)。この処理
は、複数のDCO(Digital Controlled Oscillator)
であるDCO0、DCO1……の楽音データを楽音発生
回路20に送出する処理である。この処理は一時に行う
のではなく、タイマをピッチ処理間隔である10msに
設定して、10msが経過すると中断する(ステップS
54)。
ーチャートを示す。図10においては、まず、最初のD
CO0を指定し(ステップS81)、指定したDCOが
最後のDCOであるか否かを判別する(ステップS8
2)。この場合は最初のDCO0であるのでステップS
83に移行して指定したDCOが発音中か否かを判別す
る。発音中である場合には、音量の現在値が目標値と一
致しているか否かを判別し(ステップS84)、一致し
ていない場合には目標値と現在値とを比較する(ステッ
プS85)。この比較の結果、現在値が目標値より小さ
い場合には現在値を所定の単位数だけインクリメントし
(ステップS86)、現在値が目標値より大きい場合に
は現在値を所定の単位数だけデクリメントする(ステッ
プS87)。そして、この更新した現在値を楽音発生回
路20に送出して(ステップS88)、次のDCO1を
指定する(ステップS89)。ステップS83において
指定したDCOが発音中でない場合、及び、ステップS
84において現在値が目標値と一致している場合には、
ステップS89に移行して次のDCOを指定する。ステ
ップS82において、すべてのDCOについてこのルー
チンのフロー1周ボリューム処理が一巡した場合には、
一旦、図9のステップS54に移行し、ピッチ処理間隔
である10msに設定してあるタイマがタイムアップし
ない限り、フロー1周ボリューム処理を繰り返し、10
msが経過すると図9のステップS55に移行してこの
タイマをクリアする。
るかオフであるかを判別する(ステップS56)。この
判別は、図11に示す非共有RAM14内のサブCPU
2のワークエリアを参照して行われる。図11におい
て、オートパワーオフモードエリア51には、オートパ
ワーオフモードがオン又はオフの情報の他、オートパワ
ーオフ時間がノーマルであるか又はノーマルより長いス
ペシャルであるかの情報が設定されている。オートパワ
ーオフモードがオンである場合には、メインCPU1か
らコマンドを受けない時間が設定されているオートパワ
ーオフ時間以上になるとパワーオフする。したがって、
コマンドを受けない場合にはオートパワーオフタイマを
インクリメントし(ステップS57)、オートパワーオ
フ時間の設定がノーマルであるか又はスペシャルである
かを判別する(ステップS58)。この設定に応じてノ
ーマル時間又はスペシャル時間をサブCPU2内のレジ
スタx(図示せず)にセットし(ステップS59又はス
テップS60)、オートパワーオフタイマの時間がレジ
スタxにセットされた時間以上か否かを判別し(ステッ
プS61)、セットされた時間以上になった場合にはパ
ワーオフ処理を行う(ステップS62)。
タイマの時間がレジスタxにセットされた時間以上でな
い場合には、A/Dコンバータ17から入力されたピッ
チデータを非共有RAM14に転送する(ステップS6
3)。そして、このピッチデータを楽音発生回路20に
送出する(ステップS64)。次に、図11に示すサブ
CPU2のワークエリアのフェーズエリア52のフェー
ズ値を設定する(ステップS65)。フェーズ値には
「0」〜「3」があり、ステップS65において「1」
ずつインクリメントする。そして、フェーズ値が「1」
の場合には(ステップS66)LFO作成を行い(ステ
ップS67)、フェーズ値が「2」の場合には(ステッ
プS68)ピッチENV処理を行い(ステップS6
9)、フェーズ値が「3」の場合には(ステップS7
0)アンプENV処理を行う(ステップS71)。
チ検出回路19を検索する(ステップS72)。この検
索によりパワーオフか否かを判別し(ステップS7
3)、パワーオフである場合には非共有RAM14のパ
ワーオフビットを「1」にセットする(ステップS7
4)。次に、サブCPU2内のパワーオフカウンタ(図
示せず)の値をクリアして(ステップS75)、ステッ
プS53のフロー1周ボリューム処理に移行する。パワ
ーオフカウンタは、メインCPU1からパワーオフコマ
ンドが一定時間経過しても得られない場合の処理のため
のものであり、これについてはさらに後述する。なお、
ステップS73においてパワーオフでない場合にはステ
ップS53のフロー1周ボリューム処理に移行する。
可能としたので、メインCPU1からの外部INT、M
IDIinINT、MIDIoutINT等の割り込み
を受け付ける。まず、メインCPU1からの外部INT
について説明する。図12に外部INTのフローチャー
トを示す。制御バスを介してこの割り込みを受け取る
と、外部INT中フラグをオンとして(ステップS9
0)、同じ外部INTを重ねて受け付けないようにす
る。次に、MIDIoutINTをディスイネーブルに
して(ステップS91)、外部MIDI装置からのデー
タ要求を受け付けないようにする。そして、メインCP
U1からのバス解放要求に応じてバス11をメインCP
U1に解放し(ステップS92)、メインCPU1が共
有RAM13にアクセスできるようにする。次に、MI
DIinINTをイネーブルにする(ステップS9
3)。次に、制御バスを介してメインCPU1からのバ
ス使用終了信号を監視してバス11が返還されたか否か
を判別する(ステップS94)。バス11が返還された
場合には、共有RAM13のMIDIout読み出しポ
インタがMIDIout書き込みポインタと同じか否か
を判別する(ステップS95)。ポインタが同じである
場合には、共有RAM13のMIDIoutバッファに
MIDIoutデータが存在しない。一方、ポインタが
同じでない場合には、MIDIoutバッファにMID
Ioutデータが存在するので、MIDIoutINT
をイネーブルにする(ステップS96)。
34を「0」にセットする(ステップS97)。すなわ
ち、共有RAM13のコマンドバッファ35の読み出し
のアドレスを先頭アドレスにする。次に、共有RAM1
3のコマンドバッファ35のコマンドを先頭アドレスか
ら読み込み、コマンドがエンドマークか否かを判別する
(ステップS98)。コマンドがエンドマークでない場
合にはオートパワーオフタイマをクリアして(ステップ
S99)、コマンド処理を行い(ステップS100)、
コマンドポインタをインクリメントして更新する(ステ
ップS101)。そして、コマンドがエンドマークにな
るまでステップS98〜ステップS101までの各処理
を繰り返し実行してコマンド処理を行う。コマンド処理
についてはさらに後述する。ステップS98において、
コマンドがエンドマークである場合には、非共有RAM
14のパワーオフビット43の内容を共有RAM13の
パワーオフビット36に転送する(ステップS10
2)。次に、非共有RAM14のMIDIinデータを
共有RAM13に転送し(ステップS103)、MID
IinINTをマスクして(ステップS104)、外部
INT中フラグをオフとする(ステップS105)。な
お、MIDIinINTをマスクした場合でもMIDI
inINTは有効である。ただし、次にMIDIinI
NTがイネーブルになるまでそのINTが待たされるこ
とになる。
nデータを共有RAM13に転送するフローチャートで
ある。この処理では、MIDIinINTをマスクして
(ステップS106)、非共有RAM14のMIDIi
nコンディションを参照してMIDIinバッファ
がデータフルか否かを判別する(ステップS107)。
データフルでない場合には、MIDIin書き込みポイ
ンタからMIDIin読み出しポインタを差し引いた
値、又は、共有RAM13のMIDIinバッファのサ
イズからMIDIin書き込みポインタを差し引いた
値のいずれか小さい値を非共有RAM14のMIDIi
n転送カウンタ42にセットする(ステップS10
8)。すなわち、非共有RAM14のMIDIinデー
タのバイト数又は共有RAM13の空き領域のバイト数
のいずれか小さい値をMIDIin転送カウンタ42に
セットする。そして、MIDIin転送カウンタ42の
値が「0」か否かを判別し(ステップS109)、
「0」でない場合にはMIDIinコンディションの
追いつきビットをオフとし(ステップS110)、MI
DIin転送カウンタの値をデクリメントする(ステッ
プS111)。
inバッファの先頭アドレスにMIDIin読み出し
ポインタを加算したアドレスのデータを、共有RAM
13におけるMIDIinバッファの先頭アドレスに
MIDIin書き込みポインタを加算したアドレスの
エリアに転送する(ステップS112)。すなわち、非
共有RAM14のMIDIinデータの先頭の1バイト
を共有RAM13の空きエリアに転送する。同時に、非
共有RAM14のMIDIin読み出しポインタ及び
共有RAM13のMIDIin書き込みポインタをイ
ンクリメントする。図14にMIDIinデータの転送
の様子を示す。この図に示すように、非共有RAM14
から共有RAM13に順次MIDIinデータを転送
し、すべてのMIDIinデータの転送が終了すると、
図7に示すメインCPU1のMIDIinデータの読み
出し処理によって、共有RAM13に転送されたMID
IinデータがワークRAM5に引き取られる。
データを転送すると、次に、MIDIinINTをイネ
ーブルとして(ステップS113)、割り込みがあれば
受け付ける。この後、MIDIinINTをマスクして
(ステップS114)、ステップS109に移行する。
その後、MIDIin転送カウンタ42の値が「0」に
なるまでステップS109〜ステップS114までの各
処理を繰り返し実行する。そして、MIDIin転送カ
ウンタ42の値が「0」になった場合には、MIDIi
nINTをイネーブルにして(ステップS115)、M
IDIinデータの転送を終了して図12のフローチャ
ートに戻る。一方、ステップS107においてMIDI
inコンディションのビットb1がオンでデータフル
を示した場合には、MIDIinコンディションのそ
のビットb1をオフにして(ステップS116)、共有
RAM13のMIDIinコンディションのビットb
0をオンにしてデータフルの状態にする(ステップS1
17)。次に、共有RAM13のMIDIin書き込み
ポインタをクリアして(ステップS118)、MID
IinINTをイネーブルにして(ステップS11
5)、MIDIinデータの転送を終了して図12のフ
ローチャートに戻る。
INTの割り込み処理について、図15のフローチャー
トを参照して説明する。外部MIDI装置からMIDI
inINTを受信すると、非共有RAM14のMIDI
inコンディションのビットb1を検索して非共有R
AM14がデータフルか否かを判別する(ステップS1
19)。ビットb1がオンでデータフルである場合に
は、MIDIinデータを受信することができないので
この割り込み処理を終了する。ビットb1がオフでデー
タフルではない場合には、MIDIinコンディション
のビットb0のオン・オフを検索してMIDIin書
き込みポインタがMIDIin読み出しポインタに
追いついたか否かを判別する(ステップS120)。ビ
ットb0がオフで非共有RAM14のMIDIinバッ
ファに空きエリアがある場合には、シリアルコントロー
ラ18から入力されたMIDIinデータを非共有RA
M14に転送し、書き込みポインタをインクリメント
する(ステップS121)。このインクリメンの結果、
MIDIin書き込みポインタがMIDIin読み出
しポインタと同じになったか否かを判別し(ステップ
S122)、同じになった場合にはMIDIinコンデ
ィションのビットb0をオンにして(ステップS12
3)割り込み処理を終了し、同じでない場合にはそのま
ま割り込み処理を終了する。ステップS120におい
て、MIDIinコンディションのビットb0がオン
である場合には、MIDIinコンディションのビッ
トb1をオンすなわちデータフルにし(ステップS12
4)、MIDIin転送カウンタ42をクリアして(ス
テップS125)、この割り込み処理を終了する。
tINTの割り込み処理について、図16のフローチャ
ートを参照して説明する。外部MIDI装置からMID
IoutINTを受信すると、共有RAM13のMID
Iout読み出しポインタの値とMIDIout書き込
みポインタの値とが同じか否かを判別する(ステップS
126)。同じでない場合には、共有RAM13のMI
DIoutバッファのMIDIoutデータをシリアル
コントローラ18から外部MIDI装置に出力する(ス
テップS127)。MIDIout読み出しポインタの
値とMIDIout書き込みポインタの値とが同じであ
る場合には、MIDIoutINTをディスイネーブル
にしてMIDIoutINTを禁止する(ステップS1
28)。
S100におけるコマンド処理について、図17のフロ
ーチャートを参照して説明する。まず、メインCPU1
からのコマンドが発音処理であるか否かを判別し(ステ
ップS129)、発音処理ではない場合にはパワーオフ
コマンドであるか否かを判別する(ステップS13
0)。パワーオフコマンドである場合にはパワーオフ処
理を行う(ステップS131)。パワーオフコマンドで
ない場合にはパワーオフカウンタの値をインクリメント
し(ステップS132)、パワーオフカウンタの値が設
定値を超えたか否かを判別し(ステップS133)、超
えた場合にはパワーオフ処理を行う(ステップS13
1)。ステップS129において、コマンドが発音コマ
ンドである場合には発音処理を行う(ステップS13
4)。
す。この処理では、サブCPU2のワークエリアを用い
る。ワークエリアには、図11に示すように、楽音音量
値の基準値を格納するGVBASE[DCO]53、現
在値を格納するGVTMP[DCO]54、目標値を格
納するGVSTOP[DCO]55、及び、チャンネル
情報をもつボリューム値を格納するVOL[ch]56
がある。図18の発音処理は鍵盤操作によるボリューム
設定処理である。すなわち、鍵盤の操作速度に応じた楽
音音量値を基準値としてGVBASE[DCO]53に
書き込む(ステップS138)。次に、この基準値と現
在設定されているボリューム値すなわちVOL[ch]
56の値との積を楽音音量値の現在値及び目標値として
GVTMP[DCO]54及びGVSTOP[DCO]
55に書き込む(ステップS139)。
において、パワーオフカウンタの値が設定値以下である
場合には、メインCPU1からのコマンドがボリューム
値を変更するボリュームコマンドであるか否かを判別す
る(ステップS135)。ボリュームコマンドである場
合にはボリュームコマンド処理を行い(ステップS13
6)、ボリュームコマンドでなくその他のコマンドであ
る場合にはその他のコマンド処理を行う(ステップS1
37)。図19にボリューム処理のフローチャートを示
す。まず、ボリューム操作によって得られた新たなボリ
ューム値をサブCPU2のワークエリアのVOL[c
h]56に書き込み(ステップS140)、最初のDC
O0を指定し(ステップS141)、指定したDCOが
最後のDCOであるか否かを判別する(ステップS14
2)。この場合は最初のDCO0であるのでステップS
143に移行して指定したDCOが発音中か否かを判別
する。発音中である場合には、発音中のチャンネルが指
定したチャンネルと一致しているか否かを判別する(ス
テップS144)。一致している場合には、GVBAS
E[DCO]53の基準値とVOL[ch]56の新た
なボリューム値との積を目標値としてGVSTOP[D
CO]55に書き込む(ステップS145)。そして、
DCOの値をインクリメントして次のDCOを指定し
(ステップS146)、ステップS142に移行して指
定したDCOが最後のDCOでない限りステップS14
2〜ステップS146の各処理を繰り返し実行してすべ
ての指定DCOに対してボリュームコマンド処理を行
う。ステップS143において指定したDCOが発音中
でない場合、及び、ステップS144においてチャンネ
ルが指定したチャンネルと一致していない場合には、ス
テップS145における目標値の書き換えは行わず次の
DCOを指定する。なお、ステップS145において楽
音音量値の目標値が書き換えられると、図10に示すフ
ロー1周ボリューム処理において、この新たな目標値に
向かって現在値をインクリメント又はデクリメントする
とともに、現在値を楽音発生回路20に送出する。
ンCPU1及びサブCPU2とを備え、メインCPU1
及びサブCPU2がともにアクセス可能な共有RAM1
3と、サブCPU2のみがアクセス可能な非共有RAM
14とを備えている。そして、メインCPU1は共有R
AM13にアクセスしてサブCPU2との間で授受すべ
き楽音データの読み出し又は書き込みを行う。サブCP
U2は外部MIDI装置から受信するMIDIinデー
タを非共有RAM14に書き込み、その書き込んだMI
DIinデータを共有RAM13に転送する構成になっ
ている。かかる構成により、メインCPU1が共有RA
M13にアクセスして楽音データの書き込み又は読み出
しのデータ処理を行っているときに、サブCPU2がM
IDIinデータを取り込んだ場合にはそのデータを非
共有RAM14に書き込むので、メインCPU1のデー
タ処理を中断することなくサブCPU2によって取り込
まれたMIDIinデータを保存する。したがって、2
つのCPUを有する電子楽器において、データ処理の効
率を低下させることなくCPU間におけるデータの授受
を潤沢に行うことができる。この場合において、メイン
CPU1及びサブCPU2と共有RAM13との間を接
続するバス11を有し、メインCPU1及びサブCPU
2との間で制御バスを介してバス11の使用権を確保し
て共有RAM13にアクセスする。したがって、バスコ
ントローラのハードや特別なプロトコルのソフトを必要
とすることがない。
U2がオートパワーオフ機能を発動して電源供給を停止
するとき、パワーオフビットのオン・オフを行うことに
よりメインCPU1に電源停止の旨の通知信号を送信
し、メインCPU1からパワーオフコマンドによる応答
信号を受信したときにオートパワーオフ機能を作動させ
る構成になっている。かかる構成により、サブCPU2
が一方的にオートパワーオフを行うのではなく、メイン
CPU1の応答信号を受けてオートパワーオフを行う。
したがって、2つのCPUを有する電子楽器において、
データの破壊を招くことなくオートパワーオフ機能を発
揮させることができる。この場合において、あらかじめ
設定した時間内にメインCPU1から応答信号が得られ
ないときは、その設定時間が経過するとパワーオフ処理
を行う。したがって、メインCPU1が暴走した場合等
においてもすみやかにパワーオフ処理を行うことができ
る。また、メインCPU1から一定時間発音コマンドが
得られない場合もオートパワーオフ機能を作動する。し
たがって、電源がオン状態になったままユーザが電子楽
器から長い時間離れた場合等、電源の無用な消費を解消
できる。
CPUをメインCPU1及びサブCPU2の2つとした
が、2以上のCPUを使用して各CPUに個別のデータ
処理をさせる構成にしてもよい。この場合、必要に応じ
て専用記憶手段である非共有RAMも複数として、共有
RAMとの間でデータ転送を行うようにしてもよい。
U2が非共有RAM14に書き込むデータをMIDIi
nデータとしたが、他のデータを書き込むようにしても
よい。例えば、A/Dコンバータ17から取り込むデー
タを直接共有RAM13に書き込むのに効率が悪い場合
には、非共有RAM14に書き込むようにしてもよい。
また、書き込むデータも固定ではなく、演奏モードに応
じて変更してもよい。要は、電子楽器の性能を向上させ
るために、任意のデータを適時に非共有RAM14に書
き込む構成でよい。
CPU1又はサブCPU2のいずれか一方がアクセスで
きる共有RAM13を用いたが、デュアルポートRAM
を使用していずれのCPUからもアクセスできる構成に
してもよい。
ンCPU1がサブCPU2に発音コマンドデータを転送
する前にリアルタイム録音中か否かを判別して、リアル
タイム録音中である場合にはその処理を行うようにして
いる。発音コマンドデータには鍵盤操作によるもの、M
IDIinデータのように鍵盤操作によらないものがあ
る。ここで、鍵盤操作による発音コマンドデータのみを
トラップして録音する構成にすると、従来のように発音
処理と録音処理とで別々にデータ解析を行う必要がなく
なる。したがって、プログラム作成を軽減させるととも
にデータ処理の実行時間を短縮することができる。ま
た、ワークRAM5に発音コマンドデータが存在してい
るならば、データ転送前又はデータ転送後のいつでも時
間的に余裕があるときに発音コマンドデータをトラップ
して録音を行うようにしてもよい。この場合において、
発音コマンドデータが複数トラックのデータすなわちマ
ルチトラックデータであるとすると、トラップした発音
コマンドデータの一部を転送データから削除することに
より、楽曲のマイナスワン機能を実現することができ
る。
に鍵盤部9に設定されている音色のプログラム変換デー
タを自動的に挿入することもできる。この場合には、鍵
盤音色をあらかじめ所望の音色にセットすることによ
り、録音後に新たにプログラム変換処理を行うことなく
セットされた音色で発音を行うことができる。
ドデータをトラップし、トラップしたデータを元に楽譜
等のデータを表示部6に供給して表示することができ
る。したがって、演奏中の音符をリアルタイムで確認し
ながら演奏を行うことができる。
手段が共有記憶手段にアクセスして楽音データの書き込
み又は読み出しのデータ処理を行っているときに、特定
の制御手段が楽音データを取り込んだ場合にはその楽音
データを専用記憶手段に書き込むので、他の制御手段の
データ処理を中断することなく特定の制御手段によって
取り込まれた楽音データを保存する。したがって、複数
のCPUを有する楽音制御装置において、データ処理の
効率を低下させることなくCPU間におけるデータの授
受を行うことができる。
手段が一方的にオートパワーオフを行うのではなく、他
の制御手段の応答信号を受けてオートパワーオフを行
う。したがって、データの破壊を招くことなくオートパ
ワーオフ機能を発揮させることができる。
ク図。
部構成を示す図。
フローチャート。
フローチャート。
ンのフローチャート。
ーチンのフローチャート。
ーチンのフローチャート。
ローチャート。
ローチャート。
ブルーチンのフローチャート。
示す図。
フローチャート。
ブルーチンのフローチャート。
子を示す図。
NT処理のフローチャート。
INT処理のフローチャート。
のフローチャート。
ローチャート。
ブルーチンのフローチャート。
Claims (9)
- 【請求項1】 複数の制御手段と、前記複数の制御手段
のうち特定の制御手段がアクセス可能な専用記憶手段
と、当該特定の制御手段及び前記他の制御手段がアクセ
ス可能な共有記憶手段とを有し、 前記他の制御手段は、前記共有記憶手段にアクセスして
前記特定の制御手段の間で授受すべき楽音データの読み
出し又は書き込みを行い、 前記特定の制御手段は、処理に係る楽音データを前記専
用記憶手段に書き込み、当該書き込んだ楽音データを前
記共有記憶手段に転送することを特徴とする楽音制御装
置。 - 【請求項2】 前記特定の制御手段及び前記他の制御手
段と前記共有記憶手段との間を接続するバスを有し、前
記特定の制御手段及び前記他の制御手段は、当該バスの
使用権を確保して前記共有記憶手段にアクセスすること
を特徴とする請求項1記載の楽音制御装置。 - 【請求項3】 前記特定の制御手段は、外部から受信す
る楽音データを前記専用記憶手段に書き込むことを特徴
とする請求項1又は2記載の楽音制御装置。 - 【請求項4】 前記楽音データは、MIDI装置から受
信するMIDIデータであることを特徴とする請求項3
記載の楽音制御装置。 - 【請求項5】 オートパワーオフ機能を有する特定の制
御手段及び他の制御手段からなる複数の制御手段を有
し、前記特定の制御手段は、前記他の制御手段に電源停
止の旨の通知信号を送信し、前記他の制御手段から応答
信号を受信したときに前記オートパワーオフ機能を作動
させることを特徴とする楽音制御装置。 - 【請求項6】 前記他の制御手段は、前記特定の制御手
段から前記通知信号を受信したときは所定の処理が終了
した後前記応答信号を前記特定の制御手段に送信するこ
とを特徴とする請求項5記載の楽音制御装置。 - 【請求項7】 前記特定の制御手段は、前記他の制御手
段に前記通知信号を送信した後所定時間経過しても当該
他の制御手段から前記応答信号を受信しない場合には前
記オートパワーオフ機能を作動させることを特徴とする
請求項6記載の楽音制御装置。 - 【請求項8】 前記特定の制御手段は、電源スイッチの
オフ状態を検出したとき前記他の制御手段に前記通知信
号を送信することを特徴とする請求項5〜7のいずれか
に記載の楽音制御装置。 - 【請求項9】 前記特定の制御手段は、前記他の制御手
段から楽音データを受信しない時間があらかじめ定めた
設定時間を超えたときに前記他の制御手段に前記通知信
号を送信することを特徴とする請求項5〜7のいずれか
に記載の楽音制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7252067A JPH0973292A (ja) | 1995-09-06 | 1995-09-06 | 楽音制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7252067A JPH0973292A (ja) | 1995-09-06 | 1995-09-06 | 楽音制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0973292A true JPH0973292A (ja) | 1997-03-18 |
Family
ID=17232097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7252067A Pending JPH0973292A (ja) | 1995-09-06 | 1995-09-06 | 楽音制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0973292A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100502639B1 (ko) * | 2001-06-15 | 2005-07-22 | 야마하 가부시키가이샤 | 채널들간에 파라미터들을 공유하는 톤 발생기 장치 |
-
1995
- 1995-09-06 JP JP7252067A patent/JPH0973292A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100502639B1 (ko) * | 2001-06-15 | 2005-07-22 | 야마하 가부시키가이샤 | 채널들간에 파라미터들을 공유하는 톤 발생기 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0973292A (ja) | 楽音制御装置 | |
JP2629891B2 (ja) | 楽音信号発生装置 | |
JPH0876758A (ja) | 自動伴奏装置 | |
JPH0314715Y2 (ja) | ||
JPH0723839Y2 (ja) | 自動リズム演奏装置 | |
JP3407375B2 (ja) | 自動編曲装置 | |
JP2893698B2 (ja) | 楽音信号発生装置 | |
JPH0633518Y2 (ja) | 外部音可変長記録装置 | |
JP2570819B2 (ja) | 電子楽器 | |
JPH06161624A (ja) | 割り込み制御方法 | |
JP2513385B2 (ja) | 演奏装置 | |
JP2625668B2 (ja) | 自動演奏装置 | |
JP3128888B2 (ja) | 自動伴奏装置 | |
JP2546217B2 (ja) | 演奏装置 | |
JP2692400B2 (ja) | 電子楽器の電源制御装置 | |
JPH0695665A (ja) | 電子楽器 | |
JPH08106285A (ja) | 自動演奏装置 | |
JP3050121B2 (ja) | パッケージ設定制御システム | |
JP2760398B2 (ja) | 自動演奏装置 | |
JPH03216698A (ja) | 電子楽器の音量制御装置 | |
JPH0437993B2 (ja) | ||
JPH046959B2 (ja) | ||
JPH08129379A (ja) | 電子楽器のデータ設定装置 | |
JPH046958B2 (ja) | ||
JPH11259072A (ja) | 電子楽器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040802 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040818 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050531 |