(57)【要約】【課題】各音符ごとにテンポに変化をつけて実際に人間が演奏するときと同じような自然な音楽を出力できるようにする。【解決手段】あらかじめオリジナルＭＩＤＩファイルを用意して記憶手段に格納しておく。そして、そのオリジナルＭＩＤＩファイルを記憶手段から読み出し、ユーザによってキーが打鍵されることによってオリジナルＭＩＤＩファイルから順次１音ずつ音声出力手段１３ａを介して出力し、その打鍵時刻と先行音の打鍵時刻との差のうち先行音の持続時間を差し引いたデルタタイムを計算する。そして、このデルタタイムを書き込んだ中間ＭＩＤＩファイルを生成し、その後、この中間ＭＩＤＩファイルのデルタタイムを、その音符に対する局所的なテンポに変換して、最終ＭＩＤＩファイルを生成する。【選択図】図７
2006337449.tif 000002
【特許請求の範囲】
【請求項１】
すでに作成されているオリジナルＭＩＤＩファイルから局所的なテンポを修正したＭＩＤＩファイルを生成するＭＩＤＩファイル生成方法であって、
打鍵によってオリジナルＭＩＤＩファイルのメロディトラックから順次１音ずつ音源を駆動して出力するとともに、当該打鍵時刻と先行音の打鍵時刻との差のうち先行音の持続時間を差し引いたデルタタイムを計算するステップと、
この出力された音に対して前記計算されたデルタタイムを書き込んだ中間ＭＩＤＩファイルを生成するステップと、
中間ＭＩＤＩファイルにおけるデルタタイムを、その音符に対する局所的なテンポへ変換するステップと、
局所的なテンポに変換されたＭＩＤＩファイルを生成するステップとを備えたことを特徴とするＭＩＤＩファイル生成方法。
【請求項２】
すでに作成されているオリジナルＭＩＤＩファイルを楽譜情報として表示しておき、打鍵によって現在出力している音符の位置を知らせるようにした請求項１に記載のＭＩＤＩファイル生成方法。
【請求項３】
主旋律に対して生成された局所的なテンポを用いて伴奏音の立ち上がりのタイミングを主旋律と同期させるようにした請求項１に記載のＭＩＤＩファイル生成方法。
【請求項４】
すでに作成されているオリジナルＭＩＤＩファイルから局所的なテンポを修正したＭＩＤＩファイルを生成するＭＩＤＩファイル生成装置であって、
打鍵によってオリジナルＭＩＤＩファイルのメロディトラックから順次１音ずつ音源を駆動して出力するとともに、当該打鍵時刻と先行音の打鍵時刻との差のうち先行音の持続時間を差し引いたデルタタイムを計算するデルタタイム計算手段と、
前記出力された音に対して前記計算されたデルタタイムを書き込んだ中間ＭＩＤＩファイルを生成する中間ファイル生成手段と、
中間ＭＩＤＩファイルにおけるデルタタイムを、その音符に対する局所的なテンポへ変換し、前記オリジナルＭＩＤＩファイルに対してこの局所的なテンポを書き込んだ最終ＭＩＤＩファイルを生成する最終ファイル生成手段とを備えたことを特徴とするＭＩＤＩファイル生成装置。
【請求項５】
前記オリジナルＭＩＤＩファイルを楽譜情報として表示しておき、打鍵によって現在出力している音符の位置を知らせるようにした請求項４に記載のＭＩＤＩファイル生成装置。
【請求項６】
主旋律に対して生成された局所的なテンポを用いて伴奏データのテンポを修正して出力するようにした請求項４に記載のＭＩＤＩファイル生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自然な音楽を出力できるようにしたＭＩＤＩファイルの生成方法に関し、より詳しくは、打ち込みにおけるテンポあるいはデルタタイムの入力の負担を格段に軽減できるようにしたＭＩＤＩファイルの生成方法に関するものである。
【背景技術】
【０００２】
すでに存在する曲のＭＩＤＩファイルを生成する場合、一般に、「打ち込み」と呼ばれる作業によってＭＩＤＩファイルを生成することが多い。この打ち込みでは、単に音符情報（音高と音価）を記述するだけにとどまらず、テンポ（演奏速度）の指定や強弱記号、タイやスラー、クレッシェンドやデクレッシェンド、アッチェレランドやリタルダンドなどの情報も記述することが可能である。
【０００３】
ところで、このような作業によって生成されたＭＩＤＩファイルは、テンポや音価などが正確に記述されたものであるため、これをそのままＭＩＤＩ音源から出力すると、機械的な演奏となってしまう。すなわち、実際に人間が演奏すれば、表現付けのために意図的にテンポやリズムを変化させ、また、意図しなくても演奏した音符の長さや強さが指定された値からずれてしまうことがあるが、ＭＩＤＩによる演奏ではこのようなことがないため、機械的な演奏となってしまう。
【０００４】
ＭＩＤＩファイルを用いた演奏に人間的な要素を加えるようにした技術としては、例えば、下記の特許文献１に記載されるようなものが存在する。この特許文献１に開示される装置は、指揮棒の振り方によって曲の演奏テンポを制御できるようにしたものであって、指揮棒に組み込まれた加速度センサによって一つの拍子分を振る時間を演算し、曲本来のテンポと異なっている場合にＭＩＤＩ音源へのノートオン指令のタイミングに変化を持たせるようにしたものである。このような装置によれば、ユーザのテンポに合わせてテンポを自由に変化させることができるので、機械的な音楽をより自然な音楽に近づけることができるようになる。
【特許文献１】特開平１０−５５１７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述のような装置においても、音符毎に細かなテンポの変化を付けることができない。すなわち、上述の装置では、曲の拍子（４分の３拍子など）に合わせて指揮棒を振った場合に、その最初の振り出しから振り終わりまでの時間、つまり、３拍を数える分の時間に基づいてＭＩＤＩ音源への書き込み速度を変化させるものであるため、その小節内における各音符について個別に変化をつけることができない。
【０００６】
そこで、本発明の第一の目的は、各音符ごとにテンポに変化をつけて実際に人間が演奏するときと同じような自然な印象を与える音楽を出力できるようなＭＩＤＩファイル生成方法を提供することである。
【０００７】
また、各音符ごとに人間的な要素を含むＭＩＤＩファイルを生成する場合、音符ごとに微妙に時間の異なる数値を打ち込むようにしたのでは、打ち込み作業が非常に面倒なものとなってしまう。すなわち、例えば、標準的なテンポでは四分音符を「0.5s」の時間で記述するところを、人間の演奏に似せるために「0.63s」や「0.42s」などといった数値で記述すると、打ち込み作業が非常に面倒なものとなり、しかも、その数値として適切な値を予測することは難しい。また、このような異なる長さで記述すると、数値で記述された音符の音価（譜面上の長さ）が分からなくなってしまい、そのＭＩＤＩファイルから楽譜情報を把握することが難しくなってしまう。さらに、このように主旋律を厳密な時間で記述した場合、伴奏データの時間も主旋律の各音の時間に対応して変更しなければならず、伴奏データの入力にも非常に時間がかかるといった問題がある。
【０００８】
そこで、本発明は、各音符ごとにテンポに変化をつける場合、最終的に生成されたＭＩＤＩファイルからオリジナルの楽譜情報を保持できるようにするとともに、伴奏データについても個別に各音のデルタタイムを入力する必要のないＭＩＤＩファイル生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は上記課題を解決するために、まず、オリジナルＭＩＤＩファイルを記憶手段から読み出し、ユーザによってキーが打鍵されることによってオリジナルＭＩＤＩファイルから順次１音ずつ音声出力手段を介して出力し、その打鍵時刻と先行音の打鍵時刻との差のうち先行音の持続時間を差し引いたデルタタイムを計算する。そして、このデルタタイムを書き込んだ中間ＭＩＤＩファイルを生成し、その後、この中間ＭＩＤＩファイルのデルタタイムを、その音符に対する局所的なテンポに変換して最終ＭＩＤＩファイルを生成するようにしたものである。
【００１０】
このようにすれば、ユーザの打鍵によって局所的なテンポを有するＭＩＤＩファイルを生成することができるため、人間の演奏に似た自然な音楽を出力することができるようになる。しかも、最終的にデルタタイムを記述したファイルを生成するのではなく、オリジナルＭＩＤＩファイルの局所的なテンポを変化させたファイルを生成するようにしたので、最終的なファイルは、オリジナルの楽譜情報を保持することができるようになる。
【００１１】
また、このような発明において、オリジナルＭＩＤＩファイルの楽譜情報を表示出力するとともに、打鍵によって現在発音している音符の位置を知らせるようにする。
【００１２】
このようにすれば、ユーザが任意のテンポで打鍵した場合であっても、オリジナルの楽譜のどの部分を弾いているのかを認識させることができ、打鍵しやすくすることができる。
【００１３】
さらに、主旋律に対して生成された局所的なテンポを用いて伴奏音の立ち上がりのタイミングを主旋律と同期させる。
【００１４】
このようにすれば、伴奏が存在する場合でも、主旋律について決定された局所的なテンポを用いて伴奏のテンポを同期させることができるので、伴奏データについても個々の音符に対する細かなデルタタイムを打ち込む必要がなく、大幅に打ち込み作業を低減することができる。
【発明の効果】
【００１５】
本発明によれば、ユーザの打鍵によって局所的な主旋律のそれぞれの音符に対するテンポを有するＭＩＤＩファイルを生成することができるため、人間の演奏に似た自然な音楽を出力することができるようになる。しかも、最終的にデルタタイムを記述したファイルを生成するのではなく、オリジナルＭＩＤＩファイルの局所的なテンポを変化させるようにするので、その最終的なファイルから容易にオリジナルの楽譜情報を把握させることができるようになる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施の形態について図面を参照して説明する。図１は、本実施の形態が適用されるＭＩＤＩファイル生成装置１の機能ブロック図を示したものであり、図２および図３は、それぞれ楽譜とその楽譜に対応したオリジナルＭＩＤＩファイルを示したものである。また、図４は、デルタタイムの概要を示したものであり、図５は中間ＭＩＤＩファイルを示したものである。また、図６は生成された最終ＭＩＤＩファイルを示したもので、図７はオリジナルＭＩＤＩファイルから最終ＭＩＤＩファイルを生成するまでのフローチャートを示したものである。ただし、ここに挙げた各表「デルタタイム」欄は、見やすくするために、小節位置、拍の位置、拍内位置で決まる時点で発音を開始し、そこからデルタタイム欄に書かれた時間調だけ発音するように書き換えてある。したがって、オリジナルＭＩＤＩファイルでは、各行がメロディトラックの中の連続した１つの音（タイがかけられた２つの隣接音符は１つの音と見なす）に対応しており、「拍内位置」は楽譜上の音符が表す音の立ち上がり時点を表し、「デルタタイム」はそこからの音の持続時間をtick単位で表したものである。ただし、持続時間が楽譜上の４分音符の長さ以上になる場合、つまりtick数で480以上になる場合には、480ticksを１単位として「：」の左に２桁で表示してある。例えば、図３の１行目のB3は４分音符で、その立ち上がり時点は第１小節の第１拍のアタマの位置で、実際に音が出るのは432tick相当の長さ、つまり４分音符の長さの内の９０％相当分の時間長となる。４行目のA3は２分音符であるのが、その立ち上がり時点は第２小節の第１拍のアタマで、音の持続時間はデルタタイム欄に書かれているように４分音符１つ分の長さ＋384ticks、つまり480+384=864ticksで、これは２分音符の楽譜上の長さ960ticksの９０％となっていることを表す。打鍵（タップ）入力は、音の入りを指示するものであって、音の持続時間情報は扱っていない。したがって、音の入りだけを指定することによって、それぞれの音の持続時間を自動的にしておく必要がある。ここでは、持続時間は音の入りの間の間隔（つまり、譜面上では音価）の９０％としている。「小節位置」、「拍の位置」、「拍内位置」の３つで当該音の開始時点を表すことになるので、中間MIDI ファイルの「拍内位置」の値は、１つ前の音の開始時点＋デルタタイムとなっている。
【００１７】
本実施の形態におけるＭＩＤＩファイル生成方法は、ＭＩＤＩファイルを生成ためのプログラムを格納したＭＩＤＩファイル生成装置１によって実現される。このＭＩＤＩファイル生成装置１は、ＭＩＤＩ音源を組み込んだパーソナルコンピュータ、或いは、これに接続された楽器やＭＩＤＩ音源などによって構成される。
【００１８】
まず、ＭＩＤＩファイルの生成方法の概要について説明する。オリジナルＭＩＤＩファイルから人間の演奏に似た最終ＭＩＤＩファイルを生成する場合、あらかじめオリジナルＭＩＤＩファイルを用意しておき、これを記憶手段に格納しておく。そして、パーソナルコンピュータのキーからの打鍵によって、オリジナルＭＩＤＩファイルから１音ずつ読み出して、これをＭＩＤＩ音源などの音声出力手段から出力する。そして、その打鍵時刻と先行音の打鍵時刻との差のうち先行音の持続時間を差し引いたデルタタイムを計算し、そのデルタタイムを書き込んだ中間ＭＩＤＩファイルを生成する。中間ＭＩＤＩファイルは、図５に示すように、小節位置、拍の位置、拍内位置、ノートナンバー、デルタタイム、ベロシティを含むもので、拍の中の位置やデルタタイムなどはすべてユーザの自由な打鍵によって指定された値となっている。この中間ＭＩＤＩファイルをそのまま音声出力手段から出力しても、実際に人間が演奏したときと同じような自然な音楽を出力することができるが、この中間ＭＩＤＩファイルを楽譜情報として表示した場合、オリジナルの楽譜とは全く異なった非常に見づらいものとなってしまう。そこで、この中間ＭＩＤＩファイルを楽譜として見やすい形式に書き換えるべく、提案システムでは中間ＭＩＤＩファイルで記述されていたデルタタイムを、各音に対する局所的なテンポに変換し、この局所的なテンポに変換された最終ＭＩＤＩファイルを生成する。そして、伴奏が存在する場合は、この局所的なテンポを伴奏音にも適用する。以下、本実施の形態におけるＭＩＤＩファイル生成方法について詳細に説明する。
【００１９】
ＭＩＤＩファイル生成装置１は、キーなどの入力装置１０や、ディスプレイなどの表示装置１１や、ＭＩＤＩ音源１３などの音声出力手段１３ａや、本体装置１２などを備えている。このキーは、ユーザの打鍵を受け付けるものであり、鍵盤楽器が接続されている場合は、その鍵盤楽器のキーからの入力を受け付けることもできる。また、この本体装置１２には、ＣＰＵやＲＯＭ、ＲＡＭなどが備えられており、これらを協働させることによって図１に示すような諸機能を実現させている。
【００２０】
図１にこの装置の機能ブロック図を示す。図１において、記憶手段２には、あらかじめオリジナルＭＩＤＩファイルが格納されている。このオリジナルＭＩＤＩファイルは、どのチャンネルに繋がっている音源のどの音高をどのタイミングでどの大きさで発音させ、どの時点で減衰させるかを、発音開始時点の順に記述したＭＩＤＩコマンドのリストであり、例えば、図２に示される主旋律の楽譜に対しては、図３に示すような、小節位置、拍の位置、拍の中の位置、ノートナンバー、デルタタイム、ベロシティなどで構成されるデータ列を有して構成される。
【００２１】
ここで図３の「小節位置」は、音符が書かれている小節の番号を意味し、ある一定の区切られた時間区間内に音の立ち上がりが存在している場合に、その音に対してその区間の小節番号が割り当てられる。例えば、図３のオリジナルＭＩＤＩファイルについては、第１小節内の３つの四分音符については小節番号「１」が記述される。また、第７小節では、第６小節からのスラーや第７小節内におけるスラーによって、その区間内に立ち上がりの存在する音が４つ存在するため、これら４つの音に対して小節番号「７」が記述される。
【００２２】
「拍の位置」は、音の存在する拍、すなわち、四分の三拍子であれば「１拍目」「２拍目」「３拍目」などの拍の位置を意味し、その音の立ち上がり位置で決定される。例えば、図３におけるオリジナルＭＩＤＩファイルについては、第１小節内にそれぞれ１拍目、２拍目、３拍目の各アタマの時点で立ち上がる四分音符が３つ存在するため、それぞれの音に対して「01」「02」「03」が記述される。また、第７小節の３拍目の中に八分音符が２つ存在しているので、それぞれの音に対して「03」が記述されている。
【００２３】
「拍内位置」は、拍の開始時点から音の立ち上がり位置までの時間差を意味する。例えば、拍の開始時点と音の立ち上がりとが同時であれば「000」が記述され、また、音の立ち上がりが拍の開始時点から遅れている場合は、その音の立ち上がりまでの時間が記述される。この時間はtick単位で記述される。なお、このtickは、デルタタイムを記述する単位であり、分解能を480に指定した場合、1tickの時間は、指定されたテンポで四分音符に割り当てられる時間の１／480となる。すなわち、曲全体のテンポを60（１分間の四分音符の数を60）とした場合は、１拍が１秒となり、1tickは1/480で約2msとなる。これにより、例えば、第７小節の第２音のように拍の開始時点からの立ち上がりが八分音符分だけ遅れている場合は、分解能480の半分の値240が記述される。
【００２４】
「ノートナンバー」は、音高の番号を意味し、半音階ずつ0〜127（７ビットで表せる整数の最大値）の番号が割り当てられる。このノートナンバーは、８８鍵盤のピアノの音域で表すと、低音域から順に21〜108で表現され、ピアノの鍵盤上における中央のド（C3）は、60で表現される。なお、図中においては、理解を容易にするために、ノートナンバーの左側に実際の音高（B3など）を記載しているが、この「B」は、音階ド・レ・ミをC・D・Eで表記した際の「シ」を意味し、また「B」の直後に付されている「3」は、ピアノの鍵盤の下から３オクターブ目であることを意味している。これらは音高を分かりやすくするために表示したものであって、実際にデータとしてはノートナンバーのみが記述される。
【００２５】
「デルタタイム」は、図４に示すような音のイベント間の時間を意味する。このデルタタイムとしては、音の持続時間や、音の立ち上がりと先行音の立ち上がりから先行音の持続時間を差し引いた時間などが存在する。実際には、音の立ち上がりと先行音の立ち上がりから先行音の持続時間を差し引いた時間が記述されるが、図３においては、分かりやすくするために、音の持続時間を記述している。持続時間に対するデルタタイムと、先行音の立ち下がりから次の音の立ち上がりまでのデルタタイムとの関係は、両者を足すと音の長さとなる。例えば、分解能を480とした場合、四分音符の長さが480ticksで表現されるため、第１小節の第１音の持続時間が432tickであれば、48tickが無音の時間となる。このtickの記述方法である「aa:bbb」について、「aa」は480ticksの単位を表しており、例えば、「01:384」と表記した場合は、その音の持続時間が480×1＋384tickであることを意味している。
【００２６】
「ベロシティ」は、その音に対する音の強さであり0〜127の値で表される。数値が大きくなるほど大きな音で出力される。この実施の形態では、ベロシティに72で統一されている。
【００２７】
そして、このようなデータ列によって構成されたオリジナルＭＩＤＩファイルは、インターネットなどの通信網を介してダウンロードされ、もしくは、楽譜を画像処理する方法や、打ち込みによる手作業などによって記憶手段２に格納される。
【００２８】
読出手段４は、このオリジナルＭＩＤＩファイルを記憶手段２から読み出して、コピーファイルを生成する。このコピーファイルは記憶手段２とは別の記憶領域に格納される。そして、表示手段１１ａに楽譜情報を表示させるとともに、打鍵に基づいて即座に発音できるようにあらかじめ音高とベロシティを設定して待機させておく。
【００２９】
打鍵検知手段１０ａは、パーソナルコンピュータのキーが打鍵されたことを検知するもので、打鍵ごとにその検知信号を制御手段４に出力する。この打鍵されるキーは、単一のキー、あるいは、複数のキーであってもよい。例えば、遅いテンポの音楽であれば、パーソナルコンピュータの「Ｋ」のキーだけを打鍵させてもよく、また、早いテンポの音楽であれば、右手用に「Ｋ」や「Ｌ」、左手用に「Ｓ」や「Ｄ」などを打鍵させるようにしてもよい。
【００３０】
制御手段４は、この打鍵された検知信号に基づいて音声出力手段１３ａを介しての音声出力や楽譜上における現在出力中の音符位置などを制御する。具体的には、打鍵が検知された場合、まず、待機させていた音を即座に１音だけ音声出力手段１３ａに出力する。また、これに伴って表示手段１１ａに表示されている楽譜のうち、現在発音している音符を矢印などで表示しておく。図２は、表示手段１１ａに表示されている楽譜情報を図示したものであり、図中において現在２番目の音が出力されていることを示している。このように現在出力している音符の位置をユーザに知らせることによって、読譜力の弱いユーザに対しても現在どの位置の音を出力しているのかを知らせることができるようになる。なお、音符の位置を知らせる方法としては、これ以外にも、音符の色を変える方法や、音符を点滅させる方法など、種々の方法を採用することができる。
【００３１】
デルタタイム計算手段５は、音の立ち上がり時刻と先行音の立ち上がり時刻との差を計算する。この計算においては、その時間をクロック単位で取り込み、それをtick単位で求める。分解能をＡ、再生を行うテンポをＢ、打鍵間の物理的時間、すなわちi-1番目の音符の開始時刻からi番目の音符の開始時刻までの時間をti秒とした場合、求めるデルタタイムDiは、次式で求められる。
【００３２】
Di=(A×B×ti)/60      （式１）
【００３３】
このデルタタイムの計算は、次の打鍵までの間に行われる。通常、次の打鍵までの時間は50ms以上あるので、リアルタイムでの計算は十分間に合う。
【００３４】
中間ファイル生成手段６は、このデルタタイム計算手段５によって求められたデルタタイムDiをコピーしたＭＩＤＩファイルに書き込んでいく。この中間ファイル生成手段６によって生成された中間ＭＩＤＩファイルを図５に示す。図５は、図１のオリジナルＭＩＤＩファイルに対応して、左側から順に、「小節位置」、「拍の位置」、「拍内位置」、「ノートナンバー」、「デルタタイム」、「ベロシティ」となっている。この中間ＭＩＤＩファイルにおいて、ユーザが自由なテンポで打鍵しているため、「拍内位置」や「デルタタイム」がユーザの打鍵に従った値となっている。
【００３５】
この中間ＭＩＤＩファイルについて更に詳しく説明すると、第１小節の最初の音は、音の立ち上がりが第１小節内に存在しているので、小節位置「0001」が記述され、また、拍の開始時間と音の立ち上がり時間は一致しているので、拍の位置「0000」が記述される。そして、音の持続時間に対するデルタタイムについては、ユーザによる２つ目の音符に対する打鍵入力が遅かったのでデルタタイム「01:246」が記述され、また、その時間に対応してその音は二分音符と判定される。次に、二番目の音については、その音の立ち上がりがまだ第１小節内に存在しているので、小節位置「0001」が記述され、また、拍の位置については２拍目内にその立ち上がりが存在しているため拍の位置「0002」が記述される。但し、拍内位置については、１番目の音に対するデルタタイムが480ticksを超えているので、その超えた分の246tickが記述される。そして、その２つ目の音のデルタタイムについては、ユーザによる３つ目の音符に対する打鍵入力が遅かったので、その持続時間に対するデルタタイム「01:236」が記述され、その時間に対応してその音は付点四分音符と判定される。以上により、第１小節が３拍以上埋まってしまったので、次の音については第２小節の番号が割り当てられる。以下、同様の判定処理により、小節位置、拍の位置、拍内位置、デルタタイムが記述されていく。なお、３列目以降の拍内位置は、前の行の「拍内位置」に「デルタタイム」を加算して480ticksで割った余りが記述される。
【００３６】
最終ファイル生成手段７は、この中間ファイル生成手段６によって生成された中間ＭＩＤＩファイルから局所的なテンポに変換した最終ＭＩＤＩファイルを生成する。一般に、ＭＩＤＩファイルに記載されているデルタタイムは音源駆動のための具体的な数値であるが、人間にはその値はあまり意味がない。人間がみて重要なのは、デルタタイムではなく、先行音の立ち上がりから次の音の立ち上がりまでの時間、あるいは、当該拍あるいは当該小節の時間長などである。これらは局所的なテンポを指定することによって表現できる。
【００３７】
デルタタイムから局所的なテンポへの変換は次のようにして行う。すなわち、入力された元の音符のデルタタイムをδi、元のテンポをτ、打鍵によって変更されたデルタタイムをDiとすると、局所的なテンポTiは以下の式で求められる。
【００３８】
Ti=δi×τ／Di    （式２）
【００３９】
この式２によって求められた最終ＭＩＤＩファイルを図６に示す。図６おいては、左側から順に、「小節位置」、「拍の位置」、「拍内位置」、「ノートナンバー」、「デルタタイム」、「ベロシティ」、および、テンポを指定するための「ＭＩＤＩメッセージ」や実際の「テンポの値」を示している。この最終ＭＩＤＩファイルは、コピーされたオリジナルＭＩＤＩファイルに書き込むことによって生成される。このため最終ＭＩＤＩファイルを見ただけでオリジナルの楽譜を容易に把握することができ、しかも、人間の演奏に似た自然な音楽を出力することができる。
【００４０】
次に、このように構成されたＭＩＤＩファイル生成装置１を用いてオリジナルＭＩＤＩファイルから最終ＭＩＤＩファイルを生成するまでのフローチャートについて説明する。
【００４１】
まず、前提として記憶手段２には、あらかじめオリジナルＭＩＤＩファイルが格納されているものとする。
【００４２】
オリジナルＭＩＤＩファイルから最終ＭＩＤＩファイルを生成する場合、まず、記憶手段２に格納されているオリジナルＭＩＤＩファイルを読み出してコピーファイルを生成し、そのコピーファイルを記憶させておく（ステップＳ１）。そして、そのコピーされたオリジナルＭＩＤＩファイルから、１音ずつ音高とベロシティを読み出してすぐに発音できるように待機させておくとともに、表示手段１１ａにその楽譜情報を表示する（ステップＳ２）。
【００４３】
そして、ユーザによる打鍵が検知された場合（ステップＳ３）、待機していた音高とベロシティに基づいた音を即座に発音させるとともに（ステップＳ４）、表示手段１１ａに表示されている楽譜情報のうち、現在発音している音符の位置に矢印を表示させる（ステップＳ５）。また、この打鍵による音の立ち上がり時刻をタイマーによって読み取り（ステップＳ６）、次の打鍵を待機する。
【００４４】
そして、次の打鍵が検知された場合（ステップＳ７）、リアルタイムでその打鍵時刻と先行音の打鍵時刻との差を計算し（ステップＳ８）、その値もしくは持続時間を先行音に対するデルタタイムとしてコピーされた中間ＭＩＤＩファイルに書き込んでいく（ステップＳ９）。
【００４５】
以降、同様にして順次打鍵を検知することによって各音のデルタタイムを計算し、中間ＭＩＤＩファイルを生成していく（ステップＳ４〜ステップＳ１０）。そして、最終音に対する打鍵がなされ、さらに、処理の終わりを示すための最後の打鍵が検知された場合に（ステップＳ１０）、最終音に対するデルタタイムを計算して（ステップＳ１１）中間ＭＩＤＩファイルの生成を終了する（ステップＳ１２）。
【００４６】
そして、中間ＭＩＤＩファイルが生成された後、その各音に対するデルタタイムを読み出し、式２を用いてそのデルタタイムを局所的なテンポに変換する（ステップＳ１３）。そして、その局所的なテンポをコピーされたオリジナルＭＩＤＩファイルに書き込んで最終ＭＩＤＩファイルを生成し（ステップＳ１４）、その最終ＭＩＤＩファイルを記憶手段２に格納する（ステップＳ１５）。この際、デルタタイムの値は元の値に戻されるのでduty ratio（楽譜上の音価に対する実際に音を出す時間の割合）は９０％になる。
【００４７】
そして、この最終ＭＩＤＩファイルを用いて音声出力手段１３ａを用いて出力する場合は、そのテンポを用いて発音するとともに、伴奏データが付加されている場合は、その主旋律に対する局所的なテンポに合わせて伴奏データを出力する。
【００４８】
このように上記実施の形態によれば、ユーザからの打鍵によってオリジナルＭＩＤＩファイルから局所的なテンポを有する最終ＭＩＤＩファイルを生成するようにしたので、人間の演奏に似た自然な音楽を出力することができるようになる。しかも、最終的にデルタタイムを修正したファイルを生成するのではなく、オリジナルＭＩＤＩファイルの局所的なテンポを修正した最終ＭＩＤＩファイルを生成するので、最終ＭＩＤＩファイルはオリジナルの楽譜情報を保持することができるようになる。
【００４９】
また、上述のようにユーザの自由なテンポの打鍵を許容する場合、オリジナルの楽譜情報を表示し、現在どの音符に対する打鍵をしているのかを示す矢印を表示するようにしたので、読譜力の乏しいユーザであってもその楽譜に対応した打鍵を行うことができるようになる。
【００５０】
さらに、伴奏データについても、主旋律の局所的なテンポを用いて対応する伴奏部分の音を出力するようにしたので、伴奏データに新たなデルタタイムを記述する必要がなくなり、主旋律に同期した伴奏データを簡単に出力することができるようになる。
【００５１】
なお、本発明は上記実施の形態に限定されることなく、種々の態様で実施することができる。
【００５２】
例えば、上記実施の形態では、パーソナルコンピュータのキーを打鍵させてテンポを変化させるようにしたが、パーソナルコンピュータのキーだけでなく、パーソナルコンピュータに鍵盤楽器などが接続されている場合は、その鍵盤楽器からの打鍵によってテンポを入力させるようにしてもよい。
【００５３】
また、上記実施の形態では、パーソナルコンピュータを用いてＭＩＤＩデータを生成するようにしているが、これを携帯電話やネットワークを介して接続されたサーバーコンピュータなどを用いてＭＩＤＩデータを生成するようにしてもよい。この場合、サーバーコンピュータからオリジナルＭＩＤＩデータをダウンロードして携帯電話の画面に楽譜情報を表示し、テンキーの打鍵を受け付ける。そして、その打鍵の情報に基づいて最終ＭＩＤＩファイルを生成する。このファイルの生成は、携帯電話内で独立して行うようにしてもよく、或いは、サーバーコンピュータ側で行うようにしてもよい。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施の形態におけるＭＩＤＩファイル生成装置の機能ブロック図
【図２】オリジナルＭＩＤＩファイルに対応する楽譜情報を示す図
【図３】図２に対応するオリジナルＭＩＤＩファイル
【図４】デルタタイムを示す図
【図５】中間ＭＩＤＩファイルを示す図
【図６】最終ＭＩＤＩファイルを示す図
【図７】同形態におけるＭＩＤＩファイル生成方法を示すフローチャート
【符号の説明】
【００５５】
１・・・ＭＩＤＩファイル生成装置
１０・・・入力装置
１１・・・表示装置
１２・・・本体装置
１３・・・ＭＩＤＩ音源
２・・・記憶手段
１０ａ・・・打鍵検知手段
３・・・読出手段
４・・・制御手段
１１ａ・・・表示手段
１３ａ・・・音声出力手段
５・・・デルタタイム計算手段
６・・・中間ファイル生成手段
７・・・最終ファイル生成手段
【図１】
2006337449.tif 000003
【図２】
2006337449.tif 000004
【図３】
2006337449.tif 000005
【図４】
2006337449.tif 000006
【図５】
2006337449.tif 000007
【図６】
2006337449.tif 000008
【図７】
2006337449.tif 000009