(58)【調査した分野】(Int.Cl.,DB名)
M(Mは1以上の整数)小節分の音の並びにおける各音の発音内容を示す各イベントと各イベントの実行時刻を示すタイミングデータとを含む第1の種類の演奏データと、アウフタクトとそれに続くM小節分の音の並びにおける各音の発音内容を示す各イベントと各イベントの実行時刻を示すタイミングデータとを含む第2の種類の演奏データとを記憶した記憶手段と、
前記記憶手段から複数個の演奏データを取得して配列する編集手段であって、前記第1または第2の種類の演奏データの後に前記第2の種類の演奏データを配列する場合に、配列順が前の演奏データに対して、当該演奏データの各イベントが示す各音からなる音の並びの終端を配列順が後の演奏データの各イベントが示す音の並びの中の略アウフタクトの分だけ短くする書き換え処理を施し、この書き換え処理を経た演奏データの後に該当の演奏データを配列する編集手段と
を具備することを特徴とする曲編集装置。
1曲分の音の並びを示す各イベントと各イベントの実行時刻を示すタイミングデータとを含む曲演奏データからM小節分よりも長い演奏区間の各音を示す各イベントと各イベントの実行時刻を示すタイミングデータを切り出し、切り出した各イベント及びタイミングデータを前記第2の種類の演奏データとして前記記憶手段に記憶する手段を具備することを特徴とする請求項1乃至3の何れか1の請求項に記載の曲編集装置。
【発明を実施するための形態】
【0008】
以下、図面を参照し、この発明の実施の形態を説明する。
図1は、この発明の一実施形態である曲編集装置10の構成を示すブロック図である。この曲編集装置10は、様々な創作者がMIDI(Musical Instrument Digital Interface)シーケンサを用いて作成した曲演奏データSMDから、音の並びであるメロディの素材となる複数種類の演奏データMDを生成して当該装置10に蓄積するとともに、当該装置10内に蓄積された複数個の演奏データMDの中から選んだものを組み合わせて1曲分の曲演奏データEMDを生成し、この曲演奏データEMDのメロディと同じメロディを持った歌唱音声の音声信号を出力する。
【0009】
図1に示すように、曲編集装置10は、データ読込部11、操作部12、表示部13、放音部14、及び制御部15を有する。データ読込部11は、記憶媒体が装着された場合に、その媒体内の曲演奏データSMDを読み出して制御部15に供給する。
図2は、曲演奏データSMDのデータ構造の一例を示す図である。曲演奏データSMDは、音の発音内容を示すノートオンイベントEV
ON(♯)(♯はノートナンバを示す)及びノートオフイベントEV
OFF(♯)と、各イベントEV
ON(♯)(またはEV
OFF(♯))の実行時刻tを各々の前のイベントEV
OFF(♯)(またはEV
ON(♯))の実行時刻tとの時間差(ティック数)として示すタイミングデータであるデルタタイムΔT
h(h=1、2…)(hは、配列順を示すインデックスである)とをL個のトラックTR−j(j=1〜L)に分けて並べたものである。ここで、本実施形態では、各創作者は、1つの楽曲の曲演奏データSMDを次のルールa1〜f1に従って作成する。
a1.曲演奏データ化する楽曲はハ長調のものとする。
b1.曲演奏データ化する楽曲の最初の音から最後の音までの各音の発音及び消音を指示するイベントEV
ON(♯)及びEV
OFF(♯)とその実行時刻tを示すデルタタイムΔT
hを曲演奏データSMD内の第1トラックTR−1に記述する。
c1.曲演奏データ化する楽曲の中に演奏の区切り位置がある場合は、トラックTR−1における区切り位置の直前のイベントEV
ON(♯)のマークとしての役割を果たすイベント(例えば、ノートナンバ126のイベントEV
ON(126)とする)とその実行時刻t(区切り位置の直前のイベントEV
ON(♯)のものと同じ実行時刻t)を示すデルタタイムΔT
hを曲演奏データSMD内の第2トラックTR−2に記述する。
d1.曲演奏データ化する楽曲の中に歌唱曲の最後のメロディに相応しい演奏区間がある場合は、そのことを示すマークとしての役割を果たすイベント(例えば、ノートナンバ125のイベントEV
ON(125)とする)とこのイベントEV
ON(125)の実行時刻t(該当の演奏区間の始点の時刻)を示すデルタタイムΔT
hを曲演奏データSMD内の第3トラックTR−3に記述する。
e1.曲演奏データ化する楽曲の中に歌唱曲の最初のメロディに相応しい演奏区間がある場合は、そのことを示すマークとしての役割を果たすイベント(例えば、ノートナンバ124のイベントEV
ON(124)とする)とこのイベントEV
ON(124)の実行時刻t(該当の演奏区間の始点の時刻)を示すデルタタイムΔT
hを曲演奏データSMD内の第3トラックTR−3に記述する。
f1.曲演奏データ化する楽曲の中に歌唱曲の最初と最後の何れでもない部分(中間部分)のメロディに相応しい演奏区間がある場合は、そのことを示すマークとしての役割を果たすイベント(例えば、ノートナンバ123のイベントEV
ON(123)とする)とこのイベントEV
ON(123)の実行時刻t(該当の演奏区間の始点の時刻)を示すデルタタイムΔT
hを曲演奏データSMD内の第3トラックTR−3に記述する。
【0010】
図1において、操作部12は、各種情報の入力操作を受け付け、操作内容を示す信号を制御部15に供給する。表示部13は、制御部15による制御の下に各種情報を表示する。放音部14は、制御部15から出力される音信号を音として出力する。制御部15は、曲編集装置10の制御中枢としての役割を果たす装置である。制御部15は、CPU16、RAM17、ROM18、及びハードディスク19を有する。CPU16は、RAM17をワークエリアとして利用しつつ、ROM18やハードディスク19に記憶されたプログラムを実行する。ハードディスク19には、素材データベースMDB、楽曲データベースBDB、音声素片データベースPDB、及び曲編集プログラムPRGが記憶されている。素材データベースMDBには演奏データMDが記憶される。楽曲データベースBDBには曲演奏データEMDが記憶される。音声素片データベースPDBには音声素片データPDが記憶される。ここで、音声素片データPDは、単一の音素や音素間の遷移部分など、歌唱音声の素材となる各種の音声素片の波形を定義したデータである。曲編集プログラムPRGは、次の3つの機能を有する。
a2.データ蓄積機能
これは、データ読込部11から曲演奏データSMDが供給された場合に、この曲演奏データSMDから複数種類の演奏データMDを生成して素材データベースMDBに記憶する機能である。
b2.編集機能
これは、素材データベースMDBから4個の演奏データMDを取得し、取得した演奏データMDを配列して1曲分の曲演奏データEMDを生成する機能である。
c2.歌唱合成機能
これは、曲演奏データEMDのメロディと同じメロディを持った歌唱音声の音信号を合成し、この音信号を放音部14から放音させる機能である。
【0011】
次に、本実施形態の動作について説明する。本実施形態では、CPU16は、データ蓄積処理、編集処理、及び歌唱合成処理を実行する。以下、各処理について順に説明する。
【0012】
図3は、データ蓄積処理を示すフローチャートである。
図3に示す一連の処理はデータ蓄積機能の働きによって実行される処理である。
図3に示す一連の処理は、データ読込部11によって読み出された曲演奏データSMDがRAM17に書き込まれると開始される。
図3に示す一連の処理の実行にあたり、利用者は、以下の3つの項目を操作部12により設定し、各々の設定値をRAM17に記憶させる。
a3.データ処理開始位置
この項目では、曲演奏データSMD内における演奏データMDの生成に用いる部分の先頭の小節位置Xを設定する。
b3.アウフタクト
この項目では、アウフタクトのない演奏データMDのみを得たい場合は「アウフタクトなし」と設定し、アウフタクトのない演奏データMD及びアウフタクトのある演奏データMDの両方を得たい場合は「アウフタクトあり」を設定する。
c3.移調
この項目では、演奏データMDと同じ調(ハ長調)の演奏データMDのみを得たい場合は「移調なし」と設定し、演奏データMDと同じ調及びこれと異なる調の演奏データMDを得たい場合は「移調あり」と設定する。
【0013】
図3において、CPU16は、分割処理を行う(S101)。この分割処理では、CPU16は、
図4に示すように、RAM17内の曲演奏データSMDにおけるX小節目(
図4の例では、X=2)以降の演奏区間をM(Mは1以上の整数:例えば、M=2とする)小節毎の演奏区間R−i(i=1〜Z:Zは分割した演奏区間の総数である)に分割し、各演奏区間R−i内のイベントEV
ON(♯),EV
OFF(♯)、及びデルタタイムΔT
hを演奏データMD
R−iとする。
【0014】
次に、CPU16は、変数kの値を初期値であるk=1とした後(S102)、ステップS101において分割した演奏データMD
R−i(i=1〜Z)のうちk番目の演奏データMD
R−kを処理対象として選択する(S103)。CPU16は、第1の判定処理を行う(S104)。この第1の判定処理では、CPU16は、演奏データMD
R−kの第1トラックTR−1における各イベントEV
ON(♯)の後のデルタタイムΔT
hを演奏区間R−k内のメロディをなす各音の音長とし、演奏区間R−kが下記の2つの条件a4及びb4を満たすものであるか否かを判定する。
a4.当該演奏区間R−k内の各イベントEV
ON(♯)が示す音の中に音長が閾値TH1未満のものが1つ以上あること
b4.当該演奏区間R−k内の各イベントEV
ON(♯)が示す音の音長の総計が閾値TH2未満であること
【0015】
CPU16は、ステップS104において、処理対象とした演奏データMD
R−kが上記条件a4及びb4の両方を満たすと判定した場合(S104:Yes)、その演奏データMD
R−kを破棄する(S105)。ここで、演奏データMD
R−kを破棄するのは、短か過ぎる音を含むメロディや音が僅かしか含まれていないメロディは歌唱曲のメロディとして利用し難いためである。CPU16は、ステップS105において、演奏データMD
R−kを破棄した後、ステップS114に進む。このステップS114の処理の内容は後述する。
【0016】
CPU16は、ステップS104において、処理対象とした演奏データMD
R−kが上記条件a4及びb4の両方または一方を満たさないと判定した場合(S104:No)、第2の判定処理を行う(S106)。この第2の判定処理では、CPU16は、設定項目b3において「アウフタクトあり」が設定されているかを判定する。CPU16は、「アウフタクトあり」が設定されている場合(S106:Yes)、アウフタクト生成処理を行う(S107)。アウフタクト生成処理は、曲演奏データSMDから、アウフタクトの各音とそれに続くM(M=2)小節分のメロディの各音を示す各イベントEV
ON(♯)及びEV
OFF(♯)と各イベントEV
ON(♯)及びEV
OFF(♯)の実行時刻を示すデルタタイムΔT
hとを含む演奏データMD
RA−kを生成する処理である。アウフタクト生成処理では、CPU16は、曲演奏データSMDからM(M=2)小節分より長い演奏区間のイベントEV
ON(♯)及びEV
OFF(♯)とデルタタイムΔT
hを切り出し、切り出したイベントEV
ON(♯)及びEV
OFF(♯)とデルタタイムΔT
hを演奏データMD
RA−kとする。より詳細に説明すると、
図5に示すように、CPU16は、RAM17内の曲演奏データSMDの第2トラックTR−2における演奏区間R−1の1つ前の小節(
図5の例では第1小節)内のイベントEV
ON(126)のうち演奏区間R−1に最も近いものの実行時刻tをアウフタクトの始点の時刻t
STRTとし、曲演奏データSMDのトラックTR−j(j=1〜L)における時刻t
STRTから演奏区間R−1の終端までの間の各イベントEV
ON(♯)及びEV
OFF(♯)とデルタタイムΔT
hを1番目の演奏データMD
RA−1とする。CPU16は、2番目の演奏データMD
RA−2,3番目の演奏データMD
RA−3…Z番目の演奏データMD
RA−Zを同様の手順で生成する。
【0017】
CPU16は、「アウフタクトなし」が設定されている場合(S106:No)、ステップS107を実行することなく、次のステップS108に進む。CPU16は、ステップS108では、第3の判定処理を行う。この第3の判定処理では、CPU16は、演奏データMD
R−k(ステップS107が実行されている場合は、演奏データMD
R−k及びMD
RA−k)の第2トラックTR−2にイベントEV
ON(126)が書き込まれているか否かを判定する。CPU16は、演奏データMD
R−kの第2トラックTR−2にイベントEV
ON(126)が書き込まれていない場合(S108:No)、第1のマーキング処理を行う(S109)。第1のマーキング処理では、CPU16は、演奏データMD
R−kの第1トラックTR−1における各イベントEV
OFF(♯)の後のデルタタイムΔT
hを演奏区間R−k内のメロディをなす各音間の休符の長さとし、演奏区間R−k内に閾値TH3以上の長さの休符があるか否かを判定する。CPU16は、演奏区間R−k内のメロディをなす音の間に閾値TH3以上の長さの休符がある場合は、その休符を演奏の区切りの位置とみなす。この場合、CPU16は、演奏データMD
R−kの第2トラックTR−2にイベントEV
ON(126)を追記するとともに、トラックTR−1における区切り位置の直前のイベントEV
OFF(♯)を選択する。その上で、CPU16は、この選択したイベントEV
OFF(♯)の実行時刻tと第2トラックTR−2に追記したイベントEV
ON(126)の実行時刻tが同時刻になるように第2トラックTR−2における追記したイベントEV
ON(126)の前後のデルタタイムΔT
hを書き換える。
【0018】
CPU16は、演奏データMD
R−kの第2トラックTR−2に1つ以上のイベントEV
ON(126)が書き込まれている場合(S108:Yes)、ステップS109を実行することなく、次のステップS110に進む。CPU16は、ステップS110では、第4の判定処理を行う。この第4の判定処理では、CPU16は、演奏データMD
R−k(ステップS107が実行されている場合は、演奏データMD
R−k及びMD
RA−k)の第3トラックTR−3にイベントEV
ON(125)、EV
ON(124)、またはEV
ON(123)が書き込まれているか否かを判定する。CPU16は、ステップS110において、演奏データMD
R−kの第3トラックTR−3にイベントEV
ON(125)、EV
ON(124)、及びEV
ON(123)のいずれも書き込まれていないと判定した場合(S110:No)、第2のマーキング処理を行う(S111)。第2のマーキング処理では、CPU16は、演奏データMD
R−kの第1トラックTR−1の各イベントEV
ON(♯)のうちの最後のイベントEV
ON(♯)の音を演奏区間R−k内のメロディの最後の音とみなす。そして、この最後の音が次の2つの条件を満たすか否かを判定する。
a5.音の音名がハ長調の基音(ド)であること
b5.音の音長が閾値TH4以上であること
【0019】
CPU16は、2つの条件a5及びb5の両方を満たす場合、演奏データMD
R−kが曲の最後の部分に相応しいメロディを含んでいるとみなす。この場合、CPU16は、演奏データMD
R−kの第3トラックTR−3の先頭にイベントEV
ON(125)を追記する。
【0020】
また、CPU16は、条件a5及びb5のうち少なくとも一方が満たされない場合、演奏データMD
R−kが、曲の最初の部分と、最初と最後の何れでもない部分(中間部分)に相応しいメロディを含んでいるとみなす。この場合、CPU16は、演奏データMD
R−kの第3トラックTR−3の先頭にイベントEV
ON(124)及びイベントEV
ON(123)を追記する。
【0021】
CPU16は、ステップS110において、演奏データMD
R−kの第3トラックTR−3にイベントEV
ON(125)、EV
ON(124)、及びEV
ON(123)のいずれかが書き込まれていると判定した場合(S110:Yes)、ステップS111を実行することなく次のステップS112に進む。ステップS112では、第5の判定処理を行う。この第5の判定処理では、CPU16は、設定項目c3において「移調あり」が設定されているか否かを判定する。CPU16は、「移調あり」が設定されている場合(S112:Yes)、移調処理を行う(S113)。移調処理では、演奏データMD
R−k(ステップS107が実行されている場合は、演奏データMD
R−k及びMD
RA−k)からそのメロディをハ長調と異なる調に移調した演奏データMDを生成する。
【0022】
より詳細に説明すると、CPU16は、演奏データMD
R−kの第1トラックTR−1の各イベントEV
ON(♯)のノートナンバを短2度高いものに書き換えた演奏データMD
R1−kを生成する。また、演奏データMD
R−kの第1トラックTR−1の各イベントEV
ON(♯)のノートナンバを長2度高いものに書き換えた演奏データMD
R2−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを短3度高いものに書き換えた演奏データMD
R3−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを長3度高いものに書き換えた演奏データMD
R4−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを4度高いものに書き換えた演奏データMD
R5−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを増4度高いものに書き換えた演奏データMD
R6−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを5度高いものに書き換えた演奏データMD
R7−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを増5度高いものに書き換えた演奏データMD
R8−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを長6度高いものに書き換えた演奏データMD
R9−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを短7度高いものに書き換えた演奏データMD
R10−kを生成する。また、演奏データMD
R−kの第1トラックTR−1のイベントEV
ON(♯)のノートナンバを長7度高いものに書き換えた演奏データMD
R11−kを生成する。ここで、以下では、ハ長調の演奏データMD
R−kとハ長調以外の演奏データMD
R1−k、MD
R2−k、MD
R3−k、MD
R4−k、MD
R5−k、MD
R6−k、MD
R7−k、MD
R8−k、MD
R9−k、MD
R10−k、MD
R11−kを区別しない場合は、演奏データMD
R−kと記す。
【0023】
CPU16は、「移調なし」が設定されている場合(S112:No)、ステップS113に実行することなく、ステップS114に進む。ステップS114では、変数kと曲演奏データSMDの分割数Zが同じであるかを判定する。CPU16は、k<Zである場合(S114:No)、ステップS115に進んで変数kをk=k+1にした後、ステップS103以降の処理を繰り返す。CPU16は、k=Zである場合(S114:Yes)、それまでに生成した演奏データMD
R−k、MD
R1−k、MD
R2−k、MD
R3−k、MD
R4−k、MD
R5−k、MD
R6−k、MD
R7−k、MD
R8−k、MD
R9−k、MD
R10−k、MD
R11−k、MD
RA−k、MD
RA1−k、MD
RA2−k、MD
RA3−k、MD
RA4−k、MD
RA5−k、MD
RA6−k、MD
RA7−k、MD
RA8−k、MD
RA9−k、MD
RA10−k、MD
RA11−kの各々を演奏データMDとして素材データベースMDBに記憶する(S116)。
【0024】
図6は、編集処理を示すフローチャートである。
図6に示す一連の処理は編集機能の働きによって実行される処理である。
図6に示す一連の処理は、操作部12によって演奏データMDの編集が指示されると開始される。
図6に示す一連の処理の実行にあたり、利用者は、以下の項目を操作部12により設定し、その設定値をRAM17に記憶させる。
a6.コード進行
この項目では、曲の8小節分のコード進行における第1〜第8小節の各コードのコードネームCN
1〜CN
8を設定する。
【0025】
図6において、CPU16は、演奏データ取得処理を行う(S201)。演奏データ取得処理では、CPU16は、曲の第1〜第2小節のメロディの素材とする演奏データMD
1〜2、第3〜第4小節のメロディの素材とする演奏データMD
3〜4、第5〜第6小節のメロディの素材とする演奏データMD
5〜6、及び第7〜第8小節のメロディの素材とする演奏データMD
7〜8を素材データベースMDB内の複数の演奏データMDの中から探索し、各々の探索結果をRAM17に読み出す。より具体的には、CPU16は、次の4つのデータ探索処理を行う。
【0026】
第1のデータ探索処理では、CPU16は、素材データベースMDB内の全演奏データMDのうち第3トラックTR−3にイベントEV
ON(123)が埋め込まれているものを演奏データMD
1〜2の候補とし、演奏データMD
1〜2の候補である各演奏データMDと設定項目a5におけるコードネームCN
1及びCN
2の和音との適合度を示す評価ポイントPを算出する。評価ポイントPの算出の手順は次の通りである。
図7に示すように、評価ポイントPの算出対象がアウフタクトを含まない演奏データMD(演奏データMD
R−k、MD
R1−k、MD
R2−k、MD
R3−k、MD
R4−k、MD
R5−k、MD
R6−k、MD
R7−k、MD
R8−k、MD
R9−k、MD
R10−k、MD
R11−kの何れか)である場合、CPU16は、当該演奏データMDの第1トラックTR−1の2小節分のイベントEV
ON(♯)を評価対象とする。そして、評価対象である2つの小節のイベントEV
ON(♯)の各々の音長(ティック数)の合計値SUM
TCKを求める。次に、評価対象の最初の1小節のイベントEV
ON(♯)が示す各音の音名が、コードネームCN
1と対応するコードの各音(
図7の例では、CN
1=Cなので、ド、ミ、ソの3音)、及びこのコードと根音を共通にする5音音階(ペンタトニック)の各音(
図7の例では、CN
1=Cなので、ド、レ、ミ、ソ、ラの5音)に該当するかを判定し、コードの各音と一致する音の音長(ティック数)に5ポイント、コードの各音と一致しないが5音音階の各音と一致する音の音長(ティック数)に3ポイント、それ以外の音の音長(ティック数)に1ポイントを各々乗算する。次に、評価対象の2番目の1小節のイベントEV
ON(♯)が示す各音の音名が、コードネームCN
2の和音(
図7の例では、CN
2=Fなので、ファ、ラ、ドの3音)、及びこのコードと根音を共通にする5音音階(ペンタトニック)の各音(
図7の例では、CN
2=Fなので、ファ、ソ、ラ、ド、レの5音)に該当するかを判定し、コードの各音と一致する音の音長(ティック数)に5ポイント、コードの各音と一致しないが5音音階の各音と一致する音の音長(ティック数)に3ポイント、それ以外の音の音長(ティック数)に1ポイントを各々乗算する。その上で、2つの小節のイベントEV
ON(♯)の各々における音長(ティック数)に該当のポイントを乗じた値の合計値SUM
PNTを求める。そして、合計値SUM
PNTで合計値SUM
TCKを除算した値SUM
PNT/SUM
TCKを当該演奏データMDの評価ポイントPとする。
【0027】
また、
図8に示すように、評価ポイントPの算出対象がアウフタクトを含む演奏データMD(MD
RA−k、MD
RA1−k、MD
RA2−k、MD
RA3−k、MD
RA4−k、MD
RA5−k、MD
RA6−k、MD
RA7−k、MD
RA8−k、MD
RA9−k、MD
RA10−k、MD
RA11−kのいずれか)である場合、CPU16は、当該演奏データMDの第1トラックTR−1におけるアウフタクトの終端以降の2小節分のイベントEV
ON(♯)を評価対象とする。そして、評価対象である2つの小節のイベントEV
ON(♯)の各々の音長(ティック数)の合計値SUM
TCKを求める。次に、評価対象の最初の1小節のイベントEV
ON(♯)が示す各音の音名が、コードネームCN
1と対応するコードの各音(
図8の例では、CN
1=Cなので、ド、ミ、ソの3音)、及びこのコードと根音を共通にする5音音階(ペンタトニック)の各音(
図8の例では、CN
1=Cなので、ド、レ、ミ、ソ、ラの5音)に該当するかを判定し、コードの各音と一致する音の音長(ティック数)に5ポイント、コードの各音と一致しないが5音音階の各音と一致する音の音長(ティック数)に3ポイント、それ以外の音の音長(ティック数)に1ポイントを各々乗算する。次に、評価対象の2番目の1小節のイベントEV
ON(♯)が示す各音の音名が、コードネームCN
2の和音(
図8の例では、CN
2=Fなので、ファ、ラ、ドの3音)、及びこのコードと根音を共通にする5音音階(ペンタトニック)の各音(
図8の例では、CN
2=Fなので、ファ、ソ、ラ、ド、レの5音)に該当するかを判定し、コードの各音と一致する音の音長(ティック数)に5ポイント、コードの各音と一致しないが5音音階の各音と一致する音の音長(ティック数)に3ポイント、それ以外の音の音長(ティック数)に1ポイントを各々乗算する。その上で、2つの小節のイベントEV
ON(♯)の各々における音長(ティック数)に該当のポイントを乗じた値の合計値SUM
PNTを求める。そして、合計値SUM
PNTで合計値SUM
TCKを除算した値SUM
PNT/SUM
TCKを当該演奏データMDの評価ポイントPとする。
【0028】
CPU16は、第1のデータ探索処理では、イベントEV
ON(123)が埋め込まれている演奏データMDの全てについて評価ポイントPを求めた後、評価ポイントPが最も高いものを演奏データMD
1〜2としてRAM17に記憶する。
【0029】
第2のデータ探索処理では、CPU16は、素材データベースMDB内の全演奏データMDのうち第3トラックTR−3にイベントEV
ON(124)が埋め込まれているものを演奏データMD
3〜4の候補とし、演奏データMD
3〜4の候補である各演奏データMDと設定項目a5におけるコードネームCN
3及びCN
4の和音との適合度を評価ポイントPに換算し、評価ポイントPが最も高いものを演奏データMD
3〜4としてRAM17に記憶する。
【0030】
第3のデータ探索処理では、CPU16は、素材データベースMDB内の全演奏データMDのうち第3トラックTR−3にイベントEV
ON(124)が埋め込まれているものを演奏データMD
5〜6の候補とし、演奏データMD
5〜6の候補である各演奏データMDと設定項目a5におけるコードネームCN
5及びCN
6の和音との適合度を評価ポイントPに換算し、評価ポイントPが最も高いものを演奏データMD
5〜6としてRAM17に記憶する。
【0031】
第4のデータ探索処理では、CPU16は、素材データベースMDB内の全演奏データMDのうち第3トラックTR−3にイベントEV
ON(125)が埋め込まれているものを演奏データMD
7〜8の候補とし、演奏データMD
7〜8の候補である各演奏データMDと設定項目a5におけるコードネームCN
7及びCN
8の和音との適合度を評価ポイントPに換算し、評価ポイントPが最も高いものを演奏データMD
7〜8としてRAM17に記憶する。
【0032】
図6において、CPU16は、第1の配列処理を行う(S202)。第1の配列処理では、CPU16は、演奏データMD
5〜6の後に演奏データMD
7〜8を配列して曲の第5〜第8小節の4小節分のイベントEV
ON(♯)及びEV
OFF(♯)を含む演奏データMD
5〜8を生成する。より詳細に説明すると、CPU16は、配列順が相前後する2つの演奏データMD
5〜6及びMD
7〜8のうち後の演奏データMD
7〜8の種類がアウフタクトのない演奏データMDである場合とアウフタクトのある演奏データMDである場合の各々において次のような処理を行う。
【0033】
a7.演奏データMD
7〜8がアウフタクトのない演奏データMDである場合
この場合、CPU16は、演奏データMD
5〜6の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hの後に演奏データMD
7〜8の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを繋げたものを演奏データMD
5〜8とする。
【0034】
b7.演奏データMD
7〜8がアウフタクトのある演奏データMDである場合
この場合、CPU16は、演奏データMD
5〜6に対して、演奏データMD
5〜6の各イベントEV
ON(♯)及びEV
OFF(♯)が示す各音からなるメロディの終端を配列順が後の演奏データMD
7〜8の各イベントEV
ON(♯)及びEV
OFF(♯)が示す音からなるメロディの中のアウフタクトの分だけ短くする書き換え処理を施す。その上で、書き換え処理を経た演奏データMD’
5〜6の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hの後に演奏データMD
7〜8の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを繋げたものを演奏データMD
5〜8とする。書き換え処理の詳細な手順は次の通りである。この書き換え処理では、まず、演奏データMD
7〜8の第1トラックTR−1の各イベントEV
ON(♯)及びEV
OFF(♯)が示す音からなるメロディの中のアウフタクトの演奏区間をアウフタクト演奏区間R
Aとし、演奏データMD
5〜6の第1トラックTR−1のイベントEV
ON(♯)及びEV
OFF(♯)が示す音からなるメロディの演奏区間R
5〜6の終端よりもアウフタクト演奏区間R
Aの分だけ前の時刻を基準時刻t
BASISとする(
図9)。
【0035】
次に、演奏データMD
5〜6の第2トラックTR−2における一連のイベントEV
ON(126)の中から基準時刻t
BASISに先行し且つ基準時刻t
BASISに最も近い時刻を実行時刻tとするイベントEV
OFF(126)を選択する(
図10)。次に、演奏データMD
5〜6の各トラックTR−jにおけるこの選択したイベントEV
OFF(126)よりも後のイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを消去する(
図11)。次に、演奏データMD
5〜6の第1トラックTR−1における消去されずに残ったイベントEV
ON(♯)及びEV
OFF(♯)のうち最後のイベントEV
OFF(♯)を選択し、この選択したイベントEV
OFF(♯)が示す音の消音時刻が基準時刻t
BASISと一致するように当該イベントEV
OFF(♯)の実行時刻tを示すデルタタイムΔT
h(すなわち、当該イベントEV
OFF(♯)の前のデルタタイムΔT
h)を書き換えたものを演奏データMD’
5〜6とする(
図12)。後の演奏データMD
7〜8がアウフタクトのある演奏データMDである場合、以上の処理を経て得られた演奏データMD’
5〜6の各トラックTR−jの後に演奏データMD
7〜8の各トラックTR−jを繋げたものを演奏データMD
5〜8とする(
図13)。
【0036】
図6において、CPU16は、第2の配列処理を行う(S203)。第2の配列処理では、CPU16は、演奏データMD
3〜4の後に演奏データMD
5〜8を配列して曲の第3〜第8小節の6小節分のイベントEV
ON(♯)及びEV
OFF(♯)を含む演奏データMD
3〜8を生成する。この第2の配列処理では、配列順が相前後する2つの演奏データMD
3〜4及びMD
5〜8のうち演奏データMD
5〜8の種類がアウフタクトのない演奏データMDである場合は、演奏データMD
3〜4の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hの後に演奏データMD
5〜8の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを繋げたものを演奏データMD
3〜8とする。また、演奏データMD
5〜8の種類がアウフタクトのある演奏データMDである場合は、演奏データMD
3〜4に対して上述した書き換え処理を施す。その上で、書き換え処理を経た演奏データMD’
3〜4の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hの後に演奏データMD
5〜8の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを繋げたものを演奏データMD
3〜8とする。
【0037】
次に、CPU16は、第3の配列処理を行う(S204)。第3の配列処理では、CPU16は、演奏データMD
1〜2の後に演奏データMD
3〜8を配列して1曲分(第1〜第8小節の8小節分)の曲演奏データEMDを生成する。第3の配列処理では、配列順が相前後する2つの演奏データMD
1〜2及びMD
3〜8のうち演奏データMD
3〜8の種類がアウフタクトのない演奏データMDである場合は、演奏データMD
1〜2の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hの後に演奏データMD
3〜8の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを繋げたものを曲演奏データEMDとする。また、演奏データMD
3〜8の種類がアウフタクトのある演奏データMDである場合は、演奏データMD
1〜2に対して上述した書き換え処理を施す。その上で、書き換え処理を経た演奏データMD’
1〜2の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hの後に演奏データMD
3〜8の各トラックTR−jのイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを繋げたものを曲演奏データEMDとする。
【0038】
次に、CPU16は、第1〜第3の配列処理により得られた1曲分の曲演奏データEMDを楽曲データベースBDBに記憶する(S205)。
【0039】
図14は、歌唱合成処理を示すフローチャートである。
図14に示す一連の処理は歌唱合成機能の働きによって実行される処理である。
図14に示す一連の処理は、操作部12によって歌唱音声の発生が指示されると開始される。
図14に示す一連の処理の実行にあたり、利用者は、歌唱曲のメロディに乗せる歌詞をひらがな文字の文字列として入力する。
【0040】
図14において、CPU16は、歌詞として入力された文字列を一連の音声素片に変換する(S301)。CPU16は、ステップS301で得られた音声素片の各々と対応する音声素片データPDを音声素片データベースPDBからRAM17に読み出す(S302)。CPU16は、このRAM17内の音声素片データPDを接続することにより、歌詞として入力された文字列と対応する音声信号を生成する(S303)。CPU16は、楽曲データベースBDBに記憶された曲演奏データEMDの1つをRAM17に読み出す(S304)。CPU16は、ステップS304で生成した音声信号のピッチを曲演奏データEMDのメロディに合わせるためのピッチ変換処理を施す(S305)。CPU16は、このピッチ変換処理を施した音声信号を放音部14から音として放音させる(S306)。この歌唱合成処理の各ステップの詳細な内容については、特許文献2を参照されたい。
【0041】
以上が、本実施形態の詳細である。本実施形態によると、次の効果が得られる。
第1に、本実施形態では、編集処理において、演奏データMDの後にアウフタクトのある演奏データMDを配列する場合、配列順が前の演奏データMDに対して書き換え処理を施し、書き換え処理を経た演奏データMDの後に該当の演奏データMDを配列する。よって、データベースMDBに収録された複数個の演奏データMDを用いてバリエーションの豊かな楽曲を創作できる。
【0042】
第2に、本実施形態では、データ蓄積処理において、ハ長調の演奏データMDに移調処理を施すことによりハ長調以外の調の演奏データMDを生成し、これらの演奏データMDを元のハ長調の演奏データMDとともに素材データベースMDBに記憶する。よって、本実施形態によると、異なる調のメロディを組み合わせて多様な楽曲を創作することができる。
【0043】
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態があり得る。例えば、以下の通りである。
(1)上記実施形態において、編集処理により得られた1曲分の曲演奏データEMDを楽曲の音信号として放音部14から放音させるようにしてもよい。
【0044】
(2)上記実施形態では、4つの演奏データMDを配列して1曲分の曲演奏データEMDを生成した。しかし、2〜3つの演奏データMDや5つ以上の演奏データMDを配列して1曲分の曲演奏データEMDを生成してもよい。また、演奏データMDにおける演奏区間の長さは2小節分である必要はなく、1小節分の長さにしてもよいし、3小節分以上の長さにしてもよい。
【0045】
(3)上記実施形態における第1のマーキング処理では、演奏区間R−i内のメロディの区切り位置を決定した後、第1トラックTR−jにおける区切り位置の直前のイベントEV
OFF(♯)を選択し、この選択したイベントEV
OFF(♯)と第2トラックにおけるイベントEV
ON(126)の実行時刻tが同時刻になるように当該イベントEV
ON(126)の前後のデルタタイムΔTを書き換えた。しかし、第1トラックTR−jにおける区切り位置の直後のイベントEV
ON(♯)(すなわち、閾値TH3以上の長さの休符の直後の音の発音を指示するイベントEV
ON(♯))を選択し、この選択したイベントEV
ON(♯)と第2トラックにおけるイベントEV
ON(126)の実行時刻tが同時刻になるように当該イベントEV
ON(126)の前後のデルタタイムΔTを書き換えてもよい。
【0046】
(4)上記実施形態では、第1トラックTR−jにおける演奏の区切り位置の直前のイベントEV
OFF(♯)のマークであるイベントEV
ON(126)を第2トラックTR−jに記述した。しかし、第1トラックTR−jにおける演奏の区切り位置の直前のイベントEV
OFF(♯)のマークとなるイベントを第1トラックTR−jに記述してもよい。例えば、所定種類のコントロールチェンジイベントを演奏の区切り位置の直前のイベントEV
OFF(♯)のマークにし、第1トラックTR−jにおける演奏の区切り位置の直前のイベントEV
OFF(♯)とこのコントロールチェンジイベントを連続して記述してもよい。
【0047】
(5)上記実施形態における書き換え処理では、相前後する2つの演奏データMDのうち配列順が前のものの第2トラックTR−2における一連のイベントEV
ON(126)の中から基準時刻t
BASISに先行し且つ基準時刻t
BASISに最も近い時刻を実行時刻tとするイベントEV
OFF(126)を選択し、当該演奏データMDの各トラックTR−jにおけるこの選択したイベントEV
OFF(126)よりも後のイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを消去した。しかし、第2トラックTR−2にイベントEV
ON(126)が1つも記されていない場合もあり得る。この場合、CPU16は、配列順が前の演奏データMDの第1トラックTR−1における一連のイベントEV
ON(♯)及びEV
OFF(♯)の中から基準時刻t
BASISの後のイベントEV
OFF(♯)であって基準時刻t
BASISに最も近い時刻を実行時刻tとするイベントEV
OFF(♯)を選択し、当該演奏データMDの各トラックTR−jにおけるこの選択したイベントEV
OFF(♯)よりも後のイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔT
hを消去するとよい。
【0048】
(6)上記実施形態では、曲演奏データSMDやこれを分割して得られる演奏データMDは、ノートオンイベントEV
ON(♯)、ノートオフイベントEV
OFF(♯)、及びデルタタイムΔT
hをL個のトラックTR−j(j=1〜L)に分けて並べたものであった。しかし、曲演奏データSMDやこれを分割して得られる演奏データMDを別のデータフォーマットのものにしてもよい。例えば、演奏データSMD及びMDを、該当するトラックのトラック番号、音源の発音チャネル、イベントの実行時刻を示すタイミングデータ、イベントの種類、及びイベントのパラメータからなるレコードを時系列順に並べた形式(イベントリスト形式)にしてもよい。また、演奏データSMD及びMDを、イベントの種類とそのパラメータのみからなるレコードを時系列順に並べた形式にしてもよい。また、演奏データSMD及びMDを、ピアノロール形式やスコアロール形式にしてもよい。
【0049】
(7)上記実施形態では、ノートナンバ126のイベントEV
ON(126)を曲演奏データSMD内における演奏の区切り位置を示すマークとし、ノートナンバ125のイベントEV
ON(125)を歌唱曲の最後の部分のメロディに相応しい演奏区間を示すマークとし、ノートナンバ124のイベントEV
ON(124)を歌唱曲の最初の部分のメロディに相応しい演奏区間を示すマークとし、ノートナンバ123のイベントEV
ON(123)を歌唱曲の最初でも最後でもない部分のメロディに相応しい演奏区間を示すマークとした。しかし、演奏の区切り位置や歌唱曲の各部分のメロディに相応しい演奏区間を示すマークとして、別の種類のデータを採用してもよい。また、このマークとしての役割を果たすデータはMIDIにおいてサポートされていない形式のデータであってもよい。
【0050】
(8)上記実施形態の移調処理では、ハ長調の演奏データMD
R−k内の各イベントEV
ON(♯)のノートナンバを半音ずつ高いものに置き換えてハ長調と異なる11種類の演奏データMD
R1−k、MD
R2−k、MD
R3−k、MD
R4−k、MD
R5−k、MD
R6−k、MD
R7−k、MD
R8−k、MD
R9−k、MD
R10−k、MD
R11−kを生成した。しかし、操作部12の操作により、調の種類を設定し、設定された種類の調の演奏データMD−kだけを生成するようにしてもよい。また、移調処理後に、11種類の演奏データMD
R1−k、MD
R2−k、MD
R3−k、MD
R4−k、MD
R5−k、MD
R6−k、MD
R7−k、MD
R8−k、MD
R9−k、MD
R10−k、MD
R11−kに対して各々の譜面における調音記号を取り除く処理を施し、ハ長調のメロディを示す演奏データMDへとデータ内容を修正してもよい。
【0051】
(9)上記実施形態のアウフタクト生成処理において、CPU16は、演奏データMD
RA−kを次のようにして生成してもよい。まず、演奏データMD
R−kの複製を生成する。次に、この複製である演奏データMD
R−kにおける演奏区間R−kの始点を時刻t0とし、この時刻t0と1/h(例えば、h=2)小節分だけ後の時刻t
Bとの間の演奏区間R
B内のイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔTを複製する。そして、この複製であるイベントEV
ON(♯)、EV
OFF(♯)、及びデルタタイムΔTを元の演奏データMD
R−kの各トラックTR−jの前に追記したものを演奏データMD
RA−kとする。
【0052】
(10)上記実施形態の演奏データ取得処理では、評価対象である一連のイベントEV
ON(♯)を、コードネームCN
1及びCN
2のコードと一致するもの、コードとは一致しないが5音音階の音と一致するもの、コード及び5音音階の何れの音とも一致しないものの3種類に分類し、各イベントEV
ON(♯)の音長(ティック数)に各々の種類に応じたポイントを乗算した。しかし、評価対象である一連のイベントEV
ON(♯)を、コードネームCN
1及びCN
2のコードと一致するもの、コードとは一致しないが5音音階の音と一致するもの、コード及び5音音階の何れの音とも一致しないいがそれ以外のハ長調音階の音と一致するもの、コード、5音音階、ハ長調音階の何れの音とも一致しないものの4種類に分類し、各イベントEV
ON(♯)の音長(ティック数)に各々の種類に応じたポイントを乗算してもよい。この場合において、3番目の種類(コード及び5音音階の何れの音とも一致しないいがそれ以外のハ長調音階の音と一致するもの)に該当する場合に1ポイントを乗算し、4番目の種類(コード及び5音音階の何れの音とも一致しないいがそれ以外のハ長調音階の音と一致するもの)に該当する場合にはポイントを乗算しないようにするとよい。
【0053】
(11)上記実施形態のアウフタクト生成処理では、相前後する演奏データMD
RA−i及びMD
RA−(i+1)がオーバーラップ部分を有するように各演奏データMD
RA−i内に含めるイベントEV
ON(♯)及びEV
OFF(♯)とデルタタイムΔT
hの切り出し位置を決定した。しかし、例えば、曲演奏データSMDにおける演奏区間R−1〜R−3内のイベントEV
ON(♯)、EV
OFF(♯)、デルタタイムΔT
hを演奏データMD
RA−1とし、演奏区間R−4〜R−6内のイベントEV
ON(♯)、EV
OFF(♯)、デルタタイムΔT
hを演奏データMD
RA−2とし…というように、相前後する演奏データMD
RA−i及びMD
RA−(i+1)がオーバーラップ部分を持たないように各演奏データMD
RA−i内に含めるイベントEV
ON(♯)及びEV
OFF(♯)とデルタタイムΔT
hの切り出し位置を決定してもよい。
【0054】
(12)上記実施形態では、曲演奏データSMD及びMDは、ある決まった時間長分の音の並びであるメロディにおける各音の発音内容を示すデータの配列であった。しかし、曲演奏データSMD及びMDを、ある決まった時間長分のハーモニーやリズムを決定づける音の並びにおける各音の発音内容を示すデータの配列としてもよい。
【0055】
(13)上記実施形態における第1〜第4の配列処理では、処理対象である2つの演奏データMD(例えば、演奏データMD
5〜6及びMD
7〜8とする)について、配列順が前の演奏データMD
5〜6の第1トラックTR−1における消去されずに残ったイベントEV
ON(♯)及びEV
OFF(♯)のうち最後のイベントEV
OFF(♯)を選択し、この選択したイベントEV
OFF(♯)が示す音の消音時刻が基準時刻t
BASISと一致するように当該イベントEV
OFF(♯)の実行時刻tを示すデルタタイムΔT
hを書き換えた。しかし、配列順が前の演奏データMD
5〜6の第1トラックTR−1における消去されずに残ったイベントイベントEV
OFF(♯)が示す音の消音時刻と基準時刻t
BASISとの差が所定値未満になるように当該イベントEV
OFF(♯)の実行時刻tを示すデルタタイムΔT
hを書き換えてもよい。要するに、第1〜第4の配列処理では、配列順が前の演奏データMDに対して、当該演奏データMDの各イベントが示す各音からなる音の並びの終端を配列順が後の演奏データの各イベントが示す音の並びの中の略アウフタクトの分だけ短くする処理が実行されればよい。