JP3932038B2 - 演奏練習装置および演奏練習プログラム - Google Patents
演奏練習装置および演奏練習プログラム Download PDFInfo
- Publication number
- JP3932038B2 JP3932038B2 JP2002379980A JP2002379980A JP3932038B2 JP 3932038 B2 JP3932038 B2 JP 3932038B2 JP 2002379980 A JP2002379980 A JP 2002379980A JP 2002379980 A JP2002379980 A JP 2002379980A JP 3932038 B2 JP3932038 B2 JP 3932038B2
- Authority
- JP
- Japan
- Prior art keywords
- practice
- pitch
- data
- sound
- song data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
- Auxiliary Devices For Music (AREA)
Description
【発明の属する技術分野】
本発明は、パーソナルコンピュータを用いたDTM(デスクトップミュージック)装置や電子楽器などに用いて好適な演奏練習装置および演奏練習プログラムに関する。
【0002】
【従来の技術】
従来より、練習曲の曲データを再生して演奏操作を練習させる演奏練習装置が知られている。この種の装置として、例えば特許文献1には、1曲分の曲データと演奏操作に応じて入力される演奏データとを比較して両データの不一致部分を抽出しておき、この曲データの抽出部分を繰り返して演奏データと比較し、両データの一致が検出された時に抽出部分の出力を停止させて1曲分の曲データを出力させるようにして、演奏ミスした部分を間違えなく演奏できるようになるまで繰り返し練習させる技術が開示されている。
また、特許文献2には、曲データを複数の区間に分割して読み出し、各区間毎に曲データと演奏操作に応じて入力される演奏データとを比較して、両データが一致したとき次の区間の曲データを読み出させ、一方、不一致であるときは同一区間の曲データを再び読み出すようにして、演奏ミスした区間をミスせず演奏し得るようになるまで繰り返し練習させてから次の区間に進むようにした技術が開示されている。
【0003】
【特許文献1】
特許公開平5−297794号公報
【特許文献2】
特許公開平5−297795号公報
【0004】
【発明が解決しようとする課題】
ところで、上述した従来の演奏練習装置は、曲データの読み出し形態を変化させて、間違えなく演奏できるようになるまで繰り返し練習させる等の練習環境を提供するものであり、練習曲の曲データそのものを変化させてバリエーションに富んだ練習形態を具現することができない、という問題がある。
そこで本発明は、このような事情に鑑みてなされたもので、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる演奏練習装置および演奏練習プログラムを提供することを目的としている。
【0005】
【課題を解決するための手段】
上記目的を達成するため、請求項1に記載の発明では、練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段と、前記曲データ記憶手段に記憶されるオリジナル曲データが表す各音の音高に対して所定のオフセット値を加算して練習用曲データを生成する加算手段と、前記オリジナル曲データの各音の音高が黒鍵に対応する音高か否か判定する判定手段と、この判定手段により前記オリジナル曲データが表わす各音のうち、音高が黒鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を黒鍵に対応する音高に変換するとともに、前記音高が白鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を白鍵に対応する音高に変換する変換手段と、を具備することを特徴とする。
【0006】
請求項2に記載の発明では、請求項1記載の演奏練習装置において、前記変換手段は、前記判定手段により前記オリジナル曲データが表わす各音のうち、音高が黒鍵に対応する音と判定された場合に、当該音に対応する前記練習曲データを表わす音の音高が黒鍵に対応するか否かを判定するとともに、当該判定結果が白鍵である場合にのみ、前記練習曲データを表わす音の音高を黒鍵に対応する音高に変換する、ことを特徴とする。
【0007】
請求項3に記載の発明では、請求項1記載の演奏練習装置において、前記変換手段は、前記判定手段により前記オリジナル曲データが表わす各音のうち、音高が白鍵に対応する音と判定された場合に、当該音に対応する前記練習曲データを表わす音の音高が黒鍵に対応するか否かを判定するとともに、当該判定結果が黒鍵である場合にのみ、前記練習曲データを表わす音の音高を白鍵に対応する音高に変換する、ことを特徴とする。
【0008】
請求項4に記載の発明では、請求項1記載の演奏練習装置において、さらに前記オフセット値を外部より設定するオフセット値設定手段を有することを特徴とする。
【0009】
請求項5に記載の発明では、練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段と、前記記憶手段に記憶されたオリジナル曲データを表わす各音の音高から、最高音高値および最低音高値を抽出する抽出手段と、前記抽出手段によって抽出された最高音高値から最低音高値を逸脱しない範囲で前記オリジナル曲データが表す各音の音高をランダムに変更して練習曲データを生成する練習データ生成手段と、を具備することを特徴とする。
【0010】
請求項6に記載の発明では、請求項5記載の演奏練習装置において、前記抽出手段は、前記記憶手段に記憶されたオリジナル曲データの範囲を指定する範囲指定手段を含み、この範囲指定手段にて範囲指定された前記オリジナル曲データを表わす各音の音高から、最高音高値および最低音高値を抽出することを特徴とする。
【0011】
請求項7に記載の発明では、練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段を有する演奏練習装置に用いられる演奏練習プログラムであって、前記曲データ記憶手段に記憶されるオリジナル曲データが表す各音の音高に対して所定のオフセット値を加算して練習用曲データを生成するステップと、前記オリジナル曲データの各音の音高が黒鍵に対応する音高か否か判定するステップと、前記オリジナル曲データが表わす各音のうち、音高が黒鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を黒鍵に対応する音高に変換するとともに、前記音高が白鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を白鍵に対応する音高に変換するステップと、を実行させることを特徴とする。
【0012】
請求項8に記載の発明では、練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段を有する演奏練習装置に用いられる演奏練習プログラムであって、前記記憶手段に記憶されたオリジナル曲データを表わす各音の音高から、最高音高値および最低音高値を抽出するステップと、前記抽出された最高音高値から最低音高値を逸脱しない範囲で前記オリジナル曲データが表す各音の音高をランダムに変更して練習曲データを生成するステップと、を実行させることを特徴とする。
【0015】
本発明では、練習曲を形成する各音を表す曲データの各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、この練習データで演奏練習すると、練習曲の演奏操作に近い形の指使いを練習し得るようになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することが可能になる。
また、本発明では、練習曲を形成する各音を表す曲データの最高音高値および最低音高値を抽出した後、曲データが表す各音の発音タイミングを維持しつつ、抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成するので、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することが可能になる。
【0016】
【発明の実施の形態】
以下、本発明の実施の一形態による演奏練習装置が搭載されたDTM装置を実施例とし、これについて図面を参照して説明する。
A.第1実施例の構成
(1)全体構成
図1は、本発明による第1実施例の構成を示すブロック図である。この図において、10は構成要素1〜8を備えたDTM(デクストップミュージック)装置、20はDTM装置10とMIDI接続される電子楽器である。DTM装置10は、通常モードと強化モードとを備える。DTM装置10は、通常モードに設定された場合、複数の練習曲の内から選択された曲の曲データを電子楽器20にMIDI出力する。強化モードに設定された場合には、選択された曲の曲データの内から、例えば指定小節区間やフレーズ区間など範囲指定された曲データを変化させて練習データを生成し、生成した練習データを電子楽器20にMIDI出力する。
【0017】
電子楽器20は、DTM装置10からMIDI入力される曲データあるいは練習データに応じて、弾くべき鍵を案内する所謂ガイド表示(押鍵案内)を行い、そのガイド表示に従った演奏操作(押離鍵操作)に対応した楽音を発生させてユーザに演奏練習する環境を提供する。
固定的な曲データに従って演奏練習を繰り返し行った場合、ユーザはその曲の演奏に慣れてしまい練習効果が薄れることも有り得る。そこで、本実施例では、DTM装置10を強化モードに設定した場合に、練習曲の曲データそのものを変化させた練習データを生成して、電子楽器20側でユーザが行う演奏練習の形態を変化させるようになっている。
【0018】
(2)DTM装置10の構成
次に、図1を参照してDTM装置10の構成を説明する。図1において、1は後述する演奏練習処理を実行して練習曲の曲データあるいは練習曲の曲データを変化させて得る練習データを、MIDIインタフェース4を介して電子楽器20にMIDI出力するCPUである。2は後述の演奏練習処理および練習データ生成処理を含む各種制御プログラムや各種データを記憶するROMである。ROM2に記憶される各種データには、後述の演奏練習処理を起動した際に表示部8に画面表示されるメニュー画面(不図示)の画面データが含まれる。3はワークエリアおよびバッファエリアを備えるRAMである。RAM3のワークエリアには、各種レジスタ・フラグデータが一時記憶される。
【0019】
RAM3のバッファエリアは、曲データバッファおよび練習データバッファを備える。曲データバッファには、通常モードに設定された場合に、曲選択に応じてROM2から読み出される曲データが格納される。曲データバッファに格納される曲データは、図2(a)に図示するように、曲を形成する各音を表す演奏ノート情報(0)〜(n)からなる。
演奏ノート情報は、曲開始時点からの経過時間で発音タイミングを表すデータtick、音高を表すデータNote#および音長(発音期間)を表すデータGateTimeを備える。曲データバッファに格納される演奏ノート情報は、OrgNotes[i][j]に応じて読み出される。ここで、iは演奏ノート情報(i)を指定する値(0〜n)、jはiによって指定される演奏ノート情報(i)中のデータを指定する値であり、jが「0」の場合にデータtickを、jが「1」の場合にデータNote#を、jが「2」の場合にデータGateTimeをそれぞれ指定する。
【0020】
一方、練習データバッファには、強化モードに設定された場合に、上記曲データバッファに格納された曲データの内から範囲指定された曲データを変化させて得る練習データが格納される。練習データバッファに格納される練習データは、図2(b)に図示するように、練習ノート情報(0)〜(n)からなる。
練習ノート情報は、範囲指定された曲の始端からの経過時間で発音タイミングを表すデータtick、元の音高(対応する演奏ノート情報中の音高)を表すデータOrgNote#、元の音高を変更したデータNote#および音長を表すデータGateTimeを備える。練習データバッファに格納される練習ノート情報は、TrainNotes[i][j]に応じて読み出される。ここで、iは練習ノート情報(i)を指定する値(0〜n)、jはiによって指定される練習ノート情報(i)中のデータを指定する値であり、jが「0」の場合にデータtickを、jが「1」の場合にデータOrgNote#を、jが「2」の場合にデータNote#を、jが「3」の場合にデータGateTimeをそれぞれ指定する。
【0021】
MIDIインタフェース4は、CPU1の制御の下に、電子楽器20にMIDIデータをシリアル転送する。マウス6は右ボタンおよび左ボタンを備え、例えば表示画面上に配置されるアイコン上にマウスカーソルをポインティングさせた状態で左ボタンを押下する周知のクリック操作に応じてクリックイベントを発生させたり、左ボタンを押しながらマウスカーソルを移動させて範囲指定する周知のドラッグ操作に応じたイベントを発生する。7はキー入力操作に応じたキーイベントを発生するキーボードである。表示部8はLCDパネル等から構成され、CPU1から供給される表示制御信号に応じて、メニュー画面や選択された練習曲の楽譜を画面表示する。
【0022】
B.第1実施例の動作
次に、図3〜図5を参照して第1実施例の動作について説明する。以下では、最初に全体動作として演奏練習処理の動作について説明し、続いて演奏練習処理からコールされる練習データ生成処理の動作について順次説明する。
【0023】
(1)演奏練習処理の動作
DTM装置10の起動に応じて表示部8に表示されるメインメニュー画面(不図示)から演奏練習処理の実行が指示されると、CPU1は図3に示す演奏練習処理を実行してステップSA1に処理を進め、演奏練習処理下のメニュー画面を表示部8に表示する。図示していないが、メニュー画面には通常モードアイコン、強化モードアイコンおよび終了アイコンが設けられており、これらアイコンにマウス6のマウスカーソルをポインティングさせてクリック操作することで、クリック操作されたアイコンに対応する処理が実行されるようになっている。
【0024】
メニュー画面でアイコンがクリック操作されなければ、ステップSA2〜SA4の各判断結果は「NO」となり、表示部8にメニュー画面を画面表示する状態を維持し続けるが、終了アイコンをクリック操作した場合には、そのクリックイベントに基づきステップSA4の判断結果が「YES」となり、本処理を終えてメインメニュー画面(不図示)の表示状態に復帰する。
【0025】
メニュー画面中の通常モードアイコンをクリック操作した場合には、そのクリックイベントに基づきステップSA2の判断結果が「YES」となり、ステップSA5に進む。ステップSA5では、ROM2に記憶される練習曲の曲目を画面表示し、その中で選択された曲目の曲データをROM2から読み出してRAM3の曲データバッファに格納する曲選択処理を実行する。
【0026】
次いで、ステップSA6に進むと、CPU1は曲データバッファに格納された曲データ、すなわち演奏ノート情報(0)〜(n)を、曲進行に同期して順次読み出し、これをMIDIインタフェース4に接続される電子楽器20にMIDI出力する曲データ再生処理を実行する。これにより、電子楽器20は、DTM装置10からMIDI入力される曲データに従い、弾くべき鍵を案内する押鍵案内を行ってユーザに演奏練習を促す。
【0027】
次に、メニュー画面中の強化モードアイコンをクリック操作した場合には、そのクリックイベントに基づきステップSA3の判断結果が「YES」となり、ステップSA7に進む。ステップSA7では、上記ステップSA5と同様、選択された曲目の曲データをROM2から読み出してRAM3の曲データバッファに格納する曲選択処理を実行する。続いて、ステップSA8に進むと、選択された曲データを表示部8に楽譜として表示し、その楽譜上で練習データに変化させる範囲、つまり曲データ始端と曲データ終端とをマウス6のドラッグ操作で指定する範囲指定処理を実行する。
【0028】
こうして、曲データ中から練習データに変化させる範囲を指定し終えると、CPU1はステップSA9に進み、指定範囲の曲データを変化させた練習データをRAM3の練習データバッファに格納する練習データ生成処理(後述する)を実行する。この後、ステップSA10に進み、練習データバッファに格納された練習データ、すなわち練習ノート情報(0)〜(n)を、曲進行に同期して順次読み出し、これをMIDIインタフェース4に接続される電子楽器20にMIDI出力する練習データ再生処理を実行する。電子楽器20では、DTM装置10からMIDI入力される練習データに従い、弾くべき鍵を案内する押鍵案内を行ってユーザに演奏練習を促す。これにより、練習曲の曲データそのものを変化させて練習形態を変化させることが可能になる。
【0029】
(2)練習データ生成処理の動作
次に、図4〜図5を参照して練習データ生成処理の動作を説明する。上述したステップSA9を介して本処理が実行されると、CPU1は図4のステップSB1に処理を進める。ステップSB1では、上述の範囲指定処理(ステップSA8)にて指定された曲データ始端の時間を表す始端tickをレジスタTSに、曲データ終端の時間を表す終端tickをレジスタTEにストアする。続いて、ステップSB2に進み、ポインタiOrgおよびポインタiTrainをゼロリセットする。
【0030】
次いで、ステップSB3では、OrgNotes[iOrg]が無効、つまりポインタiOrgで指定される曲データバッファ中の演奏ノート情報(iOrg)が曲終端に達したか、あるいはOrgNotes[iOrg][0]のデータtickがレジスタTEに格納される終端tickを超えたか否かを判断する。曲終端にも達せず、終端tickも超えていなければ、判断結果は「NO」となり、次のステップSB4に進む。ステップSB4では、OrgNotes[iOrg][0]のデータtickがレジスタTSに格納される始端tick以上であるか否かを判断する。ここで、データtickが始端tick以上でなければ、判断結果は「NO」になり、ステップSB8に進み、ポインタiOrgをインクリメントして歩進させた後、上記ステップSB3に戻る。
【0031】
要するに、ステップSB3、SB4では、始端tickから終端tickの範囲に対応するポインタiOrgを探し出す。始端tick以上のポインタiOrgが検索されると、ステップSB4の判断結果が「YES」になり、ステップSB5に進む。ステップSB5では、検索されたポインタiOrgに応じて曲データバッファより読み出されるOrgNotes[iOrg][0](データtick)からレジスタTSに格納される始端tickを減算した結果を、ポインタiTrainに応じて、練習データバッファのTrainNotes[iTrain][0]に書き込む。
【0032】
続いて、ステップSB6では、ポインタiOrgに応じて曲データバッファより読み出されるOrgNotes[iOrg][1](データNote#)を、ポインタiTrainに応じて、練習データバッファのTrainNotes[iTrain][1](データOrgNote#)に書き込む。
こうして、範囲指定された曲データの始端に対応した演奏ノート情報のデータtickおよびデータNote#が、練習データを構成する練習ノート情報のデータtickおよびデータOrgNote#として練習データバッファにコピーされると、ステップSB7、SB8にてポインタiOrgおよびポインタiTrainを歩進させた後、ステップSB3に処理を戻す。
【0033】
以後、範囲指定された曲データの終端に達するまで、ステップSB3〜SB8を繰り返し、曲データを構成する演奏ノート情報のデータtickおよびデータNote#を、練習データを構成する練習ノート情報のデータtickおよびデータOrgNote#として練習データバッファにコピーして行く。
そして、ポインタiOrgで指定される曲データバッファ中の演奏ノート情報(iOrg)が曲終端に達するか、あるいはOrgNotes[iOrg][0]のデータtickがレジスタTEに格納される終端tickを超えると、ステップSB3の判断結果が「YES」になり、ステップSB9に進む。
【0034】
ステップSB9では、ポインタiOrgが曲終端に達した時点のポインタiTrainの値、あるいはOrgNotes[iOrg][0]のデータtickがレジスタTEに格納される終端tickを超えた時点のポインタiTrainの値をレジスタiTrainMaxにストアする。次いで、ステップSB10では、レジスタNoteOffsetに所定値(音高シフト値)をストアし、続くステップSB11では、ポインタiTrainをゼロリセットする。
この後、図5に示すステップSB12に進み、ポインタiTrainがレジスタiTrainMaxを超えたか否か、つまり練習データの終端に達したかどうかを判断するが、この場合、ポインタiTrainをゼロリセットした直後なので、判断結果は「NO」になり、次のステップSB13に進む。
【0035】
ステップSB13では、レジスタNoteOffsetに格納される所定値(音高シフト値)を練習データバッファのTrainNotes[iTrain][1](データOrgNote#)に加算し、それをTrainNotes[iTrain][2](データNote#)として書き込む。
次に、ステップSB14に進むと、練習データバッファのTrainNotes[iTrain][1](データOrgNote#)に対する「12」の剰余値をレジスタOrgBorWにストアする。レジスタOrgBorWに格納される値は、練習データ用に音高シフトさせる前の、曲データの音高を1オクターブ中のどの鍵に対応するかを表すように音名変換したものである。後述するように、データOrgNote#の「12」の剰余値が「1(C#),3(D#),6(F#),8(G#),10(A#)」の場合、レジスタOrgBorWは黒鍵に対応し、上記以外の場合、レジスタOrgBorWは白鍵に対応するものとしている。
【0036】
また、ステップSB14では、練習データバッファのTrainNotes[iTrain][2](データNote#)に対する「12」の剰余値をレジスタTrainBorWにストアする。レジスタTrainBorWに格納される値は、曲データの音高をシフトさせた練習データの音高を音名変換したものであり、上記と同様、データNote#の「12」の剰余値が「1(C#),3(D#),6(F#),8(G#),10(A#)」であれば、レジスタTrainBorWは黒鍵に対応し、上記以外の場合、レジスタTrainBorWは白鍵に対応するものとしている。
【0037】
ステップSB15では、レジスタOrgBorWに格納される値が黒鍵に対応するかどうかを判断する。以下、データOrgNote#が黒鍵に対応する場合と白鍵に対応する場合とに分けて動作を説明する。
<データOrgNote#が黒鍵に対応する場合>
この場合、ステップSB15の判断結果が「YES」になり、ステップSB16に進む。ステップSB16では、レジスタTrainBorWに格納される値、つまりデータNote#が黒鍵に対応するかどうかを判断する。データNote#が黒鍵に対応していれば、データOrgNote#(元の音高)とデータNote#(音高シフトされた音高)とが共に黒鍵となり、鍵盤上の対応関係が維持されているとして、判断結果は「YES」になり、ステップSB21に進み、練習データバッファのTrainNotes[iTrain][3](データGateTime)に、4分音符(480)あるいは8分音符(240)のいずれかの音長に対応する値をストアする。そして、ステップSB22に進み、ポインタiTrainをインクリメントして歩進させた値、上述のステップSB12に処理を戻す。
【0038】
一方、データNote#が白鍵に対応する場合には、上記ステップSB16の判断結果が「NO」となり、ステップSB17に進む。ステップSB17〜SB18では、練習データバッファのTrainNotes[iTrain][2](データNote#)が黒鍵に対応するまで、データNote#をデクリメントして音高シフトさせる。そして、音高シフトされたデータNote#が黒鍵に対応すると、ステップSB17の判断結果が「YES」となり、ステップSB21に進み、練習データバッファのTrainNotes[iTrain][3](データGateTime)に、4分音符(480)あるいは8分音符(240)のいずれかの音長に対応する値をストアする。そして、ステップSB22に進み、ポインタiTrainをインクリメントして歩進させた後、上述のステップSB12に処理を戻す。
【0039】
<データOrgNote#が白鍵に対応する場合>
この場合、ステップSB15の判断結果が「NO」になり、ステップSB19に進む。ステップSB19では、レジスタTrainBorWに格納される値、つまりデータNote#が黒鍵に対応するかどうかを判断する。データNote#が白鍵に対応していれば、データOrgNote#(元の音高)とデータNote#(音高シフトされた音高)とが共に白鍵となり、鍵盤上の対応関係が維持されているとして、判断結果は「NO」になり、ステップSB21に進み、練習データバッファのTrainNotes[iTrain][3](データGateTime)に、4分音符(480)あるいは8分音符(240)のいずれかの音長に対応する値をストアする。そして、ステップSB22に進み、ポインタiTrainをインクリメントして歩進させた値、上述のステップSB12に処理を戻す。
【0040】
一方、データNote#が黒鍵に対応すると、上記ステップSB19の判断結果が「YES」となり、ステップSB20に進み、練習データバッファのTrainNotes[iTrain][2](データNote#)をデクリメントして黒鍵に対応させるよう音高シフトさせる。この後、ステップSB21に進み、練習データバッファのTrainNotes[iTrain][3](データGateTime)に、4分音符(480)あるいは8分音符(240)のいずれかの音長に対応する値をストアする。そして、ステップSB22に進み、ポインタiTrainをインクリメントして歩進させてから上述のステップSB12に処理を戻す。
【0041】
こうして、データOrgNote#とデータNote#との鍵盤上の対応関係が維持されるように、データNote#の音高を設定しながら、データGateTimeを4分音符あるいは8分音符の音長に設定して練習ノート情報を生成して行き、ポインタiTrainがレジスタiTrainMaxを超えると、上述したステップSB12の判断結果が「YES」になり、本処理を完了させて演奏練習処理に復帰する。
【0042】
以上のように、第1実施例によれば、曲データと練習データとの鍵盤上の対応関係が維持されるように、つまり換言すれば曲データのノート遷移を継承するよう曲データの音高をシフトさせて練習データを生成する結果、練習データで演奏練習すると、練習曲の演奏操作に近い形の指使いを練習することになる為、練習曲の曲データそのものを変化させて、曲データとは異なる練習形態を提供することが可能になっている。
【0043】
C.第2実施例の動作
次に、図6〜図7を参照して第2実施例による練習データ生成処理の動作について説明する。第1実施例と同様に、演奏練習処理のステップSA9(図3参照)を介して第2実施例による練習データ生成処理が実行されると、CPU1は図6のステップSC1に処理を進める。ステップSC1では、範囲指定処理(ステップSA8)にて指定された曲データ始端の時間を表す始端tickをレジスタTSに、曲データ終端の時間を表す終端tickをレジスタTEにストアする。続いて、ステップSC2では、ポインタiOrgおよびポインタiTrainをゼロリセットする。次いで、ステップSC3では、レジスタNoteMaxおよびレジスタNoteminをゼロリセットする。
なお、レジスタNoteMaxおよびレジスタNoteminとは、範囲指定された曲データから抽出される最高音高値および最低音高値を一時記憶するためのレジスタである。
【0044】
続いて、ステップSC4に進むと、OrgNotes[iOrg]が無効、つまりポインタiOrgで指定される曲データバッファ中の演奏ノート情報(iOrg)が曲終端に達したか、あるいはOrgNotes[iOrg][0]のデータtickがレジスタTEに格納される終端tickを超えたか否かを判断する。曲終端にも達せず、終端tickも超えていなければ、判断結果は「NO」となり、図7に示すステップSC5に進む。ステップSC5では、OrgNotes[iOrg][0]のデータtickがレジスタTSに格納される始端tick以上であるか否かを判断する。ここで、データtickが始端tick以上でなければ、判断結果は「NO」になり、ステップSC14に進み、ポインタiOrgをインクリメントして歩進させた後、図6のステップSC4に戻る。
【0045】
要するに、ステップSC4、SC5では、始端tickから終端tickの範囲に対応するポインタiOrgを探し出す。始端tick以上のポインタiOrgが検索されると、ステップSC5の判断結果が「YES」になり、ステップSC6に進む。ステップSC6では、検索されたポインタiOrgに応じて曲データバッファより読み出されるOrgNotes[iOrg][0](データtick)からレジスタTSに格納される始端tickを減算した結果を、ポインタiTrainに応じて、練習データバッファのTrainNotes[iTrain][0]に書き込む。
【0046】
続いて、ステップSC7では、ポインタiOrgに応じて曲データバッファより読み出されるOrgNotes[iOrg][1](データNote#)を、ポインタiTrainに応じて、練習データバッファのTrainNotes[iTrain][1](データOrgNote#)に書き込む。そして、ステップSC8では、ポインタiOrgに応じて曲データバッファより読み出されるOrgNotes[iOrg][2](データGateTime)を、ポインタiTrainに応じて、練習データバッファのTrainNotes[iTrain][3](データGateTime)に書き込む。
【0047】
こうして、範囲指定された曲データの始端に対応した演奏ノート情報のデータtick、データNote#およびデータGateTimeを、練習データを構成する練習ノート情報のデータtick、データOrgNote#およびデータGateTimeとして練習データバッファにコピーし終えると、ステップSC9に進み、ポインタiTrainに応じて練習データバッファより読み出されるTrainNotes[iTrain][1](データOrgNote#)が、レジスタNoteMaxより大きいか否かを判断する。大きければ、判断結果は「YES」になり、次のステップSC10に進み、TrainNotes[iTrain][1](データOrgNote#)をレジスタNoteMaxにストアする。一方、小さければ、判断結果が「NO」になり、ステップSC11に進む。
【0048】
ステップSC11では、ポインタiTrainに応じて練習データバッファより読み出されるTrainNotes[iTrain][1](データOrgNote#)が、レジスタNoteminより小さいか否かを判断する。小さければ、判断結果は「YES」になり、次のステップSC12に進み、TrainNotes[iTrain][1](データOrgNote#)をレジスタNoteminにストアする。一方、大きければ、判断結果が「NO」になり、ステップSC13に進む。そして、ステップSC13、SC14にてポインタiOrgおよびポインタiTrainを歩進させてから図6のステップSC4に処理を戻す。
【0049】
このように、ステップSC9〜SC12では、ポインタiTrainが歩進される毎に、練習データバッファから読み出すデータOrgNote#が、レジスタNoteMaxに格納される値より大きければ、そのデータOrgNote#をレジスタNoteMaxに格納し、データOrgNote#がレジスタNoteminに格納される値より小さければ、そのデータOrgNote#をレジスタNoteminに格納することによって、レジスタNoteMaxに最高音高値を、レジスタNoteminに最低音高値を保持させるようになっている。
【0050】
以後、範囲指定された曲データの終端に達するまで、ステップSC4〜SC14を繰り返し、曲データを構成する演奏ノート情報のデータtick、データNote#およびデータGateTimeを、練習データを構成する練習ノート情報のデータtick、データOrgNote#およびデータGateTimeとして練習データバッファにコピーしながら、その過程で検索したデータOrgNote#の最高音高値をレジスタNoteMaxに、最低音高値をレジスタNoteminに格納する。
そして、ポインタiOrgで指定される曲データバッファ中の演奏ノート情報(iOrg)が曲終端に達するか、あるいはOrgNotes[iOrg][0]のデータtickがレジスタTEに格納される終端tickを超えると、図6に示すステップSC4の判断結果が「YES」になり、図6のステップSC15に進む。
【0051】
ステップSC15では、ポインタiOrgが曲終端に達した時点のポインタiTrainの値、あるいはOrgNotes[iOrg][0]のデータtickがレジスタTEに格納される終端tickを超えた時点のポインタiTrainの値をレジスタiTrainMaxにストアする。次いで、ステップSC16では、ポインタiTrainをゼロリセットする。
続いて、ステップSC17〜SC19では、ポインタiTrainがレジスタiTrainMaxを超える迄、ポインタiTrainを歩進させながら、ポインタiTrainに応じて、練習データバッファのTrainNotes[iTrain][2](データNote#)に、Notemin+RANDAM mod(NoteMax−Notemin)を書込んで行く。
【0052】
RANDAM mod(NoteMax−Notemin)とは、RANDAM関数にて生成される整数乱数値の、(NoteMax−Notemin)の剰余、つまり「0」から「NoteMax−Notemin」の範囲でランダムに変化する値となる。これ故、Notemin+RANDAM mod(NoteMax−Notemin)は、最低音高値Noteminから最高音高値NoteMaxの間でランダムに変化する音高値となる。
したがって、ステップSC18では、最低音高値Noteminから最高音高値NoteMaxの間でランダムに変化する音高値を、データNote#として設定するようになっている。
そして、歩進されたポインタiTrainがレジスタiTrainMaxを超えて練習データの終端に達すると、ステップSC17の判断結果が「YES」となり、本処理を終える。
【0053】
このように、第2実施例によれば、範囲指定された曲データを構成する各音のノートオン/ノートオフタイミングを維持しながら、それら各音の音高を、曲データの最高音高値から最低音高値を逸脱しない範囲でランダムに変化させた練習データを生成する結果、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる為、練習曲の曲データそのものを変化させて、曲データとは異なる練習形態を提供することが可能になっている。
【0054】
なお、曲データのノート遷移を継承するよう曲データの音高をシフトさせて練習データを生成する第1実施例と、曲データを構成する各音のノートオン/ノートオフタイミングを維持しながら、それら各音の音高を、曲データの最高音高値から最低音高値を逸脱しない範囲でランダムに変化させた練習データを生成する第2実施例とを組合せ、曲データを構成する各音のノートオン/ノートオフタイミングを維持しつつ、曲データのノート遷移を継承するよう曲データの音高をシフトさせた練習データを生成する態様としても構わず、このようにしても練習曲の押離鍵タイミングで曲データに近い形の指使いを練習することが可能になる。
【0055】
さらに、上述した第1および第2実施例では、曲データを変化させて得た練習データに従って演奏練習するが、これに替えて、曲データを変化させて得た練習データを新たな曲データとして記憶しておき、その新たな曲データを変化させてさらなる練習データを生成する態様にすることもできる。このようにすれば、1つの練習曲の曲データから幾つものバリエーションに富んだ練習データを生成して様々な練習形態による演奏練習を提供し得るようになる。
【0056】
【発明の効果】
請求項1,6に記載の発明によれば、練習曲を形成する各音を表す曲データの各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、この練習データで演奏練習すると、練習曲の演奏操作に近い形の指使いを練習し得るようになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
請求項2,7に記載の発明によれば、練習曲を形成する各音を表す曲データの範囲を指定し、範囲指定された曲データが表す各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、範囲指定された曲データの演奏操作に近い形の指使いを練習し得るようになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
請求項3,8に記載の発明によれば、練習曲を形成する各音を表す曲データの最高音高値および最低音高値を抽出した後、曲データが表す各音の発音タイミングを維持しつつ、抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成するので、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
請求項4,9に記載の発明によれば、練習曲を形成する各音を表す曲データの範囲を指定し、範囲指定された曲データの最高音高値および最低音高値を抽出した後、範囲指定された曲データが表す各音の発音タイミングを維持しつつ、抽出された最高音高値から最低音高値を逸脱しない範囲で当該曲データが表す各音の音高をランダムに変化させた練習データを生成するので、この練習データで演奏練習すると、範囲指定された練習曲の押離鍵タイミングで曲データとは異なる指使いを練習することになる結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる
請求項5,10に記載の発明によれば、練習曲を形成する各音を表す曲データの範囲を指定し、範囲指定された曲データが表す各音の発音タイミングを維持しつつ、それら各音の音高遷移を継承するよう当該曲データの音高を変更してなる練習データを生成するので、この練習データで演奏練習すると、練習曲の押離鍵タイミングで曲データに近い形の指使いを練習する結果、練習曲の曲データそのものを変化させて各様な練習形態を提供することができる。
【図面の簡単な説明】
【図1】本発明による第1実施例の構成を示すブロック図である。
【図2】RAM3に設けられる曲データバッファおよび練習データバッファの構成を説明するための図である。
【図3】演奏練習処理の動作を示すフローチャートである。
【図4】練習データ生成処理の動作を示すフローチャートである。
【図5】練習データ生成処理の動作を示すフローチャートである。
【図6】第2実施例による練習データ生成処理の動作を示すフローチャートである。
【図7】第2実施例による練習データ生成処理の動作を示すフローチャートである。
【符号の説明】
1 CPU
2 ROM
3 RAM
4 MIDIインタフェース
6 マウス
7 キーボード
8 表示部
10 DTM装置
20 電子楽器
Claims (8)
- 練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段と、
前記曲データ記憶手段に記憶されるオリジナル曲データが表す各音の音高に対して所定のオフセット値を加算して練習用曲データを生成する加算手段と、
前記オリジナル曲データの各音の音高が黒鍵に対応する音高か否か判定する判定手段と、
この判定手段により前記オリジナル曲データが表わす各音のうち、音高が黒鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を黒鍵に対応する音高に変換するとともに、前記音高が白鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を白鍵に対応する音高に変換する変換手段と、
を具備することを特徴とする演奏練習装置。 - 前記変換手段は、
前記判定手段により前記オリジナル曲データが表わす各音のうち、音高が黒鍵に対応する音と判定された場合に、当該音に対応する前記練習曲データを表わす音の音高が黒鍵に対応するか否かを判定するとともに、当該判定結果が白鍵である場合にのみ、前記練習曲データを表わす音の音高を黒鍵に対応する音高に変換する、ことを特徴とする請求項1記載の演奏練習装置。 - 前記変換手段は、
前記判定手段により前記オリジナル曲データが表わす各音のうち、音高が白鍵に対応する音と判定された場合に、当該音に対応する前記練習曲データを表わす音の音高が黒鍵に対応するか否かを判定するとともに、当該判定結果が黒鍵である場合にのみ、前記練習曲データを表わす音の音高を白鍵に対応する音高に変換する、ことを特徴とする請求項1記載の演奏練習装置。 - 前記演奏練習装置は、さらに
前記オフセット値を外部より設定するオフセット値設定手段を有することを特徴とする請求項1記載の演奏練習装置。 - 練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段と、
前記記憶手段に記憶されたオリジナル曲データを表わす各音の音高から、最高音高値および最低音高値を抽出する抽出手段と、
前記抽出手段によって抽出された最高音高値から最低音高値を逸脱しない範囲で前記オリジナル曲データが表す各音の音高をランダムに変更して練習曲データを生成する練習データ生成手段と、
を具備することを特徴とする演奏練習装置。 - 前記抽出手段は、前記記憶手段に記憶されたオリジナル曲データの範囲を指定する範囲指定手段を含み、この範囲指定手段にて範囲指定された前記オリジナル曲データを表わす各音の音高から、最高音高値および最低音高値を抽出することを特徴とする請求項5記載の演奏練習装置。
- 練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段を有する演奏練習装置に用いられる演奏練習プログラムであって、
前記曲データ記憶手段に記憶されるオリジナル曲データが表す各音の音高に対して所定のオフセット値を加算して練習用曲データを生成するステップと、
前記オリジナル曲データの各音の音高が黒鍵に対応する音高か否か判定するステップと、
前記オリジナル曲データが表わす各音のうち、音高が黒鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を黒鍵に対応する音高に変換するとともに、前記音高が白鍵に対応する音と判定された音に対応する前記練習曲データを表わす音の音高を白鍵に対応する音高に変換するステップと、
を実行させることを特徴とする演奏練習プログラム。 - 練習曲を形成する各音を表すオリジナル曲データを記憶する曲データ記憶手段を有する演奏練習装置に用いられる演奏練習プログラムであって、
前記記憶手段に記憶されたオリジナル曲データを表わす各音の音高から、最高音高値および最低音高値を抽出するステップと、
前記抽出された最高音高値から最低音高値を逸脱しない範囲で前記オリジナル曲データが表す各音の音高をランダムに変更して練習曲データを生成するステップと、
を実行させることを特徴とする演奏練習プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002379980A JP3932038B2 (ja) | 2002-12-27 | 2002-12-27 | 演奏練習装置および演奏練習プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002379980A JP3932038B2 (ja) | 2002-12-27 | 2002-12-27 | 演奏練習装置および演奏練習プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004212502A JP2004212502A (ja) | 2004-07-29 |
JP3932038B2 true JP3932038B2 (ja) | 2007-06-20 |
Family
ID=32816326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002379980A Expired - Fee Related JP3932038B2 (ja) | 2002-12-27 | 2002-12-27 | 演奏練習装置および演奏練習プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3932038B2 (ja) |
-
2002
- 2002-12-27 JP JP2002379980A patent/JP3932038B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004212502A (ja) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5083225B2 (ja) | 演奏練習装置及びプログラム | |
JPH07271361A (ja) | 自動演奏装置 | |
JP6167542B2 (ja) | 電子装置及びプログラム | |
JP4315120B2 (ja) | 電子音楽装置及びプログラム | |
JPH11296168A (ja) | 演奏情報評価装置、演奏情報評価方法及び記録媒体 | |
JP3932038B2 (ja) | 演奏練習装置および演奏練習プログラム | |
JP3275362B2 (ja) | 演奏練習装置 | |
JP4766142B2 (ja) | 電子音楽装置及びプログラム | |
JP7070538B2 (ja) | プログラム、方法、電子機器、及び演奏データ表示システム | |
JP2007163575A (ja) | 電子楽器及び演奏レベル表示方法 | |
JP2002091443A (ja) | 自動演奏装置 | |
JP4442144B2 (ja) | 演奏支援装置および演奏支援プログラム | |
JP5969421B2 (ja) | 楽器音出力装置及び楽器音出力プログラム | |
CN107799104B (zh) | 演奏装置、演奏方法、记录介质以及电子乐器 | |
JP3654227B2 (ja) | 楽曲データ編集装置及びプログラム | |
JP4696808B2 (ja) | 臨時記号表示装置および臨時記号表示プログラム | |
JP2005049628A (ja) | 音楽教習装置および音楽教習プログラム | |
JP7107720B2 (ja) | 運指表示プログラム | |
JP4281636B2 (ja) | 音楽アミューズメント装置および同装置に適用されるコンピュータプログラム | |
JP3252173B2 (ja) | 演奏練習装置 | |
JP5548975B2 (ja) | 演奏データ生成装置およびプログラム | |
JP3772430B2 (ja) | 演奏データ編集装置 | |
JP2013011658A (ja) | 演奏教習装置およびプログラム | |
JP2005148269A (ja) | 音楽教習装置および音楽教習プログラム | |
JP4877611B2 (ja) | 演奏練習装置および演奏練習プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050512 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061024 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061030 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061110 |
|
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: 20070222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070307 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110323 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110323 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120323 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130323 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130323 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140323 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |