(57)【特許請求の範囲】
【請求項１】
オーディオデータ処理システム上で実行されるプログラムによってアクセスされる音楽サンプルデータをストアし、前記データを再生してオーディオ出力を生成する方法であって、
前記方法は、
メモリ内に所定フォーマット構造のデータをストアするステップと、アーティキュレーションインストラクションを用いて前記データを処理することによって、前記所定フォーマット構造のデータからオーディオ出力を生成するステップとを備えており、
前記所定フォーマット構造のデータが、
前記プログラムによって使用される情報と、
プリセットレベルの情報を含む少なくとも１つのプリセットであって、前記プリセットレベルの情報がインスツルメントレベルの情報を含むインスツルメントを参照し、前記インスツルメントレベルの特徴を特定する１つ以上のアーティキュレーションパラメータを選択的に含んでいるプリセット部と、
前記プリセットの各プリセットレベルの情報によって参照されるインスツルメントレベルの情報を含む少なくとも１つのインスツルメントであって、各インスツルメントについてのインスツルメントレベルの情報が、オーディオサンプルを参照し、前記インスツルメントレベルの特徴を特定する１つ以上のアーティキュレーションパラメータを選択的に含んでいるインスツルメントとを含み、
前記アーティキュレーションパラメータのそれぞれが、オーディオサンプルを作成し演奏するためのオーディオの物理的な特性に関係する単位（ユニット）であって、特定のマシンに無関係である単位（ユニット）で特定されており、
前記単位（ユニット）の少なくとも１つは、付加的な単位（ユニット）であり、
前記付加的な単位（ユニット）は、与えられたアーティキュレーションパラメータの異なる値が前記付加的な単位（ユニット）で測定される同じ量によって変更されるとき、与えられたアーティキュレーションパラメータの変化の程度が同じであるように選定され、
オーディオ出力を生成するステップは、前記インスツルメントレベルのアーティキュレーションパラメータ及び前記プリセットレベルのアーティキュレーションパラメータに基づいてオーディオ出力を生成することを含み、
前記アーティキュレーションインストラクションは、少なくとも１つのアーティキュレーションパラメータと任意数の選択的なモジュレータパラメータとを特定しており、
前記モジュレータパラメータが、
前記モジュレータパラメータと関係する第１情報ソースを特定する第１ソースエニューメレータと、
前記モジュレータパラメータと関係する前記ジェネレータパラメータの一つを特定するジェネレータエニューメレータと、
前記第１ソースエニューメレータが前記一つのジェネレータパラメータに影響を与える度合いを変化させるための第２情報ソースを特定する第２ソースエニューメレータと、
前記第２ソースエニューメレータが前記第１ソースエニューメレータに影響を与える度合いを特定する数値と、
前記第１ソースエニューメレータに関する変形操作を特定するトランスフォームエニューメレータとを備え、
前記オーディオ出力を生成するステップは、前記モジュレータパラメータと関連するエニュメレータに基づいて前記音楽サンプルデータを変調することを含んでいることを特徴とする方法。
【請求項２】
さらに、１つのブロックのデータとして複数の前記オーディオサンプルをストアするステップを備えており、
前記データが、デジタル化されたオーディオの１つ以上のデータセグメントと、
前記デジタル化されたオーディオセグメントと関係するサンプルレートと、
前記デジタル化されたオーディオセグメントのそれぞれと関係するオリジナルキーと、
前記オリジナルキーと関係するピッチ修正の情報を有していることを特徴とする請求項１記載の方法。
【請求項３】
前記オーディオサンプルがステレオオーディオサンプルを備えており前記各ステレオオーディオサンプルが対となる他方のステレオオーディオサンプルを含む第２のブロックのデータに対するポインタを含んだ一つのブロックのデータであることを特徴とする請求項１に記載の方法。
【請求項４】
前記オーディオサンプルの少なくとも１つがループスタートポイントとループエンドポイントとを備え、さらに、前記ループスタートポイントを取り囲む最近接データポイントのそれぞれがループエンドポイントとを取り囲む対応する最近接データポイントの値とほぼ同一となるようにさせるステップをさらに備えていることを特徴とする請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
発明の背景
本発明は、ディジタルオーディオデータの使用に関し、特にサンプルベースの音楽の音データを記憶するためのフォーマットに関する。
【０００２】
電子的音楽シンセサイザーは、1960年代の初期に多くの個人により同時に発明され、最も著名なのはロバート・ムーグ及びドナルド・ブクラである。1970年代後期にはコンピュータ制御がポピュラーになっていたが、1960年代及び1970年代のシンセサイザーは、主としてアナログであった。
【０００３】
VLSI及びディジタル信号処理（DSP）により可能となった消費者電子製品のために、1980年代初期には、シンセサイザーの音発生用発振器に使用する固定的一サイクル波形をディジタル化波形で置き換えることが実用的になった。この発展は２つの径路に分岐していった。職業的音楽社会では、Ｅ-muシステムのエミュレータラインとして著名な「サンプルベース音楽シンセサイザー」のラインに追従している。これらの楽器は、自然音の完全な記録を再生し、キーボード範囲に移調し、エンベロープやフィルタ及び増幅器により適当に変調する大規模メモリを備えている。これに対して、低価格の個人用コンピュータ社会では、小規模メモリを使用し、記憶した波形をダイナミックに変えることにより、合成又はコンピュータ音の音色変化を生成させるようにした「波テーブル」対応に追従している。
【０００４】
1980年代には、周波数変調（FM）を使用する低価格音楽合成技術が、最初は職業音楽社会において、後にはPCに移るような形で普遍的になってきた。FMは低価格で高度に融通性のある技術であったが、サンプルベースの合成におけるリアリズムにはマッチできず、職業的スタジオにおいては、究極的にはサンプルベースの手法に代わられることとなった。
【０００５】
同じ時間フレームの間に、楽器用ディジタルインターフェース（MIDI)標準が考案され、職業的音楽社会全体において楽器性能のリアルタイム制御として受け入れられた。それ以来、MIDIはPCマルチメディア産業においても標準となった。
【０００６】
職業的用途のサンプルベースのシンセサイザーは、1990年代初期には、その能力をDSPにまで拡げることとなった。メモリの価格低下は、波テーブル手法にサンプル音を使用する能力を与えるようになり、直ぐに、波テーブル技術とサンプル音合成は同義になった。90年代中頃には、波テーブル合成は、大量市場製品に採用するのに十分なほど低廉価格になった。これらの波テーブル合成チップは、非常に良好な品質の音楽合成を汎用的な価格で提供できるようにし、現在では多くの業者から入手することができる。これらチップの多くはリードオンリーメモリ（ROM）に記憶されたサンプルすなわち波テーブルにより作動するものであるが、任意のサンプルをRAMメモリにダウンロードできるものは僅かである。
【０００７】
楽器ディジタルインターフェース（MIDI）言語は、PC産業において音楽スコアを表すための標準となった。MIDIは、音楽スコアの各ラインがプリセットと呼ばれる異なる楽器を制御するのを可能にする。MIDI標準の汎用MIDIエキステンションは、多数の通常使用される楽器に対応して128のプリセットからなる組を確立する。
【０００８】
汎用MIDIは、作曲家に一定のセットの楽器を与えるものであるが、これら楽器が生成する音の性質や品質について保証を与えるものではなく、使用できる基礎音についてさらにバライアティを得る方法を与えるものでもない。種々の楽器製造業者が、プリセットの組により多くのバリエーションを与えるために、汎用MIDIのエキステンションを製造した。しかし、究極的な融通性は、基本サンプルについてダウンロード可能なディジタルオーディオフアイルを使用することによってのみえられることは明らかである。
【０００９】
汎用MIDI標準は、MIDI作曲において、作曲家が、歌を再生でき、音楽が種々の合成プラットフォームで許容できる程度に再生できること、の合理的な期待を持つことができるような方法で利用可能な楽器を定義する試みであった。これは明らかに、意欲的なゴールであり、初期のPCシンセサイザーの２人用FM合成チップからサンプル音及び「波テーブル」合成、及び「物理的モデル化」合成においてさえも、非常に多くの技術と可能性が含まれている。
【００１０】
音楽家がMIDI楽器のキーボードを押すと、複雑なプロセスが開始される。キーを押すことは、特定の時点で生じるキー番号と「速度」として単にコード化されるだけである。しかし、生成された音の性質を表すのには、他に多くのパラメーターがある。MIDI「チャンネル」又は音のキーボードの１６の可能性の各々が、それぞれの時点での特定の群及びプリセットに組み合わされており、演奏すべきノートの性質を表す。さらに、各MIDIチャンネルは又、MIDI「連続コントローラー」の形態の種々のパラメーターを有し、これらがある意味で音を変える。特定のプリセットを著作した音デザイナーは、これらの要因のすべてがどのようにして生成される音に影響するか、を決定する。
【００１１】
音デザイナーは、そのプリセットについての興味ある音色を生成するために、種々の技術を使用する。異なるキーは、合成パラメーターと演奏されるサンプルの両方の意味において、全く異なるイベントのシーケンスをトリガする。２つの特に著名な技術は層状化及びマルチサンプリングと呼ばれるものである。マルチサンプリングは、同じプリセット内の異なるキーに種々のディジタルサンプルを充てるものである。層状化を使用すると、一回のキーの押し込みが、多数のサンプルの演奏を生じさせることになる。
【００１２】
1993年に、E-muシステムズは、サンプルベースの楽器においてダウンロード可能な音の単一の汎用標準を確立することが重要であることを認識した。マルチメディアオーディオ市場が急激に成長したので、このような標準が必要になった。E-muは、解決策として、SoundFont（登録商標）1.0オーディオフォーマットを考案した。（SoundFontはE-muシステムズインコーポレーテッドの登録商標である。）SoundFont1.0オーディオフォーマットは、Creative Technology Sound-Blaster AWE32製品においてEMU8000シンセサイザーエンジンを使用する形で最初に導入された。
【００１３】
SoundFontオーディオフォーマットは、波テーブル（サンプリング）合成における問題に特に対応するように設計されている。このSoundFontオーディオフォーマットは、楽器サンプル自体を表すディジタルオーディオデータを含むだけでなく、このディジタルオーディオを構築するのに必要な合成情報も含む点で従来のディジタルオーディオファイルフォーマットとは異なる。SoundFontオーディオフォーマットの群は、各々がMIDIプリセットに組み合わされた音楽キーボードの組を表す。音の各MIDI「プリセット」すなわちキーボードは、該SoundFontオーディオフォーマット内に含まれる一又はそれ以上の適切なサンプルのディジタルオーディオ再生を生じさせる。この音がMIDIキーオンコマンドによりトリガされるとき、該音は又、ノート番号、速度、及び適用できる連続コントローラーのMIDIパラメーターによって適切に制御される。SoundFontオーディオフォーマットの特異さの多くは、このアーティキュレーションデータが処理される手法にある。
【００１４】
SoundFontオーディオフォーマットは、PC産業において使用されている標準リソースインターチェンジファイルフォーマット（RIFF）の「チャック」概念を使用するようにフォーマットされている。この標準フォーマットシェルを使用することで、SoundFontオーディオフォーマットには容易に理解できる階層レベルが備えられる。
【００１５】
SoundFontオーディオフォーマットは、単一のSoundFontオーディオフォーマット群を含む。SoundFontオーディオフォーマット群は、一又はそれ以上のMIDIプセットの集合からなり、各々が独自のMIDIプリセット番号及び群番号を持っている。２つの別々のファイルからのSoundFontオーディオフォーマット群は、適切なプリセット識別コンフリクトを解くことが求められる抵当なソフトウエアによってのみ組み合わせることができる。MIDI群番号が含まれているので、SoundFontオーディオフォーマット群は、多数のMIDI群からのプリセットを含むことができる。
【００１６】
SoundFontオーディオフォーマット群は、多数の情報ストリングを含み、これらには、該群が関連するSoundFontオーディオフォーマットリビジョンレベル、該群が参照する音ROM、生成日、著作者、著作権の主張、ユーザーコメントストリングが含まれる。
【００１７】
SoundFontオーディオフォーマット群内の各MIDIプリセットは、独特の名前、MIDIプリセット番号及びMIDI群番号が付けられるMIDIプリセットは、音とキーボードキーの対応を表し、いずれかのMIDIチャンネルのMIDIキーオンイベントは、問題のMIDIチャンネルに生じる最も新しいMIDIプリセット変更及びMIDI群変更による、一つ、そして只一つのMIDIプリセットを指すものである。
【００１８】
SoundFontオーディオフォーマット群内の各MIDIプリセットは、任意のグローバルプセットパラメーターリスト及び一又はそれ以上のプリセット層からなる。全地球的プセットパラメーターリストは、プリセット層パラメーターのデフォルト値を含む。プリセット層は、該プリセット層の適用されるキー及び速度範囲と、プリセット層パラメーターのリストと、楽器の表示とを含む。
【００１９】
各楽器は、任意の全地球的プセットパラメーターリストと一又はそれ以上の楽器スプリットを含む。全地球的プセットパラメーターリストは、楽器層パラメーターのデフォルト値を含む。各楽器スプリットは、該楽器スプリットの適用できるキー及び速度範囲と、楽器スプリットパラメーターリスト及びサンプルの表示を含む。該楽器スプリットパラメーターリストと、いずれかのデフォルト値は、ノートのアーティキュレーションを記述するパラメーターの絶対値を含む。
【００２０】
各サンプルは、サンプルデータの再生に適切なサンプルパラメーター及びサンプルパラメーター自体へのポインターを含む。
【００２１】
（発明の概要）
本発明は、サウンド・サンプルと、サウンド・サンプルに対してなされる変更を決定する調音命令の組合せを用いてインストルメントが記載されるようなオーディオ・データ・フォーマットを提供する。インストルメントは、インストルメント・レベルで調音命令を変更することができる更なる調音命令供給すべくユーザ指定することができるプリセットを有している第２の層を伴う、第１の、初期層を形成する。調音命令は、種々のパラメータを用いて特定される。本発明は、パラメータの全てが物理現象に関するユニットで特定される、それゆえにオーディオ・サンプルを生成または演奏するための特定の装置に拘束されないようなフォーマットを提供する。
【００２２】
調音命令は、ジェネレータ及びモジュレータを含むのが好ましい。ジェネレータは、調音パラメータであり、モジュレータは、リアルタイム信号（即ち、ユーザ入力コード）とジェネレータの間の接続を供給する。ジェネレータ及びモジュレータの両方は、パラメータの型式である。
【００２３】
本発明の更なる形態は、パラメータ・ユニットが付加的なものであるということである。これは、付加的な単位（ユニット）で特定された量がパラメータの二つの異なる値に加えられる場合に、その基礎を成している物理値への影響が比例するということを意味する。特に、パーセンテージまたは対数に関連する単位（ユニット）は、しばしばこの特性を有する。ある一定の新しいユニットは、ここのおいてパラメータ・ユニットとして用いられる時間の対数量である“タイム・センツ（time cents）”のような、これを収容すべく生成される。
【００２４】
物理現象に関連しかつ特定の装置に関連しないパラメータ・ユニットの使用は、オーディオ・データ・フォーマットを小型化して、変更なしでそれを装置間で転送しかつ異なる人々によって用いることができる。パラメータ・ユニットの付加的な特質は、そのようなパラメータ・ユニットで表現される基礎を成す楽譜における音色の簡略化された編集または変更を許容する。それゆえに、プリセット・レベルで広域な調整（global adjustments）を行う機能を伴って、特定のインストルメント設定を個別に調整することの必要性がなくなる。
【００２５】
本発明のモジュレータは、それを付加的なフォーマットにマップするためにリアルタイム・ソースを変形させるエニュメレータ（enumerator）を含んでいる、４つのエニュメレータで特定される。各エニュメレータは、（１）それが適用されるジェネレータを識別するジェネレータ・エニュメレータ、（２）ジェネレータを変更すめに用いられるソースを識別するエニュメレータ、（３）それを付加的な形態にすべくソースを変更するための変形エニュメレータ、（４）モジュレータがジェネレータに影響を及ぼす程度を示す量、及び（５）どの位の第２のソースが量を変調するかを示すソース量エニュメレータを用いて特定される。
【００２６】
また、本発明は、オーディオ・サンプルに対するピッチ情報が、あらゆるオリジナル・チューニング訂正と共に、オリジナル・サンプル・レートだけでなく、サンプルを生成するために用いられるオリジナル・キーも記憶することによって小型化されかつ編集可能であるということを確実にする。
本発明は、また、そのメートをポイントするステレオ・オーディオ・サンプルにおいてタグを含むフォーマットを提供する。これは、サンプルが用いられるようなインストルメントへの参照を必要としないで編集することを許容する。
【００２７】
本発明の目的及び利点の更なる理解について、添付した図面に関する後述の説明を参照すべきである。
【００２８】
（実施例）
シンセサイザー及びコンピュータ
図１は、そのメモリに本発明によるオーディオ・データ構造を組み込む一般的なミュージック・シンセサイザー１０を示す。シンセサイザーは、それぞれを、例えば、データ・メモリにおけるサウンド・サンプルによって表される特定のインストルメントの異なる音符（note）に割り当てることができる、多数のキー１２を含む。記憶された音符は、例えば、キーが押し下げられた程度及びそれが押し下げられたまま保持された時間によって、リアルタイムで変更することができる。また、他の入力も、音符を変調しうる、変調ホイール１４及び１６のような、変調データを供給する。
【００２９】
図２Ａは、内部サウンドボードを有することができるパーソナル・コンピュータ１８を示す。図２Ｂに示す、メモリ・ディスク２０は、本発明によるオーディオ・データ・サンプルを組み込み、コンピュータ１８にロードすることができる。コンピュータ１８またはシンセサイザー１０のいずれも、サウンド・サンプルを生成し、それらを編集し、それらを演奏するために、またはあらゆる組合せに用いることができる。
【００３０】
オーディオサンプル・モディファイアの基本エレメント
図３は、メモリ内の代表的なオーディオサンプルの構造の図を示している。このオーディオサンプルは、実際のサウンドをレコードし、それをデジタル化したフォーマットで記憶することによって、あるいは、コンピュータプログラムの制御の下で直接デジタル表現を生成することによって、サウンドを合成（シンセサイズ）することによって、作られる。そのオーディオサンプルの基本的な特徴のいくつかと、如何にしてジェネレータ及びモジュレータを用いてオーディオサンプルがアーティキュレートされるのかを理解することが、本発明を理解するのに役立つ。オーディオサンプルは、一般に容認された一定の特性を有し、これらの特性は、別々にモディファイされるサンプルの特徴を識別するのに用いられる。基本的に、サウンドサンプルは振幅とピッチの両方を含む。振幅は、サウンドの大きさであり、他方、ピッチは波長又は周波数である。オーディオサンプルは、振幅とピッチの両方についてのエンベロープをもつことができる。いくつかの代表的なエンベロープが図４Ａ及び図４Ｂに示されている。エンベロープの４つの特徴は、以下の通り定義される。
アタック
これは、サウンドがピーク値に達するのにかかる時間である。これは、変化のレートとして測定されて、サウンドが遅いアタックあるいは早いアタックを有することとなる。
ディケイ
これは、サウンドがアタック後に振幅を損失するレートを示している。ディケイも変化のレートとして測定されて、サウンドが遅いディケイあるいは早いディケイを有することとなる。
サステイン
サステインレベルは、サウンドがディケイ後に降下する振幅のレベルである。サステインタイムは、サステインレベルにおいてサウンドによって消費された時間の大きさである。
リリーズ
これは、ダイアウト（消滅）へのサウンドによってかかる時間である。これは、変化のレートとして測定されて、サウンドが遅いリリーズあるいは早いリリーズを有することとなる。
【００３１】
上記の測定は、通常、ＡＤＳＲ（アタック（Ａ）、ディケイ（Ｄ）、サステイン（Ｓ）、リリーズ（Ｒ））と呼ばれており、サウンドエンベロープは、ときどき、ＡＤＳＲエンベロープと呼ばれている。
【００３２】
キーが押されるやり方は、キーによって表示されるノート（音符）をモディファイできる。図５は、休止位置５０と初期打鍵位置５１とアフタータッチの位置５２との３つの異なる位置を示している。
【００３３】
大抵のキーボードはベロシティー感度のあるキーを有する。打鍵のベロシティーすなわち速度は、矢印５５に図示のように、キーが位置５０から位置５１に押されるときに測定される。この情報は、０から１２７までの数字に変換されて、その数字がノート・オン・ＭＩＤＩメッセージ後に、コンピュータに送られる。このようにして、ダイナミックレベルが、ノートを用いて（又はノート・プレイバックをモディファイするように用いて）記録される。この特徴がない場合、全ノートは同じダイナミックレベルで再生される。
【００３４】
アフタータッチは、初期打鍵後にキーに加えられた圧力の大きさである。キーボードが電子アフタータッチセンサを装備している場合、アフタータッチセンサは、位置５１と５２との間のキーの初期打鍵後の圧力の変化を感知できる。例えば、圧力を増大することと減少することを交互に行うことにより、ビブラート効果を得ることができる。しかし、ＭＩＤＩアフタータッチメッセージは、ポルタメント及びトレモロからサウンドのテクスチャを完全に変化させるものへ、任意の数のパラメータを制御するために送ることができる。矢印５４は、早く又は遅くできるキーのリリーズを示している。
【００３５】
シンセサイザー上の図６のピッチベンドホイール６２は、大変有用な特徴である。キーを押しながらホイールを回転させることにより、ノートのピッチは、如何に多く且つどんな速度でホイールが回転させられるかに依存して上方に又は下方にベンドさせられる。このベンド操作は、区別しうる半音のステップで、又は連続的な推移音（グライド）グライドとして、半音階にすることができる。
【００３６】
モジュレーション制御ホイール６４は、通常、ビブラート又はトレモロ情報を送る。一般的にモジュレーションホイールという用語はしばしば変調を指示するように使用されるけれど、前記のモジュレーション制御ホイール６４は、ホイール又はジョイスティックの形態で使用され得る。用語“ＬＦＯ”は、しばしば、音楽の生成に引用されて基本的な構築ブロックとなっている。頭字語“ＬＦＯ”（低周波数発振器）に示される用語“周波数”は、ピッチを直接示すのには用いられていないが、振動の速度を示すのに用いられている。ＬＦＯは、音声全体又はインスツルメント全体に作用するのにしばしば用いられており、これは、トレモロ（振幅）及びビブラート（ピッチ）に必要とされるとき、振動の一定の速度と深さに送られることによって、ピッチ及び／又は振幅に影響を及ぼす。
【００３７】
サウンドフォント（SoundFont）オーディオフォーマット特性
サウンドフォント（SoundFont）オーディオフォーマットは、ウエーブテーブルシンセサイザーへのデジタルオーディオサンプルとアーティキュレーションインストラクションの両方を含んでいる。デジタルオーディオサンプルは、どんなサウンドがプレイ中であるかを決定し、アーティキュレーションインストラクションは、そのデータに対してどんな変調が行われ及び如何にその変調がミュージシャンの演奏によって影響されるかを決定する。例えば、デジタルオーディオデータはトランペットのレコーディングであるとする。アーティキュレーションデータは、サステインしたノートのレコーディングを延長するようにそのデータのループのさせかたと、振幅へ加えられる人工的なアタックエンベロープの程度と、異なるノートが再生されているようにピッチ内でのこのデータの移調（トランスポーズ）のさせかたと、キーボードのキーの押圧のベロシティーに応答してサウンドの大きさ及びフィルタ操作の変更のさせかたと、ビブラートや他のサウンドへのモディフィケーションを持つミュージシャン連続コントローラ（例えば、モジュレーションホイール）への応答のしかたとを含む。
【００３８】
全ウエーブテーブルシンセサイザーはこのデータを格納するある方法を必要とする。ユーザによってサウンド及びアーティキュレーションデータをセーブして交換できる全ウエーブテーブルシンセサイザーは、このデータをいずれかにアレンジするファイルフォーマットのあるフォームを要求する。しかし、2.0改訂版サウンドフォント（SoundFont）オーディオフォーマットは、３つの特定のやりかたでユニークである。その１つは、フォーマットがプラットフォーム独立であることが可能なように種々の技術が適用されることであり、他の１つは、容易に編集できることであり、別の１つは、将来の改良に上方にも下方にもコンパチブルであることである。
【００３９】
サウンドフォント（SoundFont）オーディオフォーマットは、交換フォーマットである。これは、代表的には、ＣＤ−ＲＯＭ、ディスク、又は他の交換フォーマット上で用いられ、その中のデータを１つのコンピュータ又はシンセサイザーから別のものへ移動できるようにしている。ある特定のコンピュータ、シンセサイザー又は他のオーディオ処理装置においては、普通に、データが、サウンドフォント（SoundFont）オーディオフォーマットではないフォーマットに変換され得、そのデータを実際にプレイしアーティキュレートしたりそのデータを操作したりするアプリケーションプログラムによってアクセスすることができる。
【００４０】
図７は、本発明のサウンドフォント（SoundFont）オーディオフォーマットの階層を示す図である。サンプルレベル７０とインスツルメントレベル７２とプリセットレベル７４の３つのレベルが示されている。サンプルレベル７０は、複数のサンプル７６を含んでいて、各サンプルは、対応するサンプルパラメータ７８を有する。インスツルメントレベル７２では、複数のインスツルメント８０の各々が、少なくとも１つのインスツルメントスプリット８２を含んでいる。各インスツルメントスプリットは、サンプルへのポインタ８４を含んでおり、適用可能な場合には、対応するジェネレータ８６とモジュレータ８８とを有している。所望なら、多数のインスツルメントが同じサンプルへポイント可能である。
【００４１】
プリセットレベル７４において、複数のプリセット８８の各々が、少なくとも１つのプリセット層９０を含んでいる。各プリセット層９０は、インスツルメントポインタ９２を含み、また、関連するジェネレータ９４とモジュレータ９６とを有している。
【００４２】
ジェネレータ９４は、アーティキュレーションパラメータであり、他方、モジュレータ９６は、リアルタイム信号とジェネレータとの間を接続する。サンプルパラメータは、サンプルを編集するのに有用な付加情報を支持する。
【００４３】
ジェネレータ
ジェネレータは、固定値を有する単一のアーティキュレーションパラメータである。例えば、ボリュームエンベロープのアタック時間はジェネレータであって、その絶対値は１．０秒であるかもしれない。
【００４４】
Ｓｏｕｎｄｆｏｕｎｔのオーディオフォーマットジェネレータのリストは、任意に拡大できるが、基本リストが続く。付録IIは、リビジョン２．０のＳｏｕｎｄｆｏｕｎｔのオーディオフォーマットジェネレータのリスト及び詳細な説明を含む。基本ピッチ、フィルタの遮断及び共振並びにサウンドの減衰を接続できる。２つのエンベロープ、１つはボリュームの制御専用のもの、一つはピッチ及び／又はフィルタの遮断の制御のためのもの、が設けられている。これらのエンベロープは、伝統的なアタック、ディケイ、サステイン及びリリーズフェーズ、さらにアタック前の遅延フェーズ及びアタックと減衰の間のホールドフェーズを有する。２つのＬＦＯ、一つはビブラート専用のもの、一つは他のビブラート、フィルタモジュレーション、又はトレモロ用のもの、が設けられている。これらのＬＦＯは、モジュレーションの深さ、周波数及びスタートのためのキー押圧による減衰についてプログラムすることができる。最後に、信号の左右のパン、さらに、その信号がコーラス及び反響プロセッサに送られる程度が定められる。
【００４５】
５種類のジェネレータエニュメレータが存在する：すなわち、インデックスジェネレータ、レンジジェネレータ、置換ジェネレータ、サンプルジェネレータ及びバリュージェネレータである。
【００４６】
インデックスジェネレータの量は、別のデータ構造内へのインデックスである。２つだけのインデックスジェネレータがインスツルメントおよびサンブルＩＤである。
【００４７】
レンジジェネレータは、外側の層及びスプリットが末定であるノートオンパラメータの範囲を定める。現在、２つのレンジジェネレータ、すなわち、ｋｅｙＲａｎｇｅ、ｋｅｌＲａｎｇｅが定められている。
【００４８】
置換ジェネレータは、或る値をノートオンパラメータで置換するジェネレータである。２つの置換ジェネレータ、すなわち、overridingKeynumber及びoverridingVelocityが現在定められている。
【００４９】
サンプルジェネレータは、サンプルの特性に直接影響を及ぼすジェネレータである。これらのジェネレータは、層レベルでは未定である。現在定められているサンプルジェネレータは、８アドレスオフセットジェネレータとｓａｍｐｌｅＭｏｄｅｓジェネレータである。
【００５０】
バリュージェネレータは、その値が信号処理パラメータに直接影響を及ぼすジェネレータである。たいていのジェネレータはバリュージェネレータである。
【００５１】
モジュレータ
現実的な音楽合成の重要な特徴は、インスツルメントの特性をリアルタイムで変調する能力である。これは、２つの基本的に相違する方法で行うことができる。第１に、合成エンジン自体内の信号ソース、例えば、低周波数発振器（ＬＦＯ）及びエンベロープジェネレータが、ピッチ、音色及びラウドネスのような合成パラメータを変調できる。しかしながら、そのパラメータは、通常ＭＩＤＩ連続コントローラ（Ｃｃｓ）によりこれらのソースを明瞭に変調できる。
【００５２】
リビジョン２．０Ｓｏｕｎｄｆｏｎｔのオーディオフォーマットは、モジュレーションパラメータの使用によりモジュレーションの選択及びルーティングに大きな柔軟性を与える。モジュレータは、１つのリアルタイム信号と１つのジェネレータとの間の関係を表わしている。例えば、サンプルピッチは、一つのジェネレータである。１オクターブフルスケールにおけるＭＩＤＩピッチホイールのリアルタイムバイポーラ連続コントローラからサンプルピッチまでの接続は、代表的なモジュレータである。各モジュレーションのパラメータは、モジュレーション信号ソース、例えば、特定のＭＩＤＩ連続コントローラ及びモジュレーション宛先、例えば、フィルタ遮断周波数のような特定のＳｏｕｎｄＦｏｎｔのオーディオフォーマットジェネレータを特定する。特定されたモジュレーション量は、ソースが宛先をどの程度（どのような極性で）変調するかを決定する。選択的なモジュレーション変形がソースの曲線又は傾斜を非線形的に変えて、付加的な柔軟性を与える。最後に、第２のソース（量ソース）が選択的に特定されてその量だけ乗算することができる。第２のソースのエニュメレータが一致して論理的に固定されるソースを特定する場合には、その量は単にモジュレーションの程度を制御するだけであることに注目されたい。
【００５３】
モジュレータは、図１１に示されるように、５つの数を使用して特定される。これらの数の間の関係は、図１３に示されている。第１の数は、モジュレータに関連するリアルタイム情報のソース及びフォーマットを特定するエニュメレータ１４０である。第２の数は、モジュレータにより影響されるジェネレータパラメータを特定するエニュメレータ１４２である。第３の数は、第２のソース（量ソース）のエニュメレータ１４６であるが、これは、このソースが、第１ソースがジェネレータに影響を及ぼす量を変えることを特定する。第４の数１４４は、第２のソースが第１のソース１４０に影響を及ぼす程度を特定する。第５の数は、第１のソースに関する変形動作を特定するエニュメレータ１４８である。
【００５４】
リビジョン１．０のＳｏｕｎｄＦｏｎｔのオーディオフォーマットが、ジェネレータだけについてエニュメレータを使用した。新しいジェネレータ及びモジュレータは確立されて実施されるので、これらの新しい特徴を実現しないソフトウェアがそのエニュメレータを認識しないであろう。ソフトウェアは末知のエニュメレータを簡単に無視するように設計される場合には、両方向の互換性が達成される。
【００５５】
モジュレータスキームを使用することにより、最も進歩したサンプルされた音声合成で使用されるもののような非常に複雑なモジュレーションエンジンを特定することができる。リビジョン２．０のＳｏｕｎｄＦｏｎｔのオーディオフォーマットが初期インプリメンテーションにおいて、幾つかのデフォルトモジュレータが定められる。これらのモジュレータは、同じソース、宛先及び変形を零又は無デフォルトのモジュレーション量パラメータで特定することにより、ターンオフするか又は変形することができる。
【００５６】
モジュレータのデフォルトは、ピッチホイール、ビブラートの深さ、及びボリューム、並びに、ラウドネスのＭＩＤＩ速度制御及びフィルタ遮断のような標準のＭＩＤＩコントローラを含む。
【００５７】
ＳｏｕｎｄＦｏｎｔのオーディオサンプルフォーマット
リビジョン２．０のＳｏｕｎｄＦｏｎｔのオーディオフォーマットにおいて表されるサンプルパラメータは、サウンドを複製するのに特に要求されないが、ＳｏｕｎｄＦｏｎｔのオーディオフォーマットのバンクの更なる編集には有用である付加的な情報を運ぶ。図１２は、サンプルフォーマットのダイアグラムである。サンプルのオリジナルサンプルレート１４９及びサンプルスタート１５０、サステインループスタート１５２、サステインループエンド１５４、及びサンプルエンド１５６のデータポイントに対するポインタがサンプルパラメータに含まれている。付加的に、サンプルのオリジナルキー１５８が、サンプルパラメータにおいて特定される。これは、このサンプルが必然的に一致するＭＩＤＩキー番号を指示している。ＭＩＤＩのキー番号に有意に一致しないサウンドについてナル値が許される。最後に、ピッチコレクション１６０は、サンプルパラメータに含まれて、そのサンプル自身について固有であるかもしれない任意のミスチューニング（チューニング誤差）を許す。また、後述するように、ステレオインジケータ１６２及びリンクタグ１６４も含まれる。
【００５８】
ＳｏｕｎｄＦｏｎｔオーディオフォーマット
ＳｏｕｎｄＦｏｎｔオーディオフォーマットは、文字フォントに類似した方法により、演奏者又は作曲者により意図される実際の音色で音楽的合成のポータブルなレンダリングを可能にする。ＳｏｕｎｄＦｏｎｔオーディオフォーマットは、ウェーブテーブルシンセサイザサウンド及びそれと関連するアーティキュレーションデータについてのポータブルで拡大可能な汎用インターチェンジ標準である。
【００５９】
ＳｏｕｎｄＦｏｎｔのオーディオフォーマットバンクは、ヘッダ情報、１６ビット線形サンプルデータ、及び、バンク内に含まれるＭＩＤＩプリセットに関する階層構造的に構成されたアーティキュレーション情報を含むＲＩＦＦファイルである。ＲＩＦＦファイル構造は図８に示されている。パラメータは、最良のレンダリングエンジンを満たすために正確に定義され意味があるように適当な解決を用いて特定される。ＳｏｕｎｄＦｏｎｔのオーディオフォーマットの構造は、任意の複雑なモジュレーション及び合成ネットワークに拡大できるように注意深く設計されている。
【００６０】
図９は、図８のＲＩＦＦファイル構造についてのファイルフォーマット像を示している。付録Ｉは、図９の構造の各々の記述を示している。
【００６１】
図１０は、本発明によるアーティキュレーションデータ構造を示している。プリセットレベル７４は、プリセットヘッダ１００、プリセット層インデックス１０２、並びに、プリセットジェネレータ及びモジュレータ１０４を示す３つの列として示されている。示された例では、プリセットヘッダ１０６は、プリセット層インデックス１０２における単一のジェネレータインデックス及びモジュレータインデックス１０８を指示する。別の例では、プリセットヘッダ１１０は、２つのインデックス１１２及び１１４の指示する。異なるプリセットジェネレータは、図示されるように、ジェネレータ及び量１１６と、ジェネレータ及びインスツルメントインデックス１１８を指示する層インデックス１０８により使用される。他方、インデックス１１２は、ジェネレータ及び量１２０（グローバルプリセット層）のみを指示する。
【００６２】
インスツルメントレベル７２は、プリセットジェネレータ１０４のインスツルメントインデックスポインタによりアクセスされる。インスツルメントレベルは、インスツルメントスプリットインデックス１２４を指示するインスツルメントヘッダ１２２を含む。任意の１つのインスツルメントヘッダに１つ若しくはそれ以上のスプリットインデックスを割り当てることができる。インスツルメントスプリットインデックスは、さらに、特定のインスツルメントジェネレータ１２６を指示する。ジェネレータは、インスツルメントジェネレータ１２８のようなジェネレータ及び量を有する（従ってグローバルスプリットになる）か又はインスツルメントジェネレータ１３０のようなサンプルに対するポインタを含むこともできる。最後に、インスツルメントジェネレータはオーディオサンプルヘッダ１３２を指示する。オーディオサンプルヘッダはオーディオサンプル及びオーディオサンプル自身に関する情報を与える。
【００６３】
ユニットの定義
この文書には引用されているいろいろな特定のユニットがある。これらのユニットの幾つかは音楽やサウンド産業内で知られている。他のものは本発明のために特別作られている。これらのユニットは２つの基本特性を有している。第１に、全てのユニットは、付加的である。使用される一次ユニットは、パーセンテージ、デシベル（ｄＢ）と２つの新しく定義されたユニット、絶対セント（ピッチのずれを計測する公知の音楽的セントと対照される）、およびタイムセントである。
【００６４】
第２に、ユニットは各々物理現象に関連する絶対的意味、或いは他のユニットに関連する相対的意味を有している。楽器やサンプルレベルにおけるユニットはしばしば絶対的意味を有している。即ちそれらはヘルツ（Ｈｚ）のような絶対的な物理的値を決定する。しかし、プリセットレベルにおいて、同じサウンドフォント（登録商標）のオーディオフォーマットパラメーターは、例えばピッチシフトの半音のような相対的意味を有しているだけである。
【００６５】
相対的ユニット
センチベルス（Centibels）：センチベルス（省略して、Ｃｂ）は、センチベルスの１０倍の感度を有する、利得や減衰の相対的ユニットである。２つのＡとＢに対して、Ｃｂの等価な利得変化は、
Ｃｂ＝２００ｌｏｇ１０（Ａ／Ｂ）
である。負のＣｂの値は、ＡがＢより静かであることを示す。信号ＡとＢの定義に依存して、正の数は利得か減衰の何れかを示すことができることを留意されたい。
セント：  セントはピッチの相対的ユニットである。セントはオクターブの１／１２００である。２つの周波数ＦとＧに対して、ピッチの変化のセントは、
セント＝１２００ｌｏｇ２（Ｆ／Ｇ）
によって表現される。セントの負の数は、周波数Ｆが周波数Ｇより低いことをしめす。
タイムセント：  タイムセントは、間隔の相対的ユニット、即ち時間の相対的ユニットである新しく定義されたユニットである。２つの時間期間ＴとＵに対して、時間変化のタイムセントは、
タイムセント＝１２００ｌｏｇ２（Ｔ／Ｕ）
によって表される。タイムセントの負の数は、時間Ｔが時間Ｕより短いことを示す。タイムセントとセントの類似性はそれらの式から明らかである。タイムセントはエンベロープと遅延時間を表現するために特に有用なユニットである。それは、適したユニットであり、セントの係数を用いて測るものである。特に、もし波形のピッチはセントが変えられ、タイムセントにおけるエンベロープの時間パラメーターが変えられるなら、生じる波形は正のオフセットとピッチの付加的な調整および同じ大きさと全ての時間パラメーターの負の調整に対して形は不変である。
パーセンテージ：  １パーセントの１／１０は、他の有用な相対的な（および絶対的な）単位である。フルスケールユニットは、ディメンジョンがなく、或いはｄＢ、セント、あるいはタイムセントで測られる。ゼロの相対的値は、効果音に変化がないことを示している；１０００の相対的な値は、効果音がフルスケールの量によって増大されていることを示す。−１０００の相対的な値は、効果音がフルスケールの量によって減少されていることを示す。
絶対ユニット：  全てのパラメーターは、物理的に意味のある、良く定義された方法で特定される。サウンドフォントのオーディオフォーマットを含む前のフォーマットにおいて、パラメーターの幾つかは、マシンに依存した方法で特定されている。例えば、低周波変調発振器（ＬＦＯ）の周波数は、０から２５５の任意のユニットにおいて前述のように表される。改定２．０サウンドフォントのオーディオフォーマットにおいて、全てのユニットは物理的に参照されたフォームに特定されるので、ＬＦＯの周波数はＭＩＤＩキーボード上の最も低いキーの周波数に関するセント（セントは音の半音の１０００倍である）で現わされる。
【００６６】
これらのユニットのいずかを絶対的に特定するときは、基準が必要とされる。
センチベルス：  改定２．０サウンドフォントのオーディオフォーマットにおいて、これは一般にセンチベルユニットに対する“フルレベル”のノートである。サウンドフォントのオーディオフォーマットパラメーターに対する０Ｃｂの値は、楽器の設計者はフルの音量のノートに対して指定される程度に大きく、ノートがでることを示している。
タイムセント：  絶対的なタイムセントは、以下の式によって表される。
絶対的なタイムセント＝１２００ｌｏｇ2（ｔ），ｔは秒
改定２．０サウンドフォントのオーディオフォーマットにおいて、タイムセントの絶対基準は１秒である。ゼロの値は１秒、或いはフル（９６ｄＢ）変換に対する１秒を表す。
【００６７】
絶対的なセント：  周波数の全てのユニットは“絶対的なセント”にある。絶対的なセントは、ＭＩＤＩキーナンバー０、或いは８．１７５８Ｈｚの絶対周波数である０と共にＭＩＤＩキーの数スケールによって定義される。改定２．０サウンドフォントのオーディオフォーマットのパラメーターユニットは、スペシフィケーションが等しいか、パラメーターに対して最小の知覚可能な差に等しいか又はそれを越える仕様を許容するように設計されている。“セント”のユニットは、周波数の最小の知覚可能な差以下である半音の１／１００としてミュージシャンに良く知られている。
【００６８】
絶対的なセントはピッチに対してばかりでなく、フィルターのカットオフ周波数のような、知覚することが殆どできない周波数に対しても用いられる。幾つかの合成エンジンはこのカットオフの正確性のあるフィルターをサポートし、周波数の単一の知覚ユニットを有する単純さが改定２．０サウンドフォントのオーディオフォーマットの原理と一致して選択された。低い解像度の合成エンジンは、特定されたフィルターのカットオフ周波数をそれらの最も近い同等値に単純に丸める。
【００６９】
サウンドフォントのオーディオフォーマットの再生
パラメーターの正確な定義は、いろいろなプラットフォームによって生成のために与えるように重要である。ハードウェアのプラットフォームを変化することは異なった能力を有しているが、意図されたパラメーターの定義が知られているなら、各プラットフォームに関するサウンドフォントのオーディオフォーマットの最良の可能な表現を可能にするパラメーターの適切な翻訳が可能である。
【００７０】
例えば、ボリュームエンベロープのアタック時間の定義を考慮されたい。これは、ボリュームエンベロープのアタック時間は、ボリュームエンベロープがそのピークの振幅に到達するまで、消滅するときから時間として改定２．０サウンドフォントのオーディオフォーマットに定義される。アタック形状はアタックフェーズを通る振幅のリニアな増加として定義される。従って、アタックフェーズ内のオーディオの振る舞いは完全に定義される。
【００７１】
特別な合成エンジンは、物理的能力としてリニアな振幅増加なく設計されてもよい。特に、ある合成エンジンは、固定されたｄＢの終点への一定のｄＢ／秒の傾斜のシーケンスとして、それらのエンベロープを作る。このような合成エンジンは、その本来の傾斜の幾つかのシーケンスとしてリニアアタックをシミュレートしなければならない。これらの傾斜の全経過時間は、アタック時間に対してセットされ、且つ傾斜の終点の相対的高さは、リニア振幅のアタック軌跡上の近似的な点にセットされる。同様な技術が、必要とされるとき、他の改定２．０サウンドフォントのオーディオフォーマットパラメーターの定義をシミュレートするために用いられる。
【００７２】
付加されるユニット
編集され得る全ての改定２．０サウンドフォントのオーディオフォーマットユニットは“付加できる”ユニットにおいて表現される。一般的に言えば、これは与えられたパラメーターの２つの異なる値と同じ量を加えることによって、知覚は二つのケースにおける変化が同じ程度であることを意味している。付加したユニットは特に有用である。何故なら、それらは易しい方法で値の変更や編集を可能にするからである。
【００７３】
知覚付加の特性は以下のように厳密に定義される。特別なコンテキストにおける知覚可能な現象の計測ユニット（単位）が付加しているならば、全ての４つの計測された値Ｗ，Ｘ，ＹおよびＺ（ここでＷ＝Ｄ＋Ｘ，Ｙ＝Ｄ＋Ｚ（Ｄは定数））に対して、ＸからＷまでの知覚された違いはＺからＹまでの知覚された相違を同じである。
【００７４】
値の広い範囲にわたって知覚されることができる殆どの現象に対して、付加したユニットは典型的に対数的である。対数的なスケールが用いられたとき、以下の関係が保たれる。
0004679678.tif 000002
【００７５】
従って、０．１の対数は−１であり、１００の対数は２である。表からわかるように、各対数（値）に例えば１を加えることは、おのおの場合において１０倍だけ増加する。
【００７６】
もし、我々が、例えばサウンドの強さの付加的ユニットを決定しようとすれば、これらは対数のユニットであることがわかる。サウンドの強さの共通の対数ユニットはデシベル（ｄＢ）である。２つのサウンドの強さの比の底に対する対数の１０倍として定義される。基準として１つのサウンドを定義することによって、サウンドの強さの絶対的な測定も確立される。４０デシベルのサウンドと５０デシベルのサウンド間の大きさの知覚される相違は、８０デシベルのサウンドと９０デシベルのサウンド間の大きさの知覚される相違と実際は同じである。もし、サウンドの強さが立方センチメメートル当たりのエルグのＣＧＳ物理ユニットにおいて計測されるなら、これは問題でない。
【００７７】
他の付加的な単位（ユニット）は音楽セントにおけるピッチの測定である。これは音楽セントが半音の１／１００であること、及び、半音がオクターブの１／１２であることを思い起こすことによって容易に分かる。オクターブは、勿論、ダブリングを含む周波数の対数測定である。一連のノートを一定数のセント、半音、若しくはオクターブだけ移調することにより、メロディーを残したまま全てのピッチが同一の差だけ変更されることは、演奏家なら容易に分かることであろう。
【００７８】
厳密な対数ではないサウンドフォント（登録商標）オーディオフォーマットユニットは、余韻、若しくは、コーラス処理の度合いの測定である。これらの発生器のユニットは、関連するプロセッサへ送られるべきサウンドの総振幅のパーセンテージによる。しかしながら、０％の余韻を持つサウンドと１０％の余韻を持つサウンドとの間の知覚上の差は、９０％の余韻を持つサウンドと１００％の余韻を持つサウンドとの間の差と実は同じである。厳密な対数関係からのこのずれ（付加的な単位（ユニット）が対数的である場合、我々は１％と２％の間の差は５０％と１００％の差と同じであると予想する）の理由は、我々が余韻の度合いを直接的な、即ち、未処理のサウンドの完全なレベルと比較していることである。
【００７９】
時間は、一般には、秒のような線型ユニットで表現されることから、本発明は、上に定義された、対数目盛上での「タイムセント」と呼ばれる新たな時間測定を提供する。音楽ノートのアタックや減衰のような現象が知覚された場合、時間は対数目盛において付加できる。これは強度やピッチと同様に値における比例変化に対応することが分かる。換言すれば、１０ミリ秒と２０ミリ秒の間で知覚される差は、１秒と２秒の間のそれと同じであり、それらは共に２倍である。
【００８０】
例えば、エンベロープ減衰時間は、秒やミリ秒では測定されず、タイムセントで測定される。絶対的タイムセントは、秒時間の２を底とする対数の１２００倍として定義される。相対的タイムセントは、これらの時間の比の２を底とする対数の１２００倍である。
【００８１】
エンベロープ減衰時間のタイムセントにおける特定によって減衰時間の付加的変調が可能とされる。例えば、ある特定の楽器が、キーボードの低端で２００ミリ秒、高端で２０ミリ秒に及ぶ楽器スプリットのセットを含んでいるとき、プリセットは、１．５の比を表す相対的タイムセントを付加して、キーボードの低端で３００ミリ秒、高端で３０ｍ秒の減衰時間を与えるようなプリセットを生成することができる。更に、エンベロープ減衰時間を変調するためにＭＩＤＩキー数が付加されたときは、１オクターブにつき一定数のミリ秒ではなく、１オクターブにつき１つの等比によって、音階を奏する方が適当である。このことは、１つのＭＩＤＩキー数のずれにつき一定数のタイムセントが、タイムセントにて、デフォルト減衰時間に付加されることを意味する。
【００８２】
選択されるユニットは全て付加できる。このことは、相対的レイヤパラメータが、下に存在する様々なスプリットパラメータに付加された場合、この結果生じるパラメータは、元の楽器と同じ方法で離間されることを意味する。例えば、ボリュームエンベロープアタック時間がミリ秒で表現された場合、一般のキーボードは、高いノートでは１０ミリ秒の非常に早いアタック時間を有し、低いノートでは１００ミリ秒のより遅いアタック時間を有する。相対的レイヤが非付加的ミリ秒で表現された場合にも、１０ミリ秒の付加値は、高いノートについてはアタック時間を２倍にし、その一方で、低いノートを１０％だけ変化させる。改訂版２．０サウンドフォント（登録商標）オーディオフォーマットは、時間の対数測定、即ち、付加できる、追加録音される「タイムセント」を発明することによって、この特別なジレンマを解決する。
【００８３】
同様のユニット（セント、ｄＢ、及びパーセンテージ）が、改訂版２．０サウンドフォント（登録商標）オーディオフォーマットを通じて使用される。付加的な単位（ユニット）を使用することによって、改訂版２．０サウンドフォント（登録商標）オーディオフォーマットは、その楽器に相対的なパラメータを付加するだけによって現存の「楽器」を個人の希望に合わせる機能を提供する。上の例では、アタック時間は拡張されるが、その一方、キーボード上の特有のアタック時間関係はそのまま維持される。他のいずれのパラメータも同様に調整することが可能であり、こうして、複数のプリセットを非常に容易且つ効率的に編集する。
【００８４】
サンプルのピッチ
改訂版２．０サウンドフォント（登録商標）オーディオフォーマットのある特有の特徴は、サンプルされたデータのピッチを保持する方法である。従前のフォーマットでは、２つのアプローチが採用されていた。最も簡単なアプローチでは、「ルート」キーボードキーで所望されるピッチシフトを表すような単一の数字が保持される。この単一の数字は、サンプルのサンプルレートと、合成器の出力サンプルレート、ルートキーにおける所望のピッチ、及び、サンプル自身におけるいずれかのチューニング誤差から算出されなければならない。
【００８５】
もう一方のアプローチでは、所望とするいずれかのピッチ修正に加えてサンプルのサンプルレートが保持される。「ルート」キーを奏したとき、ピッチシフトは、いずれかの修正によって変更された出力サンプルレートに対するサンプルのサンプルレートの比に等しい。ある特定の効果を生じさせるために計画的に必要とされる修正に加えてサンプルチューニングエラーによる修正が結合される。
【００８６】
改訂版２．０サウンドフォーマット（登録商標）オーディオフォーマットは、各サンプルについて、サンプルのサンプルレートのみならず、サウンドや、サンプルに関連付けられたいずれかのチューニング修正、及び、いずれかの計画的なチューニング変更（この計画的チューニング変更は楽器レベルで保持される）をも保持する。例えば、ピアノのミドルＣの４４．１Ｋｈｚサンプルが作られた場合、ＭＩＤＩミドルＣに関連付けられた数６０が、４４１００とともに、「元のキー」として記憶される。記録を２セントだけ半音下げることをサウンド設計者が決定した場合には、２セントのポジティブ（正の）ピッチ修正も記憶される。サウンドフォントオーディオフォーマットにおけるサンプルの配置が、ピッチにおけるシフトを何ら有しないサンプルをキーボードミドルＣが奏するものでない場合であっても、これら３つの数字は変更されない。サウンドフォントオーディオフォーマットは、「ルート」キー（この「ルート」キーのデフォルト値はこの元のキーであるが、この「ルート」キーは、キーボードにおけるサンプルの効果的な配置を改めるように変更され得る）と、ピッチにおける計画的な変更を可能にする大まかな及び微妙なチューニングとを別個に保持する。
【００８７】
このフォーマットの利点は、サウンドフォント（登録商標）オーディオフォーマットが編集されるべきときに現れる。この場合、たとえサンプルの配置が変更された場合であっても、サウンド設計者が他の楽器におけるサンプルを使用しようとするときは、修正サンプルレート（元のバンド幅を表示する）、元のキー（サウンドのソースを表示する）、及び、ピッチ修正（正確なピッチを再び決定する必要がないようにする）を利用することができる。
【００８８】
改訂版２．０サウンドフォント（登録商標）オーディオフォーマットは、サウンドが音楽ピッチを有しないときに使用される元のキーに対する「ピッチされていない」値（慣習的には−１）を与える。
【００８９】
ステレオ  タグ
改訂版サウンドフォント（登録商標）オーディオフォーマットの他の特有の特徴は、ステレオサンプルが処理される方法である。ステレオサンプルは関連する音界を有した楽器を再生するときに特に有用である。ピアノがよい例である。ピアノの低いノートは、左から生じ、一方、高いノートは右から生じるように現れる。ステレオサンプルは、単一の単旋律のサンプルが使用されたときには失われている広大な感じをもサウンドに付加する。
【００９０】
従前のフォーマットでは、ステレオサンプルを調整するために楽器レベルの同等物にて特別の対策がなされる。改訂版２．０サウンドフォント（登録商標）オーディオフォーマットでは、サンプル自体がステレオとしてタグ付けされ（図１２のインジケータ１６２）、同じタグ（図１２のタグ１６４）にその片方の位置を有する。このことは、サウンドフォントオーディオフォーマットを編集するときは、サンプルが使用される楽器を参照する必要なしに、ステレオサンプルがステレオとして保持され得ることを意味する。
【００９１】
このフォーマットはより大きな度合いのサンプル結合さえも支持するように拡張され得る。全てが同じ様に循環方法でリンクされたリンクドセットの中の他の部材へのポインタを用いて、サンプルが単に「リンクド」としてタグ付けされた場合には、トリプル（triples）、クオッド（quads）、若しくは、それ以上のサンプルが特別な処理のために保持され得る。
【００９２】
内挿非両立性を排除するための同じデータの使用
内挿法として知られている方法によりウエーブテーブル・シンセサイザーがプレイしているオーデイオ・サンプルデータのピッチをウエーブテーブル・シンセサイザーはシフトするのが典型的である。この方法は、所要のアナログデータのロケーションの周りの幾つかの既知のサンプルデータ・ポイントに対して数学的処理を行うことによって元のアナログオーデイオ信号の値を近似する。
【００９３】
費用のかからない、やや欠陥のある内挿法は２つの近いデータポイントの間に線引きすることと同じである。この方法は「線形内挿」と称する。費用はかかるが、オーディオ的に優れている方法はいみじくもＮ点内挿と称するＮ個の近いデータポイントを使う曲線関数を計算することである。
【００９４】
これら両方の方法は普通に使われているので、両方の形式のシステムの中でポータブルであることをもくろんでいるフォーマットならば両方で十分作動しなければならない。線形内挿の質はこの技術を使用しているシステムの究極の忠実性を限定するけれども、厳密に線形内挿を利用してサンプル内のループポイントが限定され、そしてテストされるのであれば、忠実性の実際の反転が生じる。
【００９５】
サンプルはループとされて任意の長さの音長ノートをつくる。ループがサンプル内で発生するとき、（等価であるのが望ましい）ループスタートポイント（図３の１７２）に対してループエンドポイント（図３の１７０）を論理的につなぐ。もしもそのようなつなぎまたはスプライスが十分に滑らかであると、ループをつくったようにはならない。
【００９６】
運悪く、内挿がプレイに入ってくると、出力の再生に一つより多いサンプルが入り込んでくる。線形内挿ではループの終わりでのサンプルデータポイントの値がスタートにおけるサンプルデータポイントの値と（殆ど）同じであるということで十分足りる。しかしながら、内挿されたオーデイオデータの計算が近い２つのポイントを越えているとき、ループ境界の外側のデータがループの音に影響を与え始める。もしそのデータが人工的構造の自然なループをサポートしないと、ループ・プレイバック中にカチッと音を立て又はブンブンというノイズが生じる。
【００９７】
改定２．０サウンド・フォント（商標）オーデイオ・フォーマット基準がそのような問題を排除するための新規な技術をもたらしている。この基準は、ループスタートポイントとエンドポイントとの周りの近い８個のポイントを強制的に同じにすることを要求している。８個よりも多いポイントは必要としない。そのような離れたデータによりつくられる人為的なものは内挿で使用されたとしても聞こえないということが実験で判っている。データポイントを強制的に同じにすることによってすべての内挿が、オーダーとは関わりなく、人為的なもののないループをつくることを保証する。
【００９８】
オーデイオサンプルデータを変えて基準に一致させるため様々なテクニックを使うことができる。その一例を以下に説明する。それらの性質からループスタートポイントとエンドポイントとは同じ時間領域の波形内にある。もしも９個のサンプル・フラットトップを持つ短い（５ないし２０ミリ秒）三角形の窓が両方のループに適用され、そしてその結果としての２つの波形が、各対のポイントを加え、２で割ることにより平均されると、その結果一つのループ修正信号がつくられる。もしもこの信号がクロス・フエードされてループのスタートとエンドとになると、そのデータは殆ど分裂していないもとのデータと同じになる。
【００９９】
数学的に言えば、もしＸsがループのスタートにおけるサンプルデータポイントであると、Ｘeはループエンドにおけるサンプルデータポイントであり、そしてサンプルレートは５０ｋＨｚであり、その場合ループ修正信号Ｌnは、
ｎが−２５３から−５では、
Ｌn＝（２５４＋ｎ）（Ｘ（s+n）＋Ｘ（e+n））／５００
ｎが−４から４では、
Ｌn＝（Ｘ（s+n）＋Ｘ（e+n））／２
ｎが５から２５３では、
Ｌn＝（２５４−ｎ）（Ｘ（s+n）＋Ｘ（e+n））／５００
である。
【０１００】
クロス・フエードはループスタートとループエンドの両方の周りで同じ様に行われる。
【０１０１】
ｎが−２５３から−５では、
Ｘ’（s+n）＝（２５４＋ｎ）Ｌn／２５０＋（−４−ｎ）Ｘ（s+n）／２５０
ｎが−４から４では、
Ｘ’（s+n）＝Ｌn
ｎが５から２５３では、
Ｘ’（s+n）＝（２５４−ｎ）Ｌn／２５０＋（−４＋ｎ）Ｘ（s+n）／２５０
ｎが−２５３から−５では、
Ｘ’（e+n）＝（２５４＋ｎ）Ｌn／２５０＋（−４−ｎ）Ｘ（e+n）／２５０
ｎが−４から４では、
Ｘ’（e+n）＝Ｌn
ｎが５から２５３では、
Ｘ’（e+n）＝（２５４−ｎ）Ｌn／２５０＋（−４＋ｎ）Ｘ（e+n）／２５０
平均操作とクロス・フエージング操作とを組み合わせることによりこれらの関数は簡単化されることは数式から明らかである。
【０１０２】
当業者には理解されることであるが、本発明の思想もしくは本質的特徴から逸脱することなく他の形で本発明を実施できる。例えば、上に説明したもの以外のユニットを追加して使用できる。例えば、１２００以外の何かを掛けた対数値として時間を表すことができ、または百分率で表すこともできる。従って、本文の説明は本発明の例示に過ぎず、本発明の技術範囲については特許請求の範囲の記載を参照すべきである。
【０１０３】
0004679678.tif 000003
【０１０４】
0004679678.tif 000004
【０１０５】
0004679678.tif 000005
【０１０６】
0004679678.tif 000006
【０１０７】
0004679678.tif 000007
【０１０８】
５  情報−リストのチャンク
サウンドフォント（SoundFont）２コンパチブルファイルの情報−リストチャンクは、以下に定義される３つの必須のサブチャンク及び様々な任意のサブチャンクを含む。情報−リストチャンクは、ファイルに含まれるサウンドフォントコンパチブルバンクに関する基本情報を与える。
５．１  ifilサブチャンク
ifilサブチャンクは、ファイルが満たすサウンドフォント仕様バージョンレベルを確定する必須のサブチャンクである。それは、常に長さが４バイトであり、以下の構造体に従うデータを含む。
0004679678.tif 000008
【０１０９】
word wMajorはサウンドフォント仕様バーションの小数点の左側の値を含み、word wMinorは小数点の右側の値を含む。例えば、もし、word wMajor＝２、word wMinor＝１１ならば、バージョン２．１１を意味する。
【０１１０】
サウンドフォントコンパチブルファイルを読み出すアプリケーションによって、これらの値を使用して、ファイルのフォーマットがプグラムによって使用可能かどうかを決定できる。固定のwMajor内で、フォーマットへの唯一の変更は、ジェネレータ、ソース及び変換計数器（transform enumerator）の付加及び更なるサブチャンクである。もし、プログラムにとって未知ならば、これらは全て無視されると定義される。結果、与えられたwMajor内で、十分に上方でコンパチブルであるように、多くのアプリケーションを設計することができる。全ての計数器が知られていなければならないエディターもしくは他のプログラムの場合には、wMinorの値は重要である。一般的に、アプリケーションプログラムは、使用可能（恐らく、適切な透過翻訳）としてファイルを受け入れ、また、使用不可能としてファイルを拒絶するか、もしくは、ファイルにエディット不可のデータがあることをユーザに警告する。
【０１１１】
もし、ifilサブチャンクが見つからないか、もしくは４バイトでないならば、ファイルは構造的に不正であるとして拒絶される。
５．２  isngサブチャンク
isngサブチャンクは、ウェーブテーブル（wavetable）サウンドエンジンを確定する必須のサブチャンクであり、そのテーブルのために、ファイルは最適化される。それは、総バイト数を偶数にするように、１つもしくは２つの値ゼロのターミネーターを含む２５６バイトもしくはそれ以下のバイト数のＡＳＣＩＩストリングを含む。デフォルトのisngフィールドは、ゼロの１バイトが続く７のＡＳＣＩＩキャラクタとして「ＥＭＵ８０００」を表す８バイトである。
【０１１２】
ＡＳＣＩＩは、ケースセンサティブ（case-sensitive）に取り扱われなければならない。言い換えると、「ｅｍｕ８０００」は、「ＥＭＵ８０００」とは同じでない。
【０１１３】
目的のサウンドエンジンをエミュレートするための合成アルゴリズムを変えるために、チップドライバーは、任意に、isngストリングを使用できる。
【０１１４】
もし、isngサブチャンクが見つからないか、ゼロ値の１バイトで終結されていないか、もしくはその内容がサウウンドエンジンに末知であるならば、そのフィールドは無視され、ＥＭＵ８０００が仮定されなければならない。
５．３  INAMサブチャンク
INAMサブチャンクは、サウンドフォントコンパチブルバンクのネームを提供する必須のサブチャンクである。それは、総バイト数を偶数にするように、１つもしくは２つの値ゼロのターミネーターを含む２５６バイトもしくはそれ以下のバイト数のＡＳＣＩＩストリングを含む。典型的なinamサブチャンクは、ゼロの２バイトが続く１２のＡＳＣＩＩキャラクタとして「Ｇｅｎｅｒａｌ ＭＩＤＩ」を表す１４バイトである。
【０１１５】
ＡＳＣＩＩは、ケースセンサティブ（case-sensitive）に取り扱われなければならない。言い換えると、「Ｇｅｎｅｒａｌ ＭＩＤＩ」は、「ＧＥＮＥＲＡＬ ＭＩＤＩ」とは同じでない。
【０１１６】
たとえ、ファイルネームが変えられたとしても、一般的に、inamストリングは、バンクの確定のために使用される。
【０１１７】
もし、inamサブチャンクが見つからないか、ゼロ値の１バイトで終結されていないならば、そのフィールドは無視され、もし、そのネームが問い合わせられたならば、ユーザーは、適切なエラーメッセージを提供されなければならない。もし、そのフィールドが再書き込みされたならば、有効なネームがINAMフィールドに配置されなければならない。
５．４  iromサブチャンク
iromサブチャンクは、全てのＲＯＭサンプルが参照する特定のウェーブテーブルサウンドデータＲＯＭを確定する任意のサブチャンクである。それは、総バイト数を偶数にするように、１つもしくは２つの値ゼロのターミネーターを含む２５６バイトもしくはそれ以下のバイト数のＡＳＣＩＩストリングを含む。典型的なiromフィールドは、ゼロの２バイトが続く４のＡＳＣＩＩキャラクタとして「ＩＭＧＭ」を表す６バイトである。
【０１１８】
ＡＳＣＩＩは、ケースセンサティブ（case-sensitive）に取り扱われなければならない。言い換えると、「１ｍｇｍ」は、「１ＭＧＭ」とは同じでない。
【０１１９】
ファイルによって参照されるデータがサウンドエンジンにとって使用可能であることを確認するために、ドライバーは、iromストリングを使用する。
【０１２０】
もし、iromサブチャンクが見つからないか、ゼロ値の１バイトで終結されていないか、もしくはそれは未知のＲＯＭを含むならば、そのフィールドは無視され、ＲＯＭサンプルを載せていないと仮定されなければならない。もし、ＲＯＭサンプルがアクセスされたならば、このような楽器への全てのアクセスは終結されなければならず、そして、発音するべきではない。iromもiverも存在して有効であるという状態でないならば、どれがＲＯＭサンプルにアクセスを試みるかをファイルに書き込むべきではない。
５．５  iverサブチャンク
iverサブチャンクは、全てのＲＯＭサンプルが参照する特定のウェーブテーブルサウンドデータＲＯＭ修正を確定する任意のサブチャンクである。それは、常に長さが４バイトであり、以下の構造体に従うデータを含む。
0004679678.tif 000009
【０１２１】
word wMajorはＲＯＭバーションの小数点の左側の値を含み、word wMinorは小数点の右側の値を含む。例えば、もし、word wMajor＝１、word wMinor＝３６ならば、バージョン１．３６を意味する。
【０１２２】
フィールドによって参照されるＲＯＭデータが、サウンドヘッダー（sound header）によって特定されるまさにその位置に位置することを確認するために、ドライバーは、iverサブチャンクを使用する。
【０１２３】
もし、iverサブチャンクが見つからないか、長さが４バイトでないか、もしくはその内容が末知のＲＯＭもしくは不正のＲＯＭを示すならば、フィールドは無視され、ファイルはＲＯＭサンプルを載せていないと仮定される。もし、ＲＯＭサンプルがアクセスされるならば、このような楽器への全てのアクセスは、終結されなければならず、そして、発音すべきではない。ＲＯＭサンプルが正しく機能するためには、iver及びiromが存在し、有効でなければならないということを注記する。iromもiverも存在して、有効であるという状態でないならば、どれがＲＯＭサンプルにアクセスを試みるかをファイルに書き込むべきではない。
５．６  ICRDサブチャンク
ICRDサブチャンクは、サウンドフォントコンパチブルバンクの創造データ（creation data）を確認する任意のサブチャンクである。それは、総バイト数を偶数にするように、１つもしくは２つの値ゼロのターミネーターを含む２５６バイトもしくはそれ以下のバイト数のＡＳＣＩＩストリングを含む。典型的なICRDフィールドは、ゼロの１バイトが続く１１のＡＳＣＩＩキャラクタとして「Ｍａｙ １，１９９５」を表す１２バイトである。
【０１２４】
通常通り、ストリングのフォーマットは「Ｍｏｎｔｈ Ｄａｙ，Ｙｅａｒ」であり、ここで、最初、Ｍｏｎｔｈは、大文字でかかれ、それは月の通常の英語の全てのスペルであり、Ｄａｙは、コンマが続く十進法数の日付であり、Ｙｅａｒは、全ての十進法数の年である。このように、通常通り、そのフィールドは、決して３２バイトよりも長くはならない。
【０１２５】
ICRDストリングは、ライブラリー管理の目的のために提供される。
【０１２６】
もし、ICRDサブチャンクが見つからないか、ゼロ値の１バイトで終結されていないか、もしくは何らかの理由で、ＡＳＣＩＩストリングとして正確にコピーできないならば、そのフィールドは無視されなければならず、もし、再書き込みされたならば、コピーされるべきではない。もし、見たところ、フィールドの内容は重要でないが、正確に、再度、創造可能であるならば、これはされるべきである。
５．７  IENGサブチャンク
IENGサブチャンクは、サウンドフォントコンパチブルバンクに責任を負う全てのサウンド設計者もしくは技術者のネームを確定する任意のサブチャンクである。それは、総バイト数を偶数にするように、１つもしくは２つの値ゼロのターミネーターを含む２５６バイトもしくはそれ以下のバイト数のＡＳＣＩＩストリングを含む。典型的なIENGフィールドは、ゼロの２バイトが続く１０のＡＳＣＩＩキャラクタとして「Ｔｉｍ Ｓｗａｒｔｚ」を表す１２バイトである。
【０１２７】
IENGストリングは、ライブラリー管理の目的のために提供される。
【０１２８】
もし、IENGサブチャンクが見つからないか、ゼロ値の１バイトで終結されていないか、もしくは何らかの理由で、ＡＳＣＩＩストリングとして正確にコピーできないならば、そのフィールドは無視されなければならず、もし、再書き込みされたならば、コピーされるべきではない。もし、見たところ、フィールドの内容は重要でないが、正確に、再度、創造可能であるならば、これはされるべきである。
５．８  IPRDサブチャンク
IPRDサブチャンクは、意図してサウンドフォントコンパチブルバンクでつくる全ての特定のプロダクトを確定する任意のサブチャンクである。それは、総バイト数を偶数にするように、１つもしくは２つの値ゼロのターミネーターを含む２５６バイトもしくはそれ以下のバイト数のＡＳＣＩＩストリングを含む。典型的なIPRDフィールドは、ゼロの１バイトが続く７のＡＳＣＩＩキャラクタとして「ＳＢＡＷＥ３２」を表す８バイトである。
【０１２９】
ＡＳＣＩＩは、ケースセンサティブに取り扱われなければならない。言い換えると、「ｓｂａｗｅ３２」は、「ＳＢＡＷＥ３２」とは同じでない。
【０１３０】
IPRDストリングは、ライブラリー管理の目的のために提供される。
【０１３１】
もし、IENGサブチャンクが見つからないか、ゼロ値の１バイトで終結されていないか、もしくは何らかの理由で、ＡＳＣＩＩストリングとして正確にコピーできないならば、そのフィールドは無視されなければならず、もし、再書き込みされたならば、コピーされるべきではない。もし、見たところ、フィールドの内容は重要でないが、正確に、再度、創造可能であるならば、これはされるべきである。
５．９  ICOPサブチャンク
ICOPサブチャンクは、サウンドフォントコンパチブルバンクに関連する全ての版権主張ストリングを含む任意のサブチャンクである。それは、総バイト数を偶数にするように、１つもしくは２つの値ゼロのターミネーターを含む２５６バイトもしくはそれ以下のバイト数のＡＳＣＩＩストリングを含む。典型的なICOPフィールドは、ゼロの２バイトが続く３８のＡＳＣＩＩキャラクタとして「Ｃｏｐｙｒｉｇｈｔ （ｃ） １９９５ Ｅ−ｍｕ Ｓｙｓｔｅｍｓ，Ｉｎｃ．」を表す４０バイトである。
【０１３２】
ICOPストリングは、知的所有権保護及び管理の目的のために提供される。
【０１３３】
もし、ＩＣＯＰサブチャンクが見つからないか、ゼロ値の１バイトで終結されていないか、もしくは何らかの理由で、ＡＳＣＩＩストリングとして正確にコピーできないならば、そのフィールドは無視されなければならず、もし、再書き込みされたならば、コピーされるべきではない。もし、見たところ、フィールドの内容は重要でないが、正確に、再度、創造可能であるならば、これはされるべきである。
５．１０  ＩＣＭＴサブチャンク
ＩＣＭＴサブチャンクはサウンドフォント互換バンクと関係する何らかのコメントを含む動作チャンクである。このＩＣＭＴチャンクは、バイト総数を偶数にする様に、値ゼロの１つ又は２つの終端を含む６５，５３６又はそれ以下のバイトのＡＳＣＩＩ列を含む。典型的なＩＣＭＴフィールドは、３８個のＡＳＣＩＩ文字の後に２つのゼロバイトが続く“This space unintentionally left blank.（この空間は故意でなく空白に残される）”を表す４０バイトである。
【０１３４】
ＩＣＭＴ列は如何なる非スカトロジー（non-scatological）使用に提供される。
【０１３５】
ＩＣＭＴサブチャンクが失われたり、ゼロ値バイトで終わらなかったり、又は或る理由からＡＳＣＩＩ列として忠実にコピーされることが出来ない場合、そのフィールドは無視されるべきであり、修正される場合は、コピーさるべきではない。フィールドの内容が表面上重要ではなくが、忠実に再発生することができる場合、このことが達成されるべきである。
５．１１  ＩＳＦＴサブチャンク
ＩＳＦＴサブチャンクは、サウンドフォント互換バンクを発生し、且つ最新のものに修正するために使用されるサウンドフォント互換ツールを識別する動作サブチャンクである。ＩＳＦＴサブチャンクは、バイト総数を偶数にする様に、値ゼロの１つ又は２つの終端を含む２５６又はそれ以下のバイトのＡＳＣＩＩストリング（列）を含む。典型的なＩＳＦＴフィールドは、２９個のＡＳＣＩＩ文字の後に２つのゼロバイトが続く“Preditor 2.00a:Preditor 2.00a”を表す３０バイトである。
【０１３６】
ＡＳＣＩＩは大文字小文字に反応して取り扱われるべきである。換言すると、“Preditor”は“PREDITOR”とは同じではない。
【０１３７】
従来、ツール名称と修正制御番号が、先ず発生ツールそして最新修正ツールに対して含まれる。２つのストリングはコロンによって分離される。このストリングは、空修正ツールフィールド（例えば、“Preditor 2.00a:）を用いて発生ツールによって発生されるべきである。ツールがバンクを修正する毎に、ツールは、修正ツールフィールドを、自身の名称及び修正制御番号と置き換えるべきである。
【０１３８】
ＩＳＦＴストリングは主にエラートレーシングの目的に提供される。
【０１３９】
ＩＳＦＴサブチャンクが失われたり、ゼロ値バイトで終わらなかったり、又は或る理由からＡＳＣＩＩ列として忠実にコピーされることが出来ない場合、そのフィールドは無視されるべきであり、修正される場合は、コピーさるべきではない。フィールドの内容が表面上重要ではなく、忠実に再発生することができる場合、このことが達成されるべきである。
【０１４０】
６  ｓｄｔａリストチャンク
サウンドフォント２互換ファイル内のｓｄｔａリストチャンクは、サウンド互換バンクと関係するＲＡＭベースのサウンドデータの全てを含む単一の動作ａｍｐｌサブチャンクを含む。ｓｍｐｌサブチャンクは任意の長さを有しており、偶数のバイトを含む。
６．１  ｓｍｐｌサブチャンク内のサンプルデータフォーマット
smplサブチャンクは、存在すると、線型コード化１６ビットの符号付のリトルエンディアン（最下位バイト最初）ワードの形態でデジタルオーティオ情報の１つ以上の“サンプル”を含む。各サンプルには、最小４６個のゼロの値のデータポイントが続く。これらのゼロの値のデータポイントは、合理的な内挿器を使用する合理的な上方へのピッチのシフトが、サウンドの終了時点でゼロデータ上でループを作ることを保証するために必要である。
６．２  サンプルデータルーピングルール
各サンプルで、１つ以上のループポイント対が存在することができる。これらのポイントの位置は、ｐｄｔａリストチャック内で定められる。しかし、サンプルデータ自体は、ループが複数のプラットフォームで互換であるためには、或る規則に従う必要がある。
【０１４１】
ループは、サンプル内の“等価ポイント”によって、定められる。このことは、論理的に等価な２つのサンプルが存在し、これらのポイントが互いに繋がる場合ループが発生することを意味している。概念としては、ループ終了ポイントは、ルーピングの際は決して実際はプレイされない。むしろ、ループ開始ポイントはループ終了ポイントの直前のポイントに続く。デジタルオーディオサンプリングの帯域制限の特徴のために、アーチファクトの無いループが、等価なポイントを囲む仮想的に同一のデータを表示する。
【０１４２】
実際は、波形表合成器によって使用される種々の内挿アルゴリズムのために、ループ開始及び終了ポイントの両方を囲むデータがループのサウンドに影響する場合がある。従って、ループ開始及び終了ポイントの両方が、連続するオーディオデータによって囲まれる必要がある。例えば、サウンドが減衰を通してループを続ける様にプログラムされる場合であっても、サンプルデータを、ループ終了ポイントを越えて、提供する必要がある。このデータは、典型的には、ループの開始点でのデータと同じである。最小で８つの有効なデータポイントが、ループ開始以前及びループ終了後に、存在することが要求される。
【０１４３】
２つの等価なループポイントを囲む８つのデータポイント（各側で４つ）は、同一である様に強制されるべきである。データを同一なるように強制することによって、全ての内挿アルゴリズムが、アーチファクトの無いループを正しく再発生することが保証される。
【０１４４】
７  pdta リストチャンク
７．１  ＨＹＤＲＡデータ構造
サウンドフォント２互換ファイル内の調音（articulation）データは、９つのサブチャンク内に含まれ、神話の９つの頭を有する動物の名を取って“ｈｙｄｒａ”と呼ばれる。この構造は交換の目的のために設計された。実行時間合成及びオンザフライ編集の何れに対しても最適化されない。サウンドフォント互換クライアントプログラムが、サウンドフォント互換ファイルを読出し且つ書き込む時に、ｈｙｄｒａ構造から及びこれへと翻訳することが合理的であり且つ適当である。
７．２ＰＨＤＲサブチャンク
ＰＨＤＲサブチャンクは、サウンドフォント互換ファイル内の全てのプリセットをリストする所望のサブチャンクである。ＰＨＤＲサブチャンクは３８バイトの長さであり、最小で、２つのレコード、各プリセット毎に対する１つのレコードと構造に従ったターミナルレコードに対する１つのレコードとを含む。
0004679678.tif 000010
【０１４５】
ＡＳＣＩＩ文字フィルードachPresetNameは、ＡＳＣＩＩで表現されたプリセットの名称を、ゼロの値のバイドが充填された未使用のターミナル文字を使用して、含む。一義的な名称が、識別を可能にするために、サウントフォント互換バンク内の各プリセットに割り当てられる。しかしながら、同じ名称を有するプリセットの誤り状態を含むバンクが読み取られる場合、これらプリセットは捨て去られるべきではない。これらプリセットは、読み出されて保存されるか、好ましくは一義的な名称を再度付けられるべきである。
【０１４６】
WORD wPresetは、MIDIプリセット番号を含み、WORD wBankは、このプリセットに適用されるMIDIバンク番号を含む。プリセットは、サウンドフォント互換バンク内では順序付けられない。プリセットはwPreset及びwBank番号の一義的な番号を有するべきである。しかしながら、２つのプリセットがwPreset及びwBankの両方で同じ値を有する場合、ＰＨＤＲチャンク内の最初に生じるプリセットは活動しているプリセットであるが、同じwBank及びwPreset値を有する他のものは、それらが再度番号付けされて後で使用できる様に維持される必要がある。General MIDIパーカッションバンクの特別の場合は、１２８のwBank値によって従来通り扱われる。何れのフィールド内の値も、wBankに対して１２７又は１２８を通してゼロである正しいMIDI値ではない場合、プリセットはプレイすることはできず、保守される必要がある。
【０１４７】
WORD wPresetBagNdxは、ＰＢＡＧサブチャンク内のプリセットのレイヤーに対するインデックスである。プリセットレイヤーのリストはプリセットヘッダーリストと同じ順番であるので、プリセットバックは、プリセットヘッダが増大すると共に、単調に増加する。ＰＢＡＧサブチャンクのバイトのサイズは、ターミナルプリセットのwPresetBagNdx＋４の４倍に等しい。プリセットバックの指示子は非単調であるか、又はターミナルプリセットのwPresetBagNdxがＰＢＡＧサブチャンクのサイズに一致しない場合、ファイルは構造的に不完全であり、ロード時間に除去される必要がある。ターミナルプリセットを除く全てのプリセットは少なくとも一つのレイヤーを有する必要があり、レイヤーを有さない如何なるプリセットも無視される必要がある。
【０１４８】
２倍ワードdwLibrary，dwGenre及びdwMorphologyは、プリセットライブラリー管理機能内に更なる実行のために保存され、読取りの時に保存される必要があり、ゼロとして作り出される。
【０１４９】
ターミナルsfPresetHeader記録は、決してアクセスされず、最後のプリセットにおけるレイヤーの数を決めるターミナルwPresetBagNdxを与えるためだけに存在する。全ての他の値は従来はゼロであるが、achPresetNameは例外的に、オプションにより、プリセットの終わりを示す“ＥＯＰ”とすることができる。
【０１５０】
ＰＨＤＲサブチャンクが失われたり、２レコードよりも少なかったり、そのサイズが３８バイトでない場合、ファイルは構造的にサウンドを発生し無いとして除去されるべきである。
７．３  PBAG
サブシャンクPBAGサブシャンクは、サウンドフォントコンパチブルファイル内の全プリセット層を列挙する必要とされるサブシャンクである。長さが常時４バイトの倍数であり、構造体に従って、各プリセット毎に１レコードとターミナル層毎に１レコードが加えたものを含む。
0004679678.tif 000011
【０１５１】
所定のプリセットの第１層がプリセットのwPresetBagNdxに配置される。プリセット内の層の数は、次のプリセットのwPresetBagNdxと現在のwPresetBagNdxとの差により判断される。
【０１５２】
wGenNdxとは、PGENサブシャンク内のジェネレータのプリセット層リストに対するインデックスであり、wModNdxとは、PMODサブシャンク内のモジュレータのプリセット層リストに対するインデックスである。ジェネレータリフトおよびモジュレータリストの双方ともが、プリセットヘッダーと層リフトと同じ順位にあるので、プリセット層が増大するとともに、これらインデックスが単調に増大し続ける。PMODサブシャンクのバイトの大きさは、ターミナルプリセットのwModNdxの10倍に10を加算したものに等しく、PGENサブシャンクのバイトの大きさは、ターミナルプリセットのwGenNdxの4倍に4を加算したものに等しい。ジェネレータまたはモジュレータのインデックスが単調なものではなかったり、すなわちPGENまたはPMODサブシャンクのそれぞれの大きさに適合しない場合には、ファイルは構造的に欠陥があり、ロード時に拒絶されなければならない。
【０１５３】
プリセットが２つ以上の層を有する場合には、第１の層は、グローバル層であればよい。グローバル層は、リスト内の最後のジェネレータがインスツルメントジェネレータではないという事実により決定される。全ジェネレータリストは、ジェネレータはないがモジュレータのみがあるというグローバル層が存在する場合を除いて、少なくとも１つのジェネレータを含んでいなければならない。モジュレータリストは、ゼロまたは１つ以上のモジュレータを含むことができる。
【０１５４】
第１の層以外の層に、最後のジェネレータとしてのインスツルメントジェネレータが欠如している場合には、その層を無視すべきである。モジュレータとジェネレータとを有さないグローバル層も無視しなければならない。
【０１５５】
PBAGサブシャンクがない状態の場合、あるいは大きさが4バイトの倍数ではない場合には、ファイルは、構造的に欠陥がある状態として拒絶される。
７．４  PMODサブシャンク
PMODサブシャンクは、サウンドフォントコンパチブルファイル内の全プリセット層モジュレータを列挙する必要とされるサブシャンクである。長さが常時10バイトの倍数であり、構造体に従って、ゼロか、１つ以上のモジュレータにターミナルレコードを加算したものを含む。
0004679678.tif 000012
【０１５６】
プリセット層のwModNdxは、そのプリセット層に関する第１のモジュレータを示し、プリセット層に存在するモジュレータの数が、次の高い方のプレセット層のwModNdxと現在のプリセットwModNdxとの差により判断される。この差がゼロということは、このプリセット層内にモジュレータが存在しないことを表している。
【０１５７】
sfModSrcOperは、SFModulator列挙型値のうちの一つの値である。末知または定義されていない値は無視される。この値は、モジュレータに関するデータソースを表す。
【０１５８】
sfModDestOperは、SFGenerator列挙型値のうちの一つの値である。未知または定義されていない値は無視される。この値は、モジュレータのデスチネーションを表す。
【０１５９】
short modAmountは、データソースがデスチネーションを変調する程度を表す符合がつけられた値である。値ゼロは、一定量がない状態であることを表す。
【０１６０】
fsModAmtSreOperは、SFModulator列挙型値のうちの一つの値である。未知または定義されていない値は無視される。この値は、データソースがデスチネーションを変調する程度が、固有変調ソースにより制御されるべきであることを表す。
【０１６１】
sfModTransOperは、SFTransform列挙型値のうちの一つの値である。末知または定義されていない値は無視される。この値は、特定の型の変換が、モジュレータに行なわれる前にモジュレーションソースに対し行なわれることを示す。
【０１６２】
ターミナルレコードは、従来全領域においてゼロを含み、常に無視される。
【０１６３】
モジュレータは、sfModSrcOper、sfModDestOperおよびsfModSrcArntOperとにより定義される。層内の全モジュレータは、特定の組になったこれらの3つの列挙型を有していなければならない。第２のモジュレータが、同一の層に関し先のモジュレータとして同一の３つの列挙型に一致すると、第１のモジュレータは無視される。
【０１６４】
PMODサブシャンク内のモジュレータがIMODサブシャンク内のモジュレータに対し付加的に相対的モジュレータとして作用する。言い換えれば、PMODモジュレータが、IMODモジュレータの値を増減させることができる。
【０１６５】
PMODサブシャンクがない状態の場合には、すなわち大きさが10バイトの倍数でない場合には、ファイルは構造的に不良状態として拒絶されることになる。
７．５  PGENサブシャンクPGENシャンクは、サウンドフォントコンパチブルファイル内の各プリセット層に関するプリセット層ジェネレータのリストを含む必要とされるシャンクである。これは長さが常時４バイトの倍数であり、構造体に従って、各プリセット層に関する１つか、２つ以上のジェネレータ（グローバル層が１つだけのモジュレータオを含む場合を除いて）にタミーナルレコードを加算したものを含む。
0004679678.tif 000013
ここで型が決定される：
0004679678.tif 000014
【０１６６】
sfGenOperは、SFGenerator列挙型値のうちの一つの値である。未知または定義されていない値は無視される。この値は、ジュネレータの型が示されることを表す。
【０１６７】
genAmountは、特定のジェネレータに指定されるべき値であり、3つのフォーマットとできることを示す。所定のジェネレータは、最低および最高値を有するMIDI速度のMIDIキー数の範囲を特定する。別のジェネレータは、符合が付けられていないWORD値を特定する。しかしながら、ほとんどのジェネレータは、符合がつけられた16ビットSHORT値を特定する。
【０１６８】
プリセット層のsGenNdxは、プリセット層に関する第１のジェネレータを示す。層がグローバル層ではない場合には、リスト内の最後のジェネレータが「インスツルメント」ジェネレータであり、この値は、その層に関連したインスツルメントに対するポインタである。「キー範囲」ジェネレータがプリセット層に存在する場合には、これは、常に該プリセット層に関するリスト内の第１のジェネレータとなる。「速度範囲」ジェネレータがプリセット層に関し存在する場合には、キー範囲ジェネレータにより先行されるだけである。インスツルメントジェネレータの後にジェネレータがある場合には、これらは無視される。
【０１６９】
ジェネレータがsfGenOperにより定義される。層内の全ジェネレータが特定のsfGenOper列挙型有する。第２のジェネレータが、同一層に関する先のジェネレータとして同一のsfGenOper列挙型に一致する場合には、第１のジェネレータは無視される。
【０１７０】
PGENサブシャンク内のジェネレータがIGENサブシャンク内のジェネレータに対し付加的なものとして作用する。言い換えれば、PGENジェネレータは、IGENジェネレータの値を増減する。
７．６  INSTサブシャンク
INSTサブシャンクは、サウンドフォントコンパチブルファイル内の全インスツルメントを列挙する必要とされるサブシャンクである。これは長さが常時22バイトの倍数であり、構造体に従って、各インスツルメントに関し１つのレコードとターミナルレコードに関し１つのレコードの最低２つのレコードを含む。
0004679678.tif 000015
【０１７１】
ASCIIキャラクタフィールドachInstNamegas、ASCIIで表示されたインスツルメントの名前を含んでおり、不使用のターミナルキャラクタには値ゼロのバイトで充填された状態になっている。特定のネームが、常にサウンドフォントコンパチブルバンク内の各インスツルメントに付与され、識別できるようにしなければならない。しかし、バンクが、もし同一名前を有するインスツルメントのエラー状態を含むことが読み取られる場合には、インスツルメントは捨てられるべきではない。これらは、読み出しとして保管されるか、もしくは優先的に特有の名前が付与されるか、のいずれかである。
【０１７２】
sInstBagNdxは、PGAGサブシャンク内のインスツルメントのスプリットリストに対するインデックスである。インスツルメントスプリットリストは、インスツルメントリストと同一の順位にあるので、インスツルメントバッグインデックスは、インスツルメントが増大するとともに、単調に増大する。IBAGサブシャンクのバイトの大きさは、ターミナルインスツルメントのwInstBagNdxの４倍に４を加算したものに等しくなる。インスツルメントバッグインデックスが単調ではなったり、多インスツルメントのsInstBagNdxがIBAGサブシャンクの大きさと適合しない場合には、ファイルが構造的に不良状態であり、ロード時に拒絶されるべきである。ターミナルインスツルメントを除いた全インスツルメントは、少なくとも１つのスプリットを有していなければならず、スプリットを有さないプリセットはいかなるものも無視されるべきである。
【０１７３】
ターミナルsflnstレコードは決してアクセスされず、ターミナルwInstBagNdxを形成するためだけに存在し、最後のインスツルメント内のスプリットの数を求めるようになっている。全別の値は、achInstNameを除いては、ゼロであるのが一般的であり、任意的には、インスツルメントの終了を表す「EOI」ともできる。
【０１７４】
INSTサブシャンクが存在しない、2つのレコード以下を含む場合には、あるいは、その大きさが22バイトの倍数ではない場合には、ファイルは構造的に不良状態として拒絶あれるであろう。instサブシャンク内に存在する全インスツルメントが、一般的にプリセット層にあてはまるが、孤児状態のインスツルメントを含むファイルは、必ずしも拒絶される必要はない。サウンドフォントコンパチブルの応用では、ユーザの好みに応じてこれらの孤児インスツルメントを任意的に無視したり、フィルタにかけることができる。
７．７  ＩＢＡＧサブチャンク
ＩＢＡＧサブチャンクは、サウンドフォントコンパティブルファイル内の全ての楽器不和をリストする必要とされたサブチャンクである。ＩＢＡＧサブチャンクは、常時、長さが複数の４バイトであり、各楽器不和の１つのレコード及び構造に従ってターミナルレーヤーの１つのレコードを収容する。
0004679678.tif 000016
【０１７５】
或る楽器の第１不和は、かかる楽器のwInstBagNdxに配置される。楽器の不和の数は、次の楽器のwInstBagNdxと現在のwInstBagNdxとの間の差によって判定される。
【０１７６】
word wInstGenNdxは、ＩＧＥＮサブチャンクのジェネレータの楽器不和のリストのインデックスであり、wInstModNdxは、ＩＭＯＤサブチャンクのモジュレータのリストのインデックスである。ジェネレータ、モジュレータのリストの両方が楽器、不和リストと同じオーダにあり、これらのインデックスは不和の増大と共に単調に増大することになる。バイトのＩＭＯＤのサイズは、ターミナルの楽器のwGenNdxプラス10の10倍に等しくなり、バイトのＩＧＥＮサブチャンクのサイズは、ターミナルの楽器のwGenNdxプラス４の４倍に等しくなる。ジェネレータ又はモジュレータのインデックスが、非単調であるか、或いは、各ＩＧＥＮ又はＩＭＯＤサブチャンクのサイズに合致しないならば、ファイルは、構造的に欠陥があり、ロード時間でリジェクトされる筈である。
【０１７７】
楽器が１つ以上の不和を有する場合には、第１不和はグローバル不和であるかも知れない。グローバル不和は、リストの最後のジェネレータがサンプルIDジェネレータでないことによって判定される。全てのジェネレータリストjoint E-mu/Creative Technology Center-CONFIDENTLAL-Rage 22-Printed 8/11/95 at 6:08 PMは、ジェネレータはなくモジュレータのみがあるグローバル不和が存在する場合を除いて、少なくとも１つのジェネレータを含まなければならない。
【０１７８】
第１不和以外の不和が最後のジェネレータとしてのサンプルIDジェネレータを欠く場合には、かかる不和は無視すべきである。モジュレータもジェネレータもないグローバル不和もまた無視すべきである。
【０１７９】
ＩＢＡＧサブチャンクが欠けている、または、そのサイズが複数の４バイトでない場合には、ファイルは構造的非サウンドとしてリジェクトすべきである。
７．８  ＩＭＯＤサブチャンク
ＩＭＯＤサブチャンクは、サウンドフォントコンパティブルファイル内の全ての楽器不和モジュレータをリストする必要とされたサブチャンクである。ＩＭＯＤサブチャンクは、常時、長さが複数の１０バイトであり、構造に従って０又は１以上のモジュレータ及びターミナルレコードを収容する。
0004679678.tif 000017
【０１８０】
不和のwInstModNdxは、かかる不和の第1モジュレータを示し、不和に関して存在するモジュレータの数はは、次の高い不和のwInstModNdxと現在の不和のwModNdxとの間の差によって判定される。０の差は、この不和にモジュレータがないことを示す。
【０１８１】
sfModSrcOperは、SFModulatorのエニュメレーションタイプの値のうちの１つの値である。知られていない又は定められていない値は無視される。この値は、モジュレータのデータの源を示す。
【０１８２】
stModDestOperは、SFGeneratorのエニュメレーションタイプの値のうちの１つの値である。この値は、モジュレータのデスティネーションを示す。
【０１８３】
shortmodAmountは、ソースがデスティネーションをモジュレートする度合いを示すサイン化された値である。０値は一定量がないことを示す。
【０１８４】
sfModAmtSrcOperは、SFModulatorのエニュメレーションタイプの値のうちの１つの値である。知られていない又は定められていない値は無視される。この値は、ソースがデスティネーションをモジュレートする度合いが、特定のモジュレーションソースによって制御されることになる。
【０１８５】
sfModTransOperは、SFTransformのエニュメレーションタイプの値のうちの１つの値である。知られていない又は定められていない値は無視される。この値は、特定タイプのトランスフォームが、モジュレータへの適用前に、モジュレーションソースに適用されることを示す。
【０１８６】
joint E-mu/Creative Technology Center-CONFIDENTLAL-Rage 23-Printed 8/11/95 at 6:08 PMターミナルレコードは、在来的には、全てのフィールドで０を含み、常時無視される。
【０１８７】
モジュレータは、そのsfModSrcOperと、sfModDesOperと、sfModSrcAmcOperとによって定義される。スプリット内のすべてのモジュレータは、唯一の組のこれらの３つのエニュメレータを有する。もしも同じスプリットを備えた前のモジュレータと同じ３つのエニュメレータをもつ第２モジュレータに遭遇した場合には、第１モジュレータは無視される。
【０１８８】
ＩＭＯＤサブシャンクにおけるモジュレータは絶対的である。これは、ＩＭＯＤモジュレータが、省略時モジュレータに加わるのではなく、省略時モジュレータに代わって用いられることを意味する。
【０１８９】
もしもＩＭＯＤサブシャンクが失われていたり、或いは、そのサイズが１０バイトの倍数でない場合には、ファイルは、構造的に信用できないものとして拒絶されるべきである。
７．９  ＩＧＥＮサブシャンク
ＩＧＥＮサブシャンクは、SoundFontコンパチブルファイル内の各インストメントスプリットのためのスプリットジェネレータのリストを収容した必須のシャンクである。ＩＧＥＮサブシャンクは、常に長さが４バイトの倍数であり、（モジュレータだけを収容するグローバルスプリットを除いて）各スプリットのための１以上のジェネレータと、以下の構造に従ったターミナルレコードとを収容する：
0004679678.tif 000018
【０１９０】
ここで、タイプは既述のＰＧＥＮ層におけるように定義される。
【０１９１】
genAmountは、特定のジェネレータに割り当てられるべき値である。これは、３つのフォーマットからなることができることに留意されたい。あるジェネレータが、最大および最小値をもつＭＩＤＩ速度のＭＩＤＩキーナンバーの範囲を特定する。他のジェネレータが無署名のＷＯＲＤ値を特定する。しかしながら、大部分のジェネレータは、署名された１６ビットＳＨＯＲＴ値を特定する。
【０１９２】
スプリットのwInstGenNdxは、そのスプリットのための第１ジェネレータを指す。スプリットがグローバルスプリットでない場合には、リストにおける最後のジェネレータは、“sampleID”ジェネレータであり、“sampleID”ジェネレータの値は、そのスプリットに関連したサンプルのポインターである。もしも“key range”ジェネレータがスプリットのために存在するならば、“key range”ジェネレータは常にそのスプリットのためのリストにおける第１ジェネレータである。もしも“velocity range”ジェネレータがそのスプリットのために存在するならば、“velocity range”ジェネレータは、key rangeジェネレータによって先行されるだけである。ジェネレータがsanlpleIDジェネレータの後にくる場合には、それらのジェネレータは無視される。
【０１９３】
ジェネレータは、sfGenOperによって定義される。スプリット内のすべてのジェネレータは、唯一のsfGenOperエニュメレータである。もしも同じスプリットを備えた前のジェネレータと同じsfGenOperエニュメレータをもつ第２ジェネレータに遭遇した場合には、第１ジェネレータは無視される。
【０１９４】
ＩＧＥＮサブシャンクにおけるジェネレータは性質において絶対的である。これは、ＩＧＥＮジェネレータが、ジェネレータのための省略時値に加わるのではなく、ジェネレータのための省略時値に代わって用いられることを意味する。
【０１９５】
もしもＩＧＥＮサブシャンクが失われていたり、或いは、そのサイズが４バイトの倍数でない場合には、ファイルは、構造的に信用できないものとして拒絶されるべきである。もしもkey rangeジェネレータが存在し、かつ、第１ジェネレータでない場合には、このkey rangeジェネレータは無視されるべきである。もしもvelocity rangeジェネレータが存在し、かつ、key rangeジェネレータ以外のジェネレータによって先行されている場合には、このvelocity rangeジェネレータは無視されるべきである。もしも非グローバルリストがsampleIDジェネレータに終わっていない場合には、スプリットは無視されるべきである。もしもsampleIDジェネレータ値がターミナルsampleIDジェネレータ以上である場合には、ファイルは構造的に信頼できないものとして拒絶されるべきである。
７．１０  ＳＨＤＲサブチャンク
ＳＨＤＲチャンクは、ｓｍｐｌサブチャンク及びいかなる参照されたＲＯＭサンプル内の全てのサンプルをリストする所望のサブチャンクである。それは、通常、長さが複数の４６バイトであり、各サンプルパルスに関する１レコードを、その構造によるターミナルレコードに包含する。
0004679678.tif 000019
【０１９６】
アスキーキャラクタ・フィールド・ａｃｈＳａｍｐｌｅＮａｍｅは、０値バイトで満たされた使用されていないターミナルキャラクタを備える、ＡＳＣＩＩにおけるサンプル表現の名前を含む。一意性の名前が、識別を可能にするために、ＳｏｕｎｄＦｏｎｔ互換バンクに各サンプルを通常割り当てるべきである。しかしながら、バンクが、同一の名前を持ったサンプルの誤った状態を包含する読み出しならば、サンプルは記述されるべきではない。それらは、読み出しとして保存されるべきか、又は、優先的に一意的にリネームされるべきかのいずれかである。
【０１９７】
ダブルワードｄｗＳｔａｒｔはインデックスを含み、例えば、サンプルデータフィールドの開始から、このサンプルの第１データポイントまでである。
【０１９８】
ダブルワードｄｗＥｎｄは、インデックスを含み、例えば、サンプルデータフィールドの開始から、このサンプルに続く０値データポイントの４６のセットの第１までである。
【０１９９】
ダブルワードｄｗＳｔａｒｔｌｏｏｐは、インデックスを含み、例えば、サンプルデータフィールドの開始から、このサンプルのループにおける第１のデータポイントまでである。
【０２００】
ダブルワードｄｗＥｎｄｌｏｏｐはインデックスを含み、例えば、サンプルデータフィールドの開始から、このサンプルのループに続く第１のデータポイントまでである。これは、第１のループデータポイントと「等しい」データポイントであることを注意し、ポータブル人工フリーループを作り出し、スタートループとエンドループの両方の回りの１６近位データポイントが同一であるべきである。
【０２０１】
ｄｗＳｔａｒｔ、ｄｗＥｎｄ、ｄｗＳｔａｒｔｌｏｏｐ及びｄｗＥｎｄｌｏｏｐの値は、ＳｏｕｎｄＦｏｎｔ互換バンクに含まれ、又は、サウンドＲＯＭに参照されるサンプルデータフィールドレンジ内に全てあるべきである。また、データを再生することができる種々のハードウェアプラットフォームを可能にするために、サンプルは、最小の４８データポイントの長さと、３２データポイントの最小ループサイズと、ｄｗＳｔａｒｔｌｏｏｐの前、及び、ｄｗＥｎｄｌｏｏｐの後に最小の８有効ポイントを有する。従って、ｄｗＳｔａｒｔは、ｄｗＳｔａｒｔｌｏｏｐ−７以下でなくてはならず、ｄｗＳｔａｒｔｌｏｏｐはｄｗＥｎｄｌｏｏｐ−３１以下でなくてはならず、ｄｗＥｎｄｌｏｏｐは、ｄｗＥｎｄ−７以下でなくてはならない。もしこれらの制約が、満たされていないならば、ハードウェアが、所定のパラメータに関して人工フリープレイバックをサポートできないとき、サウンドは任意に再生されないであろう。
【０２０２】
ダブルワードｄｗＳａｍｐｌｅＲａｔｅは、サンプルレートの周波数を含み、このサンプルが、獲得され、又は、それが最も最近コンバートされたものである。５００００より大きな値又は４００より小さな値は、あるハードウェアプラットフォームによって再生可能ではなく、避けられるべきである。０の値は、不正である。不正又は非実用的な値に出くわしたならば、最も近い実用的な値が用いられるべきである。
【０２０３】
バイトｂｙＯｒｉｇｉｎａｌＰｉｔｃｈは、サンプルのレコードピッチのＭＩＤＩキー番号を包含する。例えば、インストゥルメンタル演奏ミドルＣ（２６１．６２Ｈｚ）のレコーディングは、６０の値をレシーブすべきである。この値は、サンプルに関するデフォルト「ルートキー」として使用されており、この場合、例えば、ノート番号６０に関するコマンドのＭＩＤＩキーは、そのオリジナルピッチでサウンドを再生するであろう。アンピッチサウンドに関しては、２５５の在来の値が使用されるべきである。１２８と２５４の間の値は、不正である。不整な値又は２５５の値に出くわしたときはいつでも、値６０が使用されるべきである。
【０２０４】
キャラクタｃｈＰｉｔｃｈＣｏｒｒｅｃｔｉｏｎは、プレイバックのサンプルに適用されるべきセントにおけるピッチ補正を包含する。このフィールドの目的は、サンプルレコーディングプロセス中に、いかなるピッチエラーを補償することである。補正値は、適用されるべき補正のものである。例えば、サウンドが４セントシャープならば、それを４セントフラットにもっていく補正が要求され、従って、値は−４であるべきである。
【０２０５】
ｓｆＳａｍｐｌｅにおける値は、８つの定義された値で数え上げられる、即ち、ｍｏｎｏＳａｍｐｌｅ＝１、ｒｉｇｈｔＳａｍｐｌｅ＝２、ｌｅｆｔＳａｍｐｌｅ＝４、ｌｉｎｋｅｄＳａｍｐｌｅ＝８、ＲｏｍＭｏｎｏＳａｍｐｌｅ＝３２７６９、ＲｏｍＲｉｇｈｔＳａｍｐｌｅ＝３２７７０，ＲｏｍＬｅｆｔＳａｍｐｌｅ＝３２７７２，及び、ＲｏｍＬｉｎｋｅｄＳａｍｐｌｅ＝３２７７６である。サンプルがＲＯＭにあるならば、１６ビット値のビット１５がセットされ、ＳｏｕｎｄＦｏｎｔ互換バンクに含まれるならば、リセットされるようにエンコードされることが理解できる。ワードの４ＬＳビットが、次いで、ｍｏｎｏ、ｌｅｆｔ、ｒｉｇｈｔ、又は、ｌｉｎｋｅｄを含む排他的なセットである。
【０２０６】
サウンドがＲＯＭサンプルとしてフラグが立てられ、有効なＩＲＯＭサブチャンクが含まれていないならば、ファイルは構造的に欠陥があり、ロード時間で拒絶されるべきである。
【０２０７】
ｓｆＳａｍｐｌｅがｍｏｎｏサンプルを示すならば、次いで、ｗＳａｍｐｌｅＬｉｎｋは定義されておらず、その値は典型的には０であるべきであるが、値にかまわずに無視されるべきである。ｓｆＳａｍｐｌｅＴｙｐｅがｌｅｆｔ又はｒｉｇｈｔサンプルを示すならば、次いで、ｗＳａｍｐｌｅＬｉｎｋは、それぞれ、関連するｒｉｇｈｔ又はｌｅｆｔステレオサンプルのサンプルヘッダインデックスである。両サンプルが、適切な方向に向けられたそれらのパンを伴って、一緒に演奏されるべきである。リンクされたサンプルタイプは、ＳｏｕｎｄＦｏｎｔ２仕様に、現在完全に定義されていないが、ｗＳａｍｐｌｅＬｉｎｋを使用するサンプルの循環的にリンクされたリストを最終的にサポートする。
【０２０８】
ターミナルサンプルレコードは決して参照されないが、サンプルのエンドを示す任意の「ＥＯＳ」であってよい、ａｒｃＳａｍｐｌｅＮａｍｅを除いて、在来通り完全に０である。ｓｍｐｌサブチャンクの全てのサンプルプレゼントは、インストウルメントによって典型的に参照されるが、しかし、いかなる「親の無い」サンプルを含むファイルは拒絶されない。ＳｏｕｎｄＦｏｎｔ互換アプリケーションは、ユーザプリファレンスに従って、それらの親の無いサンプルを任意に無視することができ、又は、流し出すことができる。
【０２０９】
ＳＨＤＲサブチャンクが除かれ、又は、複数の４６バイトでないサイズならば、ファイルは、構造的に不合理であるとして拒絶されるべきである。
【０２１０】
付録ＩＩ
Ｓ．１．２．定義されたジェネレータエニュメレータ
SoundFont 2.00ジェネレータの網羅的リストおよびそれらの厳密な定義は、次のようである。
０  startAddrsOffset
このインストルメントのためにプレイされるべき最初のサンプルに対するStartサンプルヘッダパラメータを越えたサンプルにおけるオフセット。例えば、Startが７であり、startAddrOffsetが２であった場合には、そのプレイされる最初のサンプルはサンプル９であろう。
１  endAddrsOffset
このインストルメントのためにプレイされるべき第１のサンプルに対するEndサンプルヘッダパラメータを越えたサンプルにおけるオフセット。例えば、もし、Endが１７であり、endAddrsOffsetが２であった場合には、プレイされる最後のサンプルは、サンプル１５であろう。
２  startloopADDRSOffset
このインストルメントのためにループにおいて繰り返されるべき最初のサンプルに対するStartloopサンプルヘッダパラメータを越えたサンプルにおけるオフセット。例えば、もし、Startloopが１０であり、startloopADDROffsetが−１であった場合には、その最初の繰り返されるループサンプルは、サンプル９であろう。
３  endloopAddrsOffset
このインストルメントのためのループのStartloopサンプルに等価と考えられるサンプルに対するEndlooPサンプルヘッダパラメータを越えたサンプルにおけるオフセット。例えば、もし、Endloopが１５であり、endloopAddrOffsetが２であった場合には、サンプル１７が、Startloopサンプルと等価であると考えられ、したがって、サンプル１６がルーピング中にStartloopに実効的に先んずるであろう。
４  startAddrsCoarseOffset
このインストルメントにおいてプレイされるべきStartサンプルヘッダパラメータおよび最初のサンプルを越えた３２７６８のサンプルインクレメントにおけるオフセット。このパラメータは、startAddrsCoarseOffsetパラメータに加えられる。例えば、もし、Startが５であり、startAddrOffsetが３であり、startAddrCoarseOffsetが２であった場合には、プレイされる最初のサンプルは、サンプル６５５４４であろう。
５  modLfoToPitch
これは、ModulationLFOのフルスケールエクスカーションがピッチに影響するセントにおける度合いである。正の値は、正のLFOエクスカーションがピッチを増大させることを示しており、負の値は、正のエクスカーションがピッチを減少させることを示す。ピッチは、常に、対数関数的に修正される。すなわち、偏差は、Ｈｚにおけるのでなく、セントにおけるセミトーンおよびオクターブである。例えば、１００の値は、ピッチが最初に１セミトーン上昇し、次に、１セミトーン下降することを示している。
６  vibLfoToPitch
これは、VibratoLFOのフルスケールエクスカーションがピッチに影響するセントにおける度合いである。正の値は、正のLFOエクスカーションがピッチを増大させることを示しており、負の値は、正のエクスカーションがピッチを減少させることを示している。ピッチは、常に、対数関数的に修正される。すなわち、偏差は、Ｈｚにおけるのでなく、セントにおけるセミトーンおよびオクターブである。例えば、１００の値は、ピッチが最初に１セミトーン上昇し、次に、１セミトン下降することを示している。
７  modEnvToPitch
これは、Modulation Envelopeのフルスケールエクスカーションがピッチに影響するセントにおける度合いである。正の値は、ピッチの増大を示し、負の値は、ピッチの減少を示している。ピッチは、常に、対数関数的に修正される。すなわち、偏差は、Ｈｚにおけるのでなく、セントにおけるセミトーンおよびオクターブである。例えば、１００の値は、ピッチがエンベローブピークで１セミトーン上昇することを示している。
８  initialFilterFc
これは、絶対セント単位におけるローパスフィルタのカットオフおよび共振周波数である。ローパスフィルタは、Ｈｚにおけるポール周波数がInitial Filter Cutoffパラメータによって定められる二次共振ポール対として定義される。カットオフ周波数が２０kHzを越え、且つフィルタのＱ（共振）が零であるときに、フィルタは、その信号に影響しない。
９  initialFilterQ
これは、フィルタ共振がカットオフ周波数で示すセンチベルにおけるＤＣゲイン以上の高さである。零またはそれより小さい値は、フィルタが共振でなく、零が特定されているときに、カットオフ周波数（ポール角）が零より小さいことを示している。ＤＣでのフィルタゲインもまた、このパラメータによって影響され、ＤＣでのゲインは、特定ゲインの半分だけ減少させられる。例えば、１００の値の場合、ＤＣでのフィルタゲインは、単位ゲイン以下５ｄＢであり、共振ピークの高さは、ＤＣゲイン以上１０ｄＢまたは単位ゲイン以上５ｄＢである。また、ここで注意すべきことは、もし、initialFilterQが零またはそれ以下にセットされる場合には、そのフィルタ応答は、カットオフ周波数が２０kHzであるならば、フラットであり、単位ゲインである。
１０  modLfoToFilterFc
これは、Modulation LFOのフルスケールエクスカーションがフィルタカットオフ周波数に影響するセントにおける度合いである。正の数は、正のLFOエクスカーションがカットオフ周波数を増大させることを示しており、負の数は、正のエクスカーションがカットオフ周波数を減少させることを示している。フィルタカットオフ周波数は、常に、対数関数的に修正される。すなわち、偏差は、Ｈｚにおけるのでなく、セントにおけるセミトーンおよびオクターブである。例えば、１２００の値は、カットオフ周波数が最初に１オクターブ上昇し、次に、１オクターブ下降することを示している。
１１  modEnvToFilterFc
これは、Modulation Envelopeのフルスケールエクスカーションがフィルタカットオフに影響するセントにおける度合いである。正の数は、カットオフ周波数の増大を示し、負の数は、フィルタカットオフの減少を示している。フィルタカットオフは、常に、対数関数的に修正される。すなわち、その偏差は、Ｈｚにおけるのでなく、セントにおけるセミトーンおよびオクターブである。例えば、１０００の値は、カットオフ周波数がエンベロープアタックピークでの１オクターブ上昇することを示している。
１２  endAddrsCoarseOffset
このインストルメントにおいてプレイされるべきEndサンプルヘッダパラメータおよび最後のサンプルを越えた３２７６８のサンプルインクリメントにおけるオフセット。このパラメータは、endAddrsOffsetパラメータに加えられる。例えば、もし、Endが６５５３６であり、startAddrOffsetが−３であり、startAddrCoarseOffsetが−１である場合には、ブレイされる最後のサンプルは、サンプル３２７６５であろう。
１３  modLfoToVolume
これは、ModulationLFOのフルスケールエクスカーションがボリュームに影響するセンチベルにおける度合いである。正の数は、正のLFOエクスカーションがボリュームを増大させることを示しており、負の数は、製のエクスカーションがボリュームを減少させることを示している。ボリュームは、常に、対数関数的に修正される。すなわち、その偏差は、直線振幅におけるのでなく、デシベルにおけるものである。例えば、１００の値は、ボリュームが最初に１０ｄＢ上昇し、次に、１０ｄＢ下降することを示している。
１４  unusedl
未使用、予備。もし、遭遇する場合には、無視して下さい。
１５  chorusEffectsSend
これは、ノートのオーディオ出力がコーラス効果プロセッサへ送られる0.1％ユニットにおける度合いである。０％またはそれ以下の値は、このノートから信号が送られないことを示しており、１００％またはそれ以上の値は、そのノートがフルレベルで送られることを示している。ここで注意すべきことは、このパラメータは、その出力の“ドライ”または処理されていない部分へ送られるこの信号の量に影響を持たないということである。例えば、２５０の値は、その信号がコーラス効果プロセッサへフルレベルの２５パーセント（フルレベルから１２ｄＢの減衰）で送られることを示している。
１６  reverbEffectsSend
これは、ノートのオーディオ出力がリバーブ効果プロセッサに送られる0.1％ユニットにおける度合いである。０％またはそれ以下の値は、このノートから信号が送られないことを示している。１００％またはそれ以上の値は、そのノートがフルレベルで送られることを示している。ここで注意すべきことは、このパラメータは、その出力の“ドライ”または処理されていない部分へ送られるこの信号の量に影響を持たないということである。例えば、２５０の値は、その信号がリバーブ効果プロセッサへフルレベルの２５パーセント（フルレベルから１２ｄＢの減衰）で送られることを示している。
１７  pan
これは、ノートの“ドライ”オーディオ出力が左または右出力へ配分される0.1％ユニットにおける度合いである。−５０％またはそれ以下の値は、その信号が左出力へ全部送られ、左へは送られないことを示している。＋５０パーセントまたはそれ以上の値は、そのノートが右へ全部送られ、左へは送られないことを示している。零の値は、その信号を左と右との間の中心に置くようにする。例えば、−２５０の値は、その信号がフルレベルの７５％で左出力へ、フルレベルの２５％で右出力へ送られることを示している。
１８  unused2
未使用、予備。もし、遭遇する場合には、無視して下さい。
１９  unused3
未使用、予備。もし、遭遇する場合には、無視して下さい。
２０  unused4
未使用、予備。もし、遭遇する場合には、無視して下さい。
２１  delayModLFO
これは、Modulation LFOが零値からその上方ランプを始めるまでのキーオンからの絶対タイム、セントにおける遅延時間である。０の値は、１秒遅延を示している。負の値は、１秒よりも小さい遅延を示している。正の値は、１秒よりも長い遅延を示している。通常、最も負の数（−３２７６８）は、遅延なしを示している。例えば、１０ミリ秒の遅延は、１２００log2（.01）＝−７９７３であろう。
２２  freqModLFO
これは、Modulation LFOのトライアングル期間の絶対セントにおける周波数である。零の値は、8.176Ｈｚの周波数を示している。負の値は、8.176Ｈzより低い周波数を示している。正の値は、8.176Ｈｚより高い周波数を示している。例えば、１０ｍＨｚの周波数は、１２００log2（.01/8.176）＝−１１６１０であろう。
２３  delayVibLFO
これは、Vibrato LFOが零値から上方ランプを開始するまでのキーオンからの絶対タイムセントにおける遅延時間である。０の値は、１秒遅延を示している。負の値は、１秒より小さい遅延を示している。正の値は、１秒より長い遅延を示している。最も負の数（−３２７６８）は、通常、遅延なしを示している。例えば、１０ミリ秒の遅延は、１２００log2（.01）＝−７９７３であろう。
２４  freqVibLFO
これは、Vibrato LFOのトライアングル期間の絶対セントにおける周波数である。零の値は、8.176Ｈｚの周波数を示している。負の値は、8.176Ｈｚより低い周波数を示しており、正の値は、8.176Ｈｚより高い周波数を示している。例えば、１０ｍＨｚの周波数は、１２０ 0log2（.01/8.176）＝−１１６１０であろう。
２５  delayModEnv
これは、Modulationエンベローブのアッタクフェーズのスタートとキーオンとの間の絶対タイムセントにおける遅延時間である。０の値は、１秒遅延を示している。負の値は、１秒より小さい遅延を示している。正の値は、１秒より長い遅延を示している。最も負の数（−３２７６８）は、通常、遅延なしを示している。例えば、１０ミリ秒の遅延は、１２００log2）.01）＝−７９７３であろう。
２６  attackModEnv
これは、Modulation Envelope Delay Timeの終わりから、Modulation Envelope値がそのピークに達するまでの絶対タイムセントにおける時間である。ここで注意すべきことは、アタックは、“コンベックス”であり、その曲線は、公称、デシベルまたはセミトーンパラメータに適用されるときに、その結果がそれぞれ振幅またはＨｚにおいて直線であるようなものであるということである。０の値は、１秒アタック時間を示している。負の値は、１秒より短い時間を示しており、正の値は、１秒より長い時間を示している。最も負の数（−３２７６８）は、通常、瞬時アタックを示している。例えば、１０ミリ秒のアタック時間は、１２００log2（.01）＝−７９７３であろう。
２７  holdModEnv
これは、アタックフェーズの終わりから減衰フェーズへ入るまでの絶対タイムセントにおける時間であり、この時間中は、エンベロープ値がそのピークに保持される。０の値は、１秒保持時間を示している。負の値は、１秒より短い時間を示している。正の値は、１秒よりも長い時間を示している。最も負の数（−３２７６８）は、通常、保持フェーズなしを示している。例えば、１０ミリ秒の保持時間は、１２００log2（.01）＝−７９７３であろう。
２８  decayModBnv
これは、減衰フェーズ中のModulation Envelope値における１００％変化のための絶対タイムセントにおける時間である。Modulation Bnvelopeに対して、減衰フェーズは、維持レベルに向かって直線的に傾斜する。もし、維持レベルがゼロであった場合には、Modulation Envelope Decay時間は、減衰フェーズにて経過する時間であろう。０の値は、零維持レベルに対する１秒減衰時間を示している。負の値は、１秒より短い時間を示している。正の値は、１秒よりも長い時間を示している。例えば、１０ミリ秒の減衰時間は、１２００log2（.01）＝−７９７３であろう。
２９  sustainModBnv
これは、減衰フェーズ中にModulation Envelope値が傾斜するレベルの減少を0.1％単位にて表したものである。Modulation Envelopeに対して、維持レベルは、フルスケールのパーセントにて最も良く表される。ボリュームエンベロープと協調させるために、維持レベルは、フルスケールからの減少として表される。０の値は、維持レベルがフルレベルであることを示しており、これは、減衰時間とは関係なしに、減衰フェーズの零持続時間を意味している。正の値は、対応するレベルまでの減衰を示している。零よりも小さい値は、ゼロと解釈されるべきである。１０００より上の値は、１０００として解釈されるべきである。例えば、ピークの４０％絶対値に対応する維持レベルは、６００であろう。
３０  releaseModBnv
これは、レリーズフェーズ中のModulation Envelope値の１００％変化のための絶対タイムセントにおける時間である。Modulation Envelopeに対して、レリーズフェーズは、現在のレベルから零に向かって直線的に傾斜する。もし、現在のレベルがフルスケールであった場合には、Modulation Envelope Timeは、零値に達するまでにレリーズフェーズに費やされる時間であろう。０の値は、フルレベルからのレリーズに対する１秒減衰時間を示している。負の値は、１秒よりも短い時間を示しており、正の値は、１秒より長い時間を示している。例えば、１０ミリ秒のレリーズ時間は、１２００log2（.01）：−７９７３であろう。
３１  keynumToModEnvHold
これは、Modulation Envelopeの保持時間がMIDIキーナンバーを増大することによって減少されるキーナンバー単位当たりのタイムセントにおける度合いである。キーナンバー６０での保持時間は、常に、不変である。単位スケーリングは、１００の値がキーボードをトラックする保持時間を与え、すなわち、上方オクターブにより、保持時間が半分とさせられるようにするようなものである。例えば、もし、Modulation Envelope Hold Timeが７９７３＝１０ミリ秒であり、Key Number to Mod Env Holdが５０であり、キーナンバー３６がプレイされていた時には、保持時間は、２０ミリ秒であろう。
３２  keynumToModEnvDecay
これは、Modulation Envelopeの保持時間がMIDIキーナンバーを増大させることによって減少されるキーナンバー当たりのタイムセントにおける度合いである。キーナンバー６０での保持時間は、常に不変である。単位スケーリングは、１００の値がキーボードをトラックする保持時間を与え、すなわち、上方オクターブにより、保持時間が半分とさせられるようにするようなものである。例えば、もし、Modulation Envelope Hold Timeが７９７３＝１０ミリ秒であり、Key Number to Mod Env Holdが５０であり、キーナンバー３６がプレイされていた時には、保持時間は、２０ミリ秒であろう。
３３  遅延ＶｏｌＥｎｖ
これは、キー・オンからボリューム・エンベロープのアタック相のスタートまでの遅延時間を絶対タイムセントであらわしたものである。０の値は、１秒の遅延をあらわす。負の値は、１秒未満の遅延をあらわす。正の値は、１秒より大きい遅延をあらわす。最大の負の数（−３２７６８）は、憤習的に遅延のないことを示す。例えば、１０ｍ秒の遅延は、１２００ｌｏｇ２（．０１）＝−７９７３となる。
３４  アタックＶｏｌＥｎｖ
これは、ボリューム・エンベロープ遅延時間の終わりからボリューム・エンベロープの値がピークに達する点までの時間を絶対タイムセントであらわしたものである。アタックは、「凸面」であり、曲線は、名目的にデシベル・ボリューム・パラメーターに適用したときに結果の大きさが線形となるようなものであることに留意が必要である。負の値は、負の値は、１秒未満の時間をあらわす。正の値は、１秒より大きい時間をあらわす。最大の負の数（−３２７６８）は、慣習的に瞬間的なアタックを示す。例えば、１０ｍ秒のアタック時間は、１２００ｌｏｇ２（．０１）＝−７９７３となる。
３５  ホールドＶｏｌＥｎｖ
これは、アタック相の終わりからディケー相に入る間での時間を絶対タイムセントであらわしたものである。０の値は、１秒のホールド時間をあらわす。負の値は、１秒未満の時間をあらわす。正の値は、１秒より大きい時間をあらわす。最大の負の数（−３２７６８）は、慣習的に遅延のないことを示す。例えば、１０ｍ秒のホールド時間は、１２００ｌｏｇ２（．０１）＝−７９７３となる。
３６  ディケーＶｏｌＥｎｖ
これは、ディケー相の間のボリューム・エンベロープの値の１００％の変化のための時間を絶対タイムセントであらわしたものである。ボリューム・エンベロープに関して、ディケー相は、持続レベルに向かって直線的に飛び跳ね（ランプし）、各時間単位ごとに一定のｄＢ変化を生じさせる。持続レベルが−１００ｄＢとすると、ボリューム・エンベロープ・ディケー時間は、ディケー相で費やされた時間となる。０の値は、ゼロの持続レベルに対する１秒のディケー時間をあらわす。負の値は、１秒未満の時間をあらわす。正の値は、１秒より大きい時間をあらわす。例えば、１０ｍ秒のディケー時間は、１２００ｌｏｇ２（．０１）＝−７９７３となる。
３７  持続ＶｏｌＥｎｖ
これは、ディケー相の間にボリューム・エンベロープの値が飛び跳ねるレベルの低下をセンチベルであらわしたものである。ボリューム・エンベロープに関して、持続レベルは、目盛りいっぱいの値からの減衰をｃＢであらわすのが最善である。０の値は、持続レペルがいっぱいのレベルであることをあらわし、これは、ディケー時間のいかんにかかわらずディケー相の持続時間がゼロであることを意味する。正の値は、対応するレベルへのディケーを示す。ゼロより小さい値は、ゼロと解釈される。慣習的に、１０００は、いっぱいの減衰あらわす。例えば、ピークより絶対値で１２ｄＢ低い値に対応する持続レベルは、１２０となる。
３８  レリースＶｏｌＥｎｖ
これは、レリース相の問のボリューム・エンベロープの値の１００％の変化のための時間を絶対タイムセントであらわしたものである。ボリューム・エンベロープに関して、レリース相は、現在のレベルからゼロに向かって直線的に飛び跳ね（ランプし）、各時間単位ごとに一定のｄＢ変化を生じさせる。現在のレベルが目盛りいっぱいの値とすると、ボリューム・エンベロープ・レリース時間は、−１００ｄＢの減衰に達するまでにレリース相で費やされた時間となる。０の値は、いっぱいのレベルからのレリースのための１秒のディケー時間をあらわす。負の値は、１秒未満の時間をあらわす。正の値は、１秒より大きい時間をあらわす。例えば、１０ｍ秒のレリース時間は、１２００ｌｏｇ２（．０１）＝−７９７３となる。
３９  ＶｏｌＥｎｖホールドへのキーナム
これは、ＭＩＤＩキーナンバーを増大させることによってボリューム・エンベロープのホールド時間が減少する程度をキーナンバー単位あたりのタイムセントであらわしたものである。キーナンバー６０でのホールド時間は、常に変化しない。単位目盛は、１００の値がキーボードに追随するホールド時間となるように、すなわち上方に１オクターブ移動するとホールド時間が半減するように設定される。例えば、ボリューム・エンベロープ・ホールド時間が−７９７３＝１０ｍ秒でＶｏｌＥｎｖホールドへのキーナンバーが５０であり、キーナンバー３６が操作された場合、ホールド時間は、２０ｍ秒となる。
４０  ＶｏｌＥｎｖディケーへのキーナム
これは、ＭＩＤＩキーナンバーを増大させることによってボリューム・エンベロープのホールド時間が減少する程度をキーナンバー単位あたりのタイムセントであらわしたものである。キーナンバー６０でのホールド時間は、常に変化しない。単位目盛は、１００の値がキーボードに追随するホールド時間となるように、すなわち上方に１オクターブ移動するとホールド時間が半減するように設定される。例えば、ボリューム・エンベロープ・ホールド時間が−７９７３＝１０ｍ秒でＶｏｌＥｎｖホールドへのキーナンバーが５０であり、キーナンバー３６が操作された場合、ホールド時間は、２０ｍ秒となる。
４１  楽器
これは、現在の層のために用いられる楽器を提供するＩＮＳＴサブチャンクの中を示す指標である。ゼロの値は、リストの中の最初の楽器を示す。その値は、楽器のリストの大きさを決して越えてはならない。楽器計数装置は、ＰＧＥＮ層のための端末発生装置である。したがって、この計数装置は、ＰＧＥＮサブチャンクの中にしかあらわれないはずであり、大域層をのぞいた全体の中で最後の発生装置計数装置としてあらわれなければならないものである。
４２  保留１
使用されず保留されるものである。遭遇しても無視しなければならない。
４３  キーレンジ
これは、このプリセット、層、楽器、またはスプリットが活動状態にあるＭＩＤＩキーナンバーの値の最小および最大である。ＬＳバイトは、最高の有効キーを示し、ＭＳバイトは、最低の有効キーを示す。キーレンジ計数装置は、オプションであるが、あらわれた場合には、プリセット、層、楽器、またはスプリットの中の最初の発生装置でなければならない。
４４  ｖｅｌレンジ
これは、このプリセット、層、楽器、またはスプリットが活動状態にあるＭＩＤＩ速度値の最小および最大である。ＬＳバイトは、最高の有効速度を示し、ＭＳバイトは、最低の有効速度を示す。ｖｅｌレンジ計数装置は、オプションであるが、あらわれた場合には、プリセット、層、楽器、またはスプリットの中でキーレンジ以外に前にくるものがあってはならない。
４５  スタートループＡｄｄｒｓコース・オフセット
スタートループ・サンプル・ヘッダ・パラメーターを越える３２７６８のサンプル増分の中のオフセットおよびこの楽器のループの中で繰り返される最初のサンプル。このパラメーターは、スタートループＡｄｄｒｓオフセット・パラメーターに付加される。例えば、スタートループが５である場合、スタートループＡｄｄｒオフセットは、３であり、スタートＡｄｄｒコース・オフセットは、２であり、ループの中の最初のサンプルは、サンプル６５５４４である。
４６  キーナム
この計数装置は、ＭＩＤＩキーナンバーを強制的にあたえられた値として有効に解釈されるようにする。有効な値は、０から１２７までである。
４７  速度
この計数装置は、ＭＩＤＩ速度を強制的にあたえられた値として有効に解釈されるようにする。有効な値は、０から１２７までである。
４８  初期減衰
これは、ある音が目盛りいっぱいから下方に減衰する減衰量をセンチベルであらわしたものである。ゼロの値は、減衰なしをあらわし、その音は、目盛りいっぱいで演奏される。例えば、６０という値は、その音符に関して音が目盛りいっぱいから６ｄＢ下方で操作されることを示す。
４９  保留２
使用されず保留されるものである。遭遇しても無視しなければならない。
５０  エンドループＡｄｄｒｓコース・オフセット
この楽器のためのループに関するスタートループ・サンプルと等価と考えられるサンプルまでのエンドループ・サンプル・ヘッダ・パラメーターを越える３２７６８のサンプル増分の中のオフセット。このパラメーターは、エンドループＡｄｄｒｓオフセット・パラメーターに付加される。例えば、エンドループが５である場合、エンドループＡｄｄｒオフセットは、３であり、エンドＡｄｄｒコース・オフセットは、２であり、サンプル６５５４４は、スタートループと等価であるとみなされ、したがって、サンプル６６５４３は、ルーピング中有効にスタートループに先行する。
５１  コース・チューン
これは、その音符に適用されるべきピッチ・オフセットを半音であらわしたものである。正の値は、その音符がより高いピッチで再生されることを示し、負の値は、より低いピッチで再生されことを示す。例えば、コース・チューンの値が−４であれば、その音符が４半音分だけフラットに再生される。
５２  ファイン・チューン
これは、その音符に適用されるべきピッチ・オフセットをセントであらわしたものである。これは、コース・チューンと加法的に作用する。正の値は、その音符がより高いピッチで再生されることを示し、負の値は、より低いピッチで再生されことを示す。例えば、ファイン・チューニングの値が−５であれば、その音符が５セント分だけフラットに再生される。
５３  サンプルＩＤ
これは、現在のスプリットのために用いられる楽器を提供するＳＨＤＲサブチャンクの中を示す指標である。ゼロの値は、リストの中の最初のサンプルを示す。その値は、サンプル・リストの大きさを決して越えてはならない。サンプルＩＤ計数装置は、ＩＧＥＮスプリットのための端末発生装置である。したがって、この計数装置は、ＩＧＥＮサブチャンクの中にしかあらわれないはずであり、大域スプリットをのぞいた全体の中で最後の発生装置計数装置としてあらわれなければならないものである。
５４  サンプル・モード
この計数装置は、現在の計数装置のスプリットのためのサンプルを記述するさまざまなプール・フラッグをあたえる値を示す。サンプル・モードは、ＩＧＥＮサブチャンクの中にしかあらわれないはずであり、大域スプリットの中にあらわれてはならない。この値の２つのＬＳビットは、サンプル内のループの種類を示す。０は、ループなしに再生される音を示し、１は、連続してループする音を示し、２は、冗長的にループなしを示し、３は、キーが押されている間ループしてから先に進んでサンプルの残りを演奏する音を示す。この値のＭＳピット（ピット１５）は、このサンプルがサウンド・エンジンのＲＯＭ目盛の中にあることを示す。
５５  保留３
使用されず保留されるものである。遭遇しても無視しなければならない。
５６  音階調律
このパラメーターは、ＭＩＤＩキーナンバーがピッチに影響する程度をあらわす。ゼロの値は、ＭＩＤＩキーナンバーがピッチに影響しないことを示す。１００の値は、通常に調律された半音目盛りを示す。
５７  排他的クラス
このパラメーターは、あたえられた楽器のキーを押して他の楽器の再生を終わらせる機能を提供するものである。これは、ヒハット・シンバルのようなパーカッション楽器の場合にとくに有用である。排他的クラスの値がゼロの場合は、排他的クラスがないことを示す。他の値は、その音符が開始されると、同じ排他的クラスで鳴っている他の音符が迅速に終わらなければならないことを示す。
５８  繰り越しルート・キー
このパラメーターは、サンプルがその最初のサンプル率で再生されるＭＩＤＩキーナンバーをあらわす。存在しない場合あるいは−１の値で存在する場合には、その代わりにサンプル・ヘッダー・パラメーターのオリジナル・キーが用いられる。０−１２７の範囲で存在する場合には、示されたキーナンバーによって、そのサンプルがそのサンプル・ヘッダーのサンプル率で再生される。例えば、サンプルが２２．０５０ｋＨｚのサンプル率でのピアノ・ミドルＣ（最初のキー＝６０）のレコーディングであり、ルート・キーが６９にセットされている場合、ＭＩＤＩキーナンバー６９（ミドルＣの上のＡ）を操作すれば、ミドルＣのピッチのピアノの音が聞こえることになる。
５９  未使用５
使用されず保留されるものである。遭遇しても無視しなければならない。
６０  エンドＯｐｅｒ
使用されず保留されるものである。遭遇しても無視しなければならない。この退くとくの名称は、定義されたリストを終わらせる値を示す。
【０２１１】
Ｓ．１．３  発生装置の要約下の表は、サウンド・フォント２．００で定義される全発生装置とデフォールト値を示す。
0004679678.tif 000020
【０２１２】
0004679678.tif 000021
【０２１３】
0004679678.tif 000022
【０２１４】
0004679678.tif 000023
【０２１５】
＊レンジは、サンプル・ヘッダーの中のスタート、ループ、およびエンド点の値によって異なる。
＊＊レンジは、ピット・フラッグにもとづく個別の値をもつ。
【図面の簡単な説明】
【図１】図１は、本発明を組み込んでいるミュージック・シンセサイザーの図である。
【図２】図２Ａ及び２Ｂは、本発明を組み込んでいるパーソナル・コンピュータ及びメモリ・ディスクの図である。
【図３】図３は、オーディオ・サンプル構造の図である。
【図４】図４Ａ及び４Ｂは、オーディオ・サンプルの異なる部分を示す図である。
【図５】図５は、異なるキー入力特性を示すキーの図である。
【図６】図６は、例証的な変調入力としての変調ホイール及びピッチ・ベンド・ホイールの図である。
【図７】図７は、本発明を組み込んでいるインストルメント・レベル及びプリセット・レベルのブロック図である。
【図８】図８は、本発明を組み込んでいるＲＩＦＦファイル構造の図である。
【図９】図９は、本発明によるファイル・フォーマット・イメージの図である。
【図１０】図１０は、本発明による調音データ構造の図である。
【図１１】図１１は、モジュレータ・フォーマットの図である。
【図１２】図１２は、オーディオ・サンプル・フォーマットの図である。
【図１３】図１３は、モジュレータ・エニュメレータとモジュレータ量の関係を示す図である。
【図１】
0004679678.tif 000024
【図２Ａ】
0004679678.tif 000025
【図２Ｂ】
0004679678.tif 000026
【図３】
0004679678.tif 000027
【図４Ａ】
0004679678.tif 000028
【図４Ｂ】
0004679678.tif 000029
【図５】
0004679678.tif 000030
【図６】
0004679678.tif 000031
【図７】
0004679678.tif 000032
【図８】
0004679678.tif 000033
【図９】
0004679678.tif 000034
【図１０】
0004679678.tif 000035
【図１１】
0004679678.tif 000036
【図１２】
0004679678.tif 000037
【図１３】
0004679678.tif 000038