JPH11259071A - 自動演奏装置 - Google Patents

自動演奏装置

Info

Publication number
JPH11259071A
JPH11259071A JP10076667A JP7666798A JPH11259071A JP H11259071 A JPH11259071 A JP H11259071A JP 10076667 A JP10076667 A JP 10076667A JP 7666798 A JP7666798 A JP 7666798A JP H11259071 A JPH11259071 A JP H11259071A
Authority
JP
Japan
Prior art keywords
performance
channel
sound source
music
song
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
JP10076667A
Other languages
English (en)
Inventor
Yasuto Saito
康人 斎藤
Hiroko Mejika
寛子 女鹿
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 JP10076667A priority Critical patent/JPH11259071A/ja
Publication of JPH11259071A publication Critical patent/JPH11259071A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】多数の機器群を必要とすることなしに、演奏デ
ータをクロスフェードさせながら連続して再生する。 【解決手段】少なくとも第1の曲と第2の曲とを並行し
て演奏する自動演奏装置であって、複数の音源と、第1
の曲を表す第1の演奏データおよび第2の曲を表す第2
の演奏データを記憶する記憶手段と、第1の演奏データ
および第2の演奏データに基づいて、第1の曲の演奏に
要する音源の数である第1の音源数と第2の曲の演奏に
要する音源の数である第2の音源数とを検出する音源数
検出手段と、音源数検出手段により検出された音源の数
に基づいて第1の曲と第2の曲とにそれぞれ音源を割り
当てる割当手段と、記憶手段から第1の演奏データを読
み出して、割当手段によって第1の曲に割り当てられた
音源を駆動するとともに、記憶手段から第2の演奏デー
タを読み出して、割当手段によって第2の曲に割り当て
られた音源を駆動する読み出し手段とを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、自動演奏装置に関
し、さらに詳細には、演奏データをクロスフェードさせ
ながら連続して再生することのできる自動演奏装置に関
する。
【0002】
【従来の技術】従来、2曲の演奏データをクロスフェー
ドさせながら連続して再生するには、例えば、2台の自
動演奏装置と、当該2台の自動演奏装置にそれぞれ接続
された2台のマルチティンバー音源と、当該2台のマル
チティンバー音源の音声出力を混合するオーディオミキ
サーとが必要であった。
【0003】ここで、上記した2台のマルチティンバー
音源はそれぞれ、複数の音源を有しており複数の楽器パ
ートを賄うことが可能な複合音源であって、アンサンブ
ル演奏が実現できるものである。
【0004】即ち、従来においては、2曲の演奏データ
をクロスフェードさせながら連続して再生しようとする
場合には、それぞれの曲を演奏するための互いに独立し
た構成としての、2台の自動演奏装置、2台のマルチテ
ィンバー音源、さらにはこれらの音声を混合するオーデ
ィオミキサーという多数の機器群を必要とするという問
題点があった。
【0005】
【発明が解決しようとする課題】そこで、本発明は、従
来の技術の有する上記したような問題点に鑑みてなされ
たものであり、その目的とするところは、多数の機器群
を必要とすることなしに、演奏データをクロスフェード
させながら連続して再生することのできる自動演奏装置
を提供することにある。
【0006】
【課題を解決するための手段】上記目的を達成するため
に、本発明のうち請求項1に記載の発明は、少なくとも
第1の曲と第2の曲とを並行して演奏する自動演奏装置
であって、複数の音源と、上記第1の曲を表す第1の演
奏データおよび上記第2の曲を表す第2の演奏データを
記憶する記憶手段と、上記第1の演奏データおよび上記
第2の演奏データに基づいて、上記第1の曲の演奏に要
する音源の数である第1の音源数と上記第2の曲の演奏
に要する音源の数である第2の音源数とを検出する音源
数検出手段と、上記音源数検出手段により検出された音
源の数に基づいて第1の曲と第2の曲とにそれぞれ上記
音源を割り当てる割当手段と、上記記憶手段から第1の
演奏データを読み出して、上記割当手段によって第1の
曲に割り当てられた音源を駆動するとともに、上記記憶
手段から第2の演奏データを読み出して、上記割当手段
によって第2の曲に割り当てられた音源を駆動する読み
出し手段とを有するようにしたものである。
【0007】従って、本発明のうち請求項1に記載の発
明においては、第1の曲と第2の曲とを並行して演奏す
るものにおいて、これらの第1の曲と第2の曲とのそれ
ぞれについて演奏に要する音源の数を検出し、これらの
音源数に基づいて第1の曲と第2の曲とに音源を割り当
てるようにしているので、限られた数の音源をそれぞれ
の曲で共用することにより有効に活用することができ、
それぞれの曲の演奏のために別々に音源を用意する場合
よりも全体として少ない数の音源だけでこれらの曲をク
ロスフェードさせながら連続して演奏することが可能と
なる。
【0008】また、マルチティンバー音源を用いる場合
においては、これを2つの曲それぞれに1台ずつ用意す
る必要がなく、1つのマルチティンバー音源のみでクロ
スフェードを実現することが可能となる。
【0009】また、本発明のうち請求項2に記載の発明
は、本発明のうち請求項1に記載の発明において、上記
割当手段は、上記音源数検出手段により検出された上記
第1の音源数と上記第2の音源数との総数が所定数を越
える場合において、上記第1の曲と上記第2の曲との少
なくとも一方の演奏を、上記第1の演奏データと上記第
2の演奏データとの少なくとも一方が示す演奏内容に基
づいて一部省略することにより、割り当てる音源の数を
調整するようにしたものである。
【0010】従って、本発明のうち請求項2に記載の発
明においては、第1の曲と第2の曲とのそれぞれの演奏
に要する音源の数の総和が所定数を越える場合には、演
奏データの示す演奏内容に基づいて演奏を一部省略する
ことにより割り当てる音源の数を調整するようにしてい
るので、音源の数が不足する場合においても演奏内容に
基づき一部の演奏を省略することで使用する音源の数が
節約でき、限られた数の音源だけでこれらの曲をクロス
フェードさせながら連続して演奏することが可能とな
る。
【0011】なお、演奏内容に基づき一部の演奏を省略
するとは、例えば、聴覚上目立たない部分の演奏を特定
し省略することである。
【0012】また、演奏内容とは、例えば、演奏される
音色、演奏される音量、演奏音の発音時間の長さ、演奏
音の発音音高、またはこれらを組み合わせたものであ
る。
【0013】また、本発明のうち請求項3に記載の発明
は、本発明のうち請求項1に記載の発明において、上記
記憶手段に記憶される上記第1の演奏データおよび上記
第2の演奏データは、それぞれ複数の演奏パートからな
る演奏データであって、上記割当手段は、上記演奏パー
ト毎に上記音源を割り当てるものであり、上記音源数検
出手段により検出された上記第1の音源数と上記第2の
音源数との総数が所定数を越える場合において、上記第
1の演奏データと上記第2の演奏データとの少なくとも
一方の演奏データが示す演奏パート毎の演奏内容に基づ
き演奏を省略する演奏パートを特定し、上記演奏を省略
する演奏パートには音源の割り当てを行わないようにし
たものである。
【0014】従って、本発明のうち請求項3に記載の発
明においては、第1の曲と第2の曲とを表すそれぞれの
演奏データが複数の演奏パートからなり、当該演奏パー
ト毎に音源を割り当てるものにおいて、第1の曲と第2
の曲とのそれぞれの演奏に要する音源の数の総和が所定
数を越える場合には、演奏パート毎の演奏内容に基づい
て演奏を省略する演奏パートを特定し、当該演奏パート
には音源を割り当てないようにしているので、音源の数
が不足する場合においても演奏内容に基づき特定した演
奏パートには音源を割り当てないことで使用する音源の
数が節約でき、限られた数の音源だけでこれらの曲をク
ロスフェードさせながら連続して演奏することが可能と
なる。
【0015】なお、演奏を省略する演奏パートとして
は、例えば、他の演奏パートと比べて演奏が聴覚上目立
たない演奏パートを選ぶとよい。
【0016】また、本発明のうち請求項4に記載の発明
は、本発明のうち請求項1、2または3のいずれか1項
に記載の発明において、複数の演奏区間を指定する指定
手段を有し、上記音源数検出手段は、上記指定手段で指
定される上記演奏区間毎に、この演奏区間に対応する上
記第1の演奏データの部分および上記第2の演奏データ
の部分に基づいて第1の音源数および第2の音源数を求
めるものであり、上記割当手段は、上記指定手段で指定
される上記演奏区間毎に音源の割り当てを行うようにし
たものである。
【0017】従って、本発明のうち請求項4に記載の発
明においては、複数の演奏区間毎に音源の割り当てを行
うようにしているので、第1の曲と第2の曲とのそれぞ
れが要求する音源の数の時間的な変化をも考慮した音源
の割り当てが可能となり、より効率的に音源を活用する
ことができる。
【0018】次に、添付の図面を参照しながら、本発明
による自動演奏装置の原理を説明することとするが、理
解を容易にするために、それぞれ最大「16」の演奏パ
ートに対応した演奏データよりなる曲Aと曲Bとを、
「16」の音源チャンネルにそれぞれ対応した音源を有
し、1つの音源チャンネルが1つの演奏パートを賄うこ
とができるマルチティンバー音源を用いてクロスフェー
ドさせながら連続して演奏する場合を例として説明す
る。
【0019】なお、上記した「演奏パート」は、以降に
おいては「演奏チャンネル」と表記することにする。
【0020】また、上記した「演奏チャンネル」とは演
奏データのチャンネル(パート)を意味し、「音源チャ
ンネル」とは音源のチャンネルを意味するものとしてそ
れぞれ区別する。本発明においては、後述するように、
例えば、演奏チャンネル「5」の演奏データを音源チャ
ンネル「3」で発音させるというような、演奏チャンネ
ルと音源チャンネルとの対応付けを行うようにしてい
る。
【0021】さて、図1には、曲Aと曲Bとの2つの曲
をクロスフェードさせながら連続して演奏する状態が示
されている。
【0022】図1において、「t」は演奏位置を示す変
数であり、演奏位置tは、曲Aの演奏開始時には「0」
にセットされているが、演奏の進行に伴い順次カウント
が進められていく。
【0023】本発明による自動演奏装置においては、演
奏位置tがクロスフェード区間開始地点Tsに到達する
と(t=Ts)、この時点で演奏を開始すべき曲Bにも
音源チャンネルを割り当てて曲Bの演奏を開始し、曲A
と曲Bとを並行して演奏を行うようにしている。そし
て、クロスフェード区間開始地点Tsからクロスフェー
ド区間終了地点Teまでのクロスフェード区間において
は、曲Aの音量を徐々に下げていくとともに、曲Bの音
量を徐々に上げていくことになる。さらに、演奏が進ん
で、演奏位置tがクロスフェード区間終了地点Teに到
達すると(t=Te)、曲Aの演奏を終了させるととも
に、曲Aが使用していた音源チャンネルを全て曲Bのた
めに開放して曲Bに割り当てるようにするものである。
【0024】ところで、演奏位置tがクロスフェード区
間開始地点Tsに到達したときに、曲Aと曲Bとに音源
チャンネルを分配する手法としては、以下に説明する手
法1と手法2とがある。これら手法1と手法2とは、ク
ロスフェード区間において曲Aで演奏される演奏チャン
ネルの数と曲Bで演奏される演奏チャンネルの数との合
計が、音源チャンネルの総数以下であるか否かによって
適宜使い分けることになる。 1.手法1の説明 まず、手法1について説明すると、この手法1は、クロ
スフェード区間において曲Aで演奏される演奏チャンネ
ルの数と曲Bで演奏される演奏チャンネルの数との合計
が、音源チャンネルの総数以下である場合、即ち、クロ
スフェード区間において曲Aおよび曲Bで演奏される演
奏チャンネルの総数に対して、音源チャンネルの数が足
りている場合に選択される手法である。
【0025】この手法1においては、クロスフェード区
間において曲Aが使用している音源チャンネルと曲Bが
使用しようとする音源チャンネルとの衝突を避けるため
に、本来曲Bが使用する予定にされていた音源チャンネ
ルを変更するようになされていることになる。
【0026】ここで、図2には、クロスフェード区間に
おける、曲Aおよび曲Bの演奏チャンネル(ch)毎の
演奏データの有無を示したチャンネルマップの一例が示
されている。図2において、「○」は該当する演奏チャ
ンネルに演奏データがあることを示し、「×」は該当す
る演奏チャンネルに演奏データがないことを示してい
る。
【0027】図2において、曲Aは演奏する演奏チャン
ネルの数が「6」であり、曲Bは演奏する演奏チャンネ
ルの数が「5」であるので、クロスフェード区間におい
て曲Aおよび曲Bで演奏される演奏チャンネルの総数、
即ち、クロスフェード区間において必要とされる音源チ
ャンネルの数は、「5+6=11」である。従って、
「16」の音源チャンネルを有する音源によって、クロ
スフェード区間において必要とされる音源チャンネルの
数を賄うことが可能である。
【0028】ところで、従来の自動演奏装置において
は、演奏チャンネルのチャンネル番号と音源チャンネル
のチャンネル番号とが一致していた、即ち、「演奏チャ
ンネル=音源チャンネル」であるので、 演奏チャンネル0=音源チャンネル0 演奏チャンネル1=音源チャンネル1 演奏チャンネル2=音源チャンネル2 ・ ・ ・ 演奏チャンネル14=音源チャンネル14 演奏チャンネル15=音源チャンネル15 という固定的な対応しかなされておらず、この対応関係
をそのまま曲Aと曲Bとの双方に適用してしまうと、音
源チャンネル1、音源チャンネル9および音源チャンネ
ル11が曲Aと曲Bとに2重に割り当てられてしまい不
都合が生じることになっていた。
【0029】このため、手法1においては、曲Bの演奏
チャンネル1、演奏チャンネル9および演奏チャンネル
11に音源チャンネル1、音源チャンネル9および音源
チャンネル11をそれぞれ割り当てるのではなくて、曲
Aが使用していない音源チャンネル(例えば、音源チャ
ンネル2、音源チャンネル3および音源チャンネル8)
に割り当てるようにしている。 2.手法2の説明 次に、手法2について説明すると、この手法2は、クロ
スフェード区間において曲Aで演奏される演奏チャンネ
ルの数と曲Bで演奏される演奏チャンネルの数との合計
が、音源チャンネルの総数を越える場合、即ち、クロス
フェード区間において曲Aおよび曲Bで演奏される演奏
チャンネルの総数に対して、音源チャンネルの数が足り
ない場合に選択される手法である。
【0030】この手法2においては、手法1と同様に、
クロスフェード区間において曲Aが使用している音源チ
ャンネルと曲Bが使用しようとする音源チャンネルとの
衝突を避けることに加え、曲Aが使用する音源チャンネ
ルの数と曲Bが使用する音源チャンネルの数とのどちら
か一方または双方を減らして、曲Aと曲Bとが使用する
音源チャンネルの数の合計が「16」になるようにす
る。
【0031】ここで、図3には、図2と同様に、クロス
フェード区間における、曲Aおよび曲Bの演奏チャンネ
ル(ch)毎の演奏データの有無を示したチャンネルマ
ップの一例が示されている。図3において、「○」は該
当する演奏チャンネルに演奏データがあることを示し、
「×」は該当する演奏チャンネルに演奏データがないこ
とを示している。
【0032】図3において、曲Aは演奏する演奏チャン
ネルの数が「11」であり、曲Bは演奏する演奏チャン
ネルの数が「8」であるので、クロスフェード区間にお
いて曲Aおよび曲Bで演奏される演奏チャンネルの総
数、即ち、クロスフェード区間において必要とされる音
源チャンネルの数は、「8+11=19」である。従っ
て、「16」の音源チャンネルを有するマルチティンバ
ー音源によっては、クロスフェード区間において必要と
される音源チャンネルの数を賄うことは不可能である。
【0033】このため、手法2においては、曲Aと曲B
とのどちらか一方または双方の演奏を一部省略して、即
ち、演奏する演奏チャンネルの数を減らして、曲Aの使
用する音源チャンネルの数と曲Bの使用する音源チャン
ネルの数との合計が「16」に収まるようにするもので
ある。この際に、演奏を省略する演奏チャンネルは、曲
Aと曲Bとの中で聴覚上目立たない演奏チャンネルとす
ればよい。
【0034】以下、演奏を省略する演奏チャンネルの選
定方法について、詳細に説明することとする。
【0035】まず、演奏を省略する演奏チャンネルの選
定にあたっては、曲の各演奏チャンネルについて、聴覚
上どれだけ目立つか、即ち、聴覚上どれだけ聞こえやす
いかを示す指標を定義し、この指標の値をそれぞれ算出
してその算出結果を参照することにより演奏チャンネル
の選定を行うものである。なお、本明細書においては、
上記指標を「目立ち度」と称することとし、「目立ち
度」は値が大きいほど聴覚上目立つ、即ち、聴覚上聞こ
えやすいことを示すものとする。こうした「目立ち度」
の算出方法については後述する。
【0036】図4には、クロスフェード区間における曲
Aと曲Bとの各演奏チャンネル(ch)の演奏データに
基づいて、演奏チャンネル(ch)毎の「目立ち度」を
算出したものの一例が示されている。
【0037】手法2においては、クロスフェード区間に
おいて、曲Aと曲Bとの全演奏チャンネルの中で「目立
ち度」の低い演奏チャンネルを省略することにより、曲
Aの使用する音源チャンネルと曲Bの使用する音源チャ
ンネルの数との合計が「16」に収まるようにしてい
る。そして、クロスフェード区間における「目立ち度」
の低い演奏チャンネルを省略方法としては、例えば、 (a)曲Aと曲Bとの演奏する演奏チャンネルの数、即
ち、使用する音源チャンネルの数が互いに均等になるよ
うに、それぞれの曲において「目立ち度」の低い演奏チ
ャンネルから順次省略していく。
【0038】(b)ユーザー、即ち、本発明による自動
演奏装置の使用者に、優先して演奏すべき演奏チャンネ
ルを指定させ、指定されていない演奏チャンネルの中で
「目立ち度」の低い演奏チャンネルから順次省略してい
く。という2種類の方法がある。
【0039】ここで、「目立ち度」の算出方法について
説明すると、各演奏チャンネルの「目立ち度」は、当該
演奏チャンネルで用いられる音色、設定されている音
量、発音時間の長さならびに発音される音高などを適宜
勘案して決定されるものである。つまり、クロスフェー
ド区間において、どのような音色で、どの位の音量で、
どの位の音長で、どの音高の音が発音されるかに基づい
て、適宜に「目立ち度」を算出することになる。
【0040】こうした「目立ち度」の算出方法として
は、例えば、次に示すような3通りの方法がある。
【0041】まず、「目立ち度」の第1の算出方法は、 目立ち度=音色の目立ち度×音長の積算値×音量 という演算により「目立ち度」を求める方法である。
【0042】この第1の算出方法においては、予め各音
色毎に聞こえやすさを示す「音色の目立ち度」を設定し
たテーブルを用意しておく必要がある。この「音色の目
立ち度」を設定したテーブルとは、例えば、ピアノは
「5」、フルートは「3」、トランペットは「7」とい
うように、音色毎に所定の値が設定されたテーブルであ
る(「音色の目立ち度」も、値が大きいほど当該音色が
聴覚上聞こえやすいことを示すものとする。)。また、
音長の積算値とは、クロスフェード区間における個々の
音の発音時間の積算値を意味するものとする。
【0043】即ち、「目立ち度」の第1の算出方法によ
れば、「目立ち度」の算出対象とされた演奏チャンネル
により発音される音色に対応した「音色の目立ち度」
と、当該演奏チャンネルにおける音長の積算値と、発音
される音量との積を算出することにより、当該演奏チャ
ンネルの「目立ち度」が得られる。
【0044】なお、後述する本発明の実施の形態におい
ては、この第1の算出方法を用いて「目立ち度」の算出
を行った場合を示している。
【0045】次に、「目立ち度」の第2の算出方法は、 目立ち度=平均音高の目立ち度×音長の積算値×音量 という演算により「目立ち度」を求める方法であり、こ
の第2の算出方法は、発音する音の音高に着目した「目
立ち度」の算出方法である。
【0046】つまり、同じ音色であっても、音高が高い
音の方が聞こえやすいとか、音高が高すぎて聞こえにく
いとかいうことが起こることが知られており、そこで、
各音高毎に聞こえやすさを示す「音高の目立ち度」を設
定したテーブルを予め用意しておくものである。そし
て、クロスフェード区間において発音する全ての音につ
いて、発音時間や発音頻度によって加重平均を取るなど
してそれらの音高の平均値、即ち、平均音高を求め、
「音高の目立ち度」を設定したテーブルを参照して求め
た平均音高に対応する「音高の目立ち度」を、「平均音
高の目立ち度」として得るようにする。また、音長の積
算値とは、上記したように、クロスフェード区間におけ
る個々の音の発音時間の積算値を意味するものとする。
【0047】即ち、「目立ち度」の第2の算出方法によ
れば、「目立ち度」の算出対象とされた演奏チャンネル
により発音される音についての「平均音高の目立ち
度」、当該演奏チャンネルにおける音長の積算値と、発
音される音量との積を算出することにより、当該演奏チ
ャンネルの「目立ち度」が得られる。
【0048】また、「目立ち度」の第3の算出方法は、 目立ち度=音色の目立ち度×平均音高の目立ち度×音長
の積算値×音量 という演算により「目立ち度」を求める方法であり、こ
の第3の算出方法は、第1の算出方法と第2の算出方法
とを組み合わせたものである。「音色の目立ち度」、
「平均音高の目立ち度」、「音長の積算値」、「音量」
は、第1の算出方法あるいは第2の算出方法におけるそ
れとそれぞれ対応する。
【0049】なお、この第3の算出方法において、「音
高の目立ち度」のテーブルを各音色につき1つずつ用意
しておくと、演奏チャンネルの「目立ち度」をより精密
に算出できるようになる。
【0050】
【発明の実施の形態】1.第1の実施の形態について 以下、図面に基づいて、本発明による自動演奏装置の実
施の形態の一例として、第1の実施の形態を詳細に説明
するものとする。 1−1.全体の構成 図5には、本発明による自動演奏装置の全体の構成を示
すブロック構成図が示されている。
【0051】この自動演奏装置は、その全体の動作の制
御を中央処理装置(CPU)10を用いて制御するよう
に構成されており、CPU10は、後述するリードオン
リメモリ14に格納されたプログラムを実行して自動演
奏装置を制御するものである。
【0052】そして、CPU10には、バス(BUS)
12を介して、CPU10が実行するプログラムが格納
されたリードオンリメモリ(ROM)14と、CPU1
0がプログラムの実行において用いる各種変数やテーブ
ルなどを記憶するとともに図示しない外部記憶装置から
読み込まれる複数の曲データを格納するランダムアクセ
スメモリ(RAM)16と、CPU10により指示され
たテンポ値に従って内部クロックを動作させてクロック
毎に発生する周期的なクロック信号(クロック信号は、
4分音符の時間を24等分した時間間隔で発生する。)
たるテンポクロックを発生させて当該テンポクロックに
よりCPU10に割り込みをかけるテンポクロック発生
器18と、後述する表示器22に表示されたボタンなど
を指示するカーソルキーを備えたキーボードやマウスな
どの各種の操作子よりなる操作子群20と、画面上に演
奏開始を指示するボタンや演奏停止を指示するボタンな
どの各種ボタンを表示するとともに演奏する曲の順序を
設定したり曲目を設定したりするための設定画面を表示
する表示器22と、CPU10からの指示により発音・
消音・音色変更・音量変更の処理を行うマルチティンバ
ー音源24とが接続されている。
【0053】さらに、マルチティンバー音源24には、
アンプ26が接続されており、さらにまたアンプ26に
は、スピーカー28が接続されていて、マルチティンバ
ー音源24から出力された楽音信号を、アンプ26を介
してスピーカー28から楽音として空間に放音させてい
る。
【0054】ここで、マルチティンバー音源24は、音
源チャンネル0〜音源チャンネル15のあわせて16の
音源チャンネルにそれぞれ対応した音源を有し、各音源
チャンネル毎に音色の設定や音量の設定を行うことがで
きるようになされている。
【0055】そして、CPU10からマルチティンバー
音源24への指示は、以下に示すフォーマットによる演
奏情報をCPU10からマルチティンバー音源24へ送
出することにより行うものである。
【0056】(1)発音指示 (CH#,status,Key#)を送出CH#←音
源チャンネル(0〜15)status←”NoteO
N”Key#←音高(鍵ごとに付与された鍵番号) (2)消音指示 (CH#,status,Key#)を送出CH#←音
源チャンネル(0〜15)status←”NoteO
FF” Key#←音高(鍵ごとに付与された鍵番号) (3)音色指示 (CH#,status,PC#)を送出CH#←音源
チャンネル(0〜15) status←”ProgramChange” PC#←音色番号 (4)音量指示 (CH#,status,volume)を送出CH#
←音源チャンネル(0〜15)status←”Vol
ume”volume←音量値 次に、図示しない外部記憶装置からRAM16に読み込
まれる曲データの形式について説明する。
【0057】この図示しない外部記憶装置からRAM1
6に読み込まれる曲データは、以下に示す「曲番号」と
「音色情報」と「音量情報」と「演奏データ」と「演奏
終了地点(Tf)」よりなるものである。
【0058】曲番号:曲データ毎に付与された一意の番
号 音色情報:演奏チャンネル毎の使用音色の番号(音色情
報は16チャンネル分ある。) 音量情報:演奏チャンネル毎の発音音量(音量情報は1
6チャンネル分ある。) 演奏データ:「△t|CH#|status|Key
#」よりなるデータが演奏時間順に並べられたものであ
る。なお、ここで、 △t:次に続くデータまでのクロック数 CH#:演奏チャンネル(0〜15) status:発音指示ならば”NoteON” 消音指示ならば”NoteOFF” Key#:音高(鍵毎に付与された鍵番号) 演奏終了地点(Tf):演奏終了位置をクロック単位で
示すものである。演奏位置tがTfに達したら演奏終了
となる。
【0059】次に、演奏する曲のリスト(以下、「演奏
曲リスト」と称する。)の形式について説明するが、こ
の演奏曲リストとは曲の演奏順を示すものである。
【0060】図6には演奏曲リストの一例が示されてい
るが、演奏曲リストとは、以下に示す「演奏順」と「曲
番号」と「開始地点」と「終了地点」と「クロスフェー
ドフラグ」とよりなる、図6に示すような形式のリスト
である。
【0061】演奏順:曲の演奏順を示す一連の番号 曲番号:曲データを特定する番号 開始地点:クロスフェード区間開始地点Tsをクロック
単位で示す 終了地点:クロスフェード区間終了地点Teをクロック
単位で示す クロスフェードフラグ:現在演奏されている曲と次に演
奏させる曲とをクロスフェードさせるか否かを示すフラ
グであり、このフラグに「1」がセットされている場合
には、クロスフェードがオン(ON)であってクロスフ
ェードをさせ、このフラグに「0」がセットされている
場合には、クロスフェードはオフ(OFF)であってク
ロスフェードさせないものである。従って、現在演奏さ
れている曲の次に演奏奏させる曲がない場合や、現在演
奏されている曲と次に演奏させる曲とをクロスフェード
させたくない場合には、上記したフラグを「0」にセッ
トする。
【0062】なお、図6に示す例においては、曲番号が
12番の曲(1曲目)、曲番号が5番の曲(2曲目)、
曲番号が7番の曲(3曲目)ならびに曲番号が2番の曲
(4曲目)を順番に演奏して演奏を終了する。そして、
クロスフェードは、2曲目と3曲目との間および3曲目
と4曲目との間において行われる。1−2.作用の説明 以上の構成において、CPU10が実行するルーチンを
示す添付のフローチャートを参照しながら、この自動演
奏装置の処理内容に関して説明する。
【0063】なお、理解を容易にするため、添付のフロ
ーチャートにおいて使用される変数やテーブルの中で主
要なものを以下に説明する。
【0064】また、以下の説明においては、曲Aはクロ
スフェード区間においてフェードアウトして演奏を終了
する曲であり、曲Bはクロスフェード開始位置から演奏
を開始してクロスフェード区間においてフェードインす
る曲であるものとする。
【0065】(1)ch_table[ch]:チャン
ネル割当テーブル 演奏チャンネルchに対して割り当てられた音源チャン
ネルを示すテーブルである。このch_table[c
h]は、0〜15の演奏チャンネルと0〜15の音源チ
ャンネルとを1対1で対応させるように設定されてい
る。
【0066】(2)ch_tblA[ch]:曲Aのチ
ャンネル割当テーブル ch_tblB[ch]:曲Bのチャンネル割当テーブ
ル ch_tblA[ch]とch_tblB[ch]と
は、クロスフェード区間において使用される。ch_t
blA[ch]は曲Aの演奏チャンネルchに割り当て
られた音源チャンネルを示すテーブルであり、ch_t
blB[ch]は曲Bの演奏チャンネルchに割り当て
られた音源チャンネルを示すテーブルである。なお、
「ch_tblA[ch]=(−1)」の場合、曲Aの
演奏チャンネルchには音源チャンネルが割り当てられ
ていないことを示し、「ch_tblB[ch]=(−
1)」の場合、曲Bの演奏チャンネルchには音源チャ
ンネルが割り当てられていないことを示す。
【0067】(3)Notes[ch]:発音数テーブ
ル 演奏チャンネルの発音数をカウントするためのテーブル
である。演奏チャンネルchにおいて、演奏データで”
NoteON”が見つかればNotes[ch]を
「1」増加させ、演奏データで”NoteOFF”が見
つかればNotes[ch]を「1」減少させる。この
Notes[ch]の値は、「目立ち度」を算出する際
に、個々の音の発音時間の積算値(音長の積算値)を求
めるときに使用される。
【0068】(4)NotesA[ch]:曲Aの発音
数テーブル NotesB[ch]:曲Bの発音数テーブル NotesA[ch]とNotesB[ch]とは、ク
ロスフェード区間において使用される。NotesA
[ch]は曲Aの演奏チャンネルの発音数をカウントす
るためのテーブルであり、NotesB[ch]は曲B
の演奏チャンネルの発音数をカウントするためのテーブ
ルである。曲Aの演奏チャンネルchにおいて、演奏デ
ータで”NoteON”が見つかればNotesA[c
h]を「1」増加させ、演奏データで”NoteOF
F”が見つかればNotesA[ch]を「1」減少さ
せる。また、曲Bの演奏チャンネルchにおいて、演奏
データで”NoteON”が見つかればNotesB
[ch]を「1」増加させ、演奏データで”NoteO
FF”が見つかればNotesB[ch]を「1」減少
させる。このNotesA[ch]ならびにNotes
B[ch]の値は、「目立ち度」を算出する際に、個々
の音の発音時間の積算値(音長の積算値)を求めるとき
に使用される。
【0069】(5)ch_mapA[ch]:曲Aのチ
ャンネルマップ ch_mapB[ch]:曲Bのチャンネルマップ ch_mapA[ch]は指定された区間における曲A
の演奏チャンネルchの演奏データの有無を示すテーブ
ルであり、ch_mapB[ch]は指定された区間に
おける曲Bの演奏チャンネルchの演奏データの有無を
示すテーブルである。それぞれ、演奏データが存在すれ
ば「1」の値をとり、演奏データ存在しなければ「0」
の値をとる。
【0070】 (6)M_mapA[ch]:曲Aの目立ち度マップ M_mapB[ch]:曲Bの目立ち度マップ M_mapA[ch]は曲Aの演奏チャンネルの「目立
ち度」を格納するテーブルであり、M_mapB[c
h]は曲Bの演奏チャンネルの「目立ち度」を格納する
テーブルである。
【0071】(7)M_table[音色番号]:音色
の目立ち度テーブル 「音色の目立ち度」が、音色番号に対応して格納されて
いるテーブルである。 (8)useA:曲Aで演奏される演奏チャンネル数 useB:曲Bで演奏される演奏チャンネル数 useAは曲Aで演奏される演奏チャンネル数を示す変
数であり、useBは曲Bで演奏される演奏チャンネル
数を示す変数である。 1−2−1.メインルーチンの説明 図7には、メインルーチンのフローチャートが示されて
おり、この自動演奏装置は、電源が投入されるとメイン
ルーチンの実行を開始し、電源が遮断されるまで高速で
メインルーチンを繰り返し実行する。
【0072】このメインルーチンの実行が開始される
と、まず、ステップS702において、各種の初期設定
が行われる。具体的には、図示しない外部記憶装置から
RAM16に曲データを読み込む処理を行ったり、演奏
曲リストの設定をクリアする処理を行ったり、テンポク
ロック発生器18に対してテンポを設定する処理を行っ
たりする。
【0073】ステップS702の処理を終了すると、ス
テップS704の処理へ進み、演奏曲リストに演奏曲が
設定されているか否かを判断する。
【0074】ステップS704において、演奏曲リスト
に演奏曲が設定されていると判断された場合には、ステ
ップS706の処理へ進み、例えば、ユーザーが表示器
22の画面上の演奏開始ボタン(図示せず)を操作子群
20のマウス(図示せず)を用いてクリックすることに
より、ユーザーによる演奏開始指示がなされたか否かを
判断する。
【0075】ステップS706において、ユーザー演奏
開始指示がなされていないと判断された場合には、ステ
ップS708の処理へ進む。
【0076】また、ステップS704において、演奏曲
リストに演奏曲が設定されていない、即ち、演奏する曲
が1曲もないと判断された場合にも、ステップS708
の処理へ進む。
【0077】ステップS708においては、ユーザーに
よる操作子群20の操作により演奏曲リストの設定操作
がなされたか否かを判断する。
【0078】ステップS708において、ユーザーによ
り演奏曲リストの設定操作がなされていないと判断され
た場合には、そのままステップS704の処理へ戻って
処理を続行する。
【0079】一方、ステップS708において、ユーザ
ーにより演奏曲リストの設定操作がなされたと判断され
た場合には、ステップS710の処理へ進み、ユーザー
による演奏曲リストの設定操作に応じて演奏曲リストを
設定する。
【0080】この演奏曲リストの設定操作の際には、表
示器22の画面上には図8(a)(b)に示す設定画面
が表示され、ユーザーは、演奏曲およびある演奏曲と次
の演奏曲との間におけるクロスフェードの態様を操作子
群22を用いて設定する。
【0081】ここで、ユーザーは、図8(a)の設定画
面により演奏曲を設定し、図8(b)の設定画面により
クロスフェードの態様を設定することになる。ユーザー
により設定されるクロスフェードの態様は、クロスフェ
ード区間開始地点、クロスフェード区間およびクロスフ
ェードのオン(ON:クロスフェードをする)/オフ
(OFF:クロスフェードをしない)である。
【0082】なお、クロスフェード区間開始地点および
クロスフェード区間終了地点は、この図8(a)(b)
に示す設定画面で入力されたクロスフェード区間開始地
点およびクロスフェード区間の長さに基づいてクロック
単位で算出され、演奏曲リストに格納されるとともに、
クロスフェードのオン/オフの入力に対しては、オンな
らば「1」が演奏曲リストのクロスフェードフラグにセ
ットされ、オフならば「0」が演奏曲リストのクロスフ
ェードフラグにセットされる(図6参照)。
【0083】こうしたステップS710の処理を終了す
ると、ステップS704へ戻って処理を続行する。
【0084】一方、ステップS706において演奏開始
指示がなされたと判断された場合には、ステップS71
2の処理へ進み、ステップS712以降の演奏開始処理
を行う。
【0085】まず、ステップS712においては、図2
6を参照しながら後に詳述する曲演奏準備処理ルーチン
を実行して、1曲目の演奏準備を行う。
【0086】ステップS712の処理を終了すると、ス
テップS714の処理へ進み、演奏中であるか否かを示
す演奏フラグp_flagに「1」をセットして演奏中
であることを示す。
【0087】ステップS714の処理を終了すると、ス
テップS716の処理へ進み、テンポクロック発生器1
8により発生されるテンポクロックによるCPU10へ
の割り込みを許可する。このテンポクロックによるCP
U10への割り込みの許可以降、図9を参照しながら後
に詳述するテンポクロック割り込みルーチンの処理が周
期的に実行されることになる。
【0088】そして、ステップS716の処理を終了す
ると、ステップS718の処理へ進み、例えば、ユーザ
ーが表示器22の画面上の演奏停止ボタン(図示せず)
を操作子群20のマウス(図示せず)を用いてクリック
することによる演奏停止指示がなされたか否かを判断す
る。
【0089】ステップS718において、ユーザーによ
る演奏停止指示がなされたと判断された場合には、ステ
ップS720の処理へ進み、テンポクロックによるCP
U10への割り込みを禁止し、テンポクロック割り込み
ルーチンの処理が実行されないようにする。
【0090】こうしたステップS720の処理を終了す
ると、ステップS704へ戻って処理を続行する。
【0091】一方、ステップS718において、ユーザ
ーによる演奏停止指示がなされていないと判断された場
合には、ステップS722の処理へ進み、テンポクロッ
ク割り込みルーチンの処理により演奏が完了されたか否
かを演奏フラグp_flagによりチェックする。即
ち、演奏フラグp_flagが「0」にクリアされてい
るか否かを判断する。
【0092】ステップS722において、演奏フラグp
_flagが「0」にクリアされている、即ち、テンポ
クロック割り込みルーチンの処理により演奏が完了され
た場合には、ステップS704へ戻って処理を続行す
る。
【0093】一方、ステップS722において、演奏フ
ラグp_flagが「0」にクリアされていない、即
ち、テンポクロック割り込みルーチンの処理により演奏
が完了されていない場合には、ステップS718へ戻っ
て処理を続行する。1−2−2.テンポクロック割り込
みルーチンの説明図9には、テンポクロック発生器18
によって発生されるテンポクロックによってCPU10
に割り込みが発生する度に実行されるテンポクロック割
り込みルーチンのフローチャートが示されている。即
ち、このテンポクロック割り込みルーチンは、テンポク
ロックに応じた周期的な割り込み処理として実行される
ものである。
【0094】テンポクロック割り込みルーチンが起動さ
れると、まず、ステップS902において、クロスフェ
ードに関する処理を行うか否かを示すクロスフェードフ
ラグc_flagが「1」にセットされているか否かを
演奏曲リストを参照して判断する。
【0095】ステップS902において、クロスフェー
ドフラグc_flagが「1」にセットされている、即
ち、クロスフェードに関する処理を行う場合には、クロ
スフェードに関する処理を行うためにステップS904
へ進む。
【0096】ステップS904においては、現在の演奏
位置tがクロスフェード区間開始地点Tsであるか否か
を判断する。
【0097】ステップS904において、現在の演奏位
置tがクロスフェード区間開始地点Tsであると判断さ
れた場合には、ステップS906の処理へ進み、図10
を参照しながら後に詳述するクロスフェード開始処理ル
ーチンを実行する。
【0098】そして、ステップS906の処理を終了す
ると、ステップS908の処理へ進む。また、ステップ
S904において、現在の演奏位置tがクロスフェード
区間開始地点Tsでないと判断された場合にも、ステッ
プS908の処理へ進む。
【0099】ステップS908においては、現在の演奏
位置tがクロスフェード区間内(Ts≦t≦Te)であ
るか否かを判断する。
【0100】ステップS908において、現在の演奏位
置tがクロスフェード区間内であると判断された場合に
は、ステップS910の処理へ進み、図20および図2
1を参照しながら後に詳述するクロスフェード演奏処理
ルーチンを実行する。
【0101】そして、ステップS910の処理を終了す
ると、ステップS912の処理へ進み、演奏位置tをイ
ンクリメントして1クロック分進めてから、メインルー
チンへリターンする。
【0102】一方、ステップS908において、現在の
演奏位置tがクロスフェード区間内でないと判断された
場合には、ステップS914の処理へ進み、現在の演奏
位置tがクロスフェード区間終了地点Teであるか否か
を判断する。
【0103】ステップS914において、現在の演奏位
置tがクロスフェード区間終了地点Teであると判断さ
れた場合には、ステップS916の処理へ進み、図22
および図23を参照しながら後に詳述するクロスフェー
ド完了処理ルーチンを実行する。
【0104】そして、ステップS916の処理を終了す
ると、ステップS928以降の処理へ進んで通常の演奏
処理を実行する。また、ステップS914において、現
在の演奏位置tがクロスフェード区間終了地点Teでな
いと判断された場合にも、ステップS928以降の処理
へ進んで通常の演奏処理を実行する。
【0105】一方、ステップS902において、クロス
フェードフラグc_flagが「1」にセットされてい
ない、即ち、クロスフェードフラグc_flagが
「0」にクリアされていて、クロスフェードに関する処
理を行わない場合には、ステップS918の処理へ進
み、現在の演奏位置tが演奏終了地点Tfであるか否か
を判断する。
【0106】ステップS918において、現在の演奏位
置tが演奏終了地点Tfでないと判断された場合には、
ステップS928以降の処理へ進んで通常の演奏処理を
実行する。
【0107】一方、ステップS918において、現在の
演奏位置tが演奏終了地点Tfであると判断された場合
には、ステップS920の処理へ進み、演奏曲リストを
参照して現在演奏している曲の次に演奏する曲があるか
いなかを判断する。
【0108】ステップS920において、現在演奏して
いる曲の次に演奏する曲があると判断された場合には、
ステップS922の処理へ進み、図26を参照しながら
後に詳述する曲演奏準備処理ルーチンを実行してから、
メインルーチンへリターンする。
【0109】一方、ステップS920において、現在演
奏している曲の次に演奏する曲がないと判断された場合
には、ステップS924の処理へ進み、テンポクロック
によるCPU10への割り込みを禁止し、テンポクロッ
ク割り込みルーチンの処理が実行されないようにする。
【0110】ステップS924の処理を終了すると、ス
テップS926の処理へ進み、演奏フラグp_flag
を「0」にクリアして演奏が終了していることを示して
から、メインルーチンへリターンする。
【0111】そして、ステップS928においては、演
奏データを読み出してから次の演奏データを読み出すま
でのクロックを計数するための減算カウンタdtが
「0」であるか否かを判断する。
【0112】ステップS928において、減算カウンタ
dtが「0」でないと判断された場合には、ステップS
946の処理へ進み、減算カウンタdtを1クロック分
減じる。
【0113】ステップS946の処理を終了すると、ス
テップS948の処理へ進み、現在の演奏位置tを1ク
ロック分進め、メインルーチンへリターンする。
【0114】一方、ステップS928において、減算カ
ウンタdtが「0」であると判断された場合には、ステ
ップS930以降の処理へ進み、ステップS930〜ス
テップS944の処理により、演奏データを読み出し
て、読み出した演奏データに基づく演奏情報をマルチテ
ィンバー音源24へ送出する処理を実行する。
【0115】即ち、演奏データの読み出しアドレスaの
演奏データを読み出し(ステップS930)、stat
usが”NoteON”であるか否かを判断する(ステ
ップS932)。ここで、statusが”NoteO
N”であると判断された場合には、発音数テーブルNo
tes[CH#]を「1」増加させ(ステップS93
4)、一方、statusが”NoteON”でない、
即ち、statusが”NoteOFF”であると判断
された場合には、発音数テーブルNotes[CH#]
を「1」減少させる(ステップS936)。次に、演奏
チャンネルCH#をチャンネル割当テーブルch_ta
ble[CH#]により音源チャンネルに変換して(ス
テップS938)、変換後のCH#で示される音源チャ
ンネルを対象に演奏情報(CH#,status,Ke
y#)を送出する(ステップS940)。それから、読
み出した演奏データの△tをdtに代入し(ステップS
942)、アドレスaを歩進させて(ステップS94
4)、ステップS928へ戻って処理を続行する。 1−2−3.クロスフェード開始処理ルーチンの説明 図10には、クロスフェード開始処理ルーチンのフロー
チャートが示されている。
【0116】このクロスフェード開始処理ルーチンが起
動されると、まず、ステップS1002において、演奏
曲リストを参照して、次に演奏する曲を特定する処理を
行う。
【0117】なお、この自動演奏装置においては、ステ
ップS1002における処理の時点で演奏中の曲(以降
の説明においては、「曲A」と称することとする。)と
ステップS1002の処理の時点から演奏を開始しよう
とする次の曲(以降の説明においては、「曲B」と称す
ることとする。)とを並行して演奏するようにし、クロ
スフェード区間(Ts,Te)において曲Aの音量を徐
々に下げるとともに曲Bの音量を徐々に上げていくこと
によって、曲Aと曲Bとのクロスフェードを行うように
している。
【0118】ステップS1002の処理を終了すると、
ステップS1004の処理へ進み、区間(Tα,Tβ)
としてクロスフェード区間(Ts,Te)を設定する。
【0119】ステップS1004の処理を終了すると、
ステップS1006の処理へ進み、図11を参照しなが
ら後に詳述する区間(Tα,Tβ)における曲Aのチャ
ンネルマップch_mapA[ch]および曲Aの目立
ち度マップM_mapA[ch]を作成する処理ルーチ
ンを実行し、さらにステップS1008の処理へ進み、
図13を参照しながら後に詳述する曲Bのチャンネルマ
ップch_mapB[ch]および曲Bの目立ち度マッ
プM_mapB[ch]を作成する処理ルーチンを実行
する。
【0120】ステップS1008の処理を終了すると、
ステップS1010の処理へ進み、チャンネルマップc
h_mapA[ch]に基づいて曲Aで演奏される演奏
チャンネルの数useAを求め、さらにステップS10
12へ進み、チャンネルマップch_mapB[ch]
に基づいて曲Bで演奏される演奏チャンネルの数use
Bを求める。具体的には、「チャンネルマップch_m
apA[ch]=1」となる演奏チャンネルch、即
ち、区間(Tα,Tβ)において曲Aの演奏データの存
在する演奏チャンネルchの数を数えて、その数をus
eAとする。また、「チャンネルマップch_mapB
[ch]=1」となる演奏チャンネルch、即ち、区間
(Tα,Tβ)において曲Bの演奏データの存在する演
奏チャンネルchの数を数えて、その数をuseBとす
る。
【0121】ステップS1012の処理を終了すると、
ステップS1014の処理へ進み、曲Aで演奏される演
奏チャンネルの数useAと曲Bで演奏される演奏チャ
ンネルの数useBとの合計が、マルチティンバー音源
24の音源チャンネルの総数である「16」以下である
か否かを判断する。
【0122】ステップS1014において、曲Aで演奏
される演奏チャンネルの数useAと曲Bで演奏される
演奏チャンネルの数useBとの合計が、マルチティン
バー音源24の音源チャンネルの総数である「16」以
下であると判断された場合には、ステップS1016の
処理へ進み、図14を参照しながら後に詳述する手法1
による処理ルーチンを実行して、曲Aならびに曲Bの各
演奏チャンネルにマルチティンバー音源24の音源チャ
ンネルを割り当ててから、ステップS1020の処理へ
進む。
【0123】一方、ステップS1014において、曲A
で演奏される演奏チャンネルの数useAと曲Bで演奏
される演奏チャンネルの数useBとの合計が、マルチ
ティンバー音源24の音源チャンネルの総数である「1
6」以下でないと判断された場合には、ステップS10
18の処理へ進み、図15を参照しながら後に詳述する
手法2による処理ルーチンを実行して、曲Aならびに曲
Bの各演奏チャンネルにマルチティンバー音源24の音
源チャンネルを割り当ててから、ステップS1020の
処理へ進む。
【0124】ステップS1020においては、図17を
参照しながら後に詳述する曲Aのフェードアウト準備処
理を実行し、それからステップS1022の処理へ進
み、図18を参照しながら後に詳述する曲Bのフェード
イン準備処理を実行する。
【0125】ステップS1022の処理を終了すると、
ステップS1024の処理へ進み、図19を参照しなが
ら後に詳述する曲Bが使用する音源チャンネルの音色更
新処理ルーチンを実行して、曲Bの演奏処理が行われる
のに先立って音源の音色を設定しておく。
【0126】ステップS1024の処理を終了すると、
ステップS1026〜ステップS1028の処理へ進
み、曲Bの演奏処理に用いる変数の初期化の処理を行
う。具体的には、ステップS1026において、演奏デ
ータを読み出してから次の演奏データを読み出すまでの
クロックを計数するための減算カウンタdt’を「0」
にクリアするとともに、演奏データの読み出しアドレス
a’が曲Bの演奏データの先頭アドレスを指すようにセ
ットする。また、ステップS1028においては、現時
点の演奏位置tをt_startに保存しておく。
【0127】ステップS1028の処理を終了すると、
ステップS1030〜ステップS1036の処理へ進
み、曲Aの発音数テーブルNotesA[ch]および
曲Bの発音数テーブルNotesB[ch]を初期化
し、テンポクロック割り込みルーチンへリターンする。
即ち、変数cに関して「c=0〜c=15」の全ての変
数cについて、発音数テーブルNotes[c]を曲A
の発音数テーブルNotesA[c]に代入し、「0」
を曲Bの発音数テーブルNotesB[c]に代入す
る。これにより、発音数テーブルNotes[ch]の
内容が曲Aの発音数テーブルNotesA[ch]に引
き継がれる。
【0128】そしてその後、テンポクロック割り込みル
ーチンへリターンする。 1−2−4.区間(Tα,Tβ)における曲Aのチャン
ネルマップch_mapA[ch]および曲Aの目立ち
度マップM_mapA[ch]を作成する処理ルーチン
の説明 図11には、区間(Tα,Tβ)における曲Aのチャン
ネルマップch_mapA[ch]および曲Aの目立ち
度マップM_mapA[ch]を作成する処理ルーチン
のフローチャートが示されている。この区間(Tα,T
β)における曲Aのチャンネルマップch_mapA
[ch]および曲Aの目立ち度マップM_mapA[c
h]を作成する処理ルーチンにおいては、指定された区
間(Tα,Tβ)における曲Aの演奏データを一気に走
査して、演奏チャンネル毎の演奏データの有無を曲Aの
チャンネルマップch_mapA[ch]に格納すると
ともに、曲Aの演奏チャンネルの各々の「目立ち度」を
算出して、その算出結果を曲Aの目立ち度マップM_m
apA[ch]に格納する処理を行う。
【0129】即ち、この区間(Tα,Tβ)における曲
Aのチャンネルマップch_mapA[ch]および曲
Aの目立ち度マップM_mapA[ch]を作成する処
理ルーチンが起動されると、まず、ステップS1102
において、曲Aのチャンネルマップch_mapA[c
h]の初期化を行う。具体的には、曲Aのチャンネルマ
ップch_mapA[0]〜ch_mapA[15]の
それぞれに、演奏データが存在していないことを示す
「0」を代入する。
【0130】ステップS1102の処理を終了すると、
ステップS1104の処理へ進み、曲Aの目立ち度マッ
プM_mapA[ch]の初期化を行う。具体的には、
曲Aの目立ち度マップM_mapA[0]〜M_map
A[15]のそれぞれに「0」を代入する。
【0131】ステップS1104の処理を終了すると、
ステップS1106の処理へ進み、演奏位置TにTαを
代入するとともに、演奏データのアドレスadにaを代
入する。ここで、演奏位置Tは、以降の処理においてT
αからTβまで変化することになる。
【0132】ステップS1106の処理を終了すると、
ステップS1108の処理へ進み、演奏位置TがTβに
到達していないか否かを判断する。
【0133】ステップS1108において、演奏位置T
がTβに到達していないと判断された場合には、ステッ
プS1122へジャンプして進む。
【0134】一方、ステップS1108において、演奏
位置TがTβに到達していなくはない、即ち、演奏位置
TがTβに到達したと判断された場合には、ステップS
1110の処理へ進む。
【0135】ここで、ステップS1108からジャンプ
してステップS1122へ進み、後述するステップS1
122〜ステップS1142の処理を行い、ステップS
1142の処理を終了するとステップS1108へ戻っ
て処理を続行するという、ステップS1108〜ステッ
プS1142におけるループ処理を「演奏位置T=T
α」から「演奏位置T=Tβ」まで実行し終えたときに
は、曲Aの目立ち度マップM_mapA[ch]に区間
(Tα,Tβ)に含まれる演奏データの発音時間の積算
値が格納されることになる。
【0136】即ち、ステップS1108からステップS
1122へジャンプして進んだ場合には、ステップS1
122において、アドレスadの演奏データを読み出し
て、△t、CH#、status、Key#にそれぞれ
セットする。
【0137】ステップS1122の処理を終了すると、
ステップS1124の処理へ進み、statusが”N
oteON”であるか否かを判断する。
【0138】ステップS1124において、statu
sが”NoteON”であると判断された場合には、ス
テップS1126の処理へ進み、区間(Tα,Tβ)の
演奏チャンネルCH#には演奏データがあるものとし
て、曲Aのチャンネルマップch_mapA[CH#]
に「1」をセットし、さらにステップS1128の処理
へ進んで、曲Aの発音数テーブルNotesA[CH
#]を「1」増加させ、それからステップS1132〜
ステップS1142の処理へ進み、ステップS1142
の処理を終了するとステップS1108へ戻って処理を
続行する。
【0139】一方、ステップS1124において、st
atusが”NoteON”でない、即ち、statu
sが”NoteOFF”であると判断された場合には、
ステップS1130の処理へ進み、曲Aの発音数テーブ
ルNotesA[CH#]を「1」減少させ、それから
ステップS1132〜ステップS1142の処理へ進
み、ステップS1142の処理を終了するとステップS
1108へ戻って処理を続行する。
【0140】具体的には、ステップS1132〜ステッ
プS1138においては、変数cに関して「c=0〜c
=15」の全ての変数cについて、「M_mapA
[c]+NotesA[c]×△t」の演算結果により
M_mapA[c]を更新する処理を実行する。
【0141】その後、ステップS1140の処理へ進
み、演奏位置Tを△tだけ進め、さらにステップS11
42の処理へ進んで、アドレスadを歩進させ、それか
らステップS1108へ戻って処理を続行する。
【0142】ここで、図12を参照しながら、演奏デー
タの発音時間の積算値の算出方法についてより詳細に説
明するが、図12には、区間(Tα,Tβ)に3つの音
の演奏データが存在する場合が示されている。
【0143】この図12において、まず、「積算値=
0」、「発音数Notes=0」として、以下のステッ
プ1〜ステップS5を順次実行する。
【0144】ステップ1:演奏位置T=位置a ”NoteON”があるのでNotesを「1」増加す
る。
【0145】積算値に「Notes×△t=1×△t
2」を加える。
【0146】Tを△t2進めて位置bにする。
【0147】ステップ2:演奏位置T=位置b ”NoteON”があるのでNotesを「1」増加す
る。
【0148】積算値に「Notes×△t=2×△t
3」を加える。
【0149】Tを△t3進めて位置cにする。
【0150】ステップ3:演奏位置T=位置c ”NoteOFF”があるのでNotesを「1」減少
する。積算値に「Notes×△t=1×△t4」を加
える。
【0151】Tを△t4進めて位置dにする。
【0152】ステップ4:演奏位置T=位置d ”NoteON”があるのでNotesを「1」増加す
る。
【0153】積算値に「Notes×△t=2×△t
5」を加える。
【0154】Tを△t5進めて位置eにする。
【0155】ステップ5:演奏位置T=位置e ”NoteOFF”があるのでNotesを「1」減少
する。積算値に「Notes×△t=1×△t6」を加
える。
【0156】Tを△t6進めて位置fにする。
【0157】この結果、上記したステップ1〜ステップ
5の処理による積算値は、 積算値=1×△t2+2×△t3+1×△t4+2×△
t5+1×△t6 となり、この式を整理すると、 (△t2+△t3)+(△t3+△t4+△t5)+
(△t5+△t6)=L1+L2+L3 となる。
【0158】この「L1+L2+L3」は、図12から
明らかなように、音1、音2および音3の発音時間を積
算した値となっている。
【0159】ところで、ステップS1108において、
演奏位置TがTβに到達していなくはない、即ち、演奏
位置TがTβに到達したと判断された場合には、ステッ
プS1110の処理へ進むが、ステップS1110にお
いては、曲Aの全ての演奏チャンネルの音色情報を読み
出して、PC[ch]にセットする。
【0160】ステップS1110の処理を終了すると、
ステップS1112の処理へ進み、曲Aの全ての演奏チ
ャンネルの音量情報を読み出して、VOL[ch]にセ
ットする。
【0161】ステップS1112の処理を終了すると、
ステップS1114〜ステップS1120の処理を実行
する。
【0162】具体的には、ステップS1114〜ステッ
プS1120においては、変数cに関して「c=0〜c
=15」の全ての変数cについて、「M_mapA
[c]×M_table[PC[c]]×VOL
[c]」の演算結果をM_mapA[c]にセットする
処理を実行する。つまり、区間(Tα,Tβ)における
発音時間の積算値と、音色PC[c]の目立ち度M_t
able[PC[c]]と、音量VOL[c]との積
を、区間(Tα,Tβ)における演奏チャンネルの目立
ち度として曲Aの目立ち度マップM_mapA[c]に
セットする。
【0163】そしてその後、クロスフェード開始処理ル
ーチンへリターンする。 1−2−5.区間(Tα,Tβ)における曲Bのチャン
ネルマップch_mapB[ch]および曲Bの目立ち
度マップM_mapB[ch]を作成する処理ルーチン
の説明 図13には、区間(Tα,Tβ)における曲Bのチャン
ネルマップch_mapB[ch]および曲Bの目立ち
度マップM_mapB[ch]を作成する処理ルーチン
のフローチャートが示されている。この区間(Tα,T
β)における曲Bのチャンネルマップch_mapB
[ch]および曲Bの目立ち度マップM_mapB[c
h]を作成する処理ルーチンにおいては、指定された区
間(Tα,Tβ)における曲Bの演奏データを一気に走
査して、演奏チャンネル毎の演奏データの有無を曲Bの
チャンネルマップch_mapB[ch]に格納すると
ともに、曲Bの演奏チャンネルの各々の「目立ち度」を
算出して、その算出結果を曲Bの目立ち度マップM_m
apB[ch]に格納する処理を行う。
【0164】即ち、この区間(Tα,Tβ)における曲
Bのチャンネルマップch_mapB[ch]および曲
Bの目立ち度マップM_mapB[ch]を作成する処
理ルーチンが起動されると、まず、ステップS1302
において、曲Bのチャンネルマップch_mapB[c
h]の初期化を行う。具体的には、曲Bのチャンネルマ
ップch_mapB[0]〜ch_mapB[15]の
それぞれに、演奏データが存在していないことを示す
「0」を代入する。
【0165】ステップS1302の処理を終了すると、
ステップS1304の処理へ進み、曲Bの目立ち度マッ
プM_mapB[ch]の初期化を行う。具体的には、
曲Bの目立ち度マップM_mapB[0]〜M_map
B[15]のそれぞれに「0」を代入する。
【0166】ステップS1304の処理を終了すると、
ステップS1306の処理へ進み、演奏位置TにTαを
代入するとともに、演奏データのアドレスadに曲Bの
演奏データの先頭アドレスを代入する。ここで、演奏位
置Tは、以降の処理においてTαからTβまで変化する
ことになる。
【0167】ステップS1306の処理を終了すると、
ステップS1308の処理へ進み、演奏位置TがTβに
到達していないか否かを判断する。
【0168】ステップS1308において、演奏位置T
がTβに到達していないと判断された場合には、ステッ
プS1322の処理へジャンプして進む。
【0169】一方、ステップS1308において、演奏
位置TがTβに到達していなくはない、即ち、演奏位置
TがTβに到達したと判断された場合には、ステップS
1310の処理へ進む。
【0170】ここで、ステップS1308からジャンプ
してステップS1322の処理へ進み、後述するステッ
プS1322〜ステップS1342の処理を行い、ステ
ップS1342の処理を終了するとステップS1308
へ戻って処理を続行するという、ステップS1308〜
ステップS1342におけるループ処理を「演奏位置T
=Tα」から「演奏位置T=Tβ」まで実行し終えたと
きには、曲Bの目立ち度マップM_mapB[ch]に
区間(Tα,Tβ)に含まれる演奏データの発音時間の
積算値が格納されることになる。
【0171】そして、ステップS1308からステップ
S1322へジャンプして進んだ場合には、ステップS
1322において、アドレスadの演奏データを読み出
して、△t、CH#、status、Key#にそれぞ
れセットする。
【0172】ステップS1322の処理を終了すると、
ステップS1324の処理へ進み、statusが”N
oteON”であるか否かを判断する。
【0173】ステップS1324において、statu
sが”NoteON”であると判断された場合には、ス
テップS1326の処理へ進み、区間(Tα,Tβ)の
演奏チャンネルCH#には演奏データがあるものとし
て、曲Bのチャンネルマップch_mapB[CH#]
に「1」をセットし、さらにステップS1328の処理
へ進んで、曲Bの発音数テーブルNotesB[CH
#]を「1」増加させ、それからステップS1332〜
ステップS1342の処理へ進み、ステップS1342
の処理を終了するとステップS1308へ戻って処理を
続行する。
【0174】一方、ステップS1324において、st
atusが”NoteON”でない、即ち、statu
sが”NoteOFF”であると判断された場合には、
ステップS1330の処理へ進み、曲Bの発音数テーブ
ルNotesB[CH#]を「1」減少させ、それから
ステップS1332〜ステップS1342の処理へ進
み、ステップS1342の処理を終了するとステップS
1308へ戻って処理を続行する。
【0175】具体的には、ステップS1332〜ステッ
プS1338においては、変数cに関して「c=0〜c
=15」の全ての変数cについて、「M_mapB
[c]+NotesB[c]×△t」の演算結果により
M_mapB[c]を更新する処理を実行する。
【0176】その後、ステップS1340の処理へ進
み、演奏位置Tを△tだけ進め、さらにステップS13
42の処理へ進んで、アドレスadを歩進させ、それか
らステップS1308へ戻って処理を続行する。
【0177】ここで、曲Bの演奏データの発音時間の積
算値の算出方法については、上記した曲Aの演奏データ
の発音時間の積算値の算出方法と同様であるので、詳細
な説明は省略する。
【0178】ところで、ステップS1308において、
演奏位置TがTβに到達していなくはない、即ち、演奏
位置TがTβに到達したと判断された場合には、ステッ
プS1310へ進むが、ステップS1310において
は、曲Bの全ての演奏チャンネルの音色情報を読み出し
て、PC[ch]にセットする。
【0179】ステップS1310の処理を終了すると、
ステップS1312の処理へ進み、曲Bの全ての演奏チ
ャンネルの音量情報を読み出して、VOL[ch]にセ
ットする。
【0180】ステップS1312の処理を終了すると、
ステップS1314〜ステップS1320の処理を実行
する。
【0181】具体的には、ステップS1314〜ステッ
プS1320においては、変数cに関して「c=0〜c
=15」の全ての変数cについて、「M_mapB
[c]×M_table[PC[c]]×VOL
[c]」の演算結果をM_mapB[c]にセットする
処理を実行する。つまり、区間(Tα,Tβ)における
発音時間の積算値と、音色PC[c]の目立ち度M_t
able[PC[c]]と、音量VOL[c]との積
を、区間(Tα,Tβ)における演奏チャンネルの目立
ち度として曲Bの目立ち度マップM_mapB[c]に
セットする。
【0182】そしてその後、クロスフェード開始処理ル
ーチンへリターンする。 1−2−6.手法1による処理ルーチンの説明 図14には、手法1による処理ルーチンのフローチャー
トが示されており、この手法1による処理ルーチンが起
動されると、まず、ステップS1402において、曲A
のチャンネル割当テーブルch_tblA[ch]の初
期化を行う。具体的には、曲Aのチャンネル割当テーブ
ルch_tblA[0]〜ch_tblA[15]のそ
れぞれに、音源チャンネルが割り当てられていないこと
を示す「(−1)」をセットする。
【0183】ステップS1402の処理を終了すると、
ステップS1404〜ステップS1412の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、「曲Aのチ
ャンネルマップch_mapA[ch]=0」でなけれ
ば、即ち、「曲Aのチャンネルマップch_mapA
[ch]=1」であるならば、当該演奏チャンネルch
に音源チャンネルを割り当てるために、チャンネル割当
テーブルch_table[ch]を曲Aのチャンネル
割当テーブルch_tblA[ch]にセットする。
【0184】従って、曲Aの演奏チャンネルに音源チャ
ンネルを割り当てるときは、クロスフェード区間以前か
ら割り当てられていた音源チャンネルと同じ音源チャン
ネルが割り当てられることになる。
【0185】具体的には、ステップS1404におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S1406の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0186】ステップS1406において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS1408〜ス
テップS1412の処理が行われていないことになるの
で、ステップS1408の処理へ進み、「曲Aのチャン
ネルマップch_mapA[ch]=0」であるか否か
を判断する。
【0187】そして、ステップS1408において、
「曲Aのチャンネルマップch_mapA[ch]=
0」でない、即ち、「曲Aのチャンネルマップch_m
apA[ch]=1」であると判断された場合には、当
該演奏チャンネルchに音源チャンネルを割り当てるた
めに、チャンネル割当テーブルch_table[c
h]を曲Aのチャンネル割当テーブルch_tblA
[ch]にセットし(ステップS1410)、それから
演奏チャンネルchを「1」増加させて(ステップS1
412)、ステップS1406へ戻って処理を続行す
る。
【0188】一方、ステップS1408において、「曲
Aのチャンネルマップch_mapA[ch]=0」で
あると判断された場合には、演奏チャンネルchを
「1」増加させて(ステップS1412)、ステップS
1406へ戻って処理を続行する。
【0189】また、ステップS1406において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS14
08〜ステップS1412の処理が行われたことになる
ので、ステップS1414の処理へ進む。
【0190】ステップS1414においては、曲Bのチ
ャンネル割当テーブルch_tblB[ch]を初期化
を行う。具体的には、曲Bのチャンネル割当テーブルc
h_tblB[0]〜ch_tblB[15]のそれぞ
れに、音源チャンネルが割り当てられていないことを示
す「(−1)」をセットする。
【0191】ステップS1414の処理を終了すると、
ステップS1416〜ステップS1430の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、「曲Bのチ
ャンネルマップch_mapB[ch]=0」でなけれ
ば、即ち、「曲Bのチャンネルマップch_mapB
[ch]=1」であるならば、当該演奏チャンネルch
に音源チャンネルを割り当てる処理を行う。この際に、
既に曲Aに割り当てられた音源チャンネル以外の音源チ
ャンネルを割り当てるために、「ch_mapA[c
h]=0」である演奏チャンネルachを検出し、チャ
ンネル割当テーブルch_table[ach]を曲B
のチャンネル割当テーブルch_tblB[ch]にセ
ットするようにしている。
【0192】具体的には、ステップS1416におい
て、演奏チャンネルchを「0」にクリアするととも
に、演奏チャンネルachを「0」にクリアし、ステッ
プS1418の処理へ進んで、演奏チャンネルchが1
6未満であるか否かを判断する。ステップS1418に
おいて、演奏チャンネルchが16未満であると判断さ
れた場合には、全ての演奏チャンネルchについてステ
ップS1420〜ステップS1430の処理が行われて
いないことになるので、ステップS1420の処理へ進
み、「曲Bのチャンネルマップch_mapB[ch]
=0」であるか否かを判断する。
【0193】そして、ステップS1420において、
「曲Bのチャンネルマップch_mapB[ch]=
0」でない、即ち、「曲Bのチャンネルマップch_m
apB[ch]=1」であると判断された場合には、当
該演奏チャンネルchに音源チャンネルを割り当てるた
めに、ステップS1422以降の処理を行う。
【0194】即ち、ステップS1422においては、
「曲Aのチャンネルマップch_mapA[ach]=
0」であるか否かを判断する。
【0195】ステップS1422において、「曲Aのチ
ャンネルマップch_mapA[ach]=0」でない
と判断された場合には、ステップS1424の処理へ進
み、演奏チャンネルachを「1」増加してステップS
1422へ戻って処理を繰り返す。
【0196】一方、ステップS1422において、「曲
Aのチャンネルマップch_mapA[ach]=0」
であると判断された場合には、ステップS1426の処
理へ進む。
【0197】即ち、上記したステップS1422〜ステ
ップS1424の処理において、「ch_mapA[a
ch]=0」である演奏チャンネルachの検出が行わ
れ、検出された演奏チャンネルachに関してステップ
S1426以降の処理が行われる。
【0198】即ち、ステップS1426においては、演
奏チャンネルachに音源チャンネルを割り当てるため
に、チャンネル割当テーブルch_table[ac
h]を曲Bのチャンネル割当テーブルch_tblB
[ch]にセットする。
【0199】ステップS1426の処理を終了すると、
ステップS1428の処理へ進み、演奏チャンネルac
hを「1」増加させて、ステップS1430の処理へ進
む。一方、ステップS1420において、「曲Bのチャ
ンネルマップch_mapB[ch]=0」であると判
断された場合にも、ステップS1430へ進む。
【0200】ステップS1430においては、演奏チャ
ンネルchを「1」増加させて、それからステップS1
418へ戻って処理を続行する。
【0201】また、ステップS1418において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS14
20〜ステップS1430の処理が行われたことになる
ので、クロスフェード開始処理ルーチンへリターンす
る。 1−2−7.手法2による処理ルーチンの説明 図15には、手法2による処理ルーチンのフローチャー
トが示されており、この手法2による処理ルーチンが起
動されると、まず、ステップS1502〜ステップS1
508の処理において、「useA+useB」が「1
6」以下になるように、useAまたはuseBを減少
させていく。
【0202】具体的には、「useA+useB」が
「16」より大きいか否かを判断し(ステップS150
2)、「useA+useB」が「16」より大きいと
判断された場合には、useAがuseBより大きいか
否かを判断する(ステップS1504)。ここで、us
eAがuseBより大きい場合には、useAを「1」
減少させ(ステップS1506)、ステップS1602
へ戻って処理を続行し、useAがuseBより大きく
ない場合には、useBを「1」減少させ(ステップS
1508)、ステップS1602へ戻って処理を続行す
る。
【0203】一方、「useA+useB」が「16」
より大きくないと判断された場合には、「useA+u
seB」は「16」以下であるので、そのままステップ
S1510の処理へ進む。
【0204】なお、上記したステップS1502〜ステ
ップS1508の処理において確定されたuseAは、
曲Aの演奏チャンネルに割り当てる音源チャンネルの数
として用いられ、上記したステップS1502〜ステッ
プS1508の処理において確定されたuseBは、曲
Bの演奏チャンネルに割り当てる音源チャンネルの数と
して用いられる。
【0205】ステップS1510においては、全ての演
奏チャンネルchについて、曲Aの目立ち度マップM_
mapA[ch]の内容を目立ち度マップM_map
[ch]にコピーし、ステップS1512の処理へ進
み、図16を参照しながら後に詳述する目立ち度マップ
M_map[ch]に基づいてmedati_ch[c
h]作成処理ルーチンを実行する。このmedati_
ch[ch]により、曲Aの各演奏チャンネルに対して
「0」〜「15」の優先順位が付与されることになる。
なお、medati_ch[ch]の値が小さいほど、
当該演奏チャンネルの優先順位が高いものとする。
【0206】ステップS1512の処理を終了すると、
ステップS1514の処理へ進み、曲Aのチャンネル割
当テーブルch_tblA[ch]を初期化する。具体
的には、曲Aのチャンネル割当テーブルch_tblA
[0]〜ch_tblA[15]のそれぞれに、音源チ
ャンネルが割り当てられていないことを示す「(−
1)」をセットする。
【0207】ステップS1514の処理を終了すると、
ステップS1516〜ステップS1524の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、medat
i_ch[ch]がuseAより小さい場合、即ち、演
奏チャンネルchの優先順位を示す値がuseAの値未
満である場合には、当該演奏チャンネルchに音源チャ
ンネルを割り当てるためにチャンネル割当テーブルch
_table[ch]を曲Aのチャンネル割当テーブル
ch_tblA[ch]にセットする。
【0208】具体的には、ステップS1516におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S1518の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0209】ステップS1518において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS1520〜ス
テップS1524の処理が行われていないことになるの
で、ステップS1520の処理へ進み、medati_
ch[ch]がuseAより小さいか否かを判断する。
【0210】そして、ステップS1520において、m
edati_ch[ch]がuseAより小さいと判断
された場合には、ステップS1522の処理へ進み、当
該演奏チャンネルchに音源チャンネルを割り当てるた
めにチャンネル割当テーブルch_table[ch]
を曲Aのチャンネル割当テーブルch_tblA[c
h]にセットし(ステップS1522)、それから演奏
チャンネルchを「1」増加させて(ステップS152
4)、ステップS1518へ戻って処理を続行する。
【0211】一方、ステップS1520において、me
dati_ch[ch]がuseAより小さくないと判
断された場合には、ステップS1524の処理へジャン
プして進み、演奏チャンネルchを「1」増加させて、
ステップS1518へ戻って処理を続行する。
【0212】また、ステップS1518において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS15
20〜ステップS1524の処理が行われたことになる
ので、ステップS1526の処理へ進む。
【0213】ステップS1526においては、全ての演
奏チャンネルchについて、曲Bの目立ち度マップM_
mapB[ch]の内容を目立ち度マップM_map
[ch]にコピーし、ステップS1528へ進み、図1
6を参照しながら後に詳述する目立ち度マップM_ma
p[ch]に基づいてmedati_ch[ch]作成
処理ルーチンを実行する。このmedati_ch[c
h]により、曲Bの各演奏チャンネルに対して「0」〜
「15」の優先順位が付与されることになる。なお、m
edati_ch[ch]の値が小さいほど、当該演奏
チャンネルの優先順位が高いものとする。
【0214】ステップS1528の処理を終了すると、
ステップS1530の処理へ進み、曲Bのチャンネル割
当テーブルch_tblB[ch]を初期化する。具体
的には、曲Bのチャンネル割当テーブルch_tblB
[0]〜ch_tblB[15]のそれぞれに、音源チ
ャンネルが割り当てられていないことを示す「(−
1)」をセットする。
【0215】ステップS1530の処理を終了すると、
ステップS1532〜ステップS1546の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、medat
i_ch[ch]がuseBより小さい場合、即ち、演
奏チャンネルchの優先順位を示す値がuseBの値未
満である場合には、当該演奏チャンネルchに音源チャ
ンネルを割り当てるためにチャンネル割当テーブルch
_table[ch]を曲Bのチャンネル割当テーブル
ch_tblB[ch]にセットする。この際に、既に
曲Aに割り当てられた音源チャンネル以外の音源チャン
ネルを割り当てるために、「ch_tblA[ach]
=(−1)」である演奏チャンネルachを検出し、チ
ャンネル割当テーブルch_table[ach]を曲
Bのチャンネル割当テーブルch_tblB[ch]に
セットするようにしている。
【0216】具体的には、ステップS1532におい
て、演奏チャンネルchを「0」にクリアするととも
に、演奏チャンネルachを「0」にクリアし、ステッ
プS1534の処理へ進んで、演奏チャンネルchが1
6未満であるか否かを判断する。ステップS1534に
おいて、演奏チャンネルchが16未満であると判断さ
れた場合には、全ての演奏チャンネルchについてステ
ップS1534〜ステップS1546の処理が行われて
いないことになるので、ステップS1536の処理へ進
み、medati_ch[ch]がuseBより小さい
か否かを判断する。
【0217】そして、ステップS1536において、m
edati_ch[ch]がuseBより小さいと判断
された場合には、ステップS1538以降の処理を行
う。
【0218】即ち、ステップS1538においては、
「曲Aのチャンネル割当テーブルch_tblA[ac
h]=(−1)」であるか否かを判断する。
【0219】ステップS1538において、「曲Aのチ
ャンネル割当テーブルch_tblA[ach]=(−
1)」でないと判断された場合には、ステップS154
0の処理へ進み、演奏チャンネルachを「1」増加し
てステップS1538へ戻って処理を繰り返す。
【0220】一方、ステップS1538において、「曲
Aのチャンネル割当テーブルch_tblA[ach]
=(−1)」である」と判断された場合には、ステップ
S1542の処理へ進む。
【0221】即ち、上記したステップS1538〜ステ
ップS1540の処理において、「ch_tblA[a
ch]=(−1)」である演奏チャンネルachの検出
が行われ、検出された演奏チャンネルachに関してス
テップS1542以降の処理が行われる。
【0222】即ち、ステップS1542においては、当
該演奏チャンネルachに音源チャンネルを割り当てる
ためにチャンネル割当テーブルch_table[ac
h]を曲Bのチャンネル割当テーブルch_tblBA
[ch]にセットする。
【0223】ステップS1542の処理を終了すると、
ステップS1544の処理へ進み、演奏チャンネルac
hを「1」増加させて、ステップS1546の処理へ進
む。一方、ステップS1536において、medati
_ch[ch]がuseBより小さくないと判断された
場合にも、ステップS1546の処理へ進む。
【0224】ステップS1546においては、演奏チャ
ンネルchを「1」増加させて、それからステップS1
534へ戻って処理を続行する。
【0225】また、ステップS1534において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS15
36〜ステップS1546の処理が行われたことになる
ので、クロスフェード開始処理ルーチンへリターンす
る。 1−2−8.目立ち度マップM_map[ch]に基づ
いてmedati_ch[ch]作成処理ルーチンの説
明 図16には、目立ち度マップM_map[ch]に基づ
いてmedati_ch[ch]作成処理ルーチンのフ
ローチャートが示されており、この目立ち度マップM_
map[ch]に基づいてmedati_ch[ch]
作成処理ルーチンにおいては、演奏チャンネル毎の「目
立ち度」が格納された目立ち度マップM_map[c
h]に基づいて、「目立ち度」の大きいチャンネルから
順に優先順位を「0」、「1」、「2」、・・・、「1
4」、「15」と付与し、medati_ch[ch]
に格納する処理を行う。
【0226】即ち、目立ち度マップM_map[ch]
に基づいてmedati_ch[ch]作成処理ルーチ
ンが起動されると、まず、ステップS1602の処理に
おいて、medati_ch[ch]を初期化する。具
体的には、medati_ch[0]〜medati_
ch[15]のそれぞれに、まだ優先順位が付与されて
いないことを示す「(−1)」をセットする。
【0227】ステップS1602の処理を終了すると、
ステップS1604〜ステップS1626の処理を実行
して、目立ち度マップM_map[ch]の内容に基づ
いて各演奏チャンネルchに優先順位を付与する処理を
行う。この際に、目立ち度マップM_map[ch]の
値が最大となる演奏チャンネルchに対して優先順位
「0」を付与するために、当該演奏チャンネルに対応す
るmedati_ch[ch]に「0」をセットし、そ
の次に目立ち度マップM_map[ch]の値が大きい
演奏チャンネルchに対して優先順位「1」を付与する
ために、当該演奏チャンネルに対応するmedati_
ch[ch]に「1」をセットするというように処理を
順次繰り返し、目立ち度マップM_map[ch]の値
が最小の演奏チャンネルchに対して優先順位「15」
を付与して、この処理ルーチンを終了する。
【0228】具体的には、ステップS1604におい
て、演奏チャンネルachを「0」にクリアし、ステッ
プS1606の処理へ進んで、変数cを「0」にクリア
する。ステップS1606の処理を終了すると、ステッ
プS1608の処理へ進み、変数cが16未満であるか
否かを判断し、変数cが16未満でないと判断された場
合には、そのまま手法2による処理ルーチンへリターン
する。
【0229】一方、ステップS1608において、変数
cが16未満であると判断された場合には、ステップS
1610の処理へ進み、medati_ch[c]に
「(−1)」がセットされているか否かを判断する。
【0230】ステップS1610において、medat
i_ch[c]に「(−1)」がセットされていないと
判断された場合には、ステップS1612の処理へ進
み、変数cを「1」増加し、ステップS1608へ戻っ
て処理を続行する。
【0231】一方、ステップS1610において、me
dati_ch[c]に「(−1)」がセットされてい
ると判断された場合には、ステップS1614の処理へ
進み、変数cを演奏チャンネルchにセットする。
【0232】ステップS1614の処理を終了すると、
ステップS1616の処理へ進み、変数cを「1」増加
する。
【0233】ステップS1616の処理を終了すると、
ステップS1618の処理へ進み、変数cが16未満で
あるか否かを判断し、変数cが16未満であると判断さ
れた場合には、ステップS1620の処理へ進み、M_
map[ch]がM_map[c]より小さいか否かを
判断する。
【0234】ステップS1620において、M_map
[ch]がM_map[c]より小さいと判断された場
合には、ステップS1622の処理へ進み、medat
i_ch[c]に「(−1)」がセットされているか否
かを判断する。
【0235】ステップS1622において、medat
i_ch[c]に「(−1)」がセットされていると判
断された場合には、ステップS1624の処理へ進み、
変数cを演奏チャンネルchにセットしてから、ステッ
プS1626の処理へ進む。一方、ステップS1620
において、M_map[ch]がM_map[c]より
小さくないと判断された場合、ならびに、ステップS1
622において、medati_ch[c]に「(−
1)」がセットされていないと判断された場合には、ジ
ャンプしてステップS1626の処理へ進む。
【0236】ステップS1626においては、変数cを
「1」増加し、ステップS1618へ戻って処理を続行
する。
【0237】また、ステップS1618において、変数
cが16未満でないと判断された場合には、ステップS
1628の処理へ進み、演奏チャンネルachをmed
ati_ch[ach]にセットする。
【0238】ステップS1628の処理を終了すると、
ステップS1630の処理へ進み、演奏チャンネルac
hを「1」増加し、ステップS1606へ戻って処理を
続行する。 1−2−9.曲Aのフェードアウト準備処理ルーチンの
説明 図17には、曲Aのフェードアウト準備処理ルーチンの
フローチャートが示されており、曲Aのフェードアウト
準備処理ルーチンが起動されると、まず、ステップS1
702において、曲Aの全ての演奏チャンネルchの音
量情報を曲Aの演奏データから読み出してVOL[c
h]にセットする。
【0239】ステップS1702の処理を終了すると、
ステップS1704〜ステップS1712の処理へ進
み、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、「VOL
[ch]/(Te−Ts)」の演算結果を演奏クロック
あたりの音量の減少量vd[ch]にセットし、さら
に、曲Aのクロスフェード時音量volA[ch]に初
期音量としてVOL[ch]をセットする。
【0240】そしてその後、クロスフェード開始処理ル
ーチンへリターンする。 1−2−10.曲Bのフェードイン準備処理ルーチンの
説明 図18には、曲Bのフェードイン準備処理ルーチンのフ
ローチャートが示されており、曲Bのフェードイン準備
処理ルーチンが起動されると、まず、ステップS180
2において、曲Bの全ての演奏チャンネルchの音量情
報を曲Bの演奏データから読み出してVOL[ch]に
セットする。
【0241】ステップS1802の処理を終了すると、
ステップS1804〜ステップS1812の処理へ進
み、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、「VOL
[ch]/(Te−Ts)」の演算結果を演奏クロック
あたりの音量の増加量vd’[ch]にセットし、曲B
のクロスフェード時音量volB[ch]に初期音量と
して「0」をセットする。そしてその後、クロスフェー
ド開始処理ルーチンへリターンする。 1−2−11.曲Bが使用する音源チャンネルの音色更
新処理ルーチンの説明 図19には、曲Bが使用する音源チャンネルの音色更新
処理ルーチンのフローチャートが示されており、曲Bが
使用する音源チャンネルの音色更新処理ルーチンが起動
されると、まず、ステップS1902において、曲Bの
全ての演奏チャンネルchの音色情報を曲Bの演奏デー
タから読み出してPC[ch]にセットする。
【0242】ステップS1902の処理を終了すると、
ステップS1904〜ステップS1918の処理へ進
み、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、ch_tb
lB[ch]が(−1)であるか否かを判断し、ch_
tblB[ch]が(−1)でない場合、即ち、音源チ
ャンネルが割り当てられている場合には、割り当てられ
た音源チャンネルに対して音色設定のための演奏情報
(CH#,status,PC#)を送出する。
【0243】具体的には、演奏チャンネルchを「0」
にクリアし(ステップS1904)、それから演奏チャ
ンネルchが16未満であるか否かを判断し(ステップ
S1906)、演奏チャンネルchが16未満である場
合には、ch_tblB[ch]をCH#にセットする
(ステップS1908)。それから、CH#が「(−
1)」であるか否かを判断し(ステップS1910)、
CH#が「(−1)」でない場合には、PC[ch]を
PC#へセットし(ステップS1912)、”Prog
ramChange”をstatusにセットし(ステ
ップS1914)、演奏情報(CH#,status,
PC#)をマルチティンバー音源24へ送出し(ステッ
プS1916)、ステップS1918の処理へ進む。
【0244】ここで、「CH#=ch_tblB[c
h]」は演奏チャンネルchに割り当てられた音源チャ
ンネルを示し、「status=”ProgramCh
ange”」は送出する演奏情報が音色設定の情報であ
ることを示し、「PC#=PC[ch]」は演奏チャン
ネルchで使用される音色の番号を示すものである。
【0245】一方、ステップS1910において、CH
#が「(−1)」である場合には、ジャンプしてステッ
プS1918の処理へ進む。
【0246】ステップS1918においては、演奏チャ
ンネルchを「1」増加させて、ステップS1906へ
戻って処理を続行する。
【0247】一方、ステップS1906において、演奏
チャンネルchが16未満でない場合には、そのままク
ロスフェード開始処理ルーチンへリターンする。 1−2−12.クロスフェード演奏処理ルーチンの説明 図20および図21には、クロスフェード演奏処理ルー
チンのフローチャートが示されており、このクロスフェ
ード演奏処理ルーチンが起動されると、まず、ステップ
S2002〜ステップS2014の処理の実行により、
曲Aの演奏データを読み出して演奏情報(音符情報)と
してマルチティンバー音源24へ送出する処理を行う。
【0248】具体的には、演奏データを読み出してから
次の演奏データを読み出すまでのクロックを計数するた
めの減算カウンタdtが「0」であるか否か判断し(ス
テップS2002)、減算カウンタdtが「0」である
と判断された場合には、アドレスaの演奏データを読み
出して、△t、CH#、statusならびにKey#
にそれぞれセットし(ステップS2004)、ch_t
blA[CH#]をCH#にセットすることにより演奏
チャンネルを音源チャンネルに変換する(ステップS2
006)。それから、CH#が「(−1)」であるか否
か判断し(ステップS2008)、CH#が「(−
1)」でないと判断された場合には、音源チャンネルが
割り当てられていることになるので、音源チャンネルC
H#、status(=NoteOn/NoteOF
F)ならびにKey#に基づく演奏情報(音符情報)を
マルチティンバー音源24へ送出し(ステップS201
0)、ステップS2012の処理へ進む。
【0249】一方、ステップS2008において、CH
#が「(−1)」であると判断された場合には、ジャン
プしてステップS2012の処理へ進む。
【0250】ステップS2012においては、次に続く
データまでのクロック数△tを減算カウンタdtにセッ
トし、ステップS2014の処理へ進み、アドレスaを
歩進してから、ステップS2002に戻って処理を続行
する。
【0251】一方、ステップS2002において、減算
カウンタdtが「0」でないと判断された場合には、ス
テップS2016の処理へ進み、減算カウンタdtを
「1」減少させる。
【0252】ステップS2016の処理を終了すると、
ステップS2018〜ステップS2034の処理を実行
して、曲Aのフェードアウトの処理を行う。即ち、音源
チャンネルが割り当てられた演奏チャンネル(CH#=
ch_tblA[ch]が(−1)でない演奏チャンネ
ル)につき、現在の音量volA[ch]から音量の減
少量vd[ch]を減算し、volumeにvolA
[ch]の整数値をセットし、演奏情報の種別stat
usを”Volume”とし、音源チャンネルCH#、
statusならびにvolumeに基づいて演奏情報
をマルチティンバー音源24に送出する処理を行う。
【0253】具体的には、演奏チャンネルchを「0」
にクリアし(ステップS2018)、それから演奏チャ
ンネルchが16未満であるか否かを判断し(ステップ
S2020)、演奏チャンネルchが16未満であると
判断された場合には、ch_tblA[CH#]をCH
#にセットすることにより演奏チャンネルを音源チャン
ネルに変換する(ステップS2022)。それから、C
H#が「(−1)」であるか否か判断し(ステップS2
024)、CH#が「(−1)」でないと判断された場
合には、音源チャンネルが割り当てられていることにな
るので、現在の音量volA[ch]から音量の減少量
vd[ch]を減算し(ステップS2026)、vol
umeにvolA[ch]の整数値をセットし(ステッ
プS2028)、演奏情報の種別statusを”Vo
lume”とし(ステップS2030)、音源チャンネ
ルCH#、statusならびにvolumeに基づい
て演奏情報をマルチティンバー音源24に送出し(ステ
ップS2032)、ステップS2034の処理へ進む。
【0254】一方、ステップS2024において、CH
#が「(−1)」であると判断された場合には、ジャン
プしてステップS2034の処理へ進む。
【0255】ステップS2034においては、演奏チャ
ンネルchを「1」増加して、ステップS2020へ戻
って処理を続行する。
【0256】また、ステップS2020において、演奏
チャンネルchが16未満でないと判断された場合に
は、ステップS2036〜ステップS2048の処理を
実行し、曲Bの演奏データを読み出して演奏情報(音符
情報)としてマルチティンバー音源24へ送出する処理
を行う。
【0257】具体的には、演奏データを読み出してから
次の演奏データを読み出すまでのクロックを計数するた
めの減算カウンタdt’が「0」であるか否か判断し
(ステップS2036)、減算カウンタdt’が「0」
であると判断された場合には、アドレスa’の演奏デー
タを読み出して、△t、CH#、statusならびに
Key#にそれぞれセットし(ステップS2038)、
ch_tblB[CH#]をCH#にセットすることに
より演奏チャンネルを音源チャンネルに変換する(ステ
ップS2040)。それから、CH#が「(−1)」で
あるか否か判断し(ステップS2042)、CH#が
「(−1)」でないと判断された場合には、音源チャン
ネルが割り当てられていることになるので、音源チャン
ネルCH#、status(=NoteOn/Note
OFF)ならびにKey#に基づく演奏情報(音符情
報)をマルチティンバー音源24へ送出し(ステップS
2044)、ステップS2046の処理へ進む。
【0258】一方、ステップS2042において、CH
#が「(−1)」であると判断された場合には、ジャン
プしてステップS2046の処理へ進む。
【0259】ステップS2046においては、次に続く
データまでのクロック数△tを減算カウンタdt’にセ
ットし、ステップS2048の処理へ進み、アドレス
a’を歩進してから、ステップS2036に戻って処理
を続行する。
【0260】一方、ステップS2036において、減算
カウンタdt’が「0」でないと判断された場合には、
ステップS2050へ進み、減算カウンタdt’を
「1」減少させる。
【0261】ステップS2050の処理を終了すると、
ステップS2052〜ステップS2068の処理を実行
して、曲Bのフェードインの処理を行う。即ち、音源チ
ャンネルが割り当てられた演奏チャンネル(CH#=c
h_tblB[ch]が(−1)でない演奏チャンネ
ル)につき、現在の音量volB[ch]に音量の増加
量vd’[ch]を加算し、volumeにvolB
[ch]の整数値をセットし、演奏情報の種別stat
usを”Volume”とし、音源チャンネルCH#、
statusならびにvolumeに基づいて演奏情報
をマルチティンバー音源24に送出する処理を行う。
【0262】具体的には、演奏チャンネルchを「0」
にクリアし(ステップS2052)、それから演奏チャ
ンネルchが16未満であるか否かを判断し(ステップ
S2054)、演奏チャンネルchが16未満であると
判断された場合には、ch_tblB[CH#]をCH
#にセットすることにより演奏チャンネルを音源チャン
ネルに変換する(ステップS2056)。それから、C
H#が「(−1)」であるか否か判断し(ステップS2
058)、CH#が「(−1)」でないと判断された場
合には、音源チャンネルが割り当てられていることにな
るので、現在の音量volB[ch]に音量の増加量v
d’[ch]を加算し(ステップS2060)、vol
umeにvolB[ch]の整数値をセットし(ステッ
プS2062)、演奏情報の種別statusを”Vo
lume”とし(ステップS2064)、音源チャンネ
ルCH#、statusならびにvolumeに基づい
て演奏情報をマルチティンバー音源24に送出し(ステ
ップS2066)、ステップS2068の処理へ進む。
【0263】一方、ステップS2058において、CH
#が「(−1)」であると判断された場合には、ジャン
プしてステップS2068の処理へ進む。
【0264】ステップS2068においては、演奏チャ
ンネルchを「1」増加して、ステップS2054へ戻
って処理を続行する。
【0265】一方、ステップS2054において、演奏
チャンネルchが16未満でないと判断された場合に
は、そのままテンポクロック割り込み処理ルーチンへリ
ターンする。 1−2−13.クロスフェード完了処理ルーチンの説明 図22および図23には、クロスフェード完了処理ルー
チンのフローチャートが示されており、クロスフェード
完了処理ルーチンが起動されると、まず、ステップS2
202〜ステップS2208の処理において、チャンネ
ル割当テーブルch_table[ch]にch_tb
lB[ch]をコピーする処理を行う。このチャンネル
割当テーブルch_table[ch]にch_tbl
B[ch]をコピーする引き継ぎの処理を行うことによ
り、クロスフェード区間において音源チャンネルが割り
当てられていた曲Bの演奏チャンネルは、クロスフェー
ドの完了以降も同じ音源チャンネルが割り当てられるこ
とになる。
【0266】具体的には、演奏チャンネルchを「0」
にクリアし(ステップS2202)、それから演奏チャ
ンネルchが16未満であるか否かを判断し(ステップ
S2204)、演奏チャンネルchが16未満であると
判断された場合には、ch_table[ch]にch
_tblB[ch]をコピーし(ステップS220
6)、演奏チャンネルchを「1」増加して(ステップ
S2208)、ステップS2204へ戻って処理を続行
する。
【0267】一方、ステップS2204において、演奏
チャンネルchが16未満でないと判断された場合に
は、ステップS2210〜ステップS2230の処理に
おいて、チャンネル割当テーブルch_table[c
h]の補完の処理を行う。即ち、「ch_table
[ch]=(−1)」である演奏チャンネルch(音源
チャンネルが割り当てられていない演奏チャンネル)に
対して、音源チャンネルをそれぞれ割り当てる処理を行
う。例えば、ch_table[ch]の内容が図24
に示すものである場合には、演奏チャンネル0には音源
チャンネル10が割り当てられ、演奏チャンネル1には
音源チャンネル割り当てられておらず、演奏チャンネル
2には音源チャンネル3が割り当てられ、演奏チャンネ
ル3には音源チャンネル8が割り当てられ、演奏チャン
ネル4には音源チャンネル割り当てられておらず、演奏
チャンネル5には音源チャンネル1が割り当てられ、演
奏チャンネル6には音源チャンネル15が割り当てら
れ、演奏チャンネル7には音源チャンネル割り当てられ
ておらず、演奏チャンネル8には音源チャンネル割り当
てられておらず、演奏チャンネル9には音源チャンネル
7が割り当てられ、演奏チャンネル10には音源チャン
ネル11が割り当てられ、演奏チャンネル11には音源
チャンネル割り当てられておらず、演奏チャンネル12
には音源チャンネル割り当てられておらず、演奏チャン
ネル13には音源チャンネル0が割り当てられ、演奏チ
ャンネル14には音源チャンネル13が割り当てられ、
演奏チャンネル15には音源チャンネル割り当てられて
おらず、演奏チャンネルにそれぞれ割り当てられている
音源チャンネルは「0」、「1」、「3」、「7」、
「8」、「10」、「11」、「13」および「15」
であって、どの演奏チャンネルにも割り当てられていな
い音源チャンネルは「2」、「4」、「5」、「6」、
「9」、「12」および「14」である。従って、例え
ば、図25に示すように、これらの音源チャンネルを現
在まだ割り当てがなされていない演奏チャンネル
「1」、「4」、「7」、「8」、「11」、「12」
および「15」に割り当てて、「0」〜「15」の演奏
チャンネルと「0」〜「15」の音源チャンネルとが1
対1に対応するように設定する処理を行う。
【0268】具体的には、演奏チャンネルchを「0」
にクリアし(ステップS2210)、それから演奏チャ
ンネルchが16未満であるか否かを判断し(ステップ
S2212)、演奏チャンネルchが16未満であると
判断された場合には、ch_table[ch]が
「(−1)」であるか否かを判断する(ステップS22
14)。
【0269】ここで、ステップS2214において、c
h_table[ch]が「(−1)」であると判断さ
れた場合には、変数cを「0」にクリアし(ステップS
2216)、さらに、変数ccを「0」にクリアして
(ステップS2218)、ステップS2220の処理に
進む。
【0270】ステップS2220においては、変数cc
が16未満であるか否かを判断し、変数ccが16未満
であると判断された場合には、ch_table[c
c]が変数cと等しいか否かを判断し(ステップS22
22)、ここで、ch_table[cc]が変数cと
等しくないと判断された場合には、変数ccを「1」増
加し(ステップS2224)、それからステップS22
20へ戻って処理を続行する。
【0271】一方、ステップS2222において、ch
_table[cc]が変数cと等しいと判断された場
合には、変数cを「1」増加し(ステップS222
6)、それからステップS2218へ戻って処理を続行
する。
【0272】また、ステップS2220において、変数
ccが16未満でないと判断された場合には、変数cを
ch_table[ch]にセットし(ステップS22
28)、ステップS2230の処理へ進む。
【0273】さらに、ステップS2214において、c
h_table[ch]が「(−1)」でないと判断さ
れた場合には、ジャンプしてステップS2230の処理
へ進む。
【0274】ステップS2230においては、演奏チャ
ンネルchを「1」増加する処理を行うと、ステップS
2212へ戻って処理を続行する。
【0275】また、ステップS2212において、演奏
チャンネルchが16未満でないと判断された場合に
は、ステップS2232の処理へ進み、曲Bの演奏デー
タから曲Bの全ての演奏チャンネルchの音色情報を読
み出して、PC[ch]にセットする。
【0276】ステップS2232の処理を終了すると、
ステップS2234の処理へ進み、曲Bの演奏データか
ら曲Bの全ての演奏チャンネルchの音量情報を読み出
して、VOL[ch]にセットする。
【0277】ステップS2234の処理を終了すると、
ステップS2236〜ステップS2256の処理へ進
み、「ch_tblB[ch]=(−1)」である演奏
チャンネルch(曲Bを演奏するうために使用されてい
ない演奏チャンネルch)について、当該演奏チャンネ
ルchの音色情報ならびに音量情報を、当該演奏チャン
ネルに対応する音源チャンネルに送出する処理を行う。
なお、既に、曲Bを演奏するために使用されている音源
チャンネルに対しては、何らの処理も行わない。具体的
には、演奏チャンネルchを「0」にクリアし(ステッ
プS2236)、それから演奏チャンネルchが16未
満であるか否かを判断し(ステップS2238)、演奏
チャンネルchが16未満であると判断された場合に
は、ch_tblB[ch]が「(−1)」であるか否
かを判断する(ステップS2240)。
【0278】ステップS2240において、ch_tb
lB[ch]が「(−1)」であると判断された場合に
は、ch_table[ch]をCH#にセットし(ス
テップS2242)、PC[ch]をPC#へセットし
(ステップS2244)、”ProgramChang
e”をstatusにセットし(ステップS224
6)、演奏情報(CH#,status,PC#)をマ
ルチティンバー音源24へ送出する(ステップS224
8)。
【0279】さらに、VOL[ch]をvolumeに
セットし(ステップS2250)、”Volume”を
statusにセットし(ステップS2252)、演奏
情報(CH#,status,volume)をマルチ
ティンバー音源24へ送出し(ステップS2254)、
ステップS2256の処理へ進む。
【0280】一方、ステップS2240において、ch
_tblB[ch]が「(−1)」でないと判断された
場合には、ステップS2256の処理へジャンプして進
む。そして、ステップS2256においては、演奏チャ
ンネルchを「1」増加する処理を行うと、ステップS
2238へ戻って処理を続行する。
【0281】また、ステップS2238において、演奏
チャンネルchが16未満でないと判断された場合に
は、ステップS2258〜ステップS2264の処理に
おいて、発音数テーブルNotes[ch]に曲Bの発
音数テーブルNotesB[ch]の内容をコピーする
処理を行う。この曲Bの発音数テーブルNotesB
[ch]の内容が、発音数テーブルNotes[ch]
に引き継がれることになる。
【0282】具体的には、演奏チャンネルchを「0」
にクリアし(ステップS2258)、それから演奏チャ
ンネルchが16未満であるか否かを判断し(ステップ
S2260)、演奏チャンネルchが16未満であると
判断された場合には、Notes[ch]にNotes
B[ch]をコピーし(ステップS2262)、演奏チ
ャンネルchを「1」増加して(ステップS226
4)、ステップS2258へ戻って処理を続行する。
【0283】一方、ステップS2260において、演奏
チャンネルchが16未満でないと判断された場合に
は、ステップS2266〜ステップS2268の処理に
進み、曲Bの演奏処理に使用していた各種変数を引き継
ぐ処理を行う。
【0284】具体的には、減算カウンタdt’の内容を
減算カウンタdtにコピーするとともにアドレスa’の
内容をアドレスaにコピーし(ステップS2266)、
「t−t_start」の演算結果を演奏位置tにセッ
トする(ステップS2268)。
【0285】ステップS2268の処理を終了すると、
ステップS2270の処理へ進み、曲Bの演奏終了地点
を演奏終了地点Tfにセットする。
【0286】ステップS2270の処理を終了すると、
ステップS2272の処理へ進み、演奏曲リストを参照
して、クロスフェード区間開始地点Ts、クロスフェー
ド区間終了地点Te、クロスフェードフラグc_fla
gを更新する。
【0287】ステップS2272の処理を終了すると、
ステップS2274へ進み、クロスフェード区間開始地
点Tsおよびクロスフェード区間終了地点Teに基づい
て、クロスフェード区間中間地点Txを設定する。具体
的には、「(Ts+Te)/2」の演算を行い、その演
算結果をクロスフェード区間中間地点Txにセットす
る。
【0288】こうして、ステップS2274の処理を終
了すると、テンポクロック割り込みルーチンへリターン
する。 1−2−14.曲演奏準備処理ルーチンの説明 図26には、曲演奏準備処理ルーチンのフローチャート
が示されており、この曲演奏準備処理ルーチンが起動さ
れると、まず、ステップS2602において、チャンネ
ル割当テーブルch_table[ch]の初期化を行
う。具体的には、演奏チャンネル0に音源チャンネル0
を割り当て、演奏チャンネル1に音源チャンネル1を割
り当て、・・・、演奏チャンネル15に音源チャンネル
15を割り当てるようにする。
【0289】ステップS2602の処理を終了すると、
ステップS2604の処理へ進み、演奏曲リストを参照
して新たに演奏する曲を特定する。
【0290】ステップS2604の処理を終了すると、
ステップS2606の処理へ進み、新たに演奏する曲の
演奏データから全ての演奏チャンネルchの音色情報を
読み出してPC[ch]にセットし、さらに、ステップ
S2608の処理へ進んで、新たに演奏する曲の演奏デ
ータから全ての演奏チャンネルchの音量情報を読み出
してVOL[ch]にセットする。
【0291】ステップS2608の処理を終了すると、
ステップS2610〜ステップS2628の処理へ進
み、演奏処理に先立ってマルチティンバー音源24に音
色および音量を設定する。即ち、「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、演奏情報と
して割り当てられた音源チャンネル(CH#=ch_t
able[ch])、音色番号(PC#=PC[c
h])および演奏情報種別(status=”Prog
ramChange”)をマルチティンバー音源24に
送出して音色の設定を行うとともに、演奏情報として割
り当てられた音源チャンネル(CH#=ch_tabl
e[ch])、音量(volume=VOL[ch])
および演奏情報種別(status=”Volum
e”)をマルチティンバー音源24に送出して音量の設
定を行う。
【0292】具体的には、演奏チャンネルchを「0」
にクリアし(ステップS2610)、それから演奏チャ
ンネルchが16未満であるか否かを判断し(ステップ
S2612)、演奏チャンネルchが16未満であると
判断された場合には、ch_table[ch]をCH
#にセットし(ステップS2614)、PC[ch]を
PC#へセットし(ステップS2616)、”Prog
ramChange”をstatusにセットし(ステ
ップS2618)、演奏情報(CH#,status,
PC#)をマルチティンバー音源24へ送出する(ステ
ップS2620)。
【0293】さらに、VOL[ch]をvolumeに
セットし(ステップS2622)、”Volume”を
statusにセットし(ステップS2624)、演奏
情報(CH#,status,volume)をマルチ
ティンバー音源24へ送出し(ステップS2626)、
それから演奏チャンネルchを「1」増加する処理を行
い(ステップS2628)、ステップS2612へ戻っ
て処理を続行する。
【0294】一方、ステップS2612において、演奏
チャンネルchが16未満でないと判断された場合に
は、ステップS2630の処理に進み、発音数テーブル
Notes[ch]の初期化を行う。具体的には、No
tes[0]、Notes[1]、・・・、Notes
[15]に全て「0」をセットする。
【0295】ステップS2630の処理を終了すると、
ステップS2632〜ステップS2638の処理へ進
み、演奏処理のために使用する各種変数を初期化する処
理を行う。
【0296】具体的には、減算カウンタdtを「0」に
クリアし(ステップS2632)、演奏する曲の演奏デ
ータの先頭アドレスをアドレスaにセットし(ステップ
S2634)、演奏位置tを「0」にクリアし(ステッ
プS2636)、演奏する曲の演奏終了地点を演奏終了
地点Tfにセットする(ステップS2638)。
【0297】ステップS2638の処理を終了すると、
ステップS2640の処理へ進み、演奏曲リストを参照
して、クロスフェード区間開始地点Ts、クロスフェー
ド区間終了地点Te、クロスフェードフラグc_fla
gを更新する。
【0298】ステップS2640の処理を終了すると、
ステップS2642へ進み、クロスフェード区間開始地
点Tsおよびクロスフェード区間終了地点Teに基づい
て、クロスフェード区間中間地点Txを設定する。具体
的には、「(Ts+Te)/2」の演算を行い、その演
算結果をクロスフェード区間中間地点Txにセットす
る。
【0299】こうして、ステップS2642の処理を終
了すると、テンポクロック割り込みルーチンへリターン
する。 2.第2の実施の形態について 次に、図面に基づいて、本発明による自動演奏装置の実
施の形態の一例として、第2の実施の形態を詳細に説明
するものとする。
【0300】ところで、上記した第1の実施の形態にお
いては、クロスフェード区間開始地点においてのみ音源
チャンネルを曲Aと曲Bとに割り当てる処理を行うよう
にしていたが、この音源チャンネルを割り当てる処理
は、クロスフェードの途中で再度行うようにしてもよい
ものである。
【0301】このため、この第2の実施の形態は、クロ
スフェード区間における中間点(クロスフェード区間中
間地点Tx)において、音源チャンネルの割り当てを再
度行うようにしたものである。即ち、クロスフェード区
間を前半区間と後半区間とに分けて、クロスフェード区
間の前半区間においては、フェードアウトする曲Aに対
して割り当てられる音源チャンネルの数を「10」まで
保証し、クロスフェード区間の後半区間においては、フ
ェードインする曲Bに対して割り当てられる音源チャン
ネルの数を「10」まで保証するようにしたものであ
る。
【0302】従って、この第2の実施の形態において
は、クロスフェードが進むのにつれて、フェードアウト
する曲に割り当て可能な音源チャンネルの数が減少する
とともに、フェードインする曲に割り当て可能な音源チ
ャンネルの数が増加することになり、一層効果的にクロ
スフェードを行うことができるようになる。
【0303】なお、第1の実施の形態と同一あるいは相
当する構成や作用の説明は、上記した第1の実施の形態
に関する説明を援用することとし、その詳細な説明は省
略する。 2−1.全体の構成 全体の構成は第1の実施の形態と同様であるので、第2
の実施の形態においては、上記した[1−1.全体の構
成」を援用して詳細な説明は省略する。 2−2.作用の説明 第2の実施の形態に関する「作用の説明」ならびに「メ
インルーチンの説明」は、第1の実施の形態における
「1−2.作用の説明」ならびに「1−2−1.メイン
ルーチンの説明」と同様であるので、第2の実施の形態
の説明においては、上記した「1−2.作用の説明」な
らびに「1−2−1.メインルーチンの説明」を援用し
て詳細な説明は省略する。 2−2−1.テンポクロック割り込み2処理ルーチンの
説明 この第2の実施の形態においては、第1の実施の形態に
おける「テンポクロック割り込み処理ルーチン」に代え
て、図27に示す「テンポクロック割り込み2処理ルー
チン」を実行する。
【0304】ここで、テンポクロック割り込み2処理ル
ーチンが、テンポクロック割り込み処理ルーチンと異な
る点は、 ・演奏位置tがクロスフェード区間開始地点Tsにきた
とき、図28に示すクロスフェード開始処理2ルーチン
を実行する点 ・演奏位置tがクロスフェード区間中間地点Txにきた
とき、図31に示すクロスフェード中間処理ルーチンを
実行する点である。
【0305】以下、テンポクロック割り込み2処理ルー
チンについて詳細に説明するものとする。
【0306】即ち、このテンポクロック割り込み2ルー
チが起動されると、ステップS2702において、クロ
スフェードに関する処理を行うか否かを示すクロスフェ
ードフラグc_flagが「1」にセットされているか
否かを演奏曲リストを参照して判断する。
【0307】ステップS2702において、クロスフェ
ードフラグc_flagが「1」にセットされている、
即ち、クロスフェードに関する処理を行う場合には、ク
ロスフェードに関する処理を行うためにステップS27
04へ進む。
【0308】ステップS2704においては、現在の演
奏位置tがクロスフェード区間開始地点Tsであるか否
かを判断する。
【0309】ステップS2704において、現在の演奏
位置tがクロスフェード区間開始地点Tsであると判断
された場合には、ステップS2706の処理へ進み、図
28を参照しながら後に詳述するクロスフェード開始処
理2ルーチンを実行する。
【0310】そして、ステップS2706の処理を終了
すると、ステップS2708の処理へ進む。また、ステ
ップS2704において、現在の演奏位置tがクロスフ
ェード区間開始地点Tsでないと判断された場合にも、
ステップS2708の処理へ進む。
【0311】ステップS2708においては、現在の演
奏位置tがクロスフェード区間中間地点Txであるか否
かを判断する。
【0312】ステップS2708において、現在の演奏
位置tがクロスフェード区間中間地点Txであると判断
された場合には、ステップS2710の処理へ進み、図
31を参照しながら後に詳述するクロスフェード中間処
理ルーチンを実行する。
【0313】そして、ステップS2710の処理を終了
すると、ステップS2712の処理へ進む。また、ステ
ップS2708において、現在の演奏位置tがクロスフ
ェード区間中間地点Txでないと判断された場合にも、
ステップS2712の処理へ進む。
【0314】ステップS2712においては、現在の演
奏位置tがクロスフェード区間内(Ts≦t≦Te)で
あるか否かを判断する。
【0315】ステップS2712において、現在の演奏
位置tがクロスフェード区間内であると判断された場合
には、ステップS2714の処理へ進み、図20および
図21に示すクロスフェード演奏処理ルーチンを実行す
る。
【0316】そして、ステップS2714の処理を終了
すると、ステップS2716の処理へ進み、演奏位置t
をインクリメントして1クロック分進めてから、メイン
ルーチンへリターンする。
【0317】一方、ステップS2712において、現在
の演奏位置tがクロスフェード区間内でないと判断され
た場合には、ステップS2718の処理へ進み、現在の
演奏位置tがクロスフェード区間終了地点Teであるか
否かを判断する。
【0318】ステップS2718において、現在の演奏
位置tがクロスフェード区間終了地点Teであると判断
された場合には、ステップS2720の処理へ進み、図
22および図23に示すクロスフェード完了処理ルーチ
ンを実行する。
【0319】そして、ステップS2720の処理を終了
すると、ステップS2732以降の処理へ進んで通常の
演奏処理を実行する。また、ステップS2718におい
て、現在の演奏位置tがクロスフェード区間終了地点T
eでないと判断された場合にも、ステップS2732以
降の処理へ進んで通常の演奏処理を実行する。
【0320】一方、ステップS2702において、クロ
スフェードフラグc_flagが「1」にセットされて
いない、即ち、クロスフェードフラグc_flagが
「0」にクリアされていて、クロスフェードに関する処
理を行わない場合には、ステップS2722の処理へ進
み、現在の演奏位置tが演奏終了地点Tfであるか否か
を判断する。
【0321】ステップS2722において、現在の演奏
位置tが演奏終了地点Tfでないと判断された場合に
は、ステップS2732以降の処理へ進んで通常の演奏
処理を実行する。
【0322】一方、ステップS2722において、現在
の演奏位置tが演奏終了地点Tfであると判断された場
合には、ステップS2724の処理へ進み、演奏曲リス
トを参照して現在演奏している曲の次に演奏する曲があ
るかいなかを判断する。
【0323】ステップS2724において、現在演奏し
ている曲の次に演奏する曲があると判断された場合に
は、ステップS2726の処理へ進み、図26に示す曲
演奏準備処理ルーチンを実行してから、メインルーチン
へリターンする。
【0324】一方、ステップS2724において、現在
演奏している曲の次に演奏する曲がないと判断された場
合には、ステップS2728の処理へ進み、テンポクロ
ックによるCPU10への割り込みを禁止し、テンポク
ロック割り込みルーチンの処理が実行されないようにす
る。
【0325】ステップS2728の処理を終了すると、
ステップS2730の処理へ進み、演奏フラグp_fl
agを「0」にクリアして演奏が終了していることを示
してから、メインルーチンへリターンする。
【0326】そして、ステップS2732においては、
演奏データを読み出してから次の演奏データを読み出す
までのクロックを計数するための減算カウンタdtが
「0」であるか否かを判断する。
【0327】ステップS2732において、減算カウン
タdtが「0」でないと判断された場合には、ステップ
S2750の処理へ進み、減算カウンタdtを1クロッ
ク分減じる。
【0328】ステップS2750の処理を終了すると、
ステップS2752の処理へ進み、現在の演奏位置tを
1クロック分進め、メインルーチンへリターンする。
【0329】一方、ステップS2732において、減算
カウンタdtが「0」であると判断された場合には、ス
テップS2734以降の処理へ進み、ステップS273
4〜ステップS2748の処理により、演奏データを読
み出して、読み出した演奏データに基づく演奏情報をマ
ルチティンバー音源24へ送出する処理を実行する。即
ち、演奏データの読み出しアドレスaの演奏データを読
み出し(ステップS2734)、statusが”No
teON”であるか否かを判断する(ステップS273
6)。ここで、statusが”NoteON”である
と判断された場合には、発音数テーブルNotes[C
H#]を「1」増加させ(ステップS2738)、一
方、statusが”NoteON”でない、即ち、s
tatusが”NoteOFF”であると判断された場
合には、発音数テーブルNotes[CH#]を「1」
減少させる(ステップS2740)。次に、演奏チャン
ネルCH#をチャンネル割当テーブルch_table
[CH#]により音源チャンネルに変換して(ステップ
S2742)、変換後のCH#で示される音源チャンネ
ルを対象に演奏情報(CH#,status,Key
#)を送出する(ステップS2744)。それから、読
み出した演奏データの△tをdtに代入し(ステップS
2746)、アドレスaを歩進させて(ステップS27
48)、ステップS2732へ戻って処理を続行する。 2−2−2.クロスフェード開始処理2ルーチンの説明 図28には、クロスフェード開始処理2ルーチンのフロ
ーチャートが示されている。
【0330】このクロスフェード開始処理2ルーチンが
起動されると、まず、ステップS2802において、演
奏曲リストを参照して、次に演奏する曲を特定する処理
を行う。
【0331】なお、この自動演奏装置においては、ステ
ップS2802における処理の時点で演奏中の曲(以降
の説明においては、「曲A」と称することとする。)と
ステップS2802の処理の時点から演奏を開始しよう
とする次の曲(以降の説明においては、「曲B」と称す
ることとする。)とを並行して演奏するようにし、クロ
スフェード区間(Ts,Te)において曲Aの音量を徐
々に下げるとともに曲Bの音量を徐々に上げていくこと
によって、曲Aと曲Bとのクロスフェードを行うように
している。
【0332】ステップS2802の処理を終了すると、
ステップS2804の処理へ進み、区間(Tα,Tβ)
としてクロスフェード前半区間(Ts,Tx)を設定す
る。ステップS2804の処理を終了すると、ステップ
S2806の処理へ進み、図11に示す区間(Tα,T
β)における曲Aのチャンネルマップch_mapA
[ch]および曲Aの目立ち度マップM_mapA[c
h]を作成する処理ルーチンを実行し、さらにステップ
S2808の処理へ進み、図13に示す曲Bのチャンネ
ルマップch_mapB[ch]および曲Bの目立ち度
マップM_mapB[ch]を作成する処理ルーチンを
実行する。
【0333】ステップS2808の処理を終了すると、
ステップS2810の処理へ進み、チャンネルマップc
h_mapA[ch]に基づいて曲Aで演奏される演奏
チャンネルの数useAを求め、さらにステップS28
12へ進み、チャンネルマップch_mapB[ch]
に基づいて曲Bで演奏される演奏チャンネルの数use
Bを求める。具体的には、「チャンネルマップch_m
apA[ch]=1」となる演奏チャンネルch、即
ち、曲Aの演奏データの存在する演奏チャンネルchの
数を数えて、その数をuseAとする。また、「チャン
ネルマップch_mapB[ch]=1」となる演奏チ
ャンネルch、即ち、曲Bの演奏データの存在する演奏
チャンネルchの数を数えて、その数をuseBとす
る。
【0334】ステップS2812の処理を終了すると、
ステップS2814の処理へ進み、図29および図30
を参照しながら後に詳述するクロスフェード前半区間チ
ャンネル割り当て処理ルーチンを実行する。
【0335】ステップS2814の処理を終了すると、
ステップS2816の処理へ進み、図17に示す曲Aの
フェードアウト準備処理を実行し、それからステップS
2818の処理へ進み、図18を参照しながら後に詳述
する曲Bのフェードイン準備処理を実行する。
【0336】ステップS2818の処理を終了すると、
ステップS2820の処理へ進み、図19に示す曲Bが
使用する音源チャンネルの音色更新処理ルーチンを実行
して、曲Bの演奏処理が行われるのに先立って音源の音
色を設定しておく。
【0337】ステップS2820の処理を終了すると、
ステップS2822〜ステップS2824の処理へ進
み、曲Bの演奏処理に用いる変数の初期化の処理を行
う。具体的には、ステップS2822において、演奏デ
ータを読み出してから次の演奏データを読み出すまでの
クロックを計数するための減算カウンタdt’を「0」
にクリアするとともに、演奏データの読み出しアドレス
a’が曲Bの演奏データの先頭アドレスを指すようにセ
ットする。また、ステップS2824においては、現時
点の演奏位置tをt_startに保存しておく。
【0338】ステップS2824の処理を終了すると、
ステップS2826〜ステップS2832の処理へ進
み、曲Aの発音数テーブルNotesA[ch]および
曲Bの発音数テーブルNotesB[ch]を初期化
し、テンポクロック割り込み2ルーチンへリターンす
る。即ち、変数cに関して「c=0〜c=15」の全て
の変数cについて、発音数テーブルNotes[c]を
曲Aの発音数テーブルNotesA[c]に代入し、
「0」を曲Bの発音数テーブルNotesB[c]に代
入する。これにより、発音数テーブルNotes[c
h]の内容が曲Aの発音数テーブルNotesA[c
h]に引き継がれる。
【0339】そしてその後、テンポ割り込み2ルーチン
へリターンする。 2−2−3.クロスフェード前半区間チャンネル割り当
て処理ルーチンの説明 図29および図30には、クロスフェード前半区間チャ
ンネル割り当て処理ルーチンのフローチャートが示され
ている。
【0340】このクロスフェード前半区間チャンネル割
り当て処理ルーチンが起動されると、まず、ステップS
2902において、曲Aのチャンネル割当テーブルch
_tblA[ch]の初期化を行う。具体的には、曲A
のチャンネル割当テーブルch_tblA[0]〜ch
_tblA[15]のそれぞれに、音源チャンネルが割
り当てられていないことを示す「(−1)」をセットす
る。
【0341】ステップS2902の処理を終了すると、
ステップS2904の処理へ進み、曲Aで演奏される演
奏チャンネルの数useAが「10」以下であるか否か
を判断する。
【0342】ステップS2904において、曲Aで演奏
される演奏チャンネルの数useAが「10」以下であ
ると判断された場合には、ステップS2906〜ステッ
プS2914の処理へ進み、曲Aで演奏される演奏チャ
ンネルの全てに音源チャンネルを割り当てる処理を行
う。即ち、演奏チャンネルchに関して「ch=0〜c
h=15」の全ての演奏チャンネルchについて、「曲
Aのチャンネルマップch_mapA[ch]=0」で
なければ、即ち、「曲Aのチャンネルマップch_ma
pA[ch]=1」であるならば、当該演奏チャンネル
chに音源チャンネルを割り当てるために、チャンネル
割当テーブルch_table[ch]を曲Aのチャン
ネル割当テーブルch_tblA[ch]にセットす
る。
【0343】従って、曲Aの演奏チャンネルに音源チャ
ンネルを割り当てるときは、クロスフェード区間以前か
ら割り当てられていた音源チャンネルと同じ音源チャン
ネルが割り当てられることになる。
【0344】具体的には、ステップS2906におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S2908の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0345】ステップS2908において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS2910〜ス
テップS2914の処理が行われていないことになるの
で、ステップS2910の処理へ進み、「曲Aのチャン
ネルマップch_mapA[ch]=0」であるか否か
を判断する。
【0346】そして、ステップS2910において、
「曲Aのチャンネルマップch_mapA[ch]=
0」でない、即ち、「曲Aのチャンネルマップch_m
apA[ch]=1」であると判断された場合には、当
該演奏チャンネルchに音源チャンネルを割り当てるた
めに、チャンネル割当テーブルch_table[c
h]を曲Aのチャンネル割当テーブルch_tblA
[ch]にセットし(ステップS2912)、それから
演奏チャンネルchを「1」増加させて(ステップS2
914)、ステップS2908へ戻って処理を続行す
る。
【0347】一方、ステップS2910において、「曲
Aのチャンネルマップch_mapA[ch]=0」で
あると判断された場合には、演奏チャンネルchを
「1」増加させて(ステップS2914)、ステップS
2908へ戻って処理を続行する。
【0348】また、ステップS2908において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS29
10〜ステップS2914の処理が行われたことになる
ので、ステップS2932の処理へジャンプして進む。
【0349】また、ステップS2904において、曲A
で演奏される演奏チャンネルの数useAが「10」以
下でないと判断された場合には、ステップS2916〜
ステップS2930の処理へ進み、曲Aで演奏される演
奏チャンネルの中で優先順位の高い演奏チャンネル(具
体的には、優先順位0〜優先順位9の演奏チャンネル)
に音源チャンネルを割り当てる処理を行う。
【0350】具体的には、曲Aで演奏される演奏チャン
ネルの数useAを「10」とし(ステップS291
6)、全ての演奏チャンネルchについて、曲Aの目立
ち度マップM_mapA[ch]の内容を目立ち度マッ
プM_map[ch]にコピーし(ステップS291
8)、図16を参照しながら後に詳述する目立ち度マッ
プM_map[ch]に基づいてmedati_ch
[ch]作成処理ルーチンを実行する(ステップS29
20)。これにより、曲Aの各演奏チャンネルに対して
優先順位が付与されることになる。なお、優先順位の値
が小さいほど、当該演奏チャンネルの優先順位が高いも
のとする。
【0351】ステップS2920の処理を終了すると、
ステップS2922〜ステップS2930の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、medat
i_ch[ch]がuseAより小さい場合、即ち、演
奏チャンネルchの優先順位を示す値がuseAの値未
満である場合には、当該演奏チャンネルchに音源チャ
ンネルを割り当てるためにチャンネル割当テーブルch
_table[ch]を曲Aのチャンネル割当テーブル
ch_tblA[ch]にセットする。
【0352】具体的には、ステップS2922におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S2924の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0353】ステップS2924において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS2926〜ス
テップS2930の処理が行われていないことになるの
で、ステップS2926の処理へ進み、medati_
ch[ch]がuseAより小さいか否かを判断する。
【0354】そして、ステップS2926において、m
edati_ch[ch]がuseAより小さいと判断
された場合には、ステップS2928の処理へ進み、当
該演奏チャンネルchに音源チャンネルを割り当てるた
めにチャンネル割当テーブルch_table[ch]
を曲Aのチャンネル割当テーブルch_tblA[c
h]にセットし、それから演奏チャンネルchを「1」
増加させて(ステップS2930)、ステップS292
4へ戻って処理を続行する。
【0355】一方、ステップS2926において、me
dati_ch[ch]がuseAより小さくないと判
断された場合には、ステップS2930の処理へジャン
プして進み、演奏チャンネルchを「1」増加させて、
ステップS2924へ戻って処理を続行する。
【0356】また、ステップS2924において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS29
26〜ステップS2930の処理が行われたことになる
ので、ステップS2932の処理へ進む。
【0357】ステップS2932においては、曲Bのチ
ャンネル割当テーブルch_tblB[ch]の初期化
を行う。具体的には、曲Bのチャンネル割当テーブルc
h_tblB[0]〜ch_tblB[15]のそれぞ
れに、音源チャンネルが割り当てられていないことを示
す「(−1)」をセットする。
【0358】ステップS2932の処理を終了すると、
ステップS2934の処理へ進み、曲Bで演奏される演
奏チャンネルの数useBが「16−useA」以下で
あるか否かを判断する。
【0359】ステップS2934において、曲Bで演奏
される演奏チャンネルの数useBが「16−use
A」以下であると判断された場合には、ステップS29
36〜ステップS2950の処理へ進み、曲Bで演奏さ
れる演奏チャンネルの全てに音源チャンネルを割り当て
る処理を行う。即ち、演奏チャンネルchに関して「c
h=0〜ch=15」の全ての演奏チャンネルchにつ
いて、「曲Bのチャンネルマップch_mapB[c
h]=0」でなければ、即ち、「曲Bのチャンネルマッ
プch_mapB[ch]=1」であるならば、当該演
奏チャンネルchに音源チャンネルを割り当てる。この
際に、既に曲Aに割り当てられた音源チャンネル以外の
音源チャンネルを割り当てるために、「ch_tblA
[ach]=(−1)」である演奏チャンネルachを
検出し、チャンネル割当テーブルch_table[a
ch]を曲Bのチャンネル割当テーブルch_tblB
[ch]にセットするようにしている。
【0360】具体的には、ステップS2936におい
て、演奏チャンネルachを「0」にクリアするととも
に、演奏チャンネルchを「0」にクリアし、ステップ
S2938の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。ステップS2938にお
いて、演奏チャンネルchが16未満であると判断され
た場合には、全ての演奏チャンネルchについてステッ
プS2940〜ステップS2950の処理が行われてい
ないことになるので、ステップS2940の処理へ進
み、「曲Bのチャンネルマップch_mapB[ch]
=0」であるか否かを判断する。
【0361】そして、ステップS2940において、
「曲Bのチャンネルマップch_mapB[ch]=
0」でない、即ち、「曲Bのチャンネルマップch_m
apB[ch]=1」であると判断された場合には、当
該演奏チャンネルchに音源チャンネルを割り当てるた
めに、ステップS2942以降の処理を行う。
【0362】即ち、ステップS2942においては、
「曲Aのチャンネル割当テーブルch_tblA[ac
h]=(−1)」であるか否かを判断する。
【0363】ステップS2942において、「曲Aのチ
ャンネル割当テーブルch_tblA[ach]=(−
1)」でないと判断された場合には、ステップS294
4の処理へ進み、演奏チャンネルachを「1」増加し
てステップS2942へ戻って処理を繰り返す。
【0364】一方、ステップS2942において、「曲
Aのチャンネル割当テーブルch_tblA[ach]
=(−1)」であると判断された場合には、ステップS
2946の処理へ進む。
【0365】即ち、上記したステップS2942〜ステ
ップS2944の処理において、「ch_tblA[a
ch]=(−1)」である演奏チャンネルachの検出
が行われ、検出された演奏チャンネルachに関してス
テップS2946以降の処理が行われる。
【0366】即ち、ステップS2946においては、演
奏チャンネルachに音源チャンネルを割り当てるため
に、チャンネル割当テーブルch_table[ac
h]を曲Bのチャンネル割当テーブルch_tblB
[ch]にセットする。
【0367】ステップS2946の処理を終了すると、
ステップS2948の処理へ進み、演奏チャンネルac
hを「1」増加させて、ステップS2950の処理へ進
む。一方、ステップS2940において、「曲Bのチャ
ンネルマップch_mapB[ch]=0」であると判
断された場合にも、ステップS2950へ進む。
【0368】ステップS2950においては、演奏チャ
ンネルchを「1」増加させて、それからステップS2
938へ戻って処理を続行する。
【0369】また、ステップS2938において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS29
40〜ステップS2950の処理が行われたことになる
ので、クロスフェード開始処理2ルーチンへリターンす
る。
【0370】一方、ステップS2934において、曲B
で演奏される演奏チャンネルの数useBが「16−u
seA」以下でないと判断された場合には、ステップS
2952〜ステップS2972の処理へ進み、演奏され
る演奏チャンネルで優先順位の高い演奏チャンネル、即
ち、優先順位の示す値が「16−useA」未満である
演奏チャンネルに音源チャンネルを割り当てる処理を行
う。
【0371】具体的には、曲Bで演奏される演奏チャン
ネルの数useBを「16−useA」とし(ステップ
S2952)、全ての演奏チャンネルchについて、曲
Bの目立ち度マップM_mapB[ch]の内容を目立
ち度マップM_map[ch]にコピーし(ステップS
2954)、それから、図16を参照しながら後に詳述
する目立ち度マップM_map[ch]に基づいてme
dati_ch[ch]作成処理ルーチンを実行する
(ステップS2956)。これにより、曲Bの各演奏チ
ャンネルに対して「0」〜「15」の優先順位が付与さ
れることになる。なお、優先順位の値が小さいほど、当
該演奏チャンネルの優先順位が高いものとする。
【0372】ステップS2956の処理を終了すると、
ステップS2958〜ステップS2972の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、medat
i_ch[ch]がuseBより小さい場合、即ち、演
奏チャンネルchの優先順位を示す値がuseBの値未
満である場合には、当該演奏チャンネルchに音源チャ
ンネルを割り当てるためにチャンネル割当テーブルch
_table[ch]を曲Bのチャンネル割当テーブル
ch_tblB[ch]にセットする。この際に、既に
曲Aに割り当てられた音源チャンネル以外の音源チャン
ネルを割り当てるために、「ch_tblA[ach]
=(−1)」である演奏チャンネルachを検出し、チ
ャンネル割当テーブルch_table[ach]を曲
Bのチャンネル割当テーブルch_tblB[ch]に
セットするようにしている。
【0373】具体的には、ステップS2958におい
て、演奏チャンネルachを「0」にクリアするととも
に、演奏チャンネルchを「0」にクリアし、ステップ
S2960の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。ステップS2960にお
いて、演奏チャンネルchが16未満であると判断され
た場合には、全ての演奏チャンネルchについてステッ
プS2962〜ステップS2972の処理が行われてい
ないことになるので、ステップS2962の処理へ進
み、medati_ch[ch]がuseBより小さい
か否かを判断する。
【0374】そして、ステップS2962において、m
edati_ch[ch]がuseBより小さいと判断
された場合には、ステップS2964以降の処理を行
う。
【0375】即ち、ステップS2964においては、
「曲Aのチャンネル割当テーブルch_tblA[ac
h]=(−1)」であるか否かを判断する。
【0376】ステップS2964において、「曲Aのチ
ャンネル割当テーブルch_tblA[ach]=(−
1)」でないと判断された場合には、ステップS296
6の処理へ進み、演奏チャンネルachを「1」増加し
てステップS2964へ戻って処理を繰り返す。
【0377】一方、ステップS2964において、「曲
Aのチャンネル割当テーブルch_tblA[ach]
=(−1)」である」と判断された場合には、ステップ
S2968の処理へ進む。
【0378】即ち、上記したステップS2964〜ステ
ップS2966の処理において、「ch_tblA[a
ch]=(−1)」である演奏チャンネルachの検出
が行われ、検出された演奏チャンネルachに関してス
テップS2968以降の処理が行われる。
【0379】ここで、ステップS2968においては、
当該演奏チャンネルachに音源チャンネルを割り当て
るためにチャンネル割当テーブルch_table[a
ch]を曲Bのチャンネル割当テーブルch_tblB
[ch]にセットする。
【0380】ステップS2968の処理を終了すると、
ステップS2970の処理へ進み、演奏チャンネルac
hを「1」増加させて、ステップS2972の処理へ進
む。一方、ステップS2962において、medati
_ch[ch]がuseBより小さくないと判断された
場合にも、ステップS2972の処理へ進む。
【0381】ステップS2972においては、演奏チャ
ンネルchを「1」増加させて、それからステップS2
960へ戻って処理を続行する。
【0382】また、ステップS2960において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS29
62〜ステップS2972の処理が行われたことになる
ので、クロスフェード開始処理2ルーチンへリターンす
る。 2−2−4.クロスフェード中間処理ルーチンの説明 図31には、クロスフェード中間処理ルーチンのフロー
チャートが示されている。
【0383】このクロスフェード中間処理ルーチンが起
動されると、まず、ステップS3102において、区間
(Tα,Tβ)としてクロスフェード後半区間(Tx,
Te)を設定する。
【0384】ステップS3102の処理を終了すると、
ステップS3104の処理へ進み、図11に示す区間
(Tα,Tβ)における曲Aのチャンネルマップch_
mapA[ch]および曲Aの目立ち度マップM_ma
pA[ch]を作成する処理ルーチンを実行し、さらに
ステップS3106の処理へ進み、図13に示す区間
(Tα,Tβ)における曲Bのチャンネルマップch_
mapB[ch]および曲Bの目立ち度マップM_ma
pB[ch]を作成する処理ルーチンを実行する。ステ
ップS3106の処理を終了すると、ステップS310
8の処理へ進み、チャンネルマップch_mapA[c
h]に基づいて曲Aで演奏される演奏チャンネルの数u
seAを求め、さらにステップS3110へ進み、チャ
ンネルマップch_mapB[ch]に基づいて曲Bで
演奏される演奏チャンネルの数useBを求める。具体
的には、「チャンネルマップch_mapA[ch]=
1」となる演奏チャンネルch、即ち、曲Aの演奏デー
タの存在する演奏チャンネルchの数を数えて、その数
をuseAとする。また、「チャンネルマップch_m
apB[ch]=1」となる演奏チャンネルch、即
ち、曲Bの演奏データの存在する演奏チャンネルchの
数を数えて、その数をuseBとする。
【0385】ステップS3110の処理を終了すると、
ステップS3112の処理へ進み、図32および図33
を参照しながら後に詳述するクロスフェード後半区間チ
ャンネル割り当て処理ルーチンを実行する。
【0386】ステップS3112の処理を終了すると、
ステップS3114の処理へ進み、図34および図35
を参照しながら後に詳述する継続して使用される音源チ
ャンネル以外の音源チャンネルの音色更新処理ルーチン
を実行して、テンポクロック割り込み2ルーチンへリタ
ーンする。 2−2−5.クロスフェード後半区間チャンネル割り当
て処理ルーチンの説明 図32および図33には、クロスフェード後半区間チャ
ンネル割り当て処理ルーチンのフローチャートが示され
ている。
【0387】このクロスフェード後半区間チャンネル割
り当て処理ルーチンが起動されると、まず、ステップS
3202において、全ての演奏チャンネルchについ
て、曲Bのチャンネル割当テーブルch_tblB[c
h]の内容をch_tblB’[ch]にコピーし、ス
テップS3204へ進み、曲Bのチャンネル割当テーブ
ルch_tblB[ch]の初期化を行う。具体的に
は、曲Bのチャンネル割当テーブルch_tblB
[0]〜ch_tblB[15]のそれぞれに、音源チ
ャンネルが割り当てられていないことを示す「(−
1)」をセットする。
【0388】なお、ch_tblB’[ch]は、クロ
スフェード前半区間での音源チャンネルの割り当て状況
を、後の処理において参照するために保存するものであ
る。ステップS3204の処理を終了すると、ステップ
S3206の処理へ進み、曲Bで演奏される演奏チャン
ネルの数useBが「10」以下であるか否かを判断す
る。
【0389】ステップS3206において、曲Bで演奏
される演奏チャンネルの数useBが「10」以下であ
ると判断された場合には、ステップS3208〜ステッ
プS3220の処理へ進み、曲Bで演奏される演奏チャ
ンネルの全てに音源チャンネルを割り当てる処理を行
う。即ち、演奏チャンネルchに関して「ch=0〜c
h=15」の全ての演奏チャンネルchについて、「曲
Bのチャンネルマップch_mapB[ch]=0」で
なければ、即ち、「曲Bのチャンネルマップch_ma
pB[ch]=1」であるならば、当該演奏チャンネル
chに音源チャンネルを割り当てる。
【0390】具体的には、ステップS3208におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S3210の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0391】ステップS3210において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS3212〜ス
テップS3220の処理が行われていないことになるの
で、ステップS3212の処理へ進み、「曲Bのチャン
ネルマップch_mapB[ch]=0」であるか否か
を判断する。
【0392】そして、ステップS3212において、
「曲Bのチャンネルマップch_mapB[ch]=
0」でない、即ち、「曲Bのチャンネルマップch_m
apB[ch]=1」であると判断された場合には、ス
テップS3214へ進み、「曲Bのチャンネルマップc
h_mapB[ch]=0」でない、即ち、「曲Bのチ
ャンネルマップch_mapB[ch]=1」であると
判断された当該演奏チャンネルchが、「ch_tbl
B’[ch]=(−1)」であるかいなか、即ち、クロ
スフェードの前半区間において音源チャンネルが割り当
てられていないか否かを判断する。
【0393】ステップS3214において、「ch_t
blB’[ch]=(−1)」でない、即ち、クロスフ
ェードの前半区間において音源チャンネルが割り当てら
れていたと判断された場合には、ステップS3216へ
進み、当該演奏チャンネルに対してクロスフェードの前
半区間で割り当てられていた音源チャンネルを継続して
割り当てるようにするために、ch_tblB’[c
h]をch_tblB[ch]にセットし、さらにステ
ップS3220の処理へ進み、演奏チャンネルchを
「1」増加させて、ステップS3210へ戻って処理を
続行する。
【0394】一方、ステップS3214において、「c
h_tblB’[ch]=(−1)」である、即ち、ク
ロスフェードの前半区間において音源チャンネルが割り
当てられていないと判断された場合には、ステップS3
218へ進み、ch_tblB[ch]に「(−2)」
をセットし、さらにステップS3220の処理へ進み、
演奏チャンネルchを「1」増加させて、ステップS3
210へ戻って処理を続行する。
【0395】なお、ch_tblB[ch]に「(−
2)」とされた演奏チャンネルについては、継続して使
用される音源チャンネル以外の音源チャンネルの音色更
新処理ルーチンにおいて音源チャンネルを割り当てるこ
とになる。
【0396】一方、ステップS3212において、「曲
Bのチャンネルマップch_mapB[ch]=0」で
あると判断された場合には、ジャンプしてステップS3
220の処理へ進み、演奏チャンネルchを「1」増加
させて、ステップS3210へ戻って処理を続行する。
【0397】また、ステップS3210において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS32
12〜ステップS3220の処理が行われたことになる
ので、ステップS3242の処理へ進む。
【0398】さらに、ステップS3206において、曲
Bで演奏される演奏チャンネルの数useBが「10」
以下でないと判断された場合には、ステップS3222
〜ステップS3240の処理へ進み、曲Bで演奏される
演奏チャンネルの中で優先順位の高い演奏チャンネル
(具体的には、優先順位0〜優先順位9の演奏チャンネ
ル)に音源チャンネルを割り当てる処理を行う。
【0399】具体的には、曲Bで演奏される演奏チャン
ネルの数useBを「10」とし(ステップS322
2)、全ての演奏チャンネルchについて、曲Bの目立
ち度マップM_mapB[ch]の内容を目立ち度マッ
プM_map[ch]にコピーし(ステップS322
4)、図16に示す目立ち度マップM_map[ch]
に基づいてmedati_ch[ch]作成処理ルーチ
ンを実行する(ステップS3226)。これにより、曲
Bの各演奏チャンネルに対して優先順位が付与されるこ
とになる。なお、優先順位の値が小さいほど、当該演奏
チャンネルの優先順位が高いものとする。
【0400】ステップS3226の処理を終了すると、
ステップS3228〜ステップS3240の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、medat
i_ch[ch]がuseBより小さい場合、即ち、演
奏チャンネルchの優先順位を示す値がuseBの値未
満である場合には、当該演奏チャンネルchに音源チャ
ンネルを割り当てる処理を行う。
【0401】具体的には、ステップS3228におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S3230の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0402】ステップS3230において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS3232〜ス
テップS3240の処理が行われていないことになるの
で、ステップS3232の処理へ進み、medati_
ch[ch]がuseBより小さいか否かを判断する。
【0403】そして、ステップS3232において、m
edati_ch[ch]がuseBより小さいと判断
された場合には、ステップS3234の処理へ進み、m
edati_ch[ch]がuseBより小さいと判断
された当該演奏チャンネルchが、「ch_tblB’
[ch]=(−1)」であるかいなか、即ち、クロスフ
ェードの前半区間において音源チャンネルが割り当てら
れていないか否かを判断する。
【0404】ステップS3234において、「ch_t
blB’[ch]=(−1)」でない、即ち、クロスフ
ェードの前半区間において音源チャンネルが割り当てら
れていたと判断された場合には、ステップS3236へ
進み、当該演奏チャンネルに対してクロスフェードの前
半区間で割り当てられていた音源チャンネルを継続して
割り当てるようにするために、ch_tblB’[c
h]をch_tblB[ch]にセットし、さらにステ
ップS3240の処理へ進み、演奏チャンネルchを
「1」増加させて、ステップS3230へ戻って処理を
続行する。
【0405】一方、ステップS3234において、「c
h_tblB’[ch]=(−1)」である、即ち、ク
ロスフェードの前半区間において音源チャンネルが割り
当てられていないと判断された場合には、ステップS3
238へ進み、ch_tblB[ch]に「(−2)」
をセットし、さらにステップS3240の処理へ進み、
演奏チャンネルchを「1」増加させて、ステップS3
230へ戻って処理を続行する。
【0406】なお、ch_tblB[ch]に「(−
2)」とされた演奏チャンネルについては、継続して使
用される音源チャンネル以外の音源チャンネルの音色更
新処理ルーチンにおいて音源チャンネルを割り当てるこ
とになる。
【0407】一方、ステップS3232において、me
dati_ch[ch]がuseBより小さくないと判
断された場合には、ジャンプしてステップS3240の
処理へ進み、演奏チャンネルchを「1」増加させて、
ステップS3230へ戻って処理を続行する。
【0408】また、ステップS3230において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS32
32〜ステップS3240の処理が行われたことになる
ので、ステップS3242の処理へ進む。
【0409】ステップS3242においては、全ての演
奏チャンネルchについて、曲Aのチャンネル割当テー
ブルch_tblA[ch]の内容をch_tblA’
[ch]にコピーし、ステップS3244へ進み、曲A
のチャンネル割当テーブルch_tblA[ch]の初
期化を行う。具体的には、曲Aのチャンネル割当テーブ
ルch_tblA[0]〜ch_tblB[15]のそ
れぞれに、音源チャンネルが割り当てられていないこと
を示す「(−1)」をセットする。
【0410】なお、ch_tblA’[ch]は、クロ
スフェード前半区間での音源チャンネルの割り当て状況
を、後の処理において参照するために保存するものであ
る。ステップS3244の処理を終了すると、ステップ
S3246の処理へ進み、曲Bで演奏される演奏チャン
ネルの数useAが「16−useB」以下であるか否
かを判断する。
【0411】ステップS3246において、曲Aで演奏
される演奏チャンネルの数useAが「16−use
A」以下であると判断された場合には、ステップS32
48〜ステップS3240の処理へ進み、曲Aで演奏さ
れる演奏チャンネルの全てに音源チャンネルを割り当て
る処理を行う。即ち、演奏チャンネルchに関して「c
h=0〜ch=15」の全ての演奏チャンネルchにつ
いて、「曲Aのチャンネルマップch_mapA[c
h]=0」でなければ、即ち、「曲Aのチャンネルマッ
プch_mapA[ch]=1」であるならば、当該演
奏チャンネルchに音源チャンネルを割り当てる。
【0412】具体的には、ステップS3248におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S3250の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0413】ステップS3250において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS3252〜ス
テップS3260の処理が行われていないことになるの
で、ステップS3252の処理へ進み、「曲Aのチャン
ネルマップch_mapA[ch]=0」であるか否か
を判断する。
【0414】そして、ステップS3252において、
「曲Aのチャンネルマップch_mapA[ch]=
0」でない、即ち、「曲Aのチャンネルマップch_m
apA[ch]=1」であると判断された場合には、ス
テップS3254へ進み、「曲Aのチャンネルマップc
h_mapA[ch]=0」でない、即ち、「曲Aのチ
ャンネルマップch_mapA[ch]=1」であると
判断された当該演奏チャンネルchが、「ch_tbl
A’[ch]=(−1)」であるかいなか、即ち、クロ
スフェードの前半区間において音源チャンネルが割り当
てられていないか否かを判断する。
【0415】ステップS3254において、「ch_t
blA’[ch]=(−1)」でない、即ち、クロスフ
ェードの前半区間において音源チャンネルが割り当てら
れていたと判断された場合には、ステップS3256へ
進み、当該演奏チャンネルに対してクロスフェードの前
半区間で割り当てられていた音源チャンネルを継続して
割り当てるようにするために、ch_tblA’[c
h]をch_tblA[ch]にセットし、さらにステ
ップS3260の処理へ進み、演奏チャンネルchを
「1」増加させて、ステップS3250へ戻って処理を
続行する。
【0416】一方、ステップS3254において、「c
h_tblA’[ch]=(−1)」である、即ち、ク
ロスフェードの前半区間において音源チャンネルが割り
当てられていないと判断された場合には、ステップS3
258へ進み、ch_tblA[ch]に「(−2)」
をセットし、さらにステップS3260の処理へ進み、
演奏チャンネルchを「1」増加させて、ステップS3
250へ戻って処理を続行する。
【0417】なお、ch_tblA[ch]に「(−
2)」とされた演奏チャンネルについては、継続して使
用される音源チャンネル以外の音源チャンネルの音色更
新処理ルーチンにおいて音源チャンネルを割り当てるこ
とになる。
【0418】一方、ステップS3252において、「曲
Aのチャンネルマップch_mapA[ch]=0」で
あると判断された場合には、ジャンプしてステップS3
260の処理へ進み、演奏チャンネルchを「1」増加
させて、ステップS3250へ戻って処理を続行する。
【0419】また、ステップS3250において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS32
52〜ステップS3260の処理が行われたことになる
ので、クロスフェード中間処理ルーチンへリターンす
る。
【0420】さらに、ステップS3246において、曲
Aで演奏される演奏チャンネルの数useAが「16−
useB」以下でないと判断された場合には、ステップ
S3262〜ステップS3280の処理へ進み、曲Aで
演奏される演奏チャンネルの中で優先順位の高い演奏チ
ャンネル(具体的には、優先順位0〜優先順位「16−
useB−1」の演奏チャンネル)に音源チャンネルを
割り当てる処理を行う。
【0421】具体的には、曲Aで演奏される演奏チャン
ネルの数useAを「16−useB」とし(ステップ
S3262)、全ての演奏チャンネルchについて、曲
Aの目立ち度マップM_mapA[ch]の内容を目立
ち度マップM_map[ch]にコピーし(ステップS
3264)、図16に示す目立ち度マップM_map
[ch]に基づいてmedati_ch[ch]作成処
理ルーチンを実行する(ステップS3266)。これに
より、曲Aの各演奏チャンネルに対して優先順位が付与
されることになる。なお、優先順位の値が小さいほど、
当該演奏チャンネルの優先順位が高いものとする。
【0422】ステップS3266の処理を終了すると、
ステップS3268〜ステップS3270の処理を実行
し、演奏チャンネルchに関して「ch=0〜ch=1
5」の全ての演奏チャンネルchについて、medat
i_ch[ch]がuseAより小さい場合、即ち、演
奏チャンネルchの優先順位を示す値がuseAの値未
満である場合には、当該演奏チャンネルchに音源チャ
ンネルを割り当てる処理を行う。
【0423】具体的には、ステップS3268におい
て、演奏チャンネルchを「0」にクリアし、ステップ
S3270の処理へ進んで、演奏チャンネルchが16
未満であるか否かを判断する。
【0424】ステップS3270において、演奏チャン
ネルchが16未満であると判断された場合には、全て
の演奏チャンネルchについてステップS3272〜ス
テップS3280の処理が行われていないことになるの
で、ステップS3272の処理へ進み、medati_
ch[ch]がuseAより小さいか否かを判断する。
【0425】そして、ステップS3272において、m
edati_ch[ch]がuseAより小さいと判断
された場合には、ステップS3274の処理へ進み、m
edati_ch[ch]がuseAより小さいと判断
された当該演奏チャンネルchが、「ch_tblA’
[ch]=(−1)」であるかいなか、即ち、クロスフ
ェードの前半区間において音源チャンネルが割り当てら
れていないか否かを判断する。
【0426】ステップS3274において、「ch_t
blA’[ch]=(−1)」でない、即ち、クロスフ
ェードの前半区間において音源チャンネルが割り当てら
れていたと判断された場合には、ステップS3276へ
進み、当該演奏チャンネルに対してクロスフェードの前
半区間で割り当てられていた音源チャンネルを継続して
割り当てるようにするために、ch_tblA’[c
h]をch_tblA[ch]にセットし、さらにステ
ップS3280の処理へ進み、演奏チャンネルchを
「1」増加させて、ステップS3270へ戻って処理を
続行する。
【0427】一方、ステップS3274において、「c
h_tblA’[ch]=(−1)」である、即ち、ク
ロスフェードの前半区間において音源チャンネルが割り
当てられていないと判断された場合には、ステップS3
278へ進み、ch_tblA[ch]に「(−2)」
をセットし、さらにステップS3280の処理へ進み、
演奏チャンネルchを「1」増加させて、ステップS3
270へ戻って処理を続行する。
【0428】なお、ch_tblA[ch]に「(−
2)」とされた演奏チャンネルについては、継続して使
用される音源チャンネル以外の音源チャンネルの音色更
新処理ルーチンにおいて音源チャンネルを割り当てるこ
とになる。
【0429】一方、ステップS3272において、me
dati_ch[ch]がuseAより小さくないと判
断された場合には、ジャンプしてステップS3280の
処理へ進み、演奏チャンネルchを「1」増加させて、
ステップS3270へ戻って処理を続行する。
【0430】また、ステップS3270において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS32
72〜ステップS3280の処理が行われたことになる
ので、クロスフェード中間処理ルーチンへリターンす
る。 2−2−6.継続して使用される音源チャンネル以外の
音源チャンネルの音色更新ルーチンの説明 図34および図35には、継続して使用される音源チャ
ンネル以外の音源チャンネルの音色更新ルーチンのフロ
ーチャートが示されている。
【0431】この継続して使用される音源チャンネル以
外の音源チャンネルの音色更新ルーチンが起動される
と、まず、ステップS3402〜ステップS3420の
処理に進み、割当済み音源チャンネルテーブルused
_ch[ch]に現時点における音源チャンネルの割当
状況をセットする処理を行う。なお、割当済み音源チャ
ンネルテーブルused_ch[ch]が「0」にクリ
アされていれば、音源チャンネルchがまだどの演奏チ
ャンネルにも割り当てられていない状態を示し、割当済
み音源チャンネルテーブルused_ch[ch]に
「1」がセットされていれば、音源チャンネルchは既
に何れかの演奏チャンネルに割り当てられている状態を
示す。
【0432】ステップS3402〜ステップS3420
においては、曲Aの演奏チャンネルchが使用する音源
チャンネルは「c=ch_tblA[ch]」により得
られ、この変数cの値が「0」以上であるならば音源チ
ャンネルの番号であるので割当済み音源チャンネルテー
ブルused_ch[ch]に「1」をセットする。ま
た、曲Bに関しても、同様な処理を行うものである。
【0433】具体的には、まず、割当済み音源チャンネ
ルテーブルused_ch[ch]の初期化を行う(ス
テップS3402)。この初期化は、割当済み音源チャ
ンネルテーブルused_ch[0]〜used_ch
[15]のそれぞれを、「0」にクリアすることにより
行う。
【0434】それから、演奏チャンネルchを「0」に
クリアし(ステップS3404)、演奏チャンネルch
が16未満であるか否かを判断する(ステップS340
6)。
【0435】ここで、演奏チャンネルchが16未満で
あると判断された場合には、全ての演奏チャンネルch
についてステップS3408〜ステップS3420の処
理が行われていないことになるので、ch_tblA
[ch]を変数cにセットし(ステップS3408)、
さらに変数cが「0」以上であるか否かを判断する(ス
テップS3410)。
【0436】そして、変数cが「0」以上であると判断
された場合には、割当済み音源チャンネルテーブルus
ed_ch[ch]に「1」をセットして(ステップS
3412)、ステップS3414の処理へ進み、、変数
cが「0」以上ではないと判断された場合には、ステッ
プS3414へジャンプして進む。
【0437】ステップS3414においては、ch_t
blB[ch]を変数cにセットし、さらにステップS
3416へ進み、変数cが「0」以上であるか否かを判
断する。
【0438】ここで、変数cが「0」以上であると判断
された場合には、割当済み音源チャンネルテーブルus
ed_ch[ch]に「1」をセットして(ステップS
3418)、ステップS3420の処理へ進み、、変数
cが「0」以上ではないと判断された場合には、ステッ
プS3420へジャンプして進む。
【0439】ステップS3420においては、演奏チャ
ンネルchを「1」増加させて、ステップS3406へ
戻って処理を続行する。
【0440】一方、ステップS3406において、演奏
チャンネルchが16未満でないと判断された場合に
は、全ての演奏チャンネルchについてステップS34
08〜ステップS3420の処理が行われたことになる
ので、ステップS3422の処理へ進み、演奏チャンネ
ルachに「0」をセットし、さらにステップS342
4の処理へ進み、曲Aの全ての演奏チャンネルの音色情
報を読み出してPC[ch]にセットする。
【0441】ステップS3424の処理を終了すると、
演奏チャンネルchを「0」にクリアし(ステップS3
426)、それから演奏チャンネルchが16未満であ
るか否かを判断し(ステップS3428)、ここで、演
奏チャンネルchが16未満であると判断された場合に
は、ch_tblA[ch]が「(−2)」であるか否
かを判断する(ステップS3430)。
【0442】ステップS3430において、ch_tb
lA[ch]が「(−2)」であると判断された場合に
は、used_ch[ach]が「0」であるか否かを
判断し(ステップS3432)、used_ch[ac
h]が「0」でない場合には、演奏チャンネルachを
「1」増加して(ステップS3434)、それからステ
ップS3432へ戻って処理を続行する。
【0443】一方、used_ch[ach]が「0」
である場合には、演奏チャンネルachを曲Aのチャン
ネル割当テーブルch_tblA[ch]にセットし
(ステップS3436)、演奏チャンネルachをCH
#にセットし(ステップS3438)、PC[ch]を
PC#へセットし(ステップS3440)、”Prog
ramChange”をstatusにセットし(ステ
ップS3442)、演奏情報(CH#,status,
PC#)をマルチティンバー音源24へ送出し(ステッ
プS3444)、演奏チャンネルachを「1」増加し
(ステップS3446)、さらに演奏チャンネルchを
「1」増加してから(ステップS3448)、ステップ
S3428へ戻って処理を繰り返す。
【0444】一方、ステップS3430において、ch
_tblA[ch]が「(−2)」でないと判断された
場合には、ジャンプしてステップS3448へ進み、演
奏チャンネルchを「1」増加し、それからステップS
3428へ戻って処理を繰り返す。
【0445】即ち、ステップS3422〜ステップS3
448の処理においては、「ch=0〜ch=15」の
全ての演奏チャンネルchについて、ch_tblA
[ch]が「(−2)」であるか否かをチェックし、c
h_tblA[ch]が「(−2)」である場合には、
当該演奏チャンネルchは音源チャンネルの割り当てが
行われていないので、「used_ch[ach]=
0」である音源チャンネルachを検出し、当該演奏チ
ャンネルに割り当てるため、achをch_tblA
[ch]にセットし、当該演奏チャンネルchの音色情
報を演奏情報として、割り当てた音源チャンネルに送出
するものである。
【0446】また、ステップS3428において、演奏
チャンネルchが16未満でないと判断された場合に
は、ステップS3450へ進み、曲Bの全ての演奏チャ
ンネルの音色情報を読み出してPC[ch]にセットす
る。
【0447】ステップS3450の処理を終了すると、
演奏チャンネルchを「0」にクリアし(ステップS3
452)、それから演奏チャンネルchが16未満であ
るか否かを判断し(ステップS3454)、ここで、演
奏チャンネルchが16未満であると判断された場合に
は、ch_tblB[ch]が「(−2)」であるか否
かを判断する(ステップS3456)。
【0448】ステップS3456において、ch_tb
lB[ch]が「(−2)」であると判断された場合に
は、used_ch[ach]が「0」であるか否かを
判断し(ステップS3458)、used_ch[ac
h]が「0」でない場合には、演奏チャンネルachを
「1」増加して(ステップS3460)、それからステ
ップS3458へ戻って処理を続行する。
【0449】一方、used_ch[ach]が「0」
である場合には、演奏チャンネルachを曲Bのチャン
ネル割当テーブルch_tblB[ch]にセットし
(ステップS3462)、演奏チャンネルachをCH
#にセットし(ステップS3464)、PC[ch]を
PC#へセットし(ステップS3466)、”Prog
ramChange”をstatusにセットし(ステ
ップS3468)、演奏情報(CH#,status,
PC#)をマルチティンバー音源24へ送出し(ステッ
プS3470)、演奏チャンネルachを「1」増加し
(ステップS3480)、さらに演奏チャンネルchを
「1」増加してから(ステップS3482)、ステップ
S3454へ戻って処理を繰り返す。
【0450】一方、ステップS3456において、ch
_tblB[ch]が「(−2)」でないと判断された
場合には、ジャンプしてステップS3482へ進み、演
奏チャンネルchを「1」増加し、それからステップS
3454へ戻って処理を繰り返す。
【0451】また、ステップS3454において、演奏
チャンネルchが16未満でないと判断された場合に
は、クロスフェード中間処理ルーチンへリターンする。
【0452】即ち、ステップS3452〜ステップS3
482の処理においては、「ch=0〜ch=15」の
全ての演奏チャンネルchについて、ch_tblB
[ch]が「(−2)」であるか否かをチェックし、c
h_tblB[ch]が「(−2)」である場合には、
当該演奏チャンネルchは音源チャンネルの割り当てが
行われていないので、「used_ch[ach]=
0」である音源チャンネルachを検出し、当該演奏チ
ャンネルに割り当てるため、achをch_tblB
[ch]にセットし、当該演奏チャンネルchの音色情
報を演奏情報として、割り当てた音源チャンネルに送出
するものである。 3.変形例 上記した実施の形態においては、クロスフェード区間に
おいて曲Aの音量を徐々に下げるとともに曲Bの音量を
徐々に上げていくことによって、曲Aと曲Bとのクロス
フェードを行うようにしている。
【0453】即ち、上記した実施の形態は、音量制御を
行うことによりクロスフェードを行うようにしている
が、クロスフェードを行うにあたり、上記した音量制御
に加えて以下に示すような制御を適宜行うようにしても
よい。
【0454】・リバーブ制御・・・クロスフェード区間
において、曲Aに徐々にリバーブを深くかけながら曲B
へ移行していくように制御する。
【0455】・パンポット制御・・・クロスフェード区
間において、曲Aの音像の定位を徐々に右または左に移
動させるとともに、曲Aの音像の定位の移動方向とは逆
の定位から、曲Bの音像の定位を徐々に中央に移動させ
るように制御する。
【0456】
【発明の効果】本発明は、以上説明したように構成され
ているので、多数の機器群を必要とすることなしに、演
奏データをクロスフェードさせながら連続して再生する
ことができるという優れた効果を奏する。
【図面の簡単な説明】
【図1】曲Aと曲Bとの2つの曲をクロスフェードさせ
ながら連続して演奏する状態を示す説明図である。
【図2】クロスフェード区間における、曲Aおよび曲B
の演奏チャンネル(ch)毎の演奏データの有無を示し
たチャンネルマップの一例を示す説明図である。
【図3】クロスフェード区間における、曲Aおよび曲B
の演奏チャンネル(ch)毎の演奏データの有無を示し
たチャンネルマップの一例を示す説明図である。
【図4】クロスフェード区間における曲Aと曲Bとの各
演奏チャンネル(ch)の演奏データに基づいて、演奏
チャンネル(ch)毎の「目立ち度」を算出したものの
一例を示す説明図である。
【図5】本発明による自動演奏装置の全体の構成を示す
ブロック構成図である。
【図6】演奏曲リストの一例を示す説明図である。
【図7】メインルーチンのフローチャートである。
【図8】表示器の画面上に表示される設定画面を示し、
(a)は演奏曲を設定するための設定画面であり、
(b)はクロスフェードの態様を設定するための設定画
面である。
【図9】テンポクロック割り込みルーチンのフローチャ
ートである。
【図10】クロスフェード開始処理ルーチンのフローチ
ャートである。
【図11】区間(Tα,Tβ)における曲Aのチャンネ
ルマップch_mapA[ch]および曲Aの目立ち度
マップM_mapA[ch]を作成する処理ルーチンの
フローチャートである。
【図12】演奏データの発音時間の積算値の算出方法に
ついて説明するための説明図である。
【図13】区間(Tα,Tβ)における曲Bのチャンネ
ルマップch_mapB[ch]および曲Bの目立ち度
マップM_mapB[ch]を作成する処理ルーチンの
フローチャートである。
【図14】手法1による処理ルーチンのフローチャート
である。
【図15】手法2による処理ルーチンのフローチャート
である。
【図16】目立ち度マップM_map[ch]に基づい
てmedati_ch[ch]作成処理ルーチンのフロ
ーチャートである。
【図17】曲Aのフェードアウト準備処理ルーチンのフ
ローチャートである。
【図18】曲Bのフェードイン準備処理ルーチンのフロ
ーチャートである。
【図19】曲Bが使用する音源チャンネルの音色更新処
理ルーチンのフローチャートである。
【図20】クロスフェード演奏処理ルーチンのフローチ
ャートである。
【図21】クロスフェード演奏処理ルーチンのフローチ
ャートである。
【図22】クロスフェード完了処理ルーチンのフローチ
ャートである。
【図23】クロスフェード完了処理ルーチンのフローチ
ャートである。
【図24】チャンネル割当テーブルch_table
[ch]の内容の一例を示す説明図である。
【図25】チャンネル割当テーブルch_table
[ch]の内容の一例を示す説明図である。
【図26】曲演奏準備処理ルーチンのフローチャートで
ある。
【図27】テンポクロック割り込み2ルーチンのフロー
チャートである。
【図28】クロスフェード開始処理2ルーチンのフロー
チャートである。
【図29】クロスフェード前半区間チャンネル割り当て
処理ルーチンのフローチャートである。
【図30】クロスフェード前半区間チャンネル割り当て
処理ルーチンのフローチャートである。
【図31】クロスフェード中間処理ルーチンのフローチ
ャートである。
【図32】クロスフェード後半区間チャンネル割り当て
処理ルーチンのフローチャートである。
【図33】クロスフェード後半区間チャンネル割り当て
処理ルーチンのフローチャートである。
【図34】継続して使用される音源チャンネル以外の音
源チャンネルの音色更新ルーチンのフローチャートであ
る。
【図35】継続して使用される音源チャンネル以外の音
源チャンネルの音色更新ルーチンのフローチャートであ
る。
【符号の説明】
10 CPU 12 バス 14 ROM 16 RAM 18 テンポクロック発生器 20 操作子群 22 表示器 24 マルチティンバー音源 26 アンプ 28 スピーカー

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも第1の曲と第2の曲とを並行
    して演奏する自動演奏装置であって、 複数の音源と、 前記第1の曲を表す第1の演奏データおよび前記第2の
    曲を表す第2の演奏データを記憶する記憶手段と、 前記第1の演奏データおよび前記第2の演奏データに基
    づいて、前記第1の曲の演奏に要する音源の数である第
    1の音源数と前記第2の曲の演奏に要する音源の数であ
    る第2の音源数とを検出する音源数検出手段と、 前記音源数検出手段により検出された音源の数に基づい
    て第1の曲と第2の曲とにそれぞれ前記音源を割り当て
    る割当手段と、 前記記憶手段から第1の演奏データを読み出して、前記
    割当手段によって第1の曲に割り当てられた音源を駆動
    するとともに、前記記憶手段から第2の演奏データを読
    み出して、前記割当手段によって第2の曲に割り当てら
    れた音源を駆動する読み出し手段とを有する自動演奏装
    置。
  2. 【請求項2】 請求項1に記載の自動演奏装置におい
    て、 前記割当手段は、前記音源数検出手段により検出された
    前記第1の音源数と前記第2の音源数との総数が所定数
    を越える場合において、前記第1の曲と前記第2の曲と
    の少なくとも一方の演奏を、前記第1の演奏データと前
    記第2の演奏データとの少なくとも一方が示す演奏内容
    に基づいて一部省略することにより、割り当てる音源の
    数を調整するものである自動演奏装置。
  3. 【請求項3】 請求項1に記載の自動演奏装置におい
    て、 前記記憶手段に記憶される前記第1の演奏データおよび
    前記第2の演奏データは、それぞれ複数の演奏パートか
    らなる演奏データであって、 前記割当手段は、前記演奏パート毎に前記音源を割り当
    てるものであり、前記音源数検出手段により検出された
    前記第1の音源数と前記第2の音源数との総数が所定数
    を越える場合において、前記第1の演奏データと前記第
    2の演奏データとの少なくとも一方の演奏データが示す
    演奏パート毎の演奏内容に基づき演奏を省略する演奏パ
    ートを特定し、前記演奏を省略する演奏パートには音源
    の割り当てを行わないものである自動演奏装置。
  4. 【請求項4】 請求項1、2または3のいずれか1項に
    記載の自動演奏装置において、 複数の演奏区間を指定する指定手段を有し、 前記音源数検出手段は、前記指定手段で指定される前記
    演奏区間毎に、この演奏区間に対応する前記第1の演奏
    データの部分および前記第2の演奏データの部分に基づ
    いて第1の音源数および第2の音源数を求めるものであ
    り、 前記割当手段は、前記指定手段で指定される前記演奏区
    間毎に音源の割り当てを行うものである自動演奏装置。
JP10076667A 1998-03-10 1998-03-10 自動演奏装置 Pending JPH11259071A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10076667A JPH11259071A (ja) 1998-03-10 1998-03-10 自動演奏装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10076667A JPH11259071A (ja) 1998-03-10 1998-03-10 自動演奏装置

Publications (1)

Publication Number Publication Date
JPH11259071A true JPH11259071A (ja) 1999-09-24

Family

ID=13611778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10076667A Pending JPH11259071A (ja) 1998-03-10 1998-03-10 自動演奏装置

Country Status (1)

Country Link
JP (1) JPH11259071A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008176347A (ja) * 2008-04-14 2008-07-31 Yamaha Corp 楽曲再生装置及び楽曲再生プログラム
JP2009044263A (ja) * 2007-08-06 2009-02-26 Sony Corp 情報処理装置、情報処理方法及びプログラム
JP4834821B2 (ja) * 2000-03-22 2011-12-14 ミュージックプレイグラウンド・インコーポレーテッド 電子音楽ファイルから音楽パートを生成する方法
JP2020089764A (ja) * 2020-03-09 2020-06-11 株式会社藤商事 遊技機

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4834821B2 (ja) * 2000-03-22 2011-12-14 ミュージックプレイグラウンド・インコーポレーテッド 電子音楽ファイルから音楽パートを生成する方法
JP2009044263A (ja) * 2007-08-06 2009-02-26 Sony Corp 情報処理装置、情報処理方法及びプログラム
US8204615B2 (en) 2007-08-06 2012-06-19 Sony Corporation Information processing device, information processing method, and program
JP2008176347A (ja) * 2008-04-14 2008-07-31 Yamaha Corp 楽曲再生装置及び楽曲再生プログラム
JP2020089764A (ja) * 2020-03-09 2020-06-11 株式会社藤商事 遊技機

Similar Documents

Publication Publication Date Title
JP3365354B2 (ja) 音声信号または楽音信号の処理装置
KR100496620B1 (ko) 악곡 재생 장치, 휴대 단말 장치, 악곡 재생 방법, 및기억 매체
Huber The Midi manual: A practical guide to Midi within Modern Music production
JP6443772B2 (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
EP1267560B1 (en) Tone generator apparatus sharing parameters among channels
US20080060501A1 (en) Music data processing apparatus and method
JP4340809B2 (ja) 移動体通信端末、および、プログラム
JP2000099050A (ja) 複数のボーカルパートを選択的に再生出力するカラオケ装置
EP1436802B1 (en) Midi composer
JP4211709B2 (ja) 自動演奏装置および同装置に適用されるコンピュータプログラム
JP5838563B2 (ja) 電子楽器及びプログラム
JP3620467B2 (ja) 通信端末
JP3788280B2 (ja) 携帯通信端末
JP3975698B2 (ja) 携帯通信端末
JP3675361B2 (ja) 通信端末
JP4356509B2 (ja) 演奏制御データ編集装置およびプログラム
JP3815583B2 (ja) 電子楽器
JPH05181470A (ja) マイナスワン演奏装置
JP3285984B2 (ja) マイナス・ワン演奏装置
JP3121010B2 (ja) 電子楽器制御装置
JP6851578B2 (ja) 楽音生成装置、楽音生成方法、楽音生成プログラム及び電子楽器
KR100862126B1 (ko) 휴대 통신 단말
JPH10198369A (ja) 電子楽器
JP3438229B2 (ja) 電子楽器
JPH10198370A (ja) 音源制御方法、及び音源装置