以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態に係る発音装置のハードウェア構成を示すブロック図である。この発音装置1は、例えば鍵盤楽器として構成される。発音装置1において、CPU(Central Processing Unit)10は、発音装置1全体の制御を行う中央処理装置である。ROM(Read Only Memory)11は制御プログラムおよび各種のデータなどが格納される不揮発性のメモリである。RAM(Random Access Memory)3はCPU10のワーク領域および各種のバッファなどとして使用される揮発性のメモリである。表示器15は、動作状態および各種設定画面やユーザに対するメッセージなどが表示される液晶表示器等からなる。演奏操作子16は鍵盤などからなる演奏操作子であり、操作されることにより、キーオン(発音開始の指示)、キーオフ(発音停止の指示)、音高、ベロシティなどの演奏情報を発生させる。この演奏情報はMIDIメッセージの演奏情報であってもよい。また、設定操作子17は、発音装置1を設定する操作つまみや操作ボタンなどの各種設定操作子である。
データメモリ18には、歌詞を音節に区切ったテキストデータを含む音節情報、及び歌唱音の音声素片データが格納される音韻データベースなどが格納されている。後述する音節情報(テキストデータ30)及び音韻データベース32が再生用情報となる(図4(b)、(c))。本実施の形態では、音節情報は少なくとも音節を含み、再生用情報は、演奏操作子16の操作に従って、読み出し位置(カーソル位置)にある音節が読み出される音節情報を少なくとも含む。ループボタン20は、再生用情報におけるループ再生(リピート再生)するループ区間を設定するための操作子である。ループボタン20は、押下(オン)及び押下解除(リリースないしオフ)の操作が可能であり、押下解除されると押下前の初期状態に復帰する。
音源13は、複数の発音チャンネルを有し、CPU10の制御の基で、演奏操作子16を使用するリアルタイム演奏に応じて1つの発音チャンネルが割り当てられる。音源13は、割り当てられた発音チャンネルにおいて、データメモリ18から演奏に対応する音声素片データを読み出して歌唱音データを生成する。サウンドシステム14は、音源13で生成された歌唱音データをデジタル/アナログ変換器によりアナログ信号に変換して、アナログ信号とされた歌唱音を増幅してスピーカ等へ出力する。さらに、バス19は発音装置1における各部の間のデータ転送を行うためのバスである。
図2(a)は、再生処理のフローチャートである。この処理は、ROM11に格納されたプログラムをCPU10が読み出して実行することにより実現される。リアルタイム演奏を行う場合、ユーザはリアルタイム再生を指示し、演奏操作子16を操作して演奏を行うことになる。この処理は、リアルタイム再生が指示されると開始される。
まず、CPU10は、ステップS101で、初期化を行い、指示により再生対象とされた再生用情報(テキストデータである歌詞データを含む)を読み出す。ステップS102で、CPU10は、カーソル位置の初期化、すなわち、再生対象となった再生用情報における歌詞を音節に区切ったテキストデータの先頭の音節にカーソルを置く。このカーソル位置が読み出し位置となる。次にCPU10は、操作子処理(図2(b))を実行し(ステップS103)、その他処理を実行して(ステップS104)、処理をステップS103に戻す。「その他処理」においては、ユーザからの指示に応じて、ジャンプ処理、再生処理の終了処理等が実行される。ジャンプ処理は、カーソル位置を複数の音節分、進めるかまたは戻す処理であり、設定操作子17におけるジャンプ用ボタンを操作することで実現される。例えば、ジャンプ用ボタンの所定の操作によって所定の音節数の単位でカーソル位置が進退する。所定の音節数の単位は、例えば表示器15に1行で表示される歌詞に相当する音節群を単位とするが、それに限定されない。
図2(b)は、図2(a)のステップS103で実行される操作子処理のフローチャートである。まず、CPU10は、演奏操作子16がキーオン(押下操作)されたか否かを判別し(ステップS110)、キーオンされるとキーオン時処理(図3(a))を実行して(ステップS111)、図2(b)の処理を終了する。演奏操作子16がキーオンされない場合は、CPU10は、演奏操作子16がキーオフ(離操作)されたか否かを判別し(ステップS112)、キーオフされるとキーオフ時処理(図5)を実行して(ステップS113)、図2(b)の処理を終了する。演奏操作子16がキーオフされない場合は、CPU10は、新たにループボタン20の押下がされたか否かを判別し(ステップS114)、ループボタン20の押下がされると、押下時処理(図6)を実行して(ステップS115)、図2(b)の処理を終了する。ループボタン20の押下がされない場合は、CPU10は、新たにループボタン20のリリース(押下解除操作)がされたか否かを判別し(ステップS116)、ループボタン20のリリースがされると、リリース時処理(図7)を実行して(ステップS117)、図2(b)の処理を終了する。ループボタン20のリリースがされない場合は、CPU10は図2(b)の処理を終了する。
図3(a)は、図2(b)のステップS111で実行されるキーオン時処理のフローチャートである。図3(b)は、図3(a)のステップS202で実行される音節情報取得処理のフローチャートである。また、キーオン時処理における発音受付処理の説明図を図4(a)に示し、音節情報取得処理の説明図を図4(b)に示し、音声素片データ選択処理の説明図を図4(c)に示す。
まず、図3(a)のステップS201では、CPU10は、キーオン操作された演奏操作子16に基づく発音指示を受け付ける。この場合、CPU10は、キーオンのタイミング、操作された演奏操作子16の音高情報およびベロシティなどの演奏情報を受け取る。例えば、図4(a)に示す楽譜の通りユーザがリアルタイム演奏した場合は、最初のキーオンn1の発音指示を受け付けた時に、CPU10はE5の音高情報と鍵速度に応じたベロシティ情報を受け取る。次いで、ステップS202にて、CPU10は、キーオンに対応する音節情報を取得する音節情報取得処理(図3(b))を行う。
図3(b)のステップS211では、CPU10は、カーソル位置の音節を取得する。なお、ユーザの演奏に先立って、図4(a)に示す楽譜に対応してデータメモリ18に格納されている特定の歌詞が指定されており、指定された歌詞を音節に区切ったテキストデータの先頭の音節にカーソルが置かれている。例えば、図4(a)に示す楽譜に対応して指定された歌詞を音節に区切ったテキストデータ30は、図4(b)に示す音節c1〜c42の「は」「る」「よ」「こ」「い」の5つの音節からなるテキストデータとされている。この場合、c1〜c3の音節「は」「る」「よ」はそれぞれ独立しているが、c41の音節「こ」とc42の音節「い」とはグループ化されている。このグループ化を示す情報はグループ化情報31として各音節に埋め込まれたり対応付けられたりしている。グループ化情報31において、「×」はグループ化されていないことを表し、「○」はグループ化されていることを表している。これにより、図4(b)に示すように、最初のキーオンn1の発音指示を受け付けた際には、CPU10は、指定された歌詞の最初の音節c1である「は」をデータメモリ18から読み出す。
次いで、ステップS212では、CPU10は、取得した音節がグループ化されているか否かを、取得された音節のグループ化情報31から判別する。そしてCPU10は、取得された音節が例えばc1の「は」の場合は、そのグループ化情報31が「×」であることからグループ化されていないと判断し、処理をステップS216に進める。ステップS216では、CPU10は、テキストデータ30の次の音節にカーソルを進める。これにより、例えば2音節目のc2の「る」にカーソルが置かれる。なお、後述する設定されたループ区間をループ再生する「ループモード」が設定されている場合は、カーソルを進めるべき次の音節はループモードを考慮したものとされ、通常、ループ区間内における次の音節または先頭の音節となる。ステップS216の処理が終了すると音節情報取得処理は終了する。
一方、ステップS212の判別の結果、取得した音節がグループ化されている場合は、CPU10は、グループ内の音節を取得する。例えば、取得した音節が「こ」であるとき、「こ」と「い」がグループ化されていることから、CPU10は、処理をステップS213へ進める。ステップS213では、CPU10は、グループ内の音節c42である「い」をデータメモリ18から読み出す。次いで、ステップS214では、CPU10は、キーオフ発音フラグをセットして、キーオフされた際にグループ内の次の音節「い」を発音させる準備をする。次のステップS215では、CPU10は、テキストデータ30のグループを越えた次の音節にカーソルを進める。ただし、次の音節がない場合はこの処理はスキップされる。ステップS215の処理が終了すると音節情報取得処理は終了する。
図3(a)のステップS203では、CPU10は、音声素片データを選択する。この音声素片データの選択処理は、CPU10の制御の基に音源13で行われ、取得された音節を発音させる音声素片データが音韻データベース32(図4(c))から選択される。図4(c)に示すように、音韻データベース32には、「音素連鎖データ32a」と「定常部分データ32b」とが記憶されている。音素連鎖データ32aは、無音(#)から子音、子音から母音、母音から(次の音節の)子音または母音など、発音が変化する際の音素片のデータである。定常部分データ32bは、母音の発音が継続する際の音素片のデータである。最初のキーオンn1の発音指示を受け付けて、例えば取得された音節がc1の「は」の場合は、音源13において、音素連鎖データ32aから「無音→子音h」に対応する音声素片データ「#−h」と「子音h→母音a」に対応する音声素片データ「h−a」が選択されると共に、定常部分データ32bから「母音a」に対応する音声素片データ「a」が選択される。
次いで、ステップS204にて、ステップS203で選択された音声素片データに基づく発音処理をCPU10の制御の基に音源13が行う。例えば取得された音節がc1の「は」の場合は、ステップS204の発音処理において、「#−h」→「h−a」→「a」の音声素片データの発音が順次、音源13において行われることで、音節c1の「は」の発音が行われる。発音の際には、キーオンn1の発音指示の受付の際に受け取ったE5の音高で、ベロシティ情報に応じた音量で「は」の歌唱音が発音される。ステップS204の発音処理が終了するとキーオン時処理は終了する。
図5は、図2(b)のステップS113で実行されるキーオフ時処理のフローチャートである。キーオフ時処理のステップS301、S304の処理はCPU10が実行し、ステップS302、S303、S305の処理はCPU10の制御の基で音源13において実行される。ステップS301では、CPU10は、キーオフ発音フラグがオンか否かを判別する。このキーオフ発音フラグは、取得した音節がグループ化されている場合に図3(b)のステップS214でセットされる。例えば、最初の音節c1はグループ化されていないことから、ステップS301でNoと判断され、処理はステップS305に進む。ステップS305では、CPU10の制御の基に音源13において消音処理が行われて、「は」の歌唱音の発音が停止される。すなわち、所定のエンベロープのリリースカーブで「は」の歌唱音が消音されていく。その後、キーオフ時処理は終了する。
一方、キーオフ発音フラグがオンでない場合は、ステップS302で、グループ内の次の音節の発音処理が行われる。これは、図4(b)の例でいえば「こ」の発音が開始された後にキーオフがされた場合が該当する。CPU10は、ステップS203の音節情報取得処理において、音節「い」に対応する音声素片データとして選択された「o−i」→「i」の音声素片データをE5の音高で発音させる。次いで、ステップS303では、消音処理が行われる。例えば、所定のエンベロープのリリースカーブで「い」の歌唱音が消音されていく。なお、「こ」の発音は、発音が「い」に移行した時点において、発音停止されるとする。次いで、ステップS304で、CPU10は、キーオフ発音フラグをリセットしてキーオフ時処理を終了する。
キーオン時処理及びキーオフ時処理を、図4(b)に示す音節c1〜c42を例にとって説明する。
CPU10は、最初のキーオンn1の発音指示を受け付けると、最初の音節c1を取得すると共にグループ化されていないと判断する。次いで、音源13において、音節c1を発音する音声素片データ「#−h」,「h−a」,「a」が選択(ステップS203)されて、キーオンn1のベロシティ情報に応じた音量のエンベロープが開始され、「#−h」→「h−a」→「a」の音声素片データをE5の音高で且つ上記エンベロープの音量で発音される(ステップS204)。これにより、「は」の歌唱音が発音される。上記エンベロープは、キーオンn1のキーオフまでサスティンが持続する持続音のエンベロープとされ、キーオンn1の鍵がキーオフされるまで「a」の音声素片データが繰り返し再生される。その後、キーオフされると発音は停止される。
リアルタイム演奏の進行に伴い演奏操作子16が操作されて、2回目のキーオンn2が検出されると、CPU10はキーオンn2のタイミング、E5の音高情報と鍵速度に応じたベロシティ情報を受け取る。そしてCPU10は、指定された歌詞のカーソルが置かれた2番目の音節c2である「る」をデータメモリ18から読み出し、この取得した音節「る」のグループ化情報31が「×」であることからグループ化されていないと判断して、3音節目のc3の「よ」にカーソルを進める。ステップS203の音声素片データ選択処理では、音源13において、音素連鎖データ32aから「無音→子音r」に対応する音声素片データ「#−r」と「子音r→母音u」に対応する音声素片データ「r−u」が選択されると共に、定常部分データ32bから「母音u」に対応する音声素片データ「u」が選択される。ステップS204の発音処理では、「#−r」→「r−u」→「u」の音声素片データの発音により、c2の「る」の音節の発音が行われる。
3回目のキーオンn3は、2回目のキーオンn2がキーオフされる前にキーオンするレガートとされている。3回目のキーオン時処理においては、CPU10はキーオンn3のタイミング、D5の音高情報と鍵速度に応じたベロシティ情報を受け取る。そしてCPU10は、ステップS202の音節情報取得処理では、指定された歌詞のカーソルが置かれた3番目の音節c3である「よ」をデータメモリ18から読み出す。そしてCPU10は、この取得した音節「よ」のグループ化情報31が「×」であることからグループ化されていないと判断して、4音節目のc41の「こ」にカーソルを進める。ステップS203では、音源13において、音素連鎖データ32aから「母音u→子音y」に対応する音声素片データ「u−y」と「子音y→母音o」に対応する音声素片データ「y−o」が選択されると共に、定常部分データ32bから「母音o」に対応する音声素片データ「o」が選択される。これは、3回目のキーオンn3がレガートであって「る」から「よ」へ滑らかにつなげて発音させるためである。ステップS204の発音処理では、「u−y」→「y−o」→「o」の音声素片データの発音が順次行われて、c2の「る」から滑らかにつながるc3の「よ」の音節の発音が行われる。キーオンn3がキーオフされると、3番目の音節c3である「よ」はグループ化されていないことから、ステップS305では、音源13において消音処理が行われて、「よ」の歌唱音の発音が停止される。
そして、4回目のキーオンn4が検出されると、CPU10はキーオンn4のタイミング、E5の音高情報と鍵速度に応じたベロシティ情報を受け取る。そして、4番目の音節c41である「こ」をデータメモリ18から読み出すが、この取得した音節「こ」のグループ化情報31が「○」であり、グループ化されていると判断して、グループ内の音節c42である「い」をデータメモリ18から読み出す。
ステップS203の音声素片データ選択処理では、音源13において、グループ内の音節「こ」および「い」に対応する音声素片データが選択される。すなわち、音節「こ」に対応する音声素片データとして、音素連鎖データ32aから「無音→子音k」に対応する音声素片データ「#−k」と「子音k→母音o」に対応する音声素片データ「k−o」が選択されると共に、定常部分データ32bから「母音o」に対応する音声素片データ「o」が選択される。また、音節「い」に対応する音声素片データとして、音素連鎖データ32aから「母音o→母音i」に対応する音声素片データ「o−i」が選択されると共に、定常部分データ32bから「母音i」に対応する音声素片データ「i」が選択される。そして、「#−k」→「k−o」→「o」の音声素片データの発音により、c41の「こ」の音節の発音が行われ、キーオンn4の鍵がキーオフされるまで「o」の音声素片データが繰り返し再生される。そして、キーオンn4がキーオフされると、「o−i」→「i」の音声素片データの発音により、c41の「こ」と同じ音高E5でc42の「い」の歌唱音が発音される。その後、消音処理が行われて、「い」の歌唱音の発音が停止される。
このように、ユーザのリアルタイム演奏に応じた歌唱音である歌声が発音されるようになると共に、リアルタイム演奏時の1押鍵で複数の歌声を発音することができる。グループ化された音節は、1回の押離鍵操作で発音される音節の集合とされ、例えばグループ化されたc41とc42の音節は1回の押離鍵操作で発音される。この場合、1音節目は押鍵時に、2音節目以降は離鍵時に発音される。そして、グループ化の情報は、キーオフにより次の音節を発音するか否かを決定する情報なので、「キーオフ発音情報」ということができる。なお、キーオンn4の鍵がキーオフされる前に、演奏操作子16の他の鍵(キーオンn5とする)のキーオンが行われた場合は、キーオンn4のキーオフ時処理が行われたあとにキーオンn5の発音が行われる。すなわち、キーオンn4のキーオフ時処理としてc42の音節が発音された後に、キーオンn5に対応するc42の次の音節が発音されるようになる。あるいは、キーオンn5に対応する音節をすぐに発音させるため、キーオンn5のキーオン操作により実行されるキーオンn4のキーオフ時処理においては、ステップS302を省略するよう構成してもよい。この場合、c42の音節は発音されず、キーオンn5に応じてすぐにc42の次の音節の発音が行われるようになる。
図6は、図2(b)のステップS115で実行される押下時処理のフローチャートである。ループボタン20が押下されることでこの処理が開始され、ステップS401では、CPU10は、ループモードがオン(ON)に設定されているか否かを判別する。そして、ループモードがオンに設定されている場合は、ループ区間が設定済みであり、そのループ再生中にループボタン20が押下された場合であるので、ループ区間を解除または更新する必要がある。そこでCPU10は、ループモードのオフを準備するためのループモードのオフ(OFF)を予約して(ステップS402)、図6の処理を終了する。なお、CPU10は、予約の際には、ループボタン20が押下された時点の読み出し位置をRAM12に記憶させておく。
一方、ループモードがオンに設定されていない場合は、ループ区間が未設定の状態でループボタン20が押下された場合であるので、新たにループ区間を設定する必要がある。そこでCPU10は、今回のループボタン20が押下された時点で読み出し位置(カーソル位置)にある音節が不可分音節群に含まれる音節であるか否かを判別する(ステップS403)。ここで、「不可分音節群」は、連続する複数の音節から成る音節群であり、群に含まれる先頭と末尾の音節がループ区間の開始地点または終了地点となることが不適切な音節群である。不可分音節群は予め設定されている。なお、歌詞は日本語に限らず、英語等の他の言語であってもよい。すなわち、日本語では、ほぼ1文字1音節であるが、他の言語においては1文字が1音節とならない場合がある。例えば、英語の歌詞が「september」の場合は、「sep」「tem」「ber」の3音節となる。このうち「tem」は、ループ再生の先頭または末尾になると不自然である。そこで、「sep」「tem」「ber」の3音節を不可分音節群として設定しておく。
なお、上述したグループは、不可分音節群に含まれる概念であり、グループ化された2つの音節は不可分音節群でもある。しかし、不可分音節群の全てがグループ化されているとは限らない。例えば、図4(b)の例では、「こ」と「い」がグループ化されていたが、「september」の場合は、「sep」「tem」の2音節をグループ化することにより、1回の押離鍵操作における押鍵時に「sep」の音節を、離鍵時に「tem」の音節を押鍵された鍵の音高で発音させることができるようになる。あるいは、「tem」「ber」の2音節をグループ化してもよい。なお、文字や音節に代えてモーラという概念を用いてもよい。
ステップS403で、今回のループボタン20が押下された時点で読み出し位置にある音節が不可分音節群に含まれる音節でない場合は、CPU10は、今回のループボタン20が押下された時点での読み出し位置をループ区間の開始地点(開始位置)として設定(指定)し(ステップS404)、図6の処理を終了する。一方、今回のループボタン20が押下された時点で読み出し位置にある音節が不可分音節群に含まれる音節である場合は、CPU10は、当該不可分音節群における先頭の音節をループ区間の開始地点として設定(指定)する(ステップS405)。これにより開始地点が補正される。その後、図6の処理は終了する。
図7は、図2(b)のステップS117で実行されるリリース時処理のフローチャートである。まず、CPU10は、ループモードのオフが予約されているか否かを判別する(ステップS501)。そして、ループモードのオフが予約されている場合は、CPU10は、今回のループボタン20のリリース(図2(b)のステップS116)が、ループボタン20の押下操作時(図2(b)のステップS114)と同じ読み出し位置でされたか否かを判別する(ステップS506)。その判別の結果、今回のループボタン20の押下解除操作時(リリース時)の読み出し位置が押下操作時と同じであれば、ループ再生中において非常に短い時間内に(次の音節にカーソルが移動する前に)ループボタン20が押下とリリースとがなされたと判断できる。従って、この場合は、ループモードの解除を意図していると判断できるので、CPU10は、ループモードをオフにすると共に、設定されているループ区間(開始地点及び終了地点の情報)をクリアする(ステップS508)。その後、図7の処理は終了する。
一方、今回のループボタン20のリリース時の読み出し位置が押下操作時と異なれば、ループ再生中において読み出し位置の移動を経ているので、ループモードの更新を意図していると判断できる。そこでCPU10は、ステップS507で、設定済みの現ループ区間を解除すると共に、ループボタン20の押下時の読み出し位置(ステップS402で記憶された位置)を開始地点、リリース時の読み出し位置を終了地点とする、新たなループ区間を設定する。その後、処理はステップS504に進む。
ステップS501の判別の結果、ループモードのオフが予約されていない場合は、ループ区間の特に終了地点が未設定の状態でループボタン20がリリースされた場合であるので、終了地点を決定する必要がある。そこでCPU10は、今回のループボタン20がリリースされた時点で読み出し位置にある音節が不可分音節群に含まれる音節であるか否かを判別する(ステップS502)。そして、今回のループボタン20がリリースされた時点で読み出し位置にある音節が不可分音節群に含まれる音節でない場合は、CPU10は、当該リリースされた時点での読み出し位置をループ区間の終了地点(終了位置)として設定(指定)し(ステップS505)、処理をステップS504に進める。一方、今回のループボタン20がリリースされた時点で読み出し位置にある音節が不可分音節群に含まれる音節である場合は、CPU10は、当該不可分音節群における末尾の音節をループ区間の終了地点として設定(指定)し(ステップS503)、処理をステップS504に進める。これにより終了地点が補正される。
ステップS504では、CPU10は、ループ区間が設定されたので、ループモードをオンに設定し(ステップS504)、図7の処理を終了する。なお、ステップS504が実行された場合、その後、ステップS103に戻ることで、設定されたループ区間の再生が開始されることになる。すなわち、ユーザは、演奏操作子16を押下(キーオン)するごとに(グループ化された音節は押下と離操作により)、ループ区間内の音節が順次発音される。
このように、ループ再生でない通常再生においては、ユーザが演奏操作子16を押鍵する毎に、指定された歌詞を音節に区切ったテキストデータ30の音節が、押鍵された鍵の音高で発音されていく。これにより、リアルタイム演奏時に指定された歌詞が歌われる。また、歌唱する歌詞の音節をグループ化することにより、1回の押鍵操作における押鍵時に1音節目を発音させ、離鍵時に2音節目を発音させることができる。
本実施の形態によれば、CPU10は、ループボタン20の押下操作に応じてループ区間の開始位置を設定すると共に、開始位置が設定された状態で、ループボタン20の押下解除操作(リリース)に応じてループ区間の終了位置を設定する。すなわち、ユーザは、ループボタン20を押して離すだけで開始位置及び終了位置を指定できるので、単一操作子の簡単な操作でループ区間を設定することができる。特に、再生用情報は、演奏操作子16の操作に従って、読み出し位置にある音節が読み出される音節情報を含むので、単一操作子の簡単な操作で音節再生におけるループ区間を設定することができる。
また、ループ区間の設定操作が押し・離しという単純動作なので、演奏者の重心の移動が少なく姿勢が安定し、設定操作が単純でわかりやすいので、非常に短い区間のループ再生を設定しやすくライブ演奏に適している。なお、ICレコーダやDVDプレーヤにおけるリピート再生では繰り返しの開始地点でボタンを押し・離し、繰り返しの終了地点でボタンを押し・離すことでリピート区間を設定するのが通常である。これらの装置に、本実施の形態のループ区間設定手法を適用してもよく、非常に短いループ区間が容易に設定可能となる効果が期待できる。
また、ループボタン20のリリースによりループ区間が設定されると、そのループ区間の再生が開始されるので、簡単な操作でループ再生を開始することができる。また、ループ区間のループ再生中にループボタン20が押下され、その後、押下操作時と同じ読み出し位置でリリースされると、当該ループ区間の設定が解除されるので、短い時間でのオンとリリースという簡単な操作でループ区間の設定を解除することができる。一方、ループ区間のループ再生中に、ループボタン20が押下され、その後、押下操作時と異なる読み出し位置でリリースされると、ループ区間が新たなループ区間に更新されるので、簡単な操作でループ区間を再設定することができる。
また、ループボタン20の押下操作時、リリース時にそれぞれ読み出し位置にある音節が不可分音節群に含まれる音節である場合は、当該不可分音節群の先頭の音節が開始音節、末尾の音節が終了音節としてそれぞれ設定される。これにより、不自然な箇所でループ区間が設定されないようにすることができる。
なお、本実施の形態において、図7のステップS506、S507を廃止してもよい。そのようにする場合、ステップS501でYESのときにステップS508へ移行するとしてもよい。これにより、ユーザは、ループ区間が設定された状態でループボタン20を押下し、その後リリースしたタイミングでループ区間の設定を解除できる。あるいは、ステップS506、S507を廃止する場合、ステップS501も廃止し、且つ、図6のステップS402で、ループ区間の設定を解除するようにしてもよい。これにより、ユーザは、ループ区間のループ再生中にループボタン20を押下操作するだけで直ちにループ区間の設定を解除できる。その直後のループボタン20のリリースは処理に関与しない。
なお、単一操作子の簡単な操作でループ区間を設定する観点からは、再生用情報が音節情報を含むことは必須でない。また、歌唱合成に限らず、音声合成する発音装置にも本発明を適用可能である。例えば、ハミング音や、スキャット、コーラスなどの歌唱音、または、通常の楽器音あるいは鳥のさえずりや電話のベルなどの効果音などの歌詞のない所定の音を発音できる。音源13は、歌詞のない所定の音の音色を備えており、CPU10は、ユーザが演奏操作子16を利用してリアルタイム演奏を行った際に歌詞のない所定の音を発音させる。図3(a)のステップS202では、音節情報取得処理に替えてキーオフ発音情報処理が行われ、ステップS203の音声素片データ選択処理では、予め定められた音や音声を発音させる音源波形や音声素片データが選択される。歌詞のない所定の音を押鍵された鍵の音高で発音することができることから、カラオケのガイドなどに適用することができる。この場合も、グループ化により、1回の押鍵操作における押鍵時と離鍵時とに、それぞれ歌詞のない所定の音を発音させることができる。
なお、図3(a)のステップS204、図5のステップS302における音節の発音処理では、発音される歌詞が表示器15に表示されるとしてもよく、さらには、発音される歌詞に対応するLED等の発光部が点灯されるようにしてもよい。なお、キーオフ発音情報は、音節情報の中に含まれることに替えて、音節情報とは別に記憶されていてもよい。
(第2の実施の形態)
第1の実施の形態に対して、図3(b)に代えて図8を用い、さらに図9〜図11を加えて本発明の第2の実施の形態を説明する。本実施の形態では、ユーザが演奏操作子16を利用した通常のリアルタイム演奏時、あるいはループ再生時に、表情豊かな歌声の演奏を行うことができる。
図8は、図3(a)のステップS202で実行される音節情報取得処理のフローチャートである。発音指示受付処理を説明するための楽譜例を図9(a)に示し、音節情報取得処理を説明するための歌詞情報テーブルを図9(b)に示し、ピアノロール譜を図9(c)に示す。歌詞情報テーブル50の「値1」を図10(a)に示し、「値2」、「値3」を図10(b)に示す。
演奏に先立って、データメモリ18上に、図9(a)に例示する楽譜に対応する歌詞を音節に区切ったテキストデータを含む歌詞情報テーブル50が指定されている。そして、指定された歌詞情報テーブル50のテキストデータの先頭の音節にカーソルが置かれている。本実施の形態における再生用情報に該当する歌詞情報テーブル50は、音節を少なくとも含む音節情報と、音節情報に対応付けられた発音制御パラメータとを含む。図9(b)に示すように、歌詞情報テーブル50は、歌詞を音節に区切ったテキストデータを含む音節情報50aと、各種パラメータタイプのいずれかを指定する発音制御パラメータタイプ50bと、発音制御パラメータの値情報50cとから構成されている。図9(b)に示す例では、音節情報50aは、図4(b)に示すテキストデータ30と同様のc1,c2,c3,c41の歌詞を区切った音節からなる。すなわち、図9(a)にキーオンn1、n2、n3、n4として示す各音符にはそれぞれ、図9(b)にc1、c2、c3、c41として示す、歌詞を区切った音節が対応している。発音制御パラメータタイプ50bにはパラメータa,b,c,dの何れかあるいは複数のパラメータタイプが設定されている。この発音制御パラメータタイプ50bには、声に含まれる倍音成分のバランスを変化させるHarmonics、声の明暗を演出してトーン変化を与えるBrightness、有声音の音色や強弱を演出するResonance、フォルマントを変化させることにより、女性的なあるいは男性的な声の太さや質感を変化させるGenderFactorなどのタイプがある。なお、発音制御パラメータタイプ50bの種類は例示に限定されない。
値情報50cは、発音制御パラメータの値を規定する。「値1」は発音制御パラメータの時間上の変化の仕方を設定し、グラフ形状で表すことができる。グラフ形状で表した「値1」の例を図10(a)に示す。この図には、w1〜w6の「値1」が示されており、それぞれ異なる時間上の変化をしているが、これに限られることはなく種々の時間上の変化をする「値1」を設定することができる。「値2」は、図10(b)に示すようにグラフ形状で示す「値1」の横軸の時間を設定しており、「値2」により、効果のかかり始めからかかり終わりまでの時間となる変化の速度を設定できる。「値3」は、図10(b)に示すようにグラフ形状で示す「値1」の縦軸の振幅を設定しており、「値3」により、効果のかかる度合いを示す変化の深さを設定できる。値情報50cで設定される発音制御パラメータの値の設定可能範囲は、発音制御パラメータタイプ50bにより異なっている。ただし、音節情報50aで指定される音節によっては、発音制御パラメータタイプ50bおよびその値情報50cが設定されていないものがあってもよい。例えば、音節c3には発音制御パラメータタイプ50bおよびその値情報50cが設定されていない。この歌詞情報テーブル50の音節情報50a、発音制御パラメータタイプ50b、値情報50cは、ユーザの演奏に先立って作成/編集されて、データメモリ18に格納されている。
図8において、図3(b)と同じ処理ステップには同じステップ番号が付してあり、それらの説明は省略する。図8では、図3(b)に対し、ステップS211とステップS212の間にステップS601が挿入されている。まず、ループ再生でない通常再生について説明する。
ステップS601では、CPU10は、ステップS211で取得した音節に対応付けられた発音制御パラメータを、歌詞情報テーブル50を参照して取得する。例えば、最初のキーオンn1の時には、ステップS211で音節c1が取得されることから、歌詞情報テーブル50から、音節c1に対応付けられているパラメータa,パラメータbが取得される。さらに、発音制御パラメータタイプ50bとして、「値1」〜「値3」が値情報50cとして取得される。そして、図8の処理がリターンした後の図3(a)のステップS204の発音処理では、図9(c)にピアノロール譜52で示すように、音源13において、キーオンn1の検出の際に受け取ったE5の音高で、選択された音声素片データの発音が行われて、音節c1の歌唱音が発音される。この発音の際に、「値1」「値2」「値3」で設定されたパラメータaと、「値1」「値2」「値3」で設定されたパラメータbの異なる2つの発音制御パラメータタイプにより、歌唱音の発音制御が行われることから、歌唱される歌声の表情や抑揚、声質や音色に変化を与えることができ、歌声に細かなニュアンスや抑揚をつけられるようになる。
リアルタイム演奏の進行に伴いキーオンn2が検出されると、キーオンn2に対応する2番目の音節c2がE5の音高で発音される。図9(b)に示すように、音節c2には、発音制御パラメータタイプ50bとしてパラメータbとパラメータcとパラメータdの3つの発音制御パラメータタイプが対応付けられている。それと共に、それぞれの発音制御パラメータタイプはそれぞれの「値1」「値2」「値3」で設定されている。従って、音節c2の発音の際に、図9(c)にピアノロール譜52で示すように、パラメータbとパラメータcとパラメータdの異なる3つの発音制御パラメータタイプにより、歌唱音の発音制御が行われる。これにより、歌唱される歌声の表情や抑揚、声質や音色に変化を与えられる。
キーオンn3が検出されると、キーオンn3に対応する3番目の音節c3がD5の音高で発音される。図9(b)に示すように、音節c3には発音制御パラメータタイプ50bが設定されていないことから、音節c3の発音の際には、図9(c)にピアノロール譜52で示すように、発音制御パラメータによる歌唱音の発音制御が行われない。
このように、ループ再生でない通常再生においては、演奏操作子16を押鍵する毎に、指定されたテキストデータの音節が、押鍵された鍵の音高で発音されていくようになる。これにより、テキストデータを歌詞とすることで歌声が発音されるようになる。この際に、音節毎に対応付けられた発音制御パラメータにより発音制御が行われるので、歌唱される歌声の表情や抑揚、声質や音色に変化を与えることができ、歌声に細かなニュアンスや抑揚をつけられるようになる。
ところで、CPU10は、ループモードが設定されている場合、ループ区間のループ再生においては、通常再生時とは異なる発音態様で発音させる。その態様にはいくつか種類があるので順に説明する。発音の可変態様として、大別して第1、第2、第3可変態様の3つがある。
第1可変態様では、CPU10は、ループ区間内の音節情報に含まれる音節の少なくとも1つを、発音制御パラメータに基づき且つ通常再生時とは異なる発音態様で発音させる。その際、CPU10は、通常再生時に対し、歌詞情報テーブル50で規定される発音制御パラメータを改変して用いる。これにより、「ループ再生ならでは」の効果付与や表現が可能となり、ループ再生時の表現力を高めることができる。
具体的には、CPU10は、ループ再生においては、発音制御パラメータにおける少なくとも1つのパラメータタイプの少なくとも1つの値情報を変更する。例えば、CPU10は、ループ再生時には通常再生時に対し、図10に示すw1〜w6の少なくとも1つの値1〜値3の少なくとも1つを変化させる。これにより、付加される効果の時間的変化、変化速度、変化深さを通常再生時とは異ならせることができる。なお、ループ区間の最初の音節のピッチベンドを最初に一時的に下げてから戻す等によって、しゃくりに似た効果を付加することも可能である。このようにして、ループ再生時には発音制御パラメータの作用の仕方を通常再生時とは異ならせることができる。なお、効果を変化させるために、乗算値等の係数や変換テーブルを用いることが考えられるが、その手法は問わない。なお、ジャンプ処理が適用された場合は、ジャンプ先の最初の音節にしゃくりを適用するようにしてもよい。
あるいは、CPU10は、ループ区間に含まれる複数の音節のうち指定に応じた一部の音節を、通常再生時とは異なる発音態様で発音させる対象としてもよい。この指定は、例えば割合及び位置の指定を含み、ユーザにより予め設定される。例えば、ループ区間の後半の指定割合に相当する数の音節にビブラートが付加される等の態様が考えられる。これにより、ユーザはループ区間における発音態様を異ならせる音節を指定できる。
なお、ループ区間への態様変化の適用は、例えば図7のステップS504で開始され、適用の解除はステップS508で実行される。なお、ループ再生における発音態様のタイプを、予め定めた複数のルールのうちユーザが選択したルールに基づき決めてもよい。ルールの選択は、図2(a)のステップS104で行えるとする。これにより、ループ再生時の発音態様のバリエーションを複数持つことができる。また、ループ再生時には通常再生時に対してシンガーの変更を行えるようにしてもよいし、複数シンガーのミックスを行えるようにしてもよい。
第2可変態様では、再生用情報は、発音制御パラメータを通常再生時用とは別にループ再生時用に有する。図11(a)は、通常再生時用の第1の発音制御パラメータ33及びループ再生時用の第2の発音制御パラメータ34の概念図である。すなわち、再生用情報は、全音節に対応するループ専用の発音制御パラメータ34を第1の発音制御パラメータ33に対応して持っている。CPU10は、通常再生においては、開始が指示された発音に対応する音節情報と該音節情報に対応付けられた第1の発音制御パラメータ33とを読み出し、上述した方法で発音制御する。一方、ループ再生においては、CPU10は、ループ区間33aにおける開始が指示された発音に対応する音節情報と、ループ区間33aに対応する第2の発音制御パラメータ34aとを読み出す。そして、CPU10は、ループ再生においては、ループ区間内の音節情報に含まれる音節を、第2の発音制御パラメータ34aに従った発音態様で発音させる。
あるいは、再生用情報は、全音節に対応するものでないものとして発音制御パラメータを有してもよい。図11(b)は、ループ専用の発音制御パラメータを含む情報テーブル51の概念図である。情報テーブル51において、発音制御パラメータタイプには適用の順番が定められている(No1、No2・・・Last1)。ループ再生においては、CPU10は、ループ区間内で発音開始が指示される順番に対応させて、発音制御パラメータを順番に読み出し、ループ区間内の音節情報に含まれる音節を、読み出された発音制御パラメータに従った発音態様で発音させる。例えば、1個目の音節にNo1、2個目の音節にNo2の発音制御パラメータが適用される。また、ループ区間内の最後の音節には、No1からループ区間内の音節数分目の発音制御パラメータが適用される。
第3可変態様では、CPU10は、ループ区間を設定する際に音節を追加する。第3可変態様では、再生用情報は、発音制御パラメータを含む必要はない。例えば、ループ区間の開始地点の設定(ステップS404、S405)、ループ区間の終了地点の設定(ステップS503、S505)で、図11(c)に例示する楽譜に対応する音節を有するループ区間が仮設定されたとする。この場合、図11(d)に示すように、キーオンn1の前にキーオンn0に対応する音節を追加してもよい。あるいは、図11(e)に示すように、キーオンn4の後の休符の後にキーオンn5に対応する音節を追加してもよい。このように、CPU10は、仮設定したループ開始位置に対応する音節の前、及びループ終了位置に対応する音節の後、の少なくともいずれかに音節を追加し、該追加した音節を含めて前記ループ区間を設定する。音節の追加により表現力を高めることができる。追加する音節は、「ハイ」等の合いの手に似たものであってもよい。なお、音節追加に伴って、表示器15への歌詞表示にも自動的に反映されるようにしてもよい。追加する音節数は複数でもよい。
本実施の形態によれば、ループ再生においては、CPU10は、ループ区間内の音節情報に含まれる音節の少なくとも1つを、発音制御パラメータに基づき且つ通常再生時とは異なる発音態様で発音させる(第1可変態様)。あるいは、CPU10は、ループ区間内の音節情報に含まれる音節を、第2の発音制御パラメータ34aに従った発音態様で発音させる(第2可変態様)。あるいは、CPU10は、ループ区間を設定する際に音節を追加する。これらにより、ループ再生時の表現力を高めることができる。
なお、第1、第2、第3可変態様を適宜組み合わせて適用してもよい。ループ再生における発音態様のタイプを決めるルールを選択することについては、第2、第3可変態様にも適用可能である。また、ループ区間のループ再生において、CPU10は、少なくとも1回目の再生と2回目の再生とで発音態様を変化させてもよい。例えば、第1、第2可変態様では、毎回、音量をアップさせる等の制御が考えられる。第3可変態様では、追加する音節数や追加位置を毎回異ならせてもよい。これらにより、表現力を一層高めることができる。なお、本実施の形態では、ループ区間の設定方法は問わない。
なお、本発明を達成するためのソフトウェアによって表される制御プログラムを記憶した記憶媒体を、本装置に読み出すことによって同様の効果を奏するようにしてもよく、その場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、プログラムコードを伝送媒体等を介して供給してもよく、その場合は、プログラムコード自体が本発明を構成することになる。
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。