特許第6295583号(P6295583)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヤマハ株式会社の特許一覧

特許6295583音楽データ生成装置および音楽データ生成方法を実現するためのプログラム
<>
  • 特許6295583-音楽データ生成装置および音楽データ生成方法を実現するためのプログラム 図000002
  • 特許6295583-音楽データ生成装置および音楽データ生成方法を実現するためのプログラム 図000003
  • 特許6295583-音楽データ生成装置および音楽データ生成方法を実現するためのプログラム 図000004
  • 特許6295583-音楽データ生成装置および音楽データ生成方法を実現するためのプログラム 図000005
  • 特許6295583-音楽データ生成装置および音楽データ生成方法を実現するためのプログラム 図000006
  • 特許6295583-音楽データ生成装置および音楽データ生成方法を実現するためのプログラム 図000007
  • 特許6295583-音楽データ生成装置および音楽データ生成方法を実現するためのプログラム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6295583
(24)【登録日】2018年3月2日
(45)【発行日】2018年3月20日
(54)【発明の名称】音楽データ生成装置および音楽データ生成方法を実現するためのプログラム
(51)【国際特許分類】
   G10H 1/00 20060101AFI20180312BHJP
   G10H 1/38 20060101ALI20180312BHJP
【FI】
   G10H1/00 102Z
   G10H1/38 Z
【請求項の数】4
【全頁数】25
(21)【出願番号】特願2013-210923(P2013-210923)
(22)【出願日】2013年10月8日
(65)【公開番号】特開2015-75575(P2015-75575A)
(43)【公開日】2015年4月20日
【審査請求日】2016年8月23日
(73)【特許権者】
【識別番号】000004075
【氏名又は名称】ヤマハ株式会社
(74)【代理人】
【識別番号】100125254
【弁理士】
【氏名又は名称】別役 重尚
(74)【代理人】
【識別番号】100118278
【弁理士】
【氏名又は名称】村松 聡
(72)【発明者】
【氏名】渡邉 大地
【審査官】 上田 雄
(56)【参考文献】
【文献】 特開2013−190694(JP,A)
【文献】 特開平07−121163(JP,A)
【文献】 特開平03−282592(JP,A)
【文献】 特開平07−121661(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10H 1/00−7/12
(57)【特許請求の範囲】
【請求項1】
テキストベースのコード譜を参照する参照手段と、
生成する音楽データの拍子を設定する拍子設定手段と、
前記参照手段によって参照されるコード譜を分析し、前記拍子設定手段によって設定された拍子に応じたコード進行情報を生成する第1の生成手段と、
前記第1の生成手段によって生成されたコード進行情報に基づいて、前記設定された拍子の音楽データを生成する第2の生成手段と
前記参照されるコード譜を分析し、楽節情報を抽出する抽出手段と、
を有し、
前記第2の生成手段が音楽データを生成する際の基礎として、前記抽出手段によって抽出された楽節情報も加えることを特徴とする音楽データ生成装置。
【請求項2】
前記第1の生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを拍点と一致するように調整することを特徴とする請求項1に記載の音楽データ生成装置。
【請求項3】
前記第2の生成手段が音楽データを生成する際の基礎として用いる音符列情報を設定する音符列情報設定手段をさらに有し、
前記第1の生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを、前記音符列情報設定手段によって設定された音符列情報に応じて調整することを特徴とする請求項1または2に記載の音楽データ生成装置。
【請求項4】
音楽データ生成方法をコンピュータに実行させるためのプログラムであって、
前記音楽データ生成方法は、
テキストベースのコード譜を参照する参照ステップと、
生成する音楽データの拍子を設定する拍子設定ステップと、
前記参照ステップによって参照されるコード譜を分析し、前記拍子設定ステップによって設定された拍子に応じたコード進行情報を生成する第1の生成ステップと、
前記第1の生成ステップによって生成されたコード進行情報に基づいて、前記設定された拍子の音楽データを生成する第2の生成ステップと
前記参照されるコード譜を分析し、楽節情報を抽出する抽出ステップと、
を有し、
前記第2の生成ステップでは、音楽データを生成する際の基礎として、前記抽出ステップにおいて抽出された楽節情報も加え
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コード進行情報を生成し、生成したコード進行情報に基づいて音楽データを生成する音楽データ生成装置および音楽データ生成方法を実現するためのプログラムに関する。
【背景技術】
【0002】
音楽データを生成する音楽データ生成装置は、従来から知られている。
【0003】
このような装置として、ユーザが伴奏スタイルデータとそのセクションを指定した組を複数組結線し、各組に対してコード進行を指定すると、結線された順序で、各組の伴奏スタイルデータおよびセクションによって指定された伴奏パターンの音高を当該指定されたコード進行に応じて適宜変更して自動演奏可能な自動伴奏データを生成するようにした演奏データ作成装置がある(たとえば、特許文献1参照)。
【0004】
また、テキストコードを含むスクリプトデータ内のイベント識別子を参照して、演奏情報を表すテキストコードと歌詞データを表すテキストコードを判別し、演奏情報と判別されたテキストコードを演奏イベント情報に変換してMIDI(musical instrument digital interface)デバイスに出力する一方、歌詞データと判別されたテキストコードは歌詞として表示するようにしたマルチメディア情報再生装置もある(たとえば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許3166455号公報
【特許文献2】特許3918580号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし上記従来の演奏データ作成装置では、各組に対してコード進行を指定する場合、ユーザは、選択操作や編集作業などにより、当該コード進行を構成する各コード(和音)を1つ1つ指定して行かなければならないので、ユーザには、面倒な操作や作業を強いるとともに、コードに関する知識をある程度必要とした。
【0007】
また上記従来のマルチメディア情報再生装置では、演奏情報と判別されたテキストコードを演奏イベント情報に変換することは記載されているものの、コード進行を取得することは記載されていないので、演奏データの生成にコード進行が必要な場合には、上記従来の演奏データ作成装置と同様に、ユーザは、選択操作や編集作業などにより、当該コード進行を構成する各コードを1つ1つ指定して行かなければならない。つまり、上記従来のマルチメディア情報再生装置でも、上記従来の演奏データ作成装置についての上記問題と同様の問題が起こり得る。
【0008】
テキストデータで作成されたコード譜は通常、小節線が“|”(のテキストコード)で表され、“|”と“|”の間にある1個以上のコード名がその小節のコード(進行)を表している。このようなテキストデータで作成されたコード譜には本来、対応する元曲があり、そのコード譜の拍子は元曲の拍子に合わせたものとなっているが、拍子情報自体がコード譜に含まれていないことがある。
【0009】
一方、前記従来の演奏データ作成装置では、伴奏スタイルデータ(およびセクション)を指定してコード(進行)を入力すると、当該伴奏スタイルデータ(およびセクション)の伴奏パターンデータが入力コードに合わせて展開され、自動伴奏データが生成される。伴奏スタイルデータにはそれぞれ拍子が1つ決められており、この拍子に基づいて自動伴奏データが生成されるので、伴奏スタイルデータの拍子とコード進行の拍子とが合っていない場合、コードチェンジが不自然に起こる自動伴奏データが生成される虞がある。前記従来の演奏データ作成装置では、両者の拍子は合っているのでこのような問題は生じないが、テキストデータで作成されたコード譜を入力し、このコード譜に記載されたコード進行に基づいて自動伴奏データを生成した場合、上述のように、拍子情報が当該コード譜に含まれないことで、両者の拍子が合わないことがあり得る。
【0010】
拍子が合っていないことによる問題は、自動伴奏データを生成するときだけでなく、たとえば、楽譜データを生成するときに、楽譜データの拍子に違う拍子を設定してしまうことで、適切でない位置にコードネームが表示されることもある。あるいはアレンジデータを生成するときにも、同様なことが言える。
【0011】
本発明は、この点に着目してなされたものであり、コードに関する知識を持たないユーザでも簡単に、生成する音楽データの拍子に合ったコード進行情報を生成でき、このコード進行情報に基づいて音楽データを生成することが可能となる音楽データ生成装置および音楽データ生成方法を実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するため、請求項1に記載の音楽データ生成装置は、テキストベースのコード譜を参照する参照手段と、生成する音楽データの拍子を設定する拍子設定手段と、前記参照手段によって参照されるコード譜を分析し、前記拍子設定手段によって設定された拍子に応じたコード進行情報を生成する第1の生成手段と、前記第1の生成手段によって生成されたコード進行情報に基づいて、前記設定された拍子の音楽データを生成する第2の生成手段と、前記参照されるコード譜を分析し、楽節情報を抽出する抽出手段と、を有し、前記第2の生成手段が音楽データを生成する際の基礎として、前記抽出手段によって抽出された楽節情報も加えることを特徴とする。
【0013】
請求項2に記載の音楽データ生成装置は、請求項1の音楽データ生成装置において、前記第1の生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを拍点と一致するように調整することを特徴とする。
【0014】
請求項3に記載の音楽データ生成装置は、請求項1または2の音楽データ生成装置において、前記第2の生成手段が音楽データを生成する際の基礎として用いる音符列情報を設定する音符列情報設定手段をさらに有し、前記第1の生成手段は、当該コード進行情報を構成する各コード情報の発生タイミングを、前記音符列情報設定手段によって設定された音符列情報に応じて調整することを特徴とする。
【0016】
上記目的を達成するため、請求項に記載のプログラムは、請求項1と同様の技術的思想によって実現できる。
【発明の効果】
【0017】
請求項1またはに記載の発明によれば、テキストベースのコード譜が参照され、生成する音楽データの拍子が設定され、前記参照されるコード譜が分析されて、前記設定された拍子に応じたコード進行情報が生成され、このコード進行情報に基づいて、前記設定された拍子の音楽データが生成されるので、つまり、参照されるコード譜に拍子情報が含まれていなくても、生成する音楽データの拍子に合った拍子が設定され、その拍子のコード進行情報が生成され、さらにこのコード進行情報に基づいて音楽データが生成されるので、生成する音楽データの拍子に合い、当該音楽データの生成に利用可能なコード進行情報を手軽に取得することができる。そして、コード進行情報は参照されるコード譜に基づいて自動的に生成されるので、コード入力の操作が簡易化され、効率的であり、さらに、コードに関する知識を持たないユーザでも、音楽データを生成することができる。
【0018】
請求項2に記載の発明によれば、生成されるコード進行情報を構成する各コード情報の発生タイミングが拍点と一致するように調整され、この調整されたコード進行情報に基づいて音楽データが生成される。発生タイミングが拍点に変更されたコード進行情報に基づいて、音楽データが生成されると、生成された音楽データでは、コードチェンジは自然な位置で起こるよう自動的に調整されるので、聴感上あるいは表示上、自然な音楽の流れが得られる。したがって、ユーザはコード進行情報を取得する元のコード譜に想定されている拍子を気にしなくてもよい。
【0019】
請求項3に記載の発明によれば、音楽データを生成する際の基礎として用いる音符列情報が設定され、生成されるコード進行情報を構成する各コード情報の発生タイミングが、前記設定された音符列情報に応じて調整され、この調整されたコード進行情報に基づいて音楽データが生成される。コードチェンジは拍点で起こることが多いが、曲そのもののリズムによっては、拍点からずれることもある。たとえば、スウィングの場合、拍点や音符単位で割り当てたコードチェンジタイミングから若干遅れたタイミングでコードチェンジする方がスウィングらしい演奏になることがある。請求項3に記載の発明は、このような拍点から若干ずれたタイミングでコードチェンジがなされる音楽データを生成することができる。
【0020】
請求項1または4に記載の発明によれば、前記参照されるコード譜が分析されて、楽節情報が抽出され、音楽データを生成する際の基礎として、前記抽出された楽節情報も加えられるので、つまり、参照されるコード譜に、たとえば楽節記号(楽節名)が含まれている場合、楽節記号も抽出できるようにし、抽出した楽節記号を音楽データの生成に活用したので、参照されるコード譜の持つ情報をより活かした音楽データの生成が可能になる。
【図面の簡単な説明】
【0021】
図1】本発明の一実施の形態に係る音楽データ生成装置の概略構成を示すブロック図である。
図2図1の音楽データ生成装置によって生成された音楽データの一例を示す図である。
図3図1の音楽データ生成装置、特にCPUが実行するコード譜表示データ&自動伴奏データ生成処理の手順を示すフローチャートである。
図4図3中の拍子情報設定処理の詳細な手順を示すフローチャートである。
図5図3中のコード進行情報生成処理の詳細な手順を示すフローチャートである。
図6図5中のコード情報生成処理の詳細な手順を示すフローチャートである。
図7図3中の楽節情報生成処理の詳細な手順を示すフローチャートである。
【発明を実施するための形態】
【0022】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【0023】
図1は、本発明の一実施の形態に係る音楽データ生成装置の概略構成を示すブロック図である。
【0024】
同図に示すように、本実施の形態の音楽データ生成装置は、ユーザの演奏操作に応じた演奏情報(音声情報も含む)を入力する演奏入力部1と、各種情報を入力するための複数のスイッチを含む設定操作子2と、演奏入力部1から入力された演奏情報を電気信号に変換して装置内に取り込む入力インターフェース(I/F)3と、設定操作子2の操作状態を検出する検出回路4と、装置全体の制御を司るCPU(central processing unit)5と、該CPU5が実行する制御プログラムや各種テーブルデータ等を記憶するROM(read only memory)6と、演奏データ、各種入力情報および演算結果等を一時的に記憶するRAM(random access memory)7と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ8と、各種情報等を表示する、たとえばLCD(liquid crystal display)およびLED(light emitting diode)等を備えた表示部9と、前記制御プログラムを含む各種アプリケーションプログラムや各種伴奏パターンデータ、コード譜データ、各種楽曲データ(ソングデータ)、各種データ等を記憶する記憶装置10と、外部記憶装置100を接続し、この外部記憶装置100からコード譜データ等を参照したり、取得したりするための通信インターフェース(I/F)11と、演奏操作子1から入力された演奏データや、CPU5がシーケンサプログラムを実行することによって実現されるシーケンサ(図示せず)が自動伴奏データを再生して出力した演奏データ等を楽音信号に変換するとともに、その楽音信号に各種効果を付与するための音源・効果回路12と、該音源・効果回路12からの楽音信号を音響に変換する、たとえば、DAC(digital-to-analog converter)やアンプ、スピーカ等のサウンドシステム13とにより構成されている。
【0025】
上記構成要素3〜12は、バス14を介して相互に接続され、CPU5にはタイマ8が接続され、通信I/F11には外部機器100が接続され、音源・効果回路12にはサウンドシステム13が接続されている。
【0026】
演奏入力部1は、ユーザの押離鍵操作に応じて音高情報および強度情報を含む押離鍵情報を入力する鍵盤や、ユーザが発した音声を集音してアナログ音声信号に変換するマイクロフォン(以下、「マイク」と略して言う)等によって構成されている。
【0027】
入力I/F3は、鍵盤から入力された押離鍵情報を演奏データ、たとえばMIDIデータ(イベントデータ)に変換して、イベントデータを一時的に保存するためのイベントバッファ(図示せず)に格納したり、マイクから入力されたアナログ音声信号をデジタル音声信号(音声データ)に変換して、音声データを一時的に保存するための音声データバッファ(図示せず)に格納したりする。
【0028】
記憶装置10は、たとえば、フレキシブルディスク(FD)、ハードディスク(HD)、CD−ROM、DVD(digital versatile disc)、光磁気ディスク(MO)および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置10自体が本実施の形態の音楽データ生成装置から着脱可能であってもよい。あるいは、記憶媒体も記憶装置10も着脱不可能であってもよい。なお記憶装置10(の記憶媒体)には、前述のように、CPU5が実行する制御プログラムも記憶でき、ROM6に制御プログラムが記憶されていない場合には、この記憶装置10に制御プログラムを記憶させておき、それをRAM7に読み込むことにより、ROM6に制御プログラムを記憶している場合と同様の動作をCPU5にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【0029】
通信I/F11としては、たとえば、USB(universal serial bus)やIEEE1394などの汎用近距離有線I/F、Ethernet(登録商標)などの汎用ネットワークI/F、無線LAN(local area network)やBluetooth(登録商標)などの汎用近距離無線I/Fを挙げることができる。本実施の形態では、通信I/F11としてEthernetを採用し、通信I/F11には、インターネット上の外部記憶装置100、たとえば、サーバコンピュータに接続された外部記憶装置100が接続されている。サーバコンピュータ(の外部記憶装置100)は、本実施の形態では、コード譜データの供給元として機能するが、これに加えて、記憶装置10に前記各プログラムや各種パラメータが記憶されていなければ、その供給元として機能させてもよい。この場合、クライアントとなる演奏データ生成装置は、通信I/F11およびインターネットを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、インターネットを介して演奏データ生成装置へと配信し、演奏データ生成装置が通信I/F11を介して、これらプログラムやパラメータを受信して記憶装置10に蓄積することにより、ダウンロードが完了する。
【0030】
なお、本実施の形態の音楽データ生成装置は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ(PC)上に構築してもよい。また、鍵盤を必須の構成とせずに本発明を実現できるので、弦楽器タイプや管楽器タイプ等の形態を採用するようにしてもよい。さらに電子楽器に限らず、(鍵盤も外部接続されていない)汎用的なPCやスマートデバイス(smart device)、ゲーム機器などの電子機器にも本発明を適用することができる。
【0031】
以上のように構成された音楽データ生成装置が実行する制御処理を、まず図2を参照してその概要を説明し、次に図3図7を参照して詳細に説明する。
【0032】
図2は、本実施の形態の音楽データ生成装置によって生成された音楽データの一例を示す図である。音楽データとしては、本実施の形態では、コード譜表示データと自動伴奏データが生成される。同図には、生成されたコード譜表示データを前記表示部9のLCD上に表示したときのコード譜9aと、生成された自動伴奏データを再生したときの再生手順7aが記載されている。
【0033】
本実施の形態の音楽データ生成装置は、コード譜表示データを生成するときには、テキストベースのコード譜データを主に参照して生成する。一方、自動伴奏データを生成するときには、当該コード譜データを参照することに加え、伴奏スタイルデータに基づいて生成する。したがって、伴奏スタイルデータは、コード譜表示データを生成する際には必須の構成ではないが、本実施の形態の音楽データ生成装置は、コード譜表示データと自動伴奏データの両方を生成するようにしているので、伴奏スタイルデータも必須の構成、つまり選択設定しなければならないものとしている。もちろん、たとえば、コード譜表示データのみを生成する第1の動作モードと、自動伴奏データのみを生成する第2の動作モードを設け、動作モードをいずれかに切り替えることにより、選択された動作モードに割り当てられた方の音楽データのみを生成するようにしてもよい。
【0034】
ユーザが、たとえば、前記設定操作子2に含まれる、コード譜表示データ&自動伴奏データ生成処理の開始を指示するスイッチ(図示せず)を押すと、コード譜表示データ&自動伴奏データ生成処理が開始され、まず前記CPU5は、参照するテキストベースのコード譜データをどれにするかをユーザに問い合わせる。問い合わせの具体的な方法は、制御処理の詳細で後述する。
【0035】
参照するコード譜データ(参照元データ)は、本実施の形態では、前記通信I/F11およびインターネットを介して接続された外部記憶装置100に記憶されているものとする。つまり、参照元データは、外部記憶装置100を接続したサーバによって供給される。図2に記載されている、参照したテキストベースのコード譜(以下、「参照元コード譜データ」という)100aは、上記問い合わせに応じてユーザが選択したものである。
【0036】
同様にしてCPU5は、ユーザに対して、拍子情報の取得方法、伴奏スタイル名、生成するコード譜表示データへ付加する情報の種類および楽節情報の取得方法などをどうするか問い合わせる。この問い合わせに応じてユーザは、たとえば、拍子情報の取得方法として「選択された伴奏スタイルデータに設定された拍子を取得」、伴奏スタイル名として「Pop1」、生成するコード譜表示データへ付加する情報の種類として「小節番号、楽節名、参照元データの書誌情報、伴奏スタイル名」、楽節情報の取得方法として「参照元データから抽出」を選択したとする。
【0037】
このように、伴奏スタイル名として「Pop1」が選択されると、CPU5は、伴奏スタイル名「Pop1」の実体データ、つまり伴奏スタイルデータの記憶場所を検索し、読出し可能状態とする。「Pop1」の伴奏スタイルデータは、本実施の形態では、記憶装置10に記憶されているものとする。以下、この「Pop1」の伴奏スタイルデータを「伴奏スタイルデータ10a」という。
【0038】
以上の準備作業が終了すると、CPU5は、拍子情報を設定する。拍子情報の取得方法は、上述のように「選択された伴奏スタイルデータに設定された拍子を取得」が選択されているので、CPU5は、伴奏スタイルデータ10aの書誌情報から拍子情報(4/4)を読み出して、前記RAM7内に一時的に保存しておく。
【0039】
次にCPU5は、参照元コード譜データ100aに基づいてコード進行情報を生成する。参照元コード譜データ100a中、“|”から“|”までが1小節を示しているので、CPU5は、その間の文字列データを読み出し、読み出した文字列データに基づいて、1小節毎にコード情報(発生タイミング,コードルート,コードタイプ)を順次生成して行く。この「発生タイミング」の生成に、上記RAM7内に保存された拍子情報(と4分音符当たりのクロック数)が使用される。1小節毎のコード情報の生成を最後の小節まで行うと、コード進行情報が生成される。
【0040】
次にCPU5は、楽節情報を設定する。楽節情報の取得方法は、上述のように「参照元データから抽出」が選択されているので、設定対象の楽節情報は、参照元コード譜データ100aから抽出する。そして、生成するコード譜表示データへ付加する情報の種類のうち、楽節情報に関するものは、上述のように「小節番号、楽節名」が選択されているので、CPU5は、参照元コード譜データ100aから「小節番号、楽節名」を抽出する。参照元コード譜データ100a中、楽節名は“[”と“]”で囲まれた文字列データ(ただし、参照元コード譜データ100aでは「文字列」ではなく「1文字」)によって表されるので、CPU5は、当該文字列データを読み出すことで、楽節名を抽出する。一方、CPU5は、行末の“|”を除いて、先頭の“|”からその数を数えることで、小節番号を抽出(生成)する。
【0041】
さらに、生成するコード譜表示データへ付加する情報の種類のうち、楽節情報に関するもの以外は、上述のように「参照元データの書誌情報、伴奏スタイル名」が選択されているので、CPU5は、参照元コード譜データ100aから「タイトル」、「作曲者」および「調」を抽出し、「Pop1」の伴奏スタイルデータ10aから「伴奏スタイル名」を抽出する。
【0042】
CPU5は、このようにして生成または抽出されたコード進行情報、拍子情報、楽節情報、およびその他の付加情報を基に、コード譜表示データを生成して表示する。これにより、コード譜9aが表示部9のLCD上に表示される。
【0043】
またCPU5は、このようにして生成または抽出されたコード進行情報および楽節情報、さらに伴奏スタイルデータ10aを基に、自動伴奏データを生成して再生する。伴奏スタイルデータ10aが、たとえば、“Intro A”,“Main A”,“FillIn A A”,“Ending A”,“Intro B”,“Main B”,“FillIn B B”,“Ending B”および“FillIn AB”と“FillIn BA”などの複数セクションの伴奏パターンデータからなる場合、楽節情報も、参照元コード譜データ100aから“A”と“B”が抽出されるので、CPU5は、この楽節情報に基づいてセクションを自動的に切り替え(割り当て)、自動伴奏データを生成することができる。その具体例としては、楽節“A”には“Main A”セクションを割り当て、楽節“B”には“Main B”セクションを割り当て、また、生成する自動伴奏データの前後にセクションのバリエーションを考慮した“Intro A”セクションと“Ending B”セクションを付加し、さらに、セクション切り替え前の1小節に、セクションのバリエーションを考慮したいずれかの“FillIn **”(ただし、“*”は任意の文字、ここでは“A”か“B”のいずれか、を示している)セクションを挿入するという態様を挙げることができる。これにより、再生時に再生手順7aとなるような自動伴奏データが生成される。
【0044】
このように本実施の形態の音楽データ生成装置では、参照元データに拍子情報が含まれていなくても、生成する音楽データの拍子に合った拍子を他から取得して、その拍子のコード進行情報を生成し、さらにこのコード進行情報に基づいて音楽データを生成するようにしたので、生成する音楽データの拍子に合い、当該音楽データの生成に利用可能なコード進行情報を手軽に取得することができる。そして、コード進行情報は参照元データに基づいて自動的に生成されるので、コード入力の操作が簡易化され、効率的であり、さらに、コードに関する知識を持たないユーザでも、音楽データを生成することができる。
【0045】
また、コードに関する知識を持たないユーザでも、このようなコード進行情報を手軽にの取得できるようになると、結果として、音楽データ生成の基になる伴奏スタイルデータなどの音楽コンテンツデータの活用が増える。
【0046】
さらに本実施の形態では、参照元データに楽節記号(楽節名)が含まれている場合、楽節記号も抽出できるようにし、抽出した楽節記号を音楽データ(自動伴奏データ)の生成に活用したので、参照元データの持つ情報をより活かした音楽データの生成が可能になる。なお、参照元データには楽節記号が含まれていないことも多いため、生成したコード情報を基に楽節情報を抽出して、音楽データ生成時に参照すると、生成される音楽データがより充実したものとなる。
【0047】
次に、この制御処理を詳細に説明する。
【0048】
図3は、本実施の形態の音楽データ生成装置、特にCPU5が実行するコード譜表示データ&自動伴奏データ生成処理の手順を示すフローチャートである。
【0049】
本コード譜表示データ&自動伴奏データ生成処理は、主として、
(1)起動時処理(ステップS1,S2);
(2)必要情報設定処理(ステップS3);
(3)拍子情報設定処理(ステップS4);
(4)コード進行情報生成処理(ステップS5);
(5)楽節情報設定処理(ステップS6〜S8);
(6)その他情報抽出処理(ステップS9);
(7)コード譜表示データ生成&表示処理(ステップS10);
(8)自動伴奏データ生成&再生処理(ステップS12,S13)
(9)保存処理(ステップS16)
によって構成されている。
【0050】
本コード譜表示データ&自動伴奏データ生成処理は、ユーザによる起動指示に応じて起動される。起動指示は、具体的には、前記設定操作子2に含まれる所定のスイッチのオン操作や、表示部9のLCDがタッチパネル方式のものである場合に、その画面に表示されたボタンのタッチ操作などが考えられる。このように、物理的なスイッチのオン操作は、表示画面がタッチパネルで構成されている場合には、ソフトウェアによって表示画面上に表示されたボタン(以下、「ソフトウェアボタン」という)のタッチ操作に置き換えることができるので、以下、物理的なスイッチのオン(/オフ)操作のみが記載されていたとしても、これに代えて、あるいはこれとともに、ソフトウェアボタンのタッチ操作でもよいことが含まれるものとする。
【0051】
本コード譜表示データ&自動伴奏データ生成処理が起動されると、CPU5は、上記(1)の起動時処理を1回実行した後、上記(2)〜(7)の各処理を順次実行する。上記(7)のコード譜表示データ生成&表示処理が実行されると、表示部9のLCD上には、前記図2に示すようなコード譜9aが表示されるので、ユーザはこのコード譜9aを見て、(2)〜(6)の各処理でなされた各種設定を変更したいかどうか判断できる。ユーザが、たとえば、設定操作子2に含まれる所定のスイッチのオン操作により、設定変更を希望すると、CPU5は、処理を上記(2)の必要情報設定処理に戻して(ステップS11→S3)、(2)〜(7)の処理を繰り返し実行する。一方、ユーザが設定変更を希望しなれけば、CPU5は、処理を上記(8)の自動伴奏データ生成&再生処理に進める。この(8)自動伴奏データ生成&再生処理が実行されると、図2の再生手順7aに示すように、生成された自動伴奏データの再生がなされるので、ユーザは再生音を聞いて、(2)〜(6)の各処理でなされた各種設定を変更したいかどうか判断できる。ユーザが、上述のようにして設定変更を希望すると、CPU5は、処理を上記(2)の必要情報設定処理に戻して(ステップS14→S3)、(2)〜(7)の処理を繰り返し実行する。一方、ユーザが設定変更を希望しなれけば、CPU5は、ユーザに対して、生成したコード譜表示データおよび/または自動伴奏データの保存を希望するかどうかを問い合わせる(ステップS15)。その結果、ユーザが保存を希望したときには、CPU5は、処理を上記(9)の保存処理に進める(ステップS15→S16)一方、ユーザが保存を希望しないときには、CPU5は、本コード譜表示データ&自動伴奏データ生成処理を終了する(ステップS15→終了)。
【0052】
(1)起動時処理では、まずCPU5は、初期化処理(ステップS1)を実行する。この初期化処理では、CPU5は、前記RAM7上に次の各領域を確保して初期化する。すなわち、
必要情報格納領域:(2)必要情報設定処理によって設定される必要情報を格納するための領域である;
拍子情報格納領域:(3)拍子情報設定処理によって設定される拍子情報を格納するための領域である;
楽節情報格納領域:(5)楽節情報設定処理によって設定される楽節情報を格納するための領域である;
コード譜表示データ格納領域:(7)コード譜表示データ生成&表示処理によって生成されるコード譜表示データを格納するための領域である;
自動伴奏データ格納領域:(8)自動伴奏データ生成&再生処理によって生成される自動伴奏データを格納するための領域である;
の各領域を確保してクリアする。
【0053】
次にCPU5は、たとえば、ユーザの指示に応じて、前記通信I/F11を介して所定のサーバ、つまり前記外部記憶装置100が接続されたサーバにアクセスし、このサーバから外部記憶装置100が記憶している、テキストベースの各種コード譜データの(名称の)一覧情報を取得し、取得した一覧情報を表示部9のLCDに表示する。ユーザがその一覧の中からいずれかを選択すると、選択されたコード譜データを参照元データに設定する(ステップS2)。参照元データの候補の取得方法は、これに限らず、表示部9のLCD上に検索画面を表示し、ユーザがこの検索画面から、たとえば、曲名や作曲者名、その他の検索キーワードを入力して検索を指示すると、CPU5は、入力された検索キーワードをサーバに送信し、これに応じてサーバから送信されて来た検索結果の一覧を表示するという方法も考えられる。
【0054】
なお、参照元データの選択は、上記ステップS2でのみ可能であり、しかもステップS2は、本コード譜表示データ&自動伴奏データ生成処理が起動したときに1回のみ実行される本起動時処理に含まれるので、一旦選択した参照元データは、本コード譜表示データ&自動伴奏データ生成処理が実行中は変更することができない。つまり、一旦選択した参照元データを変更するには、本コード譜表示データ&自動伴奏データ生成処理を終了させてから再度起動させる必要がある。このように構成したのは、説明を簡略化するためであるので、本コード譜表示データ&自動伴奏データ生成処理が実行中でも、参照元データを自由に選択変更できる処理を、本起動時処理以外に加えるようにしてもよい。
【0055】
前記(2)必要情報設定処理では、CPU5は、ユーザによって選択された必要情報を前記必要情報格納領域に書き込むことで、必要情報を設定する。主な必要情報の種類:内容は、次の通りである。すなわち、
A1.拍子情報の取得方法:(3)拍子情報設定処理で参照される情報であり、ユーザ設定/選択された伴奏スタイルデータに設定された拍子を取得/参照元データから抽出などの選択肢から選択される;
A2.伴奏スタイル名:(8)自動伴奏データ生成&再生処理で基礎となる伴奏スタイルデータを特定するための情報(名称)であり、ROM6または記憶装置10(あるいは外部記憶装置100)に記憶されている各種伴奏スタイルデータの中から選択される;
A3.生成するコード譜表示データへ付加する情報の種類:コード進行の表示に加えて表示する情報の種類であり、小節番号や楽節名、伴奏スタイル名などの中から選択される;
A4.楽節情報の取得方法:(5)楽節情報設定処理で参照される情報であり、ユーザ設定/参照元データから抽出などの選択肢から選択される;
である。
【0056】
上記A1.〜A4.の各情報の設定方法としては、たとえば、各情報毎に複数の選択肢を表示し、その中からユーザが選択したものを設定する方法を採ればよいが、これに限られる訳ではない。
【0057】
前記(3)拍子情報設定処理は、(4)コード進行情報生成処理などで用いられる拍子情報を設定するための処理である。図4は、この拍子情報設定処理の詳細な手順を示すフローチャートである。
【0058】
本拍子情報設定処理では、CPU5は、前記必要情報格納領域に書き込まれたA1.拍子情報の取得方法の選択内容に従って、次のように処理を異ならせる。すなわち、A1.拍子情報の取得方法として、
(31)「ユーザ設定」が設定されている場合:表示部9のLCD上に拍子設定画面(図示せず)を表示し、この拍子設定画面に対するユーザ入力があると、このユーザ入力を受け付け、これによって指定された拍子情報を前記拍子情報格納領域に書き込むことで、「拍子情報」を設定する(ステップS21→S22);
(32)「選択された伴奏スタイルデータに設定された拍子を取得」が設定されている場合:必要情報格納領域に書き込まれた前記A2.の「伴奏スタイル名」が示す伴奏スタイルデータの持つ拍子情報を取得し(図2の伴奏スタイルデータ10aが示すように、伴奏スタイルデータは通常、拍子情報を持っている)、取得した拍子情報を拍子情報格納領域に書き込むことで、「拍子情報」を設定する(ステップS23→S24);
(33)「参照元データから抽出」が設定されている場合:参照元データ中の“/”を挟む2つの数字の組を抽出し(ステップS23→S25);
(331)1組以上が抽出された場合:複数組抽出されたときには、出現が最多の数字の組み合わせを基に拍子情報を決定する一方、1組抽出されたときには、その数字の組み合わせを基に拍子情報を決定し、決定した拍子情報を拍子情報格納領域に書き込むことで、「拍子情報」を設定する(ステップS26→S27);
(332)1組も抽出されなかった場合:上記(31)の場合の処理と同様の処理によって「拍子情報」を設定する(ステップS26→S28)。
【0059】
なお、上記(31)および(332)の場合の処理で、拍子設定画面を表示する際、その時点で生成されている拍子情報があれば、拍子設定画面に反映させておく。また、上記(332)の場合の処理はこれに限らず、上記(32)の場合の処理と同様の処理を行うようにしてもよいし、対応する曲データがあれば、その曲から抽出した拍子情報を設定するようにしてもよいし、デフォルトの拍子情報を設定するようにしてもよい。
【0060】
なお本拍子情報設定処理では、1つの拍子情報を設定するようにしたが、複数個の拍子情報を設定するようにしてもよい。
【0061】
図3に戻り、前記(4)のコード進行情報生成処理は、参照元データからコード進行情報を生成するものである。本コード進行情報生成処理では、前記拍子情報格納領域に格納された拍子情報、つまり前記(3)拍子情報設定処理によって設定された拍子情報を使用するが、説明を簡単化するため、設定された拍子情報は1つであり、本コード進行情報生成処理の途中で、拍子情報は、設定された1つから変動しないものとする。なお、本コード進行情報生成処理についての説明は、前記図2の参照元コード譜データ100aに基づいて具体的に行うことにする。
【0062】
図5は、本コード進行情報生成処理の詳細な手順を示すフローチャートであり、本コード進行情報生成処理は、大きく分けて、
(41)参照元データから各小節に含まれるテキストデータ列を読み出し、領域(配列)Bar[ ] に記憶する小節内文字列取得処理(ステップS31〜S41);
(42)領域Bar[ ] に記憶されたテキストデータ列に基づいて各小節毎のコード情報を生成し、領域(配列)Chord[ ]に記憶するコード進行情報取得処理(ステップS42〜S46);
によって構成されている。
【0063】
上記(41)の小節内文字列取得処理では、まずCPU5は、初期化処理(ステップS31)を実行する。この初期化処理では、CPU5は、前記RAM7上に次の各領域を確保して初期化する。すなわち、
ポインタ(領域):参照元データ中の各テキストデータ(具体的には、文字コードデータ(典型例としては、ASCII))の位置を示すために設けられた領域である;
Data(領域):参照元データ中、ポインタの示す1文字分のテキストデータを一時的に保存する領域である;
Bar[ ] (配列):参照元データ中の各小節に含まれるテキストデータ列を記憶する領域(配列)である;
小節番号カウンタ:小節番号を示すためにカウントするソフトウェアカウンタ(カウント領域)であり、このカウント値によって示される番号を、以下「小節番号」という;
の各領域を確保してクリアする。
【0064】
次にCPU5は、ポインタが参照元データの先頭を指すようにポインタ値をセットする(ステップS32)。そしてCPU5は、ポインタによって示される位置のテキストデータを1文字分取得し(ステップS33)、取得した1文字分のテキストデータをDataに保存する(ステップS34)。
【0065】
次にCPU5は、小節線“|”を示すテキストデータがDataに保存されるまで、つまり、参照元データから小節線“|”を示すテキストデータが読み出されるまで、ポインタを“1”ずつ進めながら、参照元データからテキストデータの読み出しを続ける(ステップS36→S41→S33→S34→S35→S36)。
【0066】
参照元データから小節線“|”を示すテキストデータが読み出されると、CPU5は、小節番号カウンタを“1”インクリメントし(ステップS37)、ポインタを“1”ずつ進めながら、次の小節線“|”までのテキストデータを読み出し、“|”と「スペース」を示すテキストデータは除外してBar[小節番号] に記憶する(ステップS38)。そしてCPU5は、ポインタによって示される位置のテキストデータの次に「改行」を示すテキストデータが出るまで、つまり、1行の末尾を示す「改行」の1つ前の位置をポインタが示すまで、上記ステップS37およびS38の処理を繰り返す(ステップS40→S37→S38→S39→S40)。ポインタによって示される位置のテキストデータの次に「改行」を示すテキストデータが出ると、CPU5は、処理をステップS40から前記ステップS41に進める。
【0067】
本コード進行情報生成処理が起動後、初めてステップS37に入ってから初めてステップS40を抜けるまでの処理により、図2の参照元コード譜データ100a中、第4行目のテキストデータ(“|”と「スペース」を除いたもの)、つまり“C”,“CF”,“FG7”および“C_G7C”がそれぞれ、Bar[1] ,Bar[2] ,Bar[3] およびBar[4] に記憶される。
【0068】
ステップS33〜S41の処理が繰り返されている間に、ポインタによって示される位置が参照元データの末尾に至った場合には、CPU5は、処理を前記(42)のコード進行情報取得処理に進める(ステップS35またはS39→S42)。この結果、参照元コード譜データ100a中、第5,7および8行目のテキストデータも、Bar[5] 〜Bar[16] に記憶される。
【0069】
(42)コード進行情報取得処理では、まずCPU5は、RAM7上にソフトウェアカウンタ領域N(以下、「カウンタN」という)を確保し、カウンタNに“1”をセットする(ステップS42)。カウンタNも、小節番号カウンタと同様に、小節番号をカウントするものであるが、小節番号カウンタと異なり、“1”から最大、小節番号カウンタの現在のカウント値までしかカウントしない。
【0070】
次にCPU5は、コード情報を小節毎に格納する領域(配列)Chord[ ]を「小節番号」分、RAM7上に用意する(ステップS43)。各Chord[ ]は、当該コード情報の時間情報(発生タイミング)を格納する領域(配列)ChdTime、当該コード情報のルートを格納する領域(配列)ChdRootおよび当該コード情報のタイプを格納する領域(配列)ChdTypeによって構成されている。
【0071】
そしてCPU5は、カウンタNのカウント値>「小節番号」になるまで、コード情報生成処理(ステップS45)とカウンタNのインクリメント(ステップS46)を繰り返す(ステップS44→S45→S46→S44)。
【0072】
図6は、このコード情報生成処理の詳細な手順を示すフローチャートであり、本コード情報生成処理は、主として、
(421)Chord[N]に対してChdRootとChdTypeを登録する登録処理(ステップS51,S52);
(422)N小節目(カウンタNのカウント値によって示される小節目)の「拍数」と「1拍当たりのクロック数」を算出する算出処理(ステップS53);
(423)Bar[N]の 中にコード位置調整記号“_”が含まれていない場合に、Chord[N]に対してChdTimeを登録する登録処理(ステップS55〜S57);
(424)Bar[N] の中にコード位置調整記号“_”が含まれている場合に、Chord[N]に対してChdTimeを登録する登録処理(ステップS58〜S60);
(425)ChdTimeが拍点に一致しない場合に、ChdTimeを変更して拍点に一致させる変更処理(ステップS62);
(426)ChdTimeを必要に応じて調整する適宜調整処理(ステップS63);
によって構成されている。
【0073】
上記(421)の登録処理では、CPU5は、Bar[N] を分析し、コードルートになり得る音名と、コードタイプになり得る文字列の組を順番にすべて抽出する(ステップS51)。ここで、コードルートになり得る音名の判断基準は、たとえば、アルファベットの大文字であることであり、コードタイプになり得る文字列の判断基準は、たとえば、アルファベットの小文字と算用数字であることである。もちろん、これに限らない。その具体的な判断基準の例としては、
コードルートになり得る音名の判断基準:A〜Gの大文字に加え、A〜Gの大文字で始まり“♭”または“#”で終わる2文字の文字列もコードルートと判定;
コードタイプになり得る文字列の判断基準:上記コードルートの次の文字を出発点とし、出発点からカウントして行き、最初に現れるスペース/コード位置調整記号/次のコードルート/その他楽節記号の1文字前までの文字列区間をコードタイプと判定;
を挙げることができる。
【0074】
今、カウンタN=“2”であるとすると、Bar[2] には、前述のように“CF”が記憶されているので、コードルートになり得る音名として順に“C”と“F”が抽出され、コードタイプになり得る文字列の組として順に“maj”と“maj”が抽出される。ただし“maj”は、Bar[2] には(省略されて)記憶されていないので、「抽出」ではなく「生成」される。別の例として、カウンタN=“4”であるとすると、Bar[4] には、前述のように“C_G7C”が記憶されているので、コードルートになり得る音名として順に“C”と“G”と“C”が抽出され、コードタイプになり得る文字列の組として順に“maj”と“7”と“maj”が抽出される。
【0075】
次にCPU5は、抽出した順にコード情報(ChdTimeは未定、ChdRootとChdTypeは確定)を生成し、Chord[N]に登録する(ステップS52)。上記例で、カウンタN=“2”の場合には、(−,C,maj)と(−,F,maj)(ただし、カッコ内は(ChdTime,ChdRoot,ChdType)を意味し、“−”は「未定」を意味する)の2つのコード情報が生成され、Chord[2]に登録される。またカウンタN=“4”の場合には、(−,C,maj)と(−,G,7)と(−,C,maj)の3つのコード情報が生成され、Chord[4]に登録される。
【0076】
上記(422)の算出処理では、CPU5は、拍子情報と4分音符当たりのクロック数より、N小節目の「拍数」と「1拍当たりのクロック数」を算出する(ステップS53)。ここで、「拍子情報」は、前述のように(3)拍子情報設定処理によって設定されたものであり、「4分音符当たりのクロック数」は、予め決まっている(たとえば“480”)ものとする。また「N小節目」とは、カウンタNのカウント値によって示される番目の小節を意味する。今、拍子情報として“4/4”が設定されているとすると、上記算出処理により、「拍数」として“4”が、「1拍当たりのクロック数」として“480”が算出される。
【0077】
次にCPU5は、Bar[N] の中にコード位置調整記号“_”が含まれているかどうかを判定し(ステップS54)、含まれていないときには、処理を前記(423)の登録処理に進める一方、含まれているときには、処理を前記(424)の登録処理に進める。
【0078】
(423)の登録処理では、まずCPU5は、Chord[N]の先頭のコード情報のChdTimeに“0”をセットする(ステップS55)。
【0079】
次にCPU5は、次式の演算を行うことによって「コード間隔」を算出する(ステップS56)。
【0080】
「コード間隔」=「1拍当たりのクロック数」×「拍数」/(Chord[N]に登録されたコード情報の数)
そしてCPU5は、Chord[N]に先頭以降のコード情報が登録されていれば順に、1つ前のコード情報のChdTimeから「コード間隔」離した時間を当該コード情報のChdTimeに設定する(ステップS57)。具体的には、カウンタN=“2”の場合、先頭のコード情報(−,C,maj)のChdTime(“−”)に“0”がセットされ、次のコード情報(−,F,maj)のChdTime(“−”)に「コード間隔」離した時間(=“960”)がセットされるので、Chord[2]には、先頭のコード情報として(0,C,maj)が登録され、次のコード情報として(960,F,maj)が登録されることになる。
【0081】
一方、(424)の登録処理では、まずCPU5は、Bar[N] を分析し、Chord[N]に登録された各コード情報について順に、「ずらす拍数」を検出する(ステップS58)。具体的には、着目しているコード情報のルート音名に当たるテキストデータまでの“_”の連続数を検出することで、「ずらす拍数」を検出する。ただしこの場合、1つの“_”が1拍分に相当するものとする。
【0082】
次にCPU5は、Chord[N]の先頭のコード情報のChdTimeに「1拍当たりのクロック数」×「ずらす拍数」をセットする(ステップS59)。
【0083】
そしてCPU5は、Chord[N]に先頭以降のコード情報が登録されていれば順に、1つ前のコード情報のChdTimeから(「1拍当たりのクロック数」離した時間+「1拍当たりのクロック数」×(当該コード情報の)「ずらす拍数」離した時間)を当該コード情報のChdTimeにセットする(ステップS60)。具体的には、カウンタN=“4”の場合、Bar[4] には“C_G7C”が記憶されているので、つまり、“_”はChord[4]に登録された第2番目のコード情報の前に位置するので、ステップS58では、Chord[4]に登録された第2番目のコード情報について「ずらす拍数」が1拍分検出される。したがってこの場合、先頭のコード情報(−,C,maj)のChdTime(“−”)に“0”がセットされ、次のコード情報(−,G,7)のChdTime(“−”)に1つ前のコード情報のChdTime(=0)から「1拍当たりのクロック数」離した時間(=480)+「1拍当たりのクロック数」×「ずらす拍数」(=1)離した時間(=480)(演算結果=960)がセットされ、最後のコード情報(−,C,maj)のChdTime(“−”)に1つ前のコード情報のChdTime(=960)から「1拍当たりのクロック数」離した時間(=1440)がセットされるので、Chord[4]には、先頭のコード情報として(0,C,maj)が登録され、次のコード情報として(960,G,7)が登録され、最後のコード情報として(1440,C,maj)が登録されることになる。
【0084】
次にCPU5は、Chord[N]のコード情報の中にChdTimeが「1拍当たりのクロック数」の倍数でない(拍点でない)コード情報があるかどうかを判定し(ステップS61)、当該コード情報があれば、処理を前記(425)の変更処理に進める(ステップS62)一方、当該コード情報がなければ、処理を前記(426)の適宜調整処理に進める(ステップS63)。
【0085】
(425)変更処理では、CPU5は、ChdTimeが拍点でないコード情報のChdTimeを、隣のコード情報のChdTimeと一致せず、かつコード進行が変わらない、いずれかの拍点位置に変更する。たとえば、「拍子情報」として“4/4”、「1拍当たりのクロック数」として“480”が設定され、Chord[N]に(0,D,min),(640,G,7),(1280,C,maj)の3つのコード情報が登録されていたとすると、ChdTime“640”と“1280”はいずれも拍点ではないので、それぞれ“480”(2拍目)と“960”(3拍目)に変更される。ただしこの場合、変更対象のコード情報に隣接する2つの拍点のうち、早いタイミングの拍点を選択するというルールを採用している。これとは別のルールとして「最寄りの拍点を選択する」ルールを採用すると、ChdTime“640”と“1280”はそれぞれ、“960”と“1440”に変更される。
【0086】
このように発生タイミングが拍点に変更されたコード進行情報に基づいて、音楽データを生成すると、生成された音楽データでは、コードチェンジは自然な位置で起こるよう自動的に調整されるので、聴感上あるいは表示上、自然な音楽の流れが得られる。したがって、ユーザはコード進行情報を取得する元のコード譜に想定されている拍子を気にしなくてもよい。
【0087】
なお本実施の形態では、Chord[N]のコード情報の中にChdTimeが拍点でないコード情報があるときには常に、(425)変更処理が実行されるようにしたが、たとえば前記(2)必要情報設定処理によって設定される必要情報の項目に、「コードタイミングを拍点に合わせる/合わせない」を選択できる項目を用意し、ユーザが「合わせる」を選択したときにのみ、(425)変更処理が実行されるようにしてもよい。また、選択項目を「拍点に合わせる/合わせない」だけでなく、「所定のタイミング(2拍、8分音符単位、16分音符単位、…など)」に合わせる」が用意されていてもよい。「所定のタイミングに合わせる」が選択されている場合は、各コードのタイミングを所定の単位に合うように調整すればよい。
【0088】
(426)適宜調整処理では、CPU5は、選択されている伴奏スタイルデータの伴奏パターンデータ(複数パート)に各Chord[N]を順に割り当てたときに、伴奏パターンデータ(伴奏スタイルデータ)の持つリズム(シンコペーションやスウィングなど)に合うようなコードチェンジタイミングの調整幅を検出し、各Chord[N]内の各コード情報のChdTimeを必要に応じて調整する。たとえば、伴奏パターンデータが8分音符でシンコペーションしている場合、1拍目に割り当てられるコード情報を8分音符長ほど早める(この場合、データ的にマイナス値が入ってもよい)。なお、調整幅の検出は、伴奏スタイルデータ毎あるいはジャンル毎に調整幅を規定したテーブルデータを用意し、このテーブルデータを検索して検出してもよいし、当該伴奏パターンデータ(伴奏スタイルデータ)を分析して検出してもよい。また、この適宜調整処理は、省略するようにしてもよい。このため、ステップS63の枠は破線で描かれている。また、この適宜調整処理を省略するかしないかをユーザが任意に設定できるようにしてもよい。
【0089】
なお、コードチェンジは拍点で起こることが多いが、曲そのもののリズム(選択した伴奏スタイルデータも含む)によっては、拍点からずれることもある。たとえば、スウィングの場合、拍点や音符単位で割り当てたコードチェンジタイミングから若干遅れたタイミングでコードチェンジする方がスウィングらしい演奏になることがある。「若干の遅れ」はスウィング比率などのパラメータで、たとえば伴奏スタイルデータに対応付けて設定されていてもよいし、伴奏パターンデータ内の音符イベントデータを分析して発音タイミングの拍点からのずれなどから算出するようにしてもよい。選択した伴奏スタイルデータの種類によっては、コードチェンジをするタイミングを拍点や音符単位のクオンタイズの位置からずらした方が、より伴奏スタイルデータのリズム感に合った演奏データが得られる場合がある。
【0090】
また、たとえば、8分でシンコペーションしているような曲であっても、そのコード譜は、小節線の8分音符前にコード名を書くのではなく、小節頭もしくは2拍目以降の拍頭にコード名を書くのが通常であるが、再生時には表記のタイミングではなく表記されたタイミングよりも8分音符早いタイミングでコードチェンジする方が自然である。このような場合に備えて、たとえば使用している伴奏スタイルデータの伴奏パターンデータの音符イベントデータの発音タイミングを分析すると、何分音符のシンコペーションか判定できるので、コード進行情報生成時に各コード情報のタイミング情報を判定したシンコペーションに合うように調整するとよい。もしくは、伴奏スタイルデータに限らず、再生時に合わせる他パートの演奏データ(たとえばユーザ演奏データ)の持つリズムにコードチェンジタイミングを合わせるようにしてもよい。
【0091】
なお本コード進行情報生成処理では、小節単位でコード進行情報を生成するようにしたが、各コード情報の持つ時間情報(発生タイミング)に小節情報も含めるようにすれば、1曲分まとめて管理することができる。
【0092】
図3に戻り、前記(5)の楽節情報設定処理は、コード譜表示データを生成するための基礎となる楽節情報を設定するための処理である。この楽節情報設定処理によって設定される楽節情報を取得する方法として、本実施の形態では「ユーザ設定」と「参照元データからの抽出」の2種類から選択することができるようになっている。本楽節情報設定処理が起動する時点では、既に前記(2)の必要情報設定処理により、いずれかの取得方法が選択されて、必要情報格納領域に書き込まれている。
【0093】
本楽節情報設定処理が起動されると、CPU5は、楽節情報の取得方法として「ユーザ設定」が選択されているかどうかを判定する(ステップS6)。この判定の結果、「ユーザ設定」が選択されているときには、CPU5は、表示部9のLCD上に楽節設定画面(図示せず)を表示し、この楽節設定画面に対するユーザ入力があると、このユーザ入力を受け付け、これによって指定された楽節情報を前記楽節情報格納領域に書き込むことで、「楽節情報」を設定する(ステップS6→S7)。なお、楽節設定画面を表示する際、その時点で生成されている楽節情報があれば、楽節設定画面に反映させておく。
【0094】
一方、ステップS6の判定の結果、「参照元データからの抽出」が選択されているときには、CPU5は、楽節情報生成処理を実行する(ステップS6→S8)。
【0095】
図7は、この楽節情報生成処理の詳細な手順を示すフローチャートである。本楽節情報生成処理では、前記必要情報格納領域に書き込まれた「生成するコード譜表示データへ付加する情報の種類」のうち、楽節情報に関するものを抽出して、RAM7上に確保したリストSection(図示せず)に登録する。今、当該楽節情報に関するものとして「小節番号」と「楽節名」が設定されているとして、本楽節情報生成処理では「小節番号」と「楽節名」を生成する。なお、本楽節情報生成処理は、参照元コード譜データ100aを参照元データとする場合の一例である。すなわち、参照元データとして考えられるものすべてについて適正に動作するものではない。
【0096】
本楽節情報生成処理は、主として、
(51)初期化処理(ステップS71〜S73);
(52)楽節名位置情報を生成してLine[ ]に登録する楽節名位置情報登録処理(ステップS75);
(53)小節位置情報を生成してLine[ ]に登録する小節位置情報登録処理(ステップS77);
(54)楽節情報を生成してリストSectionに登録する楽節情報登録処理(ステップS80〜S87);
によって構成されている。
【0097】
本楽節情報生成処理が起動されると、CPU5は、上記(51)の初期化処理を1回実行した後、参照元データの第1行から最終行まで、行番号を“1”ずつ増やしながら、各行毎に適宜、上記(52)および(53)の登録処理を実行する。そして、最終行に対する(52)および(53)の登録処理が終了すると、CPU5は、上記(54)の登録処理を実行し、本楽節情報生成処理を終了する。
【0098】
(51)初期化処理では、まずCPU5は、参照元データ内の楽節名位置情報と小節位置情報のリストを行単位で記憶する領域(配列)Line[ ]を1〜最終行分、RAM7上に用意する(ステップS71)。ここで「最終行」は、たとえば、参照元データを分析し、「改行」を数えることにより取得することができる。楽節名情報は“[”と“]”で囲まれた文字列データによって表される(図2の参照元コード譜データ100a参照)ので、楽節名位置情報は、当該行の先頭から“[”までの文字数と、楽節名(を表す文字列データ)の組、つまり(先頭からの文字数,楽節名)として生成される。また小節線情報は、前述のように“|”によって表されるので、小節位置情報は、当該行の先頭から“|”までの文字数と、各行の末尾の“|”を除いた上で、その“|”が参照元データの最初の“|”から何個目であるかを示す情報(小節番号)の組、つまり(先頭からの文字数,小節番号)として生成される。
【0099】
次にCPU5は、行番号をカウントするためのソフトウェアカウンタ(カウント領域)である行番号カウンタをRAM7上に確保し、行番号カウンタに“1”をセットする(ステップS72)。このカウント値によって示される番号を、以下「行番号」という。
【0100】
さらにCPU5は、小節番号をカウントするためのソフトウェアカウンタ(カウント領域)である小節番号カウンタをRAM7上に確保し、小節番号カウンタに“0”をセットする(ステップS73)。このカウント値によって示される番号を、以下「小節番号」という。なお小節番号カウンタは、前記(4)コード進行情報生成処理内でも用いたが、同じ名称で、同じ働きをするものの、使用する処理が異なるため、RAM7上の別々の領域に確保される。
【0101】
(51)初期化処理が終了すると、CPU5は、参照元データの「行番号」目のテキストデータに楽節名情報が含まれているかどうかを判定する(ステップS74)。楽節名情報は、前述のように“[”と“]”で囲まれた文字列データによって表されるので、ステップS76の判定では、「行番号」目の参照元データにこのような文字列データが存在するかどうかを判定する。この判定の結果、楽節名情報が含まれていれば、CPU5は、処理を前記(52)の楽節名位置情報登録処理に進める。
【0102】
この(52)楽節名位置情報登録処理では、CPU5は、「行番号」目のテキストデータを分析し、見つかった各“[”を基に楽節名位置情報(先頭からの文字数,楽節名)を生成し、Line[行番号]の末尾に記憶する(ステップS75)。1行のテキストデータ中に、複数の楽節名情報が含まれることもあり得るが、本実施の形態では説明の都合上、1行のテキストデータ中には、楽節名情報は、多くても1つのみ含まれることにする。
【0103】
一方、ステップS74の判定の結果、楽節名情報が含まれていなければ、CPU5は、当該「行番号」目のテキストデータに小節線情報が含まれているかどうかを判定する(ステップS76)。この判定の結果、小節線情報が含まれていれば、CPU5は、処理を前記(53)の小節位置情報登録処理に進める。
【0104】
この(53)小節位置情報登録処理では、CPU5は、当該「行番号」目のテキストデータを分析し、行末尾の“|”以外の“|”をすべて探し、見つかった各“|”毎に、小節番号カウンタを“1”インクリメントし、小節位置情報(先頭からの文字数,小節番号)を順に生成し、Line[行番号]の末尾に記憶する(ステップS77)。
【0105】
一方、ステップS76の判定の結果、小節線情報が含まれていなければ、CPU5は、「行番号」が最終行であるかどうかを判定する(ステップS78)。この判定の結果、最終行でなければ、CPU5は、行番号カウンタを“1”インクリメントした(ステップS79)後、処理を前記ステップS74に戻す一方、最終行であれば、CPU5は、処理を前記(54)の楽節情報登録処理に進める。
【0106】
この(54)楽節情報登録処理では、CPU5は、前記リストSectionをRAM7上に用意し(ステップS80)、行番号カウンタに“1”をセットする(ステップS81)。
【0107】
次にCPU5は、Line[行番号]に楽節名位置情報が記憶されているかどうかを判定する(ステップS82)。この判定の結果、楽節名位置情報が記憶されていなければ、行番号カウンタを“1”ずつ増加させながら(ステップS84)、上記ステップS82の判定を繰り返す(ステップS82→S83→S84→S82)。この間に、「行番号」が最終行に至ると、CPU5は、本楽節情報登録処理を終了させる(ステップS83→リターン)。
【0108】
一方、ステップS82の判定の結果、楽節名位置情報が記憶されていれば、CPU5は、Line[行番号+1]〜Line[最終行]の各テキストデータの中から、当該楽節名に対応する小節位置情報が記憶されているLine[行番号+α]を探し、当該楽節名位置情報中の「先頭からの文字数」と同じか最も近い「先頭からの文字数」を持つ「小節位置情報」の「小節番号」をLine[行番号+α]から抽出し、楽節情報(「小節番号」,「楽節名」)を生成し、リストSectionの末尾に記憶する(ステップS85)。
【0109】
次にCPU5は、「行番号+α」は最終行であるかどうかを判定し(ステップS86)、最終行であれば、本楽節情報生成処理を終了させる(ステップS86→リターン)一方、最終行でなければ、行番号カウンタのカウント値に(α+1)を加算して(ステップS87)、処理を前記ステップS82に戻す。
【0110】
参照元コード譜データ100aを本楽節情報登録処理に適用した場合、リストSectionには、(1,A)と(9,B)が登録される。
【0111】
図3に戻り、前記(6)のその他情報抽出処理は、前記必要情報格納領域に書き込まれた「生成するコード譜表示データへ付加する情報の種類」のうち、楽節情報に関するもの以外を抽出する処理である。本その他情報抽出処理では、CPU5は、その他付加すると設定された各種情報を参照元データや伴奏スタイルデータから抽出する。なお、本その他情報抽出処理の具体例は、制御処理の概要で前述したので、ここでは繰り返さない。
【0112】
前記(7)コード譜表示データ生成&表示処理では、(4)コード進行情報生成処理によって生成されたコード進行情報、(3)拍子情報設定処理によって設定された拍子情報、(5)楽節情報設定処理によって設定された楽節情報、および(6)その他情報抽出処理によって抽出されたその他の付加情報に基づいてコード譜表示データを生成し、生成したコード譜表示データを前記コード譜表示データ格納領域に格納するとともに、表示部9のLCD上に表示する。図2のコード譜9aは、参照元コード譜データ100aおよび伴奏スタイルデータ10aに基づいて生成したコード譜表示データを生成した一例を示している。なお、表示部9のLCDに表示されたコード譜表示データは、表示画面上で、そのコード進行情報や拍子情報、楽節情報などをユーザが修正できるようにしてもよい。
【0113】
前記(8)自動伴奏データ生成&再生処理では、CPU5は、生成されたコード進行情報および選択設定された伴奏スタイルデータ等に基づいて自動伴奏データを生成し(ステップS12)、生成した自動伴奏データを前記自動伴奏データ格納領域格納するとともに、前記シーケンサに出力し、シーケンサを介して再生する(ステップS13)。参照元コード譜データ100aおよび伴奏スタイルデータ10aに基づいて自動伴奏データを生成した場合、たとえば、再生時に再生手順7aとなるような自動伴奏データが生成される。この自動伴奏データを生成する方法については、制御処理の概要で詳述したので、ここでは繰り返さないが、生成される自動伴奏データのデータ形式について説明する。自動伴奏データは、本実施の形態では、設定された伴奏スタイルデータを構成する複数セクションから、どのセクションの伴奏パターンデータを演奏(再生)に使用し、これらをどの順序で演奏し、生成されたコード進行情報のどの小節のコード(進行)をどのセクションの伴奏パターンデータの演奏に使うかなどを対応付けた形式のデータによって構成される。したがって、伴奏パターンデータは、MIDI形式のデータを想定しているが、自動伴奏データは、MIDI形式のデータではない。前記シーケンサは、このようなデータ形式の自動伴奏データを再生して、演奏データ(イベントデータ)を生成し、前記音源・効果回路12に出力する。なお、シーケンサが自動伴奏データに対して行う再生処理は、本発明の特徴ではなく、公知の方法を用いればよいので、その説明は省略する。
【0114】
なお、本自動伴奏データ生成&再生処理では、自動伴奏データが生成されると直ぐに、その再生がなされるが、前記設定操作子2内に再生開始スイッチ(図示せず)を設け、ユーザが再生開始スイッチをオン操作したときに、再生が開始されるようにしてもよい。この場合、再生停止スイッチ(図示せず)も設けるようにし、ユーザが自由に再生を停止できるようにした方が好ましい。
【0115】
前記(9)保存処理では、CPU5は、生成したコード譜表示データと自動伴奏データ、つまり、コード譜表示データ格納領域に格納されているコード譜表示データと自動伴奏データ格納領域に格納されている自動伴奏データで、ユーザが保存を指示したものについて、名前を付けて、たとえば前記記憶装置10に保存する。
【0116】
なお、本コード譜表示データ&自動伴奏データ生成処理では、途中で処理を終了することはできないが、これも説明を簡単化するためであるので、設定操作子2内に終了スイッチ(図示せず)を設け、ユーザが終了スイッチをオン操作したときに、終了処理を行った後、本コード譜表示データ&自動伴奏データ生成処理を終了するようにしてもよい。終了処理としては、たとえば、上記(9)保存処理と同様の処理を行えばよい。
【0117】
なお本実施の形態では、音楽データを生成する一例として、伴奏スタイルデータを使った自動伴奏データを生成する場合について説明したが、これに限らず、たとえば、リズムのテンプレート(あるいはパターンデータ)を用意し、取得したコード進行情報を参照してコード構成音など音楽的に調和する音高を使いアレンジデータを生成する場合にも、あるいは、ユーザの好みの楽曲のメロディ譜とコード譜から情報を取得し、コード名付き楽譜データを生成する場合にも、本発明を適用することができる。
【0118】
また本実施の形態では、伴奏スタイルデータ(セクション)に含まれる伴奏パターンデータは、MIDI形式のデータを想定しているが、オーディオ形式のデータ(オーディオ波形データ)であってもよいし、一部(のパート)にオーディオ形式のデータが含まれていてもよい。オーディオ波形データが使われている場合には、公知の波形分析技術で音符の発音タイミングを抽出すればよい。
【0119】
さらに、コード譜データ(参照元データ)のフォーマットは、本実施の形態で用いられたものに限らない。たとえば、小節線は、一般的には“|”で表されるが、他のものでもよい。また、アルファベット大文字のコードルートと、アルファベット小文字と(半角)数字の組み合わせのコードタイプによってコードネームが表されているが、たとえば、コードタイプはカタカナで表されていてもよい。または、調情報が含まれている場合であれば、度数表記のディグリーネームでコードが表されていてもよい。その場合は、コード情報の取得時に変換すればよい。
【0120】
なお本実施の形態では、参照元データは、インターネット上のサーバ(Webサイト)にあるものとしたが、本実施の形態の音楽データ生成装置内、つまりROM6や記憶装置10内に記憶されたものであってもよい。
【0121】
また本実施の形態では、コード情報の時間情報(発生タイミング)は、既にテンポを考慮した再生時刻そのものとしたが、これに限らず、1小節1拍目といった、再生テンポによって再生時刻が変わる相対時間であってもよい。
【0122】
さらに本実施の形態では、参照するコード譜をユーザが編集/更新できるようには構成されていないが、コード進行情報を生成する前に、参照するコード譜をユーザが編集/更新できるようにしてもよい。
【0123】
拍子情報の取得方法は、本実施の形態で挙げたものの他に、メロディあるいはその他のパートとして使おうとしている元の楽譜データや曲データから取得/基になる曲データ(MIDI/オーディオデータ)を分析して拍子を検出/ジャンルの指定(ジャンルと拍子のテーブル設定)などの方法がある。
【0124】
各コード情報の発生タイミングを拍点に合わせる方法は、本実施の形態で説明した方法に限らず、音楽データ生成の入力情報として基になる曲データ(伴奏スタイルデータの伴奏パターンデータも含む)を分析して小節線および拍点を抽出し、コード情報の発生タイミングを合わせる方法でもよい。
【0125】
コード譜データから生成されるコード進行情報を使って生成される音楽データとしては、本実施の形態で説明したものの他、たとえば、コード譜に対応する元曲データにコードネームを付けた楽譜やアレンジデータなどが考えられる。また、コード譜を参照して、コードに対応する和音を表示した楽譜、タブ譜、あるいは、たとえばタイプをカタカナ表記に変えたコード譜、可能な限りテンションを付けるまたはダイアトニックコードとセカンダリードミナントコードで収まるように変換したコード譜(拍子を想定して)なども考えられる。
【0126】
なお本実施の形態では、生成した音楽データ、抽出したコード進行情報や楽節情報、設定した拍子情報をユーザが編集することには言及されていないが、編集可能に構成してもよい。
【0127】
楽節情報は、本実施の形態では、楽節情報の取得方法に設定された方法に従って、設定あるいは取得するようにしたが、これに限らず、参照元データに記載されている場合はテキストデータから取得してもよいし、さらに、抽出したコード進行情報を見てユーザが楽節情報を追加してもよい。また、参照元データに楽節記号が含まれていない場合は、当該参照元データから抽出したコード進行情報を分析して楽節情報を自動抽出するとよい。たとえば、4小節単位で仮の楽節情報を生成し、隣接する4小節区間のコード進行を比較し、始めから3小節以上同じであれば1つの楽節にまとめる、などが考えられる。楽節情報は、たとえばアルファベットの大文字をA,B,C,…と順に付けて、開始小節位置(あるいはタイミング情報)を対応付けて記憶する。さらに楽節情報を取得する方法として、コード進行を比較する際にコード名ではなく、構成音の種類の組み合わせ(12音階のベクトル)により繰り返し構造を見つけることも考えられる。たとえば、コード進行1が|Dm7 G7|で、コード進行2が|Dm7 D♭7(G7の代理コード)|の場合、コード進行1とコード進行2は、テキストの表記自体は違っても、コードの構成音自体はかなり類似しているので、コード名では一致しない場合でも、12音階で構成音が似ているかどうかの比較であれば、繰り返し構造の検出の精度を上げることができる。
【0128】
楽節情報の取得方法は、本実施の形態で挙げたものの他に、「コード進行から推定」の選択肢を設けるようにしてもよい。この場合、たとえば、コードなしの区間で分ける/同じコード進行が繰り返される区間を1つの区間とする、などの手法が考えられる。
【0129】
音楽データ生成の基になる伴奏スタイルデータやフレーズデータなどの音楽コンテンツデータは、本実施の形態では、装置の記憶装置10内に記憶されているものとしたが、これに限らず、ネットワークを介して取得され、参照されるものであってもよい。
【0130】
本実施の形態では、楽節情報が結果的に何も抽出されなかった場合については想定していないが、この場合、音楽データとして自動伴奏データを生成する際には、デフォルトのセクション(たとえば“Main A”セクション)を用いるようにすればよい。
【0131】
本実施の形態で使用した変数や配列、リストは一例であり、他のデータ構造およびアルゴリズムでも同様な効果を得ることができる。
【0132】
生成する音楽データが電子楽譜データの場合には、たとえば、元のテキストデータから分析して得たコード進行情報をMusic XMLなどのフォーマットに変換すればよい。あるいは、XFフォーマットのMIDIファイルに変換して活用してもよい。
【0133】
また、参照元のテキストデータには様々なテキストフォーマットがあるため、コード進行情報などの抽出を行う前に、たとえば本実施の形態のような1つのフォーマットに変換するようにしておくとよい。参照元のテキストデータは、本実施の形態では、どのように参照するかについて言及していない。この理由は、参照元のテキストデータを提供するサーバが本実施の形態の音楽データ生成装置に対して、当該テキストデータをどのような態様で提供するかによって、参照する態様も変わるからである。テキストデータは、データ容量が少ないので、典型的にはサーバがダウンロード配信したものを、たとえばRAM7に保存した上で参照することになる。しかしテキストデータであっても、サーバが、いわゆるストリーミング配信のように、配信した一部のデータが使用されると次の一部のデータを配信し、RAM7内にすべての配信データが残らないという態様で提供する場合には、配信された一部のデータを参照元のテキストデータとして利用する。
【0134】
さらに本実施の形態では、主にコード情報と小節線情報と楽節情報を抽出するようにしているが、この他に、曲タイトル、作曲者名や音楽記号(リハーサルマーク、繰り返し記号、BPM、キー情報など)を抽出することもできる。音楽記号の場合(楽節情報も含む)、対応する小節位置情報も抽出する必要がある。いずれの情報も、テキストフォーマットが決まっていれば、コード情報などの抽出処理と類似した処理により抽出することができる。
【0135】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0136】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0137】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【0138】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【0139】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【0140】
2…設定操作子(拍子設定手段、音符列情報設定手段),5…CPU(参照手段、拍子設定手段、第1の生成手段、第2の生成手段、音符列情報設定手段、抽出手段),9…表示部(拍子設定手段、音符列情報設定手段),11…通信I/F(参照手段)
図1
図2
図3
図4
図5
図6
図7