以下において、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.本実施形態の概要
図1は、本実施形態のゲームシステム10(情報処理システムの一例)の外観を示す図である。図1に示すようにゲームシステム10は、プレーヤ(操作者、観者)が携帯可能な大きさに形成されており、プレーヤがゲームシステム10を手で持ってゲームをプレーすることができるようになっている。そしてゲームシステム10は、本体下部12と本体上部14とがヒンジ部16により連結されており、本体下部12と本体上部14とがヒンジ部16の軸回りに回動可能となっている。そして本体下部12の中央部には、矩形の第1表示面17に画像を出力する第1液晶ディスプレイ18が設けられており、第1液晶ディスプレイ18の周囲には、プレーヤが操作情報を入力するための十字キー20、第1ボタン22〜第4ボタン28の4つのボタン、スタートボタン30、セレクトボタン32が設けられている。また本体上部14の中央部には、矩形の第2表示面33に画像を出力する第2液晶ディスプレイ34が設けられ、第2液晶ディスプレイ34の左側と右側には音を出力するスピーカ36が設けられている。またヒンジ部16には、外部音を検出するためのマイク38が設けられている。
また第1液晶ディスプレイ18の第1表示面17には、矩形の操作面39に対してプレーヤが行った接触操作の位置を検出できるタッチパネル40が重ねられるように設けられている。そしてプレーヤが、例えば図1に示すタッチペン41の先端を操作面39に接触させると、ゲームシステム10はタッチペン41の先端が接触した操作面39における接触位置を検出する。従ってプレーヤは、操作面39に対して接触操作を行うことによっても操作情報を入力することができる。
これによりゲームシステム10は、操作面39における接触位置に応じて第1表示面17に表示されている選択項目が選択されたことを判定したり、第1表示面17や第2表示面33に表示されている画像においてキャラクタを発生させたり、移動させたり、消滅させたり、操作面39における接触位置の移動軌跡を表示して第1表示面17に文字や絵を描けるようにしたりすることができる。
また、図1に示す第1玩具42(形象体の一例)、第2玩具44(形象体の一例)、第3玩具46(形象体の一例)、第4玩具48(形象体の一例)のそれぞれは、互いに異なるキャラクタの形状を有しているとともに、電子音(所定音の一例)を発生させる音源IC(PCM音源やMIDI音源)と、スピーカと、スイッチと、電源とを備えており、スイッチが操作されると音源ICに記憶されている電子音データに基づいて電子音を発生させ、これをスピーカから出力させる。ここで第1玩具42、第2玩具44、第3玩具46、第4玩具48のそれぞれの音源ICには、互いに異なる種類の電子音データが記憶されている。ここで電子音とは、電気的に出力される音を意味し、シンセサイザーなどにより電気的に生成した音のみならず、人や動物の声や楽器音や物の接触音などのアナログ音(自然音)を録音した音を含み、音の内容は問わない。
具体的には第1玩具42の音源ICには、人が話した台詞を録音した台詞音と効果音イを組み合わせた電子音を示す電子音データが記憶され、第2玩具44の音源ICには、楽曲イの電子音を示す電子音データが記憶され、第3玩具46の音源ICには、効果音ロの電子音を示す電子音データが記憶され、第4玩具48の音源ICには、楽曲ロの電子音を示す電子音データが記憶されている。従って、第1玩具42、第2玩具44、第3玩具46、第4玩具48のそれぞれは、互いに異なる種類の電子音をそれぞれのスピーカから出力させる。
ここでゲームシステム10は、第1玩具42の電子音に基づいて作成されたテンプレートと、第2玩具44の電子音に基づいて作成されたテンプレートと、第3玩具46の電子音に基づいて作成されたテンプレートと、第4玩具48の電子音に基づいて作成されたテンプレートとを予め記憶している。そしてゲームシステム10は、マイク38により外部音を検出すると、検出した外部音を示す外部音データと4種類のテンプレートのそれぞれとを比較して、外部音に対応する電子音の種類を特定する。なお本実施形態では、台詞音の電子音に効果音イの電子音を組み合わせることにより、プレーヤが台詞の電子音に似せた音声をマイク38に検出させて誤認識を発生させることを防止している。
そしてゲームシステム10は、マイク38により検出した外部音が4種類の玩具のいずれかの電子音であると特定した場合には、特定した電子音の種類に対応させて第1表示面17や第2表示面33に表示されている画像を変化させる。例えばマイク38により検出した外部音が第1玩具42の電子音であると特定した場合には、ゲームシステム10は、第1玩具42を示す第1キャラクタ画像49を第2表示面33に表示させる。またマイク38により検出した外部音が第2玩具44の電子音であると特定した場合には、ゲームシステム10は、第1玩具42を示す第1キャラクタ画像49ではなく、第2玩具44を示す第2キャラクタ画像を第2表示面33に表示させる。
一方、マイク38により外部音の検出を開始してから30秒が経過しても、マイク38により検出した外部音が4種類の玩具のいずれかの電子音であると特定することができない場合には、30秒の間に取得した外部音データの音量に応じたエラー画像を、第1表示面17に表示させる。具体的にはゲームシステム10は、外部音データの音量が大きい状態が継続している場合には、周囲の環境音が大きいため電子音の種類を特定することができないと判断し、例えば図2(A)に示すように、「まわりがうるさいよ」などと周囲の環境音の音量を低下させることを指示する表示を第2表示面33に表示させる。また、外部音データの音量が小さい状態が継続している場合には、電子音を出力している玩具の位置がマイク38から離れているため電子音の種類を特定することができないと判断し、例えば図2(B)に示すように、「もっとマイクに近づけて」などと玩具の位置をマイク38に近づけることを指示する表示を第2表示面33に表示させる。また、外部音データの音量が0である状態が継続している場合には、玩具が電子音を出力していないため電子音の種類を特定することができないと判断し、例えば図2(C)に示すように、「音が鳴らなかったみたいだからもう一度」などと玩具に電子音を出力させることを指示する表示を第2表示面33に表示させる。
2.本実施形態の手法の詳細
2−1.テンプレートの作成手法の概要
図3は、ゲームシステム10に予め記憶させておくテンプレートの作成手法を説明するための図である。図3では、第1玩具42の電子音に対応するテンプレートを作成する場合を例に挙げて説明する。第1玩具42の電子音に対応するテンプレートを作成する場合には、まず、図3のステップS1に示すように、第1玩具42の音源ICに記憶させた波形データAと同一の波形データAを取得する。ここで波形データAのサンプリング期間は4秒間となっている。
そしてステップS2に示すように、4秒間の波形データAを、1個のブロックのサンプリング期間が0.5秒間となるように、波形データAの先頭から0.5秒間(第1期間の一例)に対応する第1番目のブロックA1から、波形データAの末尾までの0.5秒間に対応する第8番目のブロックA8までの8個のブロックに分割する。そしてステップS3に示すように、ブロックA1〜ブロックA8のそれぞれを、1個のブロック要素のサンプリング期間が1/60秒間(第2期間の一例)となるように、30個のブロック要素に分割する。すなわち4秒間の波形データAを、240個のブロック要素に分割する。
そしてステップS4に示すように、各ブロック要素の波形データに対してDFT(離散フーリエ変換)処理を行い、各ブロック要素のパワースペクトルを求める。そしてステップS5に示すように、各ブロック要素のパワースペクトルから値が大きな3個の周波数を選択し、ステップS6に示すように、3個の値を小さい値から順位をつけて各ブロック要素のテンプレート要素として記憶する。ここで3個の周波数のそれぞれは、10の位までの値が切り捨てられた100Hz単位の値として求められている。
そしてステップS7に示すように、各ブロック要素のテンプレート要素を元の波形データAの時系列を維持したまま記憶し、ブロックA1に属する30個のブロック要素のテンプレート要素をブロックA1のテンプレートブロックとする。同様に、ブロックA2〜ブロックA8のそれぞれに属する30個のブロック要素のテンプレート要素のそれぞれを、ブロックA2のテンプレートブロック〜ブロックA8のテンプレートブロックとする。こうして波形データAに対応するテンプレートとして、ブロックA1のテンプレートブロック〜ブロックA8のテンプレートブロックの8個のテンプレートブロックを作成する。
そして同様の手法により、第2玩具44の電子音の波形データBに対応するテンプレートを作成する。ここでステップS8に示すように、波形データBの再生期間は3秒間となっているため、波形データBはブロックB1〜B6に分割する。従って波形データBに対応するテンプレートとして、ブロックB1のテンプレートブロック〜ブロックB6のテンプレートブロックの6個のテンプレートブロックを作成する。同様にステップS8に示すように、第3玩具46の電子音の波形データCの再生期間は11秒間となっているため、波形データCに対応するテンプレートとして、ブロックC1のテンプレートブロック〜ブロックC22のテンプレートブロックの22個のテンプレートブロックを作成し、第4玩具48の電子音の波形データDの再生期間は7秒間となっているため、波形データDに対応するテンプレートとして、ブロックD1のテンプレートブロック〜ブロックD14のテンプレートブロックの14個のテンプレートブロックを作成する。すなわち第1玩具42〜第4玩具48のそれぞれの電子音の波形データに対応するテンプレートとして、ブロックA1のテンプレートブロック〜ブロックD14のテンプレートブロックの50個のテンプレートブロックを作成する。
2−2.テンプレートと外部音データの比較手法
図4は、上述のようにして作成した4種類のテンプレートと、マイク38が検出した外部音を示す外部音データとを比較する手法を説明するための図である。図4では、第1玩具42の電子音の再生レートがテンプレートの再生レートと同一となる状態で再生された場合を例に挙げて説明する。
図4に示すように、マイク38が外部音を検出することによりゲームシステム10が外部音の波形データInを取得すると、上述したテンプレートを作成する場合と同様に、ステップS10に示すように、1/60秒間分の波形データに対してDFT処理を行い、1/60秒間分の波形データのパワースペクトルを求める。すなわち1/60秒間分の波形データをブロック要素としてブロック要素ごとにパワースペクトルを求める。そしてステップS11に示すように、ブロック要素のパワースペクトルから値が大きな3個の周波数を選択し、ステップS12に示すように、3個の値を小さい値から順位をつけてブロック要素の外部音データ要素として記憶する。ここで3個の周波数のそれぞれは、10の位までの値が切り捨てられた100Hz単位の値として求められている。
そして、1/60秒ごとに同様の処理を繰り返し、各ブロック要素の外部音データ要素を、1/60秒ごとに順次時系列に記憶できる外部音データバッファに元の外部音の波形データInの時系列を維持したまま記憶させる。そして、外部音の波形データInを取得し始めてから30/60秒(0.5秒)が経過することにより、ステップS13に示すように、30個のブロック要素の外部音データ要素を取得すると、ステップS14に示すように、これを1個のブロックIn1の外部音データブロックとして、ブロックA1のテンプレートブロック〜ブロックD14のテンプレートブロックの50個のテンプレートブロックのそれぞれと比較する。
本実施形態では、ブロックIn1の外部音データブロックと例えばブロックA1のテンプレートブロックとを比較する場合には、ブロックIn1を構成する30個のブロック要素の外部音データ要素のうち、図中左端の第1番目のブロック要素の外部音データ要素の3個の値と、ブロックA1を構成する30個のブロック要素のテンプレート要素のうち、図中左端の第1番目のブロック要素のテンプレート要素の3個の値とを比較し、ブロック要素に一組の同一の値が記憶されている場合に1個の値が一致したと判定する。具体的には第1番目のブロック要素の外部音データ要素として400Hz、900Hz、1500Hzが順に記憶され、第1番目のブロック要素のテンプレート要素として400Hz、800Hz、1200Hzが順に記憶されている場合には、いずれにも400Hzが記憶されているので、1個の値が一致していると判定する。同様に、第2番目以降の他の順序のブロック要素の外部音データ要素の3個の値と、同一の順序のブロック要素のテンプレート要素の3個の値とを比較し、値が一致した箇所(組)をカウントする。ステップS14の例では、太字で記載されている値が一致したと判定された値であり、ブロックIn1の外部音データブロックとブロックA1のテンプレートブロックとの一致箇所は14箇所となっている。
そして、ブロックIn1の外部音データブロックを、その他のテンプレートブロックであるブロックA2のテンプレートブロック〜ブロックD14のテンプレートブロックのそれぞれとも比較し、ステップS15に示すように、ブロックA1のテンプレートブロック〜ブロックD14のテンプレートブロックのそれぞれについて、ブロックIn1の外部音データブロックとの一致箇所を求める。すると、ブロックA1のテンプレートブロック〜ブロックD14のテンプレートブロックのうち、最も一致箇所の数が多く、かつ一致箇所の数が閾値である10を超える(第1条件の一例)テンプレートブロックのブロック番号を選択する。そして、ブロックIn1の外部音データブロックは、選択したブロック番号のテンプレートブロックと一致すると推定する。ステップS15の例では、ブロックIn1の外部音データブロックに対してブロックA1のテンプレートブロックが一致箇所が最も多くかつ一致箇所の数が10を超えているので、ブロックA1のテンプレートブロックが選択され、ブロックIn1の外部音データブロックは、ブロックA1のテンプレートブロックと一致すると推定する。
するとステップS16に示すように、選択されたテンプレートブロックのブロック番号を1/60秒ごとに順次時系列に記憶できるブロック番号バッファに、選択されたテンプレートブロックのブロック番号であるA1を記憶させる。図4の例では、外部音の波形データInを取得し始めてから30/60秒(0.5秒)後にブロックA1のテンプレートブロックが選択されたので、ブロック番号バッファの先頭から30/60秒(0.5秒)後の位置である30番目の位置にA1を記憶させる。
こうして図5のステップS19に示すように、外部音の波形データInを取得し始めてから30/60秒(0.5秒)間分の波形データに対応するブロックIn1の外部音データブロックについてブロックA1が選択され、図5のステップS20に示すように、ブロック番号バッファの30番目の位置にA1を記憶させると、次の1/60秒間分の波形データに対してDFT処理を行って、ステップS21に示すように、次の1/60秒間分のブロック要素の外部音データ要素をブロックIn1の外部音データブロックに追加するとともに、第1番目のブロック要素の外部音データ要素を削除して、第2番目のブロック要素の外部音データ要素から第31番目のブロック要素の外部音データ要素までの30個のブロック要素の外部音データ要素をブロックIn2の外部音データブロックとして取得する。
そして、ブロックIn2の外部音データブロックと、ブロックA1のテンプレートブロック〜ブロックD14のテンプレートブロックのそれぞれとを比較する。しかし、ブロックIn2の外部音データブロックを構成する30個のブロック要素のそれぞれの順序は、ブロックIn1の外部音データブロックを構成する30個のブロック要素のそれぞれの順序から1つずつ繰り上がっているため、ブロックIn2の外部音データブロックとブロックA1のテンプレートブロックとにおいて同一の順序のブロック要素の外部音データ要素とテンプレート要素とを比較すると、一致箇所の数は閾値である10を超えない。
そして、ブロックIn2の外部音データブロックを、ブロックA2のテンプレートブロック〜ブロックD14のテンプレートブロックのそれぞれと比較しても、ブロックIn2の外部音データブロックは、いずれのブロック番号のテンプレートブロックともブロック要素がずれているため、一致箇所の数は閾値である10を超えない。するとブロックIn2の外部音データブロックに対してはいずれの番号のテンプレートブロックも選択されないので、ブロックIn2の外部音データブロックは、いずれの番号のテンプレートブロックとも一致しないと推定する。するとステップS22に示すように、ブロック番号バッファの先頭から31/60秒後の位置である31番目の位置に、選択されたテンプレートブロックのブロック番号がないことを示すNULLを記憶させる。
そして、外部音の波形データInを取得し始めてから60/60秒(1.0秒)が経過すると、ステップS23に示すように、第31番目のブロック要素の外部音データ要素から第60番目のブロック要素の外部音データ要素までの30個のブロック要素の外部音データ要素をブロックIn31の外部音データブロックとして取得する。すると、ブロックIn31の外部音データブロックは、ブロックA2のテンプレートブロックに対応するので、ブロックIn31の外部音データブロックと、ブロックA2のテンプレートブロックとを比較した場合に、最も一致箇所の数が多く、かつ一致箇所の数が閾値である10を超えることになる。すると、ブロックIn31の外部音データブロックに対してブロックA2のテンプレートブロックが選択され、ステップS24に示すように、ブロック番号バッファの先頭から60/60秒後の位置である60番目の位置に、選択されたテンプレートブロックのブロック番号であるA2を記憶させる。
そして、ブロックA1のテンプレートブロック〜ブロックA8のテンプレートブロックのそれぞれは、波形データAを30/60秒(0.5秒)ごとに分割した波形データに対応しているので、第1玩具42の電子音の再生レートがテンプレートの再生レートと同一となる状態で再生された場合には、外部音の波形データInを取得し始めてから240/60秒(4.0秒)が経過して第1玩具42の電子音の再生が終了すると、ステップS25に示すように、ブロック番号バッファには、A1〜A8までの8個のブロック番号が、30/60秒(0.5秒)ごとに、小さい番号から順に記憶されることになる。従ってゲームシステム10は、ブロック番号バッファに記憶された複数のブロック番号のそれぞれが、同一の種類の波形データに対応するブロック番号であって、30/60秒(0.5秒)ごとに、小さい番号から順に記憶されている場合には、外部音の波形データInは、ブロック番号に対応する種類の波形データであると特定することができる。
そこでゲームシステム10は、まず、ブロック番号バッファに未だブロック番号が記憶されていない状態で、ステップS20に示したように、ブロック番号バッファにブロック番号「A1」が記憶されると、ステップS26に示すように、ブロック番号カウンタのカウント値に1を加算する。そしてステップS24に示したように、ブロック番号バッファにブロック番号「A2」が記憶されると、ステップS27に示すように、ブロック番号「A2」が記憶された位置から30コマ前の位置に記憶されているブロック番号を探索する。そして、ブロック番号「A2」と、探索されたブロック番号である「A1」とを比較する。すなわち、最新のブロック番号と、最新のブロック番号が記憶されたタイミングから30/60秒(0.5秒)前のタイミングで記憶されたブロック番号とを比較する。
そして、両者が同一の種類の波形データに対応し、かつ順序の差が1であるブロック番号である場合には、ブロック番号のカウント値に「1」を加算する。図5の例では、ブロック番号「A1」と「A2」とは、いずれも波形データAに対応し、かつ順序の差が1であるブロック番号であるので、ステップS28に示すように、ブロック番号のカウント値に「1」が加算され、カウント値が「2」となる。こうしてステップS29に示すように、ブロック番号のカウント値が8となった場合には、波形データAに対応する8個のテンプレートブロックが小さい番号から順に記憶されていると判定され、外部音の波形データInは、波形データAであると特定することができる。
2−3.再生レートの変化に対応するテンプレートの作成手法
しかし、本実施形態の第1玩具42〜第4玩具48の音源ICは、発振回路の発信周波数にばらつきがあるため、玩具ごとに電子音の再生レートにもばらつきが生じてしまう。従って、同一の種類の玩具であっても、複数の玩具の間で電子音の再生速度が異なってしまう。例えば、発信周波数が基準値の+10%である音源ICが内蔵された第1玩具42からは、原音の再生レートが+10%となった電子音が出力され、発信周波数が基準値の−10%である音源ICが内蔵された第1玩具42からは、原音の再生レートが−10%となった電子音が出力される。
図6は、ゲームシステム10が実際に取得しうる第1玩具42の電子音の波形データを示す図である。図6の上段に示す波形データA+10は、第1玩具42の電子音の再生レートが+10%となった場合の波形データであり、図6の下段に示す波形データA−10は、第1玩具42の電子音の再生レートが−10%となった場合の波形データである。図6に示すように、波形データA+10は、原波形の波形データAよりも音程が10高くなり、波形の長さが10%短くなる。そして波形データA−10は、原波形の波形データAよりも音程が10低くなり、波形の長さが10%長くなる。
従って、ゲームシステム10が波形データA+10や波形データA−10を取得した場合には、これらにDFT処理を行うことにより30/60秒(0.5秒)間分のブロックInの外部音データブロックを取得して、これをブロックA1のテンプレートブロック〜ブロックD14のテンプレートブロックの50個のテンプレートブロックのそれぞれと比較しても、一致箇所の数は閾値である10を超えず、ブロックInの外部音データブロックに対応するテンプレートブロックのブロック番号を選択することができない。すなわちゲームシステム10が波形データA+10や波形データA−10を取得した場合には、外部音の波形データInがブロック番号Aに対応する種類の波形データAであると特定することができない。
ここで、波形データA+10や波形データA−10を取得した場合であっても、外部音の波形データInが、ブロック番号Aに対応する種類の波形データAであると特定することができるように、外部音データブロックとテンプレートブロックの一致箇所の数の閾値を下げると、異なるテンプレートに外部音データが一致していると推定することが増加してしまう。そこで本実施形態のゲームシステム10は、波形データAに対応するテンプレートのみならず、波形データA+10や波形データA−10に対応するテンプレートを作成しておき、これらを予め記憶している。
図7は、再生レートが異なる複数の波形データのそれぞれに対応するテンプレートの作成手法を説明するための図である。図7では、第1玩具42の電子音に対応するテンプレートを作成する場合を例に挙げて説明する。まず、第1玩具42の電子音の再生レートが原音に対して±0%となった場合の波形データに対応するテンプレートは、図7の中段に示すように、サンプリング期間が4.0秒となる波形データAを、1個のブロックのサンプリング期間が0.5秒間となるように分割した8個のブロックの波形データのそれぞれに対応するブロックA1のテンプレートブロック〜ブロックA8のテンプレートブロックとなる。
そして、第1玩具42の電子音の再生レートが+10%となった場合の波形データに対応するテンプレートを作成する場合には、図7のステップS30に示すように、原音となる波形データAをサンプリングレートが+10%となるように変換した波形データA+10を求める。ここで波形データA+10のサンプリング期間は3.6秒間となっている。
そしてステップS31に示すように、3.6秒間の波形データA+10を、1個のブロックのサンプリング期間が0.5秒間となるように、波形データA+10の先頭から0.5秒間に対応する第1番目のブロックA1+10から、波形データA+10の末尾を含む0.5秒間に対応する第8番目のブロックA8+10までの8個のブロックに分割する。そして図3のステップS3で示した波形データAに対応するテンプレートの作成手法と同様に、ブロックA1+10〜ブロックA8+10のそれぞれを、1個のブロック要素のサンプリング期間が1/60秒間となるように、30個のブロック要素に分割する。すなわち3.6秒間の波形データA+10と0.4秒間の空白データを、240個のブロック要素に分割する。
そして、各ブロック要素の波形データから各ブロック要素のテンプレート要素を求め、ブロックA1+10に属する30個のブロック要素のテンプレート要素をブロックA1+10のテンプレートブロックとする。同様に、ブロックA2+10〜ブロックA8+10のそれぞれに属する30個のブロック要素のテンプレート要素のそれぞれを、ブロックA2+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックとする。こうして波形データA+10に対応するテンプレートとして、ブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックを作成する。なお、第8番目のブロックA8+10の末尾までの0.4秒間の空白データのブロック要素のテンプレート要素は0とする。
また、第1玩具42の電子音の再生レートが−10%となった場合の波形データに対応するテンプレートを作成する場合には、図7のステップS32に示すように、原音となる波形データAをサンプリングレートが−10%となるように変換した波形データA−10を求める。ここで波形データA−10のサンプリング期間は4.4秒間となっている。
そしてステップS33に示すように、4.4秒間の波形データA−10を、1個のブロックのサンプリング期間が0.5秒間となるように、波形データA−10の先頭から0.5秒間に対応する第1番目のブロックA1−10から、第8番目のブロックA8−10までの8個のブロックに分割する。そして図3のステップS3で示した波形データAに対応するテンプレートの作成手法と同様に、ブロックA1−10〜ブロックA8−10のそれぞれを、1個のブロック要素のサンプリング期間が1/60秒間となるように、30個のブロック要素に分割する。すなわち4.4秒間の波形データA−10のうち4.0秒間分の波形データを、240個のブロック要素に分割する。
そして、各ブロック要素の波形データから各ブロック要素のテンプレート要素を求め、ブロックA1−10に属する30個のブロック要素のテンプレート要素をブロックA1−10のテンプレートブロックとする。同様に、ブロックA2−10〜ブロックA8−10のそれぞれに属する30個のブロック要素のテンプレート要素のそれぞれを、ブロックA2−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックとする。こうして波形データA−10に対応するテンプレートとして、ブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックを作成する。ここで波形データA−10のサンプリング期間は4.4秒であるので、波形データA−10の末尾までの0.4秒間の波形データに関しては、テンプレートブロックは作成されない。
なお本実施形態では、図7に示すように、波形データA+10の第5番目のブロックA5+10と、波形データAの第5番目のブロックA5と、波形データA−10の第5番目のブロックA5−10とを比較すると、すなわち波形データの種類が同一でブロック番号の順序が同一であるがサンプリングレートが異なる複数のブロックの波形データを比較すると、それぞれの波形データの形状が大きく相違している。すなわち本実施形態では、波形データAのサンプリングレートを変化させても、8個のブロックのそれぞれの開始時点の間隔はいずれも0.5秒間となっているため、上記のような関係にある複数のブロックを比較すると、それぞれの開始時点に対応する波形データが互いに異なっている。そして本実施形態では、ブロック番号が大きくなるにつれ、すなわち波形データの先頭から離れるにつれ、上記のような関係にある複数のブロックの波形データの形状の相違が大きくなる。
更に本実施形態では、第1玩具42の電子音の再生レートが+7.5%、+5.0%、+2.5%、−2.5%、−5.0%、−7.5%となった場合の波形データに対応するテンプレートも同様の手法により作成する。すなわち、図8に示すように、第1玩具42の電子音を特定するためのテンプレートとして、波形データA+10、波形データA+7.5、波形データA+5.0、波形データA+2.5、波形データA、波形データA−2.5、波形データA−5.0、波形データA−7.5、波形データA−10の9種類の波形データのそれぞれに対応する9種類のテンプレートを作成し、9種類のテンプレートのそれぞれについてブロックA1〜ブロックA8までの8個のテンプレートブロックを作成する。
そして同様の手法により、第2玩具44の電子音を特定するためのテンプレートとして、波形データB+10、波形データB+7.5、波形データB+5.0、波形データB+2.5、波形データB、波形データB−2.5、波形データB−5.0、波形データB−7.5、波形データB−10の9種類の波形データのそれぞれに対応する9種類のテンプレートを作成し、9種類のテンプレートのそれぞれについて、ブロックB1〜ブロックB6までの6個のテンプレートブロックを作成する。また、第3玩具46の電子音を特定するためのテンプレートとして、波形データC+10、波形データC+7.5、波形データC+5.0、波形データC+2.5、波形データC、波形データC−2.5、波形データC−5.0、波形データC−7.5、波形データC−10の9種類の波形データのそれぞれに対応する9種類のテンプレートを作成し、9種類のテンプレートのそれぞれについて、ブロックC1〜ブロックC22までの22個のテンプレートブロックを作成する。また、第4玩具48の電子音を特定するためのテンプレートとして、波形データD+10、波形データD+7.5、波形データD+5.0、波形データD+2.5、波形データD、波形データD−2.5、波形データD−5.0、波形データD−7.5、波形データD−10の9種類の波形データのそれぞれに対応する9種類のテンプレートを作成し、9種類のテンプレートのそれぞれについて、ブロックC1〜ブロックC14までの14個のテンプレートブロックを作成する。すなわち第1玩具42〜第4玩具48の電子音の波形データに対応するテンプレートブロックとして、ブロックA1+10のテンプレートブロック〜ブロックD14−10のテンプレートブロックの450個のテンプレートブロックを作成する。
2−4.再生レートの変化に対応する比較手法
そして本実施形態では、図4で説明した比較処理において、1/60秒ごとに1個のブロックInの外部音データブロックを、ブロックA1+10のテンプレートブロック〜ブロックD14−10の450個のテンプレートブロックのそれぞれと比較する。詳細には、ゲームシステム10が例えば波形データA+10を取得すると、図4で説明した波形データAの比較処理と同様に、これにDFT処理を行うことにより30/60秒(0.5秒)間分の第1番目のブロックIn1の外部音データブロックを取得する。そしてブロックIn1の外部音データブロックをブロックA1+10のテンプレートブロック〜ブロックD14−10のテンプレートブロックの450個のテンプレートブロックのそれぞれと比較する。するとブロックIn1の外部音データブロックは、ブロックA1+10のテンプレートブロックに対して最も一致箇所の数が多く、かつ一致箇所の数が閾値である10を超えることになる。すると、ブロックIn1の外部音データブロックに対してブロックA1+10のテンプレートブロックが選択され、ブロック番号バッファの先頭から30/60秒後の位置である30番目の位置に、選択されたテンプレートブロックのブロック番号であるA1+10を記憶させる。
そして、ブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれは、波形データA+10を30/60秒(0.5秒)ごとに分割した波形データに対応しているので、外部音の波形データInを取得し始めてから240/60秒(4.0秒)が経過すると、図5で示した例と同様に、ブロック番号バッファには、A1+10〜A8+10までの8個のブロック番号が、30/60秒(0.5秒)ごとに、小さい番号から順に記憶されることになる。
従ってゲームシステム10は、例えば波形データA+10を取得した場合であっても、外部音の波形データInがブロック番号Aに対応する種類の波形データAであると特定することができる。すなわち、第1玩具42〜第4玩具48の電子音の再生レートが変化しても、ゲームシステム10はマイク38が検出した外部音に対応する電子音の種類を特定することができる。
しかし、第1玩具42〜第4玩具48の電子音の再生レートはテンプレートブロックのサンプリングレートのように段階的に変化するわけではないので、例えば第1玩具42の電子音の再生レートが原音に対して+6.25%となる波形データなど、テンプレートブロックのサンプリングレートの中間の再生レートの波形データが取得される場合もある。そこで本実施形態では、図4に示した比較処理では、第1玩具42〜第4玩具48の電子音の波形データであって、テンプレートブロックのサンプリングレートの中間の再生レートの波形データが取得された場合には、サンプリングレートが近いいずれかのテンプレートブロックのブロック番号が選択されるように、外部音データブロックとテンプレートブロックとの一致箇所の閾値が定められている。例えば、波形データAに対して再生レートが+6.25%となる波形データA+6.25が取得された場合には、第1番目のブロックIn1の外部音データブロックに関しては、サンプリングレートが+5.0%となる波形データA+5.0に対応する第1番目のブロックA1+5.0のテンプレートブロックと、サンプリングレートが+7.5%となる波形データA+7.5に対応する第1番目のブロックA1+7.5のテンプレートブロックのうち一致箇所が高い方が選択される。
図9は、波形データA+6.25が取得された場合において、テンプレートブロックが選択されるタイミングを示す図である。ここで波形データA+6.25が取得された場合には、仮に波形データA+6.25に対応するテンプレートブロックが用意されているとすれば、波形データA+6.25に対応するテンプレートブロックは30/60秒(0.5秒)ごとに選択される。しかし波形データA+6.25に対応するテンプレートブロックが用意されていないことにより、図9のステップS35に示すように、波形データA+5.0に対応するテンプレートブロックが選択される場合には、波形データA+5.0に対応するテンプレートブロックは波形データA+6.25の外部音データブロックに対してサンプリングレートが−1.25%となっているので、30/60秒(0.5秒)よりも1.25%短い間隔で選択される。一方、ステップS36に示すように、波形データA+7.5に対応するテンプレートブロックが選択される場合には、波形データA+7.5に対応するテンプレートブロックは波形データA+6.25の外部音データブロックに対してサンプリングレートが+1.25%となっているので、30/60秒(0.5秒)よりも1.25%長い間隔で選択される。
更に、例えば図10のステップS37に示すように、波形データA+6.25に対して、波形データA+5.0に対応するテンプレートブロックと波形データA+7.5に対応するテンプレートブロックとが交互に選択される場合には、30/60秒(0.5秒)よりも長い間隔でテンプレートブロックが選択される場合と短い間隔でテンプレートブロックが選択される場合とが交互に発生する。そして波形データA+6.25の取得が開始されてから時間が経過するにつれて、それぞれのテンプレートブロックが選択されるタイミングの間隔は、30/60秒(0.5秒)から乖離する。すなわち、ブロック番号が大きくなるにつれ、それぞれのテンプレートブロックが選択されるタイミングの間隔の誤差が大きくなる。
従ってこのような場合には、ブロック番号バッファでは、ステップS38に示すように、第1番目に選択されたテンプレートブロックのブロック番号である「A1+5.0」は、ブロック番号バッファの先頭から30番目の位置に記憶されるものの、ステップS39に示すように、第2番目に選択されたテンプレートブロックのブロック番号である「A2+7.5」は61番目の位置に記憶されるので、「A1+5.0」と「A2+7.5」との間隔は61番−30番=31コマとなる。そしてステップS40に示すように、第3番目に選択されたテンプレートブロックのブロック番号である「A3+5.0」は89番目の位置に記憶されるので、「A2+7.5」と「A3+5.0」との間隔は89番−61番=28コマとなる。
更に、ステップS41に示すように、第6番目に選択されたテンプレートブロックのブロック番号である「A6+7.5」は183番目の位置に記憶され、ステップS42に示すように、第7番目に選択されたテンプレートブロックのブロック番号である「A7+5.0」は208番目の位置に記憶されるので、「A6+7.5」と「A7+5.0」との間隔は25コマとなる。そしてステップS43に示すように、第8番目に選択されたテンプレートブロックのブロック番号である「A8+7.5」は243番目の位置に記憶されるので、「A7+5.0」と「A8+7.5」との間隔は243番−208番=35コマとなる。
また、実際の外部音に対応する外部音データブロックとテンプレートブロックとを比較すると、周囲の雑音やDFT処理等の影響により、それぞれのテンプレートブロックが選択されるタイミングの間隔に、更に前後数コマずつの誤差も発生する。そこで本実施形態では、図5で説明したように、最新のブロック番号が記憶された位置から30コマ前の位置に記憶されているブロック番号を探索する他にも、その前後「d=5+N」コマの範囲に記憶されているブロック番号を探索する。ここで「5」は、周囲の雑音やDFT処理の影響により発生する数コマの誤差を考慮した定数とされ、Nには、ブロック番号が大きくなるにつれ大きくなる誤差を考慮して、最新のブロック番号が示すテンプレートブロックの順序が代入される。
具体的には、図10のステップS38に示すように、まず、ブロック番号バッファに未だブロック番号が記憶されていない状態で、ブロック番号バッファにブロック番号「A1+5.0」が記憶されると、ステップS44に示すように、ブロック番号のカウント値に1を加算する。そしてステップS39に示すように、ブロック番号バッファにブロック番号「A2+7.5」が記憶されると、ステップS45に示すように、最新のブロック番号である「A2+7.5」が記憶された位置から30コマ前の位置の前後d=5+2=7コマの範囲に記憶されているブロック番号(第2条件の一例)を探索する。すなわち最新のブロック番号である「A2+7.5」が記憶された61番目の位置を基準として、37コマ前の24番目の位置から23コマ前の38番目の位置までに記憶されているブロック番号を探索する。すると30番目の位置に記憶されているブロック番号「A1+5.0」が探索される。
そして、探索されたブロック番号である「A1+5.0」と最新のブロック番号である「A2+7.5」とを比較して、両者の関係が、ブロック番号が示すテンプレートブロックの種類が一致しており、かつ順序の差が1であり(第3条件の一例)、かつサンプリングレートの差が2.5%以下である(第4条件の一例)という条件を満たしているか否かを判定する。そして、両者の関係がこのような条件を満たす場合には、第1玩具42が実際に出力したであろう電子音の再生レートの範囲であるrmax〜rminを、最新のブロック番号が示すサンプリングレートをRとして、rmax=R+2.5%、rmin=R−2.5%のようにして推定する。図10の例では、探索されたブロック番号である「A1+5.0」と最新のブロック番号である「A2+7.5」との関係は、ブロック番号の順序の差が1であり、サンプリングレートの差が2.5%以下であるという条件を満たし、最新のブロック番号である「A2+7.5」が示すサンプリングレートRは107.5%であるので、rmax=110.0%、rmin=105.0%と推定する。
すると、再生レートがrmaxの波形データが検出された場合にブロック番号バッファに記憶されるブロック番号の間隔であるDmaxと、再生レートがrminの波形データが検出された場合にブロック番号バッファに記憶されるブロック番号の間隔であるDminとを、理想状態での間隔である30コマをB、最新のブロック番号が示すサンプリングレートをR、最新のブロック番号が示す順序をN、探索されたブロック番号が示すサンプリングレートをR´、探索されたブロック番号が示す順序をN´として、Dmax=(B/rmax)(RN−R´N´)、Dmin=(B/rmin)(RN−R´N´)のようにして求める。ここで理想状態とは、第1玩具42の音源ICの電子音の再生レートや、ゲームシステム10のマイク38の検出特性や、マイク38が第1玩具42の電子音を検出したときの位置関係や温度などのそれぞれが基準値である状態を意味する。
図10の例では、最新のブロック番号「A2+7.5」が示すサンプリングレートRは107.5%、最新のブロック番号「A2+7.5」が示す順序Nは2であり、探索されたブロック番号「A1+5.0」が示すサンプリングレートR´は105.0、探索されたブロック番号「A1+5.0」が示す順序N´は1であるので、Dmax=(30/110.0)(107.5・2−105.0・1)=30、Dmin=(30/105.0)(107.5・2−105.0・1)=31.43となる。
すると、探索されたブロック番号「A1+5.0」と最新のブロック番号「A2+7.5」のブロック番号バッファにおける実際の間隔が、Dmax〜Dminの範囲に含まれるか判定される。図10の例では、探索されたブロック番号「A1+5.0」と最新のブロック番号「A2+7.5」のブロック番号バッファにおける実際の間隔は61番−30番=31コマであったので、Dmax=30〜Dmin=31.43の範囲に含まれる。
すると、探索されたブロック番号「A1+5.0」のテンプレートブロックと最新のブロック番号「A2+7.5」のテンプレートブロックとは、+5.0%〜+7.5%の間のいずれかの再生レートで再生された波形データAの一部に対応しているとみなされ、ステップS46に示すように、ブロック番号のカウント値に「1」が加算され、カウント値が「2」となる。
そしてステップS43に示すように、ブロック番号バッファにブロック番号「A8+7.5」が記憶されると、ステップS47に示すように、最新のブロック番号である「A8+7.5」が記憶された位置から30コマ前の位置の前後d=5+8=13コマの範囲に記憶されているブロック番号を探索する。すなわち最新のブロック番号である「A8+7.5」が記憶された243番目の位置を基準として、43コマ前の200番目の位置から17コマ前の226番目の位置までに記憶されているブロック番号を探索する。
そして、探索されたブロック番号である「A7+5.0」と最新のブロック番号である「A8+7.5」とを比較して、両者の関係が、ブロック番号が示すテンプレートブロックの種類が一致しており、かつ順序の差が1であり、かつサンプリングレートの差が2.5%以下であるという条件を満たしているか否かを判定する。そして、両者の関係がこのような条件を満たす場合には、第1玩具42が実際に出力したであろう電子音の再生レートの範囲であるrmax〜rminを推定する。図10の例では、探索されたブロック番号である「A7+5.0」と最新のブロック番号である「A8+7.5」との関係はこのような条件を満たし、最新のブロック番号である「A8+7.5」が示すサンプリングレートRは107.5%であるので、rmax=110.0%、rmin=105.0%と推定する。
すると、rmaxで波形データが検出された場合にブロック番号バッファに記憶されるブロック番号の間隔であるDmaxと、rminで波形データが検出された場合にブロック番号バッファに記憶されるブロック番号の間隔であるDminとを求める。図10の例では、最新のブロック番号「A8+7.5」が示すサンプリングレートRは107.5%、最新のブロック番号「A8+7.5」が示す順序Nは8であり、探索されたブロック番号「A7+5.0」が示すサンプリングレートR´は105.0、探索されたブロック番号「A7+5.0」が示す順序N´は7であるので、Dmax=(30/110.0)(107.5・8−105.0・7)=34.09、Dmin=(30/105.0)(107.5・8−105.0・7)=35.71となる。
すると、探索されたブロック番号「A7+5.0」と最新のブロック番号「A8+7.5」のブロック番号バッファにおける実際の間隔が、Dmax〜Dminの範囲に含まれるか判定される。図10の例では、探索されたブロック番号「A7+5.0」と最新のブロック番号「A8+7.5」のブロック番号バッファにおける実際の間隔は243番−208番=35コマであったので、Dmax=34.09〜Dmin=35.71の範囲に含まれる。
すると、探索されたブロック番号「A7+5.0」のテンプレートブロックと最新のブロック番号「A8+7.5」のテンプレートブロックとは、+5.0%〜+7.5%の間のいずれかの再生レートで再生された波形データAの一部に対応しているとみなされ、ステップS48に示すように、ブロック番号のカウント値に「1」が加算され、カウント値が「8」となる。
こうしてステップS48に示すように、ブロック番号のカウント値が8となった場合には、波形データAに対応する8個のテンプレートブロックが小さい番号から順に記憶されていると判定される。すなわち図10の例では、周囲の雑音やDFT処理等の影響による誤差や、ブロック番号が大きくなるにつれ大きくなる誤差が発生しても、外部音の波形データInが波形データAであると特定することができる。
また、本実施形態の手法では、マイク38が例えば第1玩具42の電子音を検出している間に大きな雑音を検出することにより、ブロック番号バッファにおいて第2番目のブロック番号が記憶されるべき位置に、いずれのブロック番号も記憶されなかったり、前後のブロック番号が示すテンプレートブロックの種類や順序やサンプリングレートが上述した条件を満たさないブロック番号が記憶されたりしてしまうことがある。そしてこのような場合には、ブロック番号のカウント値に「1」が加算されないが、本実施形態では、波形データAに対応するいくつかのブロック番号をカウントすることができなくても、他の複数のブロック番号の関係が所定の条件を満たしている場合には、外部音の波形データInが波形データAであると特定することができるようにしている。
詳細には、図11のステップS50に示すように、ブロック番号バッファの61番目の位置にブロック番号「B3−2.5」が記憶されたとすると、ステップS51に示すように、最新のブロック番号である「B3−2.5」が記憶された位置から30コマ前の位置の前後d=5+3=8コマの範囲に記憶されているブロック番号を探索する。すなわち最新のブロック番号である「B3−2.5」が記憶された61番目の位置を基準として、38コマ前の23番目の位置から22コマ前の39番目の位置までに記憶されているブロック番号を探索する。
そして、探索されたブロック番号である30番目の位置の「A1+5.0」と最新のブロック番号である「B3−2.5」とを比較して、両者の関係が、ブロック番号が示すテンプレートブロックの種類が一致しており、ブロック番号の順序の差が1であり、サンプリングレートの差が2.5%以下であるという条件を満たしているか否かを判定する。図11の例では、探索されたブロック番号である「A1+5.0」と最新のブロック番号である「B3−2.5」との関係は、ブロック番号が示すテンプレートブロックの種類が一致しておらず、順序の差が1でなく、サンプリングレートの差が2.5%以下でないので条件を満たさない。従ってステップS52に示すように、ブロック番号のカウント値には「1」は加算されず、カウント値は「1」のままとなる。
すると、ステップS53に示すように、最新のブロック番号である「B3−2.5」が記憶された位置から60コマ前の位置の前後d=8+1=9コマの範囲に記憶されているブロック番号を探索する。つまり本実施形態では、前回の選択タイミングで選択されたブロック番号が記憶されていると想定されるブロック番号バッファの位置を探索した結果、条件を満たすブロック番号が探索されなかった場合は、前々回の選択タイミングで選択されたブロック番号が記憶されていると想定されるブロック番号バッファの位置を探索する。すなわち最新のブロック番号である「B3−2.5」が記憶された61番目の位置を基準として、69コマ前の−8番目の位置から51コマ前の10番目の位置までに記憶されているブロック番号を探索する。
しかし図11の例では、最新のブロック番号である「B3−2.5」が記憶された61番目の位置を基準として、前々回の選択タイミングで選択されたブロック番号が記憶されていると想定されるブロック番号バッファの位置を探索しても、条件を満たすブロック番号は探索されない。そしてこの場合には、ステップS54に示すように、ブロック番号のカウント値には「1」は加算されず、カウント値は「1」のままとなる。
そしてステップS55に示すように、ブロック番号バッファの89番目の位置にブロック番号「A3+5.0」が記憶されたとすると、ステップS56に示すように、最新のブロック番号である「A3+5.0」が記憶された位置から30コマ前の位置の前後d=5+3=8コマの範囲に記憶されているブロック番号を探索する。すなわち最新のブロック番号である「A3+5.0」が記憶された89番目の位置を基準として、38コマ前の51番目の位置から22コマ前の67番目の位置までに記憶されているブロック番号を探索する。すると図11の例では、61番目の位置に記憶されているブロック番号「B3−2.5」が探索される。
そして、探索されたブロック番号である「B3−2.5」と最新のブロック番号である「A3+5.0」とを比較して、両者の関係が、ブロック番号が示すテンプレートブロックの種類が一致し、ブロック番号の順序の差が1であり、サンプリングレートの差が2.5%以下であるという条件を満たしているか否かを判定する。図11の例では、探索されたブロック番号である「B3−2.5」と最新のブロック番号である「A3+5.0」との関係は、ブロック番号が示すテンプレートブロックの種類が一致しておらず、順序の差が1でなく、サンプリングレートの差が2.5%以下でないので条件を満たさない。従ってステップS54に示すように、ブロック番号のカウント値には「1」は加算されず、カウント値は「1」のままとなる。
すると、ステップS57に示すように、最新のブロック番号である「A3+5.0」が記憶された位置から60コマ前の位置の前後d=8+1=9コマの範囲に記憶されているブロック番号を探索する。すなわち最新のブロック番号である「A3+5.0」が記憶された89番目の位置を基準として、69コマ前の20番目の位置から51コマ前の38番目の位置までに記憶されているブロック番号を探索する。すると図11の例では、30番目の位置に記憶されているブロック番号「A1+5.0」が探索される。
そして、探索されたブロック番号である「A1+5.0」と最新のブロック番号である「A3+5.0」とを比較して、両者の関係が、ブロック番号が示すテンプレートブロックの種類が一致しており、かつ順序の差が2であり、かつサンプリングレートの差が2.5%以下であるという条件を満たしているか否かを判定する。そして、両者の関係がこのような条件を満たす場合には、第1玩具42が実際に出力したであろう電子音の再生レートの範囲であるrmax〜rminを推定する。図11の例では、探索されたブロック番号である「A1+5.0」と最新のブロック番号である「A3+5.0」との関係は、ブロック番号が示すテンプレートブロックの種類が一致し、ブロック番号の順序の差が2であり、サンプリングレートの差が2.5%以下であるという条件を満たし、最新のブロック番号である「A3+5.0」が示すサンプリングレートRは105.0%であるので、rmax=107.5%、rmin=102.5%と推定する。
すると、rmaxで波形データが検出された場合にブロック番号バッファに記憶されるブロック番号の間隔であるDmaxと、rminで波形データが検出された場合にブロック番号バッファに記憶されるブロック番号の間隔であるDminとを求める。図11の例では、最新のブロック番号「A3+5.0」が示すサンプリングレートRは105.0%、最新のブロック番号「A3+5.0」が示す順序Nは3であり、探索されたブロック番号「A1+5.0」が示すサンプリングレートR´は105.0、探索されたブロック番号「A1+5.0」が示す順序N´は1であるので、Dmax=(30/107.5)(105.0・3−105.0・1)=58.60、Dmin=(30/102.5)(105.0・3−105.0・1)=61.46となる。
すると、探索されたブロック番号「A1+5.0」と最新のブロック番号「A3+5.0」のブロック番号バッファにおける実際の間隔が、Dmax〜Dminの範囲に含まれるか判定される。図11の例では、探索されたブロック番号「A1+5.0」と最新のブロック番号「A3+5.0」のブロック番号バッファにおける実際の間隔は89番−30番=59コマであったので、Dmax=58.60〜Dmin=61.46の範囲に含まれる。
すると、探索されたブロック番号「A1+5.0」のテンプレートブロックと最新のブロック番号「A3+5.0」のテンプレートブロックとは、+5.0%付近のいずれかの再生レートで再生された波形データAの一部に対応しているとみなされ、ステップS58に示すように、ブロック番号のカウント値に「1」が加算され、カウント値が「2」となる。そして、その他のブロック番号のテンプレートブロックのそれぞれが上述した条件を満たしている場合には、ステップS59に示すように、ブロック番号のカウント値が「7」となる。
こうしてステップS59に示すように、ブロック番号のカウント値が「7」となった場合には、波形データAに対応する7個のテンプレートブロックが小さい番号から順に記憶されていると判定される。すなわち図11の例では、波形データAに対応するいくつかのブロック番号をカウントすることができなくても、他の複数のブロック番号の関係が上述した条件を満たしている場合には、外部音の波形データInが波形データAであると特定することができる。具体的には本実施形態では、波形データAに対応する8個のテンプレートブロックのうち75%(所定の割合の一例)に相当する6個のテンプレートブロックのそれぞれが上述した条件を満たしている場合には、外部音の波形データInが波形データAであると特定するようにしている。
また本実施形態では、波形データBに対応する6個のテンプレートブロックのうち5個のテンプレートブロックのそれぞれが上述した条件を満たしている場合には、外部音の波形データInが波形データBであると特定するようにし、波形データCに対応する22個のテンプレートブロックのうち11個のテンプレートブロックのそれぞれが上述した条件を満たしている場合には、外部音の波形データInが波形データCであると特定するようにし、波形データDに対応する14個のテンプレートブロックのうち8個のテンプレートブロックのそれぞれが上述した条件を満たしている場合には、外部音の波形データInが波形データDであると特定するようにしている。すなわち本実施形態では、ブロック番号バッファに格納されたブロック番号のそれぞれが示す電子音の種類に応じて、電子音の種類を特定するためのブロック番号カウンタの閾値が異なっている。
3.機能ブロック
図12は、本実施形態におけるゲームシステム10の機能ブロック図の一例である。なお、本実施形態のゲームシステム10は、図12の構成要素(各部)の一部を省略した構成としてもよい。
第1検出部50は、十字キー20、第1ボタン22〜第4ボタン28、スタートボタン30、セレクトボタン32に対する操作を検出するためのものであり、その機能は、各種スイッチや感圧センサなどにより実現できる。
第2検出部52は、操作面39に対する接触操作の接触有無や接触位置を検出するためのものであり、その機能は、4線式や5線式のアナログ抵抗膜方式のタッチパネルなどにより実現できる。
音検出部54は、第1玩具42、第2玩具44、第3玩具46、第4玩具48が出力した電子音や、プレーヤの音声や手拍子などの外部音を検出するためのものであり、その機能はマイク38などにより実現できる。
表示部56は、ゲームシステム10により生成された画像を出力するものであり、その機能はCRTディスプレイ、液晶ディスプレイ、プラズマディスプレイ、プロジェクタなどにより実現できる。
音出力部58は、ゲームシステム10により生成された音を出力するものであり、その機能は、スピーカ36やヘッドフォンなどにより実現できる。
情報記憶媒体60(コンピュータにより読み取り可能な媒体)は、処理部100が種々の処理を行うためのプログラムやデータなどを格納するものであり、その機能は、メモリカード、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープなどにより実現できる。
記憶部62は、処理部100や通信部70などのワーク領域となるもので、その機能はRAMやVRAMなどにより実現できる。そして、本実施形態の記憶部62は、処理部100のワーク領域として使用される主記憶部621と、表示部56に表示させる画像が描画される描画バッファ622と、画像として表示されるオブジェクト(表示物)のデータが読み込まれるオブジェクトデータ記憶部623と、複数種類の電子音のそれぞれを示す複数種類のテンプレートを記憶するテンプレート記憶部624を含む。
特にテンプレート記憶部624は、複数種類の電子音のそれぞれについて、複数種類の電子音のそれぞれが互いに異なる再生レートで再生された場合の複数レートの電子音のそれぞれに対応する複数レートのテンプレートを記憶する。詳細にはテンプレート記憶部624は、複数レートのテンプレートのそれぞれとして、複数レートの電子音のそれぞれの部分であって互いに異なる開始時点から開始する第1期間分の複数の電子音部分のそれぞれに対応する複数のテンプレートブロックを記憶する。そして複数のテンプレートブロックのそれぞれは、開始時点の間隔が第1期間である複数の電子音部分のそれぞれに対応する。
具体的には図7に示したように、例えば第1玩具42の電子音の再生レートが+10%となった場合に対応するブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれは、再生レートが+10%となった第1玩具42の電子音の先頭を開始時点とする0.5秒間(第1期間の一例)分の電子音部分から、先頭から3.5秒後を開始時点とする0.5秒間分の電子音部分までの8個の0.5秒間分の電子音部分のそれぞれに対応している。すなわちブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの開始時点の間隔は0.5秒間(第1期間の一例)となっており、隣接するテンプレートブロックのそれぞれの終了時点と開始時点の間に隙間がないようになっている。
そして本実施形態では、第1玩具42の電子音の再生レートが−10%となった場合に対応するブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックのそれぞれも、再生レートが−10%となった第1玩具42の電子音の先頭を開始時点とする0.5秒間(第1期間の一例)分の電子音部分から、先頭から3.5秒後を開始時点とする0.5秒間分の電子音部分までの8個の0.5秒間分の電子音部分のそれぞれに対応している。すなわちブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの開始時点の間隔は0.5秒間(第1期間の一例)となっており、隣接するテンプレートブロックのそれぞれの終了時点と開始時点の間に隙間がないようになっている。
通信部70は、外部(例えばサーバや他の携帯端末)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用の集積回路(ASIC)などのハードウェアや、プログラムなどにより実現できる。
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバ)が有する情報記憶媒体からネットワーク及び通信部70を介して情報記憶媒体60(記憶部62)に配信してもよい。このようなホスト装置(サーバ)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、第1検出部50、第2検出部52、音検出部54などからの検出情報や、通信部70からの受信情報や、プログラムやデータなどに基づいて、ゲーム処理、画像生成処理、音生成処理などの処理を行う。この処理部100は、記憶部62をワーク領域として各種処理を行い、その機能は各種プロセッサ(CPU、DSP等)、各種集積回路(IC、ASIC)などのハードウェアや、プログラムにより実現できる。
特に、本実施形態の処理部100は、取得部102、特定部104、エラー判定部106、表示制御部114、通信制御部116、描画部120、音生成部130を含む。なお、これらの一部を省略する構成としてもよい。
取得部102は、音検出部54が検出した外部音を示す外部音データを取得する。詳細には取得部102は、第2期間ごとに第1期間分の外部音に対応する外部音データブロックを取得する。具体的には図3で示したように、1/60秒(第2期間の一例)ごとに1/60秒間(第2期間の一例)分の外部音の波形データに対してDFT処理を行い、1/60秒ごとにブロック要素の外部音データ要素を外部音データバッファに記憶させる。そして、1/60秒ごとに30/60秒(0.5秒)分の30個のブロック要素の外部音データ要素を1個の外部音データブロックとして取得する。
特定部104は、複数種類のテンプレートのそれぞれと外部音データとを比較して、外部音に対応する電子音の種類を特定する。詳細には特定部104は、図4に示したように、外部音データブロックを取得するごとに複数のテンプレートブロックのそれぞれと外部音データブロックとを比較する。具体的には特定部104は、図4に示したように、外部音データブロックに対して、最も一致箇所の数が多くかつ一致箇所の数が閾値である10を超える第1条件を満たすテンプレートブロックを選択する処理と、異なる取得時点において取得された外部音データブロックに対して第1条件を満たすテンプレートブロックが選択された場合に、図10に示したように、取得時点の間隔がブロック番号バッファにおいて30±dコマとなる第2条件を満たすか否かを判定する処理と、第2条件が満たされた場合に、選択されたテンプレートブロックに対応する電子音の種類に基づいて、外部音に対応する電子音の種類を特定する処理とを行う。
また特定部104は、異なる取得時点において取得された外部音データブロックに対して第1条件を満たすテンプレートブロックが選択された場合に、図10に示したように、選択されたテンプレートブロックのそれぞれが対応する電子音部分の順序が、順序の差が1となる第3条件を満たすか否かを判定する処理と、第3条件が満たされた場合に、選択されたテンプレートブロックに対応する電子音の種類に基づいて、外部音に対応する電子音の種類を特定する処理とを行う。
また特定部は、異なる取得時点において取得された外部音データブロックに対して第1条件を満たすテンプレートブロックが選択された場合に、図10に示したように、選択されたテンプレートブロックのそれぞれが対応する電子音部分の再生レートが、再生レートの差が2.5%以下となる第4条件を満たすか否かを判定する処理と、第4条件が満たされた場合に、選択されたテンプレートブロックに対応する電子音の種類に基づいて、外部音に対応する電子音の種類を特定する処理とを行う。
エラー判定部106は、外部音に対応する電子音の種類が特定されない場合に、音検出部54の外部音の検出状況に基づいて、いずれのエラーが発生しているかを判定する。具体的にはエラー判定部106は、音入力モードが開始されてから30秒が経過するまでに外部音に対応する電子音の種類が特定されない場合に、音入力モードが開始されてから検出された外部音の音量に基づいて、いずれのエラー画像を表示部56に表示させるかを判定する。
表示制御部114は、第1検出部50、第2検出部52、音検出部54などからの検出情報や、通信部70からの受信情報や、プログラムなどに基づいて、表示部56に表示される画像(オブジェクト画像)の表示制御を行う。詳細には表示制御部114は、表示すべきオブジェクト(キャラクタ、移動体、コース、建物、樹木、柱、壁、マップ、背景など)を発生させたり、オブジェクトの表示や表示位置を指示したり、オブジェクトを消滅させたりするなどの表示制御を行う。即ち発生したオブジェクトをオブジェクトリストに登録したり、オブジェクトリストを描画部120等に転送したり、消滅したオブジェクトをオブジェクトリストから削除したりするなどの表示制御を行う。そして表示制御部114は、オブジェクトを移動させるための移動処理とオブジェクトを動作させるための動作処理とを行う。
移動処理としては、表示制御部114は、第1検出部50、第2検出部52、音検出部54などからの検出情報や、通信部70からの受信情報や、プログラム(移動アルゴリズム)や、各種データ(移動データ)などに基づいて、オブジェクトをオブジェクト空間内で移動させる処理(移動シミュレーション)を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動処理や画像生成処理を行う時間の単位である。
動作処理としては、表示制御部114は、第1検出部50、第2検出部52、音検出部54などからの検出情報や、通信部70からの受信情報や、プログラム(動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクトをオブジェクト空間内で動作(モーション、アニメーション)させる処理(動作シミュレーション)を行う。具体的には、オブジェクトの動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。
特に表示制御部114は、実行部として機能し、特定された電子音の種類に対応させてオブジェクトの表示制御を行う。具体的には表示制御部114は、マイク38により検出した外部音が4種類の玩具のいずれかの電子音であると特定した場合には、第1表示面17や第2表示面33に表示されている画像を、特定した電子音の種類に対応させて変化させる。例えば、特定した電子音の種類に対応するキャラクタを、発生させたり、移動させたり、動作させたり、変形させたり、消滅させたりする。また、特定した電子音の種類に対応する動作をキャラクタに行わせる。
また表示制御部114は、エラー判定部106の判定結果に基づいて、エラー画像を表示部56に表示させる。具体的には表示制御部114は、図2(A)、図2(B)、図2(C)に示したエラー画像のうち、エラー判定部106が判定したエラーの種類に対応するエラー画像を第1表示面17や第2表示面33に表示させる。
通信制御部116は、他のゲームシステム10に送信するパケットを生成する処理、パケット送信先のゲームシステム10のネットワークアドレスを指定する処理、受信したパケットを記憶部62に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する通信部70の制御処理等を行う。特に本実施形態では、ゲームをネットワーク(例えば、インターネット)を利用して実行するために必要なデータパケット及びコマンドパケットを生成する制御や、通信部70を介してデータパケット及びコマンドパケットを送受信させる制御を行う。
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部56に出力する。
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部58に出力する。
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
4.本実施形態の処理
次に、本実施形態のゲームシステム10で行われる処理の流れについて説明する。
図13は、本実施形態のゲームシステム10が行う処理の流れの概略を示すフローチャートである。図13に示すようにゲームシステム10は、プレーヤの選択操作により音入力モードが実行されると(ステップS100でY)、マイク38が検出した外部音に基づいて外部音データを取得する1/60秒ごとの取得タイミングが到来したか否かを判断する(ステップS102)。そして取得タイミングが到来すると(ステップS102でY)、1/60秒間分の外部音データを取得する(ステップS104)。すると、取得した1/60秒間分の外部音データに対して、サンプリングレートを1/3程度まで低下させるとともに、低域のノイズを除去する前処理を行う(ステップS106)。すると、外部音データブロックと複数のテンプレートブロックとを比較して、第1条件を満たすテンプレートブロックを選択する比較処理を行う(ステップS108)。そして比較処理において第1条件を満たすテンプレートブロックが選択されない場合には(ステップS110でN)、音入力モードの実行が開始されてから30秒が経過したか否かを判断し(ステップS112)、30秒が経過した場合には(ステップS112でY)、音入力モードの実行が開始されてから30秒の間に取得した外部音データの音量に応じてエラー画像を表示部56に表示させる(ステップS114)。また、30秒が経過していない場合には(ステップS112でN)、ステップS102に戻る。
一方、比較処理において第1条件を満たすテンプレートブロックが選択された場合には(ステップS110でY)、選択されたテンプレートブロックのブロック番号と、他の取得タイミングで取得された外部音データブロックに対して選択されたテンプレートブロックのブロック番号とに基づいて、外部音に対応する電子音の種類を特定する特定処理を行う(ステップS116)。そして特定処理において、外部音に対応する電子音の種類が特定されない場合には(ステップS118でN)、ステップS102に戻る。一方、特定処理において外部音に対応する電子音の種類が特定された場合には(ステップS118でY)、特定した電子音の種類に応じたキャラクタを表示部56に表示させる(ステップS120)。
なお、プレーヤの選択操作により文字入力モードが実行されると(ステップS122でY)、タッチペン41による第1表示面17への文字入力を受け付け、第1表示面17に書かれた文字を認識する(ステップS124)。本実施形態では、4種類の玩具のそれぞれに対応する識別情報が4種類の玩具のそれぞれに示されており、識別情報に対応する文字が第1表示面17に書かれたと判定した場合には(ステップS126でY)、識別情報に対応する玩具に応じたキャラクタを表示部56に表示させる(ステップS128)。このようにすれば、玩具の電池が切れるなど玩具が電子音を出力できない場合や、ゲームシステム10が電子音を特定することができない場合などでも、プレーヤが持っている玩具に対応するキャラクタを表示部に表示させることができる。
図14は、図13のステップS108でゲームシステム10が行う比較処理の流れの詳細を示すフローチャートである。図14に示すように比較処理では、ゲームシステム10は、1/60秒間分の外部音データをDFT処理によりパワースペクトルに変換し(ステップS130)、大きなスペクトルの周波数を選択して外部音データ要素を作成し(ステップS132)、外部音データ要素を外部音データバッファに格納する(ステップS134)。そして、30/60秒(0.5秒)間分の外部音データ要素である外部音データブロックを、450個のテンプレートブロックのそれぞれと比較して、値が一致する箇所をカウントする(ステップS136)。そして値が一致した箇所が最も多いテンプレートブロックを選択し(ステップS138)、一致箇所が閾値(例えば10箇所)以上である場合には(ステップSでY140)、選択したテンプレートブロックのブロック番号をブロック番号バッファに格納する(ステップS142)。一方、一致箇所が閾値(例えば10箇所)以上でない場合には(ステップSでN140)、NULLをブロック番号バッファに格納する(ステップS144)。
図15は、図13のステップS116でゲームシステム10が行う特定処理の流れの詳細を示すフローチャートである。図15に示すように特定処理では、ゲームシステム10は、ブロック番号バッファに格納された最新のブロック番号が示すテンプレートブロックが対応する電子音の種類X(例えばA)、最新のブロック番号が示すテンプレートブロックの順序N(例えば2)、最新のブロック番号が示すテンプレートブロックのサンプリングレートR(例えば102.5)を特定する(ステップS150)。そして、ブロック番号バッファの位置のうちブロック番号を探索する位置を示すnに「1」を代入し、1ブロック(30コマ)前を探索することを指定する(ステップS152)。そして、周囲の雑音やDFT処理の影響により発生する数コマの誤差を考慮したDを定数「5」として、ブロック番号を探索する範囲を指定するためのdを、−(D+N)とする(ステップS154)。そして、理想状態での間隔であるBを「30」として、最新のブロック番号が格納された位置からnB+d前に格納されたブロック番号を探索する(ステップS156)。
そして、ブロック番号が探索されると、探索されたブロック番号が示すテンプレートブロックが対応する電子音の種類X´(例えばA)、探索されたブロック番号が示すテンプレートブロックの順序N´(例えば1)、探索されたブロック番号が示すテンプレートブロックのサンプリングレートR´(例えば105.0)を特定する(ステップS158)。そして、最新のブロック番号が示すテンプレートブロックが対応する電子音の種類Xと、探索されたブロック番号が示すテンプレートブロックが対応する電子音の種類X´とが一致し(ステップS160でY)、最新のブロック番号が示すテンプレートブロックの順序Nと、探索されたブロック番号が示すテンプレートブロックの順序N´との差がnであり(ステップS162でY)、最新のブロック番号が示すテンプレートブロックのサンプリングレートRと、探索されたブロック番号が示すテンプレートブロックのサンプリングレートR´との差の絶対値が2.5%以下である場合には(ステップS164でY)、ブロック番号バッファにおける最新のブロック番号の格納位置Pと、探索されたブロック番号の格納位置P´から、実際のブロック間隔Iを求める(ステップS166)。
そして、最新のブロック番号が示すサンプリングレートRに基づいて、玩具が実際に出力したであろうと推定される電子音の再生レートrの範囲であるrmax〜rminを、rmax=R+2.5%、rmin=R−2.5%のようにして求める(ステップS168)。そして、推定再生レートrの範囲で電子音が出力された場合における最新のブロック番号の位置と探索されたブロック番号の位置との間隔である正しいブロック間隔の範囲を、Dmax=(B/rmax)(RN−R´N´)、Dmin=(B/rmin)(RN−R´N´)のようにして求める(ステップS170)。そして、実際のブロック間隔IがDmax〜Dminの範囲に含まれるか否かを判断する(ステップS172)。
そして実際のブロック間隔IがDmax〜Dminの範囲に含まれる場合には(ステップS172でY)、ブロック番号カウンタのカウント値Cを更新する(ステップS174)。すると、dに「1」が加算され(ステップS176)、dがD+Nよりも大きい場合には(ステップS178でY)、nに「1」が加算され、更に以前のブロックを探索することを指定する(ステップS180)。そして、何ブロック前までを探索するかの閾値を示すskipよりもnが大きい場合には(ステップS182でY)、ブロック番号カウンタのカウント値Cが閾値cを超えたか否かを判断し(ステップS184)、カウント値Cが閾値cを超えた場合には(ステップS184でY)、ブロック番号バッファに格納されたブロック番号のそれぞれが示すテンプレートブロックの種類Xのうち、最も数が多い種類Xを、マイク38が検出した電子音の種類として特定し(ステップS186)、特定処理を終了する。一方、カウント値Cが閾値を超えない場合には(ステップS184でN)、マイク38が検出した電子音の種類を特定せずに、特定処理を終了する。
ここで本実施形態では、ステップS182の値「skip」は定数「2」とされ、最新のブロック番号が格納されている位置から2ブロック前までに対応する位置を探索するようにしている。従って、ステップS180においてnに「1」が加算されてn=2となった場合には、skipよりもnが大きくないので(ステップS182でN)、ステップS154に戻る。これにより、周囲の雑音などによりブロック番号バッファにおいて1ブロック分のブロック番号が欠落しても、2ブロック前のブロック番号が最新のブロック番号に対して上記条件を満たす場合には、ステップS174において、ブロック番号カウンタのカウント値Cを更新することができる。
また、最新のブロック番号が示すテンプレートブロックが対応する電子音の種類Xと、探索されたブロック番号が示すテンプレートブロックが対応する電子音の種類X´とが一致しない場合(ステップS160でN)、あるいは、最新のブロック番号が示すテンプレートブロックの順序Nと、探索されたブロック番号が示すテンプレートブロックの順序N´との差がnでない場合(ステップS162でN)、あるいは、最新のブロック番号が示すテンプレートブロックのサンプリングレートRと、探索されたブロック番号が示すテンプレートブロックのサンプリングレートR´との差の絶対値が2.5%以下でない場合(ステップS164でN)、あるいは、実際のブロック間隔IがDmax〜Dminの範囲に含まれない場合には(ステップS172でN)、ステップS176に進み、dに「1」が加算される。また、dがD+Nよりも大きくない場合には(ステップS178でN)、ステップS156に戻る。
5.変形例
本発明は、上記の実施形態で説明したものに限らず、種々の変形実施が可能であり、以下に変形例を紹介する。なお、上記実施形態や、以下において変形例として説明する各種の手法は、本発明を実現する制御手法として適宜組み合わせて採用することができる。
5−1.変形例1
5−1−1.テンプレートの作成手法
例えば上記実施形態では、図7に示したように、複数のテンプレートブロックのそれぞれは、開始時点の間隔が第1期間となる複数の電子音部分のそれぞれに対応している例を挙げて説明したが、上記実施形態では、図9に示したように、電子音の再生レートが予め想定した再生レートの中間の再生レートとなる場合には、電子音に対応する外部音の取得が開始されてから時間が経過するにつれ、外部音データブロックとテンプレートブロックとが対応する時間間隔のずれが大きくなってしまう。すると上記実施形態では、図10や図11に示したように、異なる取得時点において取得された外部音データブロックに対して第1条件を満たすテンプレートブロックが選択された場合に、取得時点の間隔が第2条件を満たすか否かを判定する処理を行う際には、電子音に対応する外部音の取得が開始されてから時間が経過するにつれ大きくなる誤差を考慮しなければならないので、処理負荷が大きくなる。上記実施形態では、ブロック番号バッファにおける探索範囲が広がるため、探索処理の負荷が増加する。
そこで以下に挙げる例では、複数のテンプレートブロックのそれぞれは、開始時点の間隔が再生レートに応じた期間となる複数の電子音部分のそれぞれに対応するようにしている。このようにすれば、電子音の再生レートが予め想定した再生レートの中間の再生レートとなる場合であっても、外部音データブロックとテンプレートブロックとが対応する時間間隔のずれを抑制することができる。
図16は、開始時点の間隔が再生レートに応じた期間となる複数の電子音部分のそれぞれに対応する複数のテンプレートブロックの作成手法を説明するための図である。図16では、第1玩具42の電子音に対応するテンプレートを作成する場合を例に挙げて説明する。まず、第1玩具42の電子音の再生レートが+10%となった場合の波形データに対応するテンプレートを作成する場合には、図16のステップS200に示すように、原音となる波形データAをサンプリングレートが+10%となるように変換した波形データA+10を求める。ここで波形データA+10のサンプリング期間は3.6秒間となっている。
そしてステップS201に示すように、3.6秒間の波形データA+10を、1個のブロックのサンプリング期間が0.5秒間となるように、8個のブロックに分割する。ここでこの例では上記実施形態とは異なり、3.6秒間の波形データA+10を、波形データA+10の先頭から0.5秒間に対応する第1番目のブロックA1+10と、波形データA+10の先頭から0.45秒後を開始時点とする0.5秒間に対応する第2番目のブロックA2+10と、波形データA+10の先頭から0.9秒後を開始時点とする0.5秒間に対応する第3番目のブロックA3+10と、波形データA+10の先頭から1.35秒後を開始時点とする0.5秒間に対応する第4番目のブロックA4+10と、波形データA+10の先頭から1.80秒後を開始時点とする0.5秒間に対応する第5番目のブロックA5+10と、波形データA+10の先頭から2.25秒後を開始時点とする0.5秒間に対応する第6番目のブロックA6+10と、波形データA+10の先頭から2.7秒後を開始時点とする0.5秒間に対応する第7番目のブロックA7+10と、波形データA+10の先頭から3.15秒後を開始時点とする0.5秒間に対応する第8番目のブロックA8+10の8個のブロックに分割する。
そして図3のステップS3で示した波形データAに対応するテンプレートの作成手法と同様に、ブロックA1+10〜ブロックA8+10のそれぞれを、1個のブロック要素のサンプリング期間が1/60秒間となるように、30個のブロック要素に分割する。
そして、各ブロック要素の波形データから各ブロック要素のテンプレート要素を求め、ブロックA1+10に属する30個のブロック要素のテンプレート要素をブロックA1+10のテンプレートブロックとする。同様に、ブロックA2+10〜ブロックA8+10のそれぞれに属する30個のブロック要素のテンプレート要素のそれぞれを、ブロックA2+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックとする。こうして波形データA+10に対応するテンプレートとして、ブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックを作成する。なお、第8番目のブロックA8+10の末尾までの0.05秒間は空白データとなるので、ブロック要素のテンプレート要素は0とする。
すなわちこの例では、ブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれは、再生レートが+10%となった第1玩具42の電子音の先頭を開始時点とする0.5秒間(第1期間の一例)分の電子音部分から、先頭から3.15秒後を開始時点とする0.5秒間分の電子音部分までの8個の0.5秒間分の電子音部分のそれぞれに対応している。そしてブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの開始時点の間隔は、0.45秒間(再生レートに応じた期間の一例)となっており、図16の中段に示すブロックA1のテンプレートブロック〜ブロックA8のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの開始時点の間隔である0.5秒間に対して10%短い期間となっている。
そして、ブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれは、隣接する電子音部分に対して重複しており、この重複期間は、電子音部分のそれぞれの期間である0.5秒間の10%に相当する0.05秒ずつとなっている。
そして、ブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの終了時点の間隔も、0.45秒間(再生レートに応じた期間の一例)となっている。従ってこの例では、波形データA+10が取得された場合には、上記実施形態の図4に示した比較処理では、ブロックA1+10のテンプレートブロック〜ブロックA8+10のテンプレートブロックのそれぞれが選択されるタイミングの間隔は、0.45秒間となる。すなわちこの例では上記実施形態とは異なり、テンプレートブロックのサンプリングレートと一致する再生レートの波形データが取得された場合であっても、各テンプレートブロックが選択されるタイミングの間隔は0.5秒間とはならず、波形データA+10が取得された場合には、0.5秒間に対して10%短い期間となる。
また、第1玩具42の電子音の再生レートが−10%となった場合の波形データに対応するテンプレートを作成する場合には、図16のステップS202に示すように、原音となる波形データAをサンプリングレートが−10%となるように変換した波形データA−10を求める。ここで波形データA−10のサンプリング期間は4.4秒間となっている。
そしてステップS203に示すように、4.4秒間の波形データA−10を、1個のブロックのサンプリング期間が0.5秒間となるように、8個のブロックに分割する。そして4.4秒間の波形データA−10を、波形データA−10の先頭から0.5秒間に対応する第1番目のブロックA1−10と、波形データA−10の先頭から0.55秒後を開始時点とする0.5秒間に対応する第2番目のブロックA2−10と、波形データA−10の先頭から1.1秒後を開始時点とする0.5秒間に対応する第3番目のブロックA3−10と、波形データA−10の先頭から1.65秒後を開始時点とする0.5秒間に対応する第4番目のブロックA4−10と、波形データA−10の先頭から2.2秒後を開始時点とする0.5秒間に対応する第5番目のブロックA5−10と、波形データA−10の先頭から2.75秒後を開始時点とする0.5秒間に対応する第6番目のブロックA6−10と、波形データA−10の先頭から3.3秒後を開始時点とする0.5秒間に対応する第7番目のブロックA7−10と、波形データA−10の先頭から3.85秒後を開始時点とする0.5秒間に対応する第8番目のブロックA8−10の8個のブロックに分割する。
そして図3のステップS3で示した波形データAに対応するテンプレートの作成手法と同様に、ブロックA1−10〜ブロックA8−10のそれぞれを、1個のブロック要素のサンプリング期間が1/60秒間となるように、30個のブロック要素に分割する。
そして、各ブロック要素の波形データから各ブロック要素のテンプレート要素を求め、ブロックA1−10に属する30個のブロック要素のテンプレート要素をブロックA1−10のテンプレートブロックとする。同様に、ブロックA2−10〜ブロックA8−10のそれぞれに属する30個のブロック要素のテンプレート要素のそれぞれを、ブロックA2−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックとする。こうして波形データA−10に対応するテンプレートとして、ブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックを作成する。ここで波形データA−10のサンプリング期間は4.4秒であるので、波形データA−10の末尾までの0.05秒間の波形データに関しては、テンプレートブロックは作成されない。
すなわちこの例では、ブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックのそれぞれは、再生レートが−10%となった第1玩具42の電子音の先頭を開始時点とする0.5秒間(第1期間の一例)分の電子音部分から、先頭から3.85秒後を開始時点とする0.5秒間分の電子音部分までの8個の0.5秒間分の電子音部分のそれぞれに対応している。そしてブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの開始時点の間隔は、0.55秒間(再生レートに応じた期間の一例)となっており、図16の中段に示すブロックA1のテンプレートブロック〜ブロックA8のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの開始時点の間隔である0.5秒間に対して10%長い期間となっている。
そして、ブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれは、隣接する電子音部分に対して間隔が空いており、この間隔の期間は、電子音部分のそれぞれの期間である0.5秒間の10%に相当する0.05秒ずつとなっている。
そして、ブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックのそれぞれが対応する電子音部分のそれぞれの終了時点の間隔も、0.55秒間(再生レートに応じた期間の一例)となっている。従って、波形データA−10が取得された場合には、上記実施形態の図4に示した比較処理では、ブロックA1−10のテンプレートブロック〜ブロックA8−10のテンプレートブロックのそれぞれが選択されるタイミングの間隔は、0.55秒間となる。すなわち波形データA−10が取得された場合には、0.5秒間に対して10%長い期間となる。
そしてこの例でも上記実施形態と同様に、第1玩具42〜第4玩具48の電子音の波形データに対応するテンプレートブロックとして、ブロックA1+10のテンプレートブロック〜ブロックD14−10のテンプレートブロックの450個のテンプレートブロックを作成する。
そしてこの例では、図16に示すように、波形データA+10の第5番目のブロックA5+10と、波形データAの第5番目のブロックA5と、波形データA−10の第5番目のブロックA5−10とを比較すると、すなわち波形データの種類が同一でブロック番号の順序が同一であるがサンプリングレートが異なる複数のブロックの波形データを比較すると、それぞれの波形データの形状があまり相違していない。すなわちこの例では、波形データAのサンプリングレートの変化に応じて、8個のブロックのそれぞれの開始時点の間隔を変化させているため、上記のような関係にある複数のブロックを比較すると、それぞれの開始時点に対応する波形データが互いに一致している。そしてこの例では、ブロック番号が大きくなっても、すなわち波形データの先頭から離れても、上記のような関係にある複数のブロックの波形データの形状の相違が大きくならない。
5−1−2.比較手法
上述したようにこの例では、上記実施形態の図4に示した比較処理では、テンプレートブロックのサンプリングレートと一致する再生レートの波形データが取得された場合であっても、各テンプレートブロックが選択されるタイミングの間隔は0.5秒間とはならず、取得された波形データの再生レートに応じた間隔となる。しかし、この例における各テンプレートブロックが選択されるタイミングの間隔の再生レートに応じた変化は、波形データA+10や波形データA−10などの再生レートの変化が大きい波形データが取得された場合であっても、0.5秒間に対して10%となる0.05秒間程度であり、図10で示したブロック番号バッファのコマ数では3コマに過ぎない。従ってこの例では、最新のブロック番号が記憶された位置から30コマ前の位置に記憶されているブロック番号を探索する際に、その前後「d=5」コマの範囲に記憶されているブロック番号を探索すれば、各テンプレートブロックが選択されるタイミングの間隔の再生レートに応じた変化を吸収することができる。
また、この例でも上記実施形態と同様に、例えば第1玩具42の電子音の再生レートが原音に対して+6.25%となる波形データなど、テンプレートブロックのサンプリングレートの中間の再生レートの波形データが取得される場合がある。
図17は、ゲームシステム10がこの例のテンプレートブロックを用いる場合に、波形データA+6.25が取得された場合において、テンプレートブロックが選択されるタイミングを示す図である。ここで波形データA+6.25が取得された場合には、仮に波形データA+6.25に対応するテンプレートブロックが用意されているとすれば、波形データA+6.25に対応するテンプレートブロックは約29/60秒ごとに選択される。しかし波形データA+6.25に対応するテンプレートブロックが用意されていないことにより、図17に示すように、波形データA+5.0に対応するテンプレートブロックが選択される場合には、波形データA+5.0に対応するテンプレートブロックは波形データA+6.25の外部音データブロックに対してサンプリングレートが−1.25%となっているので、約29/60秒よりも1.25%短い間隔で選択される。一方、波形データA+7.5に対応するテンプレートブロックが選択される場合には、波形データA+7.5に対応するテンプレートブロックは波形データA+6.25の外部音データブロックに対してサンプリングレートが+1.25%となっているので、約29/60秒よりも1.25%長い間隔で選択される。
しかしこの例では、例えば図18に示すように、波形データA+6.25に対して、波形データA+5.0に対応するテンプレートブロックと波形データA+7.5に対応するテンプレートブロックとが交互に選択される場合には、約29/60秒よりも長い間隔でテンプレートブロックが選択される場合と短い間隔でテンプレートブロックが選択される場合とが交互に発生するものの、上記実施形態とは異なり、波形データA+6.25の取得が開始されてから時間が経過するにつれて、それぞれのテンプレートブロックが選択されるタイミングの間隔は約29/60秒から乖離しない。すなわちこの例では、ブロック番号が大きくなっても、それぞれのテンプレートブロックが選択されるタイミングの間隔の誤差が変化しない。
従ってこの例では、上記実施形態とは異なり、最新のブロック番号が記憶された位置から30コマ前の位置に記憶されているブロック番号を探索する際に、ブロック番号が大きくなるにつれ大きくなる誤差を考慮する必要がないため、ブロック番号を探索する範囲に最新のブロック番号が示すテンプレートブロックの順序Nを加算する必要がない。すなわちこの例では、上記実施形態と比較して、ブロック番号を探索する範囲を狭くすることができ、処理負荷を軽減することができる。
図19は、ゲームシステム10がこの例のテンプレートブロックを用いる場合に図13のステップS116で行う特定処理の流れの詳細を示すフローチャートである。図19に示すようにこの例の特定処理では、ゲームシステム10は、ブロック番号バッファに格納された最新のブロック番号が示すテンプレートブロックが対応する電子音の種類X(例えばA)、最新のブロック番号が示すテンプレートブロックの順序N(例えば2)、最新のブロック番号が示すテンプレートブロックのサンプリングレートR(例えば+102.5)を特定する(ステップS250)。そして、ブロック番号バッファの位置のうちブロック番号を探索する位置を示すnに「1」を代入し、1ブロック(30コマ)前を探索することを指定する(ステップS252)。そして、この例における各テンプレートブロックが選択されるタイミングの間隔の再生レートに応じた変化や、周囲の雑音やDFT処理の影響により発生する数コマの誤差を考慮したDを定数「5」として、ブロック番号を探索する範囲を指定するためのdを、d=−Dとする(ステップS254)。そして、理想状態での間隔であるBを「30」として、最新のブロック番号が格納された位置からnB+d前に格納されたブロック番号を探索する(ステップS256)。
そして、ブロック番号が探索されると、探索されたブロック番号が示すテンプレートブロックが対応する電子音の種類X´(例えばA)、探索されたブロック番号が示すテンプレートブロックの順序N´(例えば1)、探索されたブロック番号が示すテンプレートブロックのサンプリングレートR´(例えば+105.0)を特定する(ステップS258)。そして、最新のブロック番号が示すテンプレートブロックが対応する電子音の種類Xと、探索されたブロック番号が示すテンプレートブロックが対応する電子音の種類X´とが一致し(ステップS260でY)、最新のブロック番号が示すテンプレートブロックの順序Nと、探索されたブロック番号が示すテンプレートブロックの順序N´との差がnであり(ステップS262でY)、最新のブロック番号が示すテンプレートブロックのサンプリングレートRと、探索されたブロック番号が示すテンプレートブロックのサンプリングレートR´との差の絶対値が2.5%以下である場合には(ステップS264でY)、ブロック番号カウンタのカウント値Cを更新する(ステップS274)。すると、dに「1」が加算され(ステップS276)、dがDよりも大きい場合には(ステップS278でY)、nに「1」が加算され、更に以前のブロックを探索することを指定する(ステップS280)。そして、何ブロック前までを探索するかの閾値を示すskipよりもnが大きい場合には(ステップS282でY)、ブロック番号カウンタのカウント値Cが閾値cを超えたか否かを判断し(ステップS284)、カウント値Cが閾値cを超えた場合には(ステップS284でY)、ブロック番号バッファに格納されたブロック番号のそれぞれが示すテンプレートブロックの種類Xのうち、最も数が多い種類Xを、マイク38が検出した電子音の種類として特定し(ステップS286)、特定処理を終了する。一方、カウント値Cが閾値を超えない場合には(ステップS284でN)、マイク38が検出した電子音の種類を特定せずに、特定処理を終了する。
このようにこの例では、ブロック番号を探索する範囲に最新のブロック番号が示すテンプレートブロックの順序Nを加算する必要がない他に、図15に示した上記実施形態の特定処理のステップS166〜ステップS172の処理を省略することができる。
5−2.変形例2
また上記実施形態および変形例では、テンプレートを作成する場合には、4種類の玩具のそれぞれの音源ICに記憶させた波形データをそのまま用いてテンプレートを作成する例を挙げて説明したが、図1に示したゲームシステム10やパーソナルコンピューターなどの録音装置の近傍で4種類の玩具のそれぞれに電子音を出力させ、ゲームシステム10や録音装置のマイクに4種類の玩具のそれぞれの電子音を検出させる。そして、4種類の玩具のそれぞれの電子音をゲームシステム10や録音装置のマイクで検出した場合の波形データを取得するようにしてもよい。
また上記実施形態では、9種類のサンプリングレートのそれぞれについて原波形のサンプリング期間に応じて予め定められた個数のテンプレートブロックを作成する例を挙げて説明したが、9種類のサンプリングレートのそれぞれに応じた個数のテンプレートブロックを作成するようにしてもよい。例えば、波形データC+10のサンプリング期間は、原波形である波形データCのサンプリング期間が11秒であるから、11×0.9=9.9秒となる。従って、波形データC+10に対応させて22個のテンプレートブロックを作成しても、最後の2個のテンプレートブロックは空白データに対応するためテンプレート要素が0となってしまう。そこで原波形である波形データCに対してサンプリングレートが+10%となる波形データC+10に関しては、20個のテンプレートブロックを作成するようにしてもよい。一方、波形データC−10のサンプリング期間は、11×1.1=12.1秒となる。従って、波形データC−10に対応させて22個のテンプレートブロックを作成しても、最後の2.1秒間の波形データに関してはテンプレートブロックが作成されない。そこでサンプリングレートが−10%となる波形データC−10に関しては、25個のテンプレートブロックを作成するようにしてもよい。すなわち、9種類のサンプリングレートのそれぞれに応じて、波形データが存在する部分に対応するテンプレートブロックを作成するようにしてもよい。
そしてこの場合には、9種類のサンプリングレートのそれぞれに応じた個数のテンプレートブロックのうち75%に相当する個数のテンプレートブロックのそれぞれが、ブロック番号バッファにおいて上述した条件を満たしている場合には、当該条件を満たしているブロック番号に対応する波形データが外部音の波形データInであると特定するようにしてもよい。例えば波形データC+10に関しては20個のテンプレートブロックが作成されるので、波形データC+10に対応するブロック番号であるC1+10〜C20+10がブロック番号バッファに記憶されている場合には、20個の75%に相当する15個のテンプレートブロックのそれぞれが上述した条件を満たしていれば、波形データCが外部音の波形データInであると特定するようにしてもよい。
また上記実施形態および変形例では、第1期間が0.5秒間で第2期間が1/60秒間である例を挙げて説明したが、第1期間が第2期間の整数倍となっていれば、両者の値は任意に定めることができる。
また上記実施形態および変形例では、特定された電子音の種類に対応する処理として画像の表示制御を行う例を挙げて説明したが、特定された電子音の種類に対応する処理として、ゲームシステム10のスピーカ36から出力させる音を制御するようにしてもよい。例えば、実行部は、マイク38により検出した外部音が4種類の玩具のいずれかの電子音であると特定した場合には、スピーカ36から出力させる音を、特定した電子音の種類に対応させて変化させるようにしてもよい。例えば、特定した電子音の種類に対応するキャラクタの音声を出力させるようにしてもよい。また実行部は、マイク38により検出した外部音が4種類の玩具のいずれかの電子音であると特定した場合には、ゲーム処理に用いるパラメータを、特定した電子音の種類に対応させて変化させるようにしてもよい。例えば、特定した電子音の種類に対応するキャラクタのパラメータを上昇させるようにしてもよい。
また上記実施形態および変形例で説明した玩具が出力する電子音には、超音波や超低周波などの可聴音以外の音を含ませるようにしてもよい。すなわち、一般的な録音装置は超音波を録音することができないので、このような録音装置で玩具の音を録音し、録音した音を再生させても超音波成分が欠けてしまう。そこでこの例では、玩具が出力する所定音を録音した音を用いてゲームシステム10に所定音に対応する処理を行わせることを防止するため、玩具が出力する電子音に超音波成分を含ませておく。そしてゲームシステム10が、外部音データから可聴音の電子音を特定するとともに外部音データに可聴音以外の音が含まれているか否か判定することにより、マイク38が検出した外部音が玩具から出力された所定音を録音した音ではなく、実際に玩具から出力されている電子音であるか否かを判定するようにしてもよい。
ここで可聴音以外の音が含まれているか否かの判定は、マイク38が可聴音以外の音を検出することにより現れるエイリアス成分の有無を判定することにより行うことができる。一般的な録音装置では、マイクが検出した超音波成分をフィルタによって削ってしまうが、フィルタの特性によっては超音波をある程度取得することができるので、この例では、ゲームシステム10は、超音波をある程度取得することができるものとしておく。そしてゲームシステム10のサンプリングレートがあまり高くない(超音波の周波数の2倍未満)場合には、ゲームシステム10は超音波をエイリアス成分として取得することができる。従ってゲームシステム10は、エイリアス成分に対応する周波数成分の音を検出した場合に、超音波が存在したと推定することができる。
また上記実施形態および変形例では、プレーヤの選択操作により音入力モードが実行される例を挙げて説明したが、タッチパネルとして機能する操作面39に玩具が載置されたことを検出したことに基づいて、音入力モードを実行するようにしてもよい。このようにすれば、マイク38の近傍で玩具から電子音が出力されるので、電子音を特定しやすくなる。そしてこの場合には、第1表示面17に「ここに玩具を置いてね」などの文字を表示させ、操作面39に玩具を載置させるようプレーヤを誘導してもよい。
また上記実施形態および変形例では、複数種類の玩具のそれぞれが1種類の電子音を出力させることができる例を挙げて説明したが、複数種類の玩具のそれぞれが複数種類の電子音を出力させることができるようにしてもよい。この場合には、1種類の玩具が出力する複数種類の電子音は、他の種類の玩具が出力することができないようにしてもよい。
また上記実施形態および変形例で説明した比較処理や特定処理として、他の方式による処理を適用してもよい。
また上記実施形態および変形例では、複数種類の電子音のそれぞれに対応する複数種類のテンプレートを記憶部に記憶させておく例を挙げて説明したが、複数種類のテンプレートのそれぞれが対応する音は電子音に限られない。例えば、アナログレコードとその再生装置を内蔵することによりアナログレコードに録音された音を再生する玩具や、予め定められたタイミングで笛に空気を吹き込むことにより笛で所定の曲を演奏する玩具や、予め定められたタイミングで太鼓を叩くことにより太鼓で所定のリズムを演奏する玩具など、玩具が発生させる複数種類の所定音のそれぞれに対応する複数種類のテンプレートを記憶部に記憶させておくようにしてもよい。
また上記実施形態および変形例では、テンプレートが対応する音の発生源が複数種類の玩具のそれぞれである例を挙げて説明したが、音の発生源は玩具に限られず、予め定められた種類の携帯端末装置など、所定の形状を有する種々の形象体とすることができる。