JP2007047535A - Fingering information generating device and fingering information generation processing program - Google Patents

Fingering information generating device and fingering information generation processing program Download PDF

Info

Publication number
JP2007047535A
JP2007047535A JP2005232915A JP2005232915A JP2007047535A JP 2007047535 A JP2007047535 A JP 2007047535A JP 2005232915 A JP2005232915 A JP 2005232915A JP 2005232915 A JP2005232915 A JP 2005232915A JP 2007047535 A JP2007047535 A JP 2007047535A
Authority
JP
Japan
Prior art keywords
phrase
fingering
performance data
midievent
section
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.)
Granted
Application number
JP2005232915A
Other languages
Japanese (ja)
Other versions
JP4482889B2 (en
Inventor
Junichiro Soejima
淳一郎 副島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2005232915A priority Critical patent/JP4482889B2/en
Publication of JP2007047535A publication Critical patent/JP2007047535A/en
Application granted granted Critical
Publication of JP4482889B2 publication Critical patent/JP4482889B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)
  • Auxiliary Devices For Music (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a fingering information generating device that shortens the processing time by making the processing load reduced. <P>SOLUTION: Playing data MidiEvent of a track (playing part) to be processed are divided into phrase sections, a fingering generating thread is activated for each of the divided phrases, to perform fingering generation based upon playing data MidiEvent constituting the phrase, and the obtained fingering of the phrase is copied as fingering data cfig in the playing data MidiEvent constituting a phrase having the same phrase number phID. Those processes are carried out in parallel for respective tracks and the processing time is shortened by lightening the processing load. <P>COPYRIGHT: (C)2007,JPO&INPIT

Description

本発明は、鍵盤を備えた電子楽器に用いて好適な運指情報生成装置および運指情報生成処理プログラムに関する。   The present invention relates to a fingering information generation apparatus and a fingering information generation processing program suitable for use in an electronic musical instrument having a keyboard.

鍵操作する際の指使い(運指)を演奏者に案内する運指情報を発生する装置が知られている。例えば特許文献1には、隣り合う2つの音に対して鍵盤を操作したときの指使いの容易さを表す2音運指データをそれぞれの指の組合わせに対応付けて記憶しておき、その内から演奏データ(与えられたメロディの音列)に対応する2音運指データを読み出し、読み出した2音運指データの累算値を最適にする運指を決定して運指情報を発生させる装置が開示されている。   2. Description of the Related Art There is known an apparatus that generates fingering information that guides a performer to use a finger (fingering) when operating a key. For example, in Patent Literature 1, two-finger fingering data representing ease of finger use when operating the keyboard for two adjacent sounds is stored in association with each combination of fingers. The two-finger fingering data corresponding to the performance data (sound string of the given melody) is read from within, and the fingering information is generated by determining the fingering that optimizes the accumulated value of the read two-finger fingering data An apparatus is disclosed.

特許第2526954号明細書Japanese Patent No. 2526954

ところで、上記特許文献1に開示された運指生成手法の他に、所定数の演奏データについて考えられる全ての指使い(運指)を評価し、その中から最適な運指を決定する手法も知られているが、そうした手法では考えられる全ての指使いについて個々に評価することから処理負荷が大きく膨大な処理時間を要するという問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、処理負荷を低減させて処理時間の短縮化を図ることができる運指情報生成装置および運指情報生成処理プログラムを提供することを目的としている。
Incidentally, in addition to the fingering generation method disclosed in Patent Document 1, there is also a method for evaluating all fingerings (fingering) that can be considered for a predetermined number of pieces of performance data and determining an optimum fingering among them. As is known, there is a problem that such a method requires a large processing load because it requires evaluation of all possible finger usages individually.
Therefore, the present invention has been made in view of such circumstances, and provides a fingering information generation device and a fingering information generation processing program capable of reducing processing load and shortening processing time. It is aimed.

上記目的を達成するため、請求項1に記載の発明では、曲を構成する各音を表すと共に、各音の演奏パートを表す演奏データを記憶する記憶手段と、前記記憶手段に記憶された演奏データをフレーズ区間に分割する動作を各演奏パート毎に並列的に行わせるフレーズ分割手段と、前記フレーズ分割手段により分割されたフレーズ区間の運指を生成する動作を各フレーズ区間毎に並列的に行わせる運指生成手段とを具備することを特徴とする。   In order to achieve the above object, according to the first aspect of the present invention, there are provided storage means for storing performance data indicating each sound constituting the music and a performance part of each sound, and a performance stored in the storage means. The phrase dividing means for dividing the data into phrase sections in parallel for each performance part and the operation for generating fingering of the phrase sections divided by the phrase dividing means in parallel for each phrase section And a fingering generation means to be performed.

上記請求項1に従属する請求項2に記載の発明では、前記フレーズ分割手段は、処理対象とする演奏パートの演奏データの先頭から所定音数分に区切った参照フレーズを設定する設定手段と、前記設定手段により設定された参照フレーズ以降から当該参照フレーズに一致する比較フレーズを検索する第1の検索手段と、前記第1の検索手段が参照フレーズに一致する比較フレーズを検索できない場合に、参照フレーズの位置をずらしながら当該参照フレーズに一致する比較フレーズを検索する第2の検索手段と、前記第1および第2の検索手段のいずれかが参照フレーズに一致する比較フレーズを検索した場合に、検索された比較フレーズをフレーズ区間に設定する区間設定手段とを具備することを特徴とする。   In the invention according to claim 2, which is dependent on claim 1, the phrase dividing means sets a reference phrase divided into a predetermined number of notes from the beginning of the performance data of the performance part to be processed; Reference is made when the first search means for searching for a comparison phrase that matches the reference phrase from the reference phrase set by the setting means and when the first search means cannot search for a comparison phrase that matches the reference phrase. A second search means for searching for a comparison phrase that matches the reference phrase while shifting the position of the phrase, and when either of the first and second search means searches for a comparison phrase that matches the reference phrase, Section setting means for setting the searched comparison phrase as a phrase section is provided.

上記請求項1に従属する請求項3に記載の発明では、前記運指生成手段は、フレーズ区間の運指を生成する毎に、その生成した運指を同種のフレーズ区間に割り当てることを特徴とする。   The invention according to claim 3 dependent on claim 1 is characterized in that the fingering generating means assigns the generated fingering to the phrase section of the same type every time the fingering of the phrase section is generated. To do.

請求項4に記載の発明では、曲を構成する各音を表すと共に、各音の演奏パートを表す演奏データを記憶する記憶手段と、前記記憶手段に記憶された演奏データをフレーズ区間に分割し、分割された各フレーズ区間に含まれる音数から区間当りの平均構成音数を算出する動作を各演奏パート毎に並列的に行わせるフレーズ分割手段と、前記フレーズ分割手段により分割されたフレーズ区間が平均構成音数を超える場合は平均構成音数ずつに分割した演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせ、平均構成音数を超えない場合は該当フレーズを構成する全ての演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせる運指生成手段とを具備することを特徴とする。   According to the fourth aspect of the present invention, the storage means for storing the performance data indicating the performance parts of each sound and the performance data stored in the storage means are divided into phrase sections. Phrase dividing means for performing an operation for calculating the average number of sounds per section from the number of sounds included in each divided phrase section in parallel for each performance part; and the phrase section divided by the phrase dividing means If the number exceeds the average component number, the fingering generation using the performance data divided by the average component number is performed in parallel for each phrase section, and if the average component number is not exceeded, the corresponding phrase And a fingering generation means for performing a fingering generation operation using all the performance data that constitutes in parallel for each phrase section.

請求項5に記載の発明では、曲を構成する各音を表すと共に、各音毎に対応する演奏パートを表す演奏データをフレーズ区間に分割し、分割された各フレーズ区間に含まれる音数から区間当りの平均構成音数を算出する動作を、各演奏パート毎に並列的に行わせるフレーズ分割処理と、前記フレーズ分割処理により分割されたフレーズ区間が平均構成音数を超える場合は平均構成音数ずつに分割した演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせ、平均構成音数を超えない場合は該当フレーズを構成する全ての演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせる運指生成処理とをコンピュータで実行させることを特徴とする。   According to the fifth aspect of the present invention, the performance data representing the performance part corresponding to each sound is divided into phrase sections, and the number of sounds included in each divided phrase section is represented. Phrase division processing for calculating the average number of sounds per section in parallel for each performance part, and if the phrase section divided by the phrase division processing exceeds the average number of constituent sounds The operation of fingering generation using performance data divided by number is performed in parallel for each phrase section, and if the average number of sounds is not exceeded, fingering is performed using all the performance data constituting the corresponding phrase. It is characterized by having a computer perform the fingering production | generation process which performs the operation | movement to produce | generate in parallel for every phrase area.

請求項1に記載の発明によれば、曲を構成する各音を表すと共に、各音の演奏パートを表す演奏データをフレーズ区間に分割する動作を各演奏パート毎に並列的に行わせながら、分割されたフレーズ区間の運指を生成する動作を各フレーズ区間毎に並列的に行わせる為、処理負荷を低減させて処理時間の短縮化を図ることができる。   According to the first aspect of the present invention, while representing each sound constituting the music and performing the operation of dividing the performance data representing the performance part of each sound into phrase sections in parallel for each performance part, Since the operation of generating fingering of the divided phrase sections is performed in parallel for each phrase section, the processing load can be reduced and the processing time can be shortened.

請求項4、5に記載の発明によれば、曲を構成する各音を表すと共に、各音の演奏パートを表す演奏データをフレーズ区間に分割し、分割された各フレーズ区間に含まれる音数から区間当りの平均構成音数を算出する動作を各演奏パート毎に並列的に行わせつつ、分割されたフレーズ区間が平均構成音数を超える場合は平均構成音数ずつに分割した演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせ、平均構成音数を超えない場合は該当フレーズを構成する全ての演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせる為、負荷分散により処理負荷を低減させて処理時間の短縮化を図ることができる。   According to invention of Claim 4, 5, while representing each sound which comprises music, the performance data showing the performance part of each sound are divided | segmented into a phrase area, and the number of sounds contained in each divided phrase area If the divided phrase section exceeds the average number of constituent sounds while performing the operation of calculating the average number of constituent sounds per section in parallel for each performance part, the performance data divided by the average number of constituent sounds is The fingering generation operation is performed in parallel for each phrase section, and if the average number of sounds is not exceeded, the fingering generation operation is performed for each phrase section using all performance data constituting the corresponding phrase. Therefore, the processing time can be shortened by reducing the processing load by load distribution.

以下、図面を参照して本発明の実施形態について説明する。
A.第1実施形態
(1)構成
図1は、本発明の第1実施形態による運指情報生成装置の全体構成を示すブロック図である。運指情報生成装置は、CPU1、ROM2、RAM3、入力部4、表示部5およびMIDIインタフェース6を備える。CPU1は、マルチスレッドに対応したOS上で複数のスレッド(ソフトウェア実行単位)を時分割に実行して見かけ上、リアルタイム並列処理を実現するものであり、具体的には後述するメインルーチン(プライマリスレッド)が各トラック(演奏パート)毎に運指生成スレッドを起動させて各トラック毎の運指生成を並列処理する。
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
A. First Embodiment (1) Configuration FIG. 1 is a block diagram showing an overall configuration of a fingering information generating device according to a first embodiment of the present invention. The fingering information generation device includes a CPU 1, a ROM 2, a RAM 3, an input unit 4, a display unit 5, and a MIDI interface 6. The CPU 1 executes a plurality of threads (software execution units) in a time-sharing manner on an OS that supports multi-threads, and apparently realizes real-time parallel processing. Specifically, a main routine (primary thread described later) ) Activates a fingering generation thread for each track (performance part) and performs fingering generation for each track in parallel.

ROM2は、CPU1にロードされる各種制御プログラムやテーブル等を記憶する。ここで言う各種制御プログラムとは、メインルーチン(プライマリスレッド)、運指生成スレッドおよび運指系列選択処理を含む。RAM3は、CPU1において用いられる各種レジスタ・フラグデータを一時記憶するワークエリアと、MIDIインタフェース6を介して外部の電子楽器7より取り込んだSMF形式の曲データを、後述する演奏データMidiEventに変換して記憶する演奏データエリアと、この演奏データエリアに格納される演奏データMidiEventをパート別に管理するトラックデータTrackを記憶するトラックデータエリアとを備える。これらRAM3に格納される主要なデータ構成については追って説明する。入力部4は、ユーザ操作に対応した操作イベントを発生してCPU1に供給する。表示部5は、CPU1の制御の下に、例えば演奏データMidiEventを楽譜表示すると共に、表示された楽譜において、演奏データMidiEventを構成する各音毎に対応させた運指データを表示する。   The ROM 2 stores various control programs and tables that are loaded into the CPU 1. The various control programs referred to here include a main routine (primary thread), a fingering generation thread, and a fingering sequence selection process. The RAM 3 converts a work area for temporarily storing various register / flag data used in the CPU 1 and music data in the SMF format acquired from the external electronic musical instrument 7 through the MIDI interface 6 into performance data MidiEvent described later. A performance data area to be stored and a track data area to store track data Track for managing the performance data MidiEvent stored in the performance data area for each part are provided. The main data structure stored in the RAM 3 will be described later. The input unit 4 generates an operation event corresponding to the user operation and supplies it to the CPU 1. The display unit 5 displays, for example, musical performance data MidiEvent as a musical score under the control of the CPU 1 and also displays fingering data corresponding to each sound constituting the musical performance data MidiEvent in the displayed musical score.

(2)データ構成
次に、図2〜図3を参照してRAM3に設けられるトラックデータエリアおよび演奏データエリアの構成について説明する。図2は、RAM3のトラックデータエリアに格納されるトラックデータTrack[0]〜[N]の構成を示す図である。1つのトラックデータTrackは、演奏データエリアに格納される演奏データMidiEventを演奏パート別に管理するデータであり、演奏パートを表すトラック番号iTrack、パート番号iPart、ポインタpNote、ポインタprevおよびポインタnextから構成される。なお、パート番号iPartは、「0」の場合に右手パートを、「1」の場合に左手パートを表す。ポインタpNoteは、トラック番号iTrackの先頭の演奏データMidiEventを指定する。ポインタprevは1つ前の演奏データMidiEventを指定する。ポインタnextは1つ後の演奏データMidiEventを指定する。
(2) Data Configuration Next, the configuration of the track data area and performance data area provided in the RAM 3 will be described with reference to FIGS. FIG. 2 is a diagram illustrating a configuration of track data Tracks [0] to [N] stored in the track data area of the RAM 3. One track data Track is data for managing performance data MidiEvent stored in the performance data area for each performance part, and is composed of a track number iTrack, a part number iPart, a pointer pNote, a pointer prev, and a pointer next representing the performance part. The The part number iPart represents a right-hand part when “0” and a left-hand part when “1”. The pointer pNote designates the performance data MidiEvent at the head of the track number iTrack. The pointer prev designates the previous performance data MidiEvent. The pointer next designates the next performance data MidiEvent.

図3は、RAM3の演奏データエリアに格納される演奏データMidiEventの構成を示す図である。演奏データMidiEvent[0]〜[N]は、曲を構成する各音を表し、その終端にはENDデータを備える。演奏データMidiEventは、発音開始時刻ITime、音長lGate、フレーズ番号iPhrase、フレーズ内番号iPorder、音高Pitch、運指データcfig、運指評価値iCost、和音判別値cIsHarm、和音先頭ポインタphTop、和音終端ポインタphTail、ポインタprevおよびポインタnextから構成される。なお、和音判別値cIsHarmは、「0」の場合に和音でない旨を表し、「構成音−1」の値(「1」以上)の場合に和音の旨を表す。和音先頭ポインタphTopは、和音構成音の内、最も低い音高の音を指定する。和音終端ポインタphTailは、和音構成音の内、最も高い音高の音を指定する。ポインタprevは、1つ前の演奏データMidiEventを指定する。ポインタnextは、次の演奏データMidiEventを指定する。   FIG. 3 is a diagram showing a configuration of performance data MidiEvent stored in the performance data area of the RAM 3. The performance data MidiEvent [0] to [N] represents each sound constituting the song, and has END data at the end thereof. The performance data MidiEvent includes a pronunciation start time ITime, a tone length lGate, a phrase number iPhrase, a phrase number iPorder, a pitch pitch, a fingering data cfig, a fingering evaluation value iCost, a chord discrimination value cIsHarm, a chord head pointer phTop, and a chord end It consists of a pointer phTail, a pointer prev, and a pointer next. The chord discrimination value cIsHarm indicates that the chord is not a chord when “0”, and indicates the chord when the value is “component sound −1” (“1” or more). The chord head pointer phTop designates the lowest pitch of the chord constituent sounds. The chord end pointer phTail designates the highest pitch sound among the chord constituent sounds. The pointer prev designates the previous performance data MidiEvent. The pointer next designates the next performance data MidiEvent.

B.動作
次に、図4〜図6を参照して第1実施形態の動作について説明する。以下では、メインルーチン(プライマリスレッド)、運指生成スレッドおよび運指系列選択処理の各動作について述べる。
B. Operation Next, the operation of the first embodiment will be described with reference to FIGS. Hereinafter, operations of the main routine (primary thread), the fingering generation thread, and the fingering sequence selection process will be described.

(1)メインルーチンの動作
入力部4からCPU1にメイルーチンの実行を指示するイベントが供給されると、CPU1は図4に図示するメインルーチンを実行してステップSA1に進み、データ読み込み・演奏データ生成を行う。すなわち、ステップSA1では、MIDIインタフェース6を介して外部の電子楽器7からSMF形式の曲データを取り込み、取り込んだ楽曲データから図3に図示したデータ形式の演奏データMidiEvent[0]〜[N]を生成してRAM3の演奏データエリアに格納すると共に、これら演奏データMidiEvent[0]〜[N]をそれぞれ個別に演奏パート別に管理するトラックデータTrack[0]〜[N](図2参照)を生成してRAM3のトラックデータエリアに格納する。
(1) Operation of main routine When an event for instructing the CPU 1 to execute the main routine is supplied from the input unit 4, the CPU 1 executes the main routine shown in FIG. 4 and proceeds to step SA 1 to read data / performance data. Generate. That is, in step SA1, music data in the SMF format is fetched from the external electronic musical instrument 7 via the MIDI interface 6, and the performance data MidiEvent [0] to [N] in the data format shown in FIG. Generate and store in the performance data area of the RAM 3, and generate track data Track [0] to [N] (see FIG. 2) for managing the performance data MidiEvent [0] to [N] individually for each performance part. And stored in the track data area of the RAM 3.

続いて、ステップSA2では、トラックデータTrack[0]〜[N]に基づき全てのトラック(演奏パート)を参照し終えたかどうかを判断する。参照し終えていなければ、判断結果は「NO」になり、ステップSA3に進む。ステップSA3では、運指生成の対象となるトラック(演奏パート)の先頭の演奏データを指定するポインタpNoteをレジスタmeFromにストアすると共に、レジスタmeToに曲終端を表す値「0」をストアする。そして、ステップSA4では、レジスタmeFromおよびレジスタmeToの各値を引数として運指生成スレッドを起動させてから上記ステップSA2に処理を戻す。   In step SA2, it is determined whether or not all tracks (performance parts) have been referred to based on the track data Tracks [0] to [N]. If the reference has not been completed, the determination result is “NO”, and the flow proceeds to Step SA3. In step SA3, the pointer pNote for designating the first performance data of the track (performance part) that is the target of fingering generation is stored in the register meFrom, and the value “0” representing the end of the song is stored in the register meTo. In step SA4, the fingering generation thread is activated with the values of the register meFrom and the register meTo as arguments, and the process returns to step SA2.

以後、トラックデータTrack[0]〜[N]に基づき全てのトラック(演奏パート)を参照し終えるまで各トラック毎の運指生成スレッドを起動させる。そして、全トラックについて運指生成スレッドを起動させると、上記ステップSA2の判断結果が「YES」になり、ステップSA5に進む。ステップSA5では、全トラックの運指生成スレッド完了まで待機し、全トラックの運指生成スレッド完了に応じて判断結果が「YES」になり、本処理を完了させる。このように、プライマリスレッドであるメインルーチンでは、トラックデータTrack[0]〜[N]に基づき全てのトラック(演奏パート)を参照し終えるまで各トラック毎の運指生成スレッドを起動させ、全トラックの運指生成スレッド完了により本処理を完了させる。   Thereafter, the fingering generation thread for each track is activated until all tracks (performance parts) are referred to based on the track data Tracks [0] to [N]. When the fingering generation thread is activated for all the tracks, the determination result in step SA2 is “YES”, and the flow proceeds to step SA5. In step SA5, the process waits until the fingering generation thread for all the tracks is completed, and the determination result is “YES” in response to the completion of the fingering generation thread for all the trucks, thereby completing this process. As described above, in the main routine which is the primary thread, the fingering generation thread for each track is activated until all tracks (performance parts) are referred to based on the track data Tracks [0] to [N]. This processing is completed by completing the fingering generation thread.

(2)運指生成スレッドの動作
次に、図5を参照して運指生成スレッドの動作を説明する。前述したメインルーチン(図4参照)により運指生成スレッドが起動されると、CPU1は図5に図示するステップSB1に進み、メインルーチンからの引数であるレジスタmeFromの内容、すなわち運指生成の対象となるトラック(演奏パート)の先頭の演奏データMidiEvent[pNote]を指定するポインタpNoteをレジスタmeおよびレジスタmetにストアする。続いて、ステップSB2では、先読み回数FIGSTEPSをレジスタiにストアする。
(2) Operation of Fingering Generation Thread Next, the operation of the fingering generation thread will be described with reference to FIG. When the fingering generation thread is activated by the above-described main routine (see FIG. 4), the CPU 1 proceeds to step SB1 shown in FIG. 5, and the contents of the register meFrom, which is an argument from the main routine, that is, the target of fingering generation A pointer pNote specifying the first piece of performance data MidiEvent [pNote] of the track (performance part) is stored in the register me and the register met. Subsequently, in step SB2, the number of prefetchs FIGSTEPS is stored in the register i.

ステップSB3〜SB5では、レジスタiにストアされた先読み回数FIGSTEPSが「0」に達するまでデクリメントさせることによって、レジスタmetのポインタ(met.next)を先読み回数FIGSTEPS分だけ先に進める。レジスタmetのポインタ(met.next)を先読み回数FIGSTEPS分だけ先に進めると、ステップSB3の判断結果が「NO」になり、ステップSB6に進む。   In steps SB3 to SB5, the pointer (met.next) of the register met is advanced by the number of times of the prefetching FIG. STEPS by decrementing until the number of times of prefetching FIGSTEPS stored in the register i reaches “0”. If the pointer (met.next) of the register met is advanced by the number of times of prefetching FIGSTEPS, the determination result in step SB3 becomes “NO”, and the process proceeds to step SB6.

ステップSB6では、先読み回数FIGSTEPS分だけ先に進めたポインタ(met.next)で指定される演奏データMidiEvent中の和音判別値cIsHarm(met.cIsHarm)が「0」、つまり和音でないかどうかを判断する。和音でなければ、判断結果は「YES」になり、後述のステップSB8に進む。一方、和音であると、上記ステップSB6の判断結果が「NO」になり、ステップSB7に進む。ステップSB7では、先読み回数FIGSTEPS分だけ先に進めたポインタ(met.next)で指定される演奏データMidiEvent中の和音終端ポインタphTail(met.phTail)をレジスタmetにストアする。   In step SB6, it is determined whether or not the chord discriminating value cIsHarm (met.cIsHarm) in the performance data MidiEvent specified by the pointer (met.next) advanced by the number of pre-reads FIG. STEPS is “0”, that is, not a chord. . If it is not a chord, the determination result is “YES”, and the flow proceeds to step SB8 described later. On the other hand, if it is a chord, the determination result in step SB6 is “NO”, and the process proceeds to step SB7. In step SB7, the chord end pointer phTail (met.phTail) in the performance data MidiEvent specified by the pointer (met.next) advanced by the number of times of prefetching FIGSTEPS is stored in the register met.

次いで、ステップSB8では、レジスタmetのポインタとレジスタmeToのポインタとが一致していないか否かを判断する。すなわち、運指生成の対象となる演奏データMidiEventを指定するポインタ(レジスタmet)が終端ポインタ(レジスタmeTo)に達していないかどうかを判断する。運指生成の対象となる演奏データMidiEventを指定するポインタ(レジスタmet)が終端ポインタ(レジスタmeTo)に達していなければ、判断結果は「YES」になり、ステップSB9を介して運指系列選択処理(後述する)を実行する。   Next, in step SB8, it is determined whether the pointer of the register met and the pointer of the register meTo do not match. That is, it is determined whether or not the pointer (register met) that specifies the performance data MidiEvent that is the target of fingering generation has reached the end pointer (register meTo). If the pointer (register met) that specifies the performance data MidiEvent that is the target of fingering generation has not reached the end pointer (register meTo), the determination result is “YES”, and the fingering sequence selection process is performed via step SB9. (To be described later).

後述するように、運指系列選択処理では、レジスタmetのポインタで指定される演奏データMidiEventに基づき、考えられる全ての指使い(運指系列)毎に「弾き難さ」を表す評価値を生成し、その内から最も小さい評価値の運指、すなわち一番弾き易い指使いを選択する。そして、こうした運指系列選択処理が完了すると、ステップSB10に進み、レジスタmeに格納されるポインタにより現在指定されている演奏データMidiEvent中のポインタnext(me.next)をレジスタmeにストアしてポインタ更新すると共に、レジスタmetに格納されるポインタにより現在指定されている演奏データMidiEvent中のポインタnext(met.next)をレジスタmetにストアしてポインタ更新する。   As will be described later, in the fingering sequence selection process, an evaluation value representing “difficulty to play” is generated for every possible fingering (fingering sequence) based on the performance data MidiEvent specified by the pointer of the register met. Then, the fingering having the smallest evaluation value, that is, the finger usage that is easiest to play is selected from among them. When the fingering sequence selection process is completed, the process proceeds to step SB10, where the pointer next (me.next) in the performance data MidiEvent currently specified by the pointer stored in the register me is stored in the register me and the pointer is stored. At the same time, the pointer next (met.next) in the performance data MidiEvent currently specified by the pointer stored in the register met is stored in the register met to update the pointer.

次いで、ステップSB11では、上記ステップSB10にて更新されたレジスタmetに格納されるポインタ(met.next)で指定される演奏データMidiEvent中の和音判別値cIsHarm(met.cIsHarm)が「0」、つまり和音でないかどうかを判断する。和音であれば、判断結果は「NO」になり、ステップSB12に進み、ポインタ(met.next)で指定される演奏データMidiEvent中の和音終端ポインタphTail(met.phTail)をレジスタmetにストアした後、ステップSB2に処理を戻す。一方、和音でなければ、上記ステップSB11の判断結果が「YES」になり、ステップSB2に処理を戻す。   Next, in step SB11, the chord discrimination value cIsHarm (met.cIsHarm) in the performance data MidiEvent specified by the pointer (met.next) stored in the register met updated in step SB10 is “0”, that is, Determine if it is not a chord. If it is a chord, the determination result is “NO”, and after proceeding to Step SB12, the chord end pointer phTail (met.phTail) in the performance data MidiEvent designated by the pointer (met.next) is stored in the register met. Then, the process returns to step SB2. On the other hand, if it is not a chord, the determination result in step SB11 is “YES”, and the process returns to step SB2.

以後、レジスタmetのポインタがレジスタmeToに格納される終端ポインタに達する迄、前述したステップSB2以降の処理を繰り返す。そして、レジスタmetのポインタがレジスタmeToに格納される終端ポインタに達すると、ステップSB8の判断結果が「NO」になり、本処理を終える。このように、運指生成スレッドは、メインルーチンから与えられた引数であるレジスタmeFromの内容に基づき各トラック(演奏パート)の運指生成をそれぞれ並列的に行うようになっている。   Thereafter, the processing from step SB2 onward is repeated until the pointer of the register met reaches the end pointer stored in the register meTo. Then, when the pointer of the register met reaches the end pointer stored in the register meTo, the determination result in step SB8 becomes “NO”, and this processing is finished. As described above, the fingering generation thread performs fingering generation for each track (performance part) in parallel based on the contents of the register meFrom which is an argument given from the main routine.

(3)運指系列選択処理の動作
次に、図6を参照して運指系列選択処理の動作を説明する。上述した運指生成スレッドのステップSB9(図5参照)を介して本処理が実行されると、CPU1は図6に図示するステップSC1に進む。ステップSC1では、全ての運指系列について評価が完了したか否かを判断する。全ての運指系列について評価し終えていないと、判断結果は「NO」になり、次のステップSC2に進む。
(3) Operation of Fingering Sequence Selection Process Next, the operation of the fingering sequence selection process will be described with reference to FIG. When this process is executed through step SB9 (see FIG. 5) of the fingering generation thread described above, the CPU 1 proceeds to step SC1 shown in FIG. In step SC1, it is determined whether or not the evaluation has been completed for all fingering sequences. If the evaluation has not been completed for all fingering sequences, the determination result is “NO”, and the process proceeds to the next step SC2.

ステップSC2では、運指系列の評価値を生成してレジスタiCostにストアする。運指系列の評価値とは、演奏データMidiEventに対応して運指割当てされる指の座標と弾くべき鍵の座標との関係から得られる「弾き難さ」を表す値である。また、ここで言う運指割当てとは、親指から小指の各指の内、指位置が弾くべき鍵の座標以下であって、しかも押鍵操作されていない指を、弾くべき指として割り当てる処理を指す。次いで、ステップSC3では、レジスタiCostにストアした運指系列の評価値が、レジスタiCost1に格納される最小評価値より小さいか否かを判断する。レジスタiCostの評価値がレジスタiCost1の最小評価値より大きければ、判断結果は「NO」になり、ステップSC5に進む。   In step SC2, the evaluation value of the fingering sequence is generated and stored in the register iCost. The evaluation value of the fingering sequence is a value representing “difficulty in playing” obtained from the relationship between the coordinates of the finger assigned to be fingered corresponding to the performance data MidiEvent and the coordinates of the key to be played. Also, the fingering assignment referred to here is a process of assigning a finger whose finger position is not more than the coordinate of the key to be played and that has not been pressed, among the fingers from the thumb to the little finger. Point to. Next, in step SC3, it is determined whether or not the evaluation value of the fingering sequence stored in the register iCost is smaller than the minimum evaluation value stored in the register iCost1. If the evaluation value of the register iCost is greater than the minimum evaluation value of the register iCost1, the determination result is “NO”, and the flow proceeds to step SC5.

一方、レジスタiCostの評価値がレジスタiCost1の最小評価値より小さいと、上記ステップSC3の判断結果が「YES」になり、ステップSC4に進む。ステップSC4では、レジスタiCostの評価値を、対応する演奏データMidiEvent中の運指評価値iCostとして更新登録すると共に、運指割り当てされた指を表す運指データを、対応する演奏データMidiEvent中の運指データcfigとして登録する。この後、ステップSC5に進み、レジスタiCostの評価値をレジスタiCost1にストアして最小評価値を更新させてから次の運指系列に移行する。   On the other hand, if the evaluation value of the register iCost is smaller than the minimum evaluation value of the register iCost1, the determination result in Step SC3 is “YES”, and the process proceeds to Step SC4. In step SC4, the evaluation value of the register iCost is updated and registered as the fingering evaluation value iCost in the corresponding performance data MidiEvent, and the fingering data representing the finger assigned to the fingering is updated in the corresponding performance data MidiEvent. Register as finger data cfg. Thereafter, the process proceeds to step SC5, the evaluation value of the register iCost is stored in the register iCost1 and the minimum evaluation value is updated, and then the process proceeds to the next fingering sequence.

以後、全ての運指系列について評価し終えまで上述したステップSC1〜SC5を繰り返す。そして、全ての運指系列について評価し終えると、上記ステップSC1の判断結果が「YES」になり、本処理を完了させる。このように、運指系列選択処理では、運指生成スレッドにて指定された演奏データMidiEventに基づき、考えられる全ての指使い(運指系列)毎に「弾き難さ」を表す評価値を生成し、その内から最も小さい評価値の運指、すなわち一番弾き易い指使いを選択し、その指使いを表す運指データcfigおよび運指評価値iCostを、対応する演奏データMidiEventに登録する。   Thereafter, the above-described steps SC1 to SC5 are repeated until all fingering sequences have been evaluated. When all the fingering sequences have been evaluated, the determination result in step SC1 is “YES”, and this process is completed. Thus, in the fingering sequence selection process, an evaluation value representing “difficulty to play” is generated for every possible finger use (fingering sequence) based on the performance data MidiEvent specified in the fingering generation thread. Then, the fingering of the smallest evaluation value, that is, the fingering that is most likely to be played is selected from among them, and the fingering data cfig representing the fingering and the fingering evaluation value iCost are registered in the corresponding performance data MidiEvent.

以上説明したように、第1実施形態では、各トラック(演奏パート)毎に起動した運指生成スレッドにおいて、それぞれ対応するトラックの演奏データMidiEventに基づき考えられる全ての指使い(運指系列)毎に「弾き難さ」を表す評価値を生成し、その内から最も小さい評価値の運指、すなわち一番弾き易い指使いを選択し、その指使いを表す運指データcfigおよび運指評価値iCostを対応する演奏データMidiEventに登録する処理を並列的に行う結果、処理負荷を低減させて処理時間の短縮化を図ることが可能になる。   As described above, in the first embodiment, in the fingering generation thread activated for each track (performance part), every finger use (fingering sequence) that can be considered based on the performance data MidiEvent of the corresponding track. An evaluation value representing “difficulty in playing” is generated, a fingering with the smallest evaluation value is selected, that is, the fingering that is most likely to be played is selected, and fingering data cfig and the fingering evaluation value representing the fingering are selected. As a result of performing the process of registering iCost to the corresponding performance data MidiEvent in parallel, it is possible to reduce the processing load and shorten the processing time.

C.第2実施形態
次に、図7〜図9を参照して第1実施形態と相違する第2実施形態によるメインルーチン(プライマリスレッド)、トラック処理スレッドおよびフレーズ分割処理の各動作について説明する。なお、第2実施形態の構成は、第1実施形態と共通するので、その説明については省略する。
C. Second Embodiment Next, operations of a main routine (primary thread), a track processing thread, and a phrase division process according to a second embodiment different from the first embodiment will be described with reference to FIGS. Note that the configuration of the second embodiment is the same as that of the first embodiment, and a description thereof will be omitted.

(1)メインルーチンの動作
入力部4からCPU1にメイルーチンの実行を指示するイベントが供給されると、CPU1は図4に図示するメインルーチンを実行してステップSD1に進み、データ読み込み・演奏データ生成を行う。すなわち、ステップSD1では、MIDIインタフェース6を介して外部の電子楽器7からSMF形式の曲データを取り込み、取り込んだ楽曲データから図3に図示したデータ形式の演奏データMidiEvent[0]〜[N]を生成してRAM3の演奏データエリアに格納すると共に、これら演奏データMidiEvent[0]〜[N]をそれぞれ個別に演奏パート別に管理するトラックデータTrack[0]〜[N](図2参照)を生成してRAM3のトラックデータエリアに格納する。
(1) Main Routine Operation When an event for instructing the CPU 1 to execute the main routine is supplied from the input unit 4, the CPU 1 executes the main routine shown in FIG. 4 and proceeds to step SD 1 to read data / performance data. Generate. That is, in step SD1, music data in the SMF format is fetched from the external electronic musical instrument 7 via the MIDI interface 6, and the performance data MidiEvent [0] to [N] in the data format shown in FIG. Generate and store in the performance data area of the RAM 3, and generate track data Track [0] to [N] (see FIG. 2) for managing the performance data MidiEvent [0] to [N] individually for each performance part. And stored in the track data area of the RAM 3.

続いて、ステップSD2では、トラックデータTrack[0]〜[N]に基づき全てのトラック(演奏パート)を参照し終えたかどうかを判断する。参照し終えていなければ、判断結果は「NO」になり、ステップSD3に進む。ステップSD3では、運指生成の対象となるトラック(演奏パート)について、後述するトラック処理スレッドを起動させてから上記ステップSD2に処理を戻す。以後、トラックデータTrack[0]〜[N]に基づき全てのトラック(演奏パート)を参照し終えるまで各トラック毎のトラック処理スレッドを起動させる。そして、全トラックについてトラック処理スレッドを起動させると、上記ステップSD2の判断結果が「YES」になり、ステップSD4に進む。   Subsequently, in step SD2, it is determined whether or not all tracks (performance parts) have been referred to based on the track data Tracks [0] to [N]. If the reference has not been completed, the determination result is “NO”, and the flow proceeds to step SD3. In step SD3, a track processing thread to be described later is activated for the track (performance part) that is the target of fingering generation, and the process returns to step SD2. Thereafter, the track processing thread for each track is activated until all the tracks (performance parts) are referred to based on the track data Tracks [0] to [N]. When the track processing thread is activated for all tracks, the determination result in step SD2 is “YES”, and the flow proceeds to step SD4.

ステップSD4では、全てのトラック処理スレッドが完了するまで待機し、全トラック処理スレッド完了に応じて判断結果が「YES」になり、本処理を完了させる。このように、プライマリスレッドであるメインルーチンでは、トラックデータTrack[0]〜[N]に基づき全てのトラック(演奏パート)を参照し終えるまで各トラック毎のトラック処理スレッドを起動させ、これらが全て完了した時点で処理終了するようになっている。   In step SD4, the process waits until all track processing threads are completed, and the determination result becomes “YES” in response to completion of all track processing threads, thereby completing this process. As described above, in the main routine which is the primary thread, the track processing thread for each track is activated until all tracks (performance parts) are referred to based on the track data Tracks [0] to [N]. The process ends when it is completed.

(2)トラック処理スレッドの動作
次に、図8を参照してトラック処理スレッドの動作を説明する。前述のメインルーチン(図7参照)によりトラック処理スレッドが起動されると、CPU1は図8に図示するステップSE1に進み、処理対象とするトラック(演奏パート)の演奏データMidiEventをフレーズ区間に分割するフレーズ分割処理(後述する)を実行する。次いで、ステップSE2では、運指生成の対象となるトラック(演奏パート)の先頭の演奏データMidiEvent[pNote]を指定するポインタpNoteをレジスタmeにストアする。
(2) Operation of Track Processing Thread Next, the operation of the track processing thread will be described with reference to FIG. When the track processing thread is activated by the aforementioned main routine (see FIG. 7), the CPU 1 proceeds to step SE1 shown in FIG. 8, and divides the performance data MidiEvent of the track (performance part) to be processed into phrase sections. A phrase division process (described later) is executed. Next, in step SE2, a pointer pNote for designating the top performance data MidiEvent [pNote] of the track (performance part) that is the target of fingering generation is stored in the register me.

ステップSE3では、レジスタmeの値が「0」でないか否か、すなわち曲終端に達していないかどうかを判断する。曲終端に達していなければ、判断結果は「YES」になり、ステップSE4に進む。ステップSE4では、レジスタmeのポインタで指定される演奏データMidiEvent中のフレーズ番号iPhrase(me.iPhrase)をレジスタphIDにストアする。以後、レジスタphIDの内容をフレーズ番号phIDと称す。続いて、ステップSE5では、レジスタmeのポインタで指定される演奏データMidiEvent中のポインタnextをレジスタmetにストアする。   In step SE3, it is determined whether or not the value of the register me is not “0”, that is, whether or not the song end has been reached. If the end of the song has not been reached, the determination result is “YES”, and the flow proceeds to step SE4. In step SE4, the phrase number iPhrase (me.iPhrase) in the performance data MidiEvent designated by the pointer of the register me is stored in the register phID. Hereinafter, the content of the register phID is referred to as a phrase number phID. Subsequently, in step SE5, the pointer next in the performance data MidiEvent designated by the pointer of the register me is stored in the register met.

そして、ステップSE6〜SE7では、レジスタmetのポインタを歩進させながら、その歩進されるポインタで指定される演奏データMidiEvent中のフレーズ番号iPhrase(met.iPhrase)が、現在のフレーズ番号phIDに一致するか否かを判断する。換言すれば、フレーズの終わりとなる演奏データMidiEventを探し出す。   Then, in steps SE6 to SE7, while incrementing the pointer of the register met, the phrase number iPhrase (met.iPhrase) in the performance data MidiEvent specified by the incremented pointer matches the current phrase number phID. Judge whether to do. In other words, the performance data MidiEvent that ends the phrase is searched for.

フレーズ番号iPhrase(met.iPhrase)が現在のフレーズ番号phIDに一致している間は、ステップSE6の判断結果が「YES」になり、ステップSE6〜SE7を繰り返す。そして、フレーズ番号iPhrase(met.iPhrase)が現在のフレーズ番号phIDに一致せず、フレーズの終わりとなる演奏データMidiEventが検出されると、ステップSE6の判断結果が「NO」になり、ステップSE8に進む。   While the phrase number iPhrase (met.iPhrase) matches the current phrase number phID, the determination result at Step SE6 is “YES”, and Steps SE6 to SE7 are repeated. When the phrase number iPhrase (met.iPhrase) does not match the current phrase number phID and the performance data MidiEvent at the end of the phrase is detected, the determination result of step SE6 becomes “NO”, and the process goes to step SE8. move on.

ステップSE8では、レジスタmeのポインタ(フレーズの先頭を指定するポインタ)をレジスタmeFromにストアすると共に、レジスタmetのポインタ(フレーズの終わりとなる演奏データMidiEventを指定するポインタ)をレジスタmeToにストアする。そして、ステップSE9では、このレジスタme、meToの各ポインタを引数としてスレッド起動を指示する。次いで、ステップSE10では、レジスタmetのポインタで指定される演奏データMidiEvent中のポインタnextをレジスタmeにストアした後、上述したステップSE3に処理を戻す。   In step SE8, the pointer of the register me (pointer that specifies the beginning of the phrase) is stored in the register meFrom, and the pointer of the register met (pointer that specifies the performance data MidiEvent that ends the phrase) is stored in the register meTo. In step SE9, thread activation is instructed using the pointers of the registers me and meTo as arguments. Next, in step SE10, after the pointer next in the performance data MidiEvent designated by the pointer of the register met is stored in the register me, the process returns to the above-described step SE3.

上記ステップSE9においてスレッド起動が指示されると、ステップSE11を介して運指生成スレッド(図5参照)を実行させ、レジスタme、meToの各ポインタで指定されるフレーズを構成する演奏データMidiEventに基づき運指生成を行う。そして、ステップSE12では、上記ステップSE11の運指生成スレッドにて得られたフレーズの運指データを、同じフレーズ番号phIDを有するフレーズを構成する演奏データMidiEvent中の運指データcfigとしてコピーする。   When thread activation is instructed in step SE9, the fingering generation thread (see FIG. 5) is executed via step SE11, and based on the performance data MidiEvent constituting the phrase specified by the pointers of the registers me and meTo. Perform fingering generation. In step SE12, the fingering data of the phrase obtained in the fingering generation thread in step SE11 is copied as fingering data cfig in the performance data MidiEvent constituting the phrase having the same phrase number phID.

一方、上述したステップSE3〜SE10の、フレーズ番号phIDのフレーズ先頭および後端を探し出す過程で、レジスタmeの値が「0」となり、曲終端に達すると、上記ステップSE3の判断結果が「NO」になり、ステップSE13に進み、フレーズ単位で起動された全ての運指生成スレッド(ステップSE11)が終了するまで待機し、全スレッド終了に応じて判断結果が「YES」になり、本処理を終える。   On the other hand, in the process of searching for the beginning and the end of the phrase number phID in steps SE3 to SE10 described above, when the value of the register me becomes “0” and the end of the song is reached, the determination result in step SE3 is “NO”. The process proceeds to step SE13 and waits until all fingering generation threads (step SE11) activated in units of phrases are completed, and the determination result is “YES” in accordance with the termination of all threads, and the process ends. .

以上のように、トラック処理スレッドでは、処理対象とするトラック(演奏パート)の演奏データMidiEventをフレーズ区間に分割し、分割されたフレーズ毎に運指生成スレッドを起動させてフレーズを構成する演奏データMidiEventに基づき運指生成を行い、これにて得られたフレーズの運指データを、同じフレーズ番号phIDを有するフレーズを構成する演奏データMidiEvent中の運指データcfigとしてコピーするようになっている。   As described above, in the track processing thread, the performance data MidiEvent of the track (performance part) to be processed is divided into phrase sections, and the fingering generation thread is activated for each divided phrase to constitute the phrase. Fingering generation is performed based on MidiEvent, and the fingering data of the obtained phrase is copied as fingering data cfig in performance data MidiEvent that constitutes a phrase having the same phrase number phID.

(3)フレーズ分割処理の動作
次に、図9を参照してフレーズ分割処理の動作を説明する。トラック処理スレッドのステップSE1(図8参照)を介して本処理が実行されると、CPU1は図9に図示するステップSF1に進み、フレーズ番号を一時記憶するレジスタphIDをゼロリセットする。続いて、ステップSF2では、処理対象とするトラック(演奏パート)の先頭の演奏データMidiEvent[pNote]を指定するポインタpNoteをレジスタmeRefにストアする。
(3) Operation of Phrase Division Processing Next, the operation of the phrase division processing will be described with reference to FIG. When this process is executed via step SE1 (see FIG. 8) of the track processing thread, the CPU 1 proceeds to step SF1 shown in FIG. 9 and resets the register phID temporarily storing the phrase number to zero. Subsequently, in step SF2, a pointer pNote specifying the first performance data MidiEvent [pNote] of the track (performance part) to be processed is stored in the register meRef.

次いで、ステップSF3では、先頭の演奏データMidiEvent[pNote]から規定個数先の演奏データMidiEventを指定するポインタをレジスタmetRefにストアする。そして、ステップSF4に進み、レジスタmetRefの値が「0」でないか否か、すなわち曲終端に達していないかどうかを判断する。曲終端に達していなければ、判断結果は「YES」になり、ステップSF5に進み、一致フラグHITを「0」にセットする。次に、ステップSF6では、レジスタmetRefのポインタで指定される演奏データMidiEvent以降であって、フレーズ検出されていない演奏データMidiEventを指定するポインタをレジスタmeSrcにストアする。   Next, in step SF3, a pointer for designating a predetermined number of pieces of performance data MidiEvent from the first piece of performance data MidiEvent [pNote] is stored in the register metRef. Then, the process proceeds to step SF4, and it is determined whether or not the value of the register metRef is not “0”, that is, whether or not the song end has been reached. If the end of the song has not been reached, the determination result is “YES”, the process proceeds to step SF5, and the coincidence flag HIT is set to “0”. Next, in step SF6, a pointer that designates the performance data MidiEvent after the performance data MidiEvent designated by the pointer of the register metRef and for which the phrase has not been detected is stored in the register meSrc.

ステップSF7では、レジスタmeSrcのポインタで指定される演奏データMidiEventから規定個数先の演奏データMidiEventを指定するポインタをレジスタmetRefにストアする。そして、ステップSF8では、レジスタmetSrcの値が「0」でないか否か、すなわち曲終端に達していないかどうかを判断する。曲終端に達していなければ、判断結果は「YES」になり、ステップSF11に進む。   In step SF7, a pointer designating a predetermined number of pieces of performance data MidiEvent from the performance data MidiEvent designated by the pointer of the register meSrc is stored in the register metRef. In step SF8, it is determined whether or not the value of the register metSrc is not “0”, that is, whether or not the end of the song has been reached. If the end of the song has not been reached, the determination result is “YES”, and the flow proceeds to step SF11.

ステップSF11〜SF12では、レジスタmeRefのポインタで指定される演奏データMidiEventからレジスタmetRefのポインタで指定される演奏データMidiEventまでの各音からなる参照フレーズと、レジスタmeSrcのポインタで指定される演奏データMidiEventからレジスタmetSrcのポインタで指定される演奏データMidiEventまでの各音からなる比較フレーズとが一致しているかどうかを判断する。なお、一致・不一致の判断は、参照フレーズおよび比較フレーズをそれぞれ構成する各音の「音高」、「発音タイミング」および「音長」が一致するか否かで判定する。   In steps SF11 to SF12, a reference phrase consisting of each sound from the performance data MidiEvent specified by the pointer of the register meRef to the performance data MidiEvent specified by the pointer of the register metRef and the performance data MidiEvent specified by the pointer of the register meSrc. To the performance data MidiEvent designated by the pointer of the register metSrc, it is determined whether or not the comparison phrase consisting of each sound matches. Note that the match / mismatch is determined based on whether or not the “pitch”, “sounding timing”, and “sound length” of the sounds constituting the reference phrase and the comparison phrase match.

参照フレーズと比較フレーズが一致しなければ、上記ステップSF12の判断結果は「NO」になり、ステップSF13〜SF14において比較フレーズを更新する。すなわち、ステップSF13では、レジスタmetSrcのポインタで指定される演奏データMidiEvent以降であって、フレーズ検出されていない演奏データMidiEventを指定するポインタをレジスタmeSrcにストアする。続いて、ステップSF14では、レジスタmeSrcのポインタで指定される演奏データMidiEventから規定個数先の演奏データMidiEventを指定するポインタをレジスタmetRefにストアする。この後、上述したステップSF8に処理を戻す。   If the reference phrase and the comparison phrase do not match, the determination result in step SF12 is “NO”, and the comparison phrase is updated in steps SF13 to SF14. That is, in step SF13, a pointer that specifies the performance data MidiEvent that is subsequent to the performance data MidiEvent specified by the pointer of the register metSrc and for which the phrase has not been detected is stored in the register meSrc. Subsequently, in step SF14, a pointer designating a predetermined number of pieces of performance data MidiEvent from the performance data MidiEvent designated by the pointer of the register meSrc is stored in the register metRef. Thereafter, the process returns to step SF8 described above.

こうして、ステップSF8〜SF14では、参照フレーズに一致する比較フレーズが出現するまでレジスタmeSrcおよびレジスタmetSrcの各ポインタを更新させる。そして、曲終端に達する以前に、参照フレーズに一致する比較フレーズが見つかると、ステップSF12の判断結果が「YES」になり、ステップSF15に進む。ステップSF15では、一致フラグHITが「1」でないか否か、つまり既に参照フレーズに一致する比較フレーズが見つかっているかどうかを判断する。初めて参照フレーズに一致する比較フレーズが見つかった場合には、判断結果が「YES」になり、ステップSF16に進み、フレーズ番号phIDをインクリメントして歩進させた後、ステップSF17にて一致フラグHITを「1」にセットする。   Thus, in steps SF8 to SF14, the pointers of the register meSrc and the register metSrc are updated until a comparison phrase that matches the reference phrase appears. If a comparison phrase that matches the reference phrase is found before reaching the end of the song, the determination result in step SF12 is “YES”, and the flow proceeds to step SF15. In step SF15, it is determined whether or not the coincidence flag HIT is not “1”, that is, whether or not a comparison phrase that matches the reference phrase has already been found. When a comparison phrase that matches the reference phrase is found for the first time, the determination result is “YES”, the process proceeds to step SF16, the phrase number phID is incremented, and the match flag HIT is set in step SF17. Set to “1”.

一方、既に参照フレーズに一致する比較フレーズが見つかっている場合であれば、上記ステップSF15の判断結果は「NO」となり、ステップSF17に進み、一致フラグHITを「1」にセットする。次いで、ステップSF18では、レジスタmeSrcのポインタで指定される演奏データMidiEvent中のフレーズ番号iPhrase(meSrc.iPhrase)にフレーズ番号phIDを登録した後、上述のステップSF13に処理を進める。したがって、参照フレーズに一致する比較フレーズが続くような場合には、それらが同一のグループとして同一のフレーズ番号phIDが、対応する演奏データMidiEvent中のフレーズ番号iPhrase(meSrc.iPhrase)に登録される。   On the other hand, if a comparison phrase that matches the reference phrase has already been found, the determination result in step SF15 is “NO”, the process proceeds to step SF17, and the match flag HIT is set to “1”. Next, in step SF18, the phrase number phID is registered in the phrase number iPhrase (meSrc.iPhrase) in the performance data MidiEvent designated by the pointer of the register meSrc, and then the process proceeds to the above-described step SF13. Therefore, when a comparison phrase that matches the reference phrase continues, the same phrase number phID as the same group is registered in the phrase number iPhrase (meSrc.iPhrase) in the corresponding performance data MidiEvent.

さて、参照フレーズに一致する比較フレーズが出現するまでレジスタmeSrcおよびレジスタmetSrcの各ポインタを更新させる過程で、レジスタmetSrcのポインタが曲終端に達すると、上述したステップSF8の判断結果が「NO」になり、ステップSF9に進む。ステップSF9〜SF10では、新たな参照フレーズの位置を設定する。すなわち、ステップSF9では、フレーズ検出されていない最初の演奏データMidiEventを指定するポインタを、新たな参照フレーズの先頭としてレジスタmeRefにストアし、続くステップSF10では、この新たな参照フレーズの先頭から規定個数先の演奏データMidiEventを指定するポインタをレジスタmetRefにストアする。   In the process of updating the pointers of the registers meSrc and metSrc until the comparison phrase that matches the reference phrase appears, if the pointer of the register metSrc reaches the end of the song, the determination result in the above-described step SF8 becomes “NO”. Thus, the process proceeds to step SF9. In steps SF9 to SF10, the position of a new reference phrase is set. That is, in step SF9, a pointer designating the first performance data MidiEvent for which no phrase has been detected is stored in the register meRef as the head of a new reference phrase, and in a subsequent step SF10, a specified number of data is recorded from the head of the new reference phrase. A pointer designating the previous performance data MidiEvent is stored in the register metRef.

この後、前述したステップSF4に進み、レジスタmetRefの値が「0」でないか否か、すなわち曲終端に達していないかどうかを判断する。そして、曲終端に達していなければ、判断結果は「YES」になり、前述したステップSF5以降を実行して、新たに設定した参照フレーズに一致する比較フレーズを探し出す。そして、新たな参照フレーズを設定する際に、参照フレーズの後端が曲終端に達した場合に、ステップSF4の判断結果が「NO」となり、本処理を終える。   Thereafter, the process proceeds to step SF4 described above, and it is determined whether or not the value of the register metRef is not "0", that is, whether or not the end of the music has been reached. If the end of the song has not been reached, the determination result is “YES”, and step SF5 and subsequent steps are executed to search for a comparison phrase that matches the newly set reference phrase. Then, when setting a new reference phrase, if the rear end of the reference phrase has reached the end of the song, the determination result in step SF4 is “NO”, and the present process ends.

このように、フレーズ分割処理では、処理対象とするトラック(演奏パート)の演奏データMidiEventを所定音数分に区切った参照フレーズを設定し、この参照フレーズに一致する比較フレーズを探し出す。そして、一致する比較フレーズが無ければ、参照フレーズの位置をずらしながら一致する比較フレーズを探し出し、一致した比較フレーズがあれば、その比較フレーズの先頭の演奏データMidiEvent中のフレーズ番号iPhrase(meSrc.iPhrase)にフレーズ番号phIDを登録する。これにより、処理対象とするトラック(演奏パート)の演奏データMidiEventをフレーズ区間に分割できる。   As described above, in the phrase division process, a reference phrase obtained by dividing the performance data MidiEvent of the track (performance part) to be processed into a predetermined number of sounds is set, and a comparison phrase matching this reference phrase is searched for. If there is no matching comparison phrase, the matching phrase is searched while shifting the position of the reference phrase, and if there is a matching comparison phrase, the phrase number iPhrase (meSrc.iPhrase) in the first performance data MidiEvent of the comparison phrase is found. ) To register the phrase number phID. Thereby, the performance data MidiEvent of the track (performance part) to be processed can be divided into phrase sections.

以上説明したように、第2実施形態では、処理対象とするトラック(演奏パート)の演奏データMidiEventをフレーズ区間に分割し、分割されたフレーズ毎に運指生成スレッドを起動させてフレーズを構成する演奏データMidiEventに基づき運指生成を行い、これにて得られたフレーズの運指データを、同じフレーズ番号phIDを有するフレーズを構成する演奏データMidiEvent中の運指データcfigとしてコピーする。こうした処理を各トラックについて並列的に実行する結果、処理負荷を低減させて処理時間の短縮化を図ることが可能になる。   As described above, in the second embodiment, the performance data MidiEvent of the track (performance part) to be processed is divided into phrase sections, and a fingering generation thread is activated for each divided phrase to form a phrase. Fingering generation is performed based on the performance data MidiEvent, and the fingering data of the obtained phrase is copied as fingering data cfig in the performance data MidiEvent constituting the phrase having the same phrase number phID. As a result of executing such processing in parallel for each track, it is possible to reduce the processing load and shorten the processing time.

C.第3実施形態
次に、図10を参照して第3実施形態によるトラック処理スレッドの動作を説明する。前述した第2実施形態と同様に、メインルーチン(図7参照)によりトラック処理スレッドが起動されると、CPU1は図10に図示するステップSG1に進み、処理対象とするトラック(演奏パート)の演奏データMidiEventをフレーズ区間に分割するフレーズ分割処理を実行する。次いで、ステップSG2では、カウンタiP、iNをゼロリセットする。続いて、ステップSG3では、運指生成の対象となるトラック(演奏パート)の先頭の演奏データMidiEvent[pNote]を指定するポインタpNoteをレジスタmeにストアする。
C. Third Embodiment Next, the operation of the track processing thread according to the third embodiment will be described with reference to FIG. As in the second embodiment described above, when the track processing thread is activated by the main routine (see FIG. 7), the CPU 1 proceeds to step SG1 shown in FIG. 10 and performs the performance of the track (performance part) to be processed. A phrase dividing process for dividing the data MidiEvent into phrase sections is executed. Next, in step SG2, the counters iP and iN are reset to zero. Subsequently, in step SG3, a pointer pNote for designating the top performance data MidiEvent [pNote] of the track (performance part) that is the target of fingering generation is stored in the register me.

ステップSG4では、レジスタmeの値が「0」でないか否か、すなわち曲終端に達していないかどうかを判断する。曲終端に達していなければ、判断結果は「YES」になり、ステップSG5に進む。ステップSG5では、レジスタmeのポインタで指定される演奏データMidiEvent中のフレーズ番号iPhrase(me.iPhrase)をレジスタphIDにストアする。以後、レジスタphIDの内容をフレーズ番号phIDと称す。続いて、ステップSG6では、レジスタmeのポインタで指定される演奏データMidiEvent中のポインタnextをレジスタmetにストアする。   In step SG4, it is determined whether or not the value of the register me is not “0”, that is, whether or not the song end has been reached. If the end of the song has not been reached, the determination result is “YES”, and the flow proceeds to step SG5. In step SG5, the phrase number iPhrase (me.iPhrase) in the performance data MidiEvent designated by the pointer of the register me is stored in the register phID. Hereinafter, the content of the register phID is referred to as a phrase number phID. Subsequently, in step SG6, the pointer next in the performance data MidiEvent designated by the pointer of the register me is stored in the register met.

そして、ステップSG7〜SG9は、レジスタmetのポインタを歩進させながら、その歩進されるデータ数をカウンタiNにて計数する一方、歩進されるポインタで指定される演奏データMidiEvent中のフレーズ番号iPhrase(met.iPhrase)が、現在のフレーズ番号phIDに一致するか否かを判断する。換言すれば、フレーズを構成する演奏データ数(フレーズ構成音数)をカウンタiNにて計数しつつ、フレーズの終わりの演奏データMidiEventを探し出す。   In steps SG7 to SG9, while incrementing the pointer of the register met, the counter iN counts the number of data incremented, while the phrase number in the performance data MidiEvent designated by the incremented pointer It is determined whether iPhrase (met.iPhrase) matches the current phrase number phID. In other words, the performance data MidiEvent at the end of the phrase is found out while counting the number of performance data (phrase constituting sounds) constituting the phrase by the counter iN.

フレーズ番号iPhrase(met.iPhrase)が現在のフレーズ番号phIDに一致している間は、ステップSE6の判断結果が「YES」になり、ステップSG7〜SG9を繰り返す。そして、フレーズ番号iPhrase(met.iPhrase)が現在のフレーズ番号phIDに一致せず、フレーズの終わりとなる演奏データMidiEventが検出されると、ステップSG7の判断結果が「NO」になり、ステップSG10に進む。   While the phrase number iPhrase (met.iPhrase) matches the current phrase number phID, the determination result in Step SE6 is “YES”, and Steps SG7 to SG9 are repeated. If the phrase data iPhrase (met.iPhrase) does not match the current phrase number phID and the performance data MidiEvent at the end of the phrase is detected, the determination result in step SG7 is “NO”, and the process proceeds to step SG10. move on.

ステップSG10では、フレーズ数を計数するカウンタiPの値で指定されるレジスタmeF[iP]に、レジスタmeのポインタ(フレーズの先頭を指定するポインタ)をストアすると共に、カウンタiPの値で指定されるレジスタmeT[iP]に、レジスタmetのポインタ(フレーズの終わりとなる演奏データMidiEventを指定するポインタ)をストアする。さらに、ステップSG10では、カウンタiPの値で指定されるレジスタiN[iP]に、カウンタiNにて計数したフレーズ構成音数をストアする。次いで、ステップSG11では、カウンタiPの値をインクリメントして歩進させると共に、カウンタiNをゼロリセットする。そして、ステップSG12に進み、レジスタmetのポインタで指定される演奏データMidiEvent中のポインタnextをレジスタmeにストアした後、上述したステップSG4に処理を戻す。   In step SG10, the pointer of the register me (pointer for designating the beginning of the phrase) is stored in the register meF [iP] designated by the value of the counter iP for counting the number of phrases, and designated by the value of the counter iP. In the register meT [iP], the pointer of the register met (a pointer that specifies the performance data MidiEvent that is the end of the phrase) is stored. Furthermore, in step SG10, the number of phrase constituent sounds counted by the counter iN is stored in a register iN [iP] designated by the value of the counter iP. Next, at step SG11, the value of the counter iP is incremented and stepped, and the counter iN is reset to zero. In step SG12, the pointer next in the performance data MidiEvent specified by the pointer of the register met is stored in the register me, and then the process returns to the above-described step SG4.

以後、レジスタmeのポインタが曲終端に達するまで上述したステップSG4〜SG12を繰り返す。これにより、前述のステップSG1において分割された各フレーズの先頭を指定するポインタがレジスタmeF[0]〜[iP]に、各フレーズの後端を指定するポインタがレジスタmeT[0]〜[iP]に、各フレーズ毎のフレーズ構成音数がレジスタiN[0]〜[iP]にそれぞれストアされる。そして、レジスタmeのポインタが曲終端に達すると、上述したステップSG4の判断結果が「NO」になり、ステップSG13に進む。   Thereafter, the above steps SG4 to SG12 are repeated until the pointer of the register me reaches the end of the music piece. As a result, a pointer that specifies the head of each phrase divided in step SG1 is stored in the registers meF [0] to [iP], and a pointer that specifies the rear end of each phrase is stored in the registers meT [0] to [iP]. In addition, the number of phrases constituting each phrase is stored in registers iN [0] to [iP]. When the pointer of the register me reaches the end of the music piece, the determination result in step SG4 is “NO”, and the process proceeds to step SG13.

ステップSG13では、レジスタiN[0]〜[iP]にそれぞれストアされた各フレーズ毎のフレーズ構成音数に基づきフレーズ当りの平均構成音数を算出し、算出した平均構成音数をレジスタiNAveにストアする。次いで、ステップSG14では、ポインタiをゼロリセットし、続くステップSG15では、ポインタiがカウンタiPの値(以下、フレーズ数iPと称す)より小さいか否かを判断する。ポインタiがフレーズ数iPより小さければ、判断結果は「YES」になり、ステップSG16に進む。   In step SG13, the average constituent sound number per phrase is calculated based on the phrase constituent sound number of each phrase stored in each of the registers iN [0] to [iP], and the calculated average constituent sound number is stored in the register iNave. To do. Next, in step SG14, the pointer i is reset to zero, and in the subsequent step SG15, it is determined whether or not the pointer i is smaller than the value of the counter iP (hereinafter referred to as the phrase number iP). If the pointer i is smaller than the number of phrases iP, the determination result is “YES”, and the flow proceeds to step SG16.

ステップSG16では、ポインタiで指定されるレジスタiN[i]、つまりポインタiで指定されるフレーズのフレーズ構成音数が、レジスタiNAveにストアされる平均構成音数より大きいか否かを判断する。ポインタiで指定されるフレーズのフレーズ構成音数iN[i]が平均構成音数iNAveより大きい場合には、判断結果が「YES」になり、ステップSG17に進む。ステップSG17では、平均構成音数iNAveずつに分割した演奏データMidiEventについて運指生成するスレッドを起動させる。そして、ステップSG18に進み、ポインタiをインクリメントして歩進させた後、上述のステップSG15に処理を戻す。   In step SG16, it is determined whether or not the register iN [i] designated by the pointer i, that is, the phrase constituting sound number of the phrase designated by the pointer i is larger than the average constituting sound number stored in the register iNave. When the phrase constituent sound number iN [i] of the phrase designated by the pointer i is larger than the average constituent sound number iNave, the determination result is “YES”, and the process proceeds to Step SG17. In step SG17, a thread for generating fingering is activated for the performance data MidiEvent divided by the average component number iNave. Then, the process proceeds to step SG18, the pointer i is incremented and stepped, and then the process returns to step SG15 described above.

一方、ポインタiで指定されるフレーズのフレーズ構成音数iN[i]が平均構成音数iNAveより小さい場合には、上記ステップSG16の判断結果が「NO」となり、ステップSG19に進み、ポインタiで指定されるフレーズを構成する全ての演奏データMidiEventについて運指生成するスレッドを起動させた後、ステップSG18にてポインタiを歩進させてから上述のステップSG15に処理を戻す。   On the other hand, when the phrase constituent sound number iN [i] of the phrase designated by the pointer i is smaller than the average constituent sound number iNave, the determination result in step SG16 is “NO”, and the process proceeds to step SG19. After starting a fingering generation thread for all performance data MidiEvent constituting the specified phrase, the pointer i is incremented in step SG18, and then the process returns to step SG15.

こうして、フレーズ構成音数iN[i]が平均構成音数iNAveを超えるか否かに応じて、平均構成音数iNAveずつに分割した演奏データMidiEventについて運指生成するスレッドあるいはフレーズを構成する全ての演奏データMidiEventについて運指生成するスレッドのいずれかを起動させ終え、ポインタiがフレーズ数iPより大きくなると、上記ステップSG15の判断結果が「NO」になり、ステップSG20に進む。そして、ステップSG20では、起動された全ての運指生成スレッドが終了するまで待機し、全スレッド終了に応じて判断結果が「YES」になり、本処理を終える。   In this way, depending on whether or not the phrase component sound number iN [i] exceeds the average component sound number iNave, all the threads or phrases constituting the finger or generation of the performance data MidiEvent divided by the average component sound number iNave When one of the threads that generate fingering for the performance data MidiEvent is activated and the pointer i becomes larger than the number of phrases iP, the determination result in step SG15 is “NO”, and the process proceeds to step SG20. In step SG20, the process waits until all the activated fingering generation threads are terminated, and the determination result is “YES” in accordance with the termination of all threads, and the process is terminated.

以上のように、第3実施形態では、処理対象とするトラック(演奏パート)の演奏データMidiEventをフレーズ区間に分割し、分割された全てのフレーズを参照してフレーズ当りの平均構成音数iNAveを算出する。そして、分割された各フレーズ毎に平均構成音数iNAveを超えているか否かを判断し、平均構成音数iNAveを超えるフレーズであれば、平均構成音数iNAveずつに分割した演奏データMidiEventについて運指生成するスレッドを起動し、一方、平均構成音数iNAveを超えないフレーズならば、フレーズを構成する全ての演奏データMidiEventについて運指生成するスレッドを起動させるようにしたので、負荷分散により処理負荷を低減させて処理時間の短縮化を図ることが可能になる。   As described above, in the third embodiment, the performance data MidiEvent of the track (performance part) to be processed is divided into phrase sections, and the average number of constituent sounds iNave per phrase is determined by referring to all the divided phrases. calculate. Then, for each divided phrase, it is determined whether or not the average constituent sound iNAve is exceeded. If the phrase exceeds the average constituent sound iNAve, the performance data MidiEvent divided by the average constituent sound iNAve is operated. If a phrase that does not exceed the average component number iNave is activated, a thread that generates fingering is activated for all performance data MidiEvent that constitutes the phrase. It is possible to shorten the processing time by reducing the above.

なお、本実施形態では、分割された全てのフレーズを参照してフレーズ当りの平均構成音数iNAveを算出し、算出した平均構成音数iNAveを超える場合に、平均構成音数iNAveずつに分割した演奏データMidiEventについて運指生成するスレッドを起動し、平均構成音数iNAveを超えない場合にフレーズを構成する全ての演奏データMidiEventについて運指生成するスレッドを起動させるようにしたが、これに限らず、所定音数(演奏データ数)を超えるフレーズの場合に所定音数ずつに分割した演奏データMidiEventについて運指生成するスレッドを起動し、所定音数を超えないフレーズについはフレーズを構成する全ての演奏データMidiEventについて運指生成するスレッドを起動させる態様としても構わない。このようにすれば、平均構成音数iNAveを算出する処理が不要となり、より処理負荷低減を図ることができる。   In the present embodiment, the average constituent sound number iNAve per phrase is calculated with reference to all the divided phrases, and when the calculated average constituent sound number iNAve is exceeded, the average constituent sound number iNave is divided into the average constituent sound numbers iNave. The thread for generating fingering for the performance data MidiEvent is activated, and the thread for generating fingering for all the performance data MidiEvent composing the phrase is activated when the average component number iNave is not exceeded. However, the present invention is not limited to this. In the case of a phrase exceeding the predetermined number of sounds (number of performance data), a thread for generating fingering for the performance data MidiEvent divided into the predetermined number of sounds is activated, and for phrases that do not exceed the predetermined number of sounds, all of the phrases constituting the phrase Activating a thread to generate fingering for performance data MidiEvent It may be as that aspect. In this way, the process of calculating the average constituent sound number iNave becomes unnecessary, and the processing load can be further reduced.

本発明による第1実施形態の構成を示すブロック図である。It is a block diagram which shows the structure of 1st Embodiment by this invention. トラックデータTrackの構成を示す図である。It is a figure which shows the structure of track data Track. 演奏データMidiEventの構成を示す図である。It is a figure which shows the structure of performance data MidiEvent. 第1実施形態によるメインルーチンの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the main routine by 1st Embodiment. 第1実施形態による運指生成スレッドの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the fingering production | generation thread | sled by 1st Embodiment. 第1実施形態による運指系列選択処理の動作を示すフローチャートである。It is a flowchart which shows the operation | movement of the fingering series selection process by 1st Embodiment. 第2実施形態によるメインルーチンの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the main routine by 2nd Embodiment. 第2実施形態によるトラック処理スレッドの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the track processing thread | sled by 2nd Embodiment. 第2実施形態によるフレーズ分割処理の動作を示すフローチャートである。It is a flowchart which shows the operation | movement of the phrase division | segmentation process by 2nd Embodiment. 第3実施形態によるトラック処理スレッドの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the track processing thread | sled by 3rd Embodiment.

符号の説明Explanation of symbols

1 CPU
2 ROM
3 RAM
4 入力部
5 表示部
6 MIDIインタフェース
7 電子楽器
1 CPU
2 ROM
3 RAM
4 Input section 5 Display section 6 MIDI interface 7 Electronic musical instrument

Claims (5)

曲を構成する各音を表すと共に、各音の演奏パートを表す演奏データを記憶する記憶手段と、
前記記憶手段に記憶された演奏データをフレーズ区間に分割する動作を各演奏パート毎に並列的に行わせるフレーズ分割手段と、
前記フレーズ分割手段により分割されたフレーズ区間の運指を生成する動作を各フレーズ区間毎に並列的に行わせる運指生成手段と
を具備することを特徴とする運指情報生成装置。
Storage means for storing performance data representing the performance parts of each sound, as well as representing each sound constituting the song;
Phrase dividing means for performing the operation of dividing the performance data stored in the storage means into phrase sections in parallel for each performance part;
A fingering information generating device, comprising: fingering generating means for generating the fingering of the phrase section divided by the phrase dividing means in parallel for each phrase section.
前記フレーズ分割手段は、処理対象とする演奏パートの演奏データの先頭から所定音数分に区切った参照フレーズを設定する設定手段と、
前記設定手段により設定された参照フレーズ以降から当該参照フレーズに一致する比較フレーズを検索する第1の検索手段と、
前記第1の検索手段が参照フレーズに一致する比較フレーズを検索できない場合に、参照フレーズの位置をずらしながら当該参照フレーズに一致する比較フレーズを検索する第2の検索手段と、
前記第1および第2の検索手段のいずれかが参照フレーズに一致する比較フレーズを検索した場合に、検索された比較フレーズをフレーズ区間に設定する区間設定手段と
を具備することを特徴とする請求項1記載の運指情報生成装置。
The phrase dividing means is a setting means for setting a reference phrase divided into a predetermined number of notes from the beginning of the performance data of the performance part to be processed;
First search means for searching for a comparison phrase that matches the reference phrase after the reference phrase set by the setting means;
A second search means for searching for a comparison phrase that matches the reference phrase while shifting the position of the reference phrase when the first search means cannot search for a comparison phrase that matches the reference phrase;
And a section setting means for setting the searched comparison phrase as a phrase section when either of the first and second search means searches for a comparison phrase that matches a reference phrase. Item 10. The fingering information generation device according to Item 1.
前記運指生成手段は、フレーズ区間の運指を生成する毎に、その生成した運指を同種のフレーズ区間に割り当てることを特徴とする請求項1記載の運指情報生成装置。 2. The fingering information generation device according to claim 1, wherein the fingering generation unit assigns the generated fingering to the same kind of phrase section every time the fingering of the phrase section is generated. 曲を構成する各音を表すと共に、各音の演奏パートを表す演奏データを記憶する記憶手段と、
前記記憶手段に記憶された演奏データをフレーズ区間に分割し、分割された各フレーズ区間に含まれる音数から区間当りの平均構成音数を算出する動作を各演奏パート毎に並列的に行わせるフレーズ分割手段と、
前記フレーズ分割手段により分割されたフレーズ区間が平均構成音数を超える場合は平均構成音数ずつに分割した演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせ、平均構成音数を超えない場合は該当フレーズを構成する全ての演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせる運指生成手段と
を具備することを特徴とする運指情報生成装置。
Storage means for storing performance data representing the performance parts of each sound, as well as representing each sound constituting the song;
The performance data stored in the storage means is divided into phrase sections, and the operation of calculating the average number of constituent sounds per section from the number of sounds included in each divided phrase section is performed in parallel for each performance part. Phrase dividing means;
When the phrase section divided by the phrase dividing means exceeds the average number of constituent sounds, the fingering generation operation is performed in parallel for each phrase section using the performance data divided by the average number of constituent sounds. And a fingering generating means for performing a fingering generation operation using all performance data constituting the corresponding phrase in parallel for each phrase section when the number of constituent sounds is not exceeded. Finger information generator.
曲を構成する各音を表すと共に、各音毎に対応する演奏パートを表す演奏データをフレーズ区間に分割し、分割された各フレーズ区間に含まれる音数から区間当りの平均構成音数を算出する動作を、各演奏パート毎に並列的に行わせるフレーズ分割処理と、
前記フレーズ分割処理により分割されたフレーズ区間が平均構成音数を超える場合は平均構成音数ずつに分割した演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせ、平均構成音数を超えない場合は該当フレーズを構成する全ての演奏データを用いて運指生成する動作を各フレーズ区間毎に並列的に行わせる運指生成処理と
をコンピュータで実行させることを特徴とする運指情報生成処理プログラム。
Represents each sound that makes up a song and divides the performance data representing the performance part corresponding to each sound into phrase sections, and calculates the average number of constituent sounds per section from the number of sounds included in each divided phrase section Phrase division processing to perform the operation to be performed in parallel for each performance part,
When the phrase section divided by the phrase dividing process exceeds the average number of constituent sounds, the operation of generating fingering using the performance data divided by the average number of constituent sounds is performed in parallel for each phrase section, and the average When the number of constituent sounds is not exceeded, the fingering generation process is performed on the computer in which the fingering generation operation is performed in parallel for each phrase section using all performance data constituting the corresponding phrase. Fingering information generation processing program.
JP2005232915A 2005-08-11 2005-08-11 Fingering information generation apparatus and fingering information generation processing program Expired - Fee Related JP4482889B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005232915A JP4482889B2 (en) 2005-08-11 2005-08-11 Fingering information generation apparatus and fingering information generation processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005232915A JP4482889B2 (en) 2005-08-11 2005-08-11 Fingering information generation apparatus and fingering information generation processing program

Publications (2)

Publication Number Publication Date
JP2007047535A true JP2007047535A (en) 2007-02-22
JP4482889B2 JP4482889B2 (en) 2010-06-16

Family

ID=37850400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005232915A Expired - Fee Related JP4482889B2 (en) 2005-08-11 2005-08-11 Fingering information generation apparatus and fingering information generation processing program

Country Status (1)

Country Link
JP (1) JP4482889B2 (en)

Also Published As

Publication number Publication date
JP4482889B2 (en) 2010-06-16

Similar Documents

Publication Publication Date Title
JP5360510B2 (en) Performance evaluation apparatus and program
JP5440961B2 (en) Performance learning apparatus, performance learning method and program
JP4742288B2 (en) Practice procedure generation device and practice procedure generation processing program
JP4482889B2 (en) Fingering information generation apparatus and fingering information generation processing program
JP2001324919A (en) Performance operation display device, and recording medium
JPH1091061A (en) Playing instruction device and medium recorded with program
JP4221567B2 (en) Performance practice device, performance practice method and performance practice program
JP3567294B2 (en) Sound generator
JPH1069215A (en) Playing training device and medium recording program
JP4337288B2 (en) Performance operation display device and program
JP3388532B2 (en) Fingering indicating device
JP2005049628A (en) Music learning device and music learning program
JP3812729B2 (en) Performance guidance device and performance guidance method
JP6252826B2 (en) Performance practice device, score display device, electronic musical instrument, performance practice method, score display method, and program
JP5145875B2 (en) Performance practice support device and performance practice support processing program
JP5029770B2 (en) Performance support information generation apparatus and performance support information generation program
JP2000259154A (en) Code judging device
JP2009086084A (en) Device for supporting performance practice, and program of processing performance practice support
JP4816930B2 (en) Performance support information generation apparatus and performance support information generation program
JP4543832B2 (en) Fingering information correction device and fingering information correction processing program
JPH1185145A (en) Music forming device
JP5605695B2 (en) Electronic musical instrument registration apparatus and program
JP2002099276A (en) Playing action display device and recording medium
JP3548825B2 (en) Performance operation display device and recording medium
JP2004318019A (en) Apparatus and program for assisting musical performance

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100226

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100311

R150 Certificate of patent or registration of utility model

Ref document number: 4482889

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140402

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees