(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-21
(45)【発行日】2024-10-29
(54)【発明の名称】出力制御方法、プログラム及び電子機器
(51)【国際特許分類】
G10H 1/00 20060101AFI20241022BHJP
【FI】
G10H1/00 Z
G10H1/00 102Z
(21)【出願番号】P 2022150796
(22)【出願日】2022-09-22
【審査請求日】2023-10-02
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110001254
【氏名又は名称】弁理士法人光陽国際特許事務所
(72)【発明者】
【氏名】佐藤 淳
【審査官】大野 弘
(56)【参考文献】
【文献】特開2005-195982(JP,A)
【文献】特開2013-015643(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10H 1/00
(57)【特許請求の範囲】
【請求項1】
コンピュータが
単位データごとに出力タイミングの情報が対応付けられた情報データの取得に応じて、前記出力タイミングからある遅延設定時間が経過した遅延タイミングで、前記単位データに応じた出力信号を出力し、
前記出力信号の出力が前記遅延タイミングよりも遅れる場合、前記遅延設定時間を前記遅れる時間幅に応じて延長する
出力制御方法。
【請求項2】
前記コンピュータは、ある単位データに応じた前記出力信号の出力が前記遅延タイミングよりも遅れる場合、前記ある単位データの次以降の単位データに応じた前記出力信号の出力タイミングにかかる遅延設定時間を、前記時間幅に応じて延長される遅延設定時間に設定する請求項1記載の出力制御方法。
【請求項3】
前記コンピュータは、前記情報データを、1又は複数の前記単位データごとにある時間間隔で取得する請求項1記載の出力制御方法。
【請求項4】
前記情報データは、同一の出力タイミング情報が付された複数の前記単位データを含む請求項1記載の出力制御方法。
【請求項5】
前記コンピュータは、前記遅延タイミングで前記単位データに応じた前記出力信号を生成して出力する請求項1記載の出力制御方法。
【請求項6】
前記遅延設定時間の最大設定時間が定められており、
前記コンピュータは、前記出力信号の出力が前記出力タイミングから前記最大設定時間よりも大きく遅れた場合には、前記遅延設定時間を前記最大設定時間以下とする
請求項1記載の出力制御方法。
【請求項7】
前記遅延設定時間は、前記情報データの受信開始時に初期設定値に設定される請求項1記載の出力制御方法。
【請求項8】
単位データごとに出力タイミングの情報が対応付けられた情報データの取得に応じて出力信号を出力する電子機器のコンピュータを、
前記出力タイミングからある遅延設定時間が経過した遅延タイミングで、前記単位データに応じた前記出力信号を出力するように制御する出力制御手段、
前記出力信号の出力が前記遅延タイミングよりも遅れる場合、前記遅延設定時間を当該遅れる時間幅に応じて延長する延長制御手段、
として機能させるプログラム。
【請求項9】
単位データごとに出力タイミングの情報が対応付けられた情報データの取得に応じて出力信号を出力する信号生成部と、
制御部と、
を備え、
前記制御部は、
前記出力タイミングからある遅延設定時間が経過した遅延タイミングで、前記単位データに応じた前記出力信号を出力するように制御し、
前記出力信号の出力が前記遅延タイミングよりも遅れる場合、前記遅延設定時間を当該遅れる時間幅に応じて延長する
電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、出力制御方法、プログラム及び電子機器に関する。
【背景技術】
【0002】
従来、電子演奏の内容を規定する演奏データとして、MIDI(Musical Instrument Digital Interface)が広く利用されている。MIDIデータを音出力部に入力させると、MIDIデータから音信号が生成される。この音信号をスピーカや音出力端子(ヘッドホン端子などを含む)に出力することで、演奏データによる指定内容に応じた演奏が音出力される。
【0003】
このMIDIデータを無線通信で音出力部へ送信する場合、遅延を生じることがあり、リアルタイムでの音出力が難しい。これに対し、特許文献1では、MIDIデータの送信パケットに付された時刻に対して、規定された遅延時間を加算したタイミングで音を出力させる技術が開示されている。遅延時間をユーザの聴覚上違和感のない範囲内とすることで、当該遅延時間より短い通信遅延が生じても音出力が可能とされる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来技術では、設定されている遅延時間より長い通信遅延が生じると、出力部は、その時点で演奏を停止する。したがって、出力部は、遅延時間を小さく柔軟に設定しづらいという課題がある。
【0006】
この発明の目的は、より柔軟かつ適切に出力の遅延を調整することができる出力制御方法、プログラム及び電子機器を提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本発明は、
コンピュータが
単位データごとに出力タイミングの情報が対応付けられた情報データの取得に応じて、前記出力タイミングからある遅延設定時間が経過した遅延タイミングで、前記単位データに応じた出力信号を出力し、
前記出力信号の出力が前記遅延タイミングよりも遅れる場合、前記遅延設定時間を前記遅れる時間幅に応じて延長する
出力制御方法である。
【発明の効果】
【0008】
本発明に従うと、より柔軟かつ適切に出力の遅延を調整することができるという効果がある。
【図面の簡単な説明】
【0009】
【
図1】電子機器の機能構成を示すブロック図である。
【
図2】MIDIデータの送受信及び出力信号の出力のタイミングを示す図である
【
図3】音出力制御処理の制御手順を示すフローチャートである。
【
図4】出力タイミング設定処理の制御手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態を図面に基づいて説明する。
図1は、本実施形態の電子機器1の機能構成を示すブロック図である。
電子機器1は、音源Sから受信する演奏データ(情報データ)、例えばMIDIデータを解析して、楽音及び音声の少なくともいずれかを含む音出力データを生成し、当該音出力データをアナログ変換した音出力信号(出力信号)を生成、出力する。音源Sは、一般的なコンピュータ(PC)など(MIDIソフトウェアがインストールされているものなど)であってもよい。あるいは、音源Sは、電子楽器などであって、演奏内容がMIDIデータに変換されて記憶され、出力されるのであってもよい。音出力信号の出力先は、例えば、スピーカL、イヤホン、ヘッドホンや音出力信号を記録する電子機器などである。
【0011】
電子機器1は、CPU11(Central Processing Unit)(制御部)と、RAM12(Random access Memory)と、記憶部13と、通信部14(受信部)と、DSP15(Digital Signal Processor)と、出力部16などを備える。各構成は、バスを介して互いに電気的に接続されている。
【0012】
CPU11は、演算処理を行い、電子機器1の動作を統括制御するプロセッサである。CPU11は、音出力データの生成制御に好適に設計されたものであってもよい。CPU11は、単一のプロセッサを有していてもよいし、複数のプロセッサが並列に又は用途などに応じて独立に動作するのであってもよい。また、CPU11は、図示略の発振回路が出力するクロック信号に基づいて、現在時刻を計数する。このために、電子機器1は、図示略のRTC(Real Time Clock)を備える。CPU11は、電子機器1が起動されたときにRTCから現在時刻を取得する。
【0013】
RAM12は、CPU11に作業用のメモリ空間を提供し、一時データを記憶する。一時データには、外部から入力されたMIDIデータが含まれる。
【0014】
記憶部13は、不揮発性のメモリであり、例えば、フラッシュメモリやHDDである。記憶部13は、音出力データの生成に係るプログラム131及び設定データを記憶している。
【0015】
通信部14は、定められた通信規格に従って外部機器との通信動作を制御する。ここでは、通信に利用可能な通信規格には、ブルートゥース(登録商標)のローエナジー規格(BLE)が含まれる。
【0016】
DSP15は、MIDIデータを解析して音出力データを生成する専用回路である。生成された音出力データは、出力部16へ出力される。DSP15は、並列に上限数までのMIDIデータを同時に処理して各々音データを生成し、これらをミキサにより合成した音出力データを生成することができる。また、DSP15の処理には、出力音に対するエフェクト処理などを含み得る。
【0017】
出力部16は、DSP15により生成された音出力データをアナログ変換するDAC(デジタル/アナログ変換器)と、アナログ変換により得られた音出力信号を外部へ出力するための出力端子などを有する。出力部16は、音出力信号を増幅する増幅部(アンプ)などを有していてもよい。また、電子機器1自体がスピーカLを有していてもよい。
【0018】
電子機器1は、別途電子楽器の演奏データ(音データ)を受け付ける入力端子を有していてもよい。演奏データは、DSP15に入力されて、MIDIデータに基づく音データと混合されて出力部16へ送られ得る。
【0019】
その他、電子機器1は、電力供給をオンオフするための操作ボタンなどを有する操作受付部や、ステータスなどを表示する表示画面を有する表示部などを備えていてもよい。
【0020】
次にMIDIデータの取得及び音出力について説明する。
MIDIデータには、出力する音の内容(音程、音色、強度など及びその時間経過に伴う変化(アクセントなどの立ち上がり特性、音量の減衰や周波数スペクトル分布など)を示す情報が含まれる。
【0021】
電子機器1は、MIDIデータを外部機器からBLE(無線通信)により受信(取得)することができる。BLEでは、データは、規定された通信間隔(ある時間間隔)で送信されるパケット単位で送られる。通信間隔は、BLEの規格で定められている範囲内で可変設定可能であるが、しばしば固定されている(例えば、15msec間隔)。本実施形態では、一律な通信間隔でパケットデータの送受信がなされるものとして説明する。通信内容のデータフォーマットは、共通規格(MIDI over Bluetooth Low Energy)に従ったものであってよい。パケットには、上記MIDIデータのある内容(メッセージ;単位データ)に対してその出力タイミングの情報(タイムスタンプ)が対応付けられたデータが1又は複数含まれる。対応付けられる出力タイミングは、上記DSP15が並列処理可能な範囲で複数のメッセージに対して同一又は近接していてもよい。
【0022】
BLEなどの無線通信では、通信遅延やデータ量の変化などによりデータの送受信に要する時間が一時的に変化する(長くなる)場合がある。受信したMIDIデータの内容から生成、アナログ変換した音出力信号をリアルタイムで出力すると、このような通信に要する時間の変化に応じて音の出力タイミングにむらが生じ得る。電子機器1は、上記出力タイミング情報に応じて音の出力タイミングをより正確にそろえる。
【0023】
パケットデータの送信間隔内で出力される音の内容設定が多い場合には、単一のパケット内に全ての出力内容を含むことができず、複数のパケットに分割されることがある。また、多くの音を細かく発生させるように定められたデータなどでは、演奏の単位時間(例えば、パケット送信間隔程度)当たりのデータ量が多くなりやすい。これらにより、音の出力タイミングまでに必要な内容を全て受信、取得できなかった場合には、結局正しい音出力がなされず、一部の音が遅延して発せられることになる。
【0024】
電子機器1では、上記出力タイミング情報に加えて、更に遅延設定時間を設定して、指定された出力タイミングよりも一律に遅延設定時間ずつ音出力のタイミングを繰り下げる。この遅延設定時間の間に上記出力タイミングに係る全ての音出力内容のMIDIデータが受信されれば、受信内容に対応する音出力データが生成されてMIDIデータ通りの音が出力されることになる。電子機器1では、出力タイミングから遅延設定時間が経過したタイミングでMIDIデータがDSP15に出力されて、DSP15により音出力データが生成される。音出力データは、更に出力部16に送られてアナログ変換されることで音出力信号が得られる。これらDSP15及び出力部16が本実施形態の信号生成部を構成し、DSP15及び出力部16の処理が本実施形態の音出力信号生成処理に含まれる。
【0025】
一方で、遅延設定時間を大きくしすぎると、入力タイミングに対して出力までのタイムラグが無視できなくなり、ユーザに感覚上の違和感が生じさせ得る。したがって遅延設定時間は、MIDIデータに基づく音出力が正確に可能な範囲で短く設定されるとよい。
【0026】
このような遅延設定時間をユーザが指定する(MIDIデータ内で遅延設定時間を指定する場合を含む)ことが考えられる。しかしながら、MIDIデータの単位時間当たりの量を考慮しながら遅延設定時間を厳密に調整するのは容易ではない。確実性を考慮すると、遅延設定時間が必要よりも大きくなりがちである。
【0027】
本実施形態の電子機器1では、MIDIデータの受信開始時に遅延設定時間を初期設定値とする。そして、音出力信号の出力が出力タイミング及び遅延設定時間の設定に対して間に合わなかった場合には、間に合わなかった分だけ、以後の遅延設定時間が延長されるよう設定を変更する。言い換えると、電子機器1では、ある遅延設定時間の設定に対して、遅延設定時間を超える遅延が発生した場合だけ音出力のずれを許容することで、順次調整を行っていく。
【0028】
図2(a)は、MIDIデータの送受信及び音出力信号の出力のタイミングを示すシーケンス図である。なお、この図は説明のための模式的なものであって、実際のデータ量や音出力信号の出力頻度などを反映したものではない。なお、音源(外部機器)からパケットを送信するタイミングと電子機器1でパケットデータを受信するタイミングとのずれは、略一定であり、かつ短い時間のため、ここでは無視している。
【0029】
音源からは、時間間隔dTcでMIDIデータのパケットデータが送信されている。パケット内のn個の各メッセージにはそれぞれ出力タイミング情報が付されている。付されているとは、フォーマットに応じて明示されていなくても一意に出力タイミングが特定される形であればよい。この出力タイミング情報は、例えば、ある時間周期で周回するカウンタ値である。時間周期Tpは、特には限られないが、一般的な曲の中で生じ得る音の切れ目よりも十分に長く、例えば、8秒程度である。一周期の長さの情報は、電子機器1でも予め保持されている。
【0030】
電子機器1では、パケットデータを受信すると、メッセージごとにデータの出力タイミングを取得し、CPU11が計数している現在時刻と対応付ける。対応付けの基準は任意であってよく、例えば、最初に受信したパケットデータの先頭のメッセージに付された出力タイミングの値がその時の現在時刻と対応付けられればよい。このようにして得られた音出力の設定時刻と、現在時刻と、遅延設定時間とに基づいて、当該メッセージから音出力データを生成して音出力信号を出力するまでの時間を設定する。例えば、最初のパケット送信では、パケットデータには、タイミングT01、T02に音出力するメッセージが含まれている。設定されている遅延設定時間dtrに基づいて、データの受信から音信号の生成及び出力までの待機設定時間Twがそれぞれ設定される。
【0031】
待機設定時間Twは、今回取得したタイミングTk、現在時刻U、基準タイミングTB、基準時刻UB、遅延設定時間dtr及びタイミングを示す上記カウンタ値の時間周期Tpによって以下の数式(1)のように求められる。
Tw=(Tk+n×Tp-TB)-(U-UB)+dtr … (1)
変数nは、0以上の整数であり、タイミングTkの値が前回のタイミングT(k-1)よりも小さくなった場合に1が加算される。これにより、右辺第1項は基準タイミングTBから今回の出力タイミングまでの時間を表す。この右辺第1項に対して基準時刻UBが加算された値が、タイミングTkの時刻Ukとなる。さらに、時刻Ukに遅延設定時間dtrが加算された値が、実際の出力タイミングの設定時刻として特定される。この設定時刻から現在時刻Uを差し引くことで、当該現在時刻Uから出力タイミングまでの待機設定時間Twが求められる。実際の計算では、数式(1)の通り、先に現在時刻Uと基準時刻UBとの差分(時間)を求めて、これを右辺第1項と遅延設定時間dtrとの和から減じてもよい。
【0032】
2回目のパケット送信では、タイミングT03,T04に音出力するメッセージが含まれている。3回目のパケット送信では、タイミングT05~T07に音出力するメッセージが含まれている。この3回目のパケット送信では、2回目のパケット送信に比べデータ送信量が増大している。
【0033】
4回目のパケット送信では、タイミングT08~T10に音出力するメッセージが含まれている。しかしながら、データを受信したタイミングは、タイミングT08から遅延設定時間dtrが経過したタイミングを既に超過している。この場合には、求められた待機設定時間Twが負の値となり、この負の値の大きさ(絶対値)が時間差dts(時間幅)として判定される。メッセージ内容に応じた音データが即座に生成され、他の正常な音出力と時間差dtsのずれを伴って出力される。
【0034】
図2(b)には、データの受信タイミングが本来音出力を行うべきであった想定出力タイミングより後であった場合を詳細に示している。メッセージデータに付された出力タイミングは、データ受信タイミングよりも時間的に前である。当該出力タイミングから遅延設定時間dtr後の想定出力タイミング(遅延タイミング)もまた、データ受信タイミングよりも前である。
【0035】
この場合には、データ受信タイミングで直ちに音データが生成、アナログ変換されてデータ出力信号が出力される(実出力タイミング)。このときの出力の遅れを表す時間差dtsは、算出された待機設定時間Tw(負の値)の符号を反転させたものである。このような状況が生じた場合に、修正前の遅延設定時間dtrに対して時間差dtsが加算されてなる(待機設定時間Twを減ずる)、修正後の遅延設定時間が得られる。
【0036】
タイミングT09以降の音出力データの生成では、新たな遅延設定時間dtr2が設定される。この遅延設定時間dtr2は、タイミングT08から実際に音出力がなされたタイミングまでの時間差に設定される。すなわち、遅延設定時間dtr2は、修正前の遅延設定時間dtrに対して時間差dtsを加算したものである。
【0037】
5回目のパケット送信で送られたタイミングT11、T12に音出力するメッセージに応じた音出力信号も、上記の新たな遅延設定時間dtr2の遅延で生成出力される。
【0038】
図3は、本実施形態の電子機器1で実行される音出力制御処理のCPU11による制御手順を示すフローチャートである。本実施形態の出力制御方法である音出力制御処理は、例えば、電子機器1の起動とともに開始されて継続的に実行される。
【0039】
CPU11は、後述の出力タイミング設定処理を開始する(ステップS101)。CPU11は、後述の出力タイミング設定処理で設定された待機設定時間Twが経過した(遅延タイミングである)メッセージデータがあるか否かを判別する(ステップS102)。後述のように、待機設定時間Twは、メッセージデータの取得時刻と、メッセージデータに対応付けられた出力タイミングに係る時刻から遅延設定時間dtrが経過した時刻との差分である。待機設定時間Twが経過したメッセージデータがないと判別された場合には(ステップS102で“NO”)、CPU11はステップS102の処理を繰り返す。
【0040】
待機設定時間Twが経過したメッセージデータがあると判別された場合には(ステップS102で“YES”)、CPU11は、メッセージデータをDSP15へ出力する(ステップS103)。これにより、CPU11は、DSP15及び出力部16により音出力信号生成処理を実行させる。すなわち、DSP15は、当該メッセージデータに基づく音出力データを生成して出力部16に出力し、出力部16は、これをアナログ変換させて音出力信号として出力させる。該当するメッセージデータが複数ある場合には、CPU11は、これらを並列にDSP15に入力させて、並列に音データを生成させる。それから、CPU11の処理は、ステップS102に戻る。
ステップS102、S103の処理が本実施形態のプログラム131の出力制御手段を構成する。
【0041】
図4は、
図3のステップS101で開始される出力タイミング設定処理のCPU11による制御手順を示すフローチャートである。この出力タイミング設定処理は、起動された後、音出力制御処理と並行に実行される。
【0042】
CPU11は、遅延設定時間dtrに初期設定値をセットする(ステップS111)。初期設定値は、予め電子機器1が有している値である。あるいは、初期設定値は、ユーザによる図示略の操作受付部への入力操作などにより受け付けられた値であってもよいし、前回の最後に設定した遅延設定時間が記憶部13に記憶されて利用されてもよい。
【0043】
CPU11は、通信部14がBLEによりパケットデータを受信したか否かを判別する(ステップS112)。パケットデータを受信していないと判別された場合には(ステップS112で“NO”)、CPU11は、ステップS112の処理を繰り返す。
【0044】
パケットデータを受信したと判別された場合には(ステップS112で“YES”)、CPU11は、受信したパケットデータ内から未取得のメッセージデータがあるか否かを判別する(ステップS113)。未取得のメッセージデータがないと判別された場合には(ステップS113で“NO”)、CPU11の処理は、ステップS112に戻る。
【0045】
未取得のメッセージデータがあると判別された場合には(ステップS113で“YES”)、CPU11は、パケットデータから1つのメッセージデータを取得する(ステップS114)。
【0046】
CPU11は、取得したデータが演奏の最初のデータであるか否かを判別する(ステップS115)。最初のデータであると判別された場合には(ステップS115で“YES”)、CPU11の処理は、ステップS117へ移行する。
【0047】
取得したデータが最初のデータではないと判別された場合には(ステップS115で“NO”)、CPU11は今回取得したメッセージデータに付されたタイミングTkが、直近のタイミングT(k-1)からカウンタ値の時間周期で1周期以上後であるか否かを判別する(ステップS116)。CPU11は、前回取得したメッセージデータのタイミングT(k-1)に対応付けられた時刻U(k-1)から現在時刻が上記1周期近く進んでおり、上記時刻から1周期以内の音出力が指定されているとは想定されないか否かを判別する。このために、CPU11は、これまでに算出された出力タイミングの時刻Ukのうち最も後のものをRAM12に記憶させておく。そして、CPU11は、現在時刻Uと時刻Ukとの差が周期時間Tp程度の基準値(例えば、周期時間Tpからパケットデータの送信に係る時間間隔dTcの数周期程度短い時間)より大きいか否かを判別する。現在時刻Uと時刻Ukとの差が基準値より大きいと判別された場合には(ステップS116で“YES”)、CPU11の処理は、ステップS117へ移行する。なお、ステップS117の処理へ移行する前に、CPU11は、ステップS111と同一の処理を行って、遅延設定時間dtrを初期化してもよい。現在時刻Uと時刻Ukとの差が基準値より大きくない(基準値未満である)と判別された場合には(ステップS116で“NO”)、CPU11の処理は、ステップS118へ移行する。
【0048】
ステップS117の処理へ移行すると、CPU11は、基準タイミングTBとして今回取得したタイミングTkを設定し、基準タイミングTBに対応する基準時刻UBとして、現在時刻Uを設定する(ステップS117)。それから、CPU11の処理は、ステップS118へ移行する。
【0049】
ステップS118の処理へ移行すると、CPU11は、現在時刻Uを取得し、上記の数式(1)に従って今回のメッセージデータから音信号を生成する処理を実行するまでの待機設定時間Twを算出する(ステップS118)。
【0050】
CPU11は、待機設定時間Twが0未満(負の値)であるか否かを判別する(ステップS119)。待機設定時間Twが0未満ではない(0以上である)と判別された場合には(ステップS119で“NO”)、CPU11の処理は、ステップS113に戻る。
【0051】
待機設定時間Twが0未満である(負の値である)と判別された場合には(ステップS119で“YES”)、CPU11は、現在の遅延設定時間dtrから待機設定時間Twを減ずる(ステップS120)。すなわち、CPU11は、音信号の生成、出力が遅れる分だけ遅延設定時間dtrを増加(延長)させる。
ステップS119,S120の処理が、本実施形態のプログラム131における延長制御手段を構成する。
【0052】
CPU11は、求められた遅延設定時間dtrが予め定められている遅延設定時間の最大設定値dtr_max(最大設定時間)より大きいか否かを判別する(ステップS121)。遅延設定時間dtrが最大設定値dtr_maxよりも大きいと判別された場合には(ステップS121で“YES”)、CPU11は、遅延設定時間dtrを最大設定値dtr_maxとする(ステップS122)。それから、CPU11の処理は、ステップS123へ移行する。遅延設定時間dtrが最大設定値dtr_maxよりも大きくない(最大設定値dtr_max以下である)と判別された場合には(ステップS121で“NO”)、CPU11の処理は、ステップS123へ移行する。
【0053】
ステップS123の処理へ移行すると、CPU11は、待機設定時間Twを0に設定する(ステップS123)。それから、CPU11の処理は、ステップS113に戻る。
【0054】
以上のように、本実施形態の出力制御方法は、パケット内のメッセージごとに出力タイミングの情報が対応付けられたMIDIデータの取得に応じて、出力タイミングからある遅延設定時間dtrが経過した遅延タイミングで、メッセージデータに応じた音出力信号を出力し、音出力信号の出力が遅延タイミングよりも遅れる場合、遅延設定時間dtrを当該遅れる時間差dtsに応じて延長する。
このように、実際のMIDIデータで演奏出力が適正なタイミングに間に合わない状況が生じた場合に、間に合わなかった度合に応じて順次以後の遅延設定時間dtrを延長していく。このように、電子機器1では、より柔軟かつ適切に遅延設定時間を設定する。これにより、電子機器1は、遅延設定時間dtrを必要以上に延長させすぎず、これと同時に、演奏の不正確な音出力の発生頻度を低減させることができる。
【0055】
また、あるメッセージデータに応じた音出力信号の出力が遅延タイミングよりも遅れる場合、このメッセージデータの次以降のメッセージデータに応じた音出力信号の出力タイミングにかかる遅延設定時間dtrを、上記時間差dtsに応じて延長される遅延設定時間に設定する。
このように、時間差dtsが発生した次のメッセージデータから当該時間差dtsを遅延設定時間dtrに反映するので、速やかに現実に生じている遅延時間のレベルまで遅延設定時間dtrを延長することができる。したがって、この出力制御方法では、その後の出力が設定以上に遅れづらくなる。
【0056】
また、この出力制御方法では、MIDIデータを1又は複数のメッセージデータごと、すなわちパケットデータごとにある時間間隔dTcで取得する。このようにパケットデータの送受信に時間間隔dTcが定められる場合、正確な音出力に必要な情報を全て取得するのが間に合わない場合が生じやすい。本実施形態の出力制御方法では、このような場合をリアルタイムで検出しながら遅延設定時間dtrを調整していく。したがって、出力制御方法によれは、ユーザが予め曲の各時間範囲でのデータ量などを計測したり予測したりして遅延設定時間dtrを定める手間などを省くことができる。
【0057】
また、MIDIデータは、同一の出力タイミング情報が付された複数のメッセージデータを含んでいてもよい。MIDIデータでは、複数の音を同時に出力することもできるので、これらが各々複数の異なるメッセージに含まれていてもよい。また、パケット容量の制限などから、データ量が多い音出力部分では、このようなメッセージデータが異なるパケットに含まれることもあり得る。この場合に上記出力制御方法では、これら異なる複数のパケットのデータを全て受信してからでないと正確な音出力を行うことができない。したがって、正確な音出力には遅延設定時間dtrの設定が重要である。よって、本実施形態の出力制御方法では、遅延設定時間dtrを柔軟に変更することで、不正確な音出力と不要なタイムラグの拡大とをいずれも抑えることができる。
【0058】
また、本実施形態の出力制御方法では、遅延タイミングでメッセージデータに応じた音出力信号を生成して出力する。すなわち、音出力信号の生成自体も遅延タイミングまで保留される。これにより、出力制御方法では、必要なメッセージデータを全て取得してから各々音データを生成し、適切に混合した音出力信号を得ることができる。
【0059】
また、この出力制御方法では、遅延設定時間dtrの最大設定値dtr_maxが定められており、音出力信号の出力が出力タイミングから最大設定値dtr_maxよりも大きく遅れた場合には、遅延設定時間dtrを当該最大設定値dtr_max以下とする。例えば、遅延設定時間dtrを最大設定値dtr_maxと等しくすることができる。このように遅延設定時間dtrを際限なく大きくしていかないことで、演奏データの入力と音出力信号の出力との間でのタイムラグがユーザなどにとって問題を生じない範囲で留めることができる。
【0060】
また、遅延設定時間dtrは、MIDIデータの受信開始時に初期設定値に設定される。遅延設定時間dtrは、曲などによって必要な大きさが異なり得る。したがって、本実施形態の出力制御方法では、遅延設定時間dtrを演奏ごとなどで初期値に戻すことで、演奏に対して適切な時間に設定しなおすことができる。
【0061】
また、本実施形態のプログラム131は、メッセージデータごとに出力タイミングの情報が対応付けられたMIDIデータの取得に応じて、音出力信号を出力するコンピュータ(電子機器1)を、出力タイミングからある遅延設定時間dtrが経過した遅延タイミングで、メッセージデータに応じた音出力信号を出力するように制御する出力制御手段、音出力信号の出力が遅延タイミングよりも遅れる場合、遅延設定時間dtrを当該遅れる時間差dtsに応じて延長する延長制御手段、として機能させる。
このような上記出力制御方法に係る処理を実行するプログラム131は、コンピュータに容易にインストールして実行され得る。これにより、複雑なハードウェア設定などを行わずとも容易かつ柔軟に遅延設定時間dtrが設定可能となる。したがって、このプログラム131によれば、メッセージデータの受信遅れによる音出力の乱れと上記タイムラグの増加によるユーザなどの違和感とを効果的にバランスよく抑えることができる。
【0062】
また、本実施形態の電子機器1は、メッセージデータごとに出力タイミングの情報が対応付けられたMIDIデータの取得に応じて音出力信号を出力する信号生成部としてのDSP15及び出力部16と、CPU11と、を備える。CPU11は、出力タイミングからある遅延設定時間dtrが経過した遅延タイミングで、メッセージデータに応じた音出力信号を出力するように制御する。CPU11は、音出力信号の出力が遅延タイミングよりも遅れる場合、遅延設定時間dtrを当該遅れる時間差dtsに応じて延長する。
このように、MIDIデータで設定された適正なタイミングに実際の演奏出力が間に合わない状況が生じた場合に、その度合に応じて順次遅延設定時間dtrを延長していく。このように、電子機器1では、より柔軟かつ適切に遅延設定時間を設定することができる。これにより、電子機器1は、遅延設定時間dtrを必要以上に延長させすぎず、これと同時に、不正確な音出力の発生頻度を低減させることができる。
【0063】
なお、本発明は、上記実施の形態に限られるものではなく、様々な変更が可能である。
例えば、上記実施の形態では、音出力が遅れた時間差dtsと同一の長さだけ遅延設定時間dtrを延長することとして説明したが、これに限られない。例えば、時間差dtsに対して1より若干大きいある係数を乗じた時間幅だけ遅延設定時間dtrを延長してもよい。あるいは、時間差dtsに対して一律な追加延長幅を加算した時間幅だけ遅延設定時間dtrを延長してもよい。
【0064】
また、上記実施の形態では、音出力信号の生成(アナログ変換)の直前(略同時)に音出力データ(デジタルデータ)を生成するものとして説明したが、これに限られない。例えば、事前に生成した音出力データを一度バッファに記憶させ、適切なタイミング、又は特定の時間が経過したタイミングで出力部16で音出力信号に変換(生成)してもよい。
【0065】
また、上記実施の形態ではBLEによりMIDIデータを電子機器1へ送信するものとして説明したが、これに限られない。MIDIデータは、電子機器1が取得可能な他の通信規格などに基づいて取得されてもよい。また、このときの通信間隔は、必ずしも一定ではなくてもよい。また、BLEの場合でも、通信間隔が可変であってもよい。
【0066】
また、電子機器1が受信する演奏データは、任意のデータフォーマットに従ったものであってもよい。
【0067】
また、遅延設定時間が最大設定値dtr_maxを超えるか否かの判別は、上記処理に限られない。例えば、実際に遅延設定時間dtrから負の待機設定時間Twを減算する前に比較がなされてもよい。また、待機設定時間Twを減じると遅延設定時間dtrが最大設定値dtr_maxを超える場合には、待機設定時間Twを減算する処理自体を中止してもよい。
【0068】
また、上記実施の形態では、DSP15による音出力データの生成処理をCPU11が制御するものとして説明したが、これに限られない。CPU11自身がソフトウェア的に音出力データの生成処理を行ってもよい。すなわち、本実施形態の信号生成部は、CPU11であってもよい。
【0069】
また、遅延タイミングでの音出力信号の出力タイミングは、CPU11により制御されるのではなくてもよい。例えば、出力部16が出力タイミングを制御し、CPU11は、そのタイミングを監視して遅延設定時間dtrを変更設定する処理のみを行ってもよい。
【0070】
また、遅延設定時間dtrの初期化に係るステップS116の判定条件は、上記とは異なるものであってもよい。例えば、現在時刻Uとの差分は、直近のタイミングTkの時刻Ukとの間ではなく、前回のステップS118で取得された現在時刻との間で求められてもよい。あるいは、ユーザが図示略の操作受付部への入力操作によりリセット操作を行ったことが受け付けられた場合に遅延設定時間dtrが初期化がなされてもよい。また、ステップS116の処理の後ではなく、ステップS113の処理で未取得データがない状況が規定時間以上続いた場合に遅延設定時間dtrが初期化されてもよい。
【0071】
また、上記実施形態は、音に関するデータの出力制御であったが、音以外の情報に関するデータ(情報データ)の出力制御に利用することもできる。
【0072】
また、以上の説明では、本発明の出力制御に係るプログラム131を記憶するコンピュータ読み取り可能な媒体としてフラッシュメモリなどの不揮発性メモリなどからなる記憶部13を例に挙げて説明したが、これらに限定されない。その他のコンピュータ読み取り可能な媒体として、MRAMなどの他の不揮発性メモリ、HDD(Hard Disk Drive)や、CD-ROM、DVDディスクなどの可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウェーブ(搬送波)も本発明に適用される。
その他、上記実施の形態で示した具体的な構成、処理動作の内容及び手順などは、本発明の趣旨を逸脱しない範囲において適宜変更可能である。本発明の範囲は、特許請求の範囲に記載した発明の範囲とその均等の範囲を含む。
【符号の説明】
【0073】
1 電子機器
11 CPU
12 RAM
13 記憶部
131 プログラム
14 通信部
15 DSP
16 出力部
L スピーカ
S 音源
Tw 待機設定時間
dtr、dtr2 遅延設定時間
dtr_max 最大設定値
dts 時間差