(57)【要約】【課題】ドラムの数よりも少ないアームで演奏可能なドラム演奏システムを提供すること。【解決手段】本発明のドラム演奏システム１００は、ドラム演奏装置１０と、そのドラム演奏装置のアーム２０、３０の動作を決定するアーム動作決定装置６０を有するドラム演奏システムである。アーム動作決定装置は、楽譜データ入力部６２と、音符データ選択手部６４と、アーム決定部６６と、アーム位置決定部６８を有している。本システムにおいて、アーム動作決定装置は、データ選択手段によって楽譜データから音符データを順次選択すると共にそれら選択した各音符データについてアーム決定手段及びアーム位置決定手段によってその音符データを演奏するアームを決定することで、楽譜データの全ての音符データについて演奏するアームを決定する。【選択図】図２
2008026724.tif 000002
【特許請求の範囲】
【請求項１】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置と、そのドラム演奏装置の各アームの駆動データを作成する駆動データ作成装置と、を有するドラム演奏システムであり、
駆動データ作成装置は、
楽譜データの中から順に１の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成する駆動データ作成部と、を有しており、
ドラム演奏装置は、
アーム毎に設けられた、アームを駆動するアクチュエータと、
駆動データ作成装置によって作成された各アームの駆動データに基づいて、各アクチュエータを駆動するコントローラと、を有していることを特徴とするドラム演奏システム。
【請求項２】
駆動データ作成装置は、選択された音符データの音程から演奏するドラムを決定するドラム決定部と、選択された音符データの音符長から動作時間を決定する動作時間決定部をさらに有していることを特徴とする請求項１に記載のドラム演奏システム。
【請求項３】
駆動データ作成部は、今回選択された音符データの音量をさらに用いて、その音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成することを特徴とする請求項１又は２に記載のドラム演奏システム。
【請求項４】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置であり、
アーム毎に設けられた、アームを駆動するアクチュエータと、
楽譜データを入力する楽譜データ入力部と、
入力された楽譜データの中から順に１の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定するアーム決定部と、
決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する駆動データ作成部と、
作成された駆動データに基づいて、決定されたアームのアクチュエータを駆動するアーム駆動部と、を有することを特徴とするドラム演奏装置。
【請求項５】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置の各アームの動作を決定するアーム動作決定装置であり、
楽譜データを入力する楽譜データ入力部と、
楽譜データの中から順に１の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定するアーム決定部と、を有していることを特徴とするアーム動作決定装置。
【請求項６】
複数の音符データから構成される楽譜データに基づいて、複数のドラムをドラムの数よりも少ないアームで打ち分けて演奏するドラム演奏方法であり、
楽譜データの中から１の音符データを選択する工程と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する工程と、
決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する工程と、
作成された駆動データに基づいて、決定されたアームを駆動する工程と、を有することを特徴とするドラム演奏方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ドラムの数よりも少ないアームを有するドラム演奏装置におけるドラムの打ち分け技術に関する。
【背景技術】
【０００２】
ＭＩＤＩ（Musical Instrument Digital Interface）規格等の楽譜データは、楽曲を構成する音符の特性がコード化された音符データが集合したデータである。通信カラオケやテレビゲーム等の出力媒体は、楽譜データに基づいて楽曲を再生している。楽譜データには、音の高さ、長さ、間隔、強さ等のコード（音符データ）を羅列した楽譜が記述されている。楽譜データを認識して出力される楽曲は、人間が演奏する楽曲のような風合いを有していない。特許文献１は、楽譜データのドラムパートのコードパターンを読み取り演奏する際に、楽曲中に音の強弱や速度変化を交える技術を開示している。特許文献１に記載の技術は、楽譜データに音の強弱や音の速度変化を加え、楽曲の出力媒体が演奏する音楽を人間が演奏する音楽に近づけている。
【０００３】
【特許文献１】特開２０００−２０００８６号公報
【０００４】
ところで、楽譜データのコードに基づいて、実際にドラムを叩いて演奏するドラム演奏装置がある。この種のドラム演奏装置は、ドラムを叩くためのアームを有している。アームはスティックを保持し、アームを上下に作動することによってドラムを演奏する。複数のドラムを演奏する場合、通常、ドラム毎にアームを設け、各ドラムを対応するアームによって演奏する。例えば、１つのドラムを演奏するには１本のアームを設け、２つのドラムを演奏するには２本のアームを設ける。
しかしながら、ドラム毎にアームを設けることとすると、演奏するドラムの数が多くなるとアームの数も増え、演奏装置が大型化してしまう。したがって、複数のドラムをドラムの数より少ないアームで打ち分けて演奏することが求められている。また、人型のロボットにドラムを演奏させる場合、基本的には２つのアーム（右手、左手）でドラムを演奏しなければならない。１つのアームで１つのドラムしか演奏できないこととなると、演奏できるドラムの数が２つとなり、多様な楽曲を演奏することができない。したがって、人型のロボットにドラムを演奏させる場合、２つのアームで３つ以上のドラムを打ち分けることが望まれている。
【０００５】
前記したように楽譜データは、音の特徴がコード化された音符データの集合体である。ドラムの数より少ないアームで打ち分けを行う場合、楽譜データ中の音符データ毎にその音符データをどのアームで演奏するかを決定しなければならない。例えば、最初の音は第１アーム、２番目の音は第２アーム、３番目のドラムは第２アーム・・・・というように、音符毎に演奏するアームを指定しなければならない。この際、音の高さ（音程）から決まるドラム（ドラムの種類）とアームの位置関係、並びに音の間隔（音符長）から決まる発音間隔とアームの移動時間の関係を考えなければならない。従来はドラムの打ち分けの決定を人が行っていたため、多大な労力と時間を必要とした。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、複数のドラムをドラムの数より少ないアームで打ち分けるドラム演奏装置において、楽譜データ中の各音符データをいずれのアームで演奏するかの指定を人が行わなくても、楽譜データに基づいてドラムを演奏することができる技術を実現することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置と、そのドラム演奏装置の各アームの駆動データを作成する駆動データ作成装置と、を有するドラム演奏システムである。
本システムの駆動データ作成装置は、音符データ選択部と、アームの駆動データ作成部を有している。音符データ選択部は、楽譜データの中から順に１の音符データを選択する。アームの駆動データ作成部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成する。
本システムのドラム演奏装置は、アーム毎に設けられた、アームを駆動するアクチュエータと、駆動データ作成装置によって作成された各アームの駆動データに基づいて、各アクチュエータを駆動するコントローラと、を有している。
【０００８】
本明細書において「ドラム」とは、叩くことで音を発する楽器をいう。ここでいう「ドラム」には、スネアドラム等の膜鳴楽器だけでなく、ハイハットシンバル等の一部の体鳴楽器も含まれる。また、「ドラム」には、音源モジュールを設定して打撃音の種類を変更できる電子ドラムも含まれる。
本明細書において「楽譜データ」とは、楽曲を構成する一つ一つの音符データ（音符）の特性が記録されているデータを言う。例えばＭＩＤＩ規格に基づいて音毎にコード化されて記録されている楽譜データが挙げられる。
本明細書において「音符データ」とは、音の高さ、音の長さの情報を有しているデータを言う。打点位置に限定されず略単一の音を発するドラムの場合、音符データの音程によりドラムの種類を決定することができる。打点位置により発する音程が変化するドラム（例えば、ティンパニ）の場合、音符データの音程によりドラムの種類と打点位置を決定することができる。
本明細書において「音符長」とは、連続した２音の間の発音間隔であり、次の音を発音（実行）するまでの時間の長さをいう。連続した２音で最初の音が８分音符ならば、８分音符の長さが音符長になる。また、２つの音符データの間に８分休符があり最初の音が８分音符ならば、４分音符の長さが音符長になる。
本明細書において「ドラム演奏装置」とは、ドラムを実際に叩いて演奏する装置である。ドラム演奏装置は、アームで直接ドラムを叩いてもよく、アームにスティック（撥）を保持して叩いてもよい。ドラム演奏装置の典型的な例として、２つのアームを有する人型のロボットが挙げられる。
本システムの駆動データ作成装置は、楽曲の演奏中にリアルタイムにアームの駆動データを作成してもよく、楽曲の開始前に、楽曲を通したアームの駆動データを作成するものであってもよい。
【０００９】
上記のシステムでは、直前に選択された音符データから決まる動作時間と、ドラム演奏装置のアームの位置と、楽譜データから選択した音符データの音程から決まるドラムの位置関係から、その音符データを実行するアームを決定し、各アームの駆動データを作成する駆動データ作成部を備えている。したがって、本システムに組み込まれたドラム演奏装置は、楽譜データを入力するだけで楽曲を演奏することができる。上記のシステムが構築されていることで、楽譜データ中の各音符データをいずれのアームで演奏するかの指定を人が行わなくてもよい。
【００１０】
本発明の好ましいシステムでは、駆動データ作成装置が、選択された音符データの音程から演奏するドラムを決定するドラム決定部と、選択された音符データの音符長から動作時間を決定する動作時間決定部をさらに有している。
このシステムでは、音符データの音程から演奏するドラムが決定される。演奏するドラムが決定されると、各アームの位置と演奏するドラムの位置関係から、各アームの動作距離を決定することができる。また、連続した２音の発音間隔（音符長）は、前音を演奏してから次の音を演奏するまでの時間である。一方、前音を発した直後のアームの位置から次音のドラムの打点位置までの移動距離とアームの作動速度の関係から、アームの移動にかかる時間を算出することができる。したがって、アームの動作時間と音符長の関係から、どのアームで次音を発するかが決定される。
【００１１】
本発明の好ましいドラム演奏システムは、駆動データ作成部が、今回選択された音符データの音量をさらに用いて、その音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成することを特徴とする。
音量は、アームがドラムを打撃する速度で決まる。音量が大きいほど、アームがドラムを打撃する速度は早くなる。その速度に応じて、アームの振り上げ幅は変動する。つまり、音量に応じて、アームの動作軌道は変動する。本システムによれば、出力する音量をアームの駆動データに反映することができる。
【００１２】
ここで開示される他の発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置である。
本ドラム演奏装置は、アーム毎に設けられた、アームを駆動するアクチュエータと、楽譜データを入力する楽譜データ入力部と、入力された楽譜データの中から順に１の音符データを選択する音符データ選択部と、音符データを演奏するアームを決定するアーム決定部と、決定されたアームの駆動データを作成する駆動データ作成部と、作成された駆動データに基づいて、決定されたアームのアクチュエータを駆動するアーム駆動部と、を有することを特徴とする。
前記アーム決定部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する。前記駆動データ作成装置は、決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームを駆動する。
上記の構成を有するドラム演奏装置は、楽譜データを入力するだけで、ドラムを演奏することができる。
【００１３】
ここで開示される他の発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置の各アームの動作を決定するアーム動作決定装置である。
本アーム動作決定装置は、楽譜データを入力する楽譜データ入力部と、楽譜データの中から順に１の音符データを選択する音符データ選択部と、音符データを演奏するアームを決定するアーム決定部と、を有していることを特徴とする。
前記アーム決定部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定する
本アーム動作決定装置は、楽譜データを入力するだけで、楽譜データ中の各音符データをいずれのアームで演奏するかを決定することができる。
【００１４】
ここで開示する他の発明は、複数の音符データから構成される楽譜データに基づいて、複数のドラムをドラムの数よりも少ないアームで打ち分けて演奏するドラム演奏方法である。
本ドラム演奏方法は、楽譜データの中から１の音符データを選択する工程と、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する工程と、決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する工程と、作成された駆動データに基づいて決定されたアームを駆動する工程と、を有することを特徴とする。
上記の方法でドラム演奏装置のアームを駆動すると、入力された楽譜データの楽曲に応じた、自動演奏を実現することができる。
【発明を実施するための最良の形態】
【００１５】
ここでは、下記の実施例に記載する技術の主な特徴をまとめておく。
（特徴１）
複数のドラムをドラムの数より少ないアームで打ち分けるドラム演奏装置の各アームの動作を決定するアーム動作決定装置であり、
複数の音符データから構成される楽譜データを入力する楽譜データ入力部と、
各アームの初期位置を入力するアーム初期位置入力部と、
入力された楽譜データから最初の音符データを選択する第１音符データ選択部と、
選択された最初の音符データの音程から決まるドラムの位置と、入力されたアームの初期位置とから、最初の音符データを演奏するアームを決定する第１アーム決定部と、
第１アーム決定部の決定結果と入力された各アームの初期位置から、最初の音符データを演奏した後の各アームの位置を決定する第１アーム位置決定部と、
入力された楽譜データから次の音符データを選択する第２音符データ選択部と、
選択された次の音符データの音程から決まるドラムの位置と、直前の音符データの音符長から決まる動作時間と、直前の音符データが演奏された後の各アームの位置とから、選択された次の音符データを演奏するアームを決定する第２アーム決定部と、
第２アーム決定部の決定結果と直前の音符データが演奏された後の各アームの位置とから、次の音符データを演奏した後の各アームの位置を決定する第２アーム位置決定部と、を有しており、
第２音符データ選択部によって楽譜データから音符データを順次選択すると共に選択した音符データを演奏するアームを第２アーム決定部及び第２アーム位置決定部によって決定することで、楽譜データの全ての音符データについて演奏するアームを決定するアーム動作決定装置。
（特徴２）
アーム動作決定装置は、アーム毎に、そのアームで演奏するように決定された１又は複数の音符データに基づいて、そのアームの駆動データを作成する駆動データ作成部を有している。
（特徴３）楽譜データは、音の特徴がＭＩＤＩ規格に基づいたデータである。
（特徴４）ドラム演奏ロボットは、アームの先端にスティックを保持しており、アームの先端に保持されているスティックでドラムは叩かれる。
（特徴５）複数のドラムは、それぞれ異なる音程で発音する。
（特徴６）同一のドラムを連続して叩くパターンで打撃間隔が所定の時間より短い場合は、２打目のアームは、１打目と異なるアームが選択される。
（特徴７）楽譜データの音量の情報により、ドラムを叩くときのアームの振り上げ高さが決定される。
【実施例】
【００１６】
本発明の一実施例に係るドラム演奏システム１００について説明する。図２に示すように、ドラム演奏システム１００は、ドラム演奏ロボット１０と、ドラム演奏ロボット１０の各アーム２０、３０の動作を決定するアーム動作決定装置６０によって構成されている。まず、ドラム演奏ロボット１０について説明する。
図１に本実施例のドラム演奏ロボット１０（ドラム演奏装置の一実施例）を示す。ドラム演奏ロボット１０は、２本のアーム２０、３０で異なる３種類のドラム４２、４４、４６を打ち分ける。ドラム演奏ロボット１０は、頭部１４と体幹１６と右アーム３０と左アーム２０と図示しない２つの車輪から構成されている。
【００１７】
２つの車輪は、体幹１６の左右に備えられている。２つの車輪は、外側から見えないように車輪カバー１８、１９で覆われている。２つの車輪を図示しないモータで駆動することで、ドラム演奏ロボット１０は移動することができる。
【００１８】
ドラム演奏ロボット１０のアーム２０、３０は、上腕部２５、３５、下腕部２４、３４、手部３２（左アームの手部は図示していない）を有している。上腕部２５、３５の上端は、肩関節２６ｃ、３６ｃを介して体幹１６と接続している。上腕部２５、３５の下端は、肘関節３６ｂ（左アームの肘関節は図示していない）を介して下腕部２４、３４の上端と接続している。下腕部２４、３４の下端は手首関節３６ａを介して手部３２（左アームの手首関節及び手部は図示していない）と接続している。手部３２は、ドラム４２、４４、４６を直接叩くスティック（撥）３７（左アームの手部及びスティックは図示していない）を保持している。
肩関節２６ｃ、３６ｃ、肘関節３６ｂ、手首関節３６ａには、回転式のモータ８２ａ〜８２ｃ、８４ａ〜８４ｃがそれぞれ備えられている。それぞれの関節２６ｃ、３６ｃ、３６ｂ、３６ａのモータ８２ａ〜８２ｃ、８４ａ〜８４ｃが回転すると、それぞれの関節２６ｃ、３６ｃ、３６ｂ、３６ａが所定の方向に屈曲する。関節２６ｃ、３６ｃ、３６ｂ、３６ａの関節角により、アーム２０、３０に保持されているスティック３７の先端の位置が決まる。楽曲を演奏しないとき、ドラム演奏ロボット１０のアーム２０、３０は、所定の位置（初期位置）で待機している。
図２に示すように、各関節２６ｃ、３６ｃ、３６ｂ、３６ａの関節角は、位置検出部８６ａ〜８６ｃ、８８ａ〜８８ｃによって検出される。位置検出部８６ａ〜８６ｃ、８８ａ〜８８ｃからの検出信号は、コントローラ８０に入力される。コントローラ８０は、位置検出部８６ａ〜８６ｃ、８８ａ〜８８ｃからの検出信号に基づいて各関節２６ｃ、３６ｃ、３６ｂ、３６ａの関節角を取得する。コントローラ８０は、取得した各関節２６ｃ、３６ｃ、３６ｂ、３６ａの関節角から決定される現在のアーム２０、３０の位置と、アーム動作決定装置６０から出力された各アーム２０、３０の駆動データ（すなわち、アーム２０、３０の目標位置）とに基づいて、モータ８２ａ〜８２ｃ、８４ａ〜８４ｃを制御する（図２参照）。
【００１９】
ドラム４２、４４、４６は、音源モジュール４８によって音の種類が設定できる電子ドラムである。音源モジュール４８は、ドラム４２、ドラム４６、ドラム４４の順で音程が高くなるように各ドラム４２、４４、４６を設定している。ドラム演奏ロボット１０側から見て、ドラム４２と４４は、体幹１６の中心よりも左側に位置している。ドラム４６は、ドラム演奏ロボット１０の体幹１６の中心よりも右側に位置している。ドラム４２とドラム４４は左アーム２０に近く、ドラム４６は右アーム３０に近い。
ドラム４２、４４、４６は、ホルダー５２、５４、５６を介してパイプ５０に固定されている。音源モジュール４８は、２つのホルダー５８、５８を介してパイプ５０に固定されている。ドラム４２、４４、４６と音源モジュール４８が一つのパイプ５０に固定され、一つのドラムセット４０を組み立てている。このドラムセット４０は、ドラム演奏ロボット１０の体幹１６に固定されている。
なお、ドラムの音量は、スティック３７の先端がドラム４２、４４、４６を打撃する時の速度によって決まる。音量を大きくするときには、スティック３７の先端の速度を速めるためにアーム２０、３０を高く振り上げる。振り上げ高さが高くなると、アーム２０、３０の移動距離が長くなる。ドラムの音量が大きいほど、アーム２０、３０の移動時間は長くなる。
【００２０】
次にアーム動作決定装置６０について説明する。図２に示すように、アーム動作決定装置６０は、楽譜データ入力部６２と、音符データ選択部６４と、アーム位置決定部６６と、アーム決定部６８と、記憶部７０と、駆動データ作成部７２とを有している。
楽譜データ入力部６２には、ＭＩＤＩ規格の楽譜データ（ＭＩＤＩデータ）が入力される。ＭＩＤＩデータは、楽曲を構成する一つ一つの音符の情報（音程、音符長、音量等）がコード化された音符データの集合体である。音符データの情報のうち音程の情報は、ドラム演奏ロボット１０が打撃するドラムを決定する。音符データの情報のうち音符長の情報は、ドラム演奏ロボット１０が次の音符データを実行する（ドラムを叩く）タイミングを決定する。音符データの情報のうち音程の情報は、スティック３７の先端がドラムを打撃する時の速度（アームの振り上げ高さ）を決定する。
【００２１】
楽譜データ入力部６２に入力された楽譜データは、音符データ選択部６４によって最初の第１音から楽曲の最後の音まで順次選択される。選択された音の音符データに基づいて、アーム位置決定部６６及びアーム決定部６８が所定の演算を行い、選択された音を演奏するアームを決定する。
具体的には、音符データ選択部６４が第１音を選択すると、選択した第１音の音符データの音程から第１音を発音するドラム４２、４４、４６が決定する。第１音を発する以前のアーム２０、３０は、所定の初期位置にある。アーム決定部６８は、第１音を発音するドラム（４２又は４４又は４６）の位置と各アーム２０、３０の初期位置の関係から、第１音のドラム（４２又は４４又は４６）を叩くアーム（２０又は３０）を決定する。記憶部７０は、第１音の音符データを実行するアーム（２０又は３０）を記憶する。
音符データ選択部６４が次の音を選択すると、その音程から次の音を発音するドラム４２、４４、４６が決定する。アーム位置決定部６６は、記憶部７０に記憶している第１音の音符データを実行した直後のアーム２０、３０の位置を決定する。アーム決定部６８は、アーム位置決定部６６が決定したアーム２０、３０の位置と第２音を発音するドラムの位置の関係から、第２音の音符データを実行するアーム（２０又は３０）を決定する。
第３音以降、アーム位置決定部６６及びアーム決定部６８は、第２音における手順と同様の手順で、音毎にドラム（４２又は４４又は４６）を打撃するアーム（２０又は３０）を順次決定する。記憶部７０は、各音符データを実行するアーム２０、３０を記憶する。
【００２２】
駆動データ作成部７２は、記憶部７０に記憶されたデータをもとに、楽曲全体のアーム２０、３０の駆動データを作成する。駆動データ作成部７２で作成されたアーム２０、３０毎の駆動データは、ドラム演奏ロボット１０のコントローラ８０に送信される。コントローラ８０は、受信した駆動データに基づいてモータ８２ａ〜８２ｃ、８４ａ〜８４ｃを制御する。
【００２３】
次に、アーム動作決定装置６０が行う具体的な処理について説明する。アーム動作決定装置６０は、入力された楽譜データの各音符データを左アーム２０か右アーム３０のいずれで演奏するかを決定する処理（打ち分け処理）を行い、次いで、打ち分け処理によって得られた各アーム２０、３０の楽譜データから各アーム２０、３０の駆動データを作成する処理（駆動データ作成処理）を行う。まず、打ち分け処理について図３及び４を参照して説明する。
図３は、入力された楽譜データの各音符データをドラム演奏ロボット１０のいずれのアーム２０、３０で演奏するかを決定する処理（ドラムの打ち分け処理）の手順を示すフローチャートである。ドラム４２、４４、４６の打ち分け処理は、アーム動作決定装置６０のアーム位置決定部６６とアーム決定部６８が主に行っている。
図４は、アーム動作決定装置６０に入力される楽譜データを譜面化した楽譜の一例を示している。図４において、上段は、アーム２０、３０毎に分割する前の楽譜を示しており、中段は、左アーム２０が発音する音符データのみを選択した楽曲データの楽譜を示しており、下段は、右アーム３０が発音する音符データのみを選択した楽曲データの楽譜を示している。図４において、「ト音（ソ）」はドラム４４が発音する音であり、「ヘ音（ファ）」はドラム４６が発音する音であり、「ホ音（ミ）」はドラム４２が発音する音を示している。
【００２４】
図３のフローチャートに沿って、アーム動作決定装置６０の打ち分け処理を説明する。
先ず、アーム動作決定装置６０の楽譜データ入力部６２に楽譜データを入力する（Ｓ１０２）。入力された楽譜データは記憶部７０に記憶される。
次いで、アーム決定部６８にアーム２０、３０の初期位置を入力する（Ｓ１０４）。アーム２０、３０の初期位置は、予め記憶部７０に記憶されている。このため、記憶部７０に記憶されているアーム２０、３０の初期位置が、アーム決定部７０に入力される。
次に、音符データ選択部６４が入力された楽譜データの最初の音符データを選択し（Ｓ１０６）、アーム決定部７０は、選択した最初の音符データの音程から最初の音を発音するドラムを決定する（Ｓ１０８）。すなわち、記憶部７０に記憶された楽譜データから最初の音符データを選択し、その選択された音符データの音程から演奏するドラムを決定する。
演奏するドラムが決まると、アーム決定部６６は、右アーム３０と左アーム２０の初期位置と第１音を発音するドラム４２、４４、４６の位置から、右アーム３０から第１音を発音するドラムまでの距離と、左アーム２０から第１音を発音するドラムまでの距離を算出する（Ｓ１１０）。すなわち、各ドラム４２、４４、４６は体幹１６に固定されており、その位置が予め既知である。このため、演奏するドラムが決まるとアーム２０、３０を移動される位置（打撃位置）が決まり、決定された打撃位置とアーム２０、３０の初期位置から、右アーム３０から打撃位置までの距離と左アーム２０から打撃位置までの距離とを算出することができる。
右アーム３０からの距離と左アーム２０からの距離を算出すると、アーム決定部６６は、算出された距離が短い方のアーム２０、３０を選択する（Ｓ１１２）。記憶部７０は、最初の音符データを実行するアーム２０、３０を記憶する（Ｓ１１４）。
例えば、図４上段の楽譜において、最初の音符データ３０２は、その音程からドラム４４で演奏することがわかる。また、アーム２０、３０の初期位置は、体幹１６の正面中央の同一高さの位置に設定されている。したがって、ドラム４４は、左アーム２０の初期位置に近い。アーム決定部６６は、音符データ３０２を実行するアームとして左アーム２０を選択する。記憶部７０は、左アーム２０側の楽曲データに最初の音符データ３０２を記憶する（図４中段）。記憶部７０は、右アーム３０側の楽曲データの最初の音符データ３０２を休符として記憶する（図４下段）。
【００２５】
音符データ選択部６４は、楽譜データから次の音符データを選択する（Ｓ１１６）。そして、選択した音符データの音程から、次に発音するドラム４２、４４、４６を決定する（Ｓ１１８）。
次に発音するドラムが決定されると、アーム決定部６８は、直前の音符データを演奏した後のアーム２０、３０の位置と、ステップＳ１１８で決定されたドラムの位置と、前音の音符データの音符長から、ステップＳ１１６で選択した音符データを演奏するアーム（２０又は３０）を決定する（ステップＳ１２０〜Ｓ１４４）。すなわち、直前の音符データを演奏した直後の各アーム２０、３０の位置は、楽譜データの最初から順に各音符データを演奏するアームを決定していくことによって特定することができる。直前の音符データを演奏した直後の各アーム２０、３０の位置が特定できれば、その特定した各アーム２０、３０の位置と次のドラムの位置から、アーム２０、３０を次のドラムの位置まで移動させる際の移動距離を算出することができる。ここで、直前の音符データを演奏してから次のドラムを演奏するまでの時間は、直前の音符データの音符長によって決められている。このため、各アーム２０、３０は、直前の音符データの音符長によって決められた時間内に次のドラムまで移動しなければならない。したがって、アーム決定部６８は、直前の音符データの音符長によって決められた時間内に次のドラムまで移動でき、かつ、直前の音符データ演奏後のアーム位置からスムーズに移動することができるアームを、ステップＳ１１６で選択した音符データを演奏するアームとして決定する。
【００２６】
具体的には、右アーム３０と左アーム２０の両方が選択されたドラムの位置（このドラムを打撃した後にアームが待機する位置（以下、待機位置ともいう。））にあり（Ｓ１２０がＹＥＳ判定であり）、前回の音符データの音符長が８分音符よりも短い場合（Ｓ１２２がＹＥＳ判定の場合）、アーム決定部６６は、前回叩いたアームと異なるアームを選択する（Ｓ１２６）。すなわち、両アーム２０、３０がともにドラム位置にあるためいずれのアーム２０、３０でも演奏することはできるが、前回の音符データを演奏してから今回の音符データを演奏するまでの間隔が短いため、異なるアームを選択する。これによって、ドラム演奏ロボット１０のアーム２０、３０の動作がスムーズな動き（人間に近い動き）となる。
例えば、図４の音符データ３０６は、発音するドラムがドラム４４である。ドラム４４の待機位置には、右アーム３０、左アーム２０の両方が位置する。一つ前の音符データ３０４は、右アーム３０で演奏している。音符データ３０４は８分音符であるので、アーム決定部６６は左アーム２０を選択する。記憶部７０は、左アーム２０側の楽曲データに音符データ３０６を記憶する。記憶部７０は、右アーム３０側の楽曲データの音符データ３０６の位置を休符として記憶する。
【００２７】
一方、右アーム３０と左アーム２０の両方が選択されたドラムの位置（待機位置）にあり（Ｓ１２０がＹＥＳ判定であり）、前回の音符データの音符長が８分音符よりも長い場合（Ｓ１２２がＮＯ判定の場合）は、次の音の音量を判定する（Ｓ１２４）。次の音の音量が、所定の音量よりも大きい場合（Ｓ１２４がＹＥＳ判定の場合）、前回叩いたアーム２０、３０と異なるアーム３０、２０を選択する（Ｓ１２６）。音量が大きいとアーム２０、３０の振り上げ高さが高くなるので、アームの移動時間が長くなる。前回と異なるアームで演奏すれば、次の音の音量が大きくても、前回の音を演奏中に振り上げ動作を開始することによってドラム４２、４４、４６を叩くことができる。
例えば、図４の符号３０８で示される音符データではドラム４４が叩かれる。ドラム４４の待機位置には、右アーム３０、左アーム２０のいずれもが位置している。一つ前の音符データ３０６は左アーム２０で実行している。一つ前の音符データ３０６は、４分音符であり８分音符よりも音符長が長い。音符データ３０８にはアクセント記号が付されており、その音量は所定の音量よりも大きい。アーム決定部６６は、音符データ３０８を実行するアームとして前回の音符データ３０６と異なる右アーム３０を選択する。記憶部７０は、音符データ３０８を右アーム３０側の楽曲データに記憶する。記憶部７０は、左アーム２０側の楽曲データの音符データ３０６の位置を休符として記憶する。
【００２８】
また、右アーム３０と左アーム２０の両方が選択されたドラムの位置（待機位置）にあり（Ｓ１２０がＹＥＳ判定であり）、前回の音符データの音符長が８分音符よりも長く（Ｓ１２２がＮＯ判定であり）、次の音の音量が所定の音量よりも小さい場合（Ｓ１２４がＮＯ判定の場合）、アーム決定部６６は、前回叩いたアームと同じアームを選択する（Ｓ１２８）。音量が小さいとアームの振り上げ高さは低い。移動距離が短いので、同じアームを用いてドラムを叩くことができる。
例えば、図４の符号３１０で示される音符データではドラム４４が叩かれる。ドラム４４の待機位置には、右アーム３０、左アーム２０のいずれもが位置している。一つ前の音符データ３０８は右アーム３０で実行している。一つ前の音符データ３０８は、４分音符であり８分音符よりも音符長が長い。音符データ３１０にはアクセント記号がなく、音量が所定の音量よりも小さい。アーム決定部６６は、音符データ３１０を実行するアームとして、前回の音符データ３０８と同じ右アーム３０を選択する。記憶部７０は、音符データ３１０を右アーム３０側の楽曲データに記憶する。記憶部７０は、左アーム２０側の楽曲データの音符データ３１０の位置を休符として記憶する。
【００２９】
選択されたドラムの位置（待機位置）に右アーム３０又は左アーム２０のいずれかのアームがあり（Ｓ１３０がＹＥＳ判定であり）、前回の音符データの音符長が８分音符よりも短い場合（Ｓ１３２がＹＥＳ判定の場合）、アーム決定部６６は、ドラムの位置にあるアームを選択する（Ｓ１３４）。前回の音符データの音符長が８分音符よりも短く、次の音符データの演奏までの時間が短いため、選択されたドラムの位置にあるアームで演奏する。
【００３０】
選択されたドラムの位置に右アーム３０又は左アーム２０のいずれかのアームがあり（Ｓ１３０がＹＥＳ判定であり）、前回の音符データの音符長が８分音符よりも長い場合（Ｓ１３２がＮＯ判定の場合）、アーム決定部６６は、ドラムの待機位置とは異なる位置にあるアーム（２０又は３０）が選択されたドラムまで移動するのに要する時間を計算し、計算した時間が前回の音符データの音符長より短いか否かを判定する（Ｓ１３６）。すなわち、ドラムの待機位置とは異なる位置にあるアームによって選択されたドラムを叩けるか否かを判定する。
異なる位置にあるアーム（２０又は３０）が選択されたドラムまで移動するのに要する時間が前回の音符データの音符長よりも短い場合（Ｓ１３６のＹＥＳ判定の場合）、異なる位置にあるアームで選択されたドラムを叩くことができるので、アーム決定部６６は異なる位置にあるアーム（２０又は３０）を選択する（Ｓ１３８）。
例えば、図４の音符データ３２４はドラム４４が発音する。ドラム４４の待機位置には、左アーム２０が位置している。一つ前の音符データ３２２は、左アーム２０が実行する。一つ前の音符データ３２２は、音符長が４分音符であり８分音符よりも音符長が長い。アーム決定部６６は、音符データ３２４を実行するアームとして前回の音符データ３２２とは異なる右アーム３０を選択する。記憶部７０は、音符データ３２４を右アーム３０側の楽曲データに記憶する。記憶部７０は、左アーム２０側の楽曲データの音符データ３２４の位置を休符として記憶する。
【００３１】
一方、ステップＳ１３６の計算の結果、異なる位置にあるアームがドラムまで移動するのに要する時間が前回の音符データの音符長よりも長い場合（Ｓ１３６のＮＯ判定）、異なるアームでは選択されたドラムを叩くことができないため、アーム決定部６６は選択されたドラムの待機位置にあるアームを選択する（Ｓ１３４）。
例えば、図４の符号３３０で示される音符データでは、ドラム４２が叩かれる。ドラム４２の待機位置には、左アーム２０が位置している。一つ前の音符データ３２８は左アーム２０が実行する。一つ前の音符データ３２６は、音符長が４分音符である。ドラム４２の待機位置に位置していない右アーム３０は、最も右側のドラム４６の待機位置に位置しており、４分音符の音符長で決まる移動時間内では、最も左側のドラム４２には移動できない。このため、アーム決定部６６は、音符データ３３０を実行するアームとして左アーム２０を選択する。記憶部７０は、音符データ３３０を左アーム２０側の楽曲データに記憶する。記憶部７０は、右アーム３０側の楽曲データの音符データ３３０の位置を休符として記憶する。
【００３２】
次のドラムの位置（待機位置）にいずれのアーム２０、３０もない場合（Ｓ１３０がＮＯ判定の場合）、アーム決定部６６は、両方のアーム２０、３０が次のドラムまで移動するのに要する時間を計算する（Ｓ１４０）。少なくとも一方のアームの移動時間が前回の音符データの音符長より短い場合（Ｓ１４０がＹＥＳ判定の場合）、選択した音符データを演奏できるため、アーム決定部６６は移動時間がより短い方のアームを選択する（Ｓ１４２）。
例えば、図４の符号３１２で示される音符データでは、ドラム４６が叩かれる。ドラム４６の待機位置には、左アーム２０と右アーム３０はいずれも位置していない。２つ前の音符データ３０８と一つ前の音符データ３１０は左アーム２０が実行する。したがって、左アーム２０はドラム４４の待機位置にある。また、３つ前の音符データ３０６は右アーム３０が実行しており、右アーム３０もドラム４４の待機位置にある。一つ前の音符データ３１０は、音符長が８分音符である。ドラム４６は、右アーム３０側にあるので、アーム決定部６６は、音符データ３１２を実行するアームとして右アーム３０を選択する。記憶部７０は、音符データ３１２を右アーム３０側の楽曲データに記憶する。記憶部７０は、左アーム２０側の楽曲データの音符データ３１２の位置を休符として記憶する。
【００３３】
選択されたドラムの位置（待機位置）にいずれのアーム２０、３０もなく（Ｓ１３０がＮＯ判定）、いずれのアームの移動時間も前回の音符データの音符長より長い場合（Ｓ１４０がＮＯ判定の場合）、アーム動作決定装置６０は、次の音の演奏をあきらめ、記憶部にその音符データを休符として記憶する（Ｓ１４６）。
【００３４】
ステップＳ１４８に進むと、アーム決定部６８は全ての音符データについて、演奏するアームを決定したか否かを判定する。全ての音符データについて演奏するアームを決定している場合（ステップＳ１４８でＮＯ）は処理を終了し、全ての音符データについて演奏するアームを決定していない場合（ステップＳ１４８でＹＥＳ）はステップＳ１１６に戻って、ステップＳ１１６からの処理を繰り返す。これによって、全ての音符データについて演奏するアームが決定される。
上記の手順で音符データ毎にアームの振り分け処理を最後の音符データまで行うと、記憶部７０には、左アーム２０用の楽曲データ（図４の中段）と、右アーム３０用の楽曲データ（図４の下段）が記憶されている。
【００３５】
上述した手順で各アーム２０、３０の楽曲データが作成されると、アーム動作決定装置６０は、アーム２０、３０毎の楽曲データから、アーム２０、３０毎に駆動データを作成する。なお、駆動データとは、アーム２０、３０が移動する軌跡を規定するデータである。以下、各アーム２０、３０の楽曲データから各アーム２０、３０の駆動データを作成する手順について、図５〜図１１を参照して説明する。
図５は、アーム２０、３０毎の駆動データを駆動データ作成部７２が作成する手順を示すフローチャートである。図６〜図１１は、アーム２０、３０の移動軌道を示すグラフである。図６〜図１１において、横軸は時間を示しており、上段のグラフの縦軸はアームの高さ方向の位置を示しており、下段のグラフの縦軸はアームの水平方向の位置を示している。なお、図８、９では、水平方向にアームが動かない場合を示しているので、下段のグラフを省略している。また、上段の縦軸のｈ０は打点位置、ｆはアームの初期位置、ｈは振り上げ高さ、ｍは移動中間点、ｗは待機位置をそれぞれ示している。なお、実施例に係るドラム演奏ロボット１０では、手部３２とスティック３７の間に遊びが形成されている。このため、ドラムの打点位置は、ドラムの膜面よりも少し下に設定されている。したがって、スティック３７の先端がドラム４２、４４、４６の膜面を打撃すると、手部３２に対してスティック３７がドラム上方に逃げ、スティック３７の先端がドラム４２、４４、４６の膜面から僅かに離れた状態で静止する。
一方、下段縦軸のｆはアームの初期位置を示しており、ｄは最初のドラムの位置を示しており、ｄ１は前回の音符データのドラムの位置を示しており、ｄ２は次のドラムの位置を示しており、ｍは移動中間点を示している。
また、図６、７の横軸のｔは、最初の音符データを実行するまでの準備時間を示している。図８〜１１の横軸のｔは、前回の音符データが実行されてから次の音符データが実行されるまでの時間（発音間隔）を示している。また、ｔ１は、前回の音符データが終わってからアームが動き出すまでの静止時間を示しており、ｔ２は、移動中間点又は待機位置までの移動時間を示しており、ｔ３は移動中間点または待機位置から振り上げ位置までの移動時間を示しており、ｔ４は振り上げ位置から打点位置までの移動時間を示している。
【００３６】
図５に示すように、駆動データ作成部７２は、まず、アーム２０、３０の初期位置を認識する（Ｓ２０２）。次に、駆動データ作成部７２は、最初の音符データの音程から最初に演奏するドラムの位置を認識し（Ｓ２０４）、その認識したドラムの位置と最初の音符データの音量からアームの振り上げ位置を決定する（Ｓ２０６）。アームの振り上げ位置を決定すると、駆動データ作成部７２は、初期位置から振り上げ位置までの移動中間点ｍを算出する（Ｓ２０８）。すなわち、楽譜データの中の各音符データをいずれのアームで演奏するかは、上述した打ち分け処理によって既に決定されている。したがって、ステップＳ２０２で認識したアーム２０、３０の初期位置のうち演奏に用いるアームの初期位置と、ステップＳ２０６で決定したアームの振り上げ位置から、移動中間点ｍを算出する。
移動中間点ｍが算出されると、駆動データ作成部７２は、最初の音符データを演奏するアームの初期位置と最初に演奏するドラム（４２又は４４又は４６）との位置関係を判断する（Ｓ２１０）。具体的には、最初の音符データを演奏するアームの初期位置より演奏するドラム（ステップＳ２０４で認識したドラムの位置）が外側に位置するのか、内側に位置するのかを判断する。
演奏するドラムの位置が演奏するアームの初期位置よりも外側であると判断した場合（ステップＳ２１０がＹＥＳ判定）、駆動データ作成部７２は、まず、アーム（すなわち、演奏するアーム）が移動中間点まで移動する駆動データを作成する（Ｓ２１６）。次いで、駆動データ作成部７２は、アーム（演奏するアーム）が移動中間点から振り上げ位置まで移動し、その後、打点位置に向けて移動するように駆動データを作成する（Ｓ２１８、Ｓ２２０）。こうして作成された駆動データは記憶部７０に記憶される。
図６は、演奏するドラムの位置がアームの初期位置よりも外側にあると判断されたときのアームの軌道パターンの典型的な例を示している。図６に示す軌道パターンでは、先ず、アームは時間ｔ２の間に移動中間点ｍまで移動する。次の時間ｔ３の間に、アームは移動中間点ｍからアームの振り上げ位置ｈまで移動する。そして時間ｔ４の間に、アームは打点位置ｈ０まで振り下ろされる。
【００３７】
一方、ステップＳ２１０において、演奏するドラムの位置が演奏するアームの初期位置よりも内側であると判断した場合（ステップＳ２１０でＮＯ判定）、駆動データ作成部７２は、初期位置で静止し（Ｓ２１２）、まず、演奏するアームが他のアームと干渉しないかを判断する（Ｓ２１４）。すなわち、演奏するドラムの位置が演奏するアームの初期位置よりも内側にある場合、演奏するアームをドラムに向かって移動させると、そのアームが他のアームに接近する方向に移動することとなり、両アームが接触する可能性が生じる。そこで、一旦初期位置で停止し、そのアームと他のアームが干渉しないかを判断する。
アーム２０、３０同士の動作が干渉する場合（ステップＳ２１４でＹＥＳ判定）は、アーム２０、３０の動作の干渉が生じなくなるまで待機する。一方、アーム２０、３０同士の動作が干渉しない場合（ステップＳ２１４でＮＯ判定）、駆動データ作成部７２は移動中間点に演奏するアームが移動するように駆動データ（軌道パターン）を作成する（Ｓ２１６）。その後、先程と同様に、演奏するアームが移動中間点からドラムの振り上げ位置まで移動し、その後に、打点位置に向けて移動するように駆動データを作成する（Ｓ２１８、Ｓ２２０）。作成された最初の音符データの駆動データは記憶部７０に記憶される。
図７は、演奏するドラムの位置が演奏するアームの初期位置よりも内側にある場合のアームの軌道パターンの典型的な例を示している。図７に示す軌道パターンでは、先ず、演奏するアームはｔ１の間は移動することなく、他方のアームとの干渉を回避する。干渉を回避した後、ｔ２の間に初期位置ｆから移動中間点ｍまで移動する。その後、ｔ３の間に移動中間点ｍから振り上げ位置ｈまで移動し、時間ｔ４の間に打点位置ｈ０まで振り下ろされる。
【００３８】
上述した処理によって最初の音符データを演奏するアームの駆動データが作成されると、駆動データ作成部７２は、次の音符データを演奏するアーム（２０又は３０）の駆動データを作成する。すなわち、次に演奏する音符データの音程から次のドラムの位置を認識し（Ｓ２２２）、その認識したドラムの位置と次の音符データの音量から、アーム（次の音符データを演奏するアーム）の振り上げ位置を決定する（Ｓ２２４）。
次いで、前回のドラム（４２又は４４又は４６）と次のドラム（４２又は４４又は４６）が同一のドラムが否かを判定する（Ｓ２２６）。前回のドラムと次のドラムが同一のドラムの場合（ステップＳ２２６でＹＥＳ判定）、駆動データ作成部７２は、前回のドラムを発音してから次のドラムが発音されるまでの時間間隔（音符長によって決まる発音間隔）が演奏するアームをスイングする時間より長いか否かを判定する（Ｓ２２８）。すなわち、演奏するアームの現在の位置とステップＳ２２４で決定された振り上げ位置と演奏するドラムの位置から、アームを移動（スイング）させる距離が分かるため、この距離とアームの移動速度からアームの移動時間（スイング時間）を算出し、算出したスイング時間より前回のドラムを発音してから次のドラムが発音されるまでの時間間隔が長いか否かを判定する。
【００３９】
アームの振り上げと振り下げに要するスイング時間（図８におけるｔ３とｔ４の和）が発音間隔よりも長い場合（ステップＳ２２８でＹＥＳ判定）、駆動データ作成部７２は、前回の打点位置でアームを待機し（Ｓ２２９）、次の音を発するタイミングに合わせてアームを駆動するように駆動データを作成する（Ｓ２４２、２４４）。このときのアームの軌道パターンを図８のグラフに示す。アームは先ず打点位置ｈ０で保持される。この保持時間ｔ１は、発音間隔ｔからスイング時間（ｔ３＋ｔ４）を差し引いた時間である。時間ｔ１の間、打点位置ｈ０で保持した後、アームは時間ｔ３をかけて振り上げ位置ｈに向けて移動し、時間ｔ４をかけて打点位置ｈ０まで振り下ろされる。
一方、アームの振り上げと振り下げに要するスイング時間が発音間隔よりも短い場合（ステップＳ２２８でＮＯ判定の場合）、駆動データ作成部７２は、アームを事前待機位置まで移動する駆動データを作成し（Ｓ２３０）、次いで、所定のタイミングで事前待機位置から振り上げ位置まで移動する駆動データを作成し（Ｓ２４２）、最後に、振り上げ位置から振り下げ位置まで移動する駆動データを作成する（Ｓ２４４）。すなわち、アームの振り上げと振り下げに要するスイング時間が発音間隔よりも短い場合には、前の音符データを演奏してからアームを動かしていては、次の音符データを演奏することができない。このため、前の音符データの演奏（発音）が行われる前にアームを事前待機位置まで移動させ、その後の所定のタイミングでアームの振り上げ及び振り下げを行う。
このときのアームの軌道パターンの一例を図９のグラフに示している。図９に示すように、アームは前の音符データが演奏されるタイミング（ｔ０）より時間ｔ１だけ遡ったタイミングで事前待機位置ｗまで移動し、その後、所定の時間ｔ２の間に振り上げ動作を実行し、次の音を発音するタイミングまでの時間ｔ３の間に打点位置ｈ０まで移動する。なお、上述の説明から明らかなように、ステップＳ２３０の処理を行うときは、演奏するアーム（すなわち、駆動データが作成されるアーム）は前の音符データを演奏したアームとは異なるアームとなる。
【００４０】
次に、演奏するドラムが前回のドラムと異なる場合（ステップＳ２２６でＮＯ判定）、駆動データ作成部７２は、アームの現在の位置ｆから演奏するドラムまでの移動中間点ｍを算出し（Ｓ２３２）、次いで、現在のアームの位置と次のドラムの位置関係を判断する（Ｓ２３４）。すなわち、アームが次のドラムまで移動する場合に、アームが外方向に移動するか、内方向に移動するかを判断する。
アームが外方向に移動すると判断した場合（ステップＳ２３４がＹＥＳ判定の場合）、駆動データ作成部７２は、アームを移動中間点ｍまで移動する駆動データを作成し（Ｓ２３６）、次いで、移動中間点ｍから振り上げ位置ｈまで移動する駆動データを作成し（Ｓ２４２）、振り上げ位置ｈから打点位置ｈ０に向けて移動する駆動データを作成する（Ｓ２４４）。図１０は、上記の軌道パターンの典型例を示している。上記の軌道パターンでは、先ず、アームは時間ｔ２の間に移動中間点ｍまで移動する。時間ｔ３の間に、アームは移動中間点からアームの振り上げ位置ｈまで移動する。そして時間ｔ４の間に、アームは打点位置ｈ０まで振り下ろされる。
【００４１】
一方、ステップＳ２３４において、アームが内方向に移動すると判断した場合（ＮＯ判定の場合）、駆動データ作成部７２は、アームは現在の位置（すなわち、前のドラムの打点位置）で静止し（Ｓ２３６）、他のアームと干渉するか否かを判定する（Ｓ２３８）。そして、他のアームと干渉すると判定される場合（ステップＳ２３８でＹＥＳ）は、他のアームとの干渉がなくなるまで待機する。逆に、他のアームと干渉しないと判定される場合（ステップＳ２３８でＮＯ）は、アームを移動中間点ｍまで移動する駆動データを作成し（Ｓ２３６）、次いで、移動中間点ｍから振り上げ位置ｈまで移動する駆動データを作成し（Ｓ２４２）、振り上げ位置ｈから打点位置ｈ０に向けて移動する駆動データを作成する（Ｓ２４４）。
図１１は、上記の軌道パターンの典型的な例を示している。先ず、アームはｔ１の間その場で待機し、他方のアームとの干渉を回避する。干渉を回避した後、ｔ２の間に移動中間点ｍまで移動する。その後、ｔ３の間に、移動中間点ｍから振り上げ位置ｈまで移動する。そして時間ｔ４の間に、アームは打点位置ｈ０まで振り下ろされる。
【００４２】
ステップＳ２４６に進むと、駆動データ作成部７２は全ての音符データについて駆動データを作成したか判定する。全ての音符データについて駆動データを作成している場合（ステップＳ２４６でＮＯ）は処理を終了し、全ての音符データについて駆動データを作成していない場合（ステップＳ２４６でＹＥＳ）はステップＳ２２２に戻って、ステップＳ２２２からの処理を繰り返す。これによって、全ての音符データについて駆動データが作成される。
上記の手順で作成された駆動データは、記憶部７０に記憶されると共にドラム演奏ロボット１０のコントローラ８０に出力される。コントローラ８０は、入力した駆動データに基づいて各アームを駆動することで、３つのドラムを２つのアームで打ち分けながらドラム演奏をする。
【００４３】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例をさまざまに変形、変更したものが含まれる。
【００４４】
なお、上述の実施例では、楽譜データを構成する全ての音符データについて振り分け処理を行い、その後に駆動データの作成処理を行うようにしたが、本発明はこのような形態に限られない。例えば、（１）楽譜データから順に音符データを選択し、（２）その選択した音符データについて演奏するアームを決定し、（３）決定したアームの現在位置とその音符データの音程、音量に基づいて、演奏するアームの駆動データを作成し、（４）作成した駆動データに基づいてアームを駆動する。以下、上記（１）〜（４）を繰り返すことで、楽譜データから順に音符データを１つずつ処理し、リアルタイムで楽曲を演奏するようにしてもよい。
【００４５】
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００４６】
【図１】ドラム演奏ロボットの模式図である。
【図２】ドラム演奏システムのブロック図である。
【図３】アーム振り分け処理を示すフローチャートである。
【図４】楽譜データを譜面化した図である。
【図５】アームの動作処理を示すフローチャートである。
【図６】アームの移動軌道を示すグラフである。
【図７】アームの移動軌道を示すグラフである。
【図８】アームの移動軌道を示すグラフである。
【図９】アームの移動軌道を示すグラフである。
【図１０】アームの移動軌道を示すグラフである。
【図１１】アームの移動軌道を示すグラフである。
【符号の説明】
【００４７】
１０：ドラム演奏ロボット
２０：左アーム
３０：右アーム
４０：ドラムセット
４２、４４、４６：ドラム
６０：アーム動作決定装置
６２：楽譜データ入力部
６４：音符データ選択部
６６：アーム位置決定部
６８：アーム決定部
８０：コントローラ
８２ａ、８２ｂ、８２ｃ、８４ａ、８４ｂ、８４ｃ：モータ
８６ａ、８６ｂ、８６ｃ、８８ａ、８８ｂ、８８ｃ：アーム位置検出部
【図１】
2008026724.tif 000003
【図２】
2008026724.tif 000004
【図３】
2008026724.tif 000005
【図４】
2008026724.tif 000006
【図５】
2008026724.tif 000007
【図６】
2008026724.tif 000008
【図７】
2008026724.tif 000009
【図８】
2008026724.tif 000010
【図９】
2008026724.tif 000011
【図１０】
2008026724.tif 000012
【図１１】
2008026724.tif 000013