(57)【特許請求の範囲】
【請求項１】
押鍵操作を受けて押鍵情報を生成するとともに離鍵操作を受けて離鍵情報を生成し、押鍵情報に基づいて楽音を発音するとともに離鍵情報に基づいて楽音を消音する電子楽器において、
押鍵情報の入力を受けて該押鍵情報に応じた楽音を発音するとともに、離鍵情報の入力を受けて、該離鍵情報に応じた発音中の楽音を消音する音源と、
押鍵操作を受けて、該押鍵操作に応じた押鍵情報を、前記音源に、該押鍵操作のタイミングから所定の発音遅延時間経過した後に入力する発音タイミング制御部と、
離鍵操作を受けて、該離鍵操作に応じた離鍵情報を、前記音源に、該離鍵操作が行なわれた鍵と同一の鍵の押鍵操作に応じた押鍵情報の該音源への入力よりも後に入力する消音タイミング制御部と、
押鍵操作に応じた押鍵情報を前記音源に入力するよりも前に該押鍵操作が行なわれた鍵と同一の鍵について離鍵操作が行なわれた場合に、前記音源に該音源による前記鍵の音色を切替前の第１の音色から第２の音色に切り替えるように指示をした上で該音源に前記押鍵情報を入力し、該音源に前記同一の鍵についての離鍵操作に応じた離鍵情報を入力した後に該音源に該音源による該同一の鍵についての音色を前記第２の音色から前記第１の音色に切り替えるように指示する音色制御部とを備えたことを特徴とする電子楽器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、押鍵操作を受けて生成された押鍵情報に基づいて楽音を発音するとともに、離鍵操作を受けて生成された離鍵情報に基づいて楽音を消音する電子楽器に関する。
【０００２】
【従来の技術】
従来より、押鍵操作を受けて押鍵情報（ノートオン情報と称する）を生成するとともに離鍵操作を受けて離鍵情報（ノートオフ情報と称する）を生成し、ノートオン情報に基づいて楽音を発音するとともにノートオフ情報に基づいて楽音を消音する電子楽器において、アコースティックピアノの鍵タッチを模擬するということが行なわれている。アコースティックピアノは、押鍵操作された鍵に対応する弦をハンマーで叩くことによりその弦を振動させて楽音を発音させるとともに、離鍵操作された鍵に対応するミュート用のダンパーでその弦を押圧することによりその弦の振動を抑えて楽音を消音させる。このようなアコースティックピアノでは、弦をハンマーで叩くまでの時間の方が、弦をダンパーで押圧するまでの時間よりも長い。そこで、上述した電子楽器においても、押鍵操作を受けてから所定時間が経過した後にノートオン情報を音源に入力して楽音を発音させるとともに、離鍵操作を受けてからノートオフ情報を即座にもしくは比較的短時間で音源に入力して楽音を消音させるということが行なわれている。
【０００３】
【発明が解決しようとする課題】
アコースティックピアノでは、押鍵操作を受けてから比較的短い時間内に離鍵操作を受けた場合は、先ずダンパーで弦を押圧し、その状態でその弦がハンマーで叩かれることにより楽音が発音する。しかし、上述した電子楽器では、押鍵操作を受けてから比較的短い時間内に離鍵操作を受けると、ノートオン情報が音源に入力される以前にノートオフ情報が音源に入力されるという現象が発生する。
【０００４】
図９は、従来の電子楽器の、押鍵操作を受けてから比較的短い時間内に離鍵操作を受けた場合に発生する現象を説明するための図である。
【０００５】
図９に示すように、ノートオン情報は、押鍵操作を受けてから所定時間（ＮｏｔｅＯＮディレイタイム）経過後に音源に向けて出力される。一方、ノートオフ情報は、離鍵操作を受けてから短時間で音源に向けて出力される。このため、ＮｏｔｅＯＮディレイタイムが終了してノートオン情報が音源に向けて出力される以前に、ノートオフ情報が音源に向けて出力される。従って、押鍵操作および離鍵操作された１つの鍵に対するノートオン情報とノートオフ情報との関係が逆転してしまい、例えば楽音の発音がいつまでも行なわれてしまうという現象が発生する。
【０００６】
本発明は、上記事情に鑑み、押鍵情報に対応する離鍵情報が先に出力されるという現象が防止された電子楽器を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成する本発明の電子楽器は、押鍵操作を受けて押鍵情報を生成するとともに離鍵操作を受けて離鍵情報を生成し、押鍵情報に基づいて楽音を発音するとともに離鍵情報に基づいて楽音を消音する電子楽器において、
押鍵情報の入力を受けてその押鍵情報に応じた楽音を発音するとともに、離鍵情報の入力を受けて、その離鍵情報に応じた発音中の楽音を消音する音源と、
押鍵操作を受けて、その押鍵操作に応じた押鍵情報を、上記音源に、その押鍵操作のタイミングから所定の発音遅延時間経過した後に入力する発音タイミング制御部と、
離鍵操作を受けて、その離鍵操作に応じた離鍵情報を、上記音源に、その離鍵操作が行なわれた鍵と同一の鍵の押鍵操作に応じた押鍵情報のその音源への入力よりも後に入力する消音タイミング制御部とを備えたことを特徴とする。
【０００８】
本発明の電子楽器は、押鍵操作のタイミングから所定の発音遅延時間経過した後に押鍵情報を音源に入力し、その後、離鍵操作に応じた離鍵情報を音源に入力するものであるため、押鍵操作を受けてから比較的短い時間内に離鍵操作を受けた場合であっても、押鍵情報が音源に入力される以前に、その押鍵情報に対応する離鍵情報が音源に先に入力されるという現象が防止される。
【０００９】
ここで、上記消音タイミング制御部は、離鍵情報を、上記音源に、その離鍵情報に対応する押鍵情報が上記音源に入力された第１のタイミングよりも所定の最小時間経過した第２のタイミング以降のタイミングで入力するものであることが好ましい。
【００１０】
このようにすると、押鍵情報が音源に入力されてから所定の最小時間経過した後に離鍵情報がその音源に入力されるため、楽音を確実に発音させることができる。
【００１１】
また、上記消音タイミング制御部は、離鍵情報を、上記音源に、その離鍵情報生成の基になる離鍵操作が行なわれたタイミングから遅延時間ゼロを含む所定の消音遅延時間経過した第３のタイミングがその離鍵情報に対応する押鍵情報に関する上記第２のタイミングよりも遅いタイミングである場合に、その第３のタイミングで入力するものであることも好ましい態様である。
【００１２】
最小時間が確保された後に離鍵操作が行なわれたような場合は、楽音は確実に発音されるため、このような第３のタイミングで離鍵情報を音源に入力すると、処理を迅速に行なうことができる。
【００１３】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
【００１４】
図１は、本発明の一実施形態の電子楽器の回路構成を示したブロック図である。
【００１５】
この電子楽器１００には、鍵盤１０，ＣＰＵ２０，ＲＯＭ３０，ＲＡＭ４０，，音源５０が備えられており、それらはデータバス６０を介して互いに接続されている。また、音源５０にはスピーカ７０が接続されている。
【００１６】
鍵盤１０にはＮ個の鍵が備えられており、この鍵盤１０は押鍵操作を受けてノートオン情報を生成するとともに離鍵操作を受けてノートオフ情報を生成して、データバス６０を介してＣＰＵ２０に入力する。
【００１７】
ＣＰＵ２０は、ＲＯＭ３０に格納されたプログラムをデータバス６０を介して読み出して、そのプログラムを実行する中央演算装置であり、この電子楽器１００の全体の制御を司っている。また、このＣＰＵ２０には、発音タイミング制御部と消音タイミング制御部が備えられている。発音タイミング制御部は、押鍵操作を受けて、その押鍵操作に応じたノートオン情報を、音源５０に、その押鍵操作のタイミングから所定の発音遅延時間経過した後に入力する。また、消音タイミング制御部は、離鍵操作を受けて、その離鍵操作に応じたノートオフ情報を、音源５０に、その離鍵操作が行なわれた鍵と同一の鍵の押鍵操作に応じたノートオン情報のその音源５０への入力よりも後に入力する。
【００１８】
ＲＯＭ３０には、ＣＰＵ２０で実行される各種プログラムが記憶されている。
【００１９】
ＲＡＭ４０は、ノートオン情報，ノートオフ情報を音源５０に入力するタイミング時間（後述するＮｏｔｅＯＮディレイタイム，ＮｏｔｅＯＦＦディレイタイム）を示すデータを格納するためのデータレジスタＮｏｔｅＯＮ（ｎ），ＮｏｔｅＯＦＦ（ｎ）を有する。尚、ｎは鍵盤１０に備えられたＮ個の鍵のうちのｎ番目の鍵の番号を示す（ｎ＝０〜Ｎ−１）。これらデータレジスタＮｏｔｅＯＮ（ｎ），ＮｏｔｅＯＦＦ（ｎ）の値は、Ｎ個の鍵それぞれに対応して備えられた図示しないカウンタによってカウントされる。
【００２０】
音源５０は、ノートオン情報の入力を受けてそのノートオン情報に応じた楽音をスピーカ７０で発音するとともに、ノートオフ情報の入力を受けて、そのノートオフ情報に応じた発音中の楽音を消音する。
【００２１】
図２は、図１に示す電子楽器において、ノートオン情報が音源に入力される以前に離鍵操作された場合のタイミングを示す図である。
【００２２】
押鍵操作を受けてからノートオン情報が音源５０に入力される以前に離鍵操作を受けた場合は、図２に示すように、押鍵操作のタイミングからＮｏｔｅＯＮディレイタイム（本発明にいう所定の発音遅延時間に相当）経過した後にノートオン情報がＣＰＵ２０から出力されてデータバス６０を介して音源５０に入力されるとともに、離鍵操作のタイミングからＮｏｔｅＯＦＦディレイタイム経過した後にノートオフ情報がＣＰＵ２０から出力されてデータバス６０を介して音源５０に入力される。このため、押鍵操作を受けてから短時間のうちに離鍵操作を受けた場合であっても、ノートオン情報が音源５０に入力される以前に、そのノートオン情報に対応するノートオフ情報が音源５０に先に入力されるという現象が防止される。さらに詳細には、ノートオフ情報は、音源５０に、そのノートオフ情報に対応するノートオン情報が音源５０に入力された第１のタイミングよりも所定の最小時間（図２に示す最小値）経過した第２のタイミング以降のタイミングで入力される。このため、楽音を確実に発音させることができる。尚、ノートオン情報が出力された直後（又は同時）にノートオフ情報が出力された場合、ノートオン情報が出力された直後の楽音の立ち上がり部分で消音が開始されるため、その音量は非常に低くなる。
【００２３】
図３は、図１に示す電子楽器において、ノートオン情報が音源に入力されてから楽音を確実に発音させるための最小時間の前半で離鍵操作された場合のタイミングを示す図である。
【００２４】
押鍵操作を受けてノートオン情報が第１のタイミングで音源５０に入力されてから、図３に示す最小時間の前半で離鍵操作を受けた場合は、離鍵操作のタイミングからその最小時間を満足させるためのＮｏｔｅＯＦＦディレイタイムＡが経過した後に、第２のタイミングでノートオフ情報がＣＰＵ２０から出力されてデータバス６０を介して音源５０に入力される。このため、楽音をやはり確実に発音させることができる。
【００２５】
図４は、図１に示す電子楽器において、ノートオン情報が音源に入力されてから楽音を確実に発音させるための最小時間経過後に離鍵操作された場合のタイミングを示す図である。
【００２６】
ＣＰＵ２０を構成する消音タイミング制御部は、ノートオフ情報を、音源５０に、そのノートオフ情報生成の基になる離鍵操作が行なわれたタイミングから遅延時間ゼロを含むＮｏｔｅＯＦＦディレイタイム（本発明にいう所定の消音遅延時間に相当する。尚、消音遅延時間とは、演算処理で必ず起こる最低限の遅延時間をいう）経過した第３のタイミングが、そのノートオフ情報に対応するノートオン情報に関する第２のタイミングよりも遅いタイミングである場合に、その第３のタイミングで入力するものである。ここでは、図４に示すように、最小時間経過後に離鍵操作が行なわれるため、楽音は確実に発音される。
【００２７】
図５は、図１に示す電子楽器において実行されるメインルーチンのフローチャートである。
【００２８】
図１に示す電子楽器１００に電源が投入されると、このルーチンが実行される。先ず、ステップＳ１００において、データレジスタＮｏｔｅＯＮ（ｎ），ＮｏｔｅＯＦＦ（ｎ）のデータを‘０’に設定する等の初期化を行なう。尚、データレジスタＮｏｔｅＯＮ（ｎ）に格納されるＮｏｔｅＯＮディレイタイムを表すデータ（ｄｅｌａｙ  ｔｉｍｅ）は、押鍵によるベロシティ値で参照されるテーブルデータ（ｔａｂｌｅＶ（ｖｅｌｏｃｉｔｙ）と称する）と、押鍵による音高キー値で参照されるテーブルデータ（ｔａｂｌｅＫ（Ｋｅｙ）と称する）により、以下の式で求める。尚、これらのテーブルデータはＲＯＭ３０に記憶されている。また、ベロシティの値が小さいほどディレイタイムは長く、音高が高いほどディレイタイムは長い。
【００２９】
ｄｅｌａｙ  ｔｉｍｅ＝ｔａｂｌｅＶ（ｖｅｌｏｃｉｔｙ）＋ｔａｂｌｅＫ（Ｋｅｙ）
次に、ステップＳ１１０において、鍵盤１０の鍵が押鍵されたか否かが判定される。ここでは、今回の判定で初めて押鍵が検出された場合（即ち新たな押鍵があった場合）、ステップＳ１２０に進む。ステップＳ１２０では、入力されたノートオン情報に対応する鍵番号ｎの鍵に対して、後述する押鍵イベント処理を実行してステップＳ１３０に進む。一方、ステップＳ１１０において、押鍵されていないと判定された場合はそのままステップＳ１３０に進む。
【００３０】
ステップＳ１３０では、鍵盤１０の鍵が離鍵されたか否かが判定される。ここでは、今回の判定で初めて離鍵が検出された場合（即ち新たな離鍵があった場合）、ステップＳ１４０に進む。ステップＳ１４０では、入力されたノートオフ情報に対応する鍵番号ｎの鍵に対して、後述する離鍵イベント処理を実行してステップＳ１５０に進む。一方、ステップＳ１３０において、離鍵されていないと判定された場合はそのままステップＳ１５０に進む。
【００３１】
ステップＳ１５０では、詳細は後述するが、ノートオン情報，ノートオフ情報を出力するための時間を算出し、算出された時間経過後にそれらノートオン情報，ノートオフ情報を出力するためのタイマーイベント処理を実行してステップＳ１６０に進む。ステップＳ１６０では、各種の操作子や音源５０等の処理を行ない、ステップＳ１１０に戻る。
【００３２】
図６は、図５に示す押鍵イベントのルーチンのフローチャートである。
【００３３】
この押鍵イベントのルーチンは、ノートオン情報を受け取り、そのノートオン情報を遅延させるための値を設定するためのルーチンである。
【００３４】
先ず、ステップＳ２００において、押鍵された鍵ｎに対応して備えられたデータレジスタＮｏｔｅＯＮ（ｎ）の値が‘０’よりも大きいか否かが判定される。データレジスタＮｏｔｅＯＮ（ｎ）の値が‘０’であると判定された場合は、ノートオン情報は既に出力されているため、ステップＳ２１０に進む。ステップＳ２１０では、データレジスタＮｏｔｅＯＮ（ｎ）にＮｏｔｅＯＮディレイタイム（ノートオン待ち時間）を表す値を格納してメインルーチンに戻る。一方、データレジスタＮｏｔｅＯＮ（ｎ）の値が‘０’よりも大きいと判定された場合は、既に押鍵された鍵ｎに対応するデータレジスタＮｏｔｅＯＮ（ｎ）に格納されたＮｏｔｅＯＮディレイタイムを表す値をデクリメント中に新たな押鍵操作が行なわれたため、ステップＳ２２０に進む。ステップＳ２２０では、新たな押鍵自体は無視するものの、その新たな押鍵に対応する離鍵を現在押鍵中の状態に反映させるために、前回の押鍵に対する離鍵を無視することとし、データレジスタＮｏｔｅＯＦＦ（ｎ）に‘０’を格納してメインルーチンに戻る。
【００３５】
図７は、図５に示す離鍵イベントのルーチンのフローチャートである。
【００３６】
この離鍵イベントのルーチンは、ノートオフ情報を受け取り、そのノートオフ情報を遅延させるための値を設定するためのルーチンである。
【００３７】
先ず、ステップＳ３００において、ノートオフ待ち時間（ノートオフ情報生成の基になる離鍵操作が行なわれたタイミングから遅延時間ゼロを含むＮｏｔｅＯＦＦディレイタイムに相当）の値の方が、データレジスタＮｏｔｅＯＮ（ｎ）の値＋最小値よりも大きいか否かが判定される。尚、最小値とは、前述したように楽音を確実に発音させるために設けられた、ノートオン情報が出力されてからノートオフ出力を禁止するまでの遅延時間である。ノートオフ待ち時間の値の方が、データレジスタＮｏｔｅＯＮ（ｎ）の値＋最小値以下であると判定された場合は、ステップＳ３１０に進む。ステップＳ３１０では、データレジスタＮｏｔｅＯＦＦ（ｎ）にデータレジスタＮｏｔｅＯＮ（ｎ）の値＋最小値を格納してメインルーチンに戻る。一方、ノートオフ待ち時間の値の方がデータレジスタＮｏｔｅＯＮ（ｎ）の値＋最小値よりも大きいと判定された場合は、何時でもノートオフ情報の出力が可能である。従って、ステップＳ３２０において、データレジスタＮｏｔｅＯＦＦ（ｎ）にノートオフ待ち時間（所定値＝１）を格納してメインルーチンに戻る。
【００３８】
図８は、図５に示すタイマーイベントのルーチンのフローチャートである。
【００３９】
このタイマーイベントのルーチンは、ノートオン情報，ノートオフ情報の出力処理を行なうためのルーチンである。
【００４０】
先ず、ステップＳ４００において、鍵盤１０に備えられた鍵の番号を示すｎを‘０’にしてステップＳ４１０に進む。
【００４１】
ステップＳ４１０では、データレジスタＮｏｔｅＯＮ（ｎ）の値が−最小値未満か否か、即ちノートオン情報が出力されてから最小時間以上経過しているか否かが判定される。最小時間以上経過していると判定された場合は、後述するステップＳ４５０に進む。一方、最小時間未満であると判定された場合はステップＳ４２０に進む。ステップＳ４２０では、データレジスタＮｏｔｅＯＮ（ｎ）の値を１つ減算してステップＳ４３０に進む。
【００４２】
ステップＳ４３０では、データレジスタＮｏｔｅＯＮ（ｎ）の値が‘０’か否かが判定される。‘０’であると判定された場合は、ノートオン情報を出力するタイミングであるためステップＳ４４０に進み、ノートオン情報を音源５０に向けて出力する。一方、‘０’以外の値であると判定された場合はステップＳ４５０に進む。
【００４３】
ステップＳ４５０では、データレジスタＮｏｔｅＯＦＦ（ｎ）の値が‘０’よりも大きいか否かが判定される。‘０’よりも大きいと判定された場合は、ノートオフ情報は未だ出力されていないためステップＳ４６０に進む。一方、‘０’以下であると判定された場合は、ノートオフ情報は既に出力されているためステップＳ４９０に進む。
【００４４】
ステップＳ４６０では、データレジスタＮｏｔｅＯＦＦ（ｎ）の値を１つ減算してステップＳ４７０に進む。ステップＳ４７０では、データレジスタＮｏｔｅＯＦＦ（ｎ）の値が‘０’か否かが判定される。‘０’であると判定された場合は、ノートオフ情報を出力するタイミングであるため、ステップＳ４８０に進みノートオフ情報を音源５０に向けて出力してステップＳ４９０に進む。一方、‘０’よりも未だ大きいと判定された場合はステップＳ４９０に進む。
【００４５】
ステップＳ４９０では、鍵番号ｎを１つインクリメントしてステップＳ４９５に進む。ステップＳ４９５では、鍵番号ｎが鍵盤１０の全鍵数（Ｎ）と同一か否かが判定される。同一であると判定された場合は、全鍵について処理が終了したため、メインルーチンに戻る。一方、同一でないと判定された場合は、ステップＳ４１０に戻る。
【００４６】
尚、本実施形態では、図７に示す離鍵イベントのルーチンのステップＳ３２０において、ノートオン情報が出力されてから最小値時間以上経過している場合はデータレジスタＮｏｔｅＯＦＦ（ｎ）にノートオフ待ち時間（所定値＝１）を格納する例で説明したが、このようなノートオフ待ち時間を格納することなく、この時点でノートオフ情報を出力してもよい。
【００４７】
また、楽音を確実に発音させるために設けられた、ノートオン情報が出力されてからノートオフ出力を禁止するまでの遅延時間である最小値は、操作子等で設定可能にしてもよい。
【００４８】
さらに、ノートオフ情報を音源５０に入力するタイミング時間であるノートオフ待ち時間（ＮｏｔｅＯＦＦディレイタイム）も設定可能にしてもよい。
【００４９】
また、ノートオン情報，ノートオフ情報を音源５０に入力するタイミング時間であるＮｏｔｅＯＮディレイタイム，ＮｏｔｅＯＦＦディレイタイムを同一にし、ノートオン情報，ノートオフ情報の双方の順序関係が狂わないように、即ちノートオン情報に対応するノートオフ情報が音源５０に先に入力されるという現象が防止されるように制御してもよい。
【００５０】
さらに、ＮｏｔｅＯＮディレイタイムは、ベロシティ値で参照されるテーブルデータと、音高キー値で参照されるテーブルデータとにより求めたが、ベロシティ値で参照されるテーブルデータのみ、又は音高キー値で参照されるテーブルデータのみで求めてもよい。また、このようなテーブルデータではなく、所定の演算によって求めてもよい。
【００５１】
尚、前述したように、アコースティックピアノでは、押鍵操作を受けてから比較的短い時間で離鍵操作を受けた場合は、先ず弦をダンパーで押圧し、その状態で弦がハンマーで叩かれることにより楽音が発音する。このため、その楽音の音色は、通常の状態（ダンパーで弦を押圧しない状態）における楽音の音色とは異なる。そこで、本実施形態の電子楽器１００においても、押鍵操作を受けてから比較的短い時間で離鍵操作を受けた場合は、音源５０に、アコースティックピアノの、ダンパーで弦を押圧した状態における音色に対応する音色に切り替える指示情報を入力してからノートオン情報を入力して楽音を発音させ、さらにノートオフ情報を入力してから元の音色に切り換える指示情報を入力するようにすると、アコースティックピアノの模擬を一層正確に行なうことができる。
【００５２】
【発明の効果】
以上説明したように、本発明の電子楽器によれば、押鍵情報に対応する離鍵情報が先に出力されるという現象を防止することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態の電子楽器の回路構成を示したブロック図である。
【図２】図１に示す電子楽器において、ノートオン情報が音源に入力される以前に離鍵操作された場合のタイミングを示す図である。
【図３】図１に示す電子楽器において、ノートオン情報が音源に入力されてから楽音を確実に発音させるための最小時間の前半で離鍵操作された場合のタイミングを示す図である。
【図４】図１に示す電子楽器において、ノートオン情報が音源に入力されてから楽音を確実に発音させるための最小時間経過後に離鍵操作された場合のタイミングを示す図である。
【図５】図１に示す電子楽器において実行されるメインルーチンのフローチャートである。
【図６】図５に示す押鍵イベントのルーチンのフローチャートである。
【図７】図５に示す離鍵イベントのルーチンのフローチャートである。
【図８】図５に示すタイマーイベントのルーチンのフローチャートである。
【図９】従来の電子楽器の、押鍵操作を受けてから比較的短い時間内に離鍵操作を受けた場合に発生する現象を説明するための図である。
【符号の説明】
１０  鍵盤
２０  ＣＰＵ
３０  ＲＯＭ
４０  ＲＡＭ
５０  音源
６０  データバス
７０  スピーカ
１００  電子楽器
【図１】
0004499941.tif 000002
【図２】
0004499941.tif 000003
【図３】
0004499941.tif 000004
【図４】
0004499941.tif 000005
【図５】
0004499941.tif 000006
【図６】
0004499941.tif 000007
【図７】
0004499941.tif 000008
【図８】
0004499941.tif 000009
【図９】
0004499941.tif 000010