以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図1は、本発明による電子楽器である電子鍵盤楽器100の一実施形態の外観図である。
鍵盤部102を有する電子鍵盤楽器100の楽器本体108のボイス入力端子104に、接続ケーブル105及びヘッドバンド106に取り付けられたマイクアーム107を介して、ボイスセンサ101(音声センサ)が取り付けられている。また、楽器本体108のライン出力端子109には、ラインケーブル110が接続されてもよい。
ボイスセンサ101は、左側拡大図に示されるように、マイクアーム107が結合接続されるセンサ基部111に、例えば音声マイクであるボイスセンサ本体112が取り付けられ、更にボイスセンサ本体112の開口部側に、金属網113が取り付けられ、この金属網113とボイスセンサ本体112の開口部間に積層繊維114が充填された構造を有する。積層繊維114と金属網113は、ボイスセンサ本体112から取り外すことができ、中性洗剤等により洗浄することが可能である。金属網113及び積層繊維114からなる部分は、ボイスセンサ101の開口部に障害物として配置されている。
本実施形態では、電子鍵盤楽器100を、管楽器をシミュレートする電子楽器として使用できるようにするために、演奏者は、ボイス入力端子104に、ヘッドバンド106、マイクアーム107、ボイスセンサ101、及び接続ケーブル105からなる吹奏入力装置を接続することができる。演奏者は、ボイスセンサ101が口元にくるようにヘッドバンド106を自分の頭部に装着して、鍵盤部102でキー操作を行いながら、ボイスセンサ101を用いて吹奏演奏を行うことができる。そして、演奏者は、ボイスセンサ101に向かって「フー」という感じで息を吹きかけることにより、ボイスセンサ101をブレスセンサとして機能させて、電子鍵盤楽器100からブレス音を発音させることができる。また、演奏者は、ボイスセンサ101に向かって「ウ〜」という感じでグロウル音を発声することにより、ボイスセンサ101を本来のボイスセンサとして機能させて、電子鍵盤楽器100がグロウル音を発音させることができる。更に、演奏者は、自身の発声する音声をコントロールすることにより、ブレス音とグロウル音がミックスされた楽音を発音させることができ、あたかも管楽器でブレス音とグロウル音をミックスさせてシームレスに発音させるような演奏を行うことができる。
本実施形態では、上述のようにボイスセンサ101にブレスセンサと本来のボイスセンサの両方の機能を持たせるために、図1に示されるように、ボイスセンサ本体112の開口部側に、金属網113と積層繊維114とからなる障害物が取り付けられている。本実施形態では、演奏者がボイスセンサ101に向かって吹奏する気流が金属網113及び積層繊維114からなる障害物を通過したり反射したりする際に発生するカルマン渦の乱流により、ブレスノイズを発生させ、そのブレスノイズの信号強度をボイスセンサ101で取得することにより吹奏する強さの検出を可能にするものである。更に、上述の乱流により発生するブレスノイズがホワイトノイズになるように障害物を構成し、演奏者が吹奏のみ行った場合と音声による特殊奏法を行った場合とを容易に判別できるようにするものである。より具体的には、演奏者が吹奏のみを行った場合には、ボイスセンサ101からホワイトノイズのボイス信号が取得されることによりブレス演奏が検出され、同時に演奏者が発声による特殊奏法を行ったことが、ボイス信号の自己相関値の偏差から検出され、ノーマル音とグロウル音の合成比が調整されて出力される。
図2(a)は、ボイスセンサ本体112の開口部に取り付けられる障害物として、図1の金属網113のみを用い積層繊維114は用いないで息を吹きかけた時の、ボイスセンサ101が出力するボイス信号における周波数分布の例を示すグラフである。低周波域の信号成分を多く含み、高周波域になるにつれて信号成分が徐々に下がる特性を示している。
図2(b)は、金属網113の内側に繊維シートを複数枚かぶせたもの(以下「積層繊維114」と記載する)を、ボイスセンサ本体112に取り付けて息を吹きかけた時の、ボイスセンサ101が出力するボイス信号における周波数分布の例を示すグラフである。低周波域から4kHz(キロヘルツ)近辺に至るまでほぼ均等な分布となり、図2(a)に比べて、ホワイトノイズに近い特性を示している。このように障害物を変更することによりボイスセンサ101が出力するボイス信号の周波数分布の特性を調整することが可能である。特に、気流が円筒の障害物を通過する際に発生するカルマン渦の周波数は円筒の直径に反比例することが知られており、障害物の金属網113や積層繊維114の径から周波数分布特性を調整することができる。
図2(c)は、図2(b)と同じ金属網113及び積層繊維114からなる障害物に息を吹きかける際に同時に発声を行った場合の、ボイスセンサ101が出力するボイス信号の周波数分布の例を示すグラフである。発声音には基音周波数(ピッチ周波数)及びその倍数の周波数が多く含まれており、図2(b)と比較して70Hzから1000Hzの周波数領域にその特性が現れており、ピッチ周波数及びその倍音周波数の位置に櫛形の極大値のピークが現れている。図2(b)及び図2(c)の周波数特性の違いにより、図1の構造を有するボイスセンサ101を用いた場合に、吹奏のみの通常演奏と発声を伴う特殊演奏は、各周波数成分が一様の場合と特定の周波数成分を多く含む場合とで、判別できることがわかる。
特定の周波数成分を多く含む状態を検出する手法として、自己相関関数を計算することから算出される自己相関値を判定する手法が知られている。いま、自己相関関数G(τ)は、時刻tにおけるボイス値をV(t)とすると、下式となることが知られている。ここで、τは遅れ時間であり、周波数をf(Hz)とすると1/f(秒)である。また、Tは積分区間である。
ボイス値の信号に含まれる周波数成分fが少ない場合は低い値となり、周波数成分fを多く含む場合は高い値となる。しかし、数1式から分かる通り、G(τ)はボイス値の信号レベルの影響を強く受けてしまう。このため自己相関関数G(τ)に、下記数2式を用いると、信号レベルの影響を受け難くなることが知られている。
ボイス値の信号に含まれる周波数成分fが少ない場合は高い値となり、周波数成分fを多く含む場合は低い値となる。
ここで、演奏者が音声の発声による特殊奏法音の入力を行った場合は、発声による基音周波数及びその倍音周波数の存在により、自己相関値は該当する基音周波数で最も低い値となることから、自己相関値が最小となる音高を検出することで、特殊奏法音の音高を検出することが可能となる。そして、数2式の演算により算出される自己相関関数G(τ)から得られる値(以降「自己相関値」と記載)を、発声可能な基音の周波数範囲で算出し、その偏差を求めることで、発声による特殊奏法とその強さが検出できる。なお、自己相関値を算出する際の遅れ時間τ(=1/f)は、電子楽器のキーとして指定され得る例えば基音49音階の周波数に対応する離散時間についてのみ計算することで十分であり、少ない演算量で自己相関値を計算することが可能である。
なお、自己相関値からの音高検出は演奏者が発声している場合のみ可能であるが、発声しているかどうかは自己相関値の偏差から判断可能である。即ち自己相関値の偏差は、演奏者が息を吹きかけた場合はホワイトノイズとなるためその値は低い値となる。また、演奏者が何もしない場合においてもボイス信号は全て0近傍値となるため、自己相関値の偏差も極めて低い値になる。よって、演奏者が発声した場合のみ自己相関値の偏差は高い値となり、その偏差値が所定の偏差閾値より高い値である場合に、音高判定が可能であると判断できる。
一方、自己相関値の偏差の値が偏差閾値以下の値である場合には、演奏者がボイスセンサ101に向かって単に息を吹きかけ、ブレス音が入力されたと判定することができる。この場合には、ボイス値の信号強度を検出することにより、ブレス音の強さを決定することができる。この信号強度の検出にあたっては、いかに安定した信号強度を検出するかが課題となる。図2(d)及び(e)は、ボイスセンサ101に障害物がなし/ありの場合を比較した、ボイス値の入力波形図である。図2(d)はボイスセンサ本体112に障害物が取り付けられていない場合、図2(e)はボイスセンサ本体112に金属網113と積層繊維114からなる障害物が取り付けられている場合であり、それぞれ息を3回吹きかけた時の入力波形を示している。図2(d)及び(e)において、濃い部分が入力波形(のピーク部)、薄い部分はその実効値(≒検出レベル)となっている。図2(d)及び(e)を比較して理解されるように、障害物を設置した場合(図2(e))のほうがホワイトノイズに近い高周波成分を多く含み、その結果として実効値(≒検出レベル)が安定的に検出されることがわかる。このように、本実施形態では、図1のボイスセンサ本体112に金属網113と積層繊維114からなる障害物を取り付けることにより、演奏者がボイスセンサ101に息を吹きかけてブレス奏法を行ったときの情報を効率よく音声として入力することができ、信号強度の検出における応答性及び安定性を向上させることが可能となる。
図3は、図1の電子鍵盤楽器100の制御システムの一実施形態のブロック図である。この制御システムは、ボイス入力手段301、自己相関値・偏差検出手段302、信号強度決定手段303、エンベロープ決定手段304、キー検出手段305、音高制御手段306、発音指示手段307、Wave Generator(ウェーブ・ジェネレータ)308(音源)、ノーマル音波形データ309、グロウル音波形データ310、合成比決定手段311、乗算器312、313、315(音源)、加算器314(音源)、及びDAC(デジタルアナログコンバータ)/増幅器316を備える。
ボイス入力手段301(音声入力手段)は、ボイスセンサ101が出力するボイス値(音声値)を所定の離散時間間隔で逐次ボイス入力情報として取得する。
自己相関値・偏差検出手段302は、前述の数2式に従って、上記ボイス入力情報として得られる所定のボイス信号処理単位数(音声信号処理単位数)(=T)のボイス値に対して、ボイス信号に含まれる各波長の自己相関値を算出し、ボイス信号全体の自己相関値の偏差を演算する。
信号強度決定手段303は、上記ボイス信号処理単位数のボイス値の振幅変化の大きさに基づき、信号強度を検出する。信号強度決定手段303は、ボイス入力手段301で順次取得される所定のボイス信号処理単位数のボイス値の各振幅値を積分し、当該積分の結果に対してローパスフィルタ処理を実行して得られる値を信号強度情報として出力する、
キー検出手段305は、例えば演奏者による図1の鍵盤部102でのキー操作(押鍵操作又は離鍵操作)をキー検出情報として検出する。なお、キー操作は、必ずしも演奏者が鍵盤部102で演奏したものである必要はなく、キー装置は、例えば特には図示しないMIDI(Musical Instrument Digital Interface)端子を介して外部の他の演奏楽器又はシーケンサ(自動演奏装置)などから入力されるものであってもよい。
音高制御手段306は、キー検出手段305がキー検出情報として検出した演奏キー操作により指定される音高に変化があった場合には、キー検出情報から得られる音高を新たな音高情報として決定し出力する。
この音高制御手段306は更に、キー検出手段305がキー検出情報として検出した演奏キー操作により指定される音高に変化がなかった場合には、自己相関値・偏差検出手段302からの破線で示される制御線を介して、自己相関値・偏差検出手段302から入力する自己相関値の偏差が所定の偏差閾値よりも高いか否かを判定する。そして、音高制御手段306は、自己相関値の偏差が所定の偏差閾値よりも高いと判定した場合に、図3の破線の制御線を介して自己相関値・偏差検出手段302から入力する自己相関値が最も低い値に対応する周波数によって、音高の変更又はピッチベンドを指示する音高情報を出力する。
合成比決定手段311は、自己相関値・偏差検出手段302が検出する自己相関値の偏差と信号強度決定手段303が出力する信号強度情報とに基づいて決定される合成比(割合)情報を出力する。合成比情報は、後述するようにWave Generator308から出力される管楽器の通常の楽音であるノーマル音と、管楽器のグロウリング奏法によって発音される楽音であるグロウル音の合成比率(割合)を決定し、乗算器312、313に対してそれぞれ乗算値を与える。
エンベロープ決定手段304は、信号強度決定手段303で得られた信号強度情報に基づいてエンベロープ情報を決定する。エンベロープ情報は、ノーマル音とグロウル音が加算器314で合成された後に、乗算器315で乗算される最終ゲインである。
発音指示手段307は、Wave Generator308が発音をしていない状態で、信号強度決定手段303が出力する信号強度情報の値が所定の発音開始閾値未満から発音開始閾値以上に変化した場合に、Wave Generator308に音高制御手段306が出力する音高情報が示す音高による発音開始を指示する発音指示情報を出力する。このとき、発音指示手段307は、発音開始のベロシティ情報として、信号強度決定手段303が出力する信号強度情報の値を設定する。また、発音指示手段307は、Wave Generator308が発音中の状態で、音高制御手段306が出力する音高情報が示す音高が変化した場合に、Wave Generator308に音高変更又はピッチベンドを指示する発音指示情報を出力する。更に、発音指示手段307は、Wave Generator308が発音中の状態で、信号強度決定手段303が出力する信号強度情報の値が発音停止閾値以上の状態から発音停止閾値未満の状態に変化した場合に、Wave Generator308に音高制御手段306が出力する音高情報が示す音高による発音の停止を指示する発音指示情報を出力する。
Wave Generator308は、それが内蔵するROMに記憶されたノーマル音波形データ309及びグロウル音波形データ310を、発音指示手段307による発音指示に基づく音高でそれぞれ並列に読み出して出力する。ノーマル音波形データ309は例えば、管楽器の通常演奏時の楽音をサンプリングした波形データである。グロウル音波形データ310は例えば、管楽器のグロウリング奏法による演奏時の楽音をサンプリングした波形データである。
乗算器312、313はそれぞれ、Wave Generator308から出力されるノーマル音及びグロウル音に対して、合成比決定手段311から与えられた各乗算値を乗算する。
加算器314は、乗算器312及び313の各出力を加算することにより、ノーマル音とグロウル音を混合する。
乗算器315は、加算器314の出力に対して、エンベロープ決定手段304から与えられた乗算値を乗算する。
DAC/増幅器316は、乗算器315から出力される楽音信号を、デジタル信号からアナログ信号に変換した後、増幅する。
図1のスピーカ103は、DAC/増幅器316から出力される増幅された楽音信号を放音する。或いは、この楽音信号は、図1のライン出力端子109からラインケーブル110を介して外部の音響装置に出力されてもよい。
ここで、Wave Generator308から出力されるノーマル音波形データ309とグロウル音波形データ310は同位相で鳴る(以下これを「シンクロスタート」と呼ぶ)ように信号処理されていて、加算器314で混合されても音量が不自然に打ち消しあうようなことはない。
図4は、図1の合成比決定手段311及びエンベロープ決定手段304の構成例を示す図である。
合成比決定手段311は、自己相関値・偏差検出手段302が出力する自己相関値の偏差が大きくなりかつ信号強度決定手段303が出力する信号強度情報の値が小さくなるほど出力値が大きくなり、逆に、上記自己相関値の偏差が小さくなりかつ上記信号強度情報の値が大きくなるほど出力値が小さくなるようなグロウル値を生成する。合成比決定手段311は、このような特性を有するグロウル値を、例えば次の数3式に従って生成する。ここで、Grはグロウル値、Dvは自己相関値の偏差、Dgは偏差調整用のゲイン(固定値)、Lvは信号強度情報の値、Lgは強度調整用のゲイン(固定値)、Laは強度調整用のオフセット(固定値)である。
そして、合成比決定手段311は、上記グロウル値が(横軸)が大きくなるほど1から0に向かって出力乗算値(縦軸)が減少する特性を有するノーマル音用テーブル401と、グロウル値(横軸)が大きくなるほど0から1に向かって出力乗算値(縦軸)が増加する特性を有するグロウル音用テーブル402を備える。合成比決定手段311は、ボイス・レベルの入力値に対して、ノーマル音用テーブル401及びグロウル音用テーブル402をそれぞれ参照することにより、乗算器312及び313に対する各乗算値をそれぞれ決定する。
合成比決定手段311、乗算器312、313、及び加算器314により、自己相関値の偏差が大きくなりかつ信号強度が小さくなるほどグロウル音(第2の楽音信号)の出力レベルが大きくなり、自己相関値の偏差が小さくなりかつ信号強度が大きくなるほど第1の楽音信号(ノーマル音)の出力レベルが大きくなるように、ノーマル音とグロウル音が混合された楽音信号が得られることになる。
エンベロープ決定手段304は、信号強度決定手段303が出力する信号強度情報の値が所定の発音開始閾値に達するまではゲイン出力がゼロで、信号強度が発音開始閾値を超えると信号強度が大きくなるほどゲイン出力が増加する特性を有するエンベロープテーブル403を備える。エンベロープ決定手段304は、信号強度情報の値に対して、エンベロープテーブル403を参照することにより、乗算器315に対する乗算値であるエンベロープ情報を決定する。
エンベロープ決定手段304及び乗算器315により、信号強度情報の値が発音開始閾値に達するまではノーマル音とグロウル音の混合出力がゼロで、信号強度が発音開始閾値を超えると、信号強度が大きくなるほど上記混合出力が増加する制御が実現される。これにより、演奏者は、ボイスセンサ101に対する吹奏の強弱をコントロールすることにより、ノーマル音とグロウル音の出力を自在に変更することが可能となる。
以上のようにして、図3及び図4の構成を有する電子鍵盤楽器100の制御システムの実施形態によれば、1種類のボイスセンサ101で吹奏楽器としてのブレス音(ノーマル音)とグロウル音を、シームレスに混合しながら同時に発音させることが可能となる。本実施形態では、演奏者はボイスセンサ101を口で咥える必要がないため、複数の演奏者が1台の電子楽器を共有する場合でも心理面や衛生面のでの障壁を取り除くことができると共に、電子鍵盤楽器100等でもボイスセンサ101のヘッドセットのユニットを接続するだけで、吹奏効果を簡単に実現することが可能となる。
図5は、図3及び図4に示した電子鍵盤楽器100の制御システムの実施形態の機能をソフトウェア処理によって実現可能な電子楽器の第2の実施形態のハードウェア構成例を示すブロック図である。
図5に示されるハードウェア構成例は、CPU(セントラルプロセッシングユニット:中央演算処理装置)501、ROM(リードオンリーメモリ)502、RAM(ランダムアクセスメモリ)503、図1のボイスセンサ101の出力が接続されるADC(アナログデジタルコンバータ)504、図1の鍵盤部102の出力が接続されるGPIO(ジェネラルパーパスインプットアウトプット)505、Wave Generator506、出力が図1のスピーカ103に接続される図3と同様のDAC/増幅器316を備え、これらがバス507によって相互に接続された構成を有する。同図に示される構成は、電子鍵盤楽器100の制御システムを実現できるハードウェア構成の一例であり、そのようなハードウェア構成はこの構成に限定されるものではない。
CPU501は、当該電子鍵盤楽器100の制御を行う。ROM502は、発音制御プログラムを記憶する。RAM503は、発音制御プログラムの実行時に、前述したボイス入力情報、信号強度情報、キー検出情報、音高情報、合成比情報、エンベロープ情報データ、発音指示情報等を一時的に格納する。
ボイスセンサ101の出力は、図3のボイス入力手段301と同様の機能を有するADC504でアナログ信号からデジタル信号のボイス入力情報に変換されて、RAM103に書き込まれる。
図1の鍵盤部102の各操作状態は、図3のキー検出手段305と同様の機能を有するGPIO107を介してCPU101に読み込まれる。
Wave Generator506は、図3のWave Generator308と乗算器312、313、加算器314、乗算器315の機能を実現する、例えばデジタルシグナルプロセッサ(DSP)である。
Wave Generator506から出力された楽音信号は、CPU501を介してDAC/増幅器316においてデジタル信号からアナログ信号に変換されて増幅された後、スピーカ103を介して放音される。
図6は、図5のハードウェア構成例を有する第2の実施形態のメイン処理の例を示すフローチャートである。この処理は、図5のCPU501が、ROM502に記憶された発音制御処理プログラムを実行する動作として実現される。この処理は、図3のボイス入力手段301、自己相関値・偏差検出手段302、信号強度決定手段303、エンベロープ決定手段304、キー検出手段305、音高制御手段306、発音指示手段307、及び合成比決定手段311の各機能を実現する。以下、随時図5の構成を参照するものとする。
まず、CPU501は、初期化処理を実行する(ステップS601)。図7は、ステップS601の初期化処理の詳細例を示すフローチャートである。初期化処理では、RAM503内の関連する各変数に初期値を格納する処理等が実行される。図7のステップS701において、まず、ウェーブ・ジェネレータの初期化として、RAM503内の変数GeneratorStatusに、ROM502に記憶されている定数値GENERATOR_DEADが格納される。また、エンベロープ情報の値の初期化として、RAM503内の変数Envelopeに0(ゼロ)が格納される。また、合成比の初期化として、RAM503内の変数NomalRatioにノーマル音の初期ゲイン値0(ゼロ)が格納される。また、RAM503内の変数GrowlRatioにグロウル音の初期ゲイン値0(ゼロ)が格納される。そして、発音開始閾値の初期化として、RAM503内の変数ThreshNoteOnにROM502に記憶されている定数値THRESHOLD_NOTEONが格納される。
図6の処理に戻って、CPU501は、ボイス信号処理(ステップS602)と、楽音制御処理(ステップS603)を繰り返し実行する。
図8は、図6のステップS602のボイス信号処理の詳細例を示すフローチャートである。図3のボイス入力手段301、自己相関値・偏差検出手段302、信号強度決定手段303、キー検出手段305、及び音高制御手段306の各機能を実現する。
まず、CPU501は、ステップS801からS804の一連の処理で示されるボイス入力処理を実行する。この処理は、図3のボイス入力手段301の機能を実現する。
始めに、CPU501は、一定の短い時間だけ待機する(ステップS801)。
次に、CPU501は、図1のボイスセンサ101からADC504を介して、ボイス値を取得する(ステップS802)。
CPU501は、取得したボイス値をボイス入力情報としてRAM103に格納する(ステップS803)。
CPU501は、所定のボイス信号処理単位数のボイス値を取得したか否かを判定する(ステップS804)。
ステップS804の判定がNOならば、CPU501は、図8のフローチャートで示される図6のステップS602のボイス信号処理を終了する。
ステップS804の判定がYESになると、CPU501は、自己相関値・偏差検出処理(ステップS805)、信号強度決定処理(ステップS806)、及び音高制御処理(ステップS807)を順次実行する。これらは、図3の自己相関値・偏差検出手段302、信号強度決定手段303、及び音高制御手段306の各機能を実現する。これらの処理が終了すると、CPU501は、図8のフローチャートで示される図6のステップS602のボイス信号処理を終了する。なお、ステップS807の処理が終了した時点で、CPU501は、RAM103に記憶されていたいままでのボイス信号処理単位数のボイス値をクリアする。
図9は、図8のステップS805の自己相関値・偏差検出処理の詳細例を示すフローチャートである。CPU501は、数2式で示した自己相関関数の遅れ時間τについて、ステップS901で音階Nを音階C2(約65.4Hz)に初期設定した後、ステップS904で音階Nを+1ずつインクリメントしながら、ステップS903で音階Nが音階C6(約1046.5Hz)を超えたと判定するまで、発声可能な基音49音階について、前述した数2式により、自己相関値を算出する(ステップS902)。
ステップS903の判定がYESになると、CPU501は、ステップS902で算出された音階C2からC6までの全自己相関値の偏差を算出する(ステップS905)。
CPU501は、ステップS902で算出した音階C2からC6までの全自己相関値と、ステップS905で算出した自己相関値の偏差を、自己相関値・偏差情報としてRAM103に記憶させる。
図10は、図8のステップS806の信号強度決定処理の詳細例を示すフローチャートである。CPU501は、図8のステップS801からS804の繰返し処理でRAM103にボイス入力情報として取得されたボイス信号処理単位数のボイス値の各振幅値を積分する(ステップS1001)。
次に、CPU501は、ステップS1001での積分の結果に対して、ローパスフィルタ処理を実行する(ステップS1002)。
そして、CPU501は、ステップS1002のローパスフィルタ処理の結果を、信号強度情報としてRAM103内の変数SignalStrengthに記憶させる(ステップS1003)。
図11は、図8のステップS807の音高制御処理の詳細例を示すフローチャートである。CPU501はまず、GPIO505が出力する鍵盤部102のキー検出情報より、検出されたキーの音高を検出する(ステップS1101)。
次に、CPU501は、前回のキー検出結果と比較してキーによる音高に変化があるか否かを判定する(ステップS1102)。
ステップS1102の判定がYESの場合、CPU501は、ステップS1101で検出したキーによる音高を、音高情報を示す変数NoteNumberとしてRAM103に格納する(ステップS1103)。その後、CPU501は、図11のフローチャートで例示される図8のステップS807の音高制御処理を終了する。
ステップS1102の判定がNOの場合、CPU501は、図8のステップS805でRAM103に得られている自己相関値・偏差情報の自己相関値の偏差の値が所定の偏差閾値より高いか否かを判定することにより、自己相関値から音高を検出可能か否かを判定する(ステップS1104)。この動作については、図3の音高制御手段306の説明で前述した。
ステップS1104の判定がNOの場合には、演奏者は特殊奏法音の発声を行っていないと判定できるため、CPU501は、図11のフローチャートで例示される図8のステップS807の音高制御処理を終了する。
ステップS1104の判定がYESの場合には、演奏者は特殊奏法音の発声を行っていると判定できる。そこで、CPU501は、図8のステップS805でRAM103に得られている自己相関値・偏差情報の自己相関値のうち、最小値となる自己相関値に対応する遅れ時間τから、その逆数1/τとして音高を検出する(ステップS1105)。
CPU501は、ステップS1105で算出した自己相関値による音高を、新たな音高情報として、RAM103内の変数NoteNumberに記憶させる。
以上の図8から図11で示される図6のステップS602のボイス信号処理の後、CPU501は、図6のステップS603の楽音制御処理を実行する。図12は、ステップS603の楽音制御処理の詳細例を示すフローチャートである。
まず、CPU501は、発音状態を示すRAM503内の変数GeneratorStatusの値が未発音状態を示すROM502内の定数値GENERATOR_DEADになっているか否かを判定する(ステップS1201)。
ステップS1201の判定がYES(未発音状態)ならば、CPU501は、ステップS1202の処理に移行する。ここでは、CPU501は、図8のステップS806の信号強度決定処理でRAM503内の変数SignalStrengthに得られている信号強度情報の値が、図3の発音指示手段307の説明で前述した発音開始閾値を示すROM502内の定数値ThreshNoteOnを超えたか否かを判定する。
ステップS1202の判定がNOならば、発音は開始されないため、CPU501は、図12のフローチャートで例示される図6のステップS603の楽音制御処理を終了する。
ステップS1202の判定がYESになると、CPU501は、音高情報を記憶するRAM503内の変数NoteNumberと図8のステップS806の信号強度決定処理でRAM503内の変数SignalStrengthに得られている信号強度情報の値とを入力として、発音処理を実行する(ステップS1203)。この処理の詳細については、図13のフローチャートの説明で後述する。
次に、CPU501は、発音後処理として、発音状態か否かを示すRAM503内の変数GeneratorStatusに、発音状態を示すROM502内の定数値GENERATOR_ALIVEを格納する(ステップS1204)。その後、CPU501は、図12のフローチャートの処理を終了し、図6のステップS605の楽音制御処理を終了する。
ステップS1201の判定がNO(発音状態)ならば、CPU501は、ステップS1205の処理に移行する。ここでは、CPU501は、図8のステップS806の信号強度決定処理でRAM503内の変数SignalStrengthに得られている信号強度情報の値に基づいてエンベロープ情報の値を決定する、エンベロープ決定処理を実行し、この処理の結果得られるエンベロープ情報の値をRAM103内の変数Envelopeに格納する。この処理の詳細については、図4のエンベロープ決定手段304の説明で前述した。この結果得られたエンベロープ情報の値は、Wave Generator506に与えられる。Wave Generator506は、このゲイン値に基づいて、図3又は図4の乗算器315に対応する機能を実行する。
次に、CPU501は、図8のステップS805でRAM103に得られている自己相関値・偏差情報の値と、図8のステップS806でRAM103の変数SignalStrengthに得られている信号強度情報の値とに基づいて、合成比決定処理を実行する(ステップS1206)。この処理の詳細は、図4の合成比決定手段311の説明において前述した。図4のノーマル音用テーブル401及びグロウル音用テーブル402にアクセスして決定された合成比はそれぞれ、RAM503内の変数NormalRatioと変数GrowlRatioに格納される。変数NormalRatioは、ノーマル音の合成比を示し、図3又は図4の乗算器312に与えられる乗算値に対応する。変数GrowlRatioは、グロウル音の合成比を示し、図3又は図4の乗算器313に与えられる乗算値に対応する。これらの変数値は、Wave Generator506に与えられる。Wave Generator506は、これらの変数値に基づいて、図3又は図4の乗算器312及び313に対応する機能を実行する。
その後、CPU501は、図8のステップS806の信号強度決定処理でRAM503内の変数SignalStrengthに得られている信号強度情報の値が、図3の発音指示手段307の説明で前述した発音開始閾値を示すROM502内の定数値ThreshNoteOn以下となったか否かを判定する(ステップS1207)。ステップS1207の判定がYESになると、CPU501は、発音後処理として、発音状態か否かを示すRAM503内の変数GeneratorStatusに、未発音状態を示すROM502内の定数値GENERATOR_DEADを格納する(ステップS1208)。
ステップS1207の判定がNOの場合又はステップS1208の処理の後、CPU501は、図12のフローチャートで例示される図6のステップS605の楽音制御処理を終了する。
図13は、図12のステップS1203の発音処理の詳細例を示すフローチャートである。
まず、CPU501は、図8のステップS807の音高制御処理でRAM503内の変数NoteNumberに得られている音高情報を入力として、Wave Generator506におけるノーマル音用の初期化処理を実行する(ステップS1301)。ここでは、CPU501は、Wave Generator506に対して、ノーマル音波形データ309(図3参照)のスタートアドレスを設定し、また変数NoteNumberが示す音高に対応するノーマル音波形データ309の読出し速度を設定する。
次に、CPU501は、音高を記憶するRAM503内の変数NoteNumberを入力として、Wave Generator506におけるグロウル音用の初期化処理を実行する(ステップS1302)。ここでは、CPU501は、Wave Generator506に対して、グロウル音波形データ310(図3参照)のスタートアドレスを設定し、また変数NoteNumberが示す音高に対応するグロウル音波形データ310の読出し速度を設定する。
次に、CPU501は、合成比決定処理を実行する(ステップS1303)。この処理は、発音状態で実行される図12のステップS1206の処理と同様であり、図3又は図4の合成比決定手段311の機能を実現する。図4のノーマル音用テーブル401及びグロウル音用テーブル402にアクセスして決定された合成比はそれぞれ、RAM503内の変数NormalRatioと変数GrowlRatioに格納され、Wave Generator506に与えられる。Wave Generator506は、これらの変数値に基づいて、図3又は図4の乗算器312及び313に対応する機能を実行する。
次に、CPU501は、エンベロープ決定処理を実行する(ステップS1304)。この処理は、発音状態で実行される図12のステップS1205の処理と同様である。この処理で得られたエンベロープ情報の値は、Wave Generator506に与えられる。Wave Generator506は、このゲイン値に基づいて、図3又は図4の乗算器315に対応する機能を実行する。
最後に、CPU501は、ジェネレータ・シンクロ・スタート処理を実行する(ステップS1305)。この処理では、CPU501は、Wave Generator506に対してノーマル音波形データ309とグロウル音波形データ310を同期(シンクロ)させて出力処理させるための発音開始指示を出す。
以上説明した第2の実施形態の動作により、第1の実施形態における図3又は図4の電子楽器の機能が、ソフトウェア処理として実現される。
以上説明したようにして、第1及び第2の実施形態では、図1のボイスセンサ本体112に金属網113と積層繊維114からなる障害物を取り付けることにより、演奏者がボイスセンサ101に息を吹きかけてブレス奏法を行ったときの情報を効率よく音声として入力することができ、信号強度の検出における応答性及び安定性を向上させることが可能となる。ボイスセンサ本体112に被せる障害物としては、息を吹きかけたときの周波数特性がホワイトノイズに近くなるようなものであれば、金属網113と積層繊維114の組合せには限られず、様々なものを適用できる。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
カルマン渦を生じさせる部材を介して音声センサからブレス音及び発声音が入力され、前記入力に応じて前記音声センサから連続して出力される出力値に基づいて算出される複数の自己相関値から偏差を算出する偏差算出手段と、
前記自己相関値の前記偏差に基づいて、発音部に発音させる楽音を生成する楽音生成手段と、
を有する楽音生成装置。
(付記2)
前記楽音生成手段は、
前記自己相関値の前記偏差が閾値より大きい場合に、ノーマル音の第1の楽音信号の合成比率よりもグロウル音の第2の楽音信号の合成比率を大きくすることにより、前記第1の楽音信号と前記第2の楽音信号とを合成して前記楽音を生成する、付記1に記載の楽音生成装置。
(付記3)
前記楽音生成手段は、
前記自己相関値の前記偏差が閾値より小さい場合に、ノーマル音の第1の楽音信号の合成比率よりもグロウル音の第2の楽音信号の合成比率を小さくすることにより、前記第1の楽音信号と前記第2の楽音信号とを合成して前記楽音を生成する、付記1または2に記載の楽音生成装置。
(付記4)
前記音声センサの前記出力値からブレスの信号強度情報を取得する信号強度決定手段と、
を更に有し、
前記楽音生成手段は、
前記自己相関値の前記偏差及び前記信号強度情報に基づいて決定される合性比率により、ノーマル音の第1の楽音信号とグロウル音の第2の楽音信号とを合成して前記楽音を生成する、付記1から3のいずれかに記載の楽音生成装置。
(付記5)
付記1乃至4のいずれかに記載の楽音生成装置と、
前記楽音生成装置により生成された楽音を発音する発音部と、
を有する電子楽器。
(付記6)
カルマン渦を生じさせる部材を介して音声センサからブレス音及び発声音が入力され、前記入力に応じて前記音声センサから連続して出力される出力値に基づいて算出される複数の自己相関値から偏差を算出し、
前記自己相関値の前記偏差に基づいて、発音部に発音させる楽音を生成する、楽音生成方法。
(付記7)
コンピュータに、
カルマン渦を生じさせる部材を介して音声センサからブレス音及び発声音が入力され、前記入力に応じて前記音声センサから連続して出力される出力値に基づいて算出される複数の自己相関値から偏差を算出するステップと、
前記自己相関値の前記偏差に基づいて、発音部に発音させる楽音を生成するステップと、
を実行させるためのプログラム。