axentax-compiler
Version:
Compile Axentax syntax in JavaScript and generate MIDI output for guitar phrasing.
272 lines (197 loc) • 5.56 kB
Markdown
# Axentax Compiler🔥
Compile Axentax syntax in JavaScript and generate MIDI output for guitar phrasing.
## 🪓Axentaxでできること
- ギターフィンガリングを文字で表現
- 少ない記述でスケール展開しながらループ演奏
- ビブラート・アーム奏法
- MIDIデータとしてダウンロード可能
> Playground ...Stage! 🎸🔥\
> Bring your ideas to life with interactive MIDI playback and expressive guitar fingering.\
> https://axentax.github.io/axentax-playground/
## Axentaxの導入
### 🪓Install
`npm i axentax-compiler`
### 🪓import
`import { Conductor } from 'axentax-compiler';`
### 🪓Request
``` Typescript
const compiled = Conductor.convertToObj(
true, // スタイル(奏法)を適用するか(通常はtrue)
true, // MIDIを作成するか(通常はtrue)
'@@ { C D E }', // シンタックス
[], // 許可するアノテーション文字列 ※未指定
Map<any, any>, // データキャッシュ用オブジェクト。常時保持しているインスタンスを渡すことで処理速度向上
{} // マップ用オブジェクト。常時保持しているインスタンスを渡すことで処理速度向上
)
```
### 🪓Response
#### Midiデータ
```
const midi: ArrayBuffer | undefined = compiled.midi
```
#### Response.compiledData
```
compiled.response
```
※interface Conduct を参照
#### Response.error
```
compiled.error
```
## 🪓Axentaxで演奏
### 💥Quickstart
```axe
@@ {
C ''B7b5 '''Em~
}
```
- コード指定を含むフィンガリングの指定は`@@ { }`の中に記述する
- `C`や`B7b5`、`0|2|2|0|0|0`のようにコード表記可能
- 先頭に'(シングルクォーテーション)を記載することで弦別にピッキング遅延させる(ストローク奏法)
このように簡単な記載で様々なギター演奏を再現できます。
## 🪓Axentaxの基本構文
### 💥基本構文: regionとblock
コード指定を含むフィンガリングの指定は`@@ { }`の中に記述します。
> この`{}`囲いのことを`block`と呼びます。
```axe
@@ {
C
}
```
blockは入れ子にできます。
```
@@ {
C
{{{ D }}}
}
```
複数ギター同時演奏(3ブロックまで可能)
```axe
@@ {
C
} >> {
Am
} >> {
Em
}
```
> @@ から始まるひとかたまりをregionと呼びます。\
> 上記コードは1つの`region`に、2つの`block`が記載されていることになります。
### 💥基本構文: ブロックプロップ
#### -- BPM指定 --
BPMを`@@`の次に記載(例では180bpm)
> `@@`の後に記載する項目を block propと呼びます。\
> BPMは1つ目のblockのみ指定可能です。
```
@@ 180 {
C C C C
}
```
#### --- 付割指定 ---
block propに記載した`1/4`のような分数表記は音の長さとなります。
```
@@ 180 1/4 {
C C C C
}
```
#### --- 変速チューニングと弦数の指定 ---
block propにチューニングを記載すると、そのblockは指定されたチューニングに従います。
```
@@ D|A|D|G|A|D {
C D E
}
```
チューニングは block毎に設定する必要があります。
```
@@ D|A|D|G|A|D {
// ここは DADGAD
} >> {
// ここは EADGBE
} >> D|A|D|G|A|D {
// ここは DADGAD
}
```
9弦まで指定できます。
```
@@ D|G|C|F|A#|D#|G#|C|F {
0|0|0|0|0|0|0|0|0
}
```
- デフォルト6弦チューニング: `E|A|D|G|B|E`
- 最低音の9弦チューニング: `D|G|C|F|A#|D#|G#|C|F`
- 最高音の9弦チューニング: `C#|F#|B|E|A|D|G|B|E`
- チューニングより多い弦数のフィンガリングはできません。
弦数を増やしたフィンガリングをする場合は、そのブロックで使いたい弦数のチューニングを実施してください。
### 💥基本構文: コード記法とフィンガリング記法
コードの表記はこれまで記載した通りです。\
※一部非対応のコード表記があります。
```
@@ {
C Dm Em7 Fmaj7 Gdim
}
```
`|`を使ってフレット指定をすることができます。Tab譜面を横にしたような表現です。\
左が低音弦で右が高音源となります。
```
@@ {
2|2|2|0|0|0
5|2|2|5|0|0
}
```
記載以降フレット指定しない場合`|`は省略できますが
6弦だけ記載する場合も必ず1つは`|`の表記が必要です。
```
// 不正な記載
@@ {
2 3 4 // `|`がないとエラーになる
}
// 正常な記載
@@ {
2|
|2
||2
|||2
||||2
|||||2
}
```
### 💥基本構文: 音長
音の長さを接尾辞で調整できます。
```
@@ {
C~~~ // "~"をフィンガリングの末尾に記載(4倍の長さ)
C^ // "^"をフィンガリングの末尾に記載(半分の長さ)
C= // "^"をフィンガリングの末尾に記載(3分の1の長さ)
}
```
以下の各行は同じ音長となります。
```
@@ {
C
C= C= C=
C^ C^
}
```
複数の接尾辞をつけることができますが、付割の制御が難しくなる傾向にあります。\
※スタイルでも音長の調整ができます。詳しくは「スタイル構文」参照してください。
```
@@ {
C== C== C== C~~
}
```
### 💥基本構文: 休符
`r`で休符を表現します
```
@@ {
C r D r
}
```
休符の長さも接尾辞で調整できます
```
@@ {
C r^ C r^
}
```
## 🔥Contact
**info [dt] axentax [at] gmail [dt] com**
_Replace `[at]` with `@` and `[dt]` with `.` when sending email._