概要 

  本ページでは、自動作曲bot「茄子ねこ」の楽曲生成依頼の詳細について説明します。

自動作曲bot「茄子ねこ」のその他の機能については、トップページを参照してください。

楽曲生成依頼

botに対してリプライを送ることによって、楽曲生成を依頼することができます。
生成された楽曲は、依頼主に対する動画付きのリプライで返されます。

依頼文の構成は以下の通りです。

1
@cc_99_ff music;

オプション付き楽曲生成依頼

構成 

  旋律の要件に応じて、オプションが指定できます。
オプションの記述方法は、ABC記譜法に準拠しており、ABC楽譜の表現の一部を共有しています。
構成は以下の通りです。

1
@cc_99_ff music?[header]?[body];

headerおよびbodyは、それぞれABC曲の曲ヘッダ(情報フィールド)、曲本体(音楽コード)を保持し、区切り文字「?」によって区別されます。
(従って、各要素に「?」を値として含めることはできません。)

これらのオプション全体には、Twitterの現時点での制約である、2バイト(≒全角漢字かな交じり)文字で140字以内、半角英数字で280字以内の表記でなければならないという制限があります。

曲ヘッダ

曲ヘッダの各要素(T:曲タイトル、M:拍子、など)は、「[key]="[value]"」の構成で表現され、headerおよびbodyと同じく、区切り文字「?」を用いて複数の要素の定義が可能です。

1
@cc_99_ff music?[key]="[value]"?[key]="[value]";

例えば、タイトルが「FugueA-dur」である、bpmが110で4/4拍子の曲を表現する場合、以下のように記述します。

1
@cc_99_ff music?T="FugueA-dur"?Q="1/4=110"?M="4/4";

これらの文字列は、半角英数字の利用が推奨されます。ただし、一部の要素、例えばTオプションCオプションの値は、全角文字の利用が非推奨ではありません。

また、ABC記譜法と比べて、記述に注意が必要な項目は、オプションの各要素-曲ヘッダの情報を参照してください。

曲本体

上記の構成の中で、曲ヘッダの構文に当てはまらないものは、曲本体として扱われます。
曲本体は、いくつかの小節線と音符、その他の装飾で表現され、何らかの小節線で終了します。拍子無し音楽の場合でも、終止線を入力することが必要です。
例として、2小節の楽譜は以下のように記述されます。

1
@cc_99_ff music?[notes]|[notes]|];

これらの文字列は、半角英数字の利用が推奨されます。

また、楽譜の各要素の記述方法は、オプションの各要素-曲本体の情報を参照してください。

具体例

楽曲生成依頼の例のページでは、オプション付き楽曲生成依頼の具体例として、いくつかのクラシック音楽を写譜したものや、実際にあった依頼文を紹介しています。

使用可能なオプションの各要素

曲ヘッダの情報

Tオプション

Tオプションは曲のタイトルを定義します。
タイトルは空白がエスケープされ、左詰めになります。
Tオプションが指定されなかった場合のデフォルト値は、「NoTitle」となります。

1
@cc_99_ff music?T="NoTitle";
Cオプション

Cオプションは作曲者名を定義します。
作曲者名は空白がエスケープされ、左詰めになります。
Cオプションが指定されなかった場合のデフォルト値は、「Unknown」となります。

1
@cc_99_ff music?C="Unknown";
Mオプション

Mオプションは拍子を定義します。
拍子はABC記譜法の表記が利用可能です。
拍子無し「none」が指定されない限り、冒頭ではない小節において、Mオプションに準じて休符の自動補完が働きます。
Mオプションが指定されなかった場合のデフォルト値は、「4/4」です。

1
@cc_99_ff music?M="4/4";
Lオプション

Lオプションは音符の長さの基準値を定義します。
長さの基準値は全音符を「1/1」とした分数で表現し、「[fraction]」と記述します。
Lオプションが指定されなかった場合のデフォルト値は、ABC記譜法の標準の推定方法に則り、定義されます。

上記より、Mオプションのデフォルト値は「4/4」であるため、曲ヘッダに何も記載していない場合のLオプションのデフォルト値は「1/8」(八分音符)です。

1
@cc_99_ff music?L="1/8";
Qオプション

Qオプションはテンポ(:bpm)を定義します。
ABC記譜法でサポートされている標準の表現「[fractions] = [counts]」は、bpmとしての表記「1/4 = [counts]」のみサポートされています。
仮にその他の表記が用いられている場合にも、「1/4 = [counts]」と記載されている前提で処理されることに注意してください。

また、以下の速度記号が含まれる場合、対応するbpmの代表値が割り当てられます。

表記 bpm
Adagio 60
Allegro 140
Andante 80
Largo 50
Moderato 100
Presto 180

Qオプションが指定されなかった場合のデフォルト値は、「1/4=120」です。

1
@cc_99_ff music?Q="1/4=120";
1
@cc_99_ff music?Q="Andante";
その他のオプション

上記以外のオプションも設定可能ですが、現在、出力に全く影響しません。

曲本体の情報

エスケープされる文字

半角スペース「 」、バッククォート「`」はエスケープされます。
これらの文字は、可読性を上げるために以下のような利用が可能です。

使用例

1
@cc_99_ff music? a8/2`b4 | a16///`b16/8`c16/2/4`d2 | e4 f4 |];

なお、参考までに、ABC記譜法において、バッククォートは同じくエスケープされますが、半角スペースは連桁の非結合を表します。

小節線

小節線はABC記譜法の表記が利用可能です。
具体的には、以下の7種類の表現方法があります。

表記 名前
| 小節線
|| 複縦線
:| 繰り返し記号
終点
|: 繰り返し記号
始点
:: 繰り返し記号
終点と始点
|] 終止線
[| 謎の記号

前述の通り、曲本体は小節線で終了しますが、冒頭に小節線を記載する必要はありません。

使用例

1
@cc_99_ff music?[notes]|[notes]|];
1
@cc_99_ff music?[notes]|[notes]:|;
繰り返しの基準点

繰り返しの基準点はABC記譜法の表記が利用可能です。
具体的には、以下の2種類の表現方法があります。

表記 名前 表記箇所
[1 1番括弧 小節の冒頭
[2 2番括弧 小節の冒頭

使用例

1
@cc_99_ff music?[notes]|[1[notes]:|[2[notes]|[notes]|];
長さ 

  長さはABC記譜法の表記が利用可能です。
具体的には、長さの基準値Lを「1」とした分数で表現し、音程表記の後に「[fraction]」と記述します。なお、「1/2」は「/」と省略可能です。
また、「///」が「/8」に等しいように、論理的な拡張が可能です。

使用例

1
@cc_99_ff music?L="1/8"?a8/2b4|a16///b16/8c16/2/4d2|e4f4|];

長さの表記は、楽典に則る楽譜の表記に縛られず、限りなく0に近いものから、非常に大きな値、複雑な付点音符なども表現可能です。

しかし、結果としてtwitterの動画の長さ制限140秒を超える長さや、midiの最小分解能480に満たない長さは、出力に影響を与えません。

また、前述の通り、Mオプションに準じて、長さの合計が小節の長さに足りない分は、休符が補完されます。
逆に、長さの合計が小節の長さを超過する場合は、小節の長さが延長されます。

連符 

  連符はABC記譜法の表記が利用可能です。
具体的には、適応させる音符群の、音程表記及び臨時記号類の前に、「([counts]」と記述します。

また、拡張的な表現として、「([counts p]:[counts q]:[counts r]」がサポートされています。pはp連符であることを、qは長さの基準値Lを1とした場合の分割前の長さを、rは適応させる個数を指定します。なお、p以外の数値は省略可能です。

使用例

1
@cc_99_ff music?(3abc(3abc(3abc(3abc|];
1
@cc_99_ff music?(3:2:3abca2b2c2|];
ブロークン・リズム

ブロークン・リズムはABC記譜法の表記が利用可能です。
具体的には、二つの音符の表記の間に「>」あるいは「<」を記述します。

ABC記譜法の標準では、「>」は区切られた前の音符と後の音符の長さの比が3:1であることを表し、「<」はその逆を表すと説明されていますが、
『EasyABC』の挙動に準拠して、「>」は区切られた前の音符の長さを3/2倍に、後の音符の長さを1/2倍にし、「<」はその逆を表す表現として扱われることに注意してください。

使用例

1
@cc_99_ff music?a2<a2a2>a2|];
臨時記号類

臨時記号類はABC記譜法の表記が利用可能です。
具体的には、以下の5種類の表現方法があります。

表記 名前 表記箇所
_ フラット 音程の前
^ シャープ 音程の前
= ナチュラル 音程の前
' 1オクターブ上 音程の後
, 1オクターブ下 音程の後

また、「^^」がダブルシャープを表すように、論理的な拡張が可能で、楽典に則る表記を逸脱する表現も可能です。(例えば「^_^c,,」は「^c,,」に等しい。)
ただし、後続に影響を与える臨時記号は、楽典に則る表記に等しいものに限ります。

使用例

1
@cc_99_ff music?^a2_a2,^a2'^^a2|];

なお、現在、調号の設定は反映されないため、key=C(ハ長調もしくはイ短調)で記述してください。

音程 

  音程はABC記譜法の表記が利用可能です。
具体的には、中央ハ(midi 60, 88鍵盤の24個目の白鍵, C4)をCとして、順にD(midi 62), E(midi 64), F(midi 65), G(midi 67), A(midi 69), B(midi 71)と表現し、小文字で表記することで1オクターブ上を表します。

加えて、上記の臨時記号類の変化を受け付け、標準MIDIファイルが表現可能なpitch、0~127に対応する音程が表現可能です。(対応する文字列は「C,,,,,」~「g'''」)

使用例

1
@cc_99_ff music?M="none"?C,D,E,F,G,A,B,CDEFGABcdefgabc'd'e'f'g'a'b'|];

また、休符は「z」と表します。なお、休符に付属する臨時記号類はエスケープされます。

使用例

1
@cc_99_ff music?M="none"?C,,D,,E,,zF,,G,,A,,B,,|];
装飾音符

装飾音符(アッチャカトゥーラ及びアポジャトゥーラ)は現在サポートされておらず、ABC記譜法の表記「{[notes]}」もしくは「{/[notes]}」で表された部分は全てエスケープされます。

その他

その他のABC記譜法でサポートされている表記で、現在botがサポートしていない表現は、トリル等の装飾を含め、複数存在します。
そのような表現の該当箇所は殆どがエスケープされますが、一部表記はエラーメッセージが返されます。

AUTHORS

この文章を書いた人



nakashimas

student

京都の学生です。

MORE



nasneco

student

趣味が作曲とかの人

MORE