(57)【要約】【課題】画像データに基づいて楽曲を生成するに際し、ユーザーの意向がある程度反映され、かつ聴感上違和感がなく、テンポ変更も自由にできる楽曲生成装置、楽曲生成方法およびプログラムを提供する。【解決手段】楽曲の伴奏を構成する小節夫々の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる。そしてこの割り当てられたピクセルデータ夫々に基づいてメロディを構成する音符データの音高、音長及び音の強さを設定する。こうして記生成された音符データを所定のルールに従って補正する。【選択図】図３
2014153597.tif 000002
【特許請求の範囲】
【請求項１】
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当て手段と、
前記割り当て手段により割り当てられたピクセルデータに基づいてメロディを構成する音符データを生成する音符データ生成手段と、
前記音符データ生成手段により生成された音符データを所定のルールに従って補正する補正手段と、
を有する楽曲生成装置。
【請求項２】
前記楽曲の伴奏データとして、少なくとも拍子及び小節数を有する音楽情報と、再生シーケンスデータとを夫々有する第１のトラックテンプレートデータを複数有する請求項１記載の楽曲再生装置。
【請求項３】
前記楽曲再生装置は、前記音楽情報としてさらに調及びコード進行のデータを有する複数の第２のトラックテンプレートデータをさらに有する請求項１又は２記載の楽曲再生装置。
【請求項４】
前記楽曲再生装置はさらに、前記複数の第１のテンプレートデータのいずれかを選択し、この選択された第１のトラックテンプレートデータの音楽情報基づいて、前記選択された第１のテンプレートデータと最も相性度の高い第２のトラックテンプレートデータを選択する選択手段と、
この選択手段により選択された第１及び第２のトラックテンプレートデータに基づいて、前記楽曲の伴奏データを生成する請求項１乃至３いずれかに記載の楽曲生成装置。
【請求項５】
前記補正手段は、前記コード進行のデータを構成するコード情報に基づいて前記生成された音符データを補正する請求項１乃至４いずれかに記載の楽曲生成装置。
【請求項６】
前記音符データ生成手段は、前記割り当てられたピクセルデータを構成するＲデータにより前記音符データの音の強さを、Ｇデータにより音長を、そしてＢデータで当該音符の種類及び音高を決定する請求項１乃至５いずれかに記載の楽曲生成装置。
【請求項７】
前記音符データ生成手段は、前記Ｂデータが所定の値であると判別された場合は、前記音符データの種類を休符とする請求項６記載の楽曲生成装置。
【請求項８】
前記補正手段は、前記音符データの音長が所定値以下でかつ、当該音符データの前後所定区間内に休符のみ存在する場合は、前記音符データを休符データに変更する請求項６記載の楽曲生成装置。
【請求項９】
前記補正手段は、同じ音高の音符データが連続して続く場合は、当該同じ音高の音符データをひとつの音符データに変換する請求項６記載の楽曲生成装置。
【請求項１０】
前記補正手段は、前記音符データの音長が所定値以下の場合は、前記Ｒデータにより決定された音の強さを減ずる請求項６記載の楽曲生成装置。
【請求項１１】
前記補正手段は、前記音符データが前記メロディを構成する各小節の裏拍及び当該裏拍と表拍との間のいずれかにある場合でかつ、当該音符データの音長が次の小節まで及ばない場合は、前記Ｒデータにより決定された音の強さを減ずる請求項６記載の楽曲生成装置。
【請求項１２】
前記補正手段は、
前記生成されたメロディを構成する各音符データの音の強さに基づいて、その最大値、最小値及び平均値を算出する算出手段と、
前記算出された最大値と最小値とのさが所定値を超える場合は、前記算出された平均値に基づいて、前記各音符データの音の強さを変更する変更手段と、
を有する請求項６記載の楽曲生成装置。
【請求項１３】
前記補正手段は、
前記生成されたメロディを構成する各音符データの音の強さに基づいて、その最大値、を算出する最大値算出手段と、
前記算出された最大値と前記音の強さが取り得る最大値との差分値に基づいて、前記各音符データの音の強さを変更する変更手段と、
を有する請求項６記載の楽曲生成装置。
【請求項１４】
前記補正手段は、対象となる音符データの音高と、当該音符データの前に位置する音符データの音高との差分が所定値を超える場合に、当該差分が前記所定値以下となるように、前記対象となる音符データの音高を補正する請求項６記載の楽曲生成装置。
【請求項１５】
前記割り当て手段は、前記各小節の予め指定された拍位置に前記画像のピクセルデータを夫々割り当てる請求項１乃至１４記載の楽曲生成装置。
【請求項１６】
前記画像のピクセルデータは、前記各小節の１拍目及びコード指定位置、３拍目、２拍目及び４拍目、裏拍、さらに残りの位置の順序で割り当てられる請求項１５記載の楽曲生成装置。
【請求項１７】
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当て、
前記割り当てられたピクセルデータに基づいてメロディを構成し、
前記生成された音符データを所定のルールに従って補正する、楽曲生成方法。
【請求項１８】
コンピュータに、
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当てステップと、
前記割り当てられたピクセルデータに基づいてメロディを構成する音符データを生成する音符データ生成ステップと、
前記生成された音符データを所定のルールに従って補正する補正ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、楽曲生成装置、楽曲生成方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、撮像した画像に応じて変化する制御パラメータに対応して、発音した楽音の発音形態を制御することにより、音楽に慣れ親しみ易くするような新たな楽しみを創出することができる楽音装置が提案されている（例えば、特許文献１）。
この装置によれば、楽曲を表わす楽譜や楽曲データの準備がなくとも、任意の被写体を撮影するだけで、新たな楽曲を即興で自動的に生成することが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１７８２６８
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、こうして作られる楽曲の構成は、用いられる画像の構成、あるいは画像のどの領域を用いるかによって大きく変化し、ユーザーがコントロールできるものでない。
ユーザーが、特定のテンポ、拍子あるいは調の楽曲の生成を希望したとしも、その希望に即した楽曲が生成されるとは限らない。
【０００５】
また、こうして生成される楽曲は、元となる画像の構成によっては、音高や強さ、さらには一音の長さ等が極端に大きく変化したり、あるいは細かく変化したりして、聴感上違和感のあるものとなる可能性がある。
さらに、生成される楽曲は単なる音符の羅列であってテンポに関するデータを有していないので、後でテンポを変更して再生させようとしてもできない場合が多い。
このように、従来の楽曲生成装置は上述のような問題があり、更なる改良が必要であった。
【０００６】
本発明の目的は、画像データに基づいて楽曲を生成するに際し、ユーザーの意向がある程度反映され、かつ聴感上違和感がなく、テンポ変更も自由にできる楽曲生成装置、楽曲生成方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の楽曲生成装置は、
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当て手段と、前記割り当て手段により割り当てられたピクセルデータに基づいてメロディを構成する音符データを生成する音符データ生成手段と、前記音符データ生成手段により生成された音符データを所定のルールに従って補正する補正手段と、を有することを特徴とする。
【０００８】
また、本発明の楽音生成方法は、
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当て、前記割り当てられたピクセルデータに基づいてメロディを構成し、前記生成された音符データを所定のルールに従って補正する、ことを特徴とする。
【０００９】
また、本発明のプログラムは、
コンピュータに、楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当てステップと、前記割り当てられたピクセルデータに基づいてメロディを構成する音符データを生成する音符データ生成ステップと、前記生成された音符データを所定のルールに従って補正する補正ステップと、を実行させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、画像データに基づいて楽曲を生成するに際し、ユーザーの意図がある程度反映させることができようになる。また、生成される楽曲は聴感上違和感がなく、かつテンポ変更を行って再生することも可能になる。
【図面の簡単な説明】
【００１１】
【図１】は、本発明の実施形態における楽曲生成装置のブロック図である。
【図２】は、本発明の実施形態において用いられるテンプレートデータ群をディレクトリ別に分類したツリー図である。
【図３】は、本発明の実施形態における楽曲生成装置の処理動作全体を現したフローチャートである。
【図４】は、図３におけるバックトラック生成処理の詳細な処理動作を表わしたフローチャートの一部である。
【図５】は、図３におけるバックトラック生成処理の詳細な処理動作を表わしたフローチャートの残りの一部である。
【図６】は、本発明の実施形態におけるメロディ生成の様子を図解した説明図である。
【図７】は、図３におけるメロディ生成処理の詳細な処理動作を表わしたフローチャートである。
【図８】は、図７における音高・音長登録処理の詳細な処理動作を表わしたフローチャートの一部である。
【図９】は、図８に続く音高・音長登録処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１０】は、図９に続く音高・音長登録処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１１】は、図１０に続く音高・音長登録処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１２】は、図７における音の強さ登録処理の詳細な処理動作を表わしたフローチャートである。
【図１３】は、図７における全体調整処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１４】は、図１３に続く全体調整処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１５】は、図１４に続く全体調整処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１６】は、図１５に続く全体調整処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１７】は、図１６に続く全体調整処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１８】は、図１７に続く全体調整処理の詳細な処理動作を表わしたフローチャートの一部である。
【図１９】は、本発明の実施形態におけるループタイマー処理の処理動作を表わすフローチャートである。
【発明を実施するための形態】
【００１２】
図１は、本発明の実施形態における楽曲生成装置のブロック図である。
図において、メインブロック部１は、装置全体を制御するものであり、このメインブロック部１に、制御部２、バックトラック合成部３、メロディ合成部４及び再生データ再生部５が接続されている。
【００１３】
制御部２は、ユーザーの操作に基づいて外部よりデータ（設定パラメータ、画像、ＭＩＤＩデータ等）を入出力する。
バックトラック合成部３は、生成すべき楽曲の伴奏部分となるバックトラックを予め用意されたテンプレートデータより生成する。
メロディ生成部４は、このバックトラック合成部３により生成されたバックトラックと、入力される画像データとに基づいて、メロディを生成する。
再生データ再生部５は、メロディ生成部４にて生成された楽曲（例えば、MIDI形式で表現された）を再生するためのＭＩＤＩシーケンサを有するブロックである。
【００１４】
バックトラック合成部３にてバックトラックを生成するためのテンプレートデータは以下の情報を持つ。
（ａ）音楽情報
本実施形態においては、拍子・小節数・調・コード進行、あらかじめ定義されている音楽ジャンルに対する相性度等である。
音楽ジャンルとの相性度は定義済みの音楽ジャンルとしてロックやジャズなどが考えられ、それらとの相性度が、例えば5段階で評価される。
（ｂ）ひとつまたは複数の再生データ（ＭＩＤＩ形式）
これら再生データは音楽情報に則ったものである。ひとつのテンプレートデータ内に複数の再生データが登録されている場合、これら複数の再生データそれぞれが、テンプレート・データの音楽情報に則っている。
また再生データ夫々が互いに関連性を持っていることが望ましく、バリエーション、あるいはフィル・インとなる再生データを有するように構成されていてもよい。
【００１５】
本実施形態においては、テンプレートデータは複数存在し、それらは以下の三つにグループに大別できる。また、これらグループ夫々には数十 〜 百以上程度のテンプレートデータが存在する。
（ａ）ドラム・トラック・テンプレート
（ｂ）ベース・トラック・テンプレート
（ｃ）バッキングリフ・トラック・テンプレート
【００１６】
ここで、ドラム・トラック・テンプレートはドラム等打楽器の再生データを有するテンプレートデータである。この音楽情報には調・コード進行の情報は登録されていない。
一方、ベース・トラック・テンプレートはベースの再生データを有するテンプレートデータである。本実施形態においては、このグループに含まれるテンプレートデータ全てがハ長調であり、コード進行はＣまたはＣＭ７のワンコードとなっている。
さらに、バッキングリフ・トラック・テンプレートはギターやピアノなどのバッキングリフの再生データを有するテンプレートデータである。
【００１７】
テンプレートデータ群は、図２のようにディレクトリ別に保存されている。
種別dirはテンプレートデータ群を分ける３つのグループごとのディレクトリであり、本実施形態においては、この3つのグループは夫々、ｄｒｕｍｓ１０−１、ｂａｓｓ１０−２、及びｂａｃｋｉｎｇ１０−３である。
これら種別ディレクトリ夫々には、サブディレクトリとしての拍子dirが存在する。これは４／４拍子や３／４拍子のように、拍子ごとにテンプレートデータに分類している。本実施形態においては、説明を明瞭にするため４／４拍子１１のみ存在するものとしている。
【００１８】
さらに、この拍子ｄｉｒのサブディレクトリとしてのスケールdirであるｍａｊｏｒ１２−１、ｍｉｎｏｒ１２−２が存在している。
本実施形態においては、種別ｄｉｒがｄｒｕｍｓ１０−１では、調は関係せず、種別dirがｂａｓｓ１０−２の場合はハ長調固定としているため、このサブディレクトリはｂａｃｋｉｎｇ１０−３以外では存在しない。ここにおいても、説明を明瞭にするため調はハ長調とイ短調のみが存在するものとしている。
ｂａｃｋｉｎｇ１０−３の場合はスケールdirの下位、その他のテンプレートは拍子dirの下位に存在するディレクトリ群がテンプレートｄｉｒ１３−１、１３−２・・・となる。夫々のディレクトリ内に音楽情報ファイル１４−１（図中 *.ｍｇｉ）と、再生データ群１４−２（同*.ｍｉｄ）とが収められている。
【００１９】
図３は、図１に示された楽曲生成装置において実行される、楽曲生成のための処理動作全体を表わすフローチャートである。
まず、制御部２により外部から入力された複数の画像データの中から、楽曲生成に用いられる画像を選択するとともに、この画像上にある所望のピクセルを、メロディ作成先頭ピクセルとしてメロディ生成部に登録する（ステップＳ１）。続いてステップＳ２に進み、予め用意されたテンプレート群を用いてバックトラックとしての音楽情報を生成するバックトラック生成処理を実行する。
【００２０】
図４及び図５に、このバックトラック生成処理の動作をより詳細に表わしたフローチャートを示す。
ここではまず、予め用意された複数のドラム・トラック・テンプレートの中から所望のトラック・テンプレートをひとつ選択する（ステップＳ３０）。そして予め複数用意されているバッキングリフ・トラック・テンプレートの中から、ステップＳ３０にて選択されたドラム・トラック・テンプレートと拍子が合致するものを選択する（ステップＳ３１）。ここでもし、拍子が合致するテンプレートが複数存在する場合は、合致するテンプレート全てを選択しておく。
【００２１】
続いて、ステップＳ３２に進み、この選択されたバッキングリフ・テンプレートの中から、前述の選択されたドラム・トラック・テンプレートと音楽ジャンル相性度が最も良いバッキングリフ・トラック・テンプレートをひとつに絞り込む。ここでステップＳ３１にて選択されたバッキングリフ・トラック・テンプレートがひとつしかなかった場合は、このステップＳ３２の処理は省略される。
次に、上述のバッキングリフ・トラック・テンプレートの選択と同様な方法で、予め複数用意されたベース・トラック・テンプレートの中から、選択されたドラム・トラック・テンプレートと拍子が合致しかつ音楽ジャンル相性度が最も良いものをひとつ選択する（ステップＳ３３）。
【００２２】
こうして選ばれた、ドラム、バッキングリフ及びベースのトラック・テンプレート夫々は小節数が同一でなく長さが異なる場合がある。この長さをそろえるために、ステップＳ３４において、各テンプレートが有する小節数間における最小公倍数を取得する。そしてこの最小公倍数を選択されたバッキングトラック、つまりベース・トラック・テンプレートの小節数で除算して、その結果をレジスタｒｅｐｅａｔに格納する（ステップＳ３５）。
この後、ベース・トラック・テンプレートに登録されているコード進行情報を、レジスタｒｅｐｅａｔに格納された値だけ繰り返すことにより、最小公倍数の小節数に対応する長さに伸ばして、新たなコード情報として登録する（ステップＳ３６）。
【００２３】
続いて図５のステップＳ３７に進み、各トラック・テンプレートのいずれかを指定するポインタｃｎｔの値を０とする。
そして、ステップＳ３８において、このポインタｃｎｔの値に対応するトラック・テンプレートを取得する。このｃｎｔの値が０の場合は、ドラム・トラック・テンプレートを、１の場合はバッキングリフ・トラック・テンプレートを、そして２の場合は、ベース・トラック・テンプレートを取得するように構成されている。従って、ポインタｃｎｔの値が０である最初は、ドラム・トラック・テンプレートを取得する。
【００２４】
続くステップＳ３９において、この取得されたトラック・テンプレートの小節数を取得してレジスタｎｕｍに格納するとともに、ステップＳ３４で求めた最小公倍数を、このｎｕｍに格納された値で除算し、この除算した結果をレジスタｒｅｐｅａｔに格納する。
この後、繰り返し回数を表わすポインタｉの値を０に設定し（ステップＳ４０）、続いて取得されたトラック・テンプレートが有する複数の再生データの中からひとつの再生データを選択する（ステップＳ４２）。
ここで、ポインタｃｎｔの値が２、つまり取得されたトラック・テンプレートがベース・トラック・テンプレートか否か判別する（ステップＳ４２）。最初の場合は、ドラム・トラック・テンプレートなので、ステップＳ４４に進み、（ｎｕｍ＊ｉ）＋１小節を先頭に、Ｓ４１で選択された再生データを登録する。
【００２５】
続いてポインタｉをインクリメントし（ステップＳ４５）、このｉの値が、つまり繰り返し回数がレジスタｒｅｐｅａｔに格納された値と同じになったか否か判別する（ステップＳ４６）。ここで同じでないと判別された場合は、ステップＳ４１以降の処理を繰り返し、同じと判断された場合は、ステップＳ４７に進む。
これにより、取得されたトラック・テンプレートにおいて、順次選択される再生データを、直列に接続する形式で最小公倍数の小節数を有する長さの再生データを生成する。
【００２６】
ステップＳ４７に進むと、ポインタｃｎｔはインクリメントされ、続くステップＳ４８にてインクリメントされた値が３未満か否かが判別される。
ここで、３未満であれば、ステップＳ３８に戻り、Ｓ３８〜Ｓ４８の処理を再び実行する。ポインタｃｎｔの値が１の場合は、バッキングリフ・トラック・テンプレートにおける最小公倍数の小節数を有する長さの再生データを生成し、ポインタｃｎｔの値が２の場合は、ベース・トラック・テンプレートにおける最小公倍数の小節数を有する長さの再生データを生成する。ただし、ベース・トラック・テンプレートの場合は、ｃｎｔが２なので、ステップＳ４２からＳ４３に移行し、選択されたベース・トラック・テンプレートの再生データを、対応する音楽情報の調、コード進行に従って音高変換してから、ステップＳ４４に進む。
【００２７】
こうして、各トラック・テンプレートの再生データは、最小公倍数の小節数を有する長さにそろえられる。この後、ステップＳ４８からステップＳ４９に進み、各トラック・テンプレートの再生データを合成するとともに、各トラック・テンプレートに登録されている音楽情報も、最小公倍数の小節数を有する長さにそろえることにより、新たな音楽情報を生成する。そしてこの処理が終了すると、図３の全体フローに戻る。
こうしてバックトラック音楽情報が生成されるとステップＳ３に進み、この生成されたバックトラックの音楽情報をメロディ生成部４に送付する。続いてメロディ生成部４に対して、メロディ生成のための条件のひとつである音変換ルールを含むメロディ生成ルールを登録して（ステップＳ４）、メロディ生成処理に進む（ステップＳ５）。
【００２８】
本実施形態において、メロディ生成部４は、この送付されたバックトラックの音楽情報と、ステップＳ１にて設定された画像のピクセルデータを取得して、これをバックトラックの拍子、調、コード進行に従ってメロディに変換していく手法をとっている。
そして本実施形態においては、ピクセルのＲＧＢ 3バイトのデータを各々音の高さ、長さ、強さに変換し、ＲＧＢのうちＢを音の高さ、Ｇを音の長さ、Ｒを音の強さに変換する。
なお、このＲＧＢと、音高、音長および音の強さとの関係はあくまでもひとつの態様であり、上述のもののみに限られるものでない。例えば、Ｇを音の高さ、Ｒを音の長さ、Ｂを音の強さに変換する、というようにしてもよい。
【００２９】
また、前述のメロディ生成ルールのひとつである、音変換ルールは、以下のように設定されるものとする。
ルール１：コードの構成音以外の音は最も近いコードの構成音に変換。コード構成音は変換しない。変換する候補が複数ある場合は任意に選択
ルール２：コードの構成音以外は休符にする。構成音は変換しない。
ルール３：コード及びスケールの構成音以外は最も近いスケールの構成音に変換。構成音は変換しない。変換する候補が複数ある場合は任意に選択。
ルール４：コード及びスケールの構成音以外は休符にする。構成音は変換しない。
ルール５：音変換は行わない。
本実施形態においては、これらの音変換ルールは、各小節の拍毎に設定する。従って、各小節の１拍目と２拍目とでは異なる音変換ルールに基づいてメロディが生成されことになる。
【００３０】
図６は、本実施形態におけるメロディ生成方法を図解したものであり、図７は、ステップＳ５のメロディ生成処理の詳細な処理動作を示すフローチャートである。
これに従って以下にメロディ生成手順を詳細に説明する。ここにおいて、生成されたバックトラックは４小節、４／４拍子、ハ長調、コード進行はＩ（１−１）  →  IV（２−１）  →  Ｉ（３−１）  →  Ｖ（３−４）（（）内はコード指定されている位置、小節−拍）とする。また６４０＊４８０の画像データがひとつ選択されているものとする。
【００３１】
まず、ステップＳ７０においてバックトラック生成部３にて生成されたバックトラックの音楽情報よりコード進行を取得する。そして各小節を１６音符長単位で分割する（ステップＳ７１）。図６（ａ）に示すように、ひとマスを１６分音符ひとつとみなし、各マスには画像のピクセル、コード情報、音の高さ、強さ、および長さを関連付ける。
続いて、画像の中からひとつのピクセルを選択し先頭ピクセルとする。この先頭ピクセルを１小節目一拍目のマスに関連付ける。先頭ピクセルに続く以降のピクセルを、ひとマス１ピクセルで順に関連付けていく（ステップＳ７２）。
【００３２】
次に、ステップＳ７３にて対応するマスの位置にコード情報を付加する（図６（ｂ））。コード情報にはその各々の構成音が１〜１２の１２音階の高さで登録されている。この設定したマスから次にコードが設定されているマスの一つ前までは同じコードが設定されているとみなす。
【００３３】
続いてステップＳ７４に進み、１２音階での音の高さと長さを登録する音高・音長登録処理を実行する。このステップの詳細な処理動作を示すフローチャートを図８〜図１１に示す。
まず、ポインタｌｏｏｐ及びｉを０に設定する（ステップＳ８０）。ここで、ポインタｉは、各小節内に割り当てられたマスを順次指定していくものであり、ポインタｌｏｏｐは、格納される値に応じて、以下のように小節・拍を指定する。
ｌｏｏｐ＝０の場合、各小節１拍目の位置またはコード設定のあるマス
ｌｏｏｐ＝１の場合、各小節３拍目の位置またはコード設定のあるマス
ｌｏｏｐ＝２の場合、各小節２拍目と４拍目の位置またはコード設定のあるマス
ｌｏｏｐ＝３の場合、各小節裏拍の位置のマス
ｌｏｏｐ＝４の場合、その他のマス
従って、最初はポインタｌｏｏｐに０が設定されるので、各小節１拍目の位置またはコード設定のあるマスが対象となる。
【００３４】
続くステップＳ８１において、マス［ｉ］にコード情報が設定されているならば、そのコード情報をレジスタＣｄに保持する。
次に、ポインタｉで指定されるマス［ｉ］が、ポインタｌｏｏｐで指定される小節と拍の位置にあるか否か判別する（ステップＳ８２）。ここでＹｅｓと判別されたならば、このマス［ｉ］に継続音、つまりその前のマスに格納されている音と同じ音が既に格納されているか否か判別する（ステップＳ８３）。本実施形態において、継続音であるか否かの判別は、マス［ｉ］に設定されている継続フラグの状態を判別することにより行われ、当該フラグが１であれば、継続音であると判断し、当該フラグが０であれば継続音でないと判断する。
【００３５】
ここで継続音でない、つまりＮｏと判別されたなら、レジスタＢに、マス［ｉ］に格納されるピクセルのＢデータ（ＲＧＢのＢ）を格納する（ステップＳ８４）。
一方、ステップＳ８２でＮｏあるいはステップＳ８３でＹｅｓと判別された場合については後述する。
ステップＳ８４の後、レジスタＢに格納された値を１３で除算した余りを求め、レジスタＲｔに格納する。これにより、レジスタＲｔの値は、０〜１２のいずれかの値となる。本実施形態においては、この０という値は休符を示し、１〜１２夫々の値は、１オクターブ内の１２音階に対応させている。
【００３６】
この後図９の処理に移行して、バックトラックの音楽情報の中の調情報を取得する（ステップＳ８６）。続いて、ポインタｌｏｏｐの値、つまり指定されている小節の拍がいずれであるかに基づき、前述のステップＳ４で設定登録された音変換ルールを取得する（ステップＳ８７）。
そして、レジスタＲｔに格納された値が０、つまり休符であるか否か判断する（ステップＳ８８）。ここで休符であると判断されたならば、レジスタＮｔに０の値を格納する（ステップＳ８９）。
【００３７】
レジスタＲｔに格納された値が０でないなら、レジスタＣｄに格納されたコード情報で示されるコードの構成音であるか否か判別される（ステップＳ９０）。ここでコード構成音であると判別されたならステップＳ９１に進み、レジスタＮｔにレジスタＲｔの値をそのまま格納する。
コード構成音でないと判別されたならステップＳ９２に進み、ステップＳ８７で取得した音変換ルールがルール１（コードの構成音以外の音は最も近いコードの構成音に変換）であるか否か判別する。ここでルール１であると判別されたなら、ステップＳ９３に進み、Ｒｔに格納された音階値に最も近いコード構成音をレジスタＮｔに格納する。最も近いコード構成音が複数存在する場合は、いずれかひとつのコード構成音をランダムに選択するようにする。
【００３８】
取得した音変換ルールがルール１でないと判別された場合は、ステップＳ９４に進み、取得した音変換ルールがルール２（コードの構成音以外は休符にする）であるか否か判別する。ここでルール２であると判別された場合は、ステップＳ９５に進み、レジスタＮｔに０を格納する。これはつまり、コード構成音以外は休符と判断することを意味する。
取得した音変換ルールがルール２でないと判別された場合は、ステップＳ９６に進み、取得した音変換ルールがルール３（コード及びスケールの構成音以外は最も近いスケールの構成音に変換）であるか否か判別する。ここでルール３であると判別された場合はステップＳ９７に進み、レジスタＲｔに格納された音階値と同一、もしくは最も近いスケール構成音をレジスタＮｔに格納する。最も近いスケール構成音が複数存在する場合は、いずれかひとつのスケール構成音をランダムに選択するようにする。
【００３９】
取得した音変換ルールがルール３でないと判別された場合は、ステップＳ９８に進み、取得した音変換ルールがルール４（コード及びスケールの構成音以外は休符にする）であるか否か判別する。ここでルール４であると判別された場合はステップＳ９９に進み、レジスタＮｔに０を格納する。
取得した音変換ルールがルール４でないと判別された場合は、ルール５（音変換は行わない）が取得されたものと判別してステップＳ１００に進み、レジスタＮｔにレジスタＲｔの値をそのまま格納する。
【００４０】
ステップＳ８９、Ｓ９１、Ｓ９３、Ｓ９５、Ｓ９７、Ｓ９９及びＳ１００の処理の後、図１０のステップＳ１０１の処理に移行する。ここでレジスタＮｔに格納された値が１〜１２のいずれかの値であるならば、マス［ｉ］の音高と定義する。０の場合は休符と定義する（図６（ｃ）参照）。
このステップＳ１０１の処理の後、ステップＳ８２でＮｏと判別された場合、あるいはステップＳ８３でＹｅｓと判別された場合は、ステップＳ１０２に進み、ポインタｉをインクリメントする。このポインタｉの値が、ポインタｌｏｏｐの値で指定された小節の拍に割り当てられたマス数を超えたか否か判別する（ステップＳ１０３）。超えていない場合は、ステップＳ８１に戻り、超えている場合は、図１１のステップＳ１０４に移行する。
【００４１】
ステップＳ１０４において、ポインタｉに０をセットする。続くステップＳ１０５にて、このポインタｉで指定されるマス［ｉ］が、音高設定済みでかつ音長が未設定であるか否かを判別する。ここでＹｅｓと判別された場合は、レジスタＣｎｔにマス［ｉ］と、その次に音高の設定されているマスとの間にあるマスの数を格納する（ステップＳ１０６）。
【００４２】
そしてステップＳ１０７に進み、マス［ｉ］に割り当てられたピクセルのＧデータ（ＲＧＢのＢ  本実施形態では８ビット）に基づいて音長を設定する。まず、Ｇデータの上位４ビットで音長に対応するマス数、つまり整数部を決定する。
具体的には、Ｇデータを右へ４ビットシフトし、このシフトされた値を「１５」で除算する。これは、Ｇデータの上位４ビットの値と、２進法で「１１１１」（１０進法で「１５」）との比率を求めるためである。そしてＣｎｔの値に対して、この比率を乗算した値をレジスタＣｔｎ２に格納する。この処理動作は、式（１）で表わされる。
Ｃｎｔ２＝Ｃｎｔ＊（ピクセルＧ値＞＞４）／１５・・・・（１）
【００４３】
続いて、この整数部に付加される小数部を加える。小数部はＧデータの下位４ビットに基づいて決定する。
具体的には、ピクセルのＧデータに「００００１１１１（＝０Ｆ）」を乗算し、下位４ビットを抽出する。この下位４ビットの値に、レジスタＣｎｔ２と「１６」とを乗算した値を加算してレジスタＤｒにストアする。
この処理動作は、式（２）で表わされる。
Ｄｒ＝１６＊Ｃｎｔ２＋（ピクセルＧ値＆０ｘ０Ｆ）・・・（２）
【００４４】
次にステップＳ１０９に進み、このレジスタＤｒに格納された値を、マス［ｉ］の音長データとして登録し（ステップＳ１０８）、マス［ｉ］に続くＣｎｔ２の個数のマスに対しては、継続音を登録する（図６（ｄ）参照）。
具体的には、継続音として登録する場合は、各マスには継続音を表わすフラグを１とし、継続音登録を解除するには、このフラグを０とする。
【００４５】
このステップＳ１０９の処理の後、あるいはステップＳ１０５でＮｏと判別された場合に、ステップＳ１１０に進み、ポインタｉをインクリメントする。そしてこのポインタｉの値が予め設定されたマス数未満であるか否か判別する（ステップＳ１１１）。
ここでＹｅｓと判別された場合は、ステップＳ１０５に戻り、Ｎｏの場合は、ステップＳ１１２に進み、ポインタｌｏｏｐに格納されていた値をインクリメントする。
【００４６】
そして、ポインタｌｏｏｐに格納されている値が４を超えたか否か、続くステップＳ１１３で判別し、超えていないと判別された場合は、ポインタｉの値を０にセットし（ステップＳ１１４）、ステップＳ８１に戻る。ここでポインタｉの値が１であるなら、各小節３拍目に割り当てられているマスを対象としてテップＳ８１〜Ｓ１１４の処理動作を行う。この結果、図６（ｅ）に示すように、各小節３拍目において、まず音高が設定され、この後図６（ｆ）に示すように、音長が設定される。
【００４７】
この後ポインタｌｏｏｐの値が２となると、各小節３拍目において、音高・音長が設定され（図６（ｇ）参照）、続いてポインタｌｏｏｐの値が３となると、各小節裏拍において、音高・音長が設定される（図６（ｈ）参照）。そしてポインタｌｏｏｐの値が４となると、音高が未登録かつ継続音としても未登録の全てのマスに対し音高・音長が設定される（図６（ｉ）参照）。
以上の順で各小節のマスにピクセルのデータが割り当てられて、音高・音長が設定されるが、先に設定された音長により継続音が登録されたマスには、その後の処理によりピクセルデータは登録されないように構成されている。つまり、例えばｌｏｏｐ＝０で１拍目に二分音符が登録されたなら、ｌｏｏｐ＝１では二拍目にピクセルは割り当てられない。
この後、ポインタｌｏｏｐの値が５になると、ステップＳ１１３でＮｏと判断され、この処理を終了して、図７にフローチャートに戻る。
【００４８】
この音高・音長登録処理（ステップＳ７４）が終了すると、ステップＳ７５の音の強さ登録処理を実行する。このステップの処理動作を示す詳細なフローチャートを図１２に示す。
図１２においてまず、図６に示すように、各小節に割り当てられたマスを指定するポインタｉの値を０とする（ステップＳ１２０）。
【００４９】
続いて、このポインタｉで指定されるマス［ｉ］に登録されているのが継続音か否か判別する（ステップＳ１２１）。具体的には、マス［ｉ］に設定された継続音フラグが１か否かを判別する。
ここで継続音でないと判別された場合は、ステップＳ１２２に進み、マス［ｉ］に割り当てられているピクセルのＲデータ（ＲＢＧのＲ  本実施形態では８ビット）を１ビット右側にシフトする。これにより、Ｒデータの取り得る値は、０〜１２７となり、これはＭＩＤＩにおける音の強さを表わすベロシティの取り得る値と一致する。
【００５０】
このシフトしたＲデータの値をレジスタＶｅｌｏに格納する。そして、このレジスタＶｅｌｏに格納された値をマス［ｉ］の音の強さとして登録する。
このステップＳ１２２の後、ステップＳ１２３に進む。また、ステップＳ１２１で継続音と判別された場合もこのステップＳ１２３に進む。
このステップＳ１２３においては、ポインタｉの値をインクリメントし、続くステップＳ１２４でこのポインタｉの値が、ピクセルが割り当てられたマス数を超えたか否か判断し、超えていないなら、ステップＳ１２１に戻り、超えていたならこの処理を終了して図７に戻る。
【００５１】
この処理動作により、各小節内に登録された音夫々に対して、音の強さが登録される。
再び図７において、ステップＳ７５の音の強さ登録処理が終了すると、ステップＳ７６の全体調整処理に移行する。
【００５２】
この全体調整処理は、各マスに登録された音高、音長あるいは音の強さを、生成されたメロディ全体の状態から、調整する処理であり、その詳細な処理動作は図１３〜図１８のフローチャートで表わされている。
まず、図１３において、各マスを指定するポインタｉを０に設定する（ステップＳ１３０）。続いてこのポインタｉにより指定されるマス［ｉ］には、継続音あるいは休符のいずれかが登録されているか否か判別する（ステップＳ１３１）。ここでＹｅｓと判別された場合は、後述するステップＳ１５９に進むが、Ｎｏと判別された場合は、レジスタＤｒにマス［ｉ］に登録されている音長の値を格納する（ステップＳ１３２）。
【００５３】
そして、このレジスタＤｒに格納された音長が、予め設定された値である１６以下であるか否かを判別し（ステップＳ１３３）、ここで１６以下であると判別された場合は、さらにこのマス［ｉ］の前あるいは後に存在するマスに休符が登録され、かつ休符が登録されている区間が連続して一拍以上であるか判別する（ステップＳ１３４）。
このステップＳ１３４の判別がＹｅｓの場合は、マス［ｉ］に登録されている音高（＝１〜１２のいずれか）を、休符（＝０）に変更する（ステップＳ１３５）。
これにより、休符と休符の間に短い音長の音符が存在していた場合は、その音符は削除される。
【００５４】
このステップＳ１３５の処理の後、あるいはステップＳ１３３、Ｓ１３４でＮｏと判別された場合、図１４のステップＳ１４０に進み、マス［ｉ］に休符が登録されているか否か判別する。ここで休符が登録されていないと判別されると、ステップＳ１４１に進み、
このマス［ｉ］に続くマスのうち、継続音が登録されていないマス［ｊ］を検索して取得する。
そして、マス［ｉ］とマス［ｊ］とに登録された音高が一致しているか否か判別し（ステップＳ１３５）、一致しているなら乱数を取得し、その最下位ビット（ＬＳＢ）が１か否か判別する。ここで１と判別されたならば、マス［ｉ］に登録されている音長に、マス［ｊ］に登録されている音長を加算し、マス［ｊ］を継続音に変更する（ステップＳ１４３）。
これは同一音高の音符が続く場合は、ひとつの音符に統合する場合が生じることを意味する。ひとつの音符に統合するか否かは、乱数によって決められる。
【００５５】
このステップＳ１４３の後、ステップＳ１４０でＹｅｓと判別された場合、ステップＳ１４１でＮｏと判別された場合、あるいはステップＳ１４２でＮｏと判別された場合に、図１５のステップＳ１５０に進む。
ここで、マス［ｉ］に登録された音の強さをレジスタＶｅｌｏに格納するとともに、音長をレジスタＤｒに格納する。そして、このレジスタＤｒに格納された音長の値が「１６」以下か否か判別し（ステップＳ１５１）、以下であるなら、レジスタＶｅｌｏに格納された音の強さの値に対して、０．８を乗じる（ステップＳ１５２）。
【００５６】
一方、ステップＳ１５１で１６を超えると判別された場合は、ステップＳ１５３に進み、このレジスタＤｒに格納された音長の値が「３２」以下であるか否かを判別する。ここで「３２」以下と判別された場合は、レジスタＶｅｌｏに格納された音の強さの値に対して、０．９を乗じる（ステップＳ１５４）。
このステップＳ１５３で「３２」を超えると判別された場合、ステップＳ１５２あるいはＳ１５４の処理の後、ステップＳ１５５に進む。ここでは、マス［ｉ］は小節内の裏拍に存在するか否か、あるいは裏拍と表拍の間に存在するか否かを判別する。
【００５７】
ここでＹｅｓと判別された場合は、ステップＳ１５６に進み、このマス［ｉ］に登録されている音高の音が、次の小節の一拍目とタイの関係なっているか、つまり次小節まで続いているか否か判別する。ここでＮｏと判別された場合はステップＳ１５７に進む。そしてマス［ｉ］が裏拍の場合は、レジスタＶｅｌｏに格納された音の強さの値に対して、０．９を乗じる。裏拍以外の場合は、レジスタＶｅｌｏに格納された音の強さの値に対して、０．９を乗じる。
【００５８】
ステップＳ１５７の処理の後、ステップＳ１５５でＮｏと判別された場合、あるいはステップＳ１５５でＮｏと判別された場合はステップＳ１５８に進み、レジスタＶｅｌｏの値を、マス［ｉ］の音の強さとして登録する。
このステップＳ１５８の後、あるいは図１３のステップＳ１３１でＮｏと判別された場合に、ステップＳ１５９に進み、ポインタｉをインクリメントする。このインクリメントされたｉの値がピクセルの割り当てられたマス数を超えているか否か判断する（ステップＳ１６０）。ここでＮｏと判断されたなら、図１３のステップＳ１３１に戻り、Ｙｅｓなら図１６のステップＳ１６１に進む。
このように本実施形態においては、この図１５に示された処理により、マスに割り当てられた音の強さを、音長、裏拍か否かに基づいて調整している。
【００５９】
次に、図１６のステップＳ１６１において、今回ピクセルの割り当てられたマス全てに登録された音の強さ（ベロシティ）の最大値、最小値及び平均値を取得する。ここにおいて、継続音の登録されたマスに関しては、その継続音の発音開始となる音が割り当てられているマスと同等とみなす。つまり平均値演算の場合には、発音開始となる音が割り当てられているマスが１個存在しているものとして取り扱う。また、休符の割り当てられているマスは無視する。
【００６０】
続いて、取得された最大値と最小値との差分が２０を超えているか否か判別する（ステップＳ１６２）。ここでＹｅｓと判別された場合は、ステップＳ１６３に進み、マスを指定するポインタｉに０を設定する。
そして、このポインタｉで指定されるマス［ｉ］には継続音が登録されているか否か判別し（ステップＳ１６４）、ここでＮｏ、登録されていないと判別され場合は、ステップＳ１６５に進み、レジスタｄｉｆｆに、マス［ｉ］に登録されている音の強さの値から取得された平均値を減じた値の絶対値を格納する。
【００６１】
続いて、このレジスタｄｉｆｆの値が、１０＜ｄｉｆｆ＜２０を満足するか否か判別する（ステップＳ１６６、１６７）。満足しているなら、レジスタｄｉｆｆの値を（３）式により変更する（ステップＳ１６８）。
ｄｉｆｆ＝（ｄｉｆｆ−１０）／２＋１０・・・（３）
【００６２】
また、ｄｉｆｆ≧２０であるなら、レジスタｄｉｆｆの値を（４）式により変更する（ステップＳ１６９）。
ｄｉｆｆ＝（ｄｉｆｆ−２０）／２＋１５・・・（４）
一方、ｄｉｆｆ≦１０であるならば、ｄｉｆｆの値は変更しない。
この後、ステップＳ１７０に進み、ステップＳ１６５で求められた。もともとのレジスタｄｉｆｆの値が平均値より小さい場合は、以下の（５）式の変換を行う（ステップＳ１７０）。
ｄｉｆｆ＝−ｄｉｆｆ・・・（５）
【００６３】
こうして求められたレジスタｄｉｆｆの値に平均値を加算した値を、マス［ｉ］の音の強さとして登録する（ステップＳ１７１）。
このステップＳ１７１の後、あるいはステップＳ１６４にてＹｅｓと判断されていた場合にポインタｉをインクリメントし（ステップＳ１７２）、このインクリメントされたｉの値がピクセルの割り当てられたマス数を超えているか否か判断する（ステップＳ１７３）。ここでＮｏと判断されたならステップＳ１６４に戻り、Ｙｅｓなら図１７のステップＳ１７４に進む。また、ステップＳ１６２にて、Ｎｏと判別された場合も、そのまま図１７のステップＳ１７４に進む。
このように本実施形態においては、この図１６に示された処理により、音の強さの急激な変化を抑制している。
【００６４】
続く図１７においては、まずステップＳ１７４において、再びピクセルの割り当てられたマス全てに登録された音の強さ（ベロシティ）の中から最大値を取得する。そして、レジスタｖＯｆｆｓｅｔに（６）式で求めた値を設定する。
ｖＯｆｆｓｅｔ＝１２０−音の強さの最大値・・・（６）
続いてポインタｉを０に設定し（ステップＳ１７５）、このポインタｉで指定されるマス［ｉ］に継続音が登録されているか否か判別する（ステップＳ１７６）。ここでＮｏと判別された場合は、マス［ｉ］の音の強さとして、当該音の強さに対してｖＯｆｆｓｅｔの値を加算した値を登録する（ステップＳ１７７）。
これらの処理により、全体の音の強さのレベルを調整する。
【００６５】
この後、ステップＳ１７８に進み、レジスタＮｔｉにマス［ｉ］に登録された音高を、レジスタＣ４に基底音高番号を、さらにレジスタＮｔｉ２に（７）式で求めた値を格納する。
Ｎｔｉ２＝Ｃ４＋Ｎｔｉ−１  ・・・（７）
【００６６】
そしてステップＳ１７９に進み、マス［ｉ］の前方、つまり時間的に先に存在するマスの中から継続音の登録されていないマス［ｈ］が存在するか否かの判別を行う。ここでＹｅｓと判別された場合は、レジスタＮｔｈにマス［ｈ］に登録された音高の値を格納し（ステップＳ１８０）、続いて以下の（８）式が成立するか否か判別する（ステップＳ１８１）。
｜Ｎｔｉ−Ｎｔｈ｜≦７？  ・・・（８）
これがＮｏと判別された場合は、上記（８）式を満足するレジスタＮｔｉの値を（９）式により求める（ステップＳ１８２）。
Ｎｔｉ＝Ｎｔｉ２±１２＊Ｎ  ・・・（９）
Ｎは自然数
【００６７】
一方、ステップＳ１７９でＮｏと判断された場合、あるいはステップＳ１８１でＹｅｓと判別された場合には、レジスタＮｔｉにレジスタＮｔｉ２の値を格納する（ステップＳ１８３）。
こうして求められたレジスタＮｔｉの値を、マス［ｉ］の音の高さとして登録する（ステップＳ１８４）。
この後図１８のステップＳ１８５に進み、ポインタｉをインクリメントする。このインクリメントされたｉの値がピクセルの割り当てられたマス数を超えているか否か判断する（ステップＳ１８６）。ここでＮｏと判断されたなら、図１７のステップＳ１７６に戻り、Ｙｅｓならこの全体調整処理を終了する。
【００６８】
図７に戻って、全体調整処理が終了すると、メロディ生成処理も終了し、図３の全体フローに戻る。この後ＳＭＦデータ作成処理（ステップＳ６）を実行する。ここにおいては、上記で生成したバックトラックとメロディより再生データ（ＭＩＤＩ）を生成する。
つまり、バックトラックに使われている各テンプレートの再生データ（ＭＩＤＩ）を用いてバックトラックのＭＩＤＩデータを出力する。この際ＭＩＤＩ分解能の違いなどがあれば調整する。テンポ設定がされている場合はこれを無視する。メロディ生成データはＭＩＤＩ変換を行う。メロディ生成処理でマスに登録された音高、音長及び強さをＭＩＤＩに変換するが、音の長さが１小節あたりの分解能を、バックトラックのＭＩＤＩデータに合わせて変換する。そしてこれらを統合して全体のＭＩＤＩデータを生成する。
【００６９】
この生成されたＭＩＤＩデータは、待機中のＭＩＤループシーケンサに、ＳＭＦ（Ｓｔａｎｄａｒｄ  ＭＩＤＩ  Ｆｉｌｅ）として登録される（ステップＳ７）。
そして、このＭＩＤＩシーケンサが再生中であるか否か判別し（ステップＳ８）、再生中でなければ、登録されているＳＭＦの再生を開始し、待機中ＭＩＤＩシーケンサを再生中の状態に変更するとともに、ループ用タイマーを起動させる（ステップＳ９）。
【００７０】
このステップＳ９の処理の後、あるいはステップＳ９でＮｏと判別された場合に、ステップＳ１０に進み、外部よりメロディの設定変更要求が指示されたか否かを判別する。ここでＹｅｓと判別されたなら、ステップＳ１に戻り、Ｎｏと判断されたならば、ステップＳ１１に進み、終了指示がなされたか否か判別する。ここでＮｏと判別されたなら再びステップＳ１０に戻り、Ｙｅｓと判別されたなら、ステップＳ１２に進んで、全ての処理動作を終了させる終了処理を実行して本処理を終了する。
【００７１】
図１９は、ループタイマー処理であり、図１のステップＳ９の処理が実行される度により起動される。
まず、ステップＳ１９０において、ステップＳ９にて再生開始されたＳＭＦが再生終了時刻に達したか否かを判断する。ここで達していない場合はこの状態を維持し、達したと判断された場合は、ステップＳ１９１に進み、ＳＭＦを再生停止させる。
【００７２】
この後、待機中シーケンサに別のＳＭＦが登録済みであるか否か判別する（ステップＳ１９２）。ここでＮｏと判別されたならステップＳ１９３に進み、再生中のＭＩＤＩシーケンサのＳＭＦの再生位置を先頭に戻す。この処理が終了した後、あるいはステップＳ１９２でＹｅｓと判別された場合に、ステップＳ１９４に進んで、ＳＭＦの再生を開始するとともに、待機中の待機中ＭＩＤＩシーケンサを再生中の状態に変更するとともに、ループ用タイマーを起動させて、この処理を終了させる。
このループタイマー処理により、生成されたメロディとバックトラックとに基づいて作成されたＳＭＦデータは繰り返し再生されることになる。
【００７３】
このように、本実施形態によれば、ユーザーは、生成すべき楽曲のバックトラックとなる、ドラム、ベース及びバッキングリフの各トラックのテンプレートを選択することができ、この選択されたテンプレートが有する拍子・小節数・調・コード進行等の音楽情報に基づいて、画像データから生成されたメロディの音符夫々の音高、音長及び音の強さを補正する。
このため、ユーザーはいずれのテンプレートを選択するかにより、生成されるメロディを構成する音符夫々の音高、音長あるいは音の強さをコントロールでき、ユーザーの意図をある程度反映することが可能となる。
【００７４】
また本実施形態においては、補正されたメロディの音符全体に基づき、必要に応じて各音符の音高、音長あるいは音の強さ等を補正している。
これにより、生成される楽曲は音高の極端な変更、異常に短い音符の存在によるノイズの発生など、聴感上違和感を生じさせる原因を除去することが可能となる。
【００７５】
さらに本実施形態においては、選択されるテンプレートは、音楽除法として拍子及び小節数を有している。このため、画像の各ピクセルデータに基づき生成される音符は、テンプレートで指定される小節内の拍位置に正確に割り当てることが可能となる。従って、生成されたメロディを、これら選択された各トラックのテンプレートとともに再生する際、テンポを変更することも可能になる。
【００７６】
以上、この発明のいくつかの実施形態について説明したが、この発明は、これらに限られるものではなく、特許請求の範囲に記載された発明とその均等の範囲を含むものである。
【００７７】
以下に、本願の特許請求の範囲に記載された発明を付記する。
［付記１］
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当て手段と、
前記割り当て手段により割り当てられたピクセルデータに基づいてメロディを構成する音符データを生成する音符データ生成手段と、
前記音符データ生成手段により生成された音符データを所定のルールに従って補正する補正手段と、
を有する楽曲生成装置。
［付記２］
前記楽曲の伴奏データとして、少なくとも拍子及び小節数を有する音楽情報と、再生シーケンスデータとを夫々有する第１のトラックテンプレートデータを複数有する付記１記載の楽曲再生装置。
［付記３］
前記楽曲再生装置は、前記音楽情報としてさらに調及びコード進行のデータを有する複数の第２のトラックテンプレートデータをさらに有する付記１又は２記載の楽曲再生装置。
［付記４］
前記楽曲再生装置はさらに、前記複数の第１のテンプレートデータのいずれかを選択し、この選択された第１のトラックテンプレートデータの音楽情報基づいて、前記選択された第１のテンプレートデータと最も相性度の高い第２のトラックテンプレートデータを選択する選択手段と、
この選択手段により選択された第１及び第２のトラックテンプレートデータに基づいて、前記楽曲の伴奏データを生成する付記１乃至３いずれかに記載の楽曲生成装置。
［付記５］
前記補正手段は、前記コード進行情報を構成するコード情報に基づいて前記生成された音符データを補正する付記３記載の楽曲生成装置。
［付記６］
前記音符データ生成手段は、前記割り当てられたピクセルデータを構成するＲデータにより前記音符データの音の強さを、Ｇデータにより音長を、そしてＢデータで当該音符の種類及び音高を決定する付記１記載の楽曲生成装置。
［付記７］
前記音符データ生成手段は、前記Ｂデータが所定の値であると判別された場合は、前記音符データの種類を休符とする付記６記載の楽曲生成装置。
［付記８］
前記補正手段は、前記音符データの音長が所定値以下でかつ、当該音符データの前後所定区間内に休符のみ存在する場合は、前記音符データを休符データに変更する付記６記載の楽曲生成装置。
［付記９］
前記補正手段は、同じ音高の音符データが連続して続く場合は、当該同じ音高の音符データをひとつの音符データに変換する付記６記載の楽曲生成装置。
［付記１０］
前記補正手段は、前記音符データの音長が所定値以下の場合は、前記Ｒデータにより決定された音の強さを減ずる付記６記載の楽曲生成装置。
［付記１１］
前記補正手段は、前記音符データが前記メロディを構成する各小節の裏拍及び当該裏拍と表拍との間のいずれかにある場合でかつ、当該音符データの音長が次の小節まで及ばない場合は、前記Ｒデータにより決定された音の強さを減ずる付記６記載の楽曲生成装置。
［付記１２］
前記補正手段は、
前記生成されたメロディを構成する各音符データの音の強さに基づいて、その最大値、最小値及び平均値を算出する算出手段と、
前記算出された最大値と最小値とのさが所定値を超える場合は、前記算出された平均値に基づいて、前記各音符データの音の強さを変更する変更手段と、
を有する付記６記載の楽曲生成装置。
［付記１３］
前記補正手段は、
前記生成されたメロディを構成する各音符データの音の強さに基づいて、その最大値、を算出する最大値算出手段と、
前記算出された最大値と前記音の強さが取り得る最大値との差分値に基づいて、前記各音符データの音の強さを変更する変更手段と、
を有する付記６記載の楽曲生成装置。
［付記１４］
前記補正手段は、対象となる音符データの音高と、当該音符データの前に位置する音符データの音高との差分が所定値を超える場合に、当該差分が前記所定値以下となるように、前記対象となる音符データの音高を補正する付記６記載の楽曲生成装置。
［付記１５］
前記割り当て手段は、前記各小節の予め指定された拍位置に前記画像のピクセルデータを夫々割り当てる付記１記載の楽曲生成装置。
［付記１６］
前記画像のピクセルデータは、前記各小節の１拍目及びコード指定位置、３拍目、２拍目及び４拍目、裏拍、さらに残りの位置の順序で割り当てられる付記１５記載の楽曲生成装置。
［付記１７］
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当て、
前記割り当てられたピクセルデータに基づいてメロディを構成し、
前記生成された音符データを所定のルールに従って補正する、楽曲生成方法。
［付記１８］
コンピュータに、
楽曲の伴奏を構成する各小節の予め指定された位置に対応して、画像の任意の位置から取得した複数のピクセルデータを夫々割り当てる割り当てステップと、
前記割り当てられたピクセルデータに基づいてメロディを構成する音符データを生成する音符データ生成ステップと、
前記生成された音符データを所定のルールに従って補正する補正ステップと、
を実行させるプログラム。
【符号の説明】
【００７８】
１  メインブロック
２  制御部
３  バックトラック合成部
４  メロディ生成部
５  再生データ再生部
【図１】
2014153597.tif 000003
【図２】
2014153597.tif 000004
【図３】
2014153597.tif 000005
【図４】
2014153597.tif 000006
【図５】
2014153597.tif 000007
【図６】
2014153597.tif 000008
【図７】
2014153597.tif 000009
【図８】
2014153597.tif 000010
【図９】
2014153597.tif 000011
【図１０】
2014153597.tif 000012
【図１１】
2014153597.tif 000013
【図１２】
2014153597.tif 000014
【図１３】
2014153597.tif 000015
【図１４】
2014153597.tif 000016
【図１５】
2014153597.tif 000017
【図１６】
2014153597.tif 000018
【図１７】
2014153597.tif 000019
【図１８】
2014153597.tif 000020
【図１９】
2014153597.tif 000021