(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
〔第1実施形態:
図1乃至
図8〕
図1は、本発明の第1実施形態である電子楽器のハードウェア構成を示すブロック図である。
図1に示すように、電子楽器10は、CPU11、ROM12、RAM13、記憶装置14、通信インタフェース(I/F)15、検出回路16、表示回路17、音源回路18を備え、これらをシステムバス19により接続している。また、電子楽器10は、CPU11に接続するタイマ21、検出回路16に接続する演奏操作子22及び設定操作子23、表示回路17に接続するディスプレイ24、音源回路18に接続するDAC(デジタルアナログ変換回路)25及びサウンドシステム26も備える。
【0016】
そして、CPU11が、RAM13をワークエリアとしてROM12又は記憶装置14に記憶された所要のプログラムを実行することにより、電子楽器10全体を制御し、演奏操作の検出、演奏操作子の操作状態に応じた発音音高の選択、その選択に従った発音の制御等の各種機能を実現する。CPU11に接続されるタイマ21は、基本クロック信号、割り込み処理タイミング等をCPU11に供給する。
なお、ROM12には、上記のプログラムの他、音色に対応する波形データや自動演奏データ、自動伴奏データ(伴奏スタイルデータ)などの各種データファイル、各種パラメータ及び各種テーブル等も記憶する。
【0017】
RAM13は、フラグ、レジスタ、各種パラメータ等を記憶するCPU11のワークエリアの他、再生バッファ等のバッファ領域としても用いる。
記憶装置14は、ハードディスク、半導体メモリ等の記録媒体とその駆動装置の組み合わせの少なくとも1つで構成される。
通信I/F15は、サーバ、音響機器、外部コントローラ等の外部装置と通信を行うためのインタフェースであり、有線、無線を問わず、任意の規格の通信手段を用いて構成することができる。例えば、USB(Universal Serial Bus)やMIDI(Musical Instrument Digital Interface)_I/Fを用いることが考えられる。
【0018】
検出回路16は、演奏操作子22及び設定操作子23をシステムバス19に接続するためのインタフェースである。
演奏操作子22は、検出回路16に接続され、ユーザの演奏動作に従い、演奏情報(演奏データ)を供給する。演奏操作子22は、ユーザの演奏操作を受け付けるための、それぞれ音高と対応する複数の操作部を備える。そして、該ユーザの操作部に対する操作開始タイミング及び終了タイミングを、それぞれユーザが操作した操作部に対応する音高の情報を含むキーオンデータ及びキーオフデータとして、検出回路16を通じてCPU11に供給する。また、演奏操作子22は、ユーザの演奏操作に応じてベロシティ値等の各種パラメータを供給することも可能である。なお、本実施例では、鍵盤型の演奏操作子22を備え、上記各操作部が鍵であるとして説明するが、これに限るものではない。
【0019】
また、設定操作子23は、例えば、ボタン、スライダ、ロータリーエンコーダ、文字入力用キーボード、マウス等、ユーザの入力に応じた信号を出力できるものならどのようなものでもよい。また、設定操作子23は、ディスプレイ24上に表示されるGUI(Graphical User Interface)に対する操作を行うためのポインティングデバイスや、ディスプレイ24に積層したタッチパネルでもよい。
いずれにせよ、ユーザは、設定操作子23を用いて、各種入力及び設定、選択をすることができる。
【0020】
表示回路17は、ディスプレイ24をシステムバス19に接続するためのインタフェースである。
ディスプレイ24は、電子楽器10の設定のための各種情報や、電子楽器10の動作状態等を表示するための表示手段であり、例えば液晶表示装置や発光ダイオード(LED)等により構成することができる。
【0021】
音源回路18は、CPU11からの発音指示に応じて、複数の発音ch(チャンネル)でそれぞれ楽音信号(デジタル波形データ)を生成する機能を備える。CPU11からの発音指示には、音色、音高、音量等の指定が含まれる。CPU11は、演奏操作子22の演奏操作を検出した場合に、アサイナの機能により、押鍵中の鍵の音高から、各アサイナと対応する発音を行わせる音高を選択し、その選択に従った発音を音源回路18に指示する。その詳細については後述する。
【0022】
なお、音源回路18は、記憶装置14、ROM12又はRAM13等に記録された波形データ、オーディオデータ、自動伴奏データ、自動演奏データ又は、通信I/F15に接続された外部機器等から供給される演奏信号、MIDI信号、フレーズ波形データ等に応じて楽音信号を生成することも可能である。また、音源回路18は、生成した楽音信号に各種音楽的効果を付加する機能も備える。
【0023】
そして、音源回路18は、生成した楽音信号をDAC25に出力する。DAC25はこの楽音信号をアナログ音響信号に変換し、DAC25に接続されているサウンドシステム26に供給する。サウンドシステム26は、アンプ、スピーカを含む発音手段であり、DAC25から供給されるアナログ音響信号を、発音出力する。DAC25及びサウンドシステム26は、電子楽器10の外部にあってもよい。
以上の電子楽器10において、特徴的な点は、アサイナの制御に関する点である。そこで、次にアサイナの制御についてより具体的に説明する。
【0024】
図2に、電子楽器10における、アサイナを用いた発音制御に関連する機能の機能ブロック図を示す。
図2に示すように、電子楽器10は、発音指示受付部31、操作状態検出部32、アサイナ決定部33、割当制御部34、楽音生成部35、選択状態保持部36、出力部37を備える。これらのうち、発音指示受付部31の機能は演奏操作子22及び検出回路16により実現され、楽音生成部35の機能は音源回路18により実現され、出力部37の機能はサウンドシステム26により実現される。他の各部の機能はCPU11により実現される。
【0025】
そして、発音指示受付部31は、ユーザによる発音指示操作を受け付ける機能を備える。例えば、演奏操作子22である鍵盤がいずれかの鍵の押鍵操作(発音開始操作)を受け付けると、発音指示受付部31はこれを検出し、操作状態検出部32に対し、押鍵操作があったこと及び押鍵された鍵の音高であるノートナンバを示す操作信号であるキーオンデータを送信する。離鍵操作(発音停止操作)を受け付けた場合には、同様に離鍵操作があったことを及びその鍵のノートナンバを示すキーオフデータを送信する。
【0026】
なお、以下の説明において、押鍵のように発音開始を指示するための操作を「キーオン操作」、離鍵のように発音停止を指示するための操作を「キーオフ操作」と呼ぶことにする。また、キーオン操作からキーオフ操作までの状態を、「操作中」と呼ぶことにする。鍵盤の鍵で言えば、「押鍵中」がこれに該当する。ただし、発音開始の指示があった場合でも、必ずしも実際に発音が開始されるとは限らない。一定の音高について発音を行わない設定を可能としたり、同時発音数に制限を設けたりすることがあり得るためである。
【0027】
操作状態検出部32は、発音指示受付部31から送信される操作信号に基づき、現在の演奏操作子22の操作状態(ここでは鍵盤なので押鍵状態)を検出する機能を備える。より具体的には、操作中の(鍵の)音高を求める機能である。この押鍵状態は、例えば、キーオンデータに含まれるノートナンバを操作中の音高のリストに追加し、キーオフデータに含まれるノートナンバを操作中の音高のリストから削除することにより求めることができる。
そして、操作状態検出部32は、この操作状態の情報を割当制御部34の各アサイナASが音高選択の際に参照できるように保持する。
【0028】
また、操作状態検出部32は、キーオンデータ又はキーオフデータを受信した場合に、それらのデータをアサイナ決定部33に供給して、今回検出した操作に応じてどのアサイナに発音する音高を選択させるかを決定させる機能を備える。
なお、人が演奏を行う場合には、同時に複数の鍵の操作を行ったつもりでも、寸分違わず同じタイミングでその操作を行うことは困難である。そこで、複数の操作のタイミング差が同時操作とみなせる程度の所定閾値(例えば15〜30ミリ秒程度)以内であれば、それらの操作は同時に行われたものとみなして取り扱うことが望ましい。ここではこの取り扱いをするとして説明する。ある鍵のキーオン操作と別の鍵のキーオフ操作が同時に行われることもあり得る。
また、必要に応じて、検出した操作の内容及びその操作を反映させた操作状態履歴を保存し、アサイナ決定部33がアサイナの選択に利用できるようにしてもよい。
【0029】
さらに、操作状態検出部32は、キーオフデータを受信した場合に、楽音生成部35に対し、キーオフ操作が行われた音高の発音を停止させる機能も備える。またこのとき、割当制御部34に対し、該当の音高を選択しているアサイナASに音高の選択を解除させ、音高を選択していない状態とすることを指示する。
【0030】
次に、アサイナ決定部33は、操作状態検出部32からキーオンデータを受信した場合に、選択状態保持部36が保持している、各アサイナASが現在選択している音高と、キーオンデータに含まれる音高(今回キーオンされた鍵の音高)とに基づき、割当制御部34において有効なアサイナASの中から、今回キーオンに応じて発音する音高の選択を行わせるアサイナASを決定する機能を備える決定手段である。この決定のアルゴリズムについては後に詳述する。
【0031】
また、アサイナ決定部33は、キーオフデータを受信した場合にも、同様に今回キーオフに応じて発音する音高の選択を行わせるアサイナASを決定する機能を備える。この決定のアルゴリズムについても後に詳述する。
そして、アサイナ決定部33は、割当制御部34に対し、上記決定したアサイナASに発音する音高の選択を行わせることを指示する機能も備える。
【0032】
次に、割当制御部34は、複数(ここではn個とする)のアサイナAS−1〜AS−nを備える(アサイナの個体を特定する必要がない場合は符号「AS」を用いる)。これらの各アサイナASはそれぞれ、アサイナ決定部33からの指示に応じて、操作状態検出部32が保持している演奏操作子22の操作状態の情報を参照し、操作中(押鍵中)の音高の中から、楽音生成部35に発音させる音高(ノート)を選択する機能を備える選択手段である。この選択は、アサイナ毎に設定される規則に従って行う。
【0033】
図3に、アサイナに設定する規則の例を示す。
図3は、4つのアサイナを用いる場合の例であり、各アサイナに設定する規則は、「対象押鍵」及び「優先方式」の項目からなる。「説明」の項目は、これらの項目の情報により定められる規則の内容の理解を助けるための説明であり、選択処理には用いない。
【0034】
対象押鍵の項目は、押鍵中の音高のうちどの範囲を選択の対象として考慮するかを定める項目である。「全押鍵」は、押鍵中の音高全てを考慮することを示す。「低音側X音」は、押鍵中の音高のうち低音側からX個の音高のみ考慮することを示す。ただし、押鍵数がX未満の場合には、押鍵中の音高全てを考慮する。「高音側X音」についても同様である。
【0035】
優先方式の項目は、選択の対象として考慮する音高の中で、発音する音高をどのように選択するかを定める項目である。「高音優先」は、考慮する音高の中で最も高い音高を選択することを示す。「低音優先」は、考慮する音高の中で最も低い音高を選択することを示す。
【0036】
以上から、第1アサイナについては、押鍵中の音高全てのうち最も高い音高を選択する規則が設定されていることがわかる。
第2アサイナについては、押鍵中の音高のうち高音側から2番目の音高を選択する規則が設定されていることがわかる。ただし、押鍵数が1ならばその音高を選択する。
第3アサイナについては、同様に、押鍵数が2以下であれば、その押鍵の中で最も高い音高を選択することになる。押鍵数が3以上であれば、低音側2音の中で最も高い音高、すなわち下から2番目の音高を選択することになる。
第4アサイナについては、押鍵中の音高全てのうち最も低い音高を選択する規則が設定されていることがわかる。
図にないアサイナについては機能が無効化されていると考えればよい。
【0037】
各アサイナASは、以上の規則に従い発音する音高を選択すると、楽音生成部35に対し、その選択した音高の楽音を発音開始するよう要求する。また、各アサイナASには対応する音色T1〜Tnが設定されており、楽音をその対応する音色で発音するよう要求する。なお、アサイナASには対応するパートを設定し、音色はパートに対応付けて設定することも可能である。この場合、アサイナASと音色とは、パートを介して対応付けられることになり、アサイナAS−nに対応付けられたパートを第nパートと表す。
また、各アサイナASは、操作状態検出部32からの指示に応じて、キーオフされた音高の選択を解除する。
【0038】
なお、各アサイナASは、自身が最後に選択した音高(現在選択している音高)がどの音高であるかの情報を保持すると共に、選択状態保持部36にも供給して保持させる。また、音高の選択を行った場合でも、選択した音高が前回と変わらず、かつその音高が今回キーオン操作された音高でない(以前から操作中であった)音高である場合、楽音生成部34に対する発音の要求を行わないようにするとよい。この場合、該当のアサイナASが今回選択した音高については、今回検出されたキーオン操作とは関係なく、以前のキーオン操作に応じて開始した発音を継続することが望ましいと考えられるためである。
【0039】
また、この例では説明を簡単にするため各アサイナが音高を1つ選択するものとして説明するが、複数の音高を選択可能な規則を設定することも可能である。高音優先で2音を選択する、等である。
また、複数のアサイナが同じ音高を選択しても問題ない。この場合、選択された音高について、複数の音色で発音することになる。
【0040】
楽音生成部35は、m個の発音chTC1〜TCmを備える(発音chの個体を特定する必要がない場合は符号「TC」を用いる)。そして、アサイナASから発音開始の要求を受けると、発音中でない発音chを検索し、発見した発音chTCにて、発音開始要求で指定された音高及び音色の楽音の音響信号を生成(発音)させる。なお、
図2では、アサイナASと発音chTCの間を線で結んでいるがこれらの間に固定的な対応関係があるわけではない。
【0041】
また、楽音生成部35は、操作状態検出部32から特定の音高の発音を停止するよう指示された場合に、発音chTCの中からその音高の発音を行っているものを検索し、その発音chに発音を停止させる機能も備える。この停止には、リリース状態への移行も含まれる。
そして、楽音生成部35は、各発音chTCが生成した音響信号をミキシングして出力部37に供給し、楽音の出力を行わせる。
【0042】
次に、選択状態保持部36は、割当制御部34において有効な各アサイナASについて、そのアサイナが現在選択している音高の情報を保持する機能を備える。この情報は、アサイナASから最新の選択音高の情報が供給される度に更新し、アサイナ決定部33が音高の選択を行わせるアサイナを決定する際に参照できるようにする。
【0043】
図4に、選択状態保持部36が保持する情報の例を示す。
選択状態保持部36は、この図に示すように、各アサイナASと対応付けて、そのアサイナASが現在選択している音高のノートナンバを適当なメモリに記憶しておけばよい。1又は複数のアサイナASがどの音高も選択していないこともあり得る。また、必要に応じて、過去のいくつかの時点における、各アサイナASの選択音高の履歴を合わせて保持してもよい。
【0044】
次に、
図2に示した機能のうち、CPU11が担う機能を実現するためにCPU11が実行する処理について説明する。
図5乃至
図7は、その処理のフローチャートである。
CPU11は、検出回路16からキーオンデータ及び/又はキーオフデータを受信した場合に、所要のプログラムを実行することにより
図5のフローチャートに示す処理を開始する。なお、所定閾値以内のタイミング差で行われた操作を同時操作とみなすことは上述の通りである。
【0045】
図5の処理において、CPU11はまず、受信したキーオンデータ及び/又はキーオフデータが示す演奏操作子22の操作内容に基づき、各鍵の押鍵状態(操作状態)の情報を更新する(S11)。
次に、CPU11は、検出した操作にキーオン操作が含まれているか否か判断する(S12)。複数の操作を同時に検出した場合、その中に1つでもキーオン操作があればYesとなる。そして、Yesの場合、CPU11は、今回検出したキーオン操作に対応して音高の選択を行わせるアサイナを選択すべく、
図6に示すリトリガーアサイナ決定処理を実行する(S13)。
【0046】
図6の処理においては、CPU11はまず、今回検出したキーオン操作の前からキーオン中の鍵があったか否か判断する(S21)。ここでNoであれば、現在発音中のパートはなく、今回キーオン操作により発音に影響を与えるべきでないパートが存在しないため、全アサイナに発音音高の選択を行わせるべく、全アサイナについて発音割り当てフラグを立てて(S27)、元の処理に戻る。
【0047】
一方、ステップS21でYesであれば、CPU11は、各アサイナを順次処理対象として、そのアサイナに今回検出したキーオン操作に応じた発音音高の選択を行わせるか否かを判定するためのステップS23乃至S25の処理を実行する(S22,S26)。
この処理において、CPU11はまず、処理対象のアサイナがいずれかの音高を選択しているか否か判断する(S23)。
【0048】
ここでNoであった場合、すなわち処理対象のアサイナが音高を選択しておらず、対応する発音をしていない場合、処理対象のアサイナには、他の条件を考慮せずに発音音高の選択を行わせることとし、処理対象のアサイナについて発音割り当てフラグを立てる(S25)。
キーオフに応じて消音し、音高選択を解除した後次の選択をしていないアサイナや、音高選択規則に「XXXを除く」の条件が入っていたため以前のキーオンの際にどの音高も選択しなかったアサイナ等について、ステップS23でNoとなることが考えられる。
【0049】
また、ステップS23でYesの場合、CPU11は次に、処理対象のアサイナが選択している音高と今回キーオンされた音高との間の音高を選択しているアサイナが他にあるか否か判断する(S24)。ここでNoであった場合、処理対象のアサイナは、新たにキーオン操作された鍵から見て、処理対象のアサイナが選択している音高の側では最も近い音高を選択しているアサイナであることがわかる(反対側ではより近い音高を選択しているアサイナがあるかもしれないがここではこの点は考慮しなくてよい。また、このようなアサイナを、新たにキーオンされた鍵と選択音高が「隣接」するアサイナと呼ぶことにすする)。そこで、このアサイナに発音音高の選択を行わせることとし、処理対象のアサイナについて発音割り当てフラグを立てる(S25)。
【0050】
ステップS24でYesであれば、このアサイナには発音音高の選択を現在のまま維持させることとし、発音割り当てフラグを立てずにステップS26に進む。
そして、ステップS26でまだ処理対象にしていないアサイナがある間はステップS22に戻って処理を繰り返し、全てのアサイナを処理対象としていれば元の処理に戻る。
なお、今回キーオンされた音高が複数ある場合、そのいずれかについて「処理対象のアサイナが選択している音高と今回キーオンされた音高との間の音高を選択しているアサイナが他にない」場合にはS24はNoとなる。
【0051】
たとえば、n1,n2,n3,n4の順の音高を考え、このうちn1とn2がそれぞれアサイナA及びアサイナBに選択されている状態で、n3とn4が新規にキーオン操作されたとする。すなわち、n1(A),n2(B),n3(新規),n4(新規)であるとする。カッコ内は、該当の音高を選択しているアサイナを示す。
この場合、アサイナBについては、今回キーオンされた音高n3とn4のいずれについても、選択中の音高n2との間の音高を選択しているアサイナが他にないため、ステップS24の判断はNoとなり、今回キーオンに応じた音高選択を行うこととなる。一方、アサイナAについては、n3及びn4と、選択中の音高n1との間の音高n2を選択しているアサイナBがあるため、ステップS24の判断はYesとなり、今回キーオンに応じた音高選択は行わず、それまでの発音を維持することとなる。
【0052】
次に、n1(新規),n2(A),n3(B),n4(新規)の場合を考える。
この場合、アサイナAについては、今回キーオンされた音高n1と選択中の音高n2との間の音高を選択しているアサイナが他にないため、今回キーオンに応じた音高選択を行う。アサイナBが今回キーオンされた音高n4と選択中の音高n2との間の音高n3を選択しているが、上記n1とn2の関係のみでステップS24の判断はNoとなり、今回キーオンに応じた音高選択を行う。アサイナBについては、今回キーオンされた音高n4と選択中の音高n3との間の音高を選択しているアサイナが他にないため、ステップS24の判断はNoとなり、やはり今回キーオンに応じた音高選択を行う。
【0053】
次に、n1(A),n2(新規),n3(B),n4(新規)の場合を考える。
この場合、アサイナBについては、今回キーオンされた音高n4と選択中の音高n3との間の音高を選択しているアサイナが他にないため、今回キーオンに応じた音高選択を行う。
一方アサイナAについては、音高の位置関係のみを考えると、今回キーオンされた音高n2と選択中の音高n1との間の音高を選択しているアサイナが他にないため、今回キーオンに応じた音高選択を行うこととなる。
【0054】
ステップS23乃至S25の処理の趣旨は、今回検出したキーオン操作が、そのキーオンの音高に近い音高を選択しているアサイナのパートに係る操作である可能性が高いと判断し、そのようなパートについてのみ今回キーオン操作に応じた音高の選択をさせるようにすることである。
逆に、今回検出したキーオン操作は、そのキーオンの音高から遠い音高を選択しているアサイナのパートに係る操作である可能性は低いと判断し、そのようなパートについては今回キーオン操作に応じて発音音高が変化してしまうことがないよう、今回キーオン操作に応じた音高の選択をさせないようにすることである。
そして、これらのアサイナは、今回検出したキーオン操作の音高と、各アサイナが選択している音高とに基づき特定することができる。
【0055】
なお、ステップS24では、上記のものの他、「処理対象のアサイナが選択している音高と、今回キーオンされた音高との間の音高に、操作中の音高(鍵)が他にあるか否かを判断」するようにすることも考えられる。
この手法では、「あるアサイナが選択中の音高と今回キーオンされた音高との間に操作中の鍵はあるが、いずれのアサイナもその音高を選択していない」場合にもステップS24がYesとなる。たとえば、「ドミソが押されているがドとソしか発音していない」という状況において、新たにレが押鍵された場合、
図6に示した基準では、ドを選択しているアサイナとソを選択しているアサイナの両方に割り当てフラグが立つが、上記の方法だと、ドを選択しているアサイナにのみ割り当てフラグが立ち、ソを選択しているアサイナには割り当てフラグが立たない(間にミの押鍵があるため)という違いがある。しかし、
図6に示した基準を用いた場合と概ね同様な効果が得られる。
【0056】
図5の説明に戻る。
図6の処理の終了後、あるいはステップS12でNoの場合、CPU11は、検出した操作にキーオフ操作が含まれているか否か判断する(S14)。複数の操作を同時に検出した場合、その中に1つでもキーオフ操作があればYesとなる。
そして、Yesの場合、CPU11は、キーオフ操作と対応する処理として、検出したキーオフ操作に係る音高の発音停止を楽音生成部35に指示すると共に、その音高を選択しているアサイナの音高選択を解除する(S15)。
【0057】
また、CPU11はさらに、検出したキーオフ操作に係る音高を選択しているアサイナについて発音割り当てフラグを立てる(S16)。すなわち、音高選択を行わせることを設定する。このように、キーオフ操作に応じてアサイナに音高選択を行わせることを「キーオフリトリガー」と呼ぶことにする。
キーオフ操作した音高で発音していたパートが消えると発音数が減ってしまうため、消音したパートを別の音高で再発音させ、発音数を減らさないようにするための処理である。ただし、キーオフリトリガー処理によって起こる問題もあり、それについては第4実施形態の
図17および
図18で後述する。またこのため、キーオフリトリガーを行わないようにすることも考えられる。この場合、ステップS16の処理を省略すればよい。破線はこのことを示す。
ステップS16の後、あるいはステップS14でNoの場合、CPU11は、
図7に示す発音割り当て処理を実行する(S17)。
【0058】
図7の処理において、CPU11はまず、変数nに1を代入する(S31)。そして、第nアサイナAS−nに発音割り当てフラグがセットされているか否か判断する(S32)。
ここでセットされていれば、CPU11は、第nアサイナAS−nについて設定されている規則に従い、操作中の鍵の音高の中から発音する音高を選択する(S33)。そして、ステップS33で選択した音高で、第nアサイナAS−nと対応する第nパートの発音を開始するよう、楽音生成部35に指示する(S34)。この場合、発音に用いる音色は、第nパートについて設定されている音色である。また、このとき、選択した音高が前回と変わらず、かつその音高が今回キーオン操作された音高でない場合、楽音生成部35に対する発音の要求を新たに行わず、それまでの発音を継続するとよいことは、上述の通りである。
【0059】
以上のステップS33とS34が、アサイナAS1つ分の処理である。その後、CPU11は、現在処理したアサイナが最後のアサイナであるか否か判断し(S35)、最後でなければnを1加算して(S36)、ステップS32に戻って処理を繰り返す。
ステップS32でNoの場合、第nアサイナについては音高の選択は行わないので、そのままステップS35に進む。
【0060】
ステップS35でYesの場合、全てのアサイナに関する処理が終了したことがわかるため、全アサイナについて発音割り当てフラグをクリアし(S37)、
図7の処理を終了して元の処理に戻る。ここでは、
図5のステップS17に戻るので、CPU11はそのまま処理を終了する。以上が、1度の演奏操作検出と対応する処理である。
【0061】
なお、
図7の処理を始める前に、初めに全アサイナの発音割り当てフラグを確認し、フラグのあるアサイナについてのみステップS33及びS34を実行するようにしてもよい。この場合、フラグのあるアサイナがなければ、発音割り当て処理自体をスキップできる。
【0062】
次に、以上の処理の効果について、
図8乃至
図10を用いて説明する。
図8乃至
図10はそれぞれ、ユーザが行う演奏操作と、それに応じて各アサイナが選択する発音音高との関係を示す図である。これらの図において、横軸が音高、縦軸が時間であり、各音高の位置に示した帯が、各音高の押鍵期間を示す。また、各アサイナと対応する矢印により、そのアサイナがいつどの音高を選択しているかを示している。
【0063】
図8乃至
図10の全てにおいて、タイミングt(1)からt(6)までの期間音高n1,n2,n3の鍵が押鍵されている。これらの押鍵は、伴奏パートの演奏に係る押鍵である。また、t(1)からt(3)まで音高n4の鍵が押鍵され、それとタイミングが一部重なるようにt(2)からt(5)まで音高n5の鍵が押鍵され、さらに、それとタイミングが一部重なるようにt(4)からt(6)まで音高n4の鍵が押鍵される。音高n4及びn5の押鍵は、メロディパートのレガート奏法の演奏に係る押鍵である。
【0064】
図8は、キーオフリトリガーを含め、
図5乃至
図7の処理により各アサイナに発音音高を選択させる場合の音高選択の例である。
この場合、初めのt(1)のタイミングでは、
図6のステップS21でNoとなり、n1〜n4の4つの音高の鍵が押鍵中の状態で全てのアサイナASが発音する音高を選択する。第1〜第4アサイナAS1〜4がn4,n3,n2,n1をそれぞれ選択する。
【0065】
次のt(2)のタイミングでは、新たにキーオンされたn5と選択中の音高との間の音高を選択しているアサイナが他にないのは第1アサイナのみであるので、第1アサイナのみについて
図6のステップS24がNoとなり、第1アサイナAS−1のみが音高選択を行う。この選択は、n1〜n5の5つの音高の鍵が押鍵中の状態で行い、最高音のn5を選択する。他のアサイナは音高選択を行わないため、n5のキーオンにより発音音高が変動することはない。つまり、第2アサイナ(上から2音目を選択する設定)が音高n4で発音してしまうことがなく、伴奏パートの演奏として維持される。
【0066】
t(3)のタイミングでは、キーオフされた音高n4の発音を停止すると共に、
図5のステップS16によりn4を選択しているアサイナにキーオフリトリガーを行わせる。しかし、このタイミングではn4を選択しているアサイナはないため、各アサイナの状態に変化はない。
【0067】
t(4)のタイミングでは、新たにキーオンされたn4と選択中の音高との間の音高を選択しているアサイナが他にないのは第1アサイナと第2アサイナである。従って、これらのアサイナについて
図6のステップS24がNoとなり、第1アサイナAS−1及び第2アサイナAS−2が音高選択を行う。この選択は、n1〜n5の5つの音高の鍵が押鍵中の状態で行い、第1アサイナAS−1は最高音のn5を選択し、t(2)での選択を継続する。第2アサイナAS−2は、高音側2音のうち低い方のn4を選択する。他のアサイナは音高選択を行わないため、n4のキーオンにより発音音高が変動することはない。
【0068】
t(5)のタイミングでは、キーオフされたn5の発音を停止すると共に、
図5のステップS16によりn5を選択していた第1アサイナAS−1にキーオフリトリガーを行わせる。このキーオフリトリガーによる音高選択は、n1〜n4の4つの音高の鍵が押鍵中の状態で行い、第1アサイナAS−1は最高音のn4を選択する。このことにより、少し遅れるが、t(4)でのn4のキーオンを発音に反映させることができる。また、他のアサイナは音高選択を行わないため、n5のキーオフにより発音音高が変動することはない。
【0069】
t(6)のタイミングでは、キーオフされたn1〜n4の発音を停止する。ここでも、
図5のステップS16によりn1〜n4を選択していた各アサイナにキーオフリトリガーを行わせるが、押鍵されている鍵がないため、そのアサイナも音高を選択せず、新たな発音が開始されることはない。
【0070】
以上の通り、
図8の例では、
図6のステップS24及びS25の処理を実行して、キーオン操作に応じて音高選択を行うアサイナを、検出したキーオン操作の音高と選択音高が隣接するアサイナに限定したことにより、t(2)での音高n5の押鍵については、メロディパートの押鍵により伴奏パートの音高選択が影響を受けてしまうことを防止できる。従って、各アサイナの音高選択に、演奏者の演奏操作の意図を適切に反映することができる。逆に、伴奏パートの押鍵によるメロディパートの音高選択が影響を受けないようにすることももちろん可能である。
なお、t(4)での音高n4の押鍵については、第1実施形態では伴奏パートの音高選択が影響を受けてしまうが、この点については第2実施形態を採用するか又は第1実施形態を第2実施形態と組み合わせることにより更に改善可能である。
【0071】
〔第1実施形態の比較例:
図9〕
図9に示すのは、キーオン操作があった場合には常に全てのアサイナが音高選択を行い、かつキーオフリトリガーを行う場合の比較例である。
この場合、t(1)での音高選択は
図8の場合と同じであるが、t(2)において第2アサイナAS−2も音高選択を行うため、n1〜n5の中で高音側2音のうち低い方のn4を選択する。このため、音高n3で発音中の伴奏音が途切れてしまう。
図8の例ではこのような不具合が起こらないことは、上述の通りである。
【0072】
t(3)のタイミングでは、キーオフされた音高n4の発音を停止すると共に、n4を選択している第2アサイナAS−2にキーオフリトリガーを行わせる。この選択は、n1,n2,n3,n5の4つの音高の鍵が押鍵中の状態で行い、第2アサイナAS−2は、高音側2音のうち低い方のn3を選択する。従って、伴奏音の音高はn3に戻ることになる。
また、t(4)においては、t(2)の場合と同様に、n1〜n5の5つの音高の鍵が押鍵中の状態で全アサイナASが音高選択を行うため、第1アサイナAS−1はn5を、第2アサイナAS−2はn4を選択する。そして、t(5)でのキーオフリトリガーにより、キーオフされたn5を選択していた第1アサイナAS−1が、
図8のt(5)と同様、最高音のn4を選択する。
t(4)以降の発音は、結果的には
図8と同じである。
【0073】
〔第2実施形態:
図10,
図11〕
次に、本発明の第2実施形態である電子楽器について説明する。
この第2実施形態は、リトリガーアサイナ決定処理が第1実施形態と異なるのみであるので、この点についてのみ説明する。また、第1の実施形態と同じ又は対応する構成には第1の実施形態と同じ符号を用いる。この点は、以下の実施形態についても同様である。
図10に、第2実施形態におけるリトリガーアサイナ決定処理のフローチャートを示す。
【0074】
第2実施形態において、CPU11は、
図5のステップS13で、
図11に示す処理を開始する。そしてまず、今回検出したキーオン操作の前からキーオン中の鍵があったか否か判断する(S31)。ここでNoであれば、全アサイナについて発音割り当てフラグを立てて(S35)、元の処理に戻る。これらの処理は、
図6のステップS21及びS27と同じである。
【0075】
一方、ステップS31でNoの場合、CPU11はまず、音高を選択していないアサイナについて発音割り当てフラグを立てる(S32)。この処理は、
図6のステップS23及びS25と同趣旨である。
次に、CPU11は、各アサイナASが選択している音高と、今回キーオンを検出した音高との音高差を算出する(S33)。キーオンが複数あった場合には、それぞれについて音高差を算出してその最小値を取ればよい。また、音高を選択していないアサイナはこの処理において考慮しない。そして、CPU11は、ステップS33で算出した音高差が所定値以下のアサイナについて発音割り当てフラグを立てて(S34)、元の処理に戻る。
【0076】
以上の処理によっても、第1実施形態の場合と基準は異なるが、今回検出したキーオン操作の音高に近い音高を選択しているアサイナのパートについてのみ今回キーオン操作に応じた音高の選択をさせるようにすることができる。
【0077】
次に、以上の処理の効果について、
図11を用いて説明する。
図11は、ユーザが行う演奏操作と、それに応じて各アサイナが選択する発音音高との関係を示す図であり、書式は
図8と同じである。また、
図11の例は、
図8と同じ演奏操作に応じて、
図5、
図10及び
図7の処理により各アサイナに発音音高を選択させる場合の音高選択の例である。ただし、音高n4と音高n5との間隔はステップS34で用いる所定値より小さく、音高n4と音高n3との間隔はその所定値よりも大きいとする。
【0078】
この場合、初めのt(1)のタイミングでの音高選択は、
図8の例と同じである。
次のt(2)のタイミングでは、新たにキーオンされたn5と音高差が所定値以内の音高を選択しているアサイナは第1アサイナAS−1のみであるので、ステップS34において第1アサイナAS−1についてのみ発音割り当てフラグが立ち、第1アサイナAS−1のみが音高選択を行う。この選択は、n1〜n5の5つの音高の鍵が押鍵中の状態で行い、最高音のn5を選択する。結果的に、ここでの音高選択は
図8の例と同じとなる。
t(3)のタイミングでの音高選択についても、
図8の例と同じである。
【0079】
t(4)のタイミングでは、新たにキーオンされたn4と音高差が所定値以内の音高を選択しているアサイナは第1アサイナAS−1のみである。従って、第1アサイナAS−1のみが音高選択を行う。この選択は、n1〜n5の5つの音高の鍵が押鍵中の状態で行い、最高音のn5を選択する。
この例では、
図8と異なり、第2アサイナAS−2はt(4)において音高選択を行わない。第2アサイナAS−3が選択している音高n3は、新たにキーオンされた音高n4と、所定値以上離れているためである。このため、t(4)での音高n4の押鍵についても、メロディパートの押鍵により伴奏パートの音高選択が影響を受けてしまうことを防止できる。
【0080】
t(5)のタイミングでは、キーオフされたn5の発音を停止すると共に、n5を選択していた第1アサイナAS−1にキーオフリトリガーを行わせ、第1アサイナAS−1は最高音のn4を選択する。このことにより、少し遅れるが、t(4)でのn4のキーオンを発音に反映させることができる。この点は、
図8と同様である(ただし第2アサイナAS−2はn3を選択したままである)。
t(6)のタイミングでの発音停止も、
図8と同様である。
【0081】
以上の通り、
図11の例では、
図10のステップS33及びS34の処理を実行して、キーオン操作に応じて音高選択を行うアサイナを、検出したキーオン操作の音高から所定値以内の音高差の音高を選択しているアサイナに限定したことにより、n3、n4及びn5の位置関係が上述の通りであれば、t(2)での音高n5の押鍵に加え、t(4)でのn4の押鍵についても、メロディパートの押鍵により伴奏パートの音高選択が影響を受けてしまうことを防止できる。従って、各アサイナの音高選択に、演奏者の演奏操作の意図を適切に反映することができる。
【0082】
なお、第1実施形態と第2実施形態を組み合わせ、検出したキーオン操作の音高と選択音高が隣接するアサイナが複数ある場合に、キーオン操作の音高から所定値以内の音高差の音高を選択しているアサイナのみに音高選択をさせるようにすることが考えられる。このようにしても、
図11と同じ動作を実現可能である。
図8及び
図11において、t(4)のキーオン音高であるn4と選択音高が隣接する第2アサイナAS−2(n3を選択)及び第1アサイナAS−1(n5を選択)のうち、音高差が所定値(たとえば1オクターブ)以内なのがn5を選択している第1アサイナAS−1のみとなるようにすれば、第1アサイナAS−1のみに割り当てフラグを立てることができる。
【0083】
〔第3実施形態:
図12〕
次に、本発明の第3実施形態である電子楽器について説明する。
第3実施形態も、リトリガーアサイナ決定処理が第1実施形態と異なるのみであるので、この点についてのみ説明する。
図12に、第3実施形態におけるリトリガーアサイナ決定処理のフローチャートを示す。
【0084】
第3実施形態において、CPU11は、
図5のステップS13で、
図12に示す処理を開始する。
図12の処理において、ステップS41,S42及びS47は
図10のステップS31,S32及びS35と同趣旨であるので説明を省略する。
ステップS42の後、CPU11は、今回検出した各キーオンを順次処理対象としてステップS44及びS45の処理を行う(S43,S46)。すなわち、処理対象のキーオンの音高と各アサイナが選択している音高との音高差を算出し(S44)、その音高差が最も小さいアサイナについて発音割り当てフラグを立てる(S45)。このとき、音高を選択していないアサイナはこの処理において考慮しない。また、複数のキーオン操作が同時に行われた場合には1つのアサイナについて複数回発音割り当てフラグを設定することもあり得るが、2回目以降の設定に特に意味はない。
そして、ステップS46でNoになるまでステップS43に戻って処理を繰り返し、ステップS46でNoになると元の処理に戻る。
【0085】
以上の処理によっても、第1実施形態の場合と基準は異なるが、今回検出したキーオン操作の音高に近い音高を選択しているアサイナのパートについてのみ今回キーオン操作に応じた音高の選択をさせるようにすることができる。そしてこのことにより、第1実施形態の場合と同様な効果を得ることができる。さらに、n4とn5との間の音高差がn4とn3との間の音高差よりも小さければ、
図11のような音高選択も可能である。
第1実施例では新規キーオンと選択音高が隣接するアサイナに、第3実施例では新規キーオンの最近傍の音高を選択しているアサイナに発音割り当てフラグを立てるため、第3実施例の方が影響を受けるアサイナが少なくなる。どちらが好ましいかは、押鍵状態や各アサイナのアサイン規則に応じて異なるが、
図3のアサイン規則と
図8及び
図11の押鍵操作においては、第1実施例よりも第3実施例の方が意図に合った演奏となる。
【0086】
〔第4実施形態:
図13乃至
図17、および参考例を示す
図18〕
次に、本発明の第4実施形態である電子楽器について説明する。
第4実施形態は、キーオフリトリガーに代えて、キーオンから所定時間経過後にアサイナによる発音音高の選択をやり直す機会を設けた点が第3実施形態と異なるのみであるので、この点についてのみ説明する。
【0087】
図13に、第4実施形態の電子楽器10における、
図2と対応する機能ブロック図を示す。
図13に示すように、第4実施形態の電子楽器10は、第1実施形態の電子楽器10が備える構成に加え、再判定指示部38及び再判定タイマ39を備える。
また、操作状態検出部32は、キーオンデータを受信した場合に、そのデータを再判定指示部38にも供給する。
【0088】
再判定指示部38は、操作状態検出部32からキーオンデータを受信すると、再判定タイマ39に所定時間を計測させ、所定時間経過後に、割当制御部34に対し、アサイナASによる発音音高の選択を行うよう指示する機能を備える再選択制御手段である。再判定指示部38及び再判定タイマ39の機能は、CPU11により実現される。
【0089】
図8に示した音高n4及びn5のようにレガート奏法を行う場合、キーオフリトリガーを適用しないと、t(5)の音高n5のキーオフ操作のタイミングで、n5を選択していた第1アサイナはn5の発音を停止するのみでn4での発音開始をしないため、n4が発音されない。したがってレガート奏法ではキーオフリトリガーが有効である。しかし、スタッカート奏法を行う場合には、逆にキーオフリトリガーすることで問題が発生する。
【0090】
この点について、
図18を用いて説明する。
図18は、第4実施形態に関する参考例における、ユーザが行う演奏操作と、それに応じて各アサイナが選択する発音音高との関係を示す図であり、書式は
図8と同じである。
また、
図18の例は、n4とn5の押鍵を、押鍵間に少し間隔が空く、スタッカート奏法で行った場合の、
図5の処理(ただしリトリガーアサイナ決定処理は
図12のものを用いる)に従った音高選択の例である。
【0091】
この場合、t(1)のタイミングでの音高選択は、
図8の場合と同じである。しかし、t(2)の音高n4のキーオフ操作のタイミングで、n4を選択していた第1アサイナAS−1が音高選択を行う。ここでは、n1〜n3の3つの音高の鍵が押鍵中の状態で選択を行うため、第1アサイナAS−1は最高音のn3を選択することになる。
また、t(3)のタイミングでは、第1アサイナAS−1及び第2アサイナAS−2が、キーオン操作されたn5に最も近いn3の音高を選択しているため、これらのアサイナが音高選択を行う。そして、第1アサイナAS−1は最高音のn5を選択し、第2アサイナAS−2は、高音側2音のうち低い方のn3を選択する。
以上のように、スタッカート奏法の演奏操作に対してキーオフリトリガーを適用すると、メロディパートの押鍵がスタッカートにより途切れた期間に、メロディパートの音高を選択させたいアサイナが伴奏パートの音高を選択してしまうことが生じる。
【0092】
そこで、キーオフリトリガーを適用せずにレガート奏法を意図通りに発音させる方法として、第4実施形態では、キーオン操作に応じてアサイナが一旦発音音高の選択を行ってから、再判定指示部38の機能により所定時間経過後に再度音高選択をやり直すことにより、キーオン操作の直後に押鍵状態が変化した場合でも、その変化後の押鍵状態に応じた発音を行うことができるようにしている。
この所定時間は、短すぎると押鍵状態が変化する前に音高選択をやり直すこととなり、長すぎるとキーオン時の選択のまま発音する時間が長くなりその後で発音音高が変化すると却って不自然な発音になってしまう。これらを考慮すると、所定時間は、例えば50ミリ秒程度とすることが考えられる。
なお、音高選択のやり直しは、全てのアサイナについて行うことが望ましい。
【0093】
次に、
図13に示した機能のうち、CPU11が担う機能を実現するためにCPU11が実行する処理について説明する。
まず
図14に、
図5と対応する、キーオンデータ及び/又はキーオフデータを受信した場合の処理のフローチャートを示す。
この
図14の処理は、ステップS61及びS62が
図5のステップS11及び12と対応し、ステップS63のリトリガーアサイナ決定処理は、
図12に示したものである。また、ステップS65乃至S67は、
図5のステップS14,S15及びS17と対応する。そして、キーオフリトリガーに係る
図5のステップS16を行わず、ステップS64を追加した点が
図5と異なる。
追加したステップS64の処理は、キーオン操作から所定時間を計測するための再判定タイマ39に計時をスタートさせる処理である。
【0094】
次に、
図15に、再判定タイマのスタート後、所定時間Δt経過した場合にCPU11が実行する処理のフローチャートを示す。
CPU11は、ステップS64での再判定タイマ39のスタート後、所定時間Δt経過したことを検出すると、
図15のフローチャートに示す処理を開始する。そしてまず、全てのアサイナについて発音割り当てフラグを立ててから(S71)、
図7に示した発音割り当て処理を実行する(S72)。これらの処理により、全アサイナASについて、Δt経過時点での押鍵状態に応じて発音音高を選択させることができる。
【0095】
なお、ステップS72の発音割り当て処理の際に、キーオン操作検出時の
図14のステップS67での発音割り当て処理の際と同じ音高を選択したアサイナASについては、
図14のステップS67での発音割り当て処理の際に、あるいはそれより前に開始した発音をそのまま継続する。
そして、ステップS72の後、CPU11は、再判定タイマ39をクリアして処理を終了する。
【0096】
次に、以上の処理の効果について、
図16及び
図17を用いて説明する。
図16及び
図17はそれぞれ、ユーザが行う演奏操作と、それに応じて各アサイナが選択する発音音高との関係を示す図であり、書式は
図8と同じである。
図16の例は、
図8と同じ演奏操作に応じて、
図14及び
図15の処理により各アサイナに発音音高を選択させる場合の音高選択の例である。
【0097】
この場合、t(1)及びt(2)のタイミングでの音高選択は、
図11の場合と同じである。また、t(1)のキーオンからΔt経過したt(1)+Δtのタイミングで、全アサイナASが音高選択を行う。しかし、押鍵状態はt(1)のタイミングと変わらないため、選択結果もt(1)での選択と変わらない。従って、各アサイナASと対応する発音はそのまま継続される。
【0098】
一方、t(3)においては、
図11の例と異なり、キーオフ操作に応じてアサイナASに音高選択をさせることはない。これに代えて、t(2)のキーオンからΔt経過したt(2)+Δtのタイミングで、全アサイナASが音高選択を行う。ここでは、n1,n2,n3及びn5の4つの音高の鍵が押鍵中の状態で選択を行うため、第1アサイナAS−1は最高音のn5を選択し、第2〜第4アサイナAS−2〜4はそれぞれn3,n2,n1を選択する。そして、この選択結果はt(3)の時点と変わらないため、各アサイナASと対応する発音はそのまま継続される。
【0099】
また、t(4)のタイミングでの音高選択も、
図11の場合と同じである。そして、t(5)においては、キーオフリトリガーを行わないため、単にキーオフされた音高n5の発音を停止するのみである。
そして、t(4)のキーオンからΔt経過したt(4)+Δtのタイミングで、全アサイナASが音高選択を行う。ここでは、n1〜n4の4つの音高の鍵が押鍵中の状態で選択を行うため、第1〜第4アサイナAS−1〜4はそれぞれ、n4,n3,n2,n1を選択する。ここで、第2〜第4アサイナAS−2〜4については選択結果がt(5)の時点と変わらないため、対応する発音はそのまま継続される。しかし、第1アサイナAS−1については、新たにn4を選択し、この音高での発音を開始する。
【0100】
従って、キーオン操作から所定時間後に各アサイナASに発音音高の選択を行わせることにより、第1実施形態で説明したキーオフリトリガーの場合と比べ、発音開始タイミングが少し遅れるものの、レガート奏法でキーオンした鍵と対応する発音を、確実に開始することができる。
なお、
図16からわかるように、Δtは、レガート奏法において前の押鍵と後の押鍵が重なる、t(2)からt(3)の期間よりも少し長い程度に設定することが望ましい。
【0101】
次に、
図17の例は、n4とn5の押鍵を、押鍵間に少し間隔が空く、スタッカート奏法(
図18と同じ操作)で行った場合の、
図14及び
図15の処理に従った音高選択の例である。
この場合も、t(1)のタイミングでの音高選択は、
図8の場合と同じである。また、t(3)及びt(5)のタイミングでは、第1アサイナAS−1がどの音高も選択していないため、少なくとも第1アサイナAS−1が音高選択を行い、それぞれキーオンされたn5及びn4を選択する。
【0102】
また、キーオンされた音高に最も近い音高を選択するアサイナは第2アサイナAS−2であるので、第2アサイナAS−2も音高選択を行う。しかし、選択する音高はどちらのタイミングでもn3であり、それまでと変わらないため、それまでの発音を継続する。
【0103】
一方、t(1),t(3)及びt(5)の各キーオンタイミングからΔ(t)後にも、全アサイナASが発音する音高を選択する。しかし、これらのタイミングでの選択結果は、それぞれt(1),t(3)及びt(5)のタイミングでの選択結果と同じであり、ここで発音内容が変わることはない。
【0104】
以上の通り、
図14及び
図15の処理により、メロディパートでスタッカート奏法を行った場合でも、演奏者の意図に沿った発音が可能である。
従って、キーオンからΔt経過後の再選択を用いれば、
図18を用いて説明したような問題を生じることなく、レガート奏法とスタッカート奏法の双方について、各アサイナの音高選択に、演奏者の演奏操作の意図を適切に反映することができる。
【0105】
ただし、Δt経過後の再選択の場合、上述のように、キーオフリトリガーの場合よりも押鍵に応じた発音開始のタイミングが遅れるという特性がある。従って、スタッカート奏法時の適切な音高選択と反応の速さのどちらを優先するかに応じて、どちらのアルゴリズムを用いるかをユーザが選択できるようにするとよい。この選択は、ペダル等の演奏操作子や、設定操作子23に含まれるボタン等により行えるようにするとよい。鍵の一部を、この選択に用いることができるようにすることも考えられる。
【0106】
〔第5実施形態:
図19及び
図20〕
次に、本発明の第5実施形態である電子楽器について説明する。
第5実施形態は、キーオン操作に応じたアサイナによる音高の選択を行わないようにした点と、キーオフリトリガーを併用可能とした点が第4実施形態と異なるのみであるので、この点についてのみ説明する。
なお、この第5実施形態では、キーオン操作時には各アサイナが音高の選択を行わないため、
図9の例で発生したような、t(2)やt(4)でのキーオンにより、音高の移動を意図していないアサイナが音高移動してしまうといった不具合が起こらない。また、キーオンから一定時間が経過してから各アサイナが音高選択を行うため、押鍵状態が安定してから音高選択を行うことができ、演奏者の意図した発音が可能となる。
【0107】
図19に、第5実施形態における、キーオンデータ及び/又はキーオフデータを受信した場合の処理の
図14と対応するフローチャートを示す。
この
図19の処理において、ステップS81は
図14のステップS61と同じ処理である。また、ステップS82及びS83は、
図14のステップS65及びS66と同じ処理である。ステップS83の後ろに、ステップS84乃至S86を追加した点は
図14と異なる。
【0108】
この処理は、キーオフ操作があった時点で再判定タイマ39がカウント中、すなわちキーオンから所定時間Δtの経過を待っている状態の場合に、Δt経過後の音高選択を取りやめ、その音高選択に代えてキーオフリトリガーを行うための処理である。
すなわち、CPU11は、キーオフ操作を検出した際に(S82のYes)、再判定タイマ39がカウント中であれば(S84のYes)、検出したキーオフ操作に係る音高を選択しているアサイナについて発音割り当てフラグを立てる(S85)と共に、再判定タイマ39をクリアして停止させる(S86)。
なお、これらのステップS84乃至S86の処理は行わなくてもよい。
【0109】
ステップS86の後、あるいはステップS82又はS84でNoの場合、CPU11は検出した操作にキーオンがあるか否か判断し(S87)、あれば、再判定タイマ39をスタートさせる(S88)。その後、
図7の発音割り当て処理を実行して(S89)、処理を終了する。
ステップS87でキーオンがない場合、ステップS88をスキップしてステップS89に進む。
【0110】
このように、第5実施形態においては、キーオン時には各アサイナASに発音割り当てフラグを立てる処理を行っていないので、アサイナASはキーオン操作に応じた発音音高の選択を行わない。しかし、
図15に示した処理は第4実施形態の場合と同様に実行し、ステップS86で再判定タイマ39がクリアされない限りは、キーオン操作からΔt経過後に、アサイナASに発音音高の選択を実行させる。
【0111】
次に、以上の処理の効果について、
図20を用いて説明する。
図20は、ユーザが行う演奏操作と、それに応じて各アサイナが選択する発音音高との関係を示す図であり、書式は
図8と同じである。
図20の例は、
図8と同じ演奏操作に応じて、
図19(ステップS84乃至S86も含む)及び
図15の処理により各アサイナに発音音高を選択させる場合の音高選択の例である。
【0112】
この場合、t(1)のn1〜n4のキーオン時には、各アサイナASは音高選択を行わず、キーオンからΔt経過したt(1)+Δtのタイミングで音高選択を行う。選択結果は、
図8等でt(1)の際になされる選択と同じである。
また、t(2)のn5のキーオン時にも、各アサイナASは音高選択を行わない。そして、t(2)+Δtよりもt(3)のn4のキーオフが早く来るため、ここで、キーオフされたn4の音高を選択している第1アサイナAS−1についてキーオフリトリガーを行う。その結果、第1アサイナAS−1は、その時点での押鍵の最高音高であるn5を選択し、発音を開始する。この場合、t(2)+Δtでの音高選択は行われない。
【0113】
また、t(4)のn4のキーオン時にも、各アサイナASは音高選択を行わない。そして、t(4)+Δtよりもt(5)のn5のキーオフが早く来るため、ここで、キーオフされたn5の音高を選択している第1アサイナAS−1についてキーオフリトリガーを行う。その結果、第1アサイナAS−1は、その時点での押鍵の最高音高であるn4を選択し、発音を開始する。この場合、t(4)+Δtでの音高選択は行われない。
この間、第2〜第4アサイナAS−2〜4が選択する音高はそれぞれn3,n2,n1で変化せず、メロディパートの押鍵変化の影響は及ばない。
【0114】
このように、キーオンに応じた発音音高の選択を行わなくても、キーオンから所定時間経過後の音高選択と、キーオフリトリガーを用いることにより、各アサイナの音高選択に、演奏者の演奏操作の意図を適切に反映することができる。
なお、
図19の処理では、キーオンからΔt経過するまでの間しかキーオフリトリガーを行わないため、
図18の例のように、押鍵数が減ったタイミングでキーオフリトリガーを行ってしまい、望まない音高を選択してしまうことも起こらない。
【0115】
なお、
図20において、
図19の処理のステップS84乃至S86を含まない、すなわちキーオフリトリガーを行わない場合には、t(5)ではなく、t(4)+Δtの時点で第1アサイナAS−1が音高n4を選択することとなる。しかし、いずれにしても第1アサイナAS−1の音高選択が、メロディ用の押鍵であるn4→n5→n4のとおりとなることに変わりはない。
【0116】
〔第6実施形態:
図21乃至
図24〕
次に、本発明の第6実施形態である電子楽器について説明する。
第6実施形態は、キーオン時にも一部のアサイナについては音高選択を行うようにした点と、キーオンから所定時間経過後に行うアサイナによる音高選択を、一部のアサイナについてはキャンセルするようにした点が第5実施形態と異なる。そこで、これらの点についてのみ説明する。
【0117】
まず
図21に、第6実施形態における、キーオンデータ及び/又はキーオフデータを受信した場合の処理の、
図5及び
図19と対応するフローチャートを示す。
この
図21の処理において、ステップS101及びS102は、
図5のステップS11及びS12と同じ処理である。そして、ステップS102でYesの場合、CPU11は、再判定タイマ39に計時をスタートさせると共に、全アサイナについて再判定実行フラグを立てる(S103)。再判定実行フラグは、このフラグが立っているアサイナについて、キーオンから所定時間経過後の音高選択を行うことを意味するフラグである。
【0118】
次にCPU11は、各アサイナASについて設定されている規則に従い、現時点(キーオン操作検出時点)で操作中の鍵から発音すべき音高を選択したと仮定した場合の選択結果を記憶する(S104)。そして、ステップS104で記憶した選択結果が今回検出したキーオンの音高となるアサイナASについて、発音割り当てフラグを立てる(S105)。
なお、ステップS104及びS105の処理は、発音割り当てフラグを立てるアサイナを選択する処理であり、リトリガーアサイナ決定処理の別実施形態であると考えることができる。
【0119】
ステップS105の後、またはステップS102でNoの場合、処理はステップS106に進む。ステップS106の判断は、
図5のステップS14と同じであり、検出した操作に1つでもキーオフ操作があればYesとなる。
そして、ステップS106でYesの場合、CPU11は、今回検出したキーオフ操作に係る音高の発音停止を楽音生成部35に指示すると共に、その音高を選択しているアサイナの音高選択を解除する(S107)。
【0120】
その後、再判定タイマがカウント中であれば(S108のYes)、今回検出したキーオフ操作の音高がステップS104で記憶されているアサイナについて再判定実行フラグを解除する(S109)。このステップS108及びS109の処理は、キーオン操作の時点で想定されたステップS104での選択結果の音高がキーオフされたアサイナについては、もはや当初想定した音高で発音されることはないため、所定時間経過後の再判定をしないことが望ましいとして再判定を取りやめるためのものである。しかし、通常の演奏において、この条件に該当するアサイナはあまりないと考えられるため、ステップS108及びS109の処理は省略してもよい。破線はそのことを示すものである。
【0121】
ステップS109の後又は、ステップS106若しくはS108でNoの場合には、
図7の発音割り当て処理を実行して(S110)、元の処理に戻る。
ステップS110の発音割り当て処理においては、ステップS105で発音割り当てフラグが立ったアサイナについてのみ発音音高の選択が行われる。つまり、今回検出したキーオン操作の音高を選択して発音すべきアサイナのみが音高選択を行い、他のアサイナは音高選択を行わない。
【0122】
次に、
図22に、第6実施形態における、再判定タイマ39のスタートから所定時間Δt経過した場合の処理の
図15と対応するフローチャートを示す。
CPU11は、ステップS103での再判定タイマ39の計時開始後、所定時間Δt経過したことを検出すると、
図22のフローチャートに示す処理を開始する。そしてまず、再判定実行フラグの立っている全てのアサイナについて発音割り当てフラグを立ててから(S121)、再判定実行フラグをクリアして(S122)、
図7に示した発音割り当て処理を実行する(S123)。これらの処理により、再判定実行フラグの立っているアサイナASについて、Δt経過時点での押鍵状態に応じて発音音高を選択させることができる。
【0123】
なお、ステップS123の発音割り当て処理の際に、キーオン操作検出時の
図21のステップS110での発音割り当て処理の際と同じ音高を選択したアサイナASについては、
図21のステップS110での発音割り当て処理の際に、あるいはそれより前に開始した発音をそのまま継続する。
そして、ステップS123の後、CPU11は、再判定タイマ39をクリアして(S124)、処理を終了する。
【0124】
次に、以上の処理の効果について、
図23及び
図24を用いて説明する。
図23及び
図24は、ユーザが行う演奏操作と、それに応じて各アサイナが選択する発音音高との関係を示す図であり、書式は
図8と同じである。
また、どちらの例も、
図21(ステップS108及びS109も含む)及び
図22の処理により各アサイナに発音音高を選択させる場合の音高選択の例であるが、押鍵操作が異なる。
【0125】
図23の例では、t(1)のタイミングでn1〜n4の鍵がキーオンされる。このとき、ステップS104での選択結果は、第1〜第4アサイナAS−1〜4がそれぞれn4,n3,n2,n1を選択するものであるため、ステップS105では、全アサイナについて発音割り当てフラグが立つ。そして、ステップS110の発音割り当て処理において、第1〜第4アサイナAS−1〜4はそれぞれn4,n3,n2,n1を選択する。すなわち、第5実施形態の
図20の例と比べ、発音開始にΔtの遅れが発生しない。
また、キーオンからΔt経過したt(1)+Δtのタイミングでは、全アサイナについて再判定実行フラグが立っているため、各アサイナASはここで再度音高選択を行うが、選択結果は、t(1)の時点と変わらない。
【0126】
次に、t(2)のタイミングでは、n5の鍵がキーオンされ、n1〜n5の鍵が押鍵状態となる。従って、ステップS104での選択結果は、第1〜第4アサイナAS−1〜4がそれぞれn5,n4,n2,n1を選択するものとなる。従って、ステップS105では、ステップS104での選択結果がn5となる第1アサイナAS−1のみ発音割り当てフラグが立つ。そして、ステップS110の発音割り当て処理において、第1アサイナAS−1はn5を選択する。従って、ここでも発音開始にΔtの遅れが発生しない。
【0127】
次に、t(3)のタイミングでは、n4の鍵がキーオフされる。従って、t(2)のタイミングでステップS104にてn4の音高を記憶した第2アサイナAS−2について、再判定実行フラグを解除する。しかし、この時点では音高選択は行わない。
そして、t(2)+Δtのタイミングでは、第2アサイナAS−2以外の全アサイナについて音高選択を行う。このときの選択結果は、t(2)の時点と変わらない。なお、仮に第2アサイナAS−2が音高選択を行ったとしても、選択結果は、t(2)の時点と変わらない。
このように、
図21及び
図22の処理によっても、メロディパートでレガート演奏がなされた場合に、演奏者の意図に合った発音が可能である。
【0128】
次に、
図24の例は、音高n4が音高n5のキーオン直後にキーオフされない点が
図21の例と異なる。この場合、音高n5のキーオン操作は、押鍵数を増やす意図のものであると考えられる。
図24の例では、t(2)までは
図23と同じ動作であるが、t(2)の直後にキーオフがないため、t(2)+Δtのタイミングで全アサイナについて再判定実行フラグが立ったままである。従って、第2アサイナAS−2も音高選択を行い、押鍵中の音高の高音側2音のうち低い方のn4を選択する。
このため、t(2)とt(2)+Δtで若干のずれは生じるが、押鍵数を増やす意図の演奏操作に応じて第1パートと第2パートの発音音高を変化させ、演奏者の意図に合った発音が可能である。
【0129】
このように、
図21及び
図22の処理によれば、
図21のステップS104及びS105の処理を実行して、新規キーオンに応じて音高選択を行った場合にその新規キーオンの音高を選択すると想定されるアサイナに、音高選択を行わせることにより、新規キーオンの音高については、操作に応じて速やかに発音を開始できる。
また、キーオンからΔt後に再度発音音高の選択を見直すため、キーオン直後にさらに押鍵状態に変化があった場合でも、速やかに、演奏者の意図に沿うように発音に反映させることができる。
【0130】
〔変形例:
図25〕
以上で実施形態の説明を終了するが、装置の構成、演奏操作子を始めとする操作子の構成、アサイナの数やアサイナに設定する選択規則、処理に用いるデータの構成、具体的な処理の手順等が上述の実施形態で説明したものに限られないことはもちろんである。
例えば、キーオン操作に応じて、
図6等のリトリガーアサイナ決定処理により音高選択を行うか否かを決定するか、必ず音高選択を行うこととするかを、アサイナ毎に設定できるようにしてもよい。
【0131】
図25に、この設定の例を示す。「音高依存」が前者の、「常時」が後者の設定を示す。そして、「常時」の設定がなされているアサイナについては、キーオン時に選択している音高によらず、キーオン操作に応じて音高選択を行わせるようにするとよい。
最高音(又は最低音)を選択する設定のアサイナは、基本的には低い(又は高い)音高での新規キーオンにはもともと影響を受けない。そして、新規キーオンによって意図しない影響を受けてしまうのは、中間的な音高を選択するアサイナであると考えられる。そこで、このようなアサイナにのみ「音高依存」を設定するようにすれば、各アサイナの音高選択に演奏者の演奏操作の意図を適切に反映するという効果を維持しつつ、音高選択の処理負荷を軽減することができる。
【0132】
また、
図6等のリトリガーアサイナ決定処理において、キーオン操作に応じて発音音高の選択を行うアサイナを決定する方法は、上述した各実施形態のものに限られない。例えば、検出したキーオン操作の音高と選択している音高との音高差が小さい方から所定数のアサイナについて、音高選択を行うことを決定することも考えられる。
【0133】
また、上述した実施形態ではアサイナ決定部33を割当制御部34と別に設ける例について説明したが、割当制御部34の各アサイナASがアサイナ決定部33の機能を備えていてもよい。この場合、操作状態検出部32がキーオンデータ又はキーオフデータを受信した場合に、演奏操作子22の操作状態の情報と共に、割当制御部34の各アサイナASに通知するとよい。そして、各アサイナASが、キーオンデータを通知された場合に、
図6等の処理により、各アサイナASが選択している音高と、キーオンデータが示す音高とに基づき、今回キーオンに応じた発音音高の選択要否を判断し、必要と判断した場合に、
図7のステップS33及びS34のように音高選択及び発音開始の処理を行うようにすればよい。
【0134】
また、上述した実施形態では、演奏操作子が鍵盤であり、発音開始指示を押鍵操作により、発音停止指示を離鍵操作により行う例について説明した。しかし、演奏操作子の形態はこれに限られない。他の楽器の形状はもちろん、マトリクス状に操作部を配置したパッドなど、伝統的な楽器と全く異なる形状のユーザインタフェースを備える装置にもこの発明は適用可能である。この場合、発音開始指示及び発音停止指示は、そのユーザインタフェースの特性に応じた操作方法で受け付けることになる。
【0135】
また、電子楽器10が演奏操作子を内蔵している必要もない。通信I/F15に接続された外部のコントローラから、演奏操作子の操作内容を示す演奏データを取得し、その演奏データに基づいて電子楽器10が各操作部の操作状態を把握することも考えられる。
また、汎用コンピュータのキーボードや、タッチパネルに表示したGUI(グラフィカルユーザインタフェース)を、演奏操作子として用いることも考えられる。この場合において、汎用コンピュータに
図2に示した各部の機能を実現させることにより、電子楽器として機能させることができる。また、いずれの場合でも、
図2に示した各部の機能を、複数の装置に分散して設け、それらを協働させて電子楽器10の機能を実現させることもできる。
【0136】
この発明の実施形態であるプログラムは、1のコンピュータに、または複数のコンピュータを協働させて、
図2に示した各部(特にアサイナ決定部33)の機能を実現させるためのプログラムである。
そして、このようなプログラムをコンピュータに実行させることにより、上述したような効果を得ることができる。
【0137】
このようなプログラムは、はじめからコンピュータに備えるROMや他の不揮発性記憶媒体(フラッシュメモリ,EEPROM等)などに格納しておいてもよい。しかし、メモリカード、CD、DVD、ブルーレイディスク等の任意の不揮発性記録媒体に記録して提供することもできる。それらの記録媒体に記録されたプログラムをコンピュータにインストールして実行させることにより、上述した各手順を実行させることができる。
【0138】
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部装置あるいはプログラムを記憶手段に記憶した外部装置からダウンロードし、コンピュータにインストールして実行させることも可能である。
また、以上説明してきた実施形態及び変形例の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。