JP2007140067A - Musical sound generator, and program - Google Patents

Musical sound generator, and program Download PDF

Info

Publication number
JP2007140067A
JP2007140067A JP2005333101A JP2005333101A JP2007140067A JP 2007140067 A JP2007140067 A JP 2007140067A JP 2005333101 A JP2005333101 A JP 2005333101A JP 2005333101 A JP2005333101 A JP 2005333101A JP 2007140067 A JP2007140067 A JP 2007140067A
Authority
JP
Japan
Prior art keywords
data
performance
value
sound
variable
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
JP2005333101A
Other languages
Japanese (ja)
Other versions
JP4770419B2 (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 JP2005333101A priority Critical patent/JP4770419B2/en
Publication of JP2007140067A publication Critical patent/JP2007140067A/en
Application granted granted Critical
Publication of JP4770419B2 publication Critical patent/JP4770419B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a musical sound generator capable of notifying the existence of performance keys that has become an operation period, irrespective of the existence of operation on operation elements. <P>SOLUTION: The musical sound generator 10 is connected to electronic musical instrument 20 having a keyboard 22. Performance information showing keys to sequentially operate as the performance progresses and an operation period in which the keys should be operated are stored in a ROM 13 in key units. A CPU 11 refers to the performance information and specifies the operation period and the keys to be operated in the period to generate musical sound in the period as a whole. The performance operation carried out by a user is recognized from an input MIDI data, and musical sound is generated according to the pressed keys, while the keys are being depressed that can be said as being appropriate within the operation period. In periods other than this, a kind of musical sound that is different from that musical sound is generated. Thus, the operation period and the period, while the keys are being depressed that can be said as being appropriate are made recognizable by the musical sound generated. <P>COPYRIGHT: (C)2007,JPO&INPIT

Description

本発明は、演奏操作子群のなかで操作された演奏操作子に応じた楽音を発音させる楽音発音装置に関する。   The present invention relates to a musical sound generating apparatus that generates a musical sound corresponding to a performance operator operated in a group of performance operators.

鍵盤などの演奏操作子群への操作に応じた楽音を発生させる楽音発生装置は様々な形で実現される。その演奏操作子群を備えた楽音発生装置のなかには、演奏の進行に応じて操作していくべき演奏操作子を視覚的にガイドする演奏ガイド機能を搭載したものがある。その演奏ガイド機能によるガイドは、演奏操作子群のなかで演奏の進行に応じて順次、操作していくべき演奏操作子、及びその演奏操作子を操作しているべき操作期間を演奏操作子単位で示す演奏情報を参照して行われる。その操作期間とは、演奏操作子への操作を開始すべきタイミングからその操作を解除すべきタイミングとなる期間のことである。   Musical tone generators that generate musical sounds according to operations on a group of performance operators such as a keyboard can be realized in various forms. Some musical tone generators having such performance operators are equipped with a performance guide function for visually guiding performance operators to be operated as the performance progresses. The guide by the performance guide function is a unit of performance operators that indicates a performance operator that should be operated sequentially in accordance with the progress of the performance in the group of performance operators and an operation period during which the performance operator should be operated. It is performed with reference to the performance information indicated by. The operation period is a period that is a timing at which the operation should be canceled from a timing at which the operation to the performance operator should be started.

上記演奏ガイド機能を搭載した楽音発生装置としては、例えば特許文献1、2にそれぞれ記載されたものが挙げられる。視覚的なガイドに用いられる表示装置は、演奏操作子毎に発光素子を配置したもの(特許文献1)と、1箇所(エリア)で操作すべき演奏操作子を示すことができるもの(特許文献1、2)と、に大別できる。   Examples of the musical sound generating device equipped with the performance guide function include those described in Patent Documents 1 and 2, for example. Display devices used for visual guides are ones in which a light emitting element is arranged for each performance operator (Patent Document 1) and ones that can indicate a performance operator to be operated at one place (area) (Patent Document 1) 1, 2).

特許文献1、2にそれぞれ記載された従来の楽音発生装置では、表示装置によるガイドに従って演奏操作子群への操作を行うことにより、楽曲を正しく演奏できる。演奏操作子群のなかでガイドされた演奏操作子を正しいタイミングで操作したか否かは、その演奏操作子を実際に操作したタイミングと表示装置によるガイドが行われたタイミングとからユーザー(演奏者)は確認することができる。しかし、その確認を行うためには、演奏の進行に合わせてガイド内容を随時、変化させる表示装置をユーザーは常に注意していなければならない。これはユーザーにとっては重い負担となり、演奏に集中できなくさせる可能性もある。このことから、表示装置を見ることなく、正しく演奏操作子を操作したか否か確認できるようにすることも重要であると言える。   In the conventional musical tone generators described in Patent Documents 1 and 2, music can be played correctly by performing operations on the group of performance operators according to a guide by a display device. Whether or not a performance operator guided in the group of performance operators has been operated at the correct timing depends on whether the performance operator is actually operated and the timing at which the display device is guided. ) Can be confirmed. However, in order to perform the confirmation, the user must always pay attention to a display device that changes the guide contents as needed as the performance progresses. This is a heavy burden on the user and may make it difficult to concentrate on the performance. Therefore, it can be said that it is important to be able to confirm whether or not the performance operator has been correctly operated without looking at the display device.

表示装置を見ることなく、正しく演奏操作子を操作したか否か確認できるようにした従来の楽音発生装置としては、例えば特許文献3に記載されたものがある。その特許文献3に記載された従来の楽音発生装置では、ユーザーが操作した演奏操作子が操作期間内の演奏操作子か否かより異なる音を発音させるようになっている。それにより、ユーザーが操作すべき演奏操作子を操作すべき操作タイミングで操作すればその演奏操作子に応じた楽音(通常音)を発音させ、そうでなければその楽音とは音色の異なる警告音を発音させている。   An example of a conventional musical sound generating device that can confirm whether or not the performance operator has been correctly operated without looking at the display device is disclosed in Patent Document 3, for example. In the conventional musical sound generating device described in Patent Document 3, a different sound is generated depending on whether or not the performance operator operated by the user is a performance operator within the operation period. As a result, if the user operates the performance operator to be operated at the operation timing, the tone (normal sound) corresponding to the performance operator is sounded, otherwise the warning sound having a different tone from that tone Is pronounced.

上記のように発音させる音を変化させることにより、操作期間となった演奏操作子を操作したか否かの確認をユーザーは発音される音から迅速に行うことができる。しかし、通常音、或いは警告音の発音は、演奏操作子への操作によって行うため、演奏操作子を操作していない間に操作期間が経過した演奏操作子の存在やその操作期間は発音された音から認識することができない。このことから、正しく演奏操作子を操作したか否かを音によって確認できるようにする場合には、操作期間に演奏操作子をユーザーが操作しなかったときのことも想定すべきと考えられる。   By changing the sound to be sounded as described above, it is possible for the user to quickly check whether or not the performance operator that has been in the operation period has been operated from the sound that is sounded. However, since the sound of the normal sound or warning sound is generated by the operation of the performance operator, the presence of the performance operator whose operation period has elapsed while the performance operator is not operated and the operation period are sounded. Cannot recognize from sound. From this, when it is possible to confirm by sound whether or not the performance operator has been correctly operated, it may be assumed that the user has not operated the performance operator during the operation period.

特許文献4には、演奏操作子への操作によって発音させる楽音の音量を制御する従来の楽音発生装置が記載されている。音量を制御することにより、演奏操作子への操作が適切に行われたか否かを通知することができる。しかし、特許文献3に記載された従来の楽音発生装置と同様に、演奏操作子を操作していない間に操作期間が経過した演奏操作子の存在やその操作期間は発音させた音からユーザーに認識させることができない。
特開平10−97181号公報 特開2004−85821号公報 実開昭60−150577号公報 特開2004−205892号公報
Patent Document 4 describes a conventional musical sound generator that controls the volume of a musical sound that is generated by operating a performance operator. By controlling the volume, it is possible to notify whether or not the operation of the performance operator has been appropriately performed. However, like the conventional musical tone generator described in Patent Document 3, the presence of a performance operator that has been operated while the performance operator has not been operated or the operation period is determined by the user from the sound produced. It cannot be recognized.
JP-A-10-97181 JP 2004-85821 A Japanese Utility Model Publication No. 60-150577 JP 2004-205892 A

本発明の課題は、演奏操作子への操作の有無に係わらず、操作期間となった演奏操作子の存在を音によって通知できる楽音発生装置を提供することにある。   An object of the present invention is to provide a musical sound generating device capable of notifying the presence of a performance operator that has become an operation period by sound regardless of whether or not the performance operator is operated.

本発明の楽音発生装置は、演奏操作子群のなかで操作された演奏操作子に応じた楽音を発音させることを前提とするものであり、演奏操作子群のなかで演奏の進行に応じて順次、操作していくべき演奏操作子、及び該演奏操作子を操作しているべき操作期間を該演奏操作子単位で示す演奏情報を取得する演奏情報取得手段と、演奏操作子群への操作を検出するための操作検出手段と、演奏情報取得手段が取得した演奏情報が示す操作期間、及び演奏操作子、並びに該演奏操作子に対する操作の操作検出手段による検出結果を基に、該操作期間内に発音させる楽音の種類を1つ以上決定し、該決定した1つ以上の種類の楽音を少なくとも該操作期間内にわたって発音させる発音制御手段と、を具備する。   The musical sound generating device of the present invention is based on the premise that a musical sound corresponding to a performance operator operated in the performance operator group is sounded, and in accordance with the progress of the performance in the performance operator group. Performance information acquisition means for acquiring performance information to be operated in sequence, performance information indicating operation periods in which the performance operators should be operated in units of the performance operators, and operations on the performance operators Based on the operation detection means for detecting the operation period, the operation period indicated by the performance information acquired by the performance information acquisition means, the performance operator, and the detection result of the operation detection means for the operation on the performance operator. One or more types of musical sounds to be generated are determined, and sound generation control means for generating the determined one or more types of musical sounds at least within the operation period is provided.

なお、上記発音制御手段は、操作期間の演奏操作子に対する操作開始を操作検出手段により検出したタイミングが該操作期間の開始タイミングと許容範囲内で一致しているか否かによって異なる楽音を選択し該操作期間内で発音させる、ことが望ましい。また、操作期間の演奏操作子に対する操作を操作検出手段が検出していた検出期間が該操作期間内であった場合、該操作期間内の該検出期間外の期間は操作すべき演奏操作子を操作していないことを通知する種類の楽音を発音させる、ことが望ましい。上記演奏操作子群が鍵盤であった場合、操作検出手段は、該鍵盤を構成する鍵の押鍵時の速さを併せて検出し、発音制御手段は、操作検出手段が検出した速さを考慮して状況下で発音させる楽音の操作を行う、ことが望ましい。   The sound generation control means selects different musical tones depending on whether or not the timing at which the operation detecting means detects the start of operation for the performance operator during the operation period is within the allowable range with the start timing of the operation period. It is desirable that the sound be generated within the operation period. In addition, when the detection period during which the operation detection unit has detected an operation on the performance operator during the operation period is within the operation period, a performance operator to be operated is selected during the period outside the detection period within the operation period. It is desirable to sound a kind of musical sound notifying that it is not operated. When the performance operator group is a keyboard, the operation detecting means also detects the speed when the keys constituting the keyboard are pressed, and the sound generation control means detects the speed detected by the operation detecting means. It is desirable to operate the musical sound to be sounded under the circumstances in consideration.

本発明のプログラムは、上記楽音発生装置が具備する各手段を実現させるための複数の機能を搭載している。   The program of the present invention is equipped with a plurality of functions for realizing each means included in the musical tone generator.

本発明は、演奏操作子群のなかで演奏の進行に応じて順次、操作していくべき演奏操作子、及びその演奏操作子を操作しているべき操作期間を演奏操作子単位で示す演奏情報を参照し、その操作期間を示す演奏操作子が存在する状況下で楽音を発音させる。その楽音の種類は、操作期間となった演奏操作子に対して行われた操作に応じて選択し決定する。   The present invention provides a performance operator that should be operated sequentially in accordance with the progress of performance in the group of performance operators, and performance information that indicates an operation period during which the performance operator should be operated in units of performance operators. , And a musical tone is generated in a situation where there is a performance operator indicating the operation period. The type of musical sound is selected and determined according to the operation performed on the performance operator that has become the operation period.

具体的には例えば、適切と言えるタイミングで操作が開始された場合、そのことを通知するための楽音を選択し、そうでない場合には、不適切なタイミングで操作が開始したことを通知するための楽音を選択する。このとき、操作期間が到来した後(操作期間が開始するタイミングとなった後)に操作が開始されたのであれば、操作期間の開始から操作が実際に開始されるまでの間は操作が遅れたことを通知するための楽音を発音させる。一方、操作期間が過ぎる前(操作期間が終了するタイミングとなる前)に操作が解除されたのであれば、不適切なタイミングで操作が解除されたことを通知するための楽音をその操作期間が過ぎるまでは少なくとも発音させる。そのように発音させる種類の楽音を1つ以上、選択・決定し、操作期間内にわたって(操作期間の開始から終了まで)発音させる。このため、演奏操作子への操作の有無に係わらず、ユーザーは操作期間となった演奏操作子の存在を音によって容易に認識することができる。また、自身が適切に操作を行った期間も容易に確認することができる。   Specifically, for example, when an operation is started at a timing that can be said to be appropriate, a musical sound for notifying that is selected, and otherwise, to notify that the operation has started at an inappropriate timing Select a musical tone. At this time, if the operation is started after the operation period arrives (after the operation period starts), the operation is delayed from the start of the operation period until the operation is actually started. Make a sound to notify you. On the other hand, if the operation is canceled before the operation period expires (before the operation period ends), a musical sound for notifying that the operation has been canceled at an inappropriate timing is displayed in the operation period. Until it passes, at least let it sound. One or more types of musical sounds to be generated are selected and determined, and are generated during the operation period (from the start to the end of the operation period). For this reason, the user can easily recognize the presence of the performance operator during the operation period by sound regardless of whether or not the performance operator is operated. In addition, it is possible to easily confirm the period during which the user has appropriately performed the operation.

以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
<第1の実施の形態>
図1は、第1の実施の形態による楽音発生装置の構成を説明する図である。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
<First Embodiment>
FIG. 1 is a diagram for explaining the configuration of a musical sound generator according to the first embodiment.

その楽音発生装置10は、図1に示すように、装置10全体の制御を行うCPU11と、そのCPU11がワークに用いるRAM12と、CPU11が実行するプログラムや各種制御用データ、及び波形データ等を格納したROM103と、例えばキーボードやポインティングデバイス(マウス等)、CD−ROMやDVD等の記録媒体にアクセスする媒体駆動装置、及びそれらのインターフェース等からなる入力部14と、表示装置に画像を表示させる表示部15と、外部装置との間でMIDIデータを送受信するためのMIDIインターフェース(I/F)16と、発音させる楽音のデジタルデータ(波高値)を外部装置に出力するためのオーディオインターフェース(I/F)17と、を備えた構成となっている。   As shown in FIG. 1, the musical sound generator 10 stores a CPU 11 that controls the entire apparatus 10, a RAM 12 that the CPU 11 uses for work, a program executed by the CPU 11, various control data, waveform data, and the like. ROM 103, for example, a keyboard or pointing device (such as a mouse), a medium driving device for accessing a recording medium such as a CD-ROM or DVD, an input unit 14 including those interfaces, and a display for displaying an image on the display device A MIDI interface (I / F) 16 for transmitting and receiving MIDI data between the unit 15 and an external device, and an audio interface (I / F) for outputting digital data (peak value) of a musical tone to be generated to the external device F) 17.

上記MIDI I/F16には、それとMIDIデータを送受信可能なMIDIインターフェース(I/F)21、及びキーボード22を備えた電子楽器20が接続され、上記オーディオI/F17には、波高値を入力して音声に変換できる音源システム30が接続されている。MIDI I/F21は、キーボード22に対する操作内容を示すMIDIデータを生成する機能を備えている。それにより、本実施の形態による楽音発生装置10は、電子楽器20のMIDI I/F21からMIDIデータを入力して、そのMIDIデータにより発音が要求された楽音の波高値を生成し、それを音源システム30に出力することにより楽音を発音させるようになっている。音源システム30は、例えばD/A変換器、アンプ、及びスピーカを少なくとも備えたものである。   The MIDI I / F 16 is connected to an electronic musical instrument 20 having a MIDI interface (I / F) 21 and a keyboard 22 capable of transmitting / receiving MIDI data to / from the MIDI I / F 16. A peak value is input to the audio I / F 17. A sound source system 30 that can be converted into sound is connected. The MIDI I / F 21 has a function of generating MIDI data indicating the operation contents for the keyboard 22. As a result, the musical tone generator 10 according to the present embodiment inputs MIDI data from the MIDI I / F 21 of the electronic musical instrument 20, generates a peak value of a musical tone that is requested to be generated by the MIDI data, and uses it as a sound source. By outputting to the system 30, the musical sound is generated. The sound source system 30 includes at least a D / A converter, an amplifier, and a speaker, for example.

その楽音発生装置10は、例えばパーソナルコンピューター(PC)に、楽音発生装置10として動作させるためのアプリケーション・プログラム(以下「アプリケーション」)を搭載させることにより実現させている。そのアプリケーションは、例えば入力部14を構成する媒体駆動装置がアクセス可能な記録媒体に記録して提供するものである。そのアプリケーションは、インターネット等のネットワークを介して配信するようにしても良い。   The musical sound generator 10 is realized by, for example, mounting an application program (hereinafter referred to as “application”) for operating as the musical sound generator 10 on a personal computer (PC). For example, the application is recorded on a recording medium accessible by the medium driving device constituting the input unit 14 and provided. The application may be distributed via a network such as the Internet.

アプリケーションを搭載(インストール)できるように、ROM13としては書き込み可能なメモリ(例えばフラッシュメモリ)が採用されている。そのアプリケーションが記録された記録媒体には、楽音の波高値を生成するための各種波形データが多数、記録されている。その波形データには、音色が異なる楽音発音用のものも含まれている。音色が同じ波形データはピッチ毎に用意されている。楽音発生装置10を実現させるPCは、ROM13の他に、或いはその代わりにハードディスク装置等の補助記憶装置を搭載したものであっても良い。そのアプリケーションについては以降「楽音発生アプリケーション」と呼ぶことにする。   A writable memory (for example, a flash memory) is employed as the ROM 13 so that an application can be installed (installed). On the recording medium on which the application is recorded, a large number of various waveform data for generating the peak value of the musical sound are recorded. The waveform data includes data for tone generation with different timbres. Waveform data with the same tone color is prepared for each pitch. The PC that implements the musical sound generation device 10 may be one in which an auxiliary storage device such as a hard disk device is mounted in addition to or instead of the ROM 13. The application is hereinafter referred to as “musical sound generation application”.

各種波形データは、ROM13に保存させることができるようになっている。また、必要に応じて、記録媒体からコピーすることもできるようにしている。ここでは説明上、便宜的にROM13に保存されている場合のみを想定する。   Various waveform data can be stored in the ROM 13. Further, it is possible to copy from a recording medium as required. Here, for the sake of explanation, it is assumed that the data is stored in the ROM 13 for convenience.

ROM13に保存した波形データは、RAM12にコピーして使用している。これは、一般的にRAM12はROM13よりもアクセス速度が速いからである。それにより、より高速に、発音させるべき楽音の波高値を生成できるようにしている。   The waveform data stored in the ROM 13 is copied to the RAM 12 and used. This is because the RAM 12 generally has a higher access speed than the ROM 13. As a result, it is possible to generate a peak value of a musical tone to be generated at a higher speed.

波形データをピッチ毎に用意することにより、それを構成するサンプリングデータ(波高値)は単に順次、読み出せば良いようにしている。それにより、データを読み出す速さ(歩進幅)に応じた補間を行わなくとも良いようにしている。   By preparing waveform data for each pitch, sampling data (crest value) constituting the waveform data is simply read out sequentially. Thus, it is not necessary to perform interpolation according to the speed of reading data (step width).

ユーザーは、電子楽器20のキーボード22を操作して演奏を行う。その演奏では、演奏の進行に合わせて、キーボード22を構成する鍵のなかで押鍵(操作)すべき鍵を順次、押鍵していくことが求められる。本実施の形態では、押鍵すべき鍵を適切(正確)に押鍵できたか否かユーザーが認識できるように、楽音の発音制御を行うようにしている。押鍵すべき鍵、その押鍵を行っているべき操作期間(押鍵から離鍵までの期間。以降「押鍵時間」と呼ぶ)は、それらを鍵(楽音)単位で示す演奏情報を参照して特定している。   The user performs a performance by operating the keyboard 22 of the electronic musical instrument 20. In the performance, it is required to sequentially press the keys to be pressed (operated) among the keys constituting the keyboard 22 as the performance progresses. In the present embodiment, tone generation control is performed so that the user can recognize whether or not the key to be pressed has been properly (accurately) pressed. For the key to be pressed and the operation period in which the key should be pressed (the period from key pressing to key release, hereinafter referred to as “key pressing time”), refer to the performance information indicating them in units of keys (musical tones). To be specific.

図7は、楽音の発音制御によって発音される楽音を説明する図である。その図7では、演奏情報が示す或る鍵の押鍵時間が到来、つまり押鍵すべきタイミングとなった時点より時間aだけ早くユーザーが押鍵した場合(ケース1)、そのタイミングより時間bだけ遅れてユーザーが押鍵した場合(ケース2)、及び離鍵すべきタイミングとなってもユーザーが離鍵しなかった場合(ケース3)に発音される楽音を示している。   FIG. 7 is a diagram for explaining a musical sound generated by the musical sound generation control. In FIG. 7, when the key pressing time of a certain key indicated by the performance information arrives, that is, when the user presses the key a time earlier than the time point when the key should be pressed (case 1), the time b from the timing A musical tone that is generated when the user presses the key after a delay (case 2) and when the user does not release the key even when the key should be released (case 3) is shown.

ケース1では、ユーザーの押鍵時間は押鍵すべきタイミングの時間a前から離鍵すべきタイミングが到来する前となっている。そのような押鍵時間でユーザーが押鍵を行うと、時間aが押鍵すべきタイミングと一致すると見なせるだけ短ければ、その押鍵時間内はユーザーが押鍵した鍵に割り当てた楽音(以降「設定音」と呼ぶ)を発音させ、それ以降は、演奏情報が示す押鍵時間が終了するまで、その楽音とは異なる音色の楽音(以降「警告音」と呼ぶ)を発音させる。その時間aが押鍵すべきタイミングと一致すると見なせるだけ短くなければ、演奏情報が示す押鍵時間内、全てにわたって警告音を発音させる。   In case 1, the key pressing time of the user is before the timing at which the key should be released before the time a at which the key should be pressed. When the user presses the key for such a key pressing time, if the time a is short enough to be coincident with the timing to press the key, the musical sound assigned to the key pressed by the user (hereinafter “ After that, a musical tone having a tone different from the musical tone (hereinafter referred to as “warning sound”) is produced until the key pressing time indicated by the performance information is completed. If the time a is not short enough to coincide with the timing at which the key is to be pressed, a warning sound is generated throughout the key pressing time indicated by the performance information.

ケース2では、ユーザーの押鍵時間は押鍵すべきタイミングの時間b後から離鍵すべきタイミングが到来する前となっている。そのような押鍵時間でユーザーが押鍵を行うと、時間bが押鍵すべきタイミングと一致すると見なせるだけ短ければ、その時間b内、及びユーザーが離鍵してから演奏情報が示す押鍵時間が終了するまでの間は警告音を発音させ、残りの時間、つまりユーザーの押鍵時間内は設定音を発音させる。その時間bが押鍵すべきタイミングと一致すると見なせるだけ短くなければ、演奏情報が示す押鍵時間内、全てにわたって警告音を発音させる。   In case 2, the key pressing time of the user is before the timing at which the key should be released after the time b at which the key should be pressed. When the user performs key pressing at such a key pressing time, if the time b is short enough to match the timing to be pressed, the key pressing indicated by the performance information within that time b and after the user releases the key. A warning sound is generated until the time expires, and a set sound is generated during the remaining time, that is, the user's key pressing time. If the time b is not short enough to coincide with the timing at which the key is to be pressed, a warning sound is generated throughout the key pressing time indicated by the performance information.

ケース3では、ユーザーの押鍵時間は押鍵すべきタイミングから離鍵すべきタイミングの後となっている。そのような押鍵時間でユーザーが押鍵を行うと、演奏情報が示す押鍵時間内は設定音を発音させ、離鍵すべきタイミングからユーザーが実際に離鍵するまでの間は何れの楽音も発音させない。つまり無音とさせる。   In case 3, the key pressing time of the user is after the timing to release the key from the timing to press the key. When the user presses the key during such a key pressing time, the set sound is generated during the key pressing time indicated by the performance information, and any musical tone is played from the timing when the key should be released until the user actually releases the key. Is not pronounced. In other words, it is silent.

このようにして、本実施の形態では、ユーザーが押鍵を行ったタイミングが適切と見なせるか否かにより、その押鍵によって楽音の種類を選択して発音させ、ユーザーが離鍵を行ったタイミングにより、警告音の発音、或いは発音中の設定音の消音を行う。このため、ユーザーは、発音された楽音から、自身が押鍵、及び離鍵のそれぞれを適切なタイミングで行ったか否か容易に認識することができるようになっている。たとえ押鍵を行わなくとも演奏情報が示す押鍵時間内は警告音が発音されるため(ケース2の時間bが短くないと見なしたときと同じとなる)、押鍵すべき鍵の存在、及びその押鍵時間をユーザーは認識することができる。以降、混乱を避けるため、ユーザーによる押鍵時間を「実押鍵時間」、演奏情報が示す押鍵時間を「正押鍵時間」と表記する。   In this way, in this embodiment, depending on whether or not the timing at which the user has pressed the key can be regarded as appropriate, the type of musical sound is selected by the key pressing and sounded, and the timing at which the user releases the key. The sound of the warning sound or the set sound being sounded is muted. For this reason, the user can easily recognize whether or not he / she pressed and released the key at an appropriate timing from the generated musical sound. Even if the key is not pressed, a warning sound is generated during the key pressing time indicated by the performance information (the same as when the time b in case 2 is considered not short), so there is a key to be pressed. And the key pressing time can be recognized by the user. Hereinafter, in order to avoid confusion, the key pressing time by the user is expressed as “actual key pressing time”, and the key pressing time indicated by the performance information is expressed as “correct key pressing time”.

図7に示すような発音制御を行うために、本実施の形態では図2〜図6に示す各種データを管理している。ここで図2〜図6を参照して、それらのデータについて具体的に説明する。また、説明上、便宜的に、以降の説明では特に断らない限り、その発音制御を行うことを前提とする。その発音制御によりユーザーに音声で演奏内容を知らせることを「発音ガイド」と呼ぶことにする。   In order to perform sound generation control as shown in FIG. 7, various data shown in FIGS. 2 to 6 are managed in this embodiment. Here, the data will be described in detail with reference to FIGS. For convenience of explanation, it is assumed that the sound generation control is performed unless otherwise specified in the following description. Informing the user of the performance contents by sound generation control is referred to as a “sound generation guide”.

図2は、音色データの構成を説明する図である。その音色データは、波形データを音色単位で管理するために音色毎に用意されるデータである。図2に示すように、音色データは、対応するチャンネル番号を示すデータiID、発音中の楽音数を示すデータiNoteOnCnt、対応するピッチデータのなかで先頭ピッチ(例えば最低ピッチ)のピッチデータの格納場所を示すデータpTD、前の音色データの格納場所を示すデータpPrev、及び次の音色データの格納場所を示すデータpNext、を備えている。   FIG. 2 is a diagram for explaining the configuration of timbre data. The timbre data is data prepared for each timbre in order to manage the waveform data in timbre units. As shown in FIG. 2, the timbre data includes data iID indicating the corresponding channel number, data iNoteOnCnt indicating the number of tones being generated, and the storage location of the pitch data of the first pitch (for example, the lowest pitch) among the corresponding pitch data. Data pTD, data pPrev indicating the storage location of the previous tone color data, and data pNext indicating the storage location of the next tone color data.

図3は、ピッチデータの構成を説明する図である。そのピッチデータは、音色毎、ピッチ毎に用意されるデータであり、上記データpTDとしては、対応する音色での先頭ピッチのピッチデータの格納場所を示すデータがそれぞれの音色データに格納される。図3に示すように、ピッチデータは、対応するピッチを示すデータiPitch(ピッチ番号(ノートナンバー))、対応するソースデータの格納場所を示すデータpSD、前のピッチデータの格納場所を示すデータpPrev、及び次のピッチデータの格納場所を示すデータpNext、を備えている。   FIG. 3 is a diagram for explaining the configuration of pitch data. The pitch data is data prepared for each tone color and for each pitch. As the data pTD, data indicating the storage location of the pitch data of the leading pitch in the corresponding tone color is stored in each tone color data. As shown in FIG. 3, the pitch data includes data iPitch (pitch number (note number)) indicating the corresponding pitch, data pSD indicating the storage location of the corresponding source data, and data pPrev indicating the storage location of the previous pitch data. , And data pNext indicating the storage location of the next pitch data.

図4は、ソースデータの構成を説明する図である。そのソースデータは、波形データ毎に用意されるデータである。図4に示すように、ソースデータは、対応する波形データのRAM12にコピーされた波形データの先頭アドレスを示すデータpDAta、波形データのファイル名(オリジナルの格納場所)を示すデータfileName、その波形データ全体の長さを示すデータfLength、波形データが対応するベロシティ範囲の下限値を示すデータminVel、その上限値を示すデータmaxVel、前のピッチデータの格納場所を示すデータpPrev、及び次のピッチデータの格納場所を示すデータpNext、を備えている。   FIG. 4 is a diagram for explaining the configuration of the source data. The source data is data prepared for each waveform data. As shown in FIG. 4, the source data includes data pDAta indicating the start address of the waveform data copied to the RAM 12 of the corresponding waveform data, data fileName indicating the file name (original storage location) of the waveform data, and the waveform data. Data fLength indicating the entire length, data minVel indicating the lower limit value of the velocity range to which the waveform data corresponds, data maxVel indicating the upper limit value thereof, data pPrev indicating the storage location of the previous pitch data, and the next pitch data Data pNext indicating the storage location is provided.

発音させる楽音の種類の変更は、その発音に用いる波形データを変更することで行うようにしている。そのため、上記データpDAta、fileName、及びfLengthは、発音対象となる楽音の種類毎に格納している。   The type of musical sound to be generated is changed by changing the waveform data used for the sound generation. For this reason, the data pDAta, fileName, and fLength are stored for each type of musical sound to be generated.

図5は、発音データの構成を説明する図である。その発音データは、演奏情報が示す、演奏中に発音させるべき楽音毎に用意されるデータである。図5に示すように、発音データは、識別情報であるデータiID、対応する音色データ(チャンネル)を示すデータiTone(例えば対応する音色データ中のデータiID)、楽音のピッチを示すデータiPitch、そのベロシティを示すデータiOnVel、そのピッチの楽音の状態を示すデータiStatus(−1の値は消音中、0の値は消音状態、1の値は演奏情報が示す押鍵時間であり、且つユーザーが押鍵中である状態、2の値は演奏情報が示す押鍵時間であり、且つユーザーが押鍵していない状態(押鍵が遅れている状態)、3の値は演奏情報が示す押鍵時間でなく、且つユーザーが押鍵中である状態(押鍵が早く行われたような状態)、をそれぞれ表す)、対応する演奏データの格納場所を示すデータpME、対応するソースデータの格納場所を示すデータpSD、対応する演奏データによる発音開始時刻を示すデータlOnStart、その消音開始時刻を示すデータlOffStart、ユーザーによる押鍵時刻(タイミング)を示すデータlNoteOn、その離鍵時刻(タイミング)を示すデータlNoteOff、消音処理中での減衰率を示すデータfRelease、前の発音データの格納場所を示すデータpPrev、及び次の発音データの格納場所を示すデータpNext、を備えている。上記データiOnVelは電子楽器20から入力するMIDIデータ中から抽出したベロシティ値である。そのベロシティ値は、周知のように、押鍵時の速さ、つまり楽音を発音させる強さを表している。   FIG. 5 is a diagram for explaining the structure of the pronunciation data. The sound generation data is data prepared for each musical sound to be generated during performance indicated by the performance information. As shown in FIG. 5, the sound generation data includes data iID as identification information, data iTone indicating the corresponding timbre data (channel) (for example, data iID in the corresponding timbre data), data iPitch indicating the pitch of the musical tone, Data iOnVel indicating velocity, data iStatus indicating the state of the musical tone of the pitch (-1 is muted, 0 is muted, 1 is the key press time indicated by the performance information, and the user presses the key. In the key state, the value of 2 is the key pressing time indicated by the performance information, and the user is not pressing the key (the key pressing is delayed), and the value of 3 is the key pressing time indicated by the performance information. And the data pME indicating the storage location of the corresponding performance data, corresponding to a state where the user is pressing the key (a state where the key is pressed early), respectively. Data pSD indicating the storage location of the source data, data lOnStart indicating the sound generation start time by the corresponding performance data, data lOffStart indicating the mute start time, data lNoteOn indicating the key pressing time (timing) by the user, and the key release time (timing) ) Indicating data 1NoteOff, data fRelease indicating the attenuation rate during the silencing process, data pPrev indicating the storage location of the previous sounding data, and data pNext indicating the storage location of the next sounding data. The data iOnVel is a velocity value extracted from the MIDI data input from the electronic musical instrument 20. As is well known, the velocity value represents the speed at which a key is pressed, that is, the strength with which a musical sound is produced.

波形データの選択、つまり上記データpDAta、fileName、及びfLengthのなかで対象とすべきものの選択は、データiStatus(の値)に応じて行うようになっている。それにより、データiStatusの値に応じた種類の楽音を発音させている。   The selection of the waveform data, that is, the selection of the data pDAta, fileName, and fLength to be targeted is performed according to the data iStatus (value). As a result, a musical tone of a type corresponding to the value of the data iStatus is generated.

上記発音データは演奏中に順次、作成され、随時、更新される。それ以外のデータ、つまり音色データ、ピッチデータ、及びソースデータでは、演奏開始前に作成され、演奏中に更新は行われない。   The pronunciation data is created sequentially during performance and updated as needed. Other data, that is, timbre data, pitch data, and source data are created before the performance starts and are not updated during the performance.

演奏情報には、発音させるべき楽音毎にデータが用意されている。そのデータが演奏データである。その演奏データは、図6に示すように、楽音の発音を開始すべきタイミング(発音開始時刻)を示すデータlTime、その発音を持続させるべき発音時間を示すデータlGate,そのピッチを示すデータPitch、そのベロシティを示すデータVel、前の演奏データの格納場所を示すデータpPrev、及び次の演奏データの格納場所を示すデータpNext、を備えている。   In the performance information, data is prepared for each tone to be generated. The data is performance data. The performance data includes, as shown in FIG. 6, data lTime indicating the timing (pronunciation start time) at which the tone of the musical sound should be started, data lGate indicating the pronunciation time at which the pronunciation should be continued, data Pitch indicating the pitch, Data Vel indicating the velocity, data pPrev indicating the storage location of the previous performance data, and data pNext indicating the storage location of the next performance data are provided.

データlTimeが示す発音開始時刻は、例えば演奏開始を基準に、それから経過した時間である。それは、発音データにデータlOnStartとしてコピーされる。それにより、データlOffStartは、その発音開始時刻からデータlGateが示す発音時間だけ後の時間である。   The sound generation start time indicated by the data lTime is, for example, the time elapsed since the start of performance. It is copied to the pronunciation data as data lOnStart. Thus, the data lOffStart is a time after the sounding start time indicated by the data lGate.

以降は図8〜図13に示す各種フローチャートを参照して、上述のデータを管理して発音制御を行う楽音発生装置10の動作について詳細に説明する。その動作は、CPU13が、上記楽音発生アプリケーションをROM13からRAM12に読み出して実行することで実現される。   Hereinafter, with reference to various flowcharts shown in FIGS. 8 to 13, the operation of the musical sound generating apparatus 10 that manages the above-described data and performs sound generation control will be described in detail. The operation is realized by the CPU 13 reading the musical tone generating application from the ROM 13 to the RAM 12 and executing it.

図8は、全体処理のフローチャートである。これは、上記楽音発生アプリケーションを起動させてから終了させるまでの間に実行される処理を抜粋してその流れを示したものである。始めに図8を参照して、その全体処理について詳細に説明する。   FIG. 8 is a flowchart of the entire process. This shows a flow of excerpts of processes executed between starting and ending the musical tone generating application. First, the overall process will be described in detail with reference to FIG.

先ず、ステップ101では、MIDI I/F16用のドライバをROM13からRAM12にロードして起動させる。続くステップ102では、同様にオーディオI/F17用のドライバをロードして起動させる。以降は、発音させるべき楽音の波高値(オーディオデータ)をオーディオI/F17から出力するためのオーディオデータ出力スレッドを起動させ(ステップ103)、音色定義ファイルとしてROM13に保存されている図2〜図4に示す各種データを読み込んでRAM12に展開し(ステップ104)、ピッチ毎にその波形データ(図中「音色データ」と表記)をROM13から読み出してRAM12にロードする(ステップ105)。そのロードにより初期化が終了し、ステップ106に移行して、入力部14、或いはMIDI I/F16によるデータの入力を待つ。ここでは、入力部14を操作してのデータ入力については、楽音発生アプリケーションの終了指示、発音ガイドの開始、その停止(終了)のみを想定する。   First, in step 101, a driver for the MIDI I / F 16 is loaded from the ROM 13 to the RAM 12 and activated. In the subsequent step 102, a driver for the audio I / F 17 is similarly loaded and activated. Thereafter, an audio data output thread for outputting the peak value (audio data) of the tone to be generated from the audio I / F 17 is activated (step 103), and stored in the ROM 13 as a tone definition file. 4 is read and developed in the RAM 12 (step 104), and the waveform data (denoted as “tone color data” in the figure) is read from the ROM 13 and loaded into the RAM 12 for each pitch (step 105). The initialization is completed by the load, and the process proceeds to step 106 to wait for data input by the input unit 14 or the MIDI I / F 16. Here, regarding the data input by operating the input unit 14, only an end instruction of the musical sound generating application, a start of the pronunciation guide, and a stop (end) thereof are assumed.

電子楽器20のキーボード22を構成するキー(鍵)をユーザーが押鍵、或いは離鍵すると、MIDI I/F21はその演奏操作の内容、及びその操作が行われたキーに応じたMIDIデータを生成して楽音発生装置10のMIDI I/F16に出力する。入力部14を構成するキーボード、或いはポインティングデバイスを操作すると、その操作内容が入力部14からCPU11に通知される。それにより、ステップ106からステップ107に移行し、入力が楽音発生アプリケーションの終了コマンドか否か判定する。そのアプリケーションを終了させるための操作をユーザーが入力部14に対して行った場合、判定はYESとなってステップ114に移行する。そうでない場合には、判定はNOとなってステップ108に移行する。   When a user presses or releases a key constituting the keyboard 22 of the electronic musical instrument 20, the MIDI I / F 21 generates the contents of the performance operation and MIDI data corresponding to the key on which the operation was performed. Then, it is output to the MIDI I / F 16 of the musical tone generator 10. When a keyboard or a pointing device constituting the input unit 14 is operated, the operation content is notified from the input unit 14 to the CPU 11. Thereby, the process proceeds from step 106 to step 107, and it is determined whether or not the input is an end command of the musical tone generating application. If the user performs an operation for terminating the application on the input unit 14, the determination is yes and the process proceeds to step 114. Otherwise, the determination is no and the process moves to step 108.

ステップ108では、入力がMIDIデータか否か判定する。MIDI I/F16がMIDIデータを入力した場合、判定はYESとなり、ステップ109に移行して、その入力に対応するためのMIDI IN処理を実行した後、上記ステップ106に戻る。一方、そうでない場合には、判定はNOとなってステップ110に移行する。   In step 108, it is determined whether or not the input is MIDI data. If the MIDI I / F 16 has input MIDI data, the determination is YES, the process proceeds to step 109, and after performing the MIDI IN process corresponding to the input, the process returns to step 106. On the other hand, if not, the determination is no and the process proceeds to step 110.

ステップ110では、上記発音ガイドの開始を指示するための再生開始コマンドを入力したか否か判定する。ユーザーがそのコマンド入力のための操作を入力部14に対して行った場合、判定はYESとなってステップ111に移行し、発音ガイドのための再生処理を起動した後、上記ステップ106に戻る。そうでない場合には、判定はNOとなってステップ112に移行する。   In step 110, it is determined whether or not a reproduction start command for instructing the start of the pronunciation guide has been input. When the user performs an operation for inputting the command to the input unit 14, the determination is YES, the process proceeds to step 111, the reproduction process for the pronunciation guide is started, and then the process returns to step 106. Otherwise, the determination is no and the process moves to step 112.

ステップ112では、上記発音ガイドの停止を指示するための再生停止コマンドを入力したか否か判定する。ユーザーがそのコマンド入力のための操作を入力部14に対して行った場合、判定はYESとなってステップ113に移行し、再生処理の実行を管理するための変数である再生停止フラグをオン、つまりその実行停止を示す値を代入した後、上記ステップ106に戻る。そうでない場合には、判定はNOとなり、他のステップの処理を実行することなく、そのステップ106に戻る。   In step 112, it is determined whether or not a playback stop command for instructing to stop the pronunciation guide is input. When the user performs an operation for inputting the command to the input unit 14, the determination is YES, the process proceeds to step 113, and a reproduction stop flag that is a variable for managing execution of the reproduction process is turned on. That is, after substituting a value indicating the stop of execution, the process returns to step 106. Otherwise, the determination is no and the process returns to step 106 without executing the process of other steps.

上記ステップ107の判定がYESとなって移行するステップ114では、オーディオデータ出力スレッドを終了させる。その終了は、例えばそのスレッド終了管理用の変数に、終了を指示する値を代入することで行う。以降は、RAM12に格納されている図2〜図6に示す各種データを消去し(ステップ115)、オーディオI/F17のドライバを終了(開放)させ(ステップ116)、MIDI I/F16のドライバを終了(開放)させる(ステップ117)。そのようにして各種ドライバやデータをRAM12から消去させた後、一連の処理を終了、つまり楽音発生アプリケーションを終了させる。   In step 114 where the determination in step 107 is YES and the process proceeds to step 114, the audio data output thread is terminated. The termination is performed, for example, by substituting a value for instructing termination into the thread termination management variable. Thereafter, various data shown in FIGS. 2 to 6 stored in the RAM 12 are deleted (step 115), the driver of the audio I / F 17 is terminated (released) (step 116), and the driver of the MIDI I / F 16 is turned on. End (open) (step 117). After erasing various drivers and data from the RAM 12 in this manner, a series of processing is terminated, that is, the musical tone generating application is terminated.

図9は、上記ステップ109として実行されるMIDI IN処理のフローチャートである。次にそのIN処理について、図9に示すそのフローチャートを参照して詳細に説明する。   FIG. 9 is a flowchart of the MIDI IN process executed as step 109 described above. Next, the IN process will be described in detail with reference to the flowchart shown in FIG.

このIN処理は、MIDI I/F17を介して入力したMIDIデータに対応するための処理である。そのMIDIデータの種類は多数、存在するが、ここでは本発明に特に係わるデータ、つまりノートオンメッセージ、ノートオフメッセージの2種類のMIDIデータのみにのみ注目して説明する。   This IN process is a process for dealing with MIDI data input via the MIDI I / F 17. There are many types of MIDI data, but here, only data related to the present invention, that is, only two types of MIDI data of note-on message and note-off message will be described.

上述したように、発音データ中のデータlOnStart(演奏データ中のデータlTime)は演奏開始からの時間を示している。そのような時間で押鍵すべきタイミングを表していることから、再生処理の起動時に時間を計時するためのカウントを0から開始させるようにしている。そのカウント、つまり時間の計時は、例えばCPU11に内蔵のハードタイマを用いて行っている。特に断らない限り、現在時刻はそのようにして計時した時間を指す意味で用いる。   As described above, the data lOnStart (data lTime in the performance data) in the sound generation data indicates the time from the start of the performance. Since the timing at which the key should be pressed is represented in such a time, the count for counting the time is started from 0 when the reproduction process is activated. The counting, that is, the time measurement is performed by using, for example, a hard timer built in the CPU 11. Unless otherwise specified, the current time is used to indicate the time thus measured.

先ず、ステップ201では、入力したMIDIデータが楽音の発音開始を指示するノートオンメッセージか否か判定する。そのMIDIデータがノートオンメッセージでなかった場合、判定はNOとなってステップ212に移行する。そうでない場合には、判定はYESとなってステップ202に移行する。   First, in step 201, it is determined whether or not the input MIDI data is a note-on message instructing the start of tone generation. If the MIDI data is not a note-on message, the determination is no and the process moves to step 212. Otherwise, the determination is yes and the process moves to step 202.

ステップ202では、入力したMIDIデータから、チャンネル番号、ノートナンバー(ピッチ)、及びベロシティ値を抽出し、それぞれ変数ich、iPit、及びiVelに代入する。続くステップ203では、変数ndに、発音データのなかで先頭に位置する発音データの格納場所を示すインデクス値を代入する。その代入後に移行するステップ204〜209では、入力したMIDIデータに応じて、対応する発音データを作成、或いは更新するための処理を行う。   In step 202, a channel number, a note number (pitch), and a velocity value are extracted from the input MIDI data, and substituted into variables ich, iPit, and iVel, respectively. In the subsequent step 203, an index value indicating the storage location of the pronunciation data located at the head of the pronunciation data is substituted for the variable nd. In steps 204 to 209, the process proceeds after the substitution, processing for creating or updating the corresponding pronunciation data is performed according to the input MIDI data.

先ず、ステップ204では、変数ndの値が示す発音データが存在しないか否か判定する。今回、入力したMIDIデータに対応する発音データは、変数ndの値で指定される発音データ中のデータpNextをその変数ndに新たに代入していくことにより、順次、対象とする発音データを変更しながら探すようになっている。最後に位置する発音データにはそれに続く発音データが存在しないため、データpNextの値は初期値のままとなっている。このため、変数ndに新たに代入した値がその初期値であった場合、判定はYESとなってステップ210に移行する。そうでない場合には、判定はNOとなってステップ205に移行する。ここでのYESの判定は、ユーザーが押鍵すべきタイミングとなる前の鍵を押鍵したことを意味する。   First, in step 204, it is determined whether or not the pronunciation data indicated by the value of the variable nd does not exist. This time, the pronunciation data corresponding to the input MIDI data is sequentially changed by changing the data pNext in the pronunciation data designated by the value of the variable nd to the variable nd. While searching. Since there is no subsequent sound data in the sound data located at the end, the value of the data pNext remains the initial value. For this reason, when the value newly assigned to the variable nd is the initial value, the determination is YES and the process proceeds to step 210. Otherwise, the determination is no and the process moves to step 205. The determination of YES here means that the user has pressed the key before the timing to press the key.

ステップ205では、変数ndの値で指定される発音データ中のデータiStatus(図中「nd.iStatus」と表記。以降、他のデータでも同じ表記法を用いる)の値が2と一致し、且つnd.iPitchが示すピッチ番号が変数iPitのそれと一致するか否か判定する。それらのうちの少なくとも一つが一致しない場合、判定はNOとなってステップ206に移行し、変数ndにnd.pNextを代入した後、上記ステップ204に戻る。そうでない場合には、つまりそれらが共に一致する場合には、判定はYESとなってステップ207に移行する。   In step 205, the value of the data iStatus in the pronunciation data designated by the value of the variable nd (denoted as “nd.iStatus” in the figure. The same notation is used for other data hereinafter) is equal to 2, and nd. It is determined whether or not the pitch number indicated by iPitch matches that of variable iPit. If at least one of them does not match, the determination is no, the process moves to step 206, and the variable nd is set to nd. After pNext is substituted, the process returns to step 204 above. If not, that is, if they match together, the determination is yes and the process moves to step 207.

ステップ207では、現在時刻(再生処理起動から経過した時間)からnd.lOnStartが示す時間を引いて得られる時間が、許容できるとする最大時間を示す定数DELAY_ALLOWより小さいか否か判定する。ここではその時間は押鍵が遅れた時間bを表している(図7のケース2)。このため、時間bが十分に短いような場合、判定はYESとなり、nd.iStatusの値を1に更新し(ステップ208)、更にnd.iToneを変数iChの値、nd.iNoteOnを現在時刻、nd.iOnVelを変数iVelの値、ne.pSDを設定音のデータiPitchが一致するピッチデータ中のデータpSDにそれぞれ更新してから(ステップ209)、一連の処理を終了する。そうでない場合には、判定はNOとなって上記ステップ206に移行する。   In step 207, the nd. It is determined whether or not the time obtained by subtracting the time indicated by lOnStart is smaller than a constant DELAY_ALLOW indicating the allowable maximum time. Here, the time represents the time b when the key depression is delayed (case 2 in FIG. 7). Therefore, if the time b is sufficiently short, the determination is YES, and nd. The value of iStatus is updated to 1 (step 208), and nd. iTone is the value of variable iCh, nd. iNoteOn is set to the current time, nd. iOnVel is the value of the variable iVel, ne. After the pSD is updated to the data pSD in the pitch data that matches the set sound data iPitch (step 209), the series of processing ends. Otherwise, the determination is no and the process moves to step 206 above.

このようにして、変数ndの値をインクリメントしながら、その値で指定される発音データが、入力したMIDIデータに対応するものか否か確認し、対応していると確認できた発音データの更新を行うようにしている。その更新により、時間bが許容範囲内であればユーザーは適切なタイミングで押鍵したとして、その押鍵以降、警告音から設定音に切り換えられる(図7のケース2)。一方、その確認ができなかった場合には、ステップ204の判定がYESとなって、ステップ210に移行することになる。   In this way, while incrementing the value of the variable nd, it is confirmed whether or not the sounding data specified by that value corresponds to the input MIDI data, and the sounding data that has been confirmed to be compatible is updated. Like to do. As a result of the update, if the time b is within the allowable range, it is assumed that the user has pressed the key at an appropriate timing, and thereafter, the warning sound is switched to the set sound (case 2 in FIG. 7). On the other hand, if the confirmation cannot be made, the determination in step 204 is YES, and the process proceeds to step 210.

そのステップ210では、変数ndに、新たに作成する発音データの格納場所を示すインデクス値を代入する。また、nd.pPrevとしてはそれまで最後に位置していた発音データのインデクス値を格納し、その発音データ中のデータpNextは変数ndの値に更新する。nd.pNextとしては、最後に位置する発音データであることを示す値を格納する。続くステップ211では、nd.iStatusとして3、nd.iPitchとして変数iPitの値をそれぞれ格納する。また、nd.fRelease、nd.pNext、nd.lOnStart、nd.lOffStart、nd.lNoteOffとして例えばそれぞれ所定の初期値を格納する。その後に上記ステップ209に移行する。   In step 210, an index value indicating the storage location of newly created pronunciation data is substituted for the variable nd. Also, nd. As pPrev, the index value of the pronunciation data that has been located last is stored, and the data pNext in the pronunciation data is updated to the value of the variable nd. nd. As pNext, a value indicating the sound data positioned at the end is stored. In the following step 211, nd. iStatus is 3, nd. The value of variable iPit is stored as iPitch. Also, nd. fRelease, nd. pNext, nd. lOnStart, nd. lOffStart, nd. For example, predetermined initial values are stored as lNoteOff. Thereafter, the process proceeds to step 209.

上述したように、時間bが許容範囲内でなければ、入力したMIDIデータに対応する発音データを既に作成されたもののなかから確認できない。このため、ステップ204の判定がYESとなって新たに発音データが作成されることになる。その結果、ユーザーが押鍵時間内に押鍵を行ったとしても、ユーザーは不適切なタイミングで押鍵したとして、その押鍵以降も警告音の発音が継続することとなる(図7のケース2)。   As described above, if the time b is not within the allowable range, the pronunciation data corresponding to the input MIDI data cannot be confirmed from those already created. For this reason, the determination in step 204 is YES, and new pronunciation data is created. As a result, even if the user presses the key within the key pressing time, if the user presses the key at an inappropriate timing, the warning sound continues to be generated after the key press (the case of FIG. 7). 2).

上記ステップ201の判定がNOとなって移行するステップ212では、入力したMIDIデータが楽音の発音終了を指示するノートオフメッセージか否か判定する。そのMIDIデータがノートオフメッセージだった場合、判定はYESとなってステップ213に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。   In step 212 where the determination in step 201 is NO and the process proceeds to step 212, it is determined whether or not the input MIDI data is a note-off message instructing the end of tone generation. If the MIDI data is a note-off message, the determination is yes and the process moves to step 213. Otherwise, the determination is no and the series of processing ends here.

ステップ213では、入力したMIDIデータから、チャンネル番号、及びピッチ番号(ノートナンバー)を抽出し、それぞれ変数iCh、及びiPitに代入する。続くステップ214では、変数ndに、先頭に位置する発音データのインデクス値を代入する。その代入後に移行するステップ215では、変数ndの値で指定される発音データが存在しないか否か判定する。その発音データが存在しない場合、判定はYESとなり、ここで一連の処理を終了する。それにより、入力したMIDIデータを無効とする。一方、そうでない場合には、判定はNOとなってステップ216に移行する。   In step 213, a channel number and a pitch number (note number) are extracted from the input MIDI data, and substituted for variables iCh and iPit, respectively. In the subsequent step 214, the index value of the pronunciation data located at the head is substituted for the variable nd. In step 215, the process proceeds after the substitution, it is determined whether or not there is sound generation data designated by the value of the variable nd. If the pronunciation data does not exist, the determination is yes, and the series of processing ends here. As a result, the input MIDI data is invalidated. On the other hand, if not, the determination is no and the process proceeds to step 216.

ステップ216では、nd.iPitchの値が変数iPitの値と一致するか否か判定する。それらが一致する場合、判定はYESとなってステップ218に移行し、そうでない場合には、判定はNOとなり、ステップ217で変数ndにnd.pNextを代入した後、上記ステップ215に戻る。   In step 216, nd. It is determined whether or not the value of iPitch matches the value of variable iPit. If they match, the determination is yes and the process moves to step 218. If not, the determination is no and in step 217 the variable nd is set to nd. After pNext is substituted, the process returns to step 215.

ステップ218では、nd.iStatusの値が1か否か判定する。その値が1であった場合、判定はYESとなり、ユーザーは離鍵すべきタイミングとなる前の鍵を離鍵したとして(図7のケース1、2)、ステップ219でnd.iStatusの値を2に更新し、更にステップ220でnd.lNoteOffを現在時刻に更新した後、一連の処理を終了する。そうでない場合には、判定はNOとなってステップ221に移行する。   In step 218, nd. It is determined whether the value of iStatus is 1. If the value is 1, the determination is YES, and it is assumed that the user has released the key before the time to release the key (cases 1 and 2 in FIG. 7). The value of iStatus is updated to 2, and in step 220, nd. After updating lNoteOff to the current time, a series of processing ends. Otherwise, the determination is no and the process moves to step 221.

ステップ221では、nd.iStatusの値が3か否か判定する。その値が3であった場合、判定はYESとなり、ステップ222でnd.iStatusの値を−1に更新した後、上記ステップ220に移行する。そうでない場合には、判定はNOとなって上記ステップ217に移行する。ここでのYESの判定は、主に離鍵すべきタイミングとなった鍵をユーザーが離鍵していないことを意味する(図7のケース3)。   In step 221, nd. It is determined whether the value of iStatus is 3. If the value is 3, the determination is YES, and nd. After updating the value of iStatus to −1, the process proceeds to step 220 described above. Otherwise, the determination is no and the process moves to step 217. The determination of YES here means that the user has not released the key whose timing should be released (case 3 in FIG. 7).

図10は、図8に示す全体処理内のステップ111で起動される再生処理のフローチャートである。次に図10を参照して、その再生処理について詳細に説明する。
先ず、ステップ301では、変数meに、演奏情報のなかで先頭に位置する演奏データの格納場所を示すインデクス値を代入する。続くステップ302では、上記再生停止フラグがオンとなっているか否か判定する。再生停止コマンドの入力によってそのフラグがオンされた場合、判定はYESとなり、ステップ303で発音データ全てのデータiStatusの値を0に更新した後、一連の処理を終了する。そうでない場合には、判定はNOとなってステップ304に移行する。
FIG. 10 is a flowchart of the reproduction process activated in step 111 in the overall process shown in FIG. Next, the reproduction process will be described in detail with reference to FIG.
First, in step 301, an index value indicating the storage location of the performance data located at the head in the performance information is substituted into the variable me. In the subsequent step 302, it is determined whether or not the reproduction stop flag is on. If the flag is turned on by the input of the reproduction stop command, the determination is YES, and after updating the values of all the sound generation data iStatus to 0 in step 303, the series of processing is terminated. Otherwise, the determination is no and the process moves to step 304.

ステップ304では、発音中の楽音の存在を確認するための変数AllOffに、それが存在しないことを示す値の1を代入し、変数ndに、先頭に位置する発音データのインデクス値を代入する。次のステップ305では、変数ndの値で指定される発音データが存在しないか否か判定する。その発音データが存在しない場合、判定はYESとなってステップ314に移行する。そうでない場合には、判定はNOとなってステップ306に移行する。そのステップ306〜313では、演奏データを参照して、ユーザーによる離鍵時刻に着目した発音データの更新を行うための処理が行われる。   In step 304, 1 is substituted for a variable AllOff for confirming the presence of a musical tone being sounded, and the index value of the pronunciation data located at the head is substituted for a variable nd. In the next step 305, it is determined whether or not there is sound generation data designated by the value of the variable nd. If the pronunciation data does not exist, the determination is yes and the process proceeds to step 314. Otherwise, the determination is no and the process moves to step 306. In steps 306 to 313, processing for updating the sound generation data focusing on the key release time by the user is performed with reference to the performance data.

先ず、ステップ306では、nd.iStatusの値が0以外か否か、つまり変数ndの値で指定される発音データによって楽音を発音させていないか否か判定する。楽音を発音させていない場合、判定はNOとなり、ステップ307で変数ndにnd.pNextを代入した後、上記ステップ305に戻る。そうでない場合には、判定はYESとなってステップ308に移行する。   First, at step 306, nd. It is determined whether or not the iStatus value is other than 0, that is, whether or not a musical sound is not generated by the sound generation data specified by the value of the variable nd. If the musical sound is not sounded, the determination is no, and in step 307, the variable nd is set to nd. After pNext is substituted, the process returns to step 305. Otherwise, the determination is yes and the process moves to step 308.

ステップ308では、楽音が発音中であることを示す値の0を変数AllOffに代入する。次のステップ309では、nd.lOffStartが示す消音開始時刻が現在時刻より前か否か判定する。現在、対象としている発音データが既に離鍵しているべき鍵に対応するものであった場合、その関係が成り立つことから、判定はYESとなってステップ310に移行する。そうでない場合には、判定はNOとなって上記ステップ307に移行する。   In step 308, 0, which is a value indicating that the musical sound is being generated, is substituted into the variable AllOff. In the next step 309, nd. It is determined whether the mute start time indicated by lOffStart is before the current time. If the current pronunciation data corresponds to a key that should already be released, the relationship is established, so the determination is yes and the process moves to step 310. Otherwise, the determination is no and the process moves to step 307.

ステップ310では、nd.iStatusの値が1か否か判定する。その値が1であった場合、判定はYESとなり、離鍵すべきタイミングとなった鍵をユーザーが離鍵していないとして(図7のケース3)、ステップ311でnd.iStatusの値を3に更新した後、上記ステップ307に移行する。そうでない場合には、判定はNOとなってステップ312に移行する。   In step 310, nd. It is determined whether the value of iStatus is 1. If the value is 1, the determination is YES, and it is assumed that the user has not released the key whose timing should be released (case 3 in FIG. 7). After updating the value of iStatus to 3, the process proceeds to step 307. Otherwise, the determination is no and the process moves to step 312.

ステップ312では、nd.iStatusの値が2か否か判定する。その値が2であった場合、判定はYESとなり、離鍵すべきタイミングとなる前にユーザーが離鍵した鍵がそのタイミングになったとして(図7のケース1、2)、ステップ313でnd.iStatusの値を−1に更新した後、上記ステップ307に移行する。そうでない場合には、判定はNOとなって次にそのステップ307を実行する。   In step 312, nd. It is determined whether the value of iStatus is 2. If the value is 2, the determination is YES, and it is assumed that the key released by the user before the timing to release the key has reached that timing (cases 1 and 2 in FIG. 7). . After updating the value of iStatus to −1, the process proceeds to step 307. Otherwise, the determination is no and then step 307 is executed.

上記ステップ305の判定がYESとなって移行するステップ314では、変数AllOffの値が1と一致し、且つ変数meの値で指定される演奏データが存在しない(直前に対象としていた演奏データが最後のもの)か否か判定する。その値が1と一致し、且つその演奏データが存在しない場合、判定はYESとなり、発音ガイドを終了すべきタイミングが到来したとして、ここで一連の処理を終了する。そうでない場合には、判定はNOとなってステップ315に移行する。そのステップ315以降では、演奏データを参照しての発音データの作成、或いはユーザーによる押鍵時刻に着目した発音データの更新のための処理が行われる。   In step 314, where the determination in step 305 is YES and the process proceeds, the value of the variable AllOff matches 1 and there is no performance data specified by the value of the variable me (the performance data targeted immediately before is the last). Whether or not). If the value is equal to 1 and the performance data does not exist, the determination is YES, and it is determined that it is time to end the pronunciation guide, and a series of processing ends here. Otherwise, the determination is no and the process moves to step 315. In step 315 and subsequent steps, a process for generating sound data by referring to the performance data or updating the sound data focusing on the key pressing time by the user is performed.

先ず、ステップ315では、me.lTimeが示す発音開始時刻が現在時刻(再生開始からの時間)より前か否か判定する。その発音開始時刻(押鍵すべきタイミング)が現在時刻より前であった場合、判定はYESとなってステップ316に移行する。そうでない場合には、判定はNOとなって上記ステップ302に戻る。   First, in step 315, me. It is determined whether or not the sounding start time indicated by lTime is before the current time (time from the start of playback). If the sounding start time (timing to press the key) is before the current time, the determination is yes and the process proceeds to step 316. Otherwise, the determination is no and the process returns to step 302 above.

ステップ316では、変数ndに、先頭に位置する発音データのインデクス値を代入する。その代入後に移行するステップ317では、変数ndの値で指定される発音データが存在しないか否か判定する。その発音データが存在しない場合、判定はYESとなってステップ324に移行し、そうでない場合には、判定はNOとなってステップ318に移行する。   In step 316, the index value of the pronunciation data located at the head is substituted for the variable nd. In step 317, the process proceeds after the substitution, it is determined whether or not there is sound generation data designated by the value of the variable nd. If the pronunciation data does not exist, the determination is yes and the process proceeds to step 324, and if not, the determination is no and the process proceeds to step 318.

ステップ318では、nd.iStatusの値が3と一致し、且つnd.iPitchの値がme.Pitchの値と一致するか否か判定する。それらのうちの少なくとも一つが一致しない場合、判定はNOとなってステップ319に移行し、変数ndにnd.pNextを代入した後、上記ステップ317に戻る。そうでない場合には、つまりそれらが共に一致する場合には、判定はYESとなってステップ320に移行する。そのYESの判定は、対象としている発音データは、押鍵すべきタイミングとなる前の鍵をユーザーが押鍵することで作成されたことを意味する(図7のケース1)。   In step 318, nd. The value of iStatus matches 3, and nd. The iPitch value is me. It is determined whether or not the value matches the Pitch value. If at least one of them does not match, the determination is no, the process proceeds to step 319, and the variable nd is set to nd. After pNext is substituted, the process returns to step 317. If not, that is, if they match together, the determination is yes and the process moves to step 320. The determination of YES means that the target sound generation data is created by the user pressing the key before the key should be pressed (case 1 in FIG. 7).

ステップ320では、現在時刻からnd.lNoteOnが示す時刻を引いて得られる時間aが、上記定数DELAY_ALLOWより小さいか否か判定する。時間aが十分に短いような場合、判定はYESとなり、nd.iStatusの値を1に更新し(ステップ321)、nd.iOnStartを現在時刻、ne.lOffStartを現在時刻にme.lGateの値を加算した値、nd.pMEを変数meの値にそれぞれ更新し(ステップ322)、更に変数meにme.nextを代入してから(ステップ323)、上記ステップ302に戻る。そうでない場合には、判定はNOとなって上記ステップ319に移行する。   In step 320, nd. It is determined whether the time a obtained by subtracting the time indicated by lNoteOn is smaller than the constant DELAY_ALLOW. If the time a is sufficiently short, the determination is yes, and nd. Update the value of iStatus to 1 (step 321), nd. iOnStart is set to the current time, ne. lOffStart is set to me. a value obtained by adding the values of lGate, nd. pME is updated to the value of variable me (step 322), and me. After substituting next (step 323), the process returns to step 302. Otherwise, the determination is no and the process moves to step 319.

上記ステップ321でnd.iStatusの値を1に更新することにより、時間aが十分に短ければ初めから設定音が発音されることになる。その更新が行われない場合には、設定音の代わりに警告音が発音されることになる。その警告音のピッチは固定とさせても良い。   In step 321 above, nd. By updating the value of iStatus to 1, if the time a is sufficiently short, the set sound is generated from the beginning. If the update is not performed, a warning sound is generated instead of the set sound. The pitch of the warning sound may be fixed.

上記ステップ317の判定がYESとなって移行するステップ324では、変数ndに、新たに作成する発音データの格納場所を示すインデクス値を代入する。nd.pPrevとしてそれまで最後に位置していた発音データのインデクス値を格納し、その発音データ中のデータpNextは変数ndの値に更新する。nd.pNextとしては、最後に位置する発音データであることを示す値を格納する。続くステップ325では、nd.iStatusとして2、nd.iPitchとしてme.Pitch、nd.pSDとしてme.Pitchに対応するインデクス値をそれぞれ格納する。また、nd.fRelease、nd.NoteOn、nd.lNoteOff、nd.pNextとして例えばそれぞれ所定の初期値を格納し、そのようなことを行った後に上記ステップ322に移行する。   In step 324 where the determination in step 317 is YES and the process proceeds to step 324, an index value indicating the storage location of the newly created pronunciation data is substituted for the variable nd. nd. The index value of the pronunciation data that has been positioned last is stored as pPrev, and the data pNext in the pronunciation data is updated to the value of the variable nd. nd. As pNext, a value indicating the sound data positioned at the end is stored. In the following step 325, nd. iStatus is 2, nd. i.Pitch me. Pitch, nd. p.SD as me. Each index value corresponding to Pitch is stored. Also, nd. fRelease, nd. NoteOn, nd. lNoteOff, nd. For example, a predetermined initial value is stored as pNext, and after that, the process proceeds to step 322.

図11は、図8に示す全体処理内のステップ103で起動されるオーディオデータ出力スレッドの実行により実現される処理のフローチャートである。次に図11を参照して、その処理について詳細に説明する。この出力スレッドは、サンプリング周期でオーディオI/F17を介して出力する、発音させるべき楽音の波高値(オーディオデータ)を生成するためのものである。   FIG. 11 is a flowchart of processing realized by execution of the audio data output thread activated in step 103 in the overall processing shown in FIG. Next, the processing will be described in detail with reference to FIG. This output thread is used to generate a peak value (audio data) of a musical tone to be generated and output via the audio I / F 17 at a sampling period.

先ず、ステップ401では、各種変数に初期値を代入し、オーディオI/F17を介して出力するオーディオデータ一時格納用の領域(出力バッファ)をRAM12に確保するといった初期化を行う。次のステップ402では、終了が指示されたか否か判定する。上述したように、図8に示す全体処理のステップ114では、オーディオデータ出力スレッドの終了管理用の変数に、終了を指示する値を代入する。このことから、その変数にその値が代入されていた場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなってステップ403に移行する。   First, in step 401, initialization is performed such that initial values are substituted into various variables, and an area for temporarily storing audio data (output buffer) to be output via the audio I / F 17 is secured in the RAM 12. In the next step 402, it is determined whether or not an end is instructed. As described above, in step 114 of the overall process shown in FIG. 8, a value for instructing the end is substituted for the end management variable of the audio data output thread. For this reason, if the value is assigned to the variable, the determination is YES, and the series of processing ends here. Otherwise, the determination is no and the process moves to step 403.

ステップ403では、発音させるべき楽音のオーディオデータを作成(生成)して出力バッファに格納するための出力データ作成処理を実行する。次に移行するステップ404では、出力バッファに格納されたオーディオデータをサンプリング周期で順次、出力するための処理を実行する。その実行後は上記ステップ402に戻る。それにより、楽音発生アプリケーションの起動中は、ステップ402〜404で形成される処理ループを繰り返し実行する。   In step 403, output data creation processing is executed for creating (generating) the audio data of the musical sound to be generated and storing it in the output buffer. In the next step 404, processing for sequentially outputting the audio data stored in the output buffer at the sampling period is executed. After the execution, the process returns to step 402. Thereby, while the musical tone generating application is activated, the processing loop formed in steps 402 to 404 is repeatedly executed.

次に、上記ステップ403として実行される出力データ作成処理について、図12に示すそのフローチャートを参照して詳細に説明する。その作成処理では、複数のサンプリング周期分のオーディオデータを一度に作成し、出力バッファに保存するようにしている。図中の「lSamples」は一度に作成するオーディオデータ数を示す定数である。   Next, the output data creation process executed as step 403 will be described in detail with reference to the flowchart shown in FIG. In the creation process, audio data for a plurality of sampling periods is created at a time and stored in an output buffer. “LSamples” in the figure is a constant indicating the number of audio data created at one time.

先ず、ステップ501では、変数iに0を代入する。続くステップ502では、変数iの値が定数lSamples未満か否か判定する。変数iの値は、1サンプリング周期分のオーディオデータを作成する度にインクリメントするようになっている。このため、一度に作成すべきオーディオデータを全て作成していない場合、変数iの値は定数lSamples未満の関係を満たすから、判定はYESとなってステップ503に移行する。そうでない場合には、つまり作成すべきオーディオデータを全て作成した場合には、判定はNOとなり、ここで一連の処理を終了する。   First, in step 501, 0 is substituted for variable i. In the subsequent step 502, it is determined whether or not the value of the variable i is less than a constant lSamples. The value of the variable i is incremented every time audio data for one sampling period is created. For this reason, when all the audio data to be created at one time has not been created, the value of the variable i satisfies the relationship of less than the constant lSamples, so the determination is YES and the process moves to step 503. If not, that is, if all the audio data to be created has been created, the determination is no, and the series of processing ends here.

ステップ503では、変数iの値を定数lSRで割った値を変数lTimeの値に加算して得られる値(=lTime+i/lSR)を変数lSTimeに代入する。変数lTimeに代入された値は、次のオーディオデータを出力すべき時刻を示す値であり、定数lSRは、出力バッファに格納したオーディオデータのサンプリングレートを示す値である。それにより、変数iの値を定数lSRで割った値は、変数iの値にサンプリング周期を掛けた値(時間を示す値)である。このことから、変数lSTimeには、対象とするオーディオデータを出力すべき時刻を示す値が代入される。その代入後はステップ504に移行する。   In step 503, a value (= lTime + i / lSR) obtained by adding the value obtained by dividing the value of the variable i by the constant lSR to the value of the variable lTime is substituted into the variable lSTime. The value assigned to the variable lTime is a value indicating the time when the next audio data is to be output, and the constant lSR is a value indicating the sampling rate of the audio data stored in the output buffer. Accordingly, the value obtained by dividing the value of the variable i by the constant lSR is a value (value indicating time) obtained by multiplying the value of the variable i by the sampling period. For this reason, a value indicating the time at which target audio data is to be output is substituted into the variable lSTTime. After the substitution, the process proceeds to step 504.

ステップ504では、1サンプリング周期分のオーディオデータ作成用の変数iValueに0を代入する。次のステップ505では、変数ndに、発音データ格納用領域の先頭に位置する発音データの格納場所を指定するインデクス値を代入する。その次に移行するステップ506では、変数ndの値で指定される格納場所に発音データが存在するか否か判定する。その発音データが存在しない場合、判定はNOとなってステップ516に移行する。そうでない場合には、判定はYESとなってステップ507に移行する。   In step 504, 0 is substituted into a variable iValue for creating audio data for one sampling period. In the next step 505, an index value for designating the storage location of the pronunciation data located at the head of the pronunciation data storage area is substituted for the variable nd. In the next step 506, it is determined whether or not pronunciation data exists at the storage location specified by the value of the variable nd. If the pronunciation data does not exist, the determination is no and the process proceeds to step 516. Otherwise, the determination is yes and the process moves to step 507.

ステップ507では、nd.iStatusの値が−1、1、及び2のうちの何れかと一致するか否か判定する。その値がそれらのうちの何れとも一致しない場合、判定はNOとなってステップ510に移行する。そうでない場合には、判定はYESとなってステップ508に移行する。nd.iStatusの値が3の発音データを発音対象から除外することにより、正押鍵時間外の楽音の発音は回避される(図7のケース1、3)。   In step 507, nd. It is determined whether or not the value of iStatus matches any one of -1, 1, and 2. If the value does not match any of them, the determination is no and the process moves to step 510. Otherwise, the determination is yes and the process moves to step 508. nd. By excluding the sound generation data whose iStatus value is 3 from the sound generation target, the sound generation of the musical sound outside the normal key pressing time is avoided (cases 1 and 3 in FIG. 7).

ステップ507でのYESの判定は、現在、注目している発音データに対応する楽音は発音すべきものであることを意味する。このことから、ステップ508では、その楽音を発音させるためのサンプリングデータをRAM12から読み出すためのサンプリングデータ読み取り処理を実行する。その実行によって変数iVtmpには、そのサンプリングデータが代入される。サンプリングデータを読み出す波形データは、データpSDによって指定されるソースデータを参照して特定している。このため、データpSDに応じて設定音、或いは警告音を発音させるための波形データが選択される。   A determination of YES in step 507 means that the musical sound corresponding to the pronunciation data currently being watched should be pronounced. Therefore, in step 508, a sampling data reading process for reading sampling data for generating the musical sound from the RAM 12 is executed. As a result, the sampling data is substituted into the variable iVtmp. The waveform data from which the sampling data is read is specified by referring to the source data specified by the data pSD. For this reason, waveform data for generating a set sound or a warning sound is selected according to the data pSD.

ステップ508に続くステップ509では、nd.iStatusの値が−1か否か判定する。その値が−1、つまり現在、注目している発音データに対応する楽音が消音処理中であった場合、判定はYESとなってステップ512に移行する。そうでない場合には、判定はNOとなり、変数iValueに、それまでの値に変数iVtmpの値を加算した値(=iValue+iVtmp)を代入し(ステップ510)、変数ndにnd.pNextを代入する(ステップ511)。その代入後は上記ステップ506に戻る。   In step 509 following step 508, nd. It is determined whether the value of iStatus is -1. If the value is −1, that is, if a musical sound corresponding to the pronunciation data currently being watched is being muted, the determination is yes and the process moves to step 512. Otherwise, the determination is no and a value obtained by adding the value of the variable iVtmp to the previous value (= iValue + iVtmp) is substituted for the variable iValue (step 510), and the variable nd. pNext is substituted (step 511). After the substitution, the process returns to step 506.

このように、発音対象とする、消音処理中でない楽音では、ステップ508のサンプリングデータ読み取り処理の実行によって変数iVtmpに代入されたサンプリングデータは変数iValueのそれまでの値に加算される。それにより、消音処理を開始するまではサンプリングデータ(波形データ)に従って発音される。   In this way, for musical tones that are to be sounded and not being muted, the sampling data substituted into the variable iVtmp by executing the sampling data reading process in step 508 is added to the value of the variable iValue so far. Thus, the sound is generated according to the sampling data (waveform data) until the mute process is started.

上記ステップ509の判定のYESとなって移行するステップ512〜515では、消音したと見なせるまで、発音させる楽音の音量を徐々に小さくさせていくための処理が行われる。波形データを構成するサンプリングデータの値は大きく変化することから、消音したと見なせるか否かの判定は、消音処理中に更新していくデータfReleaseの値により行っている。図中の「RED_OFF」「RELEASE」はそれぞれ、その判定用に設定した定数、データfRelease更新用に設定した定数である。   In steps 512 to 515 in which the determination in step 509 is YES and the process proceeds to step 512 to 515, processing for gradually decreasing the volume of the musical sound to be generated is performed until it can be considered that the sound has been muted. Since the value of the sampling data constituting the waveform data changes greatly, whether or not it can be regarded as silenced is determined based on the value of the data fRelease that is updated during the silencing process. “RED_OFF” and “RELEASE” in the figure are a constant set for the determination and a constant set for the data fRelease update, respectively.

先ず、ステップ512では、変数iVtmpに、nd.fReleaseの値、つまり注目している発音データ中のデータfReleaseの値をそれまでの値に掛けて得られる値(=iVtmp*fRelease)を代入する。続くステップ513では、そのデータfRelease(nd.fRelease)の値が定数RED_OFF未満か否か判定する。その値が定数RED_OFF未満であった場合、判定はYESとなってステップ514に移行し、データiStatusの値を0に、その他のデータをリセットする操作を行った後、上記ステップ510に移行する。そうでない場合には、判定はNOとなり、ステップ515でデータfReleaseをそれまでの値に定数RELEASEを掛けた値に更新した後、上記ステップ510に移行する。   First, in step 512, the variable iVtmp is set to nd. The value (= iVtmp * fRelease) obtained by multiplying the value of fRelease, that is, the value of the data fRelease in the pronunciation data of interest, by the previous value is substituted. In the following step 513, it is determined whether or not the value of the data fRelease (nd.fRelease) is less than a constant RED_OFF. If the value is less than the constant RED_OFF, the determination is yes and the process proceeds to step 514. After performing an operation of resetting the data iStatus to 0 and other data, the process proceeds to step 510. Otherwise, the determination is no, the data fRelease is updated to a value obtained by multiplying the previous value by the constant RELEASE in step 515, and then the process proceeds to step 510.

そのステップ406でのNOの判定は、1サンプリング周期分のオーディオデータの作成が終了したことを意味する。このことから、その判定がNOとなって移行するステップ516では、変数iValueの値を1サンプリング周期分のオーディオデータとして、変数lStimeの値と共に、出力バッファの変数iの値で指定される格納場所に格納する。その格納後は、ステップ517で変数iの値をインクリメントしてから上記ステップ502に戻る。   The determination of NO in step 406 means that the creation of audio data for one sampling period has been completed. Therefore, in step 516 where the determination is NO and the process proceeds to step 516, the value of the variable iValue is set as audio data for one sampling period, and the storage location specified by the value of the variable i in the output buffer together with the value of the variable lTime. To store. After the storage, the value of variable i is incremented in step 517, and then the process returns to step 502.

図13は、上記ステップ508として実行されるサンプリングデータ読み取り処理のフローチャートである。最後に図13を参照して、その読み取り処理について詳細に説明する。   FIG. 13 is a flowchart of the sampling data reading process executed as step 508 described above. Finally, the reading process will be described in detail with reference to FIG.

先ず、ステップ551では、変数idに、nd.iStatusの値を代入する。次のステップ552では、変数lTに、変数lStimeの値からnd.lOnStartの値を引いた値、つまり変数ndの値で指定される発音データにより発音中の楽音の発音を開始させてから経過した時間を示す値を代入する。その後は、ステップ553でnd.pSDの値を変数sdに代入する。   First, in step 551, nd. Substitute the value of iStatus. In the next step 552, the variable lT is changed from the value of the variable lStime to nd. A value obtained by subtracting the value of lOnStart, that is, a value indicating the time elapsed since the start of the sound generation of the musical sound being generated by the sound generation data designated by the value of the variable nd is substituted. Thereafter, in step 553, nd. The value of pSD is assigned to the variable sd.

ステップ553に続くステップ554では、変数lPosに、変数lTの値に定数lSRを掛けた乗算結果を、sd.fLengthのなかで変数idの値で指定されるもの(図中「sd.fLength[id]」と表記。以降、その表記法を用いる)の値で割ったときに得られる余り(=(lT*lSR)%sd.fLength[id])を代入する。その後は、ステップ555に移行して、sd.pDataのなかで変数idの値で指定されるもの(図中「sd.pData[id]」と表記。以降、その表記法を用いる)で指定される波形データを例えば配列変数、或いはバッファであるpWに格納する。ここではpWとしてバッファを想定する。バッファpWに波形データを格納した後はステップ556に移行する。   In step 554 following step 553, the result of multiplying the variable lPos by the constant lSR multiplied by the value of the variable lT is obtained as sd. The remainder (= (lT *) obtained by dividing by the value specified by the value of the variable id in fLength (denoted as “sd.fLength [id]” in the figure. The notation is used hereinafter). lSR)% sd.fLength [id]) is substituted. Thereafter, the process proceeds to step 555, where sd. The waveform data specified by the value of the variable id in pData (denoted as “sd.pData [id]” in the figure. The notation is used hereinafter) is, for example, an array variable or a buffer. Store in pW. Here, a buffer is assumed as pW. After the waveform data is stored in the buffer pW, the process proceeds to step 556.

ステップ556では、バッファpWに格納した波形データ中の変数lPosの値で指定されるサンプリングデータ(先頭から変数lPosの値番目のデータ)を読み出して変数iVtmpに代入する。その次のステップ557では、変数iVtmpに、nd.iVelの値をsd.MaxVelの値で割った値をそれまでの値に乗算して得られる値を代入する。そのようにして、変数iVtmpに代入したサンプリングデータを、ユーザーが実際に押鍵したときのベロシティ値と波形データのベロシティ範囲の上限値の比に応じて更新した後、一連の処理を終了する。   In step 556, the sampling data designated by the value of the variable lPos in the waveform data stored in the buffer pW (the data of the value of the variable lPos from the beginning) is read and substituted into the variable iVtmp. In the next step 557, the variable iVtmp is set to nd. The value of iVel is set to sd. A value obtained by multiplying the value obtained by dividing the value of MaxVel by the value so far is substituted. In this manner, after updating the sampling data substituted for the variable iVtmp according to the ratio between the velocity value when the user actually presses the key and the upper limit value of the velocity range of the waveform data, the series of processing ends.

このように、変数id(nd.iStatus)の値に応じた波形データが参照され、その波形データから読み出して操作したサンプリングデータが最終的に変数iVtmpに代入され、上記出力データ作成処理に渡される。このため、データiStatusの値に対応する種類の楽音が発音される。
<第2の実施の形態>
上記第1の実施の形態では、押鍵すべき鍵をユーザーが実際に押鍵したタイミングに応じて設定音、及び警告音の2種類の楽音を発音させるようにしている(図7)。これに対し、第2の実施の形態は、ユーザーが実際に押鍵したタイミングに応じて3種類の楽音を発音させるようにしたものである。
In this way, the waveform data corresponding to the value of the variable id (nd.iStatus) is referred to, and the sampling data read out and operated from the waveform data is finally substituted into the variable iVtmp and passed to the output data creation process. . For this reason, a musical tone of a type corresponding to the value of the data iStatus is generated.
<Second Embodiment>
In the first embodiment, two types of musical tones, a set sound and a warning sound, are generated according to the timing when the user actually presses the key to be pressed (FIG. 7). On the other hand, in the second embodiment, three types of musical sounds are generated according to the timing when the user actually presses the key.

第2の実施の形態における楽音発生装置の構成は、基本的に第1の実施の形態におけるそれと同じである。動作も大部分は同じか、或いは基本的に同じである。このことから、第1の実施の形態で付した符号をそのまま用いて、第1の実施の形態から異なる部分についてのみ説明する。   The configuration of the musical sound generating device in the second embodiment is basically the same as that in the first embodiment. The operation is largely the same or basically the same. For this reason, only the parts different from the first embodiment will be described using the reference numerals given in the first embodiment as they are.

図14は、第2の実施の形態における楽音の発音制御によって発音される楽音を説明する図である。その図14では、図7と同様に、ケース1〜3別に発音される楽音を示している。それらケース1〜3の内容は図7におけるそれと同じである。   FIG. 14 is a diagram for explaining a musical sound generated by the musical sound generation control in the second embodiment. In FIG. 14, similar to FIG. 7, musical sounds that are pronounced according to cases 1 to 3 are shown. The contents of these cases 1 to 3 are the same as those in FIG.

図14のケース1、3に示すように、第2の実施の形態では、正押鍵時間外もユーザーが鍵を押鍵していれば楽音を発音させるようにしている。その正押鍵時間外は、設定音、及び警告音とは異なる種類の楽音(便宜的に「ミスタッチ音」と呼ぶ)を発音させるようにしている。   As shown in cases 1 and 3 in FIG. 14, in the second embodiment, a musical tone is generated if the user presses the key outside the normal key pressing time. Outside the normal key pressing time, a different kind of musical sound (referred to as “mistouch sound” for convenience) is generated differently from the set sound and warning sound.

ケース1では、時間aが十分に短いか否かに係わらず、正押鍵時間が到来するまでの間、ミスタッチ音を放音させる。その正押鍵時間が到来した後は、時間aが十分に短ければ設定音の発音に切り換え、それ以降は第1の実施の形態と同じタイミングで警告音の発音に切り換えて正押鍵時間が経過するまでその警告音を発音させる。一方、時間aが十分に短くなければ、ミスタッチ音は実押鍵時間が経過するまで発音させ、それと併せて、正押鍵時間全体で警告音を発音させる。その後、正押鍵時間が経過するまで警告音に切り換えて発音させる。このため、時間aが十分に短いか否かに係わらず、正押鍵時間と実押鍵時間のずれを発音された楽音から容易に認識できるようになっている。   In case 1, the mistouch sound is emitted until the normal key pressing time comes regardless of whether the time a is sufficiently short. After the key pressing time has arrived, if the time a is sufficiently short, the sound is switched to the sound of the set sound, and thereafter, the sound is switched to the sound of the warning sound at the same timing as in the first embodiment, and the key pressing time is changed. The warning sound is sounded until it passes. On the other hand, if the time a is not sufficiently short, the mistouch sound is generated until the actual key pressing time elapses, and at the same time, a warning sound is generated over the entire normal key pressing time. Then, the sound is switched to the warning sound until the normal key pressing time elapses. For this reason, regardless of whether the time a is sufficiently short, the difference between the normal key pressing time and the actual key pressing time can be easily recognized from the generated musical sound.

ケース2では、時間bが十分に短ければ第1の実施の形態と同じタイミング、順序で警告音、設定音が発音される。時間bが十分に短くない場合には、第1の実施の形態と同じく、正押鍵時間全体で警告音を発音させる。それと併せて、実押鍵時間全体でミスタッチ音を発音させる。このため、時間bが十分に短いか否かに係わらず、このため、時間aが十分に短いか否かに係わらず、正押鍵時間と実押鍵時間のずれを発音された楽音から容易に認識できるようになっている。   In case 2, if the time b is sufficiently short, a warning sound and a setting sound are generated in the same timing and order as in the first embodiment. When the time b is not sufficiently short, a warning sound is generated over the entire normal key pressing time as in the first embodiment. At the same time, a mistouch sound is generated over the entire actual key pressing time. Therefore, regardless of whether or not the time b is sufficiently short, regardless of whether or not the time a is sufficiently short, the difference between the normal key pressing time and the actual key pressing time can be easily made from the generated tone. Can be recognized.

ケース3では、正押鍵時間内は第1の実施の形態と同じく設定音を発音させる。その正押鍵時間が経過した後は、実押鍵時間が経過するまでミスタッチ音に切り換えて発音を継続させる。このため、離鍵したタイミングと離鍵すべきタイミングのずれを発音された楽音から容易に認識できるようになっている。   In case 3, the set sound is generated during the normal key pressing time as in the first embodiment. After the normal key pressing time has elapsed, the sound generation is continued by switching to the mistouch sound until the actual key pressing time has elapsed. For this reason, it is possible to easily recognize the difference between the timing at which the key is released and the timing at which the key is to be released from the generated musical sound.

上述したように、時間a、或いはbが十分に短くない場合、発音データは複数(ここでは2つ)作成される。ケース1、及び2において、正押鍵時間全体で警告音を発音させる発音データは対応する演奏データから作成され、その警告音と併せてミスタッチ音を発音させる発音データはユーザーの操作から作成される。第1の実施の形態では、その一方のみを用いることで図7に示すような発音制御を実現させている。これに対し、第2の実施の形態では、それらを共に用いることにより、図14に示すような発音制御を実現させている。このために第2の実施の形態では、図12に示す出力データ作成処理に第1の実施の形態から異なる部分が存在する。以降、その異なる部分について具体的に説明する。   As described above, when the time a or b is not sufficiently short, a plurality of (two in this case) sound generation data are created. In cases 1 and 2, the pronunciation data for generating a warning sound over the entire key pressing time is created from the corresponding performance data, and the pronunciation data for generating a mistouch sound together with the warning sound is created from the user's operation. . In the first embodiment, sound generation control as shown in FIG. 7 is realized by using only one of them. On the other hand, in the second embodiment, the sound generation control as shown in FIG. 14 is realized by using them together. For this reason, in the second embodiment, the output data creation process shown in FIG. 12 differs from the first embodiment. Hereinafter, the different parts will be described in detail.

図12に示す出力データ作成処理では、ステップ507でデータiStatus(nd.iStatus)の値が−1、1、及び2の何れかと一致するか否か判定している。第2の実施の形態では、その値が0でないか否か判定するようにしている。それにより、その値が3であればミスタッチ音を発音させるようにしている。
<第3の実施の形態>
上記第1、及び第2の実施の形態では、押鍵すべき鍵をユーザーが実際に押鍵したタイミングに着目して発音させるべき楽音(ここでは発音の回避を含む)の発音制御を行っている。これに対し、第3の実施の形態は、ユーザーが押鍵したときのベロシティに更に着目して発音制御を行うようにしたものである。そのベロシティを更に着目することにより、行った押鍵の速さ(ベロシティ)が適切か否かを発音させる音によりユーザーに容易に認識させることができる。
In the output data creation process shown in FIG. 12, it is determined in step 507 whether the value of the data iStatus (nd.iStatus) matches any of −1, 1, and 2. In the second embodiment, it is determined whether or not the value is zero. Thereby, if the value is 3, a mistouch sound is generated.
<Third Embodiment>
In the first and second embodiments, the sound generation control (including the avoidance of sound generation) to be generated is performed by paying attention to the timing when the user actually presses the key to be pressed. Yes. On the other hand, in the third embodiment, sound generation control is performed by paying more attention to the velocity when the user presses the key. By paying more attention to the velocity, the user can easily recognize whether or not the speed of the key press performed (velocity) is appropriate.

第3の実施の形態における楽音発生装置の構成は、基本的に第1の実施の形態におけるそれと同じである。動作も大部分は同じか、或いは基本的に同じである。このことから、第2の実施の形態と同様に、第1の実施の形態で付した符号をそのまま用いて、第1の実施の形態から異なる部分についてのみ説明する。   The configuration of the musical tone generator in the third embodiment is basically the same as that in the first embodiment. The operation is largely the same or basically the same. Therefore, like the second embodiment, only the parts different from the first embodiment will be described using the reference numerals given in the first embodiment as they are.

第3の実施の形態では、図5に示すように、発音データを構成するデータとして、演奏データ中のデータVelが示すベロシティがユーザーの押鍵時のベロシティと許容範囲内で一致するか否かを示すデータiVelAgreeを用意している。その具体的な値としては、許容範囲内で一致すれば1、そうでなければ0としている。初期値は0としている。データiVelAgreeの値に応じて発音させる楽音の音量を制御することにより、行った押鍵の速さが適切か否か認識可能とさせている。本実施の形態では、データiVelAgreeの値が1であれば音量を小さくさせるようにしている。   In the third embodiment, as shown in FIG. 5, whether or not the velocity indicated by the data Vel in the performance data coincides with the velocity at the time of the user's key depression within the allowable range as the data constituting the sound generation data. Data iVelAgree showing is prepared. The specific value is 1 if they match within the allowable range, and 0 otherwise. The initial value is 0. By controlling the volume of the musical sound to be generated according to the value of the data iVelAgle, it is possible to recognize whether or not the speed of the key depression performed is appropriate. In the present embodiment, if the value of the data iVelAgree is 1, the volume is reduced.

演奏データが示すベロシティが実際の押鍵時のベロシティと許容範囲内で一致するか否かの判定、その判定結果に応じたデータiVelAgreeの更新は、図9に示すMIDI IN処理、及び図10に示す再生処理に図15に示すフローチャートを追加することで実現させている。   The determination as to whether or not the velocity indicated by the performance data matches the actual velocity of the key depression within the allowable range, and the update of the data iVelAgree according to the determination result is shown in the MIDI IN process shown in FIG. 9 and FIG. This is realized by adding the flowchart shown in FIG. 15 to the reproduction processing shown.

その図15に示すフローチャートでは、ステップ601において、変数ndの値で指定される発音データ中のデータpMEが示す演奏データに格納のデータVel(図中「nd.pME.Vel」と表記した、対応する演奏データが示すベロシティ)の値から変数iVel(ユーザーが押鍵したベロシティ)の値を引いた減算値の絶対値が、許容範囲として設定の定数ALLOW_VEL未満か否か判定する。その絶対値が定数ALLOW_VEL未満であった場合、判定はYESとなってステップ602に移行し、データiVelAgreeの値を1に更新する。そうでない場合には、判定はNOとなり、許容範囲外としてデータiVelAgreeを更新することなく、ステップ602の処理の実行後に移行する処理を次に実行する。   In the flowchart shown in FIG. 15, in step 601, the data Vel stored in the performance data indicated by the data pME in the pronunciation data specified by the value of the variable nd (represented as “nd.pME.Vel” in the figure) It is determined whether the absolute value of the subtraction value obtained by subtracting the value of the variable iVel (velocity pressed by the user) from the value of the velocity indicated by the performance data to be played is less than a constant ALLOW_VEL set as an allowable range. If the absolute value is less than the constant ALLOW_VEL, the determination is yes, the process moves to step 602, and the value of the data iVelAgree is updated to 1. Otherwise, the determination is no, and the process that moves after the execution of the process of step 602 is executed next without updating the data iVelAgree as out of the allowable range.

図15に示すフローチャートは、図9に示すMIDI IN処理ではステップ208、209間に追加・挿入され、図10に示す再生処理では、ステップ321,322間に追加・挿入される。発音させる楽音の音量制御は、例えばその後に移行するステップ209、322のそれぞれに、データiVelAgreeの値が1であれば変数iVelの値に1より小さい係数(例えば0.5)を掛けた値をデータiOnVelとして格納させるか、或いは例えば図12に示すステップ508として実行されるサンプリングデータ読み取り処理にデータiVelAgreeの値に応じたデータiOnVelの更新機能を搭載させることで実現できる。
<第4の実施の形態>
上記第1〜第3の実施の形態では、演奏情報は予め用意されたものを用いるようにしている。これに対し、第4の実施の形態は、実際に行われた演奏結果を示す演奏情報を保存して用いることができるようにしたものである。
The flowchart shown in FIG. 15 is added / inserted between steps 208 and 209 in the MIDI IN process shown in FIG. 9, and added / inserted between steps 321 and 322 in the reproduction process shown in FIG. For example, if the value of the data iVelAgree is 1, the value of the variable iVel is multiplied by a coefficient (for example, 0.5) smaller than 1 for the volume control of the musical sound to be generated. This can be realized by storing the data as iOnVel, or by mounting an update function of the data iOnVel according to the value of the data iVelAgree in the sampling data reading process executed as step 508 shown in FIG.
<Fourth embodiment>
In the first to third embodiments, performance information prepared in advance is used. On the other hand, in the fourth embodiment, performance information indicating performance results actually performed can be stored and used.

第4の実施の形態における楽音発生装置の構成は、基本的に第1の実施の形態におけるそれと同じである。動作も大部分は同じか、或いは基本的に同じである。このことから、第2、及び第3の実施の形態と同様に、第1の実施の形態で付した符号をそのまま用いて、第1の実施の形態から異なる部分についてのみ説明する。   The configuration of the musical sound generating device in the fourth embodiment is basically the same as that in the first embodiment. The operation is largely the same or basically the same. Therefore, like the second and third embodiments, the reference numerals used in the first embodiment are used as they are, and only different portions from the first embodiment are described.

第4の実施の形態では、MIDI I/F16に複数の電子楽器20を接続可能となっている。演奏結果は合奏を行った人別に保存するようにしている。そのために、図2〜図6に示す各種データに加えて、図16〜図18に示す各種データを管理できるようになっている。始めに図16〜図18にそれぞれ示すデータについて詳細に説明する。演奏結果として保存するデータは、録音データと呼ぶことにする。その録音データは、楽音単位で演奏結果を示す保存データを備えている。   In the fourth embodiment, a plurality of electronic musical instruments 20 can be connected to the MIDI I / F 16. The performance results are saved for each person who performed the ensemble. Therefore, in addition to the various data shown in FIGS. 2 to 6, the various data shown in FIGS. 16 to 18 can be managed. First, the data shown in FIGS. 16 to 18 will be described in detail. Data stored as performance results will be called recorded data. The recorded data includes stored data indicating performance results in musical tone units.

図16は、録音データ管理データの構成を説明する図である。その録音データ管理データ(以降「管理データ」と略記)は、演奏(録音)毎に用意される管理用のデータである。図16に示すように、録音(演奏)開始日時を示すデータDate、対応する参加ユーザーデータの格納場所(先頭の位置するデータの場所)を示すデータpUserList、対応する録音データの格納場所を示すデータpRecData、前の管理データの格納場所を示すデータprev、及び次の管理データの格納場所を示すデータnext、を備えている。ここでは上述の各実施の形態と同様に、格納場所を示すものとしてインデクス値(ポインタ値)を想定する。   FIG. 16 is a diagram for explaining the configuration of the recording data management data. The recorded data management data (hereinafter abbreviated as “management data”) is management data prepared for each performance (recording). As shown in FIG. 16, data Date indicating recording (performance) start date and time, data pUserList indicating storage location of corresponding participating user data (location of data at the top), and data indicating storage location of corresponding recording data pRecData, data prev indicating the storage location of the previous management data, and data next indicating the storage location of the next management data. Here, as in the above-described embodiments, an index value (pointer value) is assumed to indicate the storage location.

図17は、参加ユーザーデータの構成を説明する図である。その参加ユーザーデータ(以降「ユーザーデータ」と略記)は、合奏者毎に用意されるデータである。図17に示すように、対応する合奏者名(参加したユーザー名)を示すデータUserName、演奏したトラックを示すデータiCh、対応する音色データを示すデータpTone、前のユーザーデータの格納場所を示すデータprev、及び次のユーザーデータの格納場所を示すデータnext、を備えている。   FIG. 17 is a diagram illustrating the configuration of participating user data. The participating user data (hereinafter abbreviated as “user data”) is data prepared for each ensemble player. As shown in FIG. 17, data UserName indicating the corresponding ensemble player name (participating user name), data iCh indicating the played track, data pTone indicating the corresponding timbre data, and data indicating the storage location of the previous user data prev and data next indicating the storage location of the next user data.

図18は、保存データの構成を説明する図である。その保存データは、楽音単位に用意されるデータである。データiCh、楽音のピッチを示すデータiPitch、そのベロシティを示すデータiOnVel、その楽音における演奏判断結果を示すデータiResult(0の値は未押鍵、1の値は適切な押鍵、2の値は遅れた押鍵、3の値は早い押鍵、4の値は誤った押鍵(ミスタッチ)、をそれぞれ表す)、対応する演奏データによる発音開始時刻を示すデータlOnStart、その消音開始時刻を示すデータlOffStart、ユーザーによる押鍵時刻(タイミング)を示すデータlNoteOn、その離鍵時刻(タイミング)を示すデータlNoteOff、前の保存データの格納場所を示すデータprev、及び次の補間データの格納場所を示すデータnext、を備えている。図5に示す発音データにもデータiResultは追加されている。   FIG. 18 is a diagram for explaining the configuration of stored data. The stored data is data prepared for each musical tone unit. Data iCh, data iPitch indicating the pitch of the musical tone, data iOnVel indicating the velocity thereof, data iResult indicating the performance judgment result of the musical tone (0 is an unpressed key, 1 is an appropriate key pressed, 2 is a value Delayed key press, value of 3 represents early key press, value of 4 represents incorrect key press (mistouch), respectively, data lOnStart indicating sounding start time by corresponding performance data, data indicating mute start time lOffStart, data lNoteOn indicating the key pressing time (timing) by the user, data lNoteOff indicating the key release time (timing), data prev indicating the storage location of the previous saved data, and data indicating the storage location of the next interpolation data next. Data iResult is also added to the pronunciation data shown in FIG.

以降は、図19〜図24を参照して、本実施の形態で実行する処理について詳細に説明する。
図19は、図8のステップ109として実行されるMIDI IN処理のフローチャートである。そのIN処理は、図9に示すIN処理の代わりに実行されるものである。図9に示すステップの処理内容と同じ、或いは基本的に同じものには同一の符号を付している。それにより、始めに図19を参照して、第1の実施の形態から異なる部分についてのみ説明する。
Hereinafter, with reference to FIGS. 19 to 24, processing executed in the present embodiment will be described in detail.
FIG. 19 is a flowchart of the MIDI IN process executed as step 109 in FIG. The IN process is executed instead of the IN process shown in FIG. The same or basically the same processing contents as the steps shown in FIG. Accordingly, first, only parts different from the first embodiment will be described with reference to FIG.

本実施の形態では、先ず、ステップ212の判定処理を実行する。その判定がNOであれば次にステップ201の判定処理を実行し、その判定がYESであればステップ213に移行するようになっている。そのステップ201でNOと判定すればここで一連の処理を終了し、YESと判定すればステップ202に移行する。   In the present embodiment, first, the determination process of step 212 is executed. If the determination is NO, the determination process of step 201 is executed next, and if the determination is YES, the process proceeds to step 213. If it is determined NO in step 201, the series of processing is ended here, and if it is determined YES, the process proceeds to step 202.

ステップ219、或いは222の処理を実行した後は、ステップ701に移行する。そのステップ701では、nd.lNoteOffとして現在時刻を格納し、続くステップ702では、nd.iResultの値が2、或いは3か否か判定する。その値が2、及び3の何れかであった場合、判定はYESとなってステップ703に移行し、配列変数iReduceの変数nd、及びデータiChの各値で指定される要素(図中「iReduce[nd.iCh]」と表記)の値を、それまでの値に0.5を加算した値に更新(図中「iReduce[nd.iCh]+=0.5」と表記)した後、一連の処理を終了する。そうでない場合には、つまりその値が2、及び3の何れでもない場合には、判定はNOとなってステップ704に移行する。   After executing the process of step 219 or 222, the process proceeds to step 701. In step 701, nd. The current time is stored as lNoteOff, and in the subsequent step 702, nd. It is determined whether the iResult value is 2 or 3. If the value is either 2 or 3, the determination is YES, the process proceeds to step 703, and the element specified by each value of the variable nd of the array variable iReduce and the data iCh (“iReduce” in the figure). The value of “[nd.iCh]” is updated to a value obtained by adding 0.5 to the previous value (indicated as “iReduce [nd.iCh] + = 0.5” in the figure), Terminate the process. If not, that is, if the value is neither 2 nor 3, the determination is no and the process moves to step 704.

ステップ704では、nd.iResultの値が4か否か判定する。その値が4であった場合、判定はYESとなってステップ705に移行し、配列変数fReduceの変数nd、及びデータiChの各値で指定される要素(図中「fReduce[nd.iCh]」と表記)の値を、それまでの値に0.5を加算した値に更新(図中「fReduce[nd.iCh]+=0.5」と表記)した後、一連の処理を終了する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。   In step 704, nd. It is determined whether the value of iResult is 4. If the value is 4, the determination is YES, the process moves to step 705, and the element specified by each value of the variable nd of the array variable fReduce and the data iCh (“fReduce [nd.iCh]” in the figure). The value of the notation is updated to a value obtained by adding 0.5 to the previous value (indicated as “fReduce [nd.iCh] + = 0.5” in the figure), and then the series of processes is terminated. Otherwise, the determination is no and the series of processing ends here.

本実施の形態では、ステップ205の判定がYESとなると次にステップ706に移行し、変数lDifに、現在時刻(を示す値)からnd.lOnStart(発音開始時刻)の値を引いた値(時間bに対応)を代入する。続くステップ707では、変数lDifの値が定数DELAY_ALLOW未満か否か判定する。押鍵したタイミングの遅れが許容範囲内であった場合、判定はYESとなってステップ708に移行する。そうでない場合には、判定はNOとなってステップ206に移行する。   In the present embodiment, when the determination in step 205 is YES, the process proceeds to step 706, and the variable lDif is changed from the current time (indicating value) to nd. A value (corresponding to time b) obtained by subtracting the value of lOnStart (sounding start time) is substituted. In the following step 707, it is determined whether or not the value of the variable lDif is less than the constant DELAY_ALLOW. If the delay in timing of pressing the key is within the allowable range, the determination is yes and the process proceeds to step 708. Otherwise, the determination is no and the process moves to step 206.

ステップ708では、nd.iStatusとして1、nd.iResultとして2をそれぞれ格納する。その格納後はステップ709に移行して、変数lDifの値が定数DELAY_OK未満か否か判定する。その値が定数DELAY_OK未満であった場合、判定はYESとなり、ステップ710でnd.iResultとして1を格納し、更にステップ711でnd.lNoteOnとして現在時刻(曲頭からの演奏時間)、nd.iOnVelとして変数iVelの値をそれぞれ格納した後、一連の処理を終了する。そうでない場合には、判定はNOとなって次にそのステップ711に移行する。   In step 708, nd. iStatus is 1, nd. 2 is stored as iResult respectively. After the storage, the process proceeds to step 709 to determine whether the value of the variable lDif is less than the constant DELAY_OK. If the value is less than the constant DELAY_OK, the determination is yes, and in step 710 nd. 1 is stored as iResult, and nd. lNoteOn as the current time (performance time from the beginning of the song), nd. After storing the value of the variable iVel as iOnVel, a series of processing ends. Otherwise, the determination is no and the process moves to step 711 next.

上記定数DELAY_OKは定数DELAY_ALLOWより小さい値である。そのため、ユーザーが押鍵したタイミングが押鍵すべきタイミングにより近ければ、nd.iResultの値を2から1に更新するようにしている。   The constant DELAY_OK is a value smaller than the constant DELAY_ALLOW. Therefore, if the timing at which the user presses the key is closer to the timing at which the key should be pressed, nd. The value of iResult is updated from 2 to 1.

本実施の形態では、ステップ210の処理を実行した後はステップ712に移行する。そのステップ712では、nd.iStatusとして2、nd.pSDとして変数iPitの値に対応したソースデータのインデクス値、nd.iPitchとして変数iPitの値、nd.iResultとして4、nd.iToneとして変数iChの値、等をそれぞれ格納する。その後にステップ711に移行する。   In the present embodiment, after the process of step 210 is executed, the process proceeds to step 712. In step 712, nd. iStatus is 2, nd. the index value of the source data corresponding to the value of the variable iPit as pSD, nd. The value of the variable iPit as iPitch, nd. iResult is 4, nd. The value of variable iCh, etc. is stored as iTone. Thereafter, the process proceeds to step 711.

図20は、図8に示す再生処理のフローチャートである。その再生処理は、図10に示す再生処理の代わりに実行されるものである。図10に示すステップの処理内容と同じ、或いは基本的に同じものには同一の符号を付している。それにより、図20を参照して、第1の実施の形態から異なる部分についてのみ説明する。   FIG. 20 is a flowchart of the reproduction process shown in FIG. The reproduction process is executed instead of the reproduction process shown in FIG. The same reference numerals are assigned to the same or basically the same processing contents as the steps shown in FIG. Accordingly, only parts different from the first embodiment will be described with reference to FIG.

本実施の形態では、ステップ311の処理を実行した後、ステップ801に移行して、nd.iResultの値が0か否か判定する。その値が0であった場合、判定はYESとなってステップ802に移行し、要素iReduce[nd.iCh]の値をインクリメントした後、ステップ307に移行する。そうでない場合には、判定はNOとなってそのステップ307に移行する。   In the present embodiment, after executing the processing of step 311, the process proceeds to step 801, where nd. It is determined whether the iResult value is 0 or not. If the value is 0, the determination is yes, the process moves to step 802, and the element iReduce [nd. After incrementing the value of iCh], the process proceeds to step 307. Otherwise, the determination is no and the process moves to step 307.

ステップ324の処理を実行した後は次にステップ803に移行する。そのステップ803では、nd.iStatusとして2、nd.pSDとして変数iPitの値に対応したソースデータのインデクス値、nd.iPitchとしてme.Pitch、nd.iResultとして0、nd.iChとして変数iChの値、等をそれぞれ格納する。その後はステップ804に移行して、nd.lOnStartとしてme.lTime、nd.lOffStartとして現在時刻にme.lGateが示す発音時間を加算した値、nd.pMEとして変数meの値、等をそれぞれ格納する。その次に移行するステップ805では、配列変数iOrgCntの変数nd、及びデータiChの各値で指定される要素(図中「iOrgCnt[nd.iCh]」と表記)の値をインクリメントする。ステップ323にはその後に移行する。   After executing the process of step 324, the process proceeds to step 803. In step 803, nd. iStatus is 2, nd. the index value of the source data corresponding to the value of the variable iPit as pSD, nd. i.Pitch me. Pitch, nd. iResult is 0, nd. The value of the variable iCh, etc. are stored as iCh. Thereafter, the process proceeds to step 804, where nd. lOnStart as me. lTime, nd. lOffStart as me. a value obtained by adding the sounding times indicated by lGate, nd. The value of the variable me and the like are stored as pME. In the next step 805, the value of the variable nd of the array variable iOrgCnt and the element specified by each value of the data iCh (indicated as “iOrgCnt [nd.iCh]” in the figure) are incremented. Thereafter, the process proceeds to step 323.

本実施の形態では、ステップ318の判定がYESとなった場合、次にステップ806に移行する。そのステップ806では、変数lDifに、現在時刻(を示す値)からnd.lNoteOn(押鍵時刻)の値を引いた値(時間aに対応)を代入する。続くステップ807では、変数lDifの値が定数DELAY_ALLOW未満か否か判定する。押鍵したタイミングの早さが許容範囲内であった場合、判定はYESとなってステップ808に移行する。そうでない場合には、判定はNOとなってステップ319に移行する。   In the present embodiment, when the determination in step 318 is YES, the process proceeds to step 806. In step 806, the variable lDif is changed from the current time (indicating value) to nd. A value obtained by subtracting the value of lNoteOn (key press time) (corresponding to time a) is substituted. In the subsequent step 807, it is determined whether or not the value of the variable lDif is less than the constant DELAY_ALLOW. If the timing of pressing the key is within the allowable range, the determination is yes and the process proceeds to step 808. Otherwise, the determination is no and the process moves to step 319.

ステップ808では、nd.iStatusとして1、nd.iResultとして3をそれぞれ格納する。その格納後はステップ809に移行して、変数lDifの値が定数DELAY_OK未満か否か判定する。その値が定数DELAY_OK未満であった場合、判定はYESとなり、ステップ810でnd.iResultとして1を格納した後、上記ステップ804に移行する。そうでない場合には、判定はNOとなって次にそのステップ804に移行する。   In step 808, nd. iStatus is 1, nd. 3 is stored as iResult respectively. After the storage, the process proceeds to step 809 to determine whether the value of the variable lDif is less than the constant DELAY_OK. If the value is less than the constant DELAY_OK, the determination is yes, and in step 810, the nd. After storing 1 as iResult, the process proceeds to step 804. Otherwise, the determination is no and the process moves to step 804 next.

図21は、データ保存処理のフローチャートである。その保存処理は、演奏結果を録音データとして保存するための処理であり、図20に示す再生処理を停止(終了)した後に実行される。次に図21を参照して、その保存処理について詳細に説明する。   FIG. 21 is a flowchart of the data storage process. The saving process is a process for saving the performance result as recorded data, and is executed after the reproduction process shown in FIG. 20 is stopped (terminated). Next, the storing process will be described in detail with reference to FIG.

先ず、ステップ901では、演奏結果の保存管理用の変数である録音フラグがセットされているか否か判定する。ユーザーが演奏結果の保存を指示した場合、その録音フラグにはセットされていると見なす値が代入されることから、判定はYESとなってステップ902に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。本実施の形態では、その保存が指示された場合、合奏者全員の演奏結果を対象に保存を行うようにしている。   First, in step 901, it is determined whether or not a recording flag, which is a variable for managing performance results, is set. When the user gives an instruction to save the performance result, a value considered to be set is substituted for the recording flag, so the determination is YES and the process proceeds to step 902. Otherwise, the determination is no and the series of processing ends here. In this embodiment, when the storage is instructed, the performance results of all the ensemblers are stored.

ステップ902では、変数recListに新たな管理データを格納できる場所(空き位置)を示すインデクス値、変数usrListに新たなユーザーデータを格納できる場所を示すインデクス値、変数recDatに新たな保存データを格納できる場所のインデクス値、をそれぞれ代入し、recList.pUserListとして変数usrListの値を格納する。次のステップ903では、usrList.iCh、usrList.pToneとして、対象とするユーザー(合奏者)のトラック番号、音色に対応の音色データを示すデータをそれぞれ格納する。その後はステップ904に移行する。   In step 902, an index value indicating a location (free position) where new management data can be stored in the variable recList, an index value indicating a location where new user data can be stored in the variable usrList, and new saved data can be stored in the variable recDat. The index value of the place is substituted respectively, and recList. The value of the variable usrList is stored as pUserList. In the next step 903, usrList. iCh, usrList. As pTone, the track number of the target user (ensemble player) and data indicating the timbre data corresponding to the timbre are stored. Thereafter, the process proceeds to step 904.

ステップ904では、次の接続鍵盤、つまり他に演奏結果を保存すべきユーザーが存在するか否か判定する。そのようなユーザーが存在する場合、判定はYESとなり、ステップ905に移行して、変数pNxtに新たにユーザーデータを格納できる場所を示インデクス値を代入し、usrList.nextとして変数pNxtの値、pNxt.prevとして変数usrListの値、をそれぞれ格納し、その後に変数usrListに変数pNxtの値を代入し、対象とする合奏者は別の人に変更してから上記ステップ903に戻る。それにより、全てのユーザーを対象にして、ユーザーデータの格納を行う。一方、そうでない場合には、判定はNOとなってステップ906に移行する。   In step 904, it is determined whether or not there is a next connected keyboard, that is, another user who should save the performance result. If such a user exists, the determination is YES, the process proceeds to step 905, and an index value indicating a place where user data can be newly stored is substituted into the variable pNxt. Next, the value of the variable pNxt, pNxt. The value of the variable usrList is stored as prev, and then the value of the variable pNxt is substituted into the variable usrList, and the target ensembler is changed to another person before returning to Step 903. Thereby, user data is stored for all users. On the other hand, if not, the determination is no and the process moves to step 906.

ステップ906以降では、発音データから保存データを作成して格納するための処理が行われる。
先ず、ステップ906では、変数ndに先頭位置の発音データを指定するインデクス値を代入する。続くステップ907では、recDat.iChとしてnd.iCh、recDat.iPitchとしてnd.iPitch、recDat.iOnVelとしてnd.iOnVel、recDat.iResultとしてnd.iResult、recDat.iOnStartとしてnd.iOnStart、recDat.iOffStartとしてnd.iOffStart、recDat.iNoteOnとしてnd.iNoteOn、recDat.iNoteOffとしてnd.iNoteOff、をそれぞれ格納する。
In step 906 and subsequent steps, processing for creating and storing saved data from the pronunciation data is performed.
First, in step 906, an index value for designating the pronunciation data at the head position is substituted for the variable nd. In the subsequent step 907, recDat. iCh as nd. iCh, recDat. As iPitch, nd. iPitch, recDat. iOnVel as nd. iOnVel, recDat. nd. iResult, recDat. iOnStart as nd. iOnStart, recDat. iOffStart as nd. iOffStart, recDat. iNoteOn as nd. iNoteOn, recDat. iNoteOff as nd. iNoteOff is stored respectively.

ステップ907に続くステップ908では、変数ndで指定される発音データの次に位置する発音データが存在するか否か判定する。その次に位置する発音データが存在しない場合、つまり保存データの格納が完了した場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなり、ステップ909に移行して、変数pNxtに次の保存データを格納する場所を示すインデクス値を代入し、recDat.nextとして変数pNxtの値、pNxt.prevとして変数recDatの値、をそれぞれ格納し、その後に変数recDatに変数pNxtの値、変数ndにnd.pNextをそれぞれ代入してから上記ステップ907に戻る。   In step 908 following step 907, it is determined whether or not there is sound generation data positioned next to the sound generation data specified by the variable nd. If there is no next sounding data, that is, if the storage of the stored data is completed, the determination is no, and the series of processing ends here. Otherwise, the determination is yes, the process moves to step 909, and an index value indicating the location where the next stored data is stored is substituted into the variable pNxt, and recDat. Next, the value of the variable pNxt, pNxt. The value of variable recDat is stored as prev, and then the value of variable pNxt is stored in variable recDat and nd. After pNext is assigned, the process returns to step 907.

上述したようにして本実施の形態では、演奏結果を保存データ(録音データ)として保存できるようにしている。このことから、その録音データ再生、及びその録音データを用いた発音ガイド等を行えるようにさせている。次に図22、図23を参照して、それらを実現させるために実行される処理について詳細に説明する。前者を実現させるための処理は「録音データ再生処理」、後者を実現させるための処理は「録音データガイド再生処理」とそれぞれ呼ぶことにする。それらの処理は図10に示す再生処理と同様に、図8に示す全体処理の実行時に起動される。その停止が指示された場合、対応する再生停止フラグがオンされる。また、所望のパートを選択できるようにさせている。その選択はトラック番号を指定して行い、指定されたトラック番号は変数iMyChに代入している。   As described above, in the present embodiment, performance results can be saved as saved data (recorded data). Therefore, it is possible to reproduce the recorded data and to generate a pronunciation guide using the recorded data. Next, with reference to FIG. 22 and FIG. 23, the process performed in order to implement | achieve them is demonstrated in detail. The process for realizing the former is called “recorded data reproduction process”, and the process for realizing the latter is called “recorded data guide reproduction process”. These processes are started when the entire process shown in FIG. 8 is executed, similarly to the reproduction process shown in FIG. When the stop is instructed, the corresponding reproduction stop flag is turned on. In addition, a desired part can be selected. The selection is performed by designating the track number, and the designated track number is substituted into the variable iMyCh.

図22は、録音データ再生処理のフローチャートである。始めに図22を参照して、その再生処理について詳細に説明する。
先ず、ステップ1001では、変数rdに、録音データのなかで先頭に位置する保存データの格納場所を示すインデクス値を代入する。続くステップ1002では、上記再生停止フラグがオンとなっているか否か判定する。そのフラグがオンされている場合、判定はYESとなり、ステップ1003で発音データ全てのデータiStatusの値を0に更新した後、一連の処理を終了する。そうでない場合には、判定はNOとなってステップ1004に移行する。
FIG. 22 is a flowchart of the recorded data reproduction process. First, the reproduction process will be described in detail with reference to FIG.
First, in step 1001, an index value indicating the storage location of the stored data located at the head of the recording data is substituted into the variable rd. In the following step 1002, it is determined whether or not the reproduction stop flag is on. If the flag is turned on, the determination is yes, and after updating the values of all the sound generation data iStatus to 0 in step 1003, the series of processing ends. Otherwise, the determination is no and the process moves to step 1004.

ステップ1004では、変数AllOffに1を代入し、変数ndに、先頭に位置する発音データのインデクス値を代入する。次のステップ1005では、変数ndの値で指定される発音データが存在しないか否か判定する。その発音データが存在しない場合、判定はYESとなってステップ1014に移行する。そうでない場合には、判定はNOとなってステップ1006に移行する。   In step 1004, 1 is substituted into the variable AllOff, and the index value of the pronunciation data located at the head is substituted into the variable nd. In the next step 1005, it is determined whether there is sound generation data specified by the value of the variable nd. If the pronunciation data does not exist, the determination is yes and the process proceeds to step 1014. Otherwise, the determination is no and the process moves to step 1006.

ステップ1006では、nd.iStatusの値が0以外か否か、つまり変数ndの値で指定される発音データによって楽音を発音させていないか否か判定する。楽音を発音させていない場合、判定はYESとなり、ステップ1008で変数AllOffに0を代入してからステップ1009に移行する。そうでない場合には、判定はNOとなってステップ1007に移行し、変数ndにnd.pNextを代入した後、上記ステップ1005に戻る。   In step 1006, nd. It is determined whether or not the iStatus value is other than 0, that is, whether or not a musical sound is not generated by the sound generation data specified by the value of the variable nd. If the musical sound is not sounded, the determination is yes, and in step 1008, 0 is substituted into the variable AllOff, and the process proceeds to step 1009. Otherwise, the determination is no and the process proceeds to step 1007 where the variable nd is set to nd. After pNext is substituted, the process returns to step 1005.

ステップ1009では、nd.iChの値が変数iMyChの値と一致するか否か判定する。それらの値が一致する場合、判定はYESとなってステップ1012に移行する。そうでない場合には、判定はNOとなってステップ1010に移行する。   In step 1009, nd. It is determined whether or not the value of iCh matches the value of the variable iMyCh. If the values match, the determination is yes and the process moves to step 1012. Otherwise, the determination is no and the process moves to step 1010.

ステップ1010では、nd.lNoteOffが示す離鍵時刻が現在時刻より前か否か判定する。その離鍵時刻が現在時刻より前であった場合、判定はYESとなり、対応する楽音を消音させるべきとして、ステップ1011でnd.iStatusとして−1を格納した後、上記ステップ1007に移行する。そうでない場合には、判定はNOとなってそのステップ1007に移行する。   In step 1010, nd. It is determined whether the key release time indicated by lNoteOff is before the current time. If the key release time is before the current time, the determination is YES, and the corresponding musical sound should be muted. After storing −1 as iStatus, the process proceeds to step 1007. Otherwise, the determination is no and the process moves to step 1007.

ステップ1012では、nd.lOffStartが示す消音開始時刻が現在時刻より前か否か判定する。その開始時刻が現在時刻より前であった場合、判定はYESとなり、対応する楽音を消音させるべきとして、ステップ1013でnd.iStatusとして−1を格納した後、上記ステップ1007に移行する。そうでない場合には、判定はNOとなってそのステップ1007に移行する。   In step 1012, nd. It is determined whether the mute start time indicated by lOffStart is before the current time. If the start time is before the current time, the determination is YES, and the corresponding musical sound should be muted. After storing −1 as iStatus, the process proceeds to step 1007. Otherwise, the determination is no and the process moves to step 1007.

上記ステップ1005の判定がYESとなって移行するステップ1014では、変数AllOffの値が1と一致し、且つ変数rdの値で指定される保存データが存在しない(直前に対象としていた保存データが最後のもの)か否か判定する。その値が1と一致し、且つその保存データが存在しない場合、判定はYESとなり、ここで一連の処理を終了する。そうでない場合には、判定はNOとなってステップ1015に移行する。   In step 1014 where the determination in step 1005 is YES and the process proceeds to step 1014, the value of the variable AllOff matches 1 and there is no storage data specified by the value of the variable rd (the storage data targeted immediately before is the last one). Whether or not). If the value matches 1 and the stored data does not exist, the determination is yes, and the series of processing ends here. Otherwise, the determination is no and the process moves to step 1015.

ステップ1015では、変数lTimeに、rd.lNoteOnの値(押鍵時刻)を代入する。続くステップ1016では、変数lTimeの値が示す押鍵時刻が現在時刻(再生開始からの時間)より前か否か判定する。その押鍵時刻(押鍵すべきタイミング)が現在時刻より前であった場合、判定はYESとなってステップ1017に移行する。そうでない場合には、判定はNOとなって上記ステップ1002に戻る。   In step 1015, the variable lTime is set to rd. The value of lNoteOn (key pressing time) is substituted. In the following step 1016, it is determined whether or not the key pressing time indicated by the value of the variable lTime is before the current time (time from the start of reproduction). If the key pressing time (timing to press the key) is before the current time, the determination is yes and the process proceeds to step 1017. Otherwise, the determination is no and the process returns to step 1002.

ステップ1017では、変数ndに、先頭に位置する発音データのインデクス値を代入する。nd.pPrevとしてそれまで最後に位置していた発音データのインデクス値を格納し、その発音データ中のデータpNextは変数ndの値に更新する。nd.pNextとしては、最後に位置する発音データであることを示す値を格納する。その格納後に移行するステップ1018では、nd.iStatusとして2、nd.pSDとしてrd.iPitch、rd.iChに対応するデータ、nd.iPitchとしてrd.iPitch、nd.iResultとして0、nd.iChとしてrd.iChをそれぞれ格納する。次のステップ1019では、nd.lOnStartとして現在時刻、nd.lOffStartとして、現在時刻に、rd.lOffStartの値からrd.lOnStartの値を引いた値(発音時間)を加算した値、などをそれぞれ格納する。その後は、ステップ1020で変数rdにrd.nextを代入してから上記ステップ1002に戻る。   In step 1017, the index value of the pronunciation data located at the head is substituted for the variable nd. nd. The index value of the pronunciation data that has been positioned last is stored as pPrev, and the data pNext in the pronunciation data is updated to the value of the variable nd. nd. As pNext, a value indicating the sound data positioned at the end is stored. In step 1018 to which the process proceeds after the storage, nd. iStatus is 2, nd. prd as rd. iPitch, rd. data corresponding to iCh, nd. rd. iPitch, nd. iResult is 0, nd. iCh as rd. Each iCh is stored. In the next step 1019, nd. current time as lOnStart, nd. lOffStart, at the current time, rd. From the value of lOffStart, rd. A value obtained by adding a value (sounding time) obtained by subtracting the value of lOnStart is stored. Thereafter, in step 1020, the rd. After substituting next, the process returns to step 1002.

図23は、上記録音データガイド再生処理のフローチャートである。次に図23を参照して、そのガイド再生処理について詳細に説明する。この図23では、図20に示す再生処理で実行されるステップの処理内容と同じ、或いは基本的に同じステップには同一の符号を付している。それにより、図20に示す再生処理から異なる部分についてのみ詳細に説明する。   FIG. 23 is a flowchart of the recorded data guide reproduction process. Next, the guide reproduction process will be described in detail with reference to FIG. In FIG. 23, the same reference numerals are given to the same or basically the same steps as the processing contents of the steps executed in the reproduction processing shown in FIG. Accordingly, only different portions from the reproduction process shown in FIG. 20 will be described in detail.

この録音データガイド再生処理では、先ず、ステップ1101において、変数rdに録音データのなかで先頭に位置する保存データを指定するインデクス値を代入し、変数iMyChにユーザーが指定のチャンネル番号(トラック番号)を代入する。その後はステップ302に移行する。   In this recording data guide reproduction process, first, in step 1101, an index value for designating the storage data located at the head of the recording data is substituted for the variable rd, and the channel number (track number) designated by the user for the variable iMyCh. Is assigned. Thereafter, the process proceeds to step 302.

ステップ308で変数AllOffに0を代入した後はステップ1102に移行して、nd.iChの値が変数iMyChの値と一致するか否か判定する。それらの値が一致する場合、判定はYESとなってステップ1105に移行する。そうでない場合には、判定はNOとなってステップ1103に移行する。   After substituting 0 for the variable AllOff in step 308, the process proceeds to step 1102, where nd. It is determined whether or not the value of iCh matches the value of the variable iMyCh. If these values match, the determination is yes and the process moves to step 1105. Otherwise, the determination is no and the process moves to step 1103.

ステップ1103では、nd.lNoteOffが示す離鍵時刻が現在時刻より前か否か判定する。その離鍵時刻が現在時刻より前であった場合、判定はYESとなり、対応する楽音を消音させるべきとして、ステップ1104でnd.iStatusとして−1を格納した後、上記ステップ309に移行する。そうでない場合には、判定はNOとなってそのステップ309に移行する。   In step 1103, nd. It is determined whether the key release time indicated by lNoteOff is before the current time. If the key release time is before the current time, the determination is YES, and the corresponding musical sound should be muted. After storing −1 as iStatus, the process proceeds to step 309. Otherwise, the determination is no and the process moves to step 309.

ステップ1105では、nd.lOffStartが示す消音開始時刻が現在時刻より前か否か判定する。その開始時刻が現在時刻より前であった場合、判定はYESとなってステップ310に移行する。そうでない場合には、判定はNOとなって上記ステップ309に移行する。   In step 1105, nd. It is determined whether the mute start time indicated by lOffStart is before the current time. If the start time is before the current time, the determination is yes and the process moves to step 310. Otherwise, the determination is no and the process moves to step 309 above.

ステップ801の判定がYESとなって移行するステップ1106では、要素iReduce[iMyCh]に、それまでの値にnd.pME.fPtiorityの値を加算した値を代入する。その後は上記ステップ307に移行する。配列変数iReduceは例えばトラック(チャンネル)毎に押鍵すべき鍵を押鍵しなかった回数をカウントするために用意したものである。   In step 1106 where the determination in step 801 is YES and the process proceeds to step 1106, the element iReduce [iMyCh] is set to the nd. pME. A value obtained by adding the values of fPtiority is substituted. Thereafter, the process proceeds to step 307. The array variable iReduce is prepared, for example, for counting the number of times a key to be pressed is not pressed for each track (channel).

ステップ314の判定がNOとなって移行するステップ1107では、変数lTimeにrd.lOnStartを代入する。続くステップ1108では、rd.iChの値が変数iMyChの値と一致するか否か判定する。それらの値が一致する場合、判定はYESとなってステップ1109に移行し、変数lTimeにrd.lNoteOnを代入してから上記ステップ315に移行する。それにより、押鍵すべきとするタイミングを演奏結果から演奏データのそれに変更する。一方、そうでない場合には、判定はNOとなってそのステップ315に移行する。なお、そのようなタイミングの変更は行わないようにしても良い。その場合、ステップ1108、1109を省き、ステップ1107の処理を実行した後、ステップ305に移行させれば良い。   In step 1107, in which the determination in step 314 is NO and the process proceeds, the variable lTime is set to rd. Substitute lOnStart. In the following step 1108, rd. It is determined whether or not the value of iCh matches the value of the variable iMyCh. If these values match, the determination is yes and the process proceeds to step 1109 where the variable lTime is set to rd. After substituting lNoteOn, the process proceeds to step 315. Thereby, the timing at which the key should be pressed is changed from the performance result to that of the performance data. On the other hand, if not, the determination is no and the process moves to step 315. Note that such timing change may not be performed. In that case, steps 1108 and 1109 may be omitted, the process of step 1107 may be executed, and then the process may proceed to step 305.

ステップ315の判定がYESとなると、次にステップ1110に移行して、rd.iChの値が変数変数iMyChの値と一致するか否か判定する。それらの値が一致しない場合、判定はNOとなり、ステップ1115で変数ndに先頭に位置する発音データのインデクス値を代入し、更に要素iOrgCnt[iMyCh]の値をインクリメントしてから上記ステップ317に移行する。そうでない場合には、判定はYESとなってステップ324に移行し、その処理を実行した後はステップ1111に移行する。   If the determination in step 315 is YES, the process proceeds to step 1110, where rd. It is determined whether the value of iCh matches the value of variable variable iMyCh. If these values do not match, the determination is no, and in step 1115, the index value of the pronunciation data located at the head is substituted into the variable nd, and the value of the element iOrgCnt [iMyCh] is further incremented, and then the process proceeds to step 317. To do. Otherwise, the determination is yes and the process moves to step 324, and after the process is executed, the process moves to step 1111.

ステップ1111では、nd.iStatusとして2、nd.pSDとしてrd.iPitch対応したソースデータのインデクス値、nd.iPitchとしてrd.iPitch、nd.iResultとして0、nd.iChとしてrd.iCh、等をそれぞれ格納する。その後はステップ1112に移行して、nd.lOnStartとして変数lTimeの値、nd.lOffStartとして、rd.lOffStartの値からrd.lOnStartの値を引いた値を現在時刻に加算して得られる値、等をそれぞれ格納する。その次に移行するステップ1113では、変数rdにrd.nextを代入する。その代入後はステップ1114に移行して、rd.iChの値が変数変数iMyChの値と一致し、且つrd.iResultの値が4と一致するか否か判定する。それらの値が共に一致する場合、判定はYESとなって再度、ステップ1113の処理を実行する。そうでない場合には、つまりそれらのうちの少なくとも一方が一致しない場合には、判定はNOとなって上記ステップ302に戻る。   In step 1111 nd. iStatus is 2, nd. prd as rd. iPitch source data index value, nd. rd. iPitch, nd. iResult is 0, nd. iCh as rd. iCh, etc. are stored respectively. Thereafter, the process proceeds to step 1112, where nd. The value of the variable lTime as lOnStart, nd. lOffStart, rd. From the value of lOffStart, rd. The value obtained by adding the value obtained by subtracting the value of lOnStart to the current time, etc. are stored. In the next step 1113, the variable rd is set to rd. Next is substituted. After the substitution, the process proceeds to step 1114 and rd. The value of iCh matches the value of variable variable iMyCh, and rd. It is determined whether the value of iResult matches 4. If these values match, the determination is yes and the process of step 1113 is executed again. If not, that is, if at least one of them does not match, the determination is no and the process returns to step 302 above.

図24は、本実施の形態における出力データ作成処理のフローチャートである。その作成処理は、図11に示すステップ403として、図12に示す作成処理の代わりに実行される。次に図24を参照して、本実施の形態における作成処理について詳細に説明する。ここでも他と同様に、図12に示すステップの処理内容と同じ、或いは基本的に同じステップには同一の符号を付すことにより、第1の実施の形態から異なる部分についてのみ説明する。   FIG. 24 is a flowchart of output data creation processing in the present embodiment. The creation process is executed as step 403 shown in FIG. 11 instead of the creation process shown in FIG. Next, with reference to FIG. 24, the creation processing in the present embodiment will be described in detail. Here, as well as others, only the parts different from the first embodiment will be described by assigning the same reference numerals to the same or basically the same processing contents of the steps shown in FIG.

本実施の形態では、ステップ508でサンプリングデータ読み取り処理を実行した後、ステップ1200に移行して、rd.iChの値が変数変数iMyChの値と一致するか否か判定する。それらの値が一致しない場合、判定はNOとなって上記ステップ509に移行する。そうでない場合には、判定はYESとなってステップ1201に移行し、nd.iStatusの値の判定を行う。その値が2と判定した場合、ステップ1202に移行し、変数iVtmpにそれまでの値の2倍の値を代入した後、上記ステップ509に移行する。その値が3と判定した場合には、ステップ1203に移行し、変数iVtmpにそれまでの値の1/2の値を代入した後、そのステップ509に移行する。それにより、押鍵すべきでないタイミングで押鍵していれば楽音の音量を小さく、押鍵すべきタイミングで押鍵していなければ楽音の音量を大きくさせる音量制御を行う。そのような音量制御は上記第2、或いは第3の実施の形態に適用させても良い。   In the present embodiment, after executing the sampling data reading process in step 508, the process proceeds to step 1200, and rd. It is determined whether the value of iCh matches the value of variable variable iMyCh. If the values do not match, the determination is no and the process moves to step 509. Otherwise, the determination is yes and the process moves to step 1201, and nd. The iStatus value is determined. If it is determined that the value is 2, the process proceeds to step 1202, and a value twice as much as the previous value is substituted for the variable iVtmp. If it is determined that the value is 3, the process proceeds to step 1203, and a value ½ of the previous value is substituted for the variable iVtmp, and then the process proceeds to step 509. Thereby, the volume control is performed so that the volume of the musical sound is reduced if the key is depressed at a timing when the key should not be depressed, and is increased when the key is not depressed at the timing when the key is depressed. Such volume control may be applied to the second or third embodiment.

なお、本実施の形態(第1〜第4の実施の形態)は、PC等のデータ処理装置に本発明を適用したものである。その適用は、本実施の形態によるプログラムに相当する楽音発生アプリケーションをデータ処理装置に実行させることで実現させている。そのようなアプリケーションは電子楽器、音源装置等の楽音発生装置用に開発しても良い。開発したアプリケーションは、CD−ROM、DVD、或いは着脱自在なフラッシュメモリ等の記録媒体に記録させて配布しても良い。公衆網等の通信ネットワークを介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してデータ処理装置、或いは楽音発生装置にロードすることにより、その装置に本発明を適用させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。   In the present embodiment (first to fourth embodiments), the present invention is applied to a data processing apparatus such as a PC. The application is realized by causing the data processing apparatus to execute a musical tone generating application corresponding to the program according to the present embodiment. Such an application may be developed for musical tone generators such as electronic musical instruments and tone generators. The developed application may be distributed by being recorded on a recording medium such as a CD-ROM, a DVD, or a removable flash memory. Part or all of the program may be distributed via a communication network such as a public network. In such a case, the user can apply the present invention to the device by acquiring the program and loading it into the data processing device or the musical sound generating device. Therefore, the recording medium may be accessible by a device that distributes the program.

第1の実施の形態による楽音発生装置の構成を説明する図である。It is a figure explaining the structure of the musical tone generator by 1st Embodiment. 音色データの構成を説明する図である。It is a figure explaining the structure of timbre data. ピッチデータの構成を説明する図である。It is a figure explaining the structure of pitch data. ソースデータの構成を説明する図である。It is a figure explaining the structure of source data. 発音データの構成を説明する図である。It is a figure explaining the structure of pronunciation data. 演奏データの構成を説明する図である。It is a figure explaining the structure of performance data. 楽音の発音制御によって発音される楽音を説明する図である。It is a figure explaining the musical sound sounded by the sound generation control of a musical sound. 全体処理のフローチャートである。It is a flowchart of the whole process. MIDI IN処理のフローチャートである。It is a flowchart of a MIDI IN process. 再生処理のフローチャートである。It is a flowchart of a reproduction process. オーディオデータ出力スレッドの実行によって実現される処理のフローチャートである。It is a flowchart of the process implement | achieved by execution of an audio data output thread | sled. 出力データ作成処理のフローチャートである。It is a flowchart of an output data creation process. サンプリングデータ読み取り処理のフローチャートである。It is a flowchart of a sampling data reading process. 楽音の発音制御によって発音される楽音を説明する図である(第2の実施の形態)。It is a figure explaining the musical sound sounded by the sound generation control of a musical sound (2nd Embodiment). 第3の実施の形態でMIDI IN処理、及び再生処理にそれぞれ追加される部分のフローチャートである。10 is a flowchart of a portion added to a MIDI IN process and a reproduction process in the third embodiment. 録音データ管理データの構成を説明する図である。It is a figure explaining the structure of recording data management data. 参加ユーザーデータの構成を説明する図である。It is a figure explaining the structure of participating user data. 保存データの構成を説明する図である。It is a figure explaining the structure of preserve | saved data. MIDI IN処理のフローチャートである(第4の実施の形態)。It is a flowchart of a MIDI IN process (4th Embodiment). 再生処理のフローチャートである(第4の実施の形態)。It is a flowchart of a reproduction | regeneration process (4th Embodiment). データ保存処理のフローチャートである。It is a flowchart of a data preservation | save process. 録音データ再生処理のフローチャートである。It is a flowchart of a recording data reproduction process. 録音データガイド再生処理のフローチャートである。It is a flowchart of a recording data guide reproduction process. 出力データ作成処理のフローチャートである。It is a flowchart of an output data creation process.

符号の説明Explanation of symbols

10 楽音発生装置
11 CPU
12 RAM
13 ROM
14 入力部
15 表示部
16、21 MIDIインターフェース(I/F)
17 オーディオインクリメント(I/F)
20 電子楽器
22 キーボード
30 音源システム
10 Musical sound generator 11 CPU
12 RAM
13 ROM
14 Input unit 15 Display unit 16, 21 MIDI interface (I / F)
17 Audio increment (I / F)
20 Electronic musical instrument 22 Keyboard 30 Sound source system

Claims (5)

演奏操作子群のなかで操作された演奏操作子に応じた楽音を発音させる楽音発音装置において、
前記演奏操作子群のなかで演奏の進行に応じて順次、操作していくべき演奏操作子、及び該演奏操作子を操作しているべき操作期間を該演奏操作子単位で示す演奏情報を取得する演奏情報取得手段と、
前記演奏操作子群への操作を検出するための操作検出手段と、
前記演奏情報取得手段が取得した演奏情報が示す操作期間、及び演奏操作子、並びに該演奏操作子に対する操作の前記操作検出手段による検出結果を基に、該操作期間内に発音させる楽音の種類を1つ以上決定し、該決定した1つ以上の種類の楽音を少なくとも該操作期間内にわたって発音させる発音制御手段と、
を具備することを特徴とする楽音発生装置。
In a musical sound generating device that generates a musical sound according to a performance operator operated in a group of performance operators,
Acquire performance information indicating the performance operators to be operated sequentially in accordance with the progress of the performance in the group of performance operators and the operation period for which the performance operators should be operated in units of the performance operators. Performance information acquisition means to perform,
Operation detecting means for detecting an operation to the performance operator group;
Based on the operation period indicated by the performance information acquired by the performance information acquisition means, the performance operator, and the detection result of the operation detection means by the operation detection means, the type of musical sound to be generated within the operation period is determined. Sound generation control means for determining one or more and generating the determined one or more types of musical sounds for at least the operation period;
A musical sound generating device comprising:
前記発音制御手段は、前記操作期間の演奏操作子に対する操作開始を前記操作検出手段により検出したタイミングが該操作期間の開始タイミングと許容範囲内で一致しているか否かによって異なる種類の楽音を選択し該操作期間内で発音させる、
ことを特徴とする請求項1記載の楽音発生装置。
The sound generation control means selects different types of musical tones depending on whether or not the timing at which the operation detection means detects the operation start of the performance operator during the operation period is within an allowable range with the start timing of the operation period. And make it sound within the operation period,
The musical tone generator according to claim 1.
前記発音制御手段は、前記操作期間の演奏操作子に対する操作を前記操作検出手段が検出していた検出期間が該操作期間内であった場合、該操作期間内の該検出期間外の期間は操作すべき演奏操作子を操作していないことを通知する種類の楽音を発音させる、
ことを特徴とする請求項1、または2記載の楽音発生装置。
When the detection period during which the operation detection unit has detected an operation on the performance operator during the operation period is within the operation period, the sound generation control unit operates during a period outside the detection period within the operation period. To play a kind of musical sound that informs you that you are not operating the performance controls
The musical tone generator according to claim 1 or 2, wherein
前記演奏操作子群が鍵盤であった場合、前記操作検出手段は、該鍵盤を構成する鍵の押鍵時の速さを併せて検出し、
前記発音制御手段は、前記操作検出手段が検出した速さを考慮して前記操作期間内で発音させる楽音の操作を行う、
ことを特徴とする請求項1、2、または3記載の楽音発生装置。
When the performance operator group is a keyboard, the operation detection means also detects the speed at the time of pressing a key constituting the keyboard,
The sound generation control means performs an operation of a musical sound to be generated within the operation period in consideration of the speed detected by the operation detection means.
The musical tone generator according to claim 1, 2, or 3.
演奏操作子群のなかで操作された演奏操作子に応じた楽音を発音させる楽音発音装置に実行させるプログラムであって、
前記演奏操作子群のなかで演奏の進行に応じて順次、操作していくべき演奏操作子、及び該演奏操作子を操作しているべき操作期間を該演奏操作子単位で示す演奏情報を取得する機能と、
前記演奏操作子群への操作を検出するための機能と、
前記取得する機能により取得した演奏情報が示す操作期間、及び演奏操作子、並びに該演奏操作子に対する操作の前記検出するための機能による検出結果を基に、該操作期間内に発音させる楽音の種類を1つ以上決定し、該決定した1つ以上の種類の楽音を少なくとも該操作期間にわたって発音させる機能と、
を実現させるためのプログラム。
A program to be executed by a musical sound generating device for generating a musical sound according to a performance operator operated in a group of performance operators,
Acquire performance information indicating the performance operators to be operated sequentially in accordance with the progress of the performance in the group of performance operators and the operation period for which the performance operators should be operated in units of the performance operators. Function to
A function for detecting an operation on the group of performance operators;
Based on the operation period indicated by the performance information acquired by the acquired function, the performance operator, and the detection result by the function for detecting the operation on the performance operator, the type of musical sound to be generated within the operation period A function for generating one or more of the determined sounds and at least one of the determined types of musical sounds for at least the operation period;
A program to realize
JP2005333101A 2005-11-17 2005-11-17 Musical sound generator and program Expired - Fee Related JP4770419B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005333101A JP4770419B2 (en) 2005-11-17 2005-11-17 Musical sound generator and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005333101A JP4770419B2 (en) 2005-11-17 2005-11-17 Musical sound generator and program

Publications (2)

Publication Number Publication Date
JP2007140067A true JP2007140067A (en) 2007-06-07
JP4770419B2 JP4770419B2 (en) 2011-09-14

Family

ID=38203012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005333101A Expired - Fee Related JP4770419B2 (en) 2005-11-17 2005-11-17 Musical sound generator and program

Country Status (1)

Country Link
JP (1) JP4770419B2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009086084A (en) * 2007-09-28 2009-04-23 Casio Comput Co Ltd Device for supporting performance practice, and program of processing performance practice support
JP2009115987A (en) * 2007-11-06 2009-05-28 Casio Comput Co Ltd Performance practice support device and performance practice support processing program
WO2009150948A1 (en) * 2008-06-10 2009-12-17 株式会社コナミデジタルエンタテインメント Audio processing device, audio processing method, information recording medium, and program
JP2010243617A (en) * 2009-04-02 2010-10-28 Casio Computer Co Ltd Musical performance guiding device and program
US20210193093A1 (en) * 2019-12-19 2021-06-24 Yamaha Corporation Keyboard device and sound generation control method

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0667653A (en) * 1992-06-15 1994-03-11 Casio Comput Co Ltd Electronic musical instrument
JPH08160948A (en) * 1994-12-05 1996-06-21 Yamaha Corp Electronic musical instrument with playing operation instruction function
JPH10232676A (en) * 1997-02-21 1998-09-02 Yamaha Corp Automatic performing device
JP2001198353A (en) * 2000-01-19 2001-07-24 Sega Corp Music game machine
JP2002189466A (en) * 2000-12-21 2002-07-05 Casio Comput Co Ltd Performance training apparatus and performance training method
JP2004240254A (en) * 2003-02-07 2004-08-26 Kawai Musical Instr Mfg Co Ltd Electronic musical instrument

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0667653A (en) * 1992-06-15 1994-03-11 Casio Comput Co Ltd Electronic musical instrument
JPH08160948A (en) * 1994-12-05 1996-06-21 Yamaha Corp Electronic musical instrument with playing operation instruction function
JPH10232676A (en) * 1997-02-21 1998-09-02 Yamaha Corp Automatic performing device
JP2001198353A (en) * 2000-01-19 2001-07-24 Sega Corp Music game machine
JP2002189466A (en) * 2000-12-21 2002-07-05 Casio Comput Co Ltd Performance training apparatus and performance training method
JP2004240254A (en) * 2003-02-07 2004-08-26 Kawai Musical Instr Mfg Co Ltd Electronic musical instrument

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009086084A (en) * 2007-09-28 2009-04-23 Casio Comput Co Ltd Device for supporting performance practice, and program of processing performance practice support
JP2009115987A (en) * 2007-11-06 2009-05-28 Casio Comput Co Ltd Performance practice support device and performance practice support processing program
WO2009150948A1 (en) * 2008-06-10 2009-12-17 株式会社コナミデジタルエンタテインメント Audio processing device, audio processing method, information recording medium, and program
JP2009300496A (en) * 2008-06-10 2009-12-24 Konami Digital Entertainment Co Ltd Audio processing device, audio processing method, and program
KR101168322B1 (en) * 2008-06-10 2012-07-24 가부시키가이샤 코나미 데지타루 엔타테인멘토 Audio processing device, audio processing method, and information recording medium
JP2010243617A (en) * 2009-04-02 2010-10-28 Casio Computer Co Ltd Musical performance guiding device and program
US20210193093A1 (en) * 2019-12-19 2021-06-24 Yamaha Corporation Keyboard device and sound generation control method
US11657786B2 (en) * 2019-12-19 2023-05-23 Yamaha Corporation Keyboard device and sound generation control method

Also Published As

Publication number Publication date
JP4770419B2 (en) 2011-09-14

Similar Documents

Publication Publication Date Title
US5491751A (en) Intelligent accompaniment apparatus and method
JP4655812B2 (en) Musical sound generator and program
US9165546B2 (en) Recording and playback device capable of repeated playback, computer-readable storage medium, and recording and playback method
WO1995035562A1 (en) Automated accompaniment apparatus and method
US20050257667A1 (en) Apparatus and computer program for practicing musical instrument
JP4770419B2 (en) Musical sound generator and program
JP5228315B2 (en) Program for realizing automatic accompaniment generation apparatus and automatic accompaniment generation method
JP4525591B2 (en) Performance evaluation apparatus and program
JP3649014B2 (en) Performance data file playback setting control device
JP4853054B2 (en) Performance data editing apparatus and program
JP5200368B2 (en) Arpeggio generating apparatus and program for realizing arpeggio generating method
JP4651128B2 (en) Performance device, performance method, and computer program for performance
JP4978176B2 (en) Performance device, performance realization method and program
JP4648177B2 (en) Electronic musical instruments and computer programs
JP4205563B2 (en) Performance device, performance method, and computer program for performance
JP5402167B2 (en) Arpeggio generating apparatus and program for realizing arpeggio generating method
JP3624850B2 (en) Performance processing apparatus, control method therefor, and program
JP5568866B2 (en) Music signal generator
JP3758041B2 (en) Musical sound control data generator
JP4978170B2 (en) Performance device and program
JP3837994B2 (en) Musical score data conversion apparatus and recording medium
JP4873307B2 (en) Program for realizing automatic accompaniment generation apparatus and automatic accompaniment generation method
JP2005010458A (en) Automatic arpeggio device and computer program applied to the device
JP2006267535A (en) Electronic music device
JP2000056772A (en) Waveform reproducing device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101028

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: 20110524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110606

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

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4770419

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees