ドラム演奏システム、ドラム演奏装置、アーム動作決定装置及びドラム演奏方法
【課題】ドラムの数よりも少ないアームで演奏可能なドラム演奏システムを提供すること。
【解決手段】本発明のドラム演奏システム100は、ドラム演奏装置10と、そのドラム演奏装置のアーム20、30の動作を決定するアーム動作決定装置60を有するドラム演奏システムである。アーム動作決定装置は、楽譜データ入力部62と、音符データ選択手部64と、アーム決定部66と、アーム位置決定部68を有している。本システムにおいて、アーム動作決定装置は、データ選択手段によって楽譜データから音符データを順次選択すると共にそれら選択した各音符データについてアーム決定手段及びアーム位置決定手段によってその音符データを演奏するアームを決定することで、楽譜データの全ての音符データについて演奏するアームを決定する。
【解決手段】本発明のドラム演奏システム100は、ドラム演奏装置10と、そのドラム演奏装置のアーム20、30の動作を決定するアーム動作決定装置60を有するドラム演奏システムである。アーム動作決定装置は、楽譜データ入力部62と、音符データ選択手部64と、アーム決定部66と、アーム位置決定部68を有している。本システムにおいて、アーム動作決定装置は、データ選択手段によって楽譜データから音符データを順次選択すると共にそれら選択した各音符データについてアーム決定手段及びアーム位置決定手段によってその音符データを演奏するアームを決定することで、楽譜データの全ての音符データについて演奏するアームを決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ドラムの数よりも少ないアームを有するドラム演奏装置におけるドラムの打ち分け技術に関する。
【背景技術】
【0002】
MIDI(Musical Instrument Digital Interface)規格等の楽譜データは、楽曲を構成する音符の特性がコード化された音符データが集合したデータである。通信カラオケやテレビゲーム等の出力媒体は、楽譜データに基づいて楽曲を再生している。楽譜データには、音の高さ、長さ、間隔、強さ等のコード(音符データ)を羅列した楽譜が記述されている。楽譜データを認識して出力される楽曲は、人間が演奏する楽曲のような風合いを有していない。特許文献1は、楽譜データのドラムパートのコードパターンを読み取り演奏する際に、楽曲中に音の強弱や速度変化を交える技術を開示している。特許文献1に記載の技術は、楽譜データに音の強弱や音の速度変化を加え、楽曲の出力媒体が演奏する音楽を人間が演奏する音楽に近づけている。
【0003】
【特許文献1】特開2000−200086号公報
【0004】
ところで、楽譜データのコードに基づいて、実際にドラムを叩いて演奏するドラム演奏装置がある。この種のドラム演奏装置は、ドラムを叩くためのアームを有している。アームはスティックを保持し、アームを上下に作動することによってドラムを演奏する。複数のドラムを演奏する場合、通常、ドラム毎にアームを設け、各ドラムを対応するアームによって演奏する。例えば、1つのドラムを演奏するには1本のアームを設け、2つのドラムを演奏するには2本のアームを設ける。
しかしながら、ドラム毎にアームを設けることとすると、演奏するドラムの数が多くなるとアームの数も増え、演奏装置が大型化してしまう。したがって、複数のドラムをドラムの数より少ないアームで打ち分けて演奏することが求められている。また、人型のロボットにドラムを演奏させる場合、基本的には2つのアーム(右手、左手)でドラムを演奏しなければならない。1つのアームで1つのドラムしか演奏できないこととなると、演奏できるドラムの数が2つとなり、多様な楽曲を演奏することができない。したがって、人型のロボットにドラムを演奏させる場合、2つのアームで3つ以上のドラムを打ち分けることが望まれている。
【0005】
前記したように楽譜データは、音の特徴がコード化された音符データの集合体である。ドラムの数より少ないアームで打ち分けを行う場合、楽譜データ中の音符データ毎にその音符データをどのアームで演奏するかを決定しなければならない。例えば、最初の音は第1アーム、2番目の音は第2アーム、3番目のドラムは第2アーム・・・・というように、音符毎に演奏するアームを指定しなければならない。この際、音の高さ(音程)から決まるドラム(ドラムの種類)とアームの位置関係、並びに音の間隔(音符長)から決まる発音間隔とアームの移動時間の関係を考えなければならない。従来はドラムの打ち分けの決定を人が行っていたため、多大な労力と時間を必要とした。
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明は、複数のドラムをドラムの数より少ないアームで打ち分けるドラム演奏装置において、楽譜データ中の各音符データをいずれのアームで演奏するかの指定を人が行わなくても、楽譜データに基づいてドラムを演奏することができる技術を実現することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置と、そのドラム演奏装置の各アームの駆動データを作成する駆動データ作成装置と、を有するドラム演奏システムである。
本システムの駆動データ作成装置は、音符データ選択部と、アームの駆動データ作成部を有している。音符データ選択部は、楽譜データの中から順に1の音符データを選択する。アームの駆動データ作成部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成する。
本システムのドラム演奏装置は、アーム毎に設けられた、アームを駆動するアクチュエータと、駆動データ作成装置によって作成された各アームの駆動データに基づいて、各アクチュエータを駆動するコントローラと、を有している。
【0008】
本明細書において「ドラム」とは、叩くことで音を発する楽器をいう。ここでいう「ドラム」には、スネアドラム等の膜鳴楽器だけでなく、ハイハットシンバル等の一部の体鳴楽器も含まれる。また、「ドラム」には、音源モジュールを設定して打撃音の種類を変更できる電子ドラムも含まれる。
本明細書において「楽譜データ」とは、楽曲を構成する一つ一つの音符データ(音符)の特性が記録されているデータを言う。例えばMIDI規格に基づいて音毎にコード化されて記録されている楽譜データが挙げられる。
本明細書において「音符データ」とは、音の高さ、音の長さの情報を有しているデータを言う。打点位置に限定されず略単一の音を発するドラムの場合、音符データの音程によりドラムの種類を決定することができる。打点位置により発する音程が変化するドラム(例えば、ティンパニ)の場合、音符データの音程によりドラムの種類と打点位置を決定することができる。
本明細書において「音符長」とは、連続した2音の間の発音間隔であり、次の音を発音(実行)するまでの時間の長さをいう。連続した2音で最初の音が8分音符ならば、8分音符の長さが音符長になる。また、2つの音符データの間に8分休符があり最初の音が8分音符ならば、4分音符の長さが音符長になる。
本明細書において「ドラム演奏装置」とは、ドラムを実際に叩いて演奏する装置である。ドラム演奏装置は、アームで直接ドラムを叩いてもよく、アームにスティック(撥)を保持して叩いてもよい。ドラム演奏装置の典型的な例として、2つのアームを有する人型のロボットが挙げられる。
本システムの駆動データ作成装置は、楽曲の演奏中にリアルタイムにアームの駆動データを作成してもよく、楽曲の開始前に、楽曲を通したアームの駆動データを作成するものであってもよい。
【0009】
上記のシステムでは、直前に選択された音符データから決まる動作時間と、ドラム演奏装置のアームの位置と、楽譜データから選択した音符データの音程から決まるドラムの位置関係から、その音符データを実行するアームを決定し、各アームの駆動データを作成する駆動データ作成部を備えている。したがって、本システムに組み込まれたドラム演奏装置は、楽譜データを入力するだけで楽曲を演奏することができる。上記のシステムが構築されていることで、楽譜データ中の各音符データをいずれのアームで演奏するかの指定を人が行わなくてもよい。
【0010】
本発明の好ましいシステムでは、駆動データ作成装置が、選択された音符データの音程から演奏するドラムを決定するドラム決定部と、選択された音符データの音符長から動作時間を決定する動作時間決定部をさらに有している。
このシステムでは、音符データの音程から演奏するドラムが決定される。演奏するドラムが決定されると、各アームの位置と演奏するドラムの位置関係から、各アームの動作距離を決定することができる。また、連続した2音の発音間隔(音符長)は、前音を演奏してから次の音を演奏するまでの時間である。一方、前音を発した直後のアームの位置から次音のドラムの打点位置までの移動距離とアームの作動速度の関係から、アームの移動にかかる時間を算出することができる。したがって、アームの動作時間と音符長の関係から、どのアームで次音を発するかが決定される。
【0011】
本発明の好ましいドラム演奏システムは、駆動データ作成部が、今回選択された音符データの音量をさらに用いて、その音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成することを特徴とする。
音量は、アームがドラムを打撃する速度で決まる。音量が大きいほど、アームがドラムを打撃する速度は早くなる。その速度に応じて、アームの振り上げ幅は変動する。つまり、音量に応じて、アームの動作軌道は変動する。本システムによれば、出力する音量をアームの駆動データに反映することができる。
【0012】
ここで開示される他の発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置である。
本ドラム演奏装置は、アーム毎に設けられた、アームを駆動するアクチュエータと、楽譜データを入力する楽譜データ入力部と、入力された楽譜データの中から順に1の音符データを選択する音符データ選択部と、音符データを演奏するアームを決定するアーム決定部と、決定されたアームの駆動データを作成する駆動データ作成部と、作成された駆動データに基づいて、決定されたアームのアクチュエータを駆動するアーム駆動部と、を有することを特徴とする。
前記アーム決定部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する。前記駆動データ作成装置は、決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームを駆動する。
上記の構成を有するドラム演奏装置は、楽譜データを入力するだけで、ドラムを演奏することができる。
【0013】
ここで開示される他の発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置の各アームの動作を決定するアーム動作決定装置である。
本アーム動作決定装置は、楽譜データを入力する楽譜データ入力部と、楽譜データの中から順に1の音符データを選択する音符データ選択部と、音符データを演奏するアームを決定するアーム決定部と、を有していることを特徴とする。
前記アーム決定部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定する
本アーム動作決定装置は、楽譜データを入力するだけで、楽譜データ中の各音符データをいずれのアームで演奏するかを決定することができる。
【0014】
ここで開示する他の発明は、複数の音符データから構成される楽譜データに基づいて、複数のドラムをドラムの数よりも少ないアームで打ち分けて演奏するドラム演奏方法である。
本ドラム演奏方法は、楽譜データの中から1の音符データを選択する工程と、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する工程と、決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する工程と、作成された駆動データに基づいて決定されたアームを駆動する工程と、を有することを特徴とする。
上記の方法でドラム演奏装置のアームを駆動すると、入力された楽譜データの楽曲に応じた、自動演奏を実現することができる。
【発明を実施するための最良の形態】
【0015】
ここでは、下記の実施例に記載する技術の主な特徴をまとめておく。
(特徴1)
複数のドラムをドラムの数より少ないアームで打ち分けるドラム演奏装置の各アームの動作を決定するアーム動作決定装置であり、
複数の音符データから構成される楽譜データを入力する楽譜データ入力部と、
各アームの初期位置を入力するアーム初期位置入力部と、
入力された楽譜データから最初の音符データを選択する第1音符データ選択部と、
選択された最初の音符データの音程から決まるドラムの位置と、入力されたアームの初期位置とから、最初の音符データを演奏するアームを決定する第1アーム決定部と、
第1アーム決定部の決定結果と入力された各アームの初期位置から、最初の音符データを演奏した後の各アームの位置を決定する第1アーム位置決定部と、
入力された楽譜データから次の音符データを選択する第2音符データ選択部と、
選択された次の音符データの音程から決まるドラムの位置と、直前の音符データの音符長から決まる動作時間と、直前の音符データが演奏された後の各アームの位置とから、選択された次の音符データを演奏するアームを決定する第2アーム決定部と、
第2アーム決定部の決定結果と直前の音符データが演奏された後の各アームの位置とから、次の音符データを演奏した後の各アームの位置を決定する第2アーム位置決定部と、を有しており、
第2音符データ選択部によって楽譜データから音符データを順次選択すると共に選択した音符データを演奏するアームを第2アーム決定部及び第2アーム位置決定部によって決定することで、楽譜データの全ての音符データについて演奏するアームを決定するアーム動作決定装置。
(特徴2)
アーム動作決定装置は、アーム毎に、そのアームで演奏するように決定された1又は複数の音符データに基づいて、そのアームの駆動データを作成する駆動データ作成部を有している。
(特徴3)楽譜データは、音の特徴がMIDI規格に基づいたデータである。
(特徴4)ドラム演奏ロボットは、アームの先端にスティックを保持しており、アームの先端に保持されているスティックでドラムは叩かれる。
(特徴5)複数のドラムは、それぞれ異なる音程で発音する。
(特徴6)同一のドラムを連続して叩くパターンで打撃間隔が所定の時間より短い場合は、2打目のアームは、1打目と異なるアームが選択される。
(特徴7)楽譜データの音量の情報により、ドラムを叩くときのアームの振り上げ高さが決定される。
【実施例】
【0016】
本発明の一実施例に係るドラム演奏システム100について説明する。図2に示すように、ドラム演奏システム100は、ドラム演奏ロボット10と、ドラム演奏ロボット10の各アーム20、30の動作を決定するアーム動作決定装置60によって構成されている。まず、ドラム演奏ロボット10について説明する。
図1に本実施例のドラム演奏ロボット10(ドラム演奏装置の一実施例)を示す。ドラム演奏ロボット10は、2本のアーム20、30で異なる3種類のドラム42、44、46を打ち分ける。ドラム演奏ロボット10は、頭部14と体幹16と右アーム30と左アーム20と図示しない2つの車輪から構成されている。
【0017】
2つの車輪は、体幹16の左右に備えられている。2つの車輪は、外側から見えないように車輪カバー18、19で覆われている。2つの車輪を図示しないモータで駆動することで、ドラム演奏ロボット10は移動することができる。
【0018】
ドラム演奏ロボット10のアーム20、30は、上腕部25、35、下腕部24、34、手部32(左アームの手部は図示していない)を有している。上腕部25、35の上端は、肩関節26c、36cを介して体幹16と接続している。上腕部25、35の下端は、肘関節36b(左アームの肘関節は図示していない)を介して下腕部24、34の上端と接続している。下腕部24、34の下端は手首関節36aを介して手部32(左アームの手首関節及び手部は図示していない)と接続している。手部32は、ドラム42、44、46を直接叩くスティック(撥)37(左アームの手部及びスティックは図示していない)を保持している。
肩関節26c、36c、肘関節36b、手首関節36aには、回転式のモータ82a〜82c、84a〜84cがそれぞれ備えられている。それぞれの関節26c、36c、36b、36aのモータ82a〜82c、84a〜84cが回転すると、それぞれの関節26c、36c、36b、36aが所定の方向に屈曲する。関節26c、36c、36b、36aの関節角により、アーム20、30に保持されているスティック37の先端の位置が決まる。楽曲を演奏しないとき、ドラム演奏ロボット10のアーム20、30は、所定の位置(初期位置)で待機している。
図2に示すように、各関節26c、36c、36b、36aの関節角は、位置検出部86a〜86c、88a〜88cによって検出される。位置検出部86a〜86c、88a〜88cからの検出信号は、コントローラ80に入力される。コントローラ80は、位置検出部86a〜86c、88a〜88cからの検出信号に基づいて各関節26c、36c、36b、36aの関節角を取得する。コントローラ80は、取得した各関節26c、36c、36b、36aの関節角から決定される現在のアーム20、30の位置と、アーム動作決定装置60から出力された各アーム20、30の駆動データ(すなわち、アーム20、30の目標位置)とに基づいて、モータ82a〜82c、84a〜84cを制御する(図2参照)。
【0019】
ドラム42、44、46は、音源モジュール48によって音の種類が設定できる電子ドラムである。音源モジュール48は、ドラム42、ドラム46、ドラム44の順で音程が高くなるように各ドラム42、44、46を設定している。ドラム演奏ロボット10側から見て、ドラム42と44は、体幹16の中心よりも左側に位置している。ドラム46は、ドラム演奏ロボット10の体幹16の中心よりも右側に位置している。ドラム42とドラム44は左アーム20に近く、ドラム46は右アーム30に近い。
ドラム42、44、46は、ホルダー52、54、56を介してパイプ50に固定されている。音源モジュール48は、2つのホルダー58、58を介してパイプ50に固定されている。ドラム42、44、46と音源モジュール48が一つのパイプ50に固定され、一つのドラムセット40を組み立てている。このドラムセット40は、ドラム演奏ロボット10の体幹16に固定されている。
なお、ドラムの音量は、スティック37の先端がドラム42、44、46を打撃する時の速度によって決まる。音量を大きくするときには、スティック37の先端の速度を速めるためにアーム20、30を高く振り上げる。振り上げ高さが高くなると、アーム20、30の移動距離が長くなる。ドラムの音量が大きいほど、アーム20、30の移動時間は長くなる。
【0020】
次にアーム動作決定装置60について説明する。図2に示すように、アーム動作決定装置60は、楽譜データ入力部62と、音符データ選択部64と、アーム位置決定部66と、アーム決定部68と、記憶部70と、駆動データ作成部72とを有している。
楽譜データ入力部62には、MIDI規格の楽譜データ(MIDIデータ)が入力される。MIDIデータは、楽曲を構成する一つ一つの音符の情報(音程、音符長、音量等)がコード化された音符データの集合体である。音符データの情報のうち音程の情報は、ドラム演奏ロボット10が打撃するドラムを決定する。音符データの情報のうち音符長の情報は、ドラム演奏ロボット10が次の音符データを実行する(ドラムを叩く)タイミングを決定する。音符データの情報のうち音程の情報は、スティック37の先端がドラムを打撃する時の速度(アームの振り上げ高さ)を決定する。
【0021】
楽譜データ入力部62に入力された楽譜データは、音符データ選択部64によって最初の第1音から楽曲の最後の音まで順次選択される。選択された音の音符データに基づいて、アーム位置決定部66及びアーム決定部68が所定の演算を行い、選択された音を演奏するアームを決定する。
具体的には、音符データ選択部64が第1音を選択すると、選択した第1音の音符データの音程から第1音を発音するドラム42、44、46が決定する。第1音を発する以前のアーム20、30は、所定の初期位置にある。アーム決定部68は、第1音を発音するドラム(42又は44又は46)の位置と各アーム20、30の初期位置の関係から、第1音のドラム(42又は44又は46)を叩くアーム(20又は30)を決定する。記憶部70は、第1音の音符データを実行するアーム(20又は30)を記憶する。
音符データ選択部64が次の音を選択すると、その音程から次の音を発音するドラム42、44、46が決定する。アーム位置決定部66は、記憶部70に記憶している第1音の音符データを実行した直後のアーム20、30の位置を決定する。アーム決定部68は、アーム位置決定部66が決定したアーム20、30の位置と第2音を発音するドラムの位置の関係から、第2音の音符データを実行するアーム(20又は30)を決定する。
第3音以降、アーム位置決定部66及びアーム決定部68は、第2音における手順と同様の手順で、音毎にドラム(42又は44又は46)を打撃するアーム(20又は30)を順次決定する。記憶部70は、各音符データを実行するアーム20、30を記憶する。
【0022】
駆動データ作成部72は、記憶部70に記憶されたデータをもとに、楽曲全体のアーム20、30の駆動データを作成する。駆動データ作成部72で作成されたアーム20、30毎の駆動データは、ドラム演奏ロボット10のコントローラ80に送信される。コントローラ80は、受信した駆動データに基づいてモータ82a〜82c、84a〜84cを制御する。
【0023】
次に、アーム動作決定装置60が行う具体的な処理について説明する。アーム動作決定装置60は、入力された楽譜データの各音符データを左アーム20か右アーム30のいずれで演奏するかを決定する処理(打ち分け処理)を行い、次いで、打ち分け処理によって得られた各アーム20、30の楽譜データから各アーム20、30の駆動データを作成する処理(駆動データ作成処理)を行う。まず、打ち分け処理について図3及び4を参照して説明する。
図3は、入力された楽譜データの各音符データをドラム演奏ロボット10のいずれのアーム20、30で演奏するかを決定する処理(ドラムの打ち分け処理)の手順を示すフローチャートである。ドラム42、44、46の打ち分け処理は、アーム動作決定装置60のアーム位置決定部66とアーム決定部68が主に行っている。
図4は、アーム動作決定装置60に入力される楽譜データを譜面化した楽譜の一例を示している。図4において、上段は、アーム20、30毎に分割する前の楽譜を示しており、中段は、左アーム20が発音する音符データのみを選択した楽曲データの楽譜を示しており、下段は、右アーム30が発音する音符データのみを選択した楽曲データの楽譜を示している。図4において、「ト音(ソ)」はドラム44が発音する音であり、「ヘ音(ファ)」はドラム46が発音する音であり、「ホ音(ミ)」はドラム42が発音する音を示している。
【0024】
図3のフローチャートに沿って、アーム動作決定装置60の打ち分け処理を説明する。
先ず、アーム動作決定装置60の楽譜データ入力部62に楽譜データを入力する(S102)。入力された楽譜データは記憶部70に記憶される。
次いで、アーム決定部68にアーム20、30の初期位置を入力する(S104)。アーム20、30の初期位置は、予め記憶部70に記憶されている。このため、記憶部70に記憶されているアーム20、30の初期位置が、アーム決定部70に入力される。
次に、音符データ選択部64が入力された楽譜データの最初の音符データを選択し(S106)、アーム決定部70は、選択した最初の音符データの音程から最初の音を発音するドラムを決定する(S108)。すなわち、記憶部70に記憶された楽譜データから最初の音符データを選択し、その選択された音符データの音程から演奏するドラムを決定する。
演奏するドラムが決まると、アーム決定部66は、右アーム30と左アーム20の初期位置と第1音を発音するドラム42、44、46の位置から、右アーム30から第1音を発音するドラムまでの距離と、左アーム20から第1音を発音するドラムまでの距離を算出する(S110)。すなわち、各ドラム42、44、46は体幹16に固定されており、その位置が予め既知である。このため、演奏するドラムが決まるとアーム20、30を移動される位置(打撃位置)が決まり、決定された打撃位置とアーム20、30の初期位置から、右アーム30から打撃位置までの距離と左アーム20から打撃位置までの距離とを算出することができる。
右アーム30からの距離と左アーム20からの距離を算出すると、アーム決定部66は、算出された距離が短い方のアーム20、30を選択する(S112)。記憶部70は、最初の音符データを実行するアーム20、30を記憶する(S114)。
例えば、図4上段の楽譜において、最初の音符データ302は、その音程からドラム44で演奏することがわかる。また、アーム20、30の初期位置は、体幹16の正面中央の同一高さの位置に設定されている。したがって、ドラム44は、左アーム20の初期位置に近い。アーム決定部66は、音符データ302を実行するアームとして左アーム20を選択する。記憶部70は、左アーム20側の楽曲データに最初の音符データ302を記憶する(図4中段)。記憶部70は、右アーム30側の楽曲データの最初の音符データ302を休符として記憶する(図4下段)。
【0025】
音符データ選択部64は、楽譜データから次の音符データを選択する(S116)。そして、選択した音符データの音程から、次に発音するドラム42、44、46を決定する(S118)。
次に発音するドラムが決定されると、アーム決定部68は、直前の音符データを演奏した後のアーム20、30の位置と、ステップS118で決定されたドラムの位置と、前音の音符データの音符長から、ステップS116で選択した音符データを演奏するアーム(20又は30)を決定する(ステップS120〜S144)。すなわち、直前の音符データを演奏した直後の各アーム20、30の位置は、楽譜データの最初から順に各音符データを演奏するアームを決定していくことによって特定することができる。直前の音符データを演奏した直後の各アーム20、30の位置が特定できれば、その特定した各アーム20、30の位置と次のドラムの位置から、アーム20、30を次のドラムの位置まで移動させる際の移動距離を算出することができる。ここで、直前の音符データを演奏してから次のドラムを演奏するまでの時間は、直前の音符データの音符長によって決められている。このため、各アーム20、30は、直前の音符データの音符長によって決められた時間内に次のドラムまで移動しなければならない。したがって、アーム決定部68は、直前の音符データの音符長によって決められた時間内に次のドラムまで移動でき、かつ、直前の音符データ演奏後のアーム位置からスムーズに移動することができるアームを、ステップS116で選択した音符データを演奏するアームとして決定する。
【0026】
具体的には、右アーム30と左アーム20の両方が選択されたドラムの位置(このドラムを打撃した後にアームが待機する位置(以下、待機位置ともいう。))にあり(S120がYES判定であり)、前回の音符データの音符長が8分音符よりも短い場合(S122がYES判定の場合)、アーム決定部66は、前回叩いたアームと異なるアームを選択する(S126)。すなわち、両アーム20、30がともにドラム位置にあるためいずれのアーム20、30でも演奏することはできるが、前回の音符データを演奏してから今回の音符データを演奏するまでの間隔が短いため、異なるアームを選択する。これによって、ドラム演奏ロボット10のアーム20、30の動作がスムーズな動き(人間に近い動き)となる。
例えば、図4の音符データ306は、発音するドラムがドラム44である。ドラム44の待機位置には、右アーム30、左アーム20の両方が位置する。一つ前の音符データ304は、右アーム30で演奏している。音符データ304は8分音符であるので、アーム決定部66は左アーム20を選択する。記憶部70は、左アーム20側の楽曲データに音符データ306を記憶する。記憶部70は、右アーム30側の楽曲データの音符データ306の位置を休符として記憶する。
【0027】
一方、右アーム30と左アーム20の両方が選択されたドラムの位置(待機位置)にあり(S120がYES判定であり)、前回の音符データの音符長が8分音符よりも長い場合(S122がNO判定の場合)は、次の音の音量を判定する(S124)。次の音の音量が、所定の音量よりも大きい場合(S124がYES判定の場合)、前回叩いたアーム20、30と異なるアーム30、20を選択する(S126)。音量が大きいとアーム20、30の振り上げ高さが高くなるので、アームの移動時間が長くなる。前回と異なるアームで演奏すれば、次の音の音量が大きくても、前回の音を演奏中に振り上げ動作を開始することによってドラム42、44、46を叩くことができる。
例えば、図4の符号308で示される音符データではドラム44が叩かれる。ドラム44の待機位置には、右アーム30、左アーム20のいずれもが位置している。一つ前の音符データ306は左アーム20で実行している。一つ前の音符データ306は、4分音符であり8分音符よりも音符長が長い。音符データ308にはアクセント記号が付されており、その音量は所定の音量よりも大きい。アーム決定部66は、音符データ308を実行するアームとして前回の音符データ306と異なる右アーム30を選択する。記憶部70は、音符データ308を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ306の位置を休符として記憶する。
【0028】
また、右アーム30と左アーム20の両方が選択されたドラムの位置(待機位置)にあり(S120がYES判定であり)、前回の音符データの音符長が8分音符よりも長く(S122がNO判定であり)、次の音の音量が所定の音量よりも小さい場合(S124がNO判定の場合)、アーム決定部66は、前回叩いたアームと同じアームを選択する(S128)。音量が小さいとアームの振り上げ高さは低い。移動距離が短いので、同じアームを用いてドラムを叩くことができる。
例えば、図4の符号310で示される音符データではドラム44が叩かれる。ドラム44の待機位置には、右アーム30、左アーム20のいずれもが位置している。一つ前の音符データ308は右アーム30で実行している。一つ前の音符データ308は、4分音符であり8分音符よりも音符長が長い。音符データ310にはアクセント記号がなく、音量が所定の音量よりも小さい。アーム決定部66は、音符データ310を実行するアームとして、前回の音符データ308と同じ右アーム30を選択する。記憶部70は、音符データ310を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ310の位置を休符として記憶する。
【0029】
選択されたドラムの位置(待機位置)に右アーム30又は左アーム20のいずれかのアームがあり(S130がYES判定であり)、前回の音符データの音符長が8分音符よりも短い場合(S132がYES判定の場合)、アーム決定部66は、ドラムの位置にあるアームを選択する(S134)。前回の音符データの音符長が8分音符よりも短く、次の音符データの演奏までの時間が短いため、選択されたドラムの位置にあるアームで演奏する。
【0030】
選択されたドラムの位置に右アーム30又は左アーム20のいずれかのアームがあり(S130がYES判定であり)、前回の音符データの音符長が8分音符よりも長い場合(S132がNO判定の場合)、アーム決定部66は、ドラムの待機位置とは異なる位置にあるアーム(20又は30)が選択されたドラムまで移動するのに要する時間を計算し、計算した時間が前回の音符データの音符長より短いか否かを判定する(S136)。すなわち、ドラムの待機位置とは異なる位置にあるアームによって選択されたドラムを叩けるか否かを判定する。
異なる位置にあるアーム(20又は30)が選択されたドラムまで移動するのに要する時間が前回の音符データの音符長よりも短い場合(S136のYES判定の場合)、異なる位置にあるアームで選択されたドラムを叩くことができるので、アーム決定部66は異なる位置にあるアーム(20又は30)を選択する(S138)。
例えば、図4の音符データ324はドラム44が発音する。ドラム44の待機位置には、左アーム20が位置している。一つ前の音符データ322は、左アーム20が実行する。一つ前の音符データ322は、音符長が4分音符であり8分音符よりも音符長が長い。アーム決定部66は、音符データ324を実行するアームとして前回の音符データ322とは異なる右アーム30を選択する。記憶部70は、音符データ324を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ324の位置を休符として記憶する。
【0031】
一方、ステップS136の計算の結果、異なる位置にあるアームがドラムまで移動するのに要する時間が前回の音符データの音符長よりも長い場合(S136のNO判定)、異なるアームでは選択されたドラムを叩くことができないため、アーム決定部66は選択されたドラムの待機位置にあるアームを選択する(S134)。
例えば、図4の符号330で示される音符データでは、ドラム42が叩かれる。ドラム42の待機位置には、左アーム20が位置している。一つ前の音符データ328は左アーム20が実行する。一つ前の音符データ326は、音符長が4分音符である。ドラム42の待機位置に位置していない右アーム30は、最も右側のドラム46の待機位置に位置しており、4分音符の音符長で決まる移動時間内では、最も左側のドラム42には移動できない。このため、アーム決定部66は、音符データ330を実行するアームとして左アーム20を選択する。記憶部70は、音符データ330を左アーム20側の楽曲データに記憶する。記憶部70は、右アーム30側の楽曲データの音符データ330の位置を休符として記憶する。
【0032】
次のドラムの位置(待機位置)にいずれのアーム20、30もない場合(S130がNO判定の場合)、アーム決定部66は、両方のアーム20、30が次のドラムまで移動するのに要する時間を計算する(S140)。少なくとも一方のアームの移動時間が前回の音符データの音符長より短い場合(S140がYES判定の場合)、選択した音符データを演奏できるため、アーム決定部66は移動時間がより短い方のアームを選択する(S142)。
例えば、図4の符号312で示される音符データでは、ドラム46が叩かれる。ドラム46の待機位置には、左アーム20と右アーム30はいずれも位置していない。2つ前の音符データ308と一つ前の音符データ310は左アーム20が実行する。したがって、左アーム20はドラム44の待機位置にある。また、3つ前の音符データ306は右アーム30が実行しており、右アーム30もドラム44の待機位置にある。一つ前の音符データ310は、音符長が8分音符である。ドラム46は、右アーム30側にあるので、アーム決定部66は、音符データ312を実行するアームとして右アーム30を選択する。記憶部70は、音符データ312を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ312の位置を休符として記憶する。
【0033】
選択されたドラムの位置(待機位置)にいずれのアーム20、30もなく(S130がNO判定)、いずれのアームの移動時間も前回の音符データの音符長より長い場合(S140がNO判定の場合)、アーム動作決定装置60は、次の音の演奏をあきらめ、記憶部にその音符データを休符として記憶する(S146)。
【0034】
ステップS148に進むと、アーム決定部68は全ての音符データについて、演奏するアームを決定したか否かを判定する。全ての音符データについて演奏するアームを決定している場合(ステップS148でNO)は処理を終了し、全ての音符データについて演奏するアームを決定していない場合(ステップS148でYES)はステップS116に戻って、ステップS116からの処理を繰り返す。これによって、全ての音符データについて演奏するアームが決定される。
上記の手順で音符データ毎にアームの振り分け処理を最後の音符データまで行うと、記憶部70には、左アーム20用の楽曲データ(図4の中段)と、右アーム30用の楽曲データ(図4の下段)が記憶されている。
【0035】
上述した手順で各アーム20、30の楽曲データが作成されると、アーム動作決定装置60は、アーム20、30毎の楽曲データから、アーム20、30毎に駆動データを作成する。なお、駆動データとは、アーム20、30が移動する軌跡を規定するデータである。以下、各アーム20、30の楽曲データから各アーム20、30の駆動データを作成する手順について、図5〜図11を参照して説明する。
図5は、アーム20、30毎の駆動データを駆動データ作成部72が作成する手順を示すフローチャートである。図6〜図11は、アーム20、30の移動軌道を示すグラフである。図6〜図11において、横軸は時間を示しており、上段のグラフの縦軸はアームの高さ方向の位置を示しており、下段のグラフの縦軸はアームの水平方向の位置を示している。なお、図8、9では、水平方向にアームが動かない場合を示しているので、下段のグラフを省略している。また、上段の縦軸のh0は打点位置、fはアームの初期位置、hは振り上げ高さ、mは移動中間点、wは待機位置をそれぞれ示している。なお、実施例に係るドラム演奏ロボット10では、手部32とスティック37の間に遊びが形成されている。このため、ドラムの打点位置は、ドラムの膜面よりも少し下に設定されている。したがって、スティック37の先端がドラム42、44、46の膜面を打撃すると、手部32に対してスティック37がドラム上方に逃げ、スティック37の先端がドラム42、44、46の膜面から僅かに離れた状態で静止する。
一方、下段縦軸のfはアームの初期位置を示しており、dは最初のドラムの位置を示しており、d1は前回の音符データのドラムの位置を示しており、d2は次のドラムの位置を示しており、mは移動中間点を示している。
また、図6、7の横軸のtは、最初の音符データを実行するまでの準備時間を示している。図8〜11の横軸のtは、前回の音符データが実行されてから次の音符データが実行されるまでの時間(発音間隔)を示している。また、t1は、前回の音符データが終わってからアームが動き出すまでの静止時間を示しており、t2は、移動中間点又は待機位置までの移動時間を示しており、t3は移動中間点または待機位置から振り上げ位置までの移動時間を示しており、t4は振り上げ位置から打点位置までの移動時間を示している。
【0036】
図5に示すように、駆動データ作成部72は、まず、アーム20、30の初期位置を認識する(S202)。次に、駆動データ作成部72は、最初の音符データの音程から最初に演奏するドラムの位置を認識し(S204)、その認識したドラムの位置と最初の音符データの音量からアームの振り上げ位置を決定する(S206)。アームの振り上げ位置を決定すると、駆動データ作成部72は、初期位置から振り上げ位置までの移動中間点mを算出する(S208)。すなわち、楽譜データの中の各音符データをいずれのアームで演奏するかは、上述した打ち分け処理によって既に決定されている。したがって、ステップS202で認識したアーム20、30の初期位置のうち演奏に用いるアームの初期位置と、ステップS206で決定したアームの振り上げ位置から、移動中間点mを算出する。
移動中間点mが算出されると、駆動データ作成部72は、最初の音符データを演奏するアームの初期位置と最初に演奏するドラム(42又は44又は46)との位置関係を判断する(S210)。具体的には、最初の音符データを演奏するアームの初期位置より演奏するドラム(ステップS204で認識したドラムの位置)が外側に位置するのか、内側に位置するのかを判断する。
演奏するドラムの位置が演奏するアームの初期位置よりも外側であると判断した場合(ステップS210がYES判定)、駆動データ作成部72は、まず、アーム(すなわち、演奏するアーム)が移動中間点まで移動する駆動データを作成する(S216)。次いで、駆動データ作成部72は、アーム(演奏するアーム)が移動中間点から振り上げ位置まで移動し、その後、打点位置に向けて移動するように駆動データを作成する(S218、S220)。こうして作成された駆動データは記憶部70に記憶される。
図6は、演奏するドラムの位置がアームの初期位置よりも外側にあると判断されたときのアームの軌道パターンの典型的な例を示している。図6に示す軌道パターンでは、先ず、アームは時間t2の間に移動中間点mまで移動する。次の時間t3の間に、アームは移動中間点mからアームの振り上げ位置hまで移動する。そして時間t4の間に、アームは打点位置h0まで振り下ろされる。
【0037】
一方、ステップS210において、演奏するドラムの位置が演奏するアームの初期位置よりも内側であると判断した場合(ステップS210でNO判定)、駆動データ作成部72は、初期位置で静止し(S212)、まず、演奏するアームが他のアームと干渉しないかを判断する(S214)。すなわち、演奏するドラムの位置が演奏するアームの初期位置よりも内側にある場合、演奏するアームをドラムに向かって移動させると、そのアームが他のアームに接近する方向に移動することとなり、両アームが接触する可能性が生じる。そこで、一旦初期位置で停止し、そのアームと他のアームが干渉しないかを判断する。
アーム20、30同士の動作が干渉する場合(ステップS214でYES判定)は、アーム20、30の動作の干渉が生じなくなるまで待機する。一方、アーム20、30同士の動作が干渉しない場合(ステップS214でNO判定)、駆動データ作成部72は移動中間点に演奏するアームが移動するように駆動データ(軌道パターン)を作成する(S216)。その後、先程と同様に、演奏するアームが移動中間点からドラムの振り上げ位置まで移動し、その後に、打点位置に向けて移動するように駆動データを作成する(S218、S220)。作成された最初の音符データの駆動データは記憶部70に記憶される。
図7は、演奏するドラムの位置が演奏するアームの初期位置よりも内側にある場合のアームの軌道パターンの典型的な例を示している。図7に示す軌道パターンでは、先ず、演奏するアームはt1の間は移動することなく、他方のアームとの干渉を回避する。干渉を回避した後、t2の間に初期位置fから移動中間点mまで移動する。その後、t3の間に移動中間点mから振り上げ位置hまで移動し、時間t4の間に打点位置h0まで振り下ろされる。
【0038】
上述した処理によって最初の音符データを演奏するアームの駆動データが作成されると、駆動データ作成部72は、次の音符データを演奏するアーム(20又は30)の駆動データを作成する。すなわち、次に演奏する音符データの音程から次のドラムの位置を認識し(S222)、その認識したドラムの位置と次の音符データの音量から、アーム(次の音符データを演奏するアーム)の振り上げ位置を決定する(S224)。
次いで、前回のドラム(42又は44又は46)と次のドラム(42又は44又は46)が同一のドラムが否かを判定する(S226)。前回のドラムと次のドラムが同一のドラムの場合(ステップS226でYES判定)、駆動データ作成部72は、前回のドラムを発音してから次のドラムが発音されるまでの時間間隔(音符長によって決まる発音間隔)が演奏するアームをスイングする時間より長いか否かを判定する(S228)。すなわち、演奏するアームの現在の位置とステップS224で決定された振り上げ位置と演奏するドラムの位置から、アームを移動(スイング)させる距離が分かるため、この距離とアームの移動速度からアームの移動時間(スイング時間)を算出し、算出したスイング時間より前回のドラムを発音してから次のドラムが発音されるまでの時間間隔が長いか否かを判定する。
【0039】
アームの振り上げと振り下げに要するスイング時間(図8におけるt3とt4の和)が発音間隔よりも長い場合(ステップS228でYES判定)、駆動データ作成部72は、前回の打点位置でアームを待機し(S229)、次の音を発するタイミングに合わせてアームを駆動するように駆動データを作成する(S242、244)。このときのアームの軌道パターンを図8のグラフに示す。アームは先ず打点位置h0で保持される。この保持時間t1は、発音間隔tからスイング時間(t3+t4)を差し引いた時間である。時間t1の間、打点位置h0で保持した後、アームは時間t3をかけて振り上げ位置hに向けて移動し、時間t4をかけて打点位置h0まで振り下ろされる。
一方、アームの振り上げと振り下げに要するスイング時間が発音間隔よりも短い場合(ステップS228でNO判定の場合)、駆動データ作成部72は、アームを事前待機位置まで移動する駆動データを作成し(S230)、次いで、所定のタイミングで事前待機位置から振り上げ位置まで移動する駆動データを作成し(S242)、最後に、振り上げ位置から振り下げ位置まで移動する駆動データを作成する(S244)。すなわち、アームの振り上げと振り下げに要するスイング時間が発音間隔よりも短い場合には、前の音符データを演奏してからアームを動かしていては、次の音符データを演奏することができない。このため、前の音符データの演奏(発音)が行われる前にアームを事前待機位置まで移動させ、その後の所定のタイミングでアームの振り上げ及び振り下げを行う。
このときのアームの軌道パターンの一例を図9のグラフに示している。図9に示すように、アームは前の音符データが演奏されるタイミング(t0)より時間t1だけ遡ったタイミングで事前待機位置wまで移動し、その後、所定の時間t2の間に振り上げ動作を実行し、次の音を発音するタイミングまでの時間t3の間に打点位置h0まで移動する。なお、上述の説明から明らかなように、ステップS230の処理を行うときは、演奏するアーム(すなわち、駆動データが作成されるアーム)は前の音符データを演奏したアームとは異なるアームとなる。
【0040】
次に、演奏するドラムが前回のドラムと異なる場合(ステップS226でNO判定)、駆動データ作成部72は、アームの現在の位置fから演奏するドラムまでの移動中間点mを算出し(S232)、次いで、現在のアームの位置と次のドラムの位置関係を判断する(S234)。すなわち、アームが次のドラムまで移動する場合に、アームが外方向に移動するか、内方向に移動するかを判断する。
アームが外方向に移動すると判断した場合(ステップS234がYES判定の場合)、駆動データ作成部72は、アームを移動中間点mまで移動する駆動データを作成し(S236)、次いで、移動中間点mから振り上げ位置hまで移動する駆動データを作成し(S242)、振り上げ位置hから打点位置h0に向けて移動する駆動データを作成する(S244)。図10は、上記の軌道パターンの典型例を示している。上記の軌道パターンでは、先ず、アームは時間t2の間に移動中間点mまで移動する。時間t3の間に、アームは移動中間点からアームの振り上げ位置hまで移動する。そして時間t4の間に、アームは打点位置h0まで振り下ろされる。
【0041】
一方、ステップS234において、アームが内方向に移動すると判断した場合(NO判定の場合)、駆動データ作成部72は、アームは現在の位置(すなわち、前のドラムの打点位置)で静止し(S236)、他のアームと干渉するか否かを判定する(S238)。そして、他のアームと干渉すると判定される場合(ステップS238でYES)は、他のアームとの干渉がなくなるまで待機する。逆に、他のアームと干渉しないと判定される場合(ステップS238でNO)は、アームを移動中間点mまで移動する駆動データを作成し(S236)、次いで、移動中間点mから振り上げ位置hまで移動する駆動データを作成し(S242)、振り上げ位置hから打点位置h0に向けて移動する駆動データを作成する(S244)。
図11は、上記の軌道パターンの典型的な例を示している。先ず、アームはt1の間その場で待機し、他方のアームとの干渉を回避する。干渉を回避した後、t2の間に移動中間点mまで移動する。その後、t3の間に、移動中間点mから振り上げ位置hまで移動する。そして時間t4の間に、アームは打点位置h0まで振り下ろされる。
【0042】
ステップS246に進むと、駆動データ作成部72は全ての音符データについて駆動データを作成したか判定する。全ての音符データについて駆動データを作成している場合(ステップS246でNO)は処理を終了し、全ての音符データについて駆動データを作成していない場合(ステップS246でYES)はステップS222に戻って、ステップS222からの処理を繰り返す。これによって、全ての音符データについて駆動データが作成される。
上記の手順で作成された駆動データは、記憶部70に記憶されると共にドラム演奏ロボット10のコントローラ80に出力される。コントローラ80は、入力した駆動データに基づいて各アームを駆動することで、3つのドラムを2つのアームで打ち分けながらドラム演奏をする。
【0043】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例をさまざまに変形、変更したものが含まれる。
【0044】
なお、上述の実施例では、楽譜データを構成する全ての音符データについて振り分け処理を行い、その後に駆動データの作成処理を行うようにしたが、本発明はこのような形態に限られない。例えば、(1)楽譜データから順に音符データを選択し、(2)その選択した音符データについて演奏するアームを決定し、(3)決定したアームの現在位置とその音符データの音程、音量に基づいて、演奏するアームの駆動データを作成し、(4)作成した駆動データに基づいてアームを駆動する。以下、上記(1)〜(4)を繰り返すことで、楽譜データから順に音符データを1つずつ処理し、リアルタイムで楽曲を演奏するようにしてもよい。
【0045】
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【0046】
【図1】ドラム演奏ロボットの模式図である。
【図2】ドラム演奏システムのブロック図である。
【図3】アーム振り分け処理を示すフローチャートである。
【図4】楽譜データを譜面化した図である。
【図5】アームの動作処理を示すフローチャートである。
【図6】アームの移動軌道を示すグラフである。
【図7】アームの移動軌道を示すグラフである。
【図8】アームの移動軌道を示すグラフである。
【図9】アームの移動軌道を示すグラフである。
【図10】アームの移動軌道を示すグラフである。
【図11】アームの移動軌道を示すグラフである。
【符号の説明】
【0047】
10:ドラム演奏ロボット
20:左アーム
30:右アーム
40:ドラムセット
42、44、46:ドラム
60:アーム動作決定装置
62:楽譜データ入力部
64:音符データ選択部
66:アーム位置決定部
68:アーム決定部
80:コントローラ
82a、82b、82c、84a、84b、84c:モータ
86a、86b、86c、88a、88b、88c:アーム位置検出部
【技術分野】
【0001】
本発明は、ドラムの数よりも少ないアームを有するドラム演奏装置におけるドラムの打ち分け技術に関する。
【背景技術】
【0002】
MIDI(Musical Instrument Digital Interface)規格等の楽譜データは、楽曲を構成する音符の特性がコード化された音符データが集合したデータである。通信カラオケやテレビゲーム等の出力媒体は、楽譜データに基づいて楽曲を再生している。楽譜データには、音の高さ、長さ、間隔、強さ等のコード(音符データ)を羅列した楽譜が記述されている。楽譜データを認識して出力される楽曲は、人間が演奏する楽曲のような風合いを有していない。特許文献1は、楽譜データのドラムパートのコードパターンを読み取り演奏する際に、楽曲中に音の強弱や速度変化を交える技術を開示している。特許文献1に記載の技術は、楽譜データに音の強弱や音の速度変化を加え、楽曲の出力媒体が演奏する音楽を人間が演奏する音楽に近づけている。
【0003】
【特許文献1】特開2000−200086号公報
【0004】
ところで、楽譜データのコードに基づいて、実際にドラムを叩いて演奏するドラム演奏装置がある。この種のドラム演奏装置は、ドラムを叩くためのアームを有している。アームはスティックを保持し、アームを上下に作動することによってドラムを演奏する。複数のドラムを演奏する場合、通常、ドラム毎にアームを設け、各ドラムを対応するアームによって演奏する。例えば、1つのドラムを演奏するには1本のアームを設け、2つのドラムを演奏するには2本のアームを設ける。
しかしながら、ドラム毎にアームを設けることとすると、演奏するドラムの数が多くなるとアームの数も増え、演奏装置が大型化してしまう。したがって、複数のドラムをドラムの数より少ないアームで打ち分けて演奏することが求められている。また、人型のロボットにドラムを演奏させる場合、基本的には2つのアーム(右手、左手)でドラムを演奏しなければならない。1つのアームで1つのドラムしか演奏できないこととなると、演奏できるドラムの数が2つとなり、多様な楽曲を演奏することができない。したがって、人型のロボットにドラムを演奏させる場合、2つのアームで3つ以上のドラムを打ち分けることが望まれている。
【0005】
前記したように楽譜データは、音の特徴がコード化された音符データの集合体である。ドラムの数より少ないアームで打ち分けを行う場合、楽譜データ中の音符データ毎にその音符データをどのアームで演奏するかを決定しなければならない。例えば、最初の音は第1アーム、2番目の音は第2アーム、3番目のドラムは第2アーム・・・・というように、音符毎に演奏するアームを指定しなければならない。この際、音の高さ(音程)から決まるドラム(ドラムの種類)とアームの位置関係、並びに音の間隔(音符長)から決まる発音間隔とアームの移動時間の関係を考えなければならない。従来はドラムの打ち分けの決定を人が行っていたため、多大な労力と時間を必要とした。
【発明の開示】
【発明が解決しようとする課題】
【0006】
本発明は、複数のドラムをドラムの数より少ないアームで打ち分けるドラム演奏装置において、楽譜データ中の各音符データをいずれのアームで演奏するかの指定を人が行わなくても、楽譜データに基づいてドラムを演奏することができる技術を実現することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置と、そのドラム演奏装置の各アームの駆動データを作成する駆動データ作成装置と、を有するドラム演奏システムである。
本システムの駆動データ作成装置は、音符データ選択部と、アームの駆動データ作成部を有している。音符データ選択部は、楽譜データの中から順に1の音符データを選択する。アームの駆動データ作成部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成する。
本システムのドラム演奏装置は、アーム毎に設けられた、アームを駆動するアクチュエータと、駆動データ作成装置によって作成された各アームの駆動データに基づいて、各アクチュエータを駆動するコントローラと、を有している。
【0008】
本明細書において「ドラム」とは、叩くことで音を発する楽器をいう。ここでいう「ドラム」には、スネアドラム等の膜鳴楽器だけでなく、ハイハットシンバル等の一部の体鳴楽器も含まれる。また、「ドラム」には、音源モジュールを設定して打撃音の種類を変更できる電子ドラムも含まれる。
本明細書において「楽譜データ」とは、楽曲を構成する一つ一つの音符データ(音符)の特性が記録されているデータを言う。例えばMIDI規格に基づいて音毎にコード化されて記録されている楽譜データが挙げられる。
本明細書において「音符データ」とは、音の高さ、音の長さの情報を有しているデータを言う。打点位置に限定されず略単一の音を発するドラムの場合、音符データの音程によりドラムの種類を決定することができる。打点位置により発する音程が変化するドラム(例えば、ティンパニ)の場合、音符データの音程によりドラムの種類と打点位置を決定することができる。
本明細書において「音符長」とは、連続した2音の間の発音間隔であり、次の音を発音(実行)するまでの時間の長さをいう。連続した2音で最初の音が8分音符ならば、8分音符の長さが音符長になる。また、2つの音符データの間に8分休符があり最初の音が8分音符ならば、4分音符の長さが音符長になる。
本明細書において「ドラム演奏装置」とは、ドラムを実際に叩いて演奏する装置である。ドラム演奏装置は、アームで直接ドラムを叩いてもよく、アームにスティック(撥)を保持して叩いてもよい。ドラム演奏装置の典型的な例として、2つのアームを有する人型のロボットが挙げられる。
本システムの駆動データ作成装置は、楽曲の演奏中にリアルタイムにアームの駆動データを作成してもよく、楽曲の開始前に、楽曲を通したアームの駆動データを作成するものであってもよい。
【0009】
上記のシステムでは、直前に選択された音符データから決まる動作時間と、ドラム演奏装置のアームの位置と、楽譜データから選択した音符データの音程から決まるドラムの位置関係から、その音符データを実行するアームを決定し、各アームの駆動データを作成する駆動データ作成部を備えている。したがって、本システムに組み込まれたドラム演奏装置は、楽譜データを入力するだけで楽曲を演奏することができる。上記のシステムが構築されていることで、楽譜データ中の各音符データをいずれのアームで演奏するかの指定を人が行わなくてもよい。
【0010】
本発明の好ましいシステムでは、駆動データ作成装置が、選択された音符データの音程から演奏するドラムを決定するドラム決定部と、選択された音符データの音符長から動作時間を決定する動作時間決定部をさらに有している。
このシステムでは、音符データの音程から演奏するドラムが決定される。演奏するドラムが決定されると、各アームの位置と演奏するドラムの位置関係から、各アームの動作距離を決定することができる。また、連続した2音の発音間隔(音符長)は、前音を演奏してから次の音を演奏するまでの時間である。一方、前音を発した直後のアームの位置から次音のドラムの打点位置までの移動距離とアームの作動速度の関係から、アームの移動にかかる時間を算出することができる。したがって、アームの動作時間と音符長の関係から、どのアームで次音を発するかが決定される。
【0011】
本発明の好ましいドラム演奏システムは、駆動データ作成部が、今回選択された音符データの音量をさらに用いて、その音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成することを特徴とする。
音量は、アームがドラムを打撃する速度で決まる。音量が大きいほど、アームがドラムを打撃する速度は早くなる。その速度に応じて、アームの振り上げ幅は変動する。つまり、音量に応じて、アームの動作軌道は変動する。本システムによれば、出力する音量をアームの駆動データに反映することができる。
【0012】
ここで開示される他の発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置である。
本ドラム演奏装置は、アーム毎に設けられた、アームを駆動するアクチュエータと、楽譜データを入力する楽譜データ入力部と、入力された楽譜データの中から順に1の音符データを選択する音符データ選択部と、音符データを演奏するアームを決定するアーム決定部と、決定されたアームの駆動データを作成する駆動データ作成部と、作成された駆動データに基づいて、決定されたアームのアクチュエータを駆動するアーム駆動部と、を有することを特徴とする。
前記アーム決定部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する。前記駆動データ作成装置は、決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームを駆動する。
上記の構成を有するドラム演奏装置は、楽譜データを入力するだけで、ドラムを演奏することができる。
【0013】
ここで開示される他の発明は、複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置の各アームの動作を決定するアーム動作決定装置である。
本アーム動作決定装置は、楽譜データを入力する楽譜データ入力部と、楽譜データの中から順に1の音符データを選択する音符データ選択部と、音符データを演奏するアームを決定するアーム決定部と、を有していることを特徴とする。
前記アーム決定部は、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定する
本アーム動作決定装置は、楽譜データを入力するだけで、楽譜データ中の各音符データをいずれのアームで演奏するかを決定することができる。
【0014】
ここで開示する他の発明は、複数の音符データから構成される楽譜データに基づいて、複数のドラムをドラムの数よりも少ないアームで打ち分けて演奏するドラム演奏方法である。
本ドラム演奏方法は、楽譜データの中から1の音符データを選択する工程と、直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する工程と、決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する工程と、作成された駆動データに基づいて決定されたアームを駆動する工程と、を有することを特徴とする。
上記の方法でドラム演奏装置のアームを駆動すると、入力された楽譜データの楽曲に応じた、自動演奏を実現することができる。
【発明を実施するための最良の形態】
【0015】
ここでは、下記の実施例に記載する技術の主な特徴をまとめておく。
(特徴1)
複数のドラムをドラムの数より少ないアームで打ち分けるドラム演奏装置の各アームの動作を決定するアーム動作決定装置であり、
複数の音符データから構成される楽譜データを入力する楽譜データ入力部と、
各アームの初期位置を入力するアーム初期位置入力部と、
入力された楽譜データから最初の音符データを選択する第1音符データ選択部と、
選択された最初の音符データの音程から決まるドラムの位置と、入力されたアームの初期位置とから、最初の音符データを演奏するアームを決定する第1アーム決定部と、
第1アーム決定部の決定結果と入力された各アームの初期位置から、最初の音符データを演奏した後の各アームの位置を決定する第1アーム位置決定部と、
入力された楽譜データから次の音符データを選択する第2音符データ選択部と、
選択された次の音符データの音程から決まるドラムの位置と、直前の音符データの音符長から決まる動作時間と、直前の音符データが演奏された後の各アームの位置とから、選択された次の音符データを演奏するアームを決定する第2アーム決定部と、
第2アーム決定部の決定結果と直前の音符データが演奏された後の各アームの位置とから、次の音符データを演奏した後の各アームの位置を決定する第2アーム位置決定部と、を有しており、
第2音符データ選択部によって楽譜データから音符データを順次選択すると共に選択した音符データを演奏するアームを第2アーム決定部及び第2アーム位置決定部によって決定することで、楽譜データの全ての音符データについて演奏するアームを決定するアーム動作決定装置。
(特徴2)
アーム動作決定装置は、アーム毎に、そのアームで演奏するように決定された1又は複数の音符データに基づいて、そのアームの駆動データを作成する駆動データ作成部を有している。
(特徴3)楽譜データは、音の特徴がMIDI規格に基づいたデータである。
(特徴4)ドラム演奏ロボットは、アームの先端にスティックを保持しており、アームの先端に保持されているスティックでドラムは叩かれる。
(特徴5)複数のドラムは、それぞれ異なる音程で発音する。
(特徴6)同一のドラムを連続して叩くパターンで打撃間隔が所定の時間より短い場合は、2打目のアームは、1打目と異なるアームが選択される。
(特徴7)楽譜データの音量の情報により、ドラムを叩くときのアームの振り上げ高さが決定される。
【実施例】
【0016】
本発明の一実施例に係るドラム演奏システム100について説明する。図2に示すように、ドラム演奏システム100は、ドラム演奏ロボット10と、ドラム演奏ロボット10の各アーム20、30の動作を決定するアーム動作決定装置60によって構成されている。まず、ドラム演奏ロボット10について説明する。
図1に本実施例のドラム演奏ロボット10(ドラム演奏装置の一実施例)を示す。ドラム演奏ロボット10は、2本のアーム20、30で異なる3種類のドラム42、44、46を打ち分ける。ドラム演奏ロボット10は、頭部14と体幹16と右アーム30と左アーム20と図示しない2つの車輪から構成されている。
【0017】
2つの車輪は、体幹16の左右に備えられている。2つの車輪は、外側から見えないように車輪カバー18、19で覆われている。2つの車輪を図示しないモータで駆動することで、ドラム演奏ロボット10は移動することができる。
【0018】
ドラム演奏ロボット10のアーム20、30は、上腕部25、35、下腕部24、34、手部32(左アームの手部は図示していない)を有している。上腕部25、35の上端は、肩関節26c、36cを介して体幹16と接続している。上腕部25、35の下端は、肘関節36b(左アームの肘関節は図示していない)を介して下腕部24、34の上端と接続している。下腕部24、34の下端は手首関節36aを介して手部32(左アームの手首関節及び手部は図示していない)と接続している。手部32は、ドラム42、44、46を直接叩くスティック(撥)37(左アームの手部及びスティックは図示していない)を保持している。
肩関節26c、36c、肘関節36b、手首関節36aには、回転式のモータ82a〜82c、84a〜84cがそれぞれ備えられている。それぞれの関節26c、36c、36b、36aのモータ82a〜82c、84a〜84cが回転すると、それぞれの関節26c、36c、36b、36aが所定の方向に屈曲する。関節26c、36c、36b、36aの関節角により、アーム20、30に保持されているスティック37の先端の位置が決まる。楽曲を演奏しないとき、ドラム演奏ロボット10のアーム20、30は、所定の位置(初期位置)で待機している。
図2に示すように、各関節26c、36c、36b、36aの関節角は、位置検出部86a〜86c、88a〜88cによって検出される。位置検出部86a〜86c、88a〜88cからの検出信号は、コントローラ80に入力される。コントローラ80は、位置検出部86a〜86c、88a〜88cからの検出信号に基づいて各関節26c、36c、36b、36aの関節角を取得する。コントローラ80は、取得した各関節26c、36c、36b、36aの関節角から決定される現在のアーム20、30の位置と、アーム動作決定装置60から出力された各アーム20、30の駆動データ(すなわち、アーム20、30の目標位置)とに基づいて、モータ82a〜82c、84a〜84cを制御する(図2参照)。
【0019】
ドラム42、44、46は、音源モジュール48によって音の種類が設定できる電子ドラムである。音源モジュール48は、ドラム42、ドラム46、ドラム44の順で音程が高くなるように各ドラム42、44、46を設定している。ドラム演奏ロボット10側から見て、ドラム42と44は、体幹16の中心よりも左側に位置している。ドラム46は、ドラム演奏ロボット10の体幹16の中心よりも右側に位置している。ドラム42とドラム44は左アーム20に近く、ドラム46は右アーム30に近い。
ドラム42、44、46は、ホルダー52、54、56を介してパイプ50に固定されている。音源モジュール48は、2つのホルダー58、58を介してパイプ50に固定されている。ドラム42、44、46と音源モジュール48が一つのパイプ50に固定され、一つのドラムセット40を組み立てている。このドラムセット40は、ドラム演奏ロボット10の体幹16に固定されている。
なお、ドラムの音量は、スティック37の先端がドラム42、44、46を打撃する時の速度によって決まる。音量を大きくするときには、スティック37の先端の速度を速めるためにアーム20、30を高く振り上げる。振り上げ高さが高くなると、アーム20、30の移動距離が長くなる。ドラムの音量が大きいほど、アーム20、30の移動時間は長くなる。
【0020】
次にアーム動作決定装置60について説明する。図2に示すように、アーム動作決定装置60は、楽譜データ入力部62と、音符データ選択部64と、アーム位置決定部66と、アーム決定部68と、記憶部70と、駆動データ作成部72とを有している。
楽譜データ入力部62には、MIDI規格の楽譜データ(MIDIデータ)が入力される。MIDIデータは、楽曲を構成する一つ一つの音符の情報(音程、音符長、音量等)がコード化された音符データの集合体である。音符データの情報のうち音程の情報は、ドラム演奏ロボット10が打撃するドラムを決定する。音符データの情報のうち音符長の情報は、ドラム演奏ロボット10が次の音符データを実行する(ドラムを叩く)タイミングを決定する。音符データの情報のうち音程の情報は、スティック37の先端がドラムを打撃する時の速度(アームの振り上げ高さ)を決定する。
【0021】
楽譜データ入力部62に入力された楽譜データは、音符データ選択部64によって最初の第1音から楽曲の最後の音まで順次選択される。選択された音の音符データに基づいて、アーム位置決定部66及びアーム決定部68が所定の演算を行い、選択された音を演奏するアームを決定する。
具体的には、音符データ選択部64が第1音を選択すると、選択した第1音の音符データの音程から第1音を発音するドラム42、44、46が決定する。第1音を発する以前のアーム20、30は、所定の初期位置にある。アーム決定部68は、第1音を発音するドラム(42又は44又は46)の位置と各アーム20、30の初期位置の関係から、第1音のドラム(42又は44又は46)を叩くアーム(20又は30)を決定する。記憶部70は、第1音の音符データを実行するアーム(20又は30)を記憶する。
音符データ選択部64が次の音を選択すると、その音程から次の音を発音するドラム42、44、46が決定する。アーム位置決定部66は、記憶部70に記憶している第1音の音符データを実行した直後のアーム20、30の位置を決定する。アーム決定部68は、アーム位置決定部66が決定したアーム20、30の位置と第2音を発音するドラムの位置の関係から、第2音の音符データを実行するアーム(20又は30)を決定する。
第3音以降、アーム位置決定部66及びアーム決定部68は、第2音における手順と同様の手順で、音毎にドラム(42又は44又は46)を打撃するアーム(20又は30)を順次決定する。記憶部70は、各音符データを実行するアーム20、30を記憶する。
【0022】
駆動データ作成部72は、記憶部70に記憶されたデータをもとに、楽曲全体のアーム20、30の駆動データを作成する。駆動データ作成部72で作成されたアーム20、30毎の駆動データは、ドラム演奏ロボット10のコントローラ80に送信される。コントローラ80は、受信した駆動データに基づいてモータ82a〜82c、84a〜84cを制御する。
【0023】
次に、アーム動作決定装置60が行う具体的な処理について説明する。アーム動作決定装置60は、入力された楽譜データの各音符データを左アーム20か右アーム30のいずれで演奏するかを決定する処理(打ち分け処理)を行い、次いで、打ち分け処理によって得られた各アーム20、30の楽譜データから各アーム20、30の駆動データを作成する処理(駆動データ作成処理)を行う。まず、打ち分け処理について図3及び4を参照して説明する。
図3は、入力された楽譜データの各音符データをドラム演奏ロボット10のいずれのアーム20、30で演奏するかを決定する処理(ドラムの打ち分け処理)の手順を示すフローチャートである。ドラム42、44、46の打ち分け処理は、アーム動作決定装置60のアーム位置決定部66とアーム決定部68が主に行っている。
図4は、アーム動作決定装置60に入力される楽譜データを譜面化した楽譜の一例を示している。図4において、上段は、アーム20、30毎に分割する前の楽譜を示しており、中段は、左アーム20が発音する音符データのみを選択した楽曲データの楽譜を示しており、下段は、右アーム30が発音する音符データのみを選択した楽曲データの楽譜を示している。図4において、「ト音(ソ)」はドラム44が発音する音であり、「ヘ音(ファ)」はドラム46が発音する音であり、「ホ音(ミ)」はドラム42が発音する音を示している。
【0024】
図3のフローチャートに沿って、アーム動作決定装置60の打ち分け処理を説明する。
先ず、アーム動作決定装置60の楽譜データ入力部62に楽譜データを入力する(S102)。入力された楽譜データは記憶部70に記憶される。
次いで、アーム決定部68にアーム20、30の初期位置を入力する(S104)。アーム20、30の初期位置は、予め記憶部70に記憶されている。このため、記憶部70に記憶されているアーム20、30の初期位置が、アーム決定部70に入力される。
次に、音符データ選択部64が入力された楽譜データの最初の音符データを選択し(S106)、アーム決定部70は、選択した最初の音符データの音程から最初の音を発音するドラムを決定する(S108)。すなわち、記憶部70に記憶された楽譜データから最初の音符データを選択し、その選択された音符データの音程から演奏するドラムを決定する。
演奏するドラムが決まると、アーム決定部66は、右アーム30と左アーム20の初期位置と第1音を発音するドラム42、44、46の位置から、右アーム30から第1音を発音するドラムまでの距離と、左アーム20から第1音を発音するドラムまでの距離を算出する(S110)。すなわち、各ドラム42、44、46は体幹16に固定されており、その位置が予め既知である。このため、演奏するドラムが決まるとアーム20、30を移動される位置(打撃位置)が決まり、決定された打撃位置とアーム20、30の初期位置から、右アーム30から打撃位置までの距離と左アーム20から打撃位置までの距離とを算出することができる。
右アーム30からの距離と左アーム20からの距離を算出すると、アーム決定部66は、算出された距離が短い方のアーム20、30を選択する(S112)。記憶部70は、最初の音符データを実行するアーム20、30を記憶する(S114)。
例えば、図4上段の楽譜において、最初の音符データ302は、その音程からドラム44で演奏することがわかる。また、アーム20、30の初期位置は、体幹16の正面中央の同一高さの位置に設定されている。したがって、ドラム44は、左アーム20の初期位置に近い。アーム決定部66は、音符データ302を実行するアームとして左アーム20を選択する。記憶部70は、左アーム20側の楽曲データに最初の音符データ302を記憶する(図4中段)。記憶部70は、右アーム30側の楽曲データの最初の音符データ302を休符として記憶する(図4下段)。
【0025】
音符データ選択部64は、楽譜データから次の音符データを選択する(S116)。そして、選択した音符データの音程から、次に発音するドラム42、44、46を決定する(S118)。
次に発音するドラムが決定されると、アーム決定部68は、直前の音符データを演奏した後のアーム20、30の位置と、ステップS118で決定されたドラムの位置と、前音の音符データの音符長から、ステップS116で選択した音符データを演奏するアーム(20又は30)を決定する(ステップS120〜S144)。すなわち、直前の音符データを演奏した直後の各アーム20、30の位置は、楽譜データの最初から順に各音符データを演奏するアームを決定していくことによって特定することができる。直前の音符データを演奏した直後の各アーム20、30の位置が特定できれば、その特定した各アーム20、30の位置と次のドラムの位置から、アーム20、30を次のドラムの位置まで移動させる際の移動距離を算出することができる。ここで、直前の音符データを演奏してから次のドラムを演奏するまでの時間は、直前の音符データの音符長によって決められている。このため、各アーム20、30は、直前の音符データの音符長によって決められた時間内に次のドラムまで移動しなければならない。したがって、アーム決定部68は、直前の音符データの音符長によって決められた時間内に次のドラムまで移動でき、かつ、直前の音符データ演奏後のアーム位置からスムーズに移動することができるアームを、ステップS116で選択した音符データを演奏するアームとして決定する。
【0026】
具体的には、右アーム30と左アーム20の両方が選択されたドラムの位置(このドラムを打撃した後にアームが待機する位置(以下、待機位置ともいう。))にあり(S120がYES判定であり)、前回の音符データの音符長が8分音符よりも短い場合(S122がYES判定の場合)、アーム決定部66は、前回叩いたアームと異なるアームを選択する(S126)。すなわち、両アーム20、30がともにドラム位置にあるためいずれのアーム20、30でも演奏することはできるが、前回の音符データを演奏してから今回の音符データを演奏するまでの間隔が短いため、異なるアームを選択する。これによって、ドラム演奏ロボット10のアーム20、30の動作がスムーズな動き(人間に近い動き)となる。
例えば、図4の音符データ306は、発音するドラムがドラム44である。ドラム44の待機位置には、右アーム30、左アーム20の両方が位置する。一つ前の音符データ304は、右アーム30で演奏している。音符データ304は8分音符であるので、アーム決定部66は左アーム20を選択する。記憶部70は、左アーム20側の楽曲データに音符データ306を記憶する。記憶部70は、右アーム30側の楽曲データの音符データ306の位置を休符として記憶する。
【0027】
一方、右アーム30と左アーム20の両方が選択されたドラムの位置(待機位置)にあり(S120がYES判定であり)、前回の音符データの音符長が8分音符よりも長い場合(S122がNO判定の場合)は、次の音の音量を判定する(S124)。次の音の音量が、所定の音量よりも大きい場合(S124がYES判定の場合)、前回叩いたアーム20、30と異なるアーム30、20を選択する(S126)。音量が大きいとアーム20、30の振り上げ高さが高くなるので、アームの移動時間が長くなる。前回と異なるアームで演奏すれば、次の音の音量が大きくても、前回の音を演奏中に振り上げ動作を開始することによってドラム42、44、46を叩くことができる。
例えば、図4の符号308で示される音符データではドラム44が叩かれる。ドラム44の待機位置には、右アーム30、左アーム20のいずれもが位置している。一つ前の音符データ306は左アーム20で実行している。一つ前の音符データ306は、4分音符であり8分音符よりも音符長が長い。音符データ308にはアクセント記号が付されており、その音量は所定の音量よりも大きい。アーム決定部66は、音符データ308を実行するアームとして前回の音符データ306と異なる右アーム30を選択する。記憶部70は、音符データ308を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ306の位置を休符として記憶する。
【0028】
また、右アーム30と左アーム20の両方が選択されたドラムの位置(待機位置)にあり(S120がYES判定であり)、前回の音符データの音符長が8分音符よりも長く(S122がNO判定であり)、次の音の音量が所定の音量よりも小さい場合(S124がNO判定の場合)、アーム決定部66は、前回叩いたアームと同じアームを選択する(S128)。音量が小さいとアームの振り上げ高さは低い。移動距離が短いので、同じアームを用いてドラムを叩くことができる。
例えば、図4の符号310で示される音符データではドラム44が叩かれる。ドラム44の待機位置には、右アーム30、左アーム20のいずれもが位置している。一つ前の音符データ308は右アーム30で実行している。一つ前の音符データ308は、4分音符であり8分音符よりも音符長が長い。音符データ310にはアクセント記号がなく、音量が所定の音量よりも小さい。アーム決定部66は、音符データ310を実行するアームとして、前回の音符データ308と同じ右アーム30を選択する。記憶部70は、音符データ310を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ310の位置を休符として記憶する。
【0029】
選択されたドラムの位置(待機位置)に右アーム30又は左アーム20のいずれかのアームがあり(S130がYES判定であり)、前回の音符データの音符長が8分音符よりも短い場合(S132がYES判定の場合)、アーム決定部66は、ドラムの位置にあるアームを選択する(S134)。前回の音符データの音符長が8分音符よりも短く、次の音符データの演奏までの時間が短いため、選択されたドラムの位置にあるアームで演奏する。
【0030】
選択されたドラムの位置に右アーム30又は左アーム20のいずれかのアームがあり(S130がYES判定であり)、前回の音符データの音符長が8分音符よりも長い場合(S132がNO判定の場合)、アーム決定部66は、ドラムの待機位置とは異なる位置にあるアーム(20又は30)が選択されたドラムまで移動するのに要する時間を計算し、計算した時間が前回の音符データの音符長より短いか否かを判定する(S136)。すなわち、ドラムの待機位置とは異なる位置にあるアームによって選択されたドラムを叩けるか否かを判定する。
異なる位置にあるアーム(20又は30)が選択されたドラムまで移動するのに要する時間が前回の音符データの音符長よりも短い場合(S136のYES判定の場合)、異なる位置にあるアームで選択されたドラムを叩くことができるので、アーム決定部66は異なる位置にあるアーム(20又は30)を選択する(S138)。
例えば、図4の音符データ324はドラム44が発音する。ドラム44の待機位置には、左アーム20が位置している。一つ前の音符データ322は、左アーム20が実行する。一つ前の音符データ322は、音符長が4分音符であり8分音符よりも音符長が長い。アーム決定部66は、音符データ324を実行するアームとして前回の音符データ322とは異なる右アーム30を選択する。記憶部70は、音符データ324を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ324の位置を休符として記憶する。
【0031】
一方、ステップS136の計算の結果、異なる位置にあるアームがドラムまで移動するのに要する時間が前回の音符データの音符長よりも長い場合(S136のNO判定)、異なるアームでは選択されたドラムを叩くことができないため、アーム決定部66は選択されたドラムの待機位置にあるアームを選択する(S134)。
例えば、図4の符号330で示される音符データでは、ドラム42が叩かれる。ドラム42の待機位置には、左アーム20が位置している。一つ前の音符データ328は左アーム20が実行する。一つ前の音符データ326は、音符長が4分音符である。ドラム42の待機位置に位置していない右アーム30は、最も右側のドラム46の待機位置に位置しており、4分音符の音符長で決まる移動時間内では、最も左側のドラム42には移動できない。このため、アーム決定部66は、音符データ330を実行するアームとして左アーム20を選択する。記憶部70は、音符データ330を左アーム20側の楽曲データに記憶する。記憶部70は、右アーム30側の楽曲データの音符データ330の位置を休符として記憶する。
【0032】
次のドラムの位置(待機位置)にいずれのアーム20、30もない場合(S130がNO判定の場合)、アーム決定部66は、両方のアーム20、30が次のドラムまで移動するのに要する時間を計算する(S140)。少なくとも一方のアームの移動時間が前回の音符データの音符長より短い場合(S140がYES判定の場合)、選択した音符データを演奏できるため、アーム決定部66は移動時間がより短い方のアームを選択する(S142)。
例えば、図4の符号312で示される音符データでは、ドラム46が叩かれる。ドラム46の待機位置には、左アーム20と右アーム30はいずれも位置していない。2つ前の音符データ308と一つ前の音符データ310は左アーム20が実行する。したがって、左アーム20はドラム44の待機位置にある。また、3つ前の音符データ306は右アーム30が実行しており、右アーム30もドラム44の待機位置にある。一つ前の音符データ310は、音符長が8分音符である。ドラム46は、右アーム30側にあるので、アーム決定部66は、音符データ312を実行するアームとして右アーム30を選択する。記憶部70は、音符データ312を右アーム30側の楽曲データに記憶する。記憶部70は、左アーム20側の楽曲データの音符データ312の位置を休符として記憶する。
【0033】
選択されたドラムの位置(待機位置)にいずれのアーム20、30もなく(S130がNO判定)、いずれのアームの移動時間も前回の音符データの音符長より長い場合(S140がNO判定の場合)、アーム動作決定装置60は、次の音の演奏をあきらめ、記憶部にその音符データを休符として記憶する(S146)。
【0034】
ステップS148に進むと、アーム決定部68は全ての音符データについて、演奏するアームを決定したか否かを判定する。全ての音符データについて演奏するアームを決定している場合(ステップS148でNO)は処理を終了し、全ての音符データについて演奏するアームを決定していない場合(ステップS148でYES)はステップS116に戻って、ステップS116からの処理を繰り返す。これによって、全ての音符データについて演奏するアームが決定される。
上記の手順で音符データ毎にアームの振り分け処理を最後の音符データまで行うと、記憶部70には、左アーム20用の楽曲データ(図4の中段)と、右アーム30用の楽曲データ(図4の下段)が記憶されている。
【0035】
上述した手順で各アーム20、30の楽曲データが作成されると、アーム動作決定装置60は、アーム20、30毎の楽曲データから、アーム20、30毎に駆動データを作成する。なお、駆動データとは、アーム20、30が移動する軌跡を規定するデータである。以下、各アーム20、30の楽曲データから各アーム20、30の駆動データを作成する手順について、図5〜図11を参照して説明する。
図5は、アーム20、30毎の駆動データを駆動データ作成部72が作成する手順を示すフローチャートである。図6〜図11は、アーム20、30の移動軌道を示すグラフである。図6〜図11において、横軸は時間を示しており、上段のグラフの縦軸はアームの高さ方向の位置を示しており、下段のグラフの縦軸はアームの水平方向の位置を示している。なお、図8、9では、水平方向にアームが動かない場合を示しているので、下段のグラフを省略している。また、上段の縦軸のh0は打点位置、fはアームの初期位置、hは振り上げ高さ、mは移動中間点、wは待機位置をそれぞれ示している。なお、実施例に係るドラム演奏ロボット10では、手部32とスティック37の間に遊びが形成されている。このため、ドラムの打点位置は、ドラムの膜面よりも少し下に設定されている。したがって、スティック37の先端がドラム42、44、46の膜面を打撃すると、手部32に対してスティック37がドラム上方に逃げ、スティック37の先端がドラム42、44、46の膜面から僅かに離れた状態で静止する。
一方、下段縦軸のfはアームの初期位置を示しており、dは最初のドラムの位置を示しており、d1は前回の音符データのドラムの位置を示しており、d2は次のドラムの位置を示しており、mは移動中間点を示している。
また、図6、7の横軸のtは、最初の音符データを実行するまでの準備時間を示している。図8〜11の横軸のtは、前回の音符データが実行されてから次の音符データが実行されるまでの時間(発音間隔)を示している。また、t1は、前回の音符データが終わってからアームが動き出すまでの静止時間を示しており、t2は、移動中間点又は待機位置までの移動時間を示しており、t3は移動中間点または待機位置から振り上げ位置までの移動時間を示しており、t4は振り上げ位置から打点位置までの移動時間を示している。
【0036】
図5に示すように、駆動データ作成部72は、まず、アーム20、30の初期位置を認識する(S202)。次に、駆動データ作成部72は、最初の音符データの音程から最初に演奏するドラムの位置を認識し(S204)、その認識したドラムの位置と最初の音符データの音量からアームの振り上げ位置を決定する(S206)。アームの振り上げ位置を決定すると、駆動データ作成部72は、初期位置から振り上げ位置までの移動中間点mを算出する(S208)。すなわち、楽譜データの中の各音符データをいずれのアームで演奏するかは、上述した打ち分け処理によって既に決定されている。したがって、ステップS202で認識したアーム20、30の初期位置のうち演奏に用いるアームの初期位置と、ステップS206で決定したアームの振り上げ位置から、移動中間点mを算出する。
移動中間点mが算出されると、駆動データ作成部72は、最初の音符データを演奏するアームの初期位置と最初に演奏するドラム(42又は44又は46)との位置関係を判断する(S210)。具体的には、最初の音符データを演奏するアームの初期位置より演奏するドラム(ステップS204で認識したドラムの位置)が外側に位置するのか、内側に位置するのかを判断する。
演奏するドラムの位置が演奏するアームの初期位置よりも外側であると判断した場合(ステップS210がYES判定)、駆動データ作成部72は、まず、アーム(すなわち、演奏するアーム)が移動中間点まで移動する駆動データを作成する(S216)。次いで、駆動データ作成部72は、アーム(演奏するアーム)が移動中間点から振り上げ位置まで移動し、その後、打点位置に向けて移動するように駆動データを作成する(S218、S220)。こうして作成された駆動データは記憶部70に記憶される。
図6は、演奏するドラムの位置がアームの初期位置よりも外側にあると判断されたときのアームの軌道パターンの典型的な例を示している。図6に示す軌道パターンでは、先ず、アームは時間t2の間に移動中間点mまで移動する。次の時間t3の間に、アームは移動中間点mからアームの振り上げ位置hまで移動する。そして時間t4の間に、アームは打点位置h0まで振り下ろされる。
【0037】
一方、ステップS210において、演奏するドラムの位置が演奏するアームの初期位置よりも内側であると判断した場合(ステップS210でNO判定)、駆動データ作成部72は、初期位置で静止し(S212)、まず、演奏するアームが他のアームと干渉しないかを判断する(S214)。すなわち、演奏するドラムの位置が演奏するアームの初期位置よりも内側にある場合、演奏するアームをドラムに向かって移動させると、そのアームが他のアームに接近する方向に移動することとなり、両アームが接触する可能性が生じる。そこで、一旦初期位置で停止し、そのアームと他のアームが干渉しないかを判断する。
アーム20、30同士の動作が干渉する場合(ステップS214でYES判定)は、アーム20、30の動作の干渉が生じなくなるまで待機する。一方、アーム20、30同士の動作が干渉しない場合(ステップS214でNO判定)、駆動データ作成部72は移動中間点に演奏するアームが移動するように駆動データ(軌道パターン)を作成する(S216)。その後、先程と同様に、演奏するアームが移動中間点からドラムの振り上げ位置まで移動し、その後に、打点位置に向けて移動するように駆動データを作成する(S218、S220)。作成された最初の音符データの駆動データは記憶部70に記憶される。
図7は、演奏するドラムの位置が演奏するアームの初期位置よりも内側にある場合のアームの軌道パターンの典型的な例を示している。図7に示す軌道パターンでは、先ず、演奏するアームはt1の間は移動することなく、他方のアームとの干渉を回避する。干渉を回避した後、t2の間に初期位置fから移動中間点mまで移動する。その後、t3の間に移動中間点mから振り上げ位置hまで移動し、時間t4の間に打点位置h0まで振り下ろされる。
【0038】
上述した処理によって最初の音符データを演奏するアームの駆動データが作成されると、駆動データ作成部72は、次の音符データを演奏するアーム(20又は30)の駆動データを作成する。すなわち、次に演奏する音符データの音程から次のドラムの位置を認識し(S222)、その認識したドラムの位置と次の音符データの音量から、アーム(次の音符データを演奏するアーム)の振り上げ位置を決定する(S224)。
次いで、前回のドラム(42又は44又は46)と次のドラム(42又は44又は46)が同一のドラムが否かを判定する(S226)。前回のドラムと次のドラムが同一のドラムの場合(ステップS226でYES判定)、駆動データ作成部72は、前回のドラムを発音してから次のドラムが発音されるまでの時間間隔(音符長によって決まる発音間隔)が演奏するアームをスイングする時間より長いか否かを判定する(S228)。すなわち、演奏するアームの現在の位置とステップS224で決定された振り上げ位置と演奏するドラムの位置から、アームを移動(スイング)させる距離が分かるため、この距離とアームの移動速度からアームの移動時間(スイング時間)を算出し、算出したスイング時間より前回のドラムを発音してから次のドラムが発音されるまでの時間間隔が長いか否かを判定する。
【0039】
アームの振り上げと振り下げに要するスイング時間(図8におけるt3とt4の和)が発音間隔よりも長い場合(ステップS228でYES判定)、駆動データ作成部72は、前回の打点位置でアームを待機し(S229)、次の音を発するタイミングに合わせてアームを駆動するように駆動データを作成する(S242、244)。このときのアームの軌道パターンを図8のグラフに示す。アームは先ず打点位置h0で保持される。この保持時間t1は、発音間隔tからスイング時間(t3+t4)を差し引いた時間である。時間t1の間、打点位置h0で保持した後、アームは時間t3をかけて振り上げ位置hに向けて移動し、時間t4をかけて打点位置h0まで振り下ろされる。
一方、アームの振り上げと振り下げに要するスイング時間が発音間隔よりも短い場合(ステップS228でNO判定の場合)、駆動データ作成部72は、アームを事前待機位置まで移動する駆動データを作成し(S230)、次いで、所定のタイミングで事前待機位置から振り上げ位置まで移動する駆動データを作成し(S242)、最後に、振り上げ位置から振り下げ位置まで移動する駆動データを作成する(S244)。すなわち、アームの振り上げと振り下げに要するスイング時間が発音間隔よりも短い場合には、前の音符データを演奏してからアームを動かしていては、次の音符データを演奏することができない。このため、前の音符データの演奏(発音)が行われる前にアームを事前待機位置まで移動させ、その後の所定のタイミングでアームの振り上げ及び振り下げを行う。
このときのアームの軌道パターンの一例を図9のグラフに示している。図9に示すように、アームは前の音符データが演奏されるタイミング(t0)より時間t1だけ遡ったタイミングで事前待機位置wまで移動し、その後、所定の時間t2の間に振り上げ動作を実行し、次の音を発音するタイミングまでの時間t3の間に打点位置h0まで移動する。なお、上述の説明から明らかなように、ステップS230の処理を行うときは、演奏するアーム(すなわち、駆動データが作成されるアーム)は前の音符データを演奏したアームとは異なるアームとなる。
【0040】
次に、演奏するドラムが前回のドラムと異なる場合(ステップS226でNO判定)、駆動データ作成部72は、アームの現在の位置fから演奏するドラムまでの移動中間点mを算出し(S232)、次いで、現在のアームの位置と次のドラムの位置関係を判断する(S234)。すなわち、アームが次のドラムまで移動する場合に、アームが外方向に移動するか、内方向に移動するかを判断する。
アームが外方向に移動すると判断した場合(ステップS234がYES判定の場合)、駆動データ作成部72は、アームを移動中間点mまで移動する駆動データを作成し(S236)、次いで、移動中間点mから振り上げ位置hまで移動する駆動データを作成し(S242)、振り上げ位置hから打点位置h0に向けて移動する駆動データを作成する(S244)。図10は、上記の軌道パターンの典型例を示している。上記の軌道パターンでは、先ず、アームは時間t2の間に移動中間点mまで移動する。時間t3の間に、アームは移動中間点からアームの振り上げ位置hまで移動する。そして時間t4の間に、アームは打点位置h0まで振り下ろされる。
【0041】
一方、ステップS234において、アームが内方向に移動すると判断した場合(NO判定の場合)、駆動データ作成部72は、アームは現在の位置(すなわち、前のドラムの打点位置)で静止し(S236)、他のアームと干渉するか否かを判定する(S238)。そして、他のアームと干渉すると判定される場合(ステップS238でYES)は、他のアームとの干渉がなくなるまで待機する。逆に、他のアームと干渉しないと判定される場合(ステップS238でNO)は、アームを移動中間点mまで移動する駆動データを作成し(S236)、次いで、移動中間点mから振り上げ位置hまで移動する駆動データを作成し(S242)、振り上げ位置hから打点位置h0に向けて移動する駆動データを作成する(S244)。
図11は、上記の軌道パターンの典型的な例を示している。先ず、アームはt1の間その場で待機し、他方のアームとの干渉を回避する。干渉を回避した後、t2の間に移動中間点mまで移動する。その後、t3の間に、移動中間点mから振り上げ位置hまで移動する。そして時間t4の間に、アームは打点位置h0まで振り下ろされる。
【0042】
ステップS246に進むと、駆動データ作成部72は全ての音符データについて駆動データを作成したか判定する。全ての音符データについて駆動データを作成している場合(ステップS246でNO)は処理を終了し、全ての音符データについて駆動データを作成していない場合(ステップS246でYES)はステップS222に戻って、ステップS222からの処理を繰り返す。これによって、全ての音符データについて駆動データが作成される。
上記の手順で作成された駆動データは、記憶部70に記憶されると共にドラム演奏ロボット10のコントローラ80に出力される。コントローラ80は、入力した駆動データに基づいて各アームを駆動することで、3つのドラムを2つのアームで打ち分けながらドラム演奏をする。
【0043】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例をさまざまに変形、変更したものが含まれる。
【0044】
なお、上述の実施例では、楽譜データを構成する全ての音符データについて振り分け処理を行い、その後に駆動データの作成処理を行うようにしたが、本発明はこのような形態に限られない。例えば、(1)楽譜データから順に音符データを選択し、(2)その選択した音符データについて演奏するアームを決定し、(3)決定したアームの現在位置とその音符データの音程、音量に基づいて、演奏するアームの駆動データを作成し、(4)作成した駆動データに基づいてアームを駆動する。以下、上記(1)〜(4)を繰り返すことで、楽譜データから順に音符データを1つずつ処理し、リアルタイムで楽曲を演奏するようにしてもよい。
【0045】
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【0046】
【図1】ドラム演奏ロボットの模式図である。
【図2】ドラム演奏システムのブロック図である。
【図3】アーム振り分け処理を示すフローチャートである。
【図4】楽譜データを譜面化した図である。
【図5】アームの動作処理を示すフローチャートである。
【図6】アームの移動軌道を示すグラフである。
【図7】アームの移動軌道を示すグラフである。
【図8】アームの移動軌道を示すグラフである。
【図9】アームの移動軌道を示すグラフである。
【図10】アームの移動軌道を示すグラフである。
【図11】アームの移動軌道を示すグラフである。
【符号の説明】
【0047】
10:ドラム演奏ロボット
20:左アーム
30:右アーム
40:ドラムセット
42、44、46:ドラム
60:アーム動作決定装置
62:楽譜データ入力部
64:音符データ選択部
66:アーム位置決定部
68:アーム決定部
80:コントローラ
82a、82b、82c、84a、84b、84c:モータ
86a、86b、86c、88a、88b、88c:アーム位置検出部
【特許請求の範囲】
【請求項1】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置と、そのドラム演奏装置の各アームの駆動データを作成する駆動データ作成装置と、を有するドラム演奏システムであり、
駆動データ作成装置は、
楽譜データの中から順に1の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成する駆動データ作成部と、を有しており、
ドラム演奏装置は、
アーム毎に設けられた、アームを駆動するアクチュエータと、
駆動データ作成装置によって作成された各アームの駆動データに基づいて、各アクチュエータを駆動するコントローラと、を有していることを特徴とするドラム演奏システム。
【請求項2】
駆動データ作成装置は、選択された音符データの音程から演奏するドラムを決定するドラム決定部と、選択された音符データの音符長から動作時間を決定する動作時間決定部をさらに有していることを特徴とする請求項1に記載のドラム演奏システム。
【請求項3】
駆動データ作成部は、今回選択された音符データの音量をさらに用いて、その音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成することを特徴とする請求項1又は2に記載のドラム演奏システム。
【請求項4】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置であり、
アーム毎に設けられた、アームを駆動するアクチュエータと、
楽譜データを入力する楽譜データ入力部と、
入力された楽譜データの中から順に1の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定するアーム決定部と、
決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する駆動データ作成部と、
作成された駆動データに基づいて、決定されたアームのアクチュエータを駆動するアーム駆動部と、を有することを特徴とするドラム演奏装置。
【請求項5】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置の各アームの動作を決定するアーム動作決定装置であり、
楽譜データを入力する楽譜データ入力部と、
楽譜データの中から順に1の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定するアーム決定部と、を有していることを特徴とするアーム動作決定装置。
【請求項6】
複数の音符データから構成される楽譜データに基づいて、複数のドラムをドラムの数よりも少ないアームで打ち分けて演奏するドラム演奏方法であり、
楽譜データの中から1の音符データを選択する工程と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する工程と、
決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する工程と、
作成された駆動データに基づいて、決定されたアームを駆動する工程と、を有することを特徴とするドラム演奏方法。
【請求項1】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置と、そのドラム演奏装置の各アームの駆動データを作成する駆動データ作成装置と、を有するドラム演奏システムであり、
駆動データ作成装置は、
楽譜データの中から順に1の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成する駆動データ作成部と、を有しており、
ドラム演奏装置は、
アーム毎に設けられた、アームを駆動するアクチュエータと、
駆動データ作成装置によって作成された各アームの駆動データに基づいて、各アクチュエータを駆動するコントローラと、を有していることを特徴とするドラム演奏システム。
【請求項2】
駆動データ作成装置は、選択された音符データの音程から演奏するドラムを決定するドラム決定部と、選択された音符データの音符長から動作時間を決定する動作時間決定部をさらに有していることを特徴とする請求項1に記載のドラム演奏システム。
【請求項3】
駆動データ作成部は、今回選択された音符データの音量をさらに用いて、その音符データを演奏するアームを決定すると共にその決定したアームの駆動データを作成することを特徴とする請求項1又は2に記載のドラム演奏システム。
【請求項4】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置であり、
アーム毎に設けられた、アームを駆動するアクチュエータと、
楽譜データを入力する楽譜データ入力部と、
入力された楽譜データの中から順に1の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定するアーム決定部と、
決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する駆動データ作成部と、
作成された駆動データに基づいて、決定されたアームのアクチュエータを駆動するアーム駆動部と、を有することを特徴とするドラム演奏装置。
【請求項5】
複数のドラムを、複数の音符データから構成される楽譜データに基づいて、ドラムの数より少ないアームで打ち分けて演奏するドラム演奏装置の各アームの動作を決定するアーム動作決定装置であり、
楽譜データを入力する楽譜データ入力部と、
楽譜データの中から順に1の音符データを選択する音符データ選択部と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、当該音符データを演奏するアームを決定するアーム決定部と、を有していることを特徴とするアーム動作決定装置。
【請求項6】
複数の音符データから構成される楽譜データに基づいて、複数のドラムをドラムの数よりも少ないアームで打ち分けて演奏するドラム演奏方法であり、
楽譜データの中から1の音符データを選択する工程と、
直前に選択された音符データから決まる動作時間と、直前の音符データを演奏した後の各アームの位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、今回選択された音符データを演奏するアームを決定する工程と、
決定されたアームの直前の音符データ演奏後の位置と、今回選択された音符データから決まる演奏するドラムの位置とを少なくとも用いて、決定されたアームの駆動データを作成する工程と、
作成された駆動データに基づいて、決定されたアームを駆動する工程と、を有することを特徴とするドラム演奏方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2008−26724(P2008−26724A)
【公開日】平成20年2月7日(2008.2.7)
【国際特許分類】
【出願番号】特願2006−200990(P2006−200990)
【出願日】平成18年7月24日(2006.7.24)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
【公開日】平成20年2月7日(2008.2.7)
【国際特許分類】
【出願日】平成18年7月24日(2006.7.24)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
[ Back to top ]