JPH10111685A - 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体 - Google Patents

時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体

Info

Publication number
JPH10111685A
JPH10111685A JP9222989A JP22298997A JPH10111685A JP H10111685 A JPH10111685 A JP H10111685A JP 9222989 A JP9222989 A JP 9222989A JP 22298997 A JP22298997 A JP 22298997A JP H10111685 A JPH10111685 A JP H10111685A
Authority
JP
Japan
Prior art keywords
sequence
package
time
data
script
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.)
Granted
Application number
JP9222989A
Other languages
English (en)
Other versions
JP3823465B2 (ja
Inventor
Takuya Fujishima
琢哉 藤島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP22298997A priority Critical patent/JP3823465B2/ja
Publication of JPH10111685A publication Critical patent/JPH10111685A/ja
Application granted granted Critical
Publication of JP3823465B2 publication Critical patent/JP3823465B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 【課題】時系列イベントデータの編集の自由度を向上す
ること。 【解決手段】時系列イベントデータと、該時系列イベン
トデータを書き換えるシーケンススクリプトからなるシ
ーケンスを複数納めることのできるパッケージが一列に
並んで保持されている。パッケージに独立したパッケー
ジスクリプトをおいて、パッケージのロード時やその内
容が変更されたときに、パッケージスクリプトを実行す
ることにより、時系列イベントデータを編集する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演奏データ等の時
系列イベントデータと、該時系列イベントデータを書き
換える書き換え手順を示すスクリプトとで構成されたシ
ーケンスが少なくとも含まれるデータを処理する処理装
置および方法、時系列イベントデータ処理用プログラム
が記録された記録媒体ならびに時系列イベントデータを
含むデータが記録された記録媒体に関するものである。
【0002】
【従来の技術】従来、時系列イベントデータのフォーマ
ットしてAIFFが知られている。例えば、音楽分野ではこ
れを応用したスタンダードMIDIファイル(以下、S
MFと記す。)が知られている。MIDIとはMusical
Instrument Digital Interfaceの略であり、異なる楽器
間やシーケンサ、コンピュータ、ライティングコントロ
ール、ミキサーなどを相互に結合し、情報の交換を可能
にするために制定された規格である。そしてSMFと
は、MIDI上で実時間で交換されるイベント情報を、
タイムスタンプを付加してファイルに記録・保存するた
めに考案されたフォーマットである。
【0003】
【発明が解決しようとする課題】しかしながら、現在普
及しているSMFで保存したりやりとりしたりできるの
は低レベルのMIDIイベント列だけであり、演奏デー
タの音楽的な構造や時間的に変化する量などの情報をや
りとりすることは困難であった。これらの情報はシーケ
ンサソフト固有の形式で保存することしかできなかっ
た。したがって、イベントデータの時間的配置や時変デ
ータ等の高次の情報をやりとりすることができないもの
であった。また、SMFデータは複数のトラックに記録
することができるが、これらのトラックは同時刻に開始
されるものと固定されているので、編集の自由度が低い
という問題点があった。特に、複数の曲を同時に編集す
る場合には、この問題点が顕著であった、
【0004】そこで、本発明はイベントデータ列と、そ
のイベントデータ列を書き換えるスクリプトからなるシ
ーケンスを複数収納することのできるパッケージに、ス
クリプトを単独でおくことにより、プラグインモジュー
ルとしての機能も有させるようにして編集の自由度を向
上するようにした時系列イベントデータを含むデータを
処理する処理装置および方法、時系列イベントデータ処
理用プログラムが記録された記録媒体ならびにそのよう
なデータが記録された記録媒体を提供することを目的と
している。また、本発明はパッケージをデータモデルの
中に一列に並べて保持することにより、複数のパッケー
ジ相互間のイベントデータおよびスクリプトの共有を図
れるようにした時系列イベントデータを含むデータを処
理する処理装置および処理方法、時系列イベントデータ
処理用プログラムが記録された記録媒体ならびにそのよ
うなデータが記録された記録媒体を提供することを目的
としている。さらに、本発明は、スクリプトのパッケー
ジにまたがる利用を柔軟に行えるようにした時系列イベ
ントを含むデータを処理する処理装置および処理方法、
時系列イベントデータ処理用プログラムが記録された記
録媒体ならびにそのようなデータが記録された記録媒体
を提供することを目的としている。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、本発明の時系列イベントデータを含むデータの処理
装置は、時系列イベントデータ列と該時系列イベントデ
ータ列を書き換える書き換え手順を示すシーケンススク
リプトとで構成されたシーケンスが格納されると共に、
単独でおかれるパッケージスクリプトが格納されるパッ
ケージが供給され、パッケージがロードされる際、前記
パッケージスクリプトを実行するパッケージスクリプト
実行手段と、前記シーケンスが参照される際に、前記シ
ーケンスクリプトを実行して、前記時系列イベントデー
タ列を書き換えるシーケンススクリプト実行手段とを備
えている。
【0006】また、上記本発明の時系列イベントデータ
を含むデータの処理装置において、前記シーケンスを収
めることができるパッケージが一列に並んだ状態で保持
されると共に、該パッケージの探索順序がその配置位置
とされたデータモデルが定義されており、前記時系列イ
ベントデータ中には、他の時系列イベントデータ列を参
照し、前記時系列イベントデータ中に前記他の時系列イ
ベントデータ列を取り込むためのリンクイベントが含ま
れており、前記リンクイベントに応じて、前記他の時系
列イベントデータ列を参照する際に、前記他のシーケン
スが収められたパッケージの探索を、前記探索順序で行
う探索手段を備えている。
【0007】さらに、上記本発明の時系列イベントデー
タを含むデータの処理装置において、前記シーケンスを
収めることができるパッケージが一列に並んだ状態で保
持されると共に、該パッケージの探索順序がその配置位
置とされたデータモデルが定義されており、前記パッケ
ージスクリプトにはサブルーチン定義が存在可能である
と共に、前記パッケージスクリプトおよびシーケンスス
クリプトの少なくとも一方にはサブルーチン呼び出し命
令が存在可能であり、前記各パッケージに対応して設け
られ、該パッケージのパッケージスクリプト中に存在す
るサブルーチン定義によって生成されたサブルーチンを
保持するためのディクショナリと、前記サブルーチン呼
び出し命令に応じて、対応するサブルーチンを呼び出す
際に、前記サブルーチンが保持されたディクショナリの
探索を、前記パッケージの探索順序で行う探索手段を備
えている。
【0008】さらにまた、本発明の時系列イベントデー
タを含むデータの処理方法は、時系列イベントデータ列
と該時系列イベントデータ列を書き換える書き換え手順
を示すシーケンススクリプトとで構成されたシーケンス
が格納されると共に、単独でおかれるパッケージスクリ
プトが格納されるパッケージを処理する方法であって、
前記パッケージがロードされる際、前記パッケージスク
リプトを実行するステップと、前記シーケンスが参照さ
れる際に、前記シーケンスクリプトを実行して前記時系
列イベントデータ列を書き換えるステップとを備えてい
る。さらにまた、上記本発明の時系列イベントデータを
含むデータの処理方法において、前記シーケンスを収め
ることができるパッケージが一列に並んだ状態で保持さ
れると共に、該パッケージの探索順序がその配置位置と
されたデータモデルが定義されており、前記時系列イベ
ントデータ中には、他の時系列イベントデータ列を参照
し、前記時系列イベントデータ中に前記他の時系列イベ
ントデータ列を取り込むためのリンクイベントが含まれ
ており、前記リンクイベントに応じて、前記他の時系列
イベントデータ列を参照する際に、当該他のシーケンス
が収められたパッケージの探索を、前記探索順序で行う
ステップを備えている。さらにまた、前記パッケージス
クリプトにはサブルーチン定義が存在可能であると共
に、前記パッケージスクリプトおよびシーケンススクリ
プトの少なくとも一方にはサブルーチン呼び出し命令が
存在可能とされており、前記各パッケージに対応して、
該パッケージのパッケージスクリプト中に存在するサブ
ルーチン定義によって生成されたサブルーチンを保持す
るためのディクショナリが設けられており、前記サブル
ーチン呼び出し命令に応じて対応するサブルーチンを呼
び出す際に、当該サブルーチンが保持されているディク
ショナリの探索を、前記パッケージの探索順序で行うス
テップを備えている。
【0009】さらにまた、本発明の時系列イベントデー
タ処理用プログラムが記録された記録媒体は、処理装置
に、上記本発明の時系列イベントデータを含むデータの
処理方法を実行させるためのプログラムが記録されてい
るものである。さらにまた、本発明の時系列イベントデ
ータを含むデータが記録された記録媒体は、シーケンス
の参照時に実行されるシーケンススクリプトにより書き
換えられる時系列イベントデータ列と、該時系列イベン
トデータ列を書き換える書き換え手順を示すシーケンス
スクリプトとで構成されたシーケンスが格納されると共
に、単独でおくことができるパッケージスクリプトが格
納されるパッケージが記録されているものである。
【0010】このような本発明によれば、シーケンスを
格納するパッケージ内にパッケージスクリプトを単独で
おけるようにしたので、プラグインモジュールとしての
機能も持たせることができる。これにより、編集の自由
度を向上できる等の機能の拡張を図ることができるよう
になる。また、シーケンスを収めることのできるパッケ
ージを、一列に並んだ状態で保持するデータモデルを定
義するようにし、パッケージの並び順をリンクイベント
解決時の探索順としたので、パッケージの並び順の変更
や、パッケージの削除および挿入によりリンク対象を変
更することができるようになる。このため、データの共
有を柔軟にすることができる。
【0011】
【発明の実施の形態】本発明の実施の形態例であるMI
DIシーケンサ等の時系列データを含むデータの処理装
置の構成の概略を図1に示す。ここで扱われているデー
タのデータフォーマットは本発明により新たに定義され
るものである。ここでは、この新規なデータフォーマッ
トをHyper Media File(以下、HMFという。)と称呼
するものとする。HMFでは、高次の情報を記述できる
一般的なデータモデルが与えられる。このデータモデル
は、データの静的な構造および動的な機構の2つの側面
から定義され、Hyper Media Data Model(以下、HMD
Mという。)と称呼するものとする。シーケンサソフト
に、内部の固有データ構造とHMDMとの相互変換を実
装させることにより、高次の情報を互いにやりとりする
ことができるようになる。
【0012】すなわち、HMFは、HMDMをファイル
形式で保存するフォーマットとして定義される。HMF
は、例えば、MIDIイベントによる音楽記述を対象と
して、SMFをベースにして構成することができるが、
MIDIイベントデータに限られるものではなく、音声
や画像等の時系列イベントデータに適用することもでき
るものである。
【0013】次に、HMFを音楽演奏に適用した場合の
本発明の処理装置の実施の形態の一例を図1を参照しな
がら説明する。図1において、符号1で示す処理装置A
は、音楽演奏データを生成しており、生成された演奏デ
ータはバッファメモリ1−1に格納される。そして、バ
ッファメモリ1−1に格納されている演奏データの構造
はHMDMとされており、HMDMの詳細は後述する
が、HMDMには、たとえば図3(a)に示すように複
数のパッケージ10〜13が納められている。HMFエ
ンコーダ1−2は、HMDMのデータ構造とされた音楽
演奏データを、パッケージ単位でHMF形式に変換して
出力する。この場合の、HMF形式に変換されるパッケ
ージの例がバッファメモリ1−1内に破線で図示されて
いる。パッケージの詳細は後述するが、パッケージは、
たとえば図3(b)に示すように複数のシーケンスが納
められている。
【0014】処理装置Aから出力されたパッケージ単位
のHMF形式の音楽演奏データは伝送路7を介して処理
装置Bあるいは記録媒体4に送られる。記録媒体4には
音楽演奏データがパッケージを単位としてHMF形式で
記憶される。ここで、記録媒体4としては、ハードディ
スク、フロッピーディスク、磁気カード、CD−RO
M、MO、DVD等、各種の記録媒体を使用することが
できる。また、1つのパッケージをエンコードしてファ
イルに格納することを、特に「セーブする」ともいう。
ここで、符号2で示す処理装置Bが記録媒体4から読み
出した、あるいは、伝送路7を介して処理装置Aから送
出されたHMF形式のデータを受け取るときは、処理装
置BはHMF形式のデータをパッケージ単位ごとに受け
取る。受け取ったパッケージはHMFデコーダ2−1に
おいてHMDMのデータ構造のパッケージに変換され
て、バッファメモリ2−2に保持される。ファイルに読
み込んでデコードし、1つのパッケージとしてHMDM
に格納することを、特に「ロードする」ともいう。
【0015】また、図3(b)に示すようにパッケージ
には複数のシーケンスが納められており、シーケンスの
詳細は後述するが、図3(c)に示すようにシーケンス
は、それぞれイベントデータ30とスクリプト(scrip
t)31との組から構成されている。スクリプトはHM
Fを特徴づけているものであって、データ変更の手順を
示すプログラムであり、スクリプトつきのイベントデー
タは、このスクリプトを実行することで最終的なMID
Iイベント列に変換される。すなわち、処理装置Bで受
け取った音楽演奏データを演奏しようとする場合は、バ
ッファメモリ2−2内に格納されているHMDMが、デ
ータ展開部3により展開されるようになる。
【0016】データ展開部3では、必要なシーケンスが
順次送り込まれイベントデータ/スクリプト分離部2−
3においてイベントデータとスクリプトとに分離され
る。分離されたスクリプトはスクリプト解釈部2−5に
おいて解釈され、この解釈に基づいてイベントデータ書
き換え部2−4において、イベントデータを書き換える
処理が実行される。これにより、最終的な時系列イベン
トデータが得られる。この時系列イベントデータは、M
IDIイベントの出力部2−6を介してMIDI信号と
してMIDI音源5に送られ、サウンドシステム6から
放音される。あるいは、そのままSMF形式でファイル
とすることもできる。
【0017】なお、SMFを用いた場合、例えば処理装
置Aと処理装置Bとがやりとりできる演奏データは、生
のMIDIデータ(raw MIDI Data)の集まりであり、
低レベルのデータしかやりとりすることができない。本
発明においては定義されたHMFを用いて処理装置Aと
処理装置Bとの間で演奏データをやりとりすることがで
きる。この場合、処理装置Aにおいて使用している音源
に最適なように表情づけされている時系列演奏データか
ら、それらの情報を含むHMDMを作成してHMF形式
で処理装置Bに送ることができる。処理装置BはHMF
形式のデータを受け取ってHMDMを復元し、自分の使
用している音源に最適な演奏データとなるように、HM
DMを展開して時系列イベントデータ列とされる演奏デ
ータを得るようにする。このときの展開は、予め処理装
置Bに記憶させてある音源補正スクリプトを実行するこ
とにより行われる。このように、高度な情報を含むシー
ケンス情報をHMFでは流通させることができる。な
お、図示されていないが処理装置Aと処理装置Bとは同
様の構成とされており、上記説明では処理装置Aから処
理装置Bにデータを送るようにしたが、処理装置Bから
処理装置Aにデータを送ることも可能である。
【0018】前記した図1においては処理装置Aおよび
処理装置Bを機能ブロックにより表したが、処理装置A
および処理装置Bのハードの構成を示すブロック図を図
2に示す。この図において、CPU61は動作プログラ
ムを実行して種々の処理を行う中央処理ユニット(CP
U)であり、ROM62はCPU61の動作プログラム
等が格納されているリード・オンリ・メモリ(ROM)
であり、RAM63はCPU61がプログラム実行時に
ワークメモリとして使用するランダム・アクセス・メモ
リ(RAM)である。
【0019】HDD(ハード・ディスク・ドライブ)6
5およびFDD(フロッピー・ディスク・ドライブ)6
6は動作プログラムや各種データを記憶しておく記憶装
置であり、ROM62に動作プログラムが記憶されてい
ない場合、このHDD65あるいはFDD66内のハー
ド・ディスクあるいはフロッピー・ディスクに動作プロ
グラムを記憶させておいて、記憶された動作プログラム
をRAM63に読み込むようにする。CPU61はRA
M63から動作プログラムを読み出して実行することに
より、ROM62に動作プログラムが記憶されている場
合と同様の動作をCPU61に実行させることができ
る。なお、HDD65は書き込み/読み出しを自由に行
うことができるので、動作プログラムの追加や、バージ
ョンアップ等を容易に行うことができる。
【0020】また、スイッチ67は操作パネルに設けら
れている操作指示用のスイッチであり、スイッチ67の
操作はスイッチ検出回路68により検出されてCPU6
1に知らされる。表示装置69にはメニューや操作情報
等が表示され、この表示を参照しながらユーザはスイッ
チ67等を操作する。CD−ROMドライブ70は、C
D−ROMに記憶されている動作プログラムや各種デー
タを読み出す装置である。CD−ROMドライブ70か
ら読み出された動作プログラムや各種データは、HDD
65内のハードディスクに書き込まれて記憶される。従
って、動作プログラムの新規インストールやバージョン
アップ等を容易に行うことができる。
【0021】MIDIインタフェース(MIDI I/
F)71はMIDIデータを送出あるいは受信するため
のインタフェースであり、他のMIDI機器72が接続
される。通信インターフェース73は、LAN(Local
Area Network)やインターネット、電話回線等の通信ネ
ットワーク74に接続されており、この通信ネットワー
ク74を介して、サーバコンピュータ75と接続され
る。ここで、HDD65内に動作プログラムや各種デー
タが記憶されていない場合は、通信インタフェース73
を用いてサーバコンピュータ75から動作プログラムや
各種データをHDD65にダウンロードする。
【0022】具体的には、クライアントとなる本発明の
処理装置は、通信インターフェース73および通信ネッ
トワーク74を介してサーバコンピュータ75へ動作プ
ログラムや各種データのダウンロードを要求するコマン
ドを送信する。サーバコンピュータ75は、このコマン
ドを受け、要求された動作プログラムや各種データを、
通信ネットワーク74を介して、処理装置へ配信し、処
理装置が通信インターフェース73を介して、これら動
作プログラムや各種データを受信してHDD65に蓄積
することにより、ダウンロードが完了する。
【0023】本発明は、複数のシーケンスを格納できる
パッケージを用意するようにしている。このパッケージ
の記述形式はフォーマットとして規定されているので、
パッケージをファイルとして取り扱うことができる。し
たがって、パッケージを単位として格納されたシーケン
スの構造を他の装置に渡すことができる。さらに、シー
ケンスを収めることができるパッケージ内に単独でパッ
ケージスクリプトをおけるようにしている。このパッケ
ージスクリプトが単独で置かれたパッケージはプラグイ
ンモジュールとして用いることができる。すなわち、パ
ッケージスクリプトにより、イベントデータだけではな
く機能定義までも取り込むことができるようになる。
【0024】さらにまた、本発明におけるHMDMで
は、複数のパッケージが一列に並んだ状態で保持されて
おり、パッケージロード時にパッケージスクリプトが実
行されるが、この時に作成された各パッケージのディク
ショナリと、シーケンス参照時に作成された一時ディク
ショナリとを、シーケンススクリプト実行時におけるサ
ブルーチンの読み出し時に所定の順序で探索するように
している。そして、最初に見つかった名前のサブルーチ
ンを実行するようにしているので、スクリプトのパッケ
ージにまたがる利用を柔軟に行えるようになる。例え
ば、パッケージをプラグインすることで、すでに用意さ
れているサブルーチンを同名の別のサブルーチンに差し
替えることができる。同時に、シーケンスへのリンクが
あるときは、シーケンスをその名前でパッケージの並び
順に探してリンクを解決する。
【0025】次に、本発明の詳細な説明を行うが、本発
明のHMFデータの処理装置はコンピュータに適用する
ソフトウェアで実現することも可能である。まず、本発
明の処理装置において処理が行われるHMDMの静的デ
ータ構造の典型的な全体像を図3(a)に示し、同図
(b)にHMDMに納められている典型的なパッケージ
の構造を示し、同図(c)にパッケージに納められてい
る典型的なシーケンスの構造を示す。図3(a)に示す
ように、HMDMは複数のパッケージ11〜13から構
成される。パッケージには、通常一曲の演奏データを格
納しているパフォーマンスパッケージ(Performance Pa
ckage)10と、利用頻度の高い便利なフレーズ断片や
サブルーチン定義等を集めたプラグインパッケージ(Pl
ug In Package)11,12と、基本的なデータ/サブ
ルーチン定義を格納しているシステムパッケージ(Syst
em Package)13の種類がある。また、同図(b)に示
すパッケージにはパッケージスクリプト32と、3つの
シーケンス21,22,23が納められている。なお、
パッケージは、0または1つのパッケージスクリプト
と、0以上のシーケンスからなる。すなわち、パッケー
ジスクリプトや、シーケンスのいずれかが省略されたパ
ッケージとすることもできる。
【0026】また、シーケンス(Sequence)は同図
(c)に示すようにイベントリスト(event list)3
0と、このイベントリスト30に対する変更を記述する
スクリプト(Script)31とを対にした構造とされてお
り、HMFにおいて重要なデータ構造とされている。さ
らに、スクリプト31はイベントリスト30に対して、
「このイベントはもっとこうである」というような変更
を加える手順を示すプログラムである。そして、同図
(c)に示すようにイベントリスト30と対をなしてい
るスクリプト31がシーケンススクリプトと呼ばれ、同
図(b)に示すようにパッケージ内に単独で存在するス
クリプト32がパッケージスクリプトと呼ばれる。
【0027】さらにまた、イベントリストは複数のMI
DIイベントを時刻つきで保持するものである。HMF
では、ここに後述するリンクイベントというものを置く
ことができ、リンクイベントにより、複数の演奏パート
を複数のトラックにより表しているSMFのトラックモ
デルに比べ、より柔軟な音楽演奏データ構造の記述を実
現することができる。なお、シーケンスに対して再生の
指示やイベントに基づくデータ表示の指示など、その内
容を要求すると、保持しているイベントリストに対して
シーケンススクリプトを適用し、その結果を与えるよう
にしている。このように、イベントリスト部に演奏デー
タの実体をおき、スクリプトで実体の内容の変更を記述
するようにしている。
【0028】次に、HMFからどのようにしてHMDM
中の一つのパッケージが生成されるかについて述べる。
HMDMの処理では、約200の基本的な命令(命令セ
ット)が定義されている。HMDMは、これらの命令や
数値を一列に格納した「実行コード」を受け取って、命
令を順次実行することができる。命令には、HMDMの
内容を参照したり、変更するものなどがある。この実行
コードをテキストで記述する規則が定義されている。具
体的には、命令・数値のテキスト表記やそれらの命令に
引数を与える表記の規則などである。この規則で定義さ
れるプログラミング言語を”Hyper Media Executable
(HME)”と称呼するものとする。
【0029】HMDMの処理を行うときは、HMEで書
かれたテキストを読みとり、実行コードを生成してそれ
を実行する機能を持たせるようにする。このHMDMの
内容を変更するプログラムは、HMEテキストを直接書
く方法、あるいは、高級言語を使用してプログラムを書
く方法により生成することができる。さらに、グラフィ
カルなインターフェースにより、ユーザに意識させずに
システムが自動的に生成してもよい。いずれの方法で書
かれたプログラムでもHMDMを処理する際は、テキス
トの内容を調べ、HMEであれば直接読みとって実行コ
ードが実行される。あるいは、テキスト内で指定されて
いるコンパイラを起動してそのテキストをHMEテキス
トに変換し、変換されたHMEを読みとって実行コード
を実行する。なお、形式の判別のため、テキストの1行
目にはコンパイラの名称をおくようにしているが、他の
方法により形式を判別してもよい。
【0030】HMEは、HMDMに対してあらゆる変更
操作ができるように設計してあり、全く内容のない新規
のパッケージから出発して、それに対して次々と変更操
作を加えれば、どのような内容のパッケージでも作り上
げることができる。そして、HMEはテキストで表記す
ることができるので、容易にファイルに格納することが
できる。単純にテキストファイルとしてもよいし、ある
いはSMF形式のファイルに、適当なSMFメタイベン
トを用いて格納してもよい。従って、HMEを用いて保
存しようとするパッケージに含まれるすべての要素を順
次登録していくような変更操作の並びを作成し、それを
テキスト形式でファイルに保存すれば、パッケージの内
容をファイルに記録することができることになる。
【0031】ところで、HMFはHMDM中の一つのパ
ッケージの内容を記述したファイルであり、この記述の
方法としてHMEを用い、パッケージの内容の記述を行
うようにしている。以下、例を用いてテキスト記述から
パッケージを復元できることを説明する。テキスト記述
は次のような構成となっているが、説明の都合上実際の
HMEそのものではなく、大まかな内容を示している。
また、左端の番号も、説明の都合上付したものであり実
際にはこの番号はテキストには含まれない。
【0032】”HME”language 1.00 Version 1.空のパッケージを作成し、それをpとする。 2.空のパートシーケンスを作成し、それをsとする。 3.イベントeを作る;eの時刻は100とする;eの
内容は”91 40 40”とする;eをsに格納 4.イベントeを作る;eの時刻は150とする;eの
内容は”81 40 00”とする;eをsに格納 5.sをpに”seq_A”という名前で格納する 6.空のパートシーケンスを作成しそれをsとする 7.イベントeを作る;eの時刻は300とする;eの
内容は”91 51 40”とする;eをsに格納 8.イベントeを作る;eの時刻は450とする;eの
内容は”81 51 00”とする;eをsに格納 9.sをpに”seq_B”という名前で格納する 10.pを出力する
【0033】なお、イベントeの内容を表す3組の1バ
イトのデータにおいて、最初に位置するデータ”91”
はノートオン、データ”81”はノートオフを表し、2
番目に位置する1バイトのデータは16進数でノートナ
ンバを表し、3番目に位置する1バイトのデータは16
進数でベロシティを表している。次に、HMDMの処理
時にこのテキストを読み込み、実行コードに変換して実
行する様子を以下に示す。HMDMの処理時に、まず冒
頭の”HME”を認識して、これはHMEのテキストで
あると判断し、実行コードに変換する。ここで、別の言
語が指定されており、それをHMEテキストに変換する
外部ソフトウェアが指定されていれば、その外部ソフト
ウェアを起動し、そのテキスト本体部分を処理させてそ
の結果を受け取るようにする。
【0034】実行コードに変換して実行する様子を述べ
ると、上記1で、新規の空のパッケージが作成される。
このパッケージはメモリには確保されることになるが、
また、HMDM中のパッケージの一つとしては登録され
ない。変数pでそれを参照する。上記2で、空のパート
シーケンスをメモリ上に用意する。上記3および4で、
用意したイベントに、必要なパラメータを設定し、パー
トシーケンスに格納する。実際には、イベントの数だけ
これを並べればよい。この結果、パートシーケンスに
は、イベントが並んだ状態が作り出される。上記5で、
作り上げたパートシーケンスsに名前を付けて、パッケ
ージpに登録する。上記6,7,8,9では同様のこと
を繰り返し、新たなパートシーケンスを作り上げてパッ
ケージpに登録する。
【0035】以上で、新規のパッケージに、二つのパー
トシーケンス”seq_A””seq_B”が、内容が復元された
状態で登録されたことになる。以下同様にパートシーケ
ンスやカーブシーケンスを作成しては登録するという手
順を記述していけばよい。パッケージスクリプトを表現
するテキストの登録も同様に記述することができる。最
後に作り上げたパッケージをHMDMのパッケージ列の
末尾に追加する。あるいは、どこに挿入するかをユーザ
の指定に任せてもよい。このようにしてパッケージを組
み上げてパッケージ列に組み込んだ後、さらにパッケー
ジスクリプトを実行することになる。以上の例で示した
ように、HMEでの記述を「実行」することにより、任
意の内容を持ったパッケージを、HMFからHMDMの
中に復元することができる。逆に、HMDMのあるパッ
ケージの内容を、HMEで記述し、テキスト形式でファ
イル化することが可能である。
【0036】次に、パッケージの詳細を前記図3および
図4を参照しながら説明する。図4には”song1”と名
付けられたパッケージが示されており、その中には、1
つのパッケージスクリプトと、”root”,”bass-tr
k”,”bass-intro”,”bass-1”,”bass-2”,・・
・,”drums-A”,”melody-cresc”と名付けられたシ
ーケンス群が収められている。このように、1つのパッ
ケージは、0または1つのパッケージスクリプトと0以
上のシーケンスからなっている。ただし、シーケンス
は、図示するように一列にならべて管理されるわけでは
ない。
【0037】パッケージは、以下に示すような役目をも
っている。まず、HMFのデータ流通の単位とされてい
る。すなわち、ファイルのセーブ、ロードはパッケージ
単位とされており、通常一曲の音楽演奏データを一つの
パッケージとして流通させる。このようなパッケージを
パフォーマンスパッケージ10と呼ぶ。一方、便利なフ
レーズ断片やサブルーチン定義をパッケージスクリプト
中に集めたパッケージもあり、これをプラグインパッケ
ージ11,12と呼ぶ。なお、一つのシーケンスをやり
とりする場合でも、パッケージに入れて行なう。ただ
し、スクリプトのソースだけをテキストファイルとして
交換することも可能である。また、パッケージには、H
MFシステムにはじめから提供される基本的なデータ/
サブルーチン定義を格納することができ、このためのパ
ッケージがシステムパッケージ13である。
【0038】また、パッケージにはロード時の初期化ス
クリプトをおくことができる。これが、パッケージスク
リプト32であり、音楽演奏データごとの初期設定は、
パッケージスクリプトを実行することにより行われる。
なお、パッケージ内の任意のシーケンスを指定するため
に、HMDMでは名前を用いている。パッケージの中の
シーケンスは名前を一つ持つことができ、これをシーケ
ンス名と呼ぶ。シーケンス名は、それを含むパッケージ
をファイルにセーブし、その後でロードされた場合も保
存される。ただし、一つのパッケージ内に、同名のシー
ケンスが複数存在することはない。すでに存在するもの
と同名のシーケンスをパッケージに登録すると、古い内
容は捨てられ、新しいものに置き換えられる。
【0039】パフォーマンスパッケージの場合、パッケ
ージ中のいずれかのシーケンスが「ルートシーケンス」
となる。ルートシーケンスとは参照関係の起点となるシ
ーケンスである。すなわち、外部からルートシーケンス
の内容を要求すると、パッケージ内に含まれる他のシー
ケンスが参照され、その結果、例えば音楽演奏の全体の
データが得られる。パフォーマンスパッケージ中のある
シーケンスがルートシーケンスであることを示すには、
シーケンス名を”root”とする。ルートシーケンスも通
常のシーケンスであるから、他のものと同様に作成され
る。なお、一般に、ルートシーケンスのスクリプトおよ
びイベントリストにはデータ全体に関する設定がおかれ
る。
【0040】パフォーマンスパッケージにおけるパッケ
ージスクリプトには、その音楽演奏データを構成するた
めの共通サブルーチンをおくことができる。また、その
曲のための初期設定もここにスクリプトとして置くこと
ができる。なお、シーケンススプリクトを作成して、イ
ベントリストに対し任意の変更を加えることが可能とさ
れる。
【0041】プラグインパッケージは、便利なフレーズ
断片やサブルーチン定義を集めたものである。一般のユ
ーザは、完成品のプラグインパッケージをブラックボッ
クスとしてHMDMにロードすることにより、あらかじ
め仕上げられたシーケンスやサブルーチンを利用するこ
とができるようになる。ユーザがスクリプトの内容を変
更、あるいは新規作成することも可能である。プラグイ
ンパッケージには、ルートシーケンスは存在しない。パ
ッケージスクリプト中に1つまたは複数のサブルーチン
定義を格納しておくことにより、”サブルーチン集”と
することができる。たとえば、”slide”というサブル
ーチンが提供されていて、あるシーケンス内のイベント
を2つ指定して、この”slide”というサブルーチンを
呼ぶとそれらをギターのスライド奏法により演奏された
状態のイベント書き換えることができるようになる。
【0042】また、プラグインパッケージは、例えば、
“伴奏スタイル集”とすることができる。すなわち、あ
る伴奏パターンのシーケンスが定義されており、引数と
してコードを指定して内容を要求すると、そのコードに
応じて音高が変換された伴奏パターンのイベントリスト
を得ることができるようになる。また、シーケンスを用
いて、フレーズ集やカーブデータ集等を提供することが
できる。この場合、シーケンススクリプトがそれらの修
飾の方法を提供しており、例えばフレーズ集のシーケン
スに対して引数をつけて、該シーケンスの内容を要求す
ると、いろいろに変化したフレーズを得ることができ
る。
【0043】システムパッケージは、システム機能の付
加的な部分を実現するためのパッケージであり、システ
ムのプリミティブな機能の上に実装される。システムパ
ッケージには、ルートシーケンスは存在せず、パッケー
ジスクリプトを用いて、基本的なサブルーチンが提供さ
れたり、シーケンスを用いて、代表的な伴奏パターン等
の基本的なデータなどが提供される。
【0044】次に、シーケンスについて説明すると、シ
ーケンスはHMFの核となるデータ構造の単位であり、
イベントリストとスクリプトの組という形で構成され、
パートシーケンスとカーブシーケンスとの2種類があ
る。このうちパートシーケンスには、シーケンスであっ
て、保持するイベントが0-255の8ビットの並びである
バイト列、MIDIの音高,オンベロシティ,オフベロ
シティを有しているノートイベント、および、後述する
リンクイベントが納められている。また、カーブシーケ
ンスにはシーケンスであって、保持するイベントが数値
であるものが納められている。なおカーブシーケンス中
にはリンクイベントは含まれない。
【0045】シーケンスは、内容を要求されると、保持
しているイベントリストの写しを作り、スクリプトを実
行してイベントリストを修飾する。そして、修飾された
イベントリストを出力する。すなわち、保持しているイ
ベントリスト自体は書き換えられない。例えば、図5に
示すシーケンスに内容を要求(reference)すると、シ
ーケンス中のスクリプトに記述された”melody notes h
arder ...”、および、”exaggerate tenuto”が実行さ
れて、図示するようにメロディの各イベントのベロシテ
ィが増大(図ではイベントを示すバーの幅が太く表され
ている)されると共に、持続時間も長くされて、メロデ
ィが強めにされると共に、そのテヌートが強調されるこ
とになる。そして、このようにして書き換えられたイベ
ントリストが返される(response)ことになる。また、
必要に応じて引数を与えることもでき、たとえば「メロ
ディノートを”10%強く”」というように指定するこ
とも可能である。
【0046】また、シーケンスを構成するイベントリス
トとスクリプトは、静的にも動的にも独立した存在であ
る。データ構造としても分離された形になっており、ス
クリプトの実行とイベントリストの演奏進行も全く別の
過程となっている。すなわち、イベントリストの中にス
クリプトがまじっていて演奏の進行と共にスクリプトが
実行されるのではない。このように、HMFでは元とな
る演奏の断片をMIDIイベントの形でイベントリスト
に保持しておき、スクリプトの引数を調節したりスクリ
プト自体を差し替えることにより、様々に変化させるこ
とができるのである。これにより、テンプレートの変更
も容易に行うことができる。なお、スクリプトはイベン
トリストに適用するコマンドを保持するものなので、ス
クリプトをみるとそのイベントリストの編集過程を知る
ことができる。すなわち、シーケンスは自己の編集過程
を保持している演奏データともいえる。
【0047】ここで、シーケンスの指定方法について説
明すると、HMDM内の特定のシーケンスを指定するに
は、パッケージ名とそこでのシーケンス名を合わせて指
定するようにする。これは、パッケージ名はHMDM内
で一意的であると共に、シーケンス名はパッケージ内で
一意的であるからである。さらに、HMDMでは、シー
ケンスの識別法として、前記名前による方法に加え、I
D番号による方法でもよい。ID番号は、あるパッケー
ジのロードでHMDMに新たなシーケンスが加わると、
HMDM中で一意性が保証される「ID番号」をIDマ
ネージャが各シーケンスに与える。以後HMDMでは、
このID番号で任意のシーケンスを直接指定することが
できる。このように、ID番号は、パッケージではなく
HMDMで一意的なものである。
【0048】このID番号は整数値であるが、通し番号
とは限らない。従って、シーケンスを一つ削除しても他
のシーケンスのID番号が変化するということはない。
また、いったんHMDMに登録されれば、HMDMから
削除されるまでの間、シーケンスのID番号は不変とさ
れる。ただし、パッケージをHMF形式でエンコードす
る際にはID番号は記録されず、そのパッケージを後刻
HMDMにロードしたときに、各シーケンスに新しいI
D番号が与えられる。すなわち、新シーケンスの登録と
して扱われる。
【0049】つぎに、イベントリストの詳細を説明す
る。イベントリストは、イベントを時刻順に任意の数保
持するようにしたデータ保持構造である。また、イベン
トは、開始時刻、持続時間、後述するラベルの3つの情
報を次に示すいずれかのデータをあわせて保持するデー
タ単位である。 ・バイト列・・・0-255の8ビットの並び ・ノートイベント・・・MIDIの音高、オンベロシテ
ィ、オフベロシティを有しているイベント ・リンクイベント・・・リンクを保持しており、パート
リンクイベントとカーブリンクイベントがある ・数値
【0050】このようなイベントを保持するイベントリ
ストでは次のような特徴点がある。 1.各イベントに1つ以上のラベルをつけることができ
る。この時、各イベントにID番号がついていてもよ
い。 2.リンクイベントが用意されている。(これについて
は後述する。) 3.時変カーブ(折れ線)データの実体の保持にも用い
ることができる。(これについても後述する。)
【0051】ラベルは、イベントリスト中のイベントの
識別を行うために付与されるもので、ユーザが任意に付
与することができる。また、イベントの識別をID番号
によって識別するようにしてもよい。ラベルのついたイ
ベントリストの例を図6に示すが、イベントリスト中の
各イベントは、任意の文字列からなるラベルを任意の数
持つことができる。また、ラベルのないイベントがあっ
てもよい。例えば図6では、左上のイベントに、”melo
dy”,”tenuto”,”first”,という3つのラベルが
つけられている。HMDMにおいては、このラベルを用
いてイベントを指定することができる。
【0052】ラベルづけは、従来のシーケンサソフトの
対象イベント選択操作に対応している。従来のシーケン
サソフトでは、対象となるイベントをマウスなどで任意
の数指定し、それに対して編集を行なうようにしてい
た。イベントにラベルをつけることは、その「選択」を
記録することに相当する。したがって、ラベルを指定す
ればその選択パターンを再現することができ、それに対
して何らかの処理を施すことを容易に行うことができる
ようになる。例えば図6において、「”melody”という
ラベルのついたイベント」と指定すると、上の破線で囲
ったイベントをマウス等で選択するのと同様の効果を持
つようになる。また、「”chord”というラベルのつい
たイベント」を指定すると、下の破線で囲ったイベント
を選択することになる。なお、”melody”or”tenuto”
というように複数のラベルを指定することも可能であ
る。
【0053】また、ラベルは、HMF形式にエンコード
し後刻デコードした場合にも保存される。ここで、図6
ではピアノの両手の演奏が1つのシーケンスに入ってい
る。そして、各イベントには、”melody”、”chor
d”、”bass”といったラベルが、それぞれあてはまる
ノートオンイベントに付与されている。したがって、ス
クリプトにおいて「”melody”というラベルのついたイ
ベントは強めに」「”bass”というラベルのついたイベ
ントは強めに」などという記述が可能となる。
【0054】次に、ラベルが付与されたイベントの選択
的なイベント書き換え処理のフローチャートを図7
(a)に示し、同図(b)に示すイベントリストを参照
しながらその説明を行う。ここでは、ラベル”xxx
x”を持つイベントの書き換えにおいて、ラベル”xx
xx”がラベル”melody”の場合を例に挙げて説明す
る。イベント書き換え処理がスタートされると、ステッ
プS1においてイベントリストにイベントが残っている
か否かが判断される。この場合、処理が開始された直後
であるので図7(b)に示すイベントリストのすべての
イベントが残っており、YES(y)と判断されてステ
ップS2に進む。ステップS2ではイベントが一つ選択
される。この場合、EventA1が選択され、ステップS3
にてイベントに指定されたラベル”melody”が付与され
ているか否かが判断される。この場合、EventA1にはラ
ベル”melody”が図7(b)に示すように付与されてい
るので、YES(y)と判断されてステップS4に進
む。ステップS4では、イベントに対し、強めにする等
の指定された処理を実行し、ステップS1に戻る。
【0055】そして、ステップS1ないしステップS4
の処理が再度行われるが、この場合は、EventC1が選択
されるが、EventC1にはラベル”melody”が付与されて
いないのでステップS3にてNO(n)と判断されてス
テップS1に再度戻るようになる。ついで、ステップS
1ないしステップS4の処理が順次選択された図7
(b)に示すイベントに対して実行され、図7(b)に
示すイベントリストのすべてのイベントに対して処理が
実行されると、ステップS1にてNO(n)と判断され
てイベント書き換え処理は終了する。この結果、この場
合はラベル”melody”が付与されているEventA1,Event
A2に対してイベント書き換え処理が実行されることにな
る。
【0056】また、HMFは、イベントリスト中のイベ
ントを識別するため補助的にID番号も用いることがあ
る。この補助的な機構は、スクリプト言語との兼ね合い
のためのものである。スクリプトの処理速度や複雑さと
のトレードオフのため、ラベルによるイベント識別のた
めの十分な機構(連想配列など)が言語に提供できない
可能性もある。この場合、もっとも基本的なデータであ
る整数でイベントを識別する必要が生じる。このため、
ID番号が補助的に用いられるのである。
【0057】図8に、ID番号をイベントに付与する機
構の一例を示す。ユーザ入力などでイベントリストに新
たなイベントが加わる際、イベントリスト中で一意性が
保証される「ID番号」が各イベントに与えられる。以
後、このID番号で、任意のイベントを直接指定するこ
とができるようになる。例えば、図8では、”NoteOn a
3 64”というイベントを時刻0に印加している。このイ
ベントの登録の際、ID manager40は、その時点で
ほかのどのイベントにも使われていない数値「1」をこ
のイベントに与える。以後、このイベントリストの中で
は、id=1とすれば必ずこの時刻0の”NoteOn a3 6
4”のイベントが指定されることになる。
【0058】なお、ID番号は整数値であり、通し番号
とする必要はない。従って、イベントを一つ削除して
も、他のイベントのID番号が変化することはない。ま
た、いったんイベントリストに登録されれば、削除され
るまで、イベントのID番号は不変である。例えば図8
においてid=16のイベントを削除しても、他のどの
イベントのID番号も変化しない。ただし、あるイベン
トをイベントリストから削除し、ふたたび同一イベント
を登録した場合、はじめのID番号は保存されず、新し
いID番号が与えられる。すなわち、イベントリストへ
の新イベントの登録として扱われるようになる。
【0059】次に、スクリプトの説明を行う。スクリプ
トは、前述したようにイベントリストを修飾する手順を
記したプログラムである。スクリプトの内容は、対象と
なるイベントを設定し、設定されたイベントに対して行
う操作を示すことの繰り返しとされている。対象となる
イベントの設定方法としては、前記したようにイベント
に付与されているラベル、あるいはID番号を指定する
ことにより設定する方法や、時刻範囲を指定してその時
刻範囲に含まれるイベントを指定する方法がある。図9
にスクリプトの内容の一例をイベントリストと対応づけ
て示す。この図に示すスクリプトの一行目では、”melo
dy”というラベルの付いたイベントについてベロシティ
を10増加する処理がプログラムされている。また、2
行目では、IDが36であるイベントの音高をC3と設
定している。さらに、3行目では、”slur”で始まるラ
ベルの付いたイベントについてスラー処理をしている。
なお、3行目の”slur”に付された*印はワイルドカー
ドであり、これには”slur1”、”slur2”、”slur
3”等のラベルが該当する。
【0060】なお、図9に示すスクリプトの表記は概念
的なものであり、本発明における前述した実際のプログ
ラミング言語とは異なるものである。設定されたイベン
トに対するスクリプトの操作としては、イベント内容の
読み出し、イベント種類の判別、値の変更、イベント自
体の消去、新たなイベントの追加、ラベルの追加/削除
/改名等の操作がある。スクリプト言語としては、アセ
ンブラ等の低水準の言語を用いることができる。この場
合、直接この言語でスクリプトを記述してもよいし、高
級言語を設計し、この言語へのコンパイラを用意するよ
うにしてもよい。
【0061】また、各シーケンスが内蔵するスクリプト
を、シーケンススクリプトと呼ぶ。シーケンススクリプ
トには、対応するイベントリストの内容と密接に関連し
た記述がなされている。一般にシーケンススクリプト
は、「このようなイベントに対して、このような変更を
施す」というイベントリスト編集コマンドが、反復や条
件分岐をまじえて多数書かれている。なお、シーケンス
スクリプト中でサブルーチンを定義することは可能であ
る。
【0062】さらに、各パッケージ毎に登録されるスク
リプトをパッケージスクリプトと呼ぶ。パッケージスク
リプトは、前記図4の最上段に示されているが、パッケ
ージをロードする際にパッケージスクリプトは一度実行
される。そこで、このパッケージスクリプトで汎用サブ
ルーチンの定義を記述しておけば、パッケージをロード
するだけで新たなサブルーチンを利用することが可能と
なる。このことから、パッケージスクリプトは、そのパ
ッケージを使う上で必要な初期設定と、汎用サブルーチ
ンの定義とで占められている。ここでのサブルーチンの
定義は、外部からも利用可能となる。
【0063】次に、本発明の特徴点の一つであるカーブ
データについて説明する。ピッチベンドや音量等を変化
させる変化カーブは、連続的に変化する量のデータとさ
れており、SMFにおいて変化カーブのデータは、具体
的なイベントの離散的な列で表現されている。例えば、
図10(a)のAに示す離散的なイベントデータ列によ
り本来連続的に変化する量が表されている。すると、こ
のAに示すイベントデータ列と、図10(a)のBに示
すイベントデータ列とを加算して新たな変化カーブの変
化特性を作成しようとしたとき、単純に混合すると、図
10(a)のA,Bmixに示すように個々の変化カーブを
正しく加算した変化特性とはならない。
【0064】そこで、HMFでは、カーブデータ(折れ
線データ)を定義し、図10(b)に示すように操作す
る枠組みを与えるようにする。このように定義すると、
図10(b)のAに示す折れ線のカーブデータと、同図
のBに示す折れ線のカーブデータとを加算することによ
り、同図のA,Bmixに示すように新たなカーブデータを
得ることができるようになる。これにより、ボリューム
やテンポ、その他あらゆる時変パラメータを抽象化する
ことが可能となる。また、このカーブデータはそのまま
で処理装置間でやりとりすることができるようになる。
【0065】このカーブデータは、例えば、前記図4に
示すcurve”melody-cresc”に示すシーケンスに保持さ
れているように、シーケンスの一種として管理され、こ
れをカーブシーケンスと称呼する。すなわち、カーブシ
ーケンスとはシーケンスを使用してカーブを実際に表し
たシーケンスである。このカーブシーケンスを図11に
示す。パートシーケンスでは、図示するようにイベント
リストにMIDIイベント列が時刻順で保持されるが、
カーブシーケンスでは、イベントリストを使用してカー
ブの変化点の時刻と値の組を格納している。なお、イベ
ントとイベントの間の任意の時刻のカーブデータの値は
適切な内挿法、例えば直線補間法等を用いることにより
得るようにしている。カーブの内容の参照には、後述す
るリンクイベントを用いる。パートシーケンス中の任意
の時刻に、シーケンスの一種であるカーブシーケンスの
内容を要求するイベント(カーブリンクイベント)をお
くようにする。このカーブリンクイベントでは、カーブ
の名前等のカーブの識別情報や、このカーブを音量ある
いはピッチに適用する等の適用先の情報を含ませること
ができる。
【0066】また、特定のイベントにカーブが固定され
ることがなく、例えばピッチベンド用のカーブデータを
ボリュームを変化させるカーブデータに書き換えて用い
ることができるようになる。なお、カーブデータは時刻
から値への変換関数となっている。これに基づき、「あ
る時刻での値を得る」、「カーブから適切な間隔のMI
DIイベントを生成する」、「既存のMIDIイベント
列からカーブシーケンスを逆生成する」といったことが
可能となる。また、カーブどうしの加算なども定義され
ており、カーブによる表現を重ねていくことが可能とな
る。カーブシーケンスの変形操作は、実際にはパートシ
ーケンスにおけるイベントリストの編集と同様に行うこ
とができる。
【0067】次に、ピッチベンドの表現づけにカーブデ
ータを利用する例を図12を参照しながら説明する。図
12は、ユーザが、”curve−a1”というカーブデータ
をピッチベンドのストリップチャートに取り込んだとこ
ろを示しており、システムは、このカーブから適切な間
隔のピッチベンドイベントを自動的に生成して発生すべ
きMIDIイベント列内に挿入する。この場合、ユーザ
がカーブデータ”curve−a1”の形状を変更すると、シ
ステムはピッチべンドのイベントを生成し直すようにな
る。
【0068】なお、カーブシーケンスに対してスクリプ
トを付加するようにして、参照時にスクリプトを実行す
ることにより、元の折れ線を書き換え、書き換え後のイ
ベント間を内挿して最終的なカーブデータを得るように
してもよい。また、カーブリンクイベントによってカー
ブを参照する際に、カーブリンクイベントを含むシーケ
ンスのスクリプトを実行して、折れ線を書き換えてもよ
い。さらに、カーブデータの各点に対してラベルをつけ
ることにより、各点のデータを選択的に書き換えるよう
にしてもよい。これにより、カーブの変化特性を容易に
変更することができる。なお、折れ線のカーブデータに
おいて、任意の時刻の値は適切な内挿を行うことにより
得るようにする。これにより、折れ線データから適切な
間隔の離散的イベント列を生成することができる。
【0069】次にシーケンスリンクイベントについて説
明する。シーケンスにおいては、パートシーケンスのイ
ベントリスト中に「シーケンスリンクイベント」を置く
ことができる。シーケンスリンクイベントは、他のある
シーケンス(パートシーケンスやカーブシーケンス)を
指定する。そして、該シーケンスリンクイベントの時刻
以降にそのリンクイベントが指定するシーケンスを取り
込むべきであるということを示す役目をもっている。例
えば図13(a)では、”melody”というパートシーケ
ンスのイベントリストの時刻tの位置に“chord”とい
うパートシーケンスへのシーケンスリンクイベントが置
かれている。スクリプトを実行して最終的なパートシー
ケンス”melody”を得る時に、パートシーケンス”melo
dy”のスクリプトが実行されてイベントリストが修飾さ
れる。スクリプトの実行が終了すると、シーケンスリン
クイベントの解決が図られ、パートシーケンス”chor
d”の取り込みが起きる。こうして、図13(b)に示
すように、パートシーケンス”chord”を取り込んだパ
ートシーケンス”melody”が得られる。この処理は、演
奏が進むにつれて実行されるのではなく、パートシーケ
ンス”melody”の内容を得ようとしたときに実行され
る。
【0070】本来イベントリストは時刻付きMIDIイ
ベントの集合であり、イベントリスト中のMIDIイベ
ントは必ずMIDI出力されるものである。シーケンス
リンクイベントは、イベントリスト中に置かれながら、
MIDI出力には送出されず、シーケンス間の関連を表
示するだけのものである。なお、前記したようにリンク
は、再生時に解決されるものではない。リンクイベント
で示されるリンクは、シーケンス間の関連を静的に示し
ているだけであり、リンク解決のプロセスは、演奏のプ
ロセスとは無関係にパートシーケンスの内容が参照され
た時に進行するのである。なお、シーケンスの内容を要
求する際、引数を渡すことができる。
【0071】このリンク機構により、現在の一般的なシ
ーケンサソフトが採用しているトラックモデルの音楽演
奏データ構造を表現することができる。従って、トラッ
クモデルと同様の音楽演奏データ構造を表現しながら
も、複数のシーケンサソフト間で音楽演奏データを、そ
の階層構造の情報までも含めて交換することが可能とな
る。これはSMFによるトラックモデルを用いた従来で
はできなかったことである。例えば、図14(a)に示
すtrack1ないしtrack5の5つのトラックからなるデー
タを、同図(b)に示すルートシーケンスの時刻0にs
eq1からseq5までの5つのシーケンスを取り込む
というリンク構造で表現している。また、同図(a)に
示すトラックモデルにおいて各トラック内にフレーズ断
片が配置される構造は、同図(b)に示すように子シー
ケンスの適切な時刻にリンクイベントを置いて表現する
ようにする。例えば、図14(a)において、track1
にpart a,part b,part cが置かれている状態は、同図
(b)に示すようにseq1の適切な時刻にseq a,seq b,
seq cへのリンクイベントを置くことで表現することが
できる。さらに、一部のシーケンサソフトに見られるよ
うな、シーケンスが階層的になった構造も、同様にして
表現することができる。
【0072】ルートシーケンス以外のシーケンスは、リ
ンクしない限りMIDI出力に寄与しない。したがっ
て、典型的表現パターンを一つずつ入れたシーケンスを
多数用意しておき、好きなものをリンクして利用するこ
とができる。このため、リンクの枠組は、典型的表現パ
ターンの利用にも都合がよいものである。また、一つの
シーケンスが、任意数の他のシーケンスを参照すること
ができ、さらに、複数のシーケンスが、システムのどこ
かに存在するある一つのシーケンスを参照することもで
きる。ただし、参照がループを構成することは禁止され
る。このループとは、シーケンスAがシーケンスBを、
シーケンスBがシーケンスCを、そしてシーケンスCが
シーケンスAを参照しているように、参照がループ状と
されている状況をいう。なお、リンクイベントにおいて
シーケンスを指定するばあいは、リンクイベントも、I
D番号でなくパッケージ名とシーケンス名で参照対象を
保持するようにしている。
【0073】次に、HMFの静的なデータ構造が、外か
らの要求に対してどのような動的な振る舞いをするのか
について説明する。図15に示すように、例えば、ファ
イルシステムの記録媒体4に格納されているHMFファ
イルから一つのパッケージをロードすると、パッケージ
のロード時にパッケージスクリプトが実行されて、サブ
ルーチンの定義があれば、パッケージディクショナリを
用意してそこにサブルーチン定義が格納される。ここで
ディクショナリについて説明すると、ディクショナリは
スクリプトで出現する変数/サブルーチンを保持するも
のであり、パッケージごとにあるパッケージディクショ
ナリと、スクリプト実行中だけ存在するデータ保持用の
ディクショナリスタックとの2種類がある。
【0074】たとえば、図15に示すように、(1)H
MF形式のパッケージ”GMbasicExpr2”をロードする
と、ユーザが指定した位置にパッケージ”GMbasicExpr
2”をロードした内容がおかれる。ついで、(2)パッ
ケージスクリプトの実行が行われ、(3)パッケージ”
GMbasicExpr2”内のサブルーチン定義”cresc1”が、パ
ッケージ”GMbasicExpr2”に対応する位置に作成された
ディクショナリ50に格納される。パッケージ内のシー
ケンススクリプトは実行形式にコンパイルしておくが、
まだ実行はしない。図15では、HMF形式のパッケー
ジ”song1”をロードしたときに、そのパッケージスク
リプトが実行されその中のサブルーチン定義”b72vol”
が、パッケージ”song1”に対応する位置に作成された
ディクショナリ51に格納されており、パッケージ”ba
sicExpr1”をロードしたときに、そのパッケージスク
リプトが実行され、サブルーチン定義”cresc1”が、パ
ッケージ”basicExpr1”に対応する位置に作成された
ディクショナリ52に格納されている。ただし、ディク
ショナリスタック”dict. stack”はまだ作成されてい
ない。
【0075】つぎに、HMF形式のデータがロードされ
た状態において、ユーザが音楽演奏データを構成する一
つのシーケンスの内容を参照したときの振る舞いを説明
する。ユーザが、音楽演奏データを構成する一つのシー
ケンスの内容を参照しようとしたときのシーケンス参照
処理を図16ないし図18を参照しながら説明する。な
お、図16はシーケンス参照処理を模式的に示す図であ
り、図17、図18はシーケンス参照処理のフローチャ
ートを示す図である。
【0076】図17(a)に示すシーケンス参照処理の
フローチャートにおいて、シーケンス参照処理がスター
トされると、ステップS10にて図16(a)に示すよ
うにイベントリストLの複製イベントリストL’を作る
処理が行われる。このステップS10の処理が図17
(b)に示すフローチャートに示されており、イベント
リストLの複製作成処理がスタートされると、ステップ
S20にて空の複製イベントリストL’が生成される。
ついで、ステップS21にてイベントリストLにイベン
トが残っているか否かが判断され、残っている場合はY
ES(y)と判断されてステップS22に進みイベント
を一つ複製しイベントリストL’へ登録する。ステップ
S20およびステップS21の処理はイベントがイベン
トリストLに残っている間循環して行われ、イベントが
残っていないときにNO(n)と判断されてイベントリ
ストLの複製作成処理が終了する。
【0077】ステップS10の処理が終了すると、ステ
ップS11にて複製されたイベントリストL’に対して
図16(b)に示すようにシーケンススクリプトを適用
する処理が行われる。このステップS11の処理が図1
7(c)に示すフローチャートに示されており、シーケ
ンススクリプト適用処理がスタートされると、ステップ
S30にてスクリプトに命令が残っているか否かが判断
される。この処理の開始直後には命令が残っているの
で、YES(y)と判断されてステップS31に進み、
命令が一つ実行され、ステップS30に戻る。ステップ
S30とステップS31の処理はスクリプトに命令が残
っている間循環して行われて、命令が1つづつ実行され
ていく。そして、スクリプト内の命令がすべて実行され
ると、ステップS30にてNO(n)と判断されてシー
ケンススクリプト適用処理が終了する。
【0078】ステップS11の処理が終了すると、ステ
ップS12にて複製されたイベントリストL’のパート
リンクが図16(c)に示すように解決される処理が実
行される。このパートリンク処理のフローチャートを図
18(a)に示すが、パートリンク処理がスタートされ
ると、ステップS40にてイベントリストL’にパート
リンクが残っているか否かが判断される。イベントリス
トL’にパートリンクが残っている場合は、YES
(y)と判断されてステップS41に進む。ステップS
41ではリンクすべきパートが所定の順序で探索され、
ステップS42にて対象パートが発見されたと判断
(y)された場合には、ステップS43にてそのパート
の内容が参照される。ついで、ステップS44にて得ら
れたイベントリストの内容をイベントリストL’にマー
ジし、さらにステップS45にて処理したリンクイベン
トを削除して、ステップS40に戻る。
【0079】なお、ステップS42にて対象パートが発
見されないと判断(n)された場合は、ステップS45
にジャンプしてそのリンクイベントが削除される。ま
た、ステップS40ないしステップS45の処理はイベ
ントリストL’にパートリンクが残っている間循環して
実行され、順次パートリンク処理が実行される。そし
て、イベントリストL’に残ったパートリンクがなくな
ると、ステップS40にてNO(n)と判断されてパー
トリンク処理が終了する。
【0080】ステップS12の処理が終了すると、ステ
ップS13にて複製されたイベントリストL’のカーブ
リンクを図16(d)に示すように解決する処理が実行
される。このカーブリンク処理のフローチャートを図1
8(b)に示すが、カーブリンク処理がスタートされる
と、ステップS50にてイベントリストL’にカーブリ
ンクが残っているか否かが判断される。イベントリスト
L’にカーブリンクが残っている場合は、YES(y)
と判断されてステップS51に進む。ステップS51で
はリンクすべきカーブが所定の順序で探索され、ステッ
プS52にて対象カーブが発見されたと判断(y)され
た場合には、ステップS53にてそのリンクのパッケー
ジ指定を確定して、ステップS50に戻る。
【0081】なお、ステップS52にて対象カーブが発
見されないと判断(n)された場合は、ステップS50
にそのまま戻る。また、ステップS50ないしステップ
S53の処理はイベントリストL’にカーブリンクが残
っている間循環して実行され、順次カーブリンク処理が
実行される。そして、イベントリストL’に残ったカー
ブリンクがなくなると、ステップS50にてNO(n)
と判断されてカーブリンク処理が終了する。これによ
り、シーケンス参照処理は終了する。
【0082】ここで、パートリンクおよびカーブリンク
がどのように解決されていくかを、図28を参照して説
明する。図28は、パートシーケンス”synth_track”
から他のパートシーケンス”synth_bridge”へとパート
リンクがはられ、さらにそのパートシーケンス”synth_
bridge”からさらに他のパートシーケンス”synth_1_me
asure”へとパートリンクがはられている状態を示して
いる。また、パートシーケンス”synth_track”からは
カーブシーケンス”synth_total_pb”へとカーブリンク
がはられ、パートシーケンス”synth_bridge”からカー
ブシーケンス”synth_bridge_pb”へとカーブリンクが
はられ、パートシーケンス”synth_1_measure”からカ
ーブシーケンス”synth_pb_1”へとカーブリンクがはら
れている。
【0083】このような状態において、パートシーケン
ス”synth_track”の内容を参照すると、そこにはパー
トリンクイベントが存在するので、図18(a)に示し
たフローチャートにしたがって、リンクすべきパートシ
ーケンスが検索され、見つかったリンク先のパートシー
ケンス”synth_bridge”の内容が参照される。なお、リ
ンクすべきパートシーケンスの検索は、後述するサーチ
パスによって実行される。そして、パートシーケンス”
synth_bridge”の内容を参照すると、そこにもパートリ
ンクイベントが存在するので、リンクすべきパートシー
ケンスが検索され、見つかったリンク先のパートシーケ
ンス”synth_1_measure”の内容が参照される。
【0084】パートシーケンス”synth_1_measure”か
らは、他のパートシーケンスへのリンクがはられていな
いので、この時点で、パートシーケンス”synth_1_meas
ure”の内容が、パートシーケンス”synth_bridge”に
マージされ、パートシーケンス”synth_bridge”内に存
在していたパートリンクイベントは削除される。なお、
パートシーケンス”synth_1_measure”内にはカーブリ
ンクイベントが存在しているので、パートシーケンス”
synth_bridge”内には、このカーブリンクイベントもあ
わせてマージされ、その結果、パートシーケンス”synt
h_bridge”内には2つのカーブリンクイベントが存在す
るようになる。その後、パートシーケンス”synth_brid
ge”の内容がパートシーケンス”synth_track”へとマ
ージされ、パートシーケンス”synth_track”内に存在
していたパートリンクイベントは削除される。
【0085】なお、パートシーケンス”synth_track”
内には、パートシーケンス”synthbridge”内に存在し
ていた2つのカーブリンクイベントもあわせてマージさ
れる。その結果、パートシーケンス”synth_track”内
には、3つのカーブリンクイベントが存在するようにな
る。そして、パートシーケンス”synth_track”内に存
在していたパートリンクイベントは削除されたので、図
18(a)に示すフローチャートの処理は終了する。次
いで、図18(b)に示したフローチャートに従って、
パートシーケンス”synth_track”内に集められた3つ
のカーブリンクイベントが解決される。リンクすべきカ
ーブシーケンスが1つづつ検索され、それぞれのカーブ
シーケンスが確定される。
【0086】カーブシーケンスが確定された後、各カー
ブシーケンスの内容に基づいて実際のイベント、たとえ
ばピッチベンドイベントに展開され、最終的にパートシ
ーケンス”synth_track”内にイベントデータが取り込
まれる。このとき、3つのカーブリンクイベントのう
ち、いずれか2つあるいは3つのカーブリンクイベント
の存在する位置が近接していると、カーブシーケンス同
士が部分的に重なることがある。このように、複数のカ
ーブシーケンスが重なった部分については、後述するよ
うな手法によって合成処理が施され、1つのカーブシー
ケンスが形成される。
【0087】また、カーブリンクイベント自体も、合成
された複数のカーブシーケンスに対応するもののうちの
最も前方に位置するもののみが残され、他のカーブリン
クイベントは削除される。なお、はじめから1つのパー
トシーケンス内に複数のカーブリンクイベントが存在
し、それらカーブリンクイベントによってパートシーケ
ンス内に取り込まれるカーブシーケンス同士が重なる場
合についても、上記と同様に合成される。
【0088】このようなシーケンス参照処理を、図19
に示すパフォーマンスパッケージ”song1”のシーケン
ス“root”の内容が参照されて実行される場合を例にあ
げて、次に説明する。まず、シーケンス参照処理に先立
ち(a)パフォーマンスパッケージ”song1”のシーケ
ンス“root”の内容の要求が入ってくる。ついで、
(b)シーケンス“root”のシーケンススクリプトの実
行が始まる。この実行中に、(c)シーケンススクリプ
ト中にある一時サブルーチン定義“fz”を作成したディ
クショナリスタック”dict. stack”に置く。さらに、
(d)シーケンススクリプトを実行することにより、シ
ーケンス“root”のイベントリストの内容が修飾され
る。
【0089】シーケンススクリプトの実行が終了する
と、(e)イベントリスト中のシーケンスリンクイベン
トの解決が行なわれる。すなわち、参照先のシーケンス
の内容を要求し、返ってきた結果のイベントリストを、
リンクイベントのあった位置にマージする。図示する場
合は、“basicExpr1”内のあるシーケンスの内容が要
求されているとする。図示するように、(f)下位のシ
ーケンスの内容参照が再帰的に深さ優先で進むようにな
る。以上のプロセスで、(g)最終結果のイベントリス
トを得ることができる。一連の参照実行が終ると、デイ
クショナリスタックの”fz”という一時サブルーチン定
義はクリアされる。
【0090】このように再帰的に深さ優先で進むシーケ
ンス内容参照処理のフローチャートを図20に示す。こ
のフローチャートにおいて、シーケンス内容参照処理が
スタートされると、ステップS60にてイベントリスト
の複製を書き換える。ついで、ステップS61にて書き
換え結果をスタックに積み、さらにステップS62にて
他パートシーケンスへのリンクがあるか否かが判断され
る。ここで、他パートシーケンスへのリンクがある場合
は、YES(y)と判断されてステップS63に進み、
対象パートシーケンスの内容が参照される。ついで、ス
テップS64にて参照結果(スタック上)を、自己の書
き換え結果に取り込み、ステップS62に戻る。ステッ
プS62ないしステップS64の処理は、他パートシー
ケンスへのリンクがある間循環して実行され、リンクが
なくなるとNO(n)と判断されてシーケンス内容参照
処理は終了する。
【0091】このシーケンス内容参照処理が、図21
(a)に示すように他パートシーケンスへのリンクを持
つシーケンス群に実行される場合の、スタックの変化を
同図(b)に示す。図21(a)に示すようにシーケン
スAはシーケンスBおよびシーケンスCへのリンクを持
っており、シーケンスBはシーケンスDに、シーケンス
DはシーケンスGおよびシーケンスHへのリンクを持っ
ている。さらに、シーケンスCはシーケンスEおよびシ
ーケンスFへのリンクを持っており、シーケンスFはシ
ーケンスIへのリンクを持っている。
【0092】この場合、図20に示すシーケンス内容参
照処理が実行されると、図21(b)に示すように、シ
ーケンスAの内容が参照され、シーケンスBがスタック
される。ついで、シーケンスBの内容が参照され、シー
ケンスDがスタックされ、さらに、シーケンスDの内容
が参照され、シーケンスGがスタックされる。シーケン
スGはリンクを持っていないので、書き換え結果を下矢
印で示すようにシーケンスDに返す。シーケンスDはさ
らにシーケンスHへのリンクを持っているので、シーケ
ンスHがスタックされる。シーケンスHはリンクを持っ
ていないので、書き換え結果を下矢印で示すようにシー
ケンスDに返す。シーケンスDはこれ以上のリンクを持
っていないので、書き換え結果をシーケンスBに返す。
さらにシーケンスBは書き換え結果をシーケンスAに返
す。このような処理がシーケンスC,E,F,Iにも同
様に行われて、スタックは図21(b)に示すように変
化していく。
【0093】ところで、スクリプト内では、シーケンス
リンクを解決するサブルーチン(システムレベルで提供
されている)を明示的に呼びだすことができる。この場
合、その時点でイベントリスト内のシーケンスリンクが
解決される。同様に、カーブリンクの解決サブルーチン
も呼び出し可能である。これらのサブルーチン呼び出し
を実行すると、スクリプトのその後の部分では、下位シ
ーケンスの内容を処理対象に含めることが可能となる。
【0094】また、スクリプト中でリンクイベントを書
き換えたり削除してしまう記述も可能である。これを実
行した場合、つづくリンク解決では、書き換えたあとの
リンクイベントが処理される。この仕様により、何もス
クリプトを書かないと、上位シーケンスでの表情づけが
下位シーケンスのイベントには及ばないという動作とな
る。したがって、スクリプトを書くことによって、上位
シーケンスでの表情づけを下位シーケンスのイベントに
も及ぼすという動作を実現することができるようにな
る。
【0095】次に、パッケージおよびディクショナリの
サーチパスについて説明する。まず、サーチの必要性に
ついて説明すると、リンクイベントにより参照されるシ
ーケンスは、該リンクイベントが含まれるパッケージ以
外のパッケージ中に存在してもよい。また、スクリプト
の中には、サブルーチンを呼び出すための命令が含まれ
ることが普通であるが、そのサブルーチンの実体がその
スクリプトと同一のパッケージ中に含まれているとは限
らない。そこで、パッケージやサブルーチンのサーチが
必要となる。HMDMのデータ構造では、概念上パッケ
ージを一列に並べて保持している。また、各パッケージ
が定義するサブルーチンは、前記したようにパッケージ
ごとに「ディクショナリ」が用意されてそこに格納され
る。このパッケージおよびディクショナリの並びをサー
チパスとよび、この並び順にパッケージやディクショナ
リをサーチするようにしている。
【0096】また、HMDMのデータ構造では、パッケ
ージおよびディクショナリの順序すなわちサーチパスは
次のように規定されている。1番目は、ディクショナリ
についてはディクショナリスタックであり、つづいて、
2番目はパフォーマンスパッケージに対応するディクシ
ョナリである。また、パッケージについては、1番目が
パフォーマンスパッケージである。この場合、パフォー
マンスパッケージおよびそれらに対応するディクショナ
リは複数存在してもよく、その順序はユーザが自由に変
更することができる。
【0097】ディクショナリの3番目は、プラグインパ
ッケージに対応するディクショナリであり、パッケージ
の2番目はプラグインパッケージである。これらも複数
存在してもよく、その順序はユーザが自由に変更するこ
とができる。サブルーチンをサーチする場合、サーチパ
スにより規定された順にディクショナリをチェックして
いくので同名のサブルーチンが存在する場合、先に見つ
かったサブルーチンが優先される。これにより、サブル
ーチンのオーバライドが実現される。ディクショナリの
4番目は、システムパッケージに対応するディクショナ
リであり、パッケージの3番目はシステムパッケージで
ある。これらは最初からサーチパスの端に組み込まれて
おり、ユーザが位置を変更することはできない。
【0098】図19に示す例では、ディクショナリスタ
ック”dict. stack”、“song1”のパフォーマンスパ
ッケージおよび対応するディクショナリ、”basicExpr
1”のプラグインパッケージおよび対応するディクショ
ナリ、”GMbasicExpr2”のプラグインパッケージおよび
対応するディクショナリ、そして“sys1.00”のシステ
ムパッケージおよび対応するディクショナリという順序
でサーチパスが構成されることになり、リンクイベント
解決時にこの順でシーケンス名がサーチされ、スクリプ
トの実行時にこの順でサブルーチン名がサーチされるこ
とになる。
【0099】次に、このサーチパス探索機構について説
明する。シーケンス名の探索においては、シーケンス名
が単独で現れる場合は、以下の手順で探索し、最初に該
当したものを選択する。 1.属するパッケージの中で、そのシーケンス名を探
す。 2.サーチパスの順序に従い、その次のパッケージに移
ってシーケンス名を探す。 3.最後のパッケージ(システムパッケージ)にもシー
ケンスが見当たらなければ、「シーケンスが見当たらな
い」旨の表示を行う等のしかるべき処置に移る。また、
パッケージ名も組み合わせてシーケンスが指定される場
合は、指定したパッケージの中で、そのシーケンス名を
探しそこに見当たらなければ、「シーケンスが見当たら
ない」旨の表示を行う等のしかるべき処置に移る。
【0100】次に、サブルーチン名の探索において、サ
ブルーチン名が単独で現れる場合は、次のように探索す
る。 1.ディクショナリスタックの中で、そのサブルーチン
名を探す。 2.属するパッケージに対応するテイクショナリの中
で、そのサブルーチン名を探す。 3.サーチパスの順序に従い、次のデイクショナリに移
ってサブルーチン名を探す。 4.最後のディクショナリ(システム)にも見当たらな
ければ、「サブルーチンが見当たらない」旨の表示を行
う等のしかるべき処置に移る。さらに、パッケージ名も
組み合わせてサブルーチン名が指定される場合は、指定
したパッケージの中で、そのサブルーチン名を探す。そ
こに見当たらなければ、「サブルーチンが見当たらな
い」旨の表示を行う等のしかるべき処置に移る。
【0101】つぎに、パッケージの順序によるサブルー
チンのオーバーライドの実現について説明する。プラグ
インパッケージで定義したサブルーチンが、パッケージ
名と組み合わせて指定された場合は、他のパッケージの
同じ名前のサブルーチンと混同されることはない。この
場合は、どのような順序でプラグインパッケージを置い
ても動作に影響はない。そこで、パッケージを明示せず
サブルーチン名だけで指定しておき、同名のサブルーチ
ンを含む別のパッケージをサーチパスの前の方に置くよ
うにすると、そのパッケージを差し込むことにより、別
のサブルーチンを実行させることができる。これにより
オーバーライドを実現することができる。この場合、サ
ーチパス中のパッケージの順序が動作に影響を与えるこ
とになる。
【0102】次に、カーブデータの加算について図22
ないし図26を参照しながら説明する。カーブデータの
加算とは、シーケンスリンクを解決する過程で、下位シ
ーケンス内のカーブデータを上位シーケンスにおいて一
つに合成、集約する機能のことである。例えば、階層を
なす複数のシーケンスのそれぞれで、MIDIピッチベ
ンドという同種のパラメータの時間変化が設定されてい
たとする。このとき、各シーケンスでカーブを多数のM
IDIピッチベンドイベントに展開してそれを取り込
む、という方法では離散イベント同士をミックスするこ
とになり、前記図10の説明において説明したように個
々の変化が正しく加算されないことになる。ここで述べ
るカーブ加算アルゴリズムは、これを正しく処理するた
めのものである。
【0103】まず、図22を参照してカーブデータの構
造を詳細に説明する。カーブAのイベントリストを図2
2(a)にカーブBのイベントリストを同図(c)に示
す。このようにカーブデータは時刻とそのときの値との
組で表され、この組が節点とされて、隣り合う節点の間
は直線で結ばれる。すなわち、カーブAは同図(b)に
示すように、カーブBは同図(d)に示すように折れ線
で表されるようになる。なお、節点は、「時刻の値が同
じか大きくなること」として順序づけられており、カー
ブをたどるときには、時間をさかのぼることはない。
【0104】また、同じ時刻に複数個の点があってもよ
い。これは図22(b)に示すように折れ線の不連続点
を表している。この場合においても点の順序は保存され
る。なお、同じ時刻の点のうち、図22(b)に示すよ
うに最初の点のことを「左値」、最後の点のことを「右
値」と呼ぶ。さらに、同一の時刻に3つ以上の点がある
場合は、最初と最後の点以外の値は無視される。さらに
また、カーブのある時刻をとったとき、多くの場合値は
唯一に定まる。すなわち、一つの節点が存在する時刻な
らその節点の値となり、二つの節点の間の時刻ならば両
者の値を内挿した値となる。また、複数の節点が存在す
る時刻についてだけ、異なりうる左値と右値とが存在す
るようになる。
【0105】このようなカーブデータの加算を行う場合
に、加算される場合の節点の相互関係は図23に示すよ
うに8通りに分類される。この図の(a)(b)に示す
場合は、注目する時刻において一方のカーブだけが節点
とされている場合であり、同図(c)は注目する時刻に
おいて両方のカーブが節点とされている場合であり、同
図(d)(e)は注目する時刻において、一方のカーブ
だけが不連続点とされている場合であり、同図(f)
(g)は注目する時刻において、一方のカーブが不連続
点とされており、他方が節点とされている場合であり、
同図(h)は注目する時刻において両方のカーブが不連
続点とされている場合である。なお、カーブの左端の数
字は注目する時刻での節点数を表している。
【0106】次に、カーブ加算のアルゴリズムを前記カ
ーブAおよびカーブBとを加算することを例に挙げて図
24ないし図26を参照しながら説明する。カーブ加算
アルゴリズムは、図23に示すようないずれの節点の相
互関係があっても、正しく加算が行えるものである。ま
ず、カーブAおよびカーブBのそれぞれについて端の節
点の値が0でない場合は、値0の節点を図24(a)
(c)に示すように付加する。これは、値が規定されて
いない時刻においては、カーブの値を0としているから
である。ついで、カーブAのオリジナルを複製し、複製
したカーブを図25(a)に示すようにカーブA0とす
る。
【0107】次に、カーブAの各節点について、その時
刻のカーブBの値(不連続点の場合は左値をとる。)を
求め、カーブAの節点の値に加算する。ただし、カーブ
Aにおいて同一の時刻に複数の節点があり、さらにカー
ブBにも同一時刻に節点が存在する場合は、カーブAの
最初の接点以外を削除し、最初の節点だけについて加算
を行う。この加算演算が図24(b)のカーブAのイベ
ントリストに示されており、加算量が同図(a)に破線
で示されている。このカーブAのイベントリストにおい
て、たとえば、時刻70における元の値70に加算され
る値64は、カーブBにおける時刻60の右値60と時
刻110における値80を直線補間して求めた値であ
る。同様に、時刻140において加算されている値6
0、および時刻240で加算されている値120も直線
補間により求めた値である。また、カーブBの時刻19
0においては不連続点とされているので、左値100が
カーブAの時刻190の接点に加算されている。
【0108】次に、カーブBの各接点について、カーブ
A0の、その時刻の値(不連続点の場合は右値をと
る。)を求め、カーブBの節点の値に加算する。ただ
し、カーブBにおいて同一の時刻に複数の節点があり、
さらにカーブA0にも同一時刻に節点が存在する場合
は、カーブBの最後の節点以外を削除し、最後の節点だ
けについて加算を行う。この加算演算が図25(d)の
カーブBのイベントリストに示されており、加算量が同
図(c)に破線で示されている。このカーブBのイベン
トリストにおいて、たとえば、時刻60における元の値
70に加算される値73は、カーブA0における時刻1
0の右値40と時刻70における値80を直線補間して
求めた値である。同様に、時刻130において加算され
ている値47、および時刻170で加算されている値1
08、時刻220で加算されている値80も直線補間に
より求めた値である。また、時刻190ではカーブBが
不連続点とされていると共に、同一時刻にカーブA0に
接点があるので、カーブBの左値が削除されると共に、
右値140にカーブAの接点の値140の加算が行われ
ている。
【0109】次に、カーブBの処理のすんだ接点につい
て時刻の順に、修正した図24(a)(b)に示すカー
ブAに追加する。この際、カーブAに同一時刻の接点が
なければ単に追加するようにし、同一時刻に接点がすで
にある場合は、値が異なる場合のみカーブAの接点の後
に右値として挿入する。これにより、図26(a)に示
すようなカーブAとカーブBとを加算した新たなカーブ
を得ることができる。このカーブのイベントリストが同
図(b)に示されている。たとえば、時点110では修
正後のカーブAおよび修正後のカーブBに共に接点があ
るが、その値は同一なのでカーブBの値は挿入されてい
ない。また、時点190でも修正後のカーブAおよび修
正後のカーブBに共に接点があるが、その値が異なる値
とされているので、カーブAの接点の値が左値とされ、
カーブBの接点の値が右値とされている。このようなカ
ーブ加算のアルゴリズムが、カーブリンクの解決時に行
われることにより、正しくカーブデータ同士を加算して
新たなカーブデータを生成することができる。
【0110】次に、既存のSMF再生装置、SMF編集
装置、HMF対応処理装置のそれぞれを用いて、HMF
形式のデータを処理する場合について説明する。従来の
SMF形式の一つのファイルに、一つのHMF形式のパ
ッケージを埋め込むことにより、SMFとHMFとの間
でデータの互換性を有させるようにすることができる。
HMFでは、SMFフォーマット0または1を使用する
が、フォーマット0の場合は、一つのSMFのトラック
の中に、HMFデータを後述するテキスト形式で記述し
たSMFメタイベントを散在させ、それらを用いてHM
F記述を格納する。また、フォーマット1の場合、図2
7(a)に示すように最初のN本のトラックに通常の表
情つきSMFデータを格納し、N+1本目のトラックに
HMFデータをテキスト形式で記述したSMFメタイベ
ントだけをおくことによりHMF記述を格納する。
【0111】このSMFメタイベントをデコードするこ
とにより、HMDMのデータ構造の一つのパッケージを
得ることができ、このパッケージには、たとえば図27
(b)に示すようにパッケージスクリプト32と、複数
のシーケンス21〜24が納められる。各シーケンス2
1〜24には、表情つきのイベントリスト21−1〜2
4−1、および、white化スクリプト21−2〜24−
2と表情づけスクリプト21−3〜24−3の対が納め
られている。white化スクリプト21−2〜24−2
は、それぞれ実行されることにより各々の表情付きイベ
ントリスト21−1〜24−1につけられている表情を
除去してホワイト化(無表情化)するものである。そし
て、表情づけスクリプト21−3〜24−3は、その実
行により表情の除去されたイベントリスト21−1〜2
4−1に所望の表情をつけることができるものである。
【0112】このようにすることで、一般に広く流通し
ている表情つきMIDIデータをそのまま用いてHMF
形式のデータとして利用することができる。従って、新
規に作曲する曲データであれば表情付きイベントリスト
21−1〜24−1とwhite化スクリプト21−2〜2
4−2に替えて、無表情(ホワイト)イベントリストと
してもよい。
【0113】各種処理装置で、このようなHMF形式の
データを内蔵したデータをロードする場合は、つぎのよ
うになる。従来のHMF未対応のSMFプレーヤでHM
F形式のデータを読み込んだ場合、テキスト形式で記述
されたHMFデータのSMFメタイべントはすべて無視
されるので、格納された表情つきSMFデータはそのま
ま再生されるようになる。ただし、HMF記述を読みと
ることはできないので、パラメータを与えて異なる展開
結果を生成することはできない。しかし、HMFデータ
作成の際、あらかじめHMFの展開結果の一例をSMF
部分に格納しておけば、それを再生することはできる。
【0114】HMF対応の処理装置でロードされる場合
は、まず、SMFデータにHMFデータをテキストで記
述したSMFメタイベントが含まれているかどうかを調
べる。SMFメタイベントには該イベントが何のイベン
トであるかを識別するための識別情報が含まれている。
この識別情報に基づいてHMFデータをテキストで記述
したSMFメタイベントの有無を調べる。一つでもその
ようなSMFメタイべントを検出するとHMF形式と判
断し、逆に一つもなければSMF形式と判断する。ロー
ドされたデータがSMF形式と判断されたときは、従来
方式でロードを行なう。すなわち、フォーマット0なら
ば1本のトラックに、フォーマット1ならばN本のトラ
ックに、SMFデータを格納する。また、ロードされた
データがHMF形式と判断された場合は、通常のSMF
データはすべて無視し、含まれているSMFメタイベン
トだけを集め、それらのデコードに入る。この結果、テ
キストで記述されたHMFデータが読み込まれるように
なる。
【0115】HMF未対応のSMF編集装置において
は、イベントリスト画面でSMFメタイベントの内容を
編集することで、原理的にはHMFデータを作成するこ
とができる。しかしながら、作業が繁雑となると共に、
作成した結果をSMF部分へ反映することはできない。
また、SMF編集装置でSMFメタイべントを編集しセ
ーブすることはできるが、その記述内容をSMF部分に
反映させることはできない。反映させるには、いったん
HMF対応処理装置に読み込んでセーブするか、ツール
を使用する必要がある。
【0116】HMF対応処理装置でセーブする場合は、
まず、SMFとの互換をとるために、編集・作成された
HMF全体の内容を評価して、結果をSMF形式でトラ
ックに格納する。パフォーマンスパッケージの場合
は、”root”シーケンスを評価し、一曲分全体がどう演
奏されるかが計算され、SMFとして格納されることに
なる。プラグインパッケージの場合は、”root”シーケ
ンスがないので、SMFとしては空のデータが格納され
ることになる。
【0117】続いて、HMDMの一つのパッケージの内
容をHMF記述形式に変換し、それを複数のSMFメタ
イベントに分割・格納する。なお、複数のメタイベント
に分割するのは、SMFにおいてはメタイベントの最大
長さが256バイトであるという制約があるからであ
る。つまり、256バイトを越えることがないように分
割する。格納するときは、「イベント間の時間+メタイ
ベント」という通常のSMFと同じ形式になるが、「イ
ベント間の時間」については意味を持たないため任意の
値を与えてよい。この場合、オプションによって、通常
のSMF形式のデータだけをセーブするようにしてもよ
い。なお、SMFメタイベントにテキストで記述したH
MFデータを埋め込むのは一例であって、テキストで記
述したHMFデータを別に独立してセーブするようにし
てもよい。
【0118】次に、スクリプトが変更された場合の動作
を説明する。スクリプトはユーザが書き換えることがで
きるが、ユーザがスクリプトを書き換えた場合、システ
ムは新しいスクリプトソースを登録する。必要ならコン
パイルも行なう。そして、パッケージスクリプトが書き
換えられたならばただちに新たなパッケージスクリプト
を実行する。通常パッケージスクリプトにはサブルーチ
ン定義が書かれているので、実行の結果、サブルーチン
が定義し直されることになる。この新しい定義は、対応
するディクショナリに格納される。シーケンススクリプ
トの場合は、実行形式を記憶して終了される。実行形式
はただちには実行されない。次にそのシーケンスの内容
が要求されたとき、はじめて実行されることになる。な
お、コンパイルがエラーとなる場合、実行形式は更新さ
れないが、ソーステキストは保存される。これは、書き
かけのソースの状態でもセーブを可能にするためであ
る。
【0119】ところで、HMFは、あるシーケンスの内
容を参照しようとすると、前記したようにリンク先のシ
ーケンスの内容を再帰的に参照し、最終的な結果を出力
する仕組みになっている。これには大量の計算が必要で
あって、その計算には時間がかかることになる。そこ
で、必要のないシーケンス参照をなるべく行なわない効
率的なシーケンス更新管理手法について説明する。ま
ず、機構として、各シーケンスは「前回の参照の結果」
を保持することにする。また、自分が最近変化したかど
うかのフラグも保持するものとする。次に、シーケンス
更新管理の手順を示す。
【0120】1.あるシーケンスに内容を要求すると、
そのシーケンスは、自分が前回の評価以後何も変わる要
因がないかどうか調べ始める。 2.まず、自分からリンクをはっている全シーケンスに
対し、最新の結果を要求する。すべての子シーケンスが
「私は最近変化していません」という返事を返してきた
場合は、自分のリンクやスクリプトの実行をやり直す必
要はない。この場合は、「私は最近変化していません」
と返事して、前回の結果を返せばよい。 3.一つでも「変化しました」という返事があった場
合、あるいは自分自身が「最近変化した」とわかってい
る場合は、リンクとスクリプト実行をやり直す。この場
合は、「私は最近変化しました」という返事とともに処
理結果を返し、同時に「前回の結果」として記憶してお
く。 4・シーケンスのイベントリストまたはスクリプトが変
更された場合、「自分は最近変化した」というフラグを
立てておく。 以上の手順により、不要な再計算をおさえることができ
る。
【0121】HMFで特徴的な点は、スクリプトの実行
およびリンクの解決は、演奏の進行とはまったく関係が
ないということである。それらは、データモデル内で時
系列MIDIデータを記号的に組み立ててゆく過程で実
行されるのである。すなわち、HMFデータの中のある
シーケンスの内容を参照しようとしたときに、瞬時に実
行されて、結果のMIDIデータ列が得られるのであ
る。HMFデータに対応する処理装置(アプリケーショ
ンソフトであってもよい。)は、HMDM処理部(デー
タ処理部)とシーケンサ部という2つのユニットを備え
ている。また、このシーケンサ部に特徴を持たせ、ol
dとnewという2つのMIDIデータを持てるように
する。そして、一方を演奏しつつ、矛盾なく他方のMI
DIデータへ移行することができるようにする。
【0122】この機能にもとづき、HMF処理装置(ア
プリケーションソフト)は次のように動作する。 1.演奏中に音楽演奏データを変更すると、ただちにH
MDM(データ部)で新しいMIDIデータの生成が始
まる。 2.その間、シーケンサ部は、データ変更前の古いMI
DIデータによる演奏を続けている。 3.HMDMの新データ生成が完了すると、それがシー
ケンサ部へ渡される。 4.シーケンサ部は、古いMIDIデータから、新しい
MIDIデータヘと、演奏を巧妙に切替えていく。たと
えば、クロスフェードする、あるいは、小節線の区切り
において切り替え、切り替えた後は、新しいMIDIデ
ータの演奏を続ける。 このように、演奏しながらデータ変更を行なうと、しば
らくするといつのまにか演奏も変化したものになる。
【0123】HMDMを修正する場合、updateの
計算量はかなり多く、全体の再計算時間が膨大になるお
それがある。そこで、負荷が軽い時にアプリケーション
がバックグラウンドでHMDMのアップデートおよびシ
ーケンサ部のMIDIデータの入れ換えを行なっておく
ようにしてもよい。さらに加えて、例えば、音楽演奏デ
ータのエンディングの部分だけを修正した場合には、前
半の部分のMIDIデータは、当分の間差し替える必要
はないので、余裕のない場合は差し替えはすぐに行なわ
ない。また、HMDMの変更の影響が、限られたMID
Iデータにしか及ばない場合は、すべてのMIDIデー
タの再生成を行なうのでなく、前のMIDIデータに対
する部分修正を施して、計算量を少なくするようにす
る。
【0124】なお、記録媒体にはプラグインパッケージ
だけを納めるようにしてもよい。また、本発明における
HMDMでは、複数のパッケージが一列に並んだ状態で
保持されており、パッケージロード時にパッケージスク
リプトが実行され、その時に作成された各パッケージの
ディクショナリと、シーケンス参照時に作成された一時
ディクショナリとを、スクリプト実行時におけるサブル
ーチンの読み出し時にサーチパスで探索するようにして
いる。そして、最初に見つかった名前のサブルーチンを
実行するようにしているので、スクリプトのパッケージ
にまたがる利用を柔軟に行えるようになる。例えば、パ
ッケージをプラグインすることで、すでに用意されてい
るサブルーチンを同名の別のサブルーチンに差し替える
オーバライドを行うことができる。この場合、シーケン
スもシーケンスの名前でパッケージの並び順に探し出
す。
【0125】なお、以上の説明では時系列イベントデー
タ列を音楽演奏データとして説明したが、本発明はこれ
に限るものではなく、音声データや画像データの時系列
イベントデータとしてもよいものである。この場合、音
声データとすると音楽と同様に音声の音質や音量等を任
意に変化および変更することができる。また、画像デー
タの場合は、シャープネスやビューの変化および変更を
任意に行うことができるようになる。
【0126】
【発明の効果】本発明は以上のように、複数のシーケン
スを格納できるパッケージを用意するようにしている。
このパッケージの記述形式はフォーマットとして規定さ
れているので、パッケージをファイルとして取り扱うこ
とができる。したがって、パッケージを単位として格納
されたシーケンスの構造を他の装置に渡すことができ
る。さらに、シーケンスを収めることができるパッケー
ジ内に単独でパッケージスクリプトをおけるようにして
いる。このパッケージスクリプトが単独で置かれたパッ
ケージはプラグインモジュールとして用いることができ
る。すなわち、パッケージスクリプトにより、イベント
データだけではなく機能定義までも取り込むことができ
るようになる。
【0127】また、シーケンスを収めることのできるパ
ッケージを、一列に並んだ状態で保持するデータモデル
を定義するようにし、パッケージの並び順をリンクイベ
ント解決時の探索順としたので、パッケージの並び順の
変更や、パッケージの削除および挿入によりリンク対象
を変更することができるようになる。このため、イベン
トデータやスクリプトの共有を柔軟に行うことができ
る。さらにまた、サブルーチンやシーケンスをパッケー
ジにまたがって探し出して使用することができ、スクリ
プトのパッケージにまたがる利用を柔軟に行うことがで
きる。
【図面の簡単な説明】
【図1】 本発明の時系列データを含むデータの処理装
置の機能ブロック図の概略である。
【図2】 本発明の時系列データを含むデータの処理装
置のハードの構成のブロック図である。
【図3】 本発明で定義されるHMDM、パッケージ、
シーケンスのデータ構造を示す図である。
【図4】 本発明の時系列データを含むデータの処理装
置におけるHMDMのパッケージのデータ構造を示す図
である。
【図5】 本発明の時系列データを含むデータの処理装
置におけるHMDMのイベントリストとスクリプトによ
り構成されるシーケンスを説明するための図である。
【図6】 本発明の時系列データを含むデータの処理装
置におけるHMFのラベル付きイベントを有するイベン
トリストを説明するための図である。
【図7】 本発明の時系列データを含むデータの処理装
置におけるイベント書き換え処理のフローチャートおよ
びイベントリストの例を示す図である。
【図8】 本発明の時系列データを含むデータの処理装
置におけるHMFのイベントにID番号を付与する機構
を説明するための図である。
【図9】 本発明の時系列データを含むデータの処理装
置におけるHMFのスクリプトとイベントリストとの関
係を説明するための図である。
【図10】 SMFと本発明の時系列データを含むデー
タの処理装置におけるHMFのカーブ情報の違いを説明
するための図である。
【図11】 本発明の時系列データを含むデータの処理
装置におけるHMFにおいてカーブデータを保持する構
造を示す図である。
【図12】 本発明の時系列データを含むデータの処理
装置におけるHMFのカーブデータのピッチベンドづけ
への利用例を示す図である。
【図13】 本発明の時系列データを含むデータの処理
装置におけるHMFのリンク機構を説明するための図で
ある。
【図14】 SMFのトラックモデルと本発明の時系列
データを含むデータの処理装置におけるHMFのリンク
モデルとを対比させて説明するための図である。
【図15】 本発明の時系列データを含むデータの処理
装置におけるHMFのパッケージロード時の振る舞いを
説明するための図である。
【図16】 本発明の時系列データを含むデータの処理
装置におけるシーケンス参照処理を説明するための図で
ある。
【図17】 本発明の時系列データを含むデータの処理
装置におけるシーケンス参照処理のフローチャートを示
す図である。
【図18】 本発明の時系列データを含むデータの処理
装置におけるシーケンス参照処理のフローチャートを示
す図である。
【図19】 本発明の時系列データを含むデータの処理
装置における再帰的なシーケンスの内容参照時の振る舞
いを説明するための図である。
【図20】 本発明の時系列データを含むデータの処理
装置における再帰的なシーケンスの内容参照処理のフロ
ーチャートを示す図である。
【図21】 本発明の時系列データを含むデータの処理
装置における再帰的なシーケンスの内容参照処理を説明
するための図である。
【図22】 本発明の時系列データを含むデータの処理
装置におけるカーブデータの加算を説明するための図の
その1である。
【図23】 本発明の時系列データを含むデータの処理
装置におけるカーブデータの加算を説明するための図の
その2である。
【図24】 本発明の時系列データを含むデータの処理
装置におけるカーブデータの加算を説明するための図の
その3である。
【図25】 本発明の時系列データを含むデータの処理
装置におけるカーブデータの加算を説明するための図の
その4である。
【図26】 本発明の時系列データを含むデータの処理
装置におけるカーブデータの加算を説明するための図の
その5である。
【図27】 本発明の時系列データを含む処理装置にお
けるHMF形式のデータとSMF形式のデータとの互換
性の説明をするための図である。
【図28】 本発明の時系列データを含む処理装置にお
けるパートリンクおよびカーブリンクの解決態様を説明
をするための図である。
【符号の説明】
1 処理装置A、1−1 バッファメモリ、1−2 エ
ンコーダ、2 処理装置B、2−1 デコーダ、2−2
バッファメモリ、2−3 イベントデータ/スクリプ
ト分離部、2−4 イベントデータ書き換え部、2−5
スクリプト解釈部、2−6 出力部、3 データ展開
部、4 記録媒体、5 MIDI音源、6サウンドシス
テム、10 パフォーマンスパッケージ、11,12
プラグインパッケージ、13 システムパッケージ、1
5,15−1,16,17 カーブデータのシーケン
ス、20,21,22,23,24 シーケンス、21
−1〜24−1 表情つきイベントリスト、21−2〜
24−2 white化スクリプト、21−3〜24−3
表情づけスクリプト、30 イベントリスト、31シー
ケンススクリプト、32 パッケージスクリプト、40
IDマネージャ、50,51,52 ディクショナ
リ、61 CPU、62 ROM、63 RAM、64
タイマ、65 HDD、66 FDD、67 スイッ
チ、68 スイッチ検出回路、69 表示回路、70
CD−ROM、71 MIDI I/F、72 他のM
IDI機器、73 通信インターフェース、74 通信
ネットワーク、75 サーバコンピュータ

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 時系列イベントデータ列と該時系列イ
    ベントデータ列を書き換える書き換え手順を示すシーケ
    ンススクリプトとで構成されたシーケンスが格納される
    と共に、単独でおかれるパッケージスクリプトが格納さ
    れるパッケージが供給され、 パッケージがロードされる際、前記パッケージスクリプ
    トを実行するパッケージスクリプト実行手段と、前記シ
    ーケンスが参照される際に、前記シーケンスクリプトを
    実行して、前記時系列イベントデータ列を書き換えるシ
    ーケンススクリプト実行手段とを備えることを特徴とす
    る時系列イベントデータを含むデータの処理装置。
  2. 【請求項2】 前記シーケンスを収めることができる
    パッケージが一列に並んだ状態で保持されると共に、該
    パッケージの探索順序がその配置位置とされたデータモ
    デルが定義されており、 前記時系列イベントデータ中には、他の時系列イベント
    データ列を参照し、前記時系列イベントデータ中に前記
    他の時系列イベントデータ列を取り込むためのリンクイ
    ベントが含まれており、 前記リンクイベントに応じて、前記他の時系列イベント
    データ列を参照する際に、前記他のシーケンスが収めら
    れたパッケージの探索を、前記探索順序で行う探索手段
    を備えることを特徴とする請求項1記載の時系列イベン
    トデータを含むデータの処理装置。
  3. 【請求項3】 前記シーケンスを収めることができる
    パッケージが一列に並んだ状態で保持されると共に、該
    パッケージの探索順序がその配置位置とされたデータモ
    デルが定義されており、 前記パッケージスクリプトにはサブルーチン定義が存在
    可能であると共に、前記パッケージスクリプトおよびシ
    ーケンススクリプトの少なくとも一方にはサブルーチン
    呼び出し命令が存在可能であり、 前記各パッケージに対応して設けられ、該パッケージの
    パッケージスクリプト中に存在するサブルーチン定義に
    よって生成されたサブルーチンを保持するためのディク
    ショナリと、 前記サブルーチン呼び出し命令に応じて、対応するサブ
    ルーチンを呼び出す際に、前記サブルーチンが保持され
    たディクショナリの探索を、前記パッケージの探索順序
    で行う探索手段を備えることを特徴とする請求項1記載
    の時系列イベントデータを含むデータの処理装置。
  4. 【請求項4】 前記データモデルにおいて、前記パッ
    ケージの配置位置を任意に変更、あるいは前記パッケー
    ジの削除、挿入を任意に行うことができるパッケージ操
    作手段を備えることを特徴とする請求項2あるいは請求
    項3記載の時系列イベントデータを含むデータの処理装
    置。
  5. 【請求項5】 時系列イベントデータ列と該時系列イ
    ベントデータ列を書き換える書き換え手順を示すシーケ
    ンススクリプトとで構成されたシーケンスが格納される
    と共に、単独でおかれるパッケージスクリプトが格納さ
    れるパッケージを処理する方法であって、 前記パッケージがロードされる際、前記パッケージスク
    リプトを実行するステップと、 前記シーケンスが参照される際に、前記シーケンスクリ
    プトを実行して前記時系列イベントデータ列を書き換え
    るステップとを備えることを特徴とする時系列イベント
    データを含むデータの処理方法。
  6. 【請求項6】 前記シーケンスを収めることができる
    パッケージが一列に並んだ状態で保持されると共に、該
    パッケージの探索順序がその配置位置とされたデータモ
    デルが定義されており、 前記時系列イベントデータ中には、他の時系列イベント
    データ列を参照し、前記時系列イベントデータ中に前記
    他の時系列イベントデータ列を取り込むためのリンクイ
    ベントが含まれており、 前記リンクイベントに応じて、前記他の時系列イベント
    データ列を参照する際に、当該他のシーケンスが収めら
    れたパッケージの探索を、前記探索順序で行うステップ
    を備えることを特徴とする請求項5記載の時系列イベン
    トデータを含むデータの処理方法。
  7. 【請求項7】 前記シーケンスを収めることができる
    パッケージが一列に並んだ状態で保持されると共に、該
    パッケージの探索順序がその配置位置とされたデータモ
    デルが定義されており、 前記パッケージスクリプトにはサブルーチン定義が存在
    可能であると共に、前記パッケージスクリプトおよびシ
    ーケンススクリプトの少なくとも一方にはサブルーチン
    呼び出し命令が存在可能とされており、 前記各パッケージに対応して、該パッケージのパッケー
    ジスクリプト中に存在するサブルーチン定義によって生
    成されたサブルーチンを保持するためのディクショナリ
    が設けられており、 前記サブルーチン呼び出し命令に応じて対応するサブル
    ーチンを呼び出す際に、当該サブルーチンが保持されて
    いるディクショナリの探索を、前記パッケージの探索順
    序で行うステップを備えることを特徴とする請求項5記
    載の時系列イベントデータを含むデータの処理方法。
  8. 【請求項8】 前記データモデルにおいて、前記パッ
    ケージの配置位置を任意に変更すること、あるいは、前
    記パッケージの削除、挿入を任意に行うことができるよ
    うになされていることを特徴とする請求項6あるいは請
    求項7記載の時系列イベントデータを含むデータの処理
    方法。
  9. 【請求項9】 時系列イベントデータ列と該時系列イ
    ベントデータ列を書き換える書き換え手順を示すシーケ
    ンススクリプトとで構成されたシーケンスが格納される
    と共に、単独でおかれるパッケージスクリプトが格納さ
    れるパッケージを処理装置に処理させるためのプログラ
    ムが記録された記録媒体であって、 該プログラムは、前記処理装置に、少なくとも、 前記パッケージがロードされる際、前記パッケージスク
    リプトを実行する機能と、 前記シーケンスが参照される際に、前記シーケンスクリ
    プトを実行して前記時系列イベントデータ列を書き換え
    る機能とを実行させるようになされていることを特徴と
    する時系列イベントデータ処理用プログラムが記録され
    た記録媒体。
  10. 【請求項10】 前記シーケンスを収めることができ
    るパッケージが一列に並んだ状態で保持されると共に、
    該パッケージの探索順序がその配置位置とされたデータ
    モデルが定義されており、 前記時系列イベントデータ中には、他の時系列イベント
    データ列を参照し、前記時系列イベントデータ中に前記
    他の時系列イベントデータ列を取り込むためのリンクイ
    ベントが含まれており、 前記プログラムは、前記処理装置に、前記リンクイベン
    トに応じて前記他の時系列イベントデータ列を参照する
    際に、当該他のシーケンスが収められたパッケージの探
    索を、前記探索順序で行う機能を実行させるようになさ
    れていることを特徴とする請求項9記載の時系列イベン
    トデータ処理用プログラムが記録された記録媒体。
  11. 【請求項11】 前記シーケンスを収めることができ
    るパッケージが一列に並んだ状態で保持されると共に、
    該パッケージの探索順序がその配置位置とされたデータ
    モデルが定義されており、 前記パッケージスクリプトにはサブルーチン定義が存在
    可能であると共に、前記パッケージスクリプトおよびシ
    ーケンススクリプトの少なくとも一方にはサブルーチン
    呼び出し命令が存在可能とされており、 前記各パッケージに対応して、該パッケージのパッケー
    ジスクリプト中に存在するサブルーチン定義によって生
    成されたサブルーチンを保持するためのディクショナリ
    が設けられており、 前記プログラムは、前記処理装置に、前記サブルーチン
    呼び出し命令に応じて対応するサブルーチンを呼び出す
    際に、当該サブルーチンが保持されているディクショナ
    リの探索を、前記パッケージの探索順序で行う機能を実
    行させるようになされていることを特徴とする請求項9
    記載の時系列イベントデータ処理用プログラムが記録さ
    れた記録媒体。
  12. 【請求項12】 前記データモデルにおいて、前記パ
    ッケージの配置位置を任意に変更すること、あるいは、
    前記パッケージの削除、挿入を任意に行うことができる
    ようになされていることを特徴とする請求項10あるい
    は請求項11記載の時系列イベントデータ処理用プログ
    ラムが記録された記録媒体。
  13. 【請求項13】 シーケンスの参照時に実行されるシ
    ーケンススクリプトにより書き換えられる時系列イベン
    トデータ列と、該時系列イベントデータ列を書き換える
    書き換え手順を示すシーケンススクリプトとで構成され
    たシーケンスが格納されると共に、単独でおくことがで
    きるパッケージスクリプトが格納されるパッケージが記
    録されていることを特徴とする時系列イベントデータを
    含むデータが記録された記録媒体。
JP22298997A 1996-08-09 1997-08-06 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体 Expired - Fee Related JP3823465B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22298997A JP3823465B2 (ja) 1996-08-09 1997-08-06 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP22614796 1996-08-09
JP8-226147 1996-08-09
JP22298997A JP3823465B2 (ja) 1996-08-09 1997-08-06 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体

Publications (2)

Publication Number Publication Date
JPH10111685A true JPH10111685A (ja) 1998-04-28
JP3823465B2 JP3823465B2 (ja) 2006-09-20

Family

ID=26525203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22298997A Expired - Fee Related JP3823465B2 (ja) 1996-08-09 1997-08-06 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体

Country Status (1)

Country Link
JP (1) JP3823465B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7004632B2 (en) * 2003-03-31 2006-02-28 The Glad Products Company Ventable storage bag

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7004632B2 (en) * 2003-03-31 2006-02-28 The Glad Products Company Ventable storage bag

Also Published As

Publication number Publication date
JP3823465B2 (ja) 2006-09-20

Similar Documents

Publication Publication Date Title
US6169242B1 (en) Track-based music performance architecture
JP3061906B2 (ja) Midiデータファイルの処理システム及び方法
US6449661B1 (en) Apparatus for processing hyper media data formed of events and script
US6034314A (en) Automatic performance data conversion system
US6138272A (en) GDMO translator, method of GDMO translation, and recording medium containing program for GDMO translator
Laurson et al. PWGLSynth: A visual synthesis language for virtual instrument design and control
JP2003058150A (ja) 電子音楽装置及びプログラム
JP2000221968A (ja) 自動作曲装置および記憶媒体
US6704928B1 (en) Relocation format for linking
JP2007310449A (ja) ソフトウェア/ハードウェア協調設計のためのモデル生成プログラム、およびモデル生成方法
JP3823465B2 (ja) 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体
JP3823464B2 (ja) 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体
US6956161B2 (en) Musical performance data search system
JP3823463B2 (ja) 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体
JP3823466B2 (ja) 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体
JP3508494B2 (ja) 自動演奏データ変換システム及びプログラムを記録した媒体
JPH10320212A (ja) キャッシュ向け最適化方法
JP3531507B2 (ja) 楽曲生成装置および楽曲生成プログラムを記録したコンピュータで読み取り可能な記録媒体
JP2006293436A (ja) プログラムコード生成装置および生成方法
JP4311327B2 (ja) ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
JP2006178013A (ja) データベース作成装置及び方法
JP5839156B2 (ja) 楽音信号発生装置
JP3460524B2 (ja) 曲データ加工方法、加工後曲データ再生方法および記憶媒体
JP5167878B2 (ja) 電子音楽装置及びプログラム
JP3489236B2 (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: 20051118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060515

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: 20060606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060619

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: 20090707

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100707

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100707

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110707

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110707

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120707

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees