電子情報処理方法及び装置並びに記録媒体
【課題】 不正に見破られることなく、意図的な改竄のしにくい、無意識のうちの付属情報の変更も起こりにくい、主要情報に対する付属情報の電子的透しの埋め込み。
【解決手段】 所定のエンコードアルゴリズムに従って、主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加し、該ダミーデータに応じた電子的透しが主要情報に埋め込まれるようにする。または、主要情報に対してダミーデータを埋め込み、該ダミーデータの時間位置を示す時間情報を所望の付属情報に応じて設定することで、主要情報中のダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込む。または、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加し、付加したダミーチャンネルに応じた電子的透しを主要情報に埋め込む。
【解決手段】 所定のエンコードアルゴリズムに従って、主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加し、該ダミーデータに応じた電子的透しが主要情報に埋め込まれるようにする。または、主要情報に対してダミーデータを埋め込み、該ダミーデータの時間位置を示す時間情報を所望の付属情報に応じて設定することで、主要情報中のダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込む。または、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加し、付加したダミーチャンネルに応じた電子的透しを主要情報に埋め込む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、主要情報(例えば、演奏データ、映像データ、波形データなど)中に、付属情報(例えば、著作権表示情報、曲名情報、作曲者情報、作成年月日情報、歌詞情報、ニュース文情報、機種名情報、IDなどのテキストデータ)を電子的透し情報として埋め込む、及び/又は主要情報中に電子的透し情報として埋込まれた付属情報を取出す電子情報処理方法及び装置若しくはシステムに関し、更にはこの方法を実現するためのプログラムを記録したコンピュータ読取り可能な記録媒体に関する。
【背景技術】
【0002】
従来から、例えば下記特許文献1に示されているように、主要情報としての演奏データの一部を構成するベロシティデータの最下位ビットに、曲名、作曲者等に関する付属情報を埋め込むとともに、同付属情報の埋め込まれた演奏データから付属情報を取り出すことは知られている。
【特許文献1】特開平11−39796号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、上記従来の方法では、付属情報の埋め込み法が比較的単純なために、オーソライズされていない不正利用者によって同方法が見破られて付属情報が意図的に変更されてしまうという問題があった。また、ベロシティデータは比較的変更されやすいデータの一つであるために、正当利用者が演奏データそのものを編集する際などにベロシティデータを変更することにより、該ベロシティデータに埋め込まれた付属情報が無意識のうちに変更されてしまうことが起こり得るという問題もあった。
【0004】
本発明は上述の点に鑑みてなされたもので、主要情報に対する付属情報の埋め込み法に工夫を施したユニークな電子情報処理方法及び装置並びに記録媒体を提供しようとするものである。更に、オーソライズされていない不正利用者によって見破られることの起こりにくい、従って、不正利用者による意図的な改竄のしにくい、電子情報処理方法及び装置並びに記録媒体を提供しようとするものである。また、正当利用者による無意識のうちの付属情報の変更も起こりにくいようにした電子情報処理方法及び装置並びに記録媒体を提供しようとするものである。
【課題を解決するための手段】
【0005】
【0006】
【0007】
【0008】
【0009】
【0010】
【0011】
第1の観点に従う本発明に係る方法は、音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加するステップを具備し、前記主要情報におけるダミーデータに応じた電子的透しを埋め込むことを特徴とする。
【0012】
例えば或るエフェクトに変更せよというような指示を行う演奏制御データは、同一のものが連続していても、一旦そのエフェクトに変更されると次は同じエフェクトが維持されるだけであり、音楽演奏には悪影響を与えない。よって、このような演奏制御データはダミーデータとして使用することができる。メタイベントのような非演奏データも、同一のものが連続していても同じメタイベント処理が繰返されるだけであり、音楽演奏には悪影響を与えない。従って、本願発明によれば、音楽演奏に悪影響を与えることなく、ダミーデータの有無に応じて1ビットの電子的透しを埋め込むことができる。
【0013】
第2の観点に従う本発明に係る方法は、音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータを付加するステップと、前記ダミーデータの時間位置を示す時間情報を、所望の付属情報に応じて設定するステップとを具備し、前記主要情報におけるダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込むことを特徴とする。この場合も、ダミーデータを用いることで音楽演奏に悪影響を与えることなく、電子的透しを埋め込むことができ、また、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0014】
第3の観点に従う本発明に係る方法は、音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加するステップを具備し、付加したダミーチャンネルに応じた電子的透しが前記主要情報に埋め込まれることを特徴とする。この場合も、ダミーデータを用いることで音楽演奏に悪影響を与えることなく、電子的透しを埋め込むことができ、また、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0015】
更に本発明に係る方法は、上記第1乃至3のいずれかの観点に従って電子的透しが埋め込まれた主要情報から前記付属情報をデコードする電子情報処理方法であって、前記エンコードアルゴリズムに対応するデコード用カギ情報を提供するステップと、前記提供されたカギ情報に基づき前記エンコードアルゴリズムの逆算を行うことで、前記主要情報に隠されていた前記付属情報をデコードするステップとを具備することを特徴とする。
【0016】
本発明は、方法の発明として実施することができるのみならず、システムまたは装置の発明として実施することができるし、この方法を実現するためのコンピュータプログラムの形態で実施することもできるし、更にはこのプログラムを記録したコンピュータ読取り可能な記録媒体の発明として実施することもできる。また、この方法に従って電子的透しを埋め込んだデータを記録してなるコンピュータ読取り可能な記録媒体の発明として実施することもできる。
【発明を実施するための最良の形態】
【0017】
以下、本発明の実施の形態を図面を用いて説明する。まず、各実施形態に共通のハード構成について説明すると、図1は、同ハード構成に係るパーソナルコンピュータをブロック図により示している。
【0018】
パーソナルコンピュータ装置は、マイクロコンピュータ本体を構成するCPU11、ROM12及びRAM13を備えている。CPU11は、プログラムを実行するものである。ROM12は、OS等の基本的なプログラムを記憶しておくための記憶エリアである。RAM13は、アプリケーションプログラム等を記憶したり、プログラムの実行に必要な変数を記憶したりするための記憶エリアである。これらのCPU11、ROM12及びRAM13はバス10に接続されており、同バス10には、内部記憶装置14、ドライブユニット15、入力装置16及び表示器17も接続されている。
【0019】
内部記憶装置14は、ハードディスク、同ディスクのためのドライブ装置などで構成されており、大容量のメモリ装置として機能する。ドライブユニット15は、外部記録媒体としてのコンパクトディスク、フレキシブルディスクなどが装着されるようになっており、同外部記録媒体に対してプログラム及びデータの読出し及び書込みを行うものである。入力装置16は、複数の操作子により構成されるキーボード、マウス等などからなり、外部からの指示、データなどを入力するものである。表示器17は、文字、数字などを画面に表示するものである。
【0020】
また、バス10には、通信インターフェース21及び音源回路22も接続されている。通信インターフェース21は、外部の各種機器とケーブル、電話回線などを介してデータ、プログラムなどの授受を行うもので、特にMIDI(Musical Instrument Digital Interface)データの授受を行うインターフェース回路を含んでいる。勿論、MIDIデータに限らずその他の任意のフォーマットのデータを、通信インターフェース21を介して授受することが可能である。音源回路22は、楽音信号を形成して出力する複数の音源チャンネル(本実施形態ではチャンネル番号0〜15の16個のチャンネルを使用するものとする)を有しており、各音源チャンネルは、バス10を介して供給されるキーコードKC、キーオン信号KON、キーオフ信号KOF、各楽音制御パラメータ等の演奏データにしたがって種々の音高を有する各種音色の楽音信号を形成し、左右のオーディオチャンネルに分けてそれぞれ出力する。また、各音源チャンネルは、複数の楽音信号を時分割で合成して出力することがそれぞれ可能である。ただし、一部の音源チャンネル(本実施形態ではチャンネル番号9の音源チャンネル)は種々の打楽器音信号を合成するために設けられていて、この音源チャンネルにはキーコードKCに代えて打楽器番号が供給されるようになっている。この音源回路22には、左右のオーディオアンプ23a,23bを介して左右のオーディオスピーカ24a,24bがそれぞれ接続されている。
【0021】
次に、各実施形態に共通の動作について説明しておく。ユーザは、各実施形態に係るアプリケーションプログラムとしての「エンコードプログラム」及び「デコードプログラム」を記録したコンパクトディスク、フレキシブルディスクなどの記録媒体を準備し、同記録媒体をドライブユニット15に装着して「エンコードプログラム」及び「デコードプログラム」を内部記憶装置14に記憶させる。また、通信インターフェース21を介して「エンコードプログラム」及び「デコードプログラム」を内部記憶装置14に記憶させてもよい。
【0022】
そして、「エンコードプログラム」を起動させると、パーソナルコンピュータ装置は、図2(A)に示すようなエンコーダ30Aとして機能する。エンコーダ30Aは、付属情報Y及びカギ情報KEYを外部から入力し、与えられた主要情報(本件各実施形態では演奏データ)をカギ情報KEYにしたがって加工することにより、付属情報Yを透し情報として主要情報中に埋め込んで出力する。この主要情報内への付属情報Y(透し情報)の埋込処理は、通信インターフェース21を介してストリーミングデータ形式でリアルタイムに供給される主要情報に対してリアルタイムで施すようにしてもよいし、あるいはRAM13又は内部記憶装置14に予め記憶されている主要情報(あるいは外部記録媒体に記録されているものをドライブユニット15を介して読み込んだ主要情報)に対して非リアルタイムで施すようにしてもよい。
【0023】
「デコードプログラム」を起動させると、パーソナルコンピュータ装置は、図2(B)に示すようなデコーダ30Bとして機能する。デコーダ30Bは、カギ情報KEYを外部から入力し、同カギ情報KEYを用いることにより、前記透し情報として付属情報Yの埋込まれた主要情報(本件実施形態では演奏データ)から付属情報Yを取り出して出力する。この透し埋込済みの主要情報からの付属情報Y(透し情報)のデコード処理も、通信インターフェース21を介してストリーミングデータ形式でリアルタイムに供給される主要情報に対してリアルタイムで施すようにしてもよいし、あるいはRAM13又は内部記憶装置14に予め記憶されている主要情報(あるいは外部記録媒体に記録されているものをドライブユニット15を介して読み込んだ主要情報)に対して非リアルタイムで施すようにしてもよい。
【0024】
また、後述する各実施形態では、パーソナルコンピュータを用いてエンコード機能及びデコード機能を実現するようにしたが、同エンコード機能及びデコード機能を実現するプログラムをロード可能なマイクロコンピュータ装置を内蔵したものであれば、音源装置、電子楽器用キーボード装置、シーケンサ、MIDIファイラー、サンプラー、又はこれらの複数を含む電子楽器システムにも適用できるものである。また、後述する各実施形態では、演奏データ中に付属情報Yを埋込むことについてのみ説明するが、本発明は演奏データ以外にも、波形データ、映像データなどの他のデータに埋込む場合にも適用できるものである。
【0025】
〔第1実施形態〕
次に、本発明の第1実施形態について説明する。この第1実施形態は、カギ情報KEYに応じて演奏データにおけるデータ配置を再配置又はデータの順序を変更するタイプのものに属する。
【0026】
演奏データに対する付属情報Yの埋込み(エンコード)及び演奏データから付属情報Yの取出し(デコード)の説明の前に、付属情報Yを埋込む前の演奏データのフォーマット例について説明しておく。1つの音楽演奏に対応する演奏データとしては、図3に示すように、音源チャンネル0〜15(ch0〜ch15)にそれぞれ対応した16チャンネル分の演奏データ0〜15が用意される。すなわち、16チャンネルポリフォニックの自動演奏シーケンスデータである。勿論、必ずしも16チャンネル分の全ての演奏データ0〜15を使用する必要はなく、一部の音源チャンネル用の演奏データだけを使用してもよい(例えば音源チャンネル0〜10だけを使用して合計用の11チャンネル分の演奏データ0〜10だけを用意する)。この実施例において、音源チャンネル0〜8,10〜15(ch0〜ch8,ch10〜ch15)は、前述のように、種々の音高を有する各種音色の楽音信号を合成するものであるので、演奏データ0〜8,10〜15は共通のフォーマットである。しかし、音源チャンネル9(ch9)は打楽器信号を合成するものとしているので、演奏データ9のフォーマットは他と異なる。本実施形態では、このch9の演奏データ9は透し情報を埋め込む対象としないので、同演奏データ9に関してはこれ以上の説明を省略する。
【0027】
各音源チャンネル0〜8,10〜15(ch0〜ch8,ch10〜ch15)に対応して記憶される演奏データ0〜8,10〜15のフォーマットの一例を図3を参照して説明すると、これらの演奏データのフォーマットは、データ列の先頭位置に設けた音源設定情報と、音源設定情報に続いて設けた演奏イベント情報とからなる。音源設定情報は、音源チャンネルの初期の音色、音量、音像位置、エクスプレションペダル位置(これも音量を制御)及び減衰時間(単に減衰時間の長短のみを示す場合もある)をそれぞれ制御するための音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPを含む。例えば、音色番号データTCNの一例を示すと、同データTCNは、ピアノ、ギター等の各種音色を「0」以上の異なる整数によって表すものである。
【0028】
演奏イベント情報は、各楽音の発音開始、発音終了などのイベントを表すイベントデータEVTと、各イベント間のインターバル(相対時間)を表すインターバルデータΔTとからなる。各イベントデータEVTは、楽音の音名(例えばC2,E2など)を表すキーコードKC、楽音の発音開始及び発音終了を表すオン・オフデータON/OFF、鍵タッチの強さを表すベロシティデータVELなどを一組とするものである。なお、同一のタイミングに複数のイベントが発生する場合には、複数のイベントデータEVTが連続して書き込まれている。
【0029】
そして、このような演奏データの再生について簡単に説明しておく。図示しないプログラムの実行により、最初、音源設定情報を構成する音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPが順次読出されて音源回路22の該当音源チャンネルに出力される。音源回路22の該当音源チャンネルは、前記各データに応じて、同チャンネルにおいて発生される楽音信号の初期の音色、音量、音像位置、エクスプレッションペダル位置及び減衰時間を設定する。次に、演奏イベント情報が順次読出される。この場合、次のインターバルデータΔTが見つかるまで、イベントデータEVTの読出しを続け(次のインターバルデータΔTが見つかるまでに複数組のイベントデータEVTがあれば複数組分のイベントデータEVTを読出し)、同読出したイベントデータEVTを音源回路22の該当音源チャンネルに出力する。そして、次のインターバルデータΔTによって表された時間の計数が終了するまで、演奏イベント情報の読出しを中断し、同計数が終了した時点で次の演奏イベント情報の読出しを再開する。したがって、イベントデータEVTは、インターバルデータΔTによって表された時間毎に、順次読出されて音源回路22の該当音源チャンネルに供給される。
【0030】
音源回路22の該当音源チャンネルにおいては、供給されたイベントデータEVTのうちのキーコードKCによって決定された音高の楽音信号を合成する。この合成される楽音信号の発音開始及び発音終了は、前記供給されたイベントデータEVTのうちのオン・オフデータON/OFFにより制御され、個々の音量は同イベントデータEVTのうちのベロシティデータVELによって制御される。また、前記のように合成された各楽音信号の音色、総合的な音量、音像位置、エクスプレッションペダルによる音量及び減衰時間は、前記音源設定情報を構成する音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPによってそれぞれ制御される。ただし、これらデータTCN、VOL、PAN、EXP、DMPのいずれかが演奏データに含まれていて、同いずれかのデータが演奏イベント情報の読出し中に読出された場合には、同読出しの時点から、前記各楽音信号の音色、総合的な音量、音像位置、エクスプレッションペダルによる音量及び減衰時間は、前記演奏イベント情報の読出し中に読出されたいずれかのデータにしたがう。
【0031】
なお、図3は演奏データフォーマットを概念的に示したものであり、詳細なデータフォーマットは、各種の公知の音楽演奏データフォーマットに従う。例えば、各音源チャンネル別に演奏データ記録トラックをそれぞれ有する在来型の自動演奏シーケンスのフォーマットからなる場合は、複数の音源チャンネルに対応してそれぞれ演奏データ記録トラックが存在し、音源チャンネルと記録トラックとが1対1で対応する。よって、その場合は、演奏データのチャンネル配置の変更は、或る音源チャンネルの記録トラックで記憶されている演奏データを別の音源チャンネルの記録トラックに移し替えるか、あるいは音源チャンネルと記録トラックの対応づけを変更する(或る記録トラックに対応づけられるチャンネル番号を別のチャンネル番号に変更する)ことによって行われる。また、MIDIメッセージのようにステータスバイトにチャンネル番号をデータとして含むフォーマットからなる場合は、複数の音源チャンネルの演奏データ(MIDIデータ)は記録トラック別に分かれているというよりはむしろ混在しており、その場合は、演奏データのチャンネル配置の変更は、ステータスバイト中のチャンネル番号を変更することによって行われる。
【0032】
次に、演奏データに対する付属情報Yの埋め込み(エンコード)処理の一例について図4を参照して説明する。図4は、演奏データのチャンネル配置を変更することで、所望の付属情報に対応する透し情報を埋め込む例を示している。また、演奏データのチャンネル配置を変更するエンコードアルゴリズムにおける1つの「カギ」として、音色情報を用いる。すなわち、音色情報に関連づけて演奏データのチャンネル配置を変更するエンコードアルゴリズムを採用するものとする。勿論、エンコードアルゴリズムはこれに限らず、適宜設計してよい。
【0033】
図4において、ユーザが「エンコードプログラム」を起動すると、CPU11は、ステップ100にて「エンコードプログラム」の実行を開始し、ステップ102にて埋め込むべき付属情報Y及びそのデコード用のカギ情報KEYを入力する。これらの情報Y,KEYの入力は、入力装置16による操作入力、通信インターフェース21を介して外部からの入力、外部記録媒体からドライブユニット15を介した入力、内部記憶装置14に記憶しておいたものの読み出しなど、適宜の手段によって行われる。
【0034】
以下の説明では、最も簡単な例として、付属情報Yとして1つの文字コードを示す数値情報を埋め込む例について説明する。理解を容易にするための具体例としては、アスキーコードの文字「Y」を表すデシマル値「86」を埋め込む例を想定する。また、付属情報Yを埋め込むためのエンコードアルゴリズムにおける「カギ」として、各チャンネル0〜8,10〜15の演奏データ0〜8,10〜15内の各音源設定情報中の音色番号データTCNの小さい順に演奏データのチャンネル配置を変更することとする。カギ情報KEYはそのような「カギ」を示す情報である。なお、以降において登場する数値は、特別のことわりがない限り、全てデシマル値とする。
【0035】
なお、以下の説明におけエンコードアルゴリズムの基本は、最大で「B!」通りの値をとりうる数値「A」に応じて、「B」個のデータ群の順列組み合わせの配置を設定する、というアルゴリズムを使用するものとする。そのようなエンコードアルゴリズムは、具体的には下記(式1)のようである。
(式1)
B順列の順位0:AmodB
B順列の順位1:(AdivB)mod(B−1)
B順列の順位2:{(AdivB)div(B−1)}mod(B−2)
.
.
.
B順列の順位B−2:[{(AdivB)div(B−1)}div … div3〕mod2
B順列の順位B−1:[{(AdivB)div(B−1)}div … div2〕mod1=0
【0036】
上記式1において、「AmodB」は、数値AをBで割った余りを示す。「AdivB」は、数値AをBで割った商の整数部を示す。例えば、「B順列の順位0」とは、B順列のオリジナル順位0を示し(順位0は最上位のこと)、そのエンコード出力「AmodB」は、その変更後の順位を示す。ここで、下位のエンコードアルゴリズムのエンコード出力が示す変更後の順位は、上位のエンコードアルゴリズムによって決定済みの順位を除外した順位である。例えば、最上位のエンコードアルゴリズム「AmodB」によって、B順列のオリジナル順位0のデータが、全体中の順位「3」に変更することが決定されたとき、次のエンコードアルゴリズム「(AdivB)mod(B−1)」によって、エンコード出力として「4」が算出されたとすると、B順列のオリジナル順位1のデータは、全体の順位のうち既に決定済みの順位「3」を除外した順位の中の4番目、つまり全体中の順位「5」に変更されることを意味する。以下、順次、決定済みの順位を除外して変更後の順位を決定する。ここで、オリジナル順位とは、カギ情報KEYの示す順位であり、例えば音色番号データTCNの小さい順に演奏データのチャンネル配置を変更するエンコードアルゴリズムの場合は、各音源チャンネルのうちそこに割り当てられた音色番号データTCNの小さい順をオリジナル順位としている。なお、或る順位のエンコードアルゴリズムの結果が余り0となった場合は、それより下位の順位のエンコードアルゴリズムの演算実行を省略して、それより下位の順位についてはカギ情報KEYの示すオリジナル順位の通りとしてよい。
【0037】
図4において、ステップ104では、埋め込むべき付属情報Yを上記式1に従う順位0のアルゴリズムで処理する。この例の場合、チャンネル配置変更の対象となるチャンネル数は15であるから、上記式1でB=15であり、エンコードの対象となる数値は付属情報Yであるから、上記式1でA=Yである。よって、ステップ104では、「AmodB」の演算として、「Ymod15」を行う。その余りをx15なる符号で表すものとする。例えば、Y=86のとき、x15は「11」である。次に、ステップ106にて、カギ情報KEYにより定まる最初の演奏データ、すなわち最小の音色番号データTCNを有する演奏データを、音源チャンネル9(打楽器用音源チャンネル)を除く音源チャンネル0〜8,10〜15のうちで音源チャンネル0を最上位に数えてx15番目の音源チャンネル、つまりチャンネル12、に割当てる。すなわち、x15=11のときは、チャンネル9を除外するので、x15=11番目までのチャンネル順は、0,1,2,3,4,5,6,7,8,10,11,12の順となり、チャンネル12に該当する。なお、0番目とは音源チャンネル0を指し、1,2,3…番目は音源チャンネル1,2,3…を指す。また、最小の音色番号データTCNを有する演奏データをx15番目の音源チャンネルに割当てるとは、オリジナルのx15番目の音源チャンネルの演奏データと最小の音色番号データTCNを有する演奏データとを入替えることを意味し(ただし、x15番目の演奏データと最小の音色番号データTCNを有する演奏データとが一致する場合には前記入替えはなし)、これにより、最小の音色番号データTCNを有する演奏データが、音源チャンネル0〜8,10〜15のうちで音源チャンネル0側から数えてx15番目の演奏データとなる。
【0038】
次に、ステップ108にて、付属情報Yが「15」以上であるか否かを判定する。付属情報Yが「15」以上であれば、ステップ108にて「YES」と判定して、プログラムをステップ110〜114に進める。ステップ110及び112においては上記式1の順位1のエンコードアルゴリズムに従う演算を行う。すなわち、ステップ110においては、付属情報Yを「15」で割った商の整数部(これをy15で示す)を求める。この演算は、上記式1における「AdivB」なる割算に相当し、上記のようにA=Yで、B=15の場合は、ステップ110では「Ydiv15」なる割算を行うことになる。次に、ステップ112においては、前記商の整数部y15を「14」で割り、その余りx14を求める。すなわち、x14=y15mod14であり、これは上記式1の順位1の演算の解に相当する。次のステップ114においては、カギ情報KEYにより次の演奏データ、すなわち2番目に小さい音色番号データTCNを有する演奏データを、前記音源チャンネル0〜8,10〜15のうち、決定済みの音源チャンネルx15を除くx14番目の音源チャンネルに割当てる。例えば、Y=86のとき、y15=「5」であり、x14は、「5÷14=0余り5」から、x14=「5」である。すなわち2番目に小さい音色番号データTCNを有する演奏データを、音源チャンネル9及びx15=11(つまりチャンネル12)を除く音源チャンネルのうちx14番目の音源チャンネル(x14=5のときはチャンネル5)に割当てる。
【0039】
次に、ステップ116にて、前記商の整数部y15が「14」以上であるか否かを判定する。y15が「14」以上であれば、ステップ116にて「YES」と判定して、プログラムをステップ118〜122に進める。ステップ118及び120においては上記式1の順位2のエンコードアルゴリズムに従う演算を行う。すなわち、ステップ118においては、y15を「14」で割った商の整数部(これをy14で示す)を求める。この演算は、上記式1における「(AdivB)div(B−1)」なる割算に相当し、上記例のようにAdivB=y15で、B−1=14の場合は、ステップ118では「y15div14」なる割算を行う。次にステップ120においては、前記商の整数部y14を「13」で割り、その余りx13を求める。すなわち、x13=y14mod13であり、これは上記式1の順位2の演算の解に相当する。そして、次のステップ120においては、カギ情報KEYにより次の演奏データ、すなわち3番目に小さい音色番号データTCNを有する演奏データを、前記音源チャンネル0〜8,10〜15のうち、決定済みの音源チャンネルx15及びx14を除くx13番目の音源チャンネルに割当てる。
【0040】
以下、順位を順次繰り下げながら、ステップ116,118,120,122と類似の処理を順次繰り返し、上記式1の順位3から順位B−1までのエンコードアルゴリズムに従う演算をそれぞれ行うが、詳細図示は省略する。
【0041】
ところで、上記例のように、Y=86の場合は、y15=「5」であるから、ステップ116はNOと判定され、ステップ118〜122に進まずに、ステップ124に進む。ステップ124では、残りの演奏データを、カギ情報KEYにより定まる順序で残りの音源チャンネルに順次割り当てる処理を行う。このように、カギ情報KEYにより定まる順序の通りにチャンネルが配置されている箇所では、エンコードアルゴリズム演算の解つまり余りが「0」であることを意味する。すなわち、順位を順次繰り下げながら、ステップ116,118,120,122と類似の処理をあえて順次繰り返す必要がないため、これらの演算を省略し、ステップ124で順次割当て処理を行えば足りる。同様の理由で、ステップ108でNOと判定された場合も、処理はステップ124に移る。
【0042】
ここで理解を深めるためにチャンネル配置変更の具体例を示す。オリジナル演奏データとして、チャンネル0に音色番号20の演奏データが割り当てられ、チャンネル3に音色番号10の演奏データが割り当てられ、チャンネル5に音色番号15の演奏データが割り当てられ、チャンネル10に音色番号12の演奏データが割り当てられているとする。上記のように埋め込むべき付属情報Yが「86」であるとすると、音色番号順のアルゴリズムを指示するカギ情報KEYに従って、最初は最小の音色番号10のチャンネル割当て(配置変更)を行い、ステップ104でのx15=Ymod15=11によって、音色番号10の演奏データを順位11のチャンネル(つまりチャンネル12)に割り当てる(オリジナルのチャンネル3からチャンネル12に配置を変更する)。
【0043】
次に、2番目の音色番号12のチャンネル割当て(配置変更)を行い、ステップ110でのy15=Ydiv15=5、及びステップ112でのx14=y15mod14=5によって、2番目の音色番号12の演奏データをチャンネル5に割り当てる(オリジナルのチャンネル10からチャンネル5に配置を変更する)。y15は14未満であるため、ステップ116はNOとなり、以後のエンコード演算を省略してステップ124に行き、以下音色番号順に残りのチャンネルに順次割り当てる。すなわち、3番目の音色番号15の演奏データをチャンネル0に割り当て(オリジナルのチャンネル5からチャンネル0に配置を変更する)、4番目の音色番号20の演奏データをチャンネル1に割り当て(オリジナルのチャンネル0からチャンネル1に配置を変更する)。
【0044】
以上例示したようなチャンネル配置変更に基づくエンコードアルゴリズムによれば、対象チャンネル数が「15」であれば、「15!」通りのチャンネル配置組合せがあり得ることから、「15!」通りの値を示す付属情報を電子的透し情報として演奏データ(主要情報)の中に埋め込むことができる。「15!」通りの値とは、ビット数にして「log15!」(底は2)ビットからなるものであり、かなりの情報量を透し情報として埋め込むことができることが理解できる。しかも、演奏データのチャンネル配置を変更したとしても、結果的に発音される演奏音については何も変更されない(どのチャンネルを使用して発音しようとも、指定された音色等で発音がなされればよい)ので、透し情報を埋め込んだことによる再生演奏への悪影響は全く生じず、極めて有利である。
【0045】
なお、チャンネル配置変更に使用するエンコードアルゴリズムのカギ情報KEYとしては、音色番号順に限らず、他の如何なるファクタを使用してもよい。例えば各チャンネルの演奏データ中のノート番号の平均値の小さい順(または大きい順)、あるいは各チャンネルの演奏データ中のノート数(音符数)の多い順(または少ない順)、など適宜のファクタをカギ情報KEYとして使用してよい。また、上記実施例では、付属情報Yとして1文字のアスキーコードを埋め込む例を説明したが、複数の文字分の任意の文字情報や、図形情報その他の適宜の情報を付属情報Yとして埋め込むことができるのは勿論である。例えば、音楽演奏データの適宜のブロック毎に(1又は複数小節毎に)1文字ずつ合計複数文字の透し情報を埋め込む、といったような手法でエンコードを行うことができる。なお、その場合、チャンネル配置がどの箇所で変化するのか、といったようなデコード処理に必要な各種情報をカギ情報KEYとして適宜提供してやるものとする。
【0046】
次に、演奏データに埋め込まれた付属情報Yのデコード処理の一例について図5を参照して説明する。図5は、図4の手法に従ってチャンネル配置を変更することで所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例を示している。
【0047】
図5において、ユーザが「デコードプログラム」を起動すると、CPU11は、ステップ101にて「デコードプログラム」の実行を開始し、ステップ103にて、デコード用のカギ情報KEYを取得する。デコード用カギ情報KEYの取得の仕方は、如何なる手法によってもよい。例えば、必要なカギ情報KEYを正当に知得し、これをキーボード等で入力するようにしてもよい。あるいは、演奏データのヘッダ部等に必要なカギ情報KEYを記憶しておき、これを読み出すことで取得するようにしてもよい。あるいは、後述するように、主要情報たる演奏データの適宜の箇所に電子的透し情報の形態で必要なカギ情報KEYを埋め込んでおき、これを別途のデコードプログラムに従ってデコードすることで取得するようにしてもよい。あるいは、通信インターフェース21を介して通信ネットワークを経由して外部のサーバから必要なカギ情報を取得するようにしてもよい。あるいは、MIDIの演奏データ中に含まれるシステムイクスクルーシブデータからもしくはメタイベントデータから必要なカギ情報を取得するようにしてもよい。このようにデコード用のカギ情報KEYの取得形態に種々のバリエーションがあることは、以下説明するすべての実施例に共通である。
【0048】
例えば、図4のエンコード例の場合は、このステップ103で取得するカギ情報KEYは、「音色番号の小さい順」に上記式1のエンコードアルゴリズムを適用したというものである。よって、このようなカギ情報KEYを取得し知得することにより、与えられた演奏データのうち「音色番号の小さい順」に上記式1のエンコードアルゴリズムの逆算を行うことにより、そこに隠されていた元の付属情報Yをデコードすることができる。
【0049】
すなわち、与えられた演奏データにおける各チャンネルの音色番号をチェックすることで、「音色番号の小さい順」にそのチャンネル順位x15,x14,x13,…を順次検出する(図5のステップ105,107,109,…)。なお、ここで、前述から明らかなように、チャンネル順位x15,x14,x13,…とは絶対的なチャンネル順位ではなく、それぞれの段階での残りのチャンネルにおける相対的な順位である。例えば、前述のエンコード例のように、最小の音色番号10の演奏データをチャンネル12に割り当て、2番目の音色番号12の演奏データをチャンネル5に割り当て、3番目の音色番号15の演奏データをチャンネル0に割り当て、4番目の音色番号20の演奏データをチャンネル1に割り当てるようなチャンネル配置変更がなされている場合、図5のステップ105では最小の音色番号10の演奏データが割り当てられているチャンネル12に基づき、x15=「11」を検出する。次のステップ107では、2番目の音色番号10の演奏データが割り当てられているチャンネル5を検出し、これが残りのチャンネル(つまりチャンネル9と12を除くチャンネル0〜8,10,11,13〜15)のうち、5番目の順位であることに基づき、x14=「5」を検出する。次のステップ109では、3番目の音色番号15の演奏データが割り当てられているチャンネル0を検出し、これが残りのチャンネル(つまりチャンネル9と12と5とを除くチャンネル0〜4,6〜8,10,11,13〜15)のうち、最上位の順位「0」であることに基づき、x13=「0」を検出する。以後のチャンネル順位はすべて残りのチャンネルの最上位であるため「0」である。
【0050】
このようにしてカギ情報KEYに基づき検出した各チャンネル順位x15,x14,x13,…は、前記式1の各順位のエンコードアルゴリズム演算における余り値に相当するため、これらを用いて下記式2のようにエンコードアルゴリズムの逆算を行うことで、埋め込まれた透し情報の値Aをデコードすることができる。
(式2)
A=x15+(x14・B)+{x13・B・(B−1)}+{x12・B・(B−1)・(B−2)}
+{x11・B・(B−1)・(B−2)・(B−3)}+……
図5におけるステップ111では、上記式2に従う逆算を行い、透し情報として埋め込まれていた付属情報Yの値をデコードする。x15=「11」、x14=「5」、x13=「0」の上記例では、Y=11+5×15+0=86となり、透し情報として埋め込まれていた付属情報Yの値「86」がデコードされることが理解できる。
【0051】
次に、上記第1実施形態の変形例について説明する。上記例では、演奏データにおけるチャンネル配置を変更することで透し情報の埋め込みを行っているが、その他適宜のデータの配置または順序を変更するようにしてもよい。すなわち、配置または順序変更の対象となりうるデータは、演奏データにおける当該データの配置または順序の変更が、該演奏データに基づく音楽の再生に実質的に悪影響を与えないものであることが好ましい。そのようなタイプのデータとしては、発音開始前の(初期設定用の)複数種類の音源設定情報の配置順序や、同時発音される和音を構成する複数ノートのイベントデータや、MIDIのメタイベントデータ(演奏には直接関係しないデータ)などが挙げられる。
【0052】
図6は、演奏データに対する付属情報Yの埋め込み(エンコード)処理の別の例として、演奏データにおける複数種類の音源設定情報の配列順序を変更することで、所望の付属情報に対応する透し情報を埋め込む例を示している。この例では、初期設定用(発音開始以前)の音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPの5種類の音源設定情報の配列順序を、付属情報Yの値に応じて変更する。その場合のカギ情報KEYは、各音源設定情報のオリジナル順位を示す。エンコードアルゴリズムは、前記式1と同様のものを使用してよい。その場合、上記5種類の音源設定情報の配列順序を変更する場合は、前記式1でB=5である。
【0053】
図6のエンコード処理の仕方は基本的には図4と同様である。まず、ステップ130では、図4のステップ102と同様に、埋め込むべき付属情報Yと使用するカギ情報KEYを入力する。次に、ステップ131では、配置若しくは順序変更の対象となる複数種類の音源設定情報を主要情報(演奏データ)から取り出す。次に、ステップ132では、B=5として、上記式1の順位0に従うエンコード演算(Ymod5)を行い、その解つまり余りとしてx5を得る。次のステップ133では、入力したカギ情報KEYによって定まる最初の順位(上記式1の順位0)の音源設定情報の配列順序を全体のx5番目に設定する。なお、前述と同様に、0番目が最上位の順位であるとする。例えば、TCN、VOL、PAN、EXP、DMPがオリジナル順位であるとすると、音色番号データTCNの配置順序がx5番目に設定される。
【0054】
次に、ステップ134にて、付属情報Yが「5」(=B)以上であるか否かを判定する。付属情報Yが「5」以上であれば、ステップ134にて「YES」と判定して、プログラムをステップ135,136に進める。ステップ135においては図4のステップ110及び112と同様に上記式1の順位1のエンコードアルゴリズムに従う演算を行う。すなわち、付属情報Yを「5」で割った商の整数部(これをy5で示し、y5=Ydiv5である)を求め、該商の整数部y5を「4」で割り(y5mod4)、その解つまり余りx4を求める。すなわち、x4=y5mod4であり、これはB=5のときの上記式1の順位1の演算の解に相当する。次のステップ136においては、カギ情報KEYにより定まる2番目のオリジナル順位1の音源設定情報の配置順序を残りの(決定済の順位x5を除く)x4番目に設定する。例えば、前記のオリジナル順の場合、ボリュームデータVOLの配置順序が残りのx4番目に設定される。
【0055】
次に、ステップ137にて、前記商の整数部y5が「4」以上であるか否かを判定する。y5が「14」以上であれば、ステップ137にて「YES」と判定して、プログラムをステップ138,139に進める。ステップ138においては図4のステップ118及び120と同様に上記式1の順位2のエンコードアルゴリズムに従う演算を行う。すなわち、y5を「4」で割った商の整数部(これをy4で示し、y4=y5div4である)を求め、該商の整数部y4を「3」で割り、その解つまり余りx3を求める。すなわち、x3=y4mod3であり、これはB=5のときの上記式1の順位2の演算の解に相当する。そして、次のステップ139においては、カギ情報KEYにより定まる3番目のオリジナル順位2の音源設定情報の配置順序を残りの(決定済の順位x5,x4を除く)x3番目に設定する。例えば、前記のオリジナル順の場合、パンデータPANの配置順序が残りのx3番目に設定される。
【0056】
次に、ステップ140にて、前記商の整数部y4が「3」以上であるか否かを判定する。y4が「3」以上であれば、ステップ140にて「YES」と判定して、プログラムをステップ141,142に進める。ステップ141,142は、上記ステップ138,139と同様の処理を順位を1つ繰り下げて行うものである。これにより、x2=y3mod2が求まり、これはB=5のときの上記式1の順位3の演算の解に相当し、カギ情報KEYにより定まる4番目のオリジナル順位3の音源設定情報の配置順序を残りの(決定済の順位x5,x4,x3を除く)x2番目に設定する。例えば、前記のオリジナル順の場合、エクスプレッションデータEXPの配置順序が残りのx2番目に設定される。最後にステップ143では、1つの順位だけが残されているので、残りの最後のオリジナル順位4の音源設定情報(上記設例ではダンプデータDMP)の配置順序を残りの順位とする。
【0057】
なお、上記各ステップ134,137,140でNOと判定された場合は、ステップ144,145,146に行き、残りのエンコードアルゴリズム演算(ステップ135〜143)をあえて実行することなく、残りの音源設定情報をカギ情報KEYに従う残りの順位に順次設定する。勿論、残りのエンコードアルゴリズム演算(ステップ135〜143)を実行ったとしても、各順位x4,x3,x2がそれぞれ順位0として求められ、カギ情報KEYが指定する順位に順次設定される。ステップ144,145,146にジャンプした場合は、残りのエンコードアルゴリズム演算を省略できるので、処理時間が速まる。
【0058】
ここで理解を深めるために、音源設定情報の配置順序変更の具体例を示す。カギ情報KEYに従う順位が上記のようであり、埋め込むべき付属情報Yの値が「86」であるとすると、x5=86mod5=1から、音色番号データTCNの配置順序が順位1(全体の2番目)に設定され、x4=17mod4=1から、ボリュームデータVOLの配置順序が残りの順位1(全体の3番目)に設定され、x3=4mod3=1から、パンデータPANの配置順序が残りの順位1(全体の4番目)に設定され、x2=1mod2=1から、エクスプレッションデータEXPの配置順序が残りの順位1(全体の5番目)に設定され、最後のダンプデータDMPの配置順序が残りの順位0(全体の1番目)に設定される。すなわち、DMP、TCN、VOL、PAN、EXPという配置順に変更される。
【0059】
以上例示したような音源設定情報の配置順序変更に基づくエンコードアルゴリズムによれば、対象種類数が「5」であれば、「5!」通りの順列組合せがあり得ることから、「5!」通りの値を示す付属情報を電子的透し情報として演奏データ(主要情報)の中に埋め込むことができる。「5!」通りの値とは、ビット数にして「log5!」(底は2)ビットからなるものである。しかも、初期設定用(発音開始以前)の各音源設定情報の配置順序を変更したとしても、再生演奏には何の悪影響ももたらさないので、透し情報を埋め込んだことによる再生演奏への悪影響は全く生じず、極めて有利である。なお、音源設定情報の配置順序変更に使用するエンコードアルゴリズムのカギ情報KEYによって指定する各情報のオリジナル順位は、上記例に限らず、適宜に設定してよい。この場合も、付属情報Yとして埋め込む情報は1文字のアスキーコードに限らず、複数の文字分の任意の文字情報や、図形情報その他の適宜の情報を埋め込むことができるのは勿論である。例えば、15個の各音源チャンネル0〜8,10〜15のそれぞれについて、演奏開始前の初期設定値としての各音源設定情報の配置順序を上記に従ってエンコードすることで、15文字の文字情報を埋め込むことができる。また、演奏途中の箇所で、各音源設定情報を挿入し、その配置順序を上記に従ってエンコードすることで、更に埋め込む情報数を増すことができる。
【0060】
次に、演奏データに埋め込まれた付属情報Yのデコード処理の別の例について図7を参照して説明する。図7は、図6の手法に従って音源設定情報の配置順序を変更することで所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例を示している。
【0061】
図7のデコード処理の仕方は基本的には図5と同様である。まず、ステップ150にて、デコード用のカギ情報KEYを取得する。次に、カギ情報KEYによって定まる音源設定情報の順に、その配置順位x5,x4,x3,x2を順次検出する(ステップ151〜154)。なお、ここで、前述から明らかなように、配置順位x5,x4,x3,x2とは絶対的な順位ではなく、それぞれの段階での残りのデータにおける相対的な順位である。例えば、前述のエンコード例のように、DMP、TCN、VOL、PAN、EXPの順で配置設定がなされている場合、図7のステップ151ではTCNの順位x5=「1」を検出する。次のステップ152ではVOLの順位x4=「1」を検出し、次のステップ153ではPANの順位x3=「1」を検出し、次のステップ154ではEXPの順位x2=「1」を検出する。最後のデータDMPの順位は必ず「0」である。
【0062】
このようにしてカギ情報KEYに基づき検出した各音源設定情報の配置順位x5,x4,x3,x2は、前記式1の各順位のエンコードアルゴリズム演算における余り値に相当するため、これらを用いて前記式2と同様のエンコードアルゴリズムの逆算を行うことで、透し情報として埋め込まれた付属情報Yの値をデコードすることができる。ステップ155では、デコードのためのそのような逆算、すなわち、
Y=x5+(5・x4)+(5・4・x3)+(5・4・3・x2)+0
を実行する。上記例では、x5,x4,x3,x2がすべて「1」であるから、Y=86のデコード結果が得られる。
【0063】
図8は、演奏データに対する付属情報Yの埋め込み(エンコード)処理の更に別の例として、同時発音される和音を構成する複数ノートの配置順序を変更することで、所望の付属情報に対応する透し情報を埋め込む例を示している。例えば、同時発音される3個のノートによって和音を演奏する演奏データを想定すると、この3個のノートの配置順序は、どのような順序であっても、和音が同時発音されることには変わりないので、「3!」通りの組み合わせの配置順序のいずれを採用しても再生演奏には悪影響を与えないことになる。よって、これらの同時発音される3個のノートの配置順序を、付属情報Yに応じて設定することにより、「3!」通りの値を持つ付属情報Yを透し情報として埋め込むことができることになる。勿論、同時発音されるノート数が4個の場合は、「4!」通りの値を持つ付属情報Yを透し情報として埋め込むことができることになる。ただし、図8に示すエンコード例では、説明の簡略化のために、同時発音されるノート数が4個以上の場合であっても、「3!」通りの値を持つ付属情報Yを透し情報として埋め込むようにした例を示している。このエンコード例の場合、演奏シーケンスにおける各和音演奏箇所毎にそれぞれ異なる付属情報Yを透し情報として埋め込むことができる。説明の便宜上、埋め込み可能な複数(p個)の付属情報Yを、Y(1),Y(2),Y(3),…Y(p)で示す。
【0064】
この場合、同時発音される複数のノートの配置順序を設定するためのカギ情報KEYとしては、ノート番号順、あるいはノートオフまでの時間順、あるいはベロシティデータの大きさの順、など種々のファクタを使用してよい。どのようなファクタを使用するかはカギ情報KEYによって指示される。この場合も、エンコードアルゴリズムは、前記式1と同様のものを使用してよい。その場合、「3!」通りの値を持つ付属情報Yを透し情報として埋め込む場合は、前記式1でB=3である。つまり、同時発音されるノート数が3個以上の演奏データグループに対してエンコード処理がなされる。
【0065】
図8のエンコード処理の仕方は基本的には図4あるいは図6と同様である。まず、ステップ160では、埋め込むべき複数(p個)の付属情報Y(1)〜Y(p)と使用するカギ情報KEYとを入力する。次に、ステップ161では、エンコード処理すべき1つの付属情報Yを特定する順序数iを初期値1に設定する。次に、ステップ162では、主要情報つまり演奏データのアドレスを歩進する。次に、ステップ163では、歩進されたアドレスに対応する演奏データが同時発音されるべき3音以上のノートに該当するかを調べるNOであれば、ステップ162に戻り、演奏データのアドレスを歩進する。こうして、同時発音されるべき3音以上のノートに該当するアドレスまで歩進してくると、ステップ163がYESとなり、ステップ164で、これら3音以上の同時発音されるべきノートの演奏データを取り出す。
【0066】
次に、ステップ165では、B=3として、上記式1の順位0に従うエンコード演算(Y(i) mod3)をi番目の付属情報Y(i)(最初はY(1))に対して行い、その解つまり余りとしてx3を得る。次のステップ166では、ステップ164で取り出した同時発音されるべき3音以上のノートのうち、カギ情報KEYによって定まる最初の順位(上記式1の順位0)のノートの配列順序を全体のx3番目に設定する。
【0067】
次に、ステップ167にて、前記付属情報Y(i)が「3」以上であるか否かを判定する。Y(i)が「3」以上であれば、ステップ167にて「YES」と判定して、プログラムをステップ168〜170に進める。ステップ168においては図3のステップ135と同様に上記式1の順位1のエンコードアルゴリズムに従う演算を行う。すなわち、Y(i)を「3」で割った商の整数部(これをy3で示し、y3=Y(i) div3である)を求め、該商の整数部y3を「2」で割り、その解つまり余りx2を求める。すなわち、x2=y3mod2であり、これはB=3のときの上記式1の順位1の演算の解に相当する。そして、次のステップ169においては、ステップ164で取り出した同時発音されるべき3音以上のノートのうち、カギ情報KEYにより定まる2番目の順位(上記式1の順位1)のノートの配列順序を残りの(決定済の順位x3を除く)x2番目に設定する。ステップ170では、ステップ164で取り出した同時発音されるべき3音以上のノートのうち、カギ情報KEYにより定まる3番目以降の順位の残りのノートを、カギ情報KEYにより定まる順位(決定済の順位x3,x2を除く)に設定する。すなわち、3番目の順位(上記式1の順位2)のノートの配列順序は残りの(決定済の順位x3,x2を除く)0番目に設定する。もし、4番目以降の順位のノートがあれば、さらに下位の順位に設定される。なお、付属情報Y(i)が「3」未満であれば、ステップ167はNOであり、ステップ171に行き、残りのエンコードアルゴリズム演算(ステップ168〜170)をあえて実行することなく、残りのノートをカギ情報KEYに従う残りの順位に順次設定する。
【0068】
ステップ172では、順序数iが最大値p以上かを調べ。NOであればステップ173でiを+1増加してステップ162に戻る。こうして、次に埋め込むべき付属情報Y(i)に関してステップ162〜172の処理を繰り返す。やがて、i=pとなって、すべての付属情報Y(i)についての埋め込みを終了すると、ステップ172がYESとなり、このエンコード処理を終了する。
【0069】
ここで理解を深めるために、同時発音されるべき3音以上のノートの配置順序変更の具体例を示す。同時発音されるべきノートがC3,E3,G3であり、カギ情報KEYが「ノート番号の小さい順」であるとし、埋め込むべき付属情報Y(1)の値が「5」であるとすると、ステップ165でのx3=5mod3=2から、最初の順位のノートC3の配置順序が順位2(全体の3番目)に設定され(ステップ166)、ステップ168でのx2=1mod2=1から、次の順位のノートE3の配置順序が順位1(残りの2番目で、全体の2番目)に設定され(ステップ169)、最後の順位のノートG3の配置順序が順位0(残りの1番目で、全体の1番目)に設定される(ステップ170)。この場合、埋め込むことが可能な付属情報Y(1)のとり得る値は「3!」通りの値である。
【0070】
次に、図8の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、各付属情報Y(1)〜Y(p)をデコードする例について、図9を参照して説明する。
【0071】
図9のデコード処理の仕方は基本的には図5,図7と同様に、図8のエンコードアルゴリズムの逆算を行うことからなる。まず、デコード用のカギ情報KEYを取得し、次に、順序数iを初期値1にセットする(ステップ180,181)。それから、ステップ182,183,184では図8のステップ162,163,164と同様の処理を行い、3音以上の同時発音されるべきノートの演奏データを取り出す。それから、カギ情報KEYによって定まるノートの順に、その配置順位x3,x2を順次検出する(ステップ185,186)。この場合も、配置順位x3,x2とは絶対的な順位ではなく、それぞれの段階での残りのデータにおける相対的な順位である。ステップ187では、これらを用いて前記式2と同様のエンコードアルゴリズムの逆算を行うことで、透し情報として埋め込まれた付属情報Y(i)の値をデコードする。すなわち、
Y(i) =x3+(3・x2)+0
を実行する。例えば、前述のエンコード例の場合、最初の順位のノートC3の配置順序が順位2であることから、x3=2が検出され、2番目の順位のノートE3の配置順序が順位1であることから、x2=1が検出される。よって、
Y(i) =2+(3・1)=5
により、Y(i)=5のデコード結果が得られる。ステップ188,189は図8のステップ172,173と同じであり、すべての付属情報Y(1)〜Y(p)をデコードし終えるまで、ステップ182〜187の処理を繰り返す。
【0072】
上記例のほかに、再生演奏に悪影響を与えない主要情報中の特定のデータの配置順序を変更することで、所望の付属情報に対応する透し情報を埋め込むことができる。再生演奏に悪影響を与えない主要情報中の特定のデータの例としては、例えばMIDIのメタイベントデータがある。MIDI演奏データ中において、メタイベントデータとして著作権情報が記録されることがよく行われる。その場合、複数種類のデータ、例えばコピーライト表示であることを示す文字「C」のデータと、著作年を示す日付データと、著作者を示すデータなどが、別々のメタイベントデータとして、MIDI演奏データ中に適当な順序で適宜記憶される。この複数種類のメタイベントデータの配置順序を、適宜のカギ情報KEYに従って、所望の付属情報Yの値に応じて再配置することで、透し情報として埋め込むことができる。そのためのエンコードアルゴリズムは基本的には図8と同様のものを使用できる。
【0073】
図10は著作権情報のメタイベントの配置順序を変更するためのエンコードアルゴリズムの一例を示す図であり、図8と実質的に同様の処理を行うステップは同一番号を付し、説明を省略する。図10の例における図8に対する変更箇所を説明すると、ステップ160はステップ160’に変更され、1つの付属情報Yを埋め込むだけとするので、付属情報Yは1つだけ入力する。これに伴い、図8におけるステップ161,172,173は図10では省略されている。ステップ163’では演奏データが「著作権情報のメタイベントか?」を判定する。YESであれば、ステップ164’で著作権情報に関する各種メタイベントデータを取り出す。例えば、上記のように、文字「C」のデータと、著作年を示す日付データと、著作者を示すデータ、の3種類のデータを取り出す。ここで、カギ情報KEYが指定する所定の順位は、「C」データ、日付データ、著作者データ、の順であるとする。ステップ166’では、最初のメタイベントデータ(「C」データ)についての順位x3を設定する。ステップ169’では、2番目のメタイベントデータ(日付データ)についての残りのうちの順位x2を設定する。ステップ170’では、3番目のメタイベントデータ(著作者データ)についての順位を残りのうちの順位0に設定する。
【0074】
前述と同様に、埋め込むべき付属情報Yの値が「5」であるとすると、ステップ165でのx3=5mod3=2から、最初のメタイベントデータ(「C」データ)についての配置順序が順位2(全体の3番目)に設定され(ステップ166’)、ステップ168でのx2=1mod2=1から、次のメタイベントデータ(日付データ)の配置順序が順位1(残りの2番目で、全体の2番目)に設定され(ステップ169’)、最後の順位のメタイベントデータ(著作者データ)の配置順序が順位0(残りの1番目で、全体の1番目)に設定される(ステップ170’)。この場合も、埋め込むことが可能な付属情報Yのとり得る値は「3!」通りの値となる。
【0075】
図10の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には図9の場合と同様に、図10のエンコードアルゴリズムの逆算を行えばよい。このデコード処理については、図9の説明を援用し、詳細説明を省略する。
【0076】
更に、再生演奏に悪影響を与えない主要情報中の特定のデータの配置順序を変更することで、所望の付属情報に対応する透し情報を埋め込むことが可能な、再生演奏に悪影響を与えない主要情報中の特定のデータの別の例としては、例えば楽音の発音中に設定変更しても発音中の音に影響を与えない「コントロールデータ」またはMIDIの「プログラムチェンジ」データなどがある。この「コントロールデータ」またはMIDIの「プログラムチェンジ」データで例えば音色を設定変更する場合、或る楽音の発音中のタイミングで設定変更指示したとしても該発音中の楽音の音色を設定変更することにはならず、次に発音開始する楽音からその音色を変更することになる。従って、この「コントロールデータ」またはMIDIの「プログラムチェンジ」データが演奏シーケンスにおいて挿入されるタイミングは、或る第1の楽音の発音中のタイミングで挿入する場合と、その発音終了後から次の第2の楽音の発音開始前までのタイミングで挿入する場合とでは、再生演奏に対する影響に変わりはない。従って、この「コントロールデータ」またはMIDIの「プログラムチェンジ」データの変化イベントを、或る第1の楽音の発音中のタイミングで挿入するか、または、その発音終了後から次の第2の楽音の発音開始前までの間のタイミングで挿入するか、のどちらかで行うかにによって1ビットの付属情報Yを、再生演奏に影響を与えることなく、埋め込むことができる。このデコードは、「コントロールデータ」またはMIDIの「プログラムチェンジ」データの変化イベントが、或る第1の楽音の発音中のタイミングで挿入されている場合は「0」を出力し、その発音終了後から次の第2の楽音の発音開始前までの間のタイミングで挿入されている場合は「1」を出力する、というやり方で処理できる。
【0077】
〔第2実施形態〕
次に、本発明の第2実施形態について説明する。この第2実施形態は、演奏データの値を操作することで所望の付属情報Yの電子的透しを埋め込むようにしたものであり、特に、複数の演奏データの時間情報の変更状態の組み合わせで、所望の付属情報Yの電子的透しを埋め込むようにしたものである。具体的には、複数の異なる種類の音源設定情報の時間情報の変更状態の組み合わせで、所望の付属情報Yの電子的透しを埋め込むようにしている。
エンコードアルゴリズムの一例を次に示す。
【0078】
対象となる複数の異なる種類の音源設定情報は、音色番号データTCN(MIDIでいうプログラムチェンジに対応)、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPの5種類であるとする。ただし、これらの音源設定情報は初期設定用(発音開始以前)のものに限らず、演奏シーケンス中に挿入されたものをも対象に含んでいてよく、イベント間の時間間隔を指示する時間情報(インターバルデータ△T)を伴っているものとする。
【0079】
まず、第1のカギ情報KEY1により、各種音源設定情報の順位を設定する。以下では、TCN、VOL、PAN、EXP、DMPの順位が設定されているものとして説明を進める。
【0080】
次に、第2のカギ情報KEY2により、時間情報(インターバルデータ△T)を変更するために使用する変更差分値△dの分解能nを設定する。一例として、時間情報の変更を微小値に押さえるために、分解能n=3として、変更差分値△dのとりうる値を、+1,0,−1の3種類とすると有利であり、以下ではそのように設定されているものとして説明を進める。
【0081】
次に、第3のカギ情報KEY3により、時間情報(インターバルデータ△T)についての関数f(m)=n’を定義する。ここで、mは時間情報(インターバルデータ△T)の値であり、0≦n’<nとする。一例として、f(m)は、
f(m)=m mod n
であるとして、以下、説明を進める。すなわち、時間情報(インターバルデータ△T)の値「m」を第2のカギ情報KEY2の値「n」で割った商の余りが、f(m)である。
【0082】
次に、第1のカギ情報KEY1によって設定された順で、各種音源設定情報毎の時間情報(インターバルデータ△T)の変更目標余り値d1,d2,d3,d4,d5を求める演算を、埋め込むべき付属情報Yの値に応じて、下記式3のエンコードアルゴリズムに従って行う。
(式3)
順位0(TCN):Ymod n=d1
順位1(VOL):(Ydiv n) mod n=d2
順位2(PAN):((Ydiv n) div n) mod n=d3
順位3(EXP):(((Ydiv n) div n) div n) mod n=d4
順位4(DMP):((((Ydiv n) div n) div n) div n) mod n=d5
【0083】
式における演算子の意味は、既に説明したものと同じであり、演算子「mod」は割算の商の余りを解として求めることを意味し、演算子「div」は割算の商の整数部を解として求めることを意味する。例えば、「Ymod n」は、付属情報の値Yを第2のカギ情報KEY2の値n(好適にはn=3)で割った商の余りである。また、「(Ydiv n) mod n」は、値Yを値nで割った商の整数部(Ydiv n)を、値nで割った商の余りである。また、「((Ydiv n) div n) mod n」は、値Yを値nで割った商の整数部(Ydiv n)を更に値nで割り、その商の整数部((Ydiv n) div n)を、値nで割った商の余りである。
上記式3において、n=3の場合、各変更目標余り値d1,d2,d3,d4,d5の値は、「0」,「1」,「2」のいずれかの値をとる。
【0084】
上記各データTCN,VOL,PAN,EXP,DMPのオリジナルの時間情報(インターバルデータ△T)の値「m」を、それぞれm1,m2,m3,m4,m5で示すと、夫々をn=3で割ったときの余りが、上記各変更目標余り値d1,d2,d3,d4,d5の値になるようにするには、変更目標余り値d1,d2,d3,d4,d5の値が「0」のときは変更差分値△d1,△d2,△d3,△d4,△d5として「0」をオリジナル値m1,m2,m3,m4,m5に加算し、変更目標余り値d1〜d5の値が「1」のときは変更差分値△d1〜△d5として「+1」をオリジナル値m1〜m5に加算し、変更目標余り値d1〜d5の値が「2」のときは変更差分値△d1〜△d5として「−1」をオリジナル値m1〜m5に加算すればよい。
【0085】
すなわち、上記各データTCN,VOL,PAN,EXP,DMPの変更された時間情報(インターバルデータ△T)の値「m」を、それぞれm1’,m2’,m3’,m4’,m5’で示すと、下記式4に従って変更演算を行うことで求められる。
(式4)
TCN: m1’=m1+△d1
VOL: m2’=m2+△d2
PAN: m3’=m3+△d3
EXP: m4’=m4+△d4
DMP: m5’=m5+△d5
以上のようなエンコード処理を実現しうるように、適宜、プログラムを組めばよい。図11は以上のようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ190では、埋め込むべき付属情報Yと上記カギ情報KEY1,KEY2,KEY3を入力する。ステップ191では、第1のカギ情報KEY1によって設定された順で、各種音源設定情報毎の時間情報(インターバルデータ△T)の変更目標余り値d1,d2,d3,d4,d5を求めるための上記式3のエンコードアルゴリズムに従う演算を、第2のカギ情報KEY2によって指定された値nを用いて、埋め込むべき付属情報Yの値に応じて、行う。次のステップ192では、求められた各変更目標余り値d1〜d5の値から、対応する変更差分値△d1〜△d5を求める。すなわち、上述の通り、d1〜d5が「0」なら△d1〜△d5は「0」、「1」なら「+1」、「2」なら「−1」である。次のステップ193では、演奏データの先頭から(若しくは所定の範囲から)上記各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)のオリジナル値m1〜m5をそれぞれ取り出す。ステップ194では、上記式4に従って、上記各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)のオリジナル値m1〜m5に上記変更差分値△d1〜△d5をそれぞれ加算し、それぞれの時間情報(インターバルデータ△T)の変更値m1’〜m5’を求める。そして、前記ステップ193で取り出した各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)を変更値m1’〜m5’で置き換える。
【0086】
次に、図11の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例について、図12を参照して説明する。図12のデコード処理の仕方は基本的には上記各デコード処理例と同様に、図11のエンコードアルゴリズムの逆算を行うことからなる。まず、デコード用のカギ情報KEY1,KEY2,KEY3を取得する(ステップ195)。それから、ステップ196では、演奏データの先頭から(若しくは所定の範囲から)上記KEY1で指定された順位の各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)の値m1’〜m5’をそれぞれ取り出す。ステップ197では、各値m1’〜m5’を変数mにあてはめて、かつKEY2で指定された値nを用いて、KEY3で指定された関数
f(m)=m mod n
をそれぞれ演算し、それぞれの余り値d1〜d5を求める。ステップ198では、上記式3のエンコードアルゴリズムの逆算を行い、下記式5のように、付属情報の値Yをデコードする。
(式5)
Y=d1+(n・d2)+(n・n・d3)+(n・n・n・d4)
+(n・n・n・n・d5)
ここでエンコードの具体例として、Y=86、n=3のときの上記式3に従う各変更目標余り値d1〜d5と、変更差分値△d1〜△d5とを示すと、下記のようである。
TCN: d1=86 mod 3=2, △d1=−1
VOL: d2=28 mod 3=1, △d2=+1
PAN: d3=9 mod 3=0, △d3=0
EXP: d4=3 mod 3=0, △d4=0
DMP: d5=1 mod 3=1, △d5=+1
また、この具体例のデコード時においては、前記関数
f(m)=m mod n
に基づく演算で求まる各余り値d1〜d5は、d1=2、d2=1、d3=0、d4=0、d5=1である。よって、上記式5のデコード演算は、
Y=2+(3・1)+0+0+(3・3・3・3・1)=86
となり、付属情報Yの値86をデコードすることができる。
【0087】
このようにして、複数の異なる種類の音源設定情報の時間情報の変更状態の組み合わせの形態で、所望の付属情報Yの電子的透しが埋め込まれる。これによれば、主要情報における複数の異なる種類の音源設定情報(TCN,VOL,PAN,EXP,DMP)の時間情報を付属情報Yの値に応じて変更し、これら音源設定情報の時間情報の変更状態の組み合わせの形態で付属情報Yの電子的透しを埋め込むことを特徴としており、複雑なエンコード化形態をとるため、不正利用者による情報改竄がしにくいものとなる。また、音源設定情報(TCN,VOL,PAN,EXP,DMP)の時間情報は、楽音発音指示(ノートオンイベント)等の時間情報とは異なり、その多少の変化は音楽再生演奏に影響を与えることはない。また、実施例では、時間変更量は+1,0,−1のいずれかであり、僅かな量であるから、ほとんど気付かないほどのわずかな時間変化である。また、正当利用者による演奏データ編集の際にも音源設定情報の時間情報の変更はそう頻繁に行われるものではないため、無意識的に付属情報を変更することも起こりにくい。この場合も、付属情報Yとして埋め込む情報は1文字のアスキーコードに限らず、複数の文字分の任意の文字情報や、図形情報その他の適宜の情報を埋め込むことができるのは勿論である。例えば、15個の各音源チャンネル0〜8,10〜15のそれぞれについて、各音源設定情報の配置順序を上記に従ってエンコードすることで、15種類(15文字)の付属情報を埋め込むことができる。また、演奏途中の箇所で、各音源設定情報を挿入し、その配置順序を上記に従ってエンコードすることで、更に埋め込む付属情報数を増すことができる。なお、各チャンネルに埋め込まれた付属情報同士の連結の仕方は適宜定めてよく、また、連結の仕方を示すカギ情報を適宜提供するようにしてもよい。例えば、チャンネル番号順、各チャンネルに割り当てられている音色番号順、各チャンネル毎の演奏データのノート番号の平均値の順、各チャンネル毎の演奏データのキーオンイベント数の順、など適宜の連結の仕方があり、どの連結を採用すべきかはカギ情報で指示する。
【0088】
上記第2実施形態の変形例として、複数の異なる種類の音源設定情報の時間情報を変更することに限らず、その他の演奏データの時間情報を変更するようにしてもよい。例えば、同一種類の複数の楽音制御情報(例えばMIDIのコントロールチェンジデータ)の時間情報を、上記実施例と同様の手法で微妙に変更するようにエンコードしてもよい。例えば、演奏シーケンス順に5個のコントロールチェンジデータを対象とすることを、第1のカギ情報KEY1によって順位指定する。そして、これらの同一種類のコントロールチェンジデータのそれぞれの時間情報(インターバルデータ△T)を、上記第2実施形態で示した式3及び式4と同様のアルゴリズムでエンコード処理することができる。この場合、同一種類に限らず、任意の種類(異なる種類が含まれていてもよい)の複数の楽音制御情報(コントロールチェンジデータ)を対象にして、演奏シーケンス順に5個のコントロールチェンジデータを対象とすることを、第1のカギ情報KEY1によって順位指定し、これらに対して上記と同様のエンコード処理を行うようにしてもよい。なお、この実施例では、音源設定情報(例えばプログラムチェンジデータ)と楽音制御情報(例えばコントロールチェンジデータ)とを区別して説明しているが、特に区別しなくてもよい。すなわち、音源設定情報も楽音制御情報も、楽音の設定・制御に使用れさる情報である。
【0089】
更に、上記第2実施形態の別の変形例として、例えば、ノートオンイベントからノートオフイベントまでの時間情報(デュレーションタイムといわれる時間)を、上記実施形態と類似のアルゴリズムに従って変更することで、上記実施形態と同様に任意の付属情報を埋め込むようにすることができる。デュレーションタイムの変更は、+1や−1程度の多少の変更では、あまり気付かれないので、或る程度のデータ変更が許容される。その場合、第1のカギ情報KEY1で指定する順位は、演奏データの先頭から(あるいは所定の範囲での)所定数例えば5個のノートオンイベントの発生順を指定する等が考えられる。すなわち、5個のノートオンイベントの各音に対して順位0〜4を付与し、前記式3に従うエンコード演算を行う。それによって求めた各変更目標余り値d1〜d5に応じて、当該各5個のノートオンイベントに対応する音のオリジナルのデュレーションタイムm1〜m5を前記式4に従って変更すればよい。演奏データ中には、多数の発音イベントがあるので、この変形例によれば、埋め込むことのできる付属情報量が増す。なお、演奏データ中にデュレーションタイムのデータを直接的に有している場合は、そのデュレーションタイムのデータを変更すればよい。演奏データ中にデュレーションタイムのデータを直接的に有していない場合は、ノートオフイベントのタイミングを変更することで、その前のノートオンイベントからノートオフイベントまでの時間間隔つまりデュレーションタイムを変更することができるので、そのようにすればよい。
〔第3実施形態〕
次に、本発明の第3実施形態について説明する。この第3実施形態は、上記第2実施形態と同様に演奏データの値を操作することで所望の付属情報Yの電子的透しを埋め込むようにしたものであるが、例えばMIDIのランニングステータスのような特殊なステータスデータの使用/不使用をコントロールすることで、所望の付属情報Yの電子的透しを埋め込むようにしたものである。
【0090】
例えば、1つのMIDIメッセージはステータスバイトとデータバイトとからなり、ステータスバイトは当該イベントのステータスを示すステータス情報を含んでいる。MIDIのステータスの1つとしてランニングステータスがあることが知られている。MIDIのランニングステータスとは、演奏シーケンスの中の或るイベントのステータスがその直前のイベントのステータスと同じ場合はステータス情報を省略し、そのようにステータス情報を省略することによって直前のイベントステータスと同じステータスであることを示すものである。このランニングステータスは使用してもしなくても、音楽演奏の遂行に影響を与えるものではない。すなわち、ランニングステータスを使用できる箇所でランニングステータスを使用せずに、直前のイベントのステータスと同じステータスを示すステータス情報を当該イベントに持たせるようにしても、音楽再生演奏の遂行に変わりはない。このように、ランニングステータスの使用/不使用は音楽演奏の遂行に影響を与えないので、このランニングステータスの使用/不使用に応じて音楽演奏に悪影響を与えることなく、1ビットの電子的透し情報を埋め込むことができる。
【0091】
図13はこのようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ200では、埋め込むべき付属情報Yとカギ情報KEYを入力する。このエンコードアルゴリズムは比較的単純であるためカギ情報KEYは必須ではないが、例えば、演奏データの特定範囲についてエンコード処理を施す場合に、その範囲をカギ情報KEYで指定するようにすればよい。ステップ201では、演奏データ(主要情報)からランニングステータスを使用している箇所または使用可能な箇所を検出する。次のステップ202では、当該検出箇所の演奏データの内容を、付属情報Yの値(1または0)に応じて、ランニングステータスの使用又は不使用となるように、変更(設定)する。例えば、Y=1であれば、ランニングステータスを使用するようにデータ変更(設定)し、Y=0であれば、ランニングステータスを使用しないようにデータ変更(設定)する。
【0092】
このように、ランニングステータスの使用/不使用に応じて音楽演奏に悪影響を与えることなく、1ビットの電子的透し情報を埋め込むことができる。基本的には、1ビットの電子的透し情報を埋め込むだけであるが、各チャンネル毎に、あるいは演奏シーケンスの所定範囲毎に、それぞれ1ビットの電子的透し情報を埋め込むことで、合計複数ビットの付属情報の透し埋め込みを行うことができる。その場合、付属情報の各ビット同士の連結の仕方は、前述と同様に、種々のやり方を採用することができる。このように、この第3実施形態によれば、電子的透し情報の埋め込み形態の多様化に役立てることができる。多様な埋め込み形態が提供されることにより、それらを組み合わせることで、見破られにくい複雑なエンコード化処理を行うことができるので、有利である。
【0093】
図13の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には上記各デコード処理例と同様に、図13のエンコードアルゴリズムの逆手順を行うことからなる。そのデコード処理プログラムの一例を示すと図14のようである。まず、適宜の手段によりカギ情報KEY(もしあれば)を取得し(ステップ203)、これに基づきエンコード対象範囲の演奏データから、ランニングステータスの使用箇所または使用可能箇所を検出する(ステップ204)。該検出箇所でランニングステータスが使用されていれば、付属情報Yの値として「1」をデコードし、ランニングステータスが使用されていなければ、付属情報Yの値として「0」をデコードする(ステップ205)。
【0094】
ランニングステータスに限らず、当該ステータス情報の使用/不使用が再生演奏に重大な影響を与えない特定のステータスがあれば、その特定のステータスの使用/不使用をコントロールすることで、上記実施例と同様に、1ビットの付属情報Yの電子的透しを埋め込むことができる。例えば、そのような特定のステータスとして、ノートオフステータスがある。
【0095】
〔第4実施形態〕
次に、本発明の第4実施形態について説明する。この第4実施形態は、上記第2及び第3実施形態と同様に主要情報中のデータの値を変更操作することで所望の付属情報Yの電子的透しを埋め込むようにしたものであるが、例えばMIDIのメタイベントのような非演奏データに含まれるテキストデータのスペース数を操作することで、所望の付属情報Yの電子的透しを埋め込むようにしたものである。
MIDIメッセージでは、音楽演奏を直接的にコントロールする演奏データのイベントデータのほかに、メタイベントといわれる非演奏データのイベントを適宜挿入し得る。このメタイベントとしては、前述のような著作権情報のテキストや、その他の任意のテキストを埋め込むことができる。このテキストデータ中のスペースを多少増減しても、再生演奏にまったく影響を与えないばかりか、該テキストの実質的内容に対しても影響を与えない。よって、テキストデータ中のスペース数を付属情報の値に応じて設定するデータ操作を行うことにより、何ビットかの付属情報の電子的透しを埋め込むことができる。
【0096】
図15はこのようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ206では、埋め込むべき付属情報Yとカギ情報KEYを入力する。このエンコードアルゴリズムは比較的単純であるためカギ情報KEYは必須ではないが、例えば、演奏データの特定範囲についてエンコード処理を施す場合に、その範囲をカギ情報KEYで指定するようにすればよい。ステップ207では、演奏データ(主要情報)からテキストデータを含むメタイベントを検出する。次のステップ208では、当該検出したメタイベントに含まれるテキストデータ中の合計のスペース数sを、付属情報Yの値に応じた数に設定する。例えば付属情報Yがバイナリ3ビットの値をとる場合、合計スペース数sとしては0〜7のうつのいずれかの数に設定する。例えば、付属情報Yの値が「4」であれば、当該メタイベント中のテキストデータのスペース数の合計が「4」になるように、スペースデータの設定(追加又は削除)を行う。
【0097】
このように、テキストメタイベント中の合計スペース数を、付属情報Yの値に応じて設定することにより、バイナリで何ビットかのデータからなる付属情報Yの電子的透しを埋め込むことができる。この場合も、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0098】
図15の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には上記各デコード処理例と同様に、図15のエンコードアルゴリズムの逆手順を行うことからなる。そのデコード処理プログラムの一例を示すと図16のようである。まず、適宜の手段によりカギ情報KEY(もしあれば)を取得し(ステップ209)、これに基づきエンコード対象範囲の演奏データから、テキストメタイベント(非演奏データ)を検出する(ステップ210)。該検出したテキストメタイベント中の合計スペース数sを検出する(ステップ211)。検出した合計スペース数sが、付属情報Yのデコード出力に相当する。
【0099】
上記第4実施形態の変形例として、テキストメタイベント(非演奏データ)中の各語間のスペース数を1又は2に設定することにより、バイナリ1ビットの付属情報Yを埋め込むことが可能である。例えば、Y=0のとき語間スペース数を1個に設定し、Y=1のとき語間スペース数を2個に設定する。この変形例は、テキストメタイベント中の合計スペース数sによるエンコード処理と組み合わせて適用し、埋め込み可能な付属情報Yのビット数を増すことができる。その場合、例えば、語間スペース数が1個に設定されているときは合計スペース数sは通常通り計数するが、語間スペース数が2個に設定されているときは合計スペース数sは実際の合計スペース数の1/2の値とする、といった変形を更に加えることが可能である。
【0100】
〔第5実施形態〕
次に、本発明の第5実施形態について説明する。この第5実施形態は、演奏データの中に、音楽演奏再生に対して実質的な悪影響を与えないダミーデータを挿入することで、該ダミーデータに応じた所望の付属情報Yの電子的透しを埋め込むようにしたものである。
一例として、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加することでダミーデータの付加を行う。例えば或るエフェクトに変更せよというような指示を行う演奏制御データは、同一のものが連続していても、一旦そのエフェクトに変更されると次は同じエフェクトが維持されるだけであり、音楽演奏には悪影響を与えない。よって、このような演奏制御データはダミーデータとして使用することができる。MIDIのメタイベントのような非演奏データも、同一のものが連続していても同じメタイベント処理が繰返されるだけであり、音楽演奏には悪影響を与えない。従って、この場合も、音楽演奏に悪影響を与えることなく、ダミーデータの有無に応じて1ビットの電子的透しを埋め込むことができる。また、この実施形態も、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0101】
図17はこのようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ212では、埋め込むべき付属情報Yとカギ情報KEYを入力する。このエンコードアルゴリズムは比較的単純であるためカギ情報KEYは必須ではないが、例えば、演奏データの特定範囲についてエンコード処理を施す場合に、その範囲をカギ情報KEYで指定するようにすればよい。また、ダミーデータの対象とするデータを何にするかをカギ情報KEYで指定してもよい。ステップ213では、演奏データ(主要情報)からダミーデータの対象とするデータを検出する。例えば、コントロールチェンジイベント(演奏制御データ)又はメタイベント(非演奏データ)をダミーデータの対象とする。その場合、コントロールチェンジイベント(演奏制御データ)又はメタイベント(非演奏データ)のどちらか一方、あるいは両方を、ダミーデータの対象とするといったことをカギ情報KEYで指定し、ステップ213では指定された対象データを演奏データから検出する。次のステップ214では、検出した対象データの後に同一のデータをダミーデータとして、付属情報Yの値に応じた数だけ追加する。例えばバイナリ1ビットからなる付属情報Yを埋め込む場合は、Y=0のときダミーデータの追加を行わず、Y=1のとき1個のダミーデータを追加する。同一のダミーデータを複数追加するオプションが可能であり、そうすると2ビット以上の付属情報Yを埋め込むことが可能である。
【0102】
図17の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には上記各デコード処理例と同様に、図17のエンコードアルゴリズムの逆手順を行うことからなる。そのデコード処理プログラムの一例を示すと図18のようである。まず、適宜の手段によりカギ情報KEYを取得し(ステップ215)、これに基づき演奏データからダミーデータの対象となるデータ(コントロールチェンジイベント又はメタイベント)を検出し、同一の該対象データが連続しているか、つまりダミーデータが存在するか、を検出する(ステップ216)。ダミーデータが存在していればY=1をデコードし、ダミーデータが存在していなければY=0をデコードする(ステップ217)。
【0103】
この第5実施形態の変形例として、ダミーデータの時間位置を示す時間情報(インターバルデータ△T)を、所望の付属情報Yの値に応じて設定することにより、該時間情報に対応する値の付属情報Yを埋め込むようにしてよい。この実施のためには、例えば図17のステップ212での処理を、適宜複数ビットのデータからなる付属情報Yを入力するように変更し、また、ステップ214での処理を、Yの値が0であればダミーデータを追加せずにそのまま処理を終了させ、Yの値が0よりも大きければダミーデータを追加するとともに、該ダミーデータのイベントタイミングつまりインターバルデータ△Tを、Yの値に対応する値に設定するように変更する。この場合、図18でのデコード処理は、ステップ217での処理を、ダミーデータが存在していれば、そのイベントタイミングまでの時間つまりインターバルデータ△Tを取り出して、付属情報Yのデコード値として出力する、というように変更すればよい。
【0104】
この第5実施形態の別の変形例として、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルに設定し、設定したダミーチャンネルに応じた値の電子的透しを埋め込むようにしてもよい。例えば、音源チャンネル0〜8,10〜15の15チャンネルのいずれかをダミーチャンネルに設定することで、付属情報Yの電子的透しを埋め込む場合は、15通りの値をとる付属情報Yを埋め込むことができる。例えば、付属情報Yの値が「8」の場合は、チャンネル順位8の音源チャンネル8をダミーチャンネルに設定する。ここで、音源チャンネル8に既に割り当てられていた演奏データがある場合は、該割り当てられていた演奏データの一揃いを、別の空きチャンネルに割当てし直すようにすればよい。このデコード処理は、演奏データの複数チャンネルの中からダミーチャンネルを検出し、このダミーチャンネルのチャンネル順位(使用しないチャンネル9は除外した順位)から付属情報Yの値をデコードすることで行う。なお、ダミーチャンネルの設定の仕方としては、ダミーチャンネルのフラグを立て、また、該チャンネルにノートオンイベントが存在しないように適宜クリアすることで行う。
【0105】
〔第6実施形態〕
次に、本発明の第6実施形態について説明する。この第6実施形態は、主要情報を構成する音楽演奏データのうちの所定のデータについての統計分布パターンを所定のエンコードアルゴリズムに従って、付属情報に応じて、変更することで、この統計分布パターンの変更形態に対応した電子的透しの形態で付属情報を埋め込むようにしたものである。
【0106】
そのエンコード手法の一例を示す。
1楽曲中(又は所定の部分的曲範囲中)の全演奏データのノートオンイベントに含まれるベロシティデータを所定の基準で複数グループに分類し、各グループ毎に所定の統計数値を求め、その統計数値の分布パターンが、埋め込むべき付属情報Yの値に応じて変更・設定されるように、エンコード処理を行う。
【0107】
まず、第1のカギ情報KEY1により、ベロシティデータVelを分類するグループ数nを設定する。一例として、n=4と設定されたとして説明を進める。
【0108】
次に、第2のカギ情報KEY2により、ベロシティデータVelを分類するための関数f(Vel)を定義する。一例として、f(Vel)は、
f(Vel)=Vel mod n …(式6)
であるとして、以下、説明を進める。
ここで、VelはベロシティデータVelの値である。すなわち、ベロシティデータVelの値を第1のカギ情報KEY1が示す値「n」で割った商の余りが、f(Vel)である。n=4の場合、この余り値は4通りの値0,1,2,3をとるので、この余り値に応じて下記表1のようにグループ0〜3に分類する。また、各グループ毎に所定の統計値として、各グループに属するデータ数の比率(これをそれぞれR0%,R1%,R2%,R3%で示す)を求め、これをオリジナル分布パターンOPとする。
【0109】
[表1]
┃ f(Vel) ┃ OP
━━━━━━╋━━━━━━━━━━━╋━━━━━━━━
グループ0 ┃ Vel mod 4=0 ┃ R0%
グループ1 ┃ Vel mod 4=1 ┃ R1%
グループ2 ┃ Vel mod 4=2 ┃ R2%
グループ3 ┃ Vel mod 4=3 ┃ R3%
なお、R0%+R1%+R2%+R3%=100%であり、オリジナル分布パターンOPが完全に平均化された分布を示す場合は、R0%=R1%=R2%=R3%=25%である。求めたオリジナル分布パターンOPは、適宜保存しておき、デコード用のカギ情報KEY3として利用する。
【0110】
このオリジナル分布パターンOPを、4通りの値をとる付属情報Yの値に応じて、4つの変形分布パターンP1,P2,P3,P4のいずれかに変形することで、付属情報Yの電子的透しのエンコードを行う。このエンコードアルゴリズムは下記の通りである。
パターンP1(例えばY=0のとき):
グループ0に対して:+0と+1を半々に行う
グループ1に対して:+0と+1を半々に行う
グループ2に対して:+0と−1を半々に行う
グループ3に対して:+0と−1を半々に行う
上記における「+0と+1を半々に行う」の意味は、当該グループの半分のベロシティデータVelに対して+0を演算し、残り半分のベロシティデータVelに対して+1を演算すること、つまり+0と+1の演算を交互に行なうこと、を意味する。これにより、+0を演算されたベロシティデータVelは当該グループに残るが、+1を演算されたベロシティデータVelは下位(便宜上、グループ番号の小さいものを上位、大きいものを下位という)のグループに移動することになる。例えば、グループ0では、Vel mod 4=0であったところ、Velに+1すると、Vel mod 4=1となり、下位のグループ1に移動することになる。勿論、この+1又は−1の演算は、ベロシティデータVelの最下位ビットに対してなされるので、ベロシティデータVelの変更量はごく僅かである。なお、音量データの最下位ビットの+1又は−1の変動は、ほとんど聴者に変化として知覚されないので、悪影響はまったくない。
【0111】
また、「+0と−1を半々に行う」の意味は、当該グループの半分のベロシティデータVelに対して+0を演算し、残り半分のベロシティデータVelに対して−1を演算することを意味する。これにより、+0を演算されたベロシティデータVelは当該グループに残るが、−1を演算されたベロシティデータVelは上位グループに移動することになる。例えば、グループ3では、Vel mod 4=3であったところ、Velに−1すると、Vel mod 4=2となり、上位のグループ2に移動することになる。
【0112】
その結果、パターン1における各グループの統計値は、オリジナル分布パターンOPに対して下記のように変更されたものとなる。
パターンP1の統計分布(統計値):
グループ0:(R0/2)% → 12.5 %
グループ1:(R0/2)+(R1/2)+(R2/2)% → 37.5 %
グループ2:(R1/2)+(R2/2)+(R3/2)% → 37.5 %
グループ3:(R3/2)% → 12.5 %
なお、上記で →印を付して付記した具体的数字は、R0%=R1%=R2%=R3%=25%と仮定したときの具体的数値である。
【0113】
他のパターン2,3,4のエンコードアルゴリズム及びその結果の各グループの統計分布(統計値)は下記の通りである。
パターンP2(例えばY=1のとき):
グループ0に対して:+0と+1を半々に行う
グループ1に対して:+0と−1を半々に行う
グループ2に対して:+0と−1を半々に行う
グループ3に対して:+0と+1を半々に行う
パターンP2の統計分布(統計値):
グループ0:(R0/2)+(R1/2)+(R3/2)% → 37.5 %
グループ1:(R0/2)+(R1/2)+(R2/2)% → 37.5 %
グループ2:(R2/2)% → 12.5 %
グループ3:(R3/2)% → 12.5 %
パターンP3(例えばY=2のとき):
グループ0に対して:+0と−1を半々に行う
グループ1に対して:+0と−1を半々に行う
グループ2に対して:+0と+1を半々に行う
グループ3に対して:+0と+1を半々に行う
パターンP3の統計分布(統計値):
グループ0:(R0/2)+(R1/2)+(R3/2)% → 37.5 %
グループ1:(R1/2)% → 12.5 %
グループ2:(R2/2)% → 12.5 %
グループ3:(R0/2)+(R2/2)+(R3/2)% → 37.5 %
パターンP4(例えばY=3のとき):
グループ0に対して:+0と−1を半々に行う
グループ1に対して:+0と+1を半々に行う
グループ2に対して:+0と+1を半々に行う
グループ3に対して:+0と−1を半々に行う
パターンP4の統計分布(統計値):
グループ0:(R0/2)% → 12.5 %
グループ1:(R1/2)% → 12.5 %
グループ2:(R1/2)+(R2/2)+(R3/2)% → 37.5 %
グループ3:(R0/2)+(R2/2)+(R3/2)% → 37.5 %
以上のようなエンコード処理を実現しうるように、適宜、プログラムを組めばよい。図19は以上のようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ218では、埋め込むべき付属情報Yと上記第1及び第2のカギ情報KEY1,KEY2を入力する。前述の通り、説明の便宜上、KEY1によって指定されるnは、n=4であるとし、KEY2によって指定されるエンコード関数は前記(式6)のようであるとして、説明を進める。次のステップ219では、各ベロシティデータVelに対して、前記(式6)の演算を行って、前記表1に示すように、各グループ0〜3のいずれかに各ベロシティデータVelを分類する。また、各グループ0〜3毎に所定の統計処理を行って、前記表1に示すように、オリジナル分布パターンを求め、これを第3のカギ情報KEY3として適宜保存する。次に、ステップ220では、付属情報Yの値に応じて、前記変形分布パターンP1〜P4のいずれかを選択し、選択したパターンP1〜P4に従う上記アルゴリズムに従って、各グループ0〜3の各ベロシティデータVelの値を+1又は+0又は−1する演算を行う。こうして、変更されたベロシティデータVelの統計分布パターンは、選択したパターンP1〜P4の上記統計分布に対応する特性を示す。こうして、付属情報Yの値に対応する統計分布パターンを示すように、各演奏データ中のベロシティデータVelの値が、+1又は+0又は−1というわずかな値だけ変更される。
【0114】
次に、図19の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例について、図20を参照して説明する。図20のデコード処理の仕方は基本的には上記各デコード処理例と同様に、図19のエンコードアルゴリズムの逆算を行うことからなる。まず、デコード用のカギ情報KEY1,KEY2,KEY3を取得する(ステップ221)。次に、ステップ222では、演奏データ中の各ベロシティデータVelに対して、前記(式6)の演算を行って、各グループ0〜3のいずれかに各ベロシティデータVelを分類し、更に、各グループ0〜3毎に所定の統計処理を行って、その統計分布を求め。この統計分布が前記変形分布パターンP1〜P4のいずれに該当するかを検出する。このとき、カギ情報KEY3として与えられるオリジナル分布パターンの各統計値R0,R1,R2,R3を必要に応じて利用して、変形分布パターンP1〜P4の検出処理を行う。ステップ223では、検出したパターンP1〜P4に応じて付属情報Yの値をデコードする。
【0115】
このように、第6実施形態によれば、演奏データ中の所定のデータについての統計分布パターンを変更する構成であるため、仮に意図的であるにせよ、または無意識であるにせよ、演奏データの一部が改竄または編集によって変更されたとしても、統計分布パターンが大きく変わる確率は相対的に低いので、不正利用者による情報改竄防止に役立つと共に、正当利用者による無意識的な付属情報の変更にも対処しうるものである。また、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。また、所定のデータの変更量が直接的に電子的透し情報を示しておらず、その統計分布パターンが電子的透し情報を示しているので、所定のデータの変更量は上記実施例のように+1又は−1という僅かなものであり、該所定のデータとして+1又は−1程度の誤差に重要性を持たないものを用いれば、かかるデータ値の僅かな変更はまったく音楽再生演奏に悪影響を及ぼさない。勿論、データ値変更の対象となるデータは、ベロシティデータに限らず、他のデータ(例えば時間情報など)であってもよい。
【0116】
なお、ベロシティデータの一部が編集によって変更されたとしても、オリジナル分布パターンOPをカギ情報KEY3で知らせるようにしているので、図20のデコード処理におけるステップ222で求めた統計分布がいずれの変形分布パターンP1〜P4から大きくかけ離れている場合は、ベロシティデータの一部が編集によって変更されたと認識することができ、かつ、その編集内容もある程度推測することができる。その結果、正しい付属情報Yをデコードすることが可能である。
【0117】
上記第6実施形態に示す統計的エンコード手法は、各チャンネル毎に、あるいは演奏シーケンスの部分的区間毎に、等様々なグループ毎に、それぞれ施すことができ、これによって、複数の異なる付属情報Yを電子的透しとしてそれぞれ埋め込むことができる。また、1つのチャンネル内においても、ノート番号のグループ(つまり鍵域)毎に異なる付属情報Yをそれぞれ埋め込むことができる。どのようなグループ分類に従って複数の付属情報Yがエンコードされているかについては、そのグループ分類法を示す第4のカギ情報KEY4を更にデコード側に提供することで、デコード処理に役立てるようにするとよい。
【0118】
〔第7実施形態〕
次に、本発明の第7実施形態について説明する。この第7実施形態は、主要情報の中に付属情報を電子的透しとして埋め込む(エンコードする)際に、1つの付属情報に関連して複数の電子的透し情報を該主要情報内に埋め込み、互いに関連する複数の電子的透し情報の形態で1つの付属情報の電子的透しを埋め込むことを特徴とするものである。これによって、電子的透しの強化を図ることができ、容易には見破られにくい複雑なエンコード化処理のために役立つ。また、付与可能な1つの付属情報のビット数を増すことができ、付与可能な付属情報の情報量を増すことができる。
【0119】
その第1の例として、1つの付属情報Yを複数の部分(例えば上位ビット部分Yaと下位ビット部分Yb)に分割し、分割された各付属情報部分Ya,Yb毎に、各々の電子的透し情報を主要情報内に埋め込む。この場合、付属情報Yの再生は、主要情報から複数の電子的透し情報(Ya,Yb)をそれぞれデコードし、デコードされた各透し情報に対応する前記分割付属情報部分Ya,Ybを組み合わせることで行う。
その第2の例として、所定の第1のエンコードアルゴリズムに従って付属情報の少なくとも一部を第1の電子的透し情報Yとして主要情報に埋め込む一方で、第1のエンコードアルゴリズムに対応するデコード用カギ情報KEY’を第2の電子的透し情報Y’として主要情報に埋め込む。この場合、付属情報の再生は、主要情報から第2の電子的透し情報Y’をデコードし、デコードされた第2の電子的透し情報をデコード用カギ情報KEY’として使用して主要情報から第1の電子的透し情報Yをデコードすることで行う。
【0120】
図21は、上記第1及び第2の例を合わせて実行するエンコードアルゴリズムを示すプログラム例である。ステップ230では、埋め込むべき付属情報Yと複数のカギ情報K1,K2,K3,K4,K5を入力する。ステップ231では、1つの付属情報Yを複数の部分(例えば上位ビット部分Yaと下位ビット部分Yb)に分割する。ステップ232では、第1のカギ情報K1を用いて、所定のエンコードアルゴリズムA1に従って、1つの分割付属情報部分Yaを主要情報の中に埋め込む(エンコードする)。ステップ233では、第2のカギ情報K2を用いて、所定のエンコードアルゴリズムA2に従って、第3のカギ情報K3を主要情報の中に埋め込む(エンコードする)。ステップ234では、第3及び第4のカギ情報K3,K4を用いて、所定のエンコードアルゴリズムA3に従って、第5のカギ情報K5を主要情報の中に埋め込む(エンコードする)。ステップ235では、第5のカギ情報K5を用いて、所定のエンコードアルゴリズムA4に従って、もう一方の分割付属情報部分Ybを主要情報の中に埋め込む(エンコードする)。こうして、各分割付属情報部分Ya,Ybとカギ情報K3,K5とを、電子的透し情報として主要情報の中に埋め込む(エンコードする)。他のカギ情報K1,K2,K4は、デコード処理時において適宜の手段を介してユーザに提供されるようになっていればよい。なお、各エンコードアルゴリズムA1〜A4は同じアルゴリズムであってもよいし、異なっていてもよい。また、第1乃至第6実施形態として前述したエンコードアルゴリズムを適宜利用してよいのは勿論である。
【0121】
図22は、図21の手法に従って所望の付属情報Yに対応する複数の透し情報を埋め込んでなる主要情報データ群から付属情報Yをデコードする手順を、アルゴリズム結線を示すブロック図によって示す。A1,A2,A3,A4の各ブロックは、上記エンコードアルゴリズムA1〜A4のデコード用アルゴリズムを実行するブロックを示す。すなわち、ブロックA1では、前記エンコードアルゴリズムA1に従って主要情報の中に埋め込まれた分割付属情報部分Yaを、第1のカギ情報K1を用いて、デコードする。ブロックA2では、初期値として与えられる第2のカギ情報K2を用いて、前記エンコードアルゴリズムA2に従って主要情報の中に埋め込まれた第3のカギ情報K3を、デコードする。ブロックA3では、デコードされた第3のカギ情報K3と、別途提供される第4のカギ情報K4とを用いて、前記エンコードアルゴリズムA3に従って主要情報の中に埋め込まれた第5のカギ情報K5を、デコードする。ブロックA4では、デコードされた第5のカギ情報K5を用いて、前記エンコードアルゴリズムA4に従って主要情報の中に埋め込まれたもう一方の分割付属情報部分Ybを、デコードする。こうして、それぞれデコードされた分割付属情報部分Ya,Ybを組み合わせることで、所要の付属情報Yを取得する。
【0122】
なお、図22において、ブロックA4からブロックA2にデータがフィードバックされ、このフィードバックデータがカギ情報K2としてブロックA2で使用されるようになっている。このようにカギ情報をループさせることにより、デコード時におけるカギ情報K2の内容を時間的に変化させ、これに伴い、時間経過に伴い異なる付属情報がデコードされるようにすることができる。
【0123】
図23は、別のデコード手順を示すアルゴリズム結線ブロック図であり、B1,B2,B3,B4の各ブロックでは、それぞれ所定のエンコードアルゴリズムB1〜B4でエンコードされた透し情報をそれぞれデコードするためのアルゴリズムを実行する。すなわち、ブロックB1では、エンコードアルゴリズムB1に従って主要情報の中に埋め込まれていた付属情報Y1を、第1のカギ情報K1を用いて、デコードすると共に、主要情報の中に埋め込まれていた第2のカギ情報K2をデコードする。ブロックB2では、デコードした第2のカギ情報K2と別途提供される第3のカギ情報K3とを用いて、主要情報の中に埋め込まれていた第4のカギ情報K4をデコードする。ブロックB3では、デコードした第4のカギ情報K4を用いて、主要情報の中に埋め込まれていた第5のカギ情報K5をデコードする。また、ブロックB3からB2にカギ情報K3のフィードバックループが形成されている。ブロックB4では、デコードした第5のカギ情報K5と別途提供される第6のカギ情報K6とを用いて、主要情報の中に埋め込まれていた付属情報Y2をデコードする。こうして、2つの付属情報Y1,Y2がデコードされる。なお、図22や図23に示す複数デコードアルゴリズムの相互結線状態を適宜のカギ情報によって設定するようにしてもよい。
【0124】
本発明は、上記各実施例に示した形態に限らず、他の如何なる変形を施した形態でも実施することができる。また、本発明に従うソフトウェアプログラムをコンピュータ又はマイクロプロセッサ又はDSP(ディジタルシグナルプロセッサで実行する形態に限らず、本発明に従うエンコード処理及び/又はデコード処理を実現するようにICあるいはLSIあるいはディスクリート回路群等でハードワイアードロジックで構成されたハードウェア装置又はシステムを用いて、上記各実施例と同等の機能を発揮する装置又はシステムを構成することもできる。
【0125】
上記のすべての実施例に関連して、本発明は、主要情報内に付属情報を組み込んで記憶するための方法又は装置として構成することができ、さらには、その方法を実施するためのプログラムを記録した記録媒体として構成することができ、さらには、その方法に従って記録されたデータ構造を持つデータを記憶した記録媒体として構成することができる。
【0126】
更に、上記のすべての実施例に関連して、本発明は、付属情報を組み込んで記憶してなる主要情報から、該付属情報を抽出し再生するための方法又は装置として構成することができ、さらには、その方法を実施するためのプログラムを記録した記録媒体として構成することができる。
【0127】
勿論、上記のすべての実施例において、図1に示されたハードウェア装置は、パーソナルコンピュータに限らず、マイクロプロセッサ又はDSP等の処理装置を含む他の電子装置・機器によって置き換えることができる。また、音楽演奏の再生機器あるいは電子楽器や楽音の合成/制御処理の分野に限らず、どのような電子情報を取り扱う分野ででも本発明を適用することができる。また、演奏データを取り扱う場合でも、そのデータフォーマットは図3に例示したようなものにはまったく限定されず、如何なるデータフォーマットからなるものに対しても本発明を適用することができる。
【0128】
また、上記各実施例において、必要な付属情報のすべてを主要情報内に組み込む(埋め込む)ことなく、付属情報の一部を主要情報内に組み込む(埋め込む)ようにしてもよいのは勿論である。その場合、主要情報内に組み込まなかった残りの付属情報は、適当な領域に別途記憶しておいてもよい。
【0129】
上記のすべての実施例に関連して、付属情報を組み込んだ状態からなる主要情報を通信ネットワークを介して伝送するようにしてもよい。その場合、受信側では、通信ネットワークを介して伝送されたデータを受信し、受信したデータにおける主要情報からストリーミングデータのままリアルタイムでデコード処理を行うようにしてもよいし、それができない場合は、受信したデータ群を適宜バッファ記憶してからデコード処理を行うようにしてもよい。
【0130】
以上の通り、本発明によれば、主要情報に対する付属情報の埋め込み法に工夫を施したユニークな電子情報処理方法及びシステム並びに記録媒体を提供することができ、オーソライズされていない不正利用者によって見破られることの起こりにくい、従って、不正利用者による意図的な改竄のしにくい、電子情報処理方法及びシステム並びに記録媒体を提供することができ、また、正当利用者による無意識のうちの付属情報の変更も起こりにくいようにした電子情報処理方法及びシステム並びに記録媒体を提供することができる。
【図面の簡単な説明】
【0131】
【図1】本発明の各実施形態に共通のパーソナルコンピュータ装置を示すブロック図。
【図2】(A)はパーソナルコンピュータ装置のエンコード機能を説明するための機能ブロック図、(B)はパーソナルコンピュータ装置のデコード機能を説明するための機能ブロック図。
【図3】演奏データのフォーマット図。
【図4】本発明の第1実施形態に係るエンコードプログラムのフローチャート。
【図5】本発明の第1実施形態に係るデコードプログラムのフローチャート。
【図6】本発明の第1実施形態に係る別のエンコードプログラムのフローチャート。
【図7】図6に対応するデコードプログラムのフローチャート。
【図8】本発明の第1実施形態に係る更に別のエンコードプログラムのフローチャート。
【図9】図8に対応するデコードプログラムのフローチャート。
【図10】本発明の第1実施形態に係る更に他のエンコードプログラムのフローチャート。
【図11】本発明の第2実施形態に係るエンコードプログラムのフローチャート。
【図12】本発明の第2実施形態に係るデコードプログラムのフローチャート。
【図13】本発明の第3実施形態に係るエンコードプログラムのフローチャート。
【図14】本発明の第3実施形態に係るデコードプログラムのフローチャート。
【図15】本発明の第4実施形態に係るエンコードプログラムのフローチャート。
【図16】本発明の第4実施形態に係るデコードプログラムのフローチャート。
【図17】本発明の第5実施形態に係るエンコードプログラムのフローチャート。
【図18】本発明の第5実施形態に係るデコードプログラムのフローチャート。
【図19】本発明の第6実施形態に係るエンコードプログラムのフローチャート。
【図20】本発明の第6実施形態に係るデコードプログラムのフローチャート。
【図21】本発明の第7実施形態に係るエンコードプログラムのフローチャート。
【図22】本発明の第7実施形態に係るデコード処理のアルゴリズム結線例を示すブロック図。
【図23】本発明の第7実施形態に係る別のデコード処理のアルゴリズム結線例を示すブロック図。
【符号の説明】
【0132】
11…CPU、12…ROM、13…RAM、14…内部記憶装置、15…ドライブユニット、16…入力装置、21…通信インターフェース、22…音源回路、30A…エンコーダ、30B…デコーダ。
【技術分野】
【0001】
本発明は、主要情報(例えば、演奏データ、映像データ、波形データなど)中に、付属情報(例えば、著作権表示情報、曲名情報、作曲者情報、作成年月日情報、歌詞情報、ニュース文情報、機種名情報、IDなどのテキストデータ)を電子的透し情報として埋め込む、及び/又は主要情報中に電子的透し情報として埋込まれた付属情報を取出す電子情報処理方法及び装置若しくはシステムに関し、更にはこの方法を実現するためのプログラムを記録したコンピュータ読取り可能な記録媒体に関する。
【背景技術】
【0002】
従来から、例えば下記特許文献1に示されているように、主要情報としての演奏データの一部を構成するベロシティデータの最下位ビットに、曲名、作曲者等に関する付属情報を埋め込むとともに、同付属情報の埋め込まれた演奏データから付属情報を取り出すことは知られている。
【特許文献1】特開平11−39796号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、上記従来の方法では、付属情報の埋め込み法が比較的単純なために、オーソライズされていない不正利用者によって同方法が見破られて付属情報が意図的に変更されてしまうという問題があった。また、ベロシティデータは比較的変更されやすいデータの一つであるために、正当利用者が演奏データそのものを編集する際などにベロシティデータを変更することにより、該ベロシティデータに埋め込まれた付属情報が無意識のうちに変更されてしまうことが起こり得るという問題もあった。
【0004】
本発明は上述の点に鑑みてなされたもので、主要情報に対する付属情報の埋め込み法に工夫を施したユニークな電子情報処理方法及び装置並びに記録媒体を提供しようとするものである。更に、オーソライズされていない不正利用者によって見破られることの起こりにくい、従って、不正利用者による意図的な改竄のしにくい、電子情報処理方法及び装置並びに記録媒体を提供しようとするものである。また、正当利用者による無意識のうちの付属情報の変更も起こりにくいようにした電子情報処理方法及び装置並びに記録媒体を提供しようとするものである。
【課題を解決するための手段】
【0005】
【0006】
【0007】
【0008】
【0009】
【0010】
【0011】
第1の観点に従う本発明に係る方法は、音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加するステップを具備し、前記主要情報におけるダミーデータに応じた電子的透しを埋め込むことを特徴とする。
【0012】
例えば或るエフェクトに変更せよというような指示を行う演奏制御データは、同一のものが連続していても、一旦そのエフェクトに変更されると次は同じエフェクトが維持されるだけであり、音楽演奏には悪影響を与えない。よって、このような演奏制御データはダミーデータとして使用することができる。メタイベントのような非演奏データも、同一のものが連続していても同じメタイベント処理が繰返されるだけであり、音楽演奏には悪影響を与えない。従って、本願発明によれば、音楽演奏に悪影響を与えることなく、ダミーデータの有無に応じて1ビットの電子的透しを埋め込むことができる。
【0013】
第2の観点に従う本発明に係る方法は、音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータを付加するステップと、前記ダミーデータの時間位置を示す時間情報を、所望の付属情報に応じて設定するステップとを具備し、前記主要情報におけるダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込むことを特徴とする。この場合も、ダミーデータを用いることで音楽演奏に悪影響を与えることなく、電子的透しを埋め込むことができ、また、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0014】
第3の観点に従う本発明に係る方法は、音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加するステップを具備し、付加したダミーチャンネルに応じた電子的透しが前記主要情報に埋め込まれることを特徴とする。この場合も、ダミーデータを用いることで音楽演奏に悪影響を与えることなく、電子的透しを埋め込むことができ、また、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0015】
更に本発明に係る方法は、上記第1乃至3のいずれかの観点に従って電子的透しが埋め込まれた主要情報から前記付属情報をデコードする電子情報処理方法であって、前記エンコードアルゴリズムに対応するデコード用カギ情報を提供するステップと、前記提供されたカギ情報に基づき前記エンコードアルゴリズムの逆算を行うことで、前記主要情報に隠されていた前記付属情報をデコードするステップとを具備することを特徴とする。
【0016】
本発明は、方法の発明として実施することができるのみならず、システムまたは装置の発明として実施することができるし、この方法を実現するためのコンピュータプログラムの形態で実施することもできるし、更にはこのプログラムを記録したコンピュータ読取り可能な記録媒体の発明として実施することもできる。また、この方法に従って電子的透しを埋め込んだデータを記録してなるコンピュータ読取り可能な記録媒体の発明として実施することもできる。
【発明を実施するための最良の形態】
【0017】
以下、本発明の実施の形態を図面を用いて説明する。まず、各実施形態に共通のハード構成について説明すると、図1は、同ハード構成に係るパーソナルコンピュータをブロック図により示している。
【0018】
パーソナルコンピュータ装置は、マイクロコンピュータ本体を構成するCPU11、ROM12及びRAM13を備えている。CPU11は、プログラムを実行するものである。ROM12は、OS等の基本的なプログラムを記憶しておくための記憶エリアである。RAM13は、アプリケーションプログラム等を記憶したり、プログラムの実行に必要な変数を記憶したりするための記憶エリアである。これらのCPU11、ROM12及びRAM13はバス10に接続されており、同バス10には、内部記憶装置14、ドライブユニット15、入力装置16及び表示器17も接続されている。
【0019】
内部記憶装置14は、ハードディスク、同ディスクのためのドライブ装置などで構成されており、大容量のメモリ装置として機能する。ドライブユニット15は、外部記録媒体としてのコンパクトディスク、フレキシブルディスクなどが装着されるようになっており、同外部記録媒体に対してプログラム及びデータの読出し及び書込みを行うものである。入力装置16は、複数の操作子により構成されるキーボード、マウス等などからなり、外部からの指示、データなどを入力するものである。表示器17は、文字、数字などを画面に表示するものである。
【0020】
また、バス10には、通信インターフェース21及び音源回路22も接続されている。通信インターフェース21は、外部の各種機器とケーブル、電話回線などを介してデータ、プログラムなどの授受を行うもので、特にMIDI(Musical Instrument Digital Interface)データの授受を行うインターフェース回路を含んでいる。勿論、MIDIデータに限らずその他の任意のフォーマットのデータを、通信インターフェース21を介して授受することが可能である。音源回路22は、楽音信号を形成して出力する複数の音源チャンネル(本実施形態ではチャンネル番号0〜15の16個のチャンネルを使用するものとする)を有しており、各音源チャンネルは、バス10を介して供給されるキーコードKC、キーオン信号KON、キーオフ信号KOF、各楽音制御パラメータ等の演奏データにしたがって種々の音高を有する各種音色の楽音信号を形成し、左右のオーディオチャンネルに分けてそれぞれ出力する。また、各音源チャンネルは、複数の楽音信号を時分割で合成して出力することがそれぞれ可能である。ただし、一部の音源チャンネル(本実施形態ではチャンネル番号9の音源チャンネル)は種々の打楽器音信号を合成するために設けられていて、この音源チャンネルにはキーコードKCに代えて打楽器番号が供給されるようになっている。この音源回路22には、左右のオーディオアンプ23a,23bを介して左右のオーディオスピーカ24a,24bがそれぞれ接続されている。
【0021】
次に、各実施形態に共通の動作について説明しておく。ユーザは、各実施形態に係るアプリケーションプログラムとしての「エンコードプログラム」及び「デコードプログラム」を記録したコンパクトディスク、フレキシブルディスクなどの記録媒体を準備し、同記録媒体をドライブユニット15に装着して「エンコードプログラム」及び「デコードプログラム」を内部記憶装置14に記憶させる。また、通信インターフェース21を介して「エンコードプログラム」及び「デコードプログラム」を内部記憶装置14に記憶させてもよい。
【0022】
そして、「エンコードプログラム」を起動させると、パーソナルコンピュータ装置は、図2(A)に示すようなエンコーダ30Aとして機能する。エンコーダ30Aは、付属情報Y及びカギ情報KEYを外部から入力し、与えられた主要情報(本件各実施形態では演奏データ)をカギ情報KEYにしたがって加工することにより、付属情報Yを透し情報として主要情報中に埋め込んで出力する。この主要情報内への付属情報Y(透し情報)の埋込処理は、通信インターフェース21を介してストリーミングデータ形式でリアルタイムに供給される主要情報に対してリアルタイムで施すようにしてもよいし、あるいはRAM13又は内部記憶装置14に予め記憶されている主要情報(あるいは外部記録媒体に記録されているものをドライブユニット15を介して読み込んだ主要情報)に対して非リアルタイムで施すようにしてもよい。
【0023】
「デコードプログラム」を起動させると、パーソナルコンピュータ装置は、図2(B)に示すようなデコーダ30Bとして機能する。デコーダ30Bは、カギ情報KEYを外部から入力し、同カギ情報KEYを用いることにより、前記透し情報として付属情報Yの埋込まれた主要情報(本件実施形態では演奏データ)から付属情報Yを取り出して出力する。この透し埋込済みの主要情報からの付属情報Y(透し情報)のデコード処理も、通信インターフェース21を介してストリーミングデータ形式でリアルタイムに供給される主要情報に対してリアルタイムで施すようにしてもよいし、あるいはRAM13又は内部記憶装置14に予め記憶されている主要情報(あるいは外部記録媒体に記録されているものをドライブユニット15を介して読み込んだ主要情報)に対して非リアルタイムで施すようにしてもよい。
【0024】
また、後述する各実施形態では、パーソナルコンピュータを用いてエンコード機能及びデコード機能を実現するようにしたが、同エンコード機能及びデコード機能を実現するプログラムをロード可能なマイクロコンピュータ装置を内蔵したものであれば、音源装置、電子楽器用キーボード装置、シーケンサ、MIDIファイラー、サンプラー、又はこれらの複数を含む電子楽器システムにも適用できるものである。また、後述する各実施形態では、演奏データ中に付属情報Yを埋込むことについてのみ説明するが、本発明は演奏データ以外にも、波形データ、映像データなどの他のデータに埋込む場合にも適用できるものである。
【0025】
〔第1実施形態〕
次に、本発明の第1実施形態について説明する。この第1実施形態は、カギ情報KEYに応じて演奏データにおけるデータ配置を再配置又はデータの順序を変更するタイプのものに属する。
【0026】
演奏データに対する付属情報Yの埋込み(エンコード)及び演奏データから付属情報Yの取出し(デコード)の説明の前に、付属情報Yを埋込む前の演奏データのフォーマット例について説明しておく。1つの音楽演奏に対応する演奏データとしては、図3に示すように、音源チャンネル0〜15(ch0〜ch15)にそれぞれ対応した16チャンネル分の演奏データ0〜15が用意される。すなわち、16チャンネルポリフォニックの自動演奏シーケンスデータである。勿論、必ずしも16チャンネル分の全ての演奏データ0〜15を使用する必要はなく、一部の音源チャンネル用の演奏データだけを使用してもよい(例えば音源チャンネル0〜10だけを使用して合計用の11チャンネル分の演奏データ0〜10だけを用意する)。この実施例において、音源チャンネル0〜8,10〜15(ch0〜ch8,ch10〜ch15)は、前述のように、種々の音高を有する各種音色の楽音信号を合成するものであるので、演奏データ0〜8,10〜15は共通のフォーマットである。しかし、音源チャンネル9(ch9)は打楽器信号を合成するものとしているので、演奏データ9のフォーマットは他と異なる。本実施形態では、このch9の演奏データ9は透し情報を埋め込む対象としないので、同演奏データ9に関してはこれ以上の説明を省略する。
【0027】
各音源チャンネル0〜8,10〜15(ch0〜ch8,ch10〜ch15)に対応して記憶される演奏データ0〜8,10〜15のフォーマットの一例を図3を参照して説明すると、これらの演奏データのフォーマットは、データ列の先頭位置に設けた音源設定情報と、音源設定情報に続いて設けた演奏イベント情報とからなる。音源設定情報は、音源チャンネルの初期の音色、音量、音像位置、エクスプレションペダル位置(これも音量を制御)及び減衰時間(単に減衰時間の長短のみを示す場合もある)をそれぞれ制御するための音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPを含む。例えば、音色番号データTCNの一例を示すと、同データTCNは、ピアノ、ギター等の各種音色を「0」以上の異なる整数によって表すものである。
【0028】
演奏イベント情報は、各楽音の発音開始、発音終了などのイベントを表すイベントデータEVTと、各イベント間のインターバル(相対時間)を表すインターバルデータΔTとからなる。各イベントデータEVTは、楽音の音名(例えばC2,E2など)を表すキーコードKC、楽音の発音開始及び発音終了を表すオン・オフデータON/OFF、鍵タッチの強さを表すベロシティデータVELなどを一組とするものである。なお、同一のタイミングに複数のイベントが発生する場合には、複数のイベントデータEVTが連続して書き込まれている。
【0029】
そして、このような演奏データの再生について簡単に説明しておく。図示しないプログラムの実行により、最初、音源設定情報を構成する音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPが順次読出されて音源回路22の該当音源チャンネルに出力される。音源回路22の該当音源チャンネルは、前記各データに応じて、同チャンネルにおいて発生される楽音信号の初期の音色、音量、音像位置、エクスプレッションペダル位置及び減衰時間を設定する。次に、演奏イベント情報が順次読出される。この場合、次のインターバルデータΔTが見つかるまで、イベントデータEVTの読出しを続け(次のインターバルデータΔTが見つかるまでに複数組のイベントデータEVTがあれば複数組分のイベントデータEVTを読出し)、同読出したイベントデータEVTを音源回路22の該当音源チャンネルに出力する。そして、次のインターバルデータΔTによって表された時間の計数が終了するまで、演奏イベント情報の読出しを中断し、同計数が終了した時点で次の演奏イベント情報の読出しを再開する。したがって、イベントデータEVTは、インターバルデータΔTによって表された時間毎に、順次読出されて音源回路22の該当音源チャンネルに供給される。
【0030】
音源回路22の該当音源チャンネルにおいては、供給されたイベントデータEVTのうちのキーコードKCによって決定された音高の楽音信号を合成する。この合成される楽音信号の発音開始及び発音終了は、前記供給されたイベントデータEVTのうちのオン・オフデータON/OFFにより制御され、個々の音量は同イベントデータEVTのうちのベロシティデータVELによって制御される。また、前記のように合成された各楽音信号の音色、総合的な音量、音像位置、エクスプレッションペダルによる音量及び減衰時間は、前記音源設定情報を構成する音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPによってそれぞれ制御される。ただし、これらデータTCN、VOL、PAN、EXP、DMPのいずれかが演奏データに含まれていて、同いずれかのデータが演奏イベント情報の読出し中に読出された場合には、同読出しの時点から、前記各楽音信号の音色、総合的な音量、音像位置、エクスプレッションペダルによる音量及び減衰時間は、前記演奏イベント情報の読出し中に読出されたいずれかのデータにしたがう。
【0031】
なお、図3は演奏データフォーマットを概念的に示したものであり、詳細なデータフォーマットは、各種の公知の音楽演奏データフォーマットに従う。例えば、各音源チャンネル別に演奏データ記録トラックをそれぞれ有する在来型の自動演奏シーケンスのフォーマットからなる場合は、複数の音源チャンネルに対応してそれぞれ演奏データ記録トラックが存在し、音源チャンネルと記録トラックとが1対1で対応する。よって、その場合は、演奏データのチャンネル配置の変更は、或る音源チャンネルの記録トラックで記憶されている演奏データを別の音源チャンネルの記録トラックに移し替えるか、あるいは音源チャンネルと記録トラックの対応づけを変更する(或る記録トラックに対応づけられるチャンネル番号を別のチャンネル番号に変更する)ことによって行われる。また、MIDIメッセージのようにステータスバイトにチャンネル番号をデータとして含むフォーマットからなる場合は、複数の音源チャンネルの演奏データ(MIDIデータ)は記録トラック別に分かれているというよりはむしろ混在しており、その場合は、演奏データのチャンネル配置の変更は、ステータスバイト中のチャンネル番号を変更することによって行われる。
【0032】
次に、演奏データに対する付属情報Yの埋め込み(エンコード)処理の一例について図4を参照して説明する。図4は、演奏データのチャンネル配置を変更することで、所望の付属情報に対応する透し情報を埋め込む例を示している。また、演奏データのチャンネル配置を変更するエンコードアルゴリズムにおける1つの「カギ」として、音色情報を用いる。すなわち、音色情報に関連づけて演奏データのチャンネル配置を変更するエンコードアルゴリズムを採用するものとする。勿論、エンコードアルゴリズムはこれに限らず、適宜設計してよい。
【0033】
図4において、ユーザが「エンコードプログラム」を起動すると、CPU11は、ステップ100にて「エンコードプログラム」の実行を開始し、ステップ102にて埋め込むべき付属情報Y及びそのデコード用のカギ情報KEYを入力する。これらの情報Y,KEYの入力は、入力装置16による操作入力、通信インターフェース21を介して外部からの入力、外部記録媒体からドライブユニット15を介した入力、内部記憶装置14に記憶しておいたものの読み出しなど、適宜の手段によって行われる。
【0034】
以下の説明では、最も簡単な例として、付属情報Yとして1つの文字コードを示す数値情報を埋め込む例について説明する。理解を容易にするための具体例としては、アスキーコードの文字「Y」を表すデシマル値「86」を埋め込む例を想定する。また、付属情報Yを埋め込むためのエンコードアルゴリズムにおける「カギ」として、各チャンネル0〜8,10〜15の演奏データ0〜8,10〜15内の各音源設定情報中の音色番号データTCNの小さい順に演奏データのチャンネル配置を変更することとする。カギ情報KEYはそのような「カギ」を示す情報である。なお、以降において登場する数値は、特別のことわりがない限り、全てデシマル値とする。
【0035】
なお、以下の説明におけエンコードアルゴリズムの基本は、最大で「B!」通りの値をとりうる数値「A」に応じて、「B」個のデータ群の順列組み合わせの配置を設定する、というアルゴリズムを使用するものとする。そのようなエンコードアルゴリズムは、具体的には下記(式1)のようである。
(式1)
B順列の順位0:AmodB
B順列の順位1:(AdivB)mod(B−1)
B順列の順位2:{(AdivB)div(B−1)}mod(B−2)
.
.
.
B順列の順位B−2:[{(AdivB)div(B−1)}div … div3〕mod2
B順列の順位B−1:[{(AdivB)div(B−1)}div … div2〕mod1=0
【0036】
上記式1において、「AmodB」は、数値AをBで割った余りを示す。「AdivB」は、数値AをBで割った商の整数部を示す。例えば、「B順列の順位0」とは、B順列のオリジナル順位0を示し(順位0は最上位のこと)、そのエンコード出力「AmodB」は、その変更後の順位を示す。ここで、下位のエンコードアルゴリズムのエンコード出力が示す変更後の順位は、上位のエンコードアルゴリズムによって決定済みの順位を除外した順位である。例えば、最上位のエンコードアルゴリズム「AmodB」によって、B順列のオリジナル順位0のデータが、全体中の順位「3」に変更することが決定されたとき、次のエンコードアルゴリズム「(AdivB)mod(B−1)」によって、エンコード出力として「4」が算出されたとすると、B順列のオリジナル順位1のデータは、全体の順位のうち既に決定済みの順位「3」を除外した順位の中の4番目、つまり全体中の順位「5」に変更されることを意味する。以下、順次、決定済みの順位を除外して変更後の順位を決定する。ここで、オリジナル順位とは、カギ情報KEYの示す順位であり、例えば音色番号データTCNの小さい順に演奏データのチャンネル配置を変更するエンコードアルゴリズムの場合は、各音源チャンネルのうちそこに割り当てられた音色番号データTCNの小さい順をオリジナル順位としている。なお、或る順位のエンコードアルゴリズムの結果が余り0となった場合は、それより下位の順位のエンコードアルゴリズムの演算実行を省略して、それより下位の順位についてはカギ情報KEYの示すオリジナル順位の通りとしてよい。
【0037】
図4において、ステップ104では、埋め込むべき付属情報Yを上記式1に従う順位0のアルゴリズムで処理する。この例の場合、チャンネル配置変更の対象となるチャンネル数は15であるから、上記式1でB=15であり、エンコードの対象となる数値は付属情報Yであるから、上記式1でA=Yである。よって、ステップ104では、「AmodB」の演算として、「Ymod15」を行う。その余りをx15なる符号で表すものとする。例えば、Y=86のとき、x15は「11」である。次に、ステップ106にて、カギ情報KEYにより定まる最初の演奏データ、すなわち最小の音色番号データTCNを有する演奏データを、音源チャンネル9(打楽器用音源チャンネル)を除く音源チャンネル0〜8,10〜15のうちで音源チャンネル0を最上位に数えてx15番目の音源チャンネル、つまりチャンネル12、に割当てる。すなわち、x15=11のときは、チャンネル9を除外するので、x15=11番目までのチャンネル順は、0,1,2,3,4,5,6,7,8,10,11,12の順となり、チャンネル12に該当する。なお、0番目とは音源チャンネル0を指し、1,2,3…番目は音源チャンネル1,2,3…を指す。また、最小の音色番号データTCNを有する演奏データをx15番目の音源チャンネルに割当てるとは、オリジナルのx15番目の音源チャンネルの演奏データと最小の音色番号データTCNを有する演奏データとを入替えることを意味し(ただし、x15番目の演奏データと最小の音色番号データTCNを有する演奏データとが一致する場合には前記入替えはなし)、これにより、最小の音色番号データTCNを有する演奏データが、音源チャンネル0〜8,10〜15のうちで音源チャンネル0側から数えてx15番目の演奏データとなる。
【0038】
次に、ステップ108にて、付属情報Yが「15」以上であるか否かを判定する。付属情報Yが「15」以上であれば、ステップ108にて「YES」と判定して、プログラムをステップ110〜114に進める。ステップ110及び112においては上記式1の順位1のエンコードアルゴリズムに従う演算を行う。すなわち、ステップ110においては、付属情報Yを「15」で割った商の整数部(これをy15で示す)を求める。この演算は、上記式1における「AdivB」なる割算に相当し、上記のようにA=Yで、B=15の場合は、ステップ110では「Ydiv15」なる割算を行うことになる。次に、ステップ112においては、前記商の整数部y15を「14」で割り、その余りx14を求める。すなわち、x14=y15mod14であり、これは上記式1の順位1の演算の解に相当する。次のステップ114においては、カギ情報KEYにより次の演奏データ、すなわち2番目に小さい音色番号データTCNを有する演奏データを、前記音源チャンネル0〜8,10〜15のうち、決定済みの音源チャンネルx15を除くx14番目の音源チャンネルに割当てる。例えば、Y=86のとき、y15=「5」であり、x14は、「5÷14=0余り5」から、x14=「5」である。すなわち2番目に小さい音色番号データTCNを有する演奏データを、音源チャンネル9及びx15=11(つまりチャンネル12)を除く音源チャンネルのうちx14番目の音源チャンネル(x14=5のときはチャンネル5)に割当てる。
【0039】
次に、ステップ116にて、前記商の整数部y15が「14」以上であるか否かを判定する。y15が「14」以上であれば、ステップ116にて「YES」と判定して、プログラムをステップ118〜122に進める。ステップ118及び120においては上記式1の順位2のエンコードアルゴリズムに従う演算を行う。すなわち、ステップ118においては、y15を「14」で割った商の整数部(これをy14で示す)を求める。この演算は、上記式1における「(AdivB)div(B−1)」なる割算に相当し、上記例のようにAdivB=y15で、B−1=14の場合は、ステップ118では「y15div14」なる割算を行う。次にステップ120においては、前記商の整数部y14を「13」で割り、その余りx13を求める。すなわち、x13=y14mod13であり、これは上記式1の順位2の演算の解に相当する。そして、次のステップ120においては、カギ情報KEYにより次の演奏データ、すなわち3番目に小さい音色番号データTCNを有する演奏データを、前記音源チャンネル0〜8,10〜15のうち、決定済みの音源チャンネルx15及びx14を除くx13番目の音源チャンネルに割当てる。
【0040】
以下、順位を順次繰り下げながら、ステップ116,118,120,122と類似の処理を順次繰り返し、上記式1の順位3から順位B−1までのエンコードアルゴリズムに従う演算をそれぞれ行うが、詳細図示は省略する。
【0041】
ところで、上記例のように、Y=86の場合は、y15=「5」であるから、ステップ116はNOと判定され、ステップ118〜122に進まずに、ステップ124に進む。ステップ124では、残りの演奏データを、カギ情報KEYにより定まる順序で残りの音源チャンネルに順次割り当てる処理を行う。このように、カギ情報KEYにより定まる順序の通りにチャンネルが配置されている箇所では、エンコードアルゴリズム演算の解つまり余りが「0」であることを意味する。すなわち、順位を順次繰り下げながら、ステップ116,118,120,122と類似の処理をあえて順次繰り返す必要がないため、これらの演算を省略し、ステップ124で順次割当て処理を行えば足りる。同様の理由で、ステップ108でNOと判定された場合も、処理はステップ124に移る。
【0042】
ここで理解を深めるためにチャンネル配置変更の具体例を示す。オリジナル演奏データとして、チャンネル0に音色番号20の演奏データが割り当てられ、チャンネル3に音色番号10の演奏データが割り当てられ、チャンネル5に音色番号15の演奏データが割り当てられ、チャンネル10に音色番号12の演奏データが割り当てられているとする。上記のように埋め込むべき付属情報Yが「86」であるとすると、音色番号順のアルゴリズムを指示するカギ情報KEYに従って、最初は最小の音色番号10のチャンネル割当て(配置変更)を行い、ステップ104でのx15=Ymod15=11によって、音色番号10の演奏データを順位11のチャンネル(つまりチャンネル12)に割り当てる(オリジナルのチャンネル3からチャンネル12に配置を変更する)。
【0043】
次に、2番目の音色番号12のチャンネル割当て(配置変更)を行い、ステップ110でのy15=Ydiv15=5、及びステップ112でのx14=y15mod14=5によって、2番目の音色番号12の演奏データをチャンネル5に割り当てる(オリジナルのチャンネル10からチャンネル5に配置を変更する)。y15は14未満であるため、ステップ116はNOとなり、以後のエンコード演算を省略してステップ124に行き、以下音色番号順に残りのチャンネルに順次割り当てる。すなわち、3番目の音色番号15の演奏データをチャンネル0に割り当て(オリジナルのチャンネル5からチャンネル0に配置を変更する)、4番目の音色番号20の演奏データをチャンネル1に割り当て(オリジナルのチャンネル0からチャンネル1に配置を変更する)。
【0044】
以上例示したようなチャンネル配置変更に基づくエンコードアルゴリズムによれば、対象チャンネル数が「15」であれば、「15!」通りのチャンネル配置組合せがあり得ることから、「15!」通りの値を示す付属情報を電子的透し情報として演奏データ(主要情報)の中に埋め込むことができる。「15!」通りの値とは、ビット数にして「log15!」(底は2)ビットからなるものであり、かなりの情報量を透し情報として埋め込むことができることが理解できる。しかも、演奏データのチャンネル配置を変更したとしても、結果的に発音される演奏音については何も変更されない(どのチャンネルを使用して発音しようとも、指定された音色等で発音がなされればよい)ので、透し情報を埋め込んだことによる再生演奏への悪影響は全く生じず、極めて有利である。
【0045】
なお、チャンネル配置変更に使用するエンコードアルゴリズムのカギ情報KEYとしては、音色番号順に限らず、他の如何なるファクタを使用してもよい。例えば各チャンネルの演奏データ中のノート番号の平均値の小さい順(または大きい順)、あるいは各チャンネルの演奏データ中のノート数(音符数)の多い順(または少ない順)、など適宜のファクタをカギ情報KEYとして使用してよい。また、上記実施例では、付属情報Yとして1文字のアスキーコードを埋め込む例を説明したが、複数の文字分の任意の文字情報や、図形情報その他の適宜の情報を付属情報Yとして埋め込むことができるのは勿論である。例えば、音楽演奏データの適宜のブロック毎に(1又は複数小節毎に)1文字ずつ合計複数文字の透し情報を埋め込む、といったような手法でエンコードを行うことができる。なお、その場合、チャンネル配置がどの箇所で変化するのか、といったようなデコード処理に必要な各種情報をカギ情報KEYとして適宜提供してやるものとする。
【0046】
次に、演奏データに埋め込まれた付属情報Yのデコード処理の一例について図5を参照して説明する。図5は、図4の手法に従ってチャンネル配置を変更することで所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例を示している。
【0047】
図5において、ユーザが「デコードプログラム」を起動すると、CPU11は、ステップ101にて「デコードプログラム」の実行を開始し、ステップ103にて、デコード用のカギ情報KEYを取得する。デコード用カギ情報KEYの取得の仕方は、如何なる手法によってもよい。例えば、必要なカギ情報KEYを正当に知得し、これをキーボード等で入力するようにしてもよい。あるいは、演奏データのヘッダ部等に必要なカギ情報KEYを記憶しておき、これを読み出すことで取得するようにしてもよい。あるいは、後述するように、主要情報たる演奏データの適宜の箇所に電子的透し情報の形態で必要なカギ情報KEYを埋め込んでおき、これを別途のデコードプログラムに従ってデコードすることで取得するようにしてもよい。あるいは、通信インターフェース21を介して通信ネットワークを経由して外部のサーバから必要なカギ情報を取得するようにしてもよい。あるいは、MIDIの演奏データ中に含まれるシステムイクスクルーシブデータからもしくはメタイベントデータから必要なカギ情報を取得するようにしてもよい。このようにデコード用のカギ情報KEYの取得形態に種々のバリエーションがあることは、以下説明するすべての実施例に共通である。
【0048】
例えば、図4のエンコード例の場合は、このステップ103で取得するカギ情報KEYは、「音色番号の小さい順」に上記式1のエンコードアルゴリズムを適用したというものである。よって、このようなカギ情報KEYを取得し知得することにより、与えられた演奏データのうち「音色番号の小さい順」に上記式1のエンコードアルゴリズムの逆算を行うことにより、そこに隠されていた元の付属情報Yをデコードすることができる。
【0049】
すなわち、与えられた演奏データにおける各チャンネルの音色番号をチェックすることで、「音色番号の小さい順」にそのチャンネル順位x15,x14,x13,…を順次検出する(図5のステップ105,107,109,…)。なお、ここで、前述から明らかなように、チャンネル順位x15,x14,x13,…とは絶対的なチャンネル順位ではなく、それぞれの段階での残りのチャンネルにおける相対的な順位である。例えば、前述のエンコード例のように、最小の音色番号10の演奏データをチャンネル12に割り当て、2番目の音色番号12の演奏データをチャンネル5に割り当て、3番目の音色番号15の演奏データをチャンネル0に割り当て、4番目の音色番号20の演奏データをチャンネル1に割り当てるようなチャンネル配置変更がなされている場合、図5のステップ105では最小の音色番号10の演奏データが割り当てられているチャンネル12に基づき、x15=「11」を検出する。次のステップ107では、2番目の音色番号10の演奏データが割り当てられているチャンネル5を検出し、これが残りのチャンネル(つまりチャンネル9と12を除くチャンネル0〜8,10,11,13〜15)のうち、5番目の順位であることに基づき、x14=「5」を検出する。次のステップ109では、3番目の音色番号15の演奏データが割り当てられているチャンネル0を検出し、これが残りのチャンネル(つまりチャンネル9と12と5とを除くチャンネル0〜4,6〜8,10,11,13〜15)のうち、最上位の順位「0」であることに基づき、x13=「0」を検出する。以後のチャンネル順位はすべて残りのチャンネルの最上位であるため「0」である。
【0050】
このようにしてカギ情報KEYに基づき検出した各チャンネル順位x15,x14,x13,…は、前記式1の各順位のエンコードアルゴリズム演算における余り値に相当するため、これらを用いて下記式2のようにエンコードアルゴリズムの逆算を行うことで、埋め込まれた透し情報の値Aをデコードすることができる。
(式2)
A=x15+(x14・B)+{x13・B・(B−1)}+{x12・B・(B−1)・(B−2)}
+{x11・B・(B−1)・(B−2)・(B−3)}+……
図5におけるステップ111では、上記式2に従う逆算を行い、透し情報として埋め込まれていた付属情報Yの値をデコードする。x15=「11」、x14=「5」、x13=「0」の上記例では、Y=11+5×15+0=86となり、透し情報として埋め込まれていた付属情報Yの値「86」がデコードされることが理解できる。
【0051】
次に、上記第1実施形態の変形例について説明する。上記例では、演奏データにおけるチャンネル配置を変更することで透し情報の埋め込みを行っているが、その他適宜のデータの配置または順序を変更するようにしてもよい。すなわち、配置または順序変更の対象となりうるデータは、演奏データにおける当該データの配置または順序の変更が、該演奏データに基づく音楽の再生に実質的に悪影響を与えないものであることが好ましい。そのようなタイプのデータとしては、発音開始前の(初期設定用の)複数種類の音源設定情報の配置順序や、同時発音される和音を構成する複数ノートのイベントデータや、MIDIのメタイベントデータ(演奏には直接関係しないデータ)などが挙げられる。
【0052】
図6は、演奏データに対する付属情報Yの埋め込み(エンコード)処理の別の例として、演奏データにおける複数種類の音源設定情報の配列順序を変更することで、所望の付属情報に対応する透し情報を埋め込む例を示している。この例では、初期設定用(発音開始以前)の音色番号データTCN、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPの5種類の音源設定情報の配列順序を、付属情報Yの値に応じて変更する。その場合のカギ情報KEYは、各音源設定情報のオリジナル順位を示す。エンコードアルゴリズムは、前記式1と同様のものを使用してよい。その場合、上記5種類の音源設定情報の配列順序を変更する場合は、前記式1でB=5である。
【0053】
図6のエンコード処理の仕方は基本的には図4と同様である。まず、ステップ130では、図4のステップ102と同様に、埋め込むべき付属情報Yと使用するカギ情報KEYを入力する。次に、ステップ131では、配置若しくは順序変更の対象となる複数種類の音源設定情報を主要情報(演奏データ)から取り出す。次に、ステップ132では、B=5として、上記式1の順位0に従うエンコード演算(Ymod5)を行い、その解つまり余りとしてx5を得る。次のステップ133では、入力したカギ情報KEYによって定まる最初の順位(上記式1の順位0)の音源設定情報の配列順序を全体のx5番目に設定する。なお、前述と同様に、0番目が最上位の順位であるとする。例えば、TCN、VOL、PAN、EXP、DMPがオリジナル順位であるとすると、音色番号データTCNの配置順序がx5番目に設定される。
【0054】
次に、ステップ134にて、付属情報Yが「5」(=B)以上であるか否かを判定する。付属情報Yが「5」以上であれば、ステップ134にて「YES」と判定して、プログラムをステップ135,136に進める。ステップ135においては図4のステップ110及び112と同様に上記式1の順位1のエンコードアルゴリズムに従う演算を行う。すなわち、付属情報Yを「5」で割った商の整数部(これをy5で示し、y5=Ydiv5である)を求め、該商の整数部y5を「4」で割り(y5mod4)、その解つまり余りx4を求める。すなわち、x4=y5mod4であり、これはB=5のときの上記式1の順位1の演算の解に相当する。次のステップ136においては、カギ情報KEYにより定まる2番目のオリジナル順位1の音源設定情報の配置順序を残りの(決定済の順位x5を除く)x4番目に設定する。例えば、前記のオリジナル順の場合、ボリュームデータVOLの配置順序が残りのx4番目に設定される。
【0055】
次に、ステップ137にて、前記商の整数部y5が「4」以上であるか否かを判定する。y5が「14」以上であれば、ステップ137にて「YES」と判定して、プログラムをステップ138,139に進める。ステップ138においては図4のステップ118及び120と同様に上記式1の順位2のエンコードアルゴリズムに従う演算を行う。すなわち、y5を「4」で割った商の整数部(これをy4で示し、y4=y5div4である)を求め、該商の整数部y4を「3」で割り、その解つまり余りx3を求める。すなわち、x3=y4mod3であり、これはB=5のときの上記式1の順位2の演算の解に相当する。そして、次のステップ139においては、カギ情報KEYにより定まる3番目のオリジナル順位2の音源設定情報の配置順序を残りの(決定済の順位x5,x4を除く)x3番目に設定する。例えば、前記のオリジナル順の場合、パンデータPANの配置順序が残りのx3番目に設定される。
【0056】
次に、ステップ140にて、前記商の整数部y4が「3」以上であるか否かを判定する。y4が「3」以上であれば、ステップ140にて「YES」と判定して、プログラムをステップ141,142に進める。ステップ141,142は、上記ステップ138,139と同様の処理を順位を1つ繰り下げて行うものである。これにより、x2=y3mod2が求まり、これはB=5のときの上記式1の順位3の演算の解に相当し、カギ情報KEYにより定まる4番目のオリジナル順位3の音源設定情報の配置順序を残りの(決定済の順位x5,x4,x3を除く)x2番目に設定する。例えば、前記のオリジナル順の場合、エクスプレッションデータEXPの配置順序が残りのx2番目に設定される。最後にステップ143では、1つの順位だけが残されているので、残りの最後のオリジナル順位4の音源設定情報(上記設例ではダンプデータDMP)の配置順序を残りの順位とする。
【0057】
なお、上記各ステップ134,137,140でNOと判定された場合は、ステップ144,145,146に行き、残りのエンコードアルゴリズム演算(ステップ135〜143)をあえて実行することなく、残りの音源設定情報をカギ情報KEYに従う残りの順位に順次設定する。勿論、残りのエンコードアルゴリズム演算(ステップ135〜143)を実行ったとしても、各順位x4,x3,x2がそれぞれ順位0として求められ、カギ情報KEYが指定する順位に順次設定される。ステップ144,145,146にジャンプした場合は、残りのエンコードアルゴリズム演算を省略できるので、処理時間が速まる。
【0058】
ここで理解を深めるために、音源設定情報の配置順序変更の具体例を示す。カギ情報KEYに従う順位が上記のようであり、埋め込むべき付属情報Yの値が「86」であるとすると、x5=86mod5=1から、音色番号データTCNの配置順序が順位1(全体の2番目)に設定され、x4=17mod4=1から、ボリュームデータVOLの配置順序が残りの順位1(全体の3番目)に設定され、x3=4mod3=1から、パンデータPANの配置順序が残りの順位1(全体の4番目)に設定され、x2=1mod2=1から、エクスプレッションデータEXPの配置順序が残りの順位1(全体の5番目)に設定され、最後のダンプデータDMPの配置順序が残りの順位0(全体の1番目)に設定される。すなわち、DMP、TCN、VOL、PAN、EXPという配置順に変更される。
【0059】
以上例示したような音源設定情報の配置順序変更に基づくエンコードアルゴリズムによれば、対象種類数が「5」であれば、「5!」通りの順列組合せがあり得ることから、「5!」通りの値を示す付属情報を電子的透し情報として演奏データ(主要情報)の中に埋め込むことができる。「5!」通りの値とは、ビット数にして「log5!」(底は2)ビットからなるものである。しかも、初期設定用(発音開始以前)の各音源設定情報の配置順序を変更したとしても、再生演奏には何の悪影響ももたらさないので、透し情報を埋め込んだことによる再生演奏への悪影響は全く生じず、極めて有利である。なお、音源設定情報の配置順序変更に使用するエンコードアルゴリズムのカギ情報KEYによって指定する各情報のオリジナル順位は、上記例に限らず、適宜に設定してよい。この場合も、付属情報Yとして埋め込む情報は1文字のアスキーコードに限らず、複数の文字分の任意の文字情報や、図形情報その他の適宜の情報を埋め込むことができるのは勿論である。例えば、15個の各音源チャンネル0〜8,10〜15のそれぞれについて、演奏開始前の初期設定値としての各音源設定情報の配置順序を上記に従ってエンコードすることで、15文字の文字情報を埋め込むことができる。また、演奏途中の箇所で、各音源設定情報を挿入し、その配置順序を上記に従ってエンコードすることで、更に埋め込む情報数を増すことができる。
【0060】
次に、演奏データに埋め込まれた付属情報Yのデコード処理の別の例について図7を参照して説明する。図7は、図6の手法に従って音源設定情報の配置順序を変更することで所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例を示している。
【0061】
図7のデコード処理の仕方は基本的には図5と同様である。まず、ステップ150にて、デコード用のカギ情報KEYを取得する。次に、カギ情報KEYによって定まる音源設定情報の順に、その配置順位x5,x4,x3,x2を順次検出する(ステップ151〜154)。なお、ここで、前述から明らかなように、配置順位x5,x4,x3,x2とは絶対的な順位ではなく、それぞれの段階での残りのデータにおける相対的な順位である。例えば、前述のエンコード例のように、DMP、TCN、VOL、PAN、EXPの順で配置設定がなされている場合、図7のステップ151ではTCNの順位x5=「1」を検出する。次のステップ152ではVOLの順位x4=「1」を検出し、次のステップ153ではPANの順位x3=「1」を検出し、次のステップ154ではEXPの順位x2=「1」を検出する。最後のデータDMPの順位は必ず「0」である。
【0062】
このようにしてカギ情報KEYに基づき検出した各音源設定情報の配置順位x5,x4,x3,x2は、前記式1の各順位のエンコードアルゴリズム演算における余り値に相当するため、これらを用いて前記式2と同様のエンコードアルゴリズムの逆算を行うことで、透し情報として埋め込まれた付属情報Yの値をデコードすることができる。ステップ155では、デコードのためのそのような逆算、すなわち、
Y=x5+(5・x4)+(5・4・x3)+(5・4・3・x2)+0
を実行する。上記例では、x5,x4,x3,x2がすべて「1」であるから、Y=86のデコード結果が得られる。
【0063】
図8は、演奏データに対する付属情報Yの埋め込み(エンコード)処理の更に別の例として、同時発音される和音を構成する複数ノートの配置順序を変更することで、所望の付属情報に対応する透し情報を埋め込む例を示している。例えば、同時発音される3個のノートによって和音を演奏する演奏データを想定すると、この3個のノートの配置順序は、どのような順序であっても、和音が同時発音されることには変わりないので、「3!」通りの組み合わせの配置順序のいずれを採用しても再生演奏には悪影響を与えないことになる。よって、これらの同時発音される3個のノートの配置順序を、付属情報Yに応じて設定することにより、「3!」通りの値を持つ付属情報Yを透し情報として埋め込むことができることになる。勿論、同時発音されるノート数が4個の場合は、「4!」通りの値を持つ付属情報Yを透し情報として埋め込むことができることになる。ただし、図8に示すエンコード例では、説明の簡略化のために、同時発音されるノート数が4個以上の場合であっても、「3!」通りの値を持つ付属情報Yを透し情報として埋め込むようにした例を示している。このエンコード例の場合、演奏シーケンスにおける各和音演奏箇所毎にそれぞれ異なる付属情報Yを透し情報として埋め込むことができる。説明の便宜上、埋め込み可能な複数(p個)の付属情報Yを、Y(1),Y(2),Y(3),…Y(p)で示す。
【0064】
この場合、同時発音される複数のノートの配置順序を設定するためのカギ情報KEYとしては、ノート番号順、あるいはノートオフまでの時間順、あるいはベロシティデータの大きさの順、など種々のファクタを使用してよい。どのようなファクタを使用するかはカギ情報KEYによって指示される。この場合も、エンコードアルゴリズムは、前記式1と同様のものを使用してよい。その場合、「3!」通りの値を持つ付属情報Yを透し情報として埋め込む場合は、前記式1でB=3である。つまり、同時発音されるノート数が3個以上の演奏データグループに対してエンコード処理がなされる。
【0065】
図8のエンコード処理の仕方は基本的には図4あるいは図6と同様である。まず、ステップ160では、埋め込むべき複数(p個)の付属情報Y(1)〜Y(p)と使用するカギ情報KEYとを入力する。次に、ステップ161では、エンコード処理すべき1つの付属情報Yを特定する順序数iを初期値1に設定する。次に、ステップ162では、主要情報つまり演奏データのアドレスを歩進する。次に、ステップ163では、歩進されたアドレスに対応する演奏データが同時発音されるべき3音以上のノートに該当するかを調べるNOであれば、ステップ162に戻り、演奏データのアドレスを歩進する。こうして、同時発音されるべき3音以上のノートに該当するアドレスまで歩進してくると、ステップ163がYESとなり、ステップ164で、これら3音以上の同時発音されるべきノートの演奏データを取り出す。
【0066】
次に、ステップ165では、B=3として、上記式1の順位0に従うエンコード演算(Y(i) mod3)をi番目の付属情報Y(i)(最初はY(1))に対して行い、その解つまり余りとしてx3を得る。次のステップ166では、ステップ164で取り出した同時発音されるべき3音以上のノートのうち、カギ情報KEYによって定まる最初の順位(上記式1の順位0)のノートの配列順序を全体のx3番目に設定する。
【0067】
次に、ステップ167にて、前記付属情報Y(i)が「3」以上であるか否かを判定する。Y(i)が「3」以上であれば、ステップ167にて「YES」と判定して、プログラムをステップ168〜170に進める。ステップ168においては図3のステップ135と同様に上記式1の順位1のエンコードアルゴリズムに従う演算を行う。すなわち、Y(i)を「3」で割った商の整数部(これをy3で示し、y3=Y(i) div3である)を求め、該商の整数部y3を「2」で割り、その解つまり余りx2を求める。すなわち、x2=y3mod2であり、これはB=3のときの上記式1の順位1の演算の解に相当する。そして、次のステップ169においては、ステップ164で取り出した同時発音されるべき3音以上のノートのうち、カギ情報KEYにより定まる2番目の順位(上記式1の順位1)のノートの配列順序を残りの(決定済の順位x3を除く)x2番目に設定する。ステップ170では、ステップ164で取り出した同時発音されるべき3音以上のノートのうち、カギ情報KEYにより定まる3番目以降の順位の残りのノートを、カギ情報KEYにより定まる順位(決定済の順位x3,x2を除く)に設定する。すなわち、3番目の順位(上記式1の順位2)のノートの配列順序は残りの(決定済の順位x3,x2を除く)0番目に設定する。もし、4番目以降の順位のノートがあれば、さらに下位の順位に設定される。なお、付属情報Y(i)が「3」未満であれば、ステップ167はNOであり、ステップ171に行き、残りのエンコードアルゴリズム演算(ステップ168〜170)をあえて実行することなく、残りのノートをカギ情報KEYに従う残りの順位に順次設定する。
【0068】
ステップ172では、順序数iが最大値p以上かを調べ。NOであればステップ173でiを+1増加してステップ162に戻る。こうして、次に埋め込むべき付属情報Y(i)に関してステップ162〜172の処理を繰り返す。やがて、i=pとなって、すべての付属情報Y(i)についての埋め込みを終了すると、ステップ172がYESとなり、このエンコード処理を終了する。
【0069】
ここで理解を深めるために、同時発音されるべき3音以上のノートの配置順序変更の具体例を示す。同時発音されるべきノートがC3,E3,G3であり、カギ情報KEYが「ノート番号の小さい順」であるとし、埋め込むべき付属情報Y(1)の値が「5」であるとすると、ステップ165でのx3=5mod3=2から、最初の順位のノートC3の配置順序が順位2(全体の3番目)に設定され(ステップ166)、ステップ168でのx2=1mod2=1から、次の順位のノートE3の配置順序が順位1(残りの2番目で、全体の2番目)に設定され(ステップ169)、最後の順位のノートG3の配置順序が順位0(残りの1番目で、全体の1番目)に設定される(ステップ170)。この場合、埋め込むことが可能な付属情報Y(1)のとり得る値は「3!」通りの値である。
【0070】
次に、図8の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、各付属情報Y(1)〜Y(p)をデコードする例について、図9を参照して説明する。
【0071】
図9のデコード処理の仕方は基本的には図5,図7と同様に、図8のエンコードアルゴリズムの逆算を行うことからなる。まず、デコード用のカギ情報KEYを取得し、次に、順序数iを初期値1にセットする(ステップ180,181)。それから、ステップ182,183,184では図8のステップ162,163,164と同様の処理を行い、3音以上の同時発音されるべきノートの演奏データを取り出す。それから、カギ情報KEYによって定まるノートの順に、その配置順位x3,x2を順次検出する(ステップ185,186)。この場合も、配置順位x3,x2とは絶対的な順位ではなく、それぞれの段階での残りのデータにおける相対的な順位である。ステップ187では、これらを用いて前記式2と同様のエンコードアルゴリズムの逆算を行うことで、透し情報として埋め込まれた付属情報Y(i)の値をデコードする。すなわち、
Y(i) =x3+(3・x2)+0
を実行する。例えば、前述のエンコード例の場合、最初の順位のノートC3の配置順序が順位2であることから、x3=2が検出され、2番目の順位のノートE3の配置順序が順位1であることから、x2=1が検出される。よって、
Y(i) =2+(3・1)=5
により、Y(i)=5のデコード結果が得られる。ステップ188,189は図8のステップ172,173と同じであり、すべての付属情報Y(1)〜Y(p)をデコードし終えるまで、ステップ182〜187の処理を繰り返す。
【0072】
上記例のほかに、再生演奏に悪影響を与えない主要情報中の特定のデータの配置順序を変更することで、所望の付属情報に対応する透し情報を埋め込むことができる。再生演奏に悪影響を与えない主要情報中の特定のデータの例としては、例えばMIDIのメタイベントデータがある。MIDI演奏データ中において、メタイベントデータとして著作権情報が記録されることがよく行われる。その場合、複数種類のデータ、例えばコピーライト表示であることを示す文字「C」のデータと、著作年を示す日付データと、著作者を示すデータなどが、別々のメタイベントデータとして、MIDI演奏データ中に適当な順序で適宜記憶される。この複数種類のメタイベントデータの配置順序を、適宜のカギ情報KEYに従って、所望の付属情報Yの値に応じて再配置することで、透し情報として埋め込むことができる。そのためのエンコードアルゴリズムは基本的には図8と同様のものを使用できる。
【0073】
図10は著作権情報のメタイベントの配置順序を変更するためのエンコードアルゴリズムの一例を示す図であり、図8と実質的に同様の処理を行うステップは同一番号を付し、説明を省略する。図10の例における図8に対する変更箇所を説明すると、ステップ160はステップ160’に変更され、1つの付属情報Yを埋め込むだけとするので、付属情報Yは1つだけ入力する。これに伴い、図8におけるステップ161,172,173は図10では省略されている。ステップ163’では演奏データが「著作権情報のメタイベントか?」を判定する。YESであれば、ステップ164’で著作権情報に関する各種メタイベントデータを取り出す。例えば、上記のように、文字「C」のデータと、著作年を示す日付データと、著作者を示すデータ、の3種類のデータを取り出す。ここで、カギ情報KEYが指定する所定の順位は、「C」データ、日付データ、著作者データ、の順であるとする。ステップ166’では、最初のメタイベントデータ(「C」データ)についての順位x3を設定する。ステップ169’では、2番目のメタイベントデータ(日付データ)についての残りのうちの順位x2を設定する。ステップ170’では、3番目のメタイベントデータ(著作者データ)についての順位を残りのうちの順位0に設定する。
【0074】
前述と同様に、埋め込むべき付属情報Yの値が「5」であるとすると、ステップ165でのx3=5mod3=2から、最初のメタイベントデータ(「C」データ)についての配置順序が順位2(全体の3番目)に設定され(ステップ166’)、ステップ168でのx2=1mod2=1から、次のメタイベントデータ(日付データ)の配置順序が順位1(残りの2番目で、全体の2番目)に設定され(ステップ169’)、最後の順位のメタイベントデータ(著作者データ)の配置順序が順位0(残りの1番目で、全体の1番目)に設定される(ステップ170’)。この場合も、埋め込むことが可能な付属情報Yのとり得る値は「3!」通りの値となる。
【0075】
図10の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には図9の場合と同様に、図10のエンコードアルゴリズムの逆算を行えばよい。このデコード処理については、図9の説明を援用し、詳細説明を省略する。
【0076】
更に、再生演奏に悪影響を与えない主要情報中の特定のデータの配置順序を変更することで、所望の付属情報に対応する透し情報を埋め込むことが可能な、再生演奏に悪影響を与えない主要情報中の特定のデータの別の例としては、例えば楽音の発音中に設定変更しても発音中の音に影響を与えない「コントロールデータ」またはMIDIの「プログラムチェンジ」データなどがある。この「コントロールデータ」またはMIDIの「プログラムチェンジ」データで例えば音色を設定変更する場合、或る楽音の発音中のタイミングで設定変更指示したとしても該発音中の楽音の音色を設定変更することにはならず、次に発音開始する楽音からその音色を変更することになる。従って、この「コントロールデータ」またはMIDIの「プログラムチェンジ」データが演奏シーケンスにおいて挿入されるタイミングは、或る第1の楽音の発音中のタイミングで挿入する場合と、その発音終了後から次の第2の楽音の発音開始前までのタイミングで挿入する場合とでは、再生演奏に対する影響に変わりはない。従って、この「コントロールデータ」またはMIDIの「プログラムチェンジ」データの変化イベントを、或る第1の楽音の発音中のタイミングで挿入するか、または、その発音終了後から次の第2の楽音の発音開始前までの間のタイミングで挿入するか、のどちらかで行うかにによって1ビットの付属情報Yを、再生演奏に影響を与えることなく、埋め込むことができる。このデコードは、「コントロールデータ」またはMIDIの「プログラムチェンジ」データの変化イベントが、或る第1の楽音の発音中のタイミングで挿入されている場合は「0」を出力し、その発音終了後から次の第2の楽音の発音開始前までの間のタイミングで挿入されている場合は「1」を出力する、というやり方で処理できる。
【0077】
〔第2実施形態〕
次に、本発明の第2実施形態について説明する。この第2実施形態は、演奏データの値を操作することで所望の付属情報Yの電子的透しを埋め込むようにしたものであり、特に、複数の演奏データの時間情報の変更状態の組み合わせで、所望の付属情報Yの電子的透しを埋め込むようにしたものである。具体的には、複数の異なる種類の音源設定情報の時間情報の変更状態の組み合わせで、所望の付属情報Yの電子的透しを埋め込むようにしている。
エンコードアルゴリズムの一例を次に示す。
【0078】
対象となる複数の異なる種類の音源設定情報は、音色番号データTCN(MIDIでいうプログラムチェンジに対応)、ボリュームデータVOL、パンデータPAN、エクスプレッションデータEXP及びダンプデータDMPの5種類であるとする。ただし、これらの音源設定情報は初期設定用(発音開始以前)のものに限らず、演奏シーケンス中に挿入されたものをも対象に含んでいてよく、イベント間の時間間隔を指示する時間情報(インターバルデータ△T)を伴っているものとする。
【0079】
まず、第1のカギ情報KEY1により、各種音源設定情報の順位を設定する。以下では、TCN、VOL、PAN、EXP、DMPの順位が設定されているものとして説明を進める。
【0080】
次に、第2のカギ情報KEY2により、時間情報(インターバルデータ△T)を変更するために使用する変更差分値△dの分解能nを設定する。一例として、時間情報の変更を微小値に押さえるために、分解能n=3として、変更差分値△dのとりうる値を、+1,0,−1の3種類とすると有利であり、以下ではそのように設定されているものとして説明を進める。
【0081】
次に、第3のカギ情報KEY3により、時間情報(インターバルデータ△T)についての関数f(m)=n’を定義する。ここで、mは時間情報(インターバルデータ△T)の値であり、0≦n’<nとする。一例として、f(m)は、
f(m)=m mod n
であるとして、以下、説明を進める。すなわち、時間情報(インターバルデータ△T)の値「m」を第2のカギ情報KEY2の値「n」で割った商の余りが、f(m)である。
【0082】
次に、第1のカギ情報KEY1によって設定された順で、各種音源設定情報毎の時間情報(インターバルデータ△T)の変更目標余り値d1,d2,d3,d4,d5を求める演算を、埋め込むべき付属情報Yの値に応じて、下記式3のエンコードアルゴリズムに従って行う。
(式3)
順位0(TCN):Ymod n=d1
順位1(VOL):(Ydiv n) mod n=d2
順位2(PAN):((Ydiv n) div n) mod n=d3
順位3(EXP):(((Ydiv n) div n) div n) mod n=d4
順位4(DMP):((((Ydiv n) div n) div n) div n) mod n=d5
【0083】
式における演算子の意味は、既に説明したものと同じであり、演算子「mod」は割算の商の余りを解として求めることを意味し、演算子「div」は割算の商の整数部を解として求めることを意味する。例えば、「Ymod n」は、付属情報の値Yを第2のカギ情報KEY2の値n(好適にはn=3)で割った商の余りである。また、「(Ydiv n) mod n」は、値Yを値nで割った商の整数部(Ydiv n)を、値nで割った商の余りである。また、「((Ydiv n) div n) mod n」は、値Yを値nで割った商の整数部(Ydiv n)を更に値nで割り、その商の整数部((Ydiv n) div n)を、値nで割った商の余りである。
上記式3において、n=3の場合、各変更目標余り値d1,d2,d3,d4,d5の値は、「0」,「1」,「2」のいずれかの値をとる。
【0084】
上記各データTCN,VOL,PAN,EXP,DMPのオリジナルの時間情報(インターバルデータ△T)の値「m」を、それぞれm1,m2,m3,m4,m5で示すと、夫々をn=3で割ったときの余りが、上記各変更目標余り値d1,d2,d3,d4,d5の値になるようにするには、変更目標余り値d1,d2,d3,d4,d5の値が「0」のときは変更差分値△d1,△d2,△d3,△d4,△d5として「0」をオリジナル値m1,m2,m3,m4,m5に加算し、変更目標余り値d1〜d5の値が「1」のときは変更差分値△d1〜△d5として「+1」をオリジナル値m1〜m5に加算し、変更目標余り値d1〜d5の値が「2」のときは変更差分値△d1〜△d5として「−1」をオリジナル値m1〜m5に加算すればよい。
【0085】
すなわち、上記各データTCN,VOL,PAN,EXP,DMPの変更された時間情報(インターバルデータ△T)の値「m」を、それぞれm1’,m2’,m3’,m4’,m5’で示すと、下記式4に従って変更演算を行うことで求められる。
(式4)
TCN: m1’=m1+△d1
VOL: m2’=m2+△d2
PAN: m3’=m3+△d3
EXP: m4’=m4+△d4
DMP: m5’=m5+△d5
以上のようなエンコード処理を実現しうるように、適宜、プログラムを組めばよい。図11は以上のようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ190では、埋め込むべき付属情報Yと上記カギ情報KEY1,KEY2,KEY3を入力する。ステップ191では、第1のカギ情報KEY1によって設定された順で、各種音源設定情報毎の時間情報(インターバルデータ△T)の変更目標余り値d1,d2,d3,d4,d5を求めるための上記式3のエンコードアルゴリズムに従う演算を、第2のカギ情報KEY2によって指定された値nを用いて、埋め込むべき付属情報Yの値に応じて、行う。次のステップ192では、求められた各変更目標余り値d1〜d5の値から、対応する変更差分値△d1〜△d5を求める。すなわち、上述の通り、d1〜d5が「0」なら△d1〜△d5は「0」、「1」なら「+1」、「2」なら「−1」である。次のステップ193では、演奏データの先頭から(若しくは所定の範囲から)上記各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)のオリジナル値m1〜m5をそれぞれ取り出す。ステップ194では、上記式4に従って、上記各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)のオリジナル値m1〜m5に上記変更差分値△d1〜△d5をそれぞれ加算し、それぞれの時間情報(インターバルデータ△T)の変更値m1’〜m5’を求める。そして、前記ステップ193で取り出した各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)を変更値m1’〜m5’で置き換える。
【0086】
次に、図11の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例について、図12を参照して説明する。図12のデコード処理の仕方は基本的には上記各デコード処理例と同様に、図11のエンコードアルゴリズムの逆算を行うことからなる。まず、デコード用のカギ情報KEY1,KEY2,KEY3を取得する(ステップ195)。それから、ステップ196では、演奏データの先頭から(若しくは所定の範囲から)上記KEY1で指定された順位の各データTCN,VOL,PAN,EXP,DMPの時間情報(インターバルデータ△T)の値m1’〜m5’をそれぞれ取り出す。ステップ197では、各値m1’〜m5’を変数mにあてはめて、かつKEY2で指定された値nを用いて、KEY3で指定された関数
f(m)=m mod n
をそれぞれ演算し、それぞれの余り値d1〜d5を求める。ステップ198では、上記式3のエンコードアルゴリズムの逆算を行い、下記式5のように、付属情報の値Yをデコードする。
(式5)
Y=d1+(n・d2)+(n・n・d3)+(n・n・n・d4)
+(n・n・n・n・d5)
ここでエンコードの具体例として、Y=86、n=3のときの上記式3に従う各変更目標余り値d1〜d5と、変更差分値△d1〜△d5とを示すと、下記のようである。
TCN: d1=86 mod 3=2, △d1=−1
VOL: d2=28 mod 3=1, △d2=+1
PAN: d3=9 mod 3=0, △d3=0
EXP: d4=3 mod 3=0, △d4=0
DMP: d5=1 mod 3=1, △d5=+1
また、この具体例のデコード時においては、前記関数
f(m)=m mod n
に基づく演算で求まる各余り値d1〜d5は、d1=2、d2=1、d3=0、d4=0、d5=1である。よって、上記式5のデコード演算は、
Y=2+(3・1)+0+0+(3・3・3・3・1)=86
となり、付属情報Yの値86をデコードすることができる。
【0087】
このようにして、複数の異なる種類の音源設定情報の時間情報の変更状態の組み合わせの形態で、所望の付属情報Yの電子的透しが埋め込まれる。これによれば、主要情報における複数の異なる種類の音源設定情報(TCN,VOL,PAN,EXP,DMP)の時間情報を付属情報Yの値に応じて変更し、これら音源設定情報の時間情報の変更状態の組み合わせの形態で付属情報Yの電子的透しを埋め込むことを特徴としており、複雑なエンコード化形態をとるため、不正利用者による情報改竄がしにくいものとなる。また、音源設定情報(TCN,VOL,PAN,EXP,DMP)の時間情報は、楽音発音指示(ノートオンイベント)等の時間情報とは異なり、その多少の変化は音楽再生演奏に影響を与えることはない。また、実施例では、時間変更量は+1,0,−1のいずれかであり、僅かな量であるから、ほとんど気付かないほどのわずかな時間変化である。また、正当利用者による演奏データ編集の際にも音源設定情報の時間情報の変更はそう頻繁に行われるものではないため、無意識的に付属情報を変更することも起こりにくい。この場合も、付属情報Yとして埋め込む情報は1文字のアスキーコードに限らず、複数の文字分の任意の文字情報や、図形情報その他の適宜の情報を埋め込むことができるのは勿論である。例えば、15個の各音源チャンネル0〜8,10〜15のそれぞれについて、各音源設定情報の配置順序を上記に従ってエンコードすることで、15種類(15文字)の付属情報を埋め込むことができる。また、演奏途中の箇所で、各音源設定情報を挿入し、その配置順序を上記に従ってエンコードすることで、更に埋め込む付属情報数を増すことができる。なお、各チャンネルに埋め込まれた付属情報同士の連結の仕方は適宜定めてよく、また、連結の仕方を示すカギ情報を適宜提供するようにしてもよい。例えば、チャンネル番号順、各チャンネルに割り当てられている音色番号順、各チャンネル毎の演奏データのノート番号の平均値の順、各チャンネル毎の演奏データのキーオンイベント数の順、など適宜の連結の仕方があり、どの連結を採用すべきかはカギ情報で指示する。
【0088】
上記第2実施形態の変形例として、複数の異なる種類の音源設定情報の時間情報を変更することに限らず、その他の演奏データの時間情報を変更するようにしてもよい。例えば、同一種類の複数の楽音制御情報(例えばMIDIのコントロールチェンジデータ)の時間情報を、上記実施例と同様の手法で微妙に変更するようにエンコードしてもよい。例えば、演奏シーケンス順に5個のコントロールチェンジデータを対象とすることを、第1のカギ情報KEY1によって順位指定する。そして、これらの同一種類のコントロールチェンジデータのそれぞれの時間情報(インターバルデータ△T)を、上記第2実施形態で示した式3及び式4と同様のアルゴリズムでエンコード処理することができる。この場合、同一種類に限らず、任意の種類(異なる種類が含まれていてもよい)の複数の楽音制御情報(コントロールチェンジデータ)を対象にして、演奏シーケンス順に5個のコントロールチェンジデータを対象とすることを、第1のカギ情報KEY1によって順位指定し、これらに対して上記と同様のエンコード処理を行うようにしてもよい。なお、この実施例では、音源設定情報(例えばプログラムチェンジデータ)と楽音制御情報(例えばコントロールチェンジデータ)とを区別して説明しているが、特に区別しなくてもよい。すなわち、音源設定情報も楽音制御情報も、楽音の設定・制御に使用れさる情報である。
【0089】
更に、上記第2実施形態の別の変形例として、例えば、ノートオンイベントからノートオフイベントまでの時間情報(デュレーションタイムといわれる時間)を、上記実施形態と類似のアルゴリズムに従って変更することで、上記実施形態と同様に任意の付属情報を埋め込むようにすることができる。デュレーションタイムの変更は、+1や−1程度の多少の変更では、あまり気付かれないので、或る程度のデータ変更が許容される。その場合、第1のカギ情報KEY1で指定する順位は、演奏データの先頭から(あるいは所定の範囲での)所定数例えば5個のノートオンイベントの発生順を指定する等が考えられる。すなわち、5個のノートオンイベントの各音に対して順位0〜4を付与し、前記式3に従うエンコード演算を行う。それによって求めた各変更目標余り値d1〜d5に応じて、当該各5個のノートオンイベントに対応する音のオリジナルのデュレーションタイムm1〜m5を前記式4に従って変更すればよい。演奏データ中には、多数の発音イベントがあるので、この変形例によれば、埋め込むことのできる付属情報量が増す。なお、演奏データ中にデュレーションタイムのデータを直接的に有している場合は、そのデュレーションタイムのデータを変更すればよい。演奏データ中にデュレーションタイムのデータを直接的に有していない場合は、ノートオフイベントのタイミングを変更することで、その前のノートオンイベントからノートオフイベントまでの時間間隔つまりデュレーションタイムを変更することができるので、そのようにすればよい。
〔第3実施形態〕
次に、本発明の第3実施形態について説明する。この第3実施形態は、上記第2実施形態と同様に演奏データの値を操作することで所望の付属情報Yの電子的透しを埋め込むようにしたものであるが、例えばMIDIのランニングステータスのような特殊なステータスデータの使用/不使用をコントロールすることで、所望の付属情報Yの電子的透しを埋め込むようにしたものである。
【0090】
例えば、1つのMIDIメッセージはステータスバイトとデータバイトとからなり、ステータスバイトは当該イベントのステータスを示すステータス情報を含んでいる。MIDIのステータスの1つとしてランニングステータスがあることが知られている。MIDIのランニングステータスとは、演奏シーケンスの中の或るイベントのステータスがその直前のイベントのステータスと同じ場合はステータス情報を省略し、そのようにステータス情報を省略することによって直前のイベントステータスと同じステータスであることを示すものである。このランニングステータスは使用してもしなくても、音楽演奏の遂行に影響を与えるものではない。すなわち、ランニングステータスを使用できる箇所でランニングステータスを使用せずに、直前のイベントのステータスと同じステータスを示すステータス情報を当該イベントに持たせるようにしても、音楽再生演奏の遂行に変わりはない。このように、ランニングステータスの使用/不使用は音楽演奏の遂行に影響を与えないので、このランニングステータスの使用/不使用に応じて音楽演奏に悪影響を与えることなく、1ビットの電子的透し情報を埋め込むことができる。
【0091】
図13はこのようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ200では、埋め込むべき付属情報Yとカギ情報KEYを入力する。このエンコードアルゴリズムは比較的単純であるためカギ情報KEYは必須ではないが、例えば、演奏データの特定範囲についてエンコード処理を施す場合に、その範囲をカギ情報KEYで指定するようにすればよい。ステップ201では、演奏データ(主要情報)からランニングステータスを使用している箇所または使用可能な箇所を検出する。次のステップ202では、当該検出箇所の演奏データの内容を、付属情報Yの値(1または0)に応じて、ランニングステータスの使用又は不使用となるように、変更(設定)する。例えば、Y=1であれば、ランニングステータスを使用するようにデータ変更(設定)し、Y=0であれば、ランニングステータスを使用しないようにデータ変更(設定)する。
【0092】
このように、ランニングステータスの使用/不使用に応じて音楽演奏に悪影響を与えることなく、1ビットの電子的透し情報を埋め込むことができる。基本的には、1ビットの電子的透し情報を埋め込むだけであるが、各チャンネル毎に、あるいは演奏シーケンスの所定範囲毎に、それぞれ1ビットの電子的透し情報を埋め込むことで、合計複数ビットの付属情報の透し埋め込みを行うことができる。その場合、付属情報の各ビット同士の連結の仕方は、前述と同様に、種々のやり方を採用することができる。このように、この第3実施形態によれば、電子的透し情報の埋め込み形態の多様化に役立てることができる。多様な埋め込み形態が提供されることにより、それらを組み合わせることで、見破られにくい複雑なエンコード化処理を行うことができるので、有利である。
【0093】
図13の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には上記各デコード処理例と同様に、図13のエンコードアルゴリズムの逆手順を行うことからなる。そのデコード処理プログラムの一例を示すと図14のようである。まず、適宜の手段によりカギ情報KEY(もしあれば)を取得し(ステップ203)、これに基づきエンコード対象範囲の演奏データから、ランニングステータスの使用箇所または使用可能箇所を検出する(ステップ204)。該検出箇所でランニングステータスが使用されていれば、付属情報Yの値として「1」をデコードし、ランニングステータスが使用されていなければ、付属情報Yの値として「0」をデコードする(ステップ205)。
【0094】
ランニングステータスに限らず、当該ステータス情報の使用/不使用が再生演奏に重大な影響を与えない特定のステータスがあれば、その特定のステータスの使用/不使用をコントロールすることで、上記実施例と同様に、1ビットの付属情報Yの電子的透しを埋め込むことができる。例えば、そのような特定のステータスとして、ノートオフステータスがある。
【0095】
〔第4実施形態〕
次に、本発明の第4実施形態について説明する。この第4実施形態は、上記第2及び第3実施形態と同様に主要情報中のデータの値を変更操作することで所望の付属情報Yの電子的透しを埋め込むようにしたものであるが、例えばMIDIのメタイベントのような非演奏データに含まれるテキストデータのスペース数を操作することで、所望の付属情報Yの電子的透しを埋め込むようにしたものである。
MIDIメッセージでは、音楽演奏を直接的にコントロールする演奏データのイベントデータのほかに、メタイベントといわれる非演奏データのイベントを適宜挿入し得る。このメタイベントとしては、前述のような著作権情報のテキストや、その他の任意のテキストを埋め込むことができる。このテキストデータ中のスペースを多少増減しても、再生演奏にまったく影響を与えないばかりか、該テキストの実質的内容に対しても影響を与えない。よって、テキストデータ中のスペース数を付属情報の値に応じて設定するデータ操作を行うことにより、何ビットかの付属情報の電子的透しを埋め込むことができる。
【0096】
図15はこのようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ206では、埋め込むべき付属情報Yとカギ情報KEYを入力する。このエンコードアルゴリズムは比較的単純であるためカギ情報KEYは必須ではないが、例えば、演奏データの特定範囲についてエンコード処理を施す場合に、その範囲をカギ情報KEYで指定するようにすればよい。ステップ207では、演奏データ(主要情報)からテキストデータを含むメタイベントを検出する。次のステップ208では、当該検出したメタイベントに含まれるテキストデータ中の合計のスペース数sを、付属情報Yの値に応じた数に設定する。例えば付属情報Yがバイナリ3ビットの値をとる場合、合計スペース数sとしては0〜7のうつのいずれかの数に設定する。例えば、付属情報Yの値が「4」であれば、当該メタイベント中のテキストデータのスペース数の合計が「4」になるように、スペースデータの設定(追加又は削除)を行う。
【0097】
このように、テキストメタイベント中の合計スペース数を、付属情報Yの値に応じて設定することにより、バイナリで何ビットかのデータからなる付属情報Yの電子的透しを埋め込むことができる。この場合も、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0098】
図15の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には上記各デコード処理例と同様に、図15のエンコードアルゴリズムの逆手順を行うことからなる。そのデコード処理プログラムの一例を示すと図16のようである。まず、適宜の手段によりカギ情報KEY(もしあれば)を取得し(ステップ209)、これに基づきエンコード対象範囲の演奏データから、テキストメタイベント(非演奏データ)を検出する(ステップ210)。該検出したテキストメタイベント中の合計スペース数sを検出する(ステップ211)。検出した合計スペース数sが、付属情報Yのデコード出力に相当する。
【0099】
上記第4実施形態の変形例として、テキストメタイベント(非演奏データ)中の各語間のスペース数を1又は2に設定することにより、バイナリ1ビットの付属情報Yを埋め込むことが可能である。例えば、Y=0のとき語間スペース数を1個に設定し、Y=1のとき語間スペース数を2個に設定する。この変形例は、テキストメタイベント中の合計スペース数sによるエンコード処理と組み合わせて適用し、埋め込み可能な付属情報Yのビット数を増すことができる。その場合、例えば、語間スペース数が1個に設定されているときは合計スペース数sは通常通り計数するが、語間スペース数が2個に設定されているときは合計スペース数sは実際の合計スペース数の1/2の値とする、といった変形を更に加えることが可能である。
【0100】
〔第5実施形態〕
次に、本発明の第5実施形態について説明する。この第5実施形態は、演奏データの中に、音楽演奏再生に対して実質的な悪影響を与えないダミーデータを挿入することで、該ダミーデータに応じた所望の付属情報Yの電子的透しを埋め込むようにしたものである。
一例として、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加することでダミーデータの付加を行う。例えば或るエフェクトに変更せよというような指示を行う演奏制御データは、同一のものが連続していても、一旦そのエフェクトに変更されると次は同じエフェクトが維持されるだけであり、音楽演奏には悪影響を与えない。よって、このような演奏制御データはダミーデータとして使用することができる。MIDIのメタイベントのような非演奏データも、同一のものが連続していても同じメタイベント処理が繰返されるだけであり、音楽演奏には悪影響を与えない。従って、この場合も、音楽演奏に悪影響を与えることなく、ダミーデータの有無に応じて1ビットの電子的透しを埋め込むことができる。また、この実施形態も、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。
【0101】
図17はこのようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ212では、埋め込むべき付属情報Yとカギ情報KEYを入力する。このエンコードアルゴリズムは比較的単純であるためカギ情報KEYは必須ではないが、例えば、演奏データの特定範囲についてエンコード処理を施す場合に、その範囲をカギ情報KEYで指定するようにすればよい。また、ダミーデータの対象とするデータを何にするかをカギ情報KEYで指定してもよい。ステップ213では、演奏データ(主要情報)からダミーデータの対象とするデータを検出する。例えば、コントロールチェンジイベント(演奏制御データ)又はメタイベント(非演奏データ)をダミーデータの対象とする。その場合、コントロールチェンジイベント(演奏制御データ)又はメタイベント(非演奏データ)のどちらか一方、あるいは両方を、ダミーデータの対象とするといったことをカギ情報KEYで指定し、ステップ213では指定された対象データを演奏データから検出する。次のステップ214では、検出した対象データの後に同一のデータをダミーデータとして、付属情報Yの値に応じた数だけ追加する。例えばバイナリ1ビットからなる付属情報Yを埋め込む場合は、Y=0のときダミーデータの追加を行わず、Y=1のとき1個のダミーデータを追加する。同一のダミーデータを複数追加するオプションが可能であり、そうすると2ビット以上の付属情報Yを埋め込むことが可能である。
【0102】
図17の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする処理は、基本的には上記各デコード処理例と同様に、図17のエンコードアルゴリズムの逆手順を行うことからなる。そのデコード処理プログラムの一例を示すと図18のようである。まず、適宜の手段によりカギ情報KEYを取得し(ステップ215)、これに基づき演奏データからダミーデータの対象となるデータ(コントロールチェンジイベント又はメタイベント)を検出し、同一の該対象データが連続しているか、つまりダミーデータが存在するか、を検出する(ステップ216)。ダミーデータが存在していればY=1をデコードし、ダミーデータが存在していなければY=0をデコードする(ステップ217)。
【0103】
この第5実施形態の変形例として、ダミーデータの時間位置を示す時間情報(インターバルデータ△T)を、所望の付属情報Yの値に応じて設定することにより、該時間情報に対応する値の付属情報Yを埋め込むようにしてよい。この実施のためには、例えば図17のステップ212での処理を、適宜複数ビットのデータからなる付属情報Yを入力するように変更し、また、ステップ214での処理を、Yの値が0であればダミーデータを追加せずにそのまま処理を終了させ、Yの値が0よりも大きければダミーデータを追加するとともに、該ダミーデータのイベントタイミングつまりインターバルデータ△Tを、Yの値に対応する値に設定するように変更する。この場合、図18でのデコード処理は、ステップ217での処理を、ダミーデータが存在していれば、そのイベントタイミングまでの時間つまりインターバルデータ△Tを取り出して、付属情報Yのデコード値として出力する、というように変更すればよい。
【0104】
この第5実施形態の別の変形例として、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルに設定し、設定したダミーチャンネルに応じた値の電子的透しを埋め込むようにしてもよい。例えば、音源チャンネル0〜8,10〜15の15チャンネルのいずれかをダミーチャンネルに設定することで、付属情報Yの電子的透しを埋め込む場合は、15通りの値をとる付属情報Yを埋め込むことができる。例えば、付属情報Yの値が「8」の場合は、チャンネル順位8の音源チャンネル8をダミーチャンネルに設定する。ここで、音源チャンネル8に既に割り当てられていた演奏データがある場合は、該割り当てられていた演奏データの一揃いを、別の空きチャンネルに割当てし直すようにすればよい。このデコード処理は、演奏データの複数チャンネルの中からダミーチャンネルを検出し、このダミーチャンネルのチャンネル順位(使用しないチャンネル9は除外した順位)から付属情報Yの値をデコードすることで行う。なお、ダミーチャンネルの設定の仕方としては、ダミーチャンネルのフラグを立て、また、該チャンネルにノートオンイベントが存在しないように適宜クリアすることで行う。
【0105】
〔第6実施形態〕
次に、本発明の第6実施形態について説明する。この第6実施形態は、主要情報を構成する音楽演奏データのうちの所定のデータについての統計分布パターンを所定のエンコードアルゴリズムに従って、付属情報に応じて、変更することで、この統計分布パターンの変更形態に対応した電子的透しの形態で付属情報を埋め込むようにしたものである。
【0106】
そのエンコード手法の一例を示す。
1楽曲中(又は所定の部分的曲範囲中)の全演奏データのノートオンイベントに含まれるベロシティデータを所定の基準で複数グループに分類し、各グループ毎に所定の統計数値を求め、その統計数値の分布パターンが、埋め込むべき付属情報Yの値に応じて変更・設定されるように、エンコード処理を行う。
【0107】
まず、第1のカギ情報KEY1により、ベロシティデータVelを分類するグループ数nを設定する。一例として、n=4と設定されたとして説明を進める。
【0108】
次に、第2のカギ情報KEY2により、ベロシティデータVelを分類するための関数f(Vel)を定義する。一例として、f(Vel)は、
f(Vel)=Vel mod n …(式6)
であるとして、以下、説明を進める。
ここで、VelはベロシティデータVelの値である。すなわち、ベロシティデータVelの値を第1のカギ情報KEY1が示す値「n」で割った商の余りが、f(Vel)である。n=4の場合、この余り値は4通りの値0,1,2,3をとるので、この余り値に応じて下記表1のようにグループ0〜3に分類する。また、各グループ毎に所定の統計値として、各グループに属するデータ数の比率(これをそれぞれR0%,R1%,R2%,R3%で示す)を求め、これをオリジナル分布パターンOPとする。
【0109】
[表1]
┃ f(Vel) ┃ OP
━━━━━━╋━━━━━━━━━━━╋━━━━━━━━
グループ0 ┃ Vel mod 4=0 ┃ R0%
グループ1 ┃ Vel mod 4=1 ┃ R1%
グループ2 ┃ Vel mod 4=2 ┃ R2%
グループ3 ┃ Vel mod 4=3 ┃ R3%
なお、R0%+R1%+R2%+R3%=100%であり、オリジナル分布パターンOPが完全に平均化された分布を示す場合は、R0%=R1%=R2%=R3%=25%である。求めたオリジナル分布パターンOPは、適宜保存しておき、デコード用のカギ情報KEY3として利用する。
【0110】
このオリジナル分布パターンOPを、4通りの値をとる付属情報Yの値に応じて、4つの変形分布パターンP1,P2,P3,P4のいずれかに変形することで、付属情報Yの電子的透しのエンコードを行う。このエンコードアルゴリズムは下記の通りである。
パターンP1(例えばY=0のとき):
グループ0に対して:+0と+1を半々に行う
グループ1に対して:+0と+1を半々に行う
グループ2に対して:+0と−1を半々に行う
グループ3に対して:+0と−1を半々に行う
上記における「+0と+1を半々に行う」の意味は、当該グループの半分のベロシティデータVelに対して+0を演算し、残り半分のベロシティデータVelに対して+1を演算すること、つまり+0と+1の演算を交互に行なうこと、を意味する。これにより、+0を演算されたベロシティデータVelは当該グループに残るが、+1を演算されたベロシティデータVelは下位(便宜上、グループ番号の小さいものを上位、大きいものを下位という)のグループに移動することになる。例えば、グループ0では、Vel mod 4=0であったところ、Velに+1すると、Vel mod 4=1となり、下位のグループ1に移動することになる。勿論、この+1又は−1の演算は、ベロシティデータVelの最下位ビットに対してなされるので、ベロシティデータVelの変更量はごく僅かである。なお、音量データの最下位ビットの+1又は−1の変動は、ほとんど聴者に変化として知覚されないので、悪影響はまったくない。
【0111】
また、「+0と−1を半々に行う」の意味は、当該グループの半分のベロシティデータVelに対して+0を演算し、残り半分のベロシティデータVelに対して−1を演算することを意味する。これにより、+0を演算されたベロシティデータVelは当該グループに残るが、−1を演算されたベロシティデータVelは上位グループに移動することになる。例えば、グループ3では、Vel mod 4=3であったところ、Velに−1すると、Vel mod 4=2となり、上位のグループ2に移動することになる。
【0112】
その結果、パターン1における各グループの統計値は、オリジナル分布パターンOPに対して下記のように変更されたものとなる。
パターンP1の統計分布(統計値):
グループ0:(R0/2)% → 12.5 %
グループ1:(R0/2)+(R1/2)+(R2/2)% → 37.5 %
グループ2:(R1/2)+(R2/2)+(R3/2)% → 37.5 %
グループ3:(R3/2)% → 12.5 %
なお、上記で →印を付して付記した具体的数字は、R0%=R1%=R2%=R3%=25%と仮定したときの具体的数値である。
【0113】
他のパターン2,3,4のエンコードアルゴリズム及びその結果の各グループの統計分布(統計値)は下記の通りである。
パターンP2(例えばY=1のとき):
グループ0に対して:+0と+1を半々に行う
グループ1に対して:+0と−1を半々に行う
グループ2に対して:+0と−1を半々に行う
グループ3に対して:+0と+1を半々に行う
パターンP2の統計分布(統計値):
グループ0:(R0/2)+(R1/2)+(R3/2)% → 37.5 %
グループ1:(R0/2)+(R1/2)+(R2/2)% → 37.5 %
グループ2:(R2/2)% → 12.5 %
グループ3:(R3/2)% → 12.5 %
パターンP3(例えばY=2のとき):
グループ0に対して:+0と−1を半々に行う
グループ1に対して:+0と−1を半々に行う
グループ2に対して:+0と+1を半々に行う
グループ3に対して:+0と+1を半々に行う
パターンP3の統計分布(統計値):
グループ0:(R0/2)+(R1/2)+(R3/2)% → 37.5 %
グループ1:(R1/2)% → 12.5 %
グループ2:(R2/2)% → 12.5 %
グループ3:(R0/2)+(R2/2)+(R3/2)% → 37.5 %
パターンP4(例えばY=3のとき):
グループ0に対して:+0と−1を半々に行う
グループ1に対して:+0と+1を半々に行う
グループ2に対して:+0と+1を半々に行う
グループ3に対して:+0と−1を半々に行う
パターンP4の統計分布(統計値):
グループ0:(R0/2)% → 12.5 %
グループ1:(R1/2)% → 12.5 %
グループ2:(R1/2)+(R2/2)+(R3/2)% → 37.5 %
グループ3:(R0/2)+(R2/2)+(R3/2)% → 37.5 %
以上のようなエンコード処理を実現しうるように、適宜、プログラムを組めばよい。図19は以上のようなエンコード処理を実現しうるようにしたプログラムの一例を示す。ステップ218では、埋め込むべき付属情報Yと上記第1及び第2のカギ情報KEY1,KEY2を入力する。前述の通り、説明の便宜上、KEY1によって指定されるnは、n=4であるとし、KEY2によって指定されるエンコード関数は前記(式6)のようであるとして、説明を進める。次のステップ219では、各ベロシティデータVelに対して、前記(式6)の演算を行って、前記表1に示すように、各グループ0〜3のいずれかに各ベロシティデータVelを分類する。また、各グループ0〜3毎に所定の統計処理を行って、前記表1に示すように、オリジナル分布パターンを求め、これを第3のカギ情報KEY3として適宜保存する。次に、ステップ220では、付属情報Yの値に応じて、前記変形分布パターンP1〜P4のいずれかを選択し、選択したパターンP1〜P4に従う上記アルゴリズムに従って、各グループ0〜3の各ベロシティデータVelの値を+1又は+0又は−1する演算を行う。こうして、変更されたベロシティデータVelの統計分布パターンは、選択したパターンP1〜P4の上記統計分布に対応する特性を示す。こうして、付属情報Yの値に対応する統計分布パターンを示すように、各演奏データ中のベロシティデータVelの値が、+1又は+0又は−1というわずかな値だけ変更される。
【0114】
次に、図19の手法に従って所望の付属情報に対応する透し情報を埋め込んでなる演奏データから、付属情報Yをデコードする例について、図20を参照して説明する。図20のデコード処理の仕方は基本的には上記各デコード処理例と同様に、図19のエンコードアルゴリズムの逆算を行うことからなる。まず、デコード用のカギ情報KEY1,KEY2,KEY3を取得する(ステップ221)。次に、ステップ222では、演奏データ中の各ベロシティデータVelに対して、前記(式6)の演算を行って、各グループ0〜3のいずれかに各ベロシティデータVelを分類し、更に、各グループ0〜3毎に所定の統計処理を行って、その統計分布を求め。この統計分布が前記変形分布パターンP1〜P4のいずれに該当するかを検出する。このとき、カギ情報KEY3として与えられるオリジナル分布パターンの各統計値R0,R1,R2,R3を必要に応じて利用して、変形分布パターンP1〜P4の検出処理を行う。ステップ223では、検出したパターンP1〜P4に応じて付属情報Yの値をデコードする。
【0115】
このように、第6実施形態によれば、演奏データ中の所定のデータについての統計分布パターンを変更する構成であるため、仮に意図的であるにせよ、または無意識であるにせよ、演奏データの一部が改竄または編集によって変更されたとしても、統計分布パターンが大きく変わる確率は相対的に低いので、不正利用者による情報改竄防止に役立つと共に、正当利用者による無意識的な付属情報の変更にも対処しうるものである。また、電子的透し情報の埋め込み形態を多様にすることができ、見破られにくい複雑なエンコード化処理のために役立つ。また、所定のデータの変更量が直接的に電子的透し情報を示しておらず、その統計分布パターンが電子的透し情報を示しているので、所定のデータの変更量は上記実施例のように+1又は−1という僅かなものであり、該所定のデータとして+1又は−1程度の誤差に重要性を持たないものを用いれば、かかるデータ値の僅かな変更はまったく音楽再生演奏に悪影響を及ぼさない。勿論、データ値変更の対象となるデータは、ベロシティデータに限らず、他のデータ(例えば時間情報など)であってもよい。
【0116】
なお、ベロシティデータの一部が編集によって変更されたとしても、オリジナル分布パターンOPをカギ情報KEY3で知らせるようにしているので、図20のデコード処理におけるステップ222で求めた統計分布がいずれの変形分布パターンP1〜P4から大きくかけ離れている場合は、ベロシティデータの一部が編集によって変更されたと認識することができ、かつ、その編集内容もある程度推測することができる。その結果、正しい付属情報Yをデコードすることが可能である。
【0117】
上記第6実施形態に示す統計的エンコード手法は、各チャンネル毎に、あるいは演奏シーケンスの部分的区間毎に、等様々なグループ毎に、それぞれ施すことができ、これによって、複数の異なる付属情報Yを電子的透しとしてそれぞれ埋め込むことができる。また、1つのチャンネル内においても、ノート番号のグループ(つまり鍵域)毎に異なる付属情報Yをそれぞれ埋め込むことができる。どのようなグループ分類に従って複数の付属情報Yがエンコードされているかについては、そのグループ分類法を示す第4のカギ情報KEY4を更にデコード側に提供することで、デコード処理に役立てるようにするとよい。
【0118】
〔第7実施形態〕
次に、本発明の第7実施形態について説明する。この第7実施形態は、主要情報の中に付属情報を電子的透しとして埋め込む(エンコードする)際に、1つの付属情報に関連して複数の電子的透し情報を該主要情報内に埋め込み、互いに関連する複数の電子的透し情報の形態で1つの付属情報の電子的透しを埋め込むことを特徴とするものである。これによって、電子的透しの強化を図ることができ、容易には見破られにくい複雑なエンコード化処理のために役立つ。また、付与可能な1つの付属情報のビット数を増すことができ、付与可能な付属情報の情報量を増すことができる。
【0119】
その第1の例として、1つの付属情報Yを複数の部分(例えば上位ビット部分Yaと下位ビット部分Yb)に分割し、分割された各付属情報部分Ya,Yb毎に、各々の電子的透し情報を主要情報内に埋め込む。この場合、付属情報Yの再生は、主要情報から複数の電子的透し情報(Ya,Yb)をそれぞれデコードし、デコードされた各透し情報に対応する前記分割付属情報部分Ya,Ybを組み合わせることで行う。
その第2の例として、所定の第1のエンコードアルゴリズムに従って付属情報の少なくとも一部を第1の電子的透し情報Yとして主要情報に埋め込む一方で、第1のエンコードアルゴリズムに対応するデコード用カギ情報KEY’を第2の電子的透し情報Y’として主要情報に埋め込む。この場合、付属情報の再生は、主要情報から第2の電子的透し情報Y’をデコードし、デコードされた第2の電子的透し情報をデコード用カギ情報KEY’として使用して主要情報から第1の電子的透し情報Yをデコードすることで行う。
【0120】
図21は、上記第1及び第2の例を合わせて実行するエンコードアルゴリズムを示すプログラム例である。ステップ230では、埋め込むべき付属情報Yと複数のカギ情報K1,K2,K3,K4,K5を入力する。ステップ231では、1つの付属情報Yを複数の部分(例えば上位ビット部分Yaと下位ビット部分Yb)に分割する。ステップ232では、第1のカギ情報K1を用いて、所定のエンコードアルゴリズムA1に従って、1つの分割付属情報部分Yaを主要情報の中に埋め込む(エンコードする)。ステップ233では、第2のカギ情報K2を用いて、所定のエンコードアルゴリズムA2に従って、第3のカギ情報K3を主要情報の中に埋め込む(エンコードする)。ステップ234では、第3及び第4のカギ情報K3,K4を用いて、所定のエンコードアルゴリズムA3に従って、第5のカギ情報K5を主要情報の中に埋め込む(エンコードする)。ステップ235では、第5のカギ情報K5を用いて、所定のエンコードアルゴリズムA4に従って、もう一方の分割付属情報部分Ybを主要情報の中に埋め込む(エンコードする)。こうして、各分割付属情報部分Ya,Ybとカギ情報K3,K5とを、電子的透し情報として主要情報の中に埋め込む(エンコードする)。他のカギ情報K1,K2,K4は、デコード処理時において適宜の手段を介してユーザに提供されるようになっていればよい。なお、各エンコードアルゴリズムA1〜A4は同じアルゴリズムであってもよいし、異なっていてもよい。また、第1乃至第6実施形態として前述したエンコードアルゴリズムを適宜利用してよいのは勿論である。
【0121】
図22は、図21の手法に従って所望の付属情報Yに対応する複数の透し情報を埋め込んでなる主要情報データ群から付属情報Yをデコードする手順を、アルゴリズム結線を示すブロック図によって示す。A1,A2,A3,A4の各ブロックは、上記エンコードアルゴリズムA1〜A4のデコード用アルゴリズムを実行するブロックを示す。すなわち、ブロックA1では、前記エンコードアルゴリズムA1に従って主要情報の中に埋め込まれた分割付属情報部分Yaを、第1のカギ情報K1を用いて、デコードする。ブロックA2では、初期値として与えられる第2のカギ情報K2を用いて、前記エンコードアルゴリズムA2に従って主要情報の中に埋め込まれた第3のカギ情報K3を、デコードする。ブロックA3では、デコードされた第3のカギ情報K3と、別途提供される第4のカギ情報K4とを用いて、前記エンコードアルゴリズムA3に従って主要情報の中に埋め込まれた第5のカギ情報K5を、デコードする。ブロックA4では、デコードされた第5のカギ情報K5を用いて、前記エンコードアルゴリズムA4に従って主要情報の中に埋め込まれたもう一方の分割付属情報部分Ybを、デコードする。こうして、それぞれデコードされた分割付属情報部分Ya,Ybを組み合わせることで、所要の付属情報Yを取得する。
【0122】
なお、図22において、ブロックA4からブロックA2にデータがフィードバックされ、このフィードバックデータがカギ情報K2としてブロックA2で使用されるようになっている。このようにカギ情報をループさせることにより、デコード時におけるカギ情報K2の内容を時間的に変化させ、これに伴い、時間経過に伴い異なる付属情報がデコードされるようにすることができる。
【0123】
図23は、別のデコード手順を示すアルゴリズム結線ブロック図であり、B1,B2,B3,B4の各ブロックでは、それぞれ所定のエンコードアルゴリズムB1〜B4でエンコードされた透し情報をそれぞれデコードするためのアルゴリズムを実行する。すなわち、ブロックB1では、エンコードアルゴリズムB1に従って主要情報の中に埋め込まれていた付属情報Y1を、第1のカギ情報K1を用いて、デコードすると共に、主要情報の中に埋め込まれていた第2のカギ情報K2をデコードする。ブロックB2では、デコードした第2のカギ情報K2と別途提供される第3のカギ情報K3とを用いて、主要情報の中に埋め込まれていた第4のカギ情報K4をデコードする。ブロックB3では、デコードした第4のカギ情報K4を用いて、主要情報の中に埋め込まれていた第5のカギ情報K5をデコードする。また、ブロックB3からB2にカギ情報K3のフィードバックループが形成されている。ブロックB4では、デコードした第5のカギ情報K5と別途提供される第6のカギ情報K6とを用いて、主要情報の中に埋め込まれていた付属情報Y2をデコードする。こうして、2つの付属情報Y1,Y2がデコードされる。なお、図22や図23に示す複数デコードアルゴリズムの相互結線状態を適宜のカギ情報によって設定するようにしてもよい。
【0124】
本発明は、上記各実施例に示した形態に限らず、他の如何なる変形を施した形態でも実施することができる。また、本発明に従うソフトウェアプログラムをコンピュータ又はマイクロプロセッサ又はDSP(ディジタルシグナルプロセッサで実行する形態に限らず、本発明に従うエンコード処理及び/又はデコード処理を実現するようにICあるいはLSIあるいはディスクリート回路群等でハードワイアードロジックで構成されたハードウェア装置又はシステムを用いて、上記各実施例と同等の機能を発揮する装置又はシステムを構成することもできる。
【0125】
上記のすべての実施例に関連して、本発明は、主要情報内に付属情報を組み込んで記憶するための方法又は装置として構成することができ、さらには、その方法を実施するためのプログラムを記録した記録媒体として構成することができ、さらには、その方法に従って記録されたデータ構造を持つデータを記憶した記録媒体として構成することができる。
【0126】
更に、上記のすべての実施例に関連して、本発明は、付属情報を組み込んで記憶してなる主要情報から、該付属情報を抽出し再生するための方法又は装置として構成することができ、さらには、その方法を実施するためのプログラムを記録した記録媒体として構成することができる。
【0127】
勿論、上記のすべての実施例において、図1に示されたハードウェア装置は、パーソナルコンピュータに限らず、マイクロプロセッサ又はDSP等の処理装置を含む他の電子装置・機器によって置き換えることができる。また、音楽演奏の再生機器あるいは電子楽器や楽音の合成/制御処理の分野に限らず、どのような電子情報を取り扱う分野ででも本発明を適用することができる。また、演奏データを取り扱う場合でも、そのデータフォーマットは図3に例示したようなものにはまったく限定されず、如何なるデータフォーマットからなるものに対しても本発明を適用することができる。
【0128】
また、上記各実施例において、必要な付属情報のすべてを主要情報内に組み込む(埋め込む)ことなく、付属情報の一部を主要情報内に組み込む(埋め込む)ようにしてもよいのは勿論である。その場合、主要情報内に組み込まなかった残りの付属情報は、適当な領域に別途記憶しておいてもよい。
【0129】
上記のすべての実施例に関連して、付属情報を組み込んだ状態からなる主要情報を通信ネットワークを介して伝送するようにしてもよい。その場合、受信側では、通信ネットワークを介して伝送されたデータを受信し、受信したデータにおける主要情報からストリーミングデータのままリアルタイムでデコード処理を行うようにしてもよいし、それができない場合は、受信したデータ群を適宜バッファ記憶してからデコード処理を行うようにしてもよい。
【0130】
以上の通り、本発明によれば、主要情報に対する付属情報の埋め込み法に工夫を施したユニークな電子情報処理方法及びシステム並びに記録媒体を提供することができ、オーソライズされていない不正利用者によって見破られることの起こりにくい、従って、不正利用者による意図的な改竄のしにくい、電子情報処理方法及びシステム並びに記録媒体を提供することができ、また、正当利用者による無意識のうちの付属情報の変更も起こりにくいようにした電子情報処理方法及びシステム並びに記録媒体を提供することができる。
【図面の簡単な説明】
【0131】
【図1】本発明の各実施形態に共通のパーソナルコンピュータ装置を示すブロック図。
【図2】(A)はパーソナルコンピュータ装置のエンコード機能を説明するための機能ブロック図、(B)はパーソナルコンピュータ装置のデコード機能を説明するための機能ブロック図。
【図3】演奏データのフォーマット図。
【図4】本発明の第1実施形態に係るエンコードプログラムのフローチャート。
【図5】本発明の第1実施形態に係るデコードプログラムのフローチャート。
【図6】本発明の第1実施形態に係る別のエンコードプログラムのフローチャート。
【図7】図6に対応するデコードプログラムのフローチャート。
【図8】本発明の第1実施形態に係る更に別のエンコードプログラムのフローチャート。
【図9】図8に対応するデコードプログラムのフローチャート。
【図10】本発明の第1実施形態に係る更に他のエンコードプログラムのフローチャート。
【図11】本発明の第2実施形態に係るエンコードプログラムのフローチャート。
【図12】本発明の第2実施形態に係るデコードプログラムのフローチャート。
【図13】本発明の第3実施形態に係るエンコードプログラムのフローチャート。
【図14】本発明の第3実施形態に係るデコードプログラムのフローチャート。
【図15】本発明の第4実施形態に係るエンコードプログラムのフローチャート。
【図16】本発明の第4実施形態に係るデコードプログラムのフローチャート。
【図17】本発明の第5実施形態に係るエンコードプログラムのフローチャート。
【図18】本発明の第5実施形態に係るデコードプログラムのフローチャート。
【図19】本発明の第6実施形態に係るエンコードプログラムのフローチャート。
【図20】本発明の第6実施形態に係るデコードプログラムのフローチャート。
【図21】本発明の第7実施形態に係るエンコードプログラムのフローチャート。
【図22】本発明の第7実施形態に係るデコード処理のアルゴリズム結線例を示すブロック図。
【図23】本発明の第7実施形態に係る別のデコード処理のアルゴリズム結線例を示すブロック図。
【符号の説明】
【0132】
11…CPU、12…ROM、13…RAM、14…内部記憶装置、15…ドライブユニット、16…入力装置、21…通信インターフェース、22…音源回路、30A…エンコーダ、30B…デコーダ。
【特許請求の範囲】
【請求項1】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加するステップ
を具備し、前記主要情報におけるダミーデータに応じた電子的透しを埋め込むことを特徴とする方法。
【請求項2】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータを付加するステップと、
前記ダミーデータの時間位置を示す時間情報を、所望の付属情報に応じて設定するステップと
を具備し、前記主要情報におけるダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込むことを特徴とする方法。
【請求項3】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加するステップ
を具備し、付加したダミーチャンネルに応じた電子的透しが前記主要情報に埋め込まれることを特徴とする方法。
【請求項4】
請求項1乃至3のいずれかの方法に従って電子的透しが埋め込まれた主要情報から前記付属情報をデコードする電子情報処理方法であって、
前記エンコードアルゴリズムに対応するデコード用カギ情報を提供するステップと、
前記提供されたカギ情報に基づき前記エンコードアルゴリズムの逆算を行うことで、前記主要情報に隠されていた前記付属情報をデコードするステップと
を具備する方法。
【請求項5】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理装置であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加する手段
を具備し、前記主要情報におけるダミーデータに応じた電子的透しを埋め込むことを特徴とする電子情報処理装置。
【請求項6】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理装置であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータを付加する手段と、
前記ダミーデータの時間位置を示す時間情報を、所望の付属情報に応じて設定する手段と
を具備し、前記主要情報におけるダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込むことを特徴とする電子情報処理装置。
【請求項7】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理装置であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加する手段
を具備し、付加したダミーチャンネルに応じた電子的透しが前記主要情報に埋め込まれることを特徴とする電子情報処理装置。
【請求項8】
請求項1乃至3のいずれかの方法に従って若しくは請求項5乃至7のいずれかの装置に従って電子的透しが埋め込まれた主要情報から前記付属情報をデコードする電子情報処理装置であって、
前記エンコードアルゴリズムに対応するデコード用カギ情報を提供する手段と、
前記提供されたカギ情報に基づき前記エンコードアルゴリズムの逆算を行うことで、前記主要情報に隠されていた前記付属情報をデコードする手段と
を具備する電子情報処理装置。
【請求項9】
請求項1乃至4のいずれかに記載の方法における各ステップをコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項1】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加するステップ
を具備し、前記主要情報におけるダミーデータに応じた電子的透しを埋め込むことを特徴とする方法。
【請求項2】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータを付加するステップと、
前記ダミーデータの時間位置を示す時間情報を、所望の付属情報に応じて設定するステップと
を具備し、前記主要情報におけるダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込むことを特徴とする方法。
【請求項3】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理方法であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加するステップ
を具備し、付加したダミーチャンネルに応じた電子的透しが前記主要情報に埋め込まれることを特徴とする方法。
【請求項4】
請求項1乃至3のいずれかの方法に従って電子的透しが埋め込まれた主要情報から前記付属情報をデコードする電子情報処理方法であって、
前記エンコードアルゴリズムに対応するデコード用カギ情報を提供するステップと、
前記提供されたカギ情報に基づき前記エンコードアルゴリズムの逆算を行うことで、前記主要情報に隠されていた前記付属情報をデコードするステップと
を具備する方法。
【請求項5】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理装置であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、或る演奏制御データ又は非演奏データに続けてそれと同一の演奏制御データ又は非演奏データを付加する手段
を具備し、前記主要情報におけるダミーデータに応じた電子的透しを埋め込むことを特徴とする電子情報処理装置。
【請求項6】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理装置であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータを付加する手段と、
前記ダミーデータの時間位置を示す時間情報を、所望の付属情報に応じて設定する手段と
を具備し、前記主要情報におけるダミーデータの時間位置を示す時間情報に応じた電子的透しを埋め込むことを特徴とする電子情報処理装置。
【請求項7】
音楽演奏データからなる主要情報の中に付属情報を電子的透しとして埋め込む電子情報処理装置であって、
所定のエンコードアルゴリズムに従って、前記主要情報に対してダミーデータとして、複数の音源チャンネルのうち任意のチャンネルを発音に使用しないダミーチャンネルを付加する手段
を具備し、付加したダミーチャンネルに応じた電子的透しが前記主要情報に埋め込まれることを特徴とする電子情報処理装置。
【請求項8】
請求項1乃至3のいずれかの方法に従って若しくは請求項5乃至7のいずれかの装置に従って電子的透しが埋め込まれた主要情報から前記付属情報をデコードする電子情報処理装置であって、
前記エンコードアルゴリズムに対応するデコード用カギ情報を提供する手段と、
前記提供されたカギ情報に基づき前記エンコードアルゴリズムの逆算を行うことで、前記主要情報に隠されていた前記付属情報をデコードする手段と
を具備する電子情報処理装置。
【請求項9】
請求項1乃至4のいずれかに記載の方法における各ステップをコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2008−70872(P2008−70872A)
【公開日】平成20年3月27日(2008.3.27)
【国際特許分類】
【出願番号】特願2007−228398(P2007−228398)
【出願日】平成19年9月3日(2007.9.3)
【分割の表示】特願2001−36211(P2001−36211)の分割
【原出願日】平成11年8月31日(1999.8.31)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】
【公開日】平成20年3月27日(2008.3.27)
【国際特許分類】
【出願日】平成19年9月3日(2007.9.3)
【分割の表示】特願2001−36211(P2001−36211)の分割
【原出願日】平成11年8月31日(1999.8.31)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】
[ Back to top ]