BOT GENERATOR
概要
本ページでは、自動作曲bot「茄子ねこ」の楽曲生成依頼の詳細について説明します。
自動作曲bot「茄子ねこ」のその他の機能については、トップページを参照してください。
楽曲生成依頼
botに対してリプライを送ることによって、楽曲生成を依頼することができます。
生成された楽曲は、依頼主に対する動画付きのリプライで返されます。
依頼文の構成は以下の通りです。
|
|
オプション付き楽曲生成依頼
構成
旋律の要件に応じて、オプションが指定できます。
オプションの記述方法は、ABC記譜法に準拠しており、ABC楽譜の表現の一部を共有しています。
構成は以下の通りです。
|
|
headerおよびbodyは、それぞれABC曲の曲ヘッダ(情報フィールド)、曲本体(音楽コード)を保持し、区切り文字「?」によって区別されます。
(従って、各要素に「?」を値として含めることはできません。)
これらのオプション全体には、Twitterの現時点での制約である、2バイト(≒全角漢字かな交じり)文字で140字以内、半角英数字で280字以内の表記でなければならないという制限があります。
曲ヘッダ
曲ヘッダの各要素(T:曲タイトル、M:拍子、など)は、「[key]="[value]"」の構成で表現され、headerおよびbodyと同じく、区切り文字「?」を用いて複数の要素の定義が可能です。
|
|
例えば、タイトルが「FugueA-dur」である、bpmが110で4/4拍子の曲を表現する場合、以下のように記述します。
|
|
これらの文字列は、半角英数字の利用が推奨されます。ただし、一部の要素、例えばTオプション、Cオプションの値は、全角文字の利用が非推奨ではありません。
また、ABC記譜法と比べて、記述に注意が必要な項目は、オプションの各要素-曲ヘッダの情報を参照してください。
曲本体
上記の構成の中で、曲ヘッダの構文に当てはまらないものは、曲本体として扱われます。
曲本体は、いくつかの小節線と音符、その他の装飾で表現され、何らかの小節線で終了します。拍子無し音楽の場合でも、終止線を入力することが必要です。
例として、2小節の楽譜は以下のように記述されます。
|
|
これらの文字列は、半角英数字の利用が推奨されます。
また、楽譜の各要素の記述方法は、オプションの各要素-曲本体の情報を参照してください。
具体例
楽曲生成依頼の例のページでは、オプション付き楽曲生成依頼の具体例として、いくつかのクラシック音楽を写譜したものや、実際にあった依頼文を紹介しています。
使用可能なオプションの各要素
曲ヘッダの情報
Tオプション
Tオプションは曲のタイトルを定義します。
タイトルは空白がエスケープされ、左詰めになります。
Tオプションが指定されなかった場合のデフォルト値は、「NoTitle」となります。
|
|
Cオプション
Cオプションは作曲者名を定義します。
作曲者名は空白がエスケープされ、左詰めになります。
Cオプションが指定されなかった場合のデフォルト値は、「Unknown」となります。
|
|
Mオプション
Mオプションは拍子を定義します。
拍子はABC記譜法の表記が利用可能です。
拍子無し「none」が指定されない限り、冒頭ではない小節において、Mオプションに準じて休符の自動補完が働きます。
Mオプションが指定されなかった場合のデフォルト値は、「4/4」です。
|
|
Lオプション
Lオプションは音符の長さの基準値を定義します。
長さの基準値は全音符を「1/1」とした分数で表現し、「[fraction]」と記述します。
Lオプションが指定されなかった場合のデフォルト値は、ABC記譜法の標準の推定方法に則り、定義されます。
上記より、Mオプションのデフォルト値は「4/4」であるため、曲ヘッダに何も記載していない場合の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」です。
|
|
|
|
その他のオプション
上記以外のオプションも設定可能ですが、現在、出力に全く影響しません。
曲本体の情報
エスケープされる文字
半角スペース「 」、バッククォート「`」はエスケープされます。
これらの文字は、可読性を上げるために以下のような利用が可能です。
使用例
|
|
なお、参考までに、ABC記譜法において、バッククォートは同じくエスケープされますが、半角スペースは連桁の非結合を表します。
小節線
小節線はABC記譜法の表記が利用可能です。
具体的には、以下の7種類の表現方法があります。
表記 | 名前 |
---|---|
| | 小節線 |
|| | 複縦線 |
:| | 繰り返し記号 終点 |
|: | 繰り返し記号 始点 |
:: | 繰り返し記号 終点と始点 |
|] | 終止線 |
[| | 謎の記号 |
前述の通り、曲本体は小節線で終了しますが、冒頭に小節線を記載する必要はありません。
使用例
|
|
|
|
繰り返しの基準点
繰り返しの基準点はABC記譜法の表記が利用可能です。
具体的には、以下の2種類の表現方法があります。
表記 | 名前 | 表記箇所 |
---|---|---|
[1 | 1番括弧 | 小節の冒頭 |
[2 | 2番括弧 | 小節の冒頭 |
使用例
|
|
長さ
長さはABC記譜法の表記が利用可能です。
具体的には、長さの基準値Lを「1」とした分数で表現し、音程表記の後に「[fraction]」と記述します。なお、「1/2」は「/」と省略可能です。
また、「///」が「/8」に等しいように、論理的な拡張が可能です。
使用例
|
|
長さの表記は、楽典に則る楽譜の表記に縛られず、限りなく0に近いものから、非常に大きな値、複雑な付点音符なども表現可能です。
しかし、結果としてtwitterの動画の長さ制限140秒を超える長さや、midiの最小分解能480に満たない長さは、出力に影響を与えません。
また、前述の通り、Mオプションに準じて、長さの合計が小節の長さに足りない分は、休符が補完されます。
逆に、長さの合計が小節の長さを超過する場合は、小節の長さが延長されます。
連符
連符はABC記譜法の表記が利用可能です。
具体的には、適応させる音符群の、音程表記及び臨時記号類の前に、「([counts]」と記述します。
また、拡張的な表現として、「([counts p]:[counts q]:[counts r]」がサポートされています。pはp連符であることを、qは長さの基準値Lを1とした場合の分割前の長さを、rは適応させる個数を指定します。なお、p以外の数値は省略可能です。
使用例
|
|
|
|
ブロークン・リズム
ブロークン・リズムはABC記譜法の表記が利用可能です。
具体的には、二つの音符の表記の間に「>」あるいは「<」を記述します。
ABC記譜法の標準では、「>」は区切られた前の音符と後の音符の長さの比が3:1であることを表し、「<」はその逆を表すと説明されていますが、
『EasyABC』の挙動に準拠して、「>」は区切られた前の音符の長さを3/2倍に、後の音符の長さを1/2倍にし、「<」はその逆を表す表現として扱われることに注意してください。
使用例
|
|
臨時記号類
臨時記号類はABC記譜法の表記が利用可能です。
具体的には、以下の5種類の表現方法があります。
表記 | 名前 | 表記箇所 |
---|---|---|
_ | フラット | 音程の前 |
^ | シャープ | 音程の前 |
= | ナチュラル | 音程の前 |
' | 1オクターブ上 | 音程の後 |
, | 1オクターブ下 | 音程の後 |
また、「^^」がダブルシャープを表すように、論理的な拡張が可能で、楽典に則る表記を逸脱する表現も可能です。(例えば「^_^c,,」は「^c,,」に等しい。)
ただし、後続に影響を与える臨時記号は、楽典に則る表記に等しいものに限ります。
使用例
|
|
なお、現在、調号の設定は反映されないため、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'''」)
使用例
|
|
また、休符は「z」と表します。なお、休符に付属する臨時記号類はエスケープされます。
使用例
|
|
装飾音符
装飾音符(アッチャカトゥーラ及びアポジャトゥーラ)は現在サポートされておらず、ABC記譜法の表記「{[notes]}」もしくは「{/[notes]}」で表された部分は全てエスケープされます。
その他
その他のABC記譜法でサポートされている表記で、現在botがサポートしていない表現は、トリル等の装飾を含め、複数存在します。
そのような表現の該当箇所は殆どがエスケープされますが、一部表記はエラーメッセージが返されます。
AUTHORS
この文章を書いた人