JP3870700B2 - 電子情報処理方法及び装置 - Google Patents
電子情報処理方法及び装置 Download PDFInfo
- Publication number
- JP3870700B2 JP3870700B2 JP2001036207A JP2001036207A JP3870700B2 JP 3870700 B2 JP3870700 B2 JP 3870700B2 JP 2001036207 A JP2001036207 A JP 2001036207A JP 2001036207 A JP2001036207 A JP 2001036207A JP 3870700 B2 JP3870700 B2 JP 3870700B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- data
- event data
- value
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
- Electrophonic Musical Instruments (AREA)
Description
【発明の属する技術分野】
この発明は電子的記憶媒体に楽音制御情報(MIDIデータなど)などの主要情報と付属情報とを暗号化処理して記憶したり、記憶媒体に記憶されている暗号化処理された主要情報と付属情報に基づいて元の主要情報及び付属情報を検出する処理を行なう電子情報処理方法及び装置に関し、さらにはそのシステムあるいは記録媒体に関する。
【0002】
【従来の技術】
最近では、パーソナルコンピュータを使用して、ユーザ自身が音楽データ、映像データ及び波形データなどを作成したり、それらに種々の変更を加えたりすることが容易にできるようになった。
従って、パーソナルコンピュータを使用することによって、市販のFD、CD−ROM、LDなどの記憶媒体に記録された音楽データ、映像データ及び波形データなどを自由に読み出して、それらに種々の変更処理を加えたりすることができる。
市販のCD−ROMやLDなどに記録されているデータは、その販売者や製作者などに著作権があるため、本来それらを自由に改変することは、著作権侵害の観点から許されるものではない。
従って、現在では、CD−ROMやLDなどの媒体に記録されている音楽データ、映像データ又は波形データなど主データの著作物がだれに属するものなのかを示すための著作権表示データを、その音楽データ、映像データ又は波形データなど主データを記録する主データ記録部とは別のヘッダ部において付属情報として付加的に記録することによって、著作権者を明示し、著作権侵害の未然防止を図っているのが現状である。
また、付属情報には、このような著作権表示データの他にも、その音楽データ、映像データ及び波形データの題名などを示す情報、又はその映像データや波形データなどがどのようなデータ圧縮技術で圧縮されているのかなどの記録形式を示す情報などがある。
【0003】
【発明が解決しようとする課題】
しかしながら、現在では、パーソナルコンピュータなどを使って自由にデータを書き換えたり変更したりすることができるので、故意又は過失によって、著作権表示データや種々の付属情報が削除されたり、書き換えられたりするという問題がある。特に、これらの付属情報がヘッダ部に記録されている場合は、削除や改竄が容易になされてしまうという問題がある。また、最近ではネットワーク通信の発達に伴って、このように著作権表示データの削除や改竄がなされた音楽データ、映像データ又は波形データなどが通信ネットワークを介して広く流通するという問題も起こり易い。
この発明は、音楽データなどのような複数のイベントデータで構成される主要情報(第1の情報)のデータフォーマットを変更することなく付属情報(第2の情報)を付加すると共にこれらのデータに暗号化処理を施し、この暗号を解読しない限り、こられの主要情報や付属情報を再生して利用することのできないようにした電子情報処理方法及び装置さらにはシステム若しくは記録媒体を提供することを目的とする。
【0004】
【課題を解決するための手段】
請求項1に係るこの発明の電子情報処理方法は、複数のイベントデータで構成される第1の情報を入力するステップと、前記イベントデータを複数のグループに分類するステップと、付属情報と情報の変更方法を表わす情報とを含む第2の情報を入力するステップと、前記分類されたグループ毎に、該グループに含まれるイベントデータの一部の内容を前記第2の情報に基づいて変更することにより前記第1の情報に前記第2の情報を分散して配置すると共に、該グループのイベントデータのうち前記第2の情報が配置されていない部分に対して前記第2の情報に含まれる前記情報の変更方法を表わす情報に基づく方法で変更を施すステップとからなる。
一例として、前記第1の情報に前記第2の情報を分散して配置することは、前記各グループに含まれる前記イベントデータの一部に対して前記各グループ毎にそれぞれ異なる所定の演算処理を行い、該演算結果の値と前記第2の情報とに基づいて該イベントデータの一部の内容を変更することからなる。
請求項3に係るこの発明の電子情報処理方法は、複数のイベントデータで構成される第1の情報を入力するステップと、ここで、該第1の情報には、複数のグループに分類された各グループ毎の前記イベントデータの一部において、付属情報と情報の変更方法を表わす情報とを含む第2の情報が、所定の演算処理に従い各グループ毎にそれぞれ分散して配置されており、かつ、各グループのイベントデータのうち前記第2の情報が配置されていない部分に対して当該第2の情報に含まれる前記情報の変更方法を表わす情報に基づく方法で変更が施されており、前記入力した第1の情報に含まれる前記イベントデータを前記複数のグループに分類するステップと、前記分類された各グループのイベントデータの一部から前記第2の情報を前記所定の演算処理に基づいてそれぞれ復号し検出すると共に、該検出された第2の情報に含まれる前記情報の変更方法を表わす情報に基づき各グループのイベントデータのうち前記第2の情報が配置されていない部分における前記変更されたイベントデータを変更前の内容に修復するステップとからなる。
このように第1の情報における各グループ毎に第2の情報を分散して配置したことにより、第1の情報の複数のグループ内に第2の情報を埋め込むことができる。従って、或るグループのデータの改変等が行われたとしても、改変されていない別のグループからそのデータ内の埋め込まれた第2の情報を再生することができるので、該第2の情報に含まれる付属情報の再生を確保することができる。また、各グループのイベントデータのうち前記第2の情報が配置されていない部分に対して該第2の情報に含まれる前記情報の変更方法を表わす情報に基づく方法で変更が施されるので、情報の保護機能を向上させることができる。
別の観点に従えば、この発明に係る機械読み取り可能な記憶媒体は、上記各観点に従ういずれかの方法をコンピュータに実行させるためのプログラムを記憶したものである。
更に別の観点に従えば、この発明に係る電子情報処理装置は、上記各観点に従ういずれかの方法を実施するよう構成された電子情報処理装置である。
【0005】
次に、以下説明する実施例に関連して概略を説明する。
第1の情報すなわち主要情報は、例えば、MIDI形式の音楽演奏情報であってよく、全体として大きな情報量を持ち、メモリにおいては所定の主データ記憶領域に記憶されるようなものである。第2の情報すなわち付属情報は、例えば、そのような主データ記憶領域に記憶された音楽演奏情報つまり第1の情報の、著作権表示に関する情報であってよく、音楽演奏情報つまり第1の情報に比べて小規模な情報量からなる。例えば、実施例によれば、第1の情報つまり主要情報は所定の主データ記憶領域に記憶され、第2の情報つまり付属情報は、ヘッダ領域ではなく、主データ記憶領域内で、第1の情報を構成するデータに組み込んで記憶することができる。
【0006】
実施例によれば、第1の情報から少なくとも2つのデータ単位を選択し、該少なくとも2つのデータ単位の各値に関連する値を持つデータ関連値を求める。このデータ関連値は、例えば、相前後するデータ単位の各値の差分値である。第2の情報を構成するデータ群から、第1の情報の1つのデータ単位に組み込むべきデータセグメントが、選択される。1つのデータ単位に組み込むことができるデータセグメントのサイズは、複数ビットであってよいし、必要に応じて1ビットのみであってもよい。データ関連値及びデータセグメントの値を変数とする所定の関数に基づき、第1の情報における1つのデータ単位の内容に置換されるべきデータを生成し、この生成されたデータにより、第1の情報における前記少なくとも2つのデータ単位のうちの所定の一方に該当するデータ単位の内容を置換する。生成されたデータにより該当するデータ単位の内容をそっくり置換することにより、1つのデータ単位に組み込むことができる第2の情報のデータセグメントのサイズを比較的大きくすることができ、第2の情報を第1の情報内に効率的に組み込むことができる。また、データ単位の内容を置換する構成であるため、第1の情報のデータフォーマットはそのままに維持されることになり、主要情報たる第1の情報のデータフォーマットの変更を要求することなく、第2の情報として、任意の種類及び内容のデータを、第1の情報の中に組み込むことができる。すなわち、第1の情報の中に、電子的透しの手法によって、任意の第2の情報を組み込むことができる。
【0007】
置換すべきデータの生成のために使用する前記所定の関数は、前記データ関連値及び前記データセグメントの値を変数とする所定の演算を実行することにより実現するようにしてもよい。あるいは、該所定の関数は、前記データ関連値及び前記データセグメントの値を変数として所定のテーブルを参照することにより実現されるようになっていてもよい。
前記第1の情報におけるデータ単位の配列において、相前後するデータ単位の値の差が所定値より小さいところを検出し、その中の1つのデータ単位を、置換されるべきデータ単位として選択するようにするとよい。このことは、第1の情報におけるデータ単位の配列において、その値の変化の少ないところから、置換されるべきデータ単位を選択することを意味する。これにより、データの置換によって、再生時に生ずるかもしれない、再生データが乱れることがあるかもしれない、といったような問題による影響を最小限に納めることを可能にする。
【0008】
上記のようにして第1の情報内に第2の情報が組み込まれたデータ群からそれぞれの情報を再生するために、前記第1の情報のうちの前記置換されたデータ単位から、前記データ関連値及び前記データセグメントの値を再生するステップと、再生した前記データ関連値に基づき該置換されたデータ単位の本来の内容を再生するステップとを具備するとよい。データ関連値は、置換されたデータ単位の本来の内容と、もう1つのデータ単位の内容と、に関連している値であり、置換されたデータ単位の本来の内容は未知、もう1つのデータ単位の内容は既知、であるから、再生したデータ関連値と既知であるもう1つのデータ単位の内容とから、未知である置換されたデータ単位の本来の内容を再現することができる。例えば、データ関連値が上記のような差分値からなるものである場合は、既知であるもう1つのデータ単位の内容にデータ関連値を足し算または引き算することによって、置換されたデータ単位の本来の内容を再現することができる。第1の情報における前記2つのデータ単位のデータ関連値は、演算に限らず、所定の関数又はテーブルに従って求めた値であってもよい。
【0009】
再生処理を容易にするために、第1の情報におけるデータ単位が置換されているか否かを示すために、適宜のフラグ値を該データ単位内に組み込んでおくようにしてよい。実際問題として、このようなフラグ値の組み込みによって、再生時において、再生データが乱れることが起こり得、それ故に、置換されたデータ単位の本来の内容は、正確に再現されずに、下位ビットの値に乱れが起こることがあるかもしれない。本発明においては、そのような再生時における多少の乱れは許容するものとする。すなわち、未知である置換されたデータ単位の本来の内容を、完全に正確に再現することなく、下位ビットの値に多少の乱れでみられることがある故に、大体の値を再現することができるだけのような場合であっても、「置換されたデータ単位の本来の内容を再現する」ことに該当する。例えば、MIDIデータにおけるベロシテイデータは、楽音の音量を規定するものであるから、その下位ビットの値の多少の乱れは、再生性能を損なうという重大な問題を引き起こさない。よって、そのような、再生性能を損なうという重大な問題を引き起こすおそれがない性質のデータに対して、第2の情報を組み込むためのデータ置換処理を施すとよい。
【0010】
一例として、主要情報を編集することによって主要情報の中に種々の付属情報を埋め込むと共に主要情報に暗号化処理を施すものである。主要情報は、MIDIデータのキーオンイベントデータ、プログラムチェンジデータ又はコントロールチェンジデータなど複数のイベントデータで構成されるものである。付属情報としては、著作者名、曲の題名、画像/映像の題名などに関する文字データや波形データの圧縮方法などのデータ形式に関するデータやその他の種々のデータ(暗号文、鍵情報、ID、パスワード、ニュース文)などがある。この電子情報処理システムは、主要情報を構成するデータ群の中の所定のデータ群として、MIDIデータの場合にはキーオンイベントデータ群を用い、このキーオンイベントデータ群の中の単位データとして、ベロシティデータやキーコードデータを用い、これらの相前後するもの同士の差分値を求め、それを用いる。
【0011】
このベロシティデータ及びキーコードデータは、MIDIメッセージの中で0〜127の値を取るので、負の差分値に対応した0〜63と、正の差分値に対応した64〜127とに分割される。付属情報として4ビット構成のデータを考えた場合に、3ビットをキーコードデータに割り当て、1ビットをベロシティデータに割り当てると、キーコードデータは0〜7,8〜15,・・・,56〜63のような負の差分値に対応した8つの領域に分割され、64〜71,72〜79,・・・,120〜127のような正の差分値に対応した8つの領域に分割され、ベロシティデータは0〜31,32〜63のような負の差分値に対応した2つの領域に分割され、64〜95,96〜127のような正の差分値に対応した2つの領域に分割される。これらのキーコード及びベロシティの値をX−Y座標のそれぞれの軸に対応付けると、キーコード及びベロシティの差分値が共に正の場合、キーコードの差分値が正でベロシティの差分値が負の場合、キーコード及びベロシティの差分値が共に負の場合、キーコードの差分値が負でベロシティの差分値が正の場合の4通りがそれぞれX−Y座標系の4つの象限に対応するようになる。
【0012】
従って、キーコード及びベロシティの差分値の正負に応じて各象限が決定し、付属情報の値に応じてキーコード及びベロシティの値の範囲が決定し、その差分値に応じてその範囲内の値が決定するので、この決定した値を新たなキーコード及びベロシティの値とすることによって、前のキーコード及びベロシティとは異なる値に変換することができる。変換されたキーコード及びベロシティの値は元の値とは全く相関がないので、これを自動演奏で再生したとしてもスクランブルのかかった(暗号化された)ものとなり、演奏音としては成立しない。また、付属情報として、1つのキーオンイベントデータ中に複数ビットのデータを埋め込むことができるので、大量のデータを主要情報の品質を落とすことなく、主要情報と共に伝送することができるという効果がある。
【0013】
上記のように編集された前記主要情報を構成するデータ群を、電子的記憶媒体に記録するようにしてよいし、又は通信ネットワークを介して配信するようにしてもよい。記憶媒体から読み出した、又は通信ネットワークを介して配信されてきたデータ群から、主要情報(第1の情報)と付属情報(第2の情報)とが適切に再現される。この方法は、記憶媒体から読み出した、又は通信ネットワークを介して受信したデータ群データのうち前記第1の情報の前記置換されたデータ単位から、前記データ関連値及び前記データセグメントの値を再生するステップと、再生した前記データ関連値に基づき該置換されたデータ単位の本来の内容を再生するステップとを具備する。再生された付属情報(第2の情報)は、可視的にディスプレイするようしてもよい。すなわち、主要情報(第1の情報)の中に組み込まれた付属情報(第2の情報)が、文字データや波形データの圧縮方法などのデータ形式に関するデータやその他の種々のデータ(暗号文、鍵情報、ID、パスワード、ニュース文)などである場合、それらを画面上に表示することができるものであり、また、これらのデータを通信ネットワークを介して配信する場合は、時々刻々と配信されてくるデータに応じてストーリミングに表示することができる。
【0014】
実施例において、複数のデータ単位の集まりからなるデータ群により構成された主要情報の中に付属情報のデータを組み込む方法において、前記主要情報のデータグループにおける特定の各データ単位の中に前記付属情報を構成するデータを分散して組み込むステップを具備し、前記主要情報のデータをそのデータ特性に従って少なくとも2つの特性グループに分類し、各グループの各々において前記付属情報を重複して組み込む。これによって、主要情報における複数のデータグループにおいて、付属情報を重複してすなわち冗長的に組み込むことができ、主要情報の一部のデータグループでデータ変更がなされてそのデータグループからは付属情報の取り出しができなくなったとしても、他のデータグループから付属情報を取り出すことができるようになる。すなわち、冗長的に付属情報を組み込んだ複数の特性グループのうち少なくとも1つの特性グループから付属情報を再生すればよい。主要情報がMIDIデータのような音楽演奏情報の場合には、移調等のためにキーコードの値がシフトされる等のことが往々にして起こり得るので、そのような場合に適切に対処することができる。
【0015】
一例として、主要情報の所定の第1のデータグループにおける特定の各データ単位の中に、暗号化処理の手法を示す暗号情報を構成するデータを分散して、組み込む第1ステップと、前記主要情報における所定の第2のデータグループにおいて、該主要情報を構成するデータに対して、前記暗号情報が示す暗号化処理を施す第2ステップとを具備してよい。これによれば、主要情報における第1のデータグループにおいて、暗号化処理のために必要な暗号情報(換言すれば再生時の暗号化解読に必要な情報)が、分散して組み込まれる。従って、主要情報における第1のデータグループにおいては、そのデータフォーマットを変更することなく、電子的透しの手法で、適宜のアルゴリズムに従って、その中に暗号情報を組み込むことができる。そして、本格的な暗号化処理は、主要情報における所定の第2のデータグループにおけるデータに対して、前記暗号情報が示す暗号化処理に従って施される。
【0016】
上記に従って暗号化された主要情報を再生するために、前記暗号情報が組み込まれてなる前記主要情報の前記第1のデータグループから、該暗号情報を再生するステップと、前記再生した暗号情報に基づき、前記主要情報の前記第2のデータグループのデータをデコードし、主要情報を再生するステップとを具備するようにしてよい。暗号情報を解読することをオーソライズされたもの(すなわち正当な利用者)がこの方法を実施することで、暗号情報を再生することができ、これに基づき、主要情報の前記第2のデータグループのデータをデコードして、主要情報を再生することができる。主要情報がMIDI情報のような音楽情報の場合、主要情報における第1のデータグループにおける暗号情報の電子的透しの度合いを比較的弱くすることができ、暗号情報を解読することをオーソライズされていないものが、この暗号情報の電子的透しを解除することなく、主要情報の前記第1のデータグループの部分を再生したとしても、対応する音楽の試聴はさほど重大なさしつかえなしにできるようにすることができる。他方、主要情報の前記第2のデータグループは、本格的に暗号化されているので、暗号情報を解読することをオーソライズされていないものは第1のデータグループから暗号情報を取得することができず、よって、第2のデータグループの暗号化状態を解除することができない。よって、何人でも、第1のデータグループに対応する部分の音楽は試聴できるが、第2のデータグループに対応する部分の音楽はオーソライズされたものしか利用することができない、といったような効果的な使い分けができるようになる。
【0017】
一例として、主要情報としては、前述と同様にMIDIデータのキーオンイベントデータ、プログラムチェンジデータ又はコントロールチェンジデータなどであってよい。後述する実施例においては、暗号情報は、主要情報を暗号化するつまりスクランブルする、という意味で、スクランブルデータ若しくはスクランブルデコードデータという用語で説明されている。スクランブルデータとは、スクランブル(つまり暗号化)の手法を示すデータのことであり、換言すれば、このデータは、データ再生時においてはスクランブル(つまり暗号化)の解読のために利用できるデータであるから、スクランブルデコードデータという用語も同じ意味で使用している。MIDIデータの暗号化(スクランブル)の仕方としては、何種類かがあってよく、例えば、MIDIのキーオンデータのノート番号を変更することで暗号化する手法、あるいは、キーオンデータのノートとベロシティを入れ替えることで暗号化する手法、あるいは、MIDIのインターバルデータの値を変更することで暗号化する手法、あるいは、キーオンデータのチャンネルデータを変更することで暗号化する手法、などがある。暗号情報すなわちスクランブルデータ若しくはスクランブルデコードデータは、どの種類の暗号化手法を採用するかを指示するものである。
【0018】
一例として、主要情報たるMIDIデータの中への、暗号情報たるスクランブルデータの組み込みの仕方は、MIDIのキーオンイベントデータの中のベロシティデータの一部(最下位ビットが最適)の値を、そのスクランブルデータのセグメントの内容に基づいて変更する。従って、或る一つのベロシティデータの中に組み込もうとするスクランブルデータのセグメントに応じて、そのベロシティデータの最下位ビットが変更されたり、されなかったりする。これによって、スクランブルデータの内容がMIDIデータ群の中に分散して記録されるようになる。なお、主要情報がMIDIデータの場合には、スクランブルデータの組み込みのために変更されるデータはベロシティデータやデュレーションタイムデータが望ましい。なぜなら、これらのデータはさほど厳密性を要求されないデータであるから、その下位ビットの値の多少の誤差は問題にされないないからである。すなわち、これらの情報が多少変更されても音声データの場合には聴感上でほとんど感知(知覚)されないからである。また、主要情報が波形データの場合には、その波形データそのものの最下位ビットを変更すればよい。また、画像データの場合も同様である。
【0019】
再生時において、スクランブルデータの埋め込まれた部分の主要情報(例えばMIDIデータ)が再生された場合には、スクランブルデータのセグメントによるの電子的透しを解除することなく、そのまま再生したとしても、さほど重大な不都合を起こすことなく再生することが可能である。しかし、暗号化処理された部分は、MIDIデータとしてのフォーマットを維持してはいるものの、その内容はスクランブルされてしまっているので、それをデコードせずに再生したとしても、もはや音楽的演奏としての体を成さないようになっている。従って、オーソライズされた装置若しくは再生ソフトウェアを使用して、主要情報内に埋め込まれたスクランブルデータを再生し、このスクランブルデータを用いて暗号化状態をデコードしない限り、元の音楽的演奏の再生が正しく行われることはない。
【0020】
前記主要情報の所定の第1のデータグループの中に暗号情報を構成するデータを分散して組み込む場合において、前記主要情報データの該所定の第1のデータグループは、そのデータ特性に従って少なくとも2つの特性グループに分類され、該少なくとも2つの特性グループの各々において前記暗号情報がそれぞれ重複して組み込まれるようにするとよい。更に別の例として、前記第1ステップでは、各特性グループ毎にユニークなアルゴリズムに従って、各特性グループ毎に前記暗号情報を組み込むようにしてよい。これにより、第1のデータグループにおける或る特性グループのデータが一括的に変更されることにより、その中に組み込まれた暗号情報(スクランブルデータ)が再生不能に変形されてしまったとしても、別の特性グループのデータの中に組み込まれた暗号情報を再生し、これを第2のデータグループのデコードのために利用することができる。すなわち、主要情報がMIDIデータの場合には、チャンネル単位で、MIDIデータの内容が入れ替えられたり、あるいは移調等のためにキーコードがシフトされたりすることが、往々にして起こり得るものであり、そうすると、もはやスクランブルデータを主要情報の中から検出し再生することができなくなる。そこで、上記のように、チャンネル毎又はプログラムチェンジデータの出現タイミング毎等のなんらかの分類条件に従って、MIDIデータ(主要情報)を2つの特性グループに分類し、それぞれの特性グループ毎に冗長に暗号情報を組み込むようにしたのである。これによって、チャンネル情報がそのまま入れ替えられたりしてデータが書き換えられたり、という特性グループ単位でのデータ変更がなされたとしても、データ変更がなされていないいずれかの特性グループに組み込まれた暗号情報を検出し再生することで、第2のデータグループにおける暗号化を解除することができるようになる。
【0021】
また、別の実施例においては、複数のデータ単位の集まりからなるデータ群により構成された第1の情報の中に第2の情報のデータを組み込む方法であって、前記第1の情報から1つのデータ単位を選択するステップと、前記第2の情報を構成するデータ群から、前記第1の情報の1つのデータ単位に組み込むべきデータセグメントを、選択するステップと、前記データセグメントの値をパラメータに含む所定のアルゴリズムに従って、前記第1の情報の前記選択されたデータ単位の内容を変更するステップとを具備し、前記選択されたデータ単位の内容に対して前記アルゴリズムに従う変更が施され、かつ前記第2の情報のデータセグメントの値が該選択されたデータ単位の中に潜在的に組み込まれることを特徴とする。これによれば、第1の情報すなわち主要情報のデータの中の前記選択されたデータ単位の内容を変更することで、第2の情報すなわち付属情報を組み込むので、第2の情報すなわち付属情報の組み込みのみならず、第1の情報すなわち主要情報の部分的な変更をも行なうことができる。
【0022】
更に別の実施例においては、複数のデータ単位の集まりからなるデータ群により構成された主要情報の中に付属情報のデータを組み込む方法であって、前記主要情報から1つのデータ単位を選択するステップと、前記付属情報を構成するデータ群から、前記主要情報の1つのデータ単位に組み込むべきデータセグメントを、選択するステップであって、該選択するデータセグメントのデータ量は可変であることと、前記データセグメントの値をパラメータに含む所定のアルゴリズムに従って、前記主要情報の前記選択されたデータ単位の内容を変更するステップであって、前記アルゴリズムは前ステップで選択したデータセグメントのデータ量に応じたものであることとを具備し、前記選択されたデータ単位の内容に対して前記アルゴリズムに従う変更が施され、かつ前記付属情報のデータセグメントの値が該選択されたデータ単位の中に潜在的に組み込まれることを特徴とする。これによれば、主要情報の1つのデータ単位に組み込むべき付属情報のデータセグメントのデータ量を可変調整することができる。従って、付属情報の全体的なデータ量や種別等を考慮して適切なデータセグメントのサイズ(データ量)を選定することができる。
【0023】
更に別の実施例に従う方法は、情報を伝送する方法であって、送信すべき情報として、複数のデータ単位の集まりからなるデータ群により構成された主要情報を提供するステップと、前記主要情報を構成するデータの中に組み込まれるべき付属情報として、複数のデータセグメントからなる付属情報を提供するステップと、前記主要情報の送信時に、所定のアルゴリズムに従って、前記提供された主要情報の特定の複数のデータ単位の各々の中に、前記提供された付属情報の各データセグメントの各々を組み込むステップと、前記付属情報が組み込まれた前記主要情報をネットワークに送信するステップとを具備する。これにより、電子的透し情報として主要情報の中に組み込まれた付属情報を、ネットワークを介してストリーミングに送信することができる。
【0024】
更に別の実施例に従う方法は、上記のようにネットワークを介して送信されてくる情報を受信して、その中から主要情報と付属情報とを再生する方法であって、前記ネットワークを介して受信したデータから前記付属情報のデータセグメントが組み込まれている前記データ単位を検出するステップと、前記所定のアルゴリズムに応じた復号化を行なうことにより、前記検出したデータ単位から前記付属情報のデータセグメントと前記主要情報のデータ単位とを分離してそれぞれ再生するステップとを具備する。これにより、電子的透し情報として主要情報の中に組み込まれた付属情報がネットワークを介してストリーミングに送信されてくると、これをリアルタイムに復号化して、電子的透しの解読すなわち付属情報の再生をストリーミングに行なうことができる。
【0025】
更に別の実施例に従う方法は、通常形式でコード化された音楽演奏情報に対して、選択的に、あるいは部分的に暗号化を施すステップを具備し、音楽演奏情報の一部に選択的に暗号化を施すことを特徴とするものである。また、この方法に従って音楽演奏情報を記録した記録媒体は、前記音楽演奏情報の所定の部分が通常形式でコード化されており、前記音楽演奏情報の別の部分には秘密の特殊な暗号化が施されていることを特徴としており、これにより、前記通常形式でコード化された音楽演奏情報の部分のみをそのまま再生することができ、前記特殊な暗号化が施された部分は暗号化部分をデコードした場合に再生できるようにしたものである。これにより、通常形式でコード化された音楽演奏情報の部分は誰もが再生できるので、その部分の演奏を試聴用演奏として役立てることができ、極めて便利であると共に、暗号解読手段を持つ正当な利用者(オーソライズされた者)は暗号化部分を解読(デコード)することで問題なく全音楽演奏を正当に利用することができ、不都合のないものとなる。
【0026】
上記では、主に方法としての観点から実施例の大まかな導入的説明を行なったが、本発明を方法発明として構成し実施することができるのみならず、装置発明として構成し、実施することもできるのは勿論である。また、本発明は、コンピュータプログラムの形態で実施することができるし、そのようなコンピュータプログラムを記憶した記録媒体の形態で実施することもできる。更に、本発明の方法又は装置に従って電子的透し情報の形態で付属情報を主要情報の中に組み込んでなるデータ群を記録してなる記録媒体それ自体もまた、本発明の一実施形態に含まれる。
【0027】
【発明の実施の形態】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図2は、この発明の一実施例に係る電子情報処理システムとして動作する電子楽器の全体構成を示すブロック図である。
マイクロプロセッサユニット(CPU)21はこの電子楽器全体の動作を制御するものである。このCPU21に対して、バス2Mを介して各種のデバイスが接続される。
【0028】
CPU21はROM22及びRAM23内の各種プログラムや各種データ、及び外部記憶装置から取り込まれた楽音制御情報(MIDIデータ)に基づいて全体の動作を制御すると共に取り込まれたMIDIデータ内に付属情報を分散して記憶したり、付属情報の分散記憶されたMIDIデータをフロッピーディスクから取り込み、それから付属情報を検出したりする。この実施の形態では、外部記憶装置として、フロッピーディスクドライブ24、ハードディスクドライブ25、CD−ROMドライブ26などを例に説明するが、これ以外の光磁気ディスク(MO)ドライブ、PDドライブなどを用いてもよい。また、通信インターフェイス27を介して通信ネットワーク28上のサーバコンピュータ29などから楽音制御情報などの各種情報などを取り込んでもよいし、MIDIインターフェイス2Aを介して他のMIDI機器2BなどからMIDIデータなどを取り込んでもよい。
CPU21は、このような外部記憶装置から取り込まれたMIDIデータや鍵盤2Cの押鍵操作に基づいて生成したMIDIデータを音源回路2Jに供給する。なお、外部に接続された音源回路を用いて発音処理を行うようにしてもよい。
【0029】
ROM22はCPU21の各種プログラム(システムプログラムや動作プログラムなど)や各種データを格納するものであり、リードオンリーメモリ(ROM)で構成されている。
RAM23は、CPU21がプログラムを実行する際に発生する各種データを一時的に記憶するものであり、ランダムアクセスメモリ(RAM)の所定のアドレス領域がそれぞれ割り当てられ、レジスタ、バッファ、フラグ、テーブル等として利用される。
【0030】
また、ハードディスク装置25などの外部記憶装置に前記動作プログラムを記憶するようにしてもよい。また、前記ROM22に動作プログラムを記憶せずに、ハードディスク装置25などの外部記憶装置にこれらの動作プログラムを記憶しておき、それをRAM23に読み込むことにより、ROM22に動作プログラムを記憶したときと同様の動作をCPU21に行わせるようにしてもよい。このようにすると、動作プログラムの追加やバージョンアップ等が容易に行える。着脱自在な外部記憶媒体の1つとして、CD−ROMを使用してもよい。このCD−ROMには、自動演奏データやコード進行データや楽音波形データや映像データなどの各種データ及び任意の動作プログラムを記憶していてもよい。CD−ROMに記憶されている動作プログラムや各種データは、CD−ROMドライブ26によって、読み出され、ハードディスク装置25に転送記憶させることができる。これにより、動作プログラムの新規のインストールやバージョンアップを容易に行うことができる。
【0031】
なお、通信インターフェイス27をデータ及びアドレスバス2Mに接続し、この通信インターフェイス27を介してLAN(ローカルエリアネットワーク)やインターネット、電話回線などの種々の通信ネットワーク28上に接続可能とし、他のサーバコンピュータ29との間でデータのやりとりを行うようにしてもよい。これにより、ハードディスク装置25内に動作プログラムや各種データが記憶されていないような場合には、サーバコンピュータ29からその動作プログラムや各種データをダウンロードすることができる。この場合、クライアントとなる楽音生成装置である自動演奏装置から、通信インターフェイス27及び通信ネットワーク28を介してサーバコンピュータ29に動作プログラムや各種データのダウンロードを要求するコマンドを送信する。サーバコンピュータ29は、このコマンドに応じて、所定の動作プログラムやデータを、通信ネットワーク28を介して自動演奏装置に送信する。自動演奏装置では、通信インターフェイス27を介してこれらの動作プログラムやデータを受信して、ハードディスク装置25にこれらのプログラムやデータを蓄積する。これによって、動作プログラム及び各種データのダウンロードが完了する。
【0032】
なお、本発明は、本発明に対応する動作プログラムや各種データをインストールした市販のパーソナルコンピュータ等によって、実施させるようにしてもよい。その場合には、本発明に対応する動作プログラムや各種データを、CD−ROM26やフロッピーディスク等の、パーソナルコンピュータが読み込むことができる記憶媒体に記憶させた状態で、ユーザーに提供してもよい。そのパーソナルコンピュータが読み込むことができる記憶媒体に記憶させた状態で、ユーザに提供してもよい。そのパーソナルコンピュータ等が、LAN、インターネット、電話回線等の通信ネットワークに接続されている場合には、通信ネットワークを介して、動作プログラムや各種データ等をパーソナルコンピュータ等に提供してもよい。
【0033】
鍵盤2Cは発音すべき楽音の音高を選択するための複数の鍵を備えており、各鍵に対応したキースイッチを有しており、また必要に応じて押圧力検出装置等のタッチ検出手段を有している。鍵盤2Cは音楽演奏のための基本的な操作子であり、これ以外の演奏操作子でもよいことはいうまでもない。
押鍵検出回路2Dは発生すべき楽音の音高を指定する鍵盤2Cのそれぞれの鍵に対応して設けられたキースイッチ回路を含むものである。この押鍵検出回路2Dは鍵盤2Cの離鍵状態から押鍵状態への変化を検出してキーオンイベントを出力し、押鍵状態から離鍵状態への変化を検出してキーオフイベントを出力すると共にそれぞれのキーオンイベント及びキーオフイベントに関する鍵の音高を示すノートナンバを出力する。押鍵検出回路2Dはこの他にも鍵押し下げ時の押鍵操作速度や押圧力等を判別してベロシティデータやアフタタッチデータを出力する。
【0034】
パネルスイッチ2Eは自動演奏スタート/ストップスイッチ、一時停止(ポーズ)スイッチ、音色、音量、効果等を選択、設定、制御するための各種スイッチを含むものである。
スイッチ検出回路2Fはパネルスイッチ2E上の各スイッチ群に対応して設けられており、これらの各スイッチ群の操作状態に応じたスイッチイベントをバス2Mを介してCPU21に出力する。
表示回路2HはCPU21の制御状態、設定データの内容等の各種の情報をディスプレイ2Gに表示するものである。この実施の形態では、著作権表示データ、曲名、作曲者情報、作成年月日、歌詞、ニュース文、機種名(ハード名)、IDなどのテキストデータなどを表示する。ディスプレイ2Gは液晶表示パネル(LCD)等から構成され、表示回路2Hによってその表示動作を制御される。
【0035】
音源回路2Jは、複数のチャンネルで楽音信号の同時発生が可能であり、CPU21から与えられた楽音制御情報(ノートオン、ノートオフ、ベロシティ、ピッチデータ、音色番号等のMIDIデータ)を入力し、これらの楽音制御情報に基づいた楽音信号を発生する。
音源回路2Jにおいて複数チャンネルで楽音信号を同時に発音させる構成としては、1つの回路を時分割で使用することによって複数の発音チャンネルを形成するようなものや、1つの発音チャンネルが1つの回路で構成されるような形式のものであってもよい。また、音源回路2Jにおける楽音信号発生方式はいかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出すメモリ読み出し方式(波形メモリ方式)、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるFM方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるAM方式等の公知の方式を適宜採用してもよい。また、これらの方式以外にも、自然楽器の発音原理を模したアルゴリズムにより楽音波形を合成する物理モデル方式、基本波に複数の高調波を加算することで楽音波形を合成する高調波合成方式、特定のスペクトル分布を有するフォルマント波形を用いて楽音波形を合成するフォルマント合成方式、VCO、VCF及びVCAを用いたアナログシンセサイザ方式等を採用してもよい。また、専用のハードウェアを用いて音源回路を構成するものに限らず、DSPとマイクロプログラムを用いて音源回路を構成するようにしてもよいし、CPUとソフトウェアのプログラムで音源回路を構成するようにしてもよい。
【0036】
タイマ2Nは時間間隔を計数したり、自動演奏のテンポを設定したりするためのテンポクロックパルスを発生する。このテンポクロックパルスの周波数は各種スイッチ2Eの中のテンポ設定スイッチや予め演奏データに含まれている図3のようなテンポデータに基づいて決定されている。タイマからのテンポクロックパルスはCPU21に対してインタラプト命令として与えられ、CPU21はインタラプト処理により自動演奏時における各種の処理を実行する。
効果回路2Kは音源回路2Jからの楽音信号に種々の効果を付与し、効果の付与された楽音信号をサウンドシステム2Lに出力する。効果回路2Kによって効果の付与された楽音信号は、アンプ及びスピーカからなるサウンドシステム2Lを介して発音される。
【0037】
次に、この発明に係る電子情報処理システムが電子情報を付与すると共に暗号化処理を同時に行う場合の動作の一例について説明する。
図3は、電子楽器1が電子情報処理システムとして動作する場合のMIDIデータ編集処理の一例を示すフローチャート図である。まず、この場合には、電子楽器1は、フロッピーディスクドライブ24から読み出したMIDIデータにそのヘッダ情報の一部である電子署名すなわち著作権表示データを分散して記憶すると共にMIDIフォーマットを維持したまま暗号化処理を施す場合について説明する。
【0038】
まず、ステップ31では、MIDIデータ列内に分散して書き込まれるべき付属情報の内容を決定する。この実施の形態では、付属情報として、電子署名(著作権表示データ)をMIDIデータ列内に分散して埋め込む場合について説明する。例えば、著作権表示データとして『COPYRIGHT△YMH△1996』のような文字をMIDIデータ列内に分散して書き込む場合には、これらの文字列をパネルスイッチ2Eを用いて入力する。ここで、△は空白を意味する。
ステップ31で書き込むべき電子署名すなわち付属情報の文字列が決定したので、今度はステップ32で、その電子署名に関する4ビット構成のデータ列を得る。例えば、パネルスイッチ2Eによって『COPYRIGHT△YMH△1996』が入力された場合には、それをASCIIの文字符号のデータ列に変換する。
この場合、それぞれの文字は『C』=『43H』、『O』=『4FH』、『P』=『50H』、『Y』=『59H』、『R』=『52H』、『I』=『49H』、『G』=『47H』、『H』=『48H』、『T』=『54H』、『△』=『20H』、『Y』=『59H』、『M』=『4DH』、『H』=『48H』、『△』=『20H』、『1』=『31H』、『9』=『39H』、『9』=『39H』、『6』=『36H』のような一連のASCIIの4ビット構成のデータで表されるようになる。なお、『36H』のように記された数において、数字の末尾のHはその数が16進表示であることを示す。
【0039】
次に、ステップ33では、電子署名として付与する情報すなわち、ステップ32で得られたASCIIの4ビット構成のデータ列を4ビットレジスタBRに格納する。例えば、『Y』=『59H』、『M』=『4DH』、『H』=『48H』の文字をMIDIデータ列に順番に格納する場合、4ビットレジスタBRには、図1(C)に示すように『0101B』、『1001B』、『0100B』、『1101B』、『0100B』、『1000B』のような4ビット構成のデータが順番に格納される。なお、『1000B』のように記された数において、数字の末尾のBはその数が2進表示であることを示す。
そして、ステップ34では、この4ビットレジスタBRに格納されている上位3ビットをノートエリアナンバNAとし、最下位ビット(LSB)をベロシティエリアナンバVAとする。従って、電子署名の『Y』=『59H』の最初の4ビット:『0101B』の場合はNA=2,VA=1、後ろの4ビット:『1001B』の場合はNA=4,VA=1となり、電子署名の『M』=『4DH』の最初の4ビット:『0100B』の場合はNA=2,VA=0、後ろの4ビット:『1101B』の場合はNA=6,VA=1となり、電子署名の『H』=『48H』の最初の4ビット:『0100B』の場合はNA=2,VA=0、後ろの4ビット:『1000B』の場合はNA=4,VA=0となる。
【0040】
次に、ステップ35では、MIDIデータ列(Standard MIDI File:SMF)の中からキーオンイベントデータやプログラムチェンジデータやコントロールチェンジデータなどの各種のMIDIデータを順次取り出す。すなわち、MIDIデータ列は基本的にはキーオンステータスバイト、キーコードバイト、ベロシティバイトからなるキーオンイベントデータやこれ以外のプログラムチェンジイベントデータやコントロールチェンジイベントデータなどから構成されているので、ステップ35では、このようなMIDIデータを順番に取り出す。
【0041】
ステップ36では、取り出されたMIDIデータがキーオンイベントデータKONであるかどうかを判定し、キーオンイベントデータ(YES)の場合は次のステップ37以下の処理を行い、そうでない(NO)の場合はステップ3Hに進む。従って、ステップ35で取り出されたMIDIデータがキーオンイベントデータの場合には、図1(A)のようなキーオンイベントデータからなるMIDIデータ列SMF1が得られることになる。このキーオンイベントデータのMIDIデータ列SMF1はデュレーションタイムDと、キーオンイベントデータとの組合せで構成される。
ステップ37では、キーオンイベントデータの中の各バイトのデータをそれぞれ対応するキーコードレジスタb,ベロシティレジスタcに格納する。すなわち、キーオンイベントデータのキーオンステータスバイト中のキーコードバイトの値すなわちキーコードをキーコードレジスタbに、ベロシティバイトの中のベロシティの値をベロシティレジスタcにそれぞれ格納する。
【0042】
ステップ38では、前のキーオンイベントデータのキーコードとベロシティとの差分値を取り、それをキーコード差分値レジスタdkey及びベロシティ差分値レジスタdvelにそれぞれ格納する。すなわち、キーコードレジスタbには今回のキーオンイベントデータのキーコードが格納され、前回値レジスタb0には前のキーオンイベントデータのキーコードが格納される。キーコードレジスタbの値から前回値レジスタb0の値を減算することによって得られた差分値がキーコード差分値レジスタdkeyに格納される。ベロシティレジスタcには今回のキーオンイベントデータのベロシティが格納され、前回値レジスタc0には前のキーオンイベントデータのベロシティが格納される。従って、同様にベロシティレジスタcの値から前回値レジスタc0の値を減算することによって得られた差分値がベロシティ差分値レジスタdvelに格納される。図1(A)に示されるMIDIデータ列SMF1の場合、このステップ38の演算によって得られたキーコード差分値レジスタdkey及びベロシティ差分値レジスタdvelの値は図1(B)のようになる。
ステップ39では、次回のステップ38の処理に備えて、今回のキーコードの値すなわちキーコードレジスタbの値を前回値レジスタb0に格納し、今回のベロシティの値すなわちベロシティレジスタcの値を前回値レジスタc0に格納する。
【0043】
ステップ3Aでは、キーコード差分値レジスタdkeyの値が8よりも小さいかどうかを判定し、小さい場合には、次のステップ3Bに進み、8以上の場合にはステップ3Gに進む。ステップ3Bでは、ベロシティ差分値レジスタdvelの値が32よりも小さいかどうかを判定し、小さい場合には、次のステップ3Cに進み、32以上の場合にはステップ3Gに進む。すなわち、両方のステップ3A及び3BでNOと判定された場合には、そのキーオンイベントデータは置換対象外のデータだと判定し、ステップ3Gでレジスタcの最下位ビットを『0』に修正、すなわちベロシティの値を偶数にしてからステップ3Hに進む。これによって、ベロシティの値が偶数の場合には、そのキーオンイベントデータが置換対象外のデータであり、修正されなかったことをデータ修復の際に容易に判定することができるようになる。
【0044】
ステップ3Cでは、キーコード差分値レジスタdkeyの値が正又は0の場合と負の場合とで、それぞれ異なる置換演算を行う。すなわち、キーコード差分値レジスタdkeyの値が正又は0の場合には、ノートエリアナンバNAを8倍したものと、キーコード差分値レジスタdkeyの値と、定数64との和を求め、その結果を第1キーコードレジスタb1に格納する。3ビットからなるノートエリアナンバNAの最大値は“7”、最小値は“0”であるから、この条件下では、レジスタb1の値の最小値は“64”である。一方、キーコード差分値レジスタdkeyの値が負の場合には、定数63からノートエリアナンバNAを8倍したものを減算すると共にキーコード差分値レジスタdkeyの値を加算し、その結果を第1キーコードレジスタb1に格納する。なお、このときキーコード差分値レジスタdkeyは負の値なので、結果的には定数63からキーコード差分値レジスタdkeyの値を減算することになる。この条件下では、レジスタb1の値は“63”よりも大きくなることはない。
【0045】
ステップ3Dでは、ベロシティ差分値レジスタdvelの値が正又は0の場合と負の場合とで、それぞれ異なる置換演算を行う。すなわち、ベロシティ差分値レジスタdvelの値が正又は0の場合には、ベロシティエリアナンバVAを32倍したものと、ベロシティ差分値レジスタdvelの値と、定数64との和を求め、その結果を第1ベロシティレジスタc1に格納する。この条件下では、レジスタc1の値の最小値は“64”である。ベロシティ差分値レジスタdvelの値が負の場合には、定数63からベロシティエリアナンバVAを32倍したものを減算すると共にベロシティ差分値レジスタdvelの値を加算し、その結果を第1ベロシティレジスタc1に格納する。なお、このときベロシティ差分値レジスタdvelは負の値なので、結果的には定数63からベロシティ差分値レジスタdvelの値を減算することになる。この条件下では、レジスタc1の値は“63”よりも大きくなることはない。
【0046】
ステップ3Eでは、第1キーコードレジスタb1の値を新しいキーコードの値とし、第1ベロシティレジスタc1の値を新しいベロシティの値としてMIDIデータを修正する。
そして、ステップ3Fで、第1ベロシティレジスタc1の最下位ビットを『1』に修正、すなわちベロシティの値を奇数に修正してからステップ3Hに進む。これによって、ベロシティの値が奇数の場合には、そのキーオンイベントデータが付属情報に基づいて修正されたことをデータ修復の際に容易に判定することができる。
ステップ3Hでは、全ての付属情報についてステップ33からステップ3Gまでの処理が終了したかどうかを判定し、終了している(YES)場合にはこのMIDIデータ編集処理を終了し、終了していない場合にはステップ33にリターンし、次の付属情報について一連の処理を行う。
【0047】
例えば、図1の場合には、1番目のキーオンイベントデータ(91,100,100)は、最初のものなので修正されない。2番目のキーオンイベントデータ(91,101,102)は、図3のMIDIデータ編集処理によって、図1(E)に示すような2番目のキーオンイベントデータ(91,81,99)に変換される。同様にして、3番目のキーオンイベントデータ(91,103,102)も図1(D)に示すような3番目のキーオンイベントデータ(91,98,97)に変換される。そして、4番目のキーオンイベントデータ(91,120,70)は、図1(B)に示すように、キーコード差分値レジスタdkeyの絶対値が『17』と8以上であるため、ステップ3AでNOと判定され、置換対象外となり、ステップ3Gを経て、キーオンイベントデータ(91,120,70)がそのまま図1(D)に示すように4番目のキーオンイベントデータとなる。そして、5番目から8番目までのキーオンイベントデータも同様にして、図1(D)の5番目から8番目までのキーオンイベントデータのように変換される。なお、この場合に、2番目と3番目のキーオンイベントデータの場合は、ステップ3Fの処理によって、ベロシティの値が奇数に変換されている。
なお、プログラムチェンジイベントは付属情報の付与されるノートオンイベントなどに比べて、比較的低頻度で発生し、プログラムチェンジ後は、楽器が変わることを意味するので、その位置を始点としてエディットされる可能性の高い単位ということが言えるので、取り出されたMIDIデータがプログラムチェンジイベントだった場合には、直ちに終了して、付属情報の最初からMIDIデータを編集するようにしてもよい。
【0048】
図5は、上述の第1の実施の形態に従って得られる各レジスタb1,c1の値のとり得る状態を列挙したものである。図5において、縦軸にはレジスタb1にストアされるキーコードのとりうる値を割り当て、横軸にはレジスタc1にストアされるベロシティデータのとりうる値を割り当て、各値の63と64との間を原点とするような直交座標系を構成する。これによって、キーオンイベントデータの中のキーコードが高くなる場合(正の値)又は小さくなる場合(負の値)と、ベロシティが増加する場合(正の値)又は減少する場合(負の値)とからなる4種類の組み合わせがこの直交座標系の各象限に割り当てられることになる。そして、各象限には付属情報となる4ビット構成の16個のデータが割り当てられる。すなわち、図5に示すようにキーコードが高くなり、ベロシティが増加する場合と、キーコードが高くなり、ベロシティが減少する場合と、キーコードが低くなり、ベロシティが増加する場合と、キーコードが低くなり、ベロシティが減少する場合のそれぞれが各象限に対応するようになる。各象限に割り当てられた4ビット構成の付属情報のうち、最下位ビットは横軸のベロシティに、上位3ビットは縦軸のキーコードに割り当てられる。従って、キーコードが高くなり、ベロシティが増加する場合には、直交座標の第1象限に割り当てられ、キーコード軸の64〜127は000から111までの8つの付属情報に対応するように分割され、ベロシティ軸の64〜127は0と1の2つの付属情報に対応するように分割される。キーコードが高くなり、ベロシティが減少する場合には、直交座標の第2象限に割り当てられ、キーコード軸の64〜127は000から111までの8つの付属情報に対応するように分割され、ベロシティ軸の63〜0は0と1の2つの付属情報に対応するように分割される。キーコードが低くなり、ベロシティが減少する場合には、直交座標の第3象限に割り当てられ、キーコード軸の63〜0は000から111までの8つの付属情報に対応するように分割され、ベロシティ軸の63〜0は0と1の2つの付属情報に対応するように分割される。キーコードが低くなり、ベロシティが増加する場合には、直交座標の第4象限に割り当てられ、キーコード軸の63〜0は000から111までの8つの付属情報に対応するように分割され、ベロシティ軸の64〜127は0と1の2つの付属情報に対応するように分割される。
【0049】
この場合、図6に示すように、各付属情報に対応したキーコードには8個の値が存在し、ベロシティには32個の値が存在するので、ステップ3A及び3Bのように、キーコード差分値レジスタdkeyの値は8よりも小さくなければならず、ベロシティ差分値レジスタdvelの値は32よりも小さくなければならないという条件が入っているのである。
従って、キーコードが8よりも小さな値で増加又は減少し、ベロシティが32よりも小さな値で増加又は減少した場合には、図5の各象限の付属情報が選択され、その付属情報の値、キーコード差分値及びベロシティ差分値に応じて、元のキーコード及びベロシティが編集される。なお、この場合、ベロシティについては、編集された値であるかどうかを示すために、ステップ3G及びステップ3Fによって最下位ビットに処理が加えられ、編集されたベロシティの値は、最終的には奇数値の16個だけとなる。
【0050】
次に、図3のMIDIデータ編集処理によって付与された電子情報すなわち電子署名データを検出、すなわち修復するMIDIデータ修復処理について説明する。図4は、電子楽器1がMIDIデータ修復装置として動作する場合の一例を示すフローチャート図である。
この場合には、フロッピーディスクドライブ25から読み出されたMIDIデータに前述のようなヘッダ情報の一部(電子署名すなわち著作権表示データ)が分散記録されているものとする。以下の実施の形態では、この著作権表示データを検出して、それをモニタなどに表示するまでの動作を説明する。
まず、ステップ41では、電子署名を検出すべきMIDIデータ列、すなわち図3の電子情報付与処理によって電子署名の付与されたMIDIデータ列(Standard MIDI File:SMF)の中から順次キーオンイベントデータやプログラムチェンジデータやコントロールチェンジデータなどのデータを取り出す。
【0051】
ステップ42では、取り出されたMIDIデータがキーオンイベントデータKONであるかどうかを判定し、キーオンイベントデータ(YES)の場合は次のステップ43に進み、そうでない(NO)場合はステップ4Cに進む。従って、ステップ41で取り出されたMIDIデータがキーオンイベントデータの場合には、図1(F)のようなキーオンイベントMIDIデータ列SMF2が作成されることになる。
ステップ43では、キーオンイベントデータの中の各バイトのデータをそれぞれ対応するキーコードレジスタb,ベロシティレジスタcに格納する。すなわち、キーコードバイトの中のキーコードをキーコードレジスタbに、ベロシティバイトの中のベロシティをベロシティレジスタcにそれぞれ格納する。
【0052】
ステップ44では、ベロシティレジスタcの最下位ビットが『1』かどうか、すなわち、付属情報(電子署名情報)の付与されたキーオンイベントデータであるのかどうかの判定を行い、YESの場合は次のステップ45に進み、そうでない(NO)場合はステップ4Cに進む。
ステップ45、ステップ46、ステップ49及びステップ4Aでは、相前後するキーオンイベントデータのキーコードレジスタb、前回キーコードレジスタb0、ベロシティレジスタc及び前回ベロシティレジスタc0のそれぞれの格納値に基づいて修復キーコードレジスタb2、修復ベロシティレジスタc2、ノートエリアナンバNA及びベロシティエリアナンバVAの値をそれぞれ求める。このとき、キーコードレジスタbの値が64以上の場合とこれよりも小さい場合とで、それぞれ異なる演算式を用いて各値を求める。
【0053】
ステップ45においてはステップ3C(図3)の置換式の逆算を行なう。すなわち、キーコードレジスタbの値が64以上の場合には、キーコードレジスタbの値から定数64を減算し、その減算値の8におけるモジュロ(減算値を8で除した余り)を求めることで、dkeyを再生する。そして、このdkeyを前回キーコードレジスタb0に加算することでキーコードの修復値を得て、それを修復キーコードレジスタb2にストアする。一方、キーコードレジスタbの値が64よりも小さい場合には、キーコードレジスタbの値から定数63を減算し、その減算値の8におけるモジュロを求めることで、dkeyを再生する。そして、このdkeyを前回キーコードレジスタb0に加算することでキーコードの修復値を得て、それを修復キーコードレジスタb2にストアする。
【0054】
ステップ46においてはステップ3D(図3)の置換式の逆算を行なう。すなわち、ベロシティレジスタcの値が64以上の場合には、ベロシティレジスタcの値から定数64を減算し、その減算値の32におけるモジュロ(減算値を32で除した余り)を求めることで、dvelを再生する。そして、このdvelを前回ベロシティレジスタc0に加算することでベロシティデータの修復値を得て、それを修復ベロシティレジスタc2にストアする。一方、ベロシティレジスタcの値が64よりも小さい場合には、ベロシティレジスタcの値から定数63を減算し、その減算値の32におけるモジュロを求めることで、dvelを再生する。そして、このdvelを前回ベロシティレジスタc0に加算することでベロシティデータの修復値を得て、それを修復ベロシティレジスタc2にストアする。
【0055】
ステップ47において、修復キーコードレジスタb2の値をキーコードの値とし、修復ベロシティレジスタc2の値をベロシティの値としてMIDIデータを修復する。
ステップ48では、次回のステップ45及びステップ46の処理に備えて、修復されたキーコードの値すなわち修復キーコードレジスタb2の値を前回値レジスタb0に格納し、修復されたベロシティの値すなわち修復ベロシティレジスタc2の値を前回値レジスタc0に格納する。
ステップ49においてはステップ3C(図3)の置換式の逆算を行なうことでNAを再生する。すなわち、キーコードレジスタbの値が64以上の場合には、キーコードレジスタbの値から定数64を減算し、その減算値を8で除した商を求め、それをノートエリアナンバNAとする。一方、キーコードレジスタbの値が64よりも小さい場合には、定数63からキーコードレジスタbの値を減算し、その減算値を8で除した商を求め、それノートエリアナンバNAとする。
ステップ4Aではステップ3D(図3)の置換式の逆算を行なうことでNAを再生する。すなわち、ベロシティレジスタcの値が64以上の場合には、ベロシティレジスタcの値から定数64を減算し、その減算値を32で除した商を求め、それをベロシティエリアナンバVAとする。一方、ベロシティレジスタcの値が64よりも小さい場合には、定数63からベロシティレジスタcの値を減算し、その減算値を32で除した商を求め、それベロシティエリアナンバVAとする。
【0056】
ステップ4Bでは、ノートエリアナンバNAを上位3ビットとし、ベロシティエリアナンバVAを最下位ビットとする4ビット構成のデータ列からなる付属情報を得る。
ステップ4Cでは、全MIDIデータの修復が終了したかどうかを判定し、終了した場合にはMIDIデータ修復処理を終了し、そうでない場合にはステップ41にリターンし、再びMIDIデータに対する修復処理を行う。
以上の一連の修復処理が終了した時点でモニタにそのヘッダ情報の一部(電子署名すなわち著作権表示データ)などを表示するが、ここではそのステップについて省略してある。
【0057】
例えば、図1(E)のキーオンイベントのMIDIデータ列SMF2と図1(G)のキーオンイベントのMIDIデータ列SMF2とは同じものであり、図1(G)のキーオンイベントのMIDIデータ列SMF2に基づいて、図1(F)のようなMIDIデータ列SMF3が修復され、図1(G)のような付属情報が抽出される。まず、図1(G)の1番目のキーオンイベントデータ(91,100,100)は、ベロシティの最下位ビットが『0』すなわち偶数なのでそのままの値がキーオンイベントデータとなる。次に、2番目のキーオンイベントデータ(91,81,99)は、ベロシティの最下位ビットが『1』すなわち奇数であり、64以上なので、図4のMIDIデータ修復処理によって、図1(F)に示すような2番目のキーオンイベントデータ(91,101,103)に変換される。同様にして、3番目のキーオンイベントデータ(91,98,97)も図1(F)に示すような3番目のキーオンイベントデータ(91,103,104)に変換される。そして、4番目のキーオンイベントデータ(91,120,70)は、ベロシティの最下位ビットが『0』すなわち偶数なのでそのままの値がキーオンイベントデータとなる。そして、図1(G)に示すような5番目から8番目までのキーオンイベントデータも同様にして、図1(F)の5番目から8番目までのキーオンイベントデータのように変換される。この場合に、2番目と3番目のキーオンイベントデータについては、図3のステップ3Fの処理によってベロシティの値が奇数に変換されている関係上、図1(F)に示されるキーオンイベントデータのベロシティの値がMIDIデータ編集処理される前の図1(A)のキーオンイベントデータのベロシティの値よりも1〜2程度大きくなっている。しかしながら、この程度のベロシティ値の誤差は人間の耳に与える影響は小さいので、ほとんど無視できる範囲の誤差であると言える。
また、図1(G)のキーオンイベントデータに基づいて、図1(H)のような電子署名情報(著作権表示データ)が再現されることになる。
このようにして修復された電子署名情報を図示していない表示装置などで表示する。
【0058】
なお、上述の第1の実施の形態では、ベロシティに1ビット、キーコードに3ビットの付属情報を割り当てる場合について説明したが、これ以外のビットの組み合わせでもよいことはいうまでもない。例えば、ベロシティとキーコードにそれぞれ2ビットの付属情報を割り当ててもよいし、ベロシティのみに4ビットの付属情報を割り当ててもよい。
上述の第1の実施の形態では、ノート方向を8等分、ベロシティ方向を2等分して4ビット構成の付加情報を記録する場合について説明したが、ノート方向及びベロシティ方向の分割数を任意に設定することにより、付加情報量を増やすことが可能である。例えば、ノート、ベロシティの両方とも16等分すれば、1キーオンイベントに8ビット構成の付加情報を付加することもでき、アスキーコードの1バイトならば1イベントのキーオンで表現することも可能となる。なお、この場合には、キーコード差分値レジスタdkey及びベロシティ差分値レジスタdvelの値が4以下でないと、そのキーオンイベントには付加情報を割り当てることができなくなるという制限が生じる。従って、予めキーコード差分値及びベロシティ差分値の発生頻度を取得し、それに応じて最も沢山の付属情報を埋め込むことが可能な分割数を選択するようにしてもよい。
また、上述の第1の実施の形態では、図5に示すような関係を演算式によって形成する場合について説明したが、予め図5のような関係となるようなテーブルを作成しておき、各値をテーブル変換することによって、所定の値が求まるようにしてもよい。この場合には、図5のように付属情報が規則正しく並んでいなくても、ランダムに配列してあってもよいことになる。
【0059】
上述の第1の実施の形態では、フロッピーディスクドライブ24から読み出されたMIDIデータにおいてそのヘッダ情報の一部である電子署名すなわち著作権表示データを比較的大きなデータ単位でキーオンイベントデータ中に分散して記憶すると共にMIDIフォーマットを維持したまま暗号化処理を施す(電子透しを施す)という場合について説明した。これだと、キーオンイベントデータの中にはそのキーコード及びベロシティの内容がほとんど書き換えられるものが出てくるので、所定のMIDIデータ修復処理を行わずにMIDIデータ再生処理を行っても再生される楽音は、全くデタラメなものとなってしまう。
この点に鑑みて、次に説明する第2の実施の形態では、上記とは異なるやり方で「電子透し」を施すようにしている。この第2の実施の形態では、MIDIデータの最初の部分に、複数の暗号化処理の中のどの暗号化処理が施されたのかを示すスクランブルデコードデータを埋め込み、そこには暗号化処理を行わずに、通常のMIDIデータの再生を行えるようにし、残りのMIDIデータ部分にスクランブルデコードデータに対応したスクランブル処理を行い、MIDIデータの再生を行うことができないようにしている。
【0060】
図7は、MIDIデータ中に埋め込まれるスクランブルデコードデータの内容を示す図である。このスクランブルデコードデータは2バイト構成のデータであり、第1バイト目の上位4ビットはそのアルゴリズムを示し、下位4ビットはスクランブル処理されるイベント数すなわちカウント数を示し、第2バイト目の8ビットはそのアルゴリズムに対応したバリューを示す。
ここで、アルゴリズムの種類としては、キーオンデータのノート番号を変更するというもの、キーオンデータのノートとベロシティを入れ替えるというもの、インターバルデータを変更するというもの、キーオンデータのチャンネルデータを変更するというものなどがある。カウント数は、前述のようにASCIIの2文字分すなわち16ビット分のデータを作成するのに必要な数のキーオンイベントデータの先頭からいくつに対してスクランブル処理を行うのかを示すものである。
【0061】
上述の第1の実施の形態の場合には、1つのキーオンイベントデータに4ビット分のデータを埋め込むことができたので、2つのキーオンイベントデータにASCIIの1文字分の付属情報を埋め込むことができたが、今回の第2の実施の形態では、1つのキーオンイベントデータに1ビット分のデータしか埋め込めない場合について説明するので、修正するイベント数の最大値は16となる。バリューは対応するアルゴリズムによって異なるものであり,例えば、キーオンデータのノート番号を変更するというアルゴリズムの場合には、その変更する度合いすなわちトランスポーズ値(修正ノート値)であり、インターバルデータを変更するというアルゴリズムの場合には、その変更する修正値であり、キーオンデータのチャンネルデータを変更する場合には、その修正チャンネル値である。このように全部で16種類のアルゴリズムが規定されているものする。なお、この16種類のアルゴリズムの中の一つとして、前述の第1の実施の形態に係るようなスクランブル処理が存在してもよいことはいうまでもない。
【0062】
図8は、電子楽器1が電子情報処理システムとして動作する場合のMIDI編集処理の別の一例となるMIDI編集処理2を示すフローチャート図である。まず、この場合には、電子楽器1は、フロッピーディスクドライブ24から読み出したMIDIデータにそのヘッダ情報の一部である電子署名すなわち著作権表示データを分散して記憶すると共に前述の16ビット構成のスクランブルデコードデータを記憶する。
まず、ステップ81では、MIDIデータ列内に分散して書き込まれるべきスクランブルの内容を決定する。すなわち、図8のどのアルゴリズムに基づいてスクランブル処理を行うのかがパネルスイッチ2Eによって予め設定されるものとする。
スクランブルの内容がステップ81で決定したので、今度はステップ82でそのスクランブルのデコードデータ列を得る。例えば、パネルスイッチ2Eによって、第5番目のアルゴリズムが選択された場合には、そのアルゴリズムの種類を示すデータ『0101B』と、そのアルゴリズムによって修正されるカウント数『1001B』とからなる8ビット構成のデータ列がスクランブルデコードデータ列としてMIDIデータ列内に分散して記録されるようになる。
【0063】
次に、ステップ83では、ステップ82で得られたスクランブルデコードデータ列の1バイト分をバイトレジスタBRに格納する。そして、ステップ84では、このバイトレジスタBRに格納されたスクランブルデコードデータの各ビットを反転して、別の8ビット構成のビット列を作成する。例えば、スクランブルデコードデータ列が図12(F)に示すように『01011001B』のような場合には、ステップ84のデータ変換すなわちビット反転によって、図12(E)のようなビット列『10100110B』になる。
次に、ステップ85では、MIDIデータ列(Standard MIDI File:SMF)の中からキーオンイベントデータやプログラムチェンジデータやコントロールチェンジデータなどの各種のMIDIデータを順次取り出す。すなわち、MIDIデータ列は基本的にはキーオンステータスバイト、キーコードバイト、ベロシティバイトからなるキーオンイベントデータやこれ以外のプログラムチェンジイベントデータやコントロールチェンジイベントデータなどから構成されているので、ステップ85では、このようなMIDIデータを順番に取り出す。
【0064】
ステップ86では、取り出されたMIDIデータがキーオンイベントデータKONであるかどうかを判定し、キーオンイベントデータ(YES)の場合は次のステップ87に進み、そうでない(NO)の場合はステップ8Dに進む。従って、ステップ85で取り出されたMIDIデータがキーオンイベントデータの場合には、図12(A)のようなキーオンイベントデータからなるMIDIデータ列SMF1が得られることになる。このキーオンイベントデータのMIDIデータ列SMF1はデュレーションタイムDと、キーオンイベントデータとの組合せで構成される。
ステップ87では、キーオンイベントデータの中の各バイトのデータをそれぞれ対応するレジスタa,b,cに格納する。すなわち、キーオンイベントデータの中のキーオンステータスバイトの中のチャンネル番号をチャンネルレジスタaに、次の第1のデータバイト(キーコードバイト)の中のキーコードをキーコードレジスタbに、第2のデータバイト(ベロシティバイト)の中のベロシティをベロシティレジスタcにそれぞれ格納する。
【0065】
ステップ88では、ステップ84で作成されたビット列の先頭から1ビット取り出して、それを第1のビットフラグBF1に格納する。
次のステップ89では、ステップ87の各レジスタa,b,cの格納値を所定の関数に従って演算し、その演算結果によって得られたビットデータを反転して、第2のビットフラグBF2に格納する。この実施の形態では、各レジスタa,b,cの値の合計値のモジュロ2を所定の関数とする。すなわち、関数f1(a,b,c,)=(a+b+c)mod2とする。例えば、図12(A)のようなキーオンイベントMIDIデータ列SMF1の場合には、8つのキーオンイベントデータでスクランブルデコードデータのアルゴリズム及びカウント数に相当するデータが作成される。まず、各キーオンイベントデータの所定の関数f1(a,b,c)で演算すると、図12(B)のようになる。すなわち、(a+b+c)の値が偶数なら『0』、奇数なら『1』となる。そして、これらの反転ビットが第2のビットフラグBF2に格納され、図12(C)のようになる。
【0066】
ステップ8Aでは、ステップ88及びステップ89で得られた第1のビットフラグBF1と第2のビットフラグBF2とが等しいかどうかを判定し、等しい(YES)場合には次のステップ8B及びステップ8Cの処理を行い、等しくない(NO)場合はステップ8Eにジャンプする。
ステップ8Bでは、第1のビットフラグBF1と第2のビットフラグBF2とが等しいと判定されたので、ベロシティレジスタcの値すなわちベロシティデータの最下位ビットに『1』を加算する。そして、ステップ8Cで、そのレジスタcの値に基づいてMIDIデータ列中のキーオンイベントデータを構成するベロシティの値を更新する。すなわち、ベロシティの値を1だけ増加する。例えば、図12の場合には、第1のビットフラグBF1と第2のビットフラグBF2との3番目、5番目、6番目及び7番目がそれぞれ等しいと、ステップ8Aで判定されるので、MIDIデータ列中の3番目、5番目、6番目及び7番目のキーオンイベントデータのベロシティの値が『1』だけ増加される。すなわち、3番目のキーオンイベントデータのベロシティ値『63』が『64』になり、5番目のキーオンイベントデータのベロシティ値『78』が『79』になり、6番目のキーオンイベントデータのベロシティ値『91』が『92』になり、7番目のキーオンイベントデータのベロシティ値『42』が『43』になる。
【0067】
ステップ8Dでは、ステップ86又はステップ8AでNOと判定された場合又はステップ8Cの処理を終えた場合に行われる処理であって、ステップ85〜ステップ8Cまでの処理を1巡回処理とした場合にこの1巡回処理が8回分すなわち8ビット分行われたかどうかを判定し、8回分行われた(YES)場合には、次のステップ8Eに進み、そうでない(NO)の場合は、ステップ85にリターンし、次の1ビットに対してステップ85〜ステップ8Cの処理を行う。
ステップ8Eでは、ステップ83〜ステップ8Dまでの処理を1巡回処理とした場合にその1巡回処理がスクランブルデコードデータの構成バイト数だけ行われたかどうかを判定し、行われた(YES)場合には、次のステップ8Fに進み、そうでない(NO)場合は、ステップ83にリターンし、スクランブルデコードデータの次の1バイトのバリューに対してステップ83〜ステップ8Dの処理を行う。
【0068】
ステップ8Fでは、ステップ81で選択されたスクランブルの内容に応じて、MIDIデータ列の後半部分にスクランブル処理を施す。例えば、前述のスクランブルデコードデータの埋め込み終了後のキーオンデータに対してスクランブル処理を行うようにしてもよいし、スクランブルデコードデータの埋め込み終了後、所定数のキーオンデータ経過後にスクランブル処理を行うようにしてもよい。また、スクランブルデコードデータの埋め込みを複数回行い、その後にスクランブル処理を行うようにしてもよい。この場合に、取り出されたMIDIデータがプログラムチェンジイベントPCMの場合には、スクランブルの内容をランダムに変更して、スクランブルデコードデータの埋め込み処理及びスクランブルの内容に応じたMIDIデータ列の編集処理を行うようにしてもよい。プログラムチェンジイベントはノートオンイベントなどに比べて、比較的低頻度で発生し、プログラムチェンジ後は、楽器が変わることを意味するので、その位置を始点としてスクランブルの内容を変更し、そのスクランブルデコードデータを埋め込み、スクランブル処理を行うことによって、一定の楽器についてはスクランブルの掛からない演奏を行うことができ、ある所定時間経過後に演奏にスクランブルをかけることができる。
【0069】
次に、図8のMIDI編集処理2によって付与されたスクランブルデコードデータの修復処理について説明する。なお、スクランブル処理の解除については、アルゴリズムに応じて逆の処理を施せばいいので、ここではその説明は省略する。図9は、電子楽器1がMIDIデータ修復装置して動作する場合の一例となるMIDIデータ修復処理2を示すフローチャート図である。
この場合には、フロッピーディスクドライブ24から読み出されたMIDIデータのベロシティバイト部分にそのヘッダ情報の一部である電子署名すなわち著作権表示データが分散記録されているとともにスクランブルデコードデータが記録されているものとする。以下の実施の形態では、このスクランブールデコードデータを検出して、それに基づいてMIDIデータを修復するまでの動作について説明する。
【0070】
まず、ステップ91では、デコードデータ格納レジスタDECODEにナルデータを格納する。すなわち、デコードデータ格納レジスタDECODEの内容をリセットする。
ステップ92では、スクランブルデコードデータを検出すべきMIDIデータ列、すなわち図8のMIDIデータ編集によってスクランブルデコードデータの付与されたMIDIデータ列を取り出す。
そして、次のステップ93で、バイトレジスタBRとビットカウンタBCNの値をリセットする。
【0071】
次に、ステップ94では、MIDIデータ列(Standard MIDI File:SMF)の中から順次キーオンイベントデータやプログラムチェンジデータやコントロールチェンジデータなどのデータを取り出す。
ステップ95では、取り出されたMIDIデータがキーオンイベントデータKONであるかどうかを判定し、キーオンイベントデータ(YES)の場合は次のステップ96に進み、そうでない(NO)場合はステップ9Cに進む。従って、ステップ94で取り出されたMIDIデータがキーオンイベントデータの場合には、図12(G)のようなキーオンイベントMIDIデータ列SMF2が作成されることになる。なお、図12(G)のキーオンイベントデータ列は先に電子署名の付与された図12(D)のキーオンイベントデータ列SMF2と同じものである。
【0072】
ステップ96では、キーオンイベントデータの中の各バイトのデータをそれぞれ対応するレジスタa,b,cに格納する。すなわち、キーオンイベントデータの中のキーオンステータスバイトの中のチャンネル番号をチャンネルレジスタaに、次の第1のデータバイト(キーコードバイト)の中のキーコードをキーコードレジスタbに、第2のデータバイト(ベロシティバイト)の中のベロシティをベロシティレジスタcにそれぞれ格納する。
ステップ97では、バイトレジスタBRの値を2倍、すなわち、シフトして、その最下位ビットに関数f1(a,b,c,)=(a+b+c)mod2の反転値を加算する。ステップ98では、ビットカウンタBCNの値を1だけインクリメントする。ステップ99では、ビットカウンタBCNの値が『8』になったかどうかを判定し、YESの場合は次のステップ9Aに進み、NOの場合はステップ9Cにジャンプする。
【0073】
例えば、図12(G)のようなキーオンイベントのMIDIデータ列SMF2の場合には、8つのキーオンイベントデータで1バイト分のスクランブルデコードデータが作成される。まず、各キーオンイベントデータの所定の関数f1(a,b,c)で演算すると、図12(H)のようになる。すなわち、(a+b+c)の値が偶数なら『0』、奇数なら『1』となる。そして、これらの反転ビットは図12(J)のようになり、その値がバイトレジスタBRを順次シフトしていくため、最終的には図12(J)のような1バイト分のスクランブルデコードデータが形成される。
このようにして、得られた図12(J)のデータは図12(F)と同じである。すなわち、MIDIデータのベロシティバイトに分散して書き込まれたスクランブルデコードデータ、すなわち図12(F)のようなデータが図12(J)のように忠実に再現されたことになる。
【0074】
ステップ9Aでは、バイトレジスタBRの格納値をデコードデータ格納レジスタDECODEに追加記憶する。
ステップ9Bで、バイトレジスタBRとビットカウンタBCNの値をリセットする。
ステップ9Cでは、ステップ95でNOと判定された場合、又はステップ9Bの処理を終了した場合に行われる処理であって、ステップ94〜ステップ9Bの処理がスクランブルデコードデータに対応する2バイト分終了したかどうかの判定を行い、この判定結果が2バイト分終了(YES)の場合には、次のステップ9Dに進み、終了していない(NO)場合にはステップ94にリターンし、一連の処理を繰り返し実行する。
ステップ9Dでは、スクランブルデコードデータの内容に基づいてスクランブル処理されたMIDIデータの修復処理を行う。
【0075】
なお、上述の実施の形態では、MIDIデータ列からキーオンイベントデータを順番に取り出して、それに対して順番にスクランブルデコードデータを格納する場合について説明したが、これだと、1つのMIDIデータ列に対して1種類のスクランブル処理しか行えない。そこで、チャンネル単位毎に異なるスクランブル処理を行えるようにした第3の実施の形態について説明する。
図10は、電子楽器1がMIDIデータ編集装置して動作する場合の一例となるMIDIデータ編集処理3を示すフローチャート図である。まず、この場合は、電子楽器1は、フロッピーディスクドライブ24から読み出したMIDIデータ中に前述のようなスクランブルデコードデータと共にヘッダ情報の一部である電子署名すなわち著作権表示データを併せて分散記録する。
【0076】
まず、ステップ101では、MIDIデータ列内に分散して書き込まれるべき電子署名(著作権表示データ)の内容を決定するとともに、各チャンネルに対応したスクランブルデコードデータの内容を決定する。例えば、著作権表示データとして『COPYRIGHT△YMH△1996』のような文字をMIDIデータ列内に分散して書き込む場合には、これらの文字列をパネルスイッチ2Eを用いて決定する。ここで、△は空白を意味するものとする。
書き込むべき電子署名すなわち文字列及びスクランブルデコードデータの内容が決定したので、今度はステップ102で、その電子署名及びスクランブルデコードデータに関するデータ列を得る。例えば、パネルスイッチ2Eによって『COPYRIGHT△YMH△1996』が入力された場合には、それをASCIIの文字符号のデータ列に変換する。
この場合は、『C』=『43H』、『O』=『4FH』、『P』=『50H』、『Y』=『59H』、『R』=『52H』、『I』=『49H』、『G』=『47H』、『H』=『48H』、『T』=『54H』、『△』=『20H』、『Y』=『59H』、『M』=『4DH』、『H』=『48H』、『△』=『20H』、『1』=『31H』、『9』=『39H』、『9』=『39H』、『6』=『36H』からなる一連のASCIIのデータ列が得られることになる。
【0077】
これらの文字符号のデータ列は前述の第2の実施の形態において説明した、スクランブルデコードデータと同様の手法でMIDIデータの中に埋め込むことができることはいうまでもない。従って、以下の処理では、これらのASCIIのデータ列をスクランブルデコードデータ列の埋め込み法と同様のやり方で、MIDIデータ列中に分散記録するものとする。
すなわち、次のステップ103では、図8のステップ83〜ステップ8Fと同様の処理をそのチャンネルに対してそれぞれ行う。このとき、ステップ89の所定の関数に従った演算処理をそのチャンネルに対してそれぞれ異ならせて行う。例えば、ステップ89では、関数f1(a,b,c,)=(a+b+c)mod2を第2のビットフラグBF2に格納しており、これを第1の関数処理とする。そして、この第1の関数処理に加えて、次の第2、第3及び第4の関数処理の中から、適当なものを各チャンネル毎に使い分けるようにする。
第2の関数処理は、f2(a,b,c)=(a+c)mod2、
第3の関数処理は、f3(a,b,c)=(b+c)mod2、
第4の関数処理は、f4(a,b,c)=(c)mod2、である。
【0078】
ステップ103では、これらの第1から第4までの関数処理をMIDIチャンネル毎に選択的に切り換えて、図8のステップ83〜ステップ8Fと同様の処理を行い、それぞれのチャンネル毎にその選択された関数処理に従って変換された電子署名データ及びスクランブルデコードデータを付与する。
このように、チャンネル毎に関数処理の内容を変更することによって、或るチャンネルのデータを一度に変更するようなエディット処理、例えばチャンネル情報の入れ替えやキーコードのシフトなどといったものが行われた場合でも、エディットによって変更される特定のチャンネルのデータに関係しない関数を利用している別のチャネルのデータから電子署名データやスクランブルデコードデータを復元することができる。
【0079】
次に、図10のMIDIデータ編集処理3によって編集されたMIDIデータを修復するMIDIデータ修復処理3について図11を用いて説明する。図11は、電子楽器1がMIDIデータ修復装置として動作する場合の一例であるMIDIデータ修復処理3を示すフローチャート図である。
この場合、フロッピーディスクドライブ24から読み出されたMIDIデータの各チャンネル毎に所定の関数処理(前述の第1から第4までのいずれかの関数処理)によって、ベロシティバイト部分にそのヘッダ情報の一部である電子署名(著作権表示データ)及びスクランブルデコードデータが分散記録されているものとする。従って、以下の実施の形態では、分散記録された著作権表示データをチャンネル毎に所定の関数処理によって検出して、それをモニタなどに表示したり、スクランブルデコードデータに基づいてMIDIデータを修復するという動作を行う場合について説明する。
【0080】
まず、ステップ111では、電子署名を検出すべきMIDIデータ列、すなわち図10のMIDIデータ編集処理3によって各チャンネル毎に所定の関数処理に応じて電子署名データ及びスクランブルデコードデータの付与されたMIDIデータ列を取り出す。
そして、次のステップ112で、チャンネルカウンタをリセットし、ステップ113で関数カウンタをリセットする。このチャンネルカウンタと関数カウンタは、後の処理で、各チャンネルに対して各関数処理を施すために利用されるものである。例えば、MIDIチャンネルが16チャンネル相当の場合には、チャンネルカウンタは0から15までを巡回的にカウントするように処理される。また、関数カウンタは、前述のように関数処理が4種類の場合には、0〜3までも巡回的にカウントするように処理される。関数カウンタが『0』の場合は第1の関数処理f1(a,b,c,)=(a+b+c)mod2を、『1』の場合は第2の関数処理f2(a,b,c)=(a+c)mod2を、『2』の場合は第3の関数処理f3(a,b,c)=(b+c)mod2を、『3』の場合は第4の関数処理f4(a,b,c)=(c)mod2を意味する。
【0081】
ステップ114では、チャンネルカウンタの値に該当するチャンネルについて、関数カウンタの値に該当する関数処理を用いて図9のステップ91からステップ9Cまでと同様にして電子署名データ及びスクランブルデコードデータの検出処理を行う。
ステップ115では、検出された電子署名データ列に有意な部分があるかどうかの判定を行う。ここで有意な部分とは、ASCIIの文字データによって構成される『COPYRIGHT』なる署名データの一部分である。従って、ステップ115では、図9の処理によってデコードデータ格納レジスタDECODEに順次追加されたASCIIの文字データによって構成された文字列の中に『COPYRIGHT』なる文字列データが存在するかどうかを判定することになる。ステップ115の判定の結果、デコードデータ格納レジスタDECODE内に有意な部分が存在しない(NO)と判定された場合には、次のステップ116に進み、関数カウンタを1だけインクリメントする。そして、次のステップ117で、全ての関数処理に対してステップ114及びステップ115の処理すなわち署名データ及びスクランブルデコードデータの抽出処理が行われたかどうかの判定を行い、行われた(YES)場合には次のステップ118に進み、そうでない(NO)場合はステップ114にリターンし、次の関数処理についてステップ114及びステップ115の処理を行う。逆に、ステップ115の判定の結果、デコードデータ格納レジスタDECODE内に有意な部分が存在した場合には、ステップ119に進み、スクランブルデコードデータの内容に基づいてMIDIデータの修復を行う。すなわち、ステップ115における判定がYESであったということは、検出されたスクランブルデコードデータも有意なものだと判断できるので、そのスクランブルデコードデータに基づいて元のMIDIデータを修復する。なお、検出された電子署名データをモニタ上に表示するようにしてもよいことはいうまでもない。
【0082】
ステップ117でYESと判定されたということは、全てのMIDIチャンネルに対して、全ての関数処理を用いて電子署名データ及びスクランブルデコードデータの抽出処理を行った結果、データ列に有意な部分が存在しなかったということだから、ステップ118では、その結果として『電子署名データ及びスクランブルデコードデータの検出失敗』などの文字をモニタ上に表示する。
ステップ11Aでは、チャンネルカウンタを1だけインクリメントする。そして、次のステップ11Bで全てのチャンネルに対してステップ114及びステップ115の処理すなわち電子署名データ及びスクランブルデコードデータの抽出処理が行われたかどうかの判定を行い、行われた(YES)場合には処理を終了し、そうでない(NO)場合はステップ113にリターンし、次のMIDIチャンネルについてステップ113〜ステップ115の処理を行う。
【0083】
なお、上述の実施の形態では、署名データやスクランブルデコードデータをMIDIデータのベロシティ部分に分散記録する場合について説明したが、これは一例であり、これ以外の著作者名、曲の題名、画像/映像の題名などに関する文字データやデータ形式に関するデータやその他の種々のデータを分散記録してもよいことはいうまでもない。
また、ベロシティ部分以外の、デュレーションタイム(待ち時間)データに分散記録してもよいし、その両方に分散記録するようにしてもよい。両方に分散記録する場合、その厳密性すなわち分散記録することによってそのデータの内容が変更する度合いに応じて、分散記録する箇所を適宜切り換えるようにしてもよい。すなわち、デュレーションタイムデータの短い領域で、そのデュレーションタイムデータに分散記録すると、それによる変動の割合(厳密性)が大きくなるので、好ましくないが、デュレーションタイムデータが比較的大きい領域では、逆の関係にあるので、分散記録しても影響は少ない。同じく、ベロシティ部分に記録する場合でも、ベロシティの値の小さい領域て、そのベロシティ部分に分散記録すると、それによる変動の割合(厳密性)が大きくなるので、好ましくないが、ベロシティの値の大きい領域では、分散記録しても影響は少ない。従って、これらを適宜考慮して所定値よりも大きいベロシティに種々のデータを分散記録するようにしてもよい。
【0084】
また、上述の実施の形態では、MIDIデータに分散記録する場合について説明したが、これ以外の波形データやシーケンスデータ、ディジタル記録音声データ、画像データ、動画データ、レジストレーション(電子楽器の設定記録)データなどに分散記録するようにしてもよい。
波形データに分散記録する場合には、所定の関数処理としてその波形データ(wave_data)そのもののモジュロ2、すなわち、f1(wave_data)=wave_data mod2としてもよい。また、波形データの値とそのポイントデータとを用いて、両データの和のモジュロ2、すなわち、f2(wave_data,sample_point)=(wave_data+sample_point) mod2としてもよい。
図10及び図11の実施の形態では、各(論理)チャンネル毎に関数処理の種類を変更して、署名データを検出する場合について説明したが、プログラムチェンジデータの検出タイミング毎に関数処理の種類を変更するようにしてもよい。この場合には、検出されたデータ列に有意な部分が存在するかどうかの判定処理も各プログラムチェンジデータの検出タイミング毎に行う必要がある。
【0085】
上述の実施の形態では、検出された電子署名データをモニタ上に表示する場合について説明したが、検出側において、電子署名データが存在しない場合や電子署名データが完全に復旧できない場合(各論理チャンネルにおいて、電子署名データが検出できるチャンネルと検出できないチャンネルが混在する場合)には、データの再生を中止するようにしてもよい。また、その検出側の電子楽器やコンピュータなどがネットワークに接続されている場合には、そのネットワーク上に不正にエディットされたデータが存在することを送信し、それをホストコンピュータ側で検出することができるようにしてもよい。
上述の実施の形態では、電子楽器がMIDIデータ編集装置又はMIDIデータ修復装置として動作する場合について説明したが、同様の処理を行うハードウェアを別途構成するようにしてもよいし、ソフトウェア、DSPとマイクロプログラムなどで構成するようにしてもよい。また、このようなMIDIデータ編集装置又はMIDIデータ修復装置をフロッピーディスクドライブや通信インターフェイスなどに予め内蔵しておいて、データの入出力の段階で強制的に電子署名データを付与したり、検出したりするようにしてもよい。
【0086】
上述の実施の形態では、電子署名データやスクランブルデコードデータを付与する場合を説明したが、電子署名データやスクランブルデコードデータの付与されたデータを、フロッピーディスクやコンパクトディスクなどで供給するようにしてもよいし、ネットワークを通じて電子的に供給するようなデータ形態を採用してもよい。
図8のステップ8Bでは、ベロシティデータの値を1だけインクリメント処理する場合について説明したが、デクリメント処理してもよいし、これらの処理を適当なタイミング(所定データ数毎とか)で交互に行うようにしてもよい。
上述の実施の形態では、所定の関数処理の後にビット反転処理を行う場合について説明したが、これは行わなくてもよい。また、ビット反転処理の他にも、上位ビットと下位ビットを入れ替えるとか、AND、OR、XORなどの論理演算処理を施すとか、種々の処理を加えるようにしてもよいことはいうまでもない。また、適宜の暗号化処理を施すようにしてもよい。例えば、上述の第1から第4までの関数処理の結果を適宜組み合わせてもよいし、前回の関数処理の結果を次の関数処理に組み合わせて演算するようにしてもよい。
なお、これらの各処理はある程度高速に行うことができ、変換後、逆変換によりもとに戻せるものであれば、これ以外の方法でもよいことはいうまでもない。
【0087】
上述の実施の形態では、プログラムチェンジデータの検出タイミング毎に新たに電子署名データやスクランブルデコードデータの付与処理を行う場合について説明したが、これに限らず、小節単位(例えば8小節毎など)データの検出タイミング毎に行うようにしてもよい。また、波形データに分散記録する場合には、所定のサンプル数毎や所定のゼロクロス毎に新たに署名データの付与処理を行うようにしてもよい。ゼロクロス(波形の値の符号が変わるタイミング)は波形エディットの際の基準地点と考えられるからである。
また、上述の実施の形態では、電子署名データや題名などのような付属情報を記録する場合について説明したが、MIDIデータと波形データを合わせて記録する場合に、MIDIデータにその波形データの一部を記録するようにしてもよいし、波形データにMIDIデータの一部を合わせて記録するようにしてもよい。
【0088】
なお、上述の実施の形態では、署名データをMIDIデータのベロシティ部分に分散記録する場合について説明したが、これは一例であり、これ以外の著作者名、曲の題名(曲名)、画像/映像の題名などに関するテキスト情報や、そのデータ形式に関する情報やその他の種々の電子情報(曲の解説、著作者に関する情報、著作年、歌詞、ニュース、ハードID(機種名、使用OS)などの各種情報)を分散記録してもよいことはいうまでもない。この場合には、図8から図11までの各処理における電子署名をこれらの各種電子情報に置き換えて処理すればよい。このようにして処理された電子情報をモニタ画面上に表示するようにしてもよい。
なお、このとき、付属情報を一連の纏まったファイル情報として検出してもよいし、自動演奏中にMIDIデータから検出される電子情報の流れとして認識し、それをリアルタイムに画面表示したりしてもよい。この場合、付属情報が画像情報の場合には、MIDIデータによってリアルタイムに画像が描画されるようになり、テキスト情報の場合には、ニュース配信などのようなリアルタイムな情報表示を行うことが可能となる。また、情報を付加するための技術がシンプルであるため、オンデマンドなどで電子情報を埋め込むことができるので、TV放送などのようなリアルタイムな描画が可能となる。また、インターネットや電子メールなどのIDやパスワードの配信にも利用することができる。
【0089】
なお、上述の第1の実施の形態、すなわち図3のMIDIデータ編集処理1では、ステップ38において、前回のキーオンイベントデータのキーコードを格納した前回値レジスタb0と今回のキーオンイベントデータのキーコードを格納したキーコードレジスタbとの間の差分を取り、それをキーコード差分値レジスタdkeyに格納すると共に、前回のキーオンイベントデータのベロシティを格納した前回値レジスタc0と今回のキーオンイベントデータのベロシティを格納したベロシティレジスタcとの間の差分を取り、それをベロシティ差分値レジスタdvelに格納している。その関係上、ステップ3Aからステップ3Gまでの処理によって変換された新しいキーコードの値b1及びベロシティの値c1は、常に前回のキーオンイベントにおけるキーコード及びベロシティとの間に密接な関係を有することになる。図4のMIDIデータ修復処理1でも、前回値レジスタb0とキーコードレジスタbとに基づいて修復キーコードレジスタb2の値を求め、前回値レジスタc0とベロシティレジスタcとに基づいて修復ベロシティレジスタc2の値を求めている。
【0090】
従って、図3のMIDIデータ編集処理後にMIDIデータのイベントデータ(キーコード又はベロシティの値)が修正されると、それ以降に修復処理された修復キーコード及び修復ベロシティの値が元のデータと全て異なってしまうということが起こる。これはデータを改竄した場合にそれ以降のデータを全て無効にすることができるという点では優れているが、途中のイベントデータにエラーが発生し、キーコード又はベロシティが変化した場合、それ以降のデータを有効に修復することができなくなるという問題を有する。
【0091】
そこで、図3のMIDIデータ編集処理1及び図4のMIDIデータ修復処理1を図13のMIDIデータ編集処理4及び図14のMIDIデータ修復処理4のように変更することによって、イベントデータが途中で書き換えられたりなどして変化した場合でも、それ以降のデータを有効に修復することができるようにした。
図13のMIDIデータ編集処理4において図3のMIDIデータ編集処理1と同じものには同一の符号が付してあるので、その説明は省略する。図13のMIDIデータ編集処理4が図3のMIDIデータ編集処理1と異なる点は、図3のステップ39の処理が省略され、ステップ38の前回値レジスタb0及びc0がステップ138のように先頭値レジスタbH及びcHに変更された点である。ステップ138では、先頭のキーオンイベントデータのキーコードを格納した先頭値レジスタbHと今回のキーオンイベントデータのキーコードを格納したキーコードレジスタbとの間の差分を取り、それをキーコード差分値レジスタdkeyに格納すると共に、先頭のキーオンイベントデータのベロシティを格納した先頭値レジスタcHと今回のキーオンイベントデータのベロシティを格納したベロシティレジスタcとの間の差分を取り、それをベロシティ差分値レジスタdvelに格納する。そして、このキーコード差分値レジスタdkeyの格納値とベロシティ差分値レジスタdvelの格納値に基づいて新たなキーコードb1及びベロシティc1を算出している。
【0092】
図14のMIDIデータ修復処理4において図4のMIDIデータ修復処理1と同じものには同一の符号が付してあるので、その説明は省略する。図14のMIDIデータ修復処理4が図4のMIDIデータ修復処理1と異なる点は、図4のステップ48の処理が省略され、ステップ45及びステップ46の前回値レジスタb0及びc0がステップ145及びステップ146のように先頭値レジスタbH及びcHに変更された点である。すなわち、ステップ145では先頭値レジスタbHとキーコードレジスタbとの値に基づいて修復キーコードレジスタb2の値を求め、ステップ146では先頭値レジスタcHとベロシティレジスタcとの値に基づいて修復ベロシティレジスタc2の値を求めている。
図13及び図14のように変更することによって、先頭のイベントデータの値に基づいてMIDIデータは編集され、修復されるようになるので、途中のイベントデータが書き換えられたり、エラーなどの発生によって変化した場合でもそれ以降のデータを修復できなくなるというようなことは起こらず、エラーの発生したイベントデータ以降も完全に修復することができるようになる。
なお、上述の説明では先頭のイベントデータの値に基づいてMIDIデータを編集する場合について説明したが、予め任意の値をヘッダに書き込んでおいて、その値に基づいてMIDIデータを編集したり、修復したりするようにしてもよい。また、その基準となるイベントデータの値を任意のイベント(例えば1小節における先頭のイベント)から取り込むようにしてもよい。
【0093】
図3のMIDIデータ編集処理1及び図13のMIDIデータ編集処理4では、キーオンデータのキーコード及びベロシティの内容がMIDIデータの先頭から書き換えられてしまうので、MIDIデータ修復処理を行わずにMIDIデータ再生処理を行った場合に、再生された楽音は、全くデタラメなものとなってしまい、その一部だけを試聴するというようなことができない。そこで、図3の変更例として、図15のMIDIデータ編集処理5のように、ステップ3Bとステップ3Cとの間に編集条件を判定するステップ3Jを挿入し、特定の編集条件に合致した場合にMIDIデータにスクランブル処理を施すようにした。なお、図15と同様に、図13の場合もステップ3Bとステップ3Cとの間にステップ3Jを挿入すればよい。
【0094】
例えば、ステップ3Jの編集条件として、MIDIデータの演奏開始から所定時間(例えば30秒などの時間)を経過したか否かを判定するように設定する。これによって、MIDIデータの最初の部分にはスクランブル処理が施されなくなるので、その部分のMIDIデータは通常のMIDIデータ再生処理によって再生されるようになる。一方、所定時間経過後にMIDIデータを通常のMIDIデータ再生処理で再生しようとしても、その部分にはスクランブル処理が施されているので、デタラメな楽音しか再生されなくなる。これによって、MIDIデータの最初の部分を通常のMIDIデータ再生処理によって再生できる試聴可能なMIDIデータとすることができ、それ以降の残りの部分を試聴不可能なMIDIデータとすることができる。なお、この編集条件は、外部から任意に設定可能であり、時間の他にも、種々の条件を適宜組み合わせて適用してもよいことは言うまでもない。例えば、発音されない時間が所定時間以上になった場合とか、小節線データが所定数発生した場合とかの条件を単独で適用したり、これらの条件を種々組み合わせてもよいことはいうまでもない。
【0095】
【発明の効果】
この発明によれば、音楽データなど複数のイベントデータで構成された主要情報のデータフォーマットを変更することなく所望の付属情報を付加することができると共に結果的にこれらのデータに暗号化処理を施すこととなり、この暗号を解読しない限り、これらの主要情報や付属情報を再生して利用することができないという効果がある。また、これまで説明した通りの作用・効果を奏する。
【図面の簡単な説明】
【図1】 この発明に係る電子情報処理システムのMIDIデータ編集処理1及びMIDIデータ修復処理1に従ってどのようにデータが変換されるのか、その具体例を示す図である。
【図2】 この発明に係る電子情報処理システムとして動作する電子楽器の全体構成を示すブロック図である。
【図3】 図2の電子楽器が電子情報処理システムとして動作する場合のMIDIデータ編集処理1の一例を示すフローチャート図である。
【図4】 図2の電子楽器が電子情報処理システムとして動作する場合のMIDIデータ修復処理1の一例を示すフローチャート図である。
【図5】 縦軸にキーコードを割り当て、横軸にベロシティを割り当て、各値の中間を原点とするような直交座標系を構成した場合の付属情報とキーコード,ベロシティとの関係を示す概念図である。
【図6】 図5の付属情報とキーコード,ベロシティとの間の詳細な関係を示す図である。
【図7】 MIDIデータ中に埋め込まれるスクランブルデコードデータの内容の一例を示す図である。
【図8】 電子楽器が電子情報処理システムとして動作する場合の別の一例となるMIDIデータ編集処理2を示すフローチャート図である。
【図9】 電子楽器が電子情報処理システムとして動作する場合の別の一例となるMIDIデータ修復処理2を示すフローチャート図である。
【図10】 電子楽器が電子情報処理システムとして動作する場合の別の一例となるMIDIデータ編集処理3を示すフローチャート図である。
【図11】 電子楽器が電子情報処理システムとして動作する場合の別の一例となるMIDIデータ修復処理3を示すフローチャート図である。
【図12】 この発明に係る電子情報処理システムのMIDIデータ編集処理2及びMIDIデータ修復処理2に従ってどのようにデータが変換されるのか、その具体例を示す図である。
【図13】 電子楽器が電子情報処理システムとして動作する場合の別の一例となるMIDIデータ編集処理4を示すフローチャート図である。
【図14】 電子楽器が電子情報処理システムとして動作する場合の別の一例となるMIDIデータ修復処理4を示すフローチャート図である。
【図15】 電子楽器が電子情報処理システムとして動作する場合の別の一例となるMIDIデータ編集処理5を示すフローチャート図である。
【符号の説明】
21…CPU、22…ROM、23…RAM、24…フロッピーディスクドライブ、25…ハードディスクドライブ、26…CD−ROMドライブ、27…通信インターフェイス、28…通信ネットワーク、29…サーバコンピュータ、2A…MIDIインターフェイス、2B…他のMIDI機器、2C…鍵盤、2D…押鍵検出回路、2E…パネルスイッチ、2F…スイッチ検出回路、2G…ディスプレイ、2H…表示回路、2J…音源回路、2K…効果回路、2L…サウンドシステム、2M…データ及びアドレスバス、2N…タイマ、2R…リボンコントローラ
Claims (9)
- 複数のイベントデータで構成される第1の情報を入力するステップと、
前記イベントデータを複数のグループに分類するステップと、
付属情報と情報の変更方法を表わす情報とを含む第2の情報を入力するステップと、
前記分類されたグループ毎に、該グループに含まれるイベントデータの一部の内容を前記第2の情報に基づいて変更することにより前記第1の情報に前記第2の情報を分散して配置すると共に、該グループのイベントデータのうち前記第2の情報が配置されていない部分に対して前記第2の情報に含まれる前記情報の変更方法を表わす情報に基づく方法で変更を施すステップと
からなる電子情報処理方法。 - 前記第1の情報に前記第2の情報を分散して配置することは、前記各グループに含まれる前記イベントデータの一部に対して前記各グループ毎にそれぞれ異なる所定の演算処理を行い、該演算結果の値と前記第2の情報とに基づいて該イベントデータの一部の内容を変更することからなる請求項1に記載の電子情報処理方法。
- 複数のイベントデータで構成される第1の情報を入力するステップと、ここで、該第1の情報には、複数のグループに分類された各グループ毎の前記イベントデータの一部において、付属情報と情報の変更方法を表わす情報とを含む第2の情報が、所定の演算処理に従い各グループ毎にそれぞれ分散して配置されており、かつ、各グループのイベントデータのうち前記第2の情報が配置されていない部分に対して当該第2の情報に含まれる前記情報の変更方法を表わす情報に基づく方法で変更が施されており、
前記入力した第1の情報に含まれる前記イベントデータを前記複数のグループに分類するステップと、
前記分類された各グループのイベントデータの一部から前記第2の情報を前記所定の演算処理に基づいてそれぞれ復号し検出すると共に、該検出された第2の情報に含まれる前記情報の変更方法を表わす情報に基づき各グループのイベントデータのうち前記第2の情報が配置されていない部分における前記変更されたイベントデータを変更前の内容に修復するステップと
からなる電子情報処理方法。 - 入力した前記第1の情報には、前記第2の情報が前記各グループ毎にそれぞれ異なる所定の演算処理に従い各グループ毎にそれぞれ分散して配置されており、
前記分類された各グループのイベントデータの一部から前記第2の情報を復号し検出することは、前記各グループ毎にそれぞれ異なる前記所定の演算処理に基づいて前記第2の情報を復号し検出することからなる請求項3に記載の電子情報処理方法。 - 請求項1乃至4のいずれかに記載の方法をコンピュータに実行させるためのプログラムを記憶した機械読み取り可能な記憶媒体。
- 複数のイベントデータで構成される第1の情報を入力する手段と、
前記イベントデータを複数のグループに分類する手段と、
付属情報と情報の変更方法を表わす情報とを含む第2の情報を入力する手段と、
前記分類されたグループ毎に、該グループに含まれるイベントデータの一部の内容を前記第2の情報に基づいて変更することにより前記第1の情報に前記第2の情報を分散して配置すると共に、該グループのイベントデータのうち前記第2の情報が配置されていない部分に対して前記第2の情報に含まれる前記情報の変更方法を表わす情報に基づく方法で変更を施す手段と
を具える電子情報処理装置。 - 前記第1の情報に前記第2の情報を分散して配置することは、前記各グループに含まれる前記イベントデータの一部に対して前記各グループ毎にそれぞれ異なる所定の演算処理を行い、該演算結果の値と前記第2の情報とに基づいて該イベント データの一部の内容を変更することからなる請求項1に記載の電子情報処理装置。
- 複数のイベントデータで構成される第1の情報を入力する手段と、ここで、該第1の情報には、複数のグループに分類された各グループ毎の前記イベントデータの一部において、付属情報と情報の変更方法を表わす情報とを含む第2の情報が、所定の演算処理に従い各グループ毎にそれぞれ分散して配置されており、かつ、各グループのイベントデータのうち前記第2の情報が配置されていない部分に対して当該第2の情報に含まれる前記情報の変更方法を表わす情報に基づく方法で変更が施されており、
前記入力した第1の情報に含まれる前記イベントデータを前記複数のグループに分類する手段と、
前記分類された各グループのイベントデータの一部から前記第2の情報を前記所定の演算処理に基づいてそれぞれ復号し検出すると共に、該検出された第2の情報に含まれる前記情報の変更方法を表わす情報に基づき各グループのイベントデータのうち前記第2の情報が配置されていない部分における前記変更されたイベントデータを変更前の内容に修復する手段と
を具える電子情報処理装置。 - 入力した前記第1の情報には、前記第2の情報が前記各グループ毎にそれぞれ異なる所定の演算処理に従い各グループ毎にそれぞれ分散して配置されており、
前記分類された各グループのイベントデータの一部から前記第2の情報を復号し検出することは、前記各グループ毎にそれぞれ異なる前記所定の演算処理に基づいて前記第2の情報を復号し検出することからなる請求項8に記載の電子情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001036207A JP3870700B2 (ja) | 1997-07-10 | 2001-02-13 | 電子情報処理方法及び装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9-200972 | 1997-07-10 | ||
JP20097297 | 1997-07-10 | ||
JP2001036207A JP3870700B2 (ja) | 1997-07-10 | 2001-02-13 | 電子情報処理方法及び装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35133598A Division JP3180789B2 (ja) | 1997-07-10 | 1998-12-10 | 電子情報処理方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001282236A JP2001282236A (ja) | 2001-10-12 |
JP3870700B2 true JP3870700B2 (ja) | 2007-01-24 |
Family
ID=26512502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001036207A Expired - Fee Related JP3870700B2 (ja) | 1997-07-10 | 2001-02-13 | 電子情報処理方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3870700B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008026915A (ja) * | 2007-08-27 | 2008-02-07 | Matsushita Electric Ind Co Ltd | 通信装置、通信方法、通信システム及びプログラム |
-
2001
- 2001-02-13 JP JP2001036207A patent/JP3870700B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001282236A (ja) | 2001-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7545936B2 (en) | Method and device for incorporating additional information into main information through electronic watermarking technique | |
US7485795B2 (en) | Method and device for storing main information with associated additional information incorporated therein | |
EP1155402B1 (en) | Audio synthesis using digital sampling of coded waveforms | |
US6552254B2 (en) | Method and system for supplying contents via communication network | |
JP4370800B2 (ja) | 音楽コンテンツ利用装置及びプログラム | |
US7099848B1 (en) | Audio delivery and rendering method and apparatus | |
JP3698357B2 (ja) | Midiデータ・ストリーム内のテキストを復号化するための方法及び装置 | |
JP3178378B2 (ja) | 電子情報処理システム及び方法並びに記録媒体 | |
JP3870700B2 (ja) | 電子情報処理方法及び装置 | |
JP3180788B2 (ja) | 電子情報付与及び検出のための装置及び方法 | |
JP2004046452A (ja) | 情報記録装置及び情報再生装置並びにそのプログラム | |
JP4370725B2 (ja) | 電子情報処理方法及び装置 | |
JP3180789B2 (ja) | 電子情報処理方法及び装置 | |
CN1637854A (zh) | 音乐内容使用装置及其方法 | |
JP4304870B2 (ja) | 電子情報処理方法及び装置並びに記録媒体 | |
JP2000092042A (ja) | 楽曲データ提供システム及び楽曲データ復号装置 | |
EP1696417B1 (en) | Audio synthesis using digital sampling of coded waveforms | |
JP3905743B2 (ja) | 電子透かし埋め込み方法 | |
JPH11249670A (ja) | カラオケ装置及びカラオケ端末装置 | |
GB2354860A (en) | Storing music information with associated additional information incorporated therein | |
JP2003208163A (ja) | 演奏データ転送制御装置及び電子楽器及び演奏データ転送制御プログラム並びに演奏データ取得プログラム | |
JP2008257266A (ja) | 音楽コンテンツ利用装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040402 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060509 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060710 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060926 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061009 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101027 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101027 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111027 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111027 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121027 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |