abc 記譜法 2.2 版

作成日 : 2017-01-21
最終更新日 :

abc 標準 2.2 版

(訳注)本ページはドラフト:abc 標準 2.2 版(abcnotation.com) の部分訳である。 abc 標準 2.1 版(abcnotation.com) の部分訳をもとに、 バージョンアップした部分を加筆修正しているが、 本ページの記述では追いついていない。 訳注は marinkyo による。abcjs (2019-12-25 現在、abcjs_basic_5.12.0.js)を使って実際の譜面も表示するようにした。

開発とその根拠についての覚書

バージョン 2.1 で抱えていた、音部記号 (clef) と転調 (transposition) に関する問題 (VOLATILE) 事項を、 当初はマイナーフィックスで解決しようとしていた。しかし思いのほか長い時間がかかってしまった。これは、転調に関する議論が長すぎたため (そして編集者が長く沈黙していたため)である。意図はバージョン 2.2 のこのドラフトで公開しようと思う。

バージョン 2.1 と バージョン 2.2 の違い

実装の変更
0.1.1 K: パラメータと V: パラメータ
2013 年 2月 22日-23日 : 4.6 声部変更子を書き直し (ルールは変えていない). 
                        音部記号をいくつか追加。
			               ミドルパラメータが廃止されたので、Zocharti Loch & Canzonetta の例を書き直した。

2013 年 2 月 25日 : 音部記号パラメータを追加 (例: clef=G2 と clef=baritone).

2013 年 3 月 1日 : Clef settings bass3, alto2 and alto1, together with their generalisation to any line number (e.g. bass1), have been deprecated.

2013 年 3月1日-2日: オクターブ音部記号構文を更新。

2013 年 3 月 5 日: 構文 clef=auto を追記。
0.1.2 移調の統合
2015 年 7 月 4 日: 移調 (transposition) に関する提案 version 16 がまとまった! 下記の再構築である:

    substantial changes to 4.6 Voice modifiers - clefs and transposition
    the inclusion of the V:* syntax in 7. Multiple voices
    a whole new section, 13. Transposition
    the move of Sample abc tunes and Appendices to sections 14 and 15 respectively (previously 13 and 14).
0.1.3 装飾の追加

2015 年 7 月 6 日 : 装飾 (decorations) !^! のほか、!marcato!, !D.C.alcoda!, !D.C.alfine!, !D.S.alcoda!, !D.S.alfine! が追加された。

2015 年 7 月 16 日: 装飾 !editorial! と !courtesy! が追加された - 臨時記号 (accidentals) も見よ。

提案しているちょっとした追加 (Proposed minor additions)

    I:pitch = - e.g. I:pitch A=440
    length modifier for y spacers (e.g. y2, y4, y/2, etc)
    Additional decorations (I will need some help with definitions for some of these)
        !trill=!, !trill_!, !trill^!, !trill__!, !trill^^!

目次

        1. はじめに
            1.1 この文書を読む方法
            1.2 この文書を読まずに済ませる方法
            1.3 abc チュートリアル
            1.4 abc 拡張
            1.5 情報を知りたい、変更を提案したい
            1.6 文書の場所
        2. abc ファイル、音、断片
            2.1 abc ファイルの見分け方
            2.2 abc ファイル構造
            2.3 埋め込まれた abc と abc の断片
        3. 情報フィールド
            3.1 情報フィールドの定義
            3.2 曲本体でのフィールド使用
            3.3 フィールド継続
        4. 
            4.1 ピッチ
            4.2 臨時記号
            4.3 音符の長さ
            4.4 リズム割(付点音符など)
            4.5 休符
            4.6 声部変更子 - 音部記号と移調
              4.6.1 音部記号
              4.6.2 縦線
              4.6.3 オクターブ変更子
              4.6.4 変更子のスコープと継承
              4.6.5 アプリケーション依存変更子
            4.7 連桁
            4.8 繰り返し記号
            4.9 1カッコ、2カッコ
            4.10 いろいろな終わり方
            4.11 タイとスラー
            4.12 装飾音符
            4.13 連符
            4.14 装飾
            4.15 シンボル線
            4.16 再定義可能な記号
            4.17 コードとユニゾン
            4.18 コード記号
            4.19 注釈
            4.20 abc 構成の順序
        5. 歌詞
            5.1 行揃え
            5.2 
            5.3 番号付け
        6. 組版、再生
            6.1 組版
            6.2 再生
        7. 多声
            7.1 声部のプロパティ
            7.2 改行
            7.3 インラインフィールド
            7.4 声部の重ね書き
        8. abc データフォーマット
            8.1 曲本体
            8.2 テキスト文字列
        9. マクロ
            9.1 静的マクロ
            9.2 移調マクロ
        10. 時代遅れのシンタックス
            10.1 旧情報フィールド
            10.2 旧方言
            10.3 旧継続
            10.4 旧ディレクティブ
            10.5 旧ファイル構造
            10.6 旧歌詞そろえ
            10.7 その他の旧記法
        11. スタイルシートディレクティブと疑似コメント
            11.0 ディレクティブとは
            11.1 声のグループ化
            11.2 命令ディレクティブ
            11.3 臨時記号ディレクティブ
            11.4 フォーマットディレクティブ
            11.5 アプリケーション固有ディレクティブ
            11.6 ディレクティブに関する進んだ情報
        12. 方言、ゆるい解釈、厳密な解釈
            12.1 方言の違い
            12.2 ゆるい解釈
            12.3 厳密な解釈
        13. 移調
            13.1 移調オペレータ
            13.2 ファイル/曲の移調(未訳出)
            13.3 移調楽器用 abc コードの記法
            13.4 全音階楽器のカスタム移調(未訳出)
        14. abc 曲のサンプル
            14.1 English.abc
            14.2 Strspys.abc
            14.3 Reels.abc
            14.4 Canzonetta.abc
        15. 付録
            15.1 サポートしているアクセント
            15.2 訂正

1. はじめに

abc はテキストベースの音楽記法であり、 人間にとってもコンピュータにとっても理解できるように設計されている。 abc の音楽は文字記号、すなわち、英文字、数字、句読点でで記述されていて、 紙やコンピュータファイルに入っている。 この文書は、abc 記法を理解したい人たちのために、そして abc のソフトウェアアプリケーションを実装したい人たちのために作成した。 例のいくつかはサンプルに入っている。

1.1 この文書を読む方法(How to read this document)

最初から読み始めて終わりまで読み通すこと。 他には、ハイライトを読む方法もある。読まずに済ませる方法を参照。

1.1.1 用語

下記用語は abc の標準で特別な意味をもっている。 便宜を図るため、定義にリンクを張っている。

なお、http://www.ietf.org/rfc/rfc2119.txt も見よ。 ここではキーワード MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, OPTIONAL の厳密な意味が定義されている。

最後に、単語「変動要因」 // VOLATILE // とある項は、 現在活発に議論されていたり、今後標準の変更が予想されていたりすることを示している。

1.2 この文書を読まずに済ませる方法(How to avoid reading this document)

abc 標準は多くの情報を含んでいる。そのため初心者にとってはすぐには使いこなせないだろう。 それでも初心者は、 1. の「はじめに」にあるこの節はともかく、 2.2, 3.0, 3.1 (特に 3.1.1, 3.1.2, 3.1.6, 3.1.7, 3.1.14), 3.2, 4. (特に 4.1, 4.3, 4.7, 4.8) を読んでほしい。

初心者は 14章abc チュートリアルを読むことをすすめる。

そのあとで、興味に応じて下記を参照してほしい。

1.3 abc チュートリアル(Abc tutorials)

訳注:日本語で読める abc 記譜法について

1.4 abc の拡張 (Abc extensions)

abc 記譜法システムは他の何ものにもよらず作られたので、 abc ソフトウェアパッケージが多く開発されている。 しかし、この標準ですべてを完全にフォローするのは難しい。 この文書のねらいは、アプリケーション間の互換性問題を解決すること、 少なくとも問題を減らすことにある。

いうまでもなく、 abc を使うときこのような拡張の有無に気をつけることは大事だ。 有名なパッケージでの拡張は下記リンクにある。

1.5 情報を知りたい、変更を提案したい (Further information and changes)

この標準について、また abc 一般について知りたい場合、 abc ユーザーズメーリングリストや abc 記譜法フォーラムを使えばいい。

標準の変更を提案したい場合は、ここを読むべし。

http://abcnotation.com/wiki/abc:standard:route-map - a route map of proposed changes to the standard plus instructions for proposing changes

1.6 文書の場所 (Document locations)

この文書(の英語オリジナル)はここにある。

http://abcnotation.com/wiki/abc:standard:v2.2

最新版だけでなく過去の版も知りたい時はこちらから。

http://abcnotation.com/wiki/abc:standard

2. abc ファイル、音、断片

2.1 abc ファイルの見分け方 (Abc file identification)

abc ファイルはすべて、 拡張子 ".abc" (すべて小文字) をどんなプラットフォームでももっている。

コメント: WEB サーバのなかには限られたファイルタイプしか拡張子をゆるさないものもある。 この場合は .txt 拡張子が最善の代替案である。

どんなabc ファイルでも文字列%abcで始まる。 同じ行にバージョン番号を入れてもよい。例:

%abc-2.2

2.1 またはそれ以上のバージョン番号は、 abc ファイルが abc 標準にしたがって厳格に解釈されることを表している。 もしバージョン番号がなければ、ファイルはゆるい解釈とみなされる。 バージョンフィールドは曲ごとに使ってもよい。

開発者への注釈: もしファイルの最初の文字にバイトオーダーマーク (BOM) (en.wikipedia.org)があれば、 ソフトウェアはそれを無視すべきである。

abc file がマルチパート電子メールに含まれるとき、 その MIME タイプは"text/vnd.abc" であるべきだ(IANA text/vnd.abc (www.iana.org) を見よ).

2.2 abc ファイル構造

abc file
abc ファイル

abc ファイルとは 1 つ以上の abc 曲 の記述(transcriptions) からなるファイルのことである。 abc ファイルには、任意で散在した注釈を付け加えることができる。この注釈となるテキストは、 自由テキスト組版テキストである。 また、abc ファイルは、ファイルへッダではじめることができる。 ファイルヘッダの利用は任意できる。 このヘッダはファイルを処理するための既定の方法を定めるためにある。

abc tunebooks
abc 曲集

1 つ以上の曲がある abc ファイルを abc 曲集という。

2.2.1 abc 曲

abc tune
abc 曲

abc 曲 そのものは 曲ヘッダ曲本体からなる。

tune header
曲ヘッダ

**曲ヘッダ** は情報フィールド行から構成される。

tune body
曲本体

曲本体とは、音楽コードを含み、すぐそのあとに続くものである。

music code
音楽コード

abc の音楽コード行は曲本体にある行で、 音符や、小節線やほかの音楽記号を含むものである。

2.2.2 ファイルヘッダ

file header
ファイルヘッダ

ファイルはオプションとしてファイルヘッダから始めることができる (バージョンフィールドのすぐ後)。 このヘッダは、 連続する情報フィールドスタイルシートディレクティブ、 あるいはその両方であり、空行で終わる。 ファイルヘッダはファイルにある曲に対して既定の値が定められている。

ファイルヘッダはファイルの先頭にのみ置くことができる。曲間には置けない。 (後略)

2.2.3 自由テキストと組版テキスト

free text
自由テキスト
自由テキストとは今いった通りのものである。
typeset text
組版テキスト
組版テキストとは、テキストディレクティブで指定されたテキストである。.

2.2.4 空行と改行

Empty lines
blank lines
空行
ブランク行

空行(ブランク行)は abc 曲フリーテキストファイルヘッダを分けるために用いられる。 空行はabc ファイルの可読性向上に寄与する。

ホワイトスペース(スペース文字とタブ文字)からのみなる行は空行とみなされる。

改行(new lines, line feeds, carriage returns, end-of-lines, など) は abc ファイルで使われ可読性を向上させるとともに、 必要があれば長い入力を切るために使われる。入力行の継続を見よ。

より細かいことをいえば、音楽コード内の改行は、 abc 表示を構造化し、また、デフォルトでプリント音楽の改行を生成する。 さらに詳しくは、 組版改行を見よ。

2.2.5 コメントと注意

%記号 (''%'')

% 記号から始まり、行末で終わる文字列は無視される。 コメントを付け加えたり、自身の権利を コメントラインで表明したりする。 % 記号を表示したい場合は、''\%'' とする。 テキスト文字列を見よ。

2.2.6 入力行の継続

abc ソフトウェアに対して、 abc ファイルにある入力行が次の物理的行に継続することを伝えることが、 必要になるときがある。つまり、二つ(以上)の行が一つにみなされるようにしたいということだ。 abc 2.0 では一般継続文字がこのために使われていた (時代遅れの継続を見よ)。しかし、 この方法は不必要で混乱を招くものということが決定された。

abc 2.1 では、4種類の入力タイプのどれでも継続する方法がある。このタイプとは、 音楽コードのほか、 情報フィールドコメントスタイルシートディレクティブである。

abc 音楽コードでは、デフォルトは、 コードの改行は組版スコア内の改行を生成する。そしてこれらはバックスラッシュを使うことで、 (または abc 組版ソフトウェアに、''I:linebreak $'' または ''I:linebreak <none>'' を使うことで改行を無視するよう伝えることで)抑制される。 詳しくは組版改行を見よ。

プログラマへのコメント: バックスラッシュは継続文字として音楽コードでは効果的に機能する。 しかしながら、他のコンピュータ言語の文脈で使われることを考えるとその仕様は abc 固有である。 特に音楽コード行を 情報フィールドコメントスタイルシートディレクティブを通して使った場合はそうである。

音楽コードのほかには 3 種類の入力行タイプがある。

情報フィールド
情報フィールドとは、''+:'' から始まりそれに続く行である。 フィールド継続 を見よ。
コメント
コメントは、記号 ''%'' から始まりそれに続く行である。
スタイルシートディレクティブ
スタイルシートディレクティブのほとんどは非常に短いので継続シンタックスを必要としない。

2.3 埋め込まれた abc と abc の断片 (Embedded abc and abc fragments)

従来、abc は abc ファイルにより記述されてきた。 しかし最近では、abc 曲を、そして断片でも含めるようないろいろな可能性が出てきた。 他のドキュメントに含まれる abc 要素は、そのドキュメントに埋め込まれたものとして参照される。

必ずではないが、 しばしば、マークアップされた形式のいくつかは埋め込まれた abc コードの起点や終点を示すために使われる。

例:ある HTML ドキュメントでは以下の曲が含まれうる。

<pre class="abc-tune">
X:1
T:Title
K:C
DEF FED:|
</pre>

重要な注釈: abc 標準は、abc コードが文書に含まれている条件については関知しない。 たとえば、html には、abc コードが、 <pre>, <div>, <object>, <script> のような、 あるいは他のタグの中に含まれているかもしれない。

埋め込まれた abc 要素は4種類ある。

すべての場合で、タイプは、処理過程で指定されなけばならない(たとえば、クラスパラメータを経由して)。 例外は、埋め込まれた abc 曲で、パーサーが X: フィールドが使われた場合である。

下記規則は、埋め込まれた要素に適用される。

2.3.1 埋め込まれた abc 断片

abc fragment
abc 断片

abc 断片とは、部分的なabc 曲である。 部分的な 曲ヘッダはあるが曲本体をもたないかもしれないし、 曲本体オプションの曲ヘッダ情報フィールドがあるかもしれない。

// 例 1: // 曲ヘッダがない断片

<div class="abc-fragment">
CDEF GABc|
</div>
  

// 例 2: // 部分的な曲ヘッダがある断片

  <div class="abc-fragment">
  T:Major scale in D
  K:D
  DEFG ABcd|
  </div>
  

T:あるいは M: K: フィールドが存在しなければ、 断片はト音記号の五線譜で、それぞれタイトルなし、拍子記号なし、調性記号なしとして仮定される。

An abc fragment does not require an empty line to mark the end of the tune body if it is terminated by the document markup.

abc 断片 は、文書のマークアップにより 曲本体が終結するからといって、 必ずしも空行 を要求することはない。

2.3.2 埋め込まれた abc 曲

埋め込まれた abc 曲 は、通常の abc 曲 と同じ構造を持つ。ただし、埋め込まれた abc 曲は、通常の abc 曲とは異なり、 曲の本体 の終結記号としての 空行 を必要とはしない。

埋め込まれた abc 曲 はまた、必要であれば、完全性を除けば、 abc 断片 と同等とみなせる

2.3.3 埋め込まれたファイルヘッダ

ファイルヘッダに関しては、 埋め込まれた ファイルヘッダ は、ドキュメント内で 埋め込まれた abc 曲と abc 断片 とのデフォルト値として使われる。

例: ドキュメントのabc 曲 すべてでタイトルのフォントを設定する:

<div class="abc-file-header">
	%%titlefont Arial 10
</div>

他の同様な規則と同様に, 埋め込まれた ファイルヘッダは ドキュメントに1つだけ定義すれば十分であり、 その定義は埋め込み abc 曲や abc 断片 に優先する。

2.3.4 埋め込まれた abc ファイル

ドキュメントは 通常構造を伴う完全な 埋め込み abc file を含んでよい。 abc ファイル構造 参照。

埋め込み abc ファイル は 他のembedded 要素とは独立に扱われるべきである。 その結果、1つの 埋め込み abc ファイル における設定が、 他の 埋め込み 要素に影響を及ぼさないようになる。

推奨: 結果として, ある埋め込み abc ファイル を含むドキュメントで他の 埋め込み 要素を使うことは推奨されない。

3. 情報フィールド

abc フィールドと使い方

フィールド名 ファイルヘッダ tune header tune bodyinline type 例と注釈
A:area yes yes string A:Donegal, A:Bampton (deprecated)
B:book yes yes string B:O'Neills
C:composer yes yes string C:Robert Jones, C:Trad.
D:discography yes yes string D:Chieftains IV
F:file url yes yes string F:http://a.b.c/file.abc
G:group yes yes string G:flute
H:history yes yes string H:The story behind this tune …
I:instruction yes yes yes yes instruction I:papersize A4, I:newpage
K:key last yes yes instruction K:G, K:Dm, K:AMix
L:unit note length yes yes yes yes instruction L:1/4, L:1/8
M:meter yes yes yes yes instruction M:3/4, M:4/4
m:macro yes yes yes yes instruction m: ~G2 = {A}G{F}G
N:notes yes yes yes yes string N:see also O'Neills - 234
O:origin yes yes string O:UK; Yorkshire; Bradford
P:parts yes yes yes instruction P:A, P:ABAC, P:(A2B)3
Q:tempo yes yes yes instruction Q:"allegro" 1/4=120
R:rhythm yes yes yes yes string R:R, R:reel
r:remark yes yes yes yes - r:I love abc
S:source yes yes string S:collected in Brittany
s:symbol line yes instruction s: !pp! ** !f!
T:tune title second yes string T:Paddy O'Rafferty
U:user defined yes yes yes yes instruction U: T = !trill!
V:voice yes yes yes instruction V:4 clef=bass
W:words yes yes string W:lyrics printed after the end of the tune
w:words yes string w:lyrics printed aligned with the notes of a tune
X:reference number first instruction X:1, X:2
Z:transcription yes yes string Z:John Smith, <j.s@mail.com>

3.1 情報フィールドの記述 (Description of information fields)

3.1.1 X: 参照番号

''X:'' (参照番号) フィールドは 曲集のなかでそれぞれの曲に応じて一意に割り当てられた正の整数番号である。 例:''X:23''。

''X:'' フィールドは、曲の開始を示すために用いられる。 したがって、どの曲もすべて X で始まるし、 1つの曲につき X は1 つである。

''X:'' フィールドはなくても許されるが、推奨されない。

3.1.2 T: - 曲タイトル

''T:'' (タイトル) フィールドは ''X:'' フィールドの直後に記述される。 これは人間がその曲を識別するために使う(たとえ空であっても)。

曲のよっては1つ以上のタイトルをもつものもある。 したがって、1つの曲に対して1つ以上の代替タイトルを示すことが可能である。

''T:'' フィールドは1つの曲に対する各パートの名前をつけるときにも使われる。 この場合は調性や拍子の変化の前に置くべきである。

3.1.3 C: - 作曲者

''C:'' フィールドは作曲者を示す。

3.1.4 O: - 原作

''O:'' フィールドは曲の地理的発生源を示す。 可能であれば、次のようにデータを階層的に入れること。
O:Canada; Nova Scotia; Halifax.
O:England; Yorkshire; Bradford and Bingley.

// Recommendation: // セパレータとして必ず "'';''" (セミコロン)を使うことを推奨する。 こうしておけば、ソフトウェアがフィールドをパーシングできるようになる。 しかし、abc 2.0 での推奨はコンマであった。だから古いファイルは abc 2.1 ではパーシングできないかもしれない。

このフィールドは作曲者不明の曲(トラディショナル)を扱うときに特に有用だろう。 組版情報フィールドにある、 原作情報をプリントされたスコアに含めるようにする。詳細を見よ。

3.1.5 A: - エリア

歴史的に、"A:" フィールドは地域情報を表すために使われてきた (より詳しい曲の発生地)。しかし、このフィールドは今は廃れている。 "O:" フィールドを使うことが推奨されている。

3.1.6 M: - 拍子

''M:'' フィールドは拍子を示す。 通常の拍子はもちろん、(例: ''M:6/8'' あるいは ''M:4/4'')、 記号 ''M:C'' や ''M:C|'' はそれぞれ (4/4) と (2/2) に対応する。 記号 ''M:none'' は拍子を完全に省く (拍子なし).

複雑な拍子を指定することもできる。例:''M:(2+3+2)/8'' は ビートのアクセントを明示していることを表す。分子のカッコはつけなくともよい。 このときの組版は次のようになる:

  2 + 3 + 2
      8

''M:'' フィールド指定がないときは、拍子なしが仮定される。この場合は, 小節線は好きなところに指定してよい。

3.1.7 L: - 音符の単位長さ

''L:'' フィールドで指定されるのは音符の単位長さである。 ここで単位長さとは、abc 記譜法で1つの文字が表す音符の長さの単位である。

よく使われる単位は ''L:1/4'' - 四分音符、''L:1/8'' - 八分音符 、 ''L:1/16'' - 十六分音符 がある。。 ''L:1'' (全音符) - やこれと同じ ''L:1/1'', また ''L:1/2'' (二分音符), ''L:1/32'' (三十二分音符), ''L:1/64'', ''L:1/128'', ''L:1/256'' , ''L:1/512'' も可能である。 とはいえ、''L:1/64'' やこれより短い音価ではソフトウェアパッケージによってはサポートされない。

もし''L:'' フィールドが定義されなければ, 単位長さは既定値で定義される。 ベースは拍子フィールド ''M:'' により定まる。 この既定値は拍子を十進法として解釈することで計算される。 すなわち、もし、拍子が 0.75 未満であれば、単位長さは十六分音符となる。 0.75 以上であれば, 単位長さは八分音符である。 たとえば、2/4 = 0.5, であるから 既定値となる単位長さは十六分音符である。 一方 for 4/4 = 1.0, や 6/8 = 0.75, or 3/4= 0.75, では単位長さは八分音符である。 ''M:C'' (4/4) や ''M:C|'' (2/2) 、 ''M:none'' (自由拍子), の場合は、デフォルトとなる単位長さは八分音符である。

拍子が曲の途中で変わっても、単位音符の長さは変わらない。

3.1.8 Q: - テンポ

"Q:" フィールドは一分間のビートの数でテンポを定める。 例 ''Q:1/2=120'' は 1分あたり120回の8分音符を表す。 4つまでのビートを定めることができる。例:
Q:1/4 3/8 1/4 3/8=40
これは、あたかも''Q:5/4=40'' であるかのように曲を弾くことを意味する。 しかし、ユーザーによって指定した音符のテンポを示すことができる。

テンポの定義は、オプションを先に出したり後に続けたりできるテキスト文字列を使って修飾できる。例:
Q: "Allegro" 1/4=120
Q: 3/8=50 "Slowly"

テンポ指示が明示的になくても問題ない。例: ''Q:"Andante"''.

最後に付け加えておくが、 ''Q:'' フィールド中にはすでに廃止された使い方もある。

3.1.9 P: - パート

// 変動要因 // 1つ以上の声部がある音楽で、 ''P:'' と ''V:'' フィールドの相互作用がどうなるかはは、abc のバージョン 2.2 で記載する。 単一声部での ''P:'' の使用法についてもそのとき述べよう。

''P:'' フィールドは曲ヘッダで使われる。 これは、曲を繰り返す回数を定める。例:''P:A3'' は ''P:AAA'' に等しい。 カッコを使うこともできる。例: ''P:(AB)3'' は ''P:ABABAB'' に等しい。 カッコのネストも許される。 ドットはヘッダ''P:'' フィールドののどこに置いてもよい。これは可読性を高めるために使える。 例:''P:((AB)3.(CD)3)2''. これらのドットはコンピュータプログラムによって無視される。 ''P:'' 記法の使い方は、 さまざまな終わりかた歌詞を見よ。

曲の再生を完全に実行するなら、プログラムは可能であれば''P:'' フィールドを使うべきである。 組版プログラムは ''P:'' フィールドをプリントスコアに含めるべきである。 パート情報をプリントスコアに含める方法の詳細については、組版情報フィールドを見よ。

P:フィールドは、曲ヘッダで曲のパートを演奏する順序を決めるときに使われる。例:''P:ABABCDCD''、
またそのとき曲本体内部で各パートをマークするときに使われる。 例 ''P:A'' または ''P:B''. (この文脈ではパートは曲のセクションを指す。多声音楽の1つの声部を指すのではない。)

3.1.10 Z: - 記述

典型的には ''Z:'' フィールドは該当曲を abc に翻訳した人名を記す。 そしてできれば連絡先を記載する。例. 電子メールアドレス、ホームページ URL
// 例: // 簡単な記述 Z:John Smith,

3.1.11 N: - 参照

一般的な注釈を含めて、同じ他の曲に対する参照のように、 その曲が abc にコンバートされた元の記法を記す。

組版情報フィールドを見よ。 参照が印刷スコアに組み込まれる方法が詳しく記載されている。

3.1.12 G: - グループ

データベースソフトウェアはこのフィールドを使ってもよい。曲をグループにまとめるため (たとえば、楽器によって)のインデックスを作る目的である。また、 メドレーを作るなどの目的に使われるかもしれない。しかし、この用法は標準化されていない。

3.1.13 H: - 履歴

複数段の参照、由来、小咄に用いられる。

''H:'' フィールドは典型的には組版に用いられることはない。 複数段入力のための正しい使用方法はフィールド継続シンタックス(''+:'')が使われる。 この結果、たとえば、データベースアプリケーションは二つの異なる小咄を区別できる。

 
// 例: //
  H:this is considered
  +:as a single entry

  H:this usage is considered as two entries
  H:rather than one

3.1.14 K: - キー

調性記号は大文字("A-G")に加え、必要に応じて"#"か"b"を添える。これらはそれぞれシャープとフラットに対応する。 モードを指定することができる。モードの指定があければ長調が仮定される。

例えば, ''K:C major'' のほか、 ''K:A minor'', ''K:C ionian'', ''K:A aeolian'', ''K:G mixolydian'', ''K:D dorian'', ''K:E phrygian'', ''K:F lydian'' , ''K:B locrian'' は、シャープもフラットもない五線譜すべてである。 スペースは省いてもよく、モードでは大文字は無視されるし、また、実際にパーシングされるのは最初の3文字である。 その結果、次の例の通りとなる。 ''K:F# mixolydian'' ''K:F#Mix'' や ''K:F#MIX'' と同じである。 同様に、特別な例として, "minor" は "m" と略してもよい。

この表は同じキーがどのように違うように表記されるかを示している。

^           Mode ^ Ionian ^ Aeolian ^ Mixolydian^ Dorian    ^ Phrygian  ^ Lydian    ^ Locrian   ^
^ Key Signature  ^ Major  ^ Minor   ^           ^           ^           ^           ^           ^
| 7 sharps       | ''C#'' | ''A#m'' | ''G#Mix'' | ''D#Dor'' | ''E#Phr'' | ''F#Lyd'' | ''B#Loc'' |
| 6 sharps       | ''F#'' | ''D#m'' | ''C#Mix'' | ''G#Dor'' | ''A#Phr'' | ''BLyd''  | ''E#Loc'' |
| 5 sharps       | ''B''  | ''G#m'' | ''F#Mix'' | ''C#Dor'' | ''D#Phr'' | ''ELyd''  | ''A#Loc'' |
| 4 sharps       | ''E''  | ''C#m'' | ''BMix''  | ''F#Dor'' | ''G#Phr'' | ''ALyd''  | ''D#Loc'' |
| 3 sharps       | ''A''  | ''F#m'' | ''EMix''  | ''BDor''  | ''C#Phr'' | ''DLyd''  | ''G#Loc'' |
| 2 sharps       | ''D''  | ''Bm''  | ''AMix''  | ''EDor''  | ''F#Phr'' | ''GLyd''  | ''C#Loc'' |
| 1 sharp        | ''G''  | ''Em''  | ''DMix''  | ''ADor''  | ''BPhr''  | ''CLyd''  | ''F#Loc'' |
| 0 sharps/flats | ''C''  | ''Am''  | ''GMix''  | ''DDor''  | ''EPhr''  | ''FLyd''  | ''BLoc''  |
| 1 flat         | ''F''  | ''Dm''  | ''CMix''  | ''GDor''  | ''APhr''  | ''BbLyd'' | ''ELoc''  |
| 2 flats        | ''Bb'' | ''Gm''  | ''FMix''  | ''CDor''  | ''DPhr''  | ''EbLyd'' | ''ALoc''  |
| 3 flats        | ''Eb'' | ''Cm''  | ''BbMix'' | ''FDor''  | ''GPhr''  | ''AbLyd'' | ''DLoc''  |
| 4 flats        | ''Ab'' | ''Fm''  | ''EbMix'' | ''BbDor'' | ''CPhr''  | ''DbLyd'' | ''GLoc''  |
| 5 flats        | ''Db'' | ''Bbm'' | ''AbMix'' | ''EbDor'' | ''FPhr''  | ''GbLyd'' | ''CLoc''  |
| 6 flats        | ''Gb'' | ''Ebm'' | ''DbMix'' | ''AbDor'' | ''BbPhr'' | ''CbLyd'' | ''FLoc''  |
| 7 flats        | ''Cb'' | ''Abm'' | ''GbMix'' | ''DbDor'' | ''EbPhr'' | ''FbLyd'' | ''BbLoc'' |

"K:" フィールドが指定されないか、"K:none" という指定であれば、調性記号を全く使わないことができる。

3.1.15 R: - リズム

曲のタイプの指示を含む(例:ホーンパイプ、ダブルジーグ、シングルジーグ、48 小節ポルカ、など)。 この指示によって、演奏者は曲をどのように解釈するかヒントを得ることができる。 またこの指示はまたデータベースアプリケーションにとっても有用である (バックグラウンド情報を見よ)。 また、このフィールドは実験的に再生ソフトで使われている。特に、 abcmus では、 小節内で特定の音符にアクセントをつけることでよりリアルな再生を目指している。

印刷されたスコアに含まれるリズムの詳細は、 組版情報フィールドを見よ。

3.1.16 B:, D:, F:, S: - バックグラウンド情報

情報フィールド ''B:book'' (印刷された曲集), ''D:discography'' (すなわち CD や LP など聞く対象となる曲)や、 ''F:file url'' (すなわちabc 曲abc ファイル (WEB などにある) 、 ''S:source'' (すなわち集めたり学んだりした曲の環境)は、以前に述べたフィールド、 ''H:History''''N:notes''''O:origin''R:rhythm''と同様、 曲についての構造的バックグラウンドを与える。

これらは特に大規模な曲の集合を扱うことを目的としている( abc が生まれた発端である)。そして、 システマティックに扱えるということは、abc ソフトウェアは整列をはじめとして、 検索、フィルタが使えればよい(たとえば、特定の CD にある曲をすべてリズム順に整列させたりフィルタで抽出したりする、など)。

abc 標準はこれらのフィールドがどのように使われるかを処方しはしない。しかし、複数情報が一つのフィールドに含まれるのではなく、 一つの情報がそれぞれ複数の同じ型のフィールドに含まれるのが典型的である。 English.abc に出てくる例を見よ。

バックグラウンド情報が印刷スコアに含まれる詳細については、組版情報フィールドを見よ。

3.1.17 I: - 指図

''I:''(指図) フィールドが使われるのは、指図ディレクティブの拡張集合としてであり、 abc コードの解釈に関わることである。

''I:'' フィールドは、 スタイルシートディレクティブと相互に置き換え可能である。 だから、どんな''I:directive''も''%%directive''に置き換えられるし、 その逆も同様である。 しかし、 インラインバージョンを使うのならば、 ''I:'' バージョンを使わなければならない。

このような相互交換性にもかかわらず、あるディレクティブは標準の一部として採用され(この文書でI:によって示される)、 そしてこれを標準とするようなソフトウェアにより実装されなければならない。逆に、 スタイルシートディレクティブ (この文書で %% により示される)はオプションである。

コメント Since スタイルシートディレクティブはオプションであり、あるプログラムから別のプログラムに移植できることは必要ではない。だから、この意味はI: フィールドが含むものは、 スタイルシートディレクティブ は abc ソフトウェアで自由に扱うべきであり、 特に認識できない I: フィールドは無視されるべきである。

下記表が含む I: フィールドディレクティブのリストは abc 標準として採用されている。 さらなる情報はリンク先を参照。

ディレクティブ セクション
I:abc-charset 文字集合フィールド
I:abc-version バージョンフィールド
I:abc-include インクルードフィールド
I:abc-creator クリエーターフィールド
I:linebreak 組版改行
I:decoration 装飾方言

通常、命令フィールドは、ファイルヘッダー、ファイルのデフォルトを設定するため、 または(ほとんどの場合)曲のヘッダーに使用されるが、曲本体には使用されない。 チューンヘッダ内の命令フィールドの出現は、ファイルヘッダ中の命令フィールドよりも優先される。

コメント: 覚えておいて欲しいのは、 abc ソフトウェアでファイルから曲を抽出するものは オリジナルのファイルヘッダのフィールドを、 抽出した曲のヘッダに挿入しなければならない、ということだ。 これはまたこのセクションで定義されたフィールドに対しても正しい。

文字集合フィールド

I:abc-charset <value> フィールドが示すのは、 文字の集合であり、 テキスト文字列 がコード化されている文字である。 これはファイルの読み方に影響を与えるので、 できるだけ早くに ファイルヘッダに与えられるべきである。 これはファイル全体で変わることはない。

例:

I:abc-charset utf-8

合法的な値はiso-8859-1 から iso-8859-10までの iso-8859 のほか、 us-asciiutf-8 (デフォルト)である。

abc 曲をエクスポートして、 この標準に合わせるソフトウェアは、もし utf-8 以外のエンコーディングを使うのであれば、 この charset を含まなければならない。 適合する abc ソフトウェアはすべて、 utf-8us-asciiでコード化されている、 テキスト文字列 の扱いが可能でなければならない。 他の文字集合の扱いはオプションである。

UTF-8ISO-8859 に関するさらなる情報は wikipedia 参照。

バージョンフィールド

abc ファイルすべてがこの標準に適合するには、ファイルは次の文字列で始めるべきである。

%abc-2.2

abc ファイルの見分け方 を見よ。

しかし、曲が異なる標準に適合しているかを示すのには、I:abc-version <value> フィールドが使える。 これは 曲ヘッダ (個別の曲に対して) または ファイルヘッダにある。

例:

I:abc-version 2.2
インクルードフィールド

I:abc-include <filename.abh> は、分離された abc ヘッダファイル(.abh) で見つけられた定義をインポートする。 また、ファイルヘッダ曲ヘッダ にこれらの定義を挿入する。

例:

I:abc-include mydefs.abh

インクルードファイルは、 次のものを含めることができる: 情報フィールド, スタイルシート指示 コメント。 他の abc 構成要素は含めてはならない。

もしヘッダファイルがみつかれなければ、I:abc-include 命令は致命的でないエラーメッセージとともに無視されるべきである。

コメント: もしこの構成を使ってabc ファイル を配布するのであれば、必ず .abh ファイルも一緒に配布すること。

クリエーターフィールド

I:abc-creator <value> フィールドが含むものは、 プログラムの名前とバージョン番号であり、ここでプログラムとは、 abc ファイル を作ったプログラムのことである。

例:

I:abc-creator xml2abc-2.7

abc tunes をこの標準に適合させるようにエクスポートするソフトウェアは、 このクリエーターフィールドを含まなければならない。

3.1.18 他の情報

3.2 曲本体の情報フィールドの使い方 (Use of fields within the tune body)

inline field
インラインフィールド

調性(''K'')や拍子(''M'')、単位音符長さ(''L'') を曲の途中で変えることは頻繁に生じる。 これらを始めとして、多くの 情報フィールドで、 曲本体のなかで当然使われるべきものは、 インラインフィールドとして定め、 角カッコの中に置く。

// 例: 次の2つの抜粋部分は等価である。どちらでも同等に受け入れられる。
  E2E EFE|E2E EFG|[M:9/8] A2G F2E D2|]

  E2E EFE|E2E EFG|\
  M:9/8
  A2G F2E D2|]

最初の括弧、フィールド識別子およびコロンは、間にスペースを入れずに記述する必要がある。 括弧内には1つのフィールドしか配置できない。 ただし、複数の括弧で囲まれたフィールドを隣り合わせに配置することもできる。 必要に応じて、インラインフィールド(特に音部記号の変更)をビームの途中で使用することができる。

本文に表示されるフィールドとインラインで使用される可能性のあるフィールドを示す表の情報フィールドを参照のこと。

3.3 フィールド継続 (Field continuation)

1つの線が長すぎるフィールドは、継続する行の先頭に記号''+:''を使って継続することができる。 文字列タイプ情報フィールド (文字列タイプの情報フィールド一覧参照)に対して、継続は二つの半線の間のスペースで繋げられる。 文字列タイプ情報フィールドについては (情報フィールド文字列タイプフィールド一覧表を見よ)、 継続は二つのハーフライン間のスペースを付加することとして考えられている。

例:次の2つの断片は同等とみなせる

w:Sa-ys my au-l' wan to your aul' wan,
+:will~ye come to the Wa-x-ies dar-gle?
w:Sa-ys my au-l' wan to your aul' wan, will~ye come to the Wa-x-ies dar-gle?

4. 曲

4.1 ピッチ

次の文字がト音記号を使って表される音符となる:

ハ音記号を用いたとき、C が中央ド、次に D, E, F, G, A, B, c … となる。c 以上のオクターブ上は、c', d' となる。 C よりオクターブ下は C, となる。

同様の拡張は低い音符でも高い音符でも可能である。

低いオクターブはコンマを、高いオクターブはアポストロフィを使えばよい。 一つ特別なコンマ/アポストロフィを使うたびにオクターブを下げる/上げる.

プログラムは音符の後に出てくるどんな,' 記号のコンビネーションでも、 解釈できなければならない。たとえば、C,', (C コンマ アポストロフィ コンマ) は C, (C コンマ) に等しい。また (大文字) C' (C アポストロフィ) は、 (小文字) c と同等である。

別の方法として、音楽コードのセクションを上げ下げするには K: フィールドか V: フィールドの octaveが使えないといけない。

コメント: 英語の音符の名前は C-B, これらは abc システムで使われる。 他の言語で対応する音符名は do-si である。具体的には、 do=C, re=D, mi=E, fa=F, sol=G, la=A, si=B.

4.2 臨時記号(Accidentals)

^, =, _ はそれぞれシャープ、ナチュラル、フラットである。ダブルシャープ、ダブルフラットはそれぞれ ^^, __ となる。

装飾 !editorial! は、編集者により置かれる臨時記号で、通常の臨時記号は音符の左側に置かれるのに対し、 !editorial! は音符の上に小さな文字で置かれる。

装飾 !courtesy! は、本来は不要な臨時記号を親切の意味でカッコつきで示す。

訳注:このいずれも abcjs 5.12.0 では実現されていない。

4.3 音符の長さ

単位音符長さとは、L: フィールドで規定されているとする。 もし L フィールドが存在しなければ、M: フィールドから推論される。例:L: 1/8 であれば、単位音符長さは 8 分音符である。 L: 1/8 のとき、a とあれば 8分音符であり。a2 であれば 4分音符である。a/2 は16分音符となる。

音符の長さを変えるには、単に音符の長さを後ろに乗じればよい。単位音符長さが 1/16 とすると、 A または A1 は16分音符であり、A2 は8分音符であり、A3は付点8分音符であり、A4は4分音符であり、A6は付点4分音符であり、 A7は複付点4分音符であり、A8は2分音符であり、A12 は付点2分音符であり、A14は複付点2分音符である。

音符の長さを短くするには分数を使う。A が8分音符とすれば、A/2は16分音符であり、A3/2は付点8分音符であり、 A/4は32分音符である。L: フィールドによって単位音符長さを変えてもよい。 あるいは、3:1 リズムのとき、たとえば、付点8分音符と16音符の組み合わせのときには、 ブロークン・リズム(broken rhythm)を使うこともできる。

A/ は A/2 の略記である。同様に、A// は A/4 の略記である。

開発者のために:準拠ソフトウェアは 128 分音符まで扱えるべきである。それより短い音符はオプションである。

4.4 ブロークン・リズム

ブロークン・リズム(3:1のリズム)は次のように記す。

L:1/8
a>b c<d abcd

上記記法は論理的に拡張できる。すなわち、>> は、前が複付点音符になる。

4.5 休符

休符 (rests) は記号 z または x で表される。 長さは音符と同じ記法による。 z は譜面に表示されるが x は表示されない。

複数小節の休符は記号 Z (大文字) の次に小節数を記す。

例:次に示す抜粋はタイプセットの結果を示す。見た目は違うが音楽的には同じである。

訳注:全休符は小節全体の休みのときの表示であるが、abcjs では小節内の休符の長さにかかわらず、 全休符が表示されるのは、L:パラメータで表される単位長さ * 休符カウント数 = 1 のときであり、 かつそのときに限られる、 というバグがあった。以前のバージョンでは、下記表記の場合、z4 表示のままでは 2 分休符が表示されており、 全休符を表示するには z8 としなければならなかった。現在(abcjs5.11.0)では、このバグは修正されている。

4.6 声部変更子 - 音部記号と移調 (Voice Modifiers - Clefs and transposition )

音符記号と移調の情報は K: key フィールドと V: voice フィールドで使える。記法は次のとおりである。

          clef=<音部記号名> stafflines=<lines> octave=<number> 
          score=<note1>[<note2>] sound=<note1><note2> shift=<note1><note2>
          instrument=<note1>[/<note2>] clef-c=<clef name>

ここで <…> は値を表し、[…] はオプションパラメータを表す. それぞれの意味は次の通り。

4.6.1 音部記号

標準的な音部記号名が設定で clef= モディファイヤによって利用可能である (下の表参照). 追記:

典型的な設定名を下表に掲げる:

音部記号名 Parameter setting
ト音記号 clef=G2 or clef=treble
French violin clef=G1
Sub-bass clef=F5
ヘ音記号 clef=F4 or clef=bass
Baritone clef=F3 or clef=baritone
テナー記号 clef=C4 or clef=tenor
アルト記号 clef=C3 or clef=alto
Mezzosoprano clef=C2 or clef=mezzosoprano
Soprano clef=C1 or clef=soprano
Automatic* clef=auto
Drum** clef=perc
None clef=none

* clef=auto を使うと、譜面作成ソフトウェアは ト音記号とヘ音記号のいずれかを適当と思うほうに自由に振り分けることが できるようになる。そのような実装をする必要性を感じないソフトウェア開発者がとりうるオプションは、 必ずト音記号だけにする、ということがある。

** この標準はドラムの音部記号をサポートするにもかかわらず、 現在のところ特別にパーカッションの音符をサポートするソフトはない。

記法 <G|F|C><line number> は可能なライン番号すべてに拡張できる。 例:clef=C5 は C (alto) クレフ(アルト記号) 、すなわち下から上に数えて5番目の五線譜の行に位置することを意味する。 ライン番号は省略できない。従来の abc ソフトウェアでは一貫した解釈ではなかったからである。

記法<treble|bass|alto><line number> 廃止された.

旧来の記法をサポートするため, clef= プレフィックスは名前付きの音部記号では省ける。 ( 例: treble, bass, alto) しかし、明確化のためには省かないほうがよい。

他にも多くの音部記号を受け入れるようにするので、 その結果未知の名前は無視される。 もし音部記号が未知または特定できない場合は、デフォルトはト音記号である。

最後に、+8 または -8 のオクターブ記法がついている音符(下記参照)を除き、 音部記号はコードと音のあいだの関係に影響を与えない。

オクターブ記号

オクターブ記号はト音記号やヘ音記号に 8 または 15 の数字をつけて、 1オクターブまたは2オクターブの上げ下げを行うものである。

abc はオクターブ記号について2種類の方法を用意している。

(1) treble または bass のつぎに、 +8 または -8 の接尾辞をつける。 この結果それぞれ音部記号の上または下に 8 の数字がつけられる。

例: 以下の抜粋はオクターブのト音記号で、五線の下に記号が付される。 再生時には音符は中央 C より上の音が出る。

[K: clef=treble+8] C|

小さな 8 の他に, 同じ効果が得られる表記を次に抜粋する:

[K: clef=treble sound=Cc]      C|
[K: clef=treble instrument=c'] C|

2) 音部記号の設定 clef=trebleclef=bassで、 続いて ^8 または _8 接尾辞がつくときは、 '8' の文字を音部記号のそれぞれ上または下に表示する。

例: 下記の抜粋は、 オクターブをト音記号の上につけている。

[K: clef=treble^8] c|

小さな 8 のほか、下記の記法も同じ効果がある:

[K: clef=treble instrument=c'/c] c|

この拡張で同様の記法で 8 のかわりに 15 をつかえば2オクターブの上下ができる。

^/_ を使うかそれとも +/- を使うかは個人の好みによる。 ^/_ はピッチに影響を与えるが、+/- は影響を与えない。 The decision over whether to use the ^/_ or the +/- versions is largely a matter of personal choice and depends on whether you like the abc code to be at sounding pitch (^/_) or not (+/-).

例: 下記の音符はすべて中央 C の音である。 最初の4つの場合、音部記号の設定は、五線譜上の音符の配置にのみ影響する。 最後の場合は abc の意味に依存する。 結果として表示される譜面は下図の通りである。

[K: clef=treble]   C
[K: clef=bass]     C
[K: clef=alto]     C
[K: clef=treble_8] C
[K: clef=treble-8] c

訳注:[K: clef=treble_8] C の abcjs の譜面表示は誤りで、 本来なら  [K: clef=treble-8] c (こちらは正しい) と同じになる。

注: オクターブ音部記号は、他の変化記述子、たとえば、octaveや、 instrument, scoresoundとは独立である。

例: 必要があれば、 コメントは楽器を表示するのにオクターブ記号のわきに使われる(下記参照)、 しかしコメントがなければ楽器のセッティングは先のオクターブによって再生音が上昇する

K: clef=treble+8 % instrument=c'

4.6.2 五線

TODO: stafflines= の扱いを明確にするか、それとも廃れる機能としてマークするかは、 さらなる議論となるまでペンディングとする。

4.6.3 オクターブ変更子 (octave modifier)

octave 変更子は音符の上げ下げで多くのアプストロフィやコンマを書く手間を省くのに有用である。

例: 下記の抜粋は等価である:

訳注:abcjs では、上記の表示でわかる通り、オクターブ変更子は無効である。

4.6.4 変更子のスコープと継承

基本的なルールとして、各声部では、後続の V: または K: コードは 上書きされない限り、 前述のV: または K: コードを継承する。

注: 言い換えれば、声部の中では、V:K: フィールドを継承する。 これは、他のV: フィールドから継承するのと同じである。 以上は、逆も成り立つ。

推奨: 単一声部の曲では、 これらの変更子は通常 K: フィールドに対して適用される。 多声部の曲では、 変更子は V: フィールドのみに適用されるべきである (たとえ、その変更子のうちの一つが K: の変更で必要となった時でも 付加的 V: フィールド を導入すべきである)。 もし、単一声部の曲がV: フィールドを含むのならば (たとえば、その単一声部が多声スコアからの抜粋部分であるなど)、 変更子はV: フィールドの適用が推奨される。

記述された連続する変更子のK: フィールドや V: フィールドは、 前述されたフィールドに上書き される。 それぞれの K: or V: フィールドでは、 変更子はどんな順序でも変更されうる。 しかし、繰り返し では変更されない (もし繰り返しがあれば、2番は1番を上書きする)。

instrument(楽器)の略記(snm)を上書き評価するには、 これらの略記のスコアの等価物に拡張すること。 (たとえ直接オペレータを伴う略記を混在させることが推奨されなくとも。 移調オぺレータ参照). 参照。)

最後に注意すべきことは、オクターブシフトを指定する方法は様々あるということだ。 たとえば、 octave=1shift=Ccscore=Cc sound=Cc と同等である。 しかし、これらのオペレータすべては独立であり、 それらの作用は個別に考えるべきである。

4.6.5 アプリケーション依存変更子

アプリケーションは、そのアプリケーションの名前で始まりコロンをはさんでその変更子の名前が続くような、 アプリケーション固有の変更子を導入してよい。

例:

V:p1 perc mozart:noteC=snare-drum

TODO - どんなアプリケーションが実際にアプリケーション固有の変更子を使っているのだろう? たとえば、abcm2ps はclef=G2 というコードを許しているが、 これに準拠すべきなのだろうか、 それともabcm2ps:clef=G2 というコードを認識さえすればいいのだろうか?

4.7 連桁

連桁したい音符は、スペースを入れなければよい。 したがって、 2/4 拍子では、A2BC は1つの8分音符の次に2つの16分音符が連桁される。 一方、 A2 B C は同じ音符が分けられる。 連桁の傾きや符幹(stem)の上下の向きは自動的に決まる。

注意:連桁できない音符は独立して表示される。たとえば、 L:1/8 のとき ABC2DEAB C2 DE と同じである。

バッククォート ` は可読性を増す目的で連桁されるべき音の間で自由に使って良い。 バッククォートはコンピュータプログラムによって無視される。たとえば、A2``B``CA2BC に等しい。

4.8 繰り返し記号など

記号 意味
| 小節線
|] 細線-太線 (終止線)
|| 細線-細線 (複縦線)
[| 太線-細線
|: 繰り返し開始
:| 繰り返し終了
:: 繰り返しの開始と終了

4.9 繰り返しの1カッコ、2カッコ

繰り返しの 1カッコと2カッコ はそれぞれ [1 と [2 で表される。例:

4.10 いろいろな終わり方

記法 P: part notation と組み合わせて、 2 種類以上の繰り返しを記述できる。

4.11 タイとスラー

- の記号を使って、 abc-|cbac4-c4 のように小節線をまたぐか、または 1 つの小節にある 2 つの音符をタイでつなぐことができる。 タイのシンボルは必ず最初の音符とのペアになっていないといけないが、2番目の音とのペアである必要はない。 例:c4 -c4abc|-cba は不適切である。 abc 構成の順序 を見よ。 より一般的なスラーは、 ( と ) の中に音名を記述することで実現できる。 従って、 (DEFG) という記述は 4 つの音の上にスラーを引く。 ( D E F G ) のように、スラーの中にスペースを書き入れることは可能である。

スラーは、入れ子にできる。

スラーの始まりと終わりが同じ音にあってもよい。

破線のスラーは .(cde) のように、スラーの開始を示すほうのカッコにドットを付加することによって記述する。 スラーを終えることを示す方のカッコにドットを付加するかどうかは任意である。 同様に、破線のタイはドットを付加して、 C.-C のように書く。 この方法が特に便利なのは、同じ旋律につく歌詞が複数あり、スラーを要求する歌詞も要求しない歌詞もあるときである。

注意すべきことは、- で示されるタイと () で示されるスラーとは五線譜の上では同じ記号を生成するが、 ABC ファイルを演奏するプログラムにとって、これらは全く異なる意味を持つこと、そしてこれらの持つ意味が交換されるべきではないことである。 タイは同じ音高で連続する 2 つの音を連結するので、その結果 1 つの音のように演奏される。 一方スラーは音連の最初と最後をつなげることから、フレージングやレガートに奏されるべき楽句を明示する。 タイもスラーも、ともに和音の中でも外でもその間でも使用されるが、この場合それらの間にある違いは特に重要である。

4.12 装飾音符

装飾音は波カッコ {} を用いる。 曲 'Athol Brose' ( Strspys.abc にある) そのあらゆる部分がハイランド地方のバクパイプ曲の複雑な装飾音符の実例である。

アポジャトゥーラとアッチャカトゥーラを区別するために、 アッチャカトゥーラは最初に波カッコのすぐあとにスラッシュを置く。 例:{/g}C or {/gagab}C:

装飾音があっても、不均等割の構成には影響しない。したがって、 A<{g}AA{g}<A はともに正しい書き方で、A/2{g}A3/2 と等価である。

4.13 連符(Duplets, triplets, quadruplets, etc.)

記法 意味
(2 3 回分に 2 音符
(3 2 回分に 3 音符
(4 3 回分に 4 音符
(5 n回分に 5 音符
(6 2 回分に 6 音符
(7 n回分に 7 音符
(8 3 回分に 8 音符
(9 n 回分に 9 音符

もし拍子が複合拍子 (6/8, 9/8, 12/6) であれば n は 3 であり、そうでない場合は n は 2 である。

さらに一般的な連符は、p:q:r という記法を用いる。この意味は、 p 個の音符を q 個分に割り当て、残りが r 個になる、ということを示す。 もし q が与えられなければ、デフォルトは上で示した通りである。 もし r が与えられなければ、デフォルトは p と同じである。

例えば、(3 は (3:: や (3:2 と等しい。 言い換えれば、 (3:2:3 と等しいが、 (3::2 は (3:2:2 と等しい。

この記法は、3連符に異なる音価の音符が含まれるとき有用である。たとえば、 (3:2:2 G4c2 あるいは (3:2:4 G2A2Bc という場合である。 また、(3 D2E2F2 あるいは (3 D3EF2 という簡略な書き方がうまくいくこともわかる。 連符に書かれた数字は p である。

連符指定子と続く音符にある空白 (spaces) は無視される。 Spaces that appear between the tuplet specifier and the following notes are to be ignored.

4.14 装飾

多くの装飾の略記法が利用可能である:

.       スタッカート
~       アイリッシュ・ロール
H       フェルマータ
L       アクセント
M       下モルデント
O       コーダ
P       上モルデント
S       セーニョ
T       トリル
u       アップボー
v       ダウンボー

装飾は、装飾音の前に置く。 abc 構成の順序 参照。

例:

上記で掲げた記号のたいてい(~HLMOPSTuv)は一般的に使われる装飾の略記であり、 再定義可能である。 (再定義可能なシンボル参照).

More generally, symbols can be entered using the syntax !symbol!, e.g. !trill!A4 for a trill symbol. (Note that the abc standard version 2.0 used instead the syntax +symbol+ - this dialect of abc is still available, but is now deprecated - see decoration dialects.)

現在定義されている装飾記号は次のとおり:

!trill!                "tr" (トリルマーク)
!trill(!               長いトリルの開始
!trill)!               長いトリルの終了
!lowermordent!         縦線が入った短いギザギザ
!uppermordent!         短いギザギザ
!mordent!              !lowermordent! と同じ
!pralltriller!         !uppermordent! と同じ
!roll!                 アイリッシュの音楽で使われるロールマーク(アーク)
!turn!                 ターンのマーク(グルッペットともいう)
!turnx!                貫かれた線を伴うターンのマーク
!invertedturn!         逆ターンマーク
!invertedturnx!        貫かれた線を伴う逆ターンのマーク
!arpeggio!             垂直のギザギザ
!>!                    > マーク
!accent!               !>! と同じ
!emphasis!             !>! と同じ
!fermata!              フェルマータまたは伸ばし (点の上に弧)
!invertedfermata!      逆さまフェルマータ
!tenuto!               音を十分伸ばす記号。水平線。
!0! - !5!              指使い
!+!                    左手ピチカート、またはフレンチホルンでのゲシュトプフト
!plus!                 !+! と同じ
!snap!                 スナップピチカート(バルトークピチカート)記号。見た目は !thumb! と似ている。
!slide!                スライドした音、見た目はハーフスラーと ハーフスラーと似ている。
!wedge!                小さな楔形記号
!upbow!                V 記号(アップボー)
!downbow!              角型 n 様記号(ダウンボー)
!open!                 小さな円。開放弦またはハーモニクス
!thumb!                チェロの親指記号
!breath!               音のあとのブレス記号 (アプストロフィ―に似ている) 
!pppp! !ppp! !pp! !p!  ダイナミクス 1
!mp! !mf! !f! !ff!     ダイナミクス 2
!fff! !ffff! !sfz!     ダイナミクス 3
!crescendo(!           < の始まり。クレッシェンド記号
!<(!                !crescendo(!と同じ
!crescendo)!           < の終わり。クレッシェンド記号。最後の音符につける
!<)!                !crescendo)! と同じ。
!diminuendo(!          > の始まり。デクレッシェンド記号
!>(!                !diminuendo(! と同じ。
!diminuendo)!          > ディミニュエンドの終わりの記号, 最後の終わりの音につける。
!>)!                !diminuendo)! と同じ
!segno!                S 状のシンボルを対角線で分かち2つの装飾を加えた。セーニョ記号。
!coda!                 輪と十字の組み合わせ:コーダ
!D.S.!                 D.S. 文字 (=Da Segno)
!D.C.!                 D.C. 文字(= Da Coda または Da Capo)
!dacoda!               単語 "Da" Coda サインに続く
!dacapo!               単語 "Da Capo"
!fine!                 単語 "fine"
!shortphrase!          五線の上部の垂直線
!mediumphrase!         上に同じ。ただし中央部まで延長される。
!longphrase!           上に同じ。ただし下3/4まで延長される。
!editorial!            続く臨時記号を音符の上に置く。4.2節 臨時記号Accidentalsを見よ。
!courtesy!             親切な臨時記号を (シャープまたはフラット、ナチュラル)を続く音符にカッコつきで付加する。4.2節 臨時記号Accidentalsを見よ。

下の図は装飾記号の実例である。

推奨: 一般的な楽譜の装飾に関するよい情報源は下記にある。 http://www.dolmetsch.com/musicalsymbols.htm.

4.15 シンボル

多くのシンボルを音楽のラインに加えると曲は見づらくなる。 こういった場合は、シンボル行を使う。 (シンボル行とは、!…!のみを含む行をいう。 decorations, "…" chord symbols or annotations)

Adding many symbols to a line of music can make a tune difficult to read. In such cases, a symbol line (a line that contains only !…! decorations, "…" chord symbols or annotations) can be used, analogous to a line of lyrics.

A symbol line starts with s:, followed by a line of symbols. Matching of notes and symbols follow the alignment rules defined for lyrics (meaning that symbols in an s: line cannot be aligned on grace notes, rests or spacers).

Example:

   CDEF    | G```AB`c
s: "^slow" | !f! ** !fff!

It is also possible to stack s: lines to produced multiple symbols on a note.

Example: The following two excerpts are equivalent and would place a decorations plus a chord on the E.

   C2  C2 Ez   A2|
s: "C" *  "Am" * |
s: *   *  !>!  * |
"C" C2 C2 "Am" !>! Ez A2|

4.16 再定義可能な記号

!symbol! シンタックス(装飾を見よ)を避けるショートカットがある。 文字H-Wh-w、 そしてシンボル~U:フィールドとともに割り当てることができる。 たとえば、文字 Tをトリルに割り当てるには、こう書けばよい。

U: T = !trill!

また、''"^text"'', など ( 注釈 下参照) も定義できる。

例:音符の上にプラスの記号を表示したいときば、次のように''p'' を定義する。 U: p = "^+"

Symbol definitions can be written in the file header, in which case they apply to all the tunes in that file, or in a tune header, when they apply only to that tune, and override any previous definitions. Programs may also make use of a set of global default definitions, which apply everywhere unless overridden by local definitions. You can assign the same symbol to two or more letters e.g.

U: T = !trill!
U: U = !trill!

in which case the same visible symbol will be produced by both letters (but they may be played differently), and you can de-assign a symbol by writing:

U: T = !nil!
or
U: T = !none!

標準定義の集合(再定義前の集合)は次のとおりである。

  U: ~ = !roll!
  U: H = !fermata!
  U: L = !accent!
  U: M = !lowermordent!
  U: O = !coda!
  U: P = !uppermordent!
  U: S = !segno!
  U: T = !trill!
  U: u = !upbow!
  U: v = !downbow!

進んだマクロの機構については、 マクロを見よ。

4.17 和音とユニゾン

和音 (すなわち、1つの符幹に2つ以上の音符があるもの)は [] 記号の中に音を記す。例:

[CEGc]

はハ長調の和音を示す。これらは連桁することもできる。

[d2f2][ce][df]

和音内にはスペースがないことに注意。

4.18 和音記号

変動要因: ここでの和音のリストとその扱われ方は今後何らかの点で拡張されるだろう。 それまでは、プログラムのコード記号の扱いは特に柔軟であるべきだ。

和音記号(たとえば、和音/ベース 音符) はメロディーラインの下に(パッケージによっては上に)あり、該当する音符の左に二重引用符でくくって表記する。 例:

和音記号のフォーマットは <note><accidental><type></bass> というかたちとなる。 ここで音符 <note> は A-G, オプションの臨時記号 <accidental> は b または #, オプションの <type> は次のどれかまたは複数である。

m or min        短調 (minor)
maj             長調 (major)
dim             減和音 (diminished)
aug or +        増和音 (augmented)
sus             係留 (suspended)
7, 9 ...        7th, 9th, など.

そして </bass> はオプションのベース音である。

和音名の後のスラッシュは、 "C/E" のように任意のベース音がある時にしか使われない。 ベース音が該当和音にあれば転回和音であること、つまりその音が和音の最も低い音にであることを示している。 ベース音が該当和音になければその音が該当和音より低い音で鳴る付加的な音であることを示している。 ベース音は(A-Ga-gの)任意の文字であり、 (b# の)臨時記号を伴っても伴わなくともよい。 ベース音は大文字でも小文字でもピッチには関係ない。

代理和音は(再生用ではなく)印刷用に指定される。 それには "G(Em)" のように、二重引用符の中で通常の和音名の後に丸カッコで囲む。

開発者への注:ソフトウェアは Unicode の変記号、 本位記号、嬰記号 (♭, ♮, ♯) を適切に扱うようにすべきである。 特殊シンボル を見よ。

4.19 注釈

一般的に注釈は、五線譜の上や下、中央に書かれる。 この場合、二重引用符の中の文字列を次のいずれか、^, _, <, >, @ ではじめる。 これらはそれぞれ音符や休符、小節線の上、下、左、右に位置する。@ はプログラムの解釈による。

4.20 abc 構成の順序

音符に関する abc 構成の順序は次のとおりである。
//<grace notes>//, //<chord symbols>//, //<annotations>/<decorations>//
(例: Irish roll, staccato marker or up/downbow), //<accidentals>//, //<note>//, //<octave>//, //<note length>//, 例: ''~^c'3'' または ''"Gm7"v.=G,2''.

タイ記号、スラー記号 ''-'' は音符グループのすぐ後でなければならない。しかし、スペースが続いてもよい。
例: ''=G,2- ''。
開きデリミタと閉じデリミタ、 ''['' and '']'' は音符列を完全に囲まないといけない(和音を除く)。
例: "C"[CEGc]|
|"Gm7"[.=G,^c']
また、スラー記号 ''()'' も同様である
"Gm7"(v.=G,2~^c'2)

5. 歌詞

5.1 行揃え

w: 属性を使う

次の二つは同じである。

訳注:abcjs で第2の書き方をすると、G A B c に doh re mi fa があたってしまい、誤った表示となる。

コメント: 第2の例は、 abc 2.1 で導入された拡張により可能となる。 この意味は、歌詞はもはや音符の列のすぐあとに続くものではないということだ。 もちろん、歌詞のありかは曲本体の後に置いてもよい。 しかし、行揃えの拡張ルールは abc 2.0 と完全に後方互換をとれているというわけではない。 時代遅れの歌詞揃えの説明を見よ。

もしシラブルが利用できる音符より少なければ、残った音符には歌詞がなくなる(空白のシラブルが割り当てられる)。 その結果、w: フィールドの見た目は以前に(リアルでもブランクでもよいが)シラブル付きで表示されたすべての音符と結び付けられる。

例: 次の例では、空白の w: フィールドは 4 つのG 音符に何も歌詞が割り当てられていないことを表している。

このようにして結合される線の数に制限はない。 ただし、空白行の前にバックスラッシュを使用してはならない。 例:以下は合法である。

もし利用できる音符よりシラブルが多ければ、余ったシラブルは無視される。

開発者への推奨: もし w: 行が、対応する音符に対するシラブルの正しい数を含まない場合、 プログラムはユーザーに対してウォーニングを出すべきだ。 しかし、不十分なシラブルは(上に述べた通り)合法的な使い方であるので、 プログラムはウォーニングを切り替えるようにしておくのがよいかもしれない。

注意:シラブルは装飾音符や、 休符スペーサーには割り当てられない。そして、タイや、スラー、連繋した音符は個別の音符として解釈される。

歌詞行はテキスト文字列として扱われる。 歌詞のなかでは、単語はひとつ以上のスペースで区切られていて、あとのシンボルと正しく整合するようになっていなければならない。

シンボル 意味
- (ハイフン) 1つの単語で複数のシラブルを分ける
_ (アンダースコア) 前のシラブルを特別な音のために伸ばす
* 1つの音符をスキップする (すなわち * はブランクのシラブルに等しい)
~ スペースとして表示される; 1つの音に複数の単語を合わせる。
\- ハイフンとして表示される。 ;複数のシラブルが1つの音に割り当てられる
| 次の小節線に進む

- の前にスペースやハイフンがある場合、 - は別の音節とみなされる。

ハイフンの隣にアンダースコアが使われている場合、常にハイフンが最初に来る必要がある。

小節内に音符と同数の音節がない場合、 | をタイプすると自動的に次の小節に進む。 十分な音節がある場合、 | は無視される。

例:

w: syll-a-ble    は3つの音符に分けられる
w: syll-a--ble   は4つの音符に分けられる
w: syll-a -ble   (上記に同じ)
w: time__        は3つの音符に分けられる
w: of~the~day    1つのシラブルとして扱われる (すなわち、一つの音にまとめられる)
                 しかし3つに分かれた言葉ののように見える
 gf|e2dc B2A2|B2G2 E2D2|.G2.G2 GABc|d4 B2
w: Sa-ys my au-l' wan to your aul' wan,
+: Will~ye come to the Wa-x-ies dar-gle?

+: フィールド継続の意味を理解するためには、 フィールド継続を見よ。

5.2 連

w: 属性を使う

w: を二つ重ねる。

訳注:オリジナルでは行頭に + を使う方法も出ているが、abcjs では使えないため割愛した。

5.3 番号づけ

歌詞の1番、2番…は、番号、ピリオド、~、歌詞をスペースをはさまずに書く。 そうすれば、歌詞は最初の音符からはじめることができる。

6. 組版、再生

6.1 組版

6.1.1 組版改行

// 用語 // 改行とは文書で使われることばで(行改め, 行送り, キャリッジリターン、行末とも言われる)、 文書をページに収めるために決める。 この節を通して、また、この標準のどこでも、次のように用語を区別する。

code line-break
コード改行

コード改行とは、 abc の曲本体 の改行であり、 特に、音楽コードの行末尾での改行を意味する。

score line-break
スコア改行

スコア改行とは、プリントされたスコアの行改行を意味する。

スコア改行の組版の基本的な仕組みは、コード改行を使用することである。 チューン本体の1行の音楽コードは、通常、印刷された音楽の1行に相当する。 もちろん、音楽コードの行の印刷された表現は、スタッフにとっては長すぎるかもしれないので、 必要ならば、組版プログラムは追加のスコア改行を導入すべきである。 結果として、スコアライン改行が完全に自動的に処理されるようにしたい場合(非abcスコアリングソフトウェアでは一般的である)、  曲の一行に曲の本体を入力するだけである。

ほとんどのabc GUIソフトウェアは長すぎる行を囲む必要があるが、 1行に調整本体を入力するのは不便だ。特に、改行を助けるコード改行やabcコードを電子メールで送信する場合(入力行の続きを参照)はそうである。

さらに、過去にいくつかの組版プログラムが使用されてい!文字をabcコードに挿入して、スコア改行を強制するものだ。 その結果、abc 2.1では改行命令が導入された。

     I : 改行

すべての改行設定を許可するために、I:linebreak命令を4つの可能な値と共に使用して、スコア改行を制御することができる。

	"I:linebreak $"は、$記号が楽譜の改行をタイプセットするために曲本体で使用されることを示す。
	コード行区切りはすべて、組版の目的においては無視される。

例:次のabcコードは2行に組版する必要がある。
I:linebreak $
K:G
|:abc def|$fed cba:|

"I:linbrea" ! シンボルは、ラインの改行を組版するために使用される。 すべてのコード行区切りは、組版の目的では無視される。

コメント: "I:LineBreak !" 命令は "I linebreak $" と同じ方法で動作する、 下位互換性のために主に提供されている - 改行の方言を参照のこと。 "I:linebreak $"が好ましい使用法である。 "I:LineBreak!", "I:decoration +"命令も自動的に起動する - 装飾方言を参照のこと。最後に、 "I:LineBreak! " はdeprecatedディレクティブと同等である。 古いディレクティブを参照のこと。

値<EOL>、$および!より多くの1つのシンボルがスコアラインブレイクを示すことができるように組み合わせることもできる。

デフォルトの改行設定は次のとおり。

I:linebreak <OL> $

つまり、コードの改行と$記号の両方がスコアの改行を生成する。

コメント: "I:linebreak $!" は合法だが、 同じことを意味するために2つの異なる記号を使用するので、お勧めできない。

I:linebreak命令は、ファイルヘッダ(abcファイル内のすべての曲に適用される)、または曲ヘッダ内で使用できる (この場合、その曲にのみ適用され、ファイルヘッダの中断指示)。 同様に、2つのI:改行命令がファイルヘッダーまたはチューンヘッダーに表示された場合、 2番目のI:改行命令は最初のものを取り消す。

コメント:「I:linebreak $」と「I:linebreak 」のような2つの命令を一緒に使用すると、 デフォルトと自動改行の切り替えをスワップするだけで簡単に行うことができる。

I:改行の指示は、曲の本体では許可されていない(主に、音楽コードの読みやすさと両立しえないため)。

スコアの改行の抑止

スコアの改行を示すために曲本体で<EOL>文字が使用されているときに 、組版ソフトウェアに特定のコード改行を無視するよう指示することが有用なことがある。 これは、音楽コードの行末にバックスラッシュ(\)を使用して実現される。 行が処理される前にバックスラッシュが削除されるので、バックスラッシュの後ろに空白および/またはコメントが続くことがある。

例:以下の2つの抜粋は、同等のものとみなされ、
印刷されたスコアには1スタッフ(1行)として組版される必要がある。
abc cba|\ % end of line comment
abc cba|

abc cba|abc cba|

バックスラッシュは2行にわたるスタッフを処理して1行にすることができる。 したがって、2つのハーフラインの間にスペースが必要な場合は (たとえば、音符が一緒に鳴らないようにするために)、 スペースを前半のバックスラッシュの前に配置するか、 後半の最初に配置する必要がある。

次の3つの断片は同じものと考えられる。

abc \
cba|

abc\
 cba|

abc cba|  

このようにして結合される線の数に制限はない。 ただし、空白行の前にバックスラッシュを使用してはならない。 例:以下は合法である。

cdef|\
\
cedf:|

例:以下は非合法である。

cdef|\

cdef:|

上の例では、バックスラッシュで終わる行の直後に音楽コードの行が続き、 バックスラッシュは2行の音楽コードの続きとして機能し、 長い音楽コード行を分割するために使用できる。

しかし、もっと重要なのは、物理的な改行が発生した時点で、 情報フィールドとスタイルシート指示文が処理される(コメントが削除される)ことである。 したがってバックスラッシュは一般に、音楽のラインの途中で拍子や調性の変更を含めるために使用される。

例:以下は、プリントされたスコアに1行として組版されるべきである。

abc cab|\
%%setbarnb 10
M:9/8
%comment
abc cba abc|

代わりの使用例:上記のことは、インラインフィールド、 %% の代わりにI:形式、コメントの代わりにr:remarkを使用しても実現できる。

abc cab|[I:setbarnb 10][M:9/8][r:comment]abc cba abc|

最後に、<EOL>文字がスコア改行を示すために使用されていない場合、 バックスラッシュは実質的に冗長であることに注意すること。

ユーザーへの推奨:ほとんどの行の音楽コードでバックスラッシュ記号を使用していることがわかったら、 代わりに "I:linebreak "または "I:linebreak $" の使用を検討するとよい。 スコアライン改行を生成するために無視することができる(後者の場合は、$文字でスコアラインを改行することができる)。

6.1.2 組版特別空白

y シンボルは音符の回りに特別なスペースを作るために使われる。 さらに、このシンボルに コードシンボル や、 装飾 を結び付けることによって、 音符と、シンボルや装飾との間をあけるために使う。

例:

"Am" !pp! y

注意:y シンボルは 休符を音楽内で作ることは決して しない

6.1.3 組版情報フィールド

既定の組版プログラムでは、表題 (T) のほか、 作曲者 (C), 原作 (O), パート (P), テンポ (Q), 行揃え語 (w) その他語 (W) がプリントスコアに存在する。そのスキーマは下記の通り:

これらのフィールドを抑止したい場合、あるいは、次に挙げる付加的情報フィールド: ノート(N)、履歴(H)、リズム(R)、ブック(B)、ディスコグラフィー(D)、ファイル(F)、ソース(S)、 編曲(Z)を組版したい場合は、%% writefields ディレクティブを使用すること。 - 情報ディレクティブを参照。

組版をカスタマイズする(たとえば、フォントを変更する)には、 フォーマットディレクティブを参照のこと。

6.2 再生

情報フィールドの多くは再生プログラムでは無視される。 例外は I: のほか K:, L:, M:, m:, P:, Q:, s:, U: , V: である。

付け加えていえば、メタデータとして再生用ファイル (例:MIDI, ogg, mp3)としてアウトプットとする再生プログラムは、 コンテンツに T: のほか C:, w:, W: フィールドをメタデータに含めてよい。

さらに、再生プログラムは R: フィールドを使って曲のなかで強調するパターンを含ませて良い。しかし、 このような使い方は標準化されていない。

再生のカスタマイズのほとんどは、楽器ディレクティブで指定される。

7. 多声

変動要因 : 多声音楽は活発な見直しがされている。内容は声部のコントロールと P:, V: , T: 各フィールドの相互作用についてである。 シンタックスは abc 2.2 で確定予定である。

訳注:abc 記法のページでは、transpose 属性が下記のように用いられている

V:B1  middle=d clef=bass      name="Basso I"    snm="B.I"  transpose=-24
V:B2  middle=d clef=bass      name="Basso II"   snm="B.II" transpose=-24

abc 記法の tranpose 属性を使えば下記で記述したピッチのちょうど2オクターブ下が表示される。

[V:B1]       z8      | z2f2 g2a2 | b2z2 z2 e2  | f4 f2z2 |

しかし、abcjs はこのtranspose 属性に対応していないようだ。やむなく下記のように書き換えた。

[V:B1]       z8      | z2F,2 G,2A,2 | B,2z2 z2 E,2  | F,4 F,2z2 |

B1声部、B2声部すべて、この処置を施さねばならない。

V: は本体にもヘッダーにも現れる。 ヘッダーに現れる場合、V: は声部のプロパティとは独立に設定される。 たとえば、上記の例で名前のプロパティは、ラベルがプリントされるべき最初の声部でプリントされる。 注意:これらのプロパティは曲本体で設定されたり変わったりする。 V: プロパティは以下説明する。

スタッフまたは譜表上の声の正確なグループ分けは、V:自身によっては指定されていないことに注意すること。 これは、%% score stylesheetディレクティブで指定することができる。 詳細については、音声グループを参照のこと。

プレイバックについては、%% MIDIスタイルシート指示文を使用する。 General MIDI楽器をどのようにボイスに割り当てるかの詳細については、インストルメンテーションディレクティブを参照のこと。

推奨ではないが、フラグメントX:1のチューン本体は、このように表記することもできる:

X:2
T:Zocharti Loch
%...skipping rest of the header...
K:Gm
%               Start of tune body:
V:T1
 (B2c2 d2g2) | f6e2 | (d2c2 d2)e2 | d4 c2z2 |
 (B2c2 d2g2) | f8 | d3c (d2fe) | H d6 ||
V:T2
 (G2A2 B2e2) | d6c2 | (B2A2 B2)c2 | B4 A2z2 |
 z8 | z8 | B3A (B2c2) | H A6 ||
V:B1
 z8 | z2f2 g2a2 | b2z2 z2 e2 | f4 f2z2 |
 (d2f2 b2e'2) | d'8 | g3g  g4 | H^f6 ||
V:B2
 x8 | x8 | x8 | x8 |
 x8 | z2B2 c2d2 | e3e (d2c2) | H d6 ||

上の例では、各V:ラベルは1回だけ出現し、その声の完全な部分が続く。 チューンX:2の出力は、 チューンX:1の出力とまったく同じになる。 しかし、X:1のソースコードは読みやすくなる。

7.1 声部のプロパティ

変動要因: を見よ。

V: フィールドは名前、音部記号などのような声部を特定する内容を含むことができる、例:

V:T name="Tenor" clef=treble-8

これは声部 T が五線譜に Tenor として描かれること、 ト音記号が8度下で書かれることを表している。 歌唱者は一オクターブ下げて歌わねばならない。ありうる声部の定義は次の通り。

名前の指定は nm= と省略できる。別名は snm= と省略できる。

アプリケーションでは独自の指定をしてよいが、 その指定が理解できなかったり実装できなかったりするときは無視すべきである。 これは abc ファイルととアプリケーションの互換性を保つために必要である。

7.2 改行

変動要因: を見よ。 特に下記の要因から control voice の導入は緩和してよい。

多声 abc 曲組版改行は、 一声の音楽の改行と同じである。 ただし、1つの声部に付けられた改行が他の改行にも付加される。 Canzonetta.abc の例を参照。

7.3 インラインフィールド

変動要因: を見よ。

あいまいさを避けるため、インラインフィールドでの音楽属性は、 適用される各声部に関して繰り返すこと。
例:

7.4 声部の重ねあわせ

変動要因: を見よ。

& オペレータは、複数の声部を1つの小節に一時的にオーバーレイするために使ってよい。 それぞれの & オペレータは1つの小節のタイムポイントを決め、 その前にある一時的な声部と平行に続く音符も決める。 この方法はそれぞれの & に対して1つの完全小節を付け加えるときのみ使える。
例:

A2 | c d e f g  a  &\
     A A A A A  A  &\
     F E D C B, A, |]

w: ラインの語(と s: ラインのシンボル) は歌詞の行合わせの対応する音符にマッチする。 (歌詞を見よ)。伴奏でのオーバーレイとは無関係である。

g4 f4 | e6 e2 |
&& (d8    | c6) c2|
w: ha-la-| lu-yoh
+: lu-   |   -yoh

訳注:これも abcjs では対応していない。上記を解釈できる処理系であれば、 ha-la-lu-yoh は五線譜の上に表示されるが、abcjs では上記の方法でも、他の方法でも、 歌詞を上に載せることはできない。

この書き方によって、abc 2.0 の w: lines と s: lines の書き方は古くなり、 廃れている禁止されているを見よ)。

8 abc データフォーマット

ファイルの各行はホワイトスペースで終わるが、このホワイトスペースは無視される。 この標準の目的のためには、 ASCII タブとスペース文字は同等であり、どちらも 'ホワイトスペース'に含まれる。 アプリケーションは行末のマーカーとして Unix の(<LF>)のほか、 Windows/DOS の(<CR><LF>)、 Macintosh style (<CR>)のどれも正しく解釈しなければならない。

8.1 曲本体

曲本体のなかで、 プリント可能な ASCII 文字すべてが 音楽コードで使える。これらは次の通り:

 !"#$%&'()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
abcdefghijklmnopqrstuvwxyz{|}~

これらの中で、下記の文字は現在予約されている。

# * ; ? @

将来の標準で abc シンタックスを拡張するときに使うかもしれない。

前方互換性を保証するために、これらの文字が音符グループの中や間に出現した場合は、 現在のソフトウェアはこれらの文字を無視すべきであり、できれば警告を出してほしい。 しかし、これらの文字はテキスト文字列情報フィールドの中に出現した場合は無視してはならない。

例:

@a !pp! #bc2/3* [K:C#] de?f "@this $2was difficult to parse?" y |**

は次のように扱われるべきである:

a !pp! bc2/3 [K:C#] def "@this $2was difficult to parse?" y |

8.2 テキスト文字列

text string
テキスト文字列

abc ファイルに書かれているテキストは、 情報フィールドの一部か、 アノテーションの一部か、 自由テキスト / 組版テキストの一部かであり、 これらはまとめてテキスト文字列と呼ばれたり、あるいはより正式に abc テキスト文字列と呼ばれたりする。
注意:abc 記譜法 ver 2.0 ではテキスト文字列abc 文字列と読んでいた。)

通常、複数行のテキストがある場合、各行は別々のテキスト文字列を形成するが、区別は必須ではない。

テキスト文字列の内容は、任意の有効な文字セットを使用して記述することができる。 デフォルトの文字セットはutf-8で、すべてのUnicode文字にアクセスできる。

しかし、すべてのテキストエディタがutf-8をサポートするわけではなく、テキスト文字列にアクセント記号付きの文字を書くときの移植性の問題を避けるために、3つの他のエンコーディングオプションを使用することもできる。

準拠しているすべてのabc植字ソフトウェアは、付録に示されているアクセントと合字のサブセット、サポートされているアクセントと合字を、以下に示す特殊文字と記号とともにサポートする必要がある (理解でき、変換可能)。

例は、次のとおり:

Accent Examples Encodings
grave À à è ò \`A \`a \`e \`o
acute Á á é ó \'A \'a \'e \'o
circumflex  â ê ô \^A \^a \^e \^o
tilde à ã ñ õ \~A \~a \~n \~o
umlaut Ä ä ë ö \"A \"a \"e \"o
cedilla Ç ç \cC \cc
ring Å å \AA \aa
slash Ø ø \/O \/o
breve Ă ă Ĕ ĕ \uA \ua \uE \ue
caron Š š Ž ž \vS \vs \vZ \vz
double acute Ő ő Ű ű \HO \Ho \HU \Hu
ligatures ß Æ æ œ \ss \AE \ae \oe

アクセント付き文字を植字するのが困難なプログラムは、それらを基本文字に、または合字の場合には、バックスラッシュを無視して2つの基本文字に減らすことができる。

例:基本文字に縮小すると、\ oAはA、\ "は\"、\ sはss、\ AEはAEになる。

固定幅のユニコードの場合、\ uまたは\ Uの後ろに、それぞれ4または8桁の16進文字を続ける必要がある。 したがって、\ uの後の4文字のいずれかが16進数でない場合、それはbreveとして解釈される。

特殊文字

テキスト文字列のコンテキストで意味のある文字は、次のようにバックスラッシュを使用してエスケープできる。

特殊記号

次のシンボルも便利である。

流動的:最後に、指定子$ 1、$ 2、$ 3、および$ 4を使用して、テキスト文字列内のフォントを変更できることに注意してください。 しかし、この機能は将来のバージョンの標準では変更される可能性がある。詳細については、font directivesを参照のこと。

9. マクロ

この標準ではマクロのオプションシステムを定義する。 マクロは統括して、装飾記号を定義する方法であり、たとえば、ティルデ ~ のような装飾記号を 演奏できるようにするためのものだ(たとえそれが別の多くの目的に使われるかもしれないとしても)。

これらのマクロのソフトウェアの実装は、 最初にこのセクションで定義されたマクロを最初に展開すべきであり、 そのあとで関連する U: 置換のみを行うべきである ( 再定義可能なシンボルを参照)。

これらのマクロが abc ヘッダファイルで格納されているとき、 これらは強力なライブラリとなりうる。

マクロには2種類ある。静的マクロと移調マクロである。

9.1 静的マクロ

静的マクロは曲ヘッダを次のように書くことで定義できる。

 m: ~G3 = G{A}G{F}G

もしこの曲を演奏したいときは、プログラムはマクロ定義のための曲ヘッダを検索する。 そして、検索と置換をそのテキスト内部コピーに対して行ったあとで曲をパーサーが解釈して演奏する。 ~G3 が出てくるたびに、 G{A}G{F}G に置き換えられ、それが演奏される。 影響を受けるのは ~G3 の音のみで、~G2~g3, ~F3 などは無視される。

マクロは好きなだけ加えることができる。もちろん、静的マクロだけを使うなら、 ピッチと音符の長さの組みあわせをそれぞれマクロで使い分けることができる。以下はその例である。

ここでは二つの静的マクロを使っている。というのは、この曲にはティルデがついた2つの異なる音符があるからだ。

静的マクロの定義は4部分からなる。

ターゲット文字列は31文字までの文字列であればよい。ただし、文字に n を含んではならない。理由は後述する。 ティルデを使う必要はないが、 abc の正当な組み合わせを使わないのならば、他のプログラムでは曲を演奏できないだろう。

置換後の文字列は abc 文字列として正当な 200 文字までの長さの文字列である。 責任をもってもらいたいのだが、ターゲット文字列と置換後の文字列は同時にインターバルを専有する(プログラムはチェックしない)。 必要があれば、ターゲット文字列と置換後の文字列がどちらもスペースを含んでよい。 読みやすさのためのスペースとトレイリングスペースは取り除かれ、 次のようになる。

m:~g2={a}g{f}g

これももちろん OK である。読みにくいが。

9.2 置換マクロ

もし曲が多くのたくさんの音に装飾されていたとしたら、そして装飾パターンを同じように多くの音に適用したければ、 これを達成するために置換マクロが使える。 置換マクロは静的マクロとちょうど同じ方法で書ける。一点、 違いはターゲット文字列にある音符のシンボルが、 'n' (すべての音符の意味)であることと、 n とのアルファベット上の関係における位置に従って解釈されるその他の文字 (h から z)が置換文字列で音名を示す記号に使われることにある。

だから、 例えば m: ~G3 = G{A}G{F}G という静的マクロは、 m: ~n3 = n{o}n{m}n という置換マクロに書き換えることができる。 置換マクロが曲の内部で使われた場合、 ~n3 と書かれたものだけが適切な音符のパターンに置換される。 ~n2 と書かれたもの(または、その他の音価のもの)は無視されるので、 それぞれの音価に合った別々の置換マクロを書かなければならない。

そして、たとえば再度静的マクロ m: ~G3 = G{A}G{F}G を移調マクロ m: ~n3 = n{o}n{m}n として書き換えることができる。 置換マクロが拡張されると、形式 ~n3 のどんな音符でも適切な音符パターンに置き換えられる。 形式 ~n2 (や他の長さ)は無視されるので、 それぞれの音の長さで置換マクロを分けることができる。

例を見てみよう。

置換マクロの定義は4部分からなる:

ターゲット文字列は31文字までの文字列であればよい。ただし、nのあとに音符の長さを特定する数字がある文字列を含んではならない。

置換後の文字列は abc テキストで正当な 200 文字の長さまでならどれでもよい。 ここで、音符のピッチは文字 h - z で定義され、ピッチは文字 n に対する相対的なものと解釈される。 一度タイムインターバルマッチを確認すること。 置換マクロでは変位記号は使えない。

コメント: どんな場面でも動作する ~=a3~^G2 のようなものを、 置換する方法を考えつくことはまずできない。そのようなことをするぐらいなら、静的マクロを使うべきだ。


10. 時代遅れのシンタックス

abc 標準には時代遅れのシンタックスが多くある。それらは、 もはや推奨されなかったり、サポートさえされなかったりする。 これらの定義は次のとおりである。

http://www.ietf.org/rfc/rfc2119.txtを見よ。 ここには下記キーワードの公式定義が述べられている。 MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, OPTIONAL。

10.1 時代遅れの情報表現シンタックス

省略

10.2 時代遅れの表現

省略

10.3 時代遅れの継続

初期の abc は、バックスラッシュ (\) がスコアの改行を抑制する文字として、 音楽コードの行末にこれを置くことで使われていた。 (中略)

abc 2.0 ではこの用法を拡張して、 \ が一般的な継続文字となるようにした。 つまり、 情報フィールド 、 特にw: 歌詞のフィールドに適用できるようにした。残念なことに、このルールの徹底ははかどらず、 ( \ はプリプロセッサによって継続行となるように取り扱われ、 もしそうならコメントはどうなるか?)使用法は広く採用されることはなかった。まして理解されることもなかった。

コメント: 160,000 曲ある現在利用できるabcnotation.com 曲検索では、 w:フィールドの継続を使っているのはわずか 22 曲 (0.01%) であり、 他のフィールドを使っているのは約 50 曲(0.03%) しかなかった。後者の利用ではほとんどがエラーとなっている。

省略

10.4 時代遅れのディレクティブ

省略

10.5 時代遅れのファイル構造

省略

10.6 時代遅れの歌詞揃え

省略

10.7 他の時代遅れのシンタックス

10.7.1 禁止されている声部オーバーレイ

省略

11. スタイルシートディレクティブと擬似コメント

11.0 ディレクティブとは

11.0.1 免責事項

初期の abc は、擬似コメント (''%%'' で始まる行)が、 ソフトウェア固有の情報とフォーマット指示を abc ファイルに付加する手段として紹介されていた。 この理由は、これら擬似コメントが % 記号で始まることで、 コメントとして扱われ無視されるようにできたからだ。

多大な努力のもと、abc 2.0 ではこれらの擬似コメントを標準化しようと試み、 スタイルシートディレクティブに記載した。 この試みは、"ABC の仕様そのものの一部ではない" し、むしろ"付加的な標準"であった。 これらのディレクティブが制御するものは、コンテンツと構造の情報であり、abc のコードによって「 実際にレンダリングされるもの、たとえば組版やプレーヤープログラムによってレンダリングされるものとして、 記述されていた。

しかし残念なことに、これら擬似コメントは数が多すぎて、すべてが正しく定義されているというわけではなかった。 さらに、ディレクティブの中には、 特にテキストディレクティブ臨時記号ディレクティブで、(レンダリングの命令ではなしに) コンテンツや構造情報を含んでいるものがあった。

abc 2.1 ではこのアプローチから少し先に進んでいる。

擬似コメントは今でも多く受け入れられている方法であり、 開発者が実験的な特徴やソフトウェア固有なフォーマット命令を導入できる。 しかし、あるディレクティブが多く受け入れられるようになれば、 すなわち1つ以上のソフトウェアで実装されるようになったり曲の実質的な本体で使われるようになったりすれば、 目標はその使い方を標準化して、標準として採用することである。 だから、''%%''擬似コメント形式の代わりに ''I:''命令を推奨することになるだろう。

特に、abc 2.3 ではマークアップと埋め込みについて述べるとともに、 この点からテキストベースのディレクティブの多くが、他の広く受け入れられる形式とともに、 公式に組み入れられるだろう。

当面は、第 11 章は abc 2.0 とはほとんど同じのままにしておく(誤植を直した程度)が、 今後の結果によっては第 11 章の全部とスタイルシートのディレクティブの全部が // 変動要因 // とみなされるだろう。

11.0.2 スタイルシートディレクティブ

stylesheet directive
スタイルシートディレクティブ

スタイルシートディレクティブとは''%%''で始まる行であり、組版やプレーヤーのプログラムに対する命令を与えるディレクティブが続くものである

// 例: //
  %%papersize A4
  %%newpage
  %%setbarnb 10

別法として、 どんなスタイルシートディレクティブでも ''I:命令フィールドで書けるのならば、 まだ標準化されていない使用法ゆえに非推奨だがこう書けるだろう (すなわち第11章に述べたどんなディレクティブも非推奨なので)。

// 例: // 非推奨
  I:papersize A4
  I:newpage
  I:setbarnb 10

インラインフィールド記法を使用して、スタイルシートディレクティブを音楽の途中に配置することができる。

CDEFG|[I:setbarnb 10]ABc

プログラムがスタイルシート指示文を認識しない場合は、それを無視するだけである。

スタイルシート指令は正式にabc標準自体の一部ではないことを強調しておく。 さらに、可能なディレクティブのリストは長く、標準化されていない。 レイアウト、テキストの注釈、フォント、間隔、声調、移調などの詳細を指定するためのさまざまなプログラムによって提供される。

厳密に言えば、abcアプリケーションはスタイルシート指示文の同じセットに従う必要はない。 しかし、異なるコンピュータシステム間でabcファイルを移植できるようにすることが望ましい。

11.1 声部のグルーピング

変動事項:この節は、 abc 2.2 の多声に関する全体討論の一部としてレビュー中である。 第 11 章の免責事項も見よ。

基本シンタックス:

%%score <voice-id1> <voice-id2> ... <voice-idn> 

スコアディレクティブは、どの声部がスコアで表示されるか、表示された声部が五線譜上でどのようにグルーピングされるかを特定する。

カッコ () で囲まれた声部は、1つの五線譜で続いている。 一緒にするとこれらは声部のグループを形成する。 カッコで囲まれない1つの声部は、それ単体で1つのグループを形成し、単独の五線譜としてプリントされる。

声部のグループが波カッコ {} で囲まれていれば、対応する五線譜は先頭が大きな波カッコによって繋げられる。 これらはまとめて声部ブロックを形成する。このフォーマットは特に鍵盤楽器の音楽の組版で使われる。

もし声部グループや波カッコによる声部ブロックが角カッコ[] で囲まれていれば、 対応する五線譜は先頭が大カッコでつながれる。これらはまとめて声部ブロックを作る。

もし声部ブロックや声部グループがそれぞれ文字 | で区切られていれば、 関連する五線譜の間で小節線は繋げられる。

例:

%%score Solo  [(S A) (T B)]  {RH | (LH1 LH2)}

2つの音声グループで囲まれた単一の音声の前に星印(*)が付いている場合、その音声は浮動とマークされる。 これは、声部の段自らの段に表示されるとは限らず、ソフトウェアによって、自らの段か、次の段かに表示される。 むしろ、ソフトウェアは、音声の各音符について、 自らの段または次の段に印刷すべきかどうかを自動的に決定しなければならない。

浮動音声をサポートしていないソフトウェアは、前の音声グループの一部であるかのように、 前の段に声部を単に印刷することができる。

%%score {RH *M| LH}
%%score {(RH1 RH2) *M| (LH1 LH2)}

オーケストラ作品の弦部分は通常括弧で括られ、上の2つ(第1 /第2のバイオリン)が括弧の外側にブレースされている。

%%score [{Vln1 | Vln2} | Vla | Vc | DB]

曲の本体に表示されるすべての声部は、スコア指示文に記載されている場合にのみ印刷される。

楽譜本体内でスコア・ディレクティブが発生すると、楽器ジェネレータがリセットされ、 一定期間ボイスが表示され消える。

スコア指示句が使用されていない場合、調律本体に表示されるすべての声部は別々の譜表に印刷される。

包括的な例については、Canzonetta.abcを参照のこと。

%% scoreの代替ディレクティブは%% staves である。

%% scoreと%% stavesディレクティブの両方で同じパラメータを受け入れることができるが、 メジャーバーの指示は逆の方法で動作する。 したがって、%% staves [S | A | T | B]は%% score [SATB]と等価であり、関連する譜表間で連続した棒線が引かれないことを意味し、 %% staves [SATB]は%% score [S | A | T | B]は、それらが描かれたことを意味する。

11.2 楽器ディレクティブ

// 変動要因: // 11章 免責を見よ。

%%MIDI voice [<ID>] [instrument=<integer> [bank=<integer>]] [mute]

楽器ディレクティブでは、MIDI 楽器を示された abc 声部に割り当てる。 MIDI 楽器は 128 種類のそれぞれに分けられている。 どの楽器やバンクも 1 から始まっている。

一般 MIDI (GM) は可搬性があり、128 種類の楽器が数字で割り当てられている。 http://www.midi.org/techspecs/gm1sound.php を見よ。 GM 楽器は1つのバンクを選ぶと使える。 他の MIDI のバンクの内容はプラットフォームに依存するので、 割り当てられた曲のなかで最初の MIDI バンクのみを使うことを強くすすめる。

デフォルトのバンク番号は 1 である。

例: 次は 'Tb' 声部を GM 59 (チューバ)に割り当てるコードである。

%%MIDI voice Tb instrument=59

もし声部 ID が省かれていれば、楽器は現在の声部に割り当てられる。

例:

M:C
L:1/8
Q:1/4=66
K:C
V:Rueckpos
%%MIDI voice instrument=53 bank=2
A3B    c2c2    |d2e2    de/f/P^c3/d/|d8    |z8           |
V:Organo
%%MIDI voice instrument=73 bank=2
z2E2-  E2AG    |F2E2    F2E2        |F6  F2|E2CD   E3F/G/|

キーワード mute を使って特定の声部をミュートすることができる。

いくつかのabcプレーヤーは、 メロディーラインで指定されたコードシンボルに基づいて自動的に伴奏を生成することができる。 この伴奏を演奏するためのGM楽器を提案するには、次の指示文を使用する。

%%MIDI chordprog 20 % Church organ

11.3 臨時記号ディレクティブ

変動要因 この節は議論中である。第11章の免責事項参照

%%propagate-accidentals not | octave | pitch

not を指定すると、臨時記号はそれが指示する音符にのみ適用される。 ocatve を指定すると、臨時記号はそれが指示する音符だけでなく、 オクターブが同じ音まで小節線の末尾まで適用される。 pitch を指定すると、臨時記号は同じピッチ音すべてに小節線の末尾まで適用される。

デフォルトは pitch である。

%%writeout-accidentals none | added | all

none に設定すると、キーシグネチャフィールド(K :)に表示される修正または明示的な不慮の事故がキーシグネチャに印刷される。 added に設定されている場合、K:フィールドに示されているモードに属する偶発事象のみが鍵署名に印刷される。 変更または明示的な偶発事象は、それらが適用されるノートの前に印刷される。 all に設定すると、モードに属する偶発事故と考えられる変更または明示的な偶発事象の両方が、それらが適用されるノートの前に印刷される。 キーの署名は印刷されない。

デフォルトは none である。

11.4 フォーマットディレクティブ

変動要因 この節は議論中である。第11章の免責事項参照

植字プログラムは、次のセクションで一連の指示文を受け入れるべきである。 ディレクティブのパラメータは、テキスト文字列、真または偽の論理値、整数、小数点以下の数字(次の数字のみ)、または長さの単位である。 単位は、cm、in、およびpt(ポイント、1/72インチ)で表すことができる。

以下のディレクティブは、読めばわかるだろう。

11.4.1 ページフォーマットディレクティブ

// 変動事項: // 第11章 免責事項を見よ。

  %%pageheight       <length>
  %%pagewidth        <length>
  %%topmargin        <length>
  %%botmargin        <length>
  %%leftmargin       <length>
  %%rightmargin      <length>
  %%indent           <length>
  %%landscape        <logical>

11.4.2 フォントディレクティブ

変動要因 フォントディレクティブは abc 2.3 で議論される。 section 11 disclaimer を見よ。

217/5000 PostScriptとPDFは、印刷可能な素材を配布するための標準的なファイル形式である。 移植性の理由から、植字者はPostScriptフォント名を使用する。 sizeパラメータは整数である必要があるが、オプションである。

%%titlefont        <font name>  <size>
%%subtitlefont     <font name>  <size>
%%composerfont     <font name>  <size>
%%partsfont        <font name>  <size>
%%tempofont        <font name>  <size>
%%gchordfont       <font name>  <size> % for chords symbols
%%annotationfont   <font name>  <size> % for "^..." annotations
%%infofont         <font name>  <size>
%%textfont         <font name>  <size>
%%vocalfont        <font name>  <size> % for w:
%%wordsfont        <font name>  <size> % for W:

記述子 $1$2, $3 , $4text stringで フォントを変えるときに使う。 フォントは %%setfont-n ディレクティブで指定する。 使われているフォントは$0でデフォルトの値にリセットできる。 $$ は実際のドル記号である。

%%setfont-1        <font name>  <size>
%%setfont-2        <font name>  <size>
%%setfont-3        <font name>  <size>
%%setfont-4        <font name>  <size>

11.4.3 空白ディレクティブ

変動要因 section 11 disclaimer を参照。

%%topspace         <length>
%%titlespace       <length>
%%subtitlespace    <length>
%%composerspace    <length>
%%musicspace       <length> % between composer and 1st staff
%%partsspace       <length>
%%vocalspace       <length>
%%wordsspace       <length>
%%textspace        <length>
%%infospace        <length>
%%staffsep         <length> % between systems
%%sysstaffsep      <length> % between staves in the same system
%%barsperstaff     <integer>
%%parskipfac       <number> % space between parts
%%lineskipfac      <number> % space between lines of text
%%stretchstaff     <logical>
%%stretchlast      <logical>
%%maxshrink        <number> % shrinking notes
%%scale            <number>

11.4.4 拍子ディレクティブ

変動要因 section 11 disclaimer を参照。

%%measurefirst     <integer> % number of first measure
%%barnumbers       <integer> % bar numbers every 'n' measures
%%measurenb        <integer> % same as %%barnumbers
%%measurebox       <logical>
%%setbarnb         <integer> % set measure number

11.4.5 テキストディレクティブ

変動要因 テキストディレクティブは abc 2.3 で議論される。 section 11 disclaimer を見よ。

以下ディレクティブはabc ファイルにある、 タイプセットテキストを挿入することで使える。

%%text             <text string>
%%center           <text string>
%%begintext
%%...              <text string>
%%endtext

注釈:

ディレクティブに関するより詳しい情報は リンク先を参照のこと。

利用者への推奨事項: もし曲固有の情報に テキスト・ディレクティブを使用している場合は、 バックグラウンド情報フィールドの1つと%% writefields ディレクティブ(情報ディレクティブを参照)を使用して、 ソフトウェアをデータベース化することによって情報を正しく識別できるようにしてください。

11.4.6 情報ディレクティブ

変動要因 マークアップが abc 2.3 で強化されるならば、 %%writefieldsディレクティブとそのフォーマットオプションが強化される可能性がある。 section 11 表明も参照。

%%writefields <フィールドアイデンティファイヤのリスト> [<logical>]

%%writefields %% writefieldsディレクティブを使用すると、 印刷されたスコアにどの文字列型情報フィールドが表示されるかを選択できる (文字列型フィールドのリストについては、情報フィールドの表を参照)。 フィールド識別子のリストと、オプションで論理値trueまたはfalseが続く。 論理値が欠けている場合、それはtrueとみなされる。

%%writefields ディレクティブは 特定の指示フィールド - すなわち X:参照番号, P:パート and Q:テンポにも適用される。

デフォルト "%%writefields TCOPQwW" の意味は、タイトル (T), 作曲家 (C), オリジン (O), パート (P), テンポ (Q), aligned words (w) 他のワード (W) である。これらはデフォルトでプリントされる。 %% writefields指示文は、特定の指示フィールド、つまりX:参照番号、P:部分、Q:テンポにも適用される。 (どのようにタイプセットされるかは タイプセット情報フィールドを見よ)。 %% writefields指示文は、特定の指示フィールド、つまりX:参照番号、P:部分、Q:テンポにも適用される。 各後続の%% writefieldsディレクティブは、このリストをオーバーライドするのではなく、このリストと結合する。

例:

%%writefields O false         % the O field is not printed out - other defaults remain
%%writefields X               % the X: field is printed out
%%writefields BCDFGHNORSTWwXZ % all string-type fields are printed out

abc 2.1に準拠したタイプセットソフトウェアは、選択した方法で情報文字列をフォーマットすることができる。

注釈: %%writefields ディレクティブは、 abc 2.0で導入された多くのディレクティブの代わりに使用できる。

2.0の代替案の詳細については、 ディレクティブの詳細 を参照のこと。

11.4.7 分割ディレクティブ

変動要因 section 11 disclaimer を参照。

%%sep     % draw a horizontal separator, i.e. a line
%%vskip   % insert some vertical space
%%newpage % start a new page

これらディレクティブの詳細やパラメータについては ディレクティブの詳細を参照のこと。

11.4.8 その他ディレクティブ

変動要因 section 11 disclaimer を参照。

%%exprabove        <logical>
%%exprbelow        <logical>
%%graceslurs       <logical> % grace notes slur to main note
%%infoline         <logical> % rhythm and origin on the same line
%%oneperpage       <logical>
%%vocalabove       <logical>
%%freegchord       <logical> % print '#', 'b' and '=' as they are
%%printtempo       <logical>

これらディレクティブの既定値は false である。

11.5 アプリケーション固有ディレクティブ

アプリケーションは固有のディレクティブを導入してよい。 これらのディレクティブはアプリケーションの名前で始まり、続けてコロンを、続けるディレクティブの名称を記す。

例:

%%noteedit:fontcolor blue

11.6 ディレクティブについてのより詳しい情報

スタイルシートディレクティブ は公式的には abc 標準の一部ではないので, 単なる部分集合としてのみここに含める。 付加的なディレクティブとさらなる情報については、それらを実装したプログラムのユーザーマニュアルを見よ。


12. 方言、厳密な解釈、緩やかな解釈、後方互換

残念なことに、abc の方言が多く発生していて、 実装における差異が生じている。 このため、abc の標準がドラフトのまま完成せず、曖昧性があるままになっている。

2.1 版 では abc 記譜法が頑強になるような目標をおいているが、 皆が満足するアプローチは難しく、後方互換性をできるだけ確保するようにするしかない。

3種類の方法がある。

この目的は、どんなに厳密な解釈をとったとしても、 現在の方言のほとんどは新しい I:ディレクティブによってもなお利用可能であるようにすることである。

コメント 厳密な解釈では有効ではない方言は、 1つのシンボルが二つ以上の目的に使われるような方言である。 例えば、! シンボルは五線の改行にもデコレーションにも使われる。 幸運にも、abc 記法による 160,000 曲のうち、 abcnotation.com tune search この適用ができないのはおよそ 60 曲 (0.04%) にすぎない。

12.1 方言の違い

生じる違いで主なものには、五線譜の改行のほかデコレーションのデリミタや 和音のデミリタがある

12.1.1 五線譜の改行の方言

デフォルトでは、 (強制)スコア改行の組版に コード改行を用いる。 組版改行を見よ。

12.1.2 Decoration dialects

装飾は ! シンボルで区切る。 decorations を参照。

以前は装飾を示すために+シンボルが使用されていたが、このシンボルは現在装飾のために推奨されていない。

Comment:デコレーションは、最初に標準1.7.6(これは公式に採用されなかった)で導入された!シンボル。 abc 2.0(abc 2.1についての議論が行われている間に簡単に採択されました)では、 これは+記号に変更された。どちらも普及していないが、 !現在はabcnotation.comの曲検索で利用可能な160,000曲のうち、約100(0.07%)だけが+記号を使用して装飾を区切るが、 約1,350(0.85%)は!シンボル。

装飾のために+記号を使い続けることを望むユーザは、ファイルヘッダーに "I:decoration +"指示文を含めるか、 または装飾を参照して個々に調整するだけでよい。 すべての+ ... +装飾は、対応するものとして扱われる!...!デコレーションと何か!...!デコレーションはエラーメッセージを生成する。

"I:decoration +"ディレクティブは、 "I:linebreak!"ディレクティブによって自動的に呼び出される。 指令。また、!+!デコレーションには+ +がない。+ + plus +を代わりに使用すること。

ユーザーへのおすすめ:装飾のための+記号の使用量がごくわずかであることを考えると、 "I:decoration +"指示は推奨されない。 ただし、!を使用したいユーザーには保持される。レガシーabcファイルの改行のシンボルである。

完全性のために、デフォルト設定の「I:decoration!」を使用して、個々の曲を使用することもできる。 ファイルヘッダーに "I:decoration +"が設定されているファイルで、!...! 装飾を個別の曲に使うことができる。

12.1.3 コードの方言

コードは[]記号で区切られている。コードとユニゾンを参照のこと。

以前は + 記号が代わりにコードの区切りに使われていたが、この記号はもはやコードのために使用されていない。

コメント:abc標準(1.2から1.5)の初期のバージョンでは、コードは+記号で区切られていた。 しかし、これによって、あるコードがどこで終わったのかを知ることが難しくなり、 コードの区切り文字が1.6(1996年11月)に[]に変更された。 abcnotation.comの曲検索で現在利用可能な160,000曲のうち、+記号を使用してコードを区切る曲はわずか約420(0.25%)にすぎない。 小さなシンボルと[]シンボルの導入が成功したので、+ 記号を使用できるI:ディレクティブは存在しない、この使用法は廃止された。

12.2 緩やかな解釈

コメント:abcnotation.comの曲検索で現在利用可能な曲は約160,000曲ある。 abc標準の緩い解釈は、この巨大で貴重なリソースに必要な変更を加えずに下位互換性を維持する。

バージョン番号のないabcファイル、 またはバージョン番号が2.0以下のabcファイル(abcファイルの識別とバージョンフィールドを参照)は、ゆるやかに解釈する必要がある。 開発者は従来のabcファイルを理解するプログラムを提供するために最善を尽くすべきだが、 ユーザーは緩やかな解釈があるabcプログラムとは異なるかもしれないことに気づくべきである。

ユーザーのための推奨事項:できるだけ緩やかな解釈を避けるようにすること。 緩やかな解釈では、abc で表記された曲を友人に渡したり、ウェブ上に投稿したりしたときに、期待通りに表示されないことがある。

開発者向けの推奨事項1:あなたのベストを尽くすこと! 対処するのが最も難しいのは、2つの異なる目的のために同じシンボルを使用するものである - 特に!装飾と改行の両方のシンボル。 ここに装飾を扱うためのアルゴリズムがある。!構文と!同じ曲で改行する:

a!に遭遇したら、前方にスキャンする。 あなたが別のものを見つけたら! | [:]、スペース、または行の終わりのいずれかに出会う前に、あなたはデコレーションを持っている。 そうでなければ、改行する。

開発者向けの推奨事項2:厳密な解釈に移行することは、開発者とユーザーの両方にとって、より簡単になるはずだが、 コマンドラインスイッチやGUIチェックボックスを使用して、ユーザーが厳密で緩やかな解釈を簡単に切り替えるようにする必要がある。 たとえば、古いabcファイルをインポートしたユーザーは、厳密にどのように解釈されるかを見たいかもしれない。

12.3 厳密な解釈

abcバージョン番号が2.1以上のabcファイル (abcファイルの識別およびバージョンフィールドを参照)は、厳密に解釈され、ユーザにエラーが表示される。

13. 移調

13.1 移調オペレータ

直接移調を扱うオペレータには三種類ある:スコアと、サウンド、シフトである。 これらは K:key と V:voice に対する変更子のフィ―ルドに表れ、各声部フィールドのそれぞれに適用される。

移調の間隔は二つの音 <note1><note2>.によって規定される。 Here refers to the transcribed abc code and refers to the rendered output (i.e. the typeset score in the case of score, the playback in the case of sound, or both in the case of shift).

例: In the following the typeset score is raised by a fifth and is rendered the same as if the abc code was transcribed as [K:D] efga. The playback is lowered by a tone and is rendered the same as if the abc code were [K:F] GABc.

お詫び:この項は訳出できていない。

13.2 ファイル/曲の移調

お詫び:この項は訳出できていない。

13.3 移調楽器のための ABC コード

13.3.1 Generating a concert/souding pitch score

未訳出

13.3.2 移調楽器 ― 拡張記法

仮に、B♭クラリネットの奏者とヴァイオリニストが、ハ長調の CDEF からなる同じ曲を演奏しようとしたとする。

ヴァイオリンは移調楽器ではないから、 ヴァイオリニストのパートは次のように書かれ(また、聞こえ)る:

V:1 name=violin
K:C
CDEF|

クラリネットのパートは、この曲の作曲者がコンサートピッチを望めば、クラリネットの曲は聞こえるとおり、 次のように記述される:

V:2 name=clarinet instrument=_B/c
K:C
CDEF|

同じことだが、こうも書ける:

V:2 name=clarinet score=_B
K:C
CDEF|

どちらも abc タイプセッティングソフトウェアによって、B フラットの移調楽器として (すなわち、[K:D] DEFG として)レンダリングされる。しかし、音は記述した通り(すなわち CDEF ) となる。

作曲者が記譜ピッチで abc コードを記述したい場合は、 クラリネット譜はこのように記述される:

V:2 name=clarinet instrument=_B/_B
K:D
DEFG|

さらに、楽器の <note1> 部と <note2> 部は同じ (すなわち _B)だから、 次のように短縮できる:

V:2 name=clarinet instrument=_B
K:D
DEFG|

これらは、タイプセッティングソフトウェアにより (DEFG) と記載されるが、 音は移調されて(すなわち CDEF と)聞こえる。

二つの楽器をまとめると、コンサートピッチでは次のようになる:

K:C
V:1 name=violin
CDEF|
V:2 name=clarinet instrument=_B/c
CDEF|

あるいは score を用いて次のようになる:

K:C
V:1 name=violin
CDEF|
V:2 name=clarinet score=_B
CDEF|

記譜ピッチを使えば次のようにも書き直せる:

K:C
V:1 name=violin
CDEF|
V:2 name=clarinet instrument=_B
K:D
DEFG|

いずれの場合でもタイプセットスコアでは記譜ピッチとなる(再生時にはコンサートピッチとなる)。

訳者注 : abcjs の記譜レンダリングでは、上記でまとめた 3 種類のうち、score を用いた場合と instrument=_B の書き方が移調楽器の正しい書き方となる。 最初の instrument=_B/c の書き方では記譜ピッチがバイオリンと同じになってしまう。 また、abcjs の音源再生では、第 2 と第 3 の書き方いずれもが音源再生で記譜ピッチで再生されてしまう。すなわち、 クラリネットの音が全音上にずれるあやまった結果となる。

13.3.3 移調楽器の例

abc at concert pitch abc at written pitch
楽器(Instrument) instrument=<n>/c score=<n> instrument=<n>/<n> instrument=<n>
ピッコロ(piccolo) instrument=c'/c score=c' instrument=c'/c' instrument=c'
Bb クラリネット(clarinet) instrument=_B/c score=_B instrument=_B/_B instrument=_B
ソプラノサックス(soprano sax) instrument=_B/c score=_B instrument=_B/_B instrument=_B
A クラリネット(clarinet) instrument=A/c score=A instrument=A/A instrument=A
アルトフルート( alto flute ) instrument=G/c score=G instrument=G/G instrument=G
コールアングレ(cor anglais) instrument=F/c score=F instrument=F/F instrument=F
アルトサックス(alto sax) instrument=_E/c score=_E instrument=_E/_E instrument=_E
コントラバス( double bass ) instrument=C/c score=C instrument=C/C instrument=C
テナーサックス( tenor sax ) instrument=_B,/c score=_B, instrument=_B,/_B, instrument=_B,

13.4 移調のカスタマイズ

未訳出

14. サンプル

14.1 English.abc

訳注:William and Nancy では、D: と M: の間に P:指示があり、 パートを次のように繰り返すよう指示がある。
D:Morris On % can be heard on this record
P:(AB)2(AC)2A % play the parts in this order
M:6/8

しかし、abcjs ではP:指示がエラーとなるため、P:指示に関する箇所はコメントアウトした。

14.2 Strspys.abc

14.3 Reels.abc

14.4 Canzonetta

15. 付録

15.1 サポートしているアクセント

適合するabcソフトウェアは、アクセントと合字について次のエンコーディングをサポートしなければならない。 それは、他の名前付きエンティティと16進ユニコード表現(後で標準によって採用されるかもしれない) のサポートを提供するかもしれない。

詳細については、テキスト文字列を参照のこと。詳細は、次の例を参照のこと。

http://www.w3.org/TR/html4/sgml/entities.html
http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
http://en.wikipedia.org/wiki/List_of_Unicode_characters
http://www.fileformat.info/info/unicode/char/search.htm - ユニコード文字の検索

アクセント:

Character Mnemonic Named html entity 16-bit hex unicode
À \`A &Agrave; \u00c0
à \`a &agrave; \u00e0
È \`E &Egrave; \u00c8
è \`e &egrave; \u00e8
Ì \`I &Igrave; \u00cc
ì \`i &igrave; \u00ec
Ò \`O &Ograve; \u00d2
ò \`o &ograve; \u00f2
Ù \`U &Ugrave; \u00d9
ù \`u &ugrave; \u00f9
Á \'A &Aacute; \u00c1
á \'a &aacute; \u00e1
É \'E &Eacute; \u00c9
é \'e &eacute; \u00e9
Í \'I &Iacute; \u00cd
í \'i &iacute; \u00ed
Ó \'O &Oacute; \u00d3
ó \'o &oacute; \u00f3
Ú \'U &Uacute; \u00da
ú \'u &uacute; \u00fa
Ý \'Y &Yacute; \u00dd
ý \'y &yacute; \u00fd
 \^A &Acirc; \u00c2
â \^a &acirc; \u00e2
Ê \^E &Ecirc; \u00ca
ê \^e &ecirc; \u00ea
Î \^I &Icirc; \u00ce
î \^i &icirc; \u00ee
Ô \^O &Ocirc; \u00d4
ô \^o &ocirc; \u00f4
Û \^U &Ucirc; \u00db
û \^u &ucirc; \u00fb
Ŷ \^Y &Ycirc; \u0176
ŷ \^y &ycirc; \u0177
à \~A &Atilde; \u00c3
ã \~a &atilde; \u00e3
Ñ \~N &Ntilde; \u00d1
ñ \~n &ntilde; \u00f1
Õ \~O &Otilde; \u00d5
õ \~o &otilde; \u00f5
Ä \"A &Auml; \u00c4
ä \"a &auml; \u00e4
Ë \"E &Euml; \u00cb
ë \"e &euml; \u00eb
Ï \"I &Iuml; \u00cf
ï \"i &iuml; \u00ef
Ö \"O &Ouml; \u00d6
ö \"o &ouml; \u00f6
Ü \"U &Uuml; \u00dc
ü \"u &uuml; \u00fc
Ÿ \"Y &Yuml; \u0178
ÿ \"y &yuml; \u00ff
Ç \cC &Ccedil; \u00c7
ç \cc &ccedil; \u00e7
Å \AA &Aring; \u00c5
å \aa &aring; \u00e5
Ø \/O &Oslash; \u00d8
ø \/o &oslash; \u00f8
Ă \uA &Abreve; \u0102
ă \ua &abreve; \u0103
Ĕ \uE not available \u0114
ĕ \ue not available \u0115
Š \vS &Scaron; \u0160
š \vs &scaron; \u0161
Ž \vZ &Zcaron; \u017d
ž \vz &zcaron; \u017e
Ő \HO not available \u0150
ő \Ho not available \u0151
Ű \HU not available \u0170
ű \Hu not available \u0171

合字ほか:

Character Mnemonic Named html entity 16-bit hex unicode
Æ \AE &AElig; \u00c6
æ \ae &aelig; \u00e6
Π\OE &OElig; \u0152
œ \oe &oelig; \u0153
ß \ss &szlig; \u00df
Ð \DH &ETH; \u00d0
ð \dh &eth; \u00f0
Þ \TH &THORN; \u00de
þ \th &thorn; \u00fe

15.2 訂正

標準が公開されて以来、次の修正が行われている。


まりんきょ学問所コンピュータの部屋マーク付け言語手習い > abc 記譜法


MARUYAMA Satosi