(57)【特許請求の範囲】
【請求項１】
複数のイベントデータで構成される第１の情報を入力するステップと、
前記イベントデータを２以上のグループに分類するステップと、
前記第１の情報とは異なる第２の情報を入力するステップと、
前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、
前記第２の情報が埋め込まれた前記第１の情報を出力するステップと
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする電子情報処理方法。
【請求項２】
２以上のイベント種別でなる複数のイベントデータで構成される第１の情報を入力するステップと、
前記イベント種別毎に前記イベントデータを２以上のグループに分類するステップと、
前記第１の情報とは異なる第２の情報を入力するステップと、
前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、
前記第２の情報が埋め込まれた前記第１の情報を出力するステップと
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする電子情報処理方法。
【請求項３】
それぞれ所定のパラメータを含む複数のイベントデータで構成される第１の情報を入力するステップと、
前記パラメータの内容に応じて前記イベントデータを２以上のグループに分類するステップと、
前記第１の情報とは異なる第２の情報を入力するステップと、
前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、
前記第２の情報が埋め込まれた前記第１の情報を出力するステップと
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする電子情報処理方法。
【請求項４】
複数のイベントデータで構成される第１の情報を入力するステップと、
前記イベントデータを２以上のグループに分類するステップと、
前記第１の情報とは異なる第２の情報を入力するステップと、
前記２以上に分類された各グループ毎に、当該グループに含まれるイベントデータの内容を、同じ前記第２の情報を用いて演算処理により変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、
前記第２の情報が埋め込まれた前記第１の情報を出力するステップと
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込み、かつ、前記演算処理を各グループ毎に異ならせることを特徴とする電子情報処理方法。
【請求項５】
複数のイベントデータで構成される第１の情報を入力するステップであって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が所定の演算処理に従い各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれた前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記イベントデータを前記２以上のグループに分類するステップと、
前記分類されたイベントデータのうち少なくとも一つのグループから該グループに含まれるイベントデータに埋め込まれている前記第２の情報を前記所定の演算処理に基づいて復号し抽出するステップと、
前記抽出した第２の情報を出力するステップと
からなる電子情報処理方法。
【請求項６】
２以上のイベント種別でなる複数のイベントデータで構成される第１の情報を入力するステップであって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が所定の演算処理に従い各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれている前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記イベント種別毎に前記イベントデータを前記２以上のグループに分類するステップと、
前記分類されたイベントデータのうち少なくとも一つのグループから該グループに含まれるイベントデータに埋め込まれている前記第２の情報を前記所定の演算処理に基づいて復号し抽出するステップと、
前記抽出した第２の情報を出力するステップと
からなる電子情報処理方法。
【請求項７】
それぞれ所定のパラメータを含む複数のイベントデータで構成される第１の情報を入力するステップであって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が所定の演算処理に従い各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれている前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記パラメータの内容に応じて前記イベントデータを前記２以上のグループに分類するステップと、
前記分類されたイベントデータのうち少なくとも一つのグループから該グループに含まれるイベントデータに埋め込まれている前記第２の情報を前記所定の演算処理に基づいて復号し抽出するステップと、
前記抽出した第２の情報を出力するステップと
からなる電子情報処理方法。
【請求項８】
複数のイベントデータで構成される第１の情報を入力するステップであって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が、各グループ毎にそれぞれ異なる所定の演算処理に従い、各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれている前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記イベントデータを前記２以上のグループに分類するステップと、
前記分類されたイベントデータのうち少なくとも一つのグループから、当該グループに含まれるイベントデータに埋め込まれている前記第２の情報を、当該グループについての前記所定の演算処理に基づいて、復号し抽出するステップと、
前記抽出した第２の情報を出力するステップと
からなる電子情報処理方法。
【請求項９】
請求項１乃至８のいずれかに記載の方法をコンピュータに実行させるためのプログラムを記憶した機械読み取り可能な記憶媒体。
【請求項１０】
複数のイベントデータで構成される第１の情報を入力する手段と、
前記イベントデータを２以上のグループに分類する手段と、
前記第１の情報とは異なる第２の情報を入力する手段と、
前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込む手段と、
前記第２の情報が埋め込まれた前記第１の情報を出力する手段と
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする電子情報処理装置。
【請求項１１】
２以上のイベント種別でなる複数のイベントデータで構成される第１の情報を入力する手段と、
前記イベント種別毎に前記イベントデータを２以上のグループに分類する手段と、
前記第１の情報とは異なる第２の情報を入力する手段と、
前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込む手段と、
前記第２の情報が埋め込まれた前記第１の情報を出力する手段と
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする電子情報処理装置。
【請求項１２】
それぞれ所定のパラメータを含む複数のイベントデータで構成される第１の情報を入力する手段と、
前記パラメータの内容に応じて前記イベントデータを２以上のグループに分類する手段と、
前記第１の情報とは異なる第２の情報を入力する手段と、
前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込む手段と、
前記第２の情報が埋め込まれた前記第１の情報を出力する手段と
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする電子情報処理装置。
【請求項１３】
複数のイベントデータで構成される第１の情報を入力する手段と、
前記イベントデータを２以上のグループに分類する手段と、
前記第１の情報とは異なる第２の情報を入力する手段と、
前記２以上に分類された各グループ毎に、当該グループに含まれるイベントデータの内容を、同じ前記第２の情報を用いて演算処理により変更することにより、前記第１の情報に前記第２の情報を埋め込む手段と、
前記第２の情報が埋め込まれた前記第１の情報を出力する手段と
からなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込み、かつ、前記演算処理を各グループ毎に異ならせることを特徴とする電子情報処理装置。
【請求項１４】
複数のイベントデータで構成される第１の情報を入力する手段であって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が所定の演算処理に従い各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれた前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記イベントデータを前記２以上のグループに分類する手段と、
前記分類されたイベントデータのうち少なくとも一つのグループから該グループに含まれるイベントデータに埋め込まれている前記第２の情報を前記所定の演算処理に基づいて復号し抽出する手段と、
前記抽出した第２の情報を出力する手段と
からなる電子情報処理装置。
【請求項１５】
２以上のイベント種別でなる複数のイベントデータで構成される第１の情報を入力する手段であって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が所定の演算処理に従い各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれている前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記イベント種別毎に前記イベントデータを前記２以上のグループに分類する手段と、
前記分類されたイベントデータのうち少なくとも一つのグループから該グループに含まれるイベントデータに埋め込まれている前記第２の情報を前記所定の演算処理に基づいて復号し抽出する手段と、
前記抽出した第２の情報を出力する手段と
からなる電子情報処理装置。
【請求項１６】
それぞれ所定のパラメータを含む複数のイベントデータで構成される第１の情報を入力する手段であって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が所定の演算処理に従い各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれている前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記パラメータの内容に応じて前記イベントデータを前記２以上のグループに分類する手段と、
前記分類されたイベントデータのうち少なくとも一つのグループから該グループに含まれるイベントデータに埋め込まれている前記第２の情報を前記所定の演算処理に基づいて復号し抽出する手段と、
前記抽出した第２の情報を出力する手段と
からなる電子情報処理装置。
【請求項１７】
複数のイベントデータで構成される第１の情報を入力する手段であって、該第１の情報には、２以上のグループに分類された前記イベントデータにおいて該第１の情報とは異なる第２の情報が、各グループ毎にそれぞれ異なる所定の演算処理に従い、各グループ毎にそれぞれ埋め込まれており、かつ、各グループに埋め込まれている前記第２の情報は同一であり、
前記入力した第１の情報に含まれる前記イベントデータを前記２以上のグループに分類する手段と、
前記分類されたイベントデータのうち少なくとも一つのグループから、当該グループに含まれるイベントデータに埋め込まれている前記第２の情報を、当該グループについての前記所定の演算処理に基づいて、復号し抽出する手段と、
前記抽出した第２の情報を出力する手段と
からなる電子情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、楽音制御情報（ＭＩＤＩデータ）などの主要情報（第１の情報）の中にそれに関連した付属情報（第２の情報）を組み込んで記憶する電子情報処理方法及び装置に関し、また、そのように付属情報を組み込んで記憶した主要情報から付属情報を検出（再生）する電子情報処理方法及び装置若しくはシステムに関し、更に、この電子情報処理方法を実現するためのソフトウェアプログラムを記憶した記憶媒体に関し、更に、これらの方法に従って主要情報内に付属情報を組み込んだ状態のデータ構成からなるデータを記憶してなる記憶媒体に関する。
【０００２】
【従来の技術】
最近では、パーソナルコンピュータを使用して、ユーザ自身が音楽データ、映像データ及び波形データなどを作成したり、それらに種々の変更を加えたりすることが容易にできるようになった。
従って、パーソナルコンピュータを使用することによって、市販のＦＤ、ＣＤ−ＲＯＭ、ＬＤなどの記憶媒体に記録された音楽データ、映像データ及び波形データなども自由に読み出して、それらに種々の変更処理を加えたりすることができる。
市販のＣＤ−ＲＯＭやＬＤなどに記録されているデータは、その販売者や製作者などに著作権があるため、本来それらを自由に改変することは、著作権侵害の観点から許されるものではない。
従って、現在では、ＣＤ−ＲＯＭやＬＤなどの主データ記憶部に記録されている音楽データ、映像データ又は波形データなど、主データの著作権がだれに属するものなのかを示すための著作権表示データを、主データ記憶部とは別のヘッダ部に付属情報として付加的に記録することによって、著作権者を明示し、著作権侵害の未然防止を図っているのが現状である。
また、付属情報には、このような著作権表示データの他にも、その音楽データ、映像データ及び波形データの題名などを示す情報、又はその映像データや波形データなどがどのようなデータ圧縮技術で圧縮されているのかなどのデータ記録形式を示す情報などがある。
【０００３】
【発明が解決しようとする課題】
しかしながら、現在では、パーソナルコンピュータなどを使って自由にデータを書き換えたり変更したりすることができるので、故意又は過失によって、著作権表示データや種々の付属情報が削除されたり、書き換えられたりするという問題がある。特に、これらの付属情報がヘッダ部にまとまってストアされている場合は、削除や改竄が容易になされてしまう、という問題がある。
また、最近ではネットワーク通信の発達に伴って、このように著作権表示データの削除や改竄のなされた音楽データ、映像データ又は波形データなどがネットワークを通じて不正に広く流通してしまうという問題も起き易い。また、データ記録形式に関する付属情報が削除されると、その映像データや波形データなどを再生することができなくなるという問題もある。
本発明は、上述の点に鑑みてなされたものであり、音楽データなどのような複数のイベントデータで構成される主要情報（第１の情報）に付属して付属情報（第２の情報）を記憶し流通させる場合において、付属情報の不正な削除や改変がしにくい形態でこれらの情報を記憶させるようにし、また、仮に情報の部分的削除や改変がなされた場合でも付属情報を適確に再現することができるようにした、電子情報処理方法及び装置若しくはシステム並びに記憶媒体を提供することを目的とする。
【０００４】
【課題を解決するための手段】
第１の観点に従えば、この発明に係る電子情報処理方法は、複数のイベントデータで構成される第１の情報を入力するステップと、前記イベントデータを２以上のグループに分類するステップと、前記第１の情報とは異なる第２の情報を入力するステップと、前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、前記第２の情報が埋め込まれた前記第１の情報を出力するステップとからなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする。
第２の観点に従えば、この発明に係る電子情報処理方法は、２以上のイベント種別でなる複数のイベントデータで構成される第１の情報を入力するステップと、前記イベント種別毎に前記イベントデータを２以上のグループに分類するステップと、前記第１の情報とは異なる第２の情報を入力するステップと、前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、前記第２の情報が埋め込まれた前記第１の情報を出力するステップとからなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする。
第３の観点に従えば、この発明に係る電子情報処理方法は、それぞれ所定のパラメータを含む複数のイベントデータで構成される第１の情報を入力するステップと、前記パラメータの内容に応じて前記イベントデータを２以上のグループに分類するステップと、前記第１の情報とは異なる第２の情報を入力するステップと、前記分類されたグループ毎に、イベントデータの内容を同じ前記第２の情報に基づいて変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、前記第２の情報が埋め込まれた前記第１の情報を出力するステップとからなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込むことを特徴とする。
第４の観点に従えば、この発明に係る電子情報処理方法は、複数のイベントデータで構成される第１の情報を入力するステップと、前記イベントデータを２以上のグループに分類するステップと、前記第１の情報とは異なる第２の情報を入力するステップと、前記２以上に分類された各グループ毎に、当該グループに含まれるイベントデータの内容を、同じ前記第２の情報を用いて演算処理により変更することにより、前記第１の情報に前記第２の情報を埋め込むステップと、前記第２の情報が埋め込まれた前記第１の情報を出力するステップとからなり、前記第１の情報の中に同じ前記第２の情報を複数のグループ間で重複して埋め込み、かつ、前記演算処理を各グループ毎に異ならせることを特徴とする。
このように第１の情報における各グループ毎に同じ第２の情報を埋め込むようにしたことにより、第１の情報の２以上のグループ間で同じ第２の情報が重複して埋め込まれることになる。従って、或るグループのデータの改変等が行われたとしても、改変されていない別のグループからそのデータ内の埋め込まれた第２の情報を再生することができるような、埋め込み形態（記憶形態）となっている。
別の観点に従えば、この発明に係る電子情報処理方法は、上記第１乃至第４の観点に従ういずれかの方法で同じ第２の情報が重複して埋め込まれている第１の情報を入力し、この第１の情報中の何れかのグループから、埋め込まれている第２の情報を抽出し、出力するものである。これにより、第２の情報をデコードすることができる。
別の観点に従えば、この発明に係る機械読み取り可能な記憶媒体は、上記各観点に従ういずれかの方法をコンピュータに実行させるためのプログラムを記憶したものである。
更に別の観点に従えば、この発明に係る電子情報処理装置は、上記各観点に従ういずれかの方法を実施するよう構成された電子情報処理装置である。
【０００５】
次に、以下説明する実施例に関連して概略を説明する。
実施例に係る電子情報処理システムは、主要情報とそれに関する付属情報とを適宜の記憶装置又は回路あるいは媒体に記録するものである。例えば、主要情報としては、ＭＩＤＩデータのキーオンイベントデータ、プログラムチェンジデータ又はコントロールチェンジデータなど複数のイベントデータで構成される任意の種類の情報を採用してよい。付属情報としては、著作者名、曲の題名、画像／映像の題名などに関する文字データや波形データの圧縮方法などのデータ形式に関するデータやその他の種々のデータ（暗号文、鍵情報、ＩＤ、パスワード、ニュース文）など、任意の種類の情報を採用してよい。この電子情報付与装置は、主要情報を構成するデータ群の中の所定のデータ群として、ＭＩＤＩデータの場合にはキーオンイベントデータ群を用い、このキーオンイベントデータ群の中の単位データとして、ベロシティデータの一部（例えば最下位ビット）を、その付属情報のデータに基づいて変更する。従って、付属情報のデータに応じて、そのベロシティデータの一部（例えば最下位ビット）の値が変更されるか又は変更されない、といった制御がなされる。これによって、付属情報のデータがＭＩＤＩデータ群の中に分散して記録されるようになる。なお、主要情報がＭＩＤＩデータの場合には、変更される単位データはベロシティデータやデュレーションタイムデータが望ましい。なぜなら、これらのデータはさほど厳密性を要求されないデータだからである。すなわち、これらの情報が多少変更されても音声データの場合聴感状ではほとんど感知（知覚）されないからである。
【０００６】
実施例において、主要情報を構成するデータ群の中のデータ特性に応じて分類された少なくとも２以上のデータ群の中の各単位データの一部を、付属情報の一部又は全部のデータに基づいて、前記分類に対応したアルゴリズムに従って変更することによって、前記付属情報の一部又は全部のデータを前記主要情報を構成するデータ群に分散して記録するように構成される。
この場合、付属情報の分散記録される主要情報をそのデータ特性に応じて分類し、各分類に対応したアルゴリズムで単位データの一部を変更している。すなわち、主要情報がＭＩＤＩデータの場合には、チャンネル情報がそのまま入れ替えられたり、キーコードがシフトされたりすると、もはや付属情報を主要情報の中から検出することができなくなることがある。そこで、チャンネル毎、プログラムチェンジデータの出現タイミング毎、又はＭＩＤＩデータを構成するベロシティの差分値の大きさ毎等に応じて主要情報を分類し、それぞれの分類に対応したアルゴリズムで単位データの一部を変更するようにした。これによって、チャンネル情報がそのまま入れ替えられたりしてデータが書き換えられたとしてもいずれかのアルゴリズムに応じて付属情報が検出されるようになる。
【０００７】
実施例において、上記のように付属情報を組み込んで記憶された主要情報を構成するデータ群から、付属情報の一部又は全部のデータを検出（再生）する機能を具備している。
なお、主要情報として上述のように最下位ビットのデータ変更によっては実用上大きな影響を受けない種類の情報を採用した場合は、付属情報を組み込んだ主要情報を読み出して、これを再生利用するとき、該主要情報から付属情報のデータ片を取り除くことなく、これをそのままにして再生してもよい。勿論、これに限らず、主要情報から付属情報のデータ片を取り除いて、正確な主要情報を再生するようにしてもよい。
実施例において、上記のように付属情報を組み込んで記憶された主要情報を構成するデータ群を、電子的記憶媒体又は通信ネットワークを介して配信し、配信されたデータ群から前記付属情報の一部又は全部のデータを検出（再生）する機能を具備する。
【０００８】
実施例において、上記のように付属情報を組み込んで記憶された主要情報を構成するデータ群から、付属情報の一部又は全部のデータを検出（再生）し、この検出（再生）した付属情報を画面上に表示する表示手段を有する。例えば、付属情報として、文字情報や波形データ圧縮方法などのデータ記録形式に関する情報、あるいはその他の種々の情報（暗号文、鍵情報、ＩＤ、パスワード、ニュース文などの情報）を採用して、これを任意の主要情報に組み込んで記憶する。そして、主要情報から付属情報を取り出して再生し、これを画面上に表示する。その場合、通信ネットワークを介して時々刻々と配信されてくる主要情報からそこに組み込まれている付属情報を取り出して時々刻々と再生し、この再生情報をストリーミングに表示することができる。
実施例において、電子的記憶媒体としては、フロッピーディスクやＣＤ−ＲＯＭあるいは光磁気ディスクなどの可搬式媒体であってもよく、また、ハードディスク装置のような固定式媒体であってもよい。
【０００９】
実施例において、第１の情報を構成するデータと共に第２の情報を構成するデータを記憶する方法であって、前記第１の情報を構成するデータは複数のデータ単位の集まりからなっており、前記第２の情報を構成するデータの少なくとも一部を、複数の小サイズのデータ片に分けるステップと、前記第１の情報の複数のデータ単位のうちの特定のデータ単位の各々の値を、前記各データ片の値に応じて変更するもしくは変更しない制御を行なうステップと、制御された前記特定のデータ単位を含む前記第１の情報のデータを記憶するステップとを具え、前記第２の情報を構成するデータの少なくとも一部が前記第１の情報のデータ内に組み込んだ状態で記憶されるようにしたことを特徴とする。
前記第１の情報は主要情報に相当するものであり、例えば、ＭＩＤＩ形式の音楽演奏情報であってよく、全体として大きな情報量を持ち、メモリにおいては所定の主データ記憶領域に記憶されるようなものである。前記第２の情報は付属情報に相当するものであり、例えば、そのような主データ記憶領域に記憶された音楽演奏情報つまり第１の情報の、著作権表示に関する情報であってよく、音楽演奏情報つまり第１の情報に比べて小規模な情報量からなるであってよい。例えば、この発明によれば、第１の情報つまり主要情報は所定の主データ記憶領域に記憶され、第２の情報つまり付属情報は、ヘッダ領域ではなく、主データ記憶領域内で、第１の情報を構成するデータに組み込まれて記憶されるようになっていてよい。この場合、第２の情報つまり付属情報の全てが、第１の情報を構成するデータに組み込まれて記憶されるようになっていてもよいし、あるいは、第２の情報つまり付属情報の一部が、第１の情報を構成するデータに組み込まれて記憶されるようになっていてもよい。
【００１０】
第２の情報を構成するデータの全部又は一部が、複数の小サイズのデータ片（例えば１つのデータ片が１ビットまたは数ビットからなっていてよい）に分けられる。第１の情報を構成するデータは、複数のデータ単位の集まりからなっている。１つの特定のデータ単位の値を１つのデータ片に応じて変調することにより、該データ片の値を特定のデータ単位の値の中に組み込むようにしているので、換言すれば、第１の情報の“データ単位”とは、１つのデータ片の値を組み込もうとする単位に相当している。従って、“データ単位”のサイズは、本発明の実施にあたって設計上任意に定めてよく、例えば、１バイトあるいは数バイトのような単位であってよい。
第１の情報を構成する複数のデータ単位のうち特定のデータ単位に対して、第２の情報の各データ片の値を組み込む。例えば、第２の情報のデータ片の数が１６個とすると、第１の情報を構成する複数のデータ単位のうち特定の１６個のデータ単位に対して、第２の情報の各データ片の値をそれぞれ組み込む。この組み込みは、所定のアルゴリズムに従って、特定のデータ単位の値を、データ片の値に応じて変調する（すなわち、該特定のデータ単位の値を変更しない／あるいは或る値だけ変更する）演算を行なうことによって行なう。こうして、第１の情報のデータの中に、第２の情報の各データ片が分散的に組み込まれることになり、このように第２の情報の各データ片を分散的に組み込んだ第１の情報のデータが適宜のメモリにストアされる。
【００１１】
第２の情報の各データ片を分散的に組み込んだ第１の情報のデータから、該第２の情報を再生するために、更に、記憶された前記第１の情報のデータを読み出すステップと、読み出された前記第１の情報のデータのうちの前記特定のデータ単位から、前記複数の小サイズのデータ片をそれぞれ再現するステップとを更に具えるようにしてよい。
第１の情報の複数のデータ単位のうちの特定のデータ単位の各々の値を、前記各データ片の値に応じて変更するもしくは変更しない制御を行なうステップは、該データ片の値をパラメータとする所定のアルゴリズムに従って該制御を行なうようにしてよい。例えば、このアルゴリズムは、前記データ片の値に対応する第１の変数を求めることと、少なくとも１つの前記特定のデータ単位を含む前記第１の情報の所定数のデータ単位を加算又は減算することに基づいて第２の変数を求めることと、前記第１の変数と第２の変数の相互関係に基づき演算値を生成することと、生成された演算値を前記特定のデータ単位の値に演算することとを含んでいてよい。一例として、前記第１の変数は、１ビットの前記データ片の値を反転した第１のフラグであり、前記第２の変数は、少なくとも１つの前記特定のデータ単位を含む前記第１の情報の所定数のデータ単位を加算又は減算した値（例えば特定のデータ単位の値のみであってもよい）の偶数又は奇数に応じた第２のフラグであり、前記第１の変数と第２の変数の相互関係に基づき演算値を生成することは、両フラグを比較してその一致／不一致に応じて０又は１の演算値を生成することである。これにより、特定のデータ単位の値に０又は１が演算され、該特定のデータ単位の値が変調される（すなわち、変更されないか、または或る値だけ変更される）。このようにした場合は、読み出された第１の情報における前記特定のデータ単位の値の偶数又は奇数に応じた数値に基づき、第２の情報のデータ片の値を容易に再生することができる。
【００１２】
実施例において、第１の情報を構成するデータは複数のデータ単位の集まりからなっており、第２の情報を構成するデータの少なくとも一部を、複数の小サイズのデータ片に分けるステップと、前記第１の情報を構成するデータを少なくとも２つのグループに分け、各グループ毎に、その中の複数のデータ単位のうちの特定のデータ単位の各々の値を、前記各データ片の値に応じて変更するもしくは変更しない制御をそれぞれ行なうステップと、各グループ毎に制御された前記特定のデータ単位を含む前記第１の情報のデータを記憶するステップとを具え、前記第２の情報を構成するデータの少なくとも一部が前記第１の情報の前記各グループ毎のデータ内にそれぞれ組み込まれた状態で記憶される。
これによれば、第１の情報における複数のグループの各々において、データ片に分割された第２の情報が、それぞれ分散的に組み込まれて、重複して、ストアされる。データ再生にあたっては、少なくとも１つの前記グループについての前記特定のデータ単位から、前記複数の小サイズのデータ片を再現すればよい。すなわち、各グループにおいて、重複して、第２の情報が分散的に組み込まれていめので、いずれか１つのグループに組み込まれた第２の情報を再生すればよい。従って、この第２の観点に従えば、仮に、不正なデータ改竄によって、第１の情報における１つのグループのデータ内容が改竄され、そのグループにおいて組み込まれた第２の情報が再生不可能となったとしても、第１の情報における（改竄されていない）別のグループにおいて組み込まれた第２の情報を再生することができる。
【００１３】
第１の情報におけるグループ分けの仕方は、第１の情報のデータ特性に従うとよい。例えば、第１の情報がＭＩＤＩデータの場合は、ＭＩＤＩチャンネル毎にグループ分けするとよい。例えば、ＭＩＤＩの第１チャンネルに属する第１の情報のデータ群において第２の情報のデータ片を分散して組み込み、また、第２チャンネルに属する第１の情報のデータ群において同じ第２の情報のデータ片を分散して組み込むようにする。そうすれば、不正使用ユーザーによって、チャンネル単位でＭＩＤＩデータの改竄や入れ替えが行なわれた場合でも、改竄されていない別チャンネルのＭＩＤＩデータの中に組み込まれた第２の情報のデータ片から該第２の情報を再生することができる。この場合、第２の情報のデータ片を第１の情報に組み込むためのアルゴリズムを、各グループ毎に、適宜異ならせてもよい。
このように、第１の情報（主要情報）をそのデータ特性に応じてグループ化し、各グループ毎に第２の情報（付属情報）を組み込むようにしている。例えば、第１の情報（主要情報）がＭＩＤＩデータの場合には、チャンネル毎、プログラムチェンジデータの出現タイミング毎、又はＭＩＤＩデータを構成するベロシティの差分値の大きさ毎、等に応じて第１の情報（主要情報）をグループ化し、それぞれのグループに対応したアルゴリズムで単位データの一部を変更制御する。これによって、チャンネル情報がそのまま入れ替えられたりすることによって或るグループのデータが書き換えられたとしても、別のグループのデータから第２の情報（付属情報）を検出することにより、その再生を行なうことができるようになる。
【００１４】
実施例において、前記第１の情報を構成するデータは複数のデータ単位の集まりからなっており、前記第２の情報を構成するデータの少なくとも一部を、複数の小サイズのデータ片に分けるステップと、前記第１の情報の複数のデータ単位のうちの特定のデータ単位の各々の値を、前記各データ片の値に応じて変更するもしくは変更しない制御を行なうステップであって、１つの前記特定のデータ単位と別の前記特定のデータ単位との差分値を求めることと、この差分値と１つの前記データ片の値とに応じて該差分値を引き出した前記特定のデータ単位の一方の値を変更するもしくは変更しない制御を行なうこととを含むものと、制御された前記特定のデータ単位を含む前記第１の情報のデータを記憶するステップとを具え、前記第２の情報を構成するデータの少なくとも一部が前記第１の情報のデータ内に組み込まれた状態で記憶される。
更に、記憶された前記第１の情報のデータを読み出すステップと、読み出された前記第１の情報のデータのうちの前記特定のデータ単位から、前記複数の小サイズのデータ片を再現するステップであって、１つの前記特定のデータ単位と別の前記特定のデータ単位との差分値を求めることと、この差分値から１つの前記データ片の値を再現することとを含むものとを具え、再現された各データ片によって前記第２の情報を再生するようにしてもよい。
これによれば、第１の情報の特定のデータ単位の値を、第２の情報のデータ片の値に応じて変更するもしくは変更しない制御を行なうときに、前記特定のデータ単位と別の特定のデータ単位との差分値を求め、この差分値と１つの前記データ片の値とに応じて該差分値を引き出した前記特定のデータ単位の一方の値を変更するもしくは変更しない制御を行なうことを特徴としている。これにより、第１の情報を構成する各データ単位毎のデータ値を一律にシフトするようなデータ改変が行なわれたとしても、それらの差分値は変化しないので、第２の情報を再生するときの再現性が向上する。
【００１５】
実施例において、記憶された第１の情報のデータを読み出し、読み出したデータを通信ネットワークを介して伝送するようにしてもよい。更に、通信ネットワークを介して伝送されたデータを受信し、受信したデータにおける前記第１の情報のデータのうちの前記特定のデータ単位から、前記複数の小サイズのデータ片を再現するようにしてもよい。第２の情報は、必ずしも第１の情報に関連性を有していなくてもよい。例えば、第１の情報が通信ネットワークを介して伝送される或る番組の内容であるとすると、第２の情報は、その番組とは無関係のニュース文等であってもよい。さらに、再生した第２の情報の内容を表示するための適宜の表示手段を具備していてもよい。
この発明は、上述の各観点に従う方法を実施するための回路もしくは装置を具備する電子情報処理装置として実施することができる。
更に、この発明は、上述の各観点に従う方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体としての形態で実施することができる。
更に、この発明は、上述の各観点に従う方法に従って前記第２の情報を構成するデータの少なくとも一部を前記第１の情報のデータ内に組み込んだ状態のデータ構成からなるデータを記録してなるコンピュータ読み取り可能な記録媒体としての形態で実施することができる。
【００１６】
【発明の実施の形態】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図２は、この発明に係る電子情報処理システムとしての機能を具備する電子楽器の全体構成を示すブロック図である。電子楽器１は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、音源２４、フロッピーディスクドライブ２５、鍵盤２６、パネルスイッチ２７及び表示回路２８から構成される。
ＣＰＵ２１はＲＯＭ２２及びＲＡＭ２３内の各種プログラムや各種データ、及びフロッピーディスクドライブ２５を介して取り込まれた楽音制御情報（ＭＩＤＩデータ）に基づいて電子楽器１全体の動作を制御すると共に取り込まれたＭＩＤＩデータ内に付属情報を分散して記憶したり、付属情報の分散記憶されたＭＩＤＩデータをフロッピーディスクから取り込み、それから付属情報を検出したりする。この実施の形態では、フロッピーディスクドライブ２５を例に説明するが、これ以外のＭＯドライブ、ＰＤドライブ、ＣＤ−ＲＯＭドライブなどでもよい。ＣＰＵ２１は、フロッピーディスクドライブ２５を介して取り込まれたＭＩＤＩデータや鍵盤２６の押鍵操作に基づいて生成したＭＩＤＩデータを音源２４に供給する。なお、外部に接続された音源を用いて発音処理を行うようにしてもよい。また、ＣＰＵ２１には図示したものの他にも、データ及びアドレスバス２９を介してタイマ、表示手段、サウンドシステム等の周辺機器が接続されるが、ここでは省略する。
【００１７】
ＲＯＭ２２はＣＰＵ２１の各種プログラム（システムプログラムや、この発明を実施するための動作プログラムなど）や各種データを格納するものであり、リードオンリーメモリ（ＲＯＭ）で構成されている。
ＲＡＭ２３は、ＣＰＵ２１がプログラムを実行する際に発生する各種データを一時的に記憶するものであり、ランダムアクセスメモリ（ＲＡＭ）の所定のアドレス領域がそれぞれ割り当てられ、レジスタ、フラグ、バッファ、テーブル等として利用される。
また、ＣＰＵ２１には、ハードディスク装置１１を接続して、そこに自動演奏データやコード進行データ等の各種データを記憶していてもよく、更に、この発明を実施するための動作プログラムを記憶しておくようにしてもよい。また、前記ＲＯＭ２２に動作プログラムを記憶せずに、ハードディスク装置１１にこれらの動作プログラムを記憶させておき、それをＲＡＭ２３に読み込むことにより、ＲＯＭ２２に動作プログラムを記憶したときと同様の動作をＣＰＵ２１に行わせることができる。このようにすると、動作プログラムの追加やバージョンアップ等が容易に行える。着脱自在な外部記憶媒体の１つとして、ＣＤ−ＲＯＭ（コンパクトディスク・リードオンリーメモリ）を使用してもよい。このＣＤ−ＲＯＭには、上述のような自動演奏データやコード進行データや楽音波形データや映像データなどの各種データ及び動作プログラムやその他プログラムを記憶していてもよい。ＣＤ−ＲＯＭに記憶されている動作プログラムや各種データは、ＣＤ−ＲＯＭドライブ１２によって、読み出され、ハードディスク装置１１に転送記憶させることができる。これにより、動作プログラムの新規のインストールやバージョンアップを容易に行うことができる。勿論、可搬式の記録媒体としては、上記ＣＤ−ＲＯＭに限らず、フロッピーディスクや光磁気ディスク（ＭＯ）など、その他の媒体も使用可能である。これらの各種記録媒体は、本発明を実施するためののコンピュータプログラムを記録する用途だけではなく、本発明に従って主要情報内に付属情報を分散して組み込んでなるデータ構造からなるデータを記録する用途にも使用できる。
【００１８】
また、通信インターフェイス１３をデータ及びアドレスバス２９に接続し、この通信インターフェイス１３を介してＬＡＮ（ローカルエリアネットワーク）やインターネットなどの種々の通信ネットワーク上に接続可能とし、他のサーバコンピュータとの間でデータのやりとりを行うようにしてもよい。これにより、ハードディスク装置１１内に動作プログラムや各種データが記憶されていないような場合や、記憶済の動作プログラムや各種データの内容を更新するような場合において、サーバコンピュータから新しい動作プログラムや各種データをダウンロードすることができる。この場合、クライアントとなる楽音生成装置である電子楽器１から、通信インターフェイス１３及び通信ネットワークを介してサーバコンピュータに動作プログラムや各種データのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドに応じて、所定の動作プログラムやデータを、通信ネットワークを介して電子楽器１に送信する。電子楽器１では、通信インターフェイス１３を介してこれらの動作プログラムやデータを受信して、ハードディスク装置１１にこれらを蓄積する。これによって、動作プログラム及び各種データのダウンロードが完了する。
【００１９】
音源２４は、複数のチャンネルで楽音信号の同時発生が可能であり、ＣＰＵ２１から与えられた楽音制御情報（ノートオン、ノートオフ、ベロシティ、ピッチデータ、音色番号等のＭＩＤＩデータ）を入力し、これらのデータに基づいた楽音信号を発生して図示していないサウンドシステムに供給する。
音源２４において複数チャンネルで楽音信号を同時に発音させる構成としては、１つの回路を時分割で使用することによって複数の発音チャンネルを形成するようなものや、１つの発音チャンネルが１つの回路で構成されるような形式のものであってもよい。また、音源２４における楽音信号発生方式はいかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出すメモリ読み出し方式（波形メモリ方式）、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるＦＭ方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるＡＭ方式等の公知の方式を適宜採用してもよい。また、これらの方式以外にも、自然楽器の発音原理を模したアルゴリズムにより楽音波形を合成する物理モデル方式、基本波に複数の高調波を加算することで楽音波形を合成する高調波合成方式、特定のスペクトル分布を有するフォルマント波形を用いて楽音波形を合成するフォルマント合成方式、ＶＣＯ、ＶＣＦ及びＶＣＡを用いたアナログシンセサイザ方式等を採用してもよい。また、専用のハードウェアを用いて音源を構成するものに限らず、ＤＳＰとマイクロプログラムを用いて音源を構成するようにしてもよいし、ＣＰＵとソフトウェアのプログラムで音源を構成するようにしてもよい。
音源２４から発生された楽音信号は、図示しないアンプ及びスピーカからなるサウンドシステムによって発音される。なお、音源２４とサウンドシステムとの間にエフェクタが設けてあってもよい。
鍵盤２６は、発音すべき楽音の音高を選択するための複数の鍵を備えており、各鍵に対応してキースイッチを有しており、新たな鍵が押圧されたときは、その鍵に対応したキーコードを含むキーオンイベント情報を出力し、鍵が離鍵されたときはその離鍵された鍵に対応したキーコードを含むキーオフイベント情報を出力する。また、鍵盤２６は、鍵押し下げ時の押鍵操作速度又は押圧力等を判別してタッチデータを生成し、それをベロシティデータとして出力する。鍵盤２６は音楽演奏のための基本的な操作子であり、これ以外の演奏操作子でもよいことはいうまでもない。
パネルスイッチ２７は、電子楽器１の各種動作内容を選択・設定・制御するための複数の操作子を備えたものである。
表示回路２８はＣＰＵ２１の制御状態、設定データの内容等の各種の情報を図示していないモニタ上に表示するものである。この実施の形態では、著作権表示データ、曲名、作曲者情報、作成年月日、歌詞、ニュース文、機種名（ハード名）、ＩＤなどのテキストデータなどを表示する。
なお、電子楽器１は、楽器専用機器として構成されている必要はなく、例えば、汎用電子機器であるパーソナルコンピュータを使用し、これに本発明に係るソフトウェアを搭載して、楽器機能を実現するようにしたものであってもよい。勿論、本発明は電子楽器としての実施形態に限らず、その他の適宜の電子機器システムとしての実施形態をとってもよいものである。その場合においても、汎用電子機器であるパーソナルコンピュータに本発明に係るソフトウェアを搭載して、発明を実施することができる。
【００２０】
次に、この発明に係る電子情報処理システムが電子情報付与装置として動作する場合の一例について説明する。
図３は、電子楽器１が電子情報付与装置として動作する場合の電子署名付与処理の一例を示すフローチャート図である。まず、この場合には、電子楽器１は、フロッピーディスクドライブ２５から読み出したＭＩＤＩデータにそのヘッダ情報の一部である電子署名すなわち著作権表示データを分散する場合について説明する。なお、このようにしてできたＭＩＤＩデータを再びフロッピーディスクに記録したり、他の記憶媒体に記憶したり、転送したりしてもよい。
まず、ステップ３１では、ＭＩＤＩデータ列内に分散して書き込まれるべき電子署名（著作権表示データ）の内容を決定する。例えば、著作権表示データとして『ＣＯＰＹＲＩＧＨＴ△ＹＭＨ△１９９６』のような文字をＭＩＤＩデータ列内に分散して書き込む場合には、これらの文字列をパネルスイッチ２７を用いて決定する。ここで、△は空白を意味するものとする。
ステップ３１で書き込むべき電子署名すなわち文字列が決定したので、今度はステップ３２で、その電子署名に関するデータ列を得る。例えば、パネルスイッチ２７によって『ＣＯＰＹＲＩＧＨＴ△ＹＭＨ△１９９６』が入力された場合には、それをＡＳＣＩＩの文字符号のデータ列に変換する。
この場合は、『Ｃ』＝『４３Ｈ』、『Ｏ』＝『４ＦＨ』、『Ｐ』＝『５０Ｈ』、『Ｙ』＝『５９Ｈ』、『Ｒ』＝『５２Ｈ』、『Ｉ』＝『４９Ｈ』、『Ｇ』＝『４７Ｈ』、『Ｈ』＝『４８Ｈ』、『Ｔ』＝『５４Ｈ』、『△』＝『２０Ｈ』、『Ｙ』＝『５９Ｈ』、『Ｍ』＝『４ＤＨ』、『Ｈ』＝『４８Ｈ』、『△』＝『２０Ｈ』、『１』＝『３１Ｈ』、『９』＝『３９Ｈ』、『９』＝『３９Ｈ』、『６』＝『３６Ｈ』からなる一連のＡＳＣＩＩのデータ列が得られることになる。
【００２１】
次に、ステップ３３では、電子署名として付与する情報すなわち、ステップ３２で得られたＡＳＣＩＩのデータ列の１バイト分をバイトレジスタＢＲに格納する。そして、ステップ３４では、このバイトレジスタＢＲに格納されたＡＳＣＩＩの各ビットデータを反転して、別の８ビット構成のビット列を作成する。例えば、『Ｙ』＝『５９Ｈ』（数字の後のＨは１６進数表現であることを示す）をバイトレジスタＢＲに格納すると、それは図１（Ｆ）に示すように『０１０１１００１Ｂ』（数字の後のＢは２進数表現であることを示す）＝『８９Ｄ』（数字の後のＤは１０進数表現であることを示す）のようなビット列になる。このビット列がステップ３４のデータ変換すなわちビット反転によって、図１（Ｅ）のようなビット列、すなわち『１０１００１１０Ｂ』＝『１６６Ｄ』のようなビット列になる。
次に、ステップ３５では、ＭＩＤＩデータ列（Ｓｔａｎｄａｒｄ  ＭＩＤＩ  Ｆｉｌｅ：ＳＭＦ）の中からキーオンイベントデータやプログラムチェンジデータやコントロールチェンジデータなどの各種のＭＩＤＩデータを順次取り出す。すなわち、ＭＩＤＩデータ列は基本的にはキーオンステータスバイト、キーコードバイト、ベロシティバイトからなるキーオンイベントデータやこれ以外のプログラムチェンジイベントデータやコントロールチェンジイベントデータなどから構成されているので、ステップ３５では、このようなＭＩＤＩデータを順番に取り出す。
ステップ３６では、取り出されたＭＩＤＩデータがキーオンイベントデータＫＯＮであるかどうかを判定し、キーオンイベントデータ（ＹＥＳ）の場合は次のステップ３７に進み、そうでない（ＮＯ）の場合はステップ３Ｄに進む。従って、ステップ３５で取り出されたＭＩＤＩデータがキーオンイベントデータの場合には、図１（Ａ）のようなキーオンイベントデータからなるＭＩＤＩデータ列ＳＭＦ１が得られることになる。このキーオンイベントデータのＭＩＤＩデータ列ＳＭＦ１はデュレーションタイムＤと、キーオンイベントデータとの組合せで構成される。
ステップ３７では、キーオンイベントデータの中の各バイトのデータをそれぞれ対応するレジスタａ，ｂ，ｃに格納する。すなわち、キーオンイベントデータの中のキーオンステータスバイトの中のチャンネル番号をレジスタａに、次の第１のデータバイト（キーコードバイト）の中のキーコードをレジスタｂに、第２のデータバイト（ベロシティバイト）の中のベロシティをレジスタｃにそれぞれ格納する。
【００２２】
ステップ３８では、ステップ３４で作成されたビット列の先頭から順に１ビット取り出して、それを第１のビットフラグＢＦ１に格納する。
次のステップ３９では、ステップ３７の各レジスタａ，ｂ，ｃの格納値を所定の関数に従って演算し、その演算結果によって得られたビットデータを反転して、第２のビットフラグＢＦ２に格納する。この実施の形態では、各レジスタａ，ｂ，ｃの値の合計値のモジュロ２を所定の関数とする。すなわち、関数ｆ１（ａ，ｂ，ｃ，）＝（ａ＋ｂ＋ｃ）ｍｏｄ２とする。例えば、図１（Ａ）のようなキーオンイベントＭＩＤＩデータ列ＳＭＦ１の場合には、８つのキーオンイベントデータで１つの文字データに相当するデータが作成される。まず、各キーオンイベントデータの所定の関数ｆ１（ａ，ｂ，ｃ）で演算すると、図１（Ｂ）のようになる。すなわち、（ａ＋ｂ＋ｃ）の値が偶数なら『０』、奇数なら『１』となる。そして、これらの反転ビットが第２のビットフラグＢＦ２に格納され、図１（Ｃ）のようになる。
【００２３】
ステップ３Ａでは、ステップ３８及びステップ３９で得られた第１のビットフラグＢＦ１と第２のビットフラグＢＦ２とが等しいかどうかを判定し、等しい（ＹＥＳ）場合には次のステップ３Ｂ及びステップ３Ｃの処理を行い、等しくない（ＮＯ）場合はステップ３Ｅにジャンプする。
ステップ３Ｂでは、第１のビットフラグＢＦ１と第２のビットフラグＢＦ２とが等しいと判定されたので、レジスタｃの値すなわちベロシティデータの最下位ビットに『１』を加算する。そして、ステップ３Ｃで、そのレジスタｃの値に基づいてＭＩＤＩデータ列中のキーオンイベントデータを構成するベロシティの値を更新する。すなわち、ベロシティの値を１だけ増加する。例えば、図１の場合には、第１のビットフラグＢＦ１と第２のビットフラグＢＦ２との３番目、５番目、６番目及び７番目がそれぞれ等しいと、ステップ３Ａで判定されるので、ＭＩＤＩデータ列中の３番目、５番目、６番目及び７番目のキーオンイベントデータのベロシティの値が『１』だけ増加する。すなわち、３番目のキーオンイベントデータのベロシティ値『６３』が『６４』になり、５番目のキーオンイベントデータのベロシティ値『７８』が『７９』になり、６番目のキーオンイベントデータのベロシティ値『９１』が『９２』になり、７番目のキーオンイベントデータのベロシティ値『４２』が『４３』になる。
【００２４】
ステップ３Ｄでは、ステップ３６でＭＩＤＩデータ列から取り出されたデータがキーオンイベントデータでない（ＮＯ）と判定された場合に行われる処理であり、取り出されたＭＩＤＩデータが今度はプログラムチェンジイベントＰＣＭであるかどうかを判定し、プログラムチェンジイベントＰＣＭ（ＹＥＳ）の場合には、ステップ３Ｈに進み、そうでない（ＮＯ）場合はステップ３Ｅに進む。
ステップ３Ｅでは、ステップ３Ａ又はステップ３ＤでＮＯと判定された場合又はステップ３Ｃの処理を終えた場合に行われる処理であって、ステップ３６で取り出されたＭＩＤＩデータの次のデータがデータ終了を示すデータかどうかの判定を行う。このステップ３Ｅでの判定結果がデータ終了（ＹＥＳ）の場合には、電子情報付与処理を終了し、データ終了でない（ＮＯ）場合には、次のステップ３Ｆに進む。ステップ３Ｆでは、ステップ３５〜ステップ３Ｅまでの処理を１巡回処理とした場合にその１巡回処理が８回分すなわち８ビット分行われたかどうかを判定し、８回分行われた（ＹＥＳ）場合には、次のステップ３Ｇに進み、そうでない（ＮＯ）の場合は、ステップ３５にリターンし、レジスタＢＲ内の次の１ビットに対してステップ３５〜ステップ３Ｅの処理を行う。
ステップ３Ｇでは、ステップ３３〜ステップ３Ｆまでの処理を１巡回処理とした場合にその１巡回処理が電子署名データを構成するバイト数だけ行われたかどうかを判定し、行われた（ＹＥＳ）場合には、次のステップ３Ｈに進み、そうでない（ＮＯ）の場合は、ステップ３３にリターンし、電子署名データの次の１バイトに対してステップ３３〜ステップ３Ｅの処理を行う。
ステップ３Ｈでは、ステップ３Ｇで電子署名データの全バイトに対してステップ３３からステップ３Ｆまでの処理が行われたことが判定されたので、再び電子署名データの書込み処理を行うために、電子署名バイトのポインタをその先頭にセットし、ステップ３３にリターンする。こうして、署名データの各ビットを所定のアルゴリズムで変換したデータが、分散されて、ＭＩＤＩデータ中のキーオンイベントデータ内のベロシティバイト部分に埋め込まれる。また、このステップ３Ｈでは、ステップ３ＤでＹＥＳと判定された場合すなわち取り出されたＭＩＤＩデータがプログラムチェンジイベントＰＣＭだった場合にも行われる。従って、電子署名データはプログラムチェンジイベントＰＣＭが出現する度に、電子署名データの先頭に復帰することになる。
何故、プログラムチェンジイベントで復帰するようにしたかというと、プログラムチェンジイベントは電子署名を付与するノートオンイベントなどに比べて、比較的低頻度で発生し、プログラムチェンジ後は、楽器が変わることを意味するので、その位置を始点としてエディットされる可能性の高い単位ということが言えるからである。
【００２５】
次に、図３の電子情報付与処理によって付与された電子情報すなわち電子署名データの検出処理について説明する。図４は、電子楽器１が電子情報検出装置として動作する場合の一例を示すフローチャート図である。
この場合には、フロッピーディスクドライブ２５から読み出されたＭＩＤＩデータのベロシティバイト部分にそのヘッダ情報の一部である電子署名すなわち著作権表示データが分散記録されているものとする。以下の実施の形態では、この著作権表示データを検出して、それをモニタなどに表示するまでの動作を説明する。
まず、ステップ４１では、署名データ格納レジスタＳＩＧＮにナルデータを格納する。すなわち、署名データ格納レジスタＳＩＧＮの内容をリセットする。
ステップ４２では、電子署名を検出するべきＭＩＤＩデータ列、すなわち図３の電子情報付与処理によって電子署名の付与されたＭＩＤＩデータ列を取り出す。
そして、次のステップ４３で、バイトレジスタＢＲとビットカウンタＢＣＮの値をリセットする。
【００２６】
次に、ステップ４４では、ＭＩＤＩデータ列（Ｓｔａｎｄａｒｄ  ＭＩＤＩ  Ｆｉｌｅ：ＳＭＦ）の中から順次キーオンイベントデータやプログラムチェンジデータやコントロールチェンジデータなどのデータを取り出す。
ステップ４５では、取り出されたＭＩＤＩデータがキーオンイベントデータＫＯＮであるかどうかを判定し、キーオンイベントデータ（ＹＥＳ）の場合は次のステップ４６に進み、そうでない（ＮＯ）場合はステップ４Ｃに進む。従って、ステップ４４で取り出されたＭＩＤＩデータがキーオンイベントデータの場合には、図１（Ｇ）のようなキーオンイベントＭＩＤＩデータ列ＳＭＦ２が作成されることになる。なお、図１（Ｇ）のキーオンイベントデータ列は先に電子署名の付与された図１（Ｄ）のキーオンイベントデータ列と同じものである。
ステップ４６では、キーオンイベントデータの中の各バイトのデータをそれぞれ対応するレジスタａ，ｂ，ｃに格納する。すなわち、キーオンイベントデータの中のキーオンステータスバイトの中のチャンネル番号をレジスタａに、次の第１のデータバイト（キーコードバイト）の中のキーコードをレジスタｂに、第２のデータバイト（ベロシティバイト）の中のベロシティをレジスタｃにそれぞれ格納する。
【００２７】
ステップ４７では、バイトレジスタＢＲの値を２倍（左シフト）して、その最下位ビットに関数ｆ１（ａ，ｂ，ｃ，）＝（ａ＋ｂ＋ｃ）ｍｏｄ２の反転値を加算する。ステップ４８では、ビットカウンタＢＣＮの値を１だけインクリメントする。ステップ４９では、ビットカウンタＢＣＮの値が『８』になったかどうかを判定し、ＹＥＳの場合は次のステップ４Ａに進み、ＮＯの場合はステップ４Ｆにジャンプする。
例えば、図１（Ｇ）のようなキーオンイベントのＭＩＤＩデータ列ＳＭＦ２の場合には、８つのキーオンイベントデータで１つの文字データに相当するデータが作成される。まず、各キーオンイベントデータの所定の関数ｆ１（ａ，ｂ，ｃ）で演算すると、図１（Ｈ）のようになる。すなわち、（ａ＋ｂ＋ｃ）の値が偶数なら『０』、奇数なら『１』となる。そして、これらの反転ビットは図１（Ｊ）のようになり、その値がバイトレジスタＢＲを順次シフトしていき、最終的にはバイトレジスタＢＲの格納値は、図１（Ｊ）のようになる。
このようにして、得られた図１（Ｊ）のデータは図１（Ｆ）と同じである。すなわち、ＭＩＤＩデータのベロシティバイト部分に分散して書き込まれた著作権表示データすなわち図１（Ｆ）のようなデータが図１（Ｊ）のように再現されたことになる。
ステップ４Ａでは、バイトレジスタＢＲの格納値をＡＳＣＩＩの文字データに変換して、署名データ格納レジスタＳＩＧＮに追加記憶する。
ステップ４Ｂで、バイトレジスタＢＲとビットカウンタＢＣＮの値をリセットする。
ステップ４Ｃでは、ステップ４５でＭＩＤＩデータ列から取り出されたデータがキーオンイベントデータでない（ＮＯ）と判定された場合に行われる処理であり、取り出されたＭＩＤＩデータが今度はプログラムチェンジイベントＰＣＭであるかどうかを判定し、プログラムチェンジイベントＰＣＭ（ＹＥＳ）の場合には、次のステップ４Ｄ及びステップ４Ｅに進み、そうでない（ＮＯ）場合はステップ４Ｆに進む。
ステップ４Ｄでは、バイトレジスタＢＲの値をリセットし、ステップ４ＥではビットカウンタＢＣＮの値をリセットする。
ステップ４Ｆでは、ステップ４９又はステップ４ＣでＮＯと判定された場合、又はステップ４Ｂ又はステップ４Ｅの処理を終えた場合に行われる処理であって、ステップ４６で取り出されたＭＩＤＩデータの次のデータがデータ終了を示すデータかどうかの判定を行う。このステップ４Ｆの判定結果がデータ終了（ＹＥＳ）の場合には、次のステップ４Ｇに進み、データ終了でない（ＮＯ）場合にはステップ４４にリターンする。
ステップ４Ｇでは、署名データ格納レジスタＳＩＧＮの内容に基づいて検出された電子署名情報を図示していない表示装置などに表示する。
【００２８】
なお、上述の実施の形態では、ＭＩＤＩデータ列からキーオンイベントデータを順番に取り出して、それに対して順番に電子署名データを格納する場合について説明したが、エディットされる可能性の高い単位として、チャンネル単位があるので、それに対応して電子署名データを格納する場合について説明する。
図５は、電子楽器１が電子情報付与装置として動作する場合の電子署名付与処理の別の一例を示すフローチャート図である。この場合も、図３の場合と同様に、電子楽器１は、フロッピーディスクドライブ２５から読み出したＭＩＤＩデータにそのヘッダ情報の一部である電子署名すなわち著作権表示データを分散記録する。
まず、ステップ５１及びステップ５２は、図３のステップ３１及びステップ３２と同じであり、ステップ５１でＭＩＤＩデータ列内に分散して書き込まれるべき電子署名（著作権表示データ）の内容を決定し、ステップ５２でその文字列に係るデータ列を得る。
そして、次のステップ５３では、図３のステップ３３〜ステップ３Ｈの処理をそのチャンネル毎に行う。そのとき、ステップ３９の所定の関数に従った演算処理をそのチャンネル毎に異ならせるようにする。例えば、ステップ３９では、関数ｆ１（ａ，ｂ，ｃ，）＝（ａ＋ｂ＋ｃ）ｍｏｄ２を第２のビットフラグＢＦ２に格納しているが、これを第１の関数処理とし、次の第２、第３及び第４の関数処理の中から、適当なものを各チャンネル毎に使い分けるようにする。
第２の関数処理はｆ２（ａ，ｂ，ｃ）＝（ａ＋ｃ）ｍｏｄ２とする。
第３の関数処理はｆ３（ａ，ｂ，ｃ）＝（ｂ＋ｃ）ｍｏｄ２とする。
第４の関数処理はｆ４（ａ，ｂ，ｃ）＝（ｃ）ｍｏｄ２とする。
ステップ５３では、これらの第１から第４までの関数処理をＭＩＤＩチャンネル毎に選択的に切り換えて、図３のステップ３３〜ステップ３Ｈまでの処理に従ってそれぞれのチャンネル毎にその関数処理に従って変換された電子署名データを付与する。
このように、チャンネル毎に関数処理の内容を変更することによって、それぞれの情報を一度に変更するようなエディット処理、例えばチャンネル情報の入れ替えやキーコードのシフトなどといったものが行われた場合でも、エディットによって変更されるデータに関係しない関数を利用するチャネルから電子署名データを復元することができるという効果がある。
【００２９】
次に、図５の電子情報付与処理２によって付与された電子情報すなわち電子署名データを検出する電子情報検出処理２について説明する。図６は、電子楽器１が電子情報検出装置として動作する場合の電子情報検出処理の別の一例を示すフローチャート図である。
この場合には、フロッピーディスクドライブ２５から読み出されたＭＩＤＩデータの各チャンネル毎に所定の関数処理（第１から第４までのいずれかの関数処理）によって、ベロシティバイト部分にそのヘッダ情報の一部である電子署名すなわち著作権表示データが分散記録されているものとする。以下の実施の形態では、所定の関数処理によって分散記録された著作権表示データをチャンネル毎に検出して、それをモニタなどに表示するまでの動作を説明する。
まず、ステップ６１では、電子署名を検出するべきＭＩＤＩデータ列、すなわち図５の電子情報付与処理によって各チャンネル毎に所定の関数処理に応じて電子署名データの付与されたＭＩＤＩデータ列を取り出す。
そして、次のステップ６２で、チャンネルカウンタをリセットし、ステップ６３で関数カウンタをリセットする。このチャンネルカウンタと関数カウンタは、後の処理で、各チャンネルに対して各関数処理を施すために利用されるものである。例えば、ＭＩＤＩチャンネルが１６チャンネル相当の場合には、チャンネルカウンタは０から１５までを巡回的にカウントするように処理される。また、関数カウンタは、前述のように関数処理が４種類の場合には、０〜３までも巡回的にカウントするように処理される。関数カウンタが『０』の場合は第１の関数処理ｆ１（ａ，ｂ，ｃ，）＝（ａ＋ｂ＋ｃ）ｍｏｄ２を、『１』の場合は第２の関数処理ｆ２（ａ，ｂ，ｃ）＝（ａ＋ｃ）ｍｏｄ２を、『２』の場合は第３の関数処理ｆ３（ａ，ｂ，ｃ）＝（ｂ＋ｃ）ｍｏｄ２を、『３』の場合は第４の関数処理ｆ４（ａ，ｂ，ｃ）＝（ｃ）ｍｏｄ２を意味する。
【００３０】
ステップ６４では、チャンネルカウンタの値に該当するチャンネルについて、関数カウンタの値に該当する関数処理を用いて図４のステップ４１からステップ４Ｆまでと同様の電子署名検出処理を行う。
ステップ６５では、検出されたデータ列に有意な部分があるかどうかの判定を行う。ここで有意な部分とは、ＡＳＣＩＩの文字データによって構成される『ＣＯＰＹＲＩＧＨＴ』なる署名データの一部分である。従って、ステップ６５では、図４の処理によって署名データ格納レジスタＳＩＧＮに順次追加されたＡＳＣＩＩの文字データによって構成された文字列の中に『ＣＯＰＹＲＩＧＨＴ』なる文字列データが存在するかどうかを判定することになる。ステップ６５の判定の結果、署名データ格納レジスタＳＩＧＮ内に有意な部分が存在しない（ＮＯ）と判定された場合には、次のステップ６６に進み、関数カウンタを１だけインクリメントする。そして、次のステップ６７で、全ての関数処理に対してステップ６４及びステップ６５の処理すなわち署名データの抽出処理が行われたかどうかの判定を行い、行われた（ＹＥＳ）場合には次のステップ６８に進み、そうでない（ＮＯ）場合はステップ６４にリターンし、次の関数処理についてステップ６４及びステップ６５の処理を行う。逆に、ステップ６５の判定の結果、署名データ格納レジスタＳＩＧＮ内に有意な部分が存在した場合には、ステップ６Ｂに進み、その検出された電子署名データをモニタ上に表示して終了する。
【００３１】
ステップ６８では、チャンネルカウンタを１だけインクリメントする。そして、次のステップ６９で全てのチャンネルに対してステップ６４及びステップ６５の処理すなわち署名データの抽出処理が行われたかどうかの判定を行い、行われた（ＹＥＳ）場合には次のステップ６Ａに進み、そうでない（ＮＯ）場合はステップ６３にリターンし、次のＭＩＤＩチャンネルについてステップ６３〜ステップ６５の処理を行う。ステップ６９でＹＥＳと判定されたということは、全てのＭＩＤＩチャンネルに対して、全ての関数処理を用いて署名データの抽出処理を行った結果、データ列に有意な部分が存在しなかったということだから、ステップ６Ａでは、その結果として『電子署名なし』又は『電子署名検出失敗』などの文字をモニタ上に表示する。
【００３２】
なお、ＭＩＤＩデータに基づく楽音再生演奏においては、上記のように一部データ変更されたベロシティデータはそのまま再生に利用してよい。ベロシティデータの最下位１ビットの値が１増加又は減少することは、楽音の再生精度にそれほど深刻な影響を与えない。勿論、そうせずに、一部データ変更されたベロシティデータから署名データによる誤差を取り除いて、正確なベロシティデータを再生することも可能であるから、そのように実施してもよい。
なお、上述の実施の形態では、付属情報として署名データを、主要情報としてのＭＩＤＩデータのベロシティ部分に分散させて記録する場合について説明したが、これは一例にすぎず、これ以外の著作者名、曲の題名、画像／映像の題名などに関する文字データやデータ形式に関するデータやその他の種々のデータからなる適宜の付属情報を、所要の主要情報の中に分散させて記録するようにしてもよいことはいうまでもない。
また、付属情報を分散させて記憶する対象となる主要情報の種類は、ベロシティ情報に限らず、ベロシティ情報以外の適宜の情報、例えばデュレーションタイム（待ち時間）データの情報であってもよい。また、１つの付属情報を、異なる複数種類の主要情報（例えばとベロシティ情報とデュレーションタイム情報）にわたって分散させて記録するようにしてもよい。両方に分散記録する場合、その厳密性すなわち分散記録することによってそのデータの内容が変更される度合いに応じて、分散記録する箇所を適宜切り換えるようにしてもよい。すなわち、デュレーションタイムデータの短い領域で、そのデュレーションタイムデータに分散記録すると、それによる変動の割合（厳密性）が大きくなるので、好ましくないが、デュレーションタイムデータが比較的大きい領域では、逆の関係にあるので、分散記録しても影響は少ない。同じく、ベロシティ部分に記録する場合でも、ベロシティの値の小さい領域て、そのベロシティ部分に分散記録すると、それによる変動の割合（厳密性）が大きくなるので、好ましくないが、ベロシティの値の大きい領域では、分散記録しても影響は少ない。従って、これらを適宜考慮して種々のデータを分散記録するようにしてもよい。
【００３３】
また、上述の実施の形態では、ＭＩＤＩデータを主要情報として、このＭＩＤＩデータ内に付属情報を分散記録する場合について説明したが、これに限らず、波形サンプルデータやシーケンスデータ、ディジタル記録音声データ、画像データ、動画データ、レジストレーション（電子楽器の設定記録）データなど、適宜のデータを主要情報としてもよく、これらの適宜の主要情報内に所要の付属情報を分散記録するようにしてもよい。
波形データ（波形サンプルデータ）を主要情報としてそこに適宜の付属情報を分散記録する場合には、所定の関数処理としてその波形データ（ｗａｖｅ＿ｄａｔａ）そのもののモジュロ２、すなわち、ｆ１（ｗａｖｅ＿ｄａｔａ）＝ｗａｖｅ＿ｄａｔａ  ｍｏｄ２としてもよい。また、波形データの値とそのサンプルポイントデータとを用いて、両データの和のモジュロ２、すなわち、ｆ２（ｗａｖｅ＿ｄａｔａ，ｓａｍｐｌｅ＿ｐｏｉｎｔ）＝（ｗａｖｅ＿ｄａｔａ＋ｓａｍｐｌｅ＿ｐｏｉｎｔ）  ｍｏｄ２としてもよい。
図５及び図６の実施の形態では、各（論理）チャンネル毎に関数処理の種類を変更して、署名データを検出する場合について説明したが、図３及び図４のようにプログラムチェンジデータの検出タイミング毎に関数処理の種類を変更するようにしてもよい。この場合には、検出されたデータ列に有意な部分が存在するかどうかの判定処理も各プログラムチェンジデータの検出タイミング毎に行う必要がある。
【００３４】
上述の実施の形態では、検出された電子署名情報（すなわち付属情報）をモニタ上に表示する場合について説明したが、検出側において、署名情報（すなわち付属情報）がない場合や署名情報が完全に復旧できない場合（各論理チャンネルにおいて、署名情報が検出できるチャンネルと検出できないチャンネルが混在する場合）には、データの再生を中止するようにしてもよい。また、その検出側の電子楽器やコンピュータなどがネットワークに接続されている場合には、そのネットワーク上に不正にエディットされたデータが存在することを送信し、それをホストコンピュータ側で検出することができるようにしてもよい。
上述の実施の形態では、電子楽器がこの発明に係る方法又は装置もしくはシステムを採用した電子署名付与装置又は電子署名検出装置として動作する場合について説明したが、この発明に係る方法又は装置もしくはシステムは、電子楽器に限らず、どのような機器若しくは装置においても適用することができる。この発明に係る方法又は装置もしくはシステムを採用した電子署名（すなわち付属情報）付与及び／又は検出装置は、ディスクリートタイプハードウェア装置で構成してもよいし、ソフトウェアあるいはＤＳＰ（デジタル・シグナル・プロセッサ）とマイクロプログラムなどで構成するようにしてもよい。また、このような電子署名（すなわち付属情報）付与及び／又は検出装置をフロッピーディスクドライブや通信インターフェイスなどに予め内蔵しておいて、データの入出力の段階で強制的に電子署名データ（すなわち付属情報）を付与したり、検出したりするようにしてもよい。
上述の実施の形態では、電子署名データ（すなわち付属情報）を主要情報の間に分散記録する（付与する）ことと、それから、これを読み出して電子署名データ（すなわち付属情報）を再生する（検出する）ことについて説明した。しかし、記録する（付与する）ことと再生する（検出する）ことのどちらか一方のみを実施することも本発明の範囲に含まれる。例えば、電子署名データ（すなわち付属情報）の分散記録された（付与された）データ（すなわち主要情報）を、フロッピーディスクやコンパクトディスクなどで供給するようにしてもよいし、ネットワークを通じて電子的に供給するようなデータ形態を採用してもよい。
【００３５】
図３のステップ３Ｂでは、ベロシティデータの値を１だけインクリメント処理する場合について説明したが、デクリメント処理してもよいし、これらの処理を適当なタイミング（所定データ数毎とか）で交互に行うようにしてもよい。
上述の実施の形態では、所定の関数処理の後にビット反転処理を行う場合について説明したが、これは行わなくてもよい。また、ビット反転処理の他にも、上位ビットと下位ビットを入れ替えるとか、ＡＮＤ（論理積）、ＯＲ（論理和）、ＸＯＲ（排他的論理和）などの論理演算処理を施すとか、種々の処理を加えるようにしてもよいことはいうまでもない。また、適宜の暗号化処理を施すようにしてもよい。例えば、上述の第１から第４までの関数処理の結果を適宜組み合わせてもよいし、前回の関数処理の結果を次の関数処理に組み合わせて演算するようにしてもよい。
なお、これらの各処理はある程度高速に行うことができ、変換後、逆変換によりもとに戻せるものであれば、これ以外の方法でもよいことはいうまでもない。
上述の実施の形態では、プログラムチェンジデータの検出タイミング毎に新たに署名データの付与処理を行う場合について説明したが、これに限らず、小節単位（例えば８小節毎など）データの検出タイミング毎に行うようにしてもよい。また、波形データに分散記録する場合には、所定のサンプル数毎や所定のゼロクロス毎に新たに署名データの付与処理を行うようにしてもよい。ゼロクロス（波形の値の符号が変わるタイミング）は波形エディットの際の基準地点と考えられるからである。
また、上述の実施の形態では、署名データや題名などのような付属情報を記録する場合について説明したが、ＭＩＤＩデータと波形データを合わせて記録する場合に、ＭＩＤＩデータにその波形データの一部を記録するようにしてもよいし、波形データにＭＩＤＩデータの一部を合わせて記録するようにしてもよい。
【００３６】
なお、上述の実施の形態では、著作権に関する署名データを付属情報として、これをＭＩＤＩデータのベロシティ部分に分散記録する場合について説明したが、これは一例であり、これ以外の著作者名、曲の題名（曲名）、画像／映像の題名などに関するテキスト情報や、そのデータ形式に関する情報やその他の種々の電子情報（曲の解説、著作者に関する情報、著作年、歌詞、ニュース、ハードＩＤ（機種名、使用ＯＳ）などの各種情報）を付属情報として、これを適宜の主要情報において分散記録するようにしてもよいことはいうまでもない。この場合には、図３から図６までの各処理における電子署名をこれらの各種電子情報に置き換えて処理すればよい。このようにして処理された電子情報（すなわち付属情報）は、図７のように画面上に表示されるようになる。
なお、このとき、付属情報を一連の纏まったファイル情報として検出してもよいし、自動演奏中にＭＩＤＩデータから検出される電子情報の流れとして認識し、それをリアルタイムに画面表示したりしてもよい。この場合、付属情報が画像情報の場合には、ＭＩＤＩデータによってリアルタイムに画像が描画されるようになり、テキスト情報の場合には、ニュース配信などのようなリアルタイムな情報表示を行うことが可能となる。また、付属情報を分散記録するための技術がシンプルであるため、オンデマンドなどで適宜の電子情報（すなわち付属情報）を所要の主要情報内に埋め込むことができるので、ＴＶ放送などのようなリアルタイムな描画が可能となる。また、インターネットや電子メールなどのＩＤやパスワードの配信にも利用することができる。
【００３７】
上述の実施の形態では、各種電子情報（すなわち付属情報）をＭＩＤＩデータのベロシティ部分（すなわち主要情報）に分散記録する場合について説明したが、この場合だと、ＭＩＤＩデータ（すなわち主要情報）自身が書き換えられてデータ値すなわちベロシティの値が全体的にシフトされたような場合、その付属情報自体が消えてしまい再現することができなくなるというおそれがある。
そこで、ＭＩＤＩデータ（すなわち主要情報）自体が書き換えられたりしても、付属情報を抽出することのできる実施の形態について、図８及び図９に基づき、以下、説明する。この実施の形態では、ＭＩＤＩデータ（すなわち主要情報）における各データ単位間の差分値をパラメータとして、付属情報を埋め込むための演算アルゴリズムを実行することを特徴としている。このように各データ単位間の差分値をパラメータとすることにより、各データ単位の値がシフト変更された場合でも、その差分値には変化が生じないことになるので、埋め込まれた付属情報を適確に再生することができる。
図８は、この実施の形態に係る差分アルゴリズムを用いた情報記憶処理（付属情報付与処理）の一例を示すフローチャートである。図９は、この差分アルゴリズムを用いた情報記憶処理に従うデータ変換形態の具体例と、変換されたデータから付属情報を再生する処理（検出処理）に従うデータ再生形態の具体例を示す図、である。付属情報を再生する処理（検出処理）のフローチャート例については図示を省略するが、基本的には、上記各実施例と同様に、記憶処理（付与処理）時の演算アルゴリズムに準じた所定の再生演算を行なうことによって、付属情報の各ビットの抽出と再生を行なうことができる。
【００３８】
図８において、ステップ８１では、付属情報（この例では電子署名情報）を埋め込むべき主要情報（この例ではＭＩＤＩデータ）のキーオンイベントデータ列ＳＭＦ１を得る。これは、付属情報を埋め込む対象となる主要情報の種類を、前述実施例と同様にベロシティバイト部分としたためである。すなわち、前述と同様に、ＭＩＤＩデータ列（Ｓｔａｎｄａｒｄ  ＭＩＤＩ  Ｆｉｌｅ：ＳＭＦ）の中からキーオンイベントデータやプログラムチェンジデータやコントロールチェンジデータなどの各種のＭＩＤＩデータを順次取り出し、取り出されたＭＩＤＩデータがキーオンイベントデータＫＯＮであるかどうかを判定し、キーオンイベントデータからなるＭＩＤＩデータ列ＳＭＦ１を得る。すなわち、ＭＩＤＩデータ列は、基本的には、キーオンステータスバイト、キーコードバイト、ベロシティバイトからなるキーオンイベントデータや、これ以外のプログラムチェンジイベントデータやコントロールチェンジイベントデータなどから構成されているが、この中から、キーオンイベントデータのＭＩＤＩデータ列ＳＭＦ１を取り出すのである。このキーオンイベントデータのＭＩＤＩデータ列ＳＭＦ１はデュレーションタイムＤと３バイトのキーオンイベントデータとの組合せで構成される。このキーオンイベントデータ列ＳＭＦ１の具体例は図９（Ａ）のようである。
【００３９】
次に、ステップ８２では、このキーオンイベントデータ列ＳＭＦ１内に分散して書き込まれるべき付属情報（この例では電子署名すなわち前述の著作権表示データ）に関するデータ列を得る。
次に、ステップ８３では、上記付属情報データ列（電子署名として付与する情報）から、ＡＳＣＩＩのデータ列の１バイト分をバイトレジスタＢＲに格納する。例えば、『Ｙ』＝『５９Ｈ』をバイトレジスタＢＲに格納すると、それは図９（Ｅ）に示すように『０１０１１００１Ｂ』＝『８９Ｄ』のようなビット列になる。また、レジスタｊにバイトレジスタＢＲのビット長を示すデータ（例えば『８Ｄ』）をストアする。
ステップ８４では、レジスタｊの値から１減少した値をレジスタｋにストアする。
ステップ８５では、相前後するキーオンイベントデータ同士のキーコードバイトのキーコード同士の差分値を求め、それをキー差分値レジスタｄｋｅｙに格納するとともにベロシティバイトのベロシティ同士の差分値を求め、それをベロシティ差分値レジスタｄｖｅｌに格納する。ここでは、後ろのキーオンイベントデータの値から前のキーオンイベントデータの値を減算して求めている。すなわち、ｎはイベントの順序を示す順序数であり、イベント順序ｎのベロシティデータＶＥＬnを、その次のイベント順序n+1のベロシティデータＶＥＬn+1から引き算し、その結果の差分値をベロシティ差分値レジスタｄｖｅｌに格納する。また、イベント順序ｎのキーコードデータＮＯＴＥnを、その次のイベント順序n+1のキーコードデータＮＯＴＥn+1から引き算し、その結果の差分値をキー差分値レジスタｄｋｅｙに格納する。これによって図９（Ｂ）のような差分値データ対（ｄｋｅｙ，ｄｖｅｌ）が作成される。
【００４０】
ステップ８６では、この差分値データ対（ｄｋｅｙ，ｄｖｅｌ）に所定の関数ｆ（ｄｋｅｙ，ｄｖｅｌ）の処理を施して、その最下位ビットＬＳＢの値と、レジスタＢＲ内のｋ番目のビットの値とを比較する。例えば、この関数ｆ（ｄｋｅｙ，ｄｖｅｌ）は、キー差分値ｄｋｅｙとベロシティ差分値ｄｖｅｌとの合計（ｄｋｅｙ＋ｄｖｅｌ）を求めることからなっている。図９（Ｃ）は、各差分値データ対（ｄｋｅｙ，ｄｖｅｌ）毎のキー差分値ｄｋｅｙとベロシティ差分値ｄｖｅｌとの合計値（ｄｋｅｙ＋ｄｖｅｌ）を例示するものである。図９（Ｄ）は、各合計値（ｄｋｅｙ＋ｄｖｅｌ）の最下位ビットＬＳＢの値を示す。
なお、バイトレジスタＢＲの格納値の順位ｋは、最上位ビットをｋ＝７とし、最下位ビットをｋ＝０とする。図９（Ｅ）に示されたバイトレジスタＢＲの格納値『０１０１１００１Ｂ』の例では、最初はｋ＝７によって最も左側（最上位）のビットの「０」が、合計値（ｄｋｅｙ＋ｄｖｅｌ）（図９（Ｃ）では『２４Ｄ』）のＬＳＢ（図９（Ｄ）では「０」）と比較される。
【００４１】
ステップ８６がＮＯであれば、ステップ８７の処理の後にステップ８８に行くが、ステップ８６がＹＥＳであれば、ステップ８７を飛び越してステップ８８に行く。ステップ８７では、イベント順序n+1のベロシティデータＶＥＬn+1の値に所定の奇数ｍ（例えばｍ＝１）を加算し、該イベント順序n+1のベロシティデータＶＥＬn+1の値を変更する。すなわち、ステップ８６での比較結果が不一致であればステップ８７でベロシティデータＶＥＬn+1の変更（ｍの加算）を行なうが、ステップ８６での比較結果が一致であればベロシティデータＶＥＬn+1は変更しない。このようにして、キーオンイベントデータ列ＳＭＦ１におけるベロシティデータＶＥＬの変更又は不変更が上記所定のアルゴリズムに従って制御され、図９（Ｆ）に例示するような、変更制御されたキーオンイベントデータ列ＳＭＦ２が得られる。なお、奇数ｍを加算することは、最下位ビットＬＳＢの値を反転することを意味する。すなわち、不一致のときに最下位ビットＬＳＢの値を反転することにより、一致する状態に変更されることになる。こうして、変更制御されたキーオンイベントデータ列ＳＭＦ２における差分値データ対毎の合計値（ｄｋｅｙ＋ｄｖｅｌ）の各最下位ビットＬＳＢは、付属情報の各ビットの値に一致しているものとなる。
ステップ８８ではレジスタｋの値を１減少する。ステップ８９ではイベント順序ｎを１増加して更新する。次に、ステップ９０では、更新されたイベント順序ｎに基づき、用意されたキーオンイベントデータ列ＳＭＦ１の処理が終了したかを判定する。ＮＯであれば、ステップ９１に行き、ｋ＜０であるかを調べる。ＮＯであれば、ステップ８５に戻り、更新されたｎとｋに関して、上述のステップ８５〜９０の処理を繰り返す。
【００４２】
上述のステップ８５〜９０の処理の繰り返しによって、バイトレジスタＢＲ内の１バイト分の付属情報（例えば図９（Ｅ）の『０１０１１００１Ｂ』）の埋込処理が、次のようにして行われる。まず、図９（Ａ）のデータ列ＳＭＦ１の場合、各差分値データ対（ｄｋｅｙ，ｄｖｅｌ）毎の合計値（ｄｋｅｙ＋ｄｖｅｌ）のデータ列としては、図９（Ｃ）に示すようなデータ列『２４，２２，２１，２８，９，４１，２２，−１５』が順次得られる。ここで、イベント順序の若い差分値データ対（ｄｋｅｙ，ｄｖｅｌ）の合計値（ｄｋｅｙ＋ｄｖｅｌ）の最下位ビットＬＳＢ（図９（Ｄ））とバイトレジスタＢＲの左側から順番にビット同士が比較され、等しい（ＹＥＳ）場合にはキーオンイベントデータのベロシティ値を変更せずに、次の右側のビット同士の比較に移る。等しくない（ＮＯ）場合にはそのビットに関係する２つのキーオンイベントデータの中の後ろ側のキーオンイベントデータのベロシティに奇数ｍ（例えばｍ＝１）を加算して該ベロシティ値を変更し、次の右側のビット同士を比較に移る。こうして、ｎとｋを更新して順次比較されることになり、結局、図９のデータ例の場合には、２番目の差分値データ対の合計値の最下位ビットＬＳＢとバイトレジスタＢＲの左から２番目のビット同士が等しくないので、それに関係するＭＩＤＩデータ列ＳＭＦ１中の３番目のキーオンイベントデータのベロシティ『４５』に『１』を加算して、『４６』に変更する。ここで、３番目のキーオンイベントデータのベロシティの値が『４６』に変更されると、それによって３番目の差分値データ（ｄｋｅｙ，ｄｖｅｌ）は（１４，６）となり、その合計値（ｄｋｅｙ＋ｄｖｅｌ）は『２０』となる。その結果、３番目の差分値データ対の合計値の最下位ビットＬＳＢは『０』に変更される。次はこの変更された３番目の最下位ビットＬＳＢと３番目のバイトレジスタＢＲのビット同士が比較される。この結果、両者は等しいと判断されるので、４番目のビット同士の比較処理に移る。このようにして、順番に比較処理とベロシティへの『１』の加算処理を行うと、５番目と６番目のベロシティにも『１』が加算されることになる。以上の処理の結果、ＭＩＤＩデータ列ＳＭＦ１の３番目のベロシティ『４５』、５番目のベロシティ『６７』及び６番目のベロシティ『７３』にそれぞれ『１』が加算されて、ＭＩＤＩデータ列ＳＭＦ１がＭＩＤＩデータ列ＳＭＦ２（図９（Ｆ））のように変更される。
【００４３】
ステップ９２では、未処理の付属情報が有るか否かを調べ、有れば、ステップ８３に戻り、次の付属情報の１バイトをレジスタＢＲにセットする。そして、前述と同様のステップ８３〜９１の処理を繰り返す。主要情報内に埋め込むべきすべての付属情報について、上述の埋め込み処理を終了すると、ステップ９２はＮＯとなり、図８の処理を終了する。なお、主要情報内に埋め込むべきすべての付属情報について上述の埋め込み処理を終了する前に、ステップ９０がＹＥＳとなった場合は、未処理の付属情報を処理するために適切な処理ステップ（図示せず）を付加してもよい。例えば、無発音の擬似的なキーオンイベントデータ群を設定し、そこに未処理の付属情報を埋め込み処理するようにしてよい。
【００４４】
以上のようにして付属情報を付加する処理（埋め込み処理）の施されたＭＩＤＩデータ列ＳＭＦ２は、適宜の記憶装置又はバッファ回路に記憶される。
このように付属情報を付加済（埋め込み済）のＭＩＤＩデータ列ＳＭＦ２から付属情報の各ビットを抽出し再生するには、記憶装置又はバッファ回路からＭＩＤＩデータ列ＳＭＦ２を読み出して、上述のアルゴリズムに準じた所定の再生演算を行なえばよい。そのための再生処理手順は、例えば図１０のような手順で行なうことができる。
すなわち、まず、記憶装置又はバッファ回路からＭＩＤＩデータ列ＳＭＦ２を読み出して、電子署名（すなわち付属情報）を検出すべきデータ列ＳＭＦ２を得る（ステップ９３）。次に、読み出したＭＩＤＩデータ列ＳＭＦ２から、イベント順序レジスタｎの値によって指示されるイベント順に、差分値データ対（ｄｋｅｙ，ｄｖｅｌ）を求め（ステップ９４）、その差分値データ対毎に所定の関数ｆ（ｄｋｅｙ，ｄｖｅｌ）の演算処理つまり合計処理（ｄｋｅｙ＋ｄｖｅｌ）を施し（ステップ９５）、その各合計値の最下位ビットＬＳＢを抽出して、所定の再生バッファメモリに順次ストアする（ステップ９６）。次に、レジスタｎの値を１増加し、ステップ９８のＮＯを経由してステップ９４に戻り、ステップ９４，９５，９６の処理を繰り返す。付属情報のすべてを検出し終えると、ステップ９８がＹＥＳとなり、処理を終了する。前述の通り、変更制御されたキーオンイベントデータ列ＳＭＦ２における差分値データ対毎の合計値（ｄｋｅｙ＋ｄｖｅｌ）の各最下位ビットＬＳＢは、付属情報の各ビットの値に一致しているものとなっているので、抽出した各合計値の最下位ビットＬＳＢのデータ値を、イベント順に再生バッファメモリに順次ストアすることにより、再生バッファメモリにおいて付属情報を配列させて再生することができる。
【００４５】
以上の処理によって、例えば、図９（Ｆ）のＭＩＤＩデータ列ＳＭＦ２に基づいて、図９（Ｇ）のような差分値データ対（ｄｋｅｙ，ｄｖｅｌ）のデータ列が求められ、その差分値データ対毎に所定の関数ｆ（ｄｋｅｙ，ｄｖｅｌ）の処理つまり合計処理（ｄｋｅｙ＋ｄｖｅｌ）を施して図９（Ｈ）のような合計値データ列を求める。このようにして求められた各合計値の最下位ビットＬＳＢが埋め込まれていた電子署名（つまり付属情報）であり、図９（Ｅ）と同じものが抽出・再生されることが理解できる。
なお、上記例では、キーコードの差分値とベロシティの差分値を夫々求め、両者の合計値のＬＳＢと付属情報との比較結果に応じてのベロシティの変更演算を行なっているが、これに限らず、ベロシティの差分値のみを求め、この差分値のＬＳＢと付属情報との比較結果に応じてのベロシティの変更演算を行なうようにしてもよい。
以上のように、この実施例によれば、ベロシティデータの差分値をパラメータとして該ベロシティデータに対する付属情報の埋め込み演算を行なうようにしたので、ベロシティデータ全体をシフトするようなデータ改変がなされたような場合において、差分値情報が維持されることにより、埋め込んだ付属情報の改変を防止することができる。
なお、この実施の形態では、図９（Ｄ）の関数処理データの最下位ビットＬＳＢと図９（Ｅ）のバイトレジスタＢＲの内容とを比較する場合に、左側から順番にビット同士を比較し、等しい（ＹＥＳ）場合には次の右側のビット同士を比較し、等しくない（ＮＯ）場合にはそのビットに関係する２つのキーオンイベントデータの中の後ろ側のキーオンイベントデータのベロシティに奇数ｍ（例えばｍ＝１）を加算して、次の右側のビット同士を比較するという一連の処理で行っている。ここで、加算する奇数ｍの値は、『１』に限らず、『３』や『５』などであってもよい。また、奇数ｍを加算することに限らず、減算するようにしてもよい。また、加算又は減算する奇数ｍの値を定数とせずに、適宜、変化させてもよい。また、比較の順序は、右側のビットから順番に比較するようにしてもよい。要するに、上記実施例に限定されるものではなく、結果として、上記と同等の処理を行なうことができるように、種々のソフト的な処理をＭＩＤＩデータ列ＳＭＦ１に施すようにすればよい。
【００４６】
なお、図５の電子署名付与処理２では、チャンネル毎に関数処理の内容を変更することによって、それぞれの情報を一度に変更するようなエディット処理、例えばチャンネル情報の入れ替えやキーコードのシフトなどといったものが行われた場合でも、エディットによって変更されるデータに関係しない関数を利用するチャネルから電子署名データを復元するようにしている。図８〜図１０の実施の形態のように、キーコードとベロシティの差分値を求めるようなものでも、同様に、各チャンネル毎に重複して付属情報の埋め込み処理を施すようにすることができる。
例えば、図８では、キーオンイベントデータのＭＩＤＩデータ列ＳＭＦ１に対して順番に差分値を求め、それに対して付加情報を順番に付加する場合について説明したが、差分値の大きさに基づいて所定数の領域（例えば、３つの領域）に分類し、分類されたもの同士で図８と同じような処理を施すようにしてもよい。すなわち、キーオンイベントデータのＭＩＤＩデータ列が
『Ｄ，９ｎ，３ｃ，４０，Ｄ，９ｎ，３ｃ，７ｆ，Ｄ，９ｎ，３ｃ，１０，Ｄ，９ｎ，３ｃ，７ｆ，Ｄ，９ｎ，３ｃ，７ｆ，Ｄ，９ｎ，３ｃ，２０，Ｄ，９ｎ，３ｃ，５０，Ｄ，９ｎ，３ｃ，７ｆ・・・・』のようなものであったとする。
この場合、ベロシティの差分値はｄｖｅｌは、『３ｆ，−６ｆ，６ｆ，０，−５ｆ，３０，２ｆ・・・』のようになる。
ここで、差分値の大きさが０〜２ｆの場合を第１領域、３０〜５ｆの場合を第２領域、６０〜７ｆの場合を第３領域とする。従って、第４番目と第７番目の差分値が第１領域となり、第１番目と第６番目の差分値が第２領域となり、第３番目が第３領域となる。マイナスの差分値は無視する。このようにして分類された第１〜第３の各領域について前述と同様の付属情報の付与処理を施すことによって、各領域に埋め込んだ付属情報がすべて改変される確率は２分の１の３乗、すなわち１２．５パーセントとなる。このことは、１つでも最下位ビットが残る確率が８７．５パーセントであることを意味する。
このようにすると、データ全体が係数ａで乗算された場合でも、埋め込んだ付属情報が改変される確率は非常に小さくなり、付属情報の内容を保持することが可能となり、付属情報の改変に対応することが可能となる。
【００４７】
上記のすべての実施例に関連して、本発明は、主要情報内に付属情報を組み込んで記憶するための方法又は装置として構成することができ、さらには、その方法を実施するためのプログラムを記録した記録媒体として構成することができ、さらには、その方法に従って記録されたデータ構造を持つデータを記憶した記録媒体として構成することができる。
更に、上記のすべての実施例に関連して、本発明は、付属情報を組み込んで記憶してなる主要情報から、該付属情報を抽出し再生するための方法又は装置として構成することができ、さらには、その方法を実施するためのプログラムを記録した記録媒体として構成することができる。
勿論、上記のすべての実施例において、図２で電子楽器１として示された装置は、汎用のパーソナルコンピュータによって置き換えることができることは、前述の通りである。また、電子楽器や楽音の合成／制御処理の分野に限らず、どのような電子情報を取り扱う分野ででも本発明を適用することができる。
また、上記各実施例において、付属情報のすべてを主要情報内に組み込む（埋め込む）ことなく、付属情報の一部を主要情報内に組み込む（埋め込む）ようにしてもよいのは勿論である。その場合、主要情報内に組み込まなかった残りの付属情報は、従来同様にヘッダ部等の適当な領域に記憶しておいてもよい。
上記のすべての実施例に関連して、付属情報（第２の情報）を組み込んだ状態からなる主要情報（第１の情報）を通信ネットワークを介して伝送するようにしてもよい。その場合、受信側では、通信ネットワークを介して伝送されたデータを受信し、受信したデータにおける主要情報（第１の情報）のデータのうちの特定のデータ単位から、複数の小サイズのデータ片を再現し、再現された各データ片により付属情報（第２の情報）を再生するようにすればよい。
【００４８】
【発明の効果】
この発明によれば、音楽データなどの複数のイベントデータで構成される主要情報（第１の情報）の中に適宜の付属情報（第２の情報）を組み込んで記憶することができるので、付属情報の不正な削除や改変を防ぐことができる、という優れた効果を奏する。また、付属情報を組み込んだ主要情報の一部が削除されたり変更された場合でも、付属情報を再現することができる、という優れた効果を奏する。
【図面の簡単な説明】
【図１】  この発明に係る電子情報の記憶（付与）処理及び再生（検出）処理におけるデータ変換形態の具体例を示すデータ図。
【図２】  この発明に係る電子情報処理システムとして動作する電子楽器のハードウェア全体構成例を示すブロック図。
【図３】  図２のハードウェアを用いて実行される電子署名付与処理（記憶処理）の一実施例を示すフローチャート図。
【図４】  図３に従って記憶された情報から電子署名（付属情報）を再生するための電子署名検出処理（再生処理）の一実施例を示すフローチャート図。
【図５】  図２のハードウェアを用いて実行される電子署名付与処理（記憶処理）の別の実施例を示すフローチャート図。
【図６】  図５に従って記憶された情報から電子署名（付属情報）を再生するための電子署名検出処理（再生処理）の一実施例を示すフローチャート図。
【図７】  図２における表示回路において表示される表示画面の一例を示す図。
【図８】  図２のハードウェアを用いて実行される電子署名付与処理（記憶処理）の更に別の実施例を示すフローチャート図。
【図９】  図８に従う記憶処理及び図１０に従う再生処理におけるデータ変換形態の具体例を示すデータ図。
【図１０】  図８に従って記憶された情報から電子署名（付属情報）を再生するための電子署名検出処理（再生処理）の一実施例を示すフローチャート図。
【符号の説明】
１  電子楽器
２１  ＣＰＵ
２２  ＲＯＭ
２３  ＲＡＭ
２４  音源
２５  フロッピーディスクドライブ
２６  鍵盤
２７  パネルスイッチ
２８  表示回路
２９  データ及びアドレスバス
【図１】
0004304870.tif 000002
【図２】
0004304870.tif 000003
【図３】
0004304870.tif 000004
【図４】
0004304870.tif 000005
【図５】
0004304870.tif 000006
【図６】
0004304870.tif 000007
【図７】
0004304870.tif 000008
【図８】
0004304870.tif 000009
【図９】
0004304870.tif 000010
【図１０】
0004304870.tif 000011