楽音データ補正装置
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、楽音データの時系列から成る演奏情報を加工、修正する楽音データ補正装置に関する。
〔従来の技術〕
電子楽器システムにおいて、変換可能な記録媒体を用いて予め作成したメロディや伴奏などのプログラムソフトを再生することができるものが知られている。このようなプログラムソフトは、鍵盤の音程、押鍵、離鍵のタイミング、押鍵時間幅、押鍵強さ(押鍵速度)等の演奏データの時系列であり、シーケンスソフトとも称されている。このようなシーケンスソフトは、一般には専用の編集機又は簡単な編集機能の付いた電子楽器を用いて編集、作成されるが、音楽的に優れた作品を制作するには、職人芸的なデータ編集作業を必要とし、一般ユーザやミュージシャンにとっては馴染みづらいものである。
〔発明が解決しようとする課題〕
上述のように、演奏データの編集を行って所望の楽曲を得るのは大変難しいが、伴奏和音のタッチデータ(押鍵強度等の押鍵操作に関するデータ)の編集は初心者にとっては特に難しい。すなわち、和音構成各音についてのタッチデータの編集を行う際には、まず演奏データを構成する各楽音データの中から和音を判別する必要があるが、通常は、完全に同一のタイミングで押鍵された複数の楽音データのみが和音とみなされるので、押鍵タイミングにわずかのずれがあると和音とはみなされず、従って和音を識別させるためにディスプレイ等で和音特有の表示(マーク表示、着色表示等)をするようにした場合でも、和音を確実に識別することは困難である。
また、和音のタッチデータの編集に際して、指定範囲の楽音データに対して一律に(単音、和音の区別なく)タッチデータの一種である押鍵強度値の均等な補正を行うようにした技術があるが、このようにすると補正された楽音が全体的に平坦な響きを有するものになってしまう。このため、例えば楽曲全体の流れの中で強弱のメリハリが付いた和音進行が得られるように、和音毎にタッチデータの補正ができるようにすることが従来からの課題とされていた。
そこで本発明は、楽音データの中から和音を確実に検出して和音毎にタッチデータの補正ができるようにして、初心者でも容易かつ確実に和音のタッチデータの編集を行って所望の和音進行を得ることができる楽音データ補正装置を提供することを目的とする。
〔課題を解決するための手段〕
本発明の楽音データ補正装置は、押鍵操作に関するタッチ情報を含む楽音データの時系列から成る演奏情報から、個々の楽音の発音タイミングの差が所定のしきい値よりも小さい楽音データの一群を和音として抽出する和音検出手段と、検出された和音の各タッチ情報から算出される平均値、中央値及び最頻値のうちの何れか1つの値からなる代表値AVを検出する代表値検出手段と、個々のタッチ情報の値TDの上記代表値からの差を所定の比率で圧縮又は伸長した個々のタッチ情報の新たな値を算出する補正演算手段とを具備し、上記和音の各タッチ情報の値を上記新たな値に補正した楽音データを得ることを特徴とする。
〔作 用〕
本発明によれば、押鍵タイミングにずれがあった場合でも、そのタイミングのずれが所定のしきい値内であれば和音は確実に検出され、かつその構成音の各タッチ情報の代表値からの差が所定の比率で圧縮又は伸長された新たな値のタッチ情報が設定される。そして、圧縮又は伸長の比率(補正係数)を変更することにより、タッチ情報の値のばらつきの少ない和音や、ばらつきをより強調した和音が自由に得られる。従って、この装置を用いて例えば押鍵強度値データを補正して、和音構成各音の各押鍵強度値の代表値からの差を圧縮するようにした場合には、楽曲全体の流れの中で強弱のメリハリが効いたきれいな響きを持った和音進行を得ることができる。
〔実施例〕
第1図は、演奏データの編集を行う際に用いられるデータ編集機(以下、「シーケンサ」と称する)の構成を説明するための回路ブロック図である。
このシーケンサは、電子楽器と一体的或いは別体に設けられるものであって、CPU10、ROM11、RAM12、入出力インターフェース13(I/O)及びシステムバス14から成るマイクロコンピュータシステムにより構成されている。入出力インターフェース13には、鍵盤に対応したキースイッチ17及び音色、テンポ等の演奏パラメータ及びデータ加工(補正)のためのパラメータを設定するパネルスイッチ15(PSW)が接続されている。また入出力インターフェース13には、演奏者や編集者にメッセージを知らせるLCD16(液晶ディスプレイ)及び演奏データに対応した楽音制御信号をCPU10から受ける楽音発生回路18が接続されている。楽音発生回路18はピアノ、バイオリンなどに対応したPCM音源を有する複数の楽音発生チャンネルを備え、CPU10からの楽音制御信号に基づいて所定の周波数、波形、振幅、持続時間等を有する楽音信号を形成する。この楽音信号はD−Aコンバータ19(DAC)でアナログ音声信号に変換され、アンプ20及びスピーカ21を通じて再生される。
上述の入出力インターフェース13を介してのキースイッチ17及びパネルスイッチ15からの操作データの取込み及び楽音制御信号の送出は、ROM11に書込まれた入出力ルーチルプログラムをCPU10が実行することにより行われる。ROM11には、後述のシーケンスデータの修正(加工)処理を行うプログラムも記憶されている。RAM12は、CPU10のワークエリア、演算用バッファ及び処理すべき楽音データ群を一時記憶するエリアを含む。
第2図は第1図のシステムにおいて扱われる楽曲データのフォーマットを示す。BAR30は、小節区切りを示すデータフォーマットで、0FFH(H:16進表記)なる内容の1バイトと、内容不定(歩進増加するデータ)の3バイトとから成る。END31は、楽曲終了を示すデータフォーマットで、0FEHなる内容の1バイトと、内容不定の3バイトとから成る。CTR32は、音色の切換、音量の制御、演奏テンポの変更などを示す制御データのフォーマットで、0FDHなる内容の1バイトと、制御内容(対象)を示すデータSCT1バイトと、制御用数値データ2バイトより成る。
TONE33は、発音すべき個々の楽音データを示すフォーマットで、発音すべき鍵番号KNO(0〜127鍵)を示す1バイト、小節区切りからの発音タイミングをクロック数で示すステップタイムSTP(0〜191)1バイト、発音持続時間を示すゲートタイムGATE(0〜255)及び押鍵強さを示すタッチデータTD(0〜127)1バイトから成る。なお押鍵強さは、鍵に設けられた押鍵速度センサによって検出され、ベロシティデータとも称される。
次に第3図は本実施例においてCPU10がアクセスするメモリのマップである。CPU10は、アドレス0H〜3FFFHまではプログラムROM11をアクセスし、それ以外はデータRAM12をアクセスする。RAM12のエリア(4000H〜0FFFFH)は、大きく2つに分けられていて、アドレス4000H〜7FFFHはCPU10がワークエリア及び後述のデータ修正処理のバッファエリアとして使用する。またアドレス8000H〜0FFFFHは、楽曲データの一時記憶に用いる。
楽曲データは、第2図のフォーマットに従って、低位アドレスから高位アドレスに向けて楽曲の進行に従い順次格納される。第3図に例示されているのは、1音4バイトの楽音データであり、キー番号KNO、ステップタイムSTP、ゲートタイムGATE及びタッチデータTDから成る。またこれらの楽音データの間に一定時間間隔で4バイトの小節区切りデータBARが挿入され、楽曲の進行途中で音色や演奏テンポの変更があると、4バイトの制御データ(CTR、SCT、数値2バイト)が変更内容に応じて挿入される。
第4図は、本発明の原理的構成を示す機能ブロック図である。各ブロックは実際にはCPUとメモリ内の蓄積プログラムとによって実現されている。
和音検出のブロック25では、楽音データを入力として、予め設定されたしきい値nよりも隣接音の時間差(ΔSTP)が小さいときに、和音として検出する。次の代表値検出ブロック26では、検出された1つの和音ブロックCHORDについて、タッチデータ(押鍵強度値等)の代表値AVを例えば平均値で検出する。次に、補正値演算ブロック27では、1つの和音ブロックの個々の音のタッチデータについて代表値からの差を、予め設定された補正係数aパーセントに圧縮(又は伸長)した補正値を算出する。aは−100≦a≦100(パーセント)でよいが、100パーセント以上でもよい。補正したタッチデータは元の楽音データ中のタッチデータと入れ換えられ、補正楽音データが得られる。
補正された楽音データに基づいて再生音を得ると、楽曲の全体の流れの中で強弱のメリハリが付き、且つきれいな響きを持った和音進行等が得られる。また補正係数aにマイナスの値を与えると、代表値を中心に例えば押鍵強度の強弱を逆転させることができるため、右手で弾いて入力した楽曲データをあたかも左手で演奏したかのように響かせると言った特殊効果を得ることができる。
以下、第5図〜第10図のフローチャートを参照してタッチデータ補正処理の手順を詳細に説明する。
第5図は第1図に示したシステムの動作を示すメインフロー図である。まずステップ40では、変数、ポインタ等のレジスタの初期設定を行う。次にCPU10は、入出力インターフェース13を介してパネルスイッチ15(PSW)の操作を検出する走査をステップ41で行い、楽曲データを読込みの操作(指示)があればステップ42から読込み処理ルーチン43に進む。
ステップ41の操作検出で楽曲データの送出の指示があれば、ステップ44から送出処理ルーチン45に進む。
パネルスイッチ15の操作検出で楽曲データの補正の指示があれば、ステップ46からダッチデータの補正処理のルーチン47へ進む。
また、パネルスイッチ15の操作が通常の演奏の指示であれば、周知の通常演奏処理等(詳述せず)のルーチン48へ進む。
なお第5図のプログラムはエンドレスになっていて、ステップ41でパネルスイッチ15の操作検出がない場合及び読込み、送出、補正の、通常の各処理ルーチン43、45、47、48が終了すると、ステップ41に戻り、電源オフで終了になるまでは、同じ動作を繰り返す。
第6図は第5図における読込みルーチン43の詳細を示すフローチャートである。なおこのルーチン43の処理終了時には、アドレスポインタPTRは現在RAM12に保存されている楽音データ、制御データ及び小節区切りデータの総バイト数を示すことになる。この際、楽曲終了データは付加されないので、続けて読込み処理ルーチン43を行うと、楽曲データは自動的に連結される。
第6図のステップ51では、入出力インターフェース13を通じて外部からの入力端子を走査し、キースイッチ17等からの入力データがあれば、次のステップ52で1音分に相当する4バイトの楽音データを入出力インターフェース13から読込む。次にステップ53で、読込んだデータが楽曲終了コードであるか否かを判定し、YESであればメインルーチンに復帰する。なお、終了コードは、特定のパネルスイッチ等の操作に基づいて図示しない割込みルーチンが自動的に発生する。この割込みルーチンは、小節区切りコードBARもまた自動的に発生する。
一方、上記ステップS53における判定の結果、読込んだデータが終了コードで無ければ、次のステップ54で、読込まれた4バイトの楽音データをRAM12に転送する。なお転送先のアドレスは、ポインタPTR及びインデックスIDXの各レジスタの値を加算して作成する。IDXは8000H、PTRの初期値は0Hである。
次にステップ55で、ポインタレジスタの内容PTRに1音分のバイト数4を加え、ステップ51に戻り、上記処理を繰返す。
第7図は、第5図の送出処理ルーチン45の詳細を示すフローチャートである。このルーチンでは、まずステップ61でポインタレジスタPTRの値が零か否かを調べ、零でなければステップ62で1音4バイトの楽曲データをRAM12から読出す。読出し元のアドレスは、ポインタレジスタPTRとは異なるポインタレジスタEXPTRの内容にインデックスIDXの値を加算して作成する。EXPTRの初期値は0Hである。
次にステップ63で、読出した1音分の4バイトデータを入出力インターフェース13を通じて例えば楽音発生回路18に送出する。次にステップ64で、ポインレジスタPTRから4を減算し、同時にEXPTRに4を加算してから、ステップ61に戻る。
ステップ61で、ポインタレジスタPTRの値が零であると判定したときには、送出データが無いので、ステップ65で終了コードを入出力インターフェース13を介して送出し、メインルーチンに復帰する。
次に第8図は、第5図の補正終了ルーチンの詳細を示すフローチャートである。まずステップ71では、入出力インターフェース13を介してLCD16にデータ補正処理を行う小節BARの開始番号と終了番号の入力を促すガイドメッセージを表示し、入出力インターフェース13を介して処理開始小節番号BMIN及び処理終了小節番号BMAXをパネルスイッチ15から受取る。
次のステップ72では、LCD16に処理を行う鍵域の入力を促すガイドメッセージを表示し、パネルスイッチ15より鍵域の低音端KMIN及び高音端KMAXを受取る。
更に、次のステップ73では、LCD16に和音識別のしきい値n及び補正係数a(パーセント)の入力を促すガイドメッセージを表示し、パネルスイッチ15からこれらのデータを受取る。
次にステップ74で、小節カウンタBCT(初期値は1)が示している現在の小節番号が処理開始小節であるか否か、即ち小節カウンタBCTの値がBMINに等しいか否かを調べ、等しくなければ、次のステップ75で次の小節の区切りデータBARを探し、BARが現れたら小節カウンタBCTに1を加え、これを繰返す。この処理により小節カウンタBCTの値がBMINに等しくなると、ステップ74からステップ76の和音補正ルーチンに進む。
1小節の和音補正処理が終了すると、ステップ77で小節カウンタBCTの値が処理終了小節番号BMAXに達したか否かを調べ、達していれば復帰、達していなければ小節カウンタBCTに1を加え、ステップ76の和音補正ルーチンを繰返す。
第9図は第8図の和音補正ルーチン76の詳細を示すフローチャートである。まずステップ81で小節区切りデータBARをスキップ(読飛ばし)すると同時に和音検出フラグCFGをクリアする。次にステップ82で1音分のデータ4バイトをRAM12から読出す。次のステップ83の判断で、読出されたデータが小節区切りデータBARであれば復帰し、そうでなければステップ84の判断へ進む。ステップ84では、読出されたデータが制御データCTRであれば1音読出しのステップ82に戻り、そうでなければ次のステップ85の判断に進む。ステップ85では、読出された楽音データTONEの鍵番号KNOが、処理鍵域の低音端KMINと高音端KMAXとの間にあるか否かを調べ、間になければ1音読出しのステップ82に戻り、間にあればステップ86に進んで和音の識別を行う。
ステップ86では、読出された楽音データのステップタイムSTP′(小節区切りからのクロック数)と、1回前に読出された楽音データのステップタイムSTPとの差ΔSTPを求め、それが先に設定した和音識別しきい値n以下であるか否かを判定する。即ち、和音検出フラグCFGがクリアされているとき、次の1音分のデータを読出し、これが小節区切りデータでなく、制御データでもなく、楽音データであり、且つその鍵番号が所定の音域にあるとき、前回の楽音データとのステップタイムの差がしきい値n以下であれば、和音であると判定し、和音検出フラグCFGをセットし、ステップ87へ進む。ステップ87では、先に読まれた楽音データをRAM12のバッファエリアに転送し、後に読まれた楽音データを廃棄して1音読出しのステップ82に戻り、これを繰返す。なお、上記STP′は、BARが検出される度に0Hにリセットされる。
このようにして一連の和音データがバッファエリアに蓄積される。そしてステップ86で隣接音のステップタイムの差ΔSTPがしきい値n以上であると判定されたときには、和音の区切りが検出されたので、次のステップ88でタッチデータの補正処理を行う。そしてステップ89で補正されたタッチデータをRAM12の楽曲データエリアに再書込み(呼び戻し)した後、バッファエリアをクリアし、次の和音を処理するためにステップ82に戻る。
なお、上記ステップ86からステップ88への移行に際して、ステップ86における前回の診断がΔSTP≦Nであった場合には、先に読まれた楽音データをRAM12のバッファエリアに転送すると共に、後に読まれた楽音データを廃棄する。
第10図は第9図のタッチデータ補正ルーチン88の詳細を示すフローチャートである。まずステップ91でバッファエリアに転送された楽音データの数Nが0であるか否かを調べ、0であれば復帰し、0でなければ次のステップ92でバッファエリアに記憶されている各楽音データ中のタッチデータTDを集計して、代表値AVを求める。AVの計算式は、全タッチデータの平均、AV=ΣTDi/N ……(1)
又はタッチデータの最大値AVmaxと最小値AVminとの間の中間値、AV=(AVmax+AVmin)/2 ……(2)
であってもよい。他に最頻値、中央値、平均値などを用いることができる。
次にステップ93で、ループカウンタiを0にセットし、バッファエリア内のi番目の楽音データのタッチデータTDiに対して先に設定した補正係数aに基づく補正計算を行う。補正式は、TDi′=AV+(TDi−AV)×a/100 ……(3)
でよい。即ち、補正するタッチデータTDiとその和音内のタッチデータの代表値との差(偏差)に対し、補正係数a(パーセント)を掛けて、それを代表値AVに加算する。なお補正係数aが正であれば、補正されたタッチデータTD′は代表値AVとの差が小さくなる方向に圧縮される。またaが負であれば、補正されたタッチデータTD′は、代表値を中心に強弱の関係が逆転する。aが正又は負で100パーセント以上であれば、代表値に対する差が拡大するように補正される。なおaが100パーセントであれば、補正は零である。またaが0パーセントであれば、和音の全部のタッチデータは代表値AVに均一化される。
補正ステップ94が終了すると、次にステップ95でループカウンタiに1を加え、更にステップ96で、iがバッファ内の楽音データ数Nに等しいか否かを調べ、等しければ復帰し、等しくなければ補正ステップ94に戻って、これを繰返す。
第11図は、しきい値n=2(クロック)、補正係数a=50(パーセント)で、全音域にわたりタッチデータの補正を行った実例を示す。この例では、タッチデータTDとして押鍵速度データ(ベロシティ:Vel)を使用し、タッチデータの代表値として平均値を採用した。
第11図から理解されるように、押鍵タイミングの差が2クロック以内の楽音データは1つの和音とみなされる。第11図の最初の和音ブロックにおいて、元のタッチデータVel(org)の平均AVは92であり、第3式に基づいて補正されたタッチデータVel(new)は、平均92に近づくように圧縮される。即ち、和音内の各音ごとのタッチのばらつきが平均値に対して50%程度小さくなるように修正される。
以上、本発明の実施例につき説明したが、本発明は上述の実施例に限定されることはなく、本発明の技術思想に基づき各種の有効な変更が可能である。
例えば、上述の実施例では、演奏データがキースイッチ17から供給される例につき説明したが、演奏データはI/O13に接続された外部記憶装置、他の電子楽器等から供給されるものであっても良い。
また、押鍵操作に関するタッチ情報は、上述の押鍵強度値(ベロシティ)に限らず、押圧力を示すアフタタッチ情報等の鍵のタッチに関する各種の情報であって良い。
〔発明の効果〕
本発明の楽音データ補正装置によれば、押鍵タイミングのずれ等がある場合でも楽音データの中から和音を確実に抽出でき、その抽出された和音の各タッチ情報に対して和音毎に補正を行うことができる。また、楽曲全体の流れとは無関係に、上記補正を行うことができる。さらに、和音中の各タッチ情報のバラツキの補正も行うことができる。従って、初心者でもこの装置を用いることにより容易に和音のタッチ情報の編集ができ、例えば楽曲全体の流れの中で強弱のメリハリの効いたきれいな響きを持った和音進行等の使用者が意図する和音進行を容易かつ確実に得ることができる。
【図面の簡単な説明】
第1図は本発明の楽音データ補正装置の一実施例を示すシーケンサのブロック図、第2図は第1図のシステムにおいて扱われる楽曲データのフォーマット図、第3図は第1図のCPUがアクセスするメモリのマップ図、第4図は本発明の楽音データ補正装置の原理的構成を示すブロック図、第5図〜第10図は楽音データの処理手順を示すフローチャート、第11図はタッチデータ補正の実例を示す楽音データの時系列の図である。
図面に用いられている符号において、
10……CPU
11……ROM
12……RAM
13……入出力インターフェース
14……システムバス
15……パネルスイッチ
16……LCD
17……キースイッチ
18……楽音発生回路
19……D−A変換器
20……アンプ
21……スピーカ
25……和音検出ブロック
26……代表値検出ブロック
27……補正値演算ブロック
n……しきい値
a……補正係数
CHORD……和音
AV……代表値
TD……タッチデータ
である。
〔産業上の利用分野〕
本発明は、楽音データの時系列から成る演奏情報を加工、修正する楽音データ補正装置に関する。
〔従来の技術〕
電子楽器システムにおいて、変換可能な記録媒体を用いて予め作成したメロディや伴奏などのプログラムソフトを再生することができるものが知られている。このようなプログラムソフトは、鍵盤の音程、押鍵、離鍵のタイミング、押鍵時間幅、押鍵強さ(押鍵速度)等の演奏データの時系列であり、シーケンスソフトとも称されている。このようなシーケンスソフトは、一般には専用の編集機又は簡単な編集機能の付いた電子楽器を用いて編集、作成されるが、音楽的に優れた作品を制作するには、職人芸的なデータ編集作業を必要とし、一般ユーザやミュージシャンにとっては馴染みづらいものである。
〔発明が解決しようとする課題〕
上述のように、演奏データの編集を行って所望の楽曲を得るのは大変難しいが、伴奏和音のタッチデータ(押鍵強度等の押鍵操作に関するデータ)の編集は初心者にとっては特に難しい。すなわち、和音構成各音についてのタッチデータの編集を行う際には、まず演奏データを構成する各楽音データの中から和音を判別する必要があるが、通常は、完全に同一のタイミングで押鍵された複数の楽音データのみが和音とみなされるので、押鍵タイミングにわずかのずれがあると和音とはみなされず、従って和音を識別させるためにディスプレイ等で和音特有の表示(マーク表示、着色表示等)をするようにした場合でも、和音を確実に識別することは困難である。
また、和音のタッチデータの編集に際して、指定範囲の楽音データに対して一律に(単音、和音の区別なく)タッチデータの一種である押鍵強度値の均等な補正を行うようにした技術があるが、このようにすると補正された楽音が全体的に平坦な響きを有するものになってしまう。このため、例えば楽曲全体の流れの中で強弱のメリハリが付いた和音進行が得られるように、和音毎にタッチデータの補正ができるようにすることが従来からの課題とされていた。
そこで本発明は、楽音データの中から和音を確実に検出して和音毎にタッチデータの補正ができるようにして、初心者でも容易かつ確実に和音のタッチデータの編集を行って所望の和音進行を得ることができる楽音データ補正装置を提供することを目的とする。
〔課題を解決するための手段〕
本発明の楽音データ補正装置は、押鍵操作に関するタッチ情報を含む楽音データの時系列から成る演奏情報から、個々の楽音の発音タイミングの差が所定のしきい値よりも小さい楽音データの一群を和音として抽出する和音検出手段と、検出された和音の各タッチ情報から算出される平均値、中央値及び最頻値のうちの何れか1つの値からなる代表値AVを検出する代表値検出手段と、個々のタッチ情報の値TDの上記代表値からの差を所定の比率で圧縮又は伸長した個々のタッチ情報の新たな値を算出する補正演算手段とを具備し、上記和音の各タッチ情報の値を上記新たな値に補正した楽音データを得ることを特徴とする。
〔作 用〕
本発明によれば、押鍵タイミングにずれがあった場合でも、そのタイミングのずれが所定のしきい値内であれば和音は確実に検出され、かつその構成音の各タッチ情報の代表値からの差が所定の比率で圧縮又は伸長された新たな値のタッチ情報が設定される。そして、圧縮又は伸長の比率(補正係数)を変更することにより、タッチ情報の値のばらつきの少ない和音や、ばらつきをより強調した和音が自由に得られる。従って、この装置を用いて例えば押鍵強度値データを補正して、和音構成各音の各押鍵強度値の代表値からの差を圧縮するようにした場合には、楽曲全体の流れの中で強弱のメリハリが効いたきれいな響きを持った和音進行を得ることができる。
〔実施例〕
第1図は、演奏データの編集を行う際に用いられるデータ編集機(以下、「シーケンサ」と称する)の構成を説明するための回路ブロック図である。
このシーケンサは、電子楽器と一体的或いは別体に設けられるものであって、CPU10、ROM11、RAM12、入出力インターフェース13(I/O)及びシステムバス14から成るマイクロコンピュータシステムにより構成されている。入出力インターフェース13には、鍵盤に対応したキースイッチ17及び音色、テンポ等の演奏パラメータ及びデータ加工(補正)のためのパラメータを設定するパネルスイッチ15(PSW)が接続されている。また入出力インターフェース13には、演奏者や編集者にメッセージを知らせるLCD16(液晶ディスプレイ)及び演奏データに対応した楽音制御信号をCPU10から受ける楽音発生回路18が接続されている。楽音発生回路18はピアノ、バイオリンなどに対応したPCM音源を有する複数の楽音発生チャンネルを備え、CPU10からの楽音制御信号に基づいて所定の周波数、波形、振幅、持続時間等を有する楽音信号を形成する。この楽音信号はD−Aコンバータ19(DAC)でアナログ音声信号に変換され、アンプ20及びスピーカ21を通じて再生される。
上述の入出力インターフェース13を介してのキースイッチ17及びパネルスイッチ15からの操作データの取込み及び楽音制御信号の送出は、ROM11に書込まれた入出力ルーチルプログラムをCPU10が実行することにより行われる。ROM11には、後述のシーケンスデータの修正(加工)処理を行うプログラムも記憶されている。RAM12は、CPU10のワークエリア、演算用バッファ及び処理すべき楽音データ群を一時記憶するエリアを含む。
第2図は第1図のシステムにおいて扱われる楽曲データのフォーマットを示す。BAR30は、小節区切りを示すデータフォーマットで、0FFH(H:16進表記)なる内容の1バイトと、内容不定(歩進増加するデータ)の3バイトとから成る。END31は、楽曲終了を示すデータフォーマットで、0FEHなる内容の1バイトと、内容不定の3バイトとから成る。CTR32は、音色の切換、音量の制御、演奏テンポの変更などを示す制御データのフォーマットで、0FDHなる内容の1バイトと、制御内容(対象)を示すデータSCT1バイトと、制御用数値データ2バイトより成る。
TONE33は、発音すべき個々の楽音データを示すフォーマットで、発音すべき鍵番号KNO(0〜127鍵)を示す1バイト、小節区切りからの発音タイミングをクロック数で示すステップタイムSTP(0〜191)1バイト、発音持続時間を示すゲートタイムGATE(0〜255)及び押鍵強さを示すタッチデータTD(0〜127)1バイトから成る。なお押鍵強さは、鍵に設けられた押鍵速度センサによって検出され、ベロシティデータとも称される。
次に第3図は本実施例においてCPU10がアクセスするメモリのマップである。CPU10は、アドレス0H〜3FFFHまではプログラムROM11をアクセスし、それ以外はデータRAM12をアクセスする。RAM12のエリア(4000H〜0FFFFH)は、大きく2つに分けられていて、アドレス4000H〜7FFFHはCPU10がワークエリア及び後述のデータ修正処理のバッファエリアとして使用する。またアドレス8000H〜0FFFFHは、楽曲データの一時記憶に用いる。
楽曲データは、第2図のフォーマットに従って、低位アドレスから高位アドレスに向けて楽曲の進行に従い順次格納される。第3図に例示されているのは、1音4バイトの楽音データであり、キー番号KNO、ステップタイムSTP、ゲートタイムGATE及びタッチデータTDから成る。またこれらの楽音データの間に一定時間間隔で4バイトの小節区切りデータBARが挿入され、楽曲の進行途中で音色や演奏テンポの変更があると、4バイトの制御データ(CTR、SCT、数値2バイト)が変更内容に応じて挿入される。
第4図は、本発明の原理的構成を示す機能ブロック図である。各ブロックは実際にはCPUとメモリ内の蓄積プログラムとによって実現されている。
和音検出のブロック25では、楽音データを入力として、予め設定されたしきい値nよりも隣接音の時間差(ΔSTP)が小さいときに、和音として検出する。次の代表値検出ブロック26では、検出された1つの和音ブロックCHORDについて、タッチデータ(押鍵強度値等)の代表値AVを例えば平均値で検出する。次に、補正値演算ブロック27では、1つの和音ブロックの個々の音のタッチデータについて代表値からの差を、予め設定された補正係数aパーセントに圧縮(又は伸長)した補正値を算出する。aは−100≦a≦100(パーセント)でよいが、100パーセント以上でもよい。補正したタッチデータは元の楽音データ中のタッチデータと入れ換えられ、補正楽音データが得られる。
補正された楽音データに基づいて再生音を得ると、楽曲の全体の流れの中で強弱のメリハリが付き、且つきれいな響きを持った和音進行等が得られる。また補正係数aにマイナスの値を与えると、代表値を中心に例えば押鍵強度の強弱を逆転させることができるため、右手で弾いて入力した楽曲データをあたかも左手で演奏したかのように響かせると言った特殊効果を得ることができる。
以下、第5図〜第10図のフローチャートを参照してタッチデータ補正処理の手順を詳細に説明する。
第5図は第1図に示したシステムの動作を示すメインフロー図である。まずステップ40では、変数、ポインタ等のレジスタの初期設定を行う。次にCPU10は、入出力インターフェース13を介してパネルスイッチ15(PSW)の操作を検出する走査をステップ41で行い、楽曲データを読込みの操作(指示)があればステップ42から読込み処理ルーチン43に進む。
ステップ41の操作検出で楽曲データの送出の指示があれば、ステップ44から送出処理ルーチン45に進む。
パネルスイッチ15の操作検出で楽曲データの補正の指示があれば、ステップ46からダッチデータの補正処理のルーチン47へ進む。
また、パネルスイッチ15の操作が通常の演奏の指示であれば、周知の通常演奏処理等(詳述せず)のルーチン48へ進む。
なお第5図のプログラムはエンドレスになっていて、ステップ41でパネルスイッチ15の操作検出がない場合及び読込み、送出、補正の、通常の各処理ルーチン43、45、47、48が終了すると、ステップ41に戻り、電源オフで終了になるまでは、同じ動作を繰り返す。
第6図は第5図における読込みルーチン43の詳細を示すフローチャートである。なおこのルーチン43の処理終了時には、アドレスポインタPTRは現在RAM12に保存されている楽音データ、制御データ及び小節区切りデータの総バイト数を示すことになる。この際、楽曲終了データは付加されないので、続けて読込み処理ルーチン43を行うと、楽曲データは自動的に連結される。
第6図のステップ51では、入出力インターフェース13を通じて外部からの入力端子を走査し、キースイッチ17等からの入力データがあれば、次のステップ52で1音分に相当する4バイトの楽音データを入出力インターフェース13から読込む。次にステップ53で、読込んだデータが楽曲終了コードであるか否かを判定し、YESであればメインルーチンに復帰する。なお、終了コードは、特定のパネルスイッチ等の操作に基づいて図示しない割込みルーチンが自動的に発生する。この割込みルーチンは、小節区切りコードBARもまた自動的に発生する。
一方、上記ステップS53における判定の結果、読込んだデータが終了コードで無ければ、次のステップ54で、読込まれた4バイトの楽音データをRAM12に転送する。なお転送先のアドレスは、ポインタPTR及びインデックスIDXの各レジスタの値を加算して作成する。IDXは8000H、PTRの初期値は0Hである。
次にステップ55で、ポインタレジスタの内容PTRに1音分のバイト数4を加え、ステップ51に戻り、上記処理を繰返す。
第7図は、第5図の送出処理ルーチン45の詳細を示すフローチャートである。このルーチンでは、まずステップ61でポインタレジスタPTRの値が零か否かを調べ、零でなければステップ62で1音4バイトの楽曲データをRAM12から読出す。読出し元のアドレスは、ポインタレジスタPTRとは異なるポインタレジスタEXPTRの内容にインデックスIDXの値を加算して作成する。EXPTRの初期値は0Hである。
次にステップ63で、読出した1音分の4バイトデータを入出力インターフェース13を通じて例えば楽音発生回路18に送出する。次にステップ64で、ポインレジスタPTRから4を減算し、同時にEXPTRに4を加算してから、ステップ61に戻る。
ステップ61で、ポインタレジスタPTRの値が零であると判定したときには、送出データが無いので、ステップ65で終了コードを入出力インターフェース13を介して送出し、メインルーチンに復帰する。
次に第8図は、第5図の補正終了ルーチンの詳細を示すフローチャートである。まずステップ71では、入出力インターフェース13を介してLCD16にデータ補正処理を行う小節BARの開始番号と終了番号の入力を促すガイドメッセージを表示し、入出力インターフェース13を介して処理開始小節番号BMIN及び処理終了小節番号BMAXをパネルスイッチ15から受取る。
次のステップ72では、LCD16に処理を行う鍵域の入力を促すガイドメッセージを表示し、パネルスイッチ15より鍵域の低音端KMIN及び高音端KMAXを受取る。
更に、次のステップ73では、LCD16に和音識別のしきい値n及び補正係数a(パーセント)の入力を促すガイドメッセージを表示し、パネルスイッチ15からこれらのデータを受取る。
次にステップ74で、小節カウンタBCT(初期値は1)が示している現在の小節番号が処理開始小節であるか否か、即ち小節カウンタBCTの値がBMINに等しいか否かを調べ、等しくなければ、次のステップ75で次の小節の区切りデータBARを探し、BARが現れたら小節カウンタBCTに1を加え、これを繰返す。この処理により小節カウンタBCTの値がBMINに等しくなると、ステップ74からステップ76の和音補正ルーチンに進む。
1小節の和音補正処理が終了すると、ステップ77で小節カウンタBCTの値が処理終了小節番号BMAXに達したか否かを調べ、達していれば復帰、達していなければ小節カウンタBCTに1を加え、ステップ76の和音補正ルーチンを繰返す。
第9図は第8図の和音補正ルーチン76の詳細を示すフローチャートである。まずステップ81で小節区切りデータBARをスキップ(読飛ばし)すると同時に和音検出フラグCFGをクリアする。次にステップ82で1音分のデータ4バイトをRAM12から読出す。次のステップ83の判断で、読出されたデータが小節区切りデータBARであれば復帰し、そうでなければステップ84の判断へ進む。ステップ84では、読出されたデータが制御データCTRであれば1音読出しのステップ82に戻り、そうでなければ次のステップ85の判断に進む。ステップ85では、読出された楽音データTONEの鍵番号KNOが、処理鍵域の低音端KMINと高音端KMAXとの間にあるか否かを調べ、間になければ1音読出しのステップ82に戻り、間にあればステップ86に進んで和音の識別を行う。
ステップ86では、読出された楽音データのステップタイムSTP′(小節区切りからのクロック数)と、1回前に読出された楽音データのステップタイムSTPとの差ΔSTPを求め、それが先に設定した和音識別しきい値n以下であるか否かを判定する。即ち、和音検出フラグCFGがクリアされているとき、次の1音分のデータを読出し、これが小節区切りデータでなく、制御データでもなく、楽音データであり、且つその鍵番号が所定の音域にあるとき、前回の楽音データとのステップタイムの差がしきい値n以下であれば、和音であると判定し、和音検出フラグCFGをセットし、ステップ87へ進む。ステップ87では、先に読まれた楽音データをRAM12のバッファエリアに転送し、後に読まれた楽音データを廃棄して1音読出しのステップ82に戻り、これを繰返す。なお、上記STP′は、BARが検出される度に0Hにリセットされる。
このようにして一連の和音データがバッファエリアに蓄積される。そしてステップ86で隣接音のステップタイムの差ΔSTPがしきい値n以上であると判定されたときには、和音の区切りが検出されたので、次のステップ88でタッチデータの補正処理を行う。そしてステップ89で補正されたタッチデータをRAM12の楽曲データエリアに再書込み(呼び戻し)した後、バッファエリアをクリアし、次の和音を処理するためにステップ82に戻る。
なお、上記ステップ86からステップ88への移行に際して、ステップ86における前回の診断がΔSTP≦Nであった場合には、先に読まれた楽音データをRAM12のバッファエリアに転送すると共に、後に読まれた楽音データを廃棄する。
第10図は第9図のタッチデータ補正ルーチン88の詳細を示すフローチャートである。まずステップ91でバッファエリアに転送された楽音データの数Nが0であるか否かを調べ、0であれば復帰し、0でなければ次のステップ92でバッファエリアに記憶されている各楽音データ中のタッチデータTDを集計して、代表値AVを求める。AVの計算式は、全タッチデータの平均、AV=ΣTDi/N ……(1)
又はタッチデータの最大値AVmaxと最小値AVminとの間の中間値、AV=(AVmax+AVmin)/2 ……(2)
であってもよい。他に最頻値、中央値、平均値などを用いることができる。
次にステップ93で、ループカウンタiを0にセットし、バッファエリア内のi番目の楽音データのタッチデータTDiに対して先に設定した補正係数aに基づく補正計算を行う。補正式は、TDi′=AV+(TDi−AV)×a/100 ……(3)
でよい。即ち、補正するタッチデータTDiとその和音内のタッチデータの代表値との差(偏差)に対し、補正係数a(パーセント)を掛けて、それを代表値AVに加算する。なお補正係数aが正であれば、補正されたタッチデータTD′は代表値AVとの差が小さくなる方向に圧縮される。またaが負であれば、補正されたタッチデータTD′は、代表値を中心に強弱の関係が逆転する。aが正又は負で100パーセント以上であれば、代表値に対する差が拡大するように補正される。なおaが100パーセントであれば、補正は零である。またaが0パーセントであれば、和音の全部のタッチデータは代表値AVに均一化される。
補正ステップ94が終了すると、次にステップ95でループカウンタiに1を加え、更にステップ96で、iがバッファ内の楽音データ数Nに等しいか否かを調べ、等しければ復帰し、等しくなければ補正ステップ94に戻って、これを繰返す。
第11図は、しきい値n=2(クロック)、補正係数a=50(パーセント)で、全音域にわたりタッチデータの補正を行った実例を示す。この例では、タッチデータTDとして押鍵速度データ(ベロシティ:Vel)を使用し、タッチデータの代表値として平均値を採用した。
第11図から理解されるように、押鍵タイミングの差が2クロック以内の楽音データは1つの和音とみなされる。第11図の最初の和音ブロックにおいて、元のタッチデータVel(org)の平均AVは92であり、第3式に基づいて補正されたタッチデータVel(new)は、平均92に近づくように圧縮される。即ち、和音内の各音ごとのタッチのばらつきが平均値に対して50%程度小さくなるように修正される。
以上、本発明の実施例につき説明したが、本発明は上述の実施例に限定されることはなく、本発明の技術思想に基づき各種の有効な変更が可能である。
例えば、上述の実施例では、演奏データがキースイッチ17から供給される例につき説明したが、演奏データはI/O13に接続された外部記憶装置、他の電子楽器等から供給されるものであっても良い。
また、押鍵操作に関するタッチ情報は、上述の押鍵強度値(ベロシティ)に限らず、押圧力を示すアフタタッチ情報等の鍵のタッチに関する各種の情報であって良い。
〔発明の効果〕
本発明の楽音データ補正装置によれば、押鍵タイミングのずれ等がある場合でも楽音データの中から和音を確実に抽出でき、その抽出された和音の各タッチ情報に対して和音毎に補正を行うことができる。また、楽曲全体の流れとは無関係に、上記補正を行うことができる。さらに、和音中の各タッチ情報のバラツキの補正も行うことができる。従って、初心者でもこの装置を用いることにより容易に和音のタッチ情報の編集ができ、例えば楽曲全体の流れの中で強弱のメリハリの効いたきれいな響きを持った和音進行等の使用者が意図する和音進行を容易かつ確実に得ることができる。
【図面の簡単な説明】
第1図は本発明の楽音データ補正装置の一実施例を示すシーケンサのブロック図、第2図は第1図のシステムにおいて扱われる楽曲データのフォーマット図、第3図は第1図のCPUがアクセスするメモリのマップ図、第4図は本発明の楽音データ補正装置の原理的構成を示すブロック図、第5図〜第10図は楽音データの処理手順を示すフローチャート、第11図はタッチデータ補正の実例を示す楽音データの時系列の図である。
図面に用いられている符号において、
10……CPU
11……ROM
12……RAM
13……入出力インターフェース
14……システムバス
15……パネルスイッチ
16……LCD
17……キースイッチ
18……楽音発生回路
19……D−A変換器
20……アンプ
21……スピーカ
25……和音検出ブロック
26……代表値検出ブロック
27……補正値演算ブロック
n……しきい値
a……補正係数
CHORD……和音
AV……代表値
TD……タッチデータ
である。
【特許請求の範囲】
【請求項1】押鍵操作に関するタッチ情報を含む楽音データの時系列から成る演奏情報から、個々の楽音の発音タイミングの差が所定のしきい値よりも小さい楽音データの一群を和音として抽出する和音検出手段と、検出された和音の各タッチ情報の値から算出される平均値、中央値及び最頻値のうちの何れか1つの値からなる代表値AVを検出する代表値検出手段と、個々のタッチ情報の値TDの上記代表値からの差を所定の比率で圧縮又は伸長した個々のタッチ情報の新たな値を算出する補正演算手段とを具備し、上記和音の各タッチ情報の値を上記新たな値に補正した楽音データを得ることを特徴とする楽音データ補正装置。
【請求項2】上記補正演算手段が、上記圧縮又は伸長の比率を定める補正係数aを入力して登録する手段を備え、上記補正係数aとして正又は負の100%(比率1)以下又は100%以上の圧伸比を設定し得るようにした請求項1記載の楽音データ補正装置。
【請求項3】上記補正演算手段が、TD′=AV+(TD−AV)×a/100の演算を1和音中の各タッチ情報の値TDに対して行って、上記新たな値TD′を得ることを特徴とする請求項1又は2記載の楽音データ補正装置。
【請求項4】上記和音検出手段が、上記しきい値を入力して登録する手段を備えることを特徴とする請求項1記載の楽音データ補正装置。
【請求項5】上記補正演算手段が、楽音データ中の音程データが予め設定された所定幅の音域内に入るか否かを検出する手段を備え、上記所定幅の音域外のデータを除外して補正演算を行うことを特徴とする請求項1記載の楽音データ補正装置。
【請求項1】押鍵操作に関するタッチ情報を含む楽音データの時系列から成る演奏情報から、個々の楽音の発音タイミングの差が所定のしきい値よりも小さい楽音データの一群を和音として抽出する和音検出手段と、検出された和音の各タッチ情報の値から算出される平均値、中央値及び最頻値のうちの何れか1つの値からなる代表値AVを検出する代表値検出手段と、個々のタッチ情報の値TDの上記代表値からの差を所定の比率で圧縮又は伸長した個々のタッチ情報の新たな値を算出する補正演算手段とを具備し、上記和音の各タッチ情報の値を上記新たな値に補正した楽音データを得ることを特徴とする楽音データ補正装置。
【請求項2】上記補正演算手段が、上記圧縮又は伸長の比率を定める補正係数aを入力して登録する手段を備え、上記補正係数aとして正又は負の100%(比率1)以下又は100%以上の圧伸比を設定し得るようにした請求項1記載の楽音データ補正装置。
【請求項3】上記補正演算手段が、TD′=AV+(TD−AV)×a/100の演算を1和音中の各タッチ情報の値TDに対して行って、上記新たな値TD′を得ることを特徴とする請求項1又は2記載の楽音データ補正装置。
【請求項4】上記和音検出手段が、上記しきい値を入力して登録する手段を備えることを特徴とする請求項1記載の楽音データ補正装置。
【請求項5】上記補正演算手段が、楽音データ中の音程データが予め設定された所定幅の音域内に入るか否かを検出する手段を備え、上記所定幅の音域外のデータを除外して補正演算を行うことを特徴とする請求項1記載の楽音データ補正装置。
【第1図】
【第2図】
【第3図】
【第4図】
【第5図】
【第6図】
【第7図】
【第8図】
【第9図】
【第10図】
【第11図】
【第2図】
【第3図】
【第4図】
【第5図】
【第6図】
【第7図】
【第8図】
【第9図】
【第10図】
【第11図】
【特許番号】第2614532号
【登録日】平成9年(1997)2月27日
【発行日】平成9年(1997)5月28日
【国際特許分類】
【出願番号】特願平2−216568
【出願日】平成2年(1990)8月17日
【公開番号】特開平4−98295
【公開日】平成4年(1992)3月30日
【出願人】(999999999)株式会社河合楽器製作所
【参考文献】
【文献】特開 昭60−260091(JP,A)
【文献】特開 昭61−174599(JP,A)
【登録日】平成9年(1997)2月27日
【発行日】平成9年(1997)5月28日
【国際特許分類】
【出願日】平成2年(1990)8月17日
【公開番号】特開平4−98295
【公開日】平成4年(1992)3月30日
【出願人】(999999999)株式会社河合楽器製作所
【参考文献】
【文献】特開 昭60−260091(JP,A)
【文献】特開 昭61−174599(JP,A)
[ Back to top ]