JP2624104B2 - 自動演奏装置の演奏進行制御装置 - Google Patents
自動演奏装置の演奏進行制御装置Info
- Publication number
- JP2624104B2 JP2624104B2 JP4312476A JP31247692A JP2624104B2 JP 2624104 B2 JP2624104 B2 JP 2624104B2 JP 4312476 A JP4312476 A JP 4312476A JP 31247692 A JP31247692 A JP 31247692A JP 2624104 B2 JP2624104 B2 JP 2624104B2
- Authority
- JP
- Japan
- Prior art keywords
- performance
- data
- variable
- note
- tempo
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
- Reverberation, Karaoke And Other Acoustics (AREA)
Description
【0001】
【産業上の利用分野】本発明は、マニュアル楽器と自動
楽器とのアンサンブルに用いて好適な、自動演奏装置の
演奏進行制御装置に関する。
楽器とのアンサンブルに用いて好適な、自動演奏装置の
演奏進行制御装置に関する。
【0002】
【従来の技術】従来よりマニュアル演奏と、自動演奏装
置とを組み合わせてアンサンブルを行う技術が知られて
いる。自動演奏装置には、あらかじめ記憶された楽譜の
データ等が用いられる。なお、ここでいう自動演奏と
は、メロディー音の奏出のみならず、ベースパートやコ
ードバッキングパートやリズムパート等を単独あるいは
合奏として出力する場合も含んでいる。
置とを組み合わせてアンサンブルを行う技術が知られて
いる。自動演奏装置には、あらかじめ記憶された楽譜の
データ等が用いられる。なお、ここでいう自動演奏と
は、メロディー音の奏出のみならず、ベースパートやコ
ードバッキングパートやリズムパート等を単独あるいは
合奏として出力する場合も含んでいる。
【0003】このような場合に、両者の演奏のタイミン
グを合わせる必要がある。演奏のタイミングを考える場
合に、ある音符と次の音符の演奏される時間間隔が基準
とされるが、通常1分間当たりの四分音符の数で示さ
れ、これがテンポと呼ばれている。マニュアル演奏と自
動演奏のテンポを合わせる一つの方法として、自動演奏
のテンポに合わせてマニュアル演奏を行うという方法が
ある。しかしこの方法は、演奏者による自由な演奏を大
幅に制限するものとなる。
グを合わせる必要がある。演奏のタイミングを考える場
合に、ある音符と次の音符の演奏される時間間隔が基準
とされるが、通常1分間当たりの四分音符の数で示さ
れ、これがテンポと呼ばれている。マニュアル演奏と自
動演奏のテンポを合わせる一つの方法として、自動演奏
のテンポに合わせてマニュアル演奏を行うという方法が
ある。しかしこの方法は、演奏者による自由な演奏を大
幅に制限するものとなる。
【0004】また一つの方法として、マニュアル演奏の
テンポの変化に合わせて自動演奏のテンポを調整できる
ように、自動演奏装置上にテンポ調整つまみが設けられ
たものが知られている。しかしこの方式によっても、演
奏者が演奏中に調整つまみを微妙に操作することは極め
て困難であり、また、演奏に集中することを妨げる欠点
があった。
テンポの変化に合わせて自動演奏のテンポを調整できる
ように、自動演奏装置上にテンポ調整つまみが設けられ
たものが知られている。しかしこの方式によっても、演
奏者が演奏中に調整つまみを微妙に操作することは極め
て困難であり、また、演奏に集中することを妨げる欠点
があった。
【0005】このような欠点を解消するために、自動的
な調整方式が提案されている。これは、あらかじめ自動
演奏の音やタイミングを設定した楽譜データと、マニュ
アル演奏によるそれらの特性とを比較し、自動演奏のテ
ンポを自動的に調整するものである。
な調整方式が提案されている。これは、あらかじめ自動
演奏の音やタイミングを設定した楽譜データと、マニュ
アル演奏によるそれらの特性とを比較し、自動演奏のテ
ンポを自動的に調整するものである。
【0006】
【発明が解決しようとする課題】しかし、実際の演奏で
は、発音のタイミングを所定のテンポから意図的にずら
す場合がある。これは、より細やかな音楽表現を行うた
めに、楽譜上に記された本来の区切り位置や演奏の強
弱、各音符が持つ音の長短等を微妙に変化させるテクニ
ックで、アーティキュレーションと呼ばれている。上述
したようなテンポ調整装置では、あくまで楽譜データを
前提とした一律制御を行うため、このようなアーティキ
ュレーションによるずれをテンポの変化としてとらえて
しまい、アーティキュレーションの効果が出ないうえ
に、演奏者が意図しないテンポの変化を起こしてしまう
という欠点があった。
は、発音のタイミングを所定のテンポから意図的にずら
す場合がある。これは、より細やかな音楽表現を行うた
めに、楽譜上に記された本来の区切り位置や演奏の強
弱、各音符が持つ音の長短等を微妙に変化させるテクニ
ックで、アーティキュレーションと呼ばれている。上述
したようなテンポ調整装置では、あくまで楽譜データを
前提とした一律制御を行うため、このようなアーティキ
ュレーションによるずれをテンポの変化としてとらえて
しまい、アーティキュレーションの効果が出ないうえ
に、演奏者が意図しないテンポの変化を起こしてしまう
という欠点があった。
【0007】この発明は、アーティキュレーション等を
行う場合に、演奏者の意図どおりのテンポ制御を可能に
する自動演奏装置の演奏進行制御装置を提供することを
目的としている。
行う場合に、演奏者の意図どおりのテンポ制御を可能に
する自動演奏装置の演奏進行制御装置を提供することを
目的としている。
【0008】
【課題を解決するための手段】上記課題を解決するため
に、本発明にあっては、複数の音符データで構成された
演奏データを記憶した記憶手段と、この音符データを順
次読み出す読出手段と、操作情報を操作に応じて出力す
る操作情報入力手段と、操作情報が入力されたことを条
件に、この演奏データに基づく演奏を制御する制御手段
とを備えた自動演奏装置において、記憶手段は、複数の
演奏タイミングに対応して順次音符データを記憶すると
ともに、個々の音符データに対して読み出し制御用のデ
ータとして有効/無効を示す演奏制御情報を合わせて記
憶したものであって、前記制御手段は、前記演奏制御情
報が有効と示した音符データに基づいて演奏データに基
づく演奏を制御することを特徴とする。
に、本発明にあっては、複数の音符データで構成された
演奏データを記憶した記憶手段と、この音符データを順
次読み出す読出手段と、操作情報を操作に応じて出力す
る操作情報入力手段と、操作情報が入力されたことを条
件に、この演奏データに基づく演奏を制御する制御手段
とを備えた自動演奏装置において、記憶手段は、複数の
演奏タイミングに対応して順次音符データを記憶すると
ともに、個々の音符データに対して読み出し制御用のデ
ータとして有効/無効を示す演奏制御情報を合わせて記
憶したものであって、前記制御手段は、前記演奏制御情
報が有効と示した音符データに基づいて演奏データに基
づく演奏を制御することを特徴とする。
【0009】
【作用】演奏者は、音符データに対して、記憶手段によ
ってテンポ制御のための比較対象としての有効/無効の
対応づけを所望のようにあらかじめ設定することができ
る。そして、演奏者による演奏データが操作情報入力手
段によって入力されると、対応づけが有効となっている
音符データと演奏データとのタイミングに関する演算が
行われ、それに基づいて、自動演奏のテンポが演奏者の
演奏に追随するように制御される。対応づけが無効とな
っている部分については、音楽構成上わざと音符データ
通りのタイミングでないよう演奏すべき部分であった
り、演奏者がどうしても上手に演奏できない部分であっ
たりするので、テンポ制御のための比較対象とされな
い。
ってテンポ制御のための比較対象としての有効/無効の
対応づけを所望のようにあらかじめ設定することができ
る。そして、演奏者による演奏データが操作情報入力手
段によって入力されると、対応づけが有効となっている
音符データと演奏データとのタイミングに関する演算が
行われ、それに基づいて、自動演奏のテンポが演奏者の
演奏に追随するように制御される。対応づけが無効とな
っている部分については、音楽構成上わざと音符データ
通りのタイミングでないよう演奏すべき部分であった
り、演奏者がどうしても上手に演奏できない部分であっ
たりするので、テンポ制御のための比較対象とされな
い。
【0010】
【実施例】以下、図面を参照して、本発明の一実施例に
ついて説明する。
ついて説明する。
【0011】図1は、楽譜データの構成および実例を示
す図である。各音符(ノート)はインデックス5aとい
う通し番号を与えられ、以下のデータ項目が設けられて
いる。まず、ノートナンバー5bは音高を示しており、
ピアノ等で用いられる、オクターヴ毎に同じアルファベ
ットを用いる音階表記形式となっており、MIDI規格
のノートナンバー(0〜127)に対応している。楽譜
時刻5cは、曲の先頭からの演奏タイミングを表してお
り、第一の音符を「0」として、1四分音符当たり38
4の分解能で設定されている。テンポ制御フラグ5d
は、テンポ制御の有効/無効を指示するフラグである。
同フラグが有効「1」の場合はテンポ制御が実施され、
無効「0」の場合は同制御が実施されないようになって
いる。図1においては、始めから4番目までの音符に関
する、これらのデータ項目の実例が示されている。
す図である。各音符(ノート)はインデックス5aとい
う通し番号を与えられ、以下のデータ項目が設けられて
いる。まず、ノートナンバー5bは音高を示しており、
ピアノ等で用いられる、オクターヴ毎に同じアルファベ
ットを用いる音階表記形式となっており、MIDI規格
のノートナンバー(0〜127)に対応している。楽譜
時刻5cは、曲の先頭からの演奏タイミングを表してお
り、第一の音符を「0」として、1四分音符当たり38
4の分解能で設定されている。テンポ制御フラグ5d
は、テンポ制御の有効/無効を指示するフラグである。
同フラグが有効「1」の場合はテンポ制御が実施され、
無効「0」の場合は同制御が実施されないようになって
いる。図1においては、始めから4番目までの音符に関
する、これらのデータ項目の実例が示されている。
【0012】図2は本実施例に関係するハードウエアの
ブロック図である。同図において、共通バス8を介し
て、CPU19、タイマ20、RAM15、ROM1
4、フロッピーディスクドライブ13、スイッチ検出回
路9、表示回路16、MIDIインタフェース18が設
けられている。ROM14にはあらかじめいくつかの楽
譜データが書き込まれており、これを交換することによ
り別の曲の楽譜データの供給が可能となっている。ま
た、後述するフローチャートに表現する動作プログラム
も記憶されている。またフロッピーディスクドライブ1
3を介して、フロッピーディスク13aによる楽譜デー
タの供給も可能となっている。またMIDIインタフェ
ース18を介して、マニュアル演奏に使用される電子楽
器17および自動演奏に使用される自動演奏装置21が
接続されている。また、表示回路16には表示装置16
aが接続され、スイッチ検出回路9には、編集開始/終
了スイッチ10、UP/DOWNスイッチ11、有効性
変更スイッチ12が各々接続されている。
ブロック図である。同図において、共通バス8を介し
て、CPU19、タイマ20、RAM15、ROM1
4、フロッピーディスクドライブ13、スイッチ検出回
路9、表示回路16、MIDIインタフェース18が設
けられている。ROM14にはあらかじめいくつかの楽
譜データが書き込まれており、これを交換することによ
り別の曲の楽譜データの供給が可能となっている。ま
た、後述するフローチャートに表現する動作プログラム
も記憶されている。またフロッピーディスクドライブ1
3を介して、フロッピーディスク13aによる楽譜デー
タの供給も可能となっている。またMIDIインタフェ
ース18を介して、マニュアル演奏に使用される電子楽
器17および自動演奏に使用される自動演奏装置21が
接続されている。また、表示回路16には表示装置16
aが接続され、スイッチ検出回路9には、編集開始/終
了スイッチ10、UP/DOWNスイッチ11、有効性
変更スイッチ12が各々接続されている。
【0013】次に、図2及び図3を参照して、楽譜デー
タの各音符ごとに、テンポ制御フラグ5dの設定を変更
する編集動作について説明する。
タの各音符ごとに、テンポ制御フラグ5dの設定を変更
する編集動作について説明する。
【0014】図3は同動作の流れを示す図である。始め
に編集開始/終了スイッチ10が押されると、ステップ
S1において、ROM14またはフロッピーディスク1
3aから、楽譜データのうちの、所定のインデックスに
対応するデータ内容がRAM15へ転送される。このイ
ンデックスは、前回設定を行った時の最終値か、あるい
はデフォルト値「0」に設定されている。
に編集開始/終了スイッチ10が押されると、ステップ
S1において、ROM14またはフロッピーディスク1
3aから、楽譜データのうちの、所定のインデックスに
対応するデータ内容がRAM15へ転送される。このイ
ンデックスは、前回設定を行った時の最終値か、あるい
はデフォルト値「0」に設定されている。
【0015】この時、同インデックスが編集希望音符の
ものと異なる場合は、UP/DOWNスイッチ11を操
作して希望のインデックスへの変更が可能である。同ス
イッチが押されると、ステップS2によりこれが検出さ
れて処理がステップS3に移る。ステップS3において
は、編集対象インデックスが、同スイッチがUP方向の
場合にはプラス方向に、同じくDOWN方向の場合には
マイナス方向に加減変更されて、処理はステップS4へ
移る。同スイッチが押されていない場合には、ステップ
S2を介して処理は直ちにステップS4へ移行する。
ものと異なる場合は、UP/DOWNスイッチ11を操
作して希望のインデックスへの変更が可能である。同ス
イッチが押されると、ステップS2によりこれが検出さ
れて処理がステップS3に移る。ステップS3において
は、編集対象インデックスが、同スイッチがUP方向の
場合にはプラス方向に、同じくDOWN方向の場合には
マイナス方向に加減変更されて、処理はステップS4へ
移る。同スイッチが押されていない場合には、ステップ
S2を介して処理は直ちにステップS4へ移行する。
【0016】ステップS4においては、同インデックス
に対応した楽譜データの内容が表示装置16aに表示さ
れる。同データに関してテンポ制御フラグ5dの現在の
設定を変更したい場合には有効性変更スイッチ12が押
され、ステップS5によりこれが検出される。そして処
理がステップS6に移り、テンポ制御フラグはそれまで
の設定と逆の属性に書き換えられ、処理はステップS7
へ移る。同スイッチが押されていない場合には、ステッ
プS5を介して処理は直ちにステップS7へ移行する。
に対応した楽譜データの内容が表示装置16aに表示さ
れる。同データに関してテンポ制御フラグ5dの現在の
設定を変更したい場合には有効性変更スイッチ12が押
され、ステップS5によりこれが検出される。そして処
理がステップS6に移り、テンポ制御フラグはそれまで
の設定と逆の属性に書き換えられ、処理はステップS7
へ移る。同スイッチが押されていない場合には、ステッ
プS5を介して処理は直ちにステップS7へ移行する。
【0017】このように、編集開始/終了スイッチ10
が再び押されるまでは、ステップS2〜ステップS7の
処理が繰り返される。そして、編集者がUP/DOWN
スイッチ11を同様に操作することにより、別の音符の
テンポ制御フラグの変更処理が開始される。編集者が再
び編集開始/終了スイッチ10を押すと、ステップS7
によりこれが検知され、編集が終了され、ステップS8
により新しい楽譜データがフロッピーディスク13aに
書き込まれて、動作が終了される。
が再び押されるまでは、ステップS2〜ステップS7の
処理が繰り返される。そして、編集者がUP/DOWN
スイッチ11を同様に操作することにより、別の音符の
テンポ制御フラグの変更処理が開始される。編集者が再
び編集開始/終了スイッチ10を押すと、ステップS7
によりこれが検知され、編集が終了され、ステップS8
により新しい楽譜データがフロッピーディスク13aに
書き込まれて、動作が終了される。
【0018】なお、本編集については、上述のように1
音符ごとにテンポ制御フラグ5dの設定を行ったが、こ
れを複数音符分まとめて設定するようにしても良い。例
えば、「ある小節からある小節の間はテンポ制御を無効
にする」というように、範囲を決めての設定動作も可能
である。
音符ごとにテンポ制御フラグ5dの設定を行ったが、こ
れを複数音符分まとめて設定するようにしても良い。例
えば、「ある小節からある小節の間はテンポ制御を無効
にする」というように、範囲を決めての設定動作も可能
である。
【0019】次に、図1、図2、図4および図5を参照
して、演奏時のテンポ制御動作について説明する。図4
は同動作のメインルーチンを示し、図5は同動作と並行
して行われるCPUへの割り込みルーチンを示してい
る。
して、演奏時のテンポ制御動作について説明する。図4
は同動作のメインルーチンを示し、図5は同動作と並行
して行われるCPUへの割り込みルーチンを示してい
る。
【0020】演奏者が電子楽器17により、図1に実例
を示す楽譜データに対応したマニュアル演奏を開始する
と、図4に示すステップS11によって、MIDIイン
タフェース18を通して、マニュアル演奏データとして
の第一の音符の入力がなされたか否かが判定され、デー
タ入力がされるまで処理が待機する。入力があると、ス
テップS12において、楽譜データよりインデックスの
初期値「0」に対応したデータが読み出される。
を示す楽譜データに対応したマニュアル演奏を開始する
と、図4に示すステップS11によって、MIDIイン
タフェース18を通して、マニュアル演奏データとして
の第一の音符の入力がなされたか否かが判定され、デー
タ入力がされるまで処理が待機する。入力があると、ス
テップS12において、楽譜データよりインデックスの
初期値「0」に対応したデータが読み出される。
【0021】次にステップS13において、読み出され
たノートナンバー「C4」と、マニュアル演奏データの
音符のノートナンバーが比較され、一致していると「Y
ES」と判定され、ステップS14において、現在のイ
ンデックス(「0」)に対応した楽譜時刻の設定値
「0」が、変数GuessPosにセットされる。な
お、ステップS13において「NO」と判定された場合
は、処理はステップS11に戻され、次のマニュアル演
奏データの音符の入力がされるまで、処理が待機する。
たノートナンバー「C4」と、マニュアル演奏データの
音符のノートナンバーが比較され、一致していると「Y
ES」と判定され、ステップS14において、現在のイ
ンデックス(「0」)に対応した楽譜時刻の設定値
「0」が、変数GuessPosにセットされる。な
お、ステップS13において「NO」と判定された場合
は、処理はステップS11に戻され、次のマニュアル演
奏データの音符の入力がされるまで、処理が待機する。
【0022】次いでステップS15において、現インデ
ックス(「0」)に対応したテンポ制御フラグの値
「1」が変数Validに代入され、その後ステップS
16において、インデックスの値が「1」進められる。
そしてステップS17において、楽譜データより、次の
インデックス(「1」)に対応するデータが読み込ま
れ、その楽譜時刻の設定値「384」が変数StopP
osに代入される。
ックス(「0」)に対応したテンポ制御フラグの値
「1」が変数Validに代入され、その後ステップS
16において、インデックスの値が「1」進められる。
そしてステップS17において、楽譜データより、次の
インデックス(「1」)に対応するデータが読み込ま
れ、その楽譜時刻の設定値「384」が変数StopP
osに代入される。
【0023】次にステップS18において、変数Val
idが検索され、これが「1」(有効)であるか否かが
判定される。ここでは「YES」と判定されるので、ス
テップS19によって、以下に示すテンポの計算が行わ
れる。
idが検索され、これが「1」(有効)であるか否かが
判定される。ここでは「YES」と判定されるので、ス
テップS19によって、以下に示すテンポの計算が行わ
れる。
【0024】まず、テンポの計算には、以下に示す変数
が必要となる。すなわち、 ・今回(現在の音符に対する処理)の推定楽譜時刻を示
すGuessPos ・前回(現在よりも一つ前の音符に対する処理)の楽譜
時刻を示すPrevPos ・今回の物理時刻を示すCurtime(単位[mse
c]) ・前回の物理時刻を示すPrevtime(単位[ms
ec]) の4変数である。
が必要となる。すなわち、 ・今回(現在の音符に対する処理)の推定楽譜時刻を示
すGuessPos ・前回(現在よりも一つ前の音符に対する処理)の楽譜
時刻を示すPrevPos ・今回の物理時刻を示すCurtime(単位[mse
c]) ・前回の物理時刻を示すPrevtime(単位[ms
ec]) の4変数である。
【0025】今、変数PrevPosは、今回が初回の
処理のため、値は「0」(初期値)となっている。ま
た、物理時刻とは、後述の割り込み処理によって設定さ
れる、各回における実際の時刻をさしている。ここで
は、メインルーチンの起動より現段階まで1秒間経過
し、従って変数Curtimeが「1000」に設定さ
れたものとする。また、変数PrevTimeは、今回
が初回の処理のため、変数PrevPosと同様に
「0」(初期値)となっている。
処理のため、値は「0」(初期値)となっている。ま
た、物理時刻とは、後述の割り込み処理によって設定さ
れる、各回における実際の時刻をさしている。ここで
は、メインルーチンの起動より現段階まで1秒間経過
し、従って変数Curtimeが「1000」に設定さ
れたものとする。また、変数PrevTimeは、今回
が初回の処理のため、変数PrevPosと同様に
「0」(初期値)となっている。
【0026】そして、 テンポの計算は、 (GuessPos−PrevPos)/(CurTime−PrevTime ) ・・・・(1) という式で計算され、この値が変数Tempoに代入さ
れる。この場合のTempoの単位は、通常のテンポの
単位「1分間当たりの四分音符の数」とは異なり、本実
施例における楽譜時刻(1四分音符当たり384の分解
能で設定される値)を基準にし、「1msec当たり
の、四分音符数を384で除算した数」となっている。
すなわち、1msec当たりの、楽譜時刻に対応したタ
イミングを示している。今回は、(1)式の分子が
「0」となるため、変数Tempoは「0」となる。
れる。この場合のTempoの単位は、通常のテンポの
単位「1分間当たりの四分音符の数」とは異なり、本実
施例における楽譜時刻(1四分音符当たり384の分解
能で設定される値)を基準にし、「1msec当たり
の、四分音符数を384で除算した数」となっている。
すなわち、1msec当たりの、楽譜時刻に対応したタ
イミングを示している。今回は、(1)式の分子が
「0」となるため、変数Tempoは「0」となる。
【0027】次いでステップS20において、変数Gu
essPosの値「0」が変数CurPosに代入され
る。次いで、ステップS21において、変数Guess
Posの値「0」が変数PrevPosに代入されると
ともに、変数Curtimeの値「1000」が変数P
revTimeに代入される。
essPosの値「0」が変数CurPosに代入され
る。次いで、ステップS21において、変数Guess
Posの値「0」が変数PrevPosに代入されると
ともに、変数Curtimeの値「1000」が変数P
revTimeに代入される。
【0028】この段階で、処理はステップS21よりス
テップS11に戻され、次のマニュアル演奏データの入
力があるまで処理が待機する。入力があると、楽譜デー
タ内の、現在のインデックス(「1」)に対応したノー
トナンバーの値「E3」と、マニュアル演奏データの音
符のノートナンバーが比較される。一致していると、ス
テップS14において、楽譜時刻の設定値(「38
4」)が変数GuessPosに代入される。
テップS11に戻され、次のマニュアル演奏データの入
力があるまで処理が待機する。入力があると、楽譜デー
タ内の、現在のインデックス(「1」)に対応したノー
トナンバーの値「E3」と、マニュアル演奏データの音
符のノートナンバーが比較される。一致していると、ス
テップS14において、楽譜時刻の設定値(「38
4」)が変数GuessPosに代入される。
【0029】次いでステップS15において、テンポ制
御フラグの値「1」が変数Validに代入され、処理
がステップS16に進み、インデックスが再び「1」進
められる。そしてステップS17において、次のインデ
ックス(「2」)に対応するデータが読み込まれ、その
楽譜時刻の設定値(「576」)が変数StopPos
に代入される。
御フラグの値「1」が変数Validに代入され、処理
がステップS16に進み、インデックスが再び「1」進
められる。そしてステップS17において、次のインデ
ックス(「2」)に対応するデータが読み込まれ、その
楽譜時刻の設定値(「576」)が変数StopPos
に代入される。
【0030】この場合においても、変数Validが
「1」(有効)となっているため、ステップS18を介
して処理がステップS19に進み、上述したテンポの計
算がなされる。今回は変数CurTimeの値が「20
00」であるとすると、式(1)により、
「1」(有効)となっているため、ステップS18を介
して処理がステップS19に進み、上述したテンポの計
算がなされる。今回は変数CurTimeの値が「20
00」であるとすると、式(1)により、
【数1】 と算出される。
【0031】次いでステップS20において、変数Gu
essPosの値「384」が変数CurPosに代入
される。次いでステップS21において、変数Gues
sPosの値「384」が変数PrevPosに代入さ
れるとともに、変数CurTimeの値「2000」
が、変数PrevTimeに代入される。そして、処理
は再びステップS11に戻されて、同様の処理が継続さ
れる。
essPosの値「384」が変数CurPosに代入
される。次いでステップS21において、変数Gues
sPosの値「384」が変数PrevPosに代入さ
れるとともに、変数CurTimeの値「2000」
が、変数PrevTimeに代入される。そして、処理
は再びステップS11に戻されて、同様の処理が継続さ
れる。
【0032】ところで、インデックスが「2」である次
の音符は、インデックスの値が「0」の場合における
「四分音符」、インデックスの値が「1」の場合におけ
る「八分音符」に続いての「四分音符」であり、このよ
うな音符構成においては、アーティキュレーションによ
り、設定された楽譜時刻(「576」)のタイミングが
実際には「600」程度まで延びる可能性がある。その
ため、テンポ制御フラグが「0」(無効)に設定されて
おり、処理は、ステップS18を介して直ちにステップ
S11に戻される。すなわち、この部分に関しての新た
な変数Tempoの計算は行われない。
の音符は、インデックスの値が「0」の場合における
「四分音符」、インデックスの値が「1」の場合におけ
る「八分音符」に続いての「四分音符」であり、このよ
うな音符構成においては、アーティキュレーションによ
り、設定された楽譜時刻(「576」)のタイミングが
実際には「600」程度まで延びる可能性がある。その
ため、テンポ制御フラグが「0」(無効)に設定されて
おり、処理は、ステップS18を介して直ちにステップ
S11に戻される。すなわち、この部分に関しての新た
な変数Tempoの計算は行われない。
【0033】ところで、上述のような一連の動作が繰り
返される間に、タイマ20が数msecごとにCPU1
9に対して割り込み信号を出力する。これにより、CP
U19は現在実行中の処理を中断し、図5に示す割り込
み処理ルーチンを起動する。割り込み時間を1msec
程度に設定すると、かなり高速な処理が行われる。
返される間に、タイマ20が数msecごとにCPU1
9に対して割り込み信号を出力する。これにより、CP
U19は現在実行中の処理を中断し、図5に示す割り込
み処理ルーチンを起動する。割り込み時間を1msec
程度に設定すると、かなり高速な処理が行われる。
【0034】以下、上述の、変数Tempoが「0.3
84」と算出された直後の割り込み処理について説明す
る。まず、図5に示すステップS31において、実際の
経過時間である変数CurTimeの設定が、割り込み
時間間隔を示す定数N(「1」msec)を割り込み処
理ごとに加算していく方式でなされる。ここでは、変数
CurTimeの値「2000」にN(「1」)が加算
され、変数CurTimeの値は「2001」に更新さ
れる。
84」と算出された直後の割り込み処理について説明す
る。まず、図5に示すステップS31において、実際の
経過時間である変数CurTimeの設定が、割り込み
時間間隔を示す定数N(「1」msec)を割り込み処
理ごとに加算していく方式でなされる。ここでは、変数
CurTimeの値「2000」にN(「1」)が加算
され、変数CurTimeの値は「2001」に更新さ
れる。
【0035】次いでステップS32において、変数Cu
rPosの値「384」も、割り込み時間間隔に対応し
た分だけ進められる。この場合の加算分は、楽譜時刻に
対応したタイミングである変数Tempo(「0.38
4」)に定数N(「1」)をかけた値「0.384」と
される。すなわち、変数CurPosの値は「384.
384」となる。
rPosの値「384」も、割り込み時間間隔に対応し
た分だけ進められる。この場合の加算分は、楽譜時刻に
対応したタイミングである変数Tempo(「0.38
4」)に定数N(「1」)をかけた値「0.384」と
される。すなわち、変数CurPosの値は「384.
384」となる。
【0036】次に、ステップS33において、変数Cu
rPosの値が変数StopPosを超えていないかが
判定される。ここでは、変数CurPos(「384.
384」)は変数StopPos(「576」)を超え
ていないため、「YES」と判定され、処理はステップ
S34に進められる。この時もし変数CurPosが変
数StopPosを超えていたら、処理はステップS3
5に進められ、「楽譜データで示される本来のタイミン
グよりもマニュアル演奏が遅れた」として割り込み処理
は終了され、自動演奏はそれまでの状態で保持停止され
る。
rPosの値が変数StopPosを超えていないかが
判定される。ここでは、変数CurPos(「384.
384」)は変数StopPos(「576」)を超え
ていないため、「YES」と判定され、処理はステップ
S34に進められる。この時もし変数CurPosが変
数StopPosを超えていたら、処理はステップS3
5に進められ、「楽譜データで示される本来のタイミン
グよりもマニュアル演奏が遅れた」として割り込み処理
は終了され、自動演奏はそれまでの状態で保持停止され
る。
【0037】ところで、図2に示すMIDIインタフェ
ース18を介しての自動演奏装置21による自動演奏で
あるため、実際のテンポの制御は、MIDIインタフェ
ース18に規定のタイミングクロックを出力することに
よりなされる。MIDIの場合のタイミングクロック
は、1四分音符当たり24の分解能と定められており、
1タイミングクロックごとに16進数のコード「F8」
を出力して同期のタイミングをはかる方式となってい
る。
ース18を介しての自動演奏装置21による自動演奏で
あるため、実際のテンポの制御は、MIDIインタフェ
ース18に規定のタイミングクロックを出力することに
よりなされる。MIDIの場合のタイミングクロック
は、1四分音符当たり24の分解能と定められており、
1タイミングクロックごとに16進数のコード「F8」
を出力して同期のタイミングをはかる方式となってい
る。
【0038】本実施例においては、同分解能よりも楽譜
データの楽譜時刻の分解能(1四分音符当たり384)
の方が高い。そのため、実際には、本実施例による楽譜
時刻の設定分解能「384」をMIDIタイミングクロ
ックの分解能「24」で除算して求められる、楽譜時刻
「16」ごとに1回、MIDIのタイミングクロックの
出力が行われることになる。この値「16」は、定数F
8Timeとして一定である。
データの楽譜時刻の分解能(1四分音符当たり384)
の方が高い。そのため、実際には、本実施例による楽譜
時刻の設定分解能「384」をMIDIタイミングクロ
ックの分解能「24」で除算して求められる、楽譜時刻
「16」ごとに1回、MIDIのタイミングクロックの
出力が行われることになる。この値「16」は、定数F
8Timeとして一定である。
【0039】そして、ステップS34において、変数C
urPosが定数F8Timeで除算され、小数点以下
が切り捨てられる。次に、この結果が、「演奏のスター
トより今回までの間に出力されるべきMIDIタイミン
グクロック数」を示す変数CurF8Countに代入
される。変数CurF8Countは、ここでは、 CurPos/F8Time=384.384/16 =24.024 より、「24」と算出される。
urPosが定数F8Timeで除算され、小数点以下
が切り捨てられる。次に、この結果が、「演奏のスター
トより今回までの間に出力されるべきMIDIタイミン
グクロック数」を示す変数CurF8Countに代入
される。変数CurF8Countは、ここでは、 CurPos/F8Time=384.384/16 =24.024 より、「24」と算出される。
【0040】ここで、前回の割り込み処理ルーチンにお
いて同様に計算された、「演奏のスタートより前回まで
の間に出力されるべきMIDIタイミングクロック数」
を示す変数PrevF8Countが存在する。そし
て、ステップS36においては、今回計算された変数C
urF8Countの値から変数PrevF8Coun
tの値が減算され、算出値に対応する個数分のコード
「F8」が、MIDIタイミングクロックとして自動演
奏装置21に出力され、自動演奏が継続される。今、変
数PrevF8Countの値が「23」であるとする
と、変数CurF8Countの値「24」から値「2
3」が減算され、その算出値「1」に対応する1個分の
コード「F8」が、MIDIタイミングクロックとして
自動演奏装置21に出力される。
いて同様に計算された、「演奏のスタートより前回まで
の間に出力されるべきMIDIタイミングクロック数」
を示す変数PrevF8Countが存在する。そし
て、ステップS36においては、今回計算された変数C
urF8Countの値から変数PrevF8Coun
tの値が減算され、算出値に対応する個数分のコード
「F8」が、MIDIタイミングクロックとして自動演
奏装置21に出力され、自動演奏が継続される。今、変
数PrevF8Countの値が「23」であるとする
と、変数CurF8Countの値「24」から値「2
3」が減算され、その算出値「1」に対応する1個分の
コード「F8」が、MIDIタイミングクロックとして
自動演奏装置21に出力される。
【0041】マニュアル演奏が本来の楽譜時刻で示され
るタイミングよりも急に早くなったような場合には、式
(1)における分母が小となり、算出される変数Tem
poの値が大となり、最終的に変数CurF8Coun
tの値が大となる。そのため、ステップS36において
数個のコード「F8」が一気に出力されることになる。
マニュアル演奏が安定して継続されている場合では、
「割り込み処理数回ごとに1回の割り合でMIDIタイ
ミングクロックが出力される」というように、平均した
出力間隔が保たれる。
るタイミングよりも急に早くなったような場合には、式
(1)における分母が小となり、算出される変数Tem
poの値が大となり、最終的に変数CurF8Coun
tの値が大となる。そのため、ステップS36において
数個のコード「F8」が一気に出力されることになる。
マニュアル演奏が安定して継続されている場合では、
「割り込み処理数回ごとに1回の割り合でMIDIタイ
ミングクロックが出力される」というように、平均した
出力間隔が保たれる。
【0042】その後、ステップS37において、変数C
urF8Countの値「24」が変数PrevF8C
ountに代入され、割り込み処理が終了されて、CP
U19は中断されていたメインルーチンの処理を続行す
る。
urF8Countの値「24」が変数PrevF8C
ountに代入され、割り込み処理が終了されて、CP
U19は中断されていたメインルーチンの処理を続行す
る。
【0043】なお、本自動演奏装置の演奏進行制御装置
は、本実施例のようにMIDIインタフェースを通して
外部の自動演奏装置を制御する場合に限らず、マニュア
ル演奏を行う電子楽器自身に内蔵された、自動リズム音
出力装置等のテンポ制御に用いることも可能である。
は、本実施例のようにMIDIインタフェースを通して
外部の自動演奏装置を制御する場合に限らず、マニュア
ル演奏を行う電子楽器自身に内蔵された、自動リズム音
出力装置等のテンポ制御に用いることも可能である。
【0044】また、マニュアル演奏者の演奏の癖の傾向
等を学習させておき、その学習結果をもとにタイミング
のずれやすいところを検出し、自動的にテンポ制御対象
部分を設定するようにしても良い。
等を学習させておき、その学習結果をもとにタイミング
のずれやすいところを検出し、自動的にテンポ制御対象
部分を設定するようにしても良い。
【0045】
【発明の効果】以上、説明したように、この発明によれ
ば、マニュアル演奏と自動楽器とのアンサンブルを行う
場合に、音符データのうち対応づけが無効となっている
部分については、音楽構成上わざと音符データ通りのタ
イミングでないよう演奏すべき部分であったり、演奏者
がどうしても上手に演奏できない部分であったりするの
で、テンポ制御のための比較対象とされないから、意図
せずテンポが変更されてしまうことがなくなる。すなわ
ち、アーティキュレーションや演奏者の癖等を加味した
演奏がテンポを乱すことなく行えるという利点が得られ
る。
ば、マニュアル演奏と自動楽器とのアンサンブルを行う
場合に、音符データのうち対応づけが無効となっている
部分については、音楽構成上わざと音符データ通りのタ
イミングでないよう演奏すべき部分であったり、演奏者
がどうしても上手に演奏できない部分であったりするの
で、テンポ制御のための比較対象とされないから、意図
せずテンポが変更されてしまうことがなくなる。すなわ
ち、アーティキュレーションや演奏者の癖等を加味した
演奏がテンポを乱すことなく行えるという利点が得られ
る。
【図1】 本発明の一実施例における楽譜データの構成
図である。
図である。
【図2】 本発明の一実施例におけるハードウエアのブ
ロック図である。
ロック図である。
【図3】 本発明の一実施例におけるテンポ制御編集動
作の流れを示す図である。
作の流れを示す図である。
【図4】 本発明の一実施例におけるメインルーチンの
フローチャートである。
フローチャートである。
【図5】 本発明の一実施例における割り込みルーチン
のフローチャートである。
のフローチャートである。
5d テンポ制御フラグ 14 ROM 15 RAM 18 MIDIインタフェース 19 CPU
Claims (1)
- 【請求項1】 複数の音符データで構成された演奏デー
タを記憶した記憶手段と、この音符データを順次読み出す読出手段と、 操作情報を操作に応じて出力する操作情報 入力手段と、操作情報が入力されたことを条件に、この演奏データに
基づく演奏を制御する制御手段とを備えた自動演奏装置
において、 記憶手段は、複数の演奏タイミングに対応して順次音符
データを記憶するとともに、個々の音符データに対して
読み出し制御用のデータとして有効/無効を示す演奏制
御情報を合わせて記憶したものであって、 前記制御手段は、前記演奏制御情報が有効と示した音符
データに基づいて演奏データに基づく演奏 を制御するこ
とを特徴とする自動演奏装置の演奏進行制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4312476A JP2624104B2 (ja) | 1992-11-20 | 1992-11-20 | 自動演奏装置の演奏進行制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4312476A JP2624104B2 (ja) | 1992-11-20 | 1992-11-20 | 自動演奏装置の演奏進行制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06161431A JPH06161431A (ja) | 1994-06-07 |
JP2624104B2 true JP2624104B2 (ja) | 1997-06-25 |
Family
ID=18029670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4312476A Expired - Fee Related JP2624104B2 (ja) | 1992-11-20 | 1992-11-20 | 自動演奏装置の演奏進行制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2624104B2 (ja) |
-
1992
- 1992-11-20 JP JP4312476A patent/JP2624104B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH06161431A (ja) | 1994-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2743680B2 (ja) | 自動演奏装置 | |
US5227574A (en) | Tempo controller for controlling an automatic play tempo in response to a tap operation | |
US4969384A (en) | Musical score duration modification apparatus | |
JPH0518116B2 (ja) | ||
EP0980061B1 (en) | Arrangement apparatus by modification of music data with arrangement data | |
US4993306A (en) | Device for correcting timing of music playing information for use in music auto play device | |
JPH0823746B2 (ja) | 自動楽音発生装置 | |
JP2636640B2 (ja) | 自動伴奏装置 | |
JP2624104B2 (ja) | 自動演奏装置の演奏進行制御装置 | |
JP4214845B2 (ja) | 自動アルペジオ装置および同装置に適用されるコンピュータプログラム | |
JP2546467B2 (ja) | 電子楽器 | |
JPH03242697A (ja) | 電子楽器 | |
JP2625207B2 (ja) | 自動演奏装置 | |
JP3171759B2 (ja) | 自動演奏装置 | |
JP4172335B2 (ja) | 自動伴奏生成装置及びプログラム | |
JP2626146B2 (ja) | テンポコントローラ | |
JPH1124659A (ja) | 楽譜表示装置 | |
JP2551156B2 (ja) | 自動演奏装置 | |
JP3480001B2 (ja) | 自動演奏データ編集装置 | |
JP2780475B2 (ja) | テンポコントローラ | |
JPH11143465A (ja) | 電子楽器 | |
JP2000163052A (ja) | 楽曲生成装置および楽曲生成プログラムを記録した記録媒体 | |
JP3903937B2 (ja) | 伴奏データ生成プログラムおよび伴奏データ生成装置 | |
JPH0436398B2 (ja) | ||
JP2780476B2 (ja) | テンポコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19970204 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090411 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |