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