以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の一実施の形態に係る演奏装置を適用した携帯型音楽プレーヤMPの概略構成を示すブロック図である。
同図に示すように、音楽プレーヤMPは、ユーザの脈拍を検出するための脈拍センサ1と、ユーザの運動状態を検出するための加速度センサ2と、複数のスイッチからなる設定操作子3と、ヘッドフォン4と、脈拍センサ1からのセンサ出力に基づいて脈拍を検出する脈拍検出回路5と、加速度センサ2からのセンサ出力に基づいてx軸、y軸およびz軸方向の加速度をそれぞれ検出する加速度検出回路6と、設定操作子3の各スイッチの操作状態を検出する操作状態検出回路7と、装置全体の制御を司るCPU8と、該CPU8が実行する制御プログラムや各種テーブルデータ等を記憶するROM9と、曲データ、各種入力情報および演算結果等を一時的に記憶するRAM10と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ11と、各種情報等を表示する、たとえば液晶ディスプレイ(LCD)および発光ダイオード(LED)等からなる表示器12と、前記制御プログラムを含む各種アプリケーションプログラムや各種曲データ、各種データ等を記憶するフラッシュメモリ13と、PC(パーソナルコンピュータ)100を接続し、PC100とデータの送受信を行うUSB(universal serial bus)インターフェース(I/F)14と、前記記憶された曲データのうち、MIDIデータによって形成される曲データを楽音信号に変換するMIDI音源回路15と、前記記憶された曲データのうち、圧縮音声データによって形成される曲データを伸長して楽音信号に変換する圧縮音声デコーダ16と、MIDI音源回路15および圧縮音声デコーダ16からそれぞれ出力される各楽音信号に各種効果を付与するための効果回路17と、該効果回路17からの楽音信号を増幅するアンプ18とにより構成されている。
上記構成要素5〜18は、バス19を介して相互に接続され、MIDI音源回路15および圧縮音声デコーダ16には効果回路17が接続され、効果回路17にはアンプ18が接続され、アンプ18にはヘッドフォン4が接続されている。
脈拍センサ1は、ユーザの耳たぶや腕、指などに装着して脈拍に同期した信号を出力するものである。本実施の形態では、脈拍センサ1は、ヘッドフォン4の耳当て部分に設けられて、ユーザの脈拍数を検出するが、もちろん、ユーザの運動の邪魔にならないようにして脈拍を検出できるものであれば、これに限らないことは言うまでもない。
加速度センサ2は、音楽プレーヤMPの筐体内に設けられている。音楽プレーヤMPは、後述するように、ユーザの腰に装着されるので、ユーザが運動すると、音楽プレーヤMPには、その運動に応じた垂直方向および水平方向の加速度が生じる。加速度センサ2は、この垂直方向および水平方向の加速度を検出する。なお、加速度センサ2は、音楽プレーヤMPに内蔵されるものに限らず、音楽プレーヤMPと別体で構成するようにしてもよい。
フラッシュメモリ13には、前述のように、CPU8が実行する制御プログラムも記憶でき、ROM9に制御プログラムが記憶されていない場合には、このフラッシュメモリ13に制御プログラムを記憶させておき、それをRAM10に読み込むことにより、ROM9に制御プログラムを記憶している場合と同様の動作をCPU8にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
図2は、音楽プレーヤMPの外観((a))とその装着例((b))を示す図である。
図2(a)に示すように、音楽プレーヤMPのパネル面には、複数のスイッチ3a〜3dとLCD12aが設けられている。スイッチ3aは、電源のオン/オフを指示するための電源ボタンであり、スイッチ3bは、曲のテンポをアップさせて運動のペースをアップさせるためのペースアップボタンであり、スイッチ3cは、曲のテンポをダウンさせて運動のペースをダウンさせるためのペースダウンボタンであり、スイッチ3dは、LCD12a上にメニューを表示させるためのメニューボタンである。なお、スイッチ3bおよび3cは、メニュー項目やパラメータを選択したり、両スイッチ3bおよび3cの同時押しで、確定、再生および停止などを指示したりすることもできる。また、ヘッドフォン4は、ケーブル4aを介してヘッドフォンジャック(図示せず)に接続され、ヘッドフォンジャックは、前記アンプ18に接続されている。
ユーザは、音楽プレーヤMPを、たとえばベルトを介して腰に装着する。図2(b)は、この装着状態の一例を示している。もちろん、音楽プレーヤMPを装着する体の部位は、腰に限らず、他のどの部位でもよいが、本実施の形態では、音楽プレーヤMPをユーザの運動支援に用いているので、少なくとも運動の邪魔にならない部位に装着すべきである。
図3は、前記フラッシュメモリ13に記憶されたデータの一部を示す図である。同図には、一部データとして、プレイリスト(PlayList)ファイル13a、個人情報(PersonalInfo)ファイル13b、音楽情報(MusicInfo)ファイル13cおよび圧縮オーディオ演奏ファイル13dn(n=1,2,…)が記載されている。
プレイリスト・ファイル13aは、歩行(WALK)用プレイリスト13a1とジョギング(JOG)用プレイリスト13a2を備えている。ここで、プレイリストとは、再生(演奏)可能な曲の一覧表(リスト)である。他の携帯音楽プレーヤでは、プレイリストは、再生可能な曲とその再生順序を示しているが、本実施の形態では、プレイリストは、再生可能な曲だけ示し、その再生順序を示していない。歩行用プレイリスト13a1は、歩行(WALK)モード用に選曲された曲の一覧表であり、ジョギング用プレイリスト13a2は、ジョギング(JOG)モード用に選曲された曲の一覧表である。プレイリストには、本実施の形態では、各曲(圧縮オーディオ演奏ファイル13dn)にそれぞれ付与されたIDが登録されるが、これに限らず、各曲を特定できるものであれば、名称など、どのようなものであってもよい。なお、本実施の形態では、動作モードとして、歩行モードとジョギングモードの2種類モードしか備わっていないが、これは、専ら説明を簡単化するためであり、実際には、運動の種類(通常、10種類程度)に応じた数の動作モードが備わっている。
個人情報ファイル13bも、プレイリスト・ファイル13aと同様に、動作モードに応じた種類の個人情報を備えており、本実施の形態では、歩行モード用の個人情報13b1とジョギングモード用の個人情報13b2を備えている。個人情報とは、具体的には、テンポ範囲であり、このテンポ範囲を規定する最小テンポ値と最大テンポ値が記載される。このテンポ範囲、つまり最小テンポ値と最大テンポ値は、プレイリストに登録する演奏ファイル13dnを決定するために使用される。具体的には、歩行用プレイリスト13a1には、80bpm(=歩行モード最小テンポ値)から140bpm(=歩行モード最大テンポ値)までのテンポ値(=メインテンポのテンポ値)の演奏ファイル13dnが選曲されて登録され、ジョギング用プレイリスト13a2には、140bpm(=ジョギングモード最小テンポ値)から190bpm(=ジョギングモード最大テンポ値)までのテンポ値(=メインテンポのテンポ値)の演奏ファイル13dnが選曲されて登録される。
音楽情報ファイル13cは、各演奏ファイル13dnにそれぞれ対応するメタデータ13cn(n=1,2,…)を備えている。メタデータ13cnとしては、曲中で持続しているメインテンポ(MAIN TEMPO)、曲中で刻々と変わるテンポ(TEMPO)、拍位置(BEAT)、フェード位置(FADE)、音量(VOLUME)、曲の雰囲気(ATMOSPHERE)などが登録されている。メインテンポは、曲全体を通じて最も持続するテンポを表す値で、曲全体を代表するテンポ値であり、前記プレイリストに曲データを登録するために選曲したり、プレイリストに登録された曲データを再生のために選曲したりするときに用いられる。拍位置は、曲の始めから終わりまでの各拍の位置を曲の先頭を基準に時間で表したものである。典型的には、1拍ずつであるが、複数拍(たとえば、4拍)間隔で、時間的位置を保持するようにしてもよい。拍位置、フェード位置、音量および曲の雰囲気は、曲の再生を他の曲に移行させるときに用いられる。なお、拍位置以降のデータをどのように用いて、曲の再生を切り換えて行くかは、本発明の特徴であるので、その詳細な手順については後述する。
演奏ファイル13dnは、圧縮されたオーディオ演奏データによって形成される演奏ファイルである。圧縮方法は、どのようなものを用いてもよいが、たとえば、MP3(MPEG audio layer 3),WMA(Windows(登録商標) media audio),AAC(advanced audio coding)などを挙げることができる。演奏ファイル13dnの基となる圧縮オーディオ演奏データは、図7を用いて後述するように、PC100によって取得される。PC100は、圧縮オーディオ演奏データを取得すると同時に、その圧縮オーディオ演奏データの内容を解析し、その圧縮オーディオ演奏データに対応するメタデータを生成する。
以上のように構成された音楽プレーヤMPが実行する制御処理を、まず図4および図12を参照してその概要を説明し、次に図5〜図12を参照して詳細に説明する。
音楽プレーヤMPは、主として、
(A)ユーザの心拍数が最適心拍数カーブに沿うようなテンポの曲を選曲して再生する選曲再生処理
(B)ユーザのペースアップ/ダウンボタン3b,3cの操作に応じて運動のペースを変更するペース変更処理
を行う。
ユーザが音楽プレーヤMPにフィットネス運動開始を指示すると、前記CPU8は、処理を上記(A)の選曲再生処理に進め、まず、現在の設定状態に基づいて最適心拍数カーブを算出する。このとき、動作モードとして、ジョギングモードが設定されているものとする。図4は、ジョギングモードが設定されたときに算出された最適心拍数カーブの一例を示す図である。次にCPU8は、ジョギングモードの最小テンポ値、つまり140bpm(前記図3参照)を目標テンポの初期値に設定し、この目標テンポに相当するテンポの曲を前記ジョギング用プレイリスト13a2から検索する。この検索の結果、該当する曲がジョギング用プレイリスト13a2にあれば、CPU8は、その曲、つまり前記圧縮オーディオ演奏ファイル13dn(n=1,2,…)のいずれかを選択し、その再生を前記圧縮音声デコーダ16に指示する。一方、この検索の結果、該当する曲がジョギング用プレイリスト13a2になければ、CPU8は、目標テンポに相当するテンポの曲をMIDIデータの形式で生成して、生成した曲データを選択し、その再生を前記MIDI音源回路15に指示する。
選曲された曲データの再生が所定時間(たとえば、30秒間)継続すると、CPU8は、前記脈拍検出回路5を介してユーザの脈拍数(=心拍数)を検出し、フィットネス運動開始からの経過時間に対応する、最適心拍数カーブ上の心拍数(目標心拍数)と検出された心拍数との差分を算出する。そしてCPU8は、この差分が所定範囲(たとえば、目標心拍数の±3%以内)を超えるときには、その差分が縮小するように目標テンポを変更する。具体的には、CPU8は、検出された心拍数が目標心拍数の3%上より大きいときには、目標テンポを5%減少させる一方、検出された心拍数が目標心拍数の3%下より小さいときには、目標テンポを5%増加させる。CPU8は、このようにして変更された目標テンポに基づいて、新たな曲の選択を行う。これにより、ユーザの心拍数が最適心拍数カーブに沿うように目標テンポが調整され、その目標テンポに相当するテンポの曲が順次選曲されて、フィットネス運動終了まで再生される。
本発明の1つの特徴は、選曲された曲データを切り換えるときに、先行曲の拍と後続曲の拍とを一致させることにある。これにより、曲の再生が先行曲から後続曲にスムーズに移行するので、曲を切り換えたときでも、ユーザの運動やダンスのリズムが崩れない。そして、先行曲の拍と後続曲の拍を一致させる方法、つまり曲のつなぎ方法として、本実施の形態では図12に示すように、6種類のつなぎ方法を用意している。この6種類のつなぎ方法のそれぞれには、名称が付けられ、ユーザがそのうちのいずれかの名称を選択すると、選択された名称のつなぎ方法で、選曲された曲データがつながって行く。
フィットネス中に、ユーザがペースアップ/ダウンボタン3b,3cを操作すると、CPU8は、処理を前記(B)のペース変更処理に進め、まず、目標テンポを所定の値(たとえば、5%)だけ増加/減少させる。次にCPU8は、このペースアップ/ダウンボタン3b,3cの操作が所定のタイミングでなされたかどうかを判別し、所定のタイミングでなされたときは、個人情報13b2を変更する。これにより、ユーザの指示に従って、テンポの変更された曲が再生されるとともに、所定のタイミングで、個人情報も更新される。なお、曲の再生を、テンポの変更された新たな曲に切り換える場合にも、前記選択されたつなぎ方法で切り換えて行く。
次に、この制御処理を詳細に説明する。
図5は、音楽プレーヤMP、特にCPU8が実行するメインルーチンの手順を示すフローチャートである。
本メインルーチンでは、CPU8は、主として、
(1)初期設定処理(ステップS1)
(2)PC100との通信処理(ステップS3)
(3)フィットネス運動開始前処理(ステップS4〜S6)
(4)フィットネス運動開始時処理(ステップS8〜S10)
(5)フィットネス処理(ステップS11)
(6)フィットネス運動終了時処理(ステップS13,S14)
の各処理を行う。本メインルーチンは、前記電源ボタン3aによって電源がオンされたときに起動される。起動後、前記(1)の初期設定処理が1回実行され、これに続いて、前記(2)〜(6)の各処理が順次実行される。そして(6)の処理が終了すると、(2)の処理に戻って、(2)〜(6)の処理が、電源ボタン3aによって電源がオフされるまで、繰り返し実行される。
前記(1)の初期設定処理では、CPU8は、RAM6をクリアしたり、各種パラメータの値をデフォルト値に設定したりする等の初期設定を行う。この(1)初期設定処理ではさらに、前記動作モードおよび前記つなぎ方法の初期設定も行われ、たとえば、デフォルトの動作モードとして「歩行モード」が設定され、デフォルトのつなぎ方法として「瞬時切り換え」(図12(a)参照)が設定される。
ユーザが、前記USBI/F14とPC100とを、たとえばUSBケーブル(図示せず)を介して接続すると、CPU8は、USBI/F14にPC100が接続されたことを検知し、処理を前記(2)の通信処理に進める。
図6は、この通信処理の詳細な手順を示すフローチャートであり、同図には、音楽プレーヤMP側の通信処理、つまり前記(2)通信処理とPC100側の通信処理が示されている。なお、USBケーブルで接続された音楽プレーヤMPは、PC100側から外部記憶装置(ストレージ)と認識されるので、PC100は、音楽プレーヤMPの前記フラッシュメモリ13の記憶内容を自由に読み書きすることができる。
音楽プレーヤMPの記憶容量は、PC100の記憶容量に比べて、極めて少ないので、あらゆる動作モード(本実施の形態では、2種類の動作モードが例示されているが、実際には、前述のように10種類程度)で必要なすべての曲データ(前記圧縮オーディオ演奏ファイル13dnを含む)を音楽プレーヤMP(のフラッシュメモリ13)に記憶させることはできない。そこで、PC100に曲データを蓄えておき、その中から、当面必要な一部の曲データを選択して、フラッシュメモリ13に記憶させるようにしている。そして、当面必要な曲データであるかどうかの判断、必要な曲データのフラッシュメモリ13への記憶、不必要な曲データのフラッシュメモリ13からの削除および前記プレイリスト・ファイル13aなどの更新などは、すべてPC100側で行うようにしている。このためPC100と音楽プレーヤMPとの間の通信処理が必要となる。
PC100側の通信処理では、PC100のCPU(図示せず)は、次の処理を行う。すなわち
(101)音楽プレーヤMPに個人情報(PersonalInfo)ファイル13bを要求して受信する処理(ステップS101)
(102)個人情報ファイル13bから、各動作モードにおけるテンポ範囲を取得する処理(ステップS102)
(103)上記(102)の処理で取得した各動作モードにおけるテンポ範囲に応じて、曲データを選曲する処理(ステップS103)
(104)上記(103)の選曲結果に応じて、音楽情報(MusicInfo)ファイル13cおよびプレイリスト(PlayList)ファイル13aを生成する処理(ステップS104)
(105)音楽プレーヤMP(のフラッシュメモリ13)内の圧縮オーディオ演奏ファイル13dn、音楽情報(MusicInfo)ファイル13cおよびプレイリスト(PlayList)ファイル13aを更新する処理
である。
前記(103)の選曲処理では、各動作モードの個人情報に記載された最小テンポ値と最大テンポ値によって規定されるテンポ範囲に応じて、曲データを選択するが、「テンポ範囲に応じて」とは、このテンポ範囲を少しでも超えたテンポの曲データは選曲しないという意味ではなく、多少の余裕、たとえば10%程度の余裕を持って選曲するという意味である。したがって、個人情報に、最小テンポ値として90bpm、最大テンポ値として140bpmが記載されていたときには、81bpmから154bpmまでの範囲のテンポの曲データが選曲されることになる。
上記(103)選曲処理によって、プレイリストに登録すべき曲データが動作モード毎に選曲されるので、前記(104)の処理では、まず、動作モード毎のプレイリストを生成した後、すべてのプレイリストをまとめて、1つのプレイリスト・ファイルを生成する。次に、選曲された曲データには必ず、対応するメタデータが存在する(図7を用いて後述するように、曲データを取得するときには、同時にメタデータが生成されるし、そもそも、前記(103)の選曲処理は、各曲データに対応付けられたメタデータの内容に基づいてなされるから)ので、選曲されたすべての曲データに対応するすべてのメタデータをまとめて、1つの音楽情報ファイルを生成する。ただし、選曲された曲データとその曲データに対応するメタデータとが、保存先がPC100側から音楽プレーヤMPに変わったとしても、1対1の対応関係が変わらないように、曲データに付与されたIDを当該メタデータにも付与しておく。
前記(101)の処理に応じて、CPU8は、フラッシュメモリ13に記憶されている個人情報ファイル13bを、前記USBI/F14を介してPC100に送信する(ステップS21)。また、上記(105)の処理に応じて、CPU8は、フラッシュメモリ13内に記憶されている、圧縮オーディオ演奏ファイル13dn、音楽情報(MusicInfo)ファイル13cおよびプレイリスト(PlayList)ファイル13aを更新する(ステップS22)。
図7は、圧縮オーディオ演奏ファイル13dnの基になる圧縮オーディオ演奏データを取得するPC100側の処理の手順を示すフローチャートである。
PC100の前記CPUはまず、たとえばユーザの指示に応じて、圧縮オーディオ演奏データを取得し、HDD(ハードディスク装置)などの外部記憶装置(図示せず)に保存する(ステップS111)。圧縮オーディオ演奏データの取得先としては、いくつか考えられるが、たとえばインターネット上の圧縮オーディオ演奏データ提供サイトを挙げることができる。もちろん、これに限らず、非圧縮オーディオ演奏データを圧縮して、圧縮オーディオ演奏データを生成するソフトウェアを用いて、オーディオ演奏データのソース(音楽CDなど)から得たオーディオ演奏データを圧縮して取得するようにしてもよい。
次にCPUは、取得した圧縮オーディオ演奏データを解析し、メタデータを生成する(ステップS112)。具体的には、圧縮オーディオ演奏データを解析して、メインテンポ、テンポ、拍位置、フェード位置などを検出し、これらを記載したメタデータを生成する。圧縮オーディオ演奏データを解析する方法としては、たとえば、信号処理を施すことにより、音量の時間的変化を検出したり、音量の時間的変化の周期性を検出したり、それらの検出を特定の周波数帯域の信号について行うようにしたりする方法が考えられる。特に、低い周波数帯域の音量変化の周期性を検出することにより、バスドラムで刻まれた拍やテンポを検出することができる。また、人間が、圧縮オーディオ演奏データを伸長したものを実際に聴いて、メタデータを作成したり修正したりしてもよい。
さらにCPUは、生成したメタデータを当該圧縮オーディオ演奏データに関連付けて前記外部記憶装置に保存する(ステップS113)。
前記図5に戻り、前記(3)のフィットネス運動開始前処理では、まずCPU8は、ユーザ操作あるいは初期設定に従って、つなぎ方(前記つなぎ方法)を設定する(ステップS4)。
図12は、音楽プレーヤMPで選択可能なつなぎ方法を説明するための図であり、図12には、前記6種類のつなぎ方法が図示されている。同図(a)〜(f)の各つなぎ方法にはそれぞれ、名称が付与されている。同図(a)から順に、「瞬時切り換え」、「つなぎフレーズ挿入」、「つなぎフレーズ挿入+フェードアウト」、「瞬時切り換え+フェードアウト」、「クロスフェード」および「つなぎフレーズ挿入+フェードイン」である。前述のように、初期設定では、「瞬時切り換え」が設定されているので、ユーザがつなぎ方法の設定を変更しなければ、つなぎ方法としては、「瞬時切り換え」が設定される。一方、ユーザがつなぎ方法の設定を変更すれば、「瞬時切り換え」が他のつなぎ方法に変更される。ここで、つなぎ方法を変更する方法としては、たとえば、前記メニューボタン3dを操作することで、前記LCD12a上にメニューを表示させ、そのメニューの中から、つなぎ方法を変更設定する項目を選択し、それに応じて一覧表示された、前記6種類のつなぎ方法の名称の中からいずれかを選択する方法を挙げることができる。もちろん、つなぎ方法が変更できれば、その変更方法はこれに限られない。
次にCPU8は、ユーザ操作あるいは初期設定に従って、動作モードを前記歩行(WALK)モードあるいは前記ジョギング(JOG)モードのいずれかに設定する(ステップS5)。前述のように、初期設定では、歩行モードが設定されているので、ユーザが動作モードの設定を変更しなければ、動作モードとしては、歩行モードが設定される。一方、ユーザが動作モードの設定を変更すれば、歩行モードがジョギングモードに変更される。この動作モードの設定方法は、前記つなぎ方法の変更設定方法と同様の方法を用いればよい。
さらにCPU8は、ユーザ操作あるいは初期設定に従って、プレイリストを歩行(WALK)用プレイリスト13a1またはジョギング(JOG)用プレイリスト13a2のいずれかに設定する(ステップS6)。このプレイリストの設定方法も、前記つなぎ方法の変更設定方法と同様の方法を用いればよい。なお、プレイリストは、改めて設定しなくても、動作モードを設定すると、その動作モードに対応するプレイリストが自動的に設定されるようにしてもよい。
ユーザが、たとえばメニューボタン3dを操作することで、フィットネス運動開始を指示すると、CPU8は、処理を前記(4)のフィットネス運動開始時処理に進める。この(4)フィットネス運動開始時処理では、まずCPU8は、設定された動作モードに基づいて、最適心拍数カーブを算出する(ステップS8)。前記図4の最適心拍数カーブは、ジョギングモードが設定されたときに算出されたものである。最適心拍数カーブは、設定された動作モードでユーザがフィットネスを行ったときに、そのユーザにとって最適と推定される、フィットネス運動開始から終了までの心拍数の推移を表したものである。したがって、最適心拍数カーブは、ユーザ毎に異なるので、ユーザの情報(年齢や運動歴、体調など)に応じて算出する必要がある。ただし、本発明の特徴は、ユーザの情報に基づいて最適心拍数カーブを算出する方法にある訳ではないので、最適心拍数カーブは、公知の方法を採用して算出すればよい。このため、最適心拍数カーブを算出する方法についての説明は省略する。
次にCPU8は、動作モードに応じて最小テンポ値で目標テンポの初期設定を行う(ステップS9)。ここで、最小テンポ値とは、前記個人情報ファイル13b中の個人情報13b1,13b2に記載された最小テンポ値のことである。したがって、図3の場合には、歩行モードが設定されているときには、80bpmが目標テンポの初期値に設定され、ジョギングモードが設定されているときには、140bpmが目標テンポの初期値に設定される。
次にCPU8は、設定された目標テンポに相当するテンポの曲データを選曲する選曲処理を行う(ステップS10)。
図8は、この選曲処理の詳細な手順を示すフローチャートである。
本選曲処理では、まずCPU8は、選択されているプレイリストから目標テンポに該当する曲を検索する(ステップS31)。具体的には、そのプレイリストに登録されている曲を1つずつ検索対象曲とし、その検索対象曲に対応する、音楽情報ファイル13c中のメタデータ13cnにアクセスし、そのメタデータ13cnに記載されているメインテンポの値と目標テンポの値とを比較し、目標テンポの値の±3%以内にメインテンポの値が入っているときに、その検索対象曲を該当曲とする。なお、該当曲が複数検索された場合には、いつも同じ曲が該当曲にならないように、たとえばランダムにいずれか1曲を選択し、これを該当曲とすればよい。
前記ステップS31による検索の結果、該当する曲があれば、CPU8は、その曲の再生を前記圧縮音声デコーダ16に指示する(ステップS32→S34)一方、該当する曲がなければ、CPU8は、目標テンポの曲データ(MIDIデータ)を自動生成し(ステップS32→S33)、生成したMIDIデータの再生を前記MIDI音源回路15に指示する(ステップS34)。なお、本発明の特徴は、目標テンポに相当するテンポの曲データをどのようにして自動生成するかにある訳ではないので、目標テンポに相当するテンポの曲データを自動生成する方法は、公知のものを用いればよい。
このようにして、選曲処理が終了すると、CPU8は、処理を前記(5)のフィットネス処理に進める。この(5)フィットネス処理は、ユーザによるフィットネス運動終了の指示があるまで、あるいは、フィットネス運動終了予定時刻(前記図4参照)が経過するまで、継続する。
図9は、この(5)フィットネス処理の詳細な手順を示すフローチャートである。
この(5)フィットネス処理では、CPU8は、次の処理を行う。すなわち、
(21)前記最適心拍数カーブに沿った目標テンポの更新処理(ステップS44〜S46)
(22)目標テンポが更新されたときの選曲処理(ステップS47,S49)
(23)前記ペースアップ/ダウンボタン3b,3cが操作されたときのペース変更処理(ステップS42,S48)
(24)曲データの演奏が切り換え位置から所定距離前の位置に達したときの選曲処理(ステップS41,S49)
である。
前述のように、目標テンポの初期値が設定され、その目標テンポに相当するテンポの曲データが演奏(再生)され、その演奏開始から所定時間(本実施の形態では、30秒)経過すると(ステップS43)、CPU8は、処理を前記(21)の目標テンポの更新処理に進める。この(21)目標テンポの更新処理では、まずCPU8は、前記脈拍検出回路5を介して、ユーザの脈拍数(心拍数)を検出する(ステップS44)。次にCPU8は、検出された心拍数と、前記算出された最適心拍数カーブ上の、その心拍数検出時点の心拍数(以下、「目標心拍数」という)を比較し、検出された心拍数が目標心拍数の±3%以内になければ、目標テンポを5%上下させる(ステップS45→S46)。つまり、検出された心拍数が目標心拍数より3%以上上にあったときには、現在のフィットネスはユーザにとって負荷が大き過ぎるので、負荷を削減させるように目標テンポを5%減少させる。一方、検出された心拍数が目標心拍数より3%以上下にあったときには、現在のフィットネスはユーザにとって負荷が少な過ぎるので、負荷を増大させるように目標テンポを5%増加させる。ただし、目標テンポを増加あるいは減少させた結果、その目標テンポが、選択された個人情報(前記個人情報13b1または13b2のいずれか)で示されるテンポ範囲を超えるときには、その範囲を規定する端点(最小テンポ値あるいは最大テンポ値)に目標テンポを設定する。なお、検出された心拍数が目標心拍数の±3%以内にあれば、何もしない(ステップS45→リターン)。
この(21)目標テンポの更新処理によって、目標テンポが更新されると、CPU8は、処理を前記(22)の選曲処理に進める(ステップS47→S49)。この(22)選曲処理では、CPU8は、前記図8の選曲処理中の一部処理(前記ステップS34の処理)を変更した処理を用いて、目標テンポに相当するテンポの曲データの選曲を行う。以下、現在再生中の曲データから選曲された曲データに切り換えるときの曲データの切り換え位置をどう決定するかを説明した後、図8の選曲処理中の一部処理をどのように変更するかについて説明する。
図11は、曲データの切り換え位置をどう決定するかを説明するための図であり、同図(a)は、曲の再生が曲データの終端に近づいたときに次の曲データに切り換える場合を示し、同図(b)は、曲の再生の途中で、次の曲データに切り換える場合を示している。上記(22)選曲処理で曲データを切り換える場合は、図11(b)の場合に対応し、図11(a)の場合は、前記(24)の選曲処理で曲データを切り換える場合に対応する。しかし、両場合とも、拍位置で切り換えることに変わりはないので、ここで併せて説明する。
図11(a)は、曲の再生が終端に近づいたときに、先行曲Aをフェードアウトする場合(前記図12(d)および(e)の場合)と、後続曲Bをフェードインする場合(図12(e)の場合)を示している。
曲の切り換え時に、先行曲Aはフェードアウトさせるが、後続曲Bはフェードインさせない場合(図12(d)の場合)、CPU8は、フェードアウトを開始する位置の直前の拍位置Xを取得し、この拍位置Xに再生が到達すると同時に、後続曲Bの再生を開始する。ただし、後続曲Bの再生開始位置も、曲データの最初に現れる拍位置とする。先行曲Aおよび後続曲Bの拍位置およびフェード位置は、それぞれ対応するメタデータ中に記載されている(前記図3参照)ので、拍位置Xを取得したり、拍位置Yから曲の再生を開始したりすることは容易にできる。
曲の切り換え時に、先行曲Aから後続曲Bにクロスフェードさせて切り換える場合(図12(e)の場合))、フェードアウトを開始する位置の直前の拍位置Xを取得するとともに、フェードインを完了する位置の直後の拍位置Yを取得し、拍位置Xと拍位置Yとが一致するように、後続曲Bの再生開始を前倒しで行う。後続曲Bの再生を、拍位置Xと拍位置Yとが一致するように行うことも、先行曲Aおよび後続曲Bに対応する各メタデータ中の拍位置およびフェード位置を参照することで容易に行うことができる。
図11(b)は、曲の再生の途中で、次の曲データに切り換える場合(図12(a)の場合)を示している。この場合には、選曲の指示がなされたときに直ぐに、曲の再生を後続曲Bに切り換えると、先行曲Aの拍位置と後続曲Bの拍位置とが一致しないので、曲の再生が先行曲Aの拍位置に到達するのを待ってから、後続曲Bに切り換えて行く。ただし、曲の再生を次の曲に切り換える際には、所定の準備期間(たとえば、1秒間)が必要であるので、選曲が指示されてからその準備期間が経過した後に最初に現れる拍位置を先行曲Aの切り換え位置、つまり拍位置Xとして取得し、この拍位置Xに再生が到達すると同時に、後続曲Bの再生を開始する。
なお、本実施の形態では、先行曲Aおよび後続曲Bのそれぞれの拍位置を切り換え位置として、先行曲Aから後続曲Bに切り換えるようにしたが、先行曲Aと後続曲Bとは拍が合った状態で切り換わればよいので、各拍位置XおよびYを切り換え位置にする必然性はなく、拍を合うようにしたまま、拍位置から所定タイミングずらした位置(たとえば、半拍ずらした位置)を切り換え位置にしてもよい。すなわち、図11(a)の例では、切り換え位置Xを、フェードアウト開始直前の拍位置からさらに半拍前の位置にしたり、切り換え位置Yを、フェードイン完了直後の拍位置からさらに半拍後の位置にしたりしてもよい。
以上が、曲データの切り換え位置をどう決定するかについての説明である。この切り換え位置をどう決定するかについては、図12(a),(d)および(e)の場合を例に挙げて説明したが、本実施の形態では、つなぎ方法として、図12(a),(d)および(e)以外にも、図12(b),(c)および(f)を用意しているので、この場合についても説明する。
図12(b),(c)および(f)は、先行曲Aと後続曲Bとの間につなぎフレーズを挿入する例を示している。
図12(b)は、先行曲Aから瞬時に、つまりフェードアウトさせないで、つなぎフレーズの再生に移行させ、つなぎフレーズから瞬時に、つまりフェードインさせないで、後続曲Bの再生に移行させる例を示している。この場合、前述のようにして、先行曲Aの拍位置Xおよび後続曲Bの拍位置Yを取得し、曲の再生が拍位置Xに到達すると同時に、つなぎフレーズの再生を開始し、曲の再生がつなぎフレーズの終端に到達すると同時に、後続曲Bの再生を拍位置Yから開始する。
図12(c)は、先行曲Aをフェードアウトさせながら、それと並行してつなぎフレーズを再生し、つなぎフレーズから瞬時に後続曲Bの再生に移行させる例を示している。この場合は、前記図12(d)の場合と同様に、曲の再生が先行曲Aの拍位置Xに到達すると同時に、つなぎフレーズの再生を開始し、つなぎフレーズの再生中は、先行曲Aの再生がフェードアウト開始位置に到達すると、先行曲Aのフェードアウトを開始する。ここで、フェードアウトは、つなぎフレーズの再生が終了する前に先行曲Aが消音するようなレートで、先行曲Aの音量を減衰させて行けばよい。そして、曲の再生がつなぎフレーズの終端に到達すると同時に、後続曲Bの再生を拍位置Yから開始する。
図12(f)は、先行曲Aから瞬時に、つなぎフレーズの再生に移行させ、つなぎフレーズの再生と並行して、フェードインさせながら後続曲Bの再生に移行させる例を示している。この場合は、曲の再生が先行曲Aの拍位置Xに到達すると同時に、つなぎフレーズの再生を開始し、つなぎフレーズの再生中は、つなぎフレーズの再生が完了した時点で、後続曲Bの再生が拍位置Yになるようなレートおよび開始位置で、後続曲Bのフェードインを開始する。
本実施の形態では、先行曲Aおよび後続曲Bは、プレイリストに登録されている限り、圧縮オーディオ演奏データを用いるようにしている。そして、プレイリストには、ユーザが当面必要とする圧縮オーディオ演奏データが登録されるので、ほとんどの場合、先行曲Aおよび後続曲Bには、圧縮オーディオ演奏データが選択される。先行曲Aおよび後続曲Bのいずれにも、圧縮オーディオ演奏データが選択されているときに、図12(d)および(e)のように、2つの圧縮オーディオ演奏データが並行して再生される場合には、圧縮音声デコーダ16が2基必要となる。本実施の形態では、この場合にも再生できるように、音楽プレーヤMPは圧縮音声デコーダ16を2基備えていることを想定しているが、実際には、製造コストを低減化するために、圧縮音声デコーダ16は1基であることが望ましい。圧縮音声デコーダ16を1基とした場合には、2つの圧縮オーディオ演奏データの並行再生はできなくなるので、つなぎフレーズをMIDIデータの形式で生成し、これをMIDI音源回路15で再生することで、前記図12(c)のように、先行曲Aをフェードアウトさせて後続曲Bにつなげたり、あるいは、前記12(f)のように、先行曲Aから後続曲Bにフェードインさせてつなげたりすることができる。なお、前述のように、プレイリストに登録されていない曲が選曲されたときには、その曲をMIDIデータの形式で生成して再生するので、MIDI音源回路15は、コストを低減化させるために削除することはできず、必ず備えておかなければならない。また、先行曲Aおよび後続曲BがともにMIDIデータであり、つなぎフレーズもMIDIデータである場合には、MIDI音源回路15が複数の発音チャンネルを備えていれば、その発音チャンネル分の曲数(ただし、各曲が単音再生される場合)を同時に再生できるので、この場合には、先行曲A、後続曲Bおよびつなぎフレーズが重なったとしても、問題なく再生できる。
次に、つなぎフレーズの生成方法について説明する。
本実施の形態では、つなぎフレーズは、MIDIデータの形式で生成される。MIDIデータは、オーディオデータに比べ、そのテンポを自由に変更することができる。したがって、先行曲Aと後続曲Bとのテンポが大きく異なる場合に、テンポが一定のつなぎフレーズを生成したとしても(たとえば、テンポが一定のつなぎフレーズを複数個、前記フラッシュメモリ13に予め記憶させておき、その中からいずれかを選択して、つなぎフレーズを生成したような場合)、CPU8は、そのテンポを適宜変更することで、先行曲Aのテンポから後続曲Bテンポへ徐々に変化させながらつなげて行くようなつなぎフレーズを挿入することができる。このとき、リズム音色(たとえば、ドラム音色)のみのつなぎフレーズを生成すれば、先行曲Aおよび後続曲Bの各曲調がどのようなものであったとしても、その曲調に左右されず、先行曲Aから後続曲Bへ比較的スムーズにつながって行く。なお、ユーザによっては、先行曲Aと後続曲Bとのテンポが異なる場合に、先行曲Aのテンポから徐々にではなく、直ぐに後続曲Bのテンポに切り換わった方が心地よく感じる人もいるので、そのようなユーザには、後続曲Bのテンポと同じテンポであって、曲の進行に従ってテンポの変化しないつなぎフレーズを生成するようにすればよい。
なお、本実施の形態では、先行曲Aおよび後続曲Bの各楽音特性として、テンポを取得し、この取得したテンポに基づいて、どのようなテンポのつなぎフレーズを生成するかについて説明したが、楽音特性は、テンポに限らず、どのようなものを取得するようにしてもよい。この楽音特性は、前記メタデータ13cn中に記載されているので、容易に取得できる。具体的には、先行曲Aおよび後続曲Bを周波数分析し、そのパワースペクトルの時間的ばたつきを、雰囲気情報の1つであるEXCITE/CALMの値として予め求めておき、つなぎフレーズとして、先行曲Aから徐々に後続曲Bに変化するように、発音数を徐々に変えたMIDIのフレーズ、あるいは先行曲Aおよび後続曲Bのどちらか一方に応じた発音数のフレーズを生成するようにしてもよい。また、単に音量を先行曲Aから徐々に後続曲Bに変化するように、あるいは先行曲Aおよび後続曲Bのどちらか一方に合わせたフレーズを生成するようにしてもよい。
このように、本実施の形態では、先行曲Aおよび後続曲Bのうちの少なくとも一方の楽音特性に基づいて、つなぎフレーズをMIDIデータの形式で生成するようにしたが、これに限らず、つなぎフレーズとして選択可能な、複数の圧縮オーディオ演奏データを前記フラッシュメモリ13に記憶させておき、この中から前記楽音特性に適合するものを選択するようにしてもよい。この場合には、フラッシュメモリ13の記憶容量が少なく、つなぎフレーズを数多く記憶させることができないので、先行曲Aおよび後続曲Bとして、どのような楽音特性のものが選択されたとしても、それに合うような、曲調に左右されない中立的なつなぎフレーズを数を絞って記憶させるようにする。
先行曲Aとして、ジャンル:クラシック;曲調:癒し;テンポ;80bpmの曲が選択され、後続曲Bとして、ジャンル:ハードロック;曲調:ノリ良し;テンポ;180bpmの曲が選択されていた場合には、つなぎフレーズとして、ビート感のないアンビエント系のフレーズから徐々にバスドラムがフェードインし、最後にはアンビエント系の音がフェードアウトされ、バスドラムの音色のみの楽音が、後続曲Bのテンポで発音されるようなものを選択する。つまり、このようなつなぎフレーズをフラッシュメモリ13に予め記憶させておく。ここで、つなぎフレーズ中の「フェードイン」および「フェードアウト」は、先行曲Aの「フェードアウト」および後続曲Bの「フェードイン」とは無関係である。また、先行曲Aおよび後続曲Bの各楽音特性(上記ジャンル、曲調、テンポなど)は、前述のように、対応するメタデータ13cn中に記載されているので、容易に取得できる。
一方、先行曲Aとして、ジャンル:ポップス;曲調:明るい(Cメジャ);テンポ;120bpmの曲が選択され、後続曲Bとして、ジャンル:R&B;曲調:切ない(Aマイナ);テンポ;90bpmの曲が選択されていた場合には、つなぎフレーズとして、CメジャコードのフレーズからAマイナコードにスムーズに転調するようなものを選択する。つまり、このようなつなぎフレーズをフラッシュメモリ13に予め記憶させておく。
なお、上記つなぎフレーズは、あくまでも例であり、先行曲Aおよび後続曲Bの各楽音特性が決まれば、上記曲調のつなぎフレーズが選択されて再生される訳ではない。ただし、つなぎフレーズを選択あるいは生成する場合には、先行曲Aおよび後続曲Bのうちの少なくとも一方の楽音特性が取得され、その楽音特性が参照されて、つなぎフレーズの曲調が決定される。本発明の特徴の1つは、この点にある。
次に、図8の選曲処理中の一部処理をどのように変更するかについて説明する。
図8の選曲処理のステップS34では、前述のように、CPU8は、前記ステップS31による検索の結果、該当する曲があれば、その曲の再生を前記圧縮音声デコーダ16に指示する一方、該当する曲がなければ、目標テンポの曲データ(MIDIデータ)を自動生成し、生成したMIDIデータの再生を前記MIDI音源回路15に指示する。ステップS34の処理では、先行曲Aおよび後続曲Bのいずれが、圧縮オーディオ演奏データであってもMIDIデータであっても、再生可能に構成されているが、ここでは、曲の切り換え再生を問題にしているので、先行曲Aおよび後続曲Bはともに、圧縮オーディオ演奏データとして説明する。
前記図5のステップS4によって既に、つなぎ方法が設定されているので、CPU8は、設定されているつなぎ方法に従って、先行曲Aから後続曲Bに曲の再生を切り換えて行く。たとえば、つなぎ方法として、前記「瞬時切り換え」(前記図12(a)参照)が設定されている場合には、前記図11(b)を用いて説明したように、選曲の指示がなされると、CPU8は、その準備期間が経過した後に最初に現れる拍位置Xを、先行曲Aに対応するメタデータから取得するとともに、後続曲Bの再生開始位置である拍位置Yを、後続曲Bに対応するメタデータから取得する。そしてCPU8は、拍位置Xに再生が到達すると同時に、後続曲Bの再生を圧縮音声デコーダ16に指示する。また、つなぎ方法として、前記「つなぎフレーズ挿入」(前記図12(b)参照)が設定されている場合には、選曲の指示がなされると、CPU8は、上記「瞬時切り換え」が設定されているときと同様にして、拍位置Xおよび拍位置Yを取得する。そしてCPU8は、拍位置Xに再生が到達すると同時に、先行曲Aの再生を停止させるように圧縮音声デコーダ16に指示するとともに、つなぎフレーズの再生開始をMIDI音源回路15に指示する。さらにCPU8は、つなぎフレーズの終端に再生が到達すると同時に、後続曲Bの再生を圧縮音声デコーダ16に指示する。他のつなぎ方法が設定された場合の再生処理は、「瞬時切り換え」または「つなぎフレーズ挿入」が設定された場合の上記再生処理を類推適用することで、簡単に得られるので、その説明は省略する。
前記図9に戻り、フィットネス処理が実行されているときに、ユーザがペースアップ/ダウンボタン3b,3cを操作すると、CPU8は、処理を前記(23)のペース変更処理に進める。
図10は、この(23)ペース変更処理の詳細な手順を示すフローチャートである。
この(23)ペース変更処理では、まずCPU8は、ペースアップボタン3bが操作されたときには、目標テンポを5%アップさせる一方、ペースダウンボタン3cが操作されたときには、目標テンポを5%ダウンさせる(ステップS51)。
次にCPU8は、目標テンポのアップ/ダウンに応じて、最適心拍数カーブの形状を適宜修正する(ステップS52)。「適宜修正する」には、最適心拍数カーブの形状を修正しないことも含まれるので、修正しなくてもよい。しかし、最適心拍数カーブを修正しない場合には、ユーザがペースアップ/ダウンボタン3b,3cを操作することで、目標テンポがアップ/ダウンされて、その目標テンポに相当するテンポの曲データの演奏がなされたとしても、目標心拍数自体は最適心拍数カーブ上にある値と変わらないので、検出された心拍数が目標心拍数の±3%以内にない状態が続くことによって、目標テンポは次第に、最適心拍数カーブに基づいて決定される目標テンポ、つまり、ペースアップ/ダウンボタン3b,3cが操作されない状態の目標テンポに近づいて行くことになる。つまり、ペースアップ/ダウンボタン3b,3cが操作されて目標テンポが更新されたとしても、それは一時的なものとなる。したがって、ペースアップ/ダウンボタン3b,3cが操作されて目標テンポが更新されたときには、それに応じて、最適心拍数カーブの形状も変更した方が好ましい。変更の割合は、目標テンポの変更の割合と同様に、5%アップ/ダウンとすればよいが、これより多くても少なくてもよい。また、フィットネスの経過時間に応じて、変更の割合を変えてもよい。
次にCPU8は、ペースアップ/ダウンボタン3b,3cによって目標テンポのアップ/ダウンが指示された時刻が、フィットネス運動開始から30秒以内であれば、設定されている動作モードの最小テンポ値を、アップ/ダウン後の目標テンポ値で更新する(ステップS53→S54)。具体的には、ジョギングモードが設定され、目標テンポの初期値として140bpmが設定された状態で、ユーザが、フィットネス運動開始から30秒以内に、ペースダウンボタン3cを操作した場合、目標テンポは、133bpm(=140bpmの5%ダウンした値)に変更され、その目標テンポ、つまり133bpmが、個人情報13b2の最小テンポ値となる。したがって、個人情報13b2の最小テンポ値は、更新前の140bpmから133bpmに更新される。ただし、個人情報13b2の最小テンポ値は、ステップS54の処理により直ぐに更新される訳ではなく、これは仮更新であり、後述するステップS14の処理によって、ユーザが了承したときに更新が確定する。
ユーザが、フィットネス運動開始から30秒を超えてから、ペースダウンボタン3cを操作して、目標テンポが最大テンポ値からダウンしたとき、あるいは、ペースアップボタン3bを操作して、目標テンポが最大テンポ値を超えたときには、CPU8は、設定されている動作モードの最大テンポ値を、アップ/ダウン後の目標テンポ値で更新する(ステップS55→S56)。具体的には、ジョギングモードが設定され、目標テンポとして190bpmが設定された状態で、ユーザがペースダウンボタン3cを操作した場合、目標テンポは、181bpm(=190bpmの5%ダウンした値)に変更され、その目標テンポ、つまり181bpmが、個人情報13b2の最大テンポ値となる。したがって、個人情報13b2の最大テンポ値は、更新前の190bpmから181bpmに更新される。ただし、個人情報13b2の最大テンポ値は、ステップS56の処理により直ぐに更新される訳ではなく、これは仮更新であり、後述するステップS14の処理によって、ユーザが了承したときに更新が確定する。
このようにして(23)ペース変更処理により目標テンポが変更されると、CPU8は、続いて前記ステップS49の選曲処理を行う。
選択された曲データの演奏がその曲の切り換え位置から所定距離前の位置に達すると(ステップS41)、CPU8は、処理を前記(24)の選曲処理に進める。この(24)選曲処理では、CPU8は、前記図8の選曲処理の一部を変更した処理、つまり前記ステップS49の選曲処理を用いて、目標テンポに相当するテンポの曲データの選曲を行う(ステップS49)。なお、本発明は、先行曲Aが元々、フェードアウトしながら終了する種の曲である場合には、フェードアウトが完了した後に後続曲Bに切り換えると、たとえ拍が合っていたとしても、ユーザの運動やダンスのリズムは崩れてしまうので、フェードアウトを開始する前の拍位置で、後続曲Bあるいはつなぎフレーズの再生を開始するようにしている。したがって、前記ステップS41の判別処理では、フェードアウトしながら終了する曲である場合には、フェードアウト位置の直前の拍から所定距離前の位置に達したかどうかを判別している。
前記図5に戻り、前記(5)のフィットネス処理が終了すると、CPU8は、処理を前記(6)のフィットネス運動終了時処理に進める。この(6)フィットネス運動終了時処理では、CPU8は、個人情報に記載されている最大テンポ値あるいは最小テンポ値が変更されたときには、ユーザに確認の上、変更内容を個人情報ファイル13b中、対応する個人情報に書き込む(ステップS13→S14)。
このように、本実施の形態では、先行曲Aおよび後続曲Bの無音部分やフェードイン/アウト部分をカットしつつ、先行曲Aおよび後続曲Bの拍位置を合わせた状態で、先行曲Aから後続曲Bに曲の再生を切り換えることができるので、ユーザが曲のリズムに乗って運動やダンスなどを行っているときでも、運動やダンスのリズムを崩さずに、曲を切り換えて再生することができる。
また、先行曲Aおよび後続曲Bのうちの少なくとも一方の楽音特性を取得し、この楽音特性に基づいて、先行曲Aと後続曲Bとをつなぐつなぎフレーズを生成するようにしたので、先行曲Aから後続曲Bにスムーズにつながって行き、ユーザの運動やダンスのリズムを崩さない。そして、楽音特性は、対応するメタデータに記載されたもの、つまり、予め他の装置(本実施の形態では、PC100)により解析されて、メタデータ内に記載されたものがCPU8によって読み出されて取得されるので、CPU8としては、曲データの楽音特性を分析できる程、演算能力の高いものを採用しなくてもよい。これにより、製造コストを削減することができる。
なお、本実施の形態では、ペース変更操作によって目標テンポが更新される度に、選曲処理が行われるが、頻繁に曲が切り換わっては不自然で実用的でないので、曲の切り換え後30秒間は、次の曲の切り換えを行わないようにするのが望ましい。
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。