JP3346710B2 - 発音指示処理方法および発音指示処理装置 - Google Patents

発音指示処理方法および発音指示処理装置

Info

Publication number
JP3346710B2
JP3346710B2 JP26530296A JP26530296A JP3346710B2 JP 3346710 B2 JP3346710 B2 JP 3346710B2 JP 26530296 A JP26530296 A JP 26530296A JP 26530296 A JP26530296 A JP 26530296A JP 3346710 B2 JP3346710 B2 JP 3346710B2
Authority
JP
Japan
Prior art keywords
note
instruction
sounding
tone
sounding instruction
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 - Fee Related
Application number
JP26530296A
Other languages
English (en)
Other versions
JPH1091163A (ja
Inventor
毅 坂田
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 JP26530296A priority Critical patent/JP3346710B2/ja
Publication of JPH1091163A publication Critical patent/JPH1091163A/ja
Application granted granted Critical
Publication of JP3346710B2 publication Critical patent/JP3346710B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、発音指示処理方法
および発音指示処理装置に関し、さらに詳細には、発音
指示から実際に発音されるまでの時間間隔を可変するこ
とのできる発音指示処理方法および発音指示処理装置に
関する。
【0002】
【従来の技術】近年、電子楽器においては、マイクロ・
コンピューターにより各種の制御を行い、楽音を生成す
るようになされている。即ち、近年の電子楽器は、マイ
クロ・コンピューターを用いて鍵盤の押鍵速度や押鍵さ
れた音高などに応じて複雑な演算を行い、種々の音色に
より表現力の豊かな演奏を行うことができるようになさ
れている。
【0003】しかしながら、マイクロ・コンピューター
を用いた従来の電子楽器においては、マイクロ・コンピ
ューターにより行われる演算の複雑さ故に、鍵盤の押鍵
などによる発音指示があってから実際に発音されるまで
に、多くの処理時間を要することとなっていた。
【0004】ところで、電子楽器のマイクロ・コンピュ
ーターにおいては、鍵盤の押鍵などによる発音指示のそ
れぞれに対して順次所定の演算を行っている。従って、
同時に複数の押鍵を行うことにより同時に複数の発音指
示が行われた場合には、当該複数の同時発音指示に対す
る演算を順次行うことになり、各演算毎の処理時間が順
次累積されることになる。このため、複数の同時発音指
示に対応する全ての発音が完了するまでの処理時間は、
当該複数の同時発音指示の数に比例して長くなることに
なる。
【0005】つまり、従来の電子楽器においては、同時
に複数の押鍵を行うことにより同時に複数の発音指示が
行われた場合と単一の押鍵による単一の発音指示が行わ
れた場合とでは、当該発音指示に対応する発音処理が完
了するまでの時間が異なることになり、その結果、一定
の間隔で楽音を発音させたいにもかかわらず、実際に楽
音が発音される際にはその間隔に乱れが生じてしまう恐
れがあるという問題点があった。
【0006】特に、こうした予期しない発音間隔の乱れ
が、一定の間隔で楽音を発音することを期待されるリズ
ム楽器の音色などによる発音の際に生じると、リズムの
よれとなって演奏に重大な支障をきたすという問題点が
あった。
【0007】例えば、4分の4拍子の楽曲において、電
子楽器の鍵盤を押鍵して発音指示を行うことによって、
1小節に4分音符の間隔でハイハット(HiHat)の
音色の楽音を単音で4個鳴らすリズムに合わせて、各小
節の先頭で2分音符の音長でピアノ(Piano)の音
色の楽音を和音(音高は、例えば、「F3」、「A
3」、「C4」および「E4」)で演奏する場合につい
て考察してみる。
【0008】ここで、電子楽器に搭載されているマイク
ロ・コンピューターによる1個の押鍵による発音指示に
対する発音処理時間を10ミリ秒(msec)とし、テ
ンポは「4分音符=120」(1分間に4分音符を12
0回発音する速度)とする。このように、テンポが「4
分音符=120」であるので、4分音符の長さは500
msecとなる。
【0009】また、押鍵によるピアノの音色による発音
指示とハイハットの音色による発音指示とは、ピアノの
音色による発音指示の方がわずかに早くなされ、ピアノ
の音色による発音指示に対応する発音処理を先に行って
から、ハイハットの音色による発音指示に対応する発音
処理を行うものとする。
【0010】従って、ピアノの音色による和音演奏を行
わせるための押鍵による発音指示がない場合には、図1
に示すように、ハイハットの音色による発音を行わせる
ための押鍵による発音指示があってから、毎回10ms
ec後に発音が行われ、結果として、正確に500ms
ecの一定間隔でハイハットの音色により単音が発音さ
れる。
【0011】ところが、ピアノの音色による和音演奏を
行わせるための押鍵による発音指示あった場合には、図
2に示すように、小節の先頭においては5個の押鍵によ
る5個の発音指示(ピアノの音色による発音指示が4個
とハイハットの音色による発音指示が1個)に対する処
理時間が累積し、ハイハットの音色による発音を行わせ
るための押鍵による発音指示があってから50msec
後に発音が行われ、その結果、ハイハットの音色による
楽音の発音間隔が500msec一定ではなくなってし
まうという問題点があった。
【0012】
【発明が解決しようとする課題】本発明は、上記したよ
うな問題点に鑑みてなされたものであり、その目的とす
るところは、発音指示から実際に発音されるまでの時間
間隔のばらつきを軽減し、一定の時間間隔で楽音を発音
することを可能にした発音指示処理方法および発音指示
処理装置を提供することにある。
【0013】例えば、上記した図2に示す例において、
各小節の先頭以外のハイハットの音色による発音に際
し、図3に示すように、発音指示から40msecの遅
延(Delay)を付与した後に発音するようにすれ
ば、正確に500msecの一定間隔でハイハットの音
色による発音が行われることになり、本発明による発音
指示処理方法および発音指示処理装置は、発音指示から
実際の発音に要するまでの時間間隔に応じて、上記した
発音の遅延を実現することを目的とするものである。
【0014】
【課題を解決するための手段】上記目的を達成するため
に、本発明のうち請求項1に記載の発明は、順次に入力
された複数の発音指示にそれぞれ応じて、楽音生成手段
に対して各発音指示に対応する楽音の発音指示を順次出
力する発音指示処理方法であって、発音指示が入力され
たときからその発音指示に応じて楽音の発音指示を出力
したときまでの経過時間を計測し、上記発音指示よりも
後に入力される発音指示について、発音指示が入力され
たときから上記経過時間に応じた時間後にその発音指示
に応じた楽音の発音指示を出力し、発音指示が入力され
てから楽音生成手段に対してその発音指示に対応する楽
音の発音指示を出力するまでの経過時間が略一定となる
ようにするようにしたものである。
【0015】
【0016】
【0017】
【0018】なお、コンピュータに上記した請求項1に
かかる各手順を実行させるためのプログラムを記録した
媒体も、本発明の範囲に属するものである。
【0019】また、本発明のうち請求項2に記載の発明
は、順次に入力された複数の発音指示にそれぞれ応じ
て、楽音生成手段に対して各発音指示に対応する楽音の
発音指示を順次出力する発音指示処理装置であって、発
音指示が入力されたときからその発音指示に応じて楽音
の発音指示を出力したときまでの経過時間を計測する計
測手段と、上記発音指示よりも後に入力される発音指示
について、発音指示が入力されたときから上記計測手段
により計測された経過時間に応じた時間後にその発音指
示に応じた楽音の発音指示を出力する発音指示手段とを
有し、発音指示が入力されてから楽音生成手段に対して
その発音指示に対応する楽音の発音指示を出力するまで
の経過時間が略一定となるようにするようにしたもので
ある。
【0020】
【0021】
【0022】
【0023】なお、コンピュータを上記した請求項2に
かかる各手段として機能させるためのプログラムを記録
した媒体も、本発明の範囲に属するものである。
【0024】
【発明の実施の形態】以下、添付の図面を参照しなが
ら、本発明による発音指示処理方法および発音指示処理
装置の実施の形態の一例を詳細に説明する。
【0025】図4には、本発明を実施するための電子楽
器の一例を示すブロック構成図が示されている。
【0026】この電子楽器は、その全体の動作の制御を
中央制御装置10を用いて制御するように構成されてお
り、シーケンサー(Sequencer)12、トーン
・ジェネレーター(Tone Generator)1
4、D/A変換器(D/AConvertor)16お
よびスピーカー(Speaker)18を備えている。
以下、上記した各構成を詳細に説明する。
【0027】中央制御装置(Main Control
ler)10は、フローチャートを参照しながら後述す
る処理などを実行するための所定のプログラムならびに
プログラム実行時に必要なデータなどを記憶したリード
・オンリ・メモリ(ROM)10aと、ROM10aに
記憶されたプログラムを読み出すことによって動作の制
御を行う中央処理装置(CPU)10bと、CPU10
aによるプログラムの実行に必要なワーキング・エリア
としてのランダム・アクセス・メモリ(RAM)10c
とより構成されている。
【0028】シーケンサー12は、シーケンサー12に
内蔵されたメモリに予め記憶された演奏データに従っ
て、鍵盤の押鍵による発音指示に相当するノート・オン
・メッセージ(Note On Message)なら
びに鍵盤の離鍵による消音指示に相当するノート・オフ
・メッセージ(Note Off Message)を
中央制御装置10へ出力する。
【0029】ここで、ノート・オン・メッセージは、音
色を示すパート・ナンバー(Part#)と、音高を示
すノート・ナンバー(Note#)と、鍵盤への押鍵速
度を示すベロシティ(Velocity)とより構成さ
れており、これらパート・ナンバー、ノート・ナンバー
およびベロシティにより、任意の音色、音高および強度
の発音指示を示すものである。
【0030】また、ノート・オフ・メッセージは、音色
を示すパート・ナンバー(Part#)と、音高を示す
ノート・ナンバー(Note#)とより構成されてお
り、これらパート・ナンバーおよびノート・ナンバーに
より、任意の音色および音高の消音指示を示すものであ
る。
【0031】トーン・ジェネレーター14は、中央制御
装置10から出力されたスタート・メッセージ(Sta
rt Message)によって楽音の生成を開始し、
中央制御装置10から出力されたストップ・メッセージ
(Stop Message)によって楽音の生成を停
止する。そして、このトーン・ジェネレーター14は、
生成した楽音をデジタル・オーディオ・データ(Dig
ital AudioData)として、D/A変換器
16へ出力する。
【0032】ここで、スタート・メッセージは、音色を
示すパート・ナンバー(Part#)と、音高を示すノ
ート・ナンバー(Note#)と、音量を示すレベル
(Level)とより構成されており、これらパート・
ナンバー、ノート・ナンバーおよびレベルにより、任意
の音色、音高および音量による楽音の生成の開始を指定
する。
【0033】また、ストップ・メッセージは、音色を示
すパート・ナンバー(Part#)と、音高を示すノー
ト・ナンバー(Note#)とより構成されており、こ
れらパート・ナンバーおよびノート・ナンバーにより、
当該パート・ナンバーおよびノート・ナンバーに対応す
る音色および音高で発音中の楽音の生成の停止を指定す
る。
【0034】ところで、この電子楽器においては、パー
ト・ナンバー1(Part#1)からパート・ナンバー
16(Part#16)までの16のパートが設定され
ており、各パート・ナンバーと音色との対応関係は、図
5に示すように設定されている。そして、パート・ナン
バー10、即ち、ドラムス(Drums)の音色が指定
されている場合にのみ、ノート・ナンバーは音高ではな
くて、図6に示すように各種の音色を指定するものとす
る。
【0035】なお、この電子楽器においては、上記した
ようにパート・ナンバーは1〜16の値をとるものであ
り、ノート・ナンバーは0〜127の値をとるものとす
る。D/A変換器16は、トーン・ジェネレーター14
から出力されたデジタル・オーディオ・データをアナロ
グ・オーディオ・データ(Analog Audio
Data)に変換し、スピーカー18に出力する。
【0036】そして、スピーカー18は、D/A変換器
16から出力されたアナログ・オーディオ・データを音
声として空間に放出することになる。
【0037】次に、フローチャートを参照しながら上記
した電子楽器により実行される処理について説明する
が、理解を容易にするために、フローチャートにおいて
使用される各種変数の主なものを予め説明しておく。
【0038】(1)CurrentTime 現在時刻を表し、電源投入時に0に初期化される。
【0039】(2)DelayTime 中央制御装置10がノート・オン・メッセージを受信し
てから実際に発音処理を行うまでの遅延時間を保持し、
電源投入時に0に初期化される。
【0040】(3)DecCounter DelayTimeをデクリメントするためのカウンタ
であり、電源投入時に0に初期化される。
【0041】(4)RxStatus[Part#]
[Note#] RxStatus[Part#][Note#]のPa
rt#に示すパート・ナンバーの音色およびNote#
に示すノート・ナンバーの音高で、ノート・オン・メッ
セージまたはノート・オフ・メッセージを受信したこと
を示す2次元配列であり、電源投入時に0に初期化され
る。RxStatus[Part#][Note#]
は、その値によって以下のような状態を示す。
【0042】0:ノート・オン・メッセージもノート・
オフ・メッセージも受信せず 1:ノート・オン・メッセージを受信 2:ノート・オフ・メッセージを受信 3:ノート・オン・メッセージを受信し発音の遅延中 (5)RxVelocity[Part#][Note
#] RxVelocity[Part#][Note#]の
Part#に示すパート・ナンバーの音色およびNot
e#に示すノート・ナンバーの音高について、ベロシテ
ィを保持する2次元配列であり、電源投入時に0に初期
化される。
【0043】(6)RxTime[Part#][No
te#] RxTime[Part#][Note#]のPart
#に示すパート・ナンバーの音色およびNote#に示
すノート・ナンバーの音高について、ノート・オン・メ
ッセージを受信した時刻を保持する2次元配列であり、
電源投入時に0に初期化される。
【0044】(7)Wait[Part#][Note
#] Wait[Part#][Note#]のPart#に
示すパート・ナンバーの音色およびNote#に示すノ
ート・ナンバーの音高について、発音処理を行うまでの
待ち時間を保持するカウンタであり、電源投入時に0に
初期化される。以下、フローチャートを参照しながら上
記した電子楽器により実行される処理について説明する
ものであり、まず、図7に示すフローチャートを参照し
ながら、タイマー割り込みルーチンの処理について説明
する。
【0045】このタイマー割り込みルーチンは、CPU
10bへの1msec毎のタイマー割り込みにより、1
msec間隔で起動される(ステップS702)。
【0046】このタイマー割り込みルーチンが起動され
ると、まず、CurrentTimeを1だけインクリ
メントするとともに、DecCounterを1だけイ
ンクリメントする(ステップS704)。
【0047】次に、DecCounterが10より小
さいか否かを判断し(ステップS706)、DecCo
unterが10より小さくないと判断された場合に
は、DecCounterに0を代入する(ステップS
708)。
【0048】一方、ステップS706の判断処理におい
てDecCounterが10より小さいと判断された
場合には、後述するステップS714へジャンプする。
【0049】ここで、ステップS706→ステップS7
08と処理が進んだ場合には、DelayTimeが0
より大きいか否かを判断し(ステップS710)、De
layTimeが0より大きいと判断された場合には、
DelayTimeを1だけデクリメントする(ステッ
プS712)。これにより、DelayTimeは、1
0msecにつき1の割合で時間の経過とともに減少す
ることになる。これは、DelayTimeを固定値と
した場合の発音の遅れがいつまでも残ることを防ぐため
である。
【0050】一方、ステップS710の判断処理におい
てDelayTimeが0より大きくないと判断された
場合には、ステップS714へジャンプする。
【0051】ステップS712の処理を終了した場合、
ステップS706の判断処理においてDecCount
erが10より小さいと判断された場合およびステップ
S710の判断処理においてDelayTimeが0よ
り大きくないと判断された場合には、ステップS714
へ進み、パート・ナンバーを示すループ・カウンターP
iを1に初期化し、さらにステップS716へ進み、ノ
ート・ナンバーを示すループ・カウンターNiを0に初
期化して、ループ・カウンターPiならびにループ・カ
ウンターNiに基づくループ処理により、パート・ナン
バー1〜パートナンバー16の各パート・ナンバーなら
びにノート・ナンバー0〜ノート・ナンバー127の各
ノート・ナンバーについて、ステップS718〜ステッ
プS720の処理を順次行う準備をする。
【0052】そして、ステップS718においては、
「Part#=Pi」および「Note#=Ni」に対
応するWaitが0であるか否かを判断し、「Part
#=Pi」および「Note#=Ni」に対応するWa
itが0でないと判断された場合には、ステップS72
0へ進んで、「Part#=Pi」および「Note#
=Ni」に対応するWaitを1だけデクリメントする
ことになる。このステップS720の処理を行うと、そ
れからステップS722へ進む。
【0053】一方、ステップS718の判断処理におい
て、「Part#=Pi」および「Note#=Ni」
に対応するWaitが0であると判断された場合には、
ステップS722へジャンプする。
【0054】ステップS722では、ループ・カウンタ
ーNiを1だけインクリメントして、ステップS724
へ進む。
【0055】ステップS724では、ループ・カウンタ
ーNiが127より大きいか否かを判断し、ループ・カ
ウンターNiが127より大きくないと判断された場合
には、ステップS718へ戻るものである。
【0056】一方、ステップS724の判断処理におい
てループ・カウンターNiが127より大きいと判断さ
れた場合には、ノート・ナンバー0〜ノート・ナンバー
127の各ノート・ナンバーについて、ステップS71
8〜ステップS720の処理を終了したことになり、ス
テップS726へ進んで、ループ・カウンターPiを1
だけインクリメントする。
【0057】それからステップS728へ進み、ループ
・カウンターPiが16より大きいか否かを判断し、ル
ープ・カウンターPiが16より大きくないと判断され
た場合には、ステップS716へ戻るものである。
【0058】これにより、パート・ナンバー1〜パート
・ナンバー16の各パート・ナンバーならびにノート・
ナンバー0〜ノート・ナンバー127の各ノート・ナン
バーについて、ステップS718〜ステップS720の
処理を行うことができる。
【0059】従って、Waitは、1msecにつき1
の割合で時間の経過とともに減少することになる。
【0060】一方、ステップS728の判断処理におい
てループ・カウンターPiが16より大きいと判断され
た場合には、パート・ナンバー1〜パート・ナンバー1
6の各パート・ナンバーならびにノート・ナンバー0〜
ノート・ナンバー127の各ノート・ナンバーについ
て、ステップS718〜ステップS720の処理を終了
したことになるので、このタイマー割り込み処理ルーチ
ンを終了する(ステップS730)。
【0061】次に、図8に示すフローチャートを参照し
ながら、ノート・メッセージ受信割り込みルーチンの処
理について説明する。
【0062】このノート・メッセージ受信割り込みルー
チンは、シーケンサー12から出力されたノート・オン
・メッセージまたはノート・オフ・メッセージを、中央
制御装置10が受信することにより起動される(ステッ
プS802)。
【0063】このノート・メッセージ受信割り込みルー
チンが起動されると、まず、ノート・オン・メッセージ
を受信したか否かを判断し(ステップS804)、ノー
ト・オン・メッセージを受信したと判断された場合に
は、受信したノート・オン・メッセージのパート・ナン
バーおよびノート・ナンバーに対応するRxStatu
s[Part#][Note#]に1を代入し、受信し
たノート・オン・メッセージのパート・ナンバーおよび
ノート・ナンバーに対応するRxVelocity[P
art#][Note#]に受信したノート・オン・メ
ッセージのベロシティを代入し、受信したノート・オン
・メッセージのパート・ナンバーおよびノート・ナンバ
ーに対応するRxTime[Part#][Note
#]に現在の時刻を表すCurrentTimeを代入
して(ステップS806)、このノート・メッセージ受
信割り込みルーチンを終了する(ステップS812)。
【0064】一方、ステップS804の判断処理におい
てノート・オン・メッセージを受信したのではないと判
断された場合には、ステップS808へ進む。
【0065】ステップS808においては、ノート・オ
フ・メッセージを受信したか否かを判断し(ステップS
804)、ノート・オフ・メッセージを受信したと判断
された場合には、受信したノート・オフ・メッセージの
パート・ナンバーおよびノート・ナンバーに対応するR
xStatus[Part#][Note#]に2を代
入し(ステップS810)、このノート・メッセージ受
信割り込みルーチンを終了する(ステップS812)。
【0066】一方、ステップS808の判断処理におい
てノート・オフ・メッセージを受信したのではないと判
断された場合には、そのままこのノート・メッセージ受
信割り込みルーチンを終了する(ステップS812)。
【0067】次に、図9に示すフローチャートを参照し
ながら、メイン・ルーチンの処理について説明する。
【0068】このメイン・ルーチンは、電源投入により
中央制御装置10が動作を開始するとともに起動される
(ステップS902)。
【0069】このメイン・ルーチンが起動されると、ま
ず、パート・ナンバーを示すループ・カウンターPを1
に初期化し(ステップS904)、さらにノート・ナン
バーを示すループ・カウンターNを0に初期化して(ス
テップS906)、ループ・カウンターPならびにルー
プ・カウンターNに基づくループ処理により、パート・
ナンバー1〜パートナンバー16の各パート・ナンバー
ならびにノート・ナンバー0〜ノート・ナンバー127
の各ノート・ナンバーについて、ステップS908以降
の処理を順次行う準備をする。
【0070】そして、ステップS908においては、変
数Rに「Part#=P」および「Note#=N」に
対応するRxStatusの値を代入する。
【0071】それから、変数Rが1であるか、即ち、ノ
ート・オン・メッセージを受信したか否かを判断し(ス
テップS910)、ノート・オン・メッセージを受信し
たと判断された場合には、ループ・カウンターPが10
であるか、即ち、ドラムスの音色であるか否かを判断す
る(ステップS912)。
【0072】このステップS912の判断処理におい
て、ループ・カウンターPが10でない、即ち、ドラム
スの音色でないと判断された場合には、図10に示すメ
イン・ルーチンのサブ・ルーチンたる発音処理ルーチン
を実行する。
【0073】一方、ループ・カウンターNが10であ
る、即ち、ドラムスの音色であると判断された場合に
は、ステップS914へ進む。
【0074】ステップS914では、変数WにCurr
entTimeと「Part#=P」および「Note
#=N」に対応するRxTimeとの差を代入する。従
って、変数Wは、ノート・オン・メッセージを受信して
から受信したノート・オン・メッセージが処理されるま
でに経過した時間を示すことになる。また、ステップS
914では、さらに、変数DにDelayTimeを代
入する。
【0075】ステップS914の処理を終了すると、ス
テップS916へ進み、WがDより大きいか否かを判断
する。
【0076】ステップS916でWがDより大きいと判
断された場合には、ステップS918へ進み、Dela
yTimeにWを代入する。これにより、DelayT
imeは、ノート・オン・メッセージを受信してから受
信したノート・オン・メッセージが処理されるまでに経
過した時間がDelayTimeに設定されている時間
よりも長くなった場合に、この経過した時間によって初
期化されることになる。即ち、発音処理に遅れが生じて
いない時点では、DelayTimeは0とされてお
り、発音処理に遅れが生じた場合に、その遅れ時間に応
じてDelayTimeが設定される。
【0077】そして、ステップS918の処理を終了す
ると、図10に示すメイン・ルーチンのサブ・ルーチン
たる発音処理ルーチンを実行する。
【0078】一方、ステップS916でWがDより大き
くないと判断された場合には、ステップS920へ進
み、「Part#=P」および「Note#=N」に対
応するWaitに、DとWとの差を代入する。これによ
り、Waitで示される時間経過後に発音処理を行え
ば、ノート・オン・メッセージを受信してから処理する
までに経過した時間が、DelayTimeに相当する
ことになる。さらに、「Part#=P」および「No
te#=N」に対応するRxStatusに、3を代入
する。これにより、ノート・オン・メッセージを受信し
遅延待ちであることを示す。
【0079】そして、ステップS920の処理を終了す
ると、後述するステップS928へ進む。
【0080】一方、ステップS910の判断処理で変数
Rは1でないと判断された場合には、変数Rが2である
か、即ち、ノート・オフ・メッセージを受信したか否か
を判断し(ステップS922)、ノート・オフ・メッセ
ージを受信したと判断された場合には、図11に示すメ
イン・ルーチンのサブ・ルーチンたる消音処理ルーチン
を実行する。
【0081】次に、ステップS922の判断処理で変数
Rは2でないと判断された場合には、変数Rが3である
か、即ち、ノート・オン・メッセージを受信し遅延中で
あるか否かを判断する(ステップS924)。
【0082】ステップS924の判断処理で変数Rが3
である、即ち、ノート・オン・メッセージを受信し遅延
中であると判断された場合には、「Part#=P」お
よび「Note#=N」に対応するWaitが0である
か否かを判断する(ステップS926)。
【0083】ステップS926の判断処理で「Part
#=P」および「Note#=N」に対応するWait
が0であると判断された場合には、図10に示すメイン
・ルーチンのサブ・ルーチンたる発音処理ルーチンを実
行する。
【0084】一方、ステップS926の判断処理で「P
art#=P」および「Note#=N」に対応するW
aitが0でないと判断された場合には、ステップS9
28へ進む。
【0085】ステップS928では、ループ・カウンタ
ーNを1だけインクリメントして、ステップS930へ
進む。
【0086】ステップS930では、ループ・カウンタ
ーNが127より大きいか否かを判断し、ループ・カウ
ンターNが127より大きくないと判断された場合に
は、ステップS908へ戻るものである。
【0087】一方、ステップS930の判断処理におい
てループ・カウンターNが127より大きいと判断され
た場合には、ノート・ナンバー0〜ノート・ナンバー1
27の各ノート・ナンバーについて、ステップS908
以降の処理を終了したことになり、ステップS932へ
進んで、ループ・カウンターPを1だけインクリメント
する。
【0088】それからステップS934へ進み、ループ
・カウンターPが16より大きいか否かを判断し、ルー
プ・カウンターPが16より大きくないと判断された場
合には、ステップS908へ戻るものである。
【0089】これにより、パート・ナンバー1〜パート
・ナンバー16の各パート・ナンバーならびにノート・
ナンバー0〜ノート・ナンバー127の各ノート・ナン
バーについて、ステップS908以降の処理を行うこと
ができる。
【0090】一方、ステップS934の判断処理におい
てループ・カウンターPが16より大きいと判断された
場合には、パート・ナンバー1〜パート・ナンバー16
の各パート・ナンバーならびにノート・ナンバー0〜ノ
ート・ナンバー127の各ノート・ナンバーについて、
ステップS908以降の処理を終了したことになるの
で、ステップS904戻り、このメイン・ルーチンを繰
り返し実行する。
【0091】なお、メイン・ルーチンのステップS92
0において、待ち時間(Wait[P][N])を設定
し、メイン・ルーチン内の上記したループ処理中でその
待ち時間(Wait[P][N])が経過したか否かを
判断しているため、理論的には、その待ち時間(Wai
t[P][N])が経過する直前に他のパートの発音処
理を行うと、待ち時間(Wait[P][N])の経過
判断が遅れることになる。しかしながら、ノート・オン
・メッセージは、楽曲の特質に応じて小節内の特定の箇
所(例えば、小節の先頭など。)に集中しており、小節
内のいたるところにノート・オン・メッセージが集中し
ていることは稀である。従って、この特定箇所から若干
の時間が遅れた時点である待ち時間(Wait[P]
[N])が経過する時点に他のパートのノート・オン・
メッセージが存在することは稀であり、現実には待ち時
間(Wait[P][N])の経過判断に遅れを生じる
ことはない。
【0092】次に、図10に示すフローチャートを参照
しながら、発音処理ルーチンの処理について説明する。
【0093】この発音処理ルーチンにおいて、まず、
「Part#=P」および「Note#=N」に対応す
るRxStatusに0を代入する(ステップS100
2)。それから、変数Vに「Part#=P」および
「Note#=N」に対応するRxVelocityを
代入する(ステップS1004)。
【0094】そして、P、N、Vなどの値により音量を
計算し、変数Lに代入する(ステップS1006)。こ
こで、音量は、様々要因によって決定されることになる
ものであり、こうした要因としては、例えば、 ・音色によって音量に差をもたせる。 ・ノート・ナンバーによって音量に差をもたせる。 ・ベロシティが強いほど大きな音量にする。 などの要因が挙げられる。これらの要因が多いほど、ま
た、複雑なほど音量を求めるための演算は複雑になり、
演算時間もかかるようになる。この演算時間が、発音の
ための処理時間の多くの部分を占めることとなる。
【0095】ステップS1006の処理を終了すると、
ステップS1008へ進み、中央制御装置10は、「P
art#=P」、「Note#=N」および「Leve
l=L」として、トーン・ジェネレーター14にスター
ト・メッセージを出力する。これにより、トーン・ジェ
ネレーター14は、「Part#=P」、「Note#
=N」および「Level=L」に対応する楽音の生成
を開始する。
【0096】そして、ステップS1008の処理を終了
すると、メイン・ルーチンのステップS928の処理へ
リターンする。
【0097】次に、図11に示すフローチャートを参照
しながら、消音処理ルーチンの処理について説明する。
【0098】この消音処理ルーチンにおいて、まず、
「Part#=P」および「Note#=N」に対応す
るRxStatusに0を代入する(ステップS110
2)。ステップS1102の処理を終了すると、ステッ
プS1104へ進み、中央制御装置10は、「Part
#=P」および「Note#=N」として、トーン・ジ
ェネレーター14にストップ・メッセージを出力する。
これにより、トーン・ジェネレーター14は、「Par
t#=P」および「Note#=N」に対応する楽音の
生成を停止する。
【0099】そして、ステップS1102の処理を終了
すると、メイン・ルーチンのステップS928の処理へ
リターンする。
【0100】なお、上記した本発明の実施に形態は、以
下に説明するように適宜変形してもよい。
【0101】(1)上記実施の形態においては、ノート
・オン・メッセージを処理するにあたり、ノート・オン
・メッセージの処理開始時点から発音処理を行うまでの
待ち時間(上記実施の形態におけるWait[P]
「N])を設定し、この待ち時間(上記実施の形態にお
けるWait[P]「N])が経過した時に発音処理を
行うことにより、発音の遅延を実現しているが、こうし
た方法に限られることなしに、こうした方法以外の方法
で発音の遅延を実現してもよい。例えば、ノート・オン
・メッセージの処理開始時点(上記実施の形態において
はステップS920の時点)において待ち時間(上記実
施の形態におけるWait[P]「N])を設定する代
わりに、発音処理を行うべき時刻を設定し、設定した発
音処理を行うべき時刻になったら、発音処理を行うよう
にしてもよい。さらに、こうした場合には、現時刻に遅
延時間(上記実施の形態におけるDelayTime)
を加算した和を発音処理を行うべき時刻とすればよい。
【0102】また、待ち時間(上記実施の形態における
Wait[P]「N])は、ノート・オン・メッセージ
の受信時に設定するようにしてもよい。
【0103】あるいは、発音処理を行うべき時刻を、ノ
ート・オン・メッセージの受信時に設定するようにして
もよい。こうした場合にも、ノート・オン・メッセージ
を受信した現時刻に遅延時間(上記実施の形態における
DelayTime)を加算した和を発音処理を行うべ
き時刻とすればよい。
【0104】(2)上記実施の形態においては、遅延さ
せる対象のパートは1つのパート(パート・ナンバー1
0:ドラムス)のみであるが、遅延させる対象のパート
として複数のパートがあって、その中からパートを選択
して遅延させるような場合には、パートの選択により遅
延させるパートの変更があったときに、遅延時間(上記
実施の形態におけるDelayTime)を0にクリア
するようにしてもよい。
【0105】(3)上記実施の形態においては、遅延さ
せる対象のパートは特定の1つのパート(パート・ナン
バー10:ドラムス)のみであるが、当該特定の1つの
パートに加えて、他のパートを遅延させるようにしても
よい。この場合には、遅延時間(上記実施の形態におけ
るDelayTime)は各パート毎に設定するように
してもよい。また、各パートに設定されている音色の変
更の指示があった場合には、当該パートに設定された遅
延時間(上記実施の形態におけるDelayTime)
を0にクリアするようにしてもよい。
【0106】(4)上記実施の形態においては、遅延時
間(上記実施の形態におけるDelayTime)に上
限値を設けてはいないが、遅延時間(上記実施の形態に
おけるDelayTime)に上限値を設けるようにし
て、所定の時間以上の遅延を抑制するようにしてもよ
い。
【0107】(5)上記実施の形態においては、計測さ
れた時間の最大値を遅延時間(上記実施の形態における
DelayTime)として保持するようにしたが、計
測された時間の平均値などのような最大値以外の値を保
持するようにしてもよい。具体的には、前回のステップ
S914において変数Wを記憶しておき、今回のステッ
プS914においてこの前回の変数Wと今回の変数Wと
の平均をとり、ステップS916においてこの平均化さ
れた変数Wを変数Dとの比較対象とし、ステップS91
8においてこの平均化された変数Wにより遅延時間(上
記実施の形態におけるDelayTime)を初期化す
ればよい。あるいは、前回のステップS918において
遅延時間(上記実施の形態におけるDelayTim
e)を記憶しておき、今回のステップS918において
この前回の遅延時間と変数Wとの平均をとり、この平均
値により遅延時間を初期化すればよい。
【0108】(6)上記実施の形態においては、発音指
示に関してのみ遅延させるようにしたが、消音指示に関
しても遅延させるようにしてもよい。
【0109】(7)シーケンサーから演奏の開始を示す
スタート・メッセージや演奏の停止を示すストップ・メ
ッセージが送られてきたときに、遅延時間(上記実施の
形態におけるDelayTime)を0にクリアするよ
うにしてもよい。
【0110】(8)上記実施の形態においては、遅延時
間(上記実施の形態におけるDelayTime)を1
0msecにつき1の割合で時間の経過とともに減少さ
せたが、減少させる割合はこれ以外のものでもよく、使
用者が任意に設定できるようにしてもよい。
【0111】
【発明の効果】以上において説明したように、本発明に
よる発音指示処理方法および発音指示処理装置によれ
ば、発音指示から実際に発音されるまでの時間間隔のば
らつきが軽減されて、一定の時間間隔で楽音を発音する
ことが可能になるという優れた効果を奏する。
【図面の簡単な説明】
【図1】発音指示と実際の発音との関係を示す説明図で
ある。
【図2】発音指示と実際の発音との関係を示す説明図で
ある。
【図3】発音指示と実際の発音との関係を示す説明図で
ある。
【図4】本発明を実施するための電子楽器の一例を示す
ブロック構成図である。
【図5】各パート・ナンバーと音色との対応関係を示す
説明図である。
【図6】パート・ナンバー10、即ち、ドラムス(Dr
ums)の音色が指定されている場合における、ノート
・ナンバーと音色との対応関係を示す説明図である。
【図7】タイマー割り込みルーチンのフローチャートで
ある。
【図8】ノート・メッセージ受信割り込みルーチンのフ
ローチャートである。
【図9】メイン・ルーチンのフローチャートである。
【図10】発音処理ルーチンのフローチャートである。
【図11】消音処理ルーチンのフローチャートである。
【符号の説明】
10 中央制御装置 10a ROM 10b CPU 10c RAM 12 シーケンサー 14 トーン・ジェネレーター 16 D/A変換器 18 スピーカー
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G10H 1/00 101 - 102 G10H 1/18 G10H 1/40

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 順次に入力された複数の発音指示にそれ
    ぞれ応じて、楽音生成手段に対して各発音指示に対応す
    る楽音の発音指示を順次出力する発音指示処理方法であ
    って、 発音指示が入力されたときからその発音指示に応じて楽
    音の発音指示を出力したときまでの経過時間を計測し、 前記発音指示よりも後に入力される発音指示について、
    発音指示が入力されたときから前記経過時間に応じた時
    間後にその発音指示に応じた楽音の発音指示を出力し、 発音指示が入力されてから楽音生成手段に対してその発
    音指示に対応する楽音の発音指示を出力するまでの経過
    時間が略一定となるようにすることを特徴とする発音指
    示処理方法。
  2. 【請求項2】 順次に入力された複数の発音指示にそれ
    ぞれ応じて、楽音生成手段に対して各発音指示に対応す
    る楽音の発音指示を順次出力する発音指示処理装置であ
    って、 発音指示が入力されたときからその発音指示に応じて楽
    音の発音指示を出力したときまでの経過時間を計測する
    計測手段と、 前記発音指示よりも後に入力される発音指示について、
    発音指示が入力されたときから前記計測手段により計測
    された経過時間に応じた時間後にその発音指示に応じた
    楽音の発音指示を出力する発音指示手段とを有し、 発音指示が入力されてから楽音生成手段に対してその発
    音指示に対応する楽音の発音指示を出力するまでの経過
    時間が略一定となるようにすることを特徴とする発音指
    示処理装置。
JP26530296A 1996-09-13 1996-09-13 発音指示処理方法および発音指示処理装置 Expired - Fee Related JP3346710B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP26530296A JP3346710B2 (ja) 1996-09-13 1996-09-13 発音指示処理方法および発音指示処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26530296A JP3346710B2 (ja) 1996-09-13 1996-09-13 発音指示処理方法および発音指示処理装置

Publications (2)

Publication Number Publication Date
JPH1091163A JPH1091163A (ja) 1998-04-10
JP3346710B2 true JP3346710B2 (ja) 2002-11-18

Family

ID=17415320

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26530296A Expired - Fee Related JP3346710B2 (ja) 1996-09-13 1996-09-13 発音指示処理方法および発音指示処理装置

Country Status (1)

Country Link
JP (1) JP3346710B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7332002B2 (ja) * 2018-03-22 2023-08-23 カシオ計算機株式会社 電子楽器、方法及びプログラム
JP7331890B2 (ja) * 2021-08-02 2023-08-23 カシオ計算機株式会社 電子楽器、電子楽器の制御方法、及びプログラム

Also Published As

Publication number Publication date
JPH1091163A (ja) 1998-04-10

Similar Documents

Publication Publication Date Title
JP3209156B2 (ja) 自動伴奏パターン発生装置及び方法
JP3346710B2 (ja) 発音指示処理方法および発音指示処理装置
CN113838446B (zh) 电子乐器、伴奏音指示方法以及伴奏音自动生成装置
JP3844286B2 (ja) 電子楽器の自動伴奏装置
JPH03242697A (ja) 電子楽器
JPH0968980A (ja) 電子鍵盤楽器の音色制御装置
US5508471A (en) Automatic performance apparatus for an electronic musical instrument
JP2932841B2 (ja) 電子楽器
JP2005128208A (ja) 演奏再生装置及び演奏再生制御プログラム
JP4214845B2 (ja) 自動アルペジオ装置および同装置に適用されるコンピュータプログラム
JPH06348258A (ja) 電子楽器の自動演奏装置
JP3203734B2 (ja) 演奏支援装置
JP3549083B2 (ja) 音量制御装置
JP2739244B2 (ja) 電子楽器
JP3557667B2 (ja) 自動演奏装置
JP3193131B2 (ja) 電子楽器
JP2000148142A (ja) コンサ―トマジック自動演奏装置
JP2000075859A (ja) 効果付与装置および自動演奏装置
JP2004361528A (ja) 楽音信号発生装置及びレガート処理プログラム
JPH01179089A (ja) 自動伴奏装置
JP3499672B2 (ja) 自動演奏装置
JP3296248B2 (ja) 楽音演奏装置
JP2858314B2 (ja) 楽音特性制御装置
JPH0830273A (ja) 電子楽器のテンポ設定装置
JPH06314096A (ja) 電子楽器の前コード検出装置

Legal Events

Date Code Title Description
S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313532

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080906

Year of fee payment: 6

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110906

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees