JP2015069170A - Performance operation guide device, method, and program - Google Patents
Performance operation guide device, method, and program Download PDFInfo
- Publication number
- JP2015069170A JP2015069170A JP2013205723A JP2013205723A JP2015069170A JP 2015069170 A JP2015069170 A JP 2015069170A JP 2013205723 A JP2013205723 A JP 2013205723A JP 2013205723 A JP2013205723 A JP 2013205723A JP 2015069170 A JP2015069170 A JP 2015069170A
- Authority
- JP
- Japan
- Prior art keywords
- performance
- finger
- performance information
- performance operation
- value
- 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.)
- Pending
Links
Landscapes
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
Description
本発明は、鍵盤楽器における運指ガイド等の演奏動作のガイドを行う技術に関する。 The present invention relates to a technique for guiding performance operations such as a fingering guide in a keyboard instrument.
例えば鍵盤楽器における演奏動作を視覚的にガイドするために、従来、鍵盤楽器の画像上で演奏における指の運指をガイドする技術が知られている(例えば特許文献1)。 For example, in order to visually guide a performance operation in a keyboard instrument, a technique for guiding finger fingering in a performance on a keyboard instrument image is conventionally known (for example, Patent Document 1).
ここで、例えば鍵盤楽器を演奏する場合には、さまざまな演奏動作上のテクニック(指越え・くぐり、手を移動させる、手を広げる・狭めるなど)が存在する。従って、運指を習得するだけでなく、これらの演奏動作上のテクニックを習得することも望まれる。また、鍵盤楽器等の演奏に際しては、現在だけでなく、次以降の音形によって、どのように指や手の位置を準備させるかといった準備動作も重要なテクニックの一つであった。 Here, for example, when playing a keyboard instrument, there are various performance techniques (such as crossing and passing fingers, moving hands, spreading and narrowing hands). Therefore, it is desired not only to learn fingering but also to learn these techniques on performance. In addition, when playing a keyboard instrument or the like, not only the present, but also the preparation operation such as how to prepare the position of the finger or hand depending on the next and subsequent sound forms was one of the important techniques.
しかし、従来の運指ガイド技術は、単にあるタイミングで押鍵すべき鍵盤の位置とその鍵盤を押鍵する指を指示するだけであり、演奏動作上のテクニックを習得することは困難であるという問題点を有していた。 However, the conventional fingering guide technique simply indicates the position of the key to be pressed at a certain timing and the finger that presses the key, and it is difficult to master the technique of performance performance. Had problems.
本発明は、演奏情報に付加されている運指情報から演奏動作上のテクニックに関する動作情報を自動的に抽出可能とし、それにより運指とともに演奏動作上のテクニックも演奏ガイド可能とすることを目的とする。 It is an object of the present invention to automatically extract motion information related to a technique on performance behavior from fingering information added to performance information, thereby enabling performance guidance to be performed on the performance motion technique together with fingering. And
態様の一例では、曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出し手段と、演奏情報読み出し手段によって読み出された演奏情報夫々に基づいて、その演奏情報における演奏者の演奏操作状態を推定する操作状態推定手段と、操作状態推定手段により推定された第1の演奏操作状態と、その第1の演奏操作状態より後に推定された第2の演奏操作状態とに基づいて、演奏者の演奏操作に関するガイドを行う演奏操作ガイド手段と、を備える。 In one example, performance information reading means for reading out performance information from the storage unit, including information related to the sound generation timing for sound generation, information related to the pitch, and information related to the performance operation of the performer of each musical sound constituting the music And an operation state estimating means for estimating the performance operation state of the performer in the performance information based on the performance information read by the performance information reading means, and a first performance operation estimated by the operation state estimating means. And a performance operation guide means for performing a guide on the performance operation of the performer based on the state and the second performance operation state estimated after the first performance operation state.
本発明によれば、演奏情報に付加されている運指情報から演奏動作上のテクニックに関する動作情報を自動的に抽出することが可能となり、それにより運指とともに演奏動作上のテクニックも演奏ガイドすることが可能となる。 According to the present invention, it becomes possible to automatically extract operation information related to a technique on performance performance from fingering information added to performance information, thereby performing performance guidance on performance techniques together with fingering. It becomes possible.
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図1は、本発明による演奏操作ガイド装置100の実施形態を示すブロック図である。この演奏操作ガイド装置100は、演奏情報読み出し手段101、操作状態推定手段102、演奏動作ガイド手段103を備える。また、内部または外部に、記憶部104が具備される。
Hereinafter, embodiments for carrying out the present invention will be described in detail with reference to the drawings.
FIG. 1 is a block diagram showing an embodiment of a performance operation guide device 100 according to the present invention. The performance operation guide device 100 includes performance information reading means 101, operation state estimation means 102, and performance action guide means 103. A storage unit 104 is provided inside or outside.
演奏情報読み出し手段101は、曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報105を記憶部104から読み出す。 The performance information reading means 101 reads from the storage unit 104 performance information 105 that includes information related to the sound generation timing at which each musical sound constituting the music is generated, information related to the pitch, and information related to the performance operation of the performer. .
操作状態推定手段102は、演奏情報読み出し手段101によって読み出された演奏情報105夫々に基づいて、その演奏情報105における演奏者の演奏操作状態を推定する。 The operation state estimation means 102 estimates the performance operation state of the performer in the performance information 105 based on the performance information 105 read by the performance information reading means 101.
演奏操作ガイド手段103は、操作状態推定手段102により推定された第1の演奏操作状態106と、第1の演奏操作状態106より後に推定された第2の演奏操作状態107とに基づいて、演奏者の演奏操作に関するガイドを行う。 The performance operation guide means 103 performs the performance based on the first performance operation state 106 estimated by the operation state estimation means 102 and the second performance operation state 107 estimated after the first performance operation state 106. Guidance on the performance of the performers.
上述の構成において、演奏操作ガイド装置100は、鍵盤楽器の演奏操作に関するガイドを行うものとしてよい。このとき、操作状態推定手段102は、演奏者の第1及び第2の演奏操作状態106,107として、鍵盤の奥行き方向における演奏者の手の位置に関しての推定を行う。また、演奏操作ガイド手段103は、その推定された演奏者の手の位置に応じて演奏者の演奏操作に関するガイドを行う。 In the above-described configuration, the performance operation guide device 100 may perform guidance related to the performance operation of the keyboard instrument. At this time, the operation state estimating means 102 estimates the position of the player's hand in the depth direction of the keyboard as the first and second performance operation states 106 and 107 of the player. Further, the performance operation guide means 103 performs a guide regarding the performance operation of the performer according to the estimated position of the performer's hand.
ここまでの構成において、演奏操作ガイド装置100は、鍵盤楽器の演奏操作に関するガイドを行うものとしてよい。 In the configuration so far, the performance operation guide device 100 may perform guidance related to the performance operation of the keyboard instrument.
このとき、操作状態推定手段102は、演奏者の第1及び第2の演奏操作状態106,107として、親指で鍵盤を押鍵中の状態及びこの状態から親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する状態を推定してよい。この場合に、演奏操作ガイド手段103は、親指が演奏を行うべき指としてガイドするとともに、親指以外の指を演奏の準備を行うべき指としてガイドしてよい。 At this time, the operation state estimation means 102, as the first and second performance operation states 106 and 107 of the performer, is in a state where the keyboard is being pressed with the thumb and from this state over the thumb with a finger other than the thumb. It is possible to estimate the state where the key is pressed at the next and subsequent timings. In this case, the performance operation guide means 103 may guide the thumb as a finger to perform, and guide a finger other than the thumb as a finger to prepare for performance.
また、操作状態推定手段102が、演奏者の第1及び第2の演奏操作状態106,107として、親指で鍵盤を押鍵中の状態及びこの状態から親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する状態を推定してよい。この場合に、103演奏操作ガイド手段は、親指以外の指を演奏を行うべき指としてガイドするとともに、親指を演奏の準備を行うべき指としてガイドしてよい。 In addition, the operation state estimation means 102 uses the thumb as the first and second performance operation states 106 and 107 of the performer while pressing the keyboard with the thumb and pressing the key with a finger other than the thumb from this state. It may be estimated that a key is pressed at a subsequent timing after passing under a finger other than the thumb and moving. In this case, the 103 performance operation guide means may guide a finger other than the thumb as a finger to perform and guide the thumb as a finger to prepare for performance.
ここまでの構成において、演奏操作ガイド装置100は、鍵盤楽器の演奏操作に関するガイドを行うものとしてよい。 In the configuration so far, the performance operation guide device 100 may perform guidance related to the performance operation of the keyboard instrument.
この場合、操作状態推定手段102は、演奏者の第1及び第2の演奏操作状態106,107として、鍵盤の所定の鍵が押鍵されている状態及びその押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態を推定してよい。この場合に、演奏操作ガイド手段103は、現在の押鍵状態から次の押鍵状態への移動の準備をガイドしてよい。 In this case, the operation state estimation means 102 determines the predetermined first key operation state 106 and 107 as the player's first and second performance operation states 106 and 107 based on the predetermined key on the keyboard and the pressed key. You may estimate the state where the key of the position away from the reference value is pressed next. In this case, the performance operation guide means 103 may guide the preparation for movement from the current key pressing state to the next key pressing state.
以上の実施形態の構成により、操作状態推定手段102が、演奏情報読み出し手段101によって読み出された演奏情報105夫々に基づいて、演奏情報105における演奏者の演奏操作状態を、第1および第2の演奏操作状態106,107として推定することができる。これらの第1および第2の演奏操作状態106,107を用いて、演奏操作ガイド手段103が演奏ガイドを行うことにより、各動作タイミングにおいて、演奏を行うべき指の運指ガイドだけでなく、それ以降の演奏の準備を行うべき指のガイドも行うことができる。演奏の準備の動作としては、他の指による親指超えや、親指による指くぐり、広範囲での指の移動などの動作を含むことができ、これにより演奏動作のテクニックに関するガイドを行うことが可能となる。 With the configuration of the above embodiment, the operation state estimation unit 102 determines the performance operation state of the performer in the performance information 105 based on the performance information 105 read out by the performance information reading unit 101. The performance operation states 106 and 107 can be estimated. The performance operation guide means 103 performs the performance guide using these first and second performance operation states 106 and 107, so that not only the fingering guide of the finger to perform at each operation timing, but also You can also guide your fingers to prepare for subsequent performances. Performance preparation actions can include actions such as exceeding the thumb with another finger, passing a thumb with the thumb, and moving the finger over a wide range. Become.
図2は、図1の機能構成を有する演奏操作ガイド装置100の実施形態のハードウェア構成の一例を示す図である。この装置100は、CPU(中央演算処理装置)201、ROM(リードオンリーメモリ)202、RAM(ランダムアクセスメモリ)203、入力部204、表示部205、およびMIDIインタフェース部(以下「MIDI I/F」と表記する)206が、バス207によって相互に接続された構成を備える。MIDI I/F206は、外部(内蔵でもよい)の電子楽器208(図1の楽器104に対応)に接続される。 FIG. 2 is a diagram illustrating an example of a hardware configuration of the embodiment of the performance operation guide apparatus 100 having the functional configuration of FIG. The apparatus 100 includes a CPU (Central Processing Unit) 201, a ROM (Read Only Memory) 202, a RAM (Random Access Memory) 203, an input unit 204, a display unit 205, and a MIDI interface unit (hereinafter referred to as “MIDI I / F”). 206) are connected to each other by a bus 207. The MIDI I / F 206 is connected to an external (may be built-in) electronic musical instrument 208 (corresponding to the musical instrument 104 in FIG. 1).
CPU201は、ROM202に記憶された制御プログラムに従って、当該演奏操作ガイド装置100の全体の制御を行う。 The CPU 201 performs overall control of the performance operation guide device 100 according to a control program stored in the ROM 202.
ROM202は、後述する各フローチャートで示される制御動作を実行する制御プログラムを記憶する。また、ROM202は、複数の楽曲の図1に示される演奏情報105などを記憶する。 The ROM 202 stores a control program for executing a control operation shown in each flowchart described later. The ROM 202 also stores performance information 105 shown in FIG.
RAM203は、制御プログラムの実行に必要な、後述する図3、図4、図5に示される、演奏情報、動作データ、準備指示データなどの各種情報を、一時的に記憶する。 The RAM 203 temporarily stores various information necessary for execution of the control program, such as performance information, operation data, and preparation instruction data shown in FIGS. 3, 4, and 5 described later.
入力部204は、ユーザによるキーボード、マウス、各種スイッチ等による入力操作を検出し、その検出結果をCPU201に通知する。 The input unit 204 detects an input operation by a user using a keyboard, a mouse, various switches, and the like, and notifies the CPU 201 of the detection result.
表示部205は、CPU201の制御によって送られてくるデータを液晶ディスプレイなどに出力する。例えば、表示部205は、後述する図24または図28のような表示形式で、演奏動作ガイドを表示する。 The display unit 205 outputs data sent under the control of the CPU 201 to a liquid crystal display or the like. For example, the display unit 205 displays a performance action guide in a display format as shown in FIG.
MIDI I/F206は、CPU201が、ROM202またはRAM203上の演奏情報を、MIDI(Musical Instrument Digital Interface)のデータフォーマットで、電子楽器208に順次転送することにより、演奏動作ガイドを行う楽曲を自動演奏させることができる。 The MIDI I / F 206 causes the CPU 201 to automatically play the music for performing the performance operation by sequentially transferring the performance information on the ROM 202 or the RAM 203 to the electronic musical instrument 208 in the MIDI (Musical Instrument Digital Interface) data format. be able to.
本実施形態による演奏動作ガイド装置100の動作は、後述する各フローチャート等で実現される図1の各部の機能処理を搭載した制御プログラムを、CPU201がROM202から読み出して順次実行することで実現される。そのプログラムは、特には図示しない可搬型記録媒体を介して提供されてもよく、或いは特には図示しないネットワーク接続装置によりネットワークから取得できるようにしてもよい。 The operation of the performance operation guide device 100 according to the present embodiment is realized by the CPU 201 reading out from the ROM 202 and sequentially executing a control program loaded with the function processing of each unit in FIG. . The program may be provided via a portable recording medium (not shown) or may be acquired from the network by a network connection device (not shown).
以下、図1の機能構成と図2のハードウェア構成を有する本実施形態による演奏動作ガイド装置100の動作について、以下に詳細に説明する。 Hereinafter, the operation of the performance operation guide apparatus 100 according to this embodiment having the functional configuration of FIG. 1 and the hardware configuration of FIG. 2 will be described in detail.
図3は、演奏動作ガイドを行う曲の演奏情報Note[0]、Note[1]、・・・、Note[N−1]のデータ構成例を示す図であり、図1の演奏情報104に対応する。演奏情報は、図2において、CPU201が電子楽器208に対して自動演奏をさせるにあたって必要な、インデックス番号(0、1、・・・、N−1)(Nは1曲分の演奏情報の数)、発音を開始する発音開始時刻Timeと発音継続時間Gate(図1の「発音タイミングに関する情報」に対応)、音高Pitch(図1の「音高に関する情報」に対応)、右手または左手を示すトラック番号Hand(図1の「パートに関する情報」に対応)、および指番号Finger(図1の「演奏する指に関する情報」に対応)の各情報を記憶する。演奏情報Note[0]、Note[1]、・・・、Note[N−1]は、図2において、CPU201によってROM202からRAM203に転送された後に、順次読み出されて処理されるが、発音開始時刻Timeの順に並ぶように、インデックス番号(0、1、・・・、N−1)が付与されている。 FIG. 3 is a diagram showing a data configuration example of performance information Note [0], Note [1],..., Note [N-1] of the music for performing the performance operation guide. Correspond. In FIG. 2, the performance information is index numbers (0, 1,..., N-1) (N is the number of pieces of performance information for one song) that is necessary for the CPU 201 to automatically play the electronic musical instrument 208. ), The sound generation start time Time to start sound generation and the sound generation duration Gate (corresponding to “information related to sound generation timing” in FIG. 1), pitch Pitch (corresponding to “information related to sound pitch” in FIG. 1), right hand or left hand Each information of a track number Hand shown (corresponding to “information about a part” in FIG. 1) and a finger number Finger (corresponding to “information about a finger to perform” in FIG. 1) is stored. The performance information Note [0], Note [1],..., Note [N-1] are sequentially read out and processed after being transferred from the ROM 202 to the RAM 203 by the CPU 201 in FIG. Index numbers (0, 1,..., N−1) are assigned so as to be arranged in the order of the start time Time.
図4は、図2のCPU201による後述する制御処理によってRAM203上に生成される動作データframe[0]、frame[1]、・・・、frame[FrameCount−1]のデータ構成例を示す図であり、図1の動作情報105に対応する。FrameCountは、RAM203上に生成される動作データの総数を示す。動作データは、図2において、CPU201が表示部205に演奏動作ガイドを表示させるにあたって必要な、右手(値「1」)または左手(値「0」)を示すトラック番号「Hand」、5本の各指の演奏位置「position[0]〜position[4]」(指を置くべき鍵盤番号)(図1の「各指の演奏位置に関する情報」に対応)、そこへ動くにあたっての動作を開始・終了する時刻である動作開始時間「start」と動作終了時間「term」(図1の「動作タイミングに関する情報」に対応)、各指の状態「status[0]〜status[4]」(それぞれ、値「−1」が準備動作、値「1」が押鍵、値「0」は特に指定無し)(図1の「各指の演奏のガイド/演奏準備のガイドを指示する情報」に対応)、奥行き方向の位置「Zpos」(図1の「奥行き方向の位置に関する情報」に対応)などの情報を記憶する。 FIG. 4 is a diagram illustrating a data configuration example of operation data frame [0], frame [1],..., Frame [FrameCount-1] generated on the RAM 203 by a control process described later by the CPU 201 in FIG. Yes, corresponding to the operation information 105 of FIG. FrameCount indicates the total number of operation data generated on the RAM 203. In FIG. 2, the operation data includes the track number “Hand” indicating the right hand (value “1”) or the left hand (value “0”) and five tracks necessary for the CPU 201 to display the performance operation guide on the display unit 205. Performance position of each finger “position [0] to position [4]” (key number on which the finger should be placed) (corresponding to “information on performance position of each finger” in FIG. 1), start movement to move there. The operation start time “start” and the operation end time “term” (corresponding to “information about operation timing” in FIG. 1), and the states “status [0] to status [4]” of each finger (respectively, The value “−1” is a preparation operation, the value “1” is a key press, and the value “0” is not specified.) (Corresponding to “information for instructing performance guide / performance preparation guide of each finger” in FIG. 1) ,depth Storage of information such as the position of the direction "Zpos" (corresponding to "information on the depth direction position" in FIG. 1).
図5は、図2のCPU201による後述する制御処理によってRAM203上に生成される準備指示データPreMotion[0]、PreMotion[1]、・・・、PreMotion[PreMotionCount−1]のデータ構成例を示す図であり、図1の準備指示情報107に対応する。PreMotionCountは、RAM203上に生成される準備指示データの総数を示す。準備指示データは、図2において、CPU201が表示部205に演奏動作ガイドを表示する際に、ユーザに対し演奏動作(指づかい)上の注意を喚起させるような表示をするためのデータである。準備指示データは、トラック番号(右手・左手)、準備(意識)を開始・終了する時刻である準備開始時刻と準備終了時刻、準備(意識)のタイプである準備タイプ(1がPassing、2がMoving)、各指に対応する演奏情報のインデックス番号(図3参照)などの情報(図1の「準備指示情報107」に対応)を記憶する。 FIG. 5 is a diagram showing a data configuration example of preparation instruction data PreMotion [0], PreMotion [1],..., PreMotion [PreMotionCount-1] generated on the RAM 203 by a control process described later by the CPU 201 of FIG. And corresponds to the preparation instruction information 107 of FIG. PreMotionCount indicates the total number of preparation instruction data generated on the RAM 203. In FIG. 2, when the CPU 201 displays the performance operation guide on the display unit 205 in FIG. 2, the preparation instruction data is data that is displayed to alert the user about the performance operation (fingering). . The preparation instruction data includes the track number (right hand / left hand), the preparation start time and preparation end time which are the start and end times of preparation (consciousness), and the preparation type (1 is Passing, 2 is the preparation (consciousness) type) Moving), information (corresponding to “preparation instruction information 107” in FIG. 1) such as an index number (see FIG. 3) of performance information corresponding to each finger is stored.
以下、本実施形態における演奏準備動作情報生成処理について、フローチャートを用いて説明する。以下の説明において、図1の各機能部分と図2の各ハードウェア部分を随時参照するものとする。また、図3で説明した演奏情報Note[0]〜Note[N−1]、図4で説明した動作データframe[0]〜frame[FrameCount]、および図5で説明した準備指示データPrepMotion[0]〜PrepMotion[PrepMotionCount]は、RAM203に記憶されるものとする。さらに、以下の説明で用いる各変数も、RAM203に記憶されるものとする。また、以下の説明では、ある変数の名称が、その変数が記憶している値を指す場合がある。 Hereinafter, the performance preparation operation information generation processing in the present embodiment will be described using a flowchart. In the following description, the function parts in FIG. 1 and the hardware parts in FIG. 2 are referred to as needed. Also, the performance information Note [0] to Note [N-1] described in FIG. 3, the operation data frame [0] to frame [FrameCount] described in FIG. 4, and the preparation instruction data PrepMotion [0] described in FIG. ] To PrepMotion [PrepMotionCount] are stored in the RAM 203. Further, each variable used in the following description is also stored in the RAM 203. In the following description, the name of a variable may indicate a value stored in the variable.
図6は、本実施形態における演奏準備動作情報生成処理を示すメインフローチャートである。この処理は、図2において、CPU201が、ROM202に記憶された演奏準備動作情報生成処理プログラムを実行する動作として実現される。 FIG. 6 is a main flowchart showing performance preparation operation information generation processing in the present embodiment. This processing is realized as an operation in which the CPU 201 executes the performance preparation operation information generation processing program stored in the ROM 202 in FIG.
本実施形態では、ユーザが入力部204から楽曲を選択することにより、CPU201が、その楽曲1曲分の演奏情報Note[i](0≦i≦N−1)(図3参照)をROM202からRAM203に読み出し、その読み出した各演奏情報Note[i]に対して順次、動作情報生成処理を一括して生成する。 In the present embodiment, when the user selects a song from the input unit 204, the CPU 201 sends performance information Note [i] (0 ≦ i ≦ N−1) (see FIG. 3) for the one song from the ROM 202. The information is read out to the RAM 203, and the action information generation process is sequentially generated for each piece of performance information Note [i] thus read.
処理が起動すると、CPU201は、RAM203上の演奏情報や各種変数を初期化し(ステップS601)、RAM203から図3に例示される構成の演奏情報を読み込み(ステップS602)、RAM203上に図4に例示されるデータフォーマットで動作データと準備指示データを生成し(ステップS603)、プログラムを終了する。 When the process starts, the CPU 201 initializes performance information and various variables on the RAM 203 (step S601), reads performance information having the configuration illustrated in FIG. 3 from the RAM 203 (step S602), and illustrates the RAM 203 in FIG. The operation data and the preparation instruction data are generated in the data format (step S603), and the program is terminated.
図7は、図6のステップS603の動作情報生成処理の例を示すフローチャートである。 FIG. 7 is a flowchart illustrating an example of the operation information generation process in step S603 of FIG.
CPU201はまず、パート検索用変数iHに値1を設定する(ステップS701)。パート検索用変数iHは、右手または左手のうちどちらを処理するかを示す情報であり、その値が1なら右手、2なら左手を示す。その後、CPU201は、ステップS712でパート検索用変数iHの値を+1しながら、ステップS702で変数iHの値が2を超えたと判定するまで、変数iHが示す右手および左手の各パート毎に、以下のステップS703からS711の一連の処理を実行して、動作データ(図4参照)および準備指示データ(図5参照)を一括して生成する。 First, the CPU 201 sets a value 1 to the part search variable iH (step S701). The part search variable iH is information indicating which one of the right hand and the left hand is to be processed. If the value is 1, the right hand indicates the right hand and if the value is 2, the left hand indicates the left hand. Thereafter, the CPU 201 increments the value of the part search variable iH by +1 in step S712, and determines for each part of the right hand and left hand indicated by the variable iH until it determines that the value of the variable iH exceeds 2 in step S702. Steps S703 to S711 are executed to generate operation data (see FIG. 4) and preparation instruction data (see FIG. 5) collectively.
まず、CPU201は、各変数を初期化する(ステップS703)。まず、演奏情報検索用変数iNには、0が設定される。演奏情報検索用変数iNの値は、図3に例示した演奏情報Note[0]〜Note[N−1]の各インデックス番号0〜N(0≦i≦N−1、Nは演奏情報の最大数)を示す。動作開始時刻変数startには、時刻0が設定される。この変数は、ステップS710の動作データ出力の処理で使用される。現在のパート検索用変数iHの値に対して各指において押鍵中とされるべき演奏情報へのポインタ変数Hand[0]〜Hand[4](親指から小指に対応)には、未定義値NULLが設定される。以降、この変数を、「押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]」と呼ぶ。また、現在のパート検索用変数iHの値に対してガイド対象(押鍵または準備動作)とされる演奏情報を出力して動作データ(図4参照)を生成するための各指のガイド対象の演奏情報へのポインタ変数prep[0]〜prep[4](親指から小指に対応)にも、未定義値NULLが設定される。以降、この変数を「出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]」と呼ぶ。さらに、図4の動作データの総数を示す変数FrameCountの値が「0」に初期設定される。この変数は、図7のステップS710の動作データ出力の処理で操作される。 First, the CPU 201 initializes each variable (step S703). First, 0 is set in the performance information search variable iN. The values of the performance information search variable iN are index numbers 0 to N (0 ≦ i ≦ N−1, where N is the maximum of the performance information) of the performance information Note [0] to Note [N−1] illustrated in FIG. Number). Time 0 is set in the operation start time variable start. This variable is used in the operation data output process in step S710. Pointer variables Hand [0] to Hand [4] (corresponding to thumb to little finger) to the performance information to be pressed by each finger with respect to the current value of part search variable iH are undefined values. NULL is set. Hereinafter, this variable is referred to as “key depression target performance information pointer variable Hand [0] to Hand [4]”. Further, the guide object of each finger for generating performance data (see FIG. 4) by outputting performance information that is a guide object (key depression or preparatory action) for the current value of the part search variable iH. The undefined value NULL is also set in the pointer variables prep [0] to prep [4] (corresponding to the thumb to the little finger) to the performance information. Hereinafter, this variable is referred to as “output buffer performance information pointer variable prep [0] to prep [4]”. Further, the value of the variable FrameCount indicating the total number of operation data in FIG. 4 is initialized to “0”. This variable is manipulated in the operation data output process in step S710 of FIG.
次に、CPU201は、次鍵の検索の処理を実行する(ステップS704)。この処理は、各指の次に押鍵する演奏情報へのポインタ変数Next[0]〜Next[4](親指から小指に対応)の各値を算出する処理である。以降、この変数を、「次タイミング演奏情報ポインタ変数Next[0]〜Next[4]」と呼ぶ。ステップS704は、最初の実行であって、ステップS703により演奏情報検索用変数iN=0とされている。このため、ステップS704での次鍵の検索の処理により、現在のパートiHにおいて、曲の先頭の発音タイミングに対して、各指においてその次のタイミングで押鍵されるべき現在のパートiHに属する各演奏情報へのポインタ変数Next[0]〜Next[4]が予め取得されることになる。この次タイミング演奏情報ポインタ変数Next[0]〜Next[4]は、ステップS709の準備確認の処理で参照される。 Next, the CPU 201 executes a next key search process (step S704). This process is a process of calculating each value of pointer variables Next [0] to Next [4] (corresponding to thumb to little finger) to the performance information to be pressed next to each finger. Hereinafter, this variable is referred to as “next timing performance information pointer variable Next [0] to Next [4]”. Step S704 is the first execution, and the performance information search variable iN = 0 is set in step S703. For this reason, the search for the next key in step S704 belongs to the current part iH to be pressed at the next timing for each finger with respect to the sounding timing at the beginning of the song in the current part iH. Pointer variables Next [0] to Next [4] to each piece of performance information are acquired in advance. The next timing performance information pointer variables Next [0] to Next [4] are referred to in the preparation confirmation process in step S709.
次に、CPU201は、ステップS711で演奏情報検索用変数iNの値を+1ずつしながら、ステップS705で変数iNの値が演奏情報の最大数(図3の例では、演奏情報の最大数=N)に達したと判定するまで、各演奏情報Note[iN](0≦iN≦N−1)毎に、以下のステップS706からS710までの一連の処理を実行する。この繰返し処理により、CPU201は、現在のパートiHについて、指定された曲の全ての演奏情報Note[0]、Note[1]、・・・、Note[N−1]について処理を実行することにより、曲全体の演奏ガイド用の動作データを、一括して算出する。 Next, the CPU 201 increments the value of the performance information search variable iN by +1 in step S711, and in step S705, the value of the variable iN is the maximum number of performance information (in the example of FIG. 3, the maximum number of performance information = N ), The following series of processing from step S706 to S710 is executed for each piece of performance information Note [iN] (0 ≦ iN ≦ N−1). By this iterative process, the CPU 201 executes the process for all performance information Note [0], Note [1],..., Note [N-1] of the specified song for the current part iH. The operation data for the performance guide for the entire song is calculated at once.
CPU201は、演奏情報検索用変数iNが示す現在処理中の演奏情報Note[iN]のトラック番号Hand(図3参照)(「Note[iN].Hand」と表記する)が、現在のパート検索用変数iHが示す現在処理中のパートiHに等しいか否か、すなわち音符Note[iN]を演奏する手(右手、左手の別)が、現在調査中の、iHで指定される手に等しいか否か、を判定する(ステップS706)。 The CPU 201 uses the track number Hand (see FIG. 3) of the performance information Note [iN] currently being processed indicated by the performance information search variable iN (referred to as “Note [iN] .Hand”) for the current part search. Whether the variable iH is equal to the currently processed part iH, that is, whether the hand playing the note Note [iN] (separate right hand or left hand) is equal to the hand specified by iH currently being investigated. Is determined (step S706).
CPU201は、ステップS706の判定がNO、すなわち、音符Note[iN]が、現在調査中の手で演奏する音でないならば、演奏情報検索用変数iNを+1(ステップS711中では「iN++」と記載)して、次の演奏情報の処理に移行する。 If the determination in step S706 is NO, that is, if the note Note [iN] is not a sound played with the hand currently being investigated, the CPU 201 describes the performance information search variable iN as +1 (in step S711, “iN ++”). ), And the process proceeds to the next performance information processing.
CPU201は、ステップS706の判定がYESならば、まず、離鍵確認の処理を実行する(ステップS707)。離鍵確認の処理では、現在のパートiHに属する演奏情報Note[iN]の鍵が押鍵された場合に、現在のパートiHの押鍵対応となっている5本の指の演奏情報を示す押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]のうち、発音期間(発音開始時刻+発音継続時間)が演奏情報Note[iN]の発音開始時刻よりも前に終了する指があればその指の発音が終了させられる。 If the determination in step S706 is YES, the CPU 201 first executes a key release confirmation process (step S707). In the key release confirmation processing, when the key of the performance information Note [iN] belonging to the current part iH is pressed, the performance information of the five fingers corresponding to the key pressing of the current part iH is shown. Among the key-pressed performance information pointer variables Hand [0] to Hand [4], there is a finger whose sounding period (sounding start time + sounding duration) ends before the sounding start time of the performance information Note [iN]. If so, the pronunciation of that finger is terminated.
次に、CPU201は、押鍵検索の処理を実行する(ステップS708)。押鍵検索の処理では、現在のパートiHに属する処理対象の演奏情報Note[iN]と同時に発音開始すべき現在のパートiHに属する演奏情報が検索される。そして、その検索された演奏情報が演奏情報Note[iN]とともに、各演奏情報に登録されている指に対応する押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]にセットされる。また、次タイミング演奏情報ポインタ変数Next[0]〜Next[4]のうち、上記セットが行われた指に対応するポインタの内容が、そのセットが行われた指においてその次のタイミングで押鍵されるべき現在のパートiHに属する演奏情報へのポインタ値に更新される。なお、同じパートに属し同時に発音開始される演奏情報はRAM203上では連続して記憶されている。このため、上記押鍵検索の処理により同時に発音開始される演奏情報が検索された後は、次の演奏情報検索用変数iNの値がその検索された演奏情報の数だけジャンプして設定される。 Next, the CPU 201 executes a key depression search process (step S708). In the key depression search process, performance information belonging to the current part iH to be sounded is searched simultaneously with the performance information Note [iN] to be processed belonging to the current part iH. Then, the retrieved performance information is set together with the performance information Note [iN] in the key depression target performance information pointer variables Hand [0] to Hand [4] corresponding to the fingers registered in each performance information. Further, among the next timing performance information pointer variables Next [0] to Next [4], the content of the pointer corresponding to the finger on which the set has been made is pressed at the next timing on the finger on which the set has been made. The pointer value to the performance information belonging to the current part iH to be played is updated. Note that performance information belonging to the same part and starting to sound at the same time is continuously stored in the RAM 203. For this reason, after the performance information whose sound generation is started at the same time is retrieved by the key depression retrieval process, the value of the next performance information retrieval variable iN is set by jumping by the number of retrieved performance information. .
続いて、CPU201は、準備確認の処理を実行する(ステップS709)。準備確認の処理では、演奏情報が順次読み込まれながら、曲の各再生時点において、再生時点における演奏情報に対応する演奏状態とその再生時点以降における演奏情報に対応する演奏状態とが比較される。この結果、例えば、親指で押鍵中に親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する第1の状態が検出される。または、親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する第2の状態が検出される。また、第1および第2のいずれの状態でもなく、任意の指で押鍵中の鍵から所定の基準値に比較して近い位置の異なる鍵を次以降のタイミングにてその任意の指以外の指で押鍵する第3の状態が検出される。あるいは、任意の指で押鍵中の鍵と同じ鍵を次のタイミングにてその任意の指以外の指で押鍵する第4の状態が検出される。さらには、現在押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態が検出される。 Subsequently, the CPU 201 executes a preparation confirmation process (step S709). In the preparation confirmation process, the performance information corresponding to the performance information at the reproduction time is compared with the performance information corresponding to the performance information after the reproduction time at each reproduction time of the music while the performance information is sequentially read. As a result, for example, a first state is detected in which the key is pushed over the thumb with a finger other than the thumb while the key is depressed with the thumb and the key is depressed at the subsequent timing. Alternatively, a second state is detected in which a key other than the thumb is pressed and moved under the finger other than the thumb while the key is pressed at a subsequent timing. In addition, in any state other than the first and second states, a key whose position is different from the key being pressed by an arbitrary finger compared to a predetermined reference value is set to a timing other than that arbitrary finger at the following timing. A third state in which the key is pressed with a finger is detected. Alternatively, a fourth state in which the same key as the key being pressed with an arbitrary finger is pressed with a finger other than the arbitrary finger at the next timing is detected. Furthermore, a state is detected in which a key at a position away from a currently pressed key at a position away from a predetermined reference value is pressed next.
以上のステップS707の離鍵確認の処理、ステップS708の押鍵検索の処理、ステップS709の準備確認の処理は、図1の操作状態推定手段102の機能を実現する。 The key release confirmation process in step S707, the key depression search process in step S708, and the preparation confirmation process in step S709 realize the function of the operation state estimation unit 102 in FIG.
次に、CPU201は、動作データ出力の処理を実行する。動作データ出力の処理では、図4で説明した動作データ(図1の「演奏の動作情報105」に対応)が出力される。 Next, the CPU 201 executes operation data output processing. In the operation data output process, the operation data described in FIG. 4 (corresponding to “performance operation information 105” in FIG. 1) is output.
前述したように、ステップS709の準備確認の処理で、親指で押鍵中に親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する第1の状態が検出された場合には、ステップS710の動作データ出力の処理では、動作データとしては、次のようなデータが出力される。まず、親指と親指以外の指の演奏位置(鍵盤番号)の情報が、親指に対応するposition[0]とposition[1]〜position[4]のうちの各指に対応するいずれかとして得られる。また、親指と親指以外の指を含む押鍵動作の動作開始時間と動作終了時間がstartおよびtermとして得られる。さらに、親指については、押鍵(演奏を行うべき指としてガイドする)を示す値「1」が、status[0]として得られる。また、親指以外の指については、準備動作(演奏の準備を行うべき指としてガイドする)を示す値「−1」が、status[1]〜status[4]のうちの各指に対応するいずれかとして得られる。 As described above, in the preparation confirmation process in step S709, the first state in which the key is pressed with the thumb while the key is moved over the thumb with a finger other than the thumb and the key is pressed at the subsequent timing is detected. In such a case, in the operation data output process in step S710, the following data is output as the operation data. First, information on the performance position (keyboard number) of the thumb and fingers other than the thumb is obtained as any one of positions [0] and positions [1] to [4] corresponding to the thumb. . Further, the operation start time and operation end time of the key pressing operation including the thumb and fingers other than the thumb are obtained as start and term. Further, for the thumb, a value “1” indicating a key depression (guided as a finger to perform) is obtained as status [0]. For the fingers other than the thumb, a value “−1” indicating a preparatory action (guided as a finger to be prepared for performance) is a value corresponding to each finger of status [1] to status [4]. It is obtained as something.
また、前述したように、ステップS709の準備確認の処理で、親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する第2の状態が検出された場合には、ステップS710の動作データ出力の処理では、動作データとしては、次のようなデータが出力される。まず、親指以外の指と親指の演奏位置(鍵盤番号)の情報が、position[1]〜position[4]のうちの各指に対応するいずれかと親指に対応するposition[0]として得られる。また、親指以外の指と親指を含む押鍵動作の動作開始時間と動作終了時間がstartおよびtermとして得られる。さらに、親指以外の指については、押鍵(演奏を行うべき指としてガイドする)を示す値「1」が、status[1]〜status[4]のうちの各指に対応するいずれかとして得られる。また、親指については、準備動作(演奏の準備を行うべき指としてガイドする)を示す値「−1」が、status[0]として得られる。 In addition, as described above, in the preparation confirmation process in step S709, the key is pressed at the next and subsequent timings while the key other than the thumb is moved under the finger other than the thumb while the key is pressed with the finger other than the thumb. When the state 2 is detected, the following data is output as the operation data in the operation data output process of step S710. First, information on the finger other than the thumb and the performance position (keyboard number) of the thumb is obtained as position [0] corresponding to each thumb of position [1] to position [4]. Also, the operation start time and operation end time of the key pressing operation including the fingers other than the thumb and the thumb are obtained as start and term. Further, for fingers other than the thumb, a value “1” indicating a key press (guided as a finger to perform) is obtained as one corresponding to each finger of status [1] to status [4]. It is done. For the thumb, a value “−1” indicating a preparatory operation (guided as a finger to be prepared for performance) is obtained as status [0].
さらに、前述したように、ステップS709の準備確認の処理で、第1および第2のいずれの状態でもなく、任意の指で押鍵中の鍵から所定の基準値に比較して近い位置の異なる鍵を次以降のタイミングにてその任意の指以外の指で押鍵する第3の状態が検出された場合には、ステップS710の動作データ出力の処理では、動作データとしては、次のようなデータが出力される。まず、上記任意の指とその任意の指以外の指の演奏位置(鍵盤番号)の情報が、position[0]〜position[4]のうちの各指に対応するいずれかとして得られる。また、上記任意の指とその任意の指以外の指を含む押鍵動作の動作開始時間と動作終了時間がstartおよびtermとして得られる。さらに、上記任意の指については、押鍵(演奏を行うべき指としてガイドする)を示す値「1」が、また、上記任意の指以外の指については、準備動作(演奏の準備を行うべき指としてガイドする)を示す値「−1」が、それぞれ、status[0]〜status[4]のうちの各指に対応するいずれかとして得られる。 Further, as described above, in the preparation confirmation process in step S709, the position closer to the predetermined reference value is different from the key being pressed with any finger than in the first and second states. When the third state in which the key is pressed with a finger other than the arbitrary finger is detected at the subsequent timing, in the operation data output process of step S710, the operation data is as follows: Data is output. First, the information on the performance position (keyboard number) of the arbitrary finger and the fingers other than the arbitrary finger is obtained as any one of the positions [0] to position [4] corresponding to each finger. Also, the operation start time and operation end time of the key pressing operation including the above-mentioned arbitrary finger and fingers other than the arbitrary finger are obtained as start and term. Further, the value “1” indicating the key depression (guided as a finger to be played) is given for the arbitrary finger, and the preparatory operation (preparation for performance should be performed) for the fingers other than the arbitrary finger. A value “−1” indicating “guided as a finger” is obtained as any one of status [0] to status [4] corresponding to each finger.
以上のステップS710の動作データ出力の処理は、図1の操作状態推定手段102と演奏操作ガイド手段103の機能を実現する。 The operation data output process in step S710 described above realizes the functions of the operation state estimation unit 102 and the performance operation guide unit 103 in FIG.
以上のステップS706からS710までの一連の処理が、ステップS702とS712で制御される繰返し制御により右手および左手のパート毎に、ステップS705とS711で制御される繰返し制御により図3で説明した各演奏情報Note[iN](0≦iN≦N−1)毎に実行される。これにより、図4で説明した動作データframe[0]〜frame[FrameCount−1]が、RAM203上に生成される。この動作データは、動作タイミング毎に、どの指を押鍵するかという情報のみならず、どの指を次の押鍵のために準備するかという情報も、各指の状態status[0]〜status[4]として保有することが特徴である。このような動作データを用いることにより、CPU201は、表示部205のディスプレイ上で、次のような演奏動作ガイドを実現することができる。 The series of processes from step S706 to step S710 described above is performed for each performance described in FIG. 3 for each part of the right hand and left hand by the repetition control controlled by steps S702 and S712, and by the repetition control controlled by steps S705 and S711. It is executed for each information Note [iN] (0 ≦ iN ≦ N−1). As a result, the operation data frame [0] to frame [FrameCount-1] described with reference to FIG. This motion data includes not only information on which finger is pressed for each motion timing but also information on which finger is prepared for the next key press, statuses [0] to status of each finger. It is characterized by possessing as [4]. By using such operation data, the CPU 201 can realize the following performance operation guide on the display of the display unit 205.
例えば、親指の状態を示すstatus[0]に押鍵を示す値「1」がセットされ、親指以外の指の状態を示すstatus[1]〜status[4]のうちのいずれかに準備動作を示す値「−1」がセットされている場合、CPU201は、親指の位置position[0]で表される鍵を親指で押鍵するとともに、親指以外の指の状態を示すstatus[1]〜status[4]のうち準備動作を示す値「−1」がセットされている指について、その指に対応するposition[1]〜position[4]のいずれかで表される鍵の位置で、その指を準備(配置)させるように動作する。この場合において、親指の位置position[0]と、準備すべき他の指の位置position[1]〜position[4]の鍵の位置との関係によっては、通常の指の左右の位置関係と逆転した位置関係になっている場合がある。このような場合、CPU201は、「親指以外の指を親指の上を越えて次の押鍵位置まで移動させておきなさい」という準備動作をガイド表示させることが可能である。 For example, a value “1” indicating a key press is set in status [0] indicating the state of the thumb, and a preparation operation is performed on any of status [1] to status [4] indicating the state of a finger other than the thumb. When the value “−1” is set, the CPU 201 presses the key represented by the thumb position position [0] with the thumb and the statuses [1] to status indicating the states of the fingers other than the thumb. Among the fingers of [4], for which the value “−1” indicating the preparatory action is set, the finger at the position of the key represented by any of position [1] to position [4] corresponding to the finger. Operate to prepare (place). In this case, depending on the relationship between the thumb position position [0] and the key positions of the other finger positions position [1] to position [4] to be prepared, the right / left positional relationship of the normal finger is reversed. May be in a positional relationship. In such a case, the CPU 201 can perform a guide display of a preparatory operation of “move fingers other than the thumb over the thumb to the next key pressing position”.
また例えば、親指以外の指の状態を示すstatus[1]〜status[4]のうちのいずれかに押鍵を示す値「1」がセットされ、親指の状態を示すstatus[0]に準備動作を示す値「−1」がセットされている場合も同様に、押鍵を示す指の鍵の位置と、親指が準備動作を行うべき鍵の位置との位置関係によっては、CPU201は、「親指を親指以外の指の下をくぐらせて次の押鍵位置まで移動させておきなさい」という準備動作をガイド表示させることが可能である。 In addition, for example, a value “1” indicating a key press is set in any of status [1] to status [4] indicating the state of a finger other than the thumb, and a preparatory operation is performed on status [0] indicating the state of the thumb. Similarly, when the value “−1” indicating the key is set, depending on the positional relationship between the position of the finger key indicating the key press and the position of the key on which the thumb should perform the preparation operation, the CPU 201 It is possible to guide display the preparatory action of “Move the bottom of the finger other than the thumb and move it to the next key pressing position”.
これらの演奏ガイド表示は、演奏動作上のテクニックに関する動作情報であるということができる。このようにして、本実施形態における図7のフローチャートで示される図6のステップS603の動作情報生成処理によって、演奏情報に付加されている運指情報(図3の「指番号」)から演奏動作上のテクニックに関する動作情報を自動的に抽出することが可能となり、それにより運指とともに演奏動作上のテクニックも演奏ガイドすることが可能となる。 It can be said that these performance guide displays are operation information related to techniques on performance operations. In this way, the performance action is performed from the fingering information ("finger number" in FIG. 3) added to the performance information by the action information generation process in step S603 of FIG. 6 shown in the flowchart of FIG. 7 in the present embodiment. It is possible to automatically extract motion information relating to the above technique, and thereby it is possible to guide performance techniques as well as fingering.
図8は、図7のステップS704の次鍵の検索の処理の例を示すフローチャートである。 FIG. 8 is a flowchart showing an example of the next key search process in step S704 of FIG.
まず、CPU201は、指番号指定変数ifigに値「0」を格納する(ステップS801)。 First, the CPU 201 stores the value “0” in the finger number designation variable ifig (step S801).
次に、CPU201は、ステップS804で指番号指定変数ifigの値を+1ずつしながら、ステップS802で変数ifigの値が片手の指の最大数「5」に達したと判定するまで、ステップ803で、変数ifigが示す指に対応する次タイミング演奏情報ポインタ変数Next[ifig]を更新する処理を実行する。ここで、ifig=0ならば親指、ifig=1ならば人差し指、ifig=2ならば中指、ifig=3ならば薬指、ifig=4ならば小指が、それぞれ指定されたことになる。 Next, in step 803, the CPU 201 determines that the value of the variable ifig has reached the maximum number of fingers of one hand “5” in step S 802 while incrementing the value of the finger number designation variable ifig by +1 in step S 804. The next timing performance information pointer variable Next [ifig] corresponding to the finger indicated by the variable ifig is updated. Here, ifif = 0, the thumb is designated, ifig = 1, the index finger, ifig = 2, the middle finger, ifig = 3, the ring finger, and ifig = 4, the little finger is designated.
図9は、図8のステップS803のNext[ifig]の更新処理の例を示すフローチャートである。 FIG. 9 is a flowchart showing an example of Next [ifig] update processing in step S803 of FIG.
まず、CPU201は、現在の指番号ifigが示す指に対応する次タイミング演奏情報ポインタ変数Next[ifig]に未定義値NULLを格納する(ステップS901)。 First, the CPU 201 stores an undefined value NULL in the next timing performance information pointer variable Next [ifig] corresponding to the finger indicated by the current finger number ifig (step S901).
次に、CPU201は、演奏情報検索用変数iに、現在の演奏情報のカウンタ値(図7→図8の場合は演奏情報検索用変数iNが示す値)に+1した値を格納する(ステップS902)。これは、現在の演奏情報の次の演奏情報から検索が行われるという意味である。 Next, the CPU 201 stores a value obtained by adding 1 to the counter value of the current performance information (in the case of FIG. 7 to FIG. 8, the value indicated by the performance information search variable iN) in the performance information search variable i (step S902). ). This means that the search is performed from the performance information next to the current performance information.
次に、CPU201は、ステップS906で演奏情報検索用変数iの値を+1ずつしながら、ステップS903で変数iの値が演奏情報の最大数(図3の例では、演奏情報の最大数=N)に達したと判定するまで、各演奏情報Note[i](現在の演奏情報のインデックス番号+1≦i≦N−1)毎に、以下のステップS904とS905の判定処理を実行する。 Next, the CPU 201 increments the value of the performance information search variable i by +1 in step S906, while the value of the variable i is the maximum number of performance information in step S903 (in the example of FIG. 3, the maximum number of performance information = N). ), The following determination processing of steps S904 and S905 is executed for each performance information Note [i] (current performance information index number + 1 ≦ i ≦ N−1).
すなわち、CPU201はまず、演奏情報検索用変数iが示す演奏情報Note[i]中の右手または左手を示すトラック番号Hand(図3参照)(図9中では「Note[i].Hand」と記載)が、パート検索用変数iHの値が示す現在処理中のパート番号(図7のステップS701、S702、S712参照)に等しいか否かを判定する(ステップS904)。なお、図9中の「==」は、その両辺の値同士が「等しい」ことを検査する演算子である。 That is, the CPU 201 first describes the track number Hand (see FIG. 3) indicating the right hand or the left hand in the performance information Note [i] indicated by the performance information search variable i (referred to as “Note [i] .Hand” in FIG. 9). ) Is equal to the part number currently being processed indicated by the value of the part search variable iH (see steps S701, S702, and S712 in FIG. 7) (step S904). Note that “==” in FIG. 9 is an operator that checks that the values on both sides are “equal”.
ステップS904の判定がNOならば、演奏情報検索用変数iが示す演奏情報Note[i]は、現在処理中のパート(右手・左手の別)ではないので、CPU201は、ステップS906の処理に移行して、次の演奏情報の検索に進む。 If the determination in step S904 is NO, the performance information Note [i] indicated by the performance information search variable i is not the part currently being processed (separate right hand / left hand), so the CPU 201 proceeds to the process in step S906. Then, it proceeds to search for the next performance information.
ステップS904の判定がYESならば、CPU201はさらに、演奏情報検索用変数iが示す演奏情報Note[i]中の指番号Finger(図3参照)(図9中では「Note[i].Finger」と記載)が、現在処理中の指番号ifig(図8のステップS801、S802、S804参照)に等しいか否かを判定する(ステップS905)。 If the determination in step S904 is YES, the CPU 201 further designates a finger number Finger (see FIG. 3) in the performance information Note [i] indicated by the performance information search variable i (see “Note [i]. Finger” in FIG. 9). It is determined whether or not the finger number ifig currently being processed (see steps S801, S802, and S804 in FIG. 8) is equal (step S905).
ステップS905の判定がNOならば、演奏情報検索用変数iが示す演奏情報Note[i]は、現在処理対象としている指以外で演奏する音符であるので、CPU201は、ステップS906の処理に移行して、次の演奏情報の検索に進む。 If the determination in step S905 is NO, the performance information Note [i] indicated by the performance information search variable i is a musical note played with a finger other than the finger currently being processed, and therefore the CPU 201 proceeds to the process of step S906. To the next search for performance information.
ステップS905の判定がYESになると、CPU201は、現在の指番号ifigが示す指に対応する次タイミング演奏情報ポインタ変数Next[ifig]に、トラック番号(パート番号)と指番号が一致した検索された演奏情報Note[i]へのポインタ値(記憶アドレス等)を格納して、次タイミング演奏情報ポインタ変数Next[ifig]の更新処理を終了する。 If the determination in step S905 is YES, the CPU 201 finds that the track number (part number) and the finger number match the next timing performance information pointer variable Next [ifig] corresponding to the finger indicated by the current finger number ifig. The pointer value (storage address, etc.) to the performance information Note [i] is stored, and the update process of the next timing performance information pointer variable Next [ifig] is terminated.
ステップS904またはS905の判定がNOの状態が続き、やがて全ての演奏情報についての検索が終了してステップS903の判定がNOになると、CPU201は、図9のフローチャートで示される、ifigで表される指に関しての次タイミング演奏情報ポインタ変数Next[ifig]の内容がステップS901でNULLに設定されたまま、その更新処理を終了する。そしてこの図9の処理は、図8で、ifigによる指の指示を順次変えながら繰り返して実行されて、現在処理中のパート(右手・左手)の全ての指について順次処理が行われる。 When the determination in step S904 or S905 continues to be NO, and when the search for all performance information is finished and the determination in step S903 is NO, the CPU 201 is represented by ifig shown in the flowchart of FIG. The update process is terminated while the content of the next timing performance information pointer variable Next [ifig] regarding the finger is set to NULL in step S901. The process of FIG. 9 is repeatedly executed in FIG. 8 while sequentially changing the instructions of the fingers by ifig, and the process is sequentially performed for all fingers of the part (right hand / left hand) currently being processed.
以上のようにして、図8と図9のフローチャートで示される処理の例によって、図7のステップS704の次鍵の検索の処理が実現される。 As described above, the processing for searching for the next key in step S704 in FIG. 7 is realized by the example of the processing shown in the flowcharts in FIGS.
図10は、図7のステップS707の離鍵確認の処理の例を示すフローチャートである。 FIG. 10 is a flowchart showing an example of the key release confirmation process in step S707 of FIG.
まず、CPU201は、指番号指定変数ifigに値「0」を格納する(ステップS1001)。 First, the CPU 201 stores the value “0” in the finger number designation variable ifig (step S1001).
次に、CPU201は、ステップS1006で指番号指定変数ifigの値を+1ずつしながら、ステップS1002で変数ifigの値が片手の指の最大数「5」に達したと判定するまで、ステップ1003からS1005の一連の処理を実行する。なお、変数ifigの各値の意味は、図8の場合と同じである。 Next, from step 1003 until the CPU 201 determines that the value of the variable ifig has reached the maximum number of fingers of one hand “5” in step S1002 while incrementing the value of the finger number designation variable ifig by +1 in step S1006. A series of processing of S1005 is executed. The meaning of each value of the variable ifig is the same as in the case of FIG.
CPU201は、現在の指番号ifigが示す押鍵対象演奏情報ポインタ変数Hand[ifig]の値が未定義値でないか否かを判定する(ステップS1003)。なお、図10中の「!=」は、その両辺の値同士が「等しくない」ことを検査する演算子である。前述のように、押鍵対象演奏情報ポインタ変数Hand[ifig]は、ifigで表される指が押鍵中である場合の演奏情報へのポインタ変数であるので、このHand[ifig]の値がNullでない場合は、その指が押鍵中であることを意味する。 The CPU 201 determines whether or not the value of the key-pressing target performance information pointer variable Hand [ifig] indicated by the current finger number ifig is not an undefined value (step S1003). Note that “! =” In FIG. 10 is an operator that checks that the values on both sides are not equal. As described above, the key-pressing target performance information pointer variable Hand [ifig] is a pointer variable to performance information when the finger represented by ifig is pressing, so the value of Hand [ifig] is If it is not Null, it means that the finger is being pressed.
ステップ S1003の判定がNOならば、その指は押鍵中では無いので、CPU201は、ステップS1006の処理に移行し、次の指の処理に移行する。 If the determination in step S1003 is NO, since the finger is not being pressed, the CPU 201 proceeds to the process in step S1006 and proceeds to the next finger process.
押鍵対象演奏情報ポインタ変数Hand[ifig]の値が未定義値でなくステップS1003の判定がYESならば、CPU201は、ポインタ変数Hand[ifig]が指す演奏情報の発音開始時刻Time(図3参照)にその演奏情報の発音継続時間Gateを加算することにより、その演奏情報の発音終了時刻を算出する。そして、CPU201は、ポインタ変数Hand[ifig]が指す演奏情報の上記発音終了時刻が、演奏情報検索用変数iN(図7のステップS705、S711等参照)が示す現在処理対象となっている演奏情報Note[iN]の発音開始時刻Timeよりも前である(小さい)か否かを判定する(ステップS1004)。 If the value of the key-pressing target performance information pointer variable Hand [ifig] is not an undefined value and the determination in step S1003 is YES, the CPU 201 generates the sound generation start time Time of the performance information indicated by the pointer variable Hand [ifig] (see FIG. 3). ) Is added to the sound generation duration time Gate of the performance information to calculate the sound generation end time of the performance information. Then, the CPU 201 determines that the sound generation end time of the performance information pointed to by the pointer variable Hand [ifig] is the performance information that is currently processed by the performance information search variable iN (see steps S705, S711, etc. in FIG. 7). It is determined whether or not the sounding start time Time of Note [iN] is earlier (smaller) (step S1004).
ポインタ変数Hand[ifig]が指す演奏情報の発音終了時刻が処理対象の演奏情報Note[iN]の発音開始時刻Timeよりも前でステップS1004の判定がYESならば、CPU201は、ポインタ変数Hand[ifig]に未定義値NULLを格納して、現在の指番号ifigが示す指を離鍵状態にする(ステップS1005)。 If the sounding end time of the performance information pointed to by the pointer variable Hand [ifig] is before the sounding start time Time of the performance information Note [iN] to be processed and the determination in step S1004 is YES, the CPU 201 determines that the pointer variable Hand [ifig] ] Stores the undefined value NULL, and puts the finger indicated by the current finger number ifig into a key-released state (step S1005).
その後、CPU201は、ステップS1006の処理に移行し、次の指の処理に移行する。 After that, the CPU 201 proceeds to the process of step S1006 and proceeds to the next finger process.
5本全ての指についての確認が終了してステップS1002の判定がNOになると、CPU201は、図10のフローチャートで示される図7のステップS707の離鍵確認の処理を終了する。 When the confirmation for all five fingers is completed and the determination in step S1002 is NO, the CPU 201 ends the key release confirmation process in step S707 of FIG. 7 shown in the flowchart of FIG.
以上のようにして、図10のフローチャートの処理の例で示される図7のステップS707の離鍵確認の処理によって、押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]が示す各指で押鍵中とされている演奏情報のうち、現在処理中の演奏情報Note[iN]の発音開始時刻よりも発音終了時刻が前となる指について、離鍵状態とされる。 As described above, each finger indicated by the key-pressing target performance information pointer variables Hand [0] to Hand [4] by the key release confirmation processing in step S707 of FIG. 7 shown in the processing example of the flowchart of FIG. Among the pieces of performance information that are currently being pressed, the finger whose sounding end time is earlier than the sounding start time of the currently processed performance information Note [iN] is set to the key release state.
図11は、図7のステップS708の押鍵検索の処理の例を示すフローチャートである。 FIG. 11 is a flowchart illustrating an example of the key depression search process in step S708 of FIG.
CPU201はまず、演奏情報検索用変数iに、現在の処理対象の演奏情報検索用変数iNの値をセットする。つまり、同時発音を行う演奏情報を検索するための開始位置が、現在処理対象の演奏情報Note[iN]自身とされる。また、CPU201は、同時発音を行う最後に検索された演奏情報のインデックス番号を示す変数setにも、現在の処理対象の演奏情報検索用変数iNの値をセットする。つまり、同時発音を行う最後に検索された演奏情報が、現在処理対象の演奏情報Note[iN]自身とされる(以上、ステップS1101)。 First, the CPU 201 sets the value of the performance information search variable iN to be processed to the performance information search variable i. That is, the start position for searching for performance information for simultaneous pronunciation is the performance information Note [iN] itself that is currently processed. The CPU 201 also sets the value of the performance information search variable iN to be processed at present in the variable set indicating the index number of the performance information searched last for simultaneous sounding. In other words, the performance information searched last for simultaneous pronunciation is the performance information Note [iN] itself that is currently processed (step S1101).
次に、CPU201は、ステップS1109で演奏情報検索用変数iの値を+1ずつしながら、ステップS1102で変数iの値が演奏情報の最大数(図3の例では、演奏情報の最大数=N)に達したと判定するまで、ステップS1103からS1108までの一連の処理を実行する。 Next, the CPU 201 increments the value of the performance information search variable i by +1 in step S1109, while the value of the variable i is the maximum number of performance information in step S1102 (in the example of FIG. 3, the maximum number of performance information = N. Steps S1103 to S1108 are executed until it is determined that the above has been reached.
CPU201はまず、演奏情報検索用変数iが示す演奏情報Note[i]中の右手または左手を示すトラック番号Hand(図3参照)(図9中では「Note[i].Hand」と記載)が、パート検索用変数iHの値が示す現在処理中のパート番号(図7のステップS701、S702、S712参照)に等しいか否かを判定する(ステップS1103)。 First, the CPU 201 stores the track number Hand (see FIG. 3) indicating the right hand or the left hand in the performance information Note [i] indicated by the performance information search variable i (described as “Note [i] .Hand” in FIG. 9). Then, it is determined whether or not the value of the part search variable iH is equal to the currently processed part number (see steps S701, S702, and S712 in FIG. 7) (step S1103).
ステップS1103の判定がNOならば、演奏情報検索用変数iが示す演奏情報Note[i]は、現在処理中のパート(右手・左手の別)ではないので、CPU201は、ステップS1109の処理に移行して、次の演奏情報の検索に進む。 If the determination in step S1103 is NO, the performance information Note [i] indicated by the performance information search variable i is not the part currently being processed (separate right hand / left hand), so the CPU 201 proceeds to the process in step S1109. Then, it proceeds to search for the next performance information.
ステップS1103の判定がYESならば、CPU201は、演奏情報検索用変数iが示す演奏情報Note[i]中の発音開始時刻Time(図3参照)(図11中では「Note[i].Time」と記載)が、現在処理対象の演奏情報Note[iN]の発音開始時刻Time(図3参照)(図11中では「Note[iN].Time」と記載)と同時刻であるか否かを判定する(ステップS1104)。 If the determination in step S1103 is YES, the CPU 201 determines the sound generation start time Time (see FIG. 3) in the performance information Note [i] indicated by the performance information search variable i (“Note [i] .Time” in FIG. 11). Is described as “Note [iN] .Time” in FIG. 11) as to the sound generation start time Time (see FIG. 3) of the performance information Note [iN] that is currently processed. Determination is made (step S1104).
同時刻の演奏情報が見つかりステップS1104の判定がYESならば、CPU201は、指番号指定変数ifigに、現在検索されている演奏情報Note[i]中の指番号Finger(図11中では「Note[i].Finter」と記載)を格納する(ステップS1105)。 If the performance information at the same time is found and the determination in step S1104 is YES, the CPU 201 stores the finger number Finger in the currently searched performance information Note [i] (“Note [in FIG. 11) in the finger number designation variable ifig. i] .Filter ”(step S1105).
なお、最初の処理では、i=iNであるから(ステップS1101参照)、ステップS1104の判定は、「Note[i].Time=Note[iN].Time==Note[iN].Time?」という自分自身を自分自身と比較する判定になる。このため、ステップS1104の判定は、必ずYESとなる。 In the first process, since i = iN (see step S1101), the determination in step S1104 is “Note [i] .Time = Note [iN] .Time == Note [iN] .Time?”. The decision is to compare yourself with yourself. For this reason, the determination in step S1104 is always YES.
次に、CPU201は、検索された演奏情報Note[i]の指番号Finger(図3参照)を、現在の指番号ifigに格納する(ステップS1105)。
その後、CPU201は、現在の指番号ifigが示す押鍵対象演奏情報ポインタ変数Hand[ifig]に、検索された演奏情報Note[i]へのポインタを格納する(ステップS1106)。すなわち、現在処理対象の演奏情報Note[iN]の発音開始時刻Time(図3参照)(図11中では「Note[iN].Time」と記載)と同時刻である演奏情報について、その音を弾くべき指についてのポインタ変数Hand[ifig]に、その各音符をセットする。前述したように、最初の処理では、ステップS1105の判定は必ずYESとなるため、現在処理対象の検索された演奏情報Note[i]へのポインタは、必ず押鍵対象演奏情報ポインタ変数Hand[ifig]に登録されることになる。
Next, the CPU 201 stores the finger number Finger (see FIG. 3) of the searched performance information Note [i] in the current finger number ifig (step S1105).
Thereafter, the CPU 201 stores a pointer to the searched performance information Note [i] in the key-pressing target performance information pointer variable Hand [ifig] indicated by the current finger number ifig (step S1106). That is, for the performance information that is the same time as the pronunciation start time Time (see FIG. 3) of the performance information Note [iN] to be processed (referred to as “Note [iN] .Time” in FIG. 11), Each note is set in the pointer variable Hand [ifig] for the finger to be played. As described above, in the first process, since the determination in step S1105 is always YES, the pointer to the searched performance information Note [i] that is currently processed is always the key-pressed performance information pointer variable Hand [ifig. ] Will be registered.
さらに、CPU201は、同時発音を行う最後に検索された演奏情報のインデックス番号を示す変数setに、検索された演奏情報Note[i]を示す演奏情報検索用変数iの値を格納する(ステップS1107)。この変数setは、ステップS1104で同時発音を行う音が見つかるたびに更新されていくので、最終的には、同時発音を行うものの中で最も大きい演奏情報検索用変数iがセットされることとなる。 Further, the CPU 201 stores the value of the performance information search variable i indicating the searched performance information Note [i] in the variable set indicating the index number of the performance information searched last for simultaneous sounding (step S1107). ). Since the variable set is updated every time a sound that performs simultaneous sound generation is found in step S1104, the largest performance information search variable i among those that perform simultaneous sound generation is finally set. .
最後に、CPU201は、検索された演奏情報Note[i]に対応する指番号ifig(ステップS1105参照)が示す指に対応する次タイミング演奏情報ポインタ変数Next[ifig]を更新する処理を実行する(ステップS1108)。この処理の例は、前述した図9のフローチャートで示される。ただし、図9のステップS902では、CPU201は、演奏情報検索用変数iに、検索された現在の演奏情報のカウンタ値iに+1した値を格納する。これは、検索された同時発音を行う現在の演奏情報Note[i]の次の演奏情報から、次に押鍵される演奏情報の検索が行われるという意味である。 Finally, the CPU 201 executes a process of updating the next timing performance information pointer variable Next [ifig] corresponding to the finger indicated by the finger number ifig (see step S1105) corresponding to the searched performance information Note [i] (see step S1105). Step S1108). An example of this processing is shown in the flowchart of FIG. However, in step S902 in FIG. 9, the CPU 201 stores a value obtained by adding 1 to the counter value i of the searched current performance information in the performance information search variable i. This means that the performance information to be pressed next is searched from the performance information next to the current performance information Note [i] for performing the simultaneous sounding searched.
ステップS1108の処理の後、CPU201は、ステップS1109の処理に移行して、次の演奏情報の検索に進む。 After the process of step S1108, the CPU 201 proceeds to the process of step S1109 and proceeds to search for the next performance information.
ここで、図3で説明したように、演奏情報Note[0]、Note[1]、・・・、Note[N]は、発音開始時刻Timeの順に並ぶように、インデックス番号(0、1、・・・、N)が付与されている。従って、ステップS1104の判定で、現在の演奏情報検索用変数iが示す演奏情報Note[i]中の発音開始時刻Timeが、現在処理対象の演奏情報Note[iN]の発音開始時刻Timeと同時刻ではなく、判定結果がNOならば、現在の演奏情報検索用変数iが示す演奏情報Note[i]以降には同時刻の演奏情報は存在しない。そこでこの場合には、CPU201は、押鍵検索の処理を終了する。この場合、同時発音を行うとして検索された演奏情報については、図7のステップS709およびS710では、現在の処理対象の演奏情報Note[iN]とともに、押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]にセットされて一括して処理されるため、以降は図7のステップS706からS710までの処理ループを実行する必要はない。このため、CPU201は、現在の処理対象の演奏情報検索用変数iNの値に、同時発音を行う最後に検索された演奏情報のインデックス番号を示す変数setの値を設定して、次回の処理では、同時発音するとして既に検索された音符を飛ばして処理を続けるようにする。(ステップS1110)。 Here, as described with reference to FIG. 3, the performance information Note [0], Note [1],..., Note [N] are index numbers (0, 1,. ..., N). Accordingly, in the determination in step S1104, the sounding start time Time in the performance information Note [i] indicated by the current performance information search variable i is the same as the sounding start time Time of the performance information Note [iN] currently processed. Instead, if the determination result is NO, there is no performance information at the same time after the performance information Note [i] indicated by the current performance information search variable i. Therefore, in this case, the CPU 201 ends the key pressing search process. In this case, for the performance information searched for performing simultaneous pronunciation, in steps S709 and S710 of FIG. 7, along with the performance information Note [iN] to be processed, the key depression target performance information pointer variable Hand [0] ˜ Since it is set to Hand [4] and processed in a lump, it is not necessary to execute the processing loop from step S706 to S710 in FIG. For this reason, the CPU 201 sets the value of the variable set indicating the index number of the performance information searched last to perform simultaneous sounding as the value of the performance information search variable iN to be processed at the next processing. In this case, the already searched notes are skipped as simultaneous pronunciation, and the processing is continued. (Step S1110).
ステップS1110の処理の後、CPU201は、図11のフローチャートで示される図7のステップS708の押鍵検索の処理を終了する。 After the process of step S1110, the CPU 201 ends the key depression search process of step S708 of FIG. 7 shown in the flowchart of FIG.
また、全ての演奏情報についての検索が終了してステップS1102の判定がNOになった場合も、CPU201は、図11のフローチャートで示される図7のステップS708の押鍵検索の処理を終了する。 Also, when the search for all performance information is completed and the determination in step S1102 is NO, the CPU 201 ends the key depression search process in step S708 of FIG. 7 shown in the flowchart of FIG.
図12から図15は、図7のステップS709の準備確認の処理の例を示すフローチャートである。 12 to 15 are flowcharts illustrating an example of the preparation confirmation process in step S709 of FIG.
この図12から図15の準備確認の処理を通して、prep[0]〜prep[4]には、図7のステップS710の動作データ出力の処理において図4の動作データを出力するために対象となる各指の演奏情報が格納される。この場合の演奏情報には、対応する動作データの出力タイミングにおいて、押鍵されるべき演奏情報と、次の動作タイミングでの押鍵のために準備動作がされるべき演奏情報がある。まず、CPU201は、図12のステップS1201からS1208までの一連の処理によって、押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]の内容を、いったん出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]にコピーする。このコピー処理では、まずは押鍵対象となっている演奏情報が格納されているポインタ変数Hand[0]〜Hand[4]の内容がprep[0]〜prep[4]にコピーされる。その後、図13から図15のフローチャートでは、各指の次タイミング演奏情報ポインタNext[0]〜Next[4]の中から準備動作の対象となる演奏情報が判別される。そして、その判別された演奏情報が、後述する図15のステップS1243で、prep[0]〜prep[4]に追加的に登録される。 Through the preparation confirmation processes of FIGS. 12 to 15, prep [0] to prep [4] are targets for outputting the operation data of FIG. 4 in the operation data output process of step S710 of FIG. The performance information for each finger is stored. The performance information in this case includes performance information to be depressed at the output timing of the corresponding operation data and performance information to be prepared for key depression at the next operation timing. First, the CPU 201 performs a series of processing from steps S1201 to S1208 in FIG. 12 to temporarily change the contents of the key-pressing target performance information pointer variables Hand [0] to Hand [4] into the output buffer performance information pointer variable prep [0]. ] To prep [4]. In this copy process, first, the contents of pointer variables Hand [0] to Hand [4] storing performance information to be pressed are copied to prep [0] to prep [4]. Thereafter, in the flowcharts of FIGS. 13 to 15, performance information to be subjected to a preparation operation is determined from the next timing performance information pointers Next [0] to Next [4] of each finger. The determined performance information is additionally registered in prep [0] to prep [4] in step S1243 of FIG.
CPU201はまず、準備動作判定用変数Prepare、Moving、Passingに、共に値「0」を格納する(ステップS1201)。 First, the CPU 201 stores the value “0” in the preparation operation determination variables Prepare, Moving, and Passing (step S1201).
次に、CPU201は、指番号指定変数ifigと押鍵指数カウンタ変数figuseに、共に値「0」を格納する(ステップS1202)。 Next, the CPU 201 stores the value “0” in both the finger number designation variable ifig and the key depression index counter variable figure (step S1202).
その後、CPU201は、ステップS1208で指番号指定変数ifigの値を+1ずつしながら、ステップS1203で変数ifigの値が片手の指の最大数「5」に達したと判定するまで、ステップS1204からS1207までの一連の処理を実行する。 After that, the CPU 201 increments the finger number designation variable ifig by +1 in step S1208, and until it determines in step S1203 that the value of the variable ifig has reached the maximum number of fingers of one hand “5”, from step S1204 to S1207. A series of processes up to are executed.
まず、CPU201は、現在の指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]と、一時バッファ用演奏情報ポインタ変数pList[ifig]に、共に未定義値NULLを格納する。また、CPU201は、現在の指番号ifigに対応するステップデータstep[ifig]に値「−1」を格納する(以上、ステップS1204)。ここで、一時バッファ用演奏情報ポインタ変数pList[0]〜pList[4]は、出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]に登録される演奏情報のうち、指超えや指くぐり、手の移動等の特別な準備動作を行うべき演奏情報へのポインタを記憶する。これらのpList[0]〜pList[4]は、図7のフローチャートの処理上では使用されないが、後述する図25および図26に示されるフローチャートにおける準備指示データ出力の処理で使用される。また、ステップデータstep[ifig]は、現在の指番号ifigに対応する指が、どの押鍵段階にあるかを示す。step[ifig]=0ならばその指を今回押鍵すべきであることを示し、step[ifig]=1,2,・・・ならばその指を次回、その次、・・・で押鍵すべきであることを示す。ステップS1204で設定されるstep[ifig]=−1は、その指についてはまだ押鍵段階が決定されていないことを示す。 First, the CPU 201 stores the undefined value NULL in both the output buffer performance information pointer variable prep [ifig] and the temporary buffer performance information pointer variable pList [ifig] corresponding to the current finger number ifig. Further, the CPU 201 stores the value “−1” in the step data step [ifig] corresponding to the current finger number ifig (step S1204). Here, the performance information pointer variables for the temporary buffer pList [0] to pList [4] are used to indicate that the performance information pointer variables prep [0] to prep [4] for the output buffer exceed the finger or the finger. A pointer to performance information to be subjected to a special preparation operation such as passing or hand movement is stored. These pList [0] to pList [4] are not used in the process of the flowchart of FIG. 7, but are used in the process of outputting the preparation instruction data in the flowcharts shown in FIGS. Further, the step data step [ifig] indicates which key pressing stage the finger corresponding to the current finger number ifig is in. If step [ifig] = 0, it indicates that the finger should be pressed this time, and if step [ifig] = 1, 2,..., the key is pressed next time, next,. Indicates that it should be. Step [ifig] = − 1 set in step S1204 indicates that the key pressing stage has not yet been determined for the finger.
次に、CPU201は、現在の指番号ifigに対応する押鍵対象演奏情報ポインタ変数Hand[ifig]の内容を出力バッファ用演奏情報ポインタ変数prep[ifig]にコピーする(ステップS1205)。 Next, the CPU 201 copies the contents of the key-pressing performance information pointer variable Hand [ifig] corresponding to the current finger number ifig to the output buffer performance information pointer variable prep [ifig] (step S1205).
次に、CPU201は、現在の指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]の内容が未定義値NULLでないか否かを判定する(ステップS1206)。 Next, the CPU 201 determines whether or not the content of the output buffer performance information pointer variable prep [ifig] corresponding to the current finger number ifig is not the undefined value NULL (step S1206).
prep[ifig]の内容が未定義値NULLでなくステップS1206の判定がYESならば、指番号ifigに対応する押鍵対象演奏情報ポインタ変数Hand[ifig]の内容がNULLではなかったということなので、CPU201は、現在の指番号ifigに対応するステップデータstep[ifig]に今回押鍵を示す値「0」を格納する。さらに、CPU201は、押鍵指数カウンタ変数figuseの値を+1インクリメントする(図12中では「++」という演算子で記載)(以上、ステップS1207)。 If the content of prep [ifig] is not the undefined value NULL and the determination in step S1206 is YES, it means that the content of the key depression target performance information pointer variable Hand [ifig] corresponding to the finger number ifig is not NULL. The CPU 201 stores a value “0” indicating the current key depression in the step data step [ifig] corresponding to the current finger number ifig. Further, the CPU 201 increments the value of the key depression index counter variable “figure” by +1 (described by an operator “++” in FIG. 12) (step S1207).
prep[ifig]の内容が未定義値NULLであってステップS1206の判定がNOである場合、またはステップS1207の処理の後、CPU201は、ステップS1208の処理に移行し、次の指に対する処理を実行する。 When the content of prep [ifig] is the undefined value NULL and the determination in step S1206 is NO, or after the process in step S1207, the CPU 201 proceeds to the process in step S1208 and executes the process for the next finger. To do.
以上のステップS1203からS1208までの一連の処理の後、5本の指についてのコピー処理が終了しステップS1208の判定がNOとなった時点で、押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]のうち押鍵を示す演奏情報へのポインタが出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]にコピーされている。この場合、ステップデータstep[0]〜step[4]のうち押鍵状態にある指に対応するデータには値「0」が格納され、それ以外の指に対応するデータには未定義状態を示す値「−1」が格納される状態となる。 After the above-described series of processing from step S1203 to S1208, when the copy processing for five fingers is completed and the determination in step S1208 is NO, the key-pressed performance information pointer variables Hand [0] to Hand Of [4], a pointer to performance information indicating key depression is copied to output buffer performance information pointer variables prep [0] to prep [4]. In this case, the value “0” is stored in the data corresponding to the finger in the key pressing state among the step data step [0] to step [4], and the undefined state is stored in the data corresponding to the other fingers. The indicated value “−1” is stored.
図12のステップS1203の判定がNOとなった後、CPU201は、図13のステップS1209からS1219の一連の処理を実行する。ここでは、次タイミング演奏情報ポインタ変数Next[0]〜Next[4]のうちから、出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]において演奏情報へのポインタが定義されていない指に対応するデータであって、かつ発音開始時刻が最も早い演奏情報へのポインタとそれに対応する指番号が、それぞれ変数NotePreとfigに取得される。 After the determination in step S1203 in FIG. 12 is NO, the CPU 201 executes a series of processes in steps S1209 to S1219 in FIG. Here, among the next timing performance information pointer variables Next [0] to Next [4], a finger for which a pointer to performance information is not defined in the output buffer performance information pointer variables prep [0] to prep [4]. A pointer to performance information with the earliest sounding start time and a finger number corresponding thereto are acquired in variables NotePre and fig, respectively.
すなわち、CPU201はまず、押鍵指数カウンタ変数figuseの値が5より小さいか否かを判定する(ステップS1209)。 That is, the CPU 201 first determines whether or not the value of the key depression index counter variable figure is smaller than 5 (step S1209).
もし、押鍵指数カウンタ変数figuseの値が5になっていると、5本全ての指が押鍵中を示していることになり(図12のステップS1206とS1207参照)、出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]において演奏情報へのポインタが定義されていない指はない。この場合には、図13のステップS1209の判定がNOとなって、CPU201は、図7のステップS709の準備確認の処理を終了する。この場合は、準備動作判定用変数Prepare、Moving、Passingの値は図12のステップS1201で共に値「0」とされたままになる。そして、出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]に設定されている5つの演奏情報は、全て押鍵対象演奏情報ポインタ変数Hand[0]〜Hand[4]に設定されていた、同時刻に発音開始する5つの演奏情報がそのまま格納される。この結果、後述する図7のステップS710の動作データ出力の処理(後述する図18のステップS1712→S1713参照)において、各指の状態status[0]〜status[4](図4参照)として共に押鍵を示す値「1」が設定される。すなわち、後述する図18のステップS1714→S1715の処理は一度も実行されず、各指の状態status[0]〜status[4](図4参照)のいずれにも、準備動作を示す値「−1」は設定されないことになる。 If the value of the key depression index counter variable figure is 5, all five fingers indicate that the key is being depressed (see steps S1206 and S1207 in FIG. 12), and output buffer performance information. There is no finger in which pointers to performance information are not defined in the pointer variables prep [0] to prep [4]. In this case, the determination in step S1209 in FIG. 13 is NO, and the CPU 201 ends the preparation confirmation process in step S709 in FIG. In this case, the values of the preparation operation determination variables Prepare, Moving, and Passing remain set to the value “0” in step S1201 of FIG. The five pieces of performance information set in the output buffer performance information pointer variables prep [0] to prep [4] are all set in the key depression target performance information pointer variables Hand [0] to Hand [4]. In addition, five pieces of performance information that start sounding at the same time are stored as they are. As a result, in the operation data output process in step S710 of FIG. 7 described later (refer to steps S1712 → S1713 of FIG. 18 described later), both finger states “status [0] to status [4]” (see FIG. 4). A value “1” indicating a key press is set. That is, the processing of steps S1714 → S1715 in FIG. 18 to be described later is never executed, and the value “−” indicating the preparatory operation is displayed in any of the finger statuses [0] to [4] (see FIG. 4). “1” is not set.
押鍵指数カウンタ変数figuseの値が5より小さくステップS1209の判定がYESならば、CPU201は、現在の押鍵比較段階変数stepに初期値「1」を格納する(ステップS1210)。押鍵比較段階変数stepの値は、現在押鍵中の演奏情報に対して何タイミング後に押鍵される演奏情報の比較が行われるかを示す。step=1であれば、現在押鍵中の演奏情報に対して次のタイミングにて押鍵される演奏情報の比較が行われることを示す。step=2であれば、現在押鍵中の演奏情報に対して次の次のタイミングにて押鍵される演奏情報の比較が行われることを示す。押鍵比較段階変数stepの値は、ステップS1209で値「1」に初期設定された後、後述する図15のステップS1244で+1ずつインクリメントされ、ステップS1211からS1219の探索が繰り返し実行される。 If the value of the key depression index counter variable is less than 5 and the determination in step S1209 is YES, the CPU 201 stores the initial value “1” in the current key depression comparison stage variable step (step S1210). The value of the key pressing comparison stage variable step indicates the timing at which performance information to be pressed is compared with the performance information currently being pressed. If step = 1, it indicates that the performance information being pressed at the next timing is compared with the performance information being currently pressed. If step = 2, it indicates that the performance information that is pressed at the next timing is compared with the performance information that is currently being pressed. The value of the key pressing comparison stage variable step is initialized to “1” in step S1209 and then incremented by +1 in step S1244 of FIG. 15 described later, and the search from steps S1211 to S1219 is repeatedly executed.
次に、CPU201は、現在の押鍵比較段階stepにおいて、まだ押鍵や準備動作が決定されていない指のうちで発音開始時刻が最も早い演奏情報へのポインタを格納する変数NotePreに未定義値NULLを格納し、それに対応する指番号を格納する変数figにどの指でもないことを示す値「−1」を格納する(ステップS1211)。 Next, the CPU 201 sets an undefined value in the variable NotePre that stores a pointer to performance information having the earliest sounding start time among fingers whose key pressing and preparation actions are not yet determined in the current key pressing comparison step. A value “−1” indicating that no finger is present is stored in a variable fig that stores NULL and stores a finger number corresponding to the NULL (step S1211).
次に、CPU201は、ステップS1212で指番号指定変数ifigに初期値「0」(親指)を設定した後、ステップS1219でifigの値を+1ずつインクリメントしながら、ステップS1213で片手の指の最大数「5」に達したと判定するまで、以下のステップS1214からS1218の一連の処理を実行する。 Next, after setting an initial value “0” (thumb) to the finger number designation variable ifig in step S1212, the CPU 201 increments the value of igf by +1 in step S1219, and in step S1213 the maximum number of fingers in one hand Until it is determined that “5” has been reached, the following series of processing from steps S1214 to S1218 is executed.
CPU201はまず、現在の指番号ifigに対応するステップデータstep[ifig]の値が、指番号ifigの指についてはまだ押鍵段階が決定されていないことを示す値「−1」(図12のステップS1204参照)であるか否かを判定する(ステップS1214)。 First, the CPU 201 sets the value of step data step [ifig] corresponding to the current finger number ifig to a value “−1” indicating that the key pressing stage has not yet been determined for the finger of the finger number ifig (FIG. 12). It is determined whether or not (see step S1204) (step S1214).
現在の指番号ifigに対応するステップデータstep[ifig]の値が「−1」以外でありステップS1214の判定がNOならば、その指番号ifigの指は押鍵または準備動作をすることが決定済みであるため、CPU201は、ステップS1219の処理に移行し、次の指番号の処理に進む。 If the value of the step data step [ifig] corresponding to the current finger number ifig is other than “−1” and the determination in step S1214 is NO, it is determined that the finger of the finger number ifig performs a key press or a preparation operation. Since it has been completed, the CPU 201 proceeds to the process of step S1219 and proceeds to the process of the next finger number.
現在の指番号ifigに対応するステップデータstep[ifig]の値が「−1」でありステップS1214の判定がYESならば、CPU201は、現在の指番号ifigに対応する次タイミング演奏情報ポインタ変数Next[ifig]の値が未定義値NULLでないか否かを判定する(ステップS1215)。 If the value of the step data step [ifig] corresponding to the current finger number ifig is “−1” and the determination in step S1214 is YES, the CPU 201 determines the next timing performance information pointer variable Next corresponding to the current finger number ifig. It is determined whether the value of [ifig] is not the undefined value NULL (step S1215).
Next[ifig]の値が未定義値NULLであってステップS1215の判定がNOならば、その指番号ifigに対応する指について次以降のタイミングで押鍵されることはない。このため、CPU201は、ステップS1219の処理に移行し、次の指番号の処理に進む。 If the value of Next [ifig] is the undefined value NULL and the determination in step S1215 is NO, the finger corresponding to the finger number ifig is not pressed at the next or subsequent timing. Therefore, the CPU 201 proceeds to the process of step S1219 and proceeds to the process of the next finger number.
Next[ifig]の値が未定義値NULLではなくステップS1215の判定がYESならば、CPU201は、まだ押鍵や準備動作が決定されていない指のうちで発音開始時刻が最も早い演奏情報へのポインタを格納する変数NotePreの内容が未定義値NULLではなく、かつ変数NotePreが示す演奏情報の発音開始時刻Time(図13中では「NotePre.Time」と記載)が現在の指番号ifigに対応する次タイミング演奏情報ポインタ変数Next[ifig]が示す演奏情報の発音開始時刻Time(図13中では「Next[ifig].Time」と記載)よりも早い(小さい)か否かを判定する(ステップS1216)。 If the value of Next [ifig] is not the undefined value NULL and the determination in step S1215 is YES, the CPU 201 changes the performance information to the earliest sounding start time among the fingers whose key presses and preparation operations are not yet determined. The content of the variable NotePre for storing the pointer is not the undefined value NULL, and the sounding start time Time (denoted as “NotePre.Time” in FIG. 13) indicated by the variable NotePre corresponds to the current finger number ifig. It is determined whether or not it is earlier (smaller) than the sounding start time Time of the performance information indicated by the next timing performance information pointer variable Next [ifig] (described as “Next [ifig] .Time” in FIG. 13) (step S1216). ).
ステップS1216の判定がYESならば、現在の変数NotePreが示す演奏情報の発音開始時刻のほうが、現在の指番号ifigに対応する次タイミング演奏情報ポインタ変数Next[ifig]が示す演奏情報の発音開始時刻よりも早い。この場合には、CPU201は、変数NotePreの内容をそのまま維持し、ステップS1219の処理に移行し、次の指番号の処理に進む。 If the determination in step S1216 is YES, the sounding start time of the performance information indicated by the current variable NotePre is the sounding start time of the performance information indicated by the next timing performance information pointer variable Next [ifig] corresponding to the current finger number ifig. Faster than. In this case, the CPU 201 maintains the content of the variable NotePre as it is, and proceeds to the process of step S1219 to proceed to the process of the next finger number.
ステップS1216の判定がNOならば、現在の変数NotePreがまだ定義されていなかった(NULL)か、または、現在の指番号ifigに対応する次タイミング演奏情報ポインタ変数Next[ifig]が示す演奏情報の発音開始時刻が、現在の変数NotePreが示す演奏情報の発音開始時刻より早いことになる。そこでこの場合には、CPU201は、Next[ifig]に格納されているポインタ値を変数NotePreにコピーする(ステップS1217)。 If the determination in step S1216 is NO, the current variable NotePre has not been defined yet (NULL), or the performance information indicated by the next timing performance information pointer variable Next [ifig] corresponding to the current finger number ifig The sound generation start time is earlier than the sound generation start time of the performance information indicated by the current variable NotePre. Therefore, in this case, the CPU 201 copies the pointer value stored in Next [ifig] to the variable NotePre (step S1217).
さらに、CPU201は、現在の指番号指定変数ifigの値を変数NotePreに対応する指番号を保持する変数figにコピーする(ステップS1218)。 Further, the CPU 201 copies the value of the current finger number designation variable ifig to the variable fig that holds the finger number corresponding to the variable NotePre (step S1218).
その後、CPU201は、ステップS1219の処理に移行し、次の指番号ifigに対する処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S1219 and proceeds to a process for the next finger number ifig.
以上のステップS1214からS1218までの一連の処理が、各指番号ifigについて繰り返し実行され、やがて指番号ifigの値が5になってステップS1213の判定がNOとなった時点で、変数NotePreに、まだ押鍵や準備動作が決定されていない指のうちで、その指による次の押鍵が他の指と比べて、現在の押鍵比較段階stepにおいて発音開始時刻が最も早い演奏情報へのポインタが得られる。また、変数figに、NotePreが示す演奏情報に対応する指番号が得られる。最初は、押鍵比較段階step=1である(ステップS1210参照)。従って、変数NotePreとfigには、現在の押鍵に対して次に押鍵されるべき、発音開始時刻が最も早い演奏情報へのポインタと、それに対応する指番号が得られる。 The series of processes from step S1214 to step S1218 are repeatedly executed for each finger number ifig, and when the value of the finger number ifig eventually becomes 5 and the determination in step S1213 is NO, the variable NotePre is still set. Among the fingers for which no key press or preparatory action has been determined, the next key press by the finger is compared with other fingers, and the pointer to the performance information with the earliest pronunciation start time in the current key press comparison step is can get. In addition, a finger number corresponding to the performance information indicated by NotePre is obtained in the variable fig. Initially, the key-press comparison stage step = 1 (see step S1210). Therefore, the variables NotePre and fig are obtained with a pointer to performance information with the earliest sounding start time to be pressed next to the current key press and the corresponding finger number.
ステップS1213の判定がNOになると、CPU201は、図14のフローチャートのステップS1220からS1239までの一連の処理を実行する。ここでは、上述の変数NotePreに得られた演奏情報に対応する演奏状態が、出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]のうち押鍵を示す演奏情報の演奏状態と比較される。 When the determination in step S1213 is NO, the CPU 201 executes a series of processes from steps S1220 to S1239 in the flowchart of FIG. Here, the performance state corresponding to the performance information obtained in the above-mentioned variable NotePre is compared with the performance state of the performance information indicating the key depression among the output buffer performance information pointer variables prep [0] to prep [4]. The
まず、CPU201は、変数NotePreの内容が未定義値NULLでないか否かを判定する(ステップS1220)。図13のステップS1213からS1219の実行状態によっては、変数NotePreの内容が図13のステップS1211で未定義値NULLに設定された後、全ての指番号ifigについて、図13のステップS1216の判定がYESにならず、ステップS1213の判定がNOになる場合があり得る。この場合には、変数NotePreには発音開始時刻が最も早い演奏情報へのポインタが得られない状態となり、NotePreの値は未定義値NULLとなる。これによりステップS1220の判定がNOとなった場合には、CPU201は、図7のステップS709の準備確認の処理を終了する。 First, the CPU 201 determines whether or not the content of the variable NotePre is not the undefined value NULL (step S1220). Depending on the execution state of steps S1213 to S1219 in FIG. 13, after the content of the variable NotePre is set to the undefined value NULL in step S1211 in FIG. 13, the determination in step S1216 in FIG. 13 is YES for all finger numbers ifig. Otherwise, the determination in step S1213 may be NO. In this case, the variable NotePre is in a state where a pointer to the performance information with the earliest sounding start time cannot be obtained, and the value of NotePre becomes the undefined value NULL. As a result, if the determination in step S1220 is NO, the CPU 201 ends the preparation confirmation process in step S709 of FIG.
変数NotePreの内容が未定義値NULLでなくステップS1220の判定がYESならば、CPU201は、変数NotePreの内容を出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]のいずれかへ登録するか否かを示すセット変数setに、登録を示す値「1」をひとまず格納する(ステップS1221)。このセット変数setの値は、後述する各種演奏状態の判断において非登録を示す値「0」にされ得る(図14のステップS1231、S1233、S1238)。 If the content of the variable NotePre is not the undefined value NULL and the determination in step S1220 is YES, the CPU 201 registers the content of the variable NotePre in any of the output buffer performance information pointer variables prep [0] to prep [4]. A value “1” indicating registration is temporarily stored in a set variable set indicating whether or not (step S1221). The value of the set variable set can be set to a value “0” indicating non-registration in determination of various performance states described later (steps S1231, S1233, and S1238 in FIG. 14).
次に、CPU201は、現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報の指番号figに対応するステップデータstep[ifig]に、現在の押鍵比較段階変数stepの値(初回は値「1」)を格納する(ステップS1222)。これは、2回目以降に実行される図13のステップS1214の判定において、すでに処理された指番号については再度その判定がYESとなって選択されてしまわないようにするための制御である。また、ステップデータstep[0]〜step[4]の各値を見れば、各指が現在の押鍵タイミング以降の何番目に押鍵されるべき演奏情報であるかを知ることができ、演奏ガイドの制御に活用することも可能になるというメリットも有する。 Next, the CPU 201 sets the current key pressing comparison stage variable to step data step [ifig] corresponding to the finger number fig of the performance information having the earliest sounding start time to be pressed next to the current key pressing. The value of step (the value “1” for the first time) is stored (step S1222). This is control for preventing the finger number that has already been processed from being selected again as YES in the determination in step S1214 of FIG. 13 executed after the second time. Further, by looking at each value of the step data step [0] to step [4], it is possible to know the number of performance information to be pressed after the current key pressing timing. It also has the merit that it can be used to control the guide.
次に、CPU201は、ステップS1223で指番号指定変数ifigに初期値「0」(親指)をセットした後、ステップS1239でifigの値を+1ずつインクリメントしながら、ステップS1224で指番号ifigの値が片手の指の最大数「5」に達したと判定するまで、以下のステップS1225からS1238までの一連の処理を実行する。この処理では、図13のステップS1214からS1218の一連の処理で得られた、まだ押鍵や準備動作が決定されていない指による次の押鍵情報に対して、現在押鍵している指(音)との関係がチェックされる。 Next, the CPU 201 sets an initial value “0” (thumb) to the finger number designation variable ifig in step S1223, and then increments the value of igf by +1 in step S1239, while the value of the finger number ifig is set in step S1224. Until it is determined that the maximum number of fingers of one hand “5” has been reached, the following series of processing from step S1225 to S1238 is executed. In this process, for the next key pressing information obtained by the series of processes in steps S1214 to S1218 in FIG. Sound) is checked.
CPU201はまず、指番号ifigの値が現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報の指番号figに等しくなく、かつ指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]の値が未定義値NULLでなく、かつ指番号ifigに対応するステップデータstep[ifig]が押鍵を示す値「0」に等しいか否か(図12のステップS1207参照)を判定する(ステップS1225)。一番目の条件は、同じ指同士の関係は調べる必要が無いので、ifigとfigが異なっていることをチェックしている。二番目の条件は、調査対象とする指番号ifigの演奏情報がまだ決定されておらず、prep[ifig]がNULLの場合は、そのような指ifigとの関係を調べる必要が無いからである。三番目の条件は、調査対象とする指番号ifigが押鍵されている指かどうかを調べているものである。この判定は、指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]が示す演奏情報が押鍵を示す演奏情報であるか否かの判定である。 First, the CPU 201 sets the value of the finger number ifig not equal to the finger number fig of the performance information with the earliest sounding start time to be pressed next to the current key press, and for the output buffer corresponding to the finger number ifig. Whether or not the value of the performance information pointer variable prep [ifig] is not the undefined value NULL and the step data step [ifig] corresponding to the finger number ifig is equal to a value “0” indicating key depression (step in FIG. 12). S1207) is determined (step S1225). The first condition checks that ifig and fig are different because it is not necessary to examine the relationship between the same fingers. The second condition is that if the performance information of the finger number ifig to be investigated has not yet been determined and prep [ifig] is NULL, there is no need to examine the relationship with such finger ifig. . The third condition is to check whether the finger number ifig to be investigated is a finger that has been pressed. This determination is a determination as to whether or not the performance information indicated by the output buffer performance information pointer variable prep [ifig] corresponding to the finger number ifig is performance information indicating key depression.
ステップS1225の判定がNOならば、prep[ifig]は押鍵を示す演奏情報を示してはいないため、ステップS1239の処理に移行し、次の指番号の処理に進む。 If the determination in step S1225 is NO, since prep [ifig] does not indicate performance information indicating key depression, the process proceeds to step S1239 and proceeds to the next finger number process.
prep[ifig]が示す演奏情報が押鍵を示す演奏情報であって、ステップS1225の判定がYESならば、CPU201は、prep[ifig]が示す押鍵の演奏情報と、変数NotePreが示す、まだ押鍵や準備動作が決定されていない指のうちで現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報と、の鍵盤距離を取得する(ステップS1226)。鍵盤距離は、指番号が大きいほうの演奏情報の音高Pitch(図3参照)を鍵盤番号に換算した値から、指番号が小さいほうの演奏情報の音高Pitchを鍵盤番号に換算した値を減算した結果として算出される。この処理の詳細は、図16のフローチャートを用いて後述する。 If the performance information indicated by prep [ifig] is performance information indicating key depression, and if the determination in step S1225 is YES, the CPU 201 indicates that the key depression performance information indicated by prep [ifig] and the variable NotePre still indicate The keyboard distance between the performance information with the earliest sounding start time to be pressed next to the current key pressing among the fingers for which the key pressing or the preparation operation has not been determined is acquired (step S1226). The keyboard distance is a value obtained by converting the pitch Pitch (see FIG. 3) of the performance information with the larger finger number into the keyboard number, and converting the pitch Pitch of the performance information with the smaller finger number into the keyboard number. Calculated as the result of subtraction. Details of this processing will be described later using the flowchart of FIG.
次に、CPU201は、ステップS1226で取得した鍵盤距離が0よりも小さいか否かを判定する(ステップS1227)。 Next, the CPU 201 determines whether or not the keyboard distance acquired in step S1226 is smaller than 0 (step S1227).
鍵盤距離が0よりも小さくステップS1227の判定がYESならば、現在関係を調査している2つの指の位置関係が、正常な手の向きにおける指の位置と逆転していることを表している。そこでこの場合、CPU201は、現在の押鍵に対して次に押鍵されるべき発音開始時刻が最も早い演奏情報の指番号figと現在の押鍵の指番号ifigのいずれかが親指の指番号「0」であるか否かを判定する(ステップS1228)。すなわち、現在関係を調査している2つの指のいずれかが、親指であるかを調べる。 If the keyboard distance is less than 0 and the determination in step S1227 is YES, it indicates that the positional relationship between the two fingers whose current relationship is being investigated is reversed from the position of the finger in the normal hand orientation. . Therefore, in this case, the CPU 201 determines that either the finger number fig of the performance information to be pressed next next to the current key press or the finger number ifig of the current key press is the thumb finger number. It is determined whether it is “0” (step S1228). That is, it is checked whether one of the two fingers whose relationship is currently being investigated is a thumb.
ステップS1228の判定がYESの場合には、CPU201は、親指で押鍵中に親指以外の指で親指の上を越えて移動させて次以降のタイミングにて押鍵する第1の状態である、または、親指以外の指で押鍵中に親指で親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する第2の状態であると判定する。 If the determination in step S1228 is YES, the CPU 201 is in the first state in which the key is moved with the thumb other than the thumb while the key is pressed with the thumb and pressed at the next and subsequent timings. Alternatively, it is determined that the key is in the second state in which the key is pressed at the next and subsequent timings while the key other than the thumb is pressed while the key is pressed with the finger other than the thumb.
この場合には、CPU201は、準備動作判定用変数の一つである指の交差を示す指交差変数Passingに値「1」を格納する(ステップS1229)。 In this case, the CPU 201 stores a value “1” in the finger crossing variable Passing indicating the crossing of fingers, which is one of the preparatory movement determination variables (step S1229).
さらに、CPU201は、変数NotePreが示す演奏情報中の指番号Finger(図3参照)(図14では「NotePre.Finger」と記載)に対応する一時バッファ用演奏情報ポインタ変数pList[NotePre.Finger]に、変数NotePreの値を格納する(ステップS1230)。すなわち、「NotePre.Finger」で表される指に関して、指超えや指くぐり、手の移動等の特別な準備動作を行う必要がある音として、NotePreが示す演奏情報を、pListの該当する指番号のエリアに格納する。 Further, the CPU 201 performs a temporary buffer performance information pointer variable pList [NotePre.] Corresponding to a finger number Finger (see FIG. 3) in the performance information indicated by the variable NotePre (referred to as “NotePre.Finger” in FIG. 14). The value of the variable NotePre is stored in [Finger] (step S1230). That is, with respect to the finger represented by “NotePre.Finger”, the performance information indicated by NotePre is used as a sound that needs to be subjected to special preparatory actions such as finger crossing, finger penetration, and hand movement. Store in the area.
その後、CPU201は、ステップS1239の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S1239 and proceeds to a comparison process with the performance information of the key depression having the next finger number.
ステップS1228の判定がNOの場合には、CPU201は、親指以外の指同士の交差はあり得ないとして、変数NotePreの内容を出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]のいずれかへ登録するか否かを示すセット変数setに、非登録を示す値「0」を格納する(ステップS1231)。すなわち、変数NotePreが示す演奏情報は、現在押鍵している指との関係上、指を交差させないと準備ができない音であることが判ったので、この音については、準備動作をする演奏情報としては登録されない。 If the determination in step S1228 is NO, the CPU 201 determines that there is no intersection between fingers other than the thumbs, and sets the content of the variable NotePre as one of the output buffer performance information pointer variables prep [0] to prep [4]. A value “0” indicating non-registration is stored in a set variable set indicating whether or not to register (step S1231). That is, the performance information indicated by the variable NotePre is determined to be a sound that cannot be prepared unless the fingers are crossed because of the relationship with the finger that is currently pressed. Will not be registered.
その後、CPU201は、ステップS1239の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S1239 and proceeds to a comparison process with the performance information of the key depression having the next finger number.
鍵盤距離が0よりも小さくなくステップS1227の判定がNOならば、CPU201は、ステップS1226で取得した鍵盤距離が基準値よりも大きいか否かを判定する(ステップS1232)。基準値は例えば、指の間隔×半音での2〜4鍵分程度の値である。例えば、親指と小指の間隔としては、指の間隔(4−0)×2〜4半音で、8半音〜16半音程度とすることができ、12半音とすれば1オクターブを基準とすることとなる。 If the keyboard distance is not smaller than 0 and the determination in step S1227 is NO, the CPU 201 determines whether or not the keyboard distance acquired in step S1226 is greater than a reference value (step S1232). The reference value is, for example, a value of about 2 to 4 keys in the interval between fingers × semitone. For example, the distance between the thumb and the little finger can be about 8 to 16 semitones with a finger interval (4-0) × 2 to 4 semitones. Become.
鍵盤距離が基準値よりも大きくステップS1232の判定がYESならば、CPU201は、鍵盤を弾く手の移動範囲が大きいと判断して、セット変数setに、非登録を示す値「0」を格納する。すなわち、変数NotePreが示す演奏情報は、準備動作をする演奏情報としては登録されない。 If the keyboard distance is greater than the reference value and the determination in step S1232 is YES, the CPU 201 determines that the movement range of the hand playing the keyboard is large, and stores a value “0” indicating non-registration in the set variable set. . That is, the performance information indicated by the variable NotePre is not registered as performance information for performing the preparation operation.
次に、CPU201は、押鍵比較段階変数stepの値が「1」であるか否かを判定する(ステップS1234)。 Next, the CPU 201 determines whether or not the value of the key pressing comparison stage variable step is “1” (step S1234).
ステップS1234の判定がYES、すなわち鍵盤の移動が現在の押鍵の次の動作タイミングで実行されると判定された場合には、鍵盤距離が基準値よりも大きい音が、現在の押鍵のすぐ次の動作タイミングで実行されることから、指の跳躍が必要となる場合である。そこで、CPU201は、準備動作判定用変数の一つである指の手の移動を示す移動変数Movingに値「1」を格納する(ステップS1235)。 If the determination in step S1234 is YES, that is, if it is determined that the keyboard movement is performed at the next operation timing of the current key press, a sound whose keyboard distance is larger than the reference value is immediately after the current key press. Since it is executed at the next operation timing, the finger jump is necessary. Therefore, the CPU 201 stores the value “1” in the movement variable Moving indicating the movement of the finger hand, which is one of the preparation action determination variables (step S1235).
さらに、ステップS1230と同様に、CPU201は、変数NotePreが示す演奏情報中の指番号Fingerに対応する一時バッファ用演奏情報ポインタ変数pList[NotePre.Finger]に、変数NotePreの値を格納する(ステップS1236)。 Further, similarly to step S1230, the CPU 201 performs performance information pointer variable pList [NotePre. For temporary buffer corresponding to the finger number Finger in the performance information indicated by the variable NotePre. The value of the variable NotePre is stored in [Finger] (step S1236).
このように、変数NotePreが示す演奏情報は、準備動作をする演奏情報としては登録されないが、移動変数Movingと一時バッファ用演奏情報ポインタ変数pList[NotePre.Finger]へのセットが行われる。前述したように、pList[0]〜pList[4]は、図7のフローチャートの処理上では使用されないが、後述する図25および図26に示されるフローチャートにおける準備指示データ出力の処理で使用される。 As described above, the performance information indicated by the variable NotePre is not registered as performance information for the preparation operation, but the movement variable Moving and the temporary buffer performance information pointer variable pList [NotePre. [Finger] is set. As described above, pList [0] to pList [4] are not used in the process of the flowchart of FIG. 7, but are used in the process of outputting the preparation instruction data in the flowcharts shown in FIGS. .
鍵盤距離が基準値よりも大きくはなくステップS1232の判定がNOならば、CPU201は、ステップS1226で取得した鍵盤距離が0で、かつ押鍵比較段階変数stepの値が「1」ではないか否かを判定する(ステップS1237)。この判定がYESとなる場合は、任意の指で押鍵中の鍵と同じ鍵を、現在押鍵中の指とは異なる指で、次ではない、より先のタイミングで押鍵することを表している。 If the keyboard distance is not greater than the reference value and the determination in step S1232 is NO, the CPU 201 determines whether the keyboard distance acquired in step S1226 is 0 and the value of the key pressing comparison stage variable step is not “1”. Is determined (step S1237). If this determination is YES, it means that the same key as the key being pressed with an arbitrary finger is pressed with a finger different from the currently pressed key at a later timing than the next. ing.
ステップS1237の判定がNOの場合には、CPU201は、セット変数setに登録を示す値「1」が格納された状態を維持する。すなわち、変数NotePreが示す演奏情報は、準備動作をする演奏情報として登録可能な状態にされる。その後、CPU201は、ステップS1239の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。 If the determination in step S1237 is NO, the CPU 201 maintains a state where the value “1” indicating registration is stored in the set variable set. That is, the performance information indicated by the variable NotePre can be registered as performance information for performing the preparation operation. Thereafter, the CPU 201 proceeds to the process of step S1239 and proceeds to a comparison process with the performance information of the key depression having the next finger number.
任意の指で押鍵中の鍵と同じ鍵を次の次以降のタイミングにてその任意の指以外の指で押鍵する状態であってステップS1237の判定がYESとなる場合は、CPU201は、セット変数setに非登録を示す値「0」を格納する(ステップS1238)。すなわち、変数NotePreが示す演奏情報は、準備動作をする演奏情報としては登録されない。 If the same key as the key being pressed with an arbitrary finger is pressed with a finger other than the arbitrary finger at the next and subsequent timings, and the determination in step S1237 is YES, the CPU 201 A value “0” indicating non-registration is stored in the set variable set (step S1238). That is, the performance information indicated by the variable NotePre is not registered as performance information for performing the preparation operation.
その後、CPU201は、ステップS1239の処理に移行し、次の指番号を有する押鍵の演奏情報との比較処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S1239 and proceeds to a comparison process with the performance information of the key depression having the next finger number.
CPU201は、以上のステップS1225からS1238までの一連の処理を、0から4までの指番号ifigについて実行する。これにより、CPU201は、変数NotePreに得られた演奏情報に対応する演奏状態を、出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]のうち押鍵を示す演奏情報の演奏状態と比較する。そして、CPU201は、NotePreが示す演奏情報へのポインタを、準備動作をする演奏情報へのポインタとしてprep[0]〜prep[4]に登録可能かどうかを判別し、セット変数setへの値のセットを行う。 The CPU 201 executes the above-described series of processing from steps S1225 to S1238 for the finger numbers ifig from 0 to 4. Thus, the CPU 201 compares the performance state corresponding to the performance information obtained in the variable NotePre with the performance state of the performance information indicating the key depression among the output buffer performance information pointer variables prep [0] to prep [4]. To do. Then, the CPU 201 determines whether or not the pointer to the performance information indicated by NotePre can be registered in prep [0] to prep [4] as the pointer to the performance information for performing the preparation operation, and the value of the set variable set is set. Do the set.
現在の変数NotePreの演奏情報について、0から4までの全ての指番号ifigに対応する上述の制御動作が終了し、ステップS1224の判定がNOになると、CPU201は、図15のフローチャートの制御処理を実行する。 When the above-described control operation corresponding to all finger numbers ifig from 0 to 4 is completed for the performance information of the current variable NotePre, when the determination in step S1224 is NO, the CPU 201 performs the control process of the flowchart of FIG. Run.
図15において、CPU201は、移動変数Movingに値「1」が格納されているか、または指交差変数Passingに値「1」が格納されているか否かを判定する(ステップS1240)。 In FIG. 15, the CPU 201 determines whether or not the value “1” is stored in the movement variable Moving, or whether the value “1” is stored in the finger crossing variable Passing (step S1240).
ステップS1240の判定がYESならば、CPU201は、準備動作判定用変数の一つである準備実行指示変数Prepareに値「1」を格納する(ステップS1241)。準備動作判定用変数Prepare、Moving、Passingは、図7のフローチャートの処理上では使用されないが、後述する図25および図26に示されるフローチャートにおける準備指示データ出力の処理で使用される。 If the determination in step S1240 is YES, the CPU 201 stores the value “1” in the preparation execution instruction variable Prepare, which is one of the preparation operation determination variables (step S1241). The preparation operation determination variables Prepare, Moving, and Passing are not used in the process of the flowchart of FIG. 7, but are used in the process of outputting the preparation instruction data in the flowcharts of FIGS. 25 and 26 described later.
ステップS1240の判定がNOの場合またはステップS1241の処理の後、CPU201は、セット変数setに値「1」がセットされているか否か、つまり登録可能であると判定されているか否かを判定する(ステップS1242)。 When the determination in step S1240 is NO or after the processing in step S1241, the CPU 201 determines whether or not the value “1” is set in the set variable set, that is, whether or not registration is possible. (Step S1242).
ステップS1242の判定がYESならば、CPU201は、変数NotePreが示す演奏情報中の指番号Finger(図3参照)(図15では「NotePre.Finger」と記載)に対応する出力バッファ用演奏情報ポインタ変数prep[NotePre.Finger]に、変数NotePreの値を格納する(ステップS1243)。このようにして、変数NotePreが示す演奏情報へのポインタが、準備動作を行う演奏情報へのポインタとして、prep[NotePre.Finger]に登録される。 If the determination in step S1242 is YES, the CPU 201 performs an output buffer performance information pointer variable corresponding to the finger number Finger (see FIG. 3) in the performance information indicated by the variable NotePre (referred to as “NotePre.Finger” in FIG. 15). prep [Note Pre. The value of the variable NotePre is stored in [Finger] (step S1243). In this way, the pointer to the performance information indicated by the variable NotePre is set to prep [NotePre. [Finger].
セット変数setの値が「0」でステップS1242の判定がNOならば、ステップS1243の実行はスキップされ、変数NotePreが示す演奏情報は、準備動作をする演奏情報としては出力バッファ用演奏情報ポインタ変数prep[NotePre.Finger]へは登録されない。 If the value of the set variable “set” is “0” and the determination in step S1242 is NO, the execution of step S1243 is skipped, and the performance information indicated by the variable NotePre is output buffer performance information pointer variable as performance information for performing the preparatory operation. prep [Note Pre. [Finger] is not registered.
ステップS1243の処理の後またはステップS1242の判定がNOならば、CPU201は、押鍵比較段階変数stepの値を+1インクリメントする(ステップS1244)。いままで、step=1、すなわち現在の押鍵の動作タイミングの次の動作タイミングに対応する準備動作に関する処理であったなら、これ以降、step=2となることにより、現在の押鍵の動作タイミングの次の次の動作タイミングに対応する準備動作に関する処理が実行されることになる。 After the process in step S1243 or if the determination in step S1242 is NO, the CPU 201 increments the value of the key pressing comparison stage variable step by +1 (step S1244). Up to now, if step = 1, that is, processing related to the preparatory operation corresponding to the next operation timing of the current key pressing operation timing, then step = 2 is set, so that the current key pressing operation timing is obtained. The process related to the preparatory operation corresponding to the next operation timing of the next is executed.
CPU201は、図15のステップS1244の処理の後、図13のステップS1211の処理に戻る。そして、CPU201は、図13のステップS1211からS1219までの一連の処理によって、次タイミング演奏情報ポインタ変数Next[0]〜Next[4]のうちから、出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]において演奏情報へのポインタが定義されていない指に対応するデータであって、かつ上述のように最初に変数NotePreに得られた演奏情報の次に発音開始時刻が早い演奏情報へのポインタとそれに対応する指番号を、それぞれ変数NotePreとfigに取得する。そして、CPU201は、これらの変数NotePreおよびfigについて、図14および図15のフローチャートの処理を再度実行する。この結果、CPU201は、変数NotePreが示す現在の押鍵に対して次の次のタイミングで押鍵されるべき発音開始時刻が最も早い演奏情報へのポインタが、準備動作を行う演奏情報へのポインタとして、prep[NotePre.Finger]に登録される。 The CPU 201 returns to the process of step S1211 of FIG. 13 after the process of step S1244 of FIG. Then, the CPU 201 performs the output buffer performance information pointer variable prep [0] to the next timing performance information pointer variable Next [0] to Next [4] through a series of processing from steps S1211 to S1219 in FIG. To the performance information that corresponds to the finger for which the pointer to the performance information is not defined in prep [4] and that has the earliest start time of the sound after the performance information first obtained in the variable NotePre as described above. And the corresponding finger numbers are acquired in the variables NotePre and fig, respectively. Then, the CPU 201 executes again the processes of the flowcharts of FIGS. 14 and 15 for these variables NotePre and fig. As a result, the CPU 201 indicates that the pointer to the performance information with the earliest sounding start time to be pressed at the next timing with respect to the current key press indicated by the variable NotePre is the pointer to the performance information for performing the preparation operation. Prep [Note Pre. [Finger].
CPU201は、以上の制御処理を繰り返し実行する結果、図13のフローチャートの実行において変数NotePreに演奏情報へのポインタが得られなくなり、図14のステップS1220の判定がNOになると、図7において現在の演奏情報検索用変数iNの値に対応するステップS709の準備確認の処理を終了する。 As a result of repeatedly executing the above control processing, the CPU 201 can no longer obtain a pointer to performance information in the variable NotePre in the execution of the flowchart of FIG. 13, and if the determination in step S1220 of FIG. The preparation confirmation process in step S709 corresponding to the value of the performance information search variable iN is terminated.
図16は、図14のステップS1226の鍵盤距離の取得の処理の例を示すフローチャートである。 FIG. 16 is a flowchart showing an example of the keyboard distance acquisition process in step S1226 of FIG.
CPU201はまず、図14の出力バッファ用演奏情報ポインタ変数prep[ifig]が示す演奏情報と、変数NotePreが示す演奏情報のうち、指番号Finger(図3参照)が大きいほうの演奏情報を変数notefにセットし、指番号Fingerが小さいほうの演奏情報を変数notetにセットする(ステップS1601)。 First, the CPU 201 sets the performance information with the larger finger number Finger (see FIG. 3) among the performance information indicated by the output buffer performance information pointer variable prep [ifig] and the performance information indicated by the variable NotePre in FIG. The performance information with the smaller finger number Finger is set in the variable notet (step S1601).
次に、CPU201は、演奏情報notefの音高Pitch(図3参照)(図16中では「notef.Pitch」と記載)をピッチ変数pfに格納する。そして、CPU201は、次式により鍵盤位置を算出し鍵盤位置変数keyfに格納する(ステップS1602)。
keyf←OctDist×(pf/12)+KeyDist[pf%12]
・・・(1)
ここで、OctDistは定数であり値「14」を持つ。KeyDist[]={0,1,2,3,4,6,7,8,9,10,11,12}であり、KeyDist[0]=0、KeyDist[1]=1、KeyDist[2]=2、KeyDist[3]=3、KeyDist[4]=4、KeyDist[5]=6、KeyDist[6]=7、KeyDist[7]=8、KeyDist[8]=9、KeyDist[9]=10、KeyDist[10]=11、KeyDist[11]=12という値を有する。上記(1)式において、KeyDist[pf%12]は、ピッチ変数pfの値を12で除算した剰余「pf%12」(「%」は剰余演算を示す)をインデックスとするKeyDist[pf%12]値である。なお、定数OctDistは、1オクターブの鍵盤距離を表す定数である。1オクターブ間は12半音であり、OctDistも12とすることも可能であるが、ここでは、便宜上、全ての白鍵−白鍵間の鍵盤距離を2とみなして、つまり、ミ−ファ間、シ−ド間も2半音であるとみなして、OctDistとして14という値を用いている。
Next, the CPU 201 stores the pitch Pitch (refer to FIG. 3) of the performance information notef (referred to as “notef.Pitch” in FIG. 16) in the pitch variable pf. Then, the CPU 201 calculates a keyboard position by the following equation and stores it in the keyboard position variable keyf (step S1602).
keyf ← OctDist × (pf / 12) + KeyDist [pf% 12]
... (1)
Here, OctDist is a constant and has a value “14”. KeyDist [] = {0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12}, KeyDist [0] = 0, KeyDist [1] = 1, KeyDist [2] = 2, KeyDist [3] = 3, KeyDist [4] = 4, KeyDist [5] = 6, KeyDist [6] = 7, KeyDist [7] = 8, KeyDist [8] = 9, KeyDist [9] = 10. KeyDist [10] = 11, and KeyDist [11] = 12. In the above equation (1), KeyDist [pf% 12] is Key Dist [pf% 12] with the remainder “pf% 12” obtained by dividing the value of the pitch variable pf by 12 (“%” indicates the remainder operation). ] Value. The constant OctDist is a constant that represents a keyboard distance of one octave. There are 12 semitones in one octave, and OctDist can be set to 12. Here, for convenience, the keyboard distance between all white keys and white keys is regarded as 2, that is, between the mifers, A value of 14 is used as OctDist, assuming that there are two semitones between the seeds.
続いて、CPU201は、ステップS1602と同様に、演奏情報notetについても、その音高Pitch(図16中では「notet.Pitch」と記載)をピッチ変数ptに格納する。そして、CPU201は、次式により鍵盤位置を算出し鍵盤位置変数keytに格納する(ステップS1603)。
keyt←OctDist×(pt/12)+KeyDist[pt%12]
・・・(2)
Subsequently, as in step S1602, the CPU 201 also stores the pitch Pitch (described as “notet.Pitch” in FIG. 16) of the performance information notet in the pitch variable pt. Then, the CPU 201 calculates a keyboard position by the following equation and stores it in the keyboard position variable keyt (step S1603).
key ← OctDist × (pt / 12) + KeyDist [pt% 12]
... (2)
その後、CPU201は、ステップS1602で算出した鍵盤位置変数keyfの値からステップS1603で算出した鍵盤位置変数keytの値を減算し、その減算結果を鍵盤距離変数distに格納する(ステップS1604)。 Thereafter, the CPU 201 subtracts the value of the keyboard position variable keyt calculated in step S1603 from the value of the keyboard position variable keyf calculated in step S1602, and stores the subtraction result in the keyboard distance variable dist (step S1604).
次に、CPU201は、現在のパート検索用変数iH(図7のステップS702とS712参照)の値が2であるか否か、すなわち、現在のパートが左手であるか否かを判定する(ステップS1605)。 Next, the CPU 201 determines whether or not the value of the current part search variable iH (see steps S702 and S712 in FIG. 7) is 2, that is, whether or not the current part is the left hand (step). S1605).
CPU201は、現在のパートが左手でステップS1605の判定がYESならば、鍵盤距離変数distの値を−1倍する、すなわち符号を逆にする(ステップS1606)。 If the current part is the left hand and the determination in step S1605 is YES, the CPU 201 multiplies the value of the keyboard distance variable dist by −1, that is, reverses the sign (step S1606).
CPU201は、ステップS1606の処理の後、またはステップS1605の判定がNOの場合に、図16のフローチャートで示される図14のステップS1226の鍵盤距離の取得の処理を終了する。 After the process of step S1606 or when the determination of step S1605 is NO, the CPU 201 ends the keyboard distance acquisition process of step S1226 in FIG. 14 shown in the flowchart of FIG.
鍵盤距離の取得においては、指番号が大きい指の鍵盤位置から指番号が小さい指の鍵盤位置を減算して鍵盤距離distを算出している。従って、右手の場合、例えば人差し指の鍵盤位置が親指の鍵盤位置よりも大きな音高の位置にあれば、鍵盤距離distは正の値となる。また、右手において、親指で押鍵中に人差し指を親指の上を越えて親指の左側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離distは0より小さい値となる。同様に、人差し指で押鍵中に親指を人差し指の下をくぐって人差し指の右側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離distはやはり0より小さい値となる。 In obtaining the keyboard distance, the keyboard distance dist is calculated by subtracting the keyboard position of the finger with the smaller finger number from the keyboard position of the finger with the larger finger number. Therefore, in the case of the right hand, for example, if the keyboard position of the index finger is at a position where the pitch is larger than the keyboard position of the thumb, the keyboard distance dist is a positive value. Also, if you are trying to press the left finger position of the thumb with your index finger over the thumb while pressing with your thumb with the right hand, subtract the keyboard position of the thumb from the index position of the index finger with the highest finger number. The obtained keyboard distance dist is a value smaller than 0. Similarly, when pushing the thumb with the index finger under the forefinger and pressing the keyboard position on the right side of the index finger, it is obtained by subtracting the thumb keyboard position from the index finger keyboard position with a large finger number. The keyboard distance dist is also less than 0.
左手については、得られた鍵盤距離distの値を−1倍することにより、右手と全く同じ関係にすることができる。すなわち、左手の場合、普通に左手を鍵盤上に置くと、人差し指の鍵盤位置は親指の鍵盤位置よりも小さい音高の位置になるため、その場合、指番号の大きな人差し指の鍵盤位置から親指の鍵盤位置を減算するとマイナスになってしまう。これを右手と同じ関係にするために、−1を乗算することによりプラス値にしている。この状態で、左手において、親指で押鍵中に人差し指を親指の上を越えて親指の右側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離distは0より大きな値となり、これを−1倍することにより、最終的な鍵盤距離distはマイナス値となる。同様に、人差し指で押鍵中に親指を人差し指の下をくぐって人差し指の左側の鍵盤位置を押鍵しようとしているときには、指番号の大きい人差し指の鍵盤位置から親指の鍵盤位置を減算して得られる鍵盤距離distはやはり0より大きな値となり、これを−1倍することにより、最終的な鍵盤距離distはマイナス値となる。 For the left hand, by multiplying the value of the obtained keyboard distance dist by −1, the same relationship as that for the right hand can be obtained. That is, in the case of the left hand, if the left hand is normally placed on the keyboard, the keyboard position of the index finger will be at a pitch lower than the keyboard position of the thumb, so in that case, from the keyboard position of the index finger with a large finger number, Subtracting the keyboard position will result in a negative value. In order to make this the same relationship as the right hand, a positive value is obtained by multiplying by -1. In this state, with the left hand, when pressing the thumb with the index finger over the thumb and pressing the right keyboard position, subtract the thumb keyboard position from the index finger with the higher index number. The keyboard distance dist thus obtained is a value greater than 0, and by multiplying this by −1, the final keyboard distance dist becomes a negative value. Similarly, when pushing the thumb with the index finger under the index finger and pressing the keyboard position on the left side of the index finger, it is obtained by subtracting the keyboard position of the thumb from the index position of the index finger with the large finger number. The keyboard distance “dist” is also a value larger than 0, and by multiplying this by −1, the final keyboard distance “dist” becomes a negative value.
以上のようにして、親指がからんだ指超えまたは指くぐりが行われたときだけ、図16のフローチャートにより算出される鍵盤距離変数distの値が0より小さい値となるようにすることができる。この状態が、図14のステップS1227で判定される。 As described above, the value of the keyboard distance variable “dist” calculated by the flowchart of FIG. 16 can be set to a value smaller than 0 only when the finger is entangled or penetrated by the thumb. . This state is determined in step S1227 in FIG.
図17および図18は、図7のステップS710の動作データ出力の処理の例を示すフローチャートである。 17 and 18 are flowcharts showing an example of the operation data output process in step S710 of FIG.
始めに、CPU201は、図17のステップS1701からS1707の一連の処理を実行する。ここでは、変数の初期設定と、動作データのための今回の動作開始時間start、動作終了時間term、トラック番号Handの算出と設定が行われる。 First, the CPU 201 executes a series of processes from steps S1701 to S1707 in FIG. Here, initial setting of variables, calculation and setting of the current operation start time start, operation end time term, and track number Hand for operation data are performed.
まず、CPU201は、動作データ(図4)の各フレームframe[i]を指示するためのフレームカウント用変数iに、現時点におけるフレームの総数FrameCountの値を格納する(ステップS1701)。このフレームの総数FrameCountは、図7のステップS703で値「0」に初期化され、後述する図18のステップS1721で+1ずつインクリメントされる。これにより、動作データの数が順次増やされてゆく。 First, the CPU 201 stores the value of the total frame count at the current time in the frame count variable i for designating each frame frame [i] of the operation data (FIG. 4) (step S1701). The total number of frames FrameCount is initialized to “0” in step S703 in FIG. 7, and incremented by +1 in step S1721 in FIG. As a result, the number of operation data is sequentially increased.
次に、CPU201は、ステップS1702からS1707で、今回の動作タイミングにおける動作データを生成するときの、トラック番号Hand、動作開始時間startと動作終了時間term(図4参照)を決定する。今回の演奏情報検索用変数iNの値(図7のステップS705とS711参照)に対応する演奏情報Note[iN]、およびそれと同時に押鍵または準備動作される出力バッファ用演奏情報ポインタ変数prep[0]〜prep[4]が示す各演奏情報に対して、演奏ガイドを行うためには、次のような制御が必要となる。すなわち、その演奏ガイドは、演奏情報Note[iN]の発音開始時刻Note[iN].Timeより前からガイド表示を開始し、発音開始時刻Note[iN].Timeでガイドを終了(実際に押鍵)する必要がある。 Next, in steps S1702 to S1707, the CPU 201 determines a track number Hand, an operation start time start, and an operation end time term (see FIG. 4) when generating operation data at the current operation timing. The performance information Note [iN] corresponding to the value of the performance information search variable iN (see steps S705 and S711 in FIG. 7), and the performance information pointer variable prep [0] for the output buffer that is simultaneously depressed or prepared. ] To perform performance guidance for each piece of performance information indicated by prep [4], the following control is required. That is, the performance guide includes the sound generation start time Note [iN]. The guide display is started before Time, and the sound generation start time Note [iN]. It is necessary to end the guide (actual key depression) at Time.
そこで、CPU201はまず、動作開始時間start(同名の変数に格納されている)が、今回の演奏情報の発音開始時刻Note[iN].Timeよりも大きいか否かを判定する。動作開始時間startは、一番最初は図7のステップS703で値「0」に初期設定されている。また、動作途中では、一つ前の演奏情報検索用変数iNの値における動作データ出力の処理の最後の図18のステップS1722で、次の演奏情報検索用変数iNの値のための動作開始時間startが算出されている。 Therefore, the CPU 201 first calculates the operation start time start (stored in the variable of the same name) as the sound generation start time Note [iN]. It is determined whether it is larger than Time. The operation start time start is initially set to a value “0” in step S703 of FIG. In the middle of the operation, the operation start time for the value of the next performance information search variable iN in step S1722 of FIG. 18 at the end of the process of outputting the operation data at the value of the previous performance information search variable iN. start is calculated.
上述のようにして算出されている今回の動作開始時間startが今回の演奏情報の発音開始時刻Note[iN].Timeよりも後(大きい値)になっているときは、演奏ガイドは今回の演奏情報の発音開始時刻Note[iN].Timeよりも前になければならないので、動作開始時間startの修正が必要となる。 The current operation start time start calculated as described above is the sound generation start time Note [iN]. When it is later (larger value) than Time, the performance guide generates the pronunciation start time Note [iN]. Since it must be before Time, the operation start time start needs to be corrected.
CPU201は、ステップS1702の判定がYESならばさらに、前回の演奏情報の発音開始時刻laston(同名の変数に格納されている)が、今回の演奏情報の発音開始時刻Note[iN].Timeよりも小さいか否かを判定する(ステップS1703)。 If the determination in step S1702 is YES, the CPU 201 further determines that the sounding start time laston of the previous performance information (stored in the variable of the same name) is the sounding start time Note [iN]. It is determined whether it is smaller than Time (step S1703).
ステップS1703の判定がYESならば、CPU201は、前回発音開始時刻lastonから、前回発音開始時刻lastonから今回の演奏情報の発音開始時刻Note[iN].Timeまでの経過時間に所定の比率RATIO(例えば80%=0.8)を乗算して得られる時間だけ経過した時点を、動作開始時間startとして設定する。すなわち、
start←laston+(Note[iN].Time−laston)
×RATIO ・・・(3)
これにより、前回の音の発音開始時刻から、今回の音の発音開始時刻までの時間の、例えば80%(RATIOで表される比率)だけ経過した時点を、動作開始時間startとして設定することとなる。
If the determination in step S1703 is YES, the CPU 201 starts from the previous sounding start time laston, and from the previous sounding start time laston, the sounding start time Note [iN]. The time when the time obtained by multiplying the elapsed time until Time by a predetermined ratio RATIO (for example, 80% = 0.8) has elapsed is set as the operation start time start. That is,
start ← laston + (Note [iN] .Time-laston)
× RATIO (3)
As a result, for example, 80% (ratio represented by RATIO) of the time from the sound start time of the previous sound to the sound start time of the current sound has elapsed is set as the operation start time start. Become.
一方、前回発音開始時刻lastonがNote[iN].Timeよりも小さくなくステップS1703の判定がNOの場合には、仕方がないので、前回発音開始時刻lastonを今回の動作開始時間startにセットする(ステップS1704)。 On the other hand, the last pronunciation start time laston is Note [iN]. If it is not smaller than Time and the determination in step S1703 is NO, there is no choice but the previous sounding start time laston is set to the current operation start time start (step S1704).
算出されている動作開始時間startが今回の演奏情報の発音開始時刻Note[iN].Timeよりも大きくはなくステップS1702の判定がNOの場合には、CPU201は、その算出されている動作開始時間startをそのまま使用する。 The calculated operation start time start is the pronunciation start time Note [iN]. If it is not greater than Time and the determination in step S1702 is NO, the CPU 201 uses the calculated operation start time start as it is.
以上のようにして今回の動作開始時間startが決定した後、CPU201は、演奏情報検索用変数iNの次の値による次回の処理のために、今回の演奏情報の発音開始時刻Note[iN].Timeを前回発音開始時刻lastonとしてセットする(ステップS1706)。 After the current operation start time start is determined as described above, the CPU 201 determines the sound generation start time Note [iN] .. N of the current performance information for the next processing using the next value of the performance information search variable iN. Time is set as last sounding start time laston (step S1706).
その後、CPU201は、フレームカウント用変数iの値に対応する動作データframe[i]のトラック番号Hand(図17では「frame[i].Hand」と記載)に、現在のパート検索用変数iHの値(図7のステップS702,S712参照)を格納する。また、CPU201は、動作データframe[i]の動作開始時間start(図17では「frame[i].start」と記載)に、上述のように算出した今回の動作開始時間startを格納する。さらに、CPU201は、動作データframe[i]の動作終了時間term(図17では「frame[i].term」と記載)に、今回の演奏情報の発音開始時刻Note[iN].Timeを格納する(以上、ステップS1707)。 Thereafter, the CPU 201 sets the current part search variable iH to the track number Hand (described as “frame [i] .Hand” in FIG. 17) of the operation data frame [i] corresponding to the value of the frame count variable i. The value (see steps S702 and S712 in FIG. 7) is stored. Further, the CPU 201 stores the current operation start time start calculated as described above in the operation start time start (described as “frame [i] .start” in FIG. 17) of the operation data frame [i]. Further, the CPU 201 adds the sound generation start time Note [iN] .. of the performance information of this time to the operation end time term (described as “frame [i] .term” in FIG. 17) of the operation data frame [i]. Time is stored (step S1707).
ステップS1707の後、CPU201は、図18のステップS1708からS1722までの一連の処理を実行する。ここでは、今回の動作データのための5本の各指の演奏位置「position[0]〜position[4]」(指を置くべき鍵盤番号)、各指の状態「status[0]〜status[4]」(それぞれ、値「−1」が準備動作、値「1」が押鍵)、奥行き方向の位置「Zpos」などの情報の生成と設定が行われる。 After step S1707, the CPU 201 executes a series of processing from step S1708 to S1722 in FIG. Here, the performance position “position [0] to position [4]” (key number where the finger should be placed) of each of the five fingers for the current motion data, and the status “status [0] to status [ 4] ”(the value“ −1 ”is a preparation operation, the value“ 1 ”is a key press), and the position“ Zpos ”in the depth direction is generated and set.
CPU201は、ステップS1708で指番号指定変数ifigに初期値「0」(親指)を設定した後、ステップS1718でifigの値を+1ずつインクリメントしながら、ステップS1709で片手の指の最大数「5」に達したと判定するまで、以下のステップS1710からS1717の一連の処理を実行する。 The CPU 201 sets an initial value “0” (thumb) to the finger number designation variable ifig at step S1708, and then increments the value of igf by +1 at step S1718, and at step S1709 the maximum number of fingers “5” at one hand. Until it is determined that the value has been reached, a series of processes of steps S1710 to S1717 below are executed.
まず、CPU201は、指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]の値が未定義値NULLでないか否かを判定する(ステップS1710)。 First, the CPU 201 determines whether or not the value of the performance information pointer variable for output buffer prep [ifig] corresponding to the finger number ifig is not the undefined value NULL (step S1710).
ステップS1710の判定がYESならば、現在処理中の指ifigについて、出力用の演奏情報prep[ifig]が決定されているので、CPU201は、prep[ifig]の音高Pitch(図3参照)(図18中では「prep[ifig].Pitch」と記載)を、今回の動作データframe[i]の指番号ifigに対応する演奏位置position[ifig](図18中では「frame[i].position[ifig]」と記載)に格納する(ステップS1711)。すなわち、現在処理中の指ifigに関しての指位置(position)のデータとして、prep[ifig]で決定されている演奏情報の音高を格納する。 If the determination in step S1710 is YES, since the performance information prep [ifig] for output has been determined for the finger ifig currently being processed, the CPU 201 determines the pitch pitch of prep [ifig] (see FIG. 3) ( 18 is described as “prep [ifig] .Pitch”), and the performance position position [ifig] (“frame [i] .position” in FIG. 18) corresponding to the finger number ifig of the current motion data frame [i]. ("Ifig" ") (step S1711). That is, the pitch of the performance information determined by prep [ifig] is stored as finger position data regarding the finger ifig currently being processed.
次に、CPU201は、指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]が示す演奏情報の発音開始時刻Time(図18中では「prep[ifig].Time」と記載)が、今回の演奏情報の発音開始時刻Note[iN].Timeと等しいか否か、すなわちprep[ifig]とNote[iN]の各発音開始時刻Timeが等しいか否かを判定する(ステップS1712)。これは、指番号ifigの押鍵がNote[iN].Timeの押鍵と同時であるか否かを判定することとなる。 Next, the CPU 201 determines that the sound generation start time Time (described as “prep [ifig] .Time” in FIG. 18) of the performance information indicated by the output buffer performance information pointer variable prep [ifig] corresponding to the finger number ifig is The pronunciation start time Note [iN]. It is determined whether it is equal to Time, that is, whether the sound generation start times Time of prep [ifig] and Note [iN] are equal (step S1712). This is because the key press of the finger number ifig is Note [iN]. It is determined whether or not the key is pressed at the same time.
ステップS1712の判定がYESならば、CPU201は、今回の動作データframe[i]の指番号ifigに対応する状態status[ifig](図18中では「frame[i].status[ifig]」と記載)に、押鍵を示す値「1」を格納する(ステップS1713)。 If the determination in step S1712 is YES, the CPU 201 describes the state status [ifig] corresponding to the finger number ifig of the current motion data frame [i] (described as “frame [i] .status [ifig]” in FIG. 18). ) Stores a value “1” indicating the key depression (step S1713).
その後、CPU201は、ステップS1718の処理に移行し、次の指番号の処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S <b> 1718 and proceeds to the process of the next finger number.
ステップS1712で、現在の指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]の発音開始時刻Timeが、今回の演奏情報Note[iN]の発音開始時刻Timeと等しくなく、ステップS1712の判定がNOならば、CPU201は、prep[ifig]>Note[iN].Timeであるか否かを判定する(ステップS1714)。 In step S1712, the sounding start time Time of the performance information pointer variable prep [ifig] for the output buffer corresponding to the current finger number ifig is not equal to the sounding start time Time of the current performance information Note [iN]. If the determination is NO, the CPU 201 determines that prep [ifig]> Note [iN]. It is determined whether it is Time (step S1714).
ステップS1714の判定がYESならば、現在の指番号ifigに対応するprep[ifig]が示す演奏情報は、準備動作を行うべきものである。このため、CPU201は、今回の動作データの指番号ifigに対応する状態frame[i].status[ifig]に、準備動作を示す値「−1」を格納する(ステップS1715)。 If the determination in step S1714 is YES, the performance information indicated by prep [ifig] corresponding to the current finger number ifig should perform a preparation operation. For this reason, the CPU 201 sets the state frame [i]... Corresponding to the finger number ifig of the current operation data. A value “−1” indicating the preparatory operation is stored in status [ifig] (step S1715).
その後、CPU201は、ステップS1718の処理に移行し、次の指番号の処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S <b> 1718 and proceeds to the process of the next finger number.
ステップS1714の判定がNOならば、現在の指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]には演奏情報へのポインタが格納されていないことを意味する。この場合には、CPU201は、今回の動作データの指番号ifigに対応する状態frame[i].status[ifig]に、データ無しを示す値「0」を格納する(ステップS1716)。 If the determination in step S1714 is NO, it means that no pointer to performance information is stored in the output buffer performance information pointer variable prep [ifig] corresponding to the current finger number ifig. In this case, the CPU 201 determines that the state frame [i]... Corresponds to the finger number ifig of the current operation data. A value “0” indicating no data is stored in status [ifig] (step S1716).
その後、CPU201は、ステップS1718の処理に移行し、次の指番号の処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S <b> 1718 and proceeds to the process of the next finger number.
ステップS1710に戻って、現在の指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]の値が未定義値NULLであって、ステップS1710の判定がNOならば、CPU201は、今回の動作データの指番号ifigに対応する演奏位置frame[i].position[ifig]に、データ無しを示す値「−1」を格納し、また、状態frame[i].status[ifig]に、データ無しを示す値「0」を格納する(ステップS1717)。 Returning to step S1710, if the value of the performance information pointer variable for output buffer prep [ifig] corresponding to the current finger number ifig is the undefined value NULL and the determination in step S1710 is NO, the CPU 201 Performance position frame [i]... Corresponding to the finger number ifig of the motion data. A value “−1” indicating no data is stored in position [ifig], and the state frame [i]. A value “0” indicating no data is stored in status [ifig] (step S1717).
その後、CPU201は、ステップS1718の処理に移行し、次の指番号の処理に進む。 Thereafter, the CPU 201 proceeds to the process of step S <b> 1718 and proceeds to the process of the next finger number.
以上のステップS1710からS1717までの一連の処理が、5本の全ての指番号ifigについて実行されると、ステップS1709の判定がNOとなる。 When the above-described series of processing from step S1710 to S1717 is executed for all five finger numbers ifig, the determination in step S1709 is NO.
この結果、CPU201は、奥行き位置計算の処理を実行し、その結果得られる奥行き方向の位置を、変数Zposに得る(ステップS1719)。 As a result, the CPU 201 executes depth position calculation processing, and obtains the position in the depth direction obtained as a result in the variable Zpos (step S1719).
CPU201は、変数Zposに得た奥行き方向の位置を、現在の動作データにframe[i].Zpos(図4参照)として格納する(ステップS1720)。 The CPU 201 adds the position in the depth direction obtained in the variable Zpos to frame [i]. It is stored as Zpos (see FIG. 4) (step S1720).
CPU201は、動作データframe[i]のフレームの総数FrameCountを+1インクリメントする(ステップS1721)。 The CPU 201 increments the total frame count of the operation data frame [i] by +1 (step S1721).
最後に、CPU201は、次回開始時刻の計算の処理を実行し、次の演奏情報検索用変数iNの値のための動作開始時間startを算出する(ステップS1722)。 Finally, the CPU 201 executes processing for calculating the next start time, and calculates an operation start time start for the value of the next performance information search variable iN (step S1722).
その後、CPU201は、図17および図18のフローチャートで示される図7のステップS710の動作データ出力の処理を終了する。 Thereafter, the CPU 201 ends the operation data output process in step S710 of FIG. 7 shown in the flowcharts of FIGS.
図19は、図18のステップS1719の奥行き位置計算の処理の例を示すフローチャートである。この処理では、現在の各指の押鍵や準備動作の状態から、手を鍵盤の奥行き方向に対して、どの位置に置くのが相応しいかを判定する。ここでは、鍵盤奥行き方向の手の位置として、zpos=1〜4の4段階で手の位置を定義し、このいずれの奥行き位置が相応しいかを判断している。 FIG. 19 is a flowchart showing an example of the depth position calculation processing in step S1719 of FIG. In this process, it is determined which position is appropriate for placing the hand in the depth direction of the keyboard based on the current key pressing state of each finger and the state of the preparation operation. Here, as the position of the hand in the keyboard depth direction, the position of the hand is defined in four stages of zpos = 1 to 4, and it is determined which depth position is appropriate.
まず、CPU201は、奥行き位置変数zposに暫定的に値「1」を格納する(ステップS1901)。この値は、鍵盤上の手前側に手を置き、全部白鍵を押鍵する位置にあることを指示する。 First, the CPU 201 provisionally stores a value “1” in the depth position variable zpos (step S1901). This value indicates that the hand is placed on the front side of the keyboard and all the white keys are pressed.
次に、CPU201は、親指に対応する出力バッファ用演奏情報ポインタ変数prep[0]の値が未定義値NULLでないか否かを判定する(ステップS1902)。 Next, the CPU 201 determines whether or not the value of the output buffer performance information pointer variable prep [0] corresponding to the thumb is not the undefined value NULL (step S1902).
ステップS1902の判定がYESならば、親指に対応する演奏情報が存在することになるので、CPU201は、prep[0]が示す演奏情報の音高データprep[0].Pitchを、ピッチ変数pに格納する(ステップS1903)。 If the determination in step S1902 is YES, there is performance information corresponding to the thumb, so the CPU 201 performs pitch data prep [0]. Pitch is stored in the pitch variable p (step S1903).
さらに、CPU201は、ピッチ変数pの値に対応する黒鍵判定定数BlackKey[p]の値が「1」であるか否か、すなわち親指に対応する演奏情報が示す音高Pitchが黒鍵であるか否かを判定する(ステップS1904)。いま、黒鍵判定定数BlackKey[]={0,1,0,1,0,0,1,0,1,0,1,0}である。値「0」は白鍵を示し、値「1」は黒鍵を示す。この配列の並びは、実際の鍵盤楽器における白鍵と黒鍵の一般的な並びに対応している。この配列値を、ピッチ変数pをキー値として調べることにより、演奏情報が示す音高Pitchが黒鍵であるか否かを判定することができる。実際には、音高データprep[0].Pitchの値を、12で除した余りの値を用いる等して、オクターブ内での音高を算出して判定を行う。 Further, the CPU 201 determines whether or not the value of the black key determination constant BlackKey [p] corresponding to the value of the pitch variable p is “1”, that is, the pitch Pitch indicated by the performance information corresponding to the thumb is a black key. It is determined whether or not (step S1904). Now, the black key determination constant BlackKey [] = {0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0}. The value “0” indicates a white key, and the value “1” indicates a black key. This arrangement of arrays corresponds to a general arrangement of white keys and black keys in an actual keyboard instrument. By examining this array value using the pitch variable p as a key value, it is possible to determine whether or not the pitch Pitch indicated by the performance information is a black key. Actually, the pitch data prep [0]. Judgment is made by calculating the pitch within the octave by using the remainder of the Pitch value divided by 12, for example.
ステップS1904の判定がYESならば、親指に対応する演奏情報が黒鍵であることになるので、CPU201は、奥行き位置変数zposに値「4」を格納する(ステップS1905)。この値は、片手の5本の指全てを鍵盤上の奥側の黒鍵上に置くことを指示する。すなわち、親指が黒鍵上に置かれるということは、5本の全ての指が自然に黒鍵上に置かれることを意味する。 If the determination in step S1904 is YES, since the performance information corresponding to the thumb is a black key, the CPU 201 stores a value “4” in the depth position variable zpos (step S1905). This value indicates that all five fingers of one hand are placed on the black key on the back side of the keyboard. That is, that the thumb is placed on the black key means that all five fingers are naturally placed on the black key.
ステップS1905の処理の後、CPU201は、図19のフローチャートで示される図18のステップS1719の奥行き位置計算の処理を終了する。 After the process of step S1905, the CPU 201 ends the depth position calculation process of step S1719 of FIG. 18 shown in the flowchart of FIG.
一方、ステップS1902に戻って、親指に対応する出力バッファ用演奏情報ポインタ変数prep[0]の値が未定義値NULLになっておりステップS1902の判定がNOならば、CPU201は、小指に対応する出力バッファ用演奏情報ポインタ変数prep[4]の値が未定義値NULLでないか否かを判定する(ステップS1906)。 On the other hand, returning to step S1902, if the value of the output buffer performance information pointer variable prep [0] corresponding to the thumb is the undefined value NULL and the determination in step S1902 is NO, the CPU 201 corresponds to the little finger. It is determined whether or not the value of the performance information pointer variable prep [4] for output buffer is not the undefined value NULL (step S1906).
ステップS1906の判定がYESならば、小指に対応する演奏情報が存在することになるので、CPU201は、prep[4]が示す演奏情報の音高データprep[4].Pitchを、ピッチ変数pに格納する(ステップS1907)。 If the determination in step S1906 is YES, there is performance information corresponding to the little finger, so the CPU 201 performs pitch data prep [4]. Pitch is stored in the pitch variable p (step S1907).
さらに、CPU201は、ピッチ変数pの値に対応する黒鍵判定定数BlackKey[p]の値が「1」であるか否か、すなわち小指に対応する演奏情報が示す音高Pitchが黒鍵であるか否かを判定する(ステップS1908)。 Further, the CPU 201 determines whether or not the value of the black key determination constant BlackKey [p] corresponding to the value of the pitch variable p is “1”, that is, the pitch Pitch indicated by the performance information corresponding to the little finger is a black key. It is determined whether or not (step S1908).
ステップS1908の判定がYESならば、小指に対応する演奏情報が黒鍵であることになるので、CPU201は、奥行き位置変数zposに値「3」を格納する(ステップS1909)。この値は、人差し指、中指、薬指、小指の4本の指を鍵盤上の奥側の黒鍵上に置くことを指示する。すなわち、小指が黒鍵上に置かれるということは、上記4本の指が自然に黒鍵上に置かれることを意味する。 If the determination in step S1908 is YES, the performance information corresponding to the little finger is a black key, and therefore the CPU 201 stores the value “3” in the depth position variable zpos (step S1909). This value indicates that the four fingers of the index finger, middle finger, ring finger, and little finger are placed on the black key on the back side of the keyboard. That is, the fact that the little finger is placed on the black key means that the four fingers are naturally placed on the black key.
ステップS1909の処理の後、CPU201は、図19のフローチャートで示される図18のステップS1719の奥行き位置計算の処理を終了する。 After the process of step S1909, the CPU 201 ends the depth position calculation process of step S1719 of FIG. 18 shown in the flowchart of FIG.
親指に加えて、小指に対応する出力バッファ用演奏情報ポインタ変数prep[4]の値が未定義値NULLになっておりステップS1906の判定がNOならば、CPU201は、ステップS1910で変数iに値「1」を設定した後、ステップS1916で変数iの値を+1ずつインクリメントしながら、ステップS1911で変数iの値が4に達したと判定するまで、以下のステップS1912からS1915までの一連の処理を実行する。 In addition to the thumb, if the value of the output buffer performance information pointer variable prep [4] corresponding to the little finger is the undefined value NULL and the determination in step S1906 is NO, the CPU 201 sets the value of the variable i in step S1910. After setting “1”, a series of processing from step S1912 to S1915 is performed until it is determined in step S1911 that the value of variable i has reached 4 while incrementing the value of variable i by +1 in step S1916. Execute.
まずCPU201は、変数iの値が示す指(「1」なら人差し指、「2」なら中指、「3」なら薬指)に対応する出力バッファ用演奏情報ポインタ変数prep[i]の値が未定義値NULLでないか否かを判定する(ステップS1912)。 First, the CPU 201 sets the value of the performance information pointer variable prep [i] for the output buffer corresponding to the finger indicated by the value of the variable i (the index finger for “1”, the middle finger for “2”, the ring finger for “3”) as an undefined value. It is determined whether or not it is NULL (step S1912).
ステップS1912の判定がYESならば、CPU201は、prep[i]が示す演奏情報の音高データprep[i].Pitchを、ピッチ変数pに格納する(ステップS1913)。 If the determination in step S1912 is YES, the CPU 201 determines the pitch data prep [i]. Pitch is stored in the pitch variable p (step S1913).
さらに、CPU201は、ピッチ変数pの値に対応する黒鍵判定定数BlackKey[p]の値が「1」であるか否か、すなわち変数iの値に対応する指の演奏情報が示す音高Pitchが黒鍵であるか否かを判定する(ステップS1914)。 Further, the CPU 201 determines whether or not the value of the black key determination constant BlackKey [p] corresponding to the value of the pitch variable p is “1”, that is, the pitch Pitch indicated by the performance information of the finger corresponding to the value of the variable i. Is determined to be a black key (step S1914).
ステップS1914の判定がYESならば、CPU201は、奥行き位置変数zposに値「2」を格納する(ステップS1915)。この値は、人差し指、中指、薬指の3本の指を鍵盤上の奥側の黒鍵上に置くことを指示する。すなわち、上記3本の何れかの指が黒鍵上に置かれるということは、上記3本の指が自然に黒鍵上に置かれることを意味する。 If the determination in step S1914 is YES, the CPU 201 stores the value “2” in the depth position variable zpos (step S1915). This value indicates that the three fingers of the index finger, the middle finger, and the ring finger are placed on the black key on the back side of the keyboard. That is, any one of the three fingers placed on the black key means that the three fingers are naturally placed on the black key.
ステップS1915の処理の後、CPU201は、図19のフローチャートで示される図18のステップS1719の奥行き位置計算の処理を終了する。 After the process of step S1915, the CPU 201 ends the depth position calculation process of step S1719 of FIG. 18 shown in the flowchart of FIG.
変数iの値が4になりステップS1911の判定がNOになった場合も、CPU201は、図19のフローチャートで示される図18のステップS1719の奥行き位置計算の処理を終了するが、この場合は、いずれの指も黒鍵ではない場合に相当するので、奥行き位置変数zposの値は、ステップS1901で初期設定された値「1」となっている。 Even when the value of the variable i becomes 4 and the determination in step S1911 becomes NO, the CPU 201 ends the depth position calculation processing in step S1719 in FIG. 18 shown in the flowchart in FIG. Since this corresponds to a case where none of the fingers is a black key, the value of the depth position variable zpos is the value “1” initially set in step S1901.
以上の奥行き位置計算の処理では、各指が押鍵をするのか準備動作をするのかにかかわらず、手を置く位置が計算される。 In the depth position calculation process described above, the position where the hand is placed is calculated regardless of whether each finger presses the key or performs a preparation operation.
図20は、図18のステップS1722の次回開始時刻の計算の処理の例を示すフローチャートである。 FIG. 20 is a flowchart illustrating an example of the next start time calculation process in step S <b> 1722 of FIG. 18.
CPU201はまず、共に過去の動作開始時間を記憶する変数値である2回前動作開始時間startLast[1]の値を3回前動作開始時間startLast[2]に退避させ、1回前動作開始時間startLast[0]の値を2回前動作開始時間startLast[1]に退避させ、今回の動作開始時間startを1回前動作開始時間startLast[0]に退避させる(ステップS2001)。3回前動作開始時間startLast[2]は、図7のフローチャートの処理上では使用されないが、後述する図25および図26に示されるフローチャートにおける準備指示データ出力の処理で使用される。 First, the CPU 201 saves the value of the second previous operation start time startLast [1], which is a variable value for storing the past operation start time, in the third previous operation start time startLast [2]. The value of startLast [0] is saved to the previous operation start time startLast [1] twice, and the current operation start time start is saved to the previous operation start time startLast [0] (Step S2001). The operation start time startLast [2] three times before is not used in the process of the flowchart of FIG. 7, but is used in the process of outputting the preparation instruction data in the flowcharts of FIGS. 25 and 26 described later.
次に、CPU201は、以下のステップS2002からS2013の一連の処理によって、演奏情報検索用変数iNの次の値に対応する次回の図17および図18の動作データ出力の処理のために、次回の動作開始時間startを算出する。ここでは、現在発音されている演奏情報のうち、最も早く離鍵される音の演奏情報を基に、次回の動作開始時間startが設定される。 Next, the CPU 201 performs the next operation data output process of FIG. 17 and FIG. 18 corresponding to the next value of the performance information search variable iN by a series of processes of steps S2002 to S2013 below. The operation start time start is calculated. Here, the next operation start time start is set based on the performance information of the sound that is released earliest among the performance information that is currently sounded.
まず、CPU201は、今回の演奏情報の発音開始時刻Note[iN].Timeを暫定的に次回の動作開始時間startに設定する(ステップS2002)。 First, the CPU 201 starts the sound generation start time Note [iN]. Time is provisionally set to the next operation start time start (step S2002).
次に、今回の演奏情報の発音開始時刻Note[iN].Timeに今回の演奏情報の発音継続時間Note[iN].Gate(図3参照)を加算した値が、その演奏情報のノートオフ時刻NoteOff(同名の変数に格納される)として設定される。 Next, the sound generation start time Note [iN]. Time [Note] [iN]. A value obtained by adding Gate (see FIG. 3) is set as a note-off time NoteOff (stored in a variable of the same name) of the performance information.
次に、CPU201は、ステップS2004で指番号指定変数ifigに初期値「0」(親指)を設定した後、ステップS2011でifigの値を+1ずつインクリメントしながら、ステップS2005で片手の指の最大数「5」に達したと判定するまで、以下のステップS2006からS2010までの一連の処理を実行する。 Next, after setting an initial value “0” (thumb) to the finger number designation variable ifig in step S2004, the CPU 201 increments the value of igf by +1 in step S2011, and in step S2005, the maximum number of fingers in one hand. Until it is determined that “5” has been reached, a series of processes from the following steps S2006 to S2010 are executed.
まず、CPU201は、指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]の値が未定義値NULLでないか否かを判定する(ステップS2006)。 First, the CPU 201 determines whether or not the value of the output buffer performance information pointer variable prep [ifig] corresponding to the finger number ifig is not the undefined value NULL (step S2006).
ステップS2006の判定がYESならば、CPU201は、指番号ifigに対応する出力バッファ用演奏情報ポインタ変数が示す演奏情報の、発音開始時刻prep[ifig].Timeが、今回の演奏情報の発音開始時刻Note[iN].Time以下か否か、すなわち指番号ifigの押鍵がNote[iN].Timeの押鍵と同時若しくは、prep[ifig]に入っている音が、今回の演奏情報Note[iN]よりも前に押鍵されて、まだ押鍵持続中である音のいずれかであるか否かを判定する(ステップS2007)。 If the determination in step S2006 is YES, the CPU 201 determines the sound generation start time prep [ifig] .. of the performance information indicated by the output buffer performance information pointer variable corresponding to the finger number ifig. Time is the sound generation start time Note [iN]. Whether or not it is equal to or less than Time, that is, the key press of the finger number ifig is Note [iN]. Whether the sound at the same time as the key depression of Time or the sound contained in prep [ifig] is depressed before the current performance information Note [iN] and is still being depressed. It is determined whether or not (step S2007).
ステップS2007の判定がYESならば、CPU201は、現在の指番号ifigに対応する出力バッファ用演奏情報ポインタ変数が示す演奏情報の発音開始時刻prep[ifig].Timeに、同じ演奏情報の発音継続時間prep[ifig].Gateに比率RATIO(例えば80%=0.8)を乗算して得た値を加算し、その加算結果を、現在調査中の演奏情報prep[ifig]の動作終了時間として、termに設定する(ステップS2008)。 If the determination in step S2007 is YES, the CPU 201 causes the performance information pronunciation start time prep [ifig]. In Time, the pronunciation duration time prep [ifig]. A value obtained by multiplying Gate by a ratio RATIO (for example, 80% = 0.8) is added, and the addition result is set to term as the operation end time of the performance information prep [ifig] currently being investigated ( Step S2008).
その後、CPU201は、次回の動作開始時間startが、現在調査中の演奏情報prep[ifig]の動作終了時間termよりも小さく、かつ、現在調査中の演奏情報prep[ifig]の動作終了時間termがノートオフ時刻NoteOffよりも小さいか否かを判定する(ステップS2009)。 Thereafter, the CPU 201 determines that the next operation start time start is smaller than the operation end time term of the performance information prep [ifig] currently being investigated, and the operation end time term of the performance information prep [ifig] currently being investigated is It is determined whether or not it is smaller than the note-off time NoteOff (step S2009).
ステップS2009の判定がYESならば、ステップS2008で算出した動作終了時間termが、現在発音されている演奏情報の中で、ここまでに調べた音のうち暫定的に最も早く離鍵するものである。この場合、CPU201は、その動作終了時間termを新たなノートオフ時刻NoteOffとして設定する(ステップS2010)。 If the determination in step S2009 is YES, the operation end time term calculated in step S2008 is tentatively earliest among the sounds that have been examined so far, among the performance information that is currently sounded. . In this case, the CPU 201 sets the operation end time term as a new note-off time NoteOff (step S2010).
ステップS2009の判定がNOならば、CPU201は、現在のノートオフ時刻NoteOffを維持する。 If the determination in step S2009 is NO, the CPU 201 maintains the current note-off time NoteOff.
ステップS2010の処理の後、またはステップS2009の処理の判定がNOである場合、または、指番号ifigに対応する出力バッファ用演奏情報ポインタ変数prep[ifig]が示す演奏情報が、同時若しくはそれ以前に押鍵されるものではなくステップS2007の判定がNOの場合、あるいはprep[ifig]が未定義値NULLでステップS2006の判定がNOならば、CPU201は、ステップS2011の処理に移行し、次の指番号の処理に進む。 After the process of step S2010, or when the determination of the process of step S2009 is NO, or the performance information indicated by the output buffer performance information pointer variable prep [ifig] corresponding to the finger number ifig is simultaneously or before If the key is not depressed and the determination in step S2007 is NO, or if prep [ifig] is the undefined value NULL and the determination in step S2006 is NO, the CPU 201 proceeds to the process in step S2011 and proceeds to the next instruction. Proceed to number processing.
全ての指番号ifigに対する処理が終了しステップS2005の判定がNOになると、CPU201は、次回の動作開始時間startがノートオフ時刻NoteOffよりも前(小さい)か否かを判定する(ステップS2012)。 When the processing for all the finger numbers ifig ends and the determination in step S2005 is NO, the CPU 201 determines whether or not the next operation start time start is before (smaller) than the note-off time NoteOff (step S2012).
ステップS2012の判定がYESならば、CPU201は、ノートオフ時刻NoteOffを次回の動作開始時間startに設定し、NOならば、現在の動作開始時間startの値を維持して、図20のフローチャートで示される図18のステップS1722の次回開始時刻の計算の処理を終了する。 If the determination in step S2012 is YES, the CPU 201 sets the note-off time NoteOff to the next operation start time start. If NO, the CPU 201 maintains the value of the current operation start time start and is shown in the flowchart of FIG. The next start time calculation process in step S 1722 of FIG.
図21は、演奏情報の記憶例を示す図、図22は、図21の演奏情報に対応して、準備動作を考慮しないときの動作データの出力例を示す図、図23は、図21の演奏情報に対応して、図7から図20のフローチャートで示される制御処理により、準備動作を考慮したときの動作データの出力例を示す図(その1)、図24は、演奏ガイドの表示例を示す図(その1)である。 FIG. 21 is a diagram showing an example of storing performance information, FIG. 22 is a diagram showing an example of output of operation data corresponding to the performance information of FIG. 21, and when operation preparation is not considered, and FIG. 23 is a diagram of FIG. FIG. 24 shows an example of output of operation data when the preparation operation is taken into account by the control processing shown in the flowcharts of FIGS. 7 to 20 corresponding to the performance information, and FIG. FIG.
図21の演奏情報は、図3で説明したデータ構成例に従って、1行に1組の演奏情報、すなわち1行につき1音のデータが並んでいる。 The performance information shown in FIG. 21 has one set of performance information per line, that is, data of one sound per line, according to the data configuration example described with reference to FIG.
この演奏データに対して、準備動作を考慮しない場合には、図22に例示されるように、各指の演奏位置position[0]〜position[4]毎に、音高が設定されると共に(値「−1」は音高設定無しを示す)、該当する状態status[0]〜status[4]に、押鍵を行う場合は値「1」が、行わない場合は値「0」が設定されるだけである。従って、このような動作データに基づいて、演奏ガイドの表示が行われる場合には、図22の例えば*の位置では、音高67の鍵がposition[0]の親指で押鍵された後に音高「67」の鍵の左隣りの音高「66」の鍵がposition[1]の人差し指で押鍵される。これは、親指の押鍵に対して人差し指によって指超えを行って次の押鍵を行う演奏テクニックを必要とする例である。しかし、図22に例示される準備動作を考慮しない動作データでは、現在の押鍵に対して次にどのような押鍵がなされるかは知ることができないため、単純な演奏ガイド表示しか行うことができない。 When preparation performance is not considered for this performance data, a pitch is set for each performance position position [0] to position [4] of each finger as illustrated in FIG. The value “−1” indicates that there is no pitch setting), and the corresponding status “status [0] to status [4]” is set to the value “1” when the key is pressed, and the value “0” otherwise. It is only done. Therefore, when the performance guide is displayed based on such operation data, at the position of * in FIG. 22, for example, after the key of the pitch 67 is pressed with the thumb of position [0], the sound is played. The key of the pitch “66” adjacent to the left of the high “67” key is pressed with the index finger of position [1]. This is an example in which a performance technique is required in which the next key pressing is performed by moving the finger over the thumb pressing with the index finger. However, in the operation data that does not consider the preparation operation illustrated in FIG. 22, it is impossible to know what key is to be pressed next with respect to the current key pressing, so only a simple performance guide display is performed. I can't.
これに対して、図21に例示される演奏データに対して、本実施形態の制御処理により準備動作を考慮した場合には、図23に例示されるように、各指の演奏位置position[0]〜position[4]毎に、押鍵を行う指の音高と準備動作を行う指の音高が設定されると共に(値「−1」は音高設定無しを示す)、該当する状態status[0]〜status[4]に、押鍵を行う場合は値「1」が、準備動作を行う場合は値「−1」が、どちらも行わない場合は値「0」を設定することが可能となる。従って、このような動作データに基づいて、演奏ガイドの表示が行われる場合には、図23の例えば*の位置に示されるように、音高「67」の鍵がposition[0]の親指で押鍵されるときに、音高「67」の鍵の左隣りの音高「66」の鍵をposition[1]の人差し指で押鍵する準備動作に入るべきことを、status[1]に設定される値「−1」と、position[1]に設定される音高「66」とで指定することができる。そして、親指が関係していることが認識されることによって、演奏ガイドの表示においては、現在の親指の押鍵に対して人差し指が指超えを行って次の押鍵を行う準備に入ることを表示させることが可能となる。これにより、ユーザは、押鍵時の演奏テクニックを習得することが可能となる。この場合、演奏情報としては、図21に例示されるように、演奏テクニックのための特別な情報を持たせる必要はなく、指番号Fingerの情報から、準備動作の情報を自動的に生成することが可能となる。 On the other hand, when the preparation operation is taken into consideration for the performance data illustrated in FIG. 21 by the control processing of this embodiment, the performance position position [0] of each finger is illustrated as illustrated in FIG. ] To the position [4], the pitch of the finger that performs the key press and the pitch of the finger that performs the preparation operation are set (value “−1” indicates no pitch setting), and the corresponding status “status”. In [0] to status [4], the value “1” is set when the key is pressed, the value “−1” is set when the preparation operation is performed, and the value “0” is set when neither is performed. It becomes possible. Therefore, when the performance guide is displayed based on such motion data, the key of the pitch “67” is indicated by the thumb of position [0], as shown in the position of * in FIG. When the key is pressed, status [1] is set to enter a preparatory operation of pressing the key of pitch "66" on the left side of the key of pitch "67" with the index finger of position [1]. The value “−1” to be set and the pitch “66” set in position [1] can be specified. By recognizing that the thumb is involved, the display of the performance guide indicates that the index finger has moved beyond the current thumb key press and is ready for the next key press. It can be displayed. Thereby, the user can learn the performance technique at the time of key depression. In this case, as the performance information, as shown in FIG. 21, it is not necessary to have special information for the performance technique, and the information of the preparation operation is automatically generated from the information of the finger number Finger. Is possible.
図24は、演奏ガイドの表示例を示す図(その1)であり、右手の演奏ガイド表示を示している。鍵盤上の5個の丸い印は、右手の各指のポジションを示しており、左端の少し大きい丸印は親指を示し、右に向かって人差し指、中指、薬指、小指にそれぞれ対応する小さい丸印が示されている。左手の場合は、方向が逆になる。また、押鍵状態のときは、鍵盤が濃い色になる。 FIG. 24 is a diagram (part 1) illustrating a display example of a performance guide, and illustrates a performance guide display of the right hand. The five round marks on the keyboard indicate the position of each finger on the right hand. The slightly larger circle on the left indicates the thumb, and small circles corresponding to the index, middle, ring, and little fingers, respectively, toward the right. It is shown. For the left hand, the direction is reversed. When the key is pressed, the keyboard is dark.
図24(a)の例では、親指が押鍵状態で、その他の指は準備状態であることが示されている。このとき、図19のフローチャートで示した奥行き位置計算処理によって、図24(a)の演奏ガイド例では、zposに値「1」が格納されることにより、全ての指を白鍵上に置く指示が表示される。 In the example of FIG. 24A, it is shown that the thumb is in the key-pressed state and the other fingers are in the ready state. At this time, in the example of the performance guide shown in FIG. 24A by the depth position calculation process shown in the flowchart of FIG. 19, the value “1” is stored in zpos, so that all fingers are placed on the white key. Is displayed.
図24(b)の例も、親指が押鍵状態で、その他の指は準備状態であることが示されているが、図19のフローチャートで示した奥行き位置計算処理によって、図24(b)の演奏ガイド例では、zposに値「2」が格納されることにより、人差し指、中指、薬指の3本を黒鍵上に置き、親指と小指を白鍵上に置く指示が表示される。そして、人差し指は親指よりも半音低い黒鍵上に置いて準備する指示が表示されるため、演奏者は、自然に親指超えをして人差し指をF#の黒鍵上に置いて準備する状態をとることができる。 The example in FIG. 24B also shows that the thumb is in the key-pressed state and the other fingers are in the ready state. However, the depth position calculation processing shown in the flowchart in FIG. In the performance guide example, the value “2” is stored in zpos, so that an instruction to place the index finger, middle finger, and ring finger on the black key and to place the thumb and little finger on the white key is displayed. Then, since the instruction to prepare by placing the index finger on the black key that is half a tone lower than the thumb is displayed, the performer naturally goes over the thumb and puts the index finger on the black key of F # to prepare it. Can take.
なお、指超えや指くぐりが発生したときに、それらを明示的に示すような表示がなされてもよい。 It should be noted that a display may be made so as to explicitly indicate when a finger exceeds or a finger is dropped.
図25は、動作情報生成の処理の例を示すフローチャート(その2)である。図25において、図7のフローチャートと同じ処理を実行する部分には、同じステップ番号を付してある。また、それぞれのステップの詳細なフローチャートは、図8から図20で説明したものと同じである。図25の処理が、図7のフローチャートで示される処理と異なる点は、ステップS2501の準備指示データ出力の処理が加わった点である。また、図25のステップS703では、準備指示データの総数を示す変数PreMotionCountの値が「0」に初期設定される処理が追加されている。 FIG. 25 is a flowchart (part 2) illustrating an example of the operation information generation process. In FIG. 25, the same step numbers are assigned to the portions that execute the same processing as in the flowchart of FIG. The detailed flowchart of each step is the same as that described with reference to FIGS. The process of FIG. 25 differs from the process shown in the flowchart of FIG. 7 in that the process of outputting the preparation instruction data in step S2501 is added. Further, in step S703 in FIG. 25, a process for initializing the value of the variable PreMotionCount indicating the total number of preparation instruction data to “0” is added.
図26は、図25のステップS2501の準備指示データ出力の処理の例を示すフローチャートである。 FIG. 26 is a flowchart showing an example of the preparation instruction data output process in step S2501 of FIG.
まず、CPU201は、準備動作判定用変数の一つである準備実行指示変数Prepareの値が「1」であるか否かを判定する(ステップS2601)。この準備実行指示変数Prepareは、図25のステップS709の準備確認の処理における図15のステップS1241において、セットされている。 First, the CPU 201 determines whether or not the value of the preparation execution instruction variable Prepare, which is one of the preparation operation determination variables, is “1” (step S2601). This preparation execution instruction variable Prepare is set in step S1241 of FIG. 15 in the preparation confirmation process of step S709 of FIG.
ステップS2601の判定がNOならば、CPU201は、図26のフローチャートで示される図25のステップS2501の準備指示データ出力の処理を、実質的に行わずに終了する。 If the determination in step S2601 is NO, the CPU 201 ends without substantially performing the process of outputting the preparation instruction data in step S2501 of FIG. 25 shown in the flowchart of FIG.
ステップS2601の判定がYESならば、CPU201は、準備指示データ(図5)の各データPrepMotion[i]を指示するためのデータカウント用変数iに、現時点における準備指示データの総数PrepMotionCountの値を格納する。その後、CPU201は、PrepMotionCountの値を+1インクリメントする(以上、ステップS2602)。すなわち、配列PrepMotionにおいて、今回データを記録すべき配列番号をiにセットすると共に、その次の記録で用いる配列番号として、PrepMotionCountの値を+1インクリメントしておく。この準備指示データの総数PrepMotionCountは、図25のステップS703で値「0」に初期化された後、順次+1ずつインクリメントされる。これにより、準備指示データの数が順次増やされてゆく。 If the determination in step S2601 is YES, the CPU 201 stores the value of the total number of preparation instruction data PrepMotionCount at the current time in the data count variable i for instructing each data PrepMotion [i] of the preparation instruction data (FIG. 5). To do. Thereafter, the CPU 201 increments the value of PrepMotionCount by +1 (step S2602). That is, in the array PrepMotion, the array number in which the current data is to be recorded is set to i, and the value of PrepMotionCount is incremented by 1 as the array number used in the next recording. The total number of preparation instruction data PrepMotionCount is initialized to the value “0” in step S703 in FIG. As a result, the number of preparation instruction data is sequentially increased.
次に、CPU201は、データカウント用変数iの値に対応する準備指示データPrepMotion[i]のトラック番号Hand(図26では「PrepMotion[i].Hand」と記載)に、現在のパート検索用変数iHの値(右手・左手の別)(図25のステップS702,S712参照)を格納する。 Next, the CPU 201 sets the current part search variable in the track number Hand (described as “PrepMotion [i] .Hand” in FIG. 26) of the preparation instruction data PrepMotion [i] corresponding to the value of the data count variable i. The iH value (separate right hand / left hand) (see steps S702 and S712 in FIG. 25) is stored.
次に、CPU201は、準備指示データPrepMotion[i]の準備開始時刻start(図26では「PrepMotion[i].start」と記載)に、3回前動作開始時間startLast[2]を格納する。この3回前動作開始時間startLast[2]は、図25のステップS710の動作データ出力の処理中の図18のステップS1522の次回開始時刻の計算の処理における図20のステップS2001で設定されるデータ値である。この設定により、準備指示データPrepMotion[i]は、早めの時間から準備指示表示されることになる。 Next, the CPU 201 stores the operation start time startLast [2] three times before in the preparation start time start (described as “PrepMotion [i] .start” in FIG. 26) of the preparation instruction data PrepMotion [i]. The operation start time startLast [2] three times before is the data set in step S2001 of FIG. 20 in the processing of calculating the next start time of step S1522 of FIG. 18 during the operation data output processing of step S710 of FIG. Value. With this setting, the preparation instruction data PrepMotion [i] is displayed as a preparation instruction from an earlier time.
次に、CPU201は、タイプ変数typeに値「0」を初期設定する。 Next, the CPU 201 initializes a value “0” to the type variable type.
その後、CPU201は、指交差変数Passingの値が「1」であるか否かを判定する(ステップS2606)。指交差変数Passingは、親指に対する指超えまたは親指による指くぐりの状態が発生したときに、図25のステップS709の準備確認の処理中の図14のステップS1229によってセットされる。 Thereafter, the CPU 201 determines whether or not the value of the finger crossing variable Passing is “1” (step S2606). The finger crossing variable Passing is set in step S1229 of FIG. 14 during the preparation confirmation process in step S709 of FIG. 25 when a state of over fingering or passing through the thumb with respect to the thumb occurs.
ステップS2606の判定がYESならば、CPU201は、タイプ変数typeに値「1」をセットする(ステップS2609)。 If the determination in step S2606 is YES, the CPU 201 sets the value “1” in the type variable type (step S2609).
ステップS2606の判定がNOならば、CPU201は、移動変数Movingの値が「1」であるか否かを判定する(ステップS2608)。移動変数Movingは、基準値を超える鍵盤距離の移動(跳躍を伴う音形の演奏)が発生したときに、図25のステップS709の準備確認の処理中の図14のステップS1235によってセットされる。 If the determination in step S2606 is NO, the CPU 201 determines whether or not the value of the movement variable Moving is “1” (step S2608). The movement variable Moving is set in step S1235 in FIG. 14 during the preparation confirmation process in step S709 in FIG. 25 when a movement of the keyboard distance exceeding the reference value (a musical performance with a jump) occurs.
ステップS2608の判定がYESならば、CPU201は、タイプ変数typeに値「2」をセットする(ステップS2609)。 If the determination in step S2608 is YES, the CPU 201 sets the value “2” in the type variable type (step S2609).
ステップS2607、またはS2609の処理の後、あるいは、ステップS2608の判定がNOであった場合に、CPU201は、準備指示データPrepMotion[i]の準備タイプtype(図26では「PrepMotion[i].type」と記載)に、タイプ変数typeの値を格納する。 After the processing of step S2607 or S2609, or when the determination in step S2608 is NO, the CPU 201 prepares the preparation type type of the preparation instruction data PrepMotion [i] (“PrepMotion [i] .type” in FIG. 26). And the value of the type variable type is stored.
その後、CPU201は、ステップS2611からS2619の一連の処理で、準備終了時刻termを算出して設定する。 Thereafter, the CPU 201 calculates and sets the preparation end time term in a series of processes from step S2611 to S2619.
まず、CPU201は、準備開始時刻startを準備終了時刻termに暫定的にセットする(ステップS2611)。 First, the CPU 201 provisionally sets the preparation start time start to the preparation end time term (step S2611).
次に、CPU201は、ステップS2612で指番号指定変数ifigに初期値「0」(親指)を設定した後、ステップS2618でifigの値を+1ずつインクリメントしながら、ステップS2613で片手の指の最大数「5」に達したと判定するまで、以下のステップS2614からS2617までの一連の処理を実行する。 Next, the CPU 201 sets an initial value “0” (thumb) to the finger number designation variable ifig in step S2612, and then increments the value of igf by +1 in step S2618, and in step S2613, the maximum number of fingers in one hand. Until it is determined that “5” has been reached, the following series of processing from step S2614 to S2617 is executed.
まず、CPU201は、指番号ifigに対応する一時バッファ用演奏情報ポインタ変数pList[ifig]の値が未定義値NULLでないか否かを判定する(ステップS2614)。 First, the CPU 201 determines whether or not the value of the temporary buffer performance information pointer variable pList [ifig] corresponding to the finger number ifig is not the undefined value NULL (step S2614).
ステップS2614の判定がYESならば、CPU201は、現在の指番号ifigが示す一時バッファ用演奏情報ポインタ変数pList[ifig]が示す演奏情報のインデックス番号index(図26中では「pList[ifig].index」と記載)を、現在の準備指示データPrepMotion[i]の指番号ifigが示すインデックス番号index[ifig](図26中では「PrepMotion[i].index[ifig]」と記載)に格納する(ステップS2616)。一時バッファ用演奏情報ポインタ変数pList[0]〜pList[4]は、図25のステップS710の動作データ出力の処理中の図18のステップS1522の次回開始時刻の計算の処理における図14のステップS1230またはステップS1236で設定されている。 If the determination in step S2614 is YES, the CPU 201 indicates the index number index of the performance information indicated by the temporary buffer performance information pointer variable pList [ifig] indicated by the current finger number ifig (“pList [ifig] .index in FIG. 26). Is stored in the index number index [ifig] (denoted as “PrepMotion [i] .index [ifig]” in FIG. 26) indicated by the finger number ifig of the current preparation instruction data PrepMotion [i] ( Step S2616). The temporary buffer performance information pointer variables pList [0] to pList [4] are set in step S1230 of FIG. 14 in the next start time calculation process of step S1522 of FIG. 18 during the operation data output process of step S710 of FIG. Alternatively, it is set in step S1236.
さらに、CPU201は、現在の指番号ifigが示す一時バッファ用演奏情報ポインタ変数pList[ifig]が示す演奏情報の発音開始時刻Time(図26中では「pList[ifig].Time」と記載)を、準備終了時刻termに格納する(ステップS2617)。すなわち、準備指示データによる演奏ガイドは、pList[ifig]が示す演奏情報が発音を開始した時点で、終了する。 Further, the CPU 201 calculates the sound generation start time Time (described as “pList [ifig] .Time” in FIG. 26) of the performance information indicated by the temporary buffer performance information pointer variable pList [ifig] indicated by the current finger number ifig. It stores in the preparation end time term (step S2617). That is, the performance guide based on the preparation instruction data ends when the performance information indicated by pList [ifig] starts sounding.
全ての指番号ifigについての処理が終了しステップS2613の判定がNOになると、CPU201は、現在の準備指示データPrepMotion[i]の準備終了時刻termに、準備終了時刻変数termの値を格納する(ステップS2619)。 When the processing for all the finger numbers ifig is completed and the determination in step S2613 is NO, the CPU 201 stores the value of the preparation end time variable term in the preparation end time term of the current preparation instruction data PrepMotion [i] ( Step S2619).
その後、CPU201は、図26のフローチャートで示される図25のステップS2501の準備指示データ出力の処理を終了する。 Thereafter, the CPU 201 ends the preparation instruction data output process of step S2501 of FIG. 25 shown in the flowchart of FIG.
図27は、準備指示データの出力例を示す図であり、図28は、演奏ガイドの表示例を示す図(その2)である。 FIG. 27 is a diagram illustrating an output example of preparation instruction data, and FIG. 28 is a diagram (part 2) illustrating a display example of a performance guide.
これらの例に対応する演奏情報は、前述した図21に例示されるものと同じである。また、出力される動作データは、前述した図23に例示されるものと同じである。 The performance information corresponding to these examples is the same as that illustrated in FIG. Further, the output operation data is the same as that illustrated in FIG.
図25および図26のフローチャートの処理によって、図27に示されるような準備指示データを出力することが可能となる。ここでは、押鍵位置の大きな移動を準備指示する準備タイプtype=2すなわち「Moving」の準備指示データと、指交差を準備指示する準備タイプtype=1すなわち「Passing」の準備指示データが示されている。このような準備指示データを用いることにより、図28に例示されるように、手の移動方向を準備指示する三角の黒い矢印を必要時間だけ表示させることが可能となる。 The processing of the flowcharts of FIGS. 25 and 26 makes it possible to output preparation instruction data as shown in FIG. Here, the preparation type data indicating preparation of large movement of the key-pressing position type = 2, that is, “Moving” preparation instruction data, and the preparation type data indicating preparation of finger crossing preparation = 1, ie, “Passing” are provided. ing. By using such preparation instruction data, as illustrated in FIG. 28, it is possible to display a triangular black arrow that instructs the movement direction of the hand for a necessary time.
以上説明したように、本実施形態によれば、演奏情報と運指情報のみから、押鍵のための情報にとどまらない演奏動作を遂行する上でのテクニックに相当する情報を生成することが可能となるため、それにより運指とともに演奏動作上のテクニックも演奏ガイドすることが可能となる。また、準備に必要な箇所についてのユーザへの注意を喚起する情報を自動で生成できるなどの、楽器演奏の練習についての有用な情報の提供が可能になる。さらに、演奏情報に、熟達者による付加情報をつける必要がなくなるというメリットも生まれる。
以上の各実施形態に関して、更に以下の付記を開示する。
As described above, according to the present embodiment, it is possible to generate information corresponding to a technique for performing a performance operation that is not limited to information for key pressing from only performance information and fingering information. As a result, it is possible to guide performance techniques as well as fingering. In addition, it is possible to provide useful information about the practice of musical instrument performance, such as automatically generating information that alerts the user about the points necessary for preparation. In addition, there is a merit that it becomes unnecessary to add additional information to the performance information by the expert.
Regarding the above embodiments, the following additional notes are disclosed.
(付記1)
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出し手段と、
前記演奏情報読み出し手段によって読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定する操作状態推定手段と、
前記操作状態推定手段により推定された第1の演奏操作状態と、当該第1の演奏操作状態より後に推定された第2の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイド手段と、
を備えることを特徴とする演奏操作ガイド装置。
(付記2)
前記演奏情報は、複数のパートに分割され、
前記操作状態推定手段は、前記パート毎に前記演奏操作状態を推定し、
前記演奏操作ガイド手段は、前記パート毎に前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする付記1に記載の演奏操作ガイド装置。
(付記3)
前記演奏ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段は、前記演奏者の第1及び第2の演奏操作状態として、鍵盤の奥行き方向における演奏者の手の位置に関しての推定を行い、
前記演奏操作ガイド手段は、当該推定された演奏者の手の位置に応じて前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする付記1または2のいずれかに記載の演奏操作ガイド装置。
(付記4)
前記演奏操作ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段が、前記演奏者の第1及び第2の演奏操作状態として、親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で前記親指の上を越えて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指が演奏を行うべき指としてガイドするとともに、前記親指以外の指を演奏の準備を行うべき指としてガイドし、
前記親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で押鍵中に前記親指で前記親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指以外の指を演奏を行うべき指としてガイドするとともに、前記親指を演奏の準備を行うべき指としてガイドする、
ことを特徴とする付記1から3のいずれかに記載の演奏操作ガイド装置。
(付記5)
前記演奏操作ガイド装置は、鍵盤楽器の演奏操作に関するガイドを行うものであって、
前記操作状態推定手段が、前記演奏者の第1及び第2の演奏操作状態として、鍵盤の所定の鍵が押鍵されている状態及び当該押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態を推定した場合に、前記演奏操作ガイド手段は、現在の押鍵状態から次の押鍵状態への移動の準備をガイドする、
ことを特徴とする付記1から4のいずれかに記載の楽器演奏のための演奏操作ガイド装置。
(付記6)
演奏操作ガイド装置に用いられる演奏操作ガイド方法であって、
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出し、
前記読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定し、
前記推定された第1の演奏操作状態と、当該第1の演奏操作状態より後に推定された第2の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う、
ことを特徴とする演奏操作ガイド方法。
(付記7)
演奏操作ガイド装置として用いられるコンピュータに、
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出しステップと、
前記読み出された前記演奏情報夫々に基づいて、当該各演奏情報における演奏者の演奏操作状態を推定する操作状態推定ステップと、
前記推定された第1の演奏操作状態と、当該第1の演奏操作状態より後に推定された第2の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイドステップと、
を実行させる演奏操作ガイドプログラム。
(Appendix 1)
Performance information reading means for reading out performance information from the storage unit, including information related to the sound generation timing for sound generation of each musical sound constituting the song, information related to the pitch, and information related to the performance operation of the performer,
Operation state estimating means for estimating the performance operation state of the performer in the performance information based on the performance information read by the performance information reading means;
Based on the first performance operation state estimated by the operation state estimation means and the second performance operation state estimated after the first performance operation state, a guide regarding the performance operation of the performer is performed. Performance operation guide means;
A performance operation guide device comprising:
(Appendix 2)
The performance information is divided into a plurality of parts,
The operation state estimation means estimates the performance operation state for each part,
The performance operation guide device according to appendix 1, wherein the performance operation guide means performs a guide regarding the performance operation of the performer for each part.
(Appendix 3)
The performance guide device guides the performance operation of the keyboard instrument,
The operation state estimating means estimates the position of the player's hand in the depth direction of the keyboard as the first and second performance operation states of the player,
The performance operation guide device according to any one of appendices 1 and 2, wherein the performance operation guide means performs a guide regarding the performance operation of the performer according to the estimated position of the performer's hand.
(Appendix 4)
The performance operation guide device guides performance operation of a keyboard instrument,
The operation state estimating means moves the keyboard over the thumb with a finger other than the thumb from the state where the keyboard is being pressed with the thumb as the first and second performance operation states of the performer. The performance operation guide means guides the thumb as a finger to be played, and fingers other than the thumb to prepare for performance. As a guide and
The key is pressed with the thumb and the key is pressed with a finger other than the thumb from this state and moved under the finger other than the thumb with the thumb to press the key at the next and subsequent timings. When the state is estimated, the performance operation guide means guides a finger other than the thumb as a finger to perform, and guides the thumb as a finger to prepare for performance.
The performance operation guide device according to any one of appendices 1 to 3, characterized in that:
(Appendix 5)
The performance operation guide device guides performance operation of a keyboard instrument,
The operation state estimating means is a state in which a predetermined key of the keyboard is pressed and a distance from the pressed key is less than a predetermined reference value as the first and second performance operation states of the performer. The performance operation guide means guides the preparation for movement from the current key pressing state to the next key pressing state, when it is estimated that the key at the next position is pressed next.
The performance operation guide device for musical instrument performance according to any one of appendices 1 to 4, characterized in that:
(Appendix 6)
A performance operation guide method used in a performance operation guide device,
Performance information including information related to the sound generation timing for sound generation, information related to pitch, and information related to the performance operation of the performer is read from the storage unit for each musical sound constituting the song,
Based on each of the read performance information, the performance operation state of the performer in the performance information is estimated,
Based on the estimated first performance operation state and the second performance operation state estimated after the first performance operation state, a guide regarding the performance operation of the performer is performed.
A performance operation guide method characterized by the above.
(Appendix 7)
In a computer used as a performance operation guide device,
A performance information reading step of reading performance information from the storage unit, including information related to the sound generation timing for sound generation of each musical sound constituting the song, information related to the pitch, and information related to the performance operation of the performer,
An operation state estimating step for estimating a performance operation state of a performer in each piece of performance information based on each of the read performance information,
A performance operation guide step for performing a guide on the performance operation of the performer based on the estimated first performance operation state and a second performance operation state estimated after the first performance operation state; ,
A performance operation guide program that executes
100 演奏操作ガイド装置
101 演奏情報読み出し手段
102 操作状態推定手段
103 演奏動作ガイド手段
104 記憶部
105 演奏情報
106 第1の演奏操作状態
107 第2の演奏操作状態
201 CPU
202 ROM
203 RAM
204 入力部
205 表示部
206 MIDI I/F(MIDIインタフェース部)
207 バス
208 電子楽器
DESCRIPTION OF SYMBOLS 100 Performance operation guide apparatus 101 Performance information reading means 102 Operation state estimation means 103 Performance operation guide means 104 Storage part 105 Performance information 106 1st performance operation state 107 2nd performance operation state 201 CPU
202 ROM
203 RAM
204 Input unit 205 Display unit 206 MIDI I / F (MIDI interface unit)
207 Bus 208 Electronic musical instrument
Claims (7)
前記演奏情報読み出し手段によって読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定する操作状態推定手段と、
前記操作状態推定手段により推定された第1の演奏操作状態と、当該第1の演奏操作状態より後に推定された第2の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイド手段と、
を備えることを特徴とする演奏操作ガイド装置。 Performance information reading means for reading out performance information from the storage unit, including information related to the sound generation timing for sound generation of each musical sound constituting the song, information related to the pitch, and information related to the performance operation of the performer,
Operation state estimating means for estimating the performance operation state of the performer in the performance information based on the performance information read by the performance information reading means;
Based on the first performance operation state estimated by the operation state estimation means and the second performance operation state estimated after the first performance operation state, a guide regarding the performance operation of the performer is performed. Performance operation guide means;
A performance operation guide device comprising:
前記操作状態推定手段は、前記パート毎に前記演奏操作状態を推定し、
前記演奏操作ガイド手段は、前記パート毎に前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする請求項1に記載の演奏操作ガイド装置。 The performance information is divided into a plurality of parts,
The operation state estimation means estimates the performance operation state for each part,
The performance operation guide device according to claim 1, wherein the performance operation guide unit performs a guide regarding a performance operation of the performer for each part.
前記操作状態推定手段は、前記演奏者の第1及び第2の演奏操作状態として、鍵盤の奥行き方向における演奏者の手の位置に関しての推定を行い、
前記演奏操作ガイド手段は、当該推定された演奏者の手の位置に応じて前記演奏者の演奏操作に関するガイドを行う
ことを特徴とする請求項1または2のいずれかに記載の演奏操作ガイド装置。 The performance guide device guides the performance operation of the keyboard instrument,
The operation state estimating means estimates the position of the player's hand in the depth direction of the keyboard as the first and second performance operation states of the player,
The performance operation guide device according to claim 1, wherein the performance operation guide means performs a guide related to the performance operation of the performer according to the estimated position of the performer's hand. .
前記操作状態推定手段が、前記演奏者の第1及び第2の演奏操作状態として、親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で前記親指の上を越えて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指が演奏を行うべき指としてガイドするとともに、前記親指以外の指を演奏の準備を行うべき指としてガイドし、
前記親指で鍵盤を押鍵中の状態及びこの状態から前記親指以外の指で押鍵中に前記親指で前記親指以外の指の下をくぐらせて移動させて次以降のタイミングにて押鍵する状態を推定した場合に、前記演奏操作ガイド手段は、前記親指以外の指を演奏を行うべき指としてガイドするとともに、前記親指を演奏の準備を行うべき指としてガイドする、
ことを特徴とする請求項1から3のいずれかに記載の演奏操作ガイド装置。 The performance operation guide device guides performance operation of a keyboard instrument,
The operation state estimating means moves the keyboard over the thumb with a finger other than the thumb from the state where the keyboard is being pressed with the thumb as the first and second performance operation states of the performer. The performance operation guide means guides the thumb as a finger to be played, and fingers other than the thumb to prepare for performance. As a guide and
The key is pressed with the thumb and the key is pressed with a finger other than the thumb from this state and moved under the finger other than the thumb with the thumb to press the key at the next and subsequent timings. When the state is estimated, the performance operation guide means guides a finger other than the thumb as a finger to perform, and guides the thumb as a finger to prepare for performance.
The performance operation guide device according to claim 1, wherein the performance operation guide device is provided.
前記操作状態推定手段が、前記演奏者の第1及び第2の演奏操作状態として、鍵盤の所定の鍵が押鍵されている状態及び当該押鍵されている鍵から所定の基準値よりも離れた位置の鍵が次に押鍵される状態を推定した場合に、前記演奏操作ガイド手段は、現在の押鍵状態から次の押鍵状態への移動の準備をガイドする、
ことを特徴とする請求項1から4のいずれかに記載の楽器演奏のための演奏操作ガイド装置。 The performance operation guide device guides performance operation of a keyboard instrument,
The operation state estimating means is a state in which a predetermined key of the keyboard is pressed and a distance from the pressed key is less than a predetermined reference value as the first and second performance operation states of the performer. The performance operation guide means guides the preparation for movement from the current key pressing state to the next key pressing state, when it is estimated that the key at the next position is pressed next.
The performance operation guide device for musical instrument performance according to any one of claims 1 to 4.
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出し、
前記読み出された前記演奏情報夫々に基づいて、当該演奏情報における演奏者の演奏操作状態を推定し、
前記推定された第1の演奏操作状態と、当該第1の演奏操作状態より後に推定された第2の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う、
ことを特徴とする演奏操作ガイド方法。 A performance operation guide method used in a performance operation guide device,
Performance information including information related to the sound generation timing for sound generation, information related to pitch, and information related to the performance operation of the performer is read from the storage unit for each musical sound constituting the song,
Based on each of the read performance information, the performance operation state of the performer in the performance information is estimated,
Based on the estimated first performance operation state and the second performance operation state estimated after the first performance operation state, a guide regarding the performance operation of the performer is performed.
A performance operation guide method characterized by the above.
曲を構成する各楽音の、発音を行う発音タイミングに関する情報と、音高に関する情報と、演奏者の演奏操作に関する情報と、を含む演奏情報を記憶部から読み出す演奏情報読み出しステップと、
前記読み出された前記演奏情報夫々に基づいて、当該各演奏情報における演奏者の演奏操作状態を推定する操作状態推定ステップと、
前記推定された第1の演奏操作状態と、当該第1の演奏操作状態より後に推定された第2の演奏操作状態とに基づいて、前記演奏者の演奏操作に関するガイドを行う演奏操作ガイドステップと、
を実行させる演奏操作ガイドプログラム。 In a computer used as a performance operation guide device,
A performance information reading step of reading performance information from the storage unit, including information related to the sound generation timing for sound generation of each musical sound constituting the song, information related to the pitch, and information related to the performance operation of the performer,
An operation state estimating step for estimating a performance operation state of a performer in each piece of performance information based on each of the read performance information,
A performance operation guide step for performing a guide on the performance operation of the performer based on the estimated first performance operation state and a second performance operation state estimated after the first performance operation state; ,
A performance operation guide program that executes
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013205723A JP2015069170A (en) | 2013-09-30 | 2013-09-30 | Performance operation guide device, method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013205723A JP2015069170A (en) | 2013-09-30 | 2013-09-30 | Performance operation guide device, method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015069170A true JP2015069170A (en) | 2015-04-13 |
Family
ID=52835839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013205723A Pending JP2015069170A (en) | 2013-09-30 | 2013-09-30 | Performance operation guide device, method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015069170A (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001324919A (en) * | 2000-03-24 | 2001-11-22 | Casio Comput Co Ltd | Performance operation display device, and recording medium |
JP2003050577A (en) * | 2001-08-06 | 2003-02-21 | Casio Comput Co Ltd | Playing operation display device and program |
JP2003108119A (en) * | 2001-09-28 | 2003-04-11 | Casio Comput Co Ltd | Playing information display device and program |
JP2006292776A (en) * | 2005-03-17 | 2006-10-26 | Yamaha Corp | Performance guide apparatus and program |
-
2013
- 2013-09-30 JP JP2013205723A patent/JP2015069170A/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001324919A (en) * | 2000-03-24 | 2001-11-22 | Casio Comput Co Ltd | Performance operation display device, and recording medium |
JP2003050577A (en) * | 2001-08-06 | 2003-02-21 | Casio Comput Co Ltd | Playing operation display device and program |
JP2003108119A (en) * | 2001-09-28 | 2003-04-11 | Casio Comput Co Ltd | Playing information display device and program |
JP2006292776A (en) * | 2005-03-17 | 2006-10-26 | Yamaha Corp | Performance guide apparatus and program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Noise2music: Text-conditioned music generation with diffusion models | |
Wanderley et al. | Gestural control of sound synthesis | |
Wanderley | Gestural control of music | |
Wanderley et al. | Evaluation of input devices for musical expression: Borrowing tools from HCI | |
EP3489946A1 (en) | Real-time jamming assistance for groups of musicians | |
JP7230919B2 (en) | Musical score data information processing device | |
US9711133B2 (en) | Estimation of target character train | |
US10748515B2 (en) | Enhanced real-time audio generation via cloud-based virtualized orchestra | |
CN107077836A (en) | For tracking the method for music score and the modeling method of correlation | |
JP2023081946A (en) | Learning device, automatic music transcription device, learning method, automatic music transcription method and program | |
KR20170128060A (en) | Melody extraction method from music signal | |
Kitahara et al. | JamSketch: Improvisation support system with GA-based melody creation from user’s drawing | |
Johansson | Empirical research on asymmetrical rhythms in scandinavian folk music: A critical review | |
Kasák et al. | Music information retrieval for educational purposes-an overview | |
US11430417B2 (en) | Data generation device and non-transitory computer-readable storage medium | |
JP2017181724A (en) | Musical score display control method, musical score display control unit, and musical score display control program | |
Jadhav et al. | Transfer Learning for Audio Waveform to Guitar Chord Spectrograms Using the Convolution Neural Network | |
JP2015069170A (en) | Performance operation guide device, method, and program | |
Tavares et al. | Survey on automatic transcription of music | |
KR20220145675A (en) | Method and device for evaluating ballet movements based on ai using musical elements | |
JP6427994B2 (en) | Motion information generating apparatus, electronic musical instrument, method, and program for playing musical instrument | |
WO2024085175A1 (en) | Data processing method and program | |
US20230282188A1 (en) | Beatboxing transcription | |
Larsen et al. | States and sound: modelling user interactions with musical interfaces | |
Takano et al. | Method of generating computer graphics animation synchronizing motion and sound of multiple musical instruments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160930 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170829 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171121 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20180605 |