(57)【特許請求の範囲】
【請求項１】
時間管理情報とイベントデータとを含む音楽コンテンツデータに基づいて、音源ハードウェア制御データを生成するソフトウェア処理手段と、
所定量の前記音源ハードウェア制御データを記憶することのできるバッファメモリ手段と音源手段とを内蔵し、前記ソフトウェア処理手段から供給される音源ハードウェア制御データに基づいて楽音を生成する音源ハードウェア手段とを備え、
前記ソフトウェア処理手段は、前記音楽コンテンツデータに含まれる少なくとも前記イベントデータを前記音源ハードウェア手段が処理可能な楽音生成用パラメータに変換し、前記音源ハードウェア制御データを前記変換された楽音生成用パラメータと時間管理情報とを含んだデータとして前記バッファメモリ手段に転送し、
前記音源ハードウェア手段は、前記バッファメモリ手段から前記音源ハードウェア制御データを順次読み出し、読み出した前記音源ハードウェア制御データに含まれる前記時間管理情報に基づくタイミングに達する毎に、当該時間管理情報に続く前記楽音生成用パラメータに基づいて楽音を生成することにより自動演奏を行うと共に、前記バッファメモリ手段に未だ読み出されていない音源ハードウェア制御データが常に存在するように前記ソフトウェア処理手段に対して音源ハードウェア制御データの転送を要求することを特徴とする楽音生成装置。
【請求項２】
前記音楽コンテンツデータを記憶する記憶手段を備え、
前記ソフトウェア処理手段は、処理に余裕がある時間を利用して前記記憶手段に記憶されている前記音楽コンテンツデータを前記音源ハードウェア制御データに変換する処理を実行し、変換された前記音源ハードウェア制御データを前記記憶手段に記憶するようにしたことを特徴とする請求項１記載の楽音生成装置。
【請求項３】
前記音源ハードウェア手段は基準時間単位毎に発生されるクロック信号をカウントするカウンタ手段を備え、前記ソフトウェア処理手段から供給されたスタート信号に応じてカウントを開始する前記カウンタ手段のカウント値が、前記音源ハードウェア制御データ中に含まれている時間管理情報が示す値以上になった際に、該時間管理情報に続く音源ハードウェア制御データ中の前記楽音生成用パラメータを音源制御レジスタに書き込むようにしたことを特徴とする請求項１記載の楽音生成装置。
【請求項４】
任意の演奏開始位置のデータを記憶するポイントレジスタ手段を備えており、前記音源ハードウェア手段は、該ポイントレジスタ手段に記憶されている演奏開始位置のデータに対応する位置からの音源ハードウェア制御データに基づいて楽音を生成するようにしたことを特徴とする請求項１記載の楽音生成装置。
【請求項５】
前記ソフトウェア処理手段において、前記音楽コンテンツデータを前記音源ハードウェア制御データに変換する際に、時間管理情報が同値とされると共に、楽音生成用のパラメータを音源制御レジスタに書き込むアドレスを示すインデックス情報が連続する場合は、前記時間管理情報に続くインデックス情報を先頭のインデックス情報とし、該インデックス情報に続く楽音生成用のパラメータを、連続するインデックス情報に対応している複数のパラメータとするように変換することを特徴とする請求項１記載の楽音生成装置。
【請求項６】
前記音源ハードウェア手段は基準時間単位毎に発生されるクロック信号をカウントするカウンタ手段を備え、前記ソフトウェア処理手段から供給されたスタート信号に応じてカウントを開始する前記カウンタ手段のカウント値が、前記音源ハードウェア制御データ中に含まれている時間管理情報が示す値以上になった際に、該時間管理情報に続く音源ハードウェア制御データ中の楽音生成用のパラメータを音源制御レジスタに書き込む場合に、前記パラメータが複数のパラメータデータから構成されている場合は、前記インデックス情報が示すアドレスを１づつインクリメントしながらそれぞれのパラメータデータを、前記音源制御レジスタに書き込むようにしたことを特徴とする請求項５記載の楽音生成装置。
【請求項７】
請求項１ないし６のいずれかに記載の楽音生成装置を備える携帯端末装置であって、
前記ソフトウェア処理手段は、携帯端末機能処理をメイン処理として実行するようになされていることを特徴とする携帯端末装置。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、簡易な構成の楽音生成装置に関するものであり、メロディ音を生成可能な携帯端末装置に適用して好適なものである。
【０００２】
【従来の技術】
従来の楽音生成装置は、ハードウェアを用いて楽音を生成するようにしたハードウェア楽音生成装置と、楽音生成プログラムをコンピュータに実行させることにより楽音を生成するソフトウェア楽音生成装置とがあった。
従来のハードウェア楽音生成装置の構成例を図２５に示す。図２５において、ＣＰＵ（Central Processing Unit）１１０は、ＭＩＤＩ（Musical Instrument Digital Interface）データや、後述するＳＭＡＦ（Synthetic Music Mobile Application Format）データ等の音楽コンテンツデータ１１１を音源ハードウェア１１５に供給している。この場合、ＭＩＤＩデータやＳＭＡＦデータは外部から転送されたデータであったり、記憶手段から読み出されたデータとされる。音源ハードウェア１１５には、シーケンサ１３２とハードウェアからなる音源部１３３が備えられている。シーケンサ１３２は、ＭＩＤＩデータやＳＭＡＦデータを音源ハードウェア１１５に固有の制御データに変換するハードウェア固有制御データ変換部１３２ａと、データ中の時間管理情報に従って、楽音の発音を制御する時間管理部１３２ｂとを有している。
【０００３】
このように構成されたハードウェア楽音生成装置においては、楽音を再生する際に、制御データ中に含まれているイベントとイベントの時間間隔を示すインターバルデータや、発音期間を示すゲートタイムデータに基づくタイミングにおいて、時間管理部１３２ｂがハードウェア固有制御データ変換部１３２ａにデータ出力の指示を与えている。これ受けて、ハードウェア固有制御データ変換部１３２ａは、変換したハードウェア固有制御データを音源部１３３に出力する。音源部１３３では、供給されたハードウェア固有制御データに基づいて楽音を生成して出力する。これにより、楽音が再生されるようになる。
【０００４】
また、従来のソフトウェア楽音生成装置の構成例を図２６に示す。図２６において、ＣＰＵ２１０は、シーケンサ機能手段２３２を備えている。このシーケンサ機能手段２３２は、ＣＰＵ２１０がシーケンサプログラムを実行することにより実現されており、シーケンサ機能手段２３２はハードウェア固有制御データ変換手段２１０ａと、時間管理手段２１０ｂとを有している。ハードウェア固有制御データ変換手段２１０ａは、ＭＩＤＩデータや、ＳＭＡＦデータ２１１を音源ハードウェア２１５に固有の制御データに変換する手段であり、時間管理手段２１０ｂは、データ中の時間管理情報に従って、楽音を発音するタイミングを制御する手段である。なお、ハードウェア固有制御データ変換手段２１０ａが変換するＭＩＤＩデータやＳＭＡＦデータ２１１は外部から転送されたデータであったり、記憶手段から読み出されたデータとされる。また、ハードウェア固有制御データから楽音を生成する音源ハードウェア２１５には、ハードウェアからなる音源部２３３が備えられている。
【０００５】
このように構成されたソフトウェア楽音生成装置において、楽音を再生する際には、ＣＰＵ２１０の時間管理手段２１０ｂは、変換されたハードウェア固有制御データ中に含まれているイベントとイベントの時間間隔を示すデュレーションデータや、発音期間を示すゲートタイムデータに基づくタイミングにおいて、ハードウェア固有制御データ変換手段２１０ａにデータ出力の指示を与える。これを受けて、ハードウェア固有制御データ変換手段２１０ａは、変換したハードウェア固有制御データを音源ハードウェア２１５に出力する。音源ハードウェア２１５では、供給されたハードウェア固有制御データに基づいて音源部２３３が楽音を生成して出力する。これにより、楽音が再生されるようになる。
【０００６】
【発明が解決しようとする課題】
しかしながら、楽音生成装置をハードウェアで実現するハードウェア楽音生成装置においては、シーケンサ１３２が音楽コンテンツデータの変換および時間管理を行っていることから、シーケンサ１３２の構成が複雑となってしまうことになる。これにより、シーケンサ１３２の回路規模が大きくなりコストアップになるという問題点があった。
また、楽音生成装置をソフトウェアで実現するソフトウェア楽音生成装置においては、ＣＰＵ２１０が音楽コンテンツデータの変換および時間管理を行っていることから、ＣＰＵ２１０の処理が重くなってしまうことになる。これにより、高速のＣＰＵが必要となる。特に、ＣＰＵが通信制御等の重要度の高い他の処理をメインに行うものである場合には、シーケンサ処理を行うために高価な高速のＣＰＵが必要になるという問題点があった。
さらに、従来のハードウェア楽音生成装置および従来のソフトウェア楽音生成装置においては、楽音を再生する際には曲の先頭から再生されている。すると、携帯電話機等の着信メロディとして楽音が再生される際には、曲の先頭の部分しか聴くことができないという問題点があった。
【０００７】
そこで、本発明は、ハードウェアの回路規模が大きくならないと共に、ソフトウェアの重い処理を必要とすることのない楽音生成装置、および、このような楽音生成装置を備える携帯端末装置を提供することを第１の目的とし、この楽音生成装置および携帯端末装置において、曲の任意の位置から楽音を再生できるようにすることを第２の目的としている。
【０００８】
【課題を解決するための手段】
上記第１の目的を達成するために、本発明の楽音生成装置は、時間管理情報とイベントデータとを含む音楽コンテンツデータに基づいて、音源ハードウェア制御データを生成するソフトウェア処理手段と、所定量の前記音源ハードウェア制御データを記憶することのできるバッファメモリ手段と音源手段とを内蔵し、前記ソフトウェア処理手段から供給される音源ハードウェア制御データに基づいて楽音を生成する音源ハードウェア手段とを備え、前記ソフトウェア処理手段は、前記音楽コンテンツデータに含まれる少なくとも前記イベントデータを前記音源ハードウェア手段が処理可能な楽音生成用パラメータに変換し、前記音源ハードウェア制御データを前記変換された楽音生成用パラメータと時間管理情報とを含んだデータとして前記バッファメモリ手段に転送し、前記音源ハードウェア手段は、前記バッファメモリ手段から前記音源ハードウェア制御データを順次読み出し、読み出した前記音源ハードウェア制御データに含まれる前記時間管理情報に基づくタイミングに達する毎に、当該時間管理情報に続く前記楽音生成用パラメータに基づいて楽音を生成することにより自動演奏を行うと共に、前記バッファメモリ手段に未だ読み出されていない音源ハードウェア制御データが常に存在するように前記ソフトウェア処理手段に対して音源ハードウェア制御データの転送を要求している。
また、上記本発明の楽音生成装置において、前記音楽コンテンツデータを記憶する記憶手段を備え、前記ソフトウェア処理手段は、処理に余裕がある時間を利用して前記記憶手段に記憶されている前記音楽コンテンツデータを前記音源ハードウェア制御データに変換する処理を実行し、変換された前記音源ハードウェア制御データを前記記憶手段に記憶するようにしてもよい。
【０００９】
さらに、上記本発明の楽音生成装置において、前記音源ハードウェア手段は基準時間単位毎に発生されるクロック信号をカウントするカウンタ手段を備え、前記ソフトウェア処理手段から供給されたスタート信号に応じてカウントを開始する前記カウンタ手段のカウント値が、前記音源ハードウェア制御データ中に含まれている時間管理情報が示す値以上になった際に、該時間管理情報に続く音源ハードウェア制御データ中の前記楽音生成用パラメータを音源制御レジスタに書き込むようにしたしてもよい。
【００１０】
さらにまた、上記本発明の楽音生成装置における前記ソフトウェア処理手段において、前記音楽コンテンツデータを前記音源ハードウェア制御データに変換する際に、時間管理情報が同値とされると共に、楽音生成用のパラメータを音源制御レジスタに書き込むアドレスを示すインデックス情報が連続する場合は、前記時間管理情報に続くインデックス情報を先頭のインデックス情報とし、該インデックス情報に続く楽音生成用のパラメータを、連続するインデックス情報に対応している複数のパラメータとするようにしてもよい。
さらにまた、上記本発明の楽音生成装置において、前記音源ハードウェア手段は基準時間単位毎に発生されるクロック信号をカウントするカウンタ手段を備え、前記ソフトウェア処理手段から供給されたスタート信号に応じてカウントを開始する前記カウンタ手段のカウント値が、前記音源ハードウェア制御データ中に含まれている時間管理情報が示す値以上になった際に、該時間管理情報に続く音源ハードウェア制御データ中の楽音生成用のパラメータを音源制御レジスタに書き込む場合に、前記パラメータが複数のパラメータデータから構成されている場合は、前記インデックス情報が示すアドレスを１づつインクリメントしながらそれぞれのパラメータデータを、前記音源制御レジスタに書き込むようにしてもよい。
【００１１】
さらにまた、上記第２の目的を達成することのできる上記本発明の楽音生成装置は、任意の演奏開始位置のデータを記憶するポイントレジスタ手段を備えており、前記音源ハードウェア手段は、該ポイントレジスタ手段に記憶されている演奏開始位置のデータに対応する位置からの音源ハードウェア制御データに基づいて楽音を生成するようにしている。
【００１２】
次に、上記第１の目的あるいは第２の目的をも達成することのできる本発明の携帯端末装置は、上記いずれかの楽音生成装置を備える携帯端末装置であって、前記ソフトウェア処理手段は、携帯端末機能処理をメイン処理として実行するようになされている。
【００１３】
このような本発明によれば、音楽コンテンツデータを音源ハードウェア制御データに変換する変換処理をソフトウェア処理手段で実行し、時間管理を音源ハードウェアで行うようにしたので、音源ハードウェアに設けられたシーケンサの回路規模を小さくすることができる。この場合、時間管理はカウンタ手段を用いて簡易な構成で行うことができる。また、ソフトウェア処理手段では時間管理のための処理を行う必要がないので、ソフトウェア処理手段の負荷を軽くすることができ、高速のＣＰＵを不要とすることができる。
さらに、ソフトウェア処理手段が、処理に余裕がある時間を利用して変換処理を実行することにより、ソフトウェア処理手段に負荷が集中することを防止することができ、高速のソフトウェア処理手段とする必要性をさらに低くすることができる。さらにまた、時間管理情報が同値とされると共に、楽音生成用のパラメータを音源制御レジスタに書き込むアドレスを示すインデックス情報が連続する場合は、時間管理情報に続くインデックス情報を先頭のインデックス情報とし、続く楽音生成用のパラメータを複数のパラメータとなるように変換することにより、音源ハードウェア制御データ量を低減させることができ、ソフトウェア処理手段および音源ハードウェア手段の負担を軽くすることができる。
さらにまた、任意の演奏開始位置のデータを記憶するポイントレジスタ手段を備え、ここに記憶されている演奏開始位置のデータに対応する位置からの音源ハードウェア制御データに基づいて楽音を生成するようにしたので、音楽コンテンツデータとされている曲の任意の位置から再生することが可能となる。これにより、再生される楽音を着信メロディとして用いる際には、曲の好みの位置からの着信メロディを聴くことができるようになる。
【００１４】
【発明の実施の形態】
本発明の楽音生成装置を備える本発明の携帯端末装置を携帯電話機に適用した場合の実施の形態の構成例を図１に示す。
図１に示す携帯電話機１は、一般にリトラクタブルとされたアンテナ２５を備えており、基地局２と無線回線により接続可能とされている。アンテナ２５は変調・復調機能を有する通信部１３に接続されている。中央処理装置（Central Processing Unit：ＣＰＵ）１０は、電話機能プログラムを実行することにより携帯電話機１の各部の動作を制御するシステム制御部であり、動作時の経過時間を示したり、特定の時間間隔でタイマ割込を発生するタイマを備えている。また、ＣＰＵ１０は後述するデータ変換処理等の楽音生成関連処理を行う。ＲＡＭ１１は基地局２を介して接続したダウンロードセンター等からダウンロードされた配信フォーマットとされた音楽コンテンツデータの格納エリアや、音楽コンテンツデータを変換した音源ハードウェア制御データの格納エリア、および、ＣＰＵ１０のワークエリア等が設定されるＲＡＭ（Random Access Memory）である。ＲＯＭ１２はＣＰＵ１０が実行する送信や着信の各種電話機能プログラムや楽音生成関連処理等のプログラムや、プリセットされた音源ハードウェア制御データ等の各種データが格納されているＲＯＭ（Read Only Memory）である。
【００１５】
また、通信部１３は、アンテナ２５で受信された信号の復調を行うと共に、送信する信号を変調してアンテナ２５に供給している。通信部１３で復調された受話信号は、音声処理部（コーダ／デコーダ）１４において復号され、マイク２１から入力された通話信号は音声処理部１４において圧縮符号化される。音声処理部１４は、音声を高能率圧縮符号化／復号化しており、例えばＣＥＬＰ（Code Excited LPC ）系やＡＤＰＣＭ（適応差分ＰＣＭ符号化）方式のコーダ／デコーダとされている。音源ハードウェア１５は、音声処理部１４からの受話信号を受話用スピーカ２２から放音したり、変換された音源ハードウェア制御データを再生することにより着信メロディ、保留音を生成して出力することができる。なお、着信メロディは着信用スピーカ２３から放音され、保留音は受話信号とミキシングされて受話用スピーカ２２から放音される。
【００１６】
また、音楽コンテンツデータのフォーマットは配信するに便利なＭＩＤＩフォーマットやＳＭＡＦフォーマットとされており、ＣＰＵ１０がこれらのフォーマットの音楽コンテンツデータを音源ハードウェア１５に固有なフォーマットの音源ハードウェア制御データに変換することにより、再生可能としている。変換された音源ハードウェア制御データはＲＡＭ１１に記憶することができる。音源ハードウェア１５は音源ハードウェア制御データに基づいて楽音を再生しており、この際に、内部に所定量の音源ハードウェア制御データを一時記憶するＦＩＦＯが設けられている。このＦＩＦＯは一曲分の音源ハードウェア制御データが記憶できる記憶容量とされてもよいが、記憶容量が小さく一曲分の音源ハードウェア制御データを記憶できない場合は、ＦＩＦＯに所定量の空きエリアが生じた際に、音源ハードウェア１５がＦＩＦＯデータリクエスト信号をＣＰＵ１０に与え、ＣＰＵ１０がＲＡＭ１１あるいはＲＯＭ１２に記憶されている音源ハードウェア制御データの続きを読み出して音源ハードウェア１５に転送するようにしてもよい。このようにすると、小さい容量のＦＩＦＯを用いても大きなデータ量とされる音源ハードウェア制御データの楽曲を再生することができるようになる。
【００１７】
さらに、インタフェース（Ｉ／Ｆ）１６は、パーソナルコンピュータ等の外部機器２０から音楽コンテンツデータ等をダウンロードするためのインタフェースである。入力部１７は携帯電話機１に備えられた「０」から「９」のダイヤルボタンや各種ボタンから構成される入力手段である。表示部１８は電話機能のメニューや、ダイヤルボタン等のボタンの操作に応じた表示がされる表示器である。バイブレータ１９は、着信時に着信音に代えて携帯電話機１の本体を振動させることにより、着信をユーザに知らせるバイブレータである。なお、各機能ブロックはバス２４を介してデータ等の授受を行っている。
【００１８】
次に、本発明の実施の形態にかかる携帯電話機１における楽音生成装置の構成を図２に示す。ただし、図２では、受話用スピーカ２２，着信用スピーカ２３およびそれに関連する構成を省略して示している。なお、図中のＣＰＵ１０と音源ハードウェア１５あるいはＲＡＭ１１とは図示されていないがバス２４を介してデータの授受を行っている。
図２に示す本発明の楽音生成装置において、ＲＡＭ１１には音楽コンテンツデータであるファイル化されたＭＩＤＩデータやＳＭＡＦデータ等が領域１１ａに格納されている。また、ＣＰＵ１０において処理に余裕があったり空き時間等がある時や、あるいは音楽コンテンツデータの再生指示があった場合に、ＣＰＵ１０はＲＡＭ１１の領域１１ａから音楽コンテンツデータを読み出して音源ハードウェア制御データに変換する変換処理を実行し、変換後の音源ハードウェア制御データをＲＡＭ１１の領域１１ｂに格納している。領域１１ａには複数曲分の音楽コンテンツデータが記憶可能とされ、領域１１ｂにも複数曲分の音源ハードウェア制御データが記憶可能とされている。
【００１９】
前述したようにＣＰＵ１０は、ＲＡＭ１１の領域１１ａから音楽コンテンツデータを読み出して音源ハードウェア制御データに変換する変換処理を実行し、変換後の音源ハードウェア制御データをＲＡＭ１１の領域１１ｂに格納している。この変換処理は、ＣＰＵ１０における音源ハードウェア制御データ変換手段１０ｂが実行するが、音源ハードウェア制御データ変換手段１０ｂはソフトウェアで実現されている。ＣＰＵ１０において、音楽コンテンツデータを音源ハードウェア制御データに変換する際には、メモリコントローラ１０ａがＲＡＭ１１の領域１１ａから変換すべき音楽コンテンツデータを先頭から順次読み出して、音源ハードウェア制御データ変換手段１０ｂに供給する。音源ハードウェア制御データ変換手段１０ｂは、供給された音楽コンテンツデータを解釈して逐次音源ハードウェア制御データに変換する。変換された音源ハードウェア制御データは、メモリコントローラ１０ａがＲＡＭ１１の領域１１ｂに順次書き込む。これにより、ＣＰＵ１０は音楽コンテンツデータを音源ハードウェア制御データに変換することができる。
なお、ＣＰＵ１０によるデータ変換処理を行いながら楽音の再生を行う場合は、メモリコントローラ１０ａは音源ハードウェア１５のＦＩＦＯ（First-In First-Out）３１に変換された音源ハードウェア制御データｆを書き込むようにする。
【００２０】
音源ハードウェア１５は、所定量の音源ハードウェア制御データを格納することのできるＦＩＦＯ３１を備え、シーケンサ３２はこのＦＩＦＯ３１から順次音源ハードウェア制御データを読み出している。ＦＩＦＯ３１は音源ハードウェア制御データを、例えば３２ワード分格納できる先入れ先出し方式の記憶手段であり、先に書き込まれた音源ハードウェア制御データから順次読み出されるようにされている。また、ＦＩＦＯ３１から音源ハードウェア制御データが読み出されて設定された所定量の空きエリアがＦＩＦＯ３１に発生した際には、ＦＩＦＯ３１はＦＩＦＯデータリクエスト信号ｅをＣＰＵ１０のメモリコントローラ１０ａに送り、続く音源ハードウェア制御データｆをＦＩＦＯ３１に転送するように要求している。これにより、小さい容量のＦＩＦＯ３１を用いても大きなデータ量とされる音源ハードウェア制御データの楽曲を再生することができるようになる。
【００２１】
音源ハードウェア１５におけるシーケンサ３２は、データデコード回路３２ｂを備え、データデコード回路３２ｂはＦＩＦＯ３１から読み出した音源ハードウェア制御データを、時間管理情報と音源制御レジスタライトデータとに分離している。この場合、時間管理情報に前置して時間管理情報識別アドレスが付加されている場合は、時間管理情報識別アドレスに続く例えば１バイトのデータを時間管理情報として分離する。時間管理情報識別アドレスおよび時間管理情報を除いたデータである音源制御レジスタライトデータは、楽音生成用のパラメータのデータでありレジスタライトコントローラ３２ｃの制御の基で音源部３３の音源制御レジスタ３３ａに書き込まれるようになる。レジスタライトコントローラ３２ｃは、レジスタライト許可信号ｄが出力されたタイミングで音源制御レジスタライトデータを音源制御レジスタ３３ａに書き込むが、レジスタライト許可信号ｄは、後述するが時間管理情報のデュレーションの値やゲートタイムの値とカウンタ（タイマー）３２ａのカウント値が一致したタイミングで出力される。
【００２２】
シーケンサ３２におけるカウンタ３２ａは基準時間単位とされる、例えば１ｍｓ毎に出力されるクロックを計数しており、この計数はＣＰＵ１０から出力されるシーケンサスタート信号ｇが印加された際に開始される。また、シーケンサスタート信号ｇは、音源制御レジスタ３３ａのうちのシーケンサ３２に備えられているレジスタ０１ｈにデータ“０１ｈ”を書き込み、そのＤ０（start）を“１”にセットすることにより、シーケンサ開始を指示する。これにより、シーケンサ３２はシーケンサ処理をスタートし、カウンタ３２ａが計数を開始すると、カウンタ３２ａはデータデコードスタート信号ａをデータデコード回路３２ｂに印加する。これを受けて、データデコード回路３２ｂはＦＩＦＯ３１から音源ハードウェア制御データを読み出して、時間管理情報を分離する。分離された時間管理情報ｂはカウンタ３２ａへ送られる。そして、カウンタ３２ａにおいてカウント値が時間管理情報ｂ以上となった際に、カウンタ３２ａはレジスタライト許可信号ｄをレジスタライトコントローラ３２ｃに印加して、データデコード回路３２ｂで分離された音源制御レジスタライトデータｃを音源制御レジスタ３３ａに書き込む。これにより、音源部３３においてその音源制御レジスタライトデータｃに基づく楽音が生成されて出力されるようになる。次いで、データデコード回路３２ｂはＦＩＦＯ３１から次の音源ハードウェア制御データを読み出す。
【００２３】
そして、データデコード回路３２ｂはＦＩＦＯ３１から読み出した次の音源ハードウェア制御データから次の時間管理情報を分離して、上述した処理と同様の処理を繰り返し行う。すなわち、カウンタ３２ａにおいてカウント値が次の時間管理情報ｂ以上となった際に、カウンタ３２ａはレジスタライト許可信号ｄをレジスタライトコントローラ３２ｃに印加して、データデコード回路３２ｂで分離された次の音源制御レジスタライトデータｃを音源制御レジスタ３３ａに書き込む。これにより、音源部３３において次の音源制御レジスタライトデータｃに基づく楽音が生成されて出力される。次いでデータデコード回路３２ｂは、ＦＩＦＯ３１から次の次の音源ハードウェア制御データを読み出す。このようにＦＩＦＯ３１から順次音源ハードウェア制御データを読み出していくことにより、音源部３３において楽音が再生されていくようになる。
【００２４】
次に、楽音生成装置に再生指示がされた際の図２に示す楽音生成装置の動作を説明する。
まず、ＳＭＡＦフォーマットについて説明する。ＳＭＡＦフォーマットのデータ構造を図３および図４に示す。図３（ａ）に示すようにＳＭＡＦは、チャンク（Chunk）構造とされており、コンテンツ情報チャンク（Contents Info Chunk）４０、スコアトラックチャンク（Score Track Chunk）４１、ＰＣＭオーディオトラックチャンク（PCM Audio Track Chunk）４２等のチャンクから構成されている。コンテンツ情報チャンク４０は、コンテンツの情報や定義を含むチャンクであり、スコアトラックチャンク４１は、音源シーケンストラックを格納するチャンクであり、ＰＣＭオーディオトラックチャンク４２は、ＡＤＰＣＭやＭＰ３（MPEG audio layer 3），TwinVQ等の圧縮されたＰＣＭ系のオーディオ発音をイベント形式で格納するチャンクである。
【００２５】
スコアトラックチャンク４１のデータ構造を図３（ｂ）に示す。この図に示すように、スコアトラックチャンク４１は、フォーマットタイプ（Format Type）、シーケンスタイプ（Sequence Type）等のデータと、セットアップデータチャンク（Setup Data Chunk）４３、シーケンスデータチャンク（Sequence Data Chunk）４４等のチャンクから構成されている。フォーマットタイプデータは、このチャンクの実フォーマットを定義するステータスであり、例えばハンディフォン・スタンダード等と定義することができる。シーケンスタイプデータは、２種類のシーケンスデータのいずれかのタイプを示しており、タイプにはストリームシーケンスタイプとサブシーケンスタイプとがある。セットアップデータチャンク４３は、音色データやエフェクト設定等を格納するチャンクであり、シーケンスデータチャンク４４は、実演奏データとされるシーケンスデータを格納するチャンクである。
【００２６】
次に、シーケンスデータチャンク４４に格納されるシーケンスデータのデータ構造を図４に示す。この図に示すように、シーケンスデータは、１バイトのデュレーション（Duration）データと、２バイトあるいは３バイトとされるイベント（Event）データとが交互に配列されて構成されている。この場合、イベントデータの前には必ずデュレーションデータが存在するものとされている。デュレーションデータは、その前に配置されたイベントとその後に配置されたイベントとの時間間隔を表す時間情報である。また、イベントには、発音を制御するノートメッセージ（Note Message）、ボリュームやモジュレーション等をコントロールするコントロールメッセージ（Contorol Message）、メーカ独自の情報を送ることのできるエクスクルーシブメッセージ（Exclusive Message）等のイベントがある。さらに、ノートメッセージは、図示するように指定される発音チャンネルを示すチャンネルナンバ（Channel Number）、発音する音高を示すノートナンバ（Note Number）、発音期間を示すゲートタイム（Gatetime）の各データから構成される。
【００２７】
図４に示すデュレーションデータ１〜デュレーションデータ３とイベントデータ１〜イベントデータ３からなるシーケンスデータを時間軸上で示すと図５に示すように表される。例えば、イベント１，イベント２，イベント３をノートオンのノートメッセージとすると、デュレーション１に示す時間が経過した時点でイベント１による発音が開始される。また、イベント１による発音が開始されてからゲートタイム１に示す時間が経過した時点でイベント１による発音は停止される。そして、デュレーション１に示す時間が経過した時点から、さらにデュレーション２に示す時間が経過した時点でイベント２による発音が開始される。ついで、イベント２による発音が開始されてからゲートタイム２に示す時間が経過した時点でイベント２による発音は停止される。さらに、デュレーション２に示す時間が経過した時点から、デュレーション３に示す時間が経過した時点でイベント３による発音が開始される。ついで、イベント３による発音が開始されてからゲートタイム３に示す時間が経過した時点でイベント３による発音は停止される。以降は、図４に示すシーケンスデータをＳＭＡＦデータという。
【００２８】
図２に戻り、ＣＰＵ１０における音源ハードウェア制御データ変換手段１０ｂにおいて、音楽コンテンツデータである例えばＳＭＡＦデータが音源ハードウェア制御データに変換される。ここで、変換された音源ハードウェア制御データは再生時に順次音源ハードウェア１５に転送されて、音源部３３は音源ハードウェア制御データに基づいて楽音を生成することになる。このため、音源ハードウェア制御データは音源部３３における音源制御レジスタ３３ａのレジスタマップに対応するデータ構成とされている。ここで、一例とされるＳＭＡＦデータを変換した音源ハードウェア制御データの例を示すが、音源ハードウェア制御データにはデュレーションやゲートタイムに相当する時間管理情報が含まれているものの、時間管理情報は音源制御レジスタ３３ａには書き込まれない。そこで、音源ハードウェア制御データの時間管理情報を省略した音源制御レジスタマップ対応データを、変換前のＳＭＡＦデータに対応させて図６に示す。
【００２９】
図６において、ＳＭＡＦデータのデュレーションデータ“００”とプログラムチェンジメッセージのイベント“００  ３０  ４７”は、インデックス“１８ｈ”とデータ“１０ｈ”に変換される。ただし、「ｈ」は１６進で表していることを示している。インデックスは、図７に示す音源制御レジスタ３３ａの音源制御レジスタマップに示されるレジスタのアドレスを示しており、インデックスで示されるアドレスのレジスタに続くデータが書き込まれるようにされている。この場合、各レジスタは１バイトの容量のレジスタとされており、インデックス“０１ｈ”でアドレスされる１本のレジスタ、インデックス“１８ｈ”〜“１Ｆｈ”でアドレスされる８本のレジスタ、インデックス“Ｂ０ｈ”〜“ＢＦｈ”でアドレスされる１６本のレジスタ、インデックス“Ｃ０ｈ”〜“ＣＦｈ”でアドレスされる１６本のレジスタ、インデックス“Ｅ０ｈ”〜“ＥＦｈ”でアドレスされる１６本のレジスタを、音源制御レジスタ３３ａが有している。なお、インデックス“０１ｈ”でアドレスされるレジスタ０１ｈだけは、図２に示すようにシーケンサ３２内に備えられている。また、インデックスの長さは１バイトとされ、各レジスタは８ビット構成とされているため、データ長も１バイトで構成されている。
【００３０】
なお、インデックス“１８ｈ”〜“１Ｆｈ”でアドレスされる８本の各レジスタは、チャンネルｎの音色ナンバと次のチャンネルｎ＋１の音色ナンバ指定用のレジスタとされる。これにより、１６チャンネル分の音色を指定することができる。また、インデックス“Ｂ０ｈ”〜“ＢＦｈ”でアドレスされる１６本の各レジスタは、各鍵の音高周波数に比例した数値である１０ビットとされるＦナンバの内の下位８ビットが格納される。さらに、インデックス“Ｃ０ｈ”〜“ＣＦｈ”でアドレスされる１６本の各レジスタは、Ｄ０，Ｄ１に残る上位２ビットのＦナンバが格納され、Ｄ２，Ｄ３，Ｄ４に３ビットとされるオクターブ情報が格納され、Ｄ５にキーオン情報が格納される。これにより、１６チャンネルの各チャンネルのＦナンバおよびオクターブからなる音高と、キーオンとを指示することができる。さらにまた、インデックス“Ｅ０ｈ”〜“ＥＦｈ”でアドレスされる１６本の各レジスタは、Ｄ０〜Ｄ４に５ビットとされるチャンネルボリューム情報が格納される。これにより、１６チャンネルの各チャンネルのチャンネルボリューム値を指示することができる。
【００３１】
従って、インデックス“１８ｈ”とデータ“１０ｈ”とに変換されることにより、レジスタ１８ｈにデータ“１０ｈ”が格納されることになり、これによりチャンネル１に音色ナンバ“０ｈ”の音色が、チャンネル２に音色ナンバ“１ｈ”の音色がそれぞれ指定されることになる。
また、次のＳＭＡＦデータのデュレーションデータ“００”とチャンネルボリュームメッセージのイベント“００  ３７  ７Ｆ”は、インデックス“Ｅ０ｈ”とデータ“１Ｆｈ”に変換される。変換されたデータは、レジスタＥ０ｈに格納されるデータ“１Ｆｈ”になり、データ“１Ｆｈ”によりチャンネル１のボリューム値として“１Ｆｈ”が指定されることになる。
【００３２】
さらに、次のＳＭＡＦデータのデュレーションデータ“００”とノートメッセージのイベント“２Ｃ  ５０”は、インデックス“Ｂ０ｈ”とデータ“Ｂ２ｈ”、および、インデックス“Ｃ０ｈ”とデータ“３２ｈ”に変換される。変換されたデータは、レジスタＢ０ｈに格納されるデータ“Ｂ２ｈ”と、レジスタＣ０ｈに格納されるデータ“３２ｈ”となり、データ“Ｂ２ｈ”（２進で“１０１１００１０”）からなる１ビット目〜８ビット目と、データ“３２ｈ”（２進で“００１１００１０”）のＤ０，Ｄ１からなる９ビット目、１０ビット目により構成される１０ビット“１０１０１１００１０”によりチャンネル１のＦナンバが指定される。また、データ“３２ｈ”のＤ２，Ｄ３，Ｄ４である“１００”の３ビットでチャンネル１のオクターブが指定される。さらにまた、データ“３２ｈ”のＤ５である“１”によりチャンネル１にキーオンが指示されることになる。
【００３３】
さらに、次のＳＭＡＦデータのデュレーションデータ“５Ｃ”とノートメッセージのイベント“２Ｂ  ２０”は、インデックス“Ｂ０ｈ”とデータ“８Ｂｈ”、および、インデックス“Ｃ０ｈ”とデータ“３２ｈ”に変換される。変換されたデータは、レジスタＢ０ｈに格納されるデータ“８Ｂｈ”と、レジスタＣ０ｈに格納されるデータ“３２ｈ”となり、データ“８Ｂｈ”（２進で“１０００１０１１”）からなる１ビット目〜８ビット目と、データ“３２ｈ”（２進で“００１１００１０”）のＤ０，Ｄ１からなる９ビット目、１０ビット目により構成される１０ビット“１０１０００１０１１”によりチャンネル１のＦナンバが指定される。また、データ“３２ｈ”のＤ２，Ｄ３，Ｄ４である“１００”の３ビットでチャンネル１のオクターブが指定される。さらにまた、データ“３２ｈ”のＤ５である“１”によりチャンネル１にキーオンが指示されることになる。
【００３４】
ＳＭＡＦデータと、これを変換した音源部制御レジスタマップ対応データは以上のように対応しており、続くデータも同様に変換されている。
なお、ＳＭＡＦデータのノートメッセージのイベント“２Ｃ  ５０”やイベント“２Ｂ  ２０”は１６進で表されており、その内の“５０”“２０”は発音期間であるゲートタイムデータである。すなわち、これらのノートメッセージによる発音は、基準時間が“５０ｈ”あるいは“２０ｈ”経過した際に発音を停止させなければならない。すなわち、発音開始から基準時間が“５０ｈ”あるいは“２０ｈ”経過した際にノートオフするために、デュレーションデータが“５０ｈ”あるいは“２０ｈ”とされていると共にキーオン／キーオフ情報が“０”とされたキーオフを指示するノートメッセージが必要となる。
【００３５】
このようなノートメッセージは、図６には示されていないがデータ変換の際に、変換前のＳＭＡＦデータを解釈して音源ハードウェア制御データ変換手段１０ｂにより自動的に生成される。そこで、この説明を行うために時間管理情報を含む音源ハードウェア制御データの第１のデータ構成を図８に示し、図６に示すＳＭＡＦデータを変換した第１のデータ構成の音源ハードウェア制御データのデータ例を図９に示し、図９に示す音源ハードウェア制御データをデータ組毎に整理して図１０に示す。
第１のデータ構成の音源ハードウェア制御データは図８に示すデータ構成とされている。この第１のデータ構成では、時間管理情報識別アドレスと時間管理情報とが組のデータとされ、時間管理情報識別アドレスは、時間管理情報に前置するものとされている。すなわち、時間管理情報識別アドレスを検出した際に、後続するデータが時間管理情報であることが示される。この時間管理情報に続いて、図６で説明したようにインデックスとデータとで組とされたデータが１組以上配置される。インデックスは、前述したように音源制御レジスタ３３ａに備えられている各レジスタのアドレスを示す情報であり、後続するデータはそのアドレスで示されるレジスタに書き込まれるデータとされている。そして、レジスタに書き込まれるタイミングが前置する時間管理情報で示されている。音源ハードウェア制御データ変換手段１０ｂでは、ＳＭＡＦデータを図８に示すデータ構成の音源ハードウェア制御データに変換している。
【００３６】
音源ハードウェア制御データ変換手段１０ｂにより、図６に示すＳＭＡＦデータを解釈して変換した音源ハードウェア制御データが図９に示されている。図９に示す音源ハードウェア制御データにおいては、時間管理情報に加えてシーケンサ終了データも付加されている。すなわち、先頭データは時間管理情報識別アドレスとして定義されている“ＦＦｈ”とされ、続いてデュレーションデータである時間管理情報“００ｈ”が続いている。その後に続くデータは、前述したとおりのインデックス“１８ｈ”とデータ“１０ｈ”との組からなるデータ、インデックス“Ｅ０ｈ”とデータ“１Ｆｈ”とからなる組のデータ、インデックス“Ｂ０ｈ”とデータ“Ｂ２ｈ”、および、インデックス“Ｃ０ｈ”とデータ“３２ｈ”とからなる組のデータと続くようになる。これにより、チャンネル１およびチャンネル２の音色およびチャンネル１のボリュームが指定されると共に、チャンネル１のキーオンと音高が指示される。
【００３７】
次に続くデータは、図６には示されていないがチャンネル１で発音中の楽音を発音停止させるデータである。なお、前述したチャンネル１の発音開始のタイミングは前置された時間管理情報“００ｈ”のタイミングとされている。そして、ゲートタイムが経過したタイミングで発音停止させるので、発音停止させるデータの時間管理情報はゲートタイムに相当するデータ値となる。すなわち、時間管理情報識別アドレスである“ＦＦｈ”と時間管理情報“５０ｈ”との組のデータと、その後に続く、インデックス“Ｂ０ｈ”とデータ“Ｂ２ｈ”、および、インデックス“Ｃ０ｈ”とデータ“１２ｈ”とからなる組のデータにより発音停止させるデータが構成される。このデータにより、“５０ｈ”基準時間経過した際に、レジスタＢ０ｈにデータ“Ｂ２ｈ”が格納され、レジスタＣ０ｈにデータ“１２ｈ”が格納される。これにより、データ“Ｂ２ｈ”（２進で“１０１１００１０”）からなる１ビット目〜８ビット目と、データ“１２ｈ”（２進で“０００１００１０”）のＤ０，Ｄ１である“１０”の９ビット目、１０ビット目からなる１０ビット“１０１０１１００１０”によりチャンネル１のＦナンバが指定される。また、データ“１２ｈ”のＤ２，Ｄ３，Ｄ４である“１００”の３ビットでチャンネル１のオクターブがが指定される。さらにまた、データ“１２ｈ”のＤ５である“０”によりチャンネル１にキーオフが指示される。これにより、指定されたオクターブとＦナンバとからなるチャンネル１の楽音が“５０ｈ”基準時間経過した際に発音停止されるようになる。
【００３８】
以降に続くデータも、前述した説明と同様にして音源制御レジスタ３３ａに書き込まれる。そして、音源ハードウェア制御データの最後には、時間管理情報識別アドレスである“ＦＦｈ”と時間管理情報“０１ｈ”の組からなるデータに続いて、インデックス“０１ｈ”とデータ“００ｈ”（２進で“００００００００”）との組からなるデータが付加されている。この場合、データ“００ｈ”は、直前のイベントから”０１ｈ”の基準時間が経過したタイミングで音源制御レジスタ３３ａのうちのシーケンサ３２に備えられているレジスタ０１ｈにセットされる。これにより、図７に示すレジスタ０１ｈのＤ０（start）が“０”となり、シーケンサ３２にシーケンサ終了が指示されるようになる。すなわち、インデックス“０１ｈ”とデータ“００ｈ”とでシーケンサ終了データが構成される。
【００３９】
次に、音源ハードウェア制御データ変換手段１０ｂにより、ＳＭＡＦデータを解釈して変換した第１の構成の音源ハードウェア制御データをデータ組毎に整理して図１０に示している。この図に示すように、組とされるデータは時間管理情報識別アドレスと時間管理情報の組、および、インデックスとデータとの組とされる。このように変換された音源ハードウェア制御データが再生される楽曲として指定された際の図２に示す本発明の楽音生成装置の動作を、図２および図１０を参照して以下に説明する。ただし、音源ハードウェア制御データはＣＰＵ１０において再生に先立って変換されてＲＡＭ１１の領域１１ｂに記憶されているものとする。
ＣＰＵ１０におけるメモリコントローラ１０ａは、ＲＡＭ１１の領域１１ｂから指示された楽曲に対応する図１０に示す音源ハードウェア制御データｆを、例えば３２バイト分読み出して音源ハードウェア１５におけるＦＩＦＯ３１に転送する。同時に、ＣＰＵ１０はシーケンサスタート信号ｇをシーケンサ３２のカウンタ３２ａに供給する。
【００４０】
また、シーケンサスタート信号ｇは、音源制御レジスタ３３ａの一部のレジスタであるレジスタ０１ｈにデータ“０１ｈ”を書き込み、そのＤ０（start）を“１”にセットすることにより、シーケンサ開始を指示する。これにより、シーケンサ３２はシーケンサ処理をスタートし、シーケンサスタート信号ｇを受けたカウンタ３２ａは、基準時間単位とされるクロックの計数を開始すると共に、データデコード回路３２ｂにデータデコードスタート信号ａを印加する。これを受けて、データデコード回路３２ｂはＦＩＦＯ３１から１バイトずつデータを読み出す。この場合、読み出したデータが時間管理情報識別アドレス“ＦＦｈ”であった場合は、さらに１バイトのデータを読み出すが、図１０に示すように時間管理情報識別アドレスに続くデータは時間管理情報であるので、その時間管理情報ｂをカウンタ３２ａにセットする。
【００４１】
さらに、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたインデックス“１８ｈ”と続いて読み出されたデータ“１０ｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“１８ｈ”をアドレスとするレジスタ１８ｈにデータ“１０ｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタ１８ｈにデータ“１０ｈ”を書き込む。レジスタ１８ｈは、チャンネル１とチャンネル２の音色ナンバを指定するレジスタであるので、これにより、音源部３３で生成される楽音のチャンネル１とチャンネル２の音色が指定される。
【００４２】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたインデックス“Ｅ０ｈ”と続いて読み出されたデータ“１Ｆｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｅ０ｈ”をアドレスとするレジスタＥ０ｈにデータ“１Ｆｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＥ０ｈにデータ“１Ｆｈ”を書き込む。レジスタＥ０ｈは、チャンネル１のチャンネルボリュームを指定するレジスタであるので、これにより、音源部３３で生成される楽音のチャンネル１のチャンネルボリュームが指定される。
【００４３】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたインデックス“Ｂ０ｈ”と続いて読み出されたデータ“Ｂ２ｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｂ０ｈ”をアドレスとするレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込む。レジスタＢ０ｈは、チャンネル１のＦナンバの下位８ビットを指定するレジスタである。
【００４４】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたインデックス“Ｃ０ｈ”と続いて読み出されたデータ“３２ｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｃ０ｈ”をアドレスとするレジスタＣ０ｈにデータ“３２ｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＣ０ｈにデータ“３２ｈ”を書き込む。レジスタＣ０ｈは、チャンネル１のＦナンバの上位２ビットとオクターブを指定すると共に、チャンネル１のキーオン／キーオフを指示するレジスタであり、キーオン／キーオフとして“１”（Ｄ５＝１）がセットされる。これにより、チャンネル１のキーオンが指示されて、音源制御レジスタ３３ａにセットされているオクターブおよびＦナンバの音高、ボリュームおよび音色の楽音がチャンネル１で生成開始される。
【００４５】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたデータは時間管理情報識別アドレス“ＦＦｈ”であるので、時間管理情報識別アドレス“ＦＦｈ”に続く時間管理情報“５０ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。次いで、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出す。読み出されたデータは、インデックス“Ｂ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“Ｂ２ｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｂ０ｈ”をアドレスとするレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“５０ｈ”とされているので、カウンタ３２ａの計数値が５０ｈ進むまで待機される。
【００４６】
次いで、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出す。読み出されたデータは、インデックス“Ｃ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“１２ｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｃ０ｈ”をアドレスとするレジスタＣ０ｈにデータ“１２ｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“５０ｈ”とされているので、カウンタ３２ａの計数値が５０ｈ進むまで待機される。そして、カウンタ３２ａの計数値が進み５０ｈ時間経過した時刻５０ｈのタイミングで、カウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込むと共に、レジスタＣ０ｈにデータ“１２ｈ”を書き込む。レジスタＢ０ｈは、チャンネル１のＦナンバの下位８ビットを指定するレジスタであり、レジスタＣ０ｈは、チャンネル１のＦナンバの上位２ビットとオクターブを指定すると共に、そのＤ５によりチャンネル１のキーオン／キーオフを指示するレジスタであり、キーオン／キーオフとして“０”（Ｄ５＝０）がセットされる。これにより、指定されたオクターブとＦナンバの音高で音源部３３で生成されていたチャンネル１の楽音のキーオフが指示されて、楽音の生成が停止される。
【００４７】
また、カウンタ３２ａの計数値が５０ｈ以上になると、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたデータは時間管理情報識別アドレス“ＦＦｈ”であるので、時間管理情報識別アドレス“ＦＦｈ”に続く時間管理情報“０Ｃｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。次いで、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出す。読み出されたデータは、インデックス“Ｂ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“８Ｂｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｂ０ｈ”をアドレスとするレジスタＢ０ｈにデータ“８Ｂｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“０Ｃｈ”とされているので、カウンタ３２ａの計数値が０Ｃｈ進むまで待機される。
【００４８】
次いで、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出す。読み出されたデータは、インデックス“Ｃ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“３２ｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｃ０ｈ”をアドレスとするレジスタＣ０ｈにデータ“３２ｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“０Ｃｈ”とされているので、カウンタ３２ａの計数値が０Ｃｈ進むまで待機される。そして、カウンタ３２ａの計数値が進み時刻５０ｈから０Ｃｈ時間経過した時刻５Ｃｈ（＝５０ｈ＋０Ｃｈ）のタイミングで、カウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＢ０ｈにデータ“８Ｂｈ”を書き込むと共に、レジスタＣ０ｈにデータ“３２ｈ”を書き込む。レジスタＢ０ｈは、チャンネル１のＦナンバの下位８ビットを指定するレジスタであり、レジスタＣ０ｈは、チャンネル１のＦナンバの上位２ビットとオクターブを指定すると共に、チャンネル１のキーオン／キーオフを指示するレジスタであり、キーオン／キーオフとして“１”（Ｄ５＝１）がセットされる。これにより、チャンネル１のキーオンが指示されて、音源制御レジスタ３３ａにセットされているオクターブおよびＦナンバで指定される音高、ボリュームおよび音色の楽音がチャンネル１で生成される。
【００４９】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたデータは時間管理情報識別アドレス“ＦＦｈ”であるので、時間管理情報識別アドレス“ＦＦｈ”に続く時間管理情報“２０ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。次いで、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出す。読み出されたデータは、インデックス“Ｂ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“８Ｂｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｂ０ｈ”をアドレスとするレジスタＢ０ｈにデータ“８Ｂｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“２０ｈ”とされているので、カウンタ３２ａの計数値が２０ｈ進むまで待機される。
【００５０】
次いで、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出す。読み出されたデータは、インデックス“Ｃ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“１２ｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｃ０ｈ”をアドレスとするレジスタＣ０ｈにデータ“１２ｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“２０ｈ”とされているので、カウンタ３２ａの計数値が２０ｈ進むまで待機される。そして、カウンタ３２ａの計数値が進み２０ｈ時間経過した時刻７Ｃｈ（＝５Ｃｈ＋２０ｈ）のタイミングで、カウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＢ０ｈにデータ“８Ｂｈ”を書き込むと共に、レジスタＣ０ｈにデータ“１２ｈ”を書き込む。レジスタＢ０ｈは、チャンネル１のＦナンバの下位８ビットを指定するレジスタであり、レジスタＣ０ｈは、チャンネル１のＦナンバの上位２ビットとオクターブを指定すると共に、チャンネル１のキーオン／キーオフを指示するレジスタであり、キーオン／キーオフとして“０”（Ｄ５＝０）がセットされる。これにより、音源部３３で生成されていたオクターブとＦナンバで指定された音高のチャンネル１の楽音のキーオフが指示されて、楽音の生成が停止される。
【００５１】
以下、順次１バイトずつデータが読み出されて、同様の処理が行われる。そして、最後にＦＩＦＯ３１からはインデックス“０１ｈ”と続くデータ“００ｈ”が読み出される。また、これらのデータに前置して時間管理情報識別アドレス“ＦＦｈ”と時間管理情報“０１ｈ”とがＦＩＦＯ３１から読み出される。この時間管理情報“０１ｈ”は、時間管理情報ｂとしてカウンタ３２ａにセットされ、ＦＩＦＯ３１から続いて読み出されたインデックス“０１ｈ”は音源制御レジスタライトデータｃとしてレジスタライトコントローラ３２ｃに送られる。さらに、データデコード回路３２ｂはＦＩＦＯ３１から続いて読み出されたデータ“００ｈ”をレジスタライトコントローラ３２ｃに送る。レジスタライトコントローラ３２ｃは、インデックス“０１ｈ”をアドレスとするレジスタ０１ｈにデータ“００ｈ”（２進で“００００００００”）を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“０１ｈ”とされているので、カウンタ３２ａの計数値が０１ｈ進むまで待機される。そして、カウンタ３２ａの計数値が１つ進み０１ｈ時間経過したタイミングで、カウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのうちのシーケンサ３２に備えられているレジスタ０１ｈにデータ“００ｈ”を書き込む。レジスタ０１ｈのＤ０はシーケンサスタート／ストップをシーケンサ３２に指示するレジスタとされており、この場合シーケンサスタート／ストップとして“０”（Ｄ０＝０）がセットされる。これにより、シーケンサ終了とされ、シーケンサ３２はシーケンス処理を終了する。このように、インデックス“０１ｈ”とデータ“００ｈ”からなる組のデータは、シーケンサ終了データである。
【００５２】
以上の説明において、音源制御レジスタ３３ａへ各データが書き込まれるタイミングを図１１に示す。
図１１において横軸は時間とされているが、基準時間単位は１ｍｓとされて時間値は１６進で表している。このため、時間単位をｈｍｓとして示している。まず、カウンタ３２ａが計数を開始する時刻０ｈｍｓにおいて時間管理情報が“００ｈ”とされるデータが音源制御レジスタ３３ａに書き込まれる。この場合、書き込まれるデータは、図１０に示すインデックス“ＦＦｈ”ないしデータ“３２ｈ”からなる５組の音源制御レジスタライトデータＡとされる。そして、５０ｈｍｓ時間経過して時刻５０ｈｍｓになると、時間管理情報“００ｈ”の次の時間管理情報“５０ｈ”に続くデータが音源制御レジスタ３３ａに書き込まれる。この場合、書き込まれるデータは、図１０に示すインデックス“Ｂ０ｈ”ないしデータ“１２ｈ”からなる２組の音源制御レジスタライトデータＢとされる。
【００５３】
さらに、０Ｃｈｍｓ時間経過して時刻５Ｃｈｍｓになると、時間管理情報“５０ｈ”の次の時間管理情報“０Ｃｈ”に続くデータが音源制御レジスタ３３ａに書き込まれる。この場合、書き込まれるデータは、図１０に示すインデックス“Ｂ０ｈ”ないしデータ“３２ｈ”からなる２組の音源制御レジスタライトデータＣとされる。さらにまた、２０ｈｍｓ時間経過して時刻７Ｃｈｍｓになると、時間管理情報“０Ｃｈ”の次の時間管理情報“２０ｈ”に続くデータが音源制御レジスタ３３ａに書き込まれる。この場合、書き込まれるデータは、図１０に示すインデックス“Ｂ０ｈ”ないしデータ“１２ｈ”からなる２組の音源制御レジスタライトデータＤとされる。さらにまた、０Ｄｈｍｓ時間経過して時刻８９ｈｍｓになると、時間管理情報“２０ｈ”の次の時間管理情報“０Ｄｈ”に続くデータが音源制御レジスタ３３ａに書き込まれる。この場合、書き込まれるデータは、図１０に示すインデックス“Ｂ３ｈ”ないしデータ“３２ｈ”からなる４組の音源制御レジスタライトデータＥとされる。
【００５４】
以降のデータは図示されていないが同様にして音源制御レジスタ３３ａに書き込まれるようになる。そして、最後にインデックス“０１ｈ”とデータ“００ｈ”からなるシーケンサ終了データが、前述したように音源制御レジスタ３３ａのうちのシーケンサ３２に備えられたレジスタ０１ｈに書き込まれるようになる。この場合、カウンタ３２ａの計数も停止されるようになる。なお、その後に再生指示がされた場合は、カウンタ３２ａはクリアされて新たにカウントを開始するようになる。
このように、音源制御レジスタ３３ａには、時間管理情報に続くデータが次の時間管理情報が表れるまで順次書き込まれるようになる。そして、図１１に示すタイミングで音源制御レジスタ３３ａに楽音を生成するパラメータが書き込まれるので、音源部３３において生成される楽音の生成タイミングは前記図５に示すとおりとなる。
【００５５】
次に、音源ハードウェア制御データ変換手段１０ｂが変換した音源ハードウェア制御データの第２のデータ構成の例を図１２に示し、その具体的な図６に対応する第２の構成の音源ハードウェア制御データのデータ例を図１３に示し、図１３に示す第２の構成の音源ハードウェア制御データを組とされるデータ組毎に整理して図１４に示している。
第２のデータ構成では図１２に示すように、音源ハードウェア制御データは時間管理情報とインデックスとデータとを１組とするデータ構成とされている。すなわち、データに前置してインデックスが配置され、インデックスに前置して時間管理情報が配置された構成とされている。インデックスは、前述したように音源制御レジスタ３３ａに備えられている各レジスタのアドレスを示す１バイトの情報であり、後続する１バイトのデータはそのアドレスで示されるレジスタに書き込まれるデータとされている。そして、レジスタに書き込まれるタイミングが１バイトあるいは２バイトの時間管理情報で示される。時間管理情報が２バイトとされる場合は、最初の１バイトのＭＳＢが“１”とされる。また、第１の構成と異なり、第２の構成では時間管理情報はインデックスに必ず前置して配置される。このように、第２の構成の音源ハードウェア制御データでは３バイトあるいは４バイトを１組とするデータとされ、組の先頭には時間管理情報が配置される。
【００５６】
音源ハードウェア制御データ変換手段１０ｂにより、図６に示すＳＭＡＦデータを解釈して第２のデータ構成の音源ハードウェア制御データに変換した例を図１３に示す。第２のデータ構成の音源ハードウェア制御データは、図１２に示すように時間管理情報、インデックス、データとを１組として構成されており、図１３に示す第２のデータ構成の音源ハードウェア制御データを組毎に整理して図１４に示している。以下、これらの図と図２を参照しながら第２のデータ構成の音源ハードウェア制御データを再生する説明をする。ただし、第２の構成の音源ハードウェア制御データはＣＰＵ１０において再生に先立って変換されてＲＡＭ１１の領域１１ｂに記憶されているものとする。
ＣＰＵ１０におけるメモリコントローラ１０ａは、ＲＡＭ１１の領域１１ｂから指示された図１０に示す楽曲の第２の構成の音源ハードウェア制御データｆを、例えば３２バイト分読み出して音源ハードウェア１５におけるＦＩＦＯ３１に転送する。同時に、ＣＰＵ１０はシーケンサスタート信号ｇをシーケンサ３２のカウンタ３２ａに供給する。
【００５７】
また、シーケンサスタート信号ｇは、音源制御レジスタ３３ａの一部のレジスタであるレジスタ０１ｈにデータ“０１ｈ”を書き込み、そのＤ０（start）を“１”にセットすることにより、シーケンサ開始を指示する。これにより、シーケンサ３２はシーケンサ処理をスタートし、シーケンサスタート信号ｇを受けたカウンタ３２ａは、基準時間単位とされるクロックの計数を開始すると共に、データデコード回路３２ｂにデータデコードスタート信号ａを印加する。これを受けて、データデコード回路３２ｂはＦＩＦＯ３１から１バイトずつデータを読み出す。この場合、読み出した先頭のデータは時間管理情報であり、このデータ“００ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合、時間管理情報のＭＳＢは“０”であるのでこの組の全体のデータ量は３バイトとなる。
【００５８】
さらに、データデコード回路３２ｂはＦＩＦＯ３１から続く組のデータを読み出すが、読み出した先頭のデータは時間管理情報であり、このデータ“００ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合、時間管理情報のＭＳＢは“０”であるのでこの組の全体のデータ量も３バイトとなる。読み出されたインデックス“１８ｈ”と続いて読み出されたデータ“１０ｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“１８ｈ”をアドレスとするレジスタ１８ｈにデータ“１０ｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタ１８ｈにデータ“１０ｈ”を書き込む。レジスタ１８ｈは、チャンネル１とチャンネル２の音色ナンバを指定するレジスタであるので、これにより、音源部３３で生成される楽音のチャンネル１とチャンネル２の音色が指定される。
【００５９】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続く組のデータを読み出すが、読み出した先頭のデータは時間管理情報であり、このデータ“００ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合、時間管理情報のＭＳＢは“０”であるのでこの組の全体のデータ量も３バイトとなる。読み出されたインデックス“Ｅ０ｈ”と続いて読み出されたデータ“１Ｆｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｅ０ｈ”をアドレスとするレジスタＥ０ｈにデータ“１Ｆｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＥ０ｈにデータ“１Ｆｈ”を書き込む。レジスタＥ０ｈは、チャンネル１のチャンネルボリュームを指定するレジスタであるので、これにより、音源部３３で生成される楽音のチャンネル１のチャンネルボリュームが指定される。
【００６０】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続く組のデータを読み出すが、読み出した先頭のデータは時間管理情報であり、このデータ“００ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合、時間管理情報のＭＳＢは“０”であるのでこの組の全体のデータ量も３バイトとなる。読み出されたインデックス“Ｂ０ｈ”と続いて読み出されたデータ“Ｂ２ｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｂ０ｈ”をアドレスとするレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込む。レジスタＢ０ｈは、チャンネル１のＦナンバの下位８ビットを指定するレジスタである。
【００６１】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続く組のデータを読み出すが、読み出した先頭のデータは時間管理情報であり、このデータ“００ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合、時間管理情報のＭＳＢは“０”であるのでこの組の全体のデータ量も３バイトとなる。読み出されたインデックス“Ｃ０ｈ”と続いて読み出されたデータ“３２ｈ”も音源制御レジスタライトデータであるので、レジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｃ０ｈ”をアドレスとするレジスタＣ０ｈにデータ“３２ｈ”を書き込む準備を行う。この場合も、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加され、レジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＣ０ｈにデータ“３２ｈ”を書き込む。レジスタＣ０ｈは、チャンネル１のＦナンバの上位２ビットとオクターブを指定すると共に、チャンネル１のキーオン／キーオフを指示するレジスタであり、キーオン／キーオフとして“１”（Ｄ５＝１）がセットされる。これにより、チャンネル１のキーオンが指示されて、音源制御レジスタ３３ａにセットされているオクターブおよびＦナンバの音高、ボリュームおよび音色の楽音がチャンネル１で生成開始される。
【００６２】
さらに続いて、データデコード回路３２ｂはＦＩＦＯ３１から続く組のデータを読み出すが、読み出した先頭のデータは時間管理情報であり、このデータ“５０ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合、時間管理情報のＭＳＢは“０”であるのでこの組の全体のデータ量は３バイトとなる。次いで、データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出す。読み出されたデータは、インデックス“Ｂ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“Ｂ２ｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｂ０ｈ”をアドレスとするレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“５０ｈ”とされているので、カウンタ３２ａの計数値が５０ｈ進むまで待機される。
【００６３】
そして、カウンタ３２ａの計数値が進み５０ｈ時間経過した時刻５０ｈのタイミングで、カウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＢ０ｈにデータ“Ｂ２ｈ”を書き込む。レジスタＢ０ｈは、チャンネル１のＦナンバの下位８ビットを指定するレジスタである。
【００６４】
次いで、データデコード回路３２ｂはＦＩＦＯ３１から続く組のデータを読み出す。読み出した先頭のデータは時間管理情報であり、このデータ“００ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合、時間管理情報のＭＳＢは“０”であるのでこの組の全体のデータ量は３バイトとなる。読み出されたデータは、インデックス“Ｃ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“１２ｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｃ０ｈ”をアドレスとするレジスタＣ０ｈにデータ“１２ｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“００ｈ”とされているので、即時にカウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＣ０ｈにデータ“１２ｈ”を書き込む。レジスタＣ０ｈは、チャンネル１のＦナンバの上位２ビットとオクターブを指定すると共に、チャンネル１のキーオン／キーオフを指示するレジスタであり、キーオン／キーオフとして“０”（Ｄ５＝０）がセットされる。これにより、２組のデータデ指定されたオクターブとＦナンバの音高で音源部３３で生成されていたチャンネル１の楽音のキーオフが指示されて、楽音の生成が停止される。
なお、このキーオフを指示する時間管理情報“５０ｈ”は、ＳＭＡＦデータのゲートタイムに対応している。
【００６５】
以下、同様にして組毎のデータが読み出される毎に、音源制御レジスタ３３ａにデータが書き込まれるようになる。そして、データデコード回路３２ｂがＦＩＦＯ３１から続く組のデータを読み出した際に、読み出した先頭のデータである時間管理情報が“８０ｈ”であったとする。この場合、時間管理情報のＭＳＢは“１”であるのでこの組の時間管理情報は２バイトで表されることになる。そこで、続く時間管理情報”３２ｈ”を読み出して、読み出されたデータ“８０ｈ  ３２ｈ”を時間管理情報ｂとしてカウンタ３２ａにセットする。この場合の全体のデータ量は４バイトとなる。データデコード回路３２ｂはＦＩＦＯ３１から続くデータを読み出すが、読み出されたデータは、インデックス“Ｃ０ｈ”であり音源制御レジスタライトデータであるので、続いて読み出されたデータ“３２ｈ”と共にレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“Ｃ０ｈ”をアドレスとするレジスタＣ０ｈにデータ“３２ｈ”を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“８０ｈ  ３２ｈ”とされているので、カウンタ３２ａの計数値が（８０ｈ  ３２ｈ）進むまで待機される。
【００６６】
そして、カウンタ３２ａの計数値が進み（８０ｈ  ３２ｈ）時間経過したタイミングで、カウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのレジスタＣ０ｈにデータ“３２ｈ”を書き込む。レジスタＣ０ｈは、チャンネル１のＦナンバの上位２ビットとオクターブを指定すると共に、チャンネル１のキーオン／キーオフを指示するレジスタであり、キーオン／キーオフとして“１”（Ｄ５＝１）がセットされる。
【００６７】
以下、順次１バイトずつデータが読み出されて、同様の処理が行われる。そして、最後にＦＩＦＯ３１からは時間管理情報“０１ｈ”とインデックス“０１ｈ”とデータ“００ｈ”からなる組が読み出される。この時間管理情報“０１ｈ”は、時間管理情報ｂとしてカウンタ３２ａにセットされ、ＦＩＦＯ３１から続いて読み出されたインデックス“０１ｈ”は音源制御レジスタライトデータｃとしてレジスタライトコントローラ３２ｃに送られる。さらに、データデコード回路３２ｂはＦＩＦＯ３１から続いて読み出されたデータ“００ｈ”をレジスタライトコントローラ３２ｃに送られる。レジスタライトコントローラ３２ｃは、インデックス“０１ｈ”をアドレスとするレジスタ０１ｈにデータ“００ｈ”（２進で“００００００００”）を書き込む準備を行う。この場合、カウンタ３２ａにセットされている時間管理情報は“０１ｈ”とされているので、カウンタ３２ａの計数値が０１ｈ進むまで待機される。そして、カウンタ３２ａの計数値が１つ進み０１ｈ時間経過したタイミングで、カウンタ３２ａからレジスタライト許可信号ｄがレジスタライトコントローラ３２ｃに印加される。これを受けてレジスタライトコントローラ３２ｃは、音源制御レジスタ３３ａのうちのシーケンサ３２に備えられているレジスタ０１ｈにデータ“００ｈ”を書き込む。レジスタ０１ｈのＤ０はシーケンサスタート／ストップをシーケンサ３２に指示するレジスタとされており、この場合シーケンサスタート／ストップとして“０”（Ｄ０＝０）がセットされる。これにより、シーケンサ終了とされ、シーケンサ３２はシーケンス処理を終了する。このように、インデックス“０１ｈ”とデータ“００ｈ”からなる組のデータは、シーケンサ終了データである。
【００６８】
次に、第１の構成の音源制御レジスタデータを再生する際に音源ハードウェア１５のシーケンサ３２で実行される再生処理のフローチャートを図１５に示す。図１５に示すフローチャートにおいて、シーケンサスタート信号ｇがＣＰＵ１０からシーケンサ３２へ印加されると再生処理がスタートされ、ステップＳ１にてデータデコード回路３２ｂはＦＩＦＯ３１から先頭の１バイトのデータを読み込むようにする。次いで、ステップＳ２にて読み込んだデータが時間管理情報識別アドレスか否かがデータデコード回路３２ｂで判断される。当該データがＦＦｈとされており、時間管理情報識別アドレスの場合はＹＥＳと判断されてステップＳ３に進み、データデコード回路３２ｂはＦＩＦＯ３１からさらに続く１バイトのデータを読み込むようにする。ここで読み込まれたデータは時間管理情報となるので、そのデータはカウンタ３２ａにセットされる。そして、ステップＳ４にてカウンタ３２ａにセットされた時間管理情報で示される時間だけ経過したか否かが判断される。経過していない場合は経過するまで待機されて、経過したと判断された際にステップＳ５に進む。なお、時間の経過はカウンタ３２ａの計数がセットされた時間管理情報の値以上となった際に経過したと判断する。
【００６９】
ステップＳ５にてデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く１バイトのデータを読み込むようにする。次いで、ステップＳ６にて読み込まれたデータが時間管理情報識別アドレスか否かがデータデコード回路３２ｂで判断される。ここで、読み込まれたデータが時間管理情報識別アドレス（ＦＦｈ）でないと判断されると、ステップＳ７へ進み読み込まれたデータが音源制御レジスタ３３ａへ送られる。ただし、このデータはインデックスであり、音源制御レジスタ３３ａに用意されているレジスタを指定するアドレスとなる。次いで、ステップＳ８にてデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く１バイトのデータを読み込むが、このデータはステップＳ７で送られたインデックスと組となるデータであり、ステップＳ９にてそのインデックスで指定された音源制御レジスタ３３ａのレジスタにデータライトされる。例えば、再生スタート時において最初に音源制御レジスタ３３ａに送られるのは、図９および図１０に示す例ではインデックス１８ｈとデータ“１０ｈ”とからなるデータとなる。
【００７０】
次いで、ステップＳ５およびステップＳ８にて読み込まれた２バイトのデータがシーケンサ終了データか否かが判断される。ここで、シーケンサ終了データは図９および図１０に示すようにインデックス０１ｈとデータ“００ｈ”とからなるデータとされる。そこで、読み込まれたデータがインデックス０１ｈとデータ“００ｈ”との組のデータの場合は、シーケンサ終了データと判断されて再生処理は終了する。また、シーケンサ終了データでないと判断されると、ステップＳ５に戻りデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く１バイトのデータを読み込むようにする。次いで、ステップＳ６にて読み込まれたデータが時間管理情報識別アドレスか否かがデータデコード回路３２ｂで判断される。ここで、読み込まれたデータが時間管理情報識別アドレス（ＦＦｈ）と判断されると、ステップＳ３に戻りデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く１バイトのデータを読み込むようにする。ここで読み込まれたデータは時間管理情報となるので、そのデータはカウンタ３２ａにセットされる。そして、ステップＳ４にてカウンタ３２ａにセットされた時間管理情報で示される時間だけ経過したか否かが判断される。経過していない場合は経過するまで待機されて、経過したと判断された際にステップＳ５に進む。
【００７１】
以降、同様の処理が行われ、ステップＳ１０にて読み込まれたデータがシーケンサ終了データと判断されると再生処理は終了する。この場合には、その前のステップであるステップＳ７およびステップＳ９によりシーケンサ終了データが音源制御レジスタ３３ａに書き込まれることになる。したがって、この際にはシーケンサ３２において再生処理が終了される。なお、ステップＳ１０からステップＳ５へ戻る処理が行われることにより、時間管理情報識別アドレスが読み込まれるまでに読み込まれた複数のデータを、１つの時間管理情報により音源制御レジスタ３３ａに送ることができる。これらの複数のデータを送ることにより、音源部３３のキーオン／キーオフ、発音する音高、ボリュームや音色等が制御されるようになる。また、ステップＳ２にて読み込んだデータが時間管理情報識別アドレスでないとデータデコード回路３２ｂで判断された場合は、第１の構成の音源制御レジスタデータではないと判断されて再生処理は終了する。さらに、フローチャートには示されていないが、ＦＩＦＯ３１からのデータ読み込みエラー等が発生した場合にも再生処理は終了する。
【００７２】
次に、第２の構成の音源制御レジスタデータを再生する際に音源ハードウェア１５のシーケンサ３２で実行される再生処理のフローチャートを図１６に示す。図１６に示すフローチャートにおいて、シーケンサスタート信号ｇがＣＰＵ１０からシーケンサ３２へ印加されると再生処理がスタートされ、ステップＳ２１にてデータデコード回路３２ｂはＦＩＦＯ３１から先頭の１バイトのデータを読み込むようにする。図１２に示すように先頭のデータは時間管理情報であるので、そのデータのＭＳＢが“１”か否かがステップＳ２２にて判断される。ここで、読み込まれたデータのＭＳＢが“１”と判断されると、時間管理情報は２バイト構成と判断されて、ステップＳ２３に進んでデータデコード回路３２ｂはＦＩＦＯ３１から続く１バイトのデータを読み込むようにする。読み込まれた２バイト構成の時間管理情報はカウンタ３２ａにセットされる。また、読み込まれたデータのＭＳＢが“１”とステップＳ２２で判断されない場合は、読み込まれた１バイトとされる時間管理情報がカウンタ３２ａにセットされる。そして、ステップＳ２４にてカウンタ３２ａにセットされた時間管理情報で示される時間だけ経過したか否かが判断される。経過していない場合は経過するまで待機されて、経過したと判断された際にステップＳ２５に進む。なお、時間の経過はカウンタ３２ａの計数がセットされた時間管理情報の値以上となった際に経過したと判断する。
【００７３】
ステップＳ２５にてデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く２バイトのデータを読み込むようにする。ここで、読み込まれた２バイトのデータは時間管理情報に続くデータであり図１２に示すようにインデックスとデータとされるから、ステップＳ２６にて読み込まれた２バイトのデータが音源制御レジスタ３３ａへ送られる。この場合、インデックスで指定された音源制御レジスタ３３ａのレジスタにインデックスに続くデータがデータライトされる。例えば、再生スタート時において最初に音源制御レジスタ３３ａに送られるのは、図１３および図１４に示す例ではインデックス１８ｈとデータ“１０ｈ”とからなるデータとなる。
【００７４】
次いで、ステップＳ２５にて読み込まれた２バイトのデータがシーケンサ終了データか否かがステップＳ２７にて判断される。ここで、シーケンサ終了データは図１３および図１４に示すようにインデックス０１ｈとデータ“００ｈ”からなるデータとされる。そこで、読み込まれたデータの組がインデックス０１ｈとデータ“００ｈ”との組のデータの場合は、シーケンサ終了データと判断されて再生処理は終了する。また、シーケンサ終了データでないと判断されると、ステップＳ２１に戻り上述した処理が繰り返し行われる。
【００７５】
これにより、３バイトあるいは４バイトを組とするデータが順次読み出され、そのうちのインデックスとデータとが順次音源制御レジスタ３３ａへ送られて、該当するレジスタにデータが書き込まれるようになる。これにより、音源部３３は音源制御レジスタ３３ａに書き込まれたデータに基づいて楽音を生成していくようになる。なお、ステップＳ２７にて読み込まれたデータがシーケンサ終了データと判断されると再生処理は終了するが、この場合には、その前のステップであるステップＳ２６によりシーケンサ終了データが音源制御レジスタ３３ａに書き込まれていることになる。したがって、この際にはシーケンサ３２において再生処理が終了される。
【００７６】
以上説明したように、音源ハードウェア１５におけるシーケンサ３２における再生処理では、時間管理と、データを音源制御レジスタ３３ａに送る処理とを行うことになる。そして、時間管理は時間管理情報を分離してカウンタ３２ａにセットし、セットされた時間管理情報とカウンタ３２ａとの計数値を比較監視することにより行っている。このため、時間管理を行うハードウェアを簡易な構成とすることができ、その回路規模を小さくすることができる。また、データを音源制御レジスタ３３ａに送るのは、カウンタ３２ａとの計数値が時間管理情報の値以上となった際に出力されるレジスタライト許可信号ｄを受けることにより行えばよいので、そのハードウェアも簡易な構成とすることができる。これにより、シーケンサ３２の回路規模を小さくすることができる。
なお、シーケンサスタート信号ｇによりカウンタ３２ａは計数を開始すると共に、シーケンサスタート信号ｇにより音源制御レジスタ３３ａの一部のレジスタであるレジスタ０１ｈのＤ０（start）に“１”をセットするようにしている。この場合、シーケンサスタート信号ｇをレベル信号として、シーケンサスタート信号ｇのレベルに応じてカウンタ３２ａの計数をスタートさせると共に、レジスタ０１ｈのＤ０（start）に“１”をセットするようにしてもよい。また、シーケンサスタート信号ｇに、インデックス“０１ｈ”とデータ“０１ｈ”からなるデータを含ませておいて、このデータによりレジスタ０１ｈのＤ０（start）に“１”をセットするようにしてもよい。
【００７７】
次に、本発明の実施の形態にかかる携帯電話機１において、曲の任意の位置から再生することのできる本発明の他の実施の形態にかかる楽音生成装置の構成を図１７に示す。
図１７に示す本発明の楽音生成装置では、曲を再生する際の演奏開始位置を示す演奏開始ポイントデータを格納しているレジスタ領域１１ｃがＲＡＭ１１に設けられている。この構成において、前述した図２に示す本発明の楽音生成装置と異なる構成とされている。そこで、この構成についてのみ以下に説明するものとする。
【００７８】
ＲＡＭ１１におけるレジスタ領域１１ｃには、曲を再生する際の演奏開始位置を示す演奏開始ポイントデータが格納されている。この演奏開始ポイントデータは、ユーザが任意に設定することができるようにされている。設定する際には、着信メロディあるいは保留音として選択されている曲において、どの位置から再生するかを携帯電話機１に用意されたメニューから設定する。この際に、演奏を開始するに適した位置にマークを曲の音楽コンテンツデータ中あるいは音楽コンテンツデータを変換した音源ハードウェア制御データ中に複数挿入しておき、いずれかのマークの位置をスタートポイントとして選択することにより、演奏開始位置を設定するようにしてもよい。マークを挿入する位置は、例えば曲のイントロ、メイン、フィルイン、サビ、エンディング等の先頭とされる。そして、ＣＰＵ１０は、音源ハードウェア制御データ変換手段１０ｂにおいて、選択されている曲の音楽コンテンツデータを音源ハードウェア制御データに変換する。変換された音源ハードウェア制御データはＲＡＭ１１における領域１１ｂに格納される。
【００７９】
ここで、再生が指示されると、ＣＰＵ１０はＲＡＭ１１におけるレジスタ領域１１ｃに格納されている演奏開始ポイントデータを読み出して、演奏開始ポイントデータに対応する位置からの音源ハードウェア制御データをＲＡＭ１１における領域１１ｂから読み出し、順次音源ハードウェア１５に転送する。音源部３３は転送された音源ハードウェア制御データに基づいて演奏開始ポイントデータで示される位置からの楽音を生成することになる。なお、音楽コンテンツデータの先頭部分に音色データ、テンポデータやボリュームデータ等のセットアップデータが存在する際には、セットアップデータも音源ハードウェア制御データに変換してＲＡＭ１１における領域１１ｂに格納しておく。そして、再生が指示された際には、最初にセットアップデータに対応する音源ハードウェア制御データを領域１１ｂから読み出して音源ハードウェア１５に転送し、続いて演奏開始ポイントデータで示される位置からの音源ハードウェア制御データを領域１１ｂから読み出して順次音源ハードウェア１５に転送するようにする。これにより、曲を中途から再生するようにしても曲に設定されている音色、テンポ、音量とされた楽音が再生されるようになる。
【００８０】
ここで、着信ボタン等が操作されて再生ストップの指示がされた場合は、ＲＡＭ１１におけるレジスタ領域１１ｃに格納する演奏開始ポイントデータとして、次回にその曲を再生する際に再生ストップされた位置から再生できるように再生終了の位置情報を格納する。この場合、演奏開始ポイントデータは、実際に再生を終了した曲の位置から後方において最初に検出されたマークの位置であるスタートポイントとすると、演奏開始した際に好適な位置から再生することができるようになる。なお、再生ストップの指示は、携帯電話機１において入力部１７の着信ボタンの操作、保留解除の操作、あるいは、通信回線が切断された際に行われることになる。
【００８１】
上記したように、レジスタ領域１１ｃに格納される演奏開始ポイントデータとして、音楽コンテンツデータを変換した音源ハードウェア制御データにおける演奏開始位置のアドレスデータとしている。これにより、演奏開始位置が変更される毎に、演奏開始位置からの音楽コンテンツデータを音源ハードウェア制御データに変換する必要をなくすことができる。
さらに、携帯電話機１がリセットされた場合にはレジスタ領域１１ｃに格納される演奏開始ポイントデータは初期化される。さらに、着信メロディの曲が変更された際にもレジスタ領域１１ｃに格納される演奏開始ポイントデータは初期化される。
【００８２】
次に、本発明の実施の形態にかかる携帯電話機１における楽音生成装置の変形例の構成を図１８に示す。図１８に示す楽音生成装置においては、変換された音源ハードウェア制御データの量を低減することが可能な構成とされており、この構成において、前述した図２に示す本発明の楽音生成装置と異なる構成とされている。そこで、この構成についてのみ以下に説明するものとする。
図１８に示す本発明の楽音生成装置の変形例において、ＲＡＭ１１には音楽コンテンツデータであるファイル化されたＭＩＤＩデータやＳＭＡＦデータ等が領域１１ａに格納されている。また、ＣＰＵ１０において処理に余裕があったり空き時間等がある時や、あるいは音楽コンテンツデータの再生指示があった場合に、ＣＰＵ１０はＲＡＭ１１の領域１１ａから音楽コンテンツデータを読み出して音源ハードウェア制御データに変換する変換処理を実行し、変換後の音源ハードウェア制御データをＲＡＭ１１の領域１１ｂに格納している。領域１１ａには複数曲分の音楽コンテンツデータが記憶可能とされ、領域１１ｂにも複数曲分の音源ハードウェア制御データが記憶可能とされている。
【００８３】
ここで、図１８に示す本発明の楽音生成装置の変形例において、一例とされるＳＭＡＦデータを変換した音源ハードウェア制御データ（第３の例）を図１９に示す。図１９に示されるように、音源ハードウェア制御データはデュレーションやゲートタイムに相当する時間管理情報と、音源制御レジスタライトデータから構成されている。そして、音源制御レジスタライトデータを構成しているインデックスは、前述したように音源制御レジスタ３３ａに備えられている各レジスタのアドレスを示す情報であり、後続するデータはそのアドレスで示されるレジスタに書き込まれるデータとされている。図１８に示す本発明の楽音生成装置の変形例において、特徴とされるのは図１９における音源ハードウェア制御データにおける２行目に示されているように、インデックスが複数バイト（図示する例では、２バイト）で表される場合があること、および、データが複数バイト（図示する例では、３バイト）で表される場合があること、さらに、３行目に示されているように時間管理情報が複数バイト（図示する例では、２バイト）で表される場合があることである。
【００８４】
ここで、時間管理情報を複数バイトで表すことができるようにしているのは、イベントとイベントの時間間隔を示すデュレーションデータや、発音期間を示すゲートタイムデータの範囲を広げるためである。例えば、時間管理情報を１バイトとすると０〜２５５までの範囲しか表すことができず、単位時間を１ｍｓとすると０〜２５５ｍｓの時間までしか表すことができない。そこで、時間管理情報を２バイトとすると、０〜６５５３５（２16−１）まで表すことができ、単位時間を１ｍｓとすると０〜６５５３５ｍｓの時間まで表すことができるようになる。ただし、図１８に示す本発明の楽音生成装置の変形例においては、各バイトのＭＳＢを用いて後続するバイトがあるか否かを示すようにしていることから、各バイトで使用できるビット数はそれぞれ下位７ビットであり、０〜１６３８３（２14−１）までの範囲を表すことができるようになる。そして、時間管理情報を最大３バイトまでとすると、０〜１６３８３ｍｓを超える時間を表すことができるようになる。
【００８５】
また、インデックスを複数バイトで表すことができるようにしているのは、次の理由による。図１８に示す本発明の楽音生成装置の変形例においては、各バイトのＭＳＢを用いて後続するバイトがあるか否かを示すようにしていることから、各バイトで使用できるビット数は１バイト中の下位７ビットとなる。すると、図７に示すように音源制御レジスタ３３ａのインデックスとしてはインデックス“ＥＦｈ”まで必要であるにもかかわらず、下位７ビットの１バイトでは“７Ｆｈ”までしか表すことができない。そこで、インデックスを２バイトで表すようにして、例えばインデックス“６Ｆｈ  ８１ｈ”とすると、ＭＳＢが“１”のバイトを上位バイトとしてそれぞれのバイトのＭＳＢを除いて結合することにより、インデックス“ＥＦｈ”を表すことができるようになる。なお、図１８に示す本発明の楽音生成装置の変形例の仕様では、余裕を見てインデックスは最大３バイトまでとされている。
【００８６】
さらに、データを複数バイトで表すことができるようにしているのは、時間管理情報が同値とされているタイミングにおいて同種のイベントが複数チャンネル分生起した場合に、複数イベントに対応する音源制御レジスタライトデータを１行で表すことができるようにするためである。なお、音源制御レジスタ３３ａにおいて同種のイベントにおけるデータが書き込まれるレジスタのアドレスは、図７に示す音源制御レジスタマップに示されているように連続するアドレスとされており、これを利用して複数イベントに対応する音源制御レジスタライトデータを１行で表すことができるようにしている。
【００８７】
複数イベントに対応する音源制御レジスタライトデータを１行で表す具体例を図２０を参照して次に説明する。
図２０は、ＳＭＡＦデータと、ＳＭＡＦデータを変換した音源ハードウェア制御データとを対比して示しており、ＳＭＡＦデータの１行目のデュレーションデータ“００”と「チャンネル番号０」におけるチャンネルボリュームメッセージのイベント“００  ３７  ７Ｆ”は、時間管理情報“８０ｈ”、インデックス“６０ｈ  ８１ｈ”とデータ“９Ｆｈ”に変換されている。また、ＳＭＡＦデータの２行目のデュレーションデータ“００”と「チャンネル番号１」におけるチャンネルボリュームメッセージのイベント“００  ７７  ５５”は、時間管理情報“８０ｈ”、インデックス“６１ｈ  ８１ｈ”とデータ“９５ｈ”に変換されている。さらに、ＳＭＡＦデータの３行目のデュレーションデータ“００”と「チャンネル番号２」におけるチャンネルボリュームメッセージのイベント“００  Ｆ７  ２８”は、時間管理情報“８０ｈ”、インデックス“６２ｈ  ８１ｈ”とデータ“８５ｈ”に変換されている。さらにまた、ＳＭＡＦデータの４行目のデュレーションデータ“００”と「チャンネル番号３」におけるチャンネルボリュームメッセージのイベント“００  Ｆ７  ２８”は、時間管理情報“８０ｈ”、インデックス“６３ｈ  ８１ｈ”とデータ“８Ａｈ”に変換されている。
【００８８】
なお、インデックス“６０ｈ  ８１ｈ”はインデックス“Ｅ０ｈ”で表され、インデックス“６１ｈ  ８１ｈ”はインデックス“Ｅ１ｈ”で表され、インデックス“６２ｈ  ８１ｈ”はインデックス“Ｅ２ｈ”で表され、インデックス“６３ｈ  ８１ｈ”はインデックス“Ｅ３ｈ”で表されるが、その理由を次に説明する。図１８に示す本発明の楽音生成装置の変形例においては、インデックスデータを１バイトあるいは２バイトないし３バイトの複数バイトで表すことができ、この場合は、前述したように各バイトにおける有効ビットは下位７ビットとされている。そして、インデックスデータにおける先頭バイトのＭＳＢが“０”とされている場合はさらに上位のインデックスバイトが続くことを意味しており、そのＭＳＢが“１”とされている場合は最上位のインデックスバイトであることを意味している。
【００８９】
すなわち、図２０に示すインデックスデータにおける先頭のバイトは“６０ｈ”であり、そのＭＳＢは“０”であることからさらに上位のインデックスバイトが続いていることになる。これに続くインデックスバイトは“８１ｈ”であり、そのＭＳＢは“１”であることから当該インデックスバイトが最上位バイトとされている。このように、インデックスバイトが複数バイトとされている場合は下位のバイトから到来することになる。そして、上位のバイトから並べ直したインデックスデータは“８１ｈ  ６１ｈ”となり、このインデックスデータから生成されるインデックス（レジスタのアドレス）はそれぞれのバイトの下位７ビットで表されるため、それを２進数で示すと“００  ００００  １１１０  ００００”となり、有意のビットは下位８ビットとなる。そこで、下位８ビットを１６進数で示すと“Ｅ０ｈ”となる。このように、インデックスデータ“６０ｈ  ８１ｈ”はインデックス“Ｅ０ｈ”を意味しており、同様にして、インデックス“６１ｈ  ８１ｈ”はインデックス“Ｅ１ｈ”で表され、インデックス“６２ｈ  ８１ｈ”はインデックス“Ｅ２ｈ”で表され、インデックス“６３ｈ  ８１ｈ”はインデックス“Ｅ３ｈ”で表されるのである。
【００９０】
これらのインデックスに対応するイベントは、連続するチャンネルのチャンネルボリュームメッセージであって対応するレジスタのアドレスが連続していることから、図２０に示すように連続するインデックスとされており、さらに、時間管理情報も同値“８０ｈ”とされている。なお、時間管理情報データも複数バイトで表すことができ、時間管理情報データのバイトのＭＳＢが“０”とされている場合はさらに上位の時間管理情報バイトが続くことを意味しており、そのＭＳＢが“１”とされている場合は最上位の時間管理情報バイトを意味している。そして、各バイトにおける有効ビットは下位７ビットとされている。すなわち、図２０に示す１行目から４行目までの時間管理情報データは“８０ｈ”とされており最上位バイトであって、この時間管理情報データから生成される時間管理情報は下位７ビットからなる“００ｈ”となる。この時間管理情報は、シーケンサ３２におけるタイマー３２ａに設定される。
【００９１】
図２０に示すように連続するインデックスとされていると共に、時間管理情報も同値とされている場合は、対応するデータを連続して配置することにより、複数行で示されるＳＭＡＦデータを１行の音源ハードウェア制御データで表すことができる。すなわち、図２０の矢印下部に示すように、図２０におけるＳＭＡＦの１行目から４行目は、時間管理情報データ“８０ｈ”、インデックスデータ“６０ｈ  ８１ｈ”とデータ“１Ｆｈ  １５ｈ  ０５ｈ  ８Ａｈ”と、１行の音源ハードウェア制御データに変換することができる。この場合、インデックスは連続するインデックスの先頭のインデックスとされ、続くデータは、最終データを除いてそれぞれのデータにおける有効な下位７ビットのデータに変換される。すなわち、先頭のデータ“９Ｆｈ”はデータ“１Ｆｈ”に、２番目のデータ“９５ｈ”はデータ“１５ｈ”に、３番目のデータ“８５ｈ”はデータ“０５ｈ”に変換され、４番目のデータ“８Ａｈ”はそのままとされる。これは、ＭＳＢを“１”として、４番目のデータ“８Ａｈ”はそのデータが最終データバイトであることを示すためにそのままとされる。ただし、４番目のデータ値はＭＳＢを除いた“０Ａｈ”となる。このように時間管理情報が同値でインデックスが連続する場合は、複数行のＳＭＡＦデータを１行の音源ハードウェア制御データで表すことができるため、音源ハードウェア制御データの量を低減することが可能となる。
【００９２】
次に、図２１ないし図２４に示すフローチャートを参照しながら図１８に示す本発明の楽音生成装置の変形例の動作を説明する。
図２１に示す再生スタート処理のフローチャートにおいて、シーケンサスタート信号ｇがＣＰＵ１０からシーケンサ３２へ印加されるとカウンタ３２ａからデータデコード回路３２ｂにデータデコードスタート信号が出力され、再生スタート処理が開始される。これにより、ステップＳ３０にて後述する時間管理情報部処理が行われる。この時間管理情報部処理は、データデコード回路３２ｂが実行する処理であり、ＦＩＦＯ３１から１バイトずつ読み込んだ時間管理情報データに基づいて時間管理情報を生成して、カウンタ３２ａに生成された時間管理情報をセットしている。この実施の形態の場合では、時間管理情報データは１バイトないし３バイトから構成されるものとしている。そして、ステップＳ３１にてカウンタ３２ａにセットされた時間管理情報で示される時間だけ経過したか否かが判断される。経過していない場合は経過するまで待機されて、経過したと判断された際にステップＳ３２に進む。なお、時間の経過はカウンタ３２ａの計数がセットされた時間管理情報の値以上となった際に経過したと判断され、経過した際にはカウンタ３２ａからレジスタライトコントローラ３２ｃにレジスタライト許可信号ｄが出力される。
【００９３】
ステップＳ３２では、後述するアドレス部処理が行われる。このアドレス部処理は、データデコード回路３２ｂおよびアドレスコントローラ３２ｄが実行する処理であり、ＦＩＦＯ３１から１バイトずつ読み込んだインデックスデータに基づいて、後続するデータを音源制御レジスタ３３ａに書き込むレジスタのアドレスを生成するように、アドレスコントローラ３２ｄを制御している。この実施の形態の場合では、インデックスデータは１バイトないし３バイトから構成されるものとしている。
【００９４】
ステップＳ３２においてアドレスが生成されると、ステップＳ３３に進んで後述するデータ部処理が行われる。このデータ部処理は、データデコード回路３２ｂおよびアドレスコントローラ３２ｄ、レジスタライトコントローラ３２ｃが実行する処理であり、ＦＩＦＯ３１から１バイトずつ読み込んだデータを音源制御レジスタ３３ａに書き込むようにしている。この実施の形態の場合では、データは１バイトないし３バイトから構成されるものとしている。そして、音源制御レジスタ３３ａに書き込まれるデータは楽音発生用のデータであり、この楽音発生用のデータを用いて音源部３３が楽音を生成するようになる。このデータ部処理は、ステップＳ３１の後に実行されるため、音源制御レジスタ３３ａには時間管理情報で示す時間に達した際に楽音発生用のデータが書き込まれることになるから、楽音は時間管理情報で示す時間になった時に発生されるようになる。
ステップＳ３３のデータ部処理が終了すると、ステップＳ３０に戻りステップＳ３０ないしステップＳ３３の処理が繰り返し行われ、これにより、ＦＩＦＯ３１からＳＭＡＦデータを変換した音源ハードウェア制御データが順次読み出されていくようになり、音源部３３において自動演奏されていくようになる。
【００９５】
次に、再生スタート処理におけるステップＳ３０の時間管理情報部処理の詳細を図２２に示すフローチャートを参照しながら説明する。
図２２に示す時間管理情報部処理において、処理がスタートされるとステップＳ４０にてデータデコード回路３２ｂはＦＩＦＯ３１から１バイトの音源ハードウェア制御データを読み込むようにする。ここでは、読み込まれた音源ハードウェア制御データが、その先頭のデータである時間管理情報データあるいはＭＳＢが“１”であるデータに続く時間管理情報データであるとする。次いで、ステップＳ４１にて読み込まれた１バイトの時間管理情報データにおけるＭＳＢが“１”か否かが判定される。ここで、ＭＳＢが“０”と判定された場合は続く上位の時間管理情報データバイトがあることから、ステップＳ４２に進んで読み込まれた１バイトの時間管理情報データが時間管理情報１バイト目用テンポラリレジスタに書き込まれる。そして、ステップＳ４３にてデータデコード回路３２ｂはＦＩＦＯ３１から続く１バイトの時間管理情報データを読み込むようにする。
【００９６】
次いで、ステップＳ４４にて読み込まれた２バイト目の時間管理情報データにおけるＭＳＢが“１”か否かが判定される。ここで、ＭＳＢが“０”と判定された場合はさらに続く上位の時間管理情報データバイトがあることから、ステップＳ４５に進んで読み込まれた２バイト目の時間管理情報データが時間管理情報２バイト目用テンポラリレジスタに書き込まれる。そして、ステップＳ４６にてデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く１バイトの時間管理情報データを読み込むようにする。次いで、ステップＳ４７にて読み込まれた１バイトの時間管理情報データにおけるＭＳＢが“１”か否かが判定される。ここで、ＭＳＢが“０”と判定された場合はさらに続く上位の時間管理情報データバイトがあることを意味しているが、変形例における仕様では最大３バイトとされているため、ＭＳＢが“０”と判定された場合はエラーとなる。そこで、ＭＳＢが“０”と判定された場合は、エラー処理後に再生スタート処理のステップＳ３１にリターンするようになる。
【００９７】
また、ステップＳ４１にてＭＳＢが“１”と判定された場合は、読み込まれた１バイト目の時間管理情報データが最上位のバイトとなることから、ステップＳ４８にて読み込まれた１バイト目の下位７ビットから時間管理情報が生成されて、生成された時間管理情報がタイマー３２ａにセットされる。次いで、ステップＳ４９にて全てのテンポラリレジスタがクリアされて、再生スタート処理のステップＳ３１にリターンするようになる。
さらに、ステップＳ４４にてＭＳＢが“１”と判定された場合は、ステップＳ４３で読み込まれた２バイト目の時間管理情報データが最上位のバイトとなることから、この２バイト目の時間管理情報データをステップＳ４８にて上位バイト、時間管理情報１バイト目用テンポラリレジスタに書き込まれている１バイト目の時間管理情報データを下位バイトとして、各バイトの内の下位７ビットから時間管理情報が生成される。生成された時間管理情報は、タイマー３２ａにセットされる。次いで、ステップＳ４９にて全てのテンポラリレジスタがクリアされて、再生スタート処理のステップＳ３１にリターンするようになる。
【００９８】
さらにまた、ステップＳ４７にてＭＳＢが“１”と判定された場合は、ステップＳ４６にて読み込まれた３バイト目の時間管理情報データが最上位のバイトとなることから、この３バイト目の時間管理情報データを最上位バイト、時間管理情報２バイト目用テンポラリレジスタに書き込まれている２バイト目の時間管理情報データを中位バイト、時間管理情報１バイト目用テンポラリレジスタに書き込まれている１バイト目の時間管理情報データを下位バイトとして、ステップＳ４８にて各バイトの内の下位７ビットから時間管理情報が生成される。生成された時間管理情報は、タイマー３２ａにセットされる。次いで、ステップＳ４９にて全てのテンポラリレジスタがクリアされて、再生スタート処理のステップＳ３１にリターンするようになる。
【００９９】
このような時間管理情報部処理を、具体例を挙げて説明すると、例えば時間管理情報データのデータ列が“０３ｈ  ３７ｈ  ８１ｈ”であったとする。すると、ＦＩＦＯ３１から最初に読み込まれた１バイトのデータ“０３ｈ”のＭＳＢは“０”となるから、ステップＳ４２にて読み込まれたデータ“０３ｈ”が時間管理情報１バイト目用テンポラリレジスタに書き込まれる。さらに、ＦＩＦＯ３１から読み込まれた続く１バイトのデータ“３７ｈ”のＭＳＢも“０”となるから、ステップＳ４５にてデータ“３７ｈ”が時間管理情報２バイト目用テンポラリレジスタに書き込まれる。さらにまた、ＦＩＦＯ３１から読み込まれたさらに続く１バイトのデータ“８１ｈ”のＭＳＢは“１”となるから、読み込まれたデータ“８１ｈ”が最上位バイトとされる。そこで、ステップＳ４８にてデータ“８１ｈ”を最上位バイト、時間管理情報２バイト目用テンポラリレジスタに書き込まれているデータ“３７ｈ”を中位バイト、時間管理情報１バイト目用テンポラリレジスタに書き込まれているデータ“０３ｈ”を最下位バイトとしてそれぞれのバイトの下位７ビットを結合すると、“００ｈ  ５Ｂｈ  ８３ｈ”が生成される。生成された時間管理情報“００ｈ  ５Ｂｈ  ８３ｈ”は、カウンタ３２ａにセットされる。
【０１００】
次に、再生スタート処理におけるステップＳ３２のアドレス部処理の詳細を図２３に示すフローチャートを参照しながら説明する。
図２３に示すアドレス部処理において、処理がスタートされるとステップＳ５０にてデータデコード回路３２ｂはＦＩＦＯ３１から１バイトの音源ハードウェア制御データを読み込むようにする。読み込まれた音源ハードウェア制御データは、時間管理情報データに後続するデータであるからインデックスデータである。次いで、ステップＳ５１にて読み込まれた１バイトのインデックスデータにおけるＭＳＢが“１”か否かが判定される。ここで、ＭＳＢが“０”と判定された場合は続く上位のインデックスデータバイトがあることから、ステップＳ５２に進んで読み込まれた１バイトのインデックスデータがアドレス１バイト目用テンポラリレジスタに書き込まれる。そして、ステップＳ５３にてデータデコード回路３２ｂはＦＩＦＯ３１から続く２バイト目のインデックスデータを読み込むようにする。
【０１０１】
次いで、ステップＳ５４にて読み込まれた２バイト目のインデックスデータにおけるＭＳＢが“１”か否かが判定される。ここで、ＭＳＢが“０”と判定された場合はさらに続く上位のインデックスデータバイトがあることから、ステップＳ５５に進んで読み込まれた２バイト目のインデックスデータがインデックス２バイト目用テンポラリレジスタに書き込まれる。そして、ステップＳ５６にてデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く３バイト目のインデックスデータを読み込むようにする。次いで、ステップＳ５７にて読み込まれた３バイト目のインデックスデータにおけるＭＳＢが“１”か否かが判定される。ここで、ＭＳＢが“０”と判定された場合はさらに続く上位のインデックスデータバイトがあることを意味しているが、変形例における仕様ではインデックスデータは最大３バイトとされているため、ＭＳＢが“０”と判定された場合はエラーとなる。そこで、ＭＳＢが“０”と判定された場合は、エラー処理後に再生スタート処理のステップＳ３３にリターンするようになる。
【０１０２】
また、ステップＳ５１にてＭＳＢが“１”と判定された場合は、読み込まれた１バイト目の時間管理情報データが最上位のバイトとなることから、ステップＳ５８にて読み込まれた１バイト目のインデックスデータがアドレスコントローラ３２ｄに転送されて、アドレスコントローラ３２ｄにおいて転送されたインデックスデータの下位７ビットから音源制御レジスタ３３ａにおけるレジスタのアドレスが生成される。このアドレスは音源制御レジスタ３３ａに供給され、レジスタライトコントローラ３２ｃから供給されたデータがそのアドレスのレジスタに書き込まれるようになる。次いで、ステップＳ５９にて全てのテンポラリレジスタがクリアされて、再生スタート処理のステップＳ３３にリターンするようになる。
【０１０３】
さらに、ステップＳ５４にてＭＳＢが“１”と判定された場合は、ステップＳ５３にて読み込まれた２バイト目のインデックスデータが最上位のバイトとなることから、この２バイト目の上位バイトのインデックスデータと、インデックス１バイト目用テンポラリレジスタに書き込まれている１バイト目の下位バイトのインデックスデータとが、ステップＳ５８にてアドレスコントローラ３２ｄに転送される。そして、アドレスコントローラ３２ｄにおいて転送された２バイトのインデックスデータの各バイトの下位７ビットから音源制御レジスタ３３ａにおけるレジスタのアドレスが生成される。このアドレスは音源制御レジスタ３３ａに供給され、レジスタライトコントローラ３２ｃから供給されたデータがそのアドレスのレジスタに書き込まれるようになる。次いで、ステップＳ５９にて全てのテンポラリレジスタがクリアされて、再生スタート処理のステップＳ３３にリターンするようになる。
【０１０４】
さらにまた、ステップＳ５７にてＭＳＢが“１”と判定された場合は、ステップＳ５６にて読み込まれた３バイト目のインデックスデータが最上位のバイトとなることから、この３バイト目の最上位バイトのインデックスデータと、インデックス２バイト目用テンポラリレジスタに書き込まれている２バイト目の中位バイトのインデックスデータと、インデックス１バイト目用テンポラリレジスタに書き込まれている１バイト目の最下位のインデックスデータとが、ステップＳ５８にてアドレスコントローラ３２ｄに転送される。そして、アドレスコントローラ３２ｄにおいて転送された３バイトのインデックスデータの各バイトの下位７ビットから音源制御レジスタ３３ａにおけるレジスタのアドレスが生成される。このアドレスは音源制御レジスタ３３ａに供給され、レジスタライトコントローラ３２ｃから供給されたデータがそのアドレスのレジスタに書き込まれるようになる。次いで、ステップＳ５９にて全てのテンポラリレジスタがクリアされて、再生スタート処理のステップＳ３３にリターンするようになる。
【０１０５】
次に、再生スタート処理におけるステップＳ３３のデータ部処理の詳細を図２４に示すフローチャートを参照しながら説明する。
図２４に示すデータ部処理において、処理がスタートされるとステップＳ６０にてデータデコード回路３２ｂはＦＩＦＯ３１から１バイトの音源ハードウェア制御データを読み込むようにする。読み込まれた音源ハードウェア制御データは、インデックスデータに後続する楽音生成用のデータであるからステップＳ６１にてレジスタライトコントローラ３２ｃに供給される。レジスタライトコントローラ３２ｃは、レジスタライト許可信号ｄがカウンタ３２ａから出力されたタイミングで供給されたデータを音源制御レジスタ３３ａに書き込む。この場合、ステップＳ３２におけるアドレス部処理によりアドレスコントローラ３２ｄは、データを書き込むべきレジスタのアドレスを音源制御レジスタ３３ａに供給している。また、レジスタライト許可信号ｄは、再生スタート処理におけるステップＳ３１の処理において、既にレジスタライト許可信号ｄがカウンタ３２ａから出力されていることから、直ちにアドレスコントローラ３２ｄから出力されているアドレスのレジスタにそのデータが書き込まれるようになる。
【０１０６】
次いで、ステップＳ６２にて読み込まれた１バイトのデータにおけるＭＳＢが“１”か否かがデータデコード回路３２ｂにおいて判定される。ここで、ＭＳＢが“０”と判定された場合は続くデータバイトがあることから、ステップＳ６３に進んでデータデコード回路３２ｂはアドレスコントローラ３２ｄに現在のアドレスを１だけインクリメントさせる指示を行う。アドレスコントローラ３２ｄは指示を受けて現在のアドレスを１だけインクリメントして、インクリメントしたアドレスを音源制御レジスタ３３ａに印加する。これは、前述したように複数バイトのデータとされている場合は、それぞれのデータの時間管理情報が同値でインデックスすなわちアドレスが連続しているからである。ステップＳ６３の処理が終了すると、ステップＳ６０に戻りデータデコード回路３２ｂはＦＩＦＯ３１から続く１バイトのデータを読み込む。読み込まれたデータは、ステップＳ６１にてレジスタライトコントローラ３２ｃに供給され、既にレジスタライト許可信号ｄがカウンタ３２ａから出力されていることから、レジスタライトコントローラ３２ｃは供給された続くデータを、音源制御レジスタ３３ａにおけるインクリメントされたアドレスのレジスタに直ちに書き込む。
【０１０７】
次いで、ステップＳ６２にて続いて読み込まれた１バイトのデータにおけるＭＳＢが“１”か否かがデータデコード回路３２ｂにおいて判定される。ここで、ＭＳＢが“０”と判定された場合はさらに続くデータバイトがあることから、ステップＳ６３に進んでデータデコード回路３２ｂはアドレスコントローラ３２ｄに現在のアドレスをさらに１だけインクリメントさせる指示を行う。アドレスコントローラ３２ｄは指示を受けて現在のアドレスをさらに１だけインクリメントして、インクリメントしたアドレスを音源制御レジスタ３３ａに印加する。ステップＳ６３の処理が終了すると、ステップＳ６０に戻りデータデコード回路３２ｂはＦＩＦＯ３１からさらに続く１バイトのデータを読み込む。読み込まれたデータは、ステップＳ６１にてレジスタライトコントローラ３２ｃに供給され、既にレジスタライト許可信号ｄがカウンタ３２ａから出力されていることから、レジスタライトコントローラ３２ｃは供給された続くデータを、音源制御レジスタ３３ａにおけるさらにインクリメントされたアドレスのレジスタに直ちに書き込む。次いで、ステップＳ６２にて続いて読み込まれた１バイトのデータにおけるＭＳＢが“１”か否かがデータデコード回路３２ｂにおいて判定される。ここで、ＭＳＢが“１”と判定された場合は読み込まれたデータが最終のデータとなることから、再生スタート処理におけるステップＳ３０にリターンする。また、ＭＳＢが“０”と判定された場合はさらに続くデータバイトがあることから、上記したようにステップＳ６３ないしステップＳ６２の処理がＭＳＢが“１”と判定されるまで繰り返し実行されるようになる。これにより、複数イベントに対応する音源制御レジスタライトデータが１行で表わされている場合でも、それぞれの楽音生成用のデータを対応するレジスタに書き込めるようになる。
【０１０８】
ところで、ＦＩＦＯ３１から読み出した１バイトのデータにおけるＭＳＢはフラグとして使用している。そこで、ＦＩＦＯ３１から読み出した１バイトのデータが書き込まれたレジスタの値に応じた上述した処理を行う際に、レジスタにおけるＭＳＢをマスクあるいは無視して下位７ビットに着目して処理するようにしてもよい。
上述したように、図１８に示す本発明の楽音生成装置の変形例においては、音源ハードウェア制御データ変換手段１０ｂがＲＡＭ１１の領域１１ａに格納されている音楽コンテンツデータを音源ハードウェア制御データに変換する変換処理を実行するが、この際に、図２０に例示したように時間管理情報が同値とされてインデックスが連続した値となる場合は、複数イベントに対応する音源制御レジスタライトデータを１行で表すように変換処理を行っている。
ここで、再生が指示されると、ＣＰＵ１０は再生指示された楽曲に対応する音源ハードウェア制御データをＲＡＭ１１における領域１１ｂから読み出し、順次音源ハードウェア１５に転送する。音源部３３は転送された音源ハードウェア制御データに基づいて楽音を生成するようになる。なお、音楽コンテンツデータの先頭部分に音色データ、テンポデータやボリュームデータ等のセットアップデータが存在する際には、セットアップデータも音源ハードウェア制御データに変換してＲＡＭ１１における領域１１ｂに格納しておく。そして、再生が指示された際には、最初にセットアップデータに対応する音源ハードウェア制御データを領域１１ｂから読み出して音源ハードウェア１５に転送し、続いて音源ハードウェア制御データを領域１１ｂから読み出して順次音源ハードウェア１５に転送するようにする。
【０１０９】
音源ハードウェア１５では、ＦＩＦＯ３１を介して取り込んだ音源ハードウェア制御データをデータデコード回路３２ｂによりデコードして分離した時間管理情報データから時間管理情報を生成してカウンタ３２ａにセットする。この時間管理情報の生成処理は図２２に示す時間管理情報部処理により実行されるため、時間管理情報データが複数バイトから構成されていても時間管理情報を生成することができる。また、データデコード回路３２ｂは時間管理情報データに後続するインデックスデータに基づいて、さらに後続するデータを書き込む音源制御レジスタ３３ａにおけるレジスタのアドレスを生成するようにアドレスコントローラ３２ｄを制御している。このアドレスの生成処理は図２３に示すアドレス部処理により実行されるため、インデックスデータが複数バイトから構成されていてもアドレスを生成することができる。
【０１１０】
さらに、データデコード回路３２ｂはインデックスデータに後続する楽音生成用のデータを、レジスタライトコントローラ３２ｃに供給し、レジスタライトコントローラはカウンタ３２ａにセットされた時間管理情報に対応する時刻で出力されるレジスタライト許可信号ｄのタイミングで、音源制御レジスタ３３ａに供給されたデータを、アドレスコントローラ３２ｄから指示されているアドレス位置に書き込む。これにより、音源部３３では書き込まれた楽音生成用のデータに基づいて楽音を生成するようになる。なお、データを音源制御レジスタ３３ａに書き込む処理は、図２４に示すデータ部処理により実行されるため、データが複数バイトから構成されている場合は、書き込むレジスタを示すアドレスが１ずつインクリメントされながら、それぞれのバイトのデータが音源制御レジスタ３３ａの該当するレジスタに順次書き込まれるようになる。
【０１１１】
上記説明したように、本発明の楽音生成装置を本発明にかかる携帯端末装置である携帯電話機に適用した際には、携帯電話機１に基地局２を介してダウンロードセンター等から新たな音楽コンテンツデータをダウンロードした際に、ダウンロードした音楽コンテンツデータを前記したように音源ハードウェア制御データに変換して再生することができる。また、携帯電話機１に着信があった際に、着信メロディとして予め指定されている楽曲に対応する音源ハードウェア制御データをＲＡＭ１１から読み出して再生することにより、着信メロディを放音することができる。この場合、任意の開始位置からの着信メロディを再生して放音することができる
なお、本発明の楽音生成装置は、携帯端末装置である上記した携帯電話機のみに適用されるものではなく、楽音を出力可能な携帯情報機器や、楽音を出力可能な携帯型パーソナルコンピュータ等に適用することができる。この際に、テキストや画像コンテンツに同期して音楽コンテンツデータを再生するようにしてもよい。
【０１１２】
また、音源ハードウェア１５における音源部３３は、周波数変調方式の音源、すなわちＦＭ音源により構成することができる。ＦＭ音源は、周波数変調によって生じる高調波を楽音の合成に利用したものであり、比較的簡単な回路で非調和音を含む高調波成分を持つ波形を発生することができる。ＦＭ音源は、自然楽器の合成音から電子音まで幅広い楽音を発生することができる。ＦＭ音源では、正弦波を等価的に発振するオペレータと称される発振器を用いており、例えば第１のオペレータと第２のオペレータとを縦続接続することによりＦＭ音源を構成することができる。また、オペレータにおける自らの出力をフィードバックして入力するようにしてもＦＭ音源を構成することができる。
さらにまた、音源ハードウェア１５における音源部３３の音源方式としては、ＦＭ音源方式に限るものではなく、波形メモリ音源（ＰＣＭ音源、ＡＤＰＣＭ音源）方式、物理モデル音源方式等とすることができ、音源の構成としてはＤＳＰ等を用いたハードウェア音源とすることができる。
【０１１３】
【発明の効果】
本発明は以上説明したように、音楽コンテンツデータを音源ハードウェア制御データに変換する変換処理をソフトウェア処理手段で実行し、時間管理を音源ハードウェアで行うようにしたので、音源ハードウェアに設けられたシーケンサの回路規模を小さくすることができる。この場合、時間管理はカウンタ手段を用いて簡易な構成で行うことができる。また、ソフトウェア処理手段では時間管理のための処理を行う必要がないので、ソフトウェア処理手段の負荷を軽くすることができ、高速のＣＰＵを不要とすることができる。さらにまた、時間管理情報が同値とされると共に、楽音生成用のパラメータを音源制御レジスタに書き込むアドレスを示すインデックス情報が連続する場合は、時間管理情報に続くインデックス情報を先頭のインデックス情報とし、続く楽音生成用のパラメータを複数のパラメータとなるように変換することにより、音源ハードウェア制御データ量を低減させることができ、ソフトウェア処理手段および音源ハードウェア手段の負担を軽くすることができる。
さらに、ソフトウェア処理手段が、処理に余裕がある時間を利用して変換処理を実行することにより、ソフトウェア処理手段に負荷が集中することを防止することができ、高速のソフトウェア処理手段とする必要性をさらに低くすることができる。
【図面の簡単な説明】
【図１】  本発明の楽音生成装置を備える本発明の携帯端末装置を携帯電話機に適用した場合の実施の形態の構成例を示す図である。
【図２】  本発明の実施の形態にかかる楽音生成装置の構成例を示す図である。
【図３】  ＳＭＡＦフォーマットのデータ構造と、そのデータ構造中のスコアトラックチャンクのデータ構造を示す図である。
【図４】  ＳＭＡＦフォーマットにおけるスコアトラックチャンク中のシーケンスデータチャンクのデータ構造を示す図である。
【図５】  ＳＭＡＦデータの一例におけるシーケンスデータを時間軸上で表した図である。
【図６】  本発明の実施の形態にかかる楽音生成装置における音源ハードウェア制御データの時間管理情報を省略した音源制御レジスタマップ対応データを、変換前のＳＭＡＦデータに対応させて示す図である。
【図７】  本発明の実施の形態にかかる楽音生成装置における音源制御レジスタマップを示す図である。
【図８】  本発明の実施の形態の楽音生成装置における時間管理情報を含む音源ハードウェア制御データの第１のデータ構成を示す図である。
【図９】  本発明の実施の形態の楽音生成装置における音源ハードウェア制御データの第１のデータ構成によるデータ例を示す図である。
【図１０】  本発明の実施の形態の楽音生成装置における音源ハードウェア制御データの第１のデータ構成によるデータをデータ組毎に整理して示す図である。
【図１１】  本発明の実施の形態の楽音生成装置における音源ハードウェア制御データの第１のデータ構成によるデータが書き込まれるタイミングを示す図である。
【図１２】  本発明の実施の形態の楽音生成装置における音源ハードウェア制御データの第２のデータ構成を示す図である。
【図１３】  本発明の実施の形態の楽音生成装置における音源ハードウェア制御データの第２のデータ構成によるデータ例を示す図である。
【図１４】  本発明の実施の形態の楽音生成装置における音源ハードウェア制御データの第２のデータ構成によるデータをデータ組毎に整理して示す図である。
【図１５】  本発明の実施の形態にかかる楽音生成装置における第１の構成の音源制御レジスタデータを再生する際に、音源ハードウェアのシーケンサで実行される再生処理のフローチャートを示す図である。
【図１６】  本発明の実施の形態にかかる楽音生成装置における第２の構成の音源制御レジスタデータを再生する際に、音源ハードウェアのシーケンサで実行される再生処理のフローチャートを示す図である。
【図１７】  本発明の他の実施の形態にかかる楽音生成装置の構成例を示す図である。
【図１８】  本発明の他の実施の形態にかかる楽音生成装置の変形例の構成を示す図である。
【図１９】  本発明の実施の形態の楽音生成装置の変形例における音源ハードウェア制御データの第３のデータ構成を示す図である。
【図２０】  本発明の実施の形態の楽音生成装置の変形例において、複数イベントに対応する音源制御レジスタライトデータを１行で表す具体例を示す図である。
【図２１】  本発明の実施の形態の楽音生成装置の変形例における再生スタート処理のフローチャートを示す図である。
【図２２】  本発明の実施の形態の楽音生成装置の変形例における再生スタート処理の時間管理情報部処理のフローチャートを示す図である。
【図２３】  本発明の実施の形態の楽音生成装置の変形例における再生スタート処理のアドレス部処理のフローチャートを示す図である。
【図２４】  本発明の実施の形態の楽音生成装置の変形例における再生スタート処理のデータ部処理のフローチャートを示す図である。
【図２５】  従来のハードウェアで構成した楽音生成装置の構成を示す図である。
【図２６】  従来のソフトウェアで構成した楽音生成装置の構成を示す図である。
【符号の説明】
１  携帯電話機、１０  ＣＰＵ、１０ａ  メモリコントローラ、１０ｂ  音源ハードウェア制御データ変換手段、１１  ＲＡＭ、１１ａ  領域、１１ｂ  領域、１１ｃ  レジスタ領域、１２  ＲＯＭ、１３  通信部、１４  音声処理部、１５音源ハードウェア、１６  インタフェース、１７  入力部、１８  表示部、１９  バイブレータ、２０  外部機器、２１  マイク、２２  受話用スピーカ、２３  着信用スピーカ、２４  バス、２５  アンテナ、３２  シーケンサ、３２ａカウンタ、３２ｂ  データデコード回路、３２ｃ  レジスタライトコントローラ、３２ｄ  アドレスコントローラ、３３  音源部、３３ａ  音源制御レジスタ、４０  コンテンツ情報チャンク、４１  スコアトラックチャンク、４２  オーディオトラックチャンク、４３  セットアップデータチャンク、４４  シーケンスデータチャンク、１１０  ＣＰＵ、１１１  音楽コンテンツデータ、１１５  音源ハードウェア、１３２  シーケンサ、１３２ａ  ハードウェア固有制御データ変換部、１３２ｂ  時間管理部、１３３  音源部、２１０  ＣＰＵ、２１０ａハードウェア固有制御データ変換手段、２１０ｂ  時間管理手段、２１１  ＳＭＡＦデータ、２１５  音源ハードウェア、２３２  シーケンサ機能手段、２３３  音源部
【図１】
0003675362.tif 000002
【図２】
0003675362.tif 000003
【図３】
0003675362.tif 000004
【図４】
0003675362.tif 000005
【図５】
0003675362.tif 000006
【図６】
0003675362.tif 000007
【図７】
0003675362.tif 000008
【図８】
0003675362.tif 000009
【図９】
0003675362.tif 000010
【図１０】
0003675362.tif 000011
【図１１】
0003675362.tif 000012
【図１２】
0003675362.tif 000013
【図１３】
0003675362.tif 000014
【図１４】
0003675362.tif 000015
【図１５】
0003675362.tif 000016
【図１６】
0003675362.tif 000017
【図１７】
0003675362.tif 000018
【図１８】
0003675362.tif 000019
【図１９】
0003675362.tif 000020
【図２０】
0003675362.tif 000021
【図２１】
0003675362.tif 000022
【図２２】
0003675362.tif 000023
【図２３】
0003675362.tif 000024
【図２４】
0003675362.tif 000025
【図２５】
0003675362.tif 000026
【図２６】
0003675362.tif 000027