JP2023137328A - 情報処理装置、方法及びプログラム - Google Patents
情報処理装置、方法及びプログラム Download PDFInfo
- Publication number
- JP2023137328A JP2023137328A JP2022043479A JP2022043479A JP2023137328A JP 2023137328 A JP2023137328 A JP 2023137328A JP 2022043479 A JP2022043479 A JP 2022043479A JP 2022043479 A JP2022043479 A JP 2022043479A JP 2023137328 A JP2023137328 A JP 2023137328A
- Authority
- JP
- Japan
- Prior art keywords
- data
- command
- memory
- song
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 95
- 230000010365 information processing Effects 0.000 title claims abstract description 52
- 230000015654 memory Effects 0.000 claims abstract description 154
- 230000008569 process Effects 0.000 claims abstract description 85
- 241000238876 Acari Species 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 5
- 239000000470 constituent Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005401 electroluminescence Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
【課題】早戻し処理にかかる時間を抑えること。
【解決手段】情報処理装置は、第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、第1データと第2データとに分割し、分割後の第1データ、第2データをそれぞれ第1のメモリ、第2のメモリに保存する、処理を実行する制御部を備える。制御部は、分割後の第1データの待機時間(曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間)として、1つ前の第1のコマンドが実行されてから今回の第1のコマンドが実行されるまでの時間を計算し、計算された時間を第1のメモリに保存し、分割後の第2データの待機時間として、1つ前の第2のコマンドが実行されてから今回の第2のコマンドが実行されるまでの時間を計算し、計算された時間を第2のメモリに保存する。
【選択図】図4
【解決手段】情報処理装置は、第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、第1データと第2データとに分割し、分割後の第1データ、第2データをそれぞれ第1のメモリ、第2のメモリに保存する、処理を実行する制御部を備える。制御部は、分割後の第1データの待機時間(曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間)として、1つ前の第1のコマンドが実行されてから今回の第1のコマンドが実行されるまでの時間を計算し、計算された時間を第1のメモリに保存し、分割後の第2データの待機時間として、1つ前の第2のコマンドが実行されてから今回の第2のコマンドが実行されるまでの時間を計算し、計算された時間を第2のメモリに保存する。
【選択図】図4
Description
本明細書の開示は、情報処理装置、方法及びプログラムに関する。
MIDI(Musical Instrument Digital Interface)等の所定の規格に準拠した曲データ(例えばソングデータ)の早送りや早戻し等の処理を行うことができる情報処理装置が知られている。例えば特許文献1に、この種の情報処理装置の具体的構成が記載されている。
例えばソングデータを早戻しして再生するためには、ソングデータのフォーマットの構造上、ソングデータの先頭から早戻し後の再生再開位置までを、内部的に早送り処理する必要がある。すなわち、情報処理装置は、メモリ内を、ソングデータの先頭から再生再開位置に対応する位置まで読み込み、この再生開始位置からソングデータの再生を再開する。
例えば、ソングデータのサイズが大きく且つ早戻し後の再生開始位置が曲の終わり付近であるほど、メモリ内を、ソングデータの先頭から再生再開位置に対応する位置まで読み込むのに時間がかかる。すなわち、早戻し処理に時間がかかるという問題が指摘される。
本発明は上記の事情に鑑みてなされたものであり、その目的とするところは、早戻し処理にかかる時間を抑えることができる情報処理装置、方法及びプログラムを提供することである。
本発明の一実施形態に係る情報処理装置は、第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割し、分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する、処理を実行する制御部を備える。前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含む。前記制御部は、前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算し、計算された時間を前記第1のメモリに保存し、前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算し、計算された時間を前記第2のメモリに保存する。
本発明の一実施形態によれば、早戻し処理にかかる時間を抑えることができる情報処理装置、方法及びプログラムが提供される。
図面を参照して、本発明の一実施形態に係る情報処理装置、並びに情報処理装置により実行される方法及びプログラムについて詳細に説明する。
図1は、本発明の一実施形態に係る情報処理装置1の構成を示すブロック図である。情報処理装置1は、例えば電子楽器である。情報処理装置1は、タブレット端末、スマートフォン、フィーチャフォン、ノートPC(Personal Computer)、据え置き型のPC、携帯ゲーム機、PDA(Personal Digital Assistant)等の、他の形態の装置であってもよい。
図1に示されるように、情報処理装置1は、プロセッサ100、メモリ110、表示部120、操作部130及び音声出力部140を備える。
なお、図1では、本実施形態の説明に必要な主たる構成要素を図示しており、例えば情報処理装置1として必須な構成要素である筐体など、一部の構成要素については、その図示を適宜省略する。
プロセッサ100は、メモリ110に記憶されたプログラム111を実行するコンピュータの一例である。プロセッサ100は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を含む素子である。プロセッサ100が有するRAMに符号101を付す。
プロセッサ100は、例えばメモリ110に記憶されたプログラム111をはじめとする各種プログラム及び各種データを読み出し、RAM101をワークエリアとして用いることにより、情報処理装置1を統括的に制御する。
プロセッサ100は、例えばシングルプロセッサ又はマルチプロセッサであり、少なくとも1つのプロセッサを含む。複数のプロセッサを含む構成とした場合、プロセッサ100は、単一の装置としてパッケージ化されたものであってもよく、情報処理装置1内で物理的に分離した複数の装置で構成されてもよい。プロセッサ100は、「制御部」と呼ばれてもよい。
メモリ110は、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)等の不揮発性の半導体メモリであり、二次記憶装置又は補助記憶装置としての役割を担う。メモリ110には、プログラム111をはじめとする、プロセッサ100が各種処理を行うために使用するプログラム及びデータが格納されている。
例えば、メモリ110には、ソングデータ(曲データの一例)を記憶するソングDB(Database)112が格納されている。ソングデータは、例えば、1つの曲を示すデータであり、所定の規格(一例としてMIDI規格)に準拠したデータ構造を有する。
図2は、ソングDB112に記憶されたソングデータSDのデータ構造を示す図である。図2に示されるように、ソングデータSDは、ヘッダデータHDと複数(N1+1個)のトラックデータTD0~TDN1を含む。ヘッダデータHDは、トラック数等の情報を含む。トラックデータTD0~TDN1は、楽器の演奏トラックを含み、例えば、ピアノの演奏トラック、ギターの演奏トラック等を含む。
図3は、ソングデータSDに含まれるトラックデータTD0のデータ構造を示す図である。なお、トラックデータTD1~TDN1も同様のデータ構造を有する。
トラックデータTD0は、複数(M1+1個)のイベントE0~EM1を含む。トラックデータTD0の最後には、トラックの最後を示すEOT(End of Track)コマンドが記述される。
イベントE0~EM1には、それぞれ、デルタタイム、コマンドタイプ及びコマンドデータが記述される。すなわち、第1データ及び第2データの一例であるイベントE0~EM1は、デルタタイム、コマンドタイプ及びコマンドデータを含む。
デルタタイムは、ソングデータSDにおいて、1つ前のコマンド(より詳細には、1つ前のイベントのコマンド)が実行されてから次のコマンド(より詳細には、次のイベントのコマンド)が実行されるまでの待機時間を示す情報の一例である。なお、EOTコマンドの1つ前のデルタタイムは、EOTコマンドの1つ前のイベントのコマンドが実行されてからEOTコマンドが読み込まれるまでの時間を示す。ソングデータSDの規格によっては、上記待機時間は、例えば「ゲートタイム」と呼称される。
コマンドタイプは、ノートオン、ノートオフ、コントロールチェンジ、ピッチベンドチェンジ等のコマンドの種類を示す種類情報の一例である。コマンドタイプ(言い換えると、種類情報)は、MIDI規格では、ステータスバイトと呼称される。
コマンドデータは、コマンドタイプ(言い換えると、種類情報)が示すコマンドの設定情報の一例である。例えばコマンドタイプがノートオンの場合、コマンドデータは、ノートナンバ及びベロシティの情報を含む。コマンドデータ(言い換えると、設定情報)は、MIDI規格では、データバイトと呼称される。
メモリ110に記憶されたプログラム111は、第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含むソングデータを、第1データと第2データとに分割し、分割後の第1データ、第2データをそれぞれ第1のメモリ、第2のメモリに保存する、処理を、コンピュータであるプロセッサ100に実行させる。プログラム111の実行により、ソングデータの早戻し処理にかかる時間が抑えられる。プログラム111の詳細は後述する。
プロセッサ100は、機能ブロックとして、ソングデータ分割部100A、ソングデータ保存部100B及びソングデータ再生部100Cを備える。各機能ブロックは、コンピュータの一例であるプロセッサ100が実行するプログラム111により実現される。すなわち、本発明の一実施形態に係る方法及びプログラムは、プロセッサ100の機能ブロックに各種処理を実行させることで実現される。なお、各機能ブロックは、一部又は全部が専用の論理回路等のハードウェアにより実現されてもよい。
表示部120は、例えばタッチパネルを搭載したLCD(Liquid Crystal Display)、有機EL(Electro Luminescence)等である。表示部120は、プロセッサ100の指示により、操作画面等を表示する。
操作部130は、利用者により操作される、ハードウェア又はソフトウェア若しくはこれらを組み合わせたユーザインタフェースである。本実施形態では、表示部120がタッチパネルを搭載するため、表示部120が操作部130も兼ねる。
操作部130は、ソングデータSDの早戻し操作をはじめとする各種操作を受け付けて、その操作内容を表す入力信号をプロセッサ100に出力する。プロセッサ100は、操作部130からの入力信号に従い、情報処理装置1を制御する。
音声出力部140は、スピーカとドライバを備える。音声出力部140は、プロセッサ100からの出力に基づいてソングデータによる曲を再生する。
例えば従来構成の情報処理装置では、ソングデータSDのサイズが大きく且つ早戻し後の再生開始位置が曲の終わり付近であるほど、メモリ内を、ソングデータSDの先頭から再生再開位置に対応する位置まで読み込むのに時間がかかる。すなわち、早戻し処理に時間がかかる。
そこで、本実施形態に係る情報処理装置1は、以下に説明される処理を実行する。この処理の実行により、従来構成の情報処理装置と比べて、早戻し処理にかかる時間が短く抑えられる。
図4は、本発明の一実施形態においてプロセッサ100により実行されるプログラム111によるデータ分割処理を示すフローチャートである。例えば、ユーザによる操作部130に対する所定の操作が行われると、図4に示されるデータ分割処理の実行が開始される。
図4に示されるデータ分割処理では、ソングデータSDを第1データと第2データとに分割し、分割後の第1データ、第2データをそれぞれ第1のメモリ、第2のメモリに保存する、という一連の処理が実行される。
例えば、ソングデータSDに含まれる第1データの数は、ソングデータSDに含まれる第2データの数よりも多い。
第1データに含まれる第1のコマンドは、例えばノートコマンドである。ノートコマンドとして、例えばノートオン、ノートオフ等が挙げられる。
第2データに含まれる第2のコマンドは、例えば、ノートコマンド以外のコマンドである。便宜上、ノートコマンド以外のコマンドを「その他コマンド」と記す。その他コマンドとして、例えば、コントロールチェンジ、プログラムチェンジ、チャンネルプレッシャ、ピッチベンド等が挙げられる。その他コマンドのなかには、ソングデータSDの先頭に配置されるものもある。すなわち、ソングデータSDに含まれる少なくとも1つの第2データは、ソングデータSDの先頭に配置される。
図4に示されるように、プログラム111は、処理対象のソングデータSDをワークエリアであるRAM101に展開し、トラックナンバを示す値iをゼロに設定する(ステップS101)。
処理対象のソングデータSDは、例えば、ソングDB112に記憶されたソングデータSDのなかから、ユーザによる操作部130に対する操作で指定された1つのソングデータSDである。なお、処理対象のソングデータSDは、例えば、ネットーワーク上のサーバから取得したものであってもよい。
プログラム111は、ティック(tick)の情報を初期化する(ステップS102)。
例示的には、プログラム111は、カウンタATC、T1及びT2の値をゼロにリセットする。なお、カウンタATC、T1及びT2は、コンピュータの一例であるプロセッサ100が実行するプログラム111により実現される。
カウンタATCは、プログラム111の実行中に参照される現在のイベント(「コマンド」と言い換えてもよい。)のティックの値を保持する。すなわち、カウンタATCの値は、ソングデータSDによる曲内の時間情報を示す。本実施形態において、カウンタATCの値は、「all_tick_counter」と表記されてもよい。
カウンタT1、T2は、それぞれ、図4に示されるデータ分割処理の実行中、第1のメモリ、第2のメモリに最後に保存されたイベントのティックの値を保持する。本実施形態において、カウンタT1、T2の値は、それぞれ、「last_reced_tick_1」、「last_reced_tick_2」と表記されてもよい。
本実施形態において、第1のメモリ、第2のメモリは、それぞれ、論理的に分離されたメモリ110内の第1メモリ領域113、第2メモリ領域114により実現される。別の実施形態では、第1のメモリと第2のメモリは、1つのメモリ110でなく、別個独立した2つのメモリで構成されてもよい。すなわち、図4に示されるデータ分割処理では、ノートコマンドを含む第1データとその他コマンドを含む第2データとが別々のメモリに保存されてもよい。
トラックデータTD0~TDN1には、「TD」の後の下付き文字の数値で示されるトラックナンバが割り当てられている。例えばトラックナンバを示す値iがゼロに設定されている場合、トラックデータTD0が処理対象のトラックデータとなる。
図4に示されるデータ分割処理では、ソングデータSDを第1データと第2データとに分割するため、ステップS103~S113の処理が繰り返し実行される。
具体的には、プログラム111は、処理対象のトラックデータ内のイベントに記述されたデルタタイムを取得する(ステップS103)。
処理対象のトラックデータに関し、ステップS103の処理の初回実行時は、処理対象のトラックデータの先頭のイベントに記述されたデルタタイムが取得される。処理対象のトラックデータに関し、ステップS103の処理の次回以降の実行時は、デルタタイムが取得された前回のイベントの次のイベント(言い換えると、今回のイベント)に記述されたデルタタイムが取得される。
プログラム111は、カウンタATCの値(all_tick_counter)を更新する(ステップS104)。
具体的には、プログラム111は、次式に示されるように、ステップS103で取得されたデルタタイム(単位:tick)をカウンタATCの値(all_tick_counter)に加算することにより、カウンタATCの値を更新する。
all_tick_counter=all_tick_counter+デルタタイム
プログラム111は、ステップS103でデルタタイムが取得されたイベントに記述されたコマンドタイプ及びコマンドデータを取得する(ステップS105)。
ステップS105にて取得されたコマンドタイプがノートコマンドを示す場合(ステップS106:ノートコマンド)、プログラム111は、差分ティックを算出し、算出された差分ティックを、ステップS105で取得されたコマンドタイプ及びコマンドデータとともに、ノートコマンドのイベントとして(言い換えると、第1のコマンドを実行するための第1データとして)、第1メモリ領域113に保存する(ステップS107)。
ステップS107において、差分ティックは、現在処理中のイベントのティックの値(言い換えると、ステップS104の処理で更新されたカウンタATCの値(all_tick_counter))から、第1メモリ領域113に最後に保存されたイベントのティックの値(言い換えると、前回のステップS107の処理で保存されたイベントのティックの値であり、カウンタT1の値(last_reced_tick_1))を減算することにより求まる。具体的には、ステップS107の差分ティックは、次式により算出される。
差分ティック=all_tick_counter-last_reced_tick_1
なお、処理対象のトラックデータに関し、ステップS107の処理の初回実行時は、第1メモリ領域113に対するイベントの保存が1度も実行されていない。そのため、カウンタT1の値(last_reced_tick_1)はゼロである。従って、ステップS107の処理の初回実行時は、ステップS104の処理で更新されたカウンタATCの値(all_tick_counter)から値ゼロが減算される。
プログラム111は、カウンタT1の値(last_reced_tick_1)を更新する(ステップS108)。
具体的には、プログラム111は、次式に示されるように、カウンタT1の値(last_reced_tick_1)をカウンタATCの値(all_tick_counter)で更新する。
last_reced_tick_1=all_tick_counter
このように、ステップS108の処理では、カウンタT1の値(last_reced_tick_1)がカウンタATCの値(all_tick_counter)で更新される。そのため、処理対象のトラックデータに関し、ステップS107の処理の次回以降の実行時は、ステップS104の処理で更新されたカウンタATCの値(all_tick_counter)から、前回のステップS108の処理で更新されたカウンタT1の値(last_reced_tick_1)が減算されることにより、差分ティックが求まる。
プログラム111は、ステップS103に戻り、処理対象のトラックデータに関し、次のコマンドが記述されたイベントに対してステップS103以降の処理を行う。
ステップS105にて取得されたコマンドタイプがその他コマンドを示す場合(ステップS106:その他コマンド)、プログラム111は、差分ティックを算出し、算出された差分ティックを、ステップS105で取得されたコマンドタイプ及びコマンドデータとともに、その他コマンドのイベントとして(言い換えると、第2のコマンドを実行するための第2データとして)、第2メモリ領域114に保存する(ステップS109)。
ステップS109において、差分ティックは、現在処理中のイベントのティックの値から、第2メモリ領域114に最後に保存されたイベントのティックの値(言い換えると、前回のステップS109の処理で保存されたイベントのティックの値であり、カウンタT2の値(last_reced_tick_2))を減算することにより求まる。具体的には、ステップS109の差分ティックは、次式により算出される。
差分ティック=all_tick_counter-last_reced_tick_2
なお、処理対象のトラックデータに関し、ステップS109の処理の初回実行時は、第2メモリ領域114に対するイベントの保存が1度も実行されていない。そのため、カウンタT2の値(last_reced_tick_2)はゼロである。従って、ステップS109の処理の初回実行時は、ステップS104の処理で更新されたカウンタATCの値(all_tick_counter)から値ゼロが減算される。
プログラム111は、カウンタT2の値(last_reced_tick_2)を更新する(ステップS110)。
具体的には、プログラム111は、次式に示されるように、カウンタT2の値(last_reced_tick_2)をカウンタATCの値(all_tick_counter)で更新する。
last_reced_tick_2=all_tick_counter
このように、ステップS110の処理では、カウンタT2の値(last_reced_tick_2)がカウンタATCの値(all_tick_counter)で更新される。そのため、処理対象のトラックデータに関し、ステップS109の処理の次回以降の実行時は、ステップS104の処理で更新されたカウンタATCの値(all_tick_counter)から、前回のステップS110の処理で更新されたカウンタT2の値(last_reced_tick_2)が減算されることにより、差分ティックが求まる。
プログラム111は、ステップS103に戻り、処理対象のトラックデータに関し、次のコマンドが記述されたイベントに対してステップS103以降の処理を行う。
ステップS105にて取得されたコマンドタイプがEOTコマンドを示す場合(ステップS106:EOTコマンド)、プログラム111は、第1メモリ領域113、第2メモリ領域114のそれぞれについて、差分ティックを算出し、算出された差分ティックを、EOTコマンドとともに、EOTコマンドのイベントとして、第1メモリ領域113、第2メモリ領域114のそれぞれに保存する(ステップS111)。
補足すると、第1メモリ領域113について、プログラム111は、EOTコマンドのティックの値(言い換えると、ステップS104の処理で更新されたカウンタATCの値(all_tick_counter))から、第1メモリ領域113に最後に保存されたイベントのティックの値(言い換えると、EOTコマンドの1つ前のイベントのティックの値であり、カウンタT1の値(last_reced_tick_1))を減算することにより、差分ティックを求める。
また、第2メモリ領域114について、プログラム111は、EOTコマンドのティックの値から、第2メモリ領域114に最後に保存されたイベントのティックの値(言い換えると、EOTコマンドの1つ前のイベントのティックの値であり、カウンタT2の値(last_reced_tick_2))を減算することにより、差分ティックを求める。
プログラム111は、トラックナンバを示す値iに1をインクリメントする(ステップS112)。
プログラム111は、値iがトラック数(本実施形態では、N1+1)に達したか否かを判定する(ステップS113)。値iがトラック数に達していなければ(ステップS113:NO)、プログラム111は、ソングデータSD内の次のトラックデータを処理対象として、ステップS102以降の処理を実行する。値iがトラック数に達していれば(ステップS113:YES)、プログラム111は、図4に示されるデータ分割処理を終了する。
図4に示されるデータ分割処理を実行した結果、第1メモリ領域113に保存される第1データ群SD1のデータ構造を図5Aに示す。図4に示されるデータ分割処理を実行した結果、第2メモリ領域114に保存される第2データ群SD2のデータ構造を図5Bに示す。
図5Aに示されるように、第1データ群SD1は、EOTコマンド及びその1つ前のデルタタイムを除くと、ノートコマンドのイベントだけが順に並ぶデータ構造となっている。第1データ群SD1において、各イベントに記述されるデルタタイムは、1つ前のイベントのノートコマンドが実行されてから次のイベントのノートコマンドが実行されるまでの時間を示す。
図5Bに示されるように、第2データ群SD2は、EOTコマンド及びその1つ前のデルタタイムを除くと、その他コマンドのイベントだけが順に並ぶデータ構造となっている。第2データ群SD2において、各イベントに記述されるデルタタイムは、1つ前のイベントのその他コマンドが実行されてから次のイベントのその他コマンドが実行されるまでの時間を示す。
このように、図4に示されるデータ分割処理において、プログラム111を実行するプロセッサ100は、第1のコマンドを実行するための第1データ(ノートコマンドのイベント)と、第2のコマンドを実行するための第2データ(その他コマンドのイベント)と、を含むソングデータSDを、第1データと第2データとに分割する、ソングデータ分割部100Aとして動作する。より詳細には、ソングデータ分割部100Aとして動作するプロセッサ100は、種類情報(例えばコマンドタイプ)に基づいてソングデータSDを第1データと第2データとに分割する。
図4に示されるデータ分割処理において、プロセッサ100は、更に、分割後の第1データ、第2データをそれぞれ第1のメモリ(第1メモリ領域113)、第2のメモリ(第2メモリ領域114)に保存するソングデータ保存部100Bとして動作する。
ステップS107で算出される差分ティックは、分割後の第1データのデルタタイム(言い換えると、第1のメモリに保存されるノートコマンドのイベントに記述されるデルタタイム)を示す。すなわち、図4に示されるデータ分割処理において、プロセッサ100は、1つ前の第1のコマンドが実行されてから今回の第1のコマンドが実行されるまでの時間を計算し、計算された時間を第1のメモリに保存する。
ステップS109で算出される差分ティックは、分割後の第2データのデルタタイム(言い換えると、第2のメモリに保存されるノートコマンドのイベントに記述されるデルタタイム)を示す。すなわち、図4に示されるデータ分割処理において、プロセッサ100は、1つ前の第2のコマンドが実行されてから今回の第2のコマンドが実行されるまでの時間を計算し、計算された時間を第2のメモリに保存する。
図6は、本発明の一実施形態においてプロセッサ100により実行されるプログラム111による小節情報設定処理を示すフローチャートである。図4に示されるデータ分割処理と並行して又はデータ分割処理の実行後に、図6に示される小節情報設定処理が実行される。
図6に示される小節情報設定処理では、ソングデータSDの早戻し処理に必要な、小節の情報が設定される。
図6に示されるように、プログラム111は、事前準備として、第3のメモリを確保する(ステップS201)。
例示的には、最大小節数をNとし、トラック数をTとした場合、プログラム111は、次の配列を宣言することにより、第3のメモリを確保する。
int pointer [T][N]
int step [T][N]
int step [T][N]
「int pointer [T][N]」は、第3のメモリ内の位置を示す。「int step [T][N]」は、小節の先頭から次のノートコマンドが実行されるまでの時間(単位:tick)を示す。
本実施形態では、第3のメモリの一例として、メモリ110のなかから、第1メモリ領域113及び第2メモリ領域114と論理的に分離された第3メモリ領域115が確保される。別の実施形態では、第3のメモリは、メモリ110とは別のメモリであってもよい。
本実施形態では、ソングデータSDに含まれる全てのトラックデータに対し、ステップS202以降の一連の処理が順次実行される。ここでは、説明を簡明化する便宜上、1つのトラックデータに対して実行される、ステップS202以降の一連の処理を説明する。
プログラム111は、処理対象のトラックデータに対し、1小節分のティック数を設定する(ステップS202)。
例示的には、1小節を4拍子とし且つ1拍子を96ティックとして、384ティックが設定される。すなわち、本実施形態では、384ティックの時間が経過する毎に曲が次の小節に進むものとして、図6に示される小節情報設定処理が実行される。1小節分のティック数は、「tickpermeasure」と表記されてもよい。
補足すると、ソングデータSDによっては、曲中に拍子設定が変わる場合がある。この場合、プログラム111は、1小節分のティック数(tickpermeasure)を都度更新する。
プログラム111は、初期化処理を行う(ステップS203)。
具体的には、プログラム111は、カウンタATCの値(all_tick_counter)、現在ポインタ(current_pointer)及び値nをゼロにリセットする。現在ポインタ(current_pointer)は、第1メモリ領域113内の現在の参照位置を示す。現在ポインタ(current_pointer)はバイト単位で示される。値nは、処理対象のトラックデータに含まれる小節の序数(すなわち、処理対象のトラックデータ内における何番目の小節であるか)を示す。
プログラム111は、デルタタイムを取得する(ステップS204)。
具体的には、プログラム111は、第1メモリ領域113に保存された第1データ群SD1内の未処理の(すなわち、ステップS204以降の処理が実行されていない)ノートコマンドのイベントのうち、第1データ群SD1内の最も先頭寄りに位置するイベントに記述されたデルタタイムを取得する。
プログラム111は、カウンタATCの値(all_tick_counter)及び現在ポインタ(current_pointer)を更新する(ステップS205)。
具体的には、プログラム111は、次式に示されるように、ステップS204で取得されたデルタタイム(単位:tick)をカウンタATCの値(all_tick_counter)に加算することにより、カウンタATCの値を更新する。
all_tick_counter=all_tick_counter+デルタタイム
プログラム111は、更に、次式に示されるように、ステップS204で取得されたデルタタイムのバイト数を現在ポインタ(current_pointer)に加算することにより、現在ポインタを更新する。これにより、第1メモリ領域113内の現在の参照位置を示す現在ポインタ(current_pointer)がコマンドタイプ(ノートコマンド)の直前に対応する位置(一例として、図5Aの位置P1)まで進む。
current_pointer=current_pointer+デルタタイムのバイト数
プログラム111は、カウンタATCの値(all_tick_counter)がn番目の小節の先頭のティック数以上か否かを判定する(ステップS206)。言い換えると、プログラム111は、現在参照中のティックがn番目の小節の先頭のティックに達したか否かを判定する。
例示的には、プログラム111は、値nをティック数(tickpermeasure)で乗算し、この乗算値(単位:tick)がカウンタATCの値(all_tick_counter)以上か否かを判定する。
カウンタATCの値(all_tick_counter)がn番目の小節の先頭のティック数以上であれば(ステップS206:YES)、プログラム111は、n番目の小節の情報を設定し、設定された情報を第3メモリ領域115に保存する(ステップS207)。
具体的には、プログラム111は、次式に示されるように、現在ポインタ(current_pointer)をpointer[n]として設定して保存するとともに、カウンタATCの値(all_tick_counter)から上記の乗算値を減算した値をstep[n]として設定して保存し、更に、値nに1をインクリメントする。
pointer[n]=current_pointer
step[n]=all_tick_counter-n×tickpermeasure
step[n]=all_tick_counter-n×tickpermeasure
「pointer[n]」は、n番目の小節の位置を示すポインタ(言い換えると、第3のメモリ内の位置)を示す。ここでは、「pointer[n]」は、コマンドタイプ(ノートコマンド)の直前に対応する位置(一例として、図5Aの位置P1)を示す。「step[n]」は、n番目の小節の先頭から次のノートコマンドが実行されるまでの時間(単位:tick)を示す。
「pointer[n]」及び「step[n]」は、分割後の第1データの第1のコマンド(すなわち、第1メモリ領域113に保存されたノートコマンド)を実行するタイミングを示す情報の一例である。より詳細には、「pointer[n]」は、第1のコマンドが実行される小節の先頭を示す情報の一例である。また、「step[n]」は、小節の先頭から第1のコマンドが実行されるまでの時間を示す情報の一例である。
「pointer[n]」及び「step[n]」のデータサイズは小さい。そのため、確保すべき第3メモリ領域115は少なくて済む。
このように、ステップS207において、プログラム111を実行するプロセッサ100は、分割後の第1データの第1のコマンドを実行するタイミングを示す情報を生成して、第3のメモリの一例である第3メモリ領域115に保存する。
カウンタATCの値(all_tick_counter)がn番目の小節の先頭のティック数未満であれば(ステップS206:NO)、プログラム111は、カウンタATCの値に対応するコマンドがEOTコマンドか否かを判定する(ステップS208)。
カウンタATCの値(all_tick_counter)に対応するコマンドがEOTコマンドでなければ(ステップS208:NO)、プログラム111は、次のノートコマンドのイベントに進む(ステップS209)。
具体的には、プログラム111は、次式に示されるように、n番目の小節に属するイベントに記述されたコマンドタイプ及びコマンドデータのバイト数を現在ポインタ(current_pointer)に加算することにより、現在ポインタを更新する。これにより、現在ポインタ(current_pointer)は、次のノートコマンドのイベントに記述されたデルタタイムの直前に対応する位置(一例として、図5Aの位置P2)まで進む。
プログラム111は、ステップS204~S209の処理を繰り返し実行することにより、以降の小節の情報を順次設定して第3メモリ領域115に保存する。これにより、384ティックで区切られた、トラック内の全ての小節の情報が設定されて、第3メモリ領域115に保存される。トラック内の全ての小節の情報が設定された後、ステップS208においてYES判定となる。これにより、プログラム111は、図6に示される小節情報設定処理を終了する。
図7は、本発明の一実施形態においてプロセッサ100により実行されるプログラム111による再生処理を示すフローチャートである。例えば、ユーザにより操作部130に対して再生操作が行われると、図7に示される再生処理の実行が開始される。また、例えば、ソングデータSDが最後まで再生されたり、ユーザにより操作部130に対して再生停止操作が行われたりすると、図7に示される再生処理の実行が終了する。
図7に示される再生処理では、第1メモリ領域113に保存された第1データ群SD1及び第2メモリ領域114に保存された第2データ群SD2に基づいて、ソングデータSDが再生される。別の言い方をすると、図7に示される再生処理では、ソングデータSDから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データを含む第1データ群SD1、及びソングデータSDから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データを含む第2データ群SD2に基づいて、ソングデータSDが再生される。
プログラム111には、第1データ群SD1を再生する第1プレイヤと、第2データ群SD2を再生する第2プレイヤが実装される。第1プレイヤ、第2プレイヤの実体は、それぞれ、第1データ群SD1、第2データ群SD2を再生するのに必要な変数セットである。
図7に示されるように、プログラム111は、第1プレイヤ及び第2プレイヤの設定を初期化する(ステップS301)。
プログラム111は、第1プレイヤによる第1データ群SD1の再生と、第2プレイヤによる第2データ群SD2の再生を同時に開始する(ステップS302)。これにより、第1データ群SD1内のノートコマンドのイベントがデルタタイムに従ったタイミングで順次実行されるとともに、第2データ群SD2内のその他コマンドのイベントがデルタタイムに従ったタイミングで順次実行される。この結果、もとのソングデータSDを再生したときと同じ音(曲)が音声出力部140より出力される。
図8は、本発明の一実施形態においてプロセッサ100により実行されるプログラム111による早戻し処理を示すフローチャートである。操作部130は、早戻し操作を受け付ける操作部として動作する。例えば、図7に示される再生処理の実行中、ユーザにより操作部130に対して早戻し操作が行われると、図8に示される早戻し処理の実行が開始される。ここでは、例えばn1番目の小節の先頭まで早戻し処理されるものとする。
図8に示されるように、プログラム111は、早戻し操作で指示された再生開始位置の情報を第3メモリ領域115から取得する(ステップS401)。
具体的には、プログラム111は、n1番目の小節の情報である「pointer[n1]」及び「step[n1]」を取得する。「pointer[n1]」は、n1番目の小節の先頭に対応する、第3メモリ領域115内の位置を示す。「step[n1]」は、n1番目の小節の先頭から次のノートコマンドが実行されるまでの時間を示す。
プログラム111は、ステップS401で取得された再生開始位置の情報(すなわち、「pointer[n1]」及び「step[n1]」)を第1プレイヤにセットする(ステップS402)。言い換えると、プログラム111は、ステップS401で取得された再生再開位置に対応する第1メモリ領域113(第1のメモリ)内の位置を指定する。
プログラム111は、第2メモリ領域114に保存された第2データ群SD2を、その先頭から再生開始位置(すなわち、n1番目の小節の先頭)まで早送りで読み込み、早送り処理中に読み込まれたその他コマンドに従って音源の設定値(例えば音色、テンポ、パン等)を更新する(ステップS403)。これにより、音源の設定値が、n1番目の小節の先頭を再生する際の設定値となる。
ステップS402及びS403の処理が完了すると、プログラム111は、第1プレイヤによる第1データ群SD1の再生と、第2プレイヤによる第2データ群SD2の再生を同時に再開する(ステップS404)。言い換えると、プログラム111は、ソングデータSDによる曲の再生を、早戻し操作で指示された再生開始位置から再開する。補足すると、再生が再開されてから「step[n1]」が示す時間が経過した時点で、n1番目の小節の先頭に続くノートコマンドが実行される。
このように、図8に示される早戻し処理において、プログラム111を実行するプロセッサ100は、操作部130により受け付けられた早戻し操作で指示される再生再開位置の情報を取得し、第2データ群SD2(少なくとも1つの第2データを含むデータ群の一例)の先頭から上記の再生再開位置に対応する位置まで第2メモリ領域114(第2のメモリの一例)を読み込むとともに、上記の再生再開位置に対応する第1メモリ領域113(第1のメモリの一例)内の位置を指定し、上記の再生再開位置からソングデータSD(より詳細には、ソングデータSDをなす第1データ群SD1及び第2データ群SD2)を再生する。
本実施形態において、プログラム111を実行するプロセッサ100は、ノートコマンドについては、第1データ群SD1の先頭から再生開始位置までの早送り処理を行うことなく、再生開始位置を直接指定する。その他コマンドと比べて数の多いノートコマンドに対する早送り処理を省くことにより、従来構成の情報処理装置と比べて、早戻し処理にかかる時間が短く抑えられる。ソングデータSDのサイズが大きく且つ早戻し後の再生開始位置が曲の終わり付近であるほど、早戻し処理にかかる時間が短く抑えられる効果が一層顕著に現れる。
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
以下、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[付記1]
第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割し、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する、
処理を実行する制御部を備え、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記制御部は、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算し、計算された時間を前記第1のメモリに保存し、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算し、計算された時間を前記第2のメモリに保存する、
情報処理装置。
[付記2]
前記第1データ及び前記第2データは、更に、前記コマンドの種類を示す種類情報及び前記種類情報が示すコマンドの設定情報を含む、
付記1に記載の情報処理装置。
[付記3]
前記制御部は、前記種類情報に基づいて前記曲データを前記第1データと前記第2データとに分割する、
付記2に記載の情報処理装置。
[付記4]
前記制御部は、前記分割後の第1データの前記第1のコマンドを実行するタイミングを示す情報を生成して、第3のメモリに保存する、
付記1から付記3の何れか一項に記載の情報処理装置。
[付記5]
前記タイミングを示す情報は、前記第1のコマンドが実行される小節の先頭を示す情報と、前記小節の先頭から前記第1のコマンドが実行されるまでの時間を示す情報と、を含む、
付記4に記載の情報処理装置。
[付記6]
前記制御部は、前記第1のメモリに保存された前記第1データ及び前記第2のメモリに保存された前記第2データに基づいて、前記曲データを再生する、
付記1から付記5の何れか一項に記載の情報処理装置。
[付記7]
曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する、
処理を実行する制御部と、
早戻し操作を受け付ける操作部と、を備え、
前記制御部は、
前記操作部により受け付けられた前記早戻し操作で指示される再生再開位置の情報を取得し、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込むとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定し、
前記再生再開位置から前記曲データを再生する、
情報処理装置。
[付記8]
前記曲データに含まれる第1データの数は、前記曲データに含まれる第2データの数よりも多い、
付記1から付記7の何れか一項に記載の情報処理装置。
[付記9]
前記第1のコマンドは、ノートコマンドであり、
前記第2のコマンドは、前記ノートコマンド以外のコマンドである、
付記1から付記8の何れか一項に記載の情報処理装置。
[付記10]
前記曲データに含まれる少なくとも1つの前記第2データは、前記曲データの先頭に配置される、
付記1から付記9の何れか一項に記載の情報処理装置。
[付記11]
第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割する処理と、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する処理と、をコンピュータに実行させ、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記保存する処理において、前記コンピュータに、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第1のメモリに保存させ、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第2のメモリに保存させる、
方法。
[付記12]
第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割する処理と、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する処理と、をコンピュータに実行させ、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記保存する処理において、前記コンピュータに、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第1のメモリに保存させ、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第2のメモリに保存させる、
プログラム。
[付記13]
曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する処理と、
早戻し操作を受け付ける処理と、をコンピュータに実行させ、
前記コンピュータに、更に、
前記早戻し操作で指示される再生再開位置の情報を取得させ、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込ませるとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定させ、
前記再生再開位置から前記曲データを再生させる、
方法。
[付記14]
曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する処理と、
早戻し操作を受け付ける処理と、をコンピュータに実行させ、
前記コンピュータに、更に、
前記早戻し操作で指示される再生再開位置の情報を取得させ、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込ませるとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定させ、
前記再生再開位置から前記曲データを再生させる、
プログラム。
[付記1]
第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割し、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する、
処理を実行する制御部を備え、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記制御部は、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算し、計算された時間を前記第1のメモリに保存し、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算し、計算された時間を前記第2のメモリに保存する、
情報処理装置。
[付記2]
前記第1データ及び前記第2データは、更に、前記コマンドの種類を示す種類情報及び前記種類情報が示すコマンドの設定情報を含む、
付記1に記載の情報処理装置。
[付記3]
前記制御部は、前記種類情報に基づいて前記曲データを前記第1データと前記第2データとに分割する、
付記2に記載の情報処理装置。
[付記4]
前記制御部は、前記分割後の第1データの前記第1のコマンドを実行するタイミングを示す情報を生成して、第3のメモリに保存する、
付記1から付記3の何れか一項に記載の情報処理装置。
[付記5]
前記タイミングを示す情報は、前記第1のコマンドが実行される小節の先頭を示す情報と、前記小節の先頭から前記第1のコマンドが実行されるまでの時間を示す情報と、を含む、
付記4に記載の情報処理装置。
[付記6]
前記制御部は、前記第1のメモリに保存された前記第1データ及び前記第2のメモリに保存された前記第2データに基づいて、前記曲データを再生する、
付記1から付記5の何れか一項に記載の情報処理装置。
[付記7]
曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する、
処理を実行する制御部と、
早戻し操作を受け付ける操作部と、を備え、
前記制御部は、
前記操作部により受け付けられた前記早戻し操作で指示される再生再開位置の情報を取得し、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込むとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定し、
前記再生再開位置から前記曲データを再生する、
情報処理装置。
[付記8]
前記曲データに含まれる第1データの数は、前記曲データに含まれる第2データの数よりも多い、
付記1から付記7の何れか一項に記載の情報処理装置。
[付記9]
前記第1のコマンドは、ノートコマンドであり、
前記第2のコマンドは、前記ノートコマンド以外のコマンドである、
付記1から付記8の何れか一項に記載の情報処理装置。
[付記10]
前記曲データに含まれる少なくとも1つの前記第2データは、前記曲データの先頭に配置される、
付記1から付記9の何れか一項に記載の情報処理装置。
[付記11]
第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割する処理と、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する処理と、をコンピュータに実行させ、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記保存する処理において、前記コンピュータに、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第1のメモリに保存させ、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第2のメモリに保存させる、
方法。
[付記12]
第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割する処理と、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する処理と、をコンピュータに実行させ、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記保存する処理において、前記コンピュータに、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第1のメモリに保存させ、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第2のメモリに保存させる、
プログラム。
[付記13]
曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する処理と、
早戻し操作を受け付ける処理と、をコンピュータに実行させ、
前記コンピュータに、更に、
前記早戻し操作で指示される再生再開位置の情報を取得させ、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込ませるとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定させ、
前記再生再開位置から前記曲データを再生させる、
方法。
[付記14]
曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する処理と、
早戻し操作を受け付ける処理と、をコンピュータに実行させ、
前記コンピュータに、更に、
前記早戻し操作で指示される再生再開位置の情報を取得させ、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込ませるとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定させ、
前記再生再開位置から前記曲データを再生させる、
プログラム。
1 :情報処理装置
100 :プロセッサ
100A :ソングデータ分割部
100B :ソングデータ保存部
100C :ソングデータ再生部
101 :RAM
110 :メモリ
111 :プログラム
112 :ソングDB
113 :第1メモリ領域
114 :第2メモリ領域
115 :第3メモリ領域
120 :表示部
130 :操作部
140 :音声出力部
ATC :カウンタ
T1 :カウンタ
T2 :カウンタ
100 :プロセッサ
100A :ソングデータ分割部
100B :ソングデータ保存部
100C :ソングデータ再生部
101 :RAM
110 :メモリ
111 :プログラム
112 :ソングDB
113 :第1メモリ領域
114 :第2メモリ領域
115 :第3メモリ領域
120 :表示部
130 :操作部
140 :音声出力部
ATC :カウンタ
T1 :カウンタ
T2 :カウンタ
Claims (14)
- 第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割し、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する、
処理を実行する制御部を備え、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記制御部は、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算し、計算された時間を前記第1のメモリに保存し、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算し、計算された時間を前記第2のメモリに保存する、
情報処理装置。 - 前記第1データ及び前記第2データは、更に、前記コマンドの種類を示す種類情報及び前記種類情報が示すコマンドの設定情報を含む、
請求項1に記載の情報処理装置。 - 前記制御部は、前記種類情報に基づいて前記曲データを前記第1データと前記第2データとに分割する、
請求項2に記載の情報処理装置。 - 前記制御部は、前記分割後の第1データの前記第1のコマンドを実行するタイミングを示す情報を生成して、第3のメモリに保存する、
請求項1から請求項3の何れか一項に記載の情報処理装置。 - 前記タイミングを示す情報は、前記第1のコマンドが実行される小節の先頭を示す情報と、前記小節の先頭から前記第1のコマンドが実行されるまでの時間を示す情報と、を含む、
請求項4に記載の情報処理装置。 - 前記制御部は、前記第1のメモリに保存された前記第1データ及び前記第2のメモリに保存された前記第2データに基づいて、前記曲データを再生する、
請求項1から請求項5の何れか一項に記載の情報処理装置。 - 曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する、
処理を実行する制御部と、
早戻し操作を受け付ける操作部と、を備え、
前記制御部は、
前記操作部により受け付けられた前記早戻し操作で指示される再生再開位置の情報を取得し、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込むとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定し、
前記再生再開位置から前記曲データを再生する、
情報処理装置。 - 前記曲データに含まれる第1データの数は、前記曲データに含まれる第2データの数よりも多い、
請求項1から請求項7の何れか一項に記載の情報処理装置。 - 前記第1のコマンドは、ノートコマンドであり、
前記第2のコマンドは、前記ノートコマンド以外のコマンドである、
請求項1から請求項8の何れか一項に記載の情報処理装置。 - 前記曲データに含まれる少なくとも1つの前記第2データは、前記曲データの先頭に配置される、
請求項1から請求項9の何れか一項に記載の情報処理装置。 - 第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割する処理と、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する処理と、をコンピュータに実行させ、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記保存する処理において、前記コンピュータに、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第1のメモリに保存させ、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第2のメモリに保存させる、
方法。 - 第1のコマンドを実行するための第1データと、第2のコマンドを実行するための第2データと、を含む曲データを、前記第1データと前記第2データとに分割する処理と、
分割後の前記第1データ、前記第2データをそれぞれ第1のメモリ、第2のメモリに保存する処理と、をコンピュータに実行させ、
前記第1データ及び前記第2データは、前記曲データにおいて1つ前のコマンドが実行されてから次のコマンドが実行されるまでの待機時間の情報を含み、
前記保存する処理において、前記コンピュータに、
前記分割後の第1データの待機時間として、1つ前の前記第1のコマンドが実行されてから今回の前記第1のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第1のメモリに保存させ、
前記分割後の第2データの待機時間として、1つ前の前記第2のコマンドが実行されてから今回の前記第2のコマンドが実行されるまでの時間を計算させ、計算された時間を前記第2のメモリに保存させる、
プログラム。 - 曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する処理と、
早戻し操作を受け付ける処理と、をコンピュータに実行させ、
前記コンピュータに、更に、
前記早戻し操作で指示される再生再開位置の情報を取得させ、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込ませるとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定させ、
前記再生再開位置から前記曲データを再生させる、
方法。 - 曲データから分割されて第1のメモリに保存された、第1のコマンドを実行するための第1データ、及び前記曲データから分割されて第2のメモリに保存された、第2のコマンドを実行するための第2データに基づいて、前記曲データを再生する処理と、
早戻し操作を受け付ける処理と、をコンピュータに実行させ、
前記コンピュータに、更に、
前記早戻し操作で指示される再生再開位置の情報を取得させ、
少なくとも1つの前記第2データを含むデータ群の先頭から前記再生再開位置に対応する位置まで前記第2のメモリを読み込ませるとともに、前記再生再開位置に対応する前記第1のメモリ内の位置を指定させ、
前記再生再開位置から前記曲データを再生させる、
プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022043479A JP2023137328A (ja) | 2022-03-18 | 2022-03-18 | 情報処理装置、方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022043479A JP2023137328A (ja) | 2022-03-18 | 2022-03-18 | 情報処理装置、方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023137328A true JP2023137328A (ja) | 2023-09-29 |
Family
ID=88145512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022043479A Pending JP2023137328A (ja) | 2022-03-18 | 2022-03-18 | 情報処理装置、方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023137328A (ja) |
-
2022
- 2022-03-18 JP JP2022043479A patent/JP2023137328A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9613635B2 (en) | Automated performance technology using audio waveform data | |
JP2003302984A (ja) | 歌詞表示方法、歌詞表示プログラムおよび歌詞表示装置 | |
JP2012093491A (ja) | 電子楽器 | |
EP3550555A1 (en) | Electronic musical instrument, method, and storage medium | |
CN113821189A (zh) | 音频播放方法、装置、终端设备及存储介质 | |
JP2023137328A (ja) | 情報処理装置、方法及びプログラム | |
JP6743843B2 (ja) | 電子楽器、演奏情報記憶方法、及びプログラム | |
US8492635B2 (en) | Music sound generation apparatus, music sound generation system, and music sound generation method | |
JP5578003B2 (ja) | 電子楽器及びプログラム | |
JP7063354B2 (ja) | 電子楽器、演奏情報記憶方法、及びプログラム | |
KR100841047B1 (ko) | 곡 데이터 편집 기능 및 mp3기능이 내장된 휴대용 플레이어 | |
US20230306938A1 (en) | Information processing device, method and a computer-readable non-transitory recording medium | |
US7071403B2 (en) | Method of enabling MIDI functions in a portable device | |
JP7371363B2 (ja) | 楽音出力装置、電子楽器、楽音出力方法、及びプログラム | |
JP4497100B2 (ja) | 楽音の発音制御装置および発音制御プログラム | |
US20230386441A1 (en) | Electronic musical instrument, key scanning method and non-transitory computer readable medium | |
JP2000293169A (ja) | 楽音生成装置 | |
JP2007212491A (ja) | 楽音の発音制御装置および発音制御プログラム | |
JP2004258562A (ja) | 歌唱合成用データ入力プログラムおよび歌唱合成用データ入力装置 | |
JP4720893B2 (ja) | カラオケ装置 | |
JP2023045356A (ja) | 情報処理装置、方法及びプログラム | |
JP2583377B2 (ja) | 自動演奏装置 | |
JPH1097256A (ja) | 楽音発生装置及びプログラムを記録した媒体 | |
KR200435595Y1 (ko) | 곡 데이터 편집 기능 및 mp3기능이 내장된 휴대용 플레이어 | |
JP2000214867A (ja) | カラオケ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20231011 |