図面 (/)
課題
解決手段
概要
背景
ラップと呼ばれる歌唱法がある。ラップは、音楽のリズム、韻律、又はメロディーラインの時間進行に合わせて、話し言葉などの内容を歌唱してゆく音楽手法の1つである。ラップでは特に、抑揚を即興的に変化させることにより、個性豊かな音楽表現を行うことができる。
このように、ラップは、歌詞があり、フロー(リズム、韻律、メロディーライン)があるもので、それを歌唱しようとすると非常にハードルが高い。ラップにおける上記フローに含まれる各音楽要素のうち少なくともいくつかが自動化され、それに合わせて残りの音楽要素を電子楽器等で演奏できれば、初心者等でもラップを身近なものとすることができる。
歌唱を自動化するための第1の従来技術として、録音された音声の素片を接続し加工する素片連結型の合成方式により音声合成された歌声を出力する電子楽器が知られている(例えば特許文献1)。
概要
ラップ等の演奏を可能とする情報処理装置、方法、及びプログラム、並びにそのような情報処理装置を備える電子楽器に関し、楽器や歌唱の演奏において所望の抑揚を簡単な操作で付加可能とする。ベンド処理部320は、ベンドスライダ105及びベンドスイッチ106によって、自動進行するラップ音声などの音楽情報に対して、拍などの所定の進行単位毎にその進行単位の期間内で変化する音楽情報のベンドカーブなどの抑揚パターンを、ユーザに例えばリアルタイムで指定させる。ベンド処理部320は、拍などの進行単位毎に、その進行単位に対して指定された抑揚パターンに対応するピッチベンドなどの抑揚を、音声合成部302で自動演奏されているラップ音などに付加する。
目的
本発明の目的は、楽器や歌唱の演奏において所望の抑揚を簡単な操作で付加可能とすることにある
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
請求項1
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子と、少なくとも1つのプロセッサと、を備え、前記少なくとも1つのプロセッサは、前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定し、決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力する、情報処理装置。
請求項2
前記複数の操作子は、前記第1操作子と隣接して配置される第2操作子を有し、前記第2操作子は、前記曲データに含まれる前記第2タイミングから第3タイミングの前までの第2区間が対応付けられ、前記少なくとも1つのプロセッサは、前記第2操作子へのユーザ操作に基づいて、前記第2区間に付与する抑揚のパターンを決定し、決定された前記パターンの抑揚で、前記第2区間に含まれるデータが示す歌詞が歌われるように、前記第2区間に含まれるデータを出力する、請求項1に記載の情報処理装置。
請求項3
前記少なくとも1つのプロセッサは、前記第1区間の歌声の最後のピッチと前記第2区間の歌声の最初のピッチとが連続的に繋がるように、少なくとも前記第1区間に含まれるデータの出力及び、前記第2区間に含まれるデータの出力のいずれかを調整する、請求項2に記載の情報処理装置。
請求項4
或る1曲の曲データのなかの互いに重複しない部分データがそれぞれ対応付けられる区間数は、前記複数の操作子の数より多く、前記少なくとも1つのプロセッサは、再生される前記曲データの進行に合わせて、前記複数の操作子に対応付ける区間を変更する、請求項1から3のいずれかに記載の情報処理装置。
請求項5
学習用歌詞データ及び学習用音高データを含む楽譜データと、前記楽譜データに対応する或る歌い手の歌声データと、を用いた機械学習処理により得られた学習済み音響モデルであって、任意の歌詞データと、任意の音高データと、を入力することにより、前記或る歌い手の歌声の音響特徴量を示すデータを出力する学習済み音響モデルを記憶しているメモリを備え、前記少なくとも1つのプロセッサは、前記学習済み音響モデルへの前記任意の歌詞データと前記任意の音高データとの入力に応じて前記学習済み音響モデルが出力した前記或る歌い手の歌声の音響特徴量を示すデータに基づいて、前記或る歌い手の歌声を推論し、推論された前記或る歌い手の前記第1区間の歌声に、決定された前記パターンの抑揚がつくように、前記第1区間に含まれるデータを出力する、請求項1から4のいずれかに記載の情報処理装置。
請求項6
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子と、複数の鍵を含む鍵盤と、少なくとも1つのプロセッサと、を備え、前記少なくとも1つのプロセッサは、前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定し、決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力する、電子楽器。
請求項7
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子を備える情報処理装置のコンピュータに、前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定させ、決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力させる、方法。
請求項8
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子を備える情報処理装置のコンピュータに、前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定させ、決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力させる、プログラム。
技術分野
背景技術
0002
ラップと呼ばれる歌唱法がある。ラップは、音楽のリズム、韻律、又はメロディーラインの時間進行に合わせて、話し言葉などの内容を歌唱してゆく音楽手法の1つである。ラップでは特に、抑揚を即興的に変化させることにより、個性豊かな音楽表現を行うことができる。
0003
このように、ラップは、歌詞があり、フロー(リズム、韻律、メロディーライン)があるもので、それを歌唱しようとすると非常にハードルが高い。ラップにおける上記フローに含まれる各音楽要素のうち少なくともいくつかが自動化され、それに合わせて残りの音楽要素を電子楽器等で演奏できれば、初心者等でもラップを身近なものとすることができる。
先行技術
0005
特開平9−050287号公報
発明が解決しようとする課題
0006
しかし、上記従来技術では、合成音声による歌唱の自動進行に合わせて電子楽器上で音高指定を行うことはできるが、ラップ特有の抑揚をリアルタイムで制御することはできなかった。また、ラップに限らず、楽器演奏において高度な抑揚を付けることは、従来困難であった。
0007
そこで、本発明の目的は、楽器や歌唱の演奏において所望の抑揚を簡単な操作で付加可能とすることにある。
課題を解決するための手段
0008
態様の一例の情報処理装置では、曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子と、少なくとも1つのプロセッサと、を備え、少なくとも1つのプロセッサは、第1操作子へのユーザ操作に基づいて、第1区間に付与する抑揚のパターンを決定し、決定されたパターンの抑揚で、第1区間に含まれるデータが示す歌詞が歌われるように、第1区間に含まれるデータを出力する。
発明の効果
0009
本発明によれば、楽器や歌唱の演奏において所望の抑揚を簡単な操作で付加することが可能となる。
図面の簡単な説明
0010
電子鍵盤楽器の一実施形態の外観例を示す図である。
電子鍵盤楽器の制御システムの一実施形態のハードウェア構成例を示すブロック図である。
実施形態の主要機能を示すブロック図である。
実施形態におけるベンドスライダ、ベンドスイッチ、及びベンドカーブ指定動作の説明図である。
実施形態のデータ構成例を示す図である。
実施形態におけるベンドカーブ設定テーブルのデータ構成例を示す図である。
実施形態におけるベンドカーブテーブルのデータ構成例を示す図である。
本実施形態における電子楽器の制御処理例を示すメインフローチャートである。
初期化処理、テンポ変更処理、及びラップ開始処理の詳細例を示すフローチャートである。
スイッチ処理の詳細例を示すフローチャートである。
ベンドカーブ設定処理の詳細例を示すフローチャートである。
自動演奏割込み処理の詳細例を示すフローチャートである。
ラップ再生処理の詳細例を示すフローチャートである。
ベンド処理の詳細例を示すフローチャートである。
実施例
0011
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図1は、情報処理装置としての自動演奏装置を搭載した電子鍵盤楽器の一実施形態100の外観例を示す図である。電子鍵盤楽器100は、演奏操作子としての複数の鍵からなる鍵盤101と、音量の指定、ラップ再生のテンポ設定、ラップ再生開始、伴奏再生等の各種設定を指示する第1のスイッチパネル102と、ラップや伴奏の選曲や音色の選択等を行う第2のスイッチパネル103と、ラップ再生時の歌詞、楽譜や各種設定情報を表示するLCD104(Liquid Crystal Display:液晶ディスプレイ)と、発声されるラップ音声の例えば音高に対して抑揚パターンであるベンドカーブを指定するベンドスライダ105と、ベンドスライダ105の指定の有効/無効を指定するベンドスイッチ106を備える。また、電子鍵盤楽器100は、特には図示しないが、演奏により生成された楽音を放音するスピーカを裏面部、側面部、又は背面部等に備える。
0012
図2は、図1の自動演奏装置を搭載した電子鍵盤楽器100の制御システム200の一実施形態のハードウェア構成例を示す図である。図2において、制御システム200は、CPU(中央演算処理装置)201、ROM(リードオンリーメモリ)202、RAM(ランダムアクセスメモリ)203、音源LSI(大規模集積回路)204、音声合成LSI205、図1の鍵盤101、第1のスイッチパネル102、第2のスイッチパネル103、ベンドスライダ105、及びベンドスイッチ106が接続されるキースキャナ206、及び図1のLCD104が接続されるLCDコントローラ208が、それぞれシステムバス209に接続されている。また、CPU201には、自動演奏のシーケンスを制御するためのタイマ210が接続される。更に、音源LSI204及び音声合成LSI205からそれぞれ出力される楽音出力データ218及びラップ音声出力データ217は、D/Aコンバータ211、212によりそれぞれアナログ楽音出力信号及びアナログラップ音声出力信号に変換される。アナログ楽音出力信号及びアナログラップ音声出力信号は、ミキサ213で混合され、その混合信号がアンプ214で増幅された後に、特には図示しないスピーカ又は出力端子から出力される。
0013
CPU201は、RAM203をワークメモリとして使用しながらROM202に記憶された自動演奏制御プログラムを実行することにより、図1の電子鍵盤楽器100の制御動作を実行する。また、ROM202は、上記制御プログラム及び各種固定データのほか、歌詞データ及び伴奏データを含む曲データを記憶する。
0015
音源LSI204は、CPU201からの発音制御指示に従って、例えば特には図示しない波形ROMから楽音波形データを読み出し、D/Aコンバータ211に出力する。音源LSI204は、同時に最大256ボイスを発振させる能力を有する。
0016
音声合成LSI205は、CPU201から、歌詞のテキストデータと音高に関する情報をラップデータ215として与えられると、それに対応するラップ音声の音声データを合成し、D/Aコンバータ212に出力する。
0017
キースキャナ206は、図1の鍵盤101の押鍵/離鍵状態、第1のスイッチパネル102、第2のスイッチパネル103、ベンドスライダ105、及びベンドスイッチ106のスイッチ操作状態を定常的に走査し、CPU201に割り込みを掛けて状態変化を伝える。
0019
図3は、本実施形態における主要機能を示すブロック図である。ここで、音声合成部302は、図2の音声合成LSI205が実行する一機能として電子鍵盤楽器100に内蔵される。この音声合成部302は、後述するラップ再生処理により図2のCPU201から指示されるラップデータ215を入力することにより、ラップ音声出力データ217を合成し出力する。
0020
音声学習部301は例えば、図3に示されるように、図1の電子鍵盤楽器100とは別に外部に存在するサーバコンピュータ300が実行する一機能として実装されてよい。或いは、図3には図示していないが、音声学習部301は、図2の音声合成LSI205の処理能力に余裕があれば、音声合成LSI205が実行する一機能として電子鍵盤楽器100に内蔵されてもよい。音源LSI204は、図2に示されるものである。
0021
ベンド処理部320は、図2のCPU201が後述するベンドカーブ設定処理(図11参照)及びベンド処理(図14参照)のプログラムを実行する機能であり、図1又は図2に示されるベンドスライダ105及びベンドスイッチ106の状態を図2に示されるキースキャナ206からシステムバス209を介して取り込むことにより、ラップ音声の例えば音高に対して抑揚パターンであるベンドカーブの変化を付ける処理を実行する。
0025
音声学習部301において、学習用ラップ音声データ312としては、例えば複数のラップ曲を或るラップ歌手が歌った音声を録音したものが使用される。また、学習用ラップデータ311としては、各ラップ曲の歌詞テキストが用意される。
0026
学習用テキスト解析部303は、歌詞テキストを含む学習用ラップデータ311を入力してそのデータを解析する。この結果、学習用テキスト解析部303は、学習用ラップデータ311に対応する音素、音高等を表現する離散数値系列である学習用言語特徴量系列313を推定して出力する。
0027
学習用音響特徴量抽出部304は、上記学習用ラップデータ311の入力に合わせてその学習用ラップデータ311に対応する歌詞テキストを或るラップ歌手が歌うことによりマイク等を介して集録された学習用ラップ音声データ312を入力して分析する。この結果、学習用音響特徴量抽出部304は、学習用ラップ音声データ312に対応する音声の特徴を表す学習用音響特徴量系列314を抽出して出力する。
0028
モデル学習部305は、学習用言語特徴量系列313と、音響モデルとから、学習用音響特徴量系列314が生成される確率を最大にするような音響モデルを、機械学習により推定する。即ち、テキストである言語特徴量系列と音声である音響特徴量系列との関係が、音響モデルという統計モデルによって表現される。
0030
この学習結果315(モデルパラメータ)は例えば、図3に示されるように、図1の電子鍵盤楽器100の工場出荷時に、図2の電子鍵盤楽器100の制御システムのROM202に記憶され、電子鍵盤楽器100のパワーオン時に、図2のROM202から音声合成LSI205内の後述する音響モデル部306にロードされてよい。或いは、学習結果315は例えば、図3に示されるように、演奏者が電子鍵盤楽器100の第2のスイッチパネル103を操作することにより、特には図示しないインターネットやUSB(Universal Serial Bus)ケーブル等のネットワークからネットワークインタフェース219を介して、音声合成LSI205内の後述する音響モデル部306にダウンロードされてもよい。
0031
音声合成LSI205が実行する機能である音声合成部302は、テキスト解析部307と音響モデル部306と発声モデル部308とを含む。音声合成部302は、歌詞テキストを含むラップデータ215に対応するラップ音声出力データ217を、音響モデル部306に設定された音響モデルという統計モデルを用いて予測することにより合成する、統計的音声合成処理を実行する。
0032
テキスト解析部307は、自動演奏に合わせた演奏者の演奏の結果として、図2のCPU201より指定される歌詞の音素、音高等に関する情報を含むラップデータ215を入力し、そのデータを解析する。この結果、テキスト解析部307は、ラップデータ215に対応する音素、品詞、単語等を表現する言語特徴量系列316を解析して出力する。
0033
音響モデル部306は、言語特徴量系列316を入力することにより、それに対応する音響特徴量系列317を推定して出力する。即ち音響モデル部306は、テキスト解析部307から入力する言語特徴量系列316と、モデル学習部305での機械学習により学習結果315として設定された音響モデルとに基づいて、音響特徴量系列317が生成される確率を最大にするような音響特徴量系列317の推定値を推定する。
0034
発声モデル部308は、音響特徴量系列317を入力することにより、CPU201より指定される歌詞テキストを含むラップデータ215に対応するラップ音声出力データ217を生成する。ラップ音声出力データ217は、図2のD/Aコンバータ212からミキサ213及びアンプ214を介して出力され、特には図示しないスピーカから放音される。
0035
学習用音響特徴量系列314や音響特徴量系列317で表される音響特徴量は、人間の声道をモデル化したスペクトル情報と、人間の声帯をモデル化した音源情報とを含む。スペクトルパラメータとしては例えば、メルケプストラムや線スペクトル対(Line Spectral Pairs:LSP)等を採用できる。音源情報としては、人間の音声のピッチ周波数を示す基本周波数(F0)及びパワー値を採用できる。発声モデル部308は、音源生成部309と合成フィルタ部310とを含む。音源生成部309は、人間の声帯をモデル化した部分であり、音響モデル部306から入力する音源情報319の系列を順次入力することにより、例えば、音源情報319に含まれる基本周波数(F0)及びパワー値で周期的に繰り返されるパルス列(有声音音素の場合)、又は音源情報319に含まれるパワー値を有するホワイトノイズ(無声音音素の場合)、或いはそれらが混合された信号からなる音源信号を生成する。合成フィルタ部310は、人間の声道をモデル化した部分であり、音響モデル部306から順次入力するスペクトル情報318の系列に基づいて声道をモデル化するデジタルフィルタを形成し、音源生成部309から入力する音源信号を励振源信号として、デジタル信号のラップ音声出力データ217を生成し出力する。
0036
学習用ラップ音声データ312に対するサンプリング周波数は、例えば16KHz(キロヘルツ)である。また、学習用音響特徴量系列314及び音響特徴量系列317に含まれるスペクトルパラメータとして、例えばメルケプストラム分析処理により得られるメルケプストラムパラメータが採用される場合、その更新フレーム周期は、例えば5msec(ミリ秒)である。更に、メルケプストラム分析処理の場合、分析窓長は25msec、窓関数はブラックマン窓、分析次数は24次である。
0037
次に、図3の音声学習部301及び音声合成部302からなる統計的音声合成処理の第1の実施形態について説明する。統計的音声合成処理の第1の実施形態では、音響モデル部306に設定される学習結果315(モデルパラメータ)によって表現される音響モデルとして、前述した非特許文献1、及び下記非特許文献2に記載のHMM(Hidden Markov Model:隠れマルコフモデル)を用いる。
0038
(非特許文献2)
酒向慎司、才野慶二郎、南角吉彦、徳田恵一、北村正「声質と歌唱スタイルを自動学習可能な歌声合成システム」情報処理学会研究報告音楽情報科学(MUS)2008(12(2008−MUS−074)),pp.39−44,2008−02−08
0039
統計的音声合成処理の第1の実施形態では、ユーザが或るメロディーにそった歌詞を発声する際、声帯の振動や声道特性のラップ音声の特徴パラメータがどのような時間変化をしながら発声されるかが、HMM音響モデルによって学習される。より具体的には、HMM音響モデルは、学習用のラップデータから求めたスペクトル、基本周波数、およびそれらの時間構造を音素単位でモデル化したものである。
0040
次に、図3の音声学習部301及び音声合成部302からなる統計的音声合成処理の第2の実施形態について説明する。統計的音声合成処理の第2の実施形態では、言語特徴量系列316から音響特徴量系列317を予測するために、音響モデル部306がディープニューラルネットワーク(Deep Neural Network:DNN)により実装される。これに対応して、音声学習部301内のモデル学習部305は、言語特徴量から音響特徴量へのDNN内の各ニューロンの非線形変換関数を表すモデルパラメータを学習し、そのモデルパラメータを学習結果315として音声合成部302内の音響モデル部306のDNNに出力する。
0041
図3で説明した統計的音声合成処理を利用した図1及び図2の電子鍵盤楽器100の実施形態のラップを含む曲の自動演奏動作について、以下に詳細に説明する。図4は、本実施形態における図1又は図2のベンドスライダ105及びベンドスイッチ106を用いたベンドカーブ指定動作の説明図である。本実施形態では、自動進行するラップ曲に対して、例えば拍(所定の進行単位)毎に各拍の期間内で変化するラップの音高の抑揚パターンであるベンドカーブを指定することができる。
0042
このベンドカーブの指定及びそれに基づくベンド付加は、ユーザが、例えば連続する16拍(4/4拍子の曲の場合は4小節)毎に、指定手段である図4に示されるベンドスライダ105のボリュームを用いて、自動進行するラップ曲に対してリアルタイムで実行することができる。ベンドスライダ105は、例えば16個(図4の例では8個のみ示されている)のスライダを備え、左から右に順に、各スライダはそれぞれ現在自動進行中のラップ曲のこれから実行される16拍分の各拍のベンドカーブの種類を指定することができる。指定されるベンドカーブとしては複数種類のベンドカーブパターン401を用意することができる(図4の例ではベンドスライダ105の左側に#0から#3までの4パターンのベンドカーブパターン401が例示されている)。ユーザは、ベンドスライダ105の16個のスライダ毎に、各スライダのスライド位置として複数のベンドカーブパターン401のうちの1つをそれぞれ指定することができる。
0043
例えば16個のスライダからなるベンドスライダ105の上部には、指定手段である例えば16個のスイッチからなるベンドスイッチ106が配置されている。ベンドスイッチ106の各スイッチはそれぞれ、夫々の下部に配置されているベンドスライダ105の各スライダに対応している。ユーザは、上記16拍の任意の拍に対して、ベンドスイッチ106内の対応するスイッチをオフ操作することにより、ベンドスライダ105内の対応するスライダの設定を無効にすることができる。これにより、その拍に対しては、ベンド効果がかからないようにすることができる。
0044
以上のベンドスライダ105及びベンドスイッチ106による連続する16拍の各拍に対するベンドカーブの設定は、図3で説明したベンド処理部320によって取り込まれる。付加手段として動作するベンド処理部320は、音声合成部302(図2、図3参照)において自動進行しているラップ曲の自動演奏において、連続する各16拍(4/4拍子の場合は各4小節)分の各拍毎に、ベンドスライダ105及びベンドスイッチ106により指定されたベンドカーブに対応するラップ音声の音高の抑揚を、音声合成部302に対して指示する。
0045
具体的には、ベンド処理部320は、拍の進行毎に、その拍に対して指定されているベンドカーブに基づいて、音高の変更情報を音声合成部302に対して指定する。1拍内のピッチベンドの時間分解能は例えば48であり、ベンド処理部320は、1拍を48分割したタイミング毎に、音声合成部302に対して、指定されているベンドカーブに対応する音高変更情報を音声合成部302に対して指定する。図3で説明した音声合成部302は、音響モデル部306から出力される音源情報319の音高を、ベンド処理部320から指定された音高変更情報に基づいて変更し、その変更された音源情報319を音源生成部309に供給する。
0046
以上のようにして、本実施形態では、ラップ曲の例えば歌詞と時間進行は自動演奏にまかせて、ユーザは進行単位(例えば拍)毎にラップらしい例えば音高のベンドカーブの抑揚パターンを指定することが可能となり、ラップ演奏を手軽に楽しむことが可能となる。
0047
特にこの場合、ユーザは、例えば16拍分の拍の夫々に対応するベンドスライダ105及びベンドスイッチ106を用いて、自動進行中の自動演奏の16拍毎に、ラップ音声の音高のための拍毎のベンドカーブを、リアルタイムで指定することができ、ラップ曲を自動演奏しながら自分のラップ演奏に加わることが可能となる。
0048
なお、ユーザは、例えば拍毎のベンドカーブの指定を、自動演奏のラップ曲に対応させて予め指定し記憶し、ベンド処理部320は、ラップ曲の自動演奏の実行時に、そのベンドカーブの指定を読み込んで、指定されたベンドカーブに対応するラップ音声の音高の抑揚を、音声合成部302に対して指示するようにすることもできる。
0049
これにより、ユーザは、ラップ曲に対するラップ音声の音高の抑揚付けを、じっくりと行うことが可能となる。
0050
図5は、本実施形態において、図2のROM202からRAM203に読み込まれる曲データのデータ構成例を示す図である。このデータ構成例は、MIDI(Musical Instrument Digital Interface)用ファイルフォーマットの一つであるスタンダードMIDIファイルのフォーマットに準拠している。この曲データは、チャンクと呼ばれるデータブロックから構成される。具体的には、曲データは、ファイルの先頭にあるヘッダチャンクと、それに続く歌詞パート用の歌詞データが格納されるトラックチャンク1と、伴奏パート用の演奏データが格納されるトラックチャンク2とから構成される。
0051
ヘッダチャンクは、ChunkID、ChunkSize、FormatType、NumberOfTrack、及びTimeDivisionの4つの値からなる。ChunkIDは、ヘッダチャンクであることを示す"MThd"という半角4文字に対応する4バイトのアスキーコード「4D 54 68 64」(数字は16進数)である。ChunkSizeは、ヘッダチャンクにおいて、ChunkIDとChunkSizeを除く、FormatType、NumberOfTrack、及びTimeDivisionの部分のデータ長を示す4バイトデータであり、データ長は6バイト:「00 00 00 06」(数字は16進数)に固定されている。FormatTypeは、本実施形態の場合、複数トラックを使用するフォーマット1を意味する2バイトのデータ「00 01」(数字は16進数)である。NumberOfTrackは、本実施形態の場合、歌詞パートと伴奏パートに対応する2トラックを使用することを示す2バイトのデータ「00 02」(数字は16進数)である。TimeDivisionは、4分音符あたりの分解能を示すタイムベース値を示すデータであり、本実施形態の場合、10進法で480を示す2バイトのデータ「01 E0」(数字は16進数)である。
0052
トラックチャンク1、2はそれぞれ、ChunkID、ChunkSizeと、DeltaTime_1[i]及びEvent_1[i](トラックチャンク1/歌詞パートの場合)又はDeltaTime_2[i]及びEvent_2[i](トラックチャンク2/伴奏パートの場合)からなる演奏データ組(0≦i≦L:トラックチャンク1/歌詞パートの場合、0≦i≦M:トラックチャンク2/伴奏パートの場合)とからなる。ChunkIDは、トラックチャンクであることを示す"MTrk"という半角4文字に対応する4バイトのアスキーコード「4D 54 72 6B」(数字は16進数)である。ChunkSizeは、各トラックチャンクにおいて、ChunkIDとChunkSizeを除く部分のデータ長を示す4バイトデータである。
0053
DeltaTime_1[i]は、その直前のEvent_1[i−1]の実行時刻からの待ち時間(相対時間)を示す1〜4バイトの可変長データである。同様に、DeltaTime_2[i]は、その直前のEvent_2[i−1]の実行時刻からの待ち時間(相対時間)を示す1〜4バイトの可変長データである。Event_1[i]は、トラックチャンク1/歌詞パートにおいて、ラップの歌詞の発声タイミングと音高を指示するメタイベントである。Event_2[i]は、トラックチャンク2/伴奏パートにおいて、ノートオン又はノートオフを指示するMIDIイベント、又は拍子を指示するメタイベントである。トラックチャンク1/歌詞パートに対して、各演奏データ組DeltaTime_1[i]及びEvent_1[i]において、その直前のEvent_1[i−1]の実行時刻からDeltaTime_1[i]だけ待った上でEvent_1[i]が実行されることにより、歌詞の発声進行が実現される。一方、トラックチャンク2/伴奏パートに対して、各演奏データ組DeltaTime_2[i]及びEvent_2[i]において、その直前のEvent_2[i−1]の実行時刻からDeltaTime_2[i]だけ待った上でEvent_2[i]が実行されることにより、自動伴奏の進行が実現される。
0054
図6は、ベンドスライダ105、ベンドスイッチ106(図1、図2、図4参照)、及びベンド処理部320(図3参照)によって指定される拍毎のベンドカーブの設定を記憶するベンドカーブ設定テーブル600のデータ構成例を示す図である。このベンドカーブ設定テーブル600は、例えば図2のRAM203に記憶される。ベンドカーブ設定テーブル600は、連続する16拍毎に、小節番号と拍番号と指定されたベンドカーブ番号を記憶する。例えば、最初の連続する16拍であるデータ群601(#0)には、小節番号0〜3と、各小節内の拍番号0〜3と、ベンドカーブ番号0〜3(図4の401(#0)〜401(#3)に対応)が記憶される。なお、ベンドスイッチ106によりオフされた拍については、ベンドカーブ番号はNull値(図6では「−」で示される)となる。
0055
図7は、図4の401(#0)〜401(#3)に対応するベンドカーブの抑揚パターンに対応する例えば4パターンのベンドカーブを記憶するベンドカーブテーブル700を示す図である。このベンドカーブテーブル700は、例えば工場設定により図2のROM202に記憶される。図7において、401(#0)、401(#1)、401(#2)、及び401(#3)はそれぞれ、図4に示されるベンドカーブのパターンに対応し、例えばROM202上でのそれぞれの先頭の記憶アドレスは、BendCurve[0]、BendCurve[1]、BendCurve[2]、及びBendCurve[3]である。Rは、ベンドカーブの分解能であり、例えばR=48である。各ベンドカーブにおいて、アドレスオフセットは、それぞれの上記先頭の記憶アドレスからのオフセット値を示しており、0〜R−1(例えば0〜47)までのオフセット値毎にそれぞれ記憶エリアがあり、各記憶エリアにはベンド値が記憶される。このベンド値は、変更前の音高値に対する倍率値であり、例えば、値「1.00」の場合は音高変化がないことを示しており、値「2.00」の場合は音高が2倍にされることを示している。
0056
図8は、本実施形態における電子楽器の制御処理例を示すメインフローチャートである。この制御処理は例えば、図2のCPU201が、ROM202からRAM203にロードされた制御処理プログラムを実行する動作である。
0058
この繰返し処理において、CPU201はまず、スイッチ処理を実行する(ステップS802)。ここでは、CPU201は、図2のキースキャナ206からの割込みに基づいて、図1の第1のスイッチパネル102、第2のスイッチパネル103、ベンドスライダ105、又はベンドスイッチ106の各スイッチ操作に対応する処理を実行する。
0059
次に、CPU201は、図2のキー・スキャナ206からの割込みに基づいて図1の鍵盤101の何れかの鍵が操作されたか否かを判定して処理する鍵盤処理を実行する(ステップS803)。ここでは、CPU201は、演奏者による何れかの鍵の押鍵又は離鍵の操作に応じて、図2の音源LSI204に対して、発音開始又は発音停止を指示する楽音制御データ216を出力する。
0060
次に、CPU201は、図1のLCD104に表示すべきデータを処理し、そのデータを、図2のLCDコントローラ208を介してLCD104に表示する表示処理を実行する(ステップS804)。LCD104に表示されるデータとしては、例えば演奏されるラップ音声出力データ217に対応する歌詞とその歌詞に対応するメロディの楽譜や、各種設定情報がある。
0061
次に、CPU201は、ラップ再生処理を実行する(ステップS805)。この処理においては、CPU201が、演奏者の演奏に基づいて図5で説明した制御処理を実行し、ラップデータ215を生成して音声合成LSI205に出力する。
0063
最後にCPU201は、演奏者が特には図示しないパワーオフスイッチを押してパワーオフしたか否かを判定する(ステップS807)。ステップS807の判定がNOならば、CPU201は、ステップS802の処理に戻る。ステップS807の判定がYESならば、CPU201は、図8のフローチャートで示される制御処理を終了し、電子鍵盤楽器100の電源を切る。
0064
図9(a)、(b)、及び(c)はそれぞれ、図8のステップS801の初期化処理、図8のステップS802のスイッチ処理における後述する図10のステップS1002のテンポ変更処理、及び同じく図10のステップS1006のラップ開始処理の詳細例を示すフローチャートである。
0065
まず、図8のステップS801の初期化処理の詳細例を示す図9(a)において、CPU201は、TickTimeの初期化処理を実行する。本実施形態において、歌詞の進行及び自動伴奏は、TickTimeという時間を単位として進行する。図5の曲データのヘッダチャンク内のTimeDivision値として指定されるタイムベース値は4分音符の分解能を示しており、この値が例えば480ならば、4分音符は480TickTimeの時間長を有する。また、図5の曲データのトラックチャンク内の待ち時間DeltaTime_1[i]値及びDeltaTime_2[i]値も、TickTimeの時間単位によりカウントされる。ここで、1TickTimeが実際に何秒になるかは、曲データに対して指定されるテンポによって異なる。今、テンポ値をTempo[ビート/分]、上記タイムベース値をTimeDivisionとすれば、TickTimeの秒数は、下記(1)式により算出される。
0066
TickTime[秒]=60/Tempo/TimeDivision (1)
0067
そこで、図9(a)のフローチャートで例示される初期化処理において、CPU201はまず、上記(10)式に対応する演算処理により、TickTime[秒]を算出する(ステップS901)。なお、テンポ値Tempoは、初期状態では図2のROM202に所定の値、例えば60[ビート/秒]が記憶されているとする。或いは、不揮発性メモリに、前回終了時のテンポ値が記憶されていてもよい。
0068
次に、CPU201は、図2のタイマ210に対して、ステップS901で算出したTickTime[秒]によるタイマ割込みを設定する(ステップS902)。この結果、タイマ210において上記TickTime[秒]が経過する毎に、CPU201に対して歌詞進行、自動伴奏、及びベンド処理のための割込み(以下「自動演奏割込み」と記載)が発生する。従って、この自動演奏割込みに基づいてCPU201で実行される自動演奏割込み処理(後述する図12)では、1TickTime毎に歌詞進行及び自動伴奏を進行させる制御処理が実行されることになる。
0069
また、後述するベンド処理は、1TickTimeをD分周した時間単位で実行される。このDは、図3で説明した、4分音符あたりの分解能を示すタイムベース値TimeDivisionと、図7で説明したベンドカーブテーブル700の分解能Rを用いて、下記(2)式により算出される。
0070
D=TimeDivision/R (2)
0071
例えば前述のように、4分音符(4/4拍子の場合の1拍)が480TickTimeであり、R=48であるる場合には、D=480/R=480/48=10TickTime毎にベンド処理が実行されることになる。
0072
続いて、CPU201は、図2のRAM203の初期化等のその他初期化処理を実行する(ステップS903)。その後、CPU201は、図9(a)のフローチャートで例示される図8のステップS801の初期化処理を終了する。
0074
CPU201はまず、図1の第1のスイッチパネル102内のテンポ変更スイッチにより歌詞進行及び自動伴奏のテンポが変更されたか否かを判定する(ステップS1001)。その判定がYESならば、CPU201は、テンポ変更処理を実行する(ステップS1002)。この処理の詳細は、図9(b)を用いて後述する。ステップS1001の判定がNOならば、CPU201は、ステップS1002の処理はスキップする。
0075
次に、CPU201は、図1の第2のスイッチパネル103において何れかのラップ曲が選曲されたか否かを判定する(ステップS1003)。その判定がYESならば、CPU201は、ラップ曲読込み処理を実行する(ステップS1004)。この処理は、図5で説明したデータ構造を有する曲データを、図2のROM202からRAM203に読み込む処理である。これ以降、図5に例示されるデータ構造内のトラックチャンク1又は2に対するデータアクセスは、RAM203に読み込まれた曲データに対して実行される。ステップS1003の判定がNOならば、CPU201は、ステップS1004の処理はスキップする。
0076
続いて、CPU201は、図1の第1のスイッチパネル102においてラップ開始スイッチが操作されたか否かを判定する(ステップS1005)。その判定がYESならば、CPU201は、ラップ開始処理を実行する(ステップS1006)。この処理の詳細は、図9(c)を用いて後述する。ステップS1005の判定がNOならば、CPU201は、ステップS1006の処理はスキップする。
0077
更に、CPU201は、図1の第1のスイッチパネル102においてベンドカーブ設定開始スイッチが操作されたか否かを判定する(ステップS1007)。その判定がYESならば、CPU201は、図1のベンドスライダ105及びベンドスイッチ106によるベンドカーブ設定処理を実行する(ステップS1008)。この処理の詳細は、図11を用いて後述する。ステップS1007の判定がNOならば、CPU201は、ステップS1008の処理はスキップする。
0078
最後に、CPU201は、図1の第1のスイッチパネル102又は第2のスイッチパネル103においてその他のスイッチが操作されたか否かを判定し、各スイッチ操作に対応する処理を実行する(ステップS1009)。その後、CPU201は、図10のフローチャートで例示される図8のステップS802のスイッチ処理を終了する。
0079
図9(b)は、図10のステップS1002のテンポ変更処理の詳細例を示すフローチャートである。前述したように、テンポ値が変更されるとTickTime[秒]も変更になる。図9(b)のフローチャートでは、CPU201は、このTickTime[秒]の変更に関する制御処理を実行する。
0080
まず、CPU201は、図8のステップS801の初期化処理で実行された図9(a)のステップS901の場合と同様にして、前述した(10)式に対応する演算処理により、TickTime[秒]を算出する(ステップS911)。なお、テンポ値Tempoは、図1の第1のスイッチパネル102内のテンポ変更スイッチにより変更された後の値がRAM203等に記憶されているものとする。
0081
次に、CPU201は、図8のステップS801の初期化処理で実行された図9(a)のステップS902の場合と同様にして、図2のタイマ210に対して、ステップS911で算出したTickTime[秒]によるタイマ割込みを設定する(ステップS912)。その後、CPU201は、図9(b)のフローチャートで例示される図10のステップS1002のテンポ変更処理を終了する。
0083
まず、CPU201は、自動演奏の進行において、TickTimeを単位として、自動演奏開始時からの経過時間を示すためのRAM203上の変数ElapseTimeの値を0に初期設定する。また、同じくTickTimeを単位として、直前のイベントの発生時刻からの相対時間をカウントするためのRAM203上の変数DeltaT_1(トラックチャンク1)及びDeltaT_2(トラックチャンク2)の値を共に0に初期設定する。次に、CPU201は、図5に例示される曲データのトラックチャンク1内の演奏データ組DeltaTime_1[i]及びEvent_1[i](1≦i≦L−1)の夫々iの値を指定するためのRAM203上の変数AutoIndex_1と、同じくトラックチャンク2内の演奏データ組DeltaTime_2[i]及びEvent_2[i](1≦i≦M−1)の夫々iを指定するためのRAM203上の変数AutoIndex_2の各値を共に0に初期設定する。また、TickTimeを単位とする分周時間を示すRAM203上の変数DividingTimeの値を、前述の(2)式で算出される値Dを用いてD−1に設定する。更に、図7で説明したベンドカーブテーブル700上のオフセットアドレスを示すRAM203上の変数BendAdressOffsetの値を、前述した同じく図7で説明した分解能Rを用いて、R−1の値に初期設定する。例えばR−1=48−1=47である(以上、ステップS921)。これにより、図5の例では、初期状態としてまず、トラックチャンク1内の先頭の演奏データ組DeltaTime_1[0]とEvent_1[0]、及びトラックチャンク2内の先頭の演奏データ組DeltaTime_2[0]とEvent_2[0]がそれぞれ参照される。
0084
次に、CPU201は、現在のラップ位置を指示するRAM203上の変数SongIndexの値を0に初期設定する(ステップS922)。
0085
更に、CPU201は、歌詞及び伴奏の進行をするか(=1)しないか(=0)を示すRAM203上の変数SongStartの値を1(進行する)に初期設定する(ステップS923)。
0086
その後、CPU201は、演奏者が、図1の第1のスイッチパネル102によりラップ歌詞の再生に合わせて伴奏の再生を行う設定を行っているか否かを判定する(ステップS924)。
0087
ステップS924の判定がYESならば、CPU201は、RAM203上の変数Bansouの値を1(伴奏有り)に設定する(ステップS925)。逆に、ステップS924の判定がNOならば、CPU201は、変数Bansouの値を0(伴奏無し)に設定する(ステップS926)。ステップS925又はS926の処理の後、CPU201は、図9(c)のフローチャートで示される図10のステップS1006のラップ開始処理を終了する。
0088
図11は、図10のステップS1008のベンドカーブ設定処理の詳細例を示すフローチャートである。まず、CPU201は、例えば16拍(4/4拍子の場合は4小節)単位の設定開始位置(小節番号)を指定する(ステップS1101)。ベンドカーブ設定処理は、自動演奏の進行とともにリアルタイムで実行されるようにすることができるため、初期値は例えば0小節目であり、16拍ごとの設定が完了する毎に、自動的に次の16小節目、32小節目、・・・が順次指定されるようにしてよい。また、現在の自動演奏中の拍に対しても設定の変更を行えるようにするために、ユーザは、例えば第1のスイッチパネル102上の特には図示しないスイッチにより、現在演奏中の拍を含む連続する16拍を設定開始位置として指定するようにすることもできる。
0089
次に、CPU201は、ステップS1101で指定された16拍(4小節分)分のラップの歌詞データをROM202から取得する(ステップS1102)。CPU201は、このように取得されたラップの歌詞データを、ユーザによるベンドカーブ指定を支援するために、例えば図2のLCD104に表示させることができる。
0090
次に、CPU201は、連続する16拍中の拍位置の初期値を0とする(ステップS1103)。
0091
その後、CPU201は、ステップS1103で連続する16拍中の拍位置を示すRAM203上の変数iの値を0に初期設定した後、ステップS1106でiの値を1ずつインクリメントしながら、ステップS1107でiの値が15を超えたと判断するまでステップS1104とステップS1105(#0から#3の何れか)を16拍分繰り返し実行する。
0092
上記繰返し処理において、まずCPU201は、図4で説明したベンドスライダ105上の拍位置iのスライダのスライダ値(s)を、図2のベンドスライダ105からキースキャナ206を介して読み込み、その値を判定する(ステップS1104)。
0093
次に、CPU201は、拍位置iのスライダ値がs=0の場合には、図4又は図7のベンドカーブ401(#0)の番号0を、図6のベンドカーブ設定テーブル600のベンドカーブ番号項目に記憶させる。このときの小節番号と拍番号の各項目の値は、下記(3)式及び(4)式により算出され記憶される(以上、ステップS1105(#0))。
0095
また、CPU201は、拍位置iのスライダ値がs=1の場合には、図4又は図7のベンドカーブ401(#1)の番号1を、図6のベンドカーブ設定テーブル600のベンドカーブ番号項目に記憶させる。このときの小節番号と拍番号の各項目の値は、上記(3)式及び(4)式により算出され記憶される(以上、ステップS1105(#1))。
0096
また、CPU201は、拍位置iのスライダ値がs=2の場合には、図4又は図7のベンドカーブ401(#1)の番号2を、図6のベンドカーブ設定テーブル600のベンドカーブ番号項目に記憶させる。このときの小節番号と拍番号の各項目の値は、上記(3)式及び(4)式により算出され記憶される(以上、ステップS1105(#2))。
0097
また、CPU201は、拍位置iのスライダ値がs=3の場合には、図4又は図7のベンドカーブ401(#1)の番号3を、図6のベンドカーブ設定テーブル600のベンドカーブ番号項目に記憶させる。このときの小節番号と拍番号の各項目の値は、上記(3)式及び(4)式により算出され記憶される(以上、ステップS1105(#3))。
0098
CPU201は、上記処理の繰返しにおいて、ステップS1107で変数iの値が15に達したと判定した場合には、図11のフローチャートの処理を終了し、図10のステップS1008のベンドカーブ設定処理を終了する。
0099
図12は、図2のタイマ210においてTickTime[秒]毎に発生する割込み(図9(a)のステップS902又は図9(b)のステップS912を参照)に基づいて実行される自動演奏割込み処理の詳細例を示すフローチャートである。以下の処理は、図5に例示される曲データのトラックチャンク1及び2の演奏データ組に対して実行される。
0100
まず、CPU201は、トラックチャンク1に対応する一連の処理(ステップS1201からS1207)を実行する。始めにCPU201は、SongStart値が1であるか否か、即ち歌詞及び伴奏の進行が指示されているか否かを判定する(ステップS1201)。
0101
CPU201は、歌詞及び伴奏の進行が指示されていないと判定した(ステップS1201の判定がNOである)場合には、歌詞及び伴奏の進行は行わずに図12のフローチャートで例示される自動演奏割込み処理をそのまま終了する。
0102
CPU201は、歌詞及び伴奏の進行が指示されていると判定した(ステップS1201の判定がYESである)場合にはまず、自動演奏の開始時からのTickTimeを単位とする経過時間を示すRAM203上の変数ElapseTimeの値を1インクリメントする。図12の自動演奏割込み処理はTickTime秒毎に発生するため、この割込みの発生毎に1ずつ累算した値が、ElapseTimeの値となる。この変数ElapseTimeの値は、後述する図14のベンド処理のステップS1406において、現在の小節番号と拍番号を算出するために使用される。
0103
次に、CPU201は、トラックチャンク1に関する前回のイベントの発生時刻からの相対時刻を示すDeltaT_1値が、AutoIndex_1値が示すこれから実行しようとする演奏データ組の待ち時間DeltaTime_1[AutoIndex_1]に一致したか否かを判定する(ステップS1203)。
0104
ステップS1203の判定がNOならば、CPU201は、トラックチャック1に関して、前回のイベントの発生時刻からの相対時刻を示すDeltaT_1値を+1インクリメントさせて、今回の割込みに対応する1TickTime単位分だけ時刻を進行させる(ステップS1204)。その後、CPU201は、後述するステップS1208に移行する。
0105
ステップS1203の判定がYESになると、CPU201は、トラックチャック1に関して、AutoIndex_1値が示す演奏データ組のイベントEvent[AutoIndex_1]を実行する(ステップS1205)。このイベントは、歌詞データを含むラップイベントである。
0106
続いて、CPU201は、トラックチャンク1内の次に実行すべきラップイベントの位置を示すAutoIndex_1値を、RAM203上の変数SongIndexに格納する(ステップS1205)。
0107
更に、CPU201は、トラックチャンク1内の演奏データ組を参照するためのAutoIndex_1値を+1インクリメントする(ステップS1206)。
0108
また、CPU201は、トラックチャンク1に関して今回参照したラップイベントの発生時刻からの相対時刻を示すDeltaT_1値を0にリセットする(ステップS1207)。その後、CPU201は、ステップS1208の処理に移行する。
0109
次に、CPU201は、トラックチャンク2に対応する一連の処理(ステップS1208からS1214)を実行する。始めにCPU201は、トラックチャンク2に関する前回のイベントの発生時刻からの相対時刻を示すDeltaT_2値が、AutoIndex_2値が示すこれから実行しようとする演奏データ組の待ち時間DeltaTime_2[AutoIndex_2]に一致したか否かを判定する(ステップS1208)。
0110
ステップS1208の判定がNOならば、CPU201は、トラックチャック2に関して、前回のイベントの発生時刻からの相対時刻を示すDeltaT_2値を+1インクリメントさせて、今回の割込みに対応する1TickTime単位分だけ時刻を進行させる(ステップS1209)。その後、CPU201は、ステップS1211のベンド処理に進む。
0111
ステップS1208の判定がYESならば、CPU201は、伴奏再生を指示するRAM203上の変数Bansouの値が1(伴奏有り)であるか否かを判定する(ステップS1210)(図9(c)のステップS924からS926を参照)。
0112
ステップS1210の判定がYESならば、CPU201は、AutoIndex_2値が示すトラックチャック2に関する伴奏に関するイベントEvent_2[AutoIndex_2]を実行する(ステップS1211)。ここで実行されるイベントEvent_2[AutoIndex_2]が、例えばノートオンイベントであれば、そのノートオンイベントにより指定されるキーナンバー及びベロシティにより、図2の音源LSI204に対して伴奏用の楽音の発音命令が発行される。一方、イベントEvent_2[AutoIndex_2]が、例えばノートオフイベントであれば、そのノートオフイベントにより指定されるキーナンバー及びベロシティにより、図2の音源LSI204に対して発音中の伴奏用の楽音の消音命令が発行される。
0113
一方、ステップS1210の判定がNOならば、CPU201は、ステップS1211をスキップすることにより、今回の伴奏に関するイベントEvent_2[AutoIndex_2]は実行せずに、歌詞に同期した進行のために、次のステップS1212の処理に進んで、イベントを進める制御処理のみを実行する。
0114
ステップS1211の後又はステップS1210の判定がNOの場合に、CPU201は、トラックチャンク2上の伴奏データのための演奏データ組を参照するためのAutoIndex_2値を+1インクリメントする(ステップS1212)。
0115
また、CPU201は、トラックチャンク2に関して今回実行したイベントの発生時刻からの相対時刻を示すDeltaT_2値を0にリセットする(ステップS1213)。
0116
そして、CPU201は、AutoIndex_2値が示す次に実行されるトラックチャンク2上の演奏データ組の待ち時間DeltaTime_2[AutoIndex_2]が0であるか否か、即ち、今回のイベントと同時に実行されるイベントであるか否かを判定する(ステップS1214)。
0117
ステップS1214の判定がNOならば、CPU201は、ステップS1211のベンド処理に進む。
0118
ステップS1214の判定がYESならば、CPU201は、ステップS1210に戻って、AutoIndex_2値が示すトラックチャンク2上で次に実行される演奏データ組のイベントEvent_2[AutoIndex_2]に関する制御処理を繰り返す。CPU201は、今回同時に実行される回数分だけ、ステップS1210からS1214の処理を繰り返し実行する。以上の処理シーケンスは、例えば和音等のように複数のノートオンイベントが同時タイミングで発音されるような場合に実行される。
0119
ステップS1209の処理の後、又はステップS1214の判定がNOの場合に、CPU201は、ベンド処理を実行する(ステップS1211)。ここでは、図10のステップS1008のベンドカーブ設定処理により図6に例示されるベンドカーブ設定テーブル600に設定された小節毎および小節内の拍毎のベンドカーブの設定に基づいて、実際に図3の音声合成部302に対してベンドが実行される図3のベンド処理部320に対応する処理が実行される。この処理の詳細については、図14のフローチャートを用いて後述する。このステップS1209の処理の後、図12のフローチャートで示される今回の自動演奏割込み処理を終了する。
0121
まずCPU201は、図12の自動演奏割込み処理におけるステップS1205で、RAM203上の変数SongIndexに、値がセットされてNull値でなくなっているか否かを判定する(ステップS1301)。このSongIndex値は、現在のタイミングがラップ音声の再生タイミングになっているか否かを示すものである。
0122
ステップS1301の判定がYESになった、即ち現時点がラップ再生のタイミングになったら、CPU201は、図8のステップS803の鍵盤処理により演奏者による図1の鍵盤101上で新たな押鍵が検出されているか否かを判定する(ステップS1302)。
0123
ステップS1302の判定がYESならば、CPU201は、演奏者による押鍵により指定された音高を、発声音高として特には図示しないレジスタ又はRAM203上の変数にセットする(ステップS1303)。
0124
続いて、CPU201は、RAM203上の変数SongIndexが示すRAM203上の曲データのトラックチャンク1上のラップイベントEvent_1[SongIndex]から、ラップの歌詞文字列を読み出す。CPU201は、読み出した歌詞文字列に対応するラップ音声出力データ217を、ステップS1303で設定された押鍵に基づく音高がセットされた発声音高で発声させるためのラップデータ215を生成し、音声合成LSI205に対して発声処理を指示する(ステップS1305)。音声合成LSI205は、図3で説明した統計的音声合成処理を実行することにより、RAM203から曲データとして指定される歌詞を、演奏者が鍵盤101上で押鍵した鍵の音高にリアルタイムに対応して歌うラップ音声出力データ217を合成して出力する。
0125
一方、ステップS1301の判定により現時点がラップ再生のタイミングになったと判定されると共に、ステップS1302の判定がNO、即ち現時点で新規押鍵が検出されていないと判定された場合には、CPU201は、RAM203上の変数SongIndexが示すRAM203上の曲データのトラックチャンク1上のラップイベントEvent_1[SongIndex]から音高のデータを読み出し、この音高を発声音高として特には図示しないレジスタ又はRAM203上の変数にセットする(ステップS1304)。
0126
ラップ演奏の場合、音高は、メロディーの音高に連動していてもよいし、連動していなくてもよい。
0127
その後、CPU201は、前述したステップS1305の処理を実行することにより、ラップイベントEvent_1[SongIndex]から読み出した歌詞文字列に対応するラップ音声出力データ217を、ステップS1304で設定された発声音高で発声させるためのラップデータ215を生成し、音声合成LSI205に対して発声処理を指示する(ステップS1305)。音声合成LSI205は、図3で説明した統計的音声合成処理を実行することにより、演奏者が鍵盤101上でいずれの鍵も押鍵していなくても、RAM203から曲データとして指定される歌詞を、同じく曲データとしてデフォルト指定されている音高に対応して歌うラップ音声出力データ217を合成して出力する。
0128
ステップS1305の処理の後、CPU201は、RAM203上の変数SongIndexが示す再生を行ったラップ位置を、RAM203上の変数SongIndex_preに記憶させる(ステップS1306)。
0129
更に、CPU201は、変数SongIndexの値をNull値にクリアして、これ以降のタイミングをラップ再生のタイミングでない状態にする(ステップS1307)。その後、CPU201は、図13のフローチャートで示される図8のステップS805のラップ再生処理を終了する。
0130
前述したステップS1301の判定がNOである、即ち現時点がラップ再生のタイミングではないときには、CPU201は、図8のステップS803の鍵盤処理により演奏者による図1の鍵盤101上で新たな押鍵が検出されているか否かを判定する(ステップS1308)。
0132
ステップS1308の判定がYESならば、CPU201は、現在音声合成LSI205が発声処理中の、RAM203上の変数SongIndex_preが示すRAM203上の曲データのトラックチャンク1上のラップイベントEvent_1[SongIndex_pre]の歌詞文字列に対応するラップ音声出力データ217の音高を、ステップS1308で検出された演奏者の押鍵に基づく音高に変更することを指示するラップデータ215を生成し、音声合成LSI205に出力する(ステップS1309)。このとき、ラップデータ215において、既に発声処理中の歌詞の音素のうち後半部分の音素、例えば歌詞文字列「き」であればそれを構成する音素列「/k/」「/i/」のうちの後半の「/i/」が始まるフレームが、音高への変更の開始位置にセットされる。音声合成LSI205は、図3を用いて説明した統計的音声合成処理を実行することにより、現在発声中のラップ音声の音高を、演奏者が鍵盤101上で押鍵した鍵の音高にリアルタイムに変更して歌うラップ音声出力データ217を合成して出力する。
0133
以上のステップS1309の処理により、現在の押鍵タイミングの直前の本来のタイミングから発声されているラップ音声出力データ217の発声がその音高が演奏者により演奏された音高に変更されて、現在の押鍵タイミングでその発声を継続させることが可能となる。
0135
図14は、図12の自動演奏割込み処理におけるステップS1211のベンド処理の詳細処理例を示すフローチャートである。まず、CPU201は、RAM203内の変数DividingTimeの値を1インクリメントする(ステップS1401)。
0136
その後、CPU201は、変数DividingTimeの値が前述した(2)式で算出される値Dに一致したか否かを判定する(ステップS1402)。ステップS1402の判定がNOならば、CPU201は、図14のフローチャートで例示される図12のステップS1211のベンド処理をそのまま終了する。DはTickTimeを何分周するかを示す値であり、従って、図12の自動演奏割込み処理は1TickTime毎に実行されるが、その中から呼び出される図14のベンド処理の実質的な処理はDTickTime毎に実行されることになる。例えば、D=10とすれば、ベンド処理は10TickTime毎に実行される。前述した図9(c)のラップ開始処理のステップS921で、変数DividingTimeの値はD−1に初期設定されているため、自動演奏の開始時の最初の自動演奏割込み処理の実行時には、ステップS1401の処理の後、ステップS1402の判定は必ずYESとなる。
0137
ステップS1402の判定がYESとなると、CPU201は、変数DividingTimeの値を0にリセットする(ステップS1403)。
0138
次に、CPU201は、RAM203上の変数BendAdressOffsetの値が1つのベンドカーブ内の最終アドレスR−1に一致しているか否かを判定する(ステップS1404)。ここでは、1つの拍に対するベンド処理が終了したか否かが判定される。前述した図9(c)のラップ開始処理のステップS921で、変数BendAdressOffsetの値はR−1に初期設定されているため、自動演奏の開始時の最初の自動演奏割込み処理の実行時にはステップS1404の判定が必ずYESになる。
0139
ステップS1404の判定がYESになると、CPU201は、変数BendAdressOffsetの値を、ベンドカーブの先頭を示す値0(図7参照)にリセットする(ステップS1405)。
0140
その後、CPU201は、変数ElapseTimeの値から、現在の小節番号と拍番号を算出する(ステップS1406)。4/4拍子の場合、1拍のTickTime数はTimeDivisionの値で与えられるため、変数ElapseTimeをTimeDivisionの値で割り、更にその結果を4(1小節あたりの拍数)で割ることにより、現在の小節番号と拍番号を算出することができる。
0141
次に、CPU201は、図6に例示されるベンドカーブ設定テーブル600から、ステップS1406で算出した小節番号と拍番号に対応するベンドカーブ番号を取得し、その値をRAM203上の変数CurveNumにセットする(ステップS1407)。
0142
一方、RAM203上の変数BendAdressOffsetの値が1つのベンドカーブ内の最終アドレスR−1に達しておらず、ステップS1404の判定がNOの場合には、CPU201は、ベンドカーブ内のオフセットアドレスを示す変数BendAdressOffsetの値を1インクリメントする(ステップS1409)。
0143
次に、CPU201は、今回又は前回以前の自動演奏割込み処理でのステップS1407の実行により、変数CurveNumにデータがベンドカーブ番号が得られているか否かを判定する(ステップS1408)。
0144
ステップS1408の判定がYESならば、CPU201は、変数CurveNumに得られているベンドカーブ番号に対応するROM202の当該ベンドカーブデータの先頭アドレスBendCurve[CurveNum]に、変数BendAdressOffsetに得られているオフセット値を加算して得られるベンドカーブテーブル700のアドレスからベンド値を取得する(図7参照)(ステップS1410)。
0145
最後に、CPU201は、図13のステップS1309で説明した場合と同様に、現在音声合成LSI205が発声処理中の、RAM203上の変数SongIndex_preが示すRAM203上の曲データのトラックチャンク1上のラップイベントEvent_1[SongIndex_pre]の歌詞文字列に対応するラップ音声出力データ217の音高を、ステップS1410で取得されたベンド値から算出される音高に変更することを指示するラップデータ215を生成し、音声合成LSI205に出力する。その後、CPU201は、図14のフローチャートで例示される図12のステップS1211のベンド処理を終了する。
0146
変数CurveNumにベンドカーブ番号が得られておらずステップS1408の判定がNOならば、ユーザはその拍に対してはベンドカーブの設定を無効にしたので、CPU201は、そのまま図14のフローチャートで例示される図12のステップS1211のベンド処理を終了する。
0147
以上のようにして、本実施形態では、拍毎に、ユーザによりリアルタイムで又は予めその拍に対して指定されたベンドカーブに対応するベンド処理が、ラップ音に対して実行されるようにすることが可能となる。
0148
以上説明した実施形態に加えて、図3のベンド処理部320は、拍と拍の接続部分で異なるベンドカーブが指定されたような場合に、ベンドカーブによって変更される前の拍の最後の音高と今回の拍の最初の音高とが不連続にならないように、前の拍の最後の音高を引き継ぐか、両方の音高を時間的に補間するかの処理を行うようにすることができる。これにより、異音の発生等を抑制した良い音質のラップ音を再生することが可能となる。
0149
以上説明した実施形態では、ユーザは例えば連続する16拍(4/4拍子の場合は4小節)内で拍毎にベンドカーブを設定するように実施されているが、16拍分のベンドカーブのセットを一括して指定するようなユーザインタフェースが実施されてもよい。これにより、有名なラップ歌手のラップ演奏をそのまま模擬して指定するようなことが簡単に行えるようになる。
0150
また、小節の先頭などの拍の連続する所定数(例えば4拍)毎に又はランダムに、ベンドカーブを変化して抑揚を強調するような強調手段を更に備えることもできる。これにより、より多彩なラップ表現が可能となる。
0151
上述の実施形態では、ベンド処理が、ラップ音声の音高に対してピッチベンドとして実行されたが、音高以外の、例えば音の強さや音色などに対して実行されてもよい。これにより、より多彩なラップ表現が可能となる。
0152
上述の実施形態では、抑揚パターンの指定がラップ音声に対して行われたが、ラップ音声以外の楽器音の音楽情報に対して実行されてもよい。
0153
図3及び図4を用いて説明したHMM音響モデルを採用した統計的音声合成処理の第1の実施形態では、特定の歌い手や歌唱スタイルなどの微妙な音楽表現を再現することが可能となり、接続歪みのない滑らかな音声音質を実現することが可能となる。更に、学習結果315(モデルパラメータ)の変換により、別のラップ歌手への適応や、多様な声質や感情を表現することが可能となる。更に、HMM音響モデルにおける全てのモデルパラメータを、学習用ラップデータ311及び学習用ラップ音声データ312からから自動学習できることにより、特定の歌い手の特徴をHMM音響モデルとして獲得し、合成時にそれらの特徴を再現するような音声合成システムを自動的に構築することが可能となる。音声の基本周波数や長さは楽譜のメロディやテンポに従うものであり、ピッチの時間変化やリズムの時間構造を楽譜から一意に定めることもできるが、そこから合成されるラップ音声は単調で機械的なものになり,ラップ音声としての魅力に欠けるものである。実際のラップ音声には,楽譜通りの画一化されたものだけではなく,声質のほかに声の高さやそれらの時間的な構造の変化により、それぞれの歌い手独自のスタイルが存在している。HMM音響モデルを採用する統計的音声合成処理の第1の実施形態では、ラップ音声におけるスペクトル情報とピッチ情報の時系列変化をコンテキストに基づいてモデル化することができ、さらに楽譜情報を考慮することで、実際のラップ音声により近い音声再生が可能となる。更に、統計的音声合成処理の第1の実施形態で採用されるHMM音響モデルは、あるメロディに沿った歌詞を発声する際、歌い手の声帯の振動や声道特性における音声の音響特徴量系列がどのような時間変化をしながら発声されるか、という生成モデルに相当する。更に、統計的音声合成処理の第1の実施形態において、音符と音声の「ずれ」のコンテキストを含むHMM音響モデルを用いることにより、歌い手の発声特性に依存して複雑に変化する傾向を有する歌唱法を正確に再現できるラップ音声の合成が実現される。このようなHMM音響モデルを採用する統計的音声合成処理の第1の実施形態の技術が、例えば電子鍵盤楽器100によるリアルタイム演奏の技術と融合されることにより、素片合成方式等による従来の電子楽器では不可能であった、モデルとなる歌い手の歌唱法及び声質を正確に反映させることのでき、まるでそのラップ歌手が実際にラップを行っているようなラップ音声の演奏を、電子鍵盤楽器100の鍵盤演奏等に合わせて、実現することが可能となる。
0154
図3及び図5を用いて説明したDNN音響モデルを採用した統計的音声合成処理の第2の実施形態では、言語特徴量系列と音響特徴量系列の関係の表現として、統計的音声合成処理の第1の実施形態における決定木に基づくコンテキストに依存したHMM音響モデルが、DNNに置き換えられる。これにより、決定木では表現することが困難な複雑な非線形変換関数によって言語特徴量系列と音響特徴量系列の関係を表現することが可能となる。また、決定木に基づくコンテキストに依存したHMM音響モデルでは、決定木に基づいて対応する学習データも分類されるため、各コンテキストに依存したHMM音響モデルに割り当てられる学習データが減少してしまう。これに対し、DNN音響モデルでは学習データ全体から単一のDNNを学習するため、学習データを効率良く利用することが可能となる。このため、DNN音響モデルはHMM音響モデルよりも高精度に音響特徴量を予測することが可能となり、合成音声の自然性を大幅に改善することが可能となる。更に、DNN音響モデルでは、フレームに関する言語特徴量系列を利用可能することが可能となる。即ち、DNN音響モデルでは、予め音響特徴量系列と言語特徴量系列の時間的な対応関係が決められるため、HMM音響モデルでは考慮することが困難であった「現在の音素の継続フレーム数」、「現在のフレームの音素内位置」などのフレームに関する言語特徴量を利用することが可能となる。これにより、フレームに関する言語特徴量を用いることで、より詳細な特徴をモデル化することが可能となり,合成音声の自然性を改善することが可能となる。このようなDNN音響モデルを採用する統計的音声合成処理の第2の実施形態の技術が、例えば電子鍵盤楽器100によるリアルタイム演奏の技術と融合されることにより、鍵盤演奏等に基づくラップ音声の演奏を、モデルとなるラップ歌手の歌唱法及び声質に更に自然に近づけることが可能となる。
0155
以上説明した実施形態では、音声合成方式として統計的音声合成処理の技術を採用することにより、従来の素片合成方式に比較して格段に少ないメモリ容量を実現することが可能となる。例えば、素片合成方式の電子楽器では、音声素片データのために数百メガバイトに及ぶ記憶容量を有するメモリが必要であったが、本実施形態では、図3の学習結果315のモデルパラメータを記憶させるために、わずか数メガバイトの記憶容量を有するメモリのみで済む。このため、より低価格の電子楽器を実現することが可能となり、高音質のラップ演奏システムをより広いユーザ層に利用してもらうことが可能となる。
0156
更に、従来の素片データ方式では、素片データの人手による調整が必要なため、ラップ演奏のためのデータの作成に膨大な時間(年単位)と労力を必要としていたが、本実施形態によるHMM音響モデル又はDNN音響モデルのための学習結果315のモデルパラメータの作成では、データの調整がほとんど必要ないため、数分の一の作成時間と労力で済む。これによっても、より低価格の電子楽器を実現することが可能となる。また、一般ユーザが、クラウドサービスとして利用可能なサーバコンピュータ300や或いは音声合成LSI205に内蔵された学習機能を使って、自分の声、家族の声、或いは有名人の声等を学習させ、それをモデル音声として電子楽器でラップ演奏させることも可能となる。この場合にも、従来よりも格段に自然で高音質なラップ演奏を、より低価格の電子楽器として実現することが可能となる。
0157
以上説明した実施形態は、電子鍵盤楽器について本発明を実施したものであるが、本発明は電子弦楽器等他の電子楽器にも適用することができる。
0159
更に、以上説明した実施形態では、HMM音響モデルを用いた統計的音声合成処理の第1の実施形態又はDNN音響モデルを用いた遠後の第2の実施形態の音声合成方式について説明したが、本発明はこれに限られるものではなく、例えばHMMとDNNを組み合わせた音響モデル等、統計的音声合成処理を用いた技術であればどのような音声合成方式が採用されてもよい。
0160
以上説明した実施形態では、ラップの歌詞情報は曲データとして与えられたが、演奏者がリアルタイムに歌う内容を音声認識して得られるテキストデータがラップの歌詞情報としてリアルタイムに与えられてもよい。
0161
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子と、
少なくとも1つのプロセッサと、
を備え、前記少なくとも1つのプロセッサは、
前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定し、
決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力する、
情報処理装置。
(付記2)
前記複数の操作子は、前記第1操作子と隣接して配置される第2操作子を有し、
前記第2操作子は、前記曲データに含まれる前記第2タイミングから第3タイミングの前までの第2区間が対応付けられ、
前記少なくとも1つのプロセッサは、
前記第2操作子へのユーザ操作に基づいて、前記第2区間に付与する抑揚のパターンを決定し、
決定された前記パターンの抑揚で、前記第2区間に含まれるデータが示す歌詞が歌われるように、前記第2区間に含まれるデータを出力する、
付記1に記載の情報処理装置。
(付記3)
前記少なくとも1つのプロセッサは、
前記第1区間の歌声の最後のピッチと前記第2区間の歌声の最初のピッチとが連続的に繋がるように、少なくとも前記第1区間に含まれるデータの出力及び、前記第2区間に含まれるデータの出力のいずれかを調整する、
付記2に記載の情報処理装置。
(付記4)
或る1曲の曲データのなかの互いに重複しない部分データがそれぞれ対応付けられる区間数は、前記複数の操作子の数より多く、
前記少なくとも1つのプロセッサは、
再生される前記曲データの進行に合わせて、前記複数の操作子に対応付ける区間を変更する、
付記1から3のいずれかに記載の情報処理装置。
(付記5)
学習用歌詞データ及び学習用音高データを含む楽譜データと、前記楽譜データに対応する或る歌い手の歌声データと、を用いた機械学習処理により得られた学習済み音響モデルであって、任意の歌詞データと、任意の音高データと、を入力することにより、前記或る歌い手の歌声の音響特徴量を示すデータを出力する学習済み音響モデルを記憶しているメモリを備え、
前記少なくとも1つのプロセッサは、
前記学習済み音響モデルへの前記任意の歌詞データと前記任意の音高データとの入力に応じて前記学習済み音響モデルが出力した前記或る歌い手の歌声の音響特徴量を示すデータに基づいて、前記或る歌い手の歌声を推論し、
推論された前記或る歌い手の前記第1区間の歌声に、決定された前記パターンの抑揚がつくように、前記第1区間に含まれるデータを出力する、
付記1から4のいずれかに記載の情報処理装置。
(付記6)
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子と、
複数の鍵を含む鍵盤と、
少なくとも1つのプロセッサと、
を備え、前記少なくとも1つのプロセッサは、
前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定し、
決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力する、
電子楽器。
(付記7)
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子を備える情報処理装置のコンピュータに、
前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定させ、
決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力させる、
方法。
(付記8)
曲データの第1タイミングから第2タイミングの前までの第1区間が対応付けられる第1操作子を含む複数の操作子を備える情報処理装置のコンピュータに、
前記第1操作子へのユーザ操作に基づいて、前記第1区間に付与する抑揚のパターンを決定させ、
決定された前記パターンの抑揚で、前記第1区間に含まれるデータが示す歌詞が歌われるように、前記第1区間に含まれるデータを出力させる、
プログラム。
0162
100電子鍵盤楽器
101鍵盤
102 第1のスイッチパネル
103 第2のスイッチパネル
104 LCD
105ベンドスライダ
106 ベンドスイッチ
200 制御システム
201 CPU
202 ROM
203 RAM
204音源LSI
205音声合成LSI
206キースキャナ
208LCDコントローラ
209システムバス
210タイマ
211、212 D/Aコンバータ
213ミキサ
214アンプ
215ラップデータ
216発音制御データ
217ラップ音声出力データ
218楽音出力データ
219ネットワークインタフェース
300サーバコンピュータ
301音声学習部
302音声合成部
303学習用テキスト解析部
304学習用音響特徴量抽出
305モデル学習部
306音響モデル部
307テキスト解析部
308発声モデル部
309音源生成部
310合成フィルタ部
311 学習用ラップデータ
312 学習用ラップ音声データ
313学習用言語特徴量系列
314 学習用音響特徴量系列
315学習結果
316言語情報量系列
317 音響特徴量系列
318スペクトル情報
319音源情報
320 ベンド処理部