Main maintainer of this article: @IepIweidieng
This is an unofficial compilation and commentation of the TJA format & its related formats.
This article aims at providing a comprehensive enough overview & possible etymologies and addressing undocumented corner cases.
This article is still in construction and will be updated at times. It’s recommended to check its change history regularly.
Also see TODO for known issues and planned changes of this article.
This article also contains unimplemented proposals, including tentative proposals by the main maintainer of this article and known proposals by simulator developers. These proposals are explicitly expressed to be Proposals and may be subject to changes. See Proposers for the list of proposers for proposals listed in this article.
See Terminologies for the explanation and conventions of some terminologies used in this article.
When there exist multiple equivalent usages accepted by the simulators, the conventional ones are represented in bold.
Known external-use notechart formats used in 太鼓の達人 games and simulators:
The dates listed here are mostly in UTC+9.
Extension | Full Name | Content | Supported by | First Release | Specification |
---|---|---|---|---|---|
.bin |
Binary (譜面 Notechart File Format) | Notechart metadata + definition (binary file) | Official games, taiko-web (plugin “Fumen File Format”) | 2000 (official local test) 2001-02-21 (AC1) |
Proprietary format, not explained in this article. |
.tjf |
太鼓の達人譜面 Taiko no Tatsujin Notechart (?) |
Notechart metadata + definition | Taikosan, TaikoJiro 1 | 2004-05-08 (TJF EDIT) 2006-03-30 (Taikosan nicover) 2007-07-06 (Taikosan’s public release) 2009-01-16 (Taikosan’s public re-release with TJF EDIT’s public release) |
Re-released Taikosan’s Readme.txt |
data.txt |
owatatsujin Notechart Data (?) | Notechart set metadata + definition | owatatsujin | 2007-03-04 (owatatsujin v1.31; first release) | See https://web.archive.org/web/20150527222157/http://www.geocities.jp/syun_k765/flash/owatatsu/seqhowto.html Based on the notechart format of CIRRING-S by D4U: http://noia.g3.xrea.com/parastoic/crs/maker.html and CarmBeat by D4U http://noia.g3.xrea.com/parastoic/carm/maker.html Similar to the Simai notation, which is also based on D4U’s format: https://w.atwiki.jp/simai/pages/1003.html |
.osu |
osu! Beatmap | Notechart metadata + definition | osu!, taiko-web, OutFox (Taiko mode planned) | 2007-07-01 (UTC+?) 2008-05 (taiko mode) Non-after 2008-05-23 (first known mentioning) |
See https://osu.ppy.sh/wiki/en/Client/File_formats. An .osu file with std or Taiko mode can be played as a Taiko chart. |
.sm |
StepMania Chart (?) | Notechart metadata + definition | StepMania 3.0, OutFox v0.4.9.9 (taiko mode) (?) | 2002-10-23 (StepMania 3.0 release) 2008-07-20 (unofficial taiko mode by toach, author of TaikoJiro) 2021-07-31 (taiko mode) (OutFox v0.4.9.9; first taiko mode release) |
No known official full specification. No official documentation for Taiko chart. For general chart, see https://outfox.wiki/en/dev/mode-support/sm-support No known released charts for toach’s unofficial taiko mode, but see https://www.nicovideo.jp/user/460596/mylist/7250555 |
.tja |
太鼓の達人譜面 Another Another Taiko no Tatsujin Notechart (?) |
Notechart metadata + definition | TaikoJiro, Malody, TJAPlayer2 for.PC, taiko-web ver.18.10.11, OutFox v0.4.9.9, TaikoManyGimmicks | 2008-12-08 (TaikoJiro v0.80; first release) | TaikoJiro’s readme.txt Also see TaikoJiro 2’s readme.txt Many extensions exist |
.tjc |
太鼓の達人譜面 Course Taiko no Tatsujin Course (?) |
Notechart set metadata | TaikoJiro v2.34, TaikoJiro 2 v0.98 | 2009-12-28 (TaikoJiro v2.34) | TaikoJiro’s readme.txt |
.tps |
taikopsp Score (?) | Notechart definition | 太鼓の玄人 for PSP (taikopsp) | 2009-06-12 (taikopsp demo version) 2009-06-18 (taikopsp v0.1.0) Non-after 2009-08-29 (TPSConverter v0.31 already released) |
taikopsp’s りどみ.html (“Readme.html ”) |
ot_data.txt |
OniTaiko DS data | Notechart definition | 鬼太鼓DS (OniTaiko DS) | 2009-07-14 (onitaiko DS v0.8.2 test version) Non-after 2010-03-05 (known first chart file) |
See the 31-7-2010 entry of: https://web.archive.org/web/20181012220107/http://www.owataiko.com/~aki/onitaiko_past.html (zh_HK in UTF-8; need switching page character encoding to read) |
.mc |
Malody Chart (?) | Notechart metadata + definition (JSON) | Malody | Non-before 2014 (Malody) Non-after 2017-06-24 (mc2tja) |
No known official documentation. See the non-official parser https://github.com/LuiCat/mc2tja. An .mc file with Taiko mode can be played as a Taiko chart. |
.dtx |
DTXMania Chart (?) | Notechart metadata + definition | TJAPlayer2 for.PC (early versions, deprecated (?)) | Non-before 2000-01-17 (DTXMania v0.01; first release) Non-after 2006-06-19 (DTXCreator v0.01; first release) Non-before 2014-12-?? (taiko mode; TJAPlayer2 for.PC development begins) Non-before 2015-05-15 (taiko mode; 太鼓さんアルファ (early TJAPlayer2 for.PC) OSDN project registration) |
First used in DTXMania, inherited by TJAPlayer2 for.PC. No official documentation for Taiko chart. For general chart, see (English translation) https://web.archive.org/web/20240126144946/https://osdn.net/projects/dtxmania/wiki/DTX%20data%20format, (Japanese original) https://web.archive.org/web/20240206040103/https://osdn.net/projects/dtxmania/wiki/DTX%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88 |
songtitles.txt |
Song Titles | Notechart titles | taiko-web | 2019-04-04 (example) 2019-04-05 (taiko-web commit) |
<blockquote>- A translation text file “songtitle.txt” can be imported - Titles and translated titles are each on their own line, if a line begins with a language code, it will translate the song title that is above - An example file can be found here: https://gist.github.com/LoveEevee/65fe66f0b54c0536f96fd2f4862984d4</blockquote> Example: https://web.archive.org/web/20200630184942/https://gist.github.com/LoveEevee/65fe66f0b54c0536f96fd2f4862984d4 |
.tci |
Open Taiko Chart Information | Notechart metadata (JSON) | Koioto (plugin “OpenTaikoChart”), TJAPlayer3-f v1.6.0.1 | 2019-08-17 (format rev.1) 2020-05-07 (plugin “OpenTaikoChart”) |
See https://github.com/AioiLight/Open-Taiko-Chart |
.tcc |
Open Taiko Chart Course | Notechart definition (JSON with non-parsed strings) | Koioto (plugin “OpenTaikoChart”), TJAPlayer3-f v1.6.0.1 | 2019-08-17 (format rev.1) 2020-05-07 (plugin “OpenTaikoChart”) |
See https://github.com/AioiLight/Open-Taiko-Chart |
.tcm |
Open Taiko Chart Medley | Notechart set metadata (JSON) | Koioto (plugin “OpenTaikoChart” v3.0), TJAPlayer3-f v1.6.0.1 | 2019-11-15 (format rev.2) 2020-05-07 (plugin “OpenTaikoChart”) |
See https://github.com/AioiLight/Open-Taiko-Chart |
.ssc |
StepMania 5 (the spinal shark collective) Chart (?) | Notechart metadata + definition | sm-ssc (early StepMania 5), OutFox v0.4.9.9 (taiko mode) (?) | 2011-02-11 (format introduction) 2011-02-10 (sm-ssc v1.2.1) 2021-07-31 (taiko mode) (OutFox v0.4.9.9; first taiko mode release) |
No known official full specification. No official documentation for Taiko chart. For general chart, see https://outfox.wiki/en/dev/mode-support/ssc-support |
.tmg |
TaikoManyGimmicks | Notechart metadata + definition | TaikoManyGimmicks v0.6.1α | 2022 (TaikoManyGimmicks) 2023-04-13 (v0.6.1α, TMG format support) |
TaikoManyGimmicks’ Readme.txt . The plaintext form is similar to .tja but has some syntax differences (explained right below). |
.osu
and .mc
have corresponding compressed formats, which include multiple notecharts for each difficulty and additional resource files:
.osu
— .osz
: osu! Beatmap Archive (“Zipped”).mc
— .mcz
: Malody Chart Zipped (?)The TMG format (.tmg
) has plaintext and binary form, where the plaintext form is similar to the TJA format (.tja
) and has the following features:
()
around the whole argument list, even if no arguments are specified. TMG commands are written in the format of #COMMAND(expressions, ...)
.number
-typed and complex-ri-number
–typed argument for commands.str
-typed argument, #
(preserved after substitution) needed to be prepended for applying substitution (?).Excluding .bin
and the compressed formats, all the formats listed above are text-based and can be edited with any text editor.
Known external-use genre formats used in 太鼓の達人 games and simulators:
The dates listed here are mostly in UTC+9.
Filename/extension | Content | Supported by | First Release | Notes |
---|---|---|---|---|
genre.ini |
Genre definition for notecharts in the (sub)directory/ies. INI config file. | TaikoJiro, taiko-web | 2009-06-17 (TaikoJiro v1.90) | |
musiclist.txt |
List of file paths to notecharts | TJAPlayer (for PSP) | Non-after 2010-02-10 (musiclistGenerator v6) Non-after 2010-02-24 (TJAPlayer Ver ?×7 already released) |
Similar to the later .t3u8 , but in native encoding (assumedly Shift-JIS) and with the first occurrence of a line being #END (if exist) and all subsequent line ignored. |
song.txt |
Number of notechart directories + List of directory name of notechart directories | 鬼太鼓DS (OniTaiko DS) | Non-after 2010-06-27 (OniTaiko DS F C v.1.2.1X fat) | See https://web.archive.org/web/20100726082352/http://www.owataiko.com/~aki/_onitaikods/readme.txt |
box.def |
Genre definition for notecharts in the (sub)directory/ies. .dtx -syntax headers. |
TJAPlayer2 for.PC, taiko-web | Non-before 2000-01-17 (DTXMania v0.01; first release) Non-before 2015-05-15 (taiko mode; 太鼓さんアルファ (early TJAPlayer2 for.PC) OSDN project registration) |
First used in DTXMania, inherited by TJAPlayer2 for.PC |
folder.json |
Genre definition for notecharts in the (sub)directory/ies. (JSON) | 2021-02-18 (bundled sample) 2021-03-09 (Koioto Ver.0.39; first release) |
Koioto | |
.t3u8 |
List of file paths to notecharts | TJAPlayer3 v4.7.0 | 2019-07-18 (TJAPlayer3 commit 9261ee0271) 2020-02-03 (TJAPlayer3 v4.7.0) |
See https://github.com/twopointzero/TJAPlayer3/blob/develop/docs/song-list-files.md. Based on and having identical syntax with .m3u8 . .m3u8 is a UTF-8–encoded variant of .m3u (MP3 URL). |
The TJA format (.tja
, first used in TaikoJiro) was modified and gradually extended from the much simpler TJF format (.tjf
, first used in Taikosan), both share similarities with the .bms
(Be-Music Script, not BeatMania Score) format and its derivations. See Notechart Formats Inspiring TJA.
The etymology of both .tjf
& .tja
were unexplained.
tj
originally did NOT refer to 太鼓さん次郎 TaikoJiro since it has already appeared in .tjf
, which is already used in 太鼓さん太郎 Taikosan..tjf
was determined. Taikosan was named 日曜太鼓 “Sun(day) Taiko” when TJF EDIT was last updated (2004-05-08)..tjf
is referred as “太鼓譜面” “Taiko Notechart” in the “開く” “Open” dialog box and as “日曜太鼓譜面ファイル” “Sun(day) Taiko Notechart File” in the “保存” “Save” dialog box.tj
could refer to 太鼓の達人, the official game series. .ttf
as “太鼓の達人譜面” might be one of the intended file extension but was not usable because it had already been used for TrueType font files. .tkf
as “太鼓譜面” might be another possibility but not adapted for unknown reason.a
could just be an alphabetic number, or could mean “advanced” (refers to 次 “next”), “add” (refers to + “plus”), etc. A possibility referenced later within TaikoJiro is “ANOTHER” (also refers to 次 “next”).
Thus, .tja
possibly means “太鼓の達人 (simulator) 譜面 (format) Another” “Another Taiko no Tatsujin (simulator) Notechart (format)”.
The honorific title is omitted.
Property formats from the official games are not listed here.
GAP
(a chart offset header in the DWI and earlier MSD formats) in Taikosan’s Readme.txt
: #GOMUSIC この命令が指定された地点から、音楽を再生開始する。
GAPの概念が無いので、ズレはこれとBPM変更で調整してください。
#GOMUSIC From where this command is specified, the music starts playing.
There is no concept of GAP, so for offset please adjust this [command] and BPM changes.
</small>
readme.txt
:○tjaフォーマット
tjfを元にbmsっぽい感じも取り入れてみたフォーマットです。
拡張子は「.tja」。
○ tja Format
A format based on tjf which [tja] also attempts to incorporate a bms-like feel.
The file extension is “.tja”.
</small>
A possible derivation/inspiration route non-after TJA:
Other Dance simulator references:
After the creation of the TJA format, other notechart formats still continue to inspire the TJA format, such as the DTX format due to TJAPlayer2 for.PC. The new inspirations are mainly new headers and commands.
The specification and behavior of TJA in TaikoJiro (active in 2008–2013) was often considered the standard for many years.
However, many extensions after are developed and adopted after TaikoJiro, especially since TJAPlayer2 for.PC, and there lacked a cross-simulator standard.
Since around 2022, OpenTaiko (0auBSQ) and Project OutFox have started to collaborate on a new cross-simulator standardization, which is referred to as “OpenTaiko-OutFox standard” in this article.
For OpenTaiko (0auBSQ) and Project OutFox, the per-simulator behaviors are documented, but their behaviors will be unified through their development. Any new-found discrepancies of these simulators from the OpenTaiko-OutFox standard will be soon consolidated and reported to the relevant project.
The mostly used character encoding for legacy TJA files is Shift-JIS.
However, the actual encoding depended on the system setting and can potentially be any non–UTF-8 encoding, including:
UTF-8 (with BOM or not) is often used for modern TJA files.
Lines are separated (may be unterminated) by either LF (\n
) or CR+LF (\r\n
) (see Terminologies for further explanation).
Lines containing only whitespaces or nothing at all are ignored.
Except when preceded by a text
value, //
starts a comment which ends at the end of the line and is ignored along with the //
.
Except when preceded by a text
value, line-final whitespaces (after ignoring comments) are ignored.
text
value is ignored.
Line-initial whitespaces are allowed and ignored only within the notechart definition enclosed between #START
& #END
(excluding themselves).
Except when within a string
value and around a text
value, consecutive whitespaces within a line is treated as a single space.
For multiple values separated by comma (,
), except for text
-valued fields, optional whitespaces can occur before and/or after the comma.
number
: A real number. number
indicates that it is unspecified whether a number with a fraction part is allowed. Unspecified: The supported upper limit & lower limit of the numeric range, unless stated otherwise.
int
: An integer number in decimal, e.g., 0
/ +10
/ -012
float
: A real number in decimal which can either be an integer or have the fraction part, e.g., 0
/ +.3
/ -1.
,
) can be used as the decimal point instead of a full-stop (.
).+inf
for positive infinity (+∞) & -inf
for negative infinity (−∞).1e4
, -3.14e-6
.enum-int
(enum-like, int-form): An int
with specific accepted values.+
) may appear for a non-negative or positive value, unless the type is indicated as unsigned-
.complex-ri-number
: A complex number in the form of a real number, an imaginary number, or both added together. complex-ri-number
indicates that it is unspecified whether a number with a fraction part is allowed for any of the real and imaginary components.
complex-ri-float
: A complex number where each of the real and imaginary components can either be an integer or have the fraction part, e.g., 1
/ i
/ .3+.3i
.<number-real>
— a pure real number where the real component is <number-real>
.<optional-sign-imaginary><unsigned-number-imaginary-specifier>
— a pure imaginary number where the imaginary component has the sign of <optional-sign-imaginary>
(defaults to +
) and the absolute value specified by <unsigned-number-imaginary-specifier>
.<number-real><sign-imaginary><unsigned-number-imaginary-specifier>
— a general complex number where the real component is <number-real>
and the imaginary component has the sign of <sign-imaginary>
and the absolute value specified by <unsigned-number-imaginary-specifier>
.
<sign-imaginary>
is -
and <unsigned-number-imaginary-specifier>
has the absolute value of 0.<unsigned-number-imaginary-specifier>
can be one of:
i
— the imaginary component has the absolute value of 1.<unsigned-number-imaginary>i
— the imaginary component has the absolute value of <unsigned-float-imaginary>
.j
can be used in place of i
.+<unsigned-number-real>-<unsigned-number-imaginary>i
(?) where <unsigned-number-imaginary>
is equivalent to 0 is not fully supported.<number-real>
& <number-real><sign-imaginary><unsigned-number-imaginary>i
are supported; omitting any number parts is not supported.<sign-imaginary>
is not -
is not supported.string
: A string. string
indicates that it is unspecified whether leading or trailing non-newline whitespaces are significant. Unspecified: The maximum supported length.
text
: A string. Can contain leading or trailing non-newline whitespaces & comments.str
: A string. Leading and trailing new-newline whitespaces & comments are ignored.,
) in string
MUST be escaped as \,
(while \
itself requires no escaping).enum-str
(enum-like, string-form): A str
with specific accepted values. Can be spelt in a form of one of Value
/ VALUE
/ value
. Unspecified: Whether other spellings can be used.
V
is also accepted).Vsomething
/ valuesomething
are also accepted)TJA header are written in the format of HEADER:values
.
Each header MUST be placed on its own line.
The HEADER:
part MUST be written in an all-upper-case manner and MUST NOT contain whitespaces in-between. No leading non-newline whitespaces are allowed.
Headers with an unrecognized HEADER:
name are ignored.
If the values
part is omitted, the default value is used, which can be used for resetting previously used headers from other difficulties or player sides to their default value.
For non-string values, whitespaces can immediately occur after :
, e.g., LEVEL: 8
.
Most headers are expected to be placed outside the notechart definition enclosed between #START
& #END
. However, some commands are allowed to be placed within the notechart definition, or “post-#START
position”.
Headers allowed in post-#START
position will be explicitly denoted.
For headers not in post-#START
position, the effect of each header continues until the next occurrence of the same header or the end of the file.
Headers in post-#START
position (e.g., the EXAM headers) are effectively commands.
See scope fineness.
For headers, the coarsest fineness is per-file. The finest fineness other than sequential is per–player-side.
sequential > per–player-side > per-file
OpenTaiko-OutFox standard version: 1.0 (including any <enum-str-lang>
forms)
Impact level: metadata ★・・・・
First seen in: TaikoJiro v0.80 (initial release)
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, Malody, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per-file
Inspired by: TJF format
(likely) from DWI and earlier MSD format #TITLE:<str-title>;
from BMS format #TITLE <str-title>
Specify the title of the song.
TITLE:<str-title>
TITLE<enum-str-lang>:<str-title-localized>
<enum-str-lang>
is an IETF BCP 47 language or region tag (see https://en.wikipedia.org/wiki/IETF_language_tag) and can be one of:
EN
— EnglishJA
— Japanese JP
— Japanese (region tag) FR
— Français French ES
— Español Spanish ZH
— 简体中文 Simplified Chinese CN
— Simplified Chinese (mainland China) (region tag) TW
— Traditional Chinese (臺灣/台灣) (region tag) NL
— Nederlands Dutch KO
— Korean OpenTaiko-OutFox standard version: 1.0 (including any <enum-str-lang>
forms)
Impact level: metadata ★・・・・
First seen in: TaikoJiro v2.64
Supported by: (assumedly universally supported, including TaikoJiro v0.80, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per-file
Inspired by: (likely) SM format #SUBTITLE:<str-displayed-subtitle>;
Specify the subtitle (not of the meaning of caption) of the song (could be artist, game series, etc.), or alternatively as the second line (“sub”) of the title.
If the artist of the song should be specified while the subtitle is already used as the second line of the title, the ARTIST:
header can be used to specifying the artist of the song.
The display details are unspecified.
SUBTITLE:<str-subtitle>
<str-subtitle>
can be one of:
--<str-displayed-subtitle>
--
prefix needs to be prepended to the displayed subtitle when the subtitle already begins with --
.++<str-displayed-subtitle>
<str-displayed-subtitle>
++
prefix needs to be prepended to the displayed subtitle when the subtitle begins with either ++
or --
.SUBTITLE<enum-str-lang>:<str-displayed-subtitle-localized>
++
/--
) is instead specified by the SUBTITLE:
header.<enum-str-lang>
can be one of the possible <enum-str-lang>
for the TITLE<enum-str-lang>:
header.OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: metadata ★・・・・
First seen in: Malody
Scope fineness: per-file
Inspired by: (likely) .osu
format Artist:<str-artist>
Specify the artist of the song.
Similar to the --
prefix usage of the SUBTITLE:
header, but excluding extra information such as game series, anime series, etc.
The display details are unspecified.
ARTIST:<str-artist>
ARTIST:<comma-separated-list-str-artist>
,
) in the artist name specified in <comma-separated-list-str-artist>
MUST be escaped as \,
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: metadata ★・・・・
First seen in: taiko-web ver.19.11.25
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per-file
Specify the creator (“maker”) of the notechart.
The display details are unspecified.
MAKER:<string-name-notechart-creator>
,
) in <string-name-notechart-creator>
MUST be escaped as \,
MAKER:<string-name-notechart-creator> <string-notechart-creator-web-url>
<string-notechart-creator-web-url>
is immediately enclosed by a pair of angle brackets (<
& >
).MAKER:<comma-separated-list-string-name-notechart-creator>
,
) in the chart makers specified in <comma-separated-list-string-name-notechart-creator>
MUST be escaped as \,
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible) (including both forms of <enum-int-difficulty-course>
being 0
–4
and being omitted)
Impact level: metadata ★・・・・
First seen in: (Better)TaikoCatsCaffe (?)
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per–player-side (?)
Specify the creator (“designer”) of the notechart (“notes”).
The display details are unspecified.
NOTESDESIGNER<enum-int-difficulty-course>:<string-name-notechart-creator>
<enum-int-difficulty-course>
can one of the integer argument to the COURSE:
header.<enum-int-difficulty-course>
is different from the difficulty specified by COURSE:
for the notechart definition.,
) in <string-name-notechart-creator>
MUST be escaped as \,
NOTESDESIGNER:<string-name-notechart-creator>
,
) in <string-name-notechart-creator>
MUST be escaped as \,
OpenTaiko-OutFox standard version: (non-standard)
Impact level: metadata ★・・・・
First seen in: Malody
Scope fineness: per-file (?)
Specify the creator (“author”) of the notechart.
In Malody, it can be the Malody account name of the creator, but it is not enforced.
The display details are unspecified.
MAKER:<string-name-notechart-creator>
OpenTaiko-OutFox standard version: 1.0 (including any <str-genre>
value (?))
Impact level: metadata ★・・・・
First seen in: TJAPlayer2 for.PC
Supported by: taiko-web ver.19.01.06
Scope fineness: per-file
Specify the genre of the song.
The display details are unspecified.
GENRE:<str-genre>
<str-genre>
and their aliases.J-POP
アニメ
(Anime) “Animation”ボーカロイド
(Bookaroido) / VOCALOID
どうよう
(童謡) “Child’s Song”バラエティ
(Baraeti) “Variety”クラシック
(Kurashikku) “Classic”ゲームミュージック
(Geemu Myuujikku) “Game Music”ナムコオリジナル
(Namuko Orijinaru) “Namco Original”OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible) (per-file usage);
1.2 (per–player-side usage for COURSE:Tower
)
Impact level: metadata ★・・・・
First seen in: TaikoJiro v2.49
Supported by: TaikoJiro 2, OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per-file
Specify whether the corresponding song entry is displayed, regarding the 裏譜面状態 “inner notechart state/mode” (“裏 inner or 表 outer side”) of the song selection screen.
This allows the chart creators to specify the inner chart of every difficulty together or with different audio as a separate song entry, as in official AC11–AC14.
For specifying the inner chart of solely the Oni difficulty with the same audio as in official AC15 and later official games (except only ハレ晴レユカイ inner Hard in AC15), COURSE:Edit
is commonly used instead.
別譜面 “another notechart(s)” was a tentative name used during the development of AC11. The now-official name 裏譜面 “inner notechart” originated from pop’n music 11 (2004), developed by Konami.
Reference: まだあるの?「太鼓の達人11」最後のコマンド大公開! (“There is still more? The last command of Taiko no Tatsujin 11 greatly revealed!”). (2008-05-15). 開発日記(ブログ)|太鼓の達人開発ブログ (“Development diary (blog) | Taiko no Tatsujin Development Blog”). https://web.archive.org/web/20160213010255/http://taikoblog.namco-ch.net/blog/2008/05/post_36.html#more |
Unspecified: Whether and how inner mode is implemented.
Proposal (IID): Make the scope per–player-side.
SIDE:1
/ SIDE:Normal
/ SIDE:NORMAL
/ SIDE:normal
SIDE:2
/ SIDE:Ex
/ SIDE:EX
/ SIDE:ex
SIDE:3
/ SIDE:Both
/ SIDE:BOTH
/ SIDE:both
/ SIDE:
SIDE:N
/ SIDE:n
, SIDE:E
/ SIDE:e
, & SIDE:B
/ SIDE:b
) are recognized, and SIDE:Ex
/SIDE:EX
/SIDE:ex
is considered a short form of SIDE:Extra
/SIDE:EXTRA
/SIDE:extra
.SIDE:
has per-file scope and notechart definitions for SIDE:Normal
& SIDE:Ex
should be separated into 2 files and for SIDE:Both
should be duplicated into these 2 files.
SIDE:
has per–player-side scope.SIDE:
has been re-purposed to be used in conjunction with COURSE:Tower
to specify the actual difficulty in the tower mode and can be one of:
SIDE:Normal
— the 甘口 “easy” difficulty.SIDE:Ex
/ SIDE:
/ any other unrecognized argument — the 辛口 “hard” difficulty.OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: metadata ★・・・・
First seen in: TaikoJiro 2 v0.70
Scope fineness: per-file
Specify the filename of the 裏譜面 “inner notechart” or 表譜面 “outer notechart” version (“the reverse side”) of this notechart file.
SIDEREV:<string-filename-tja-inner-or-outer>
SIDE:Normal
is used, specify the filename of the inner notechart.SIDE:Ex
is used, specify the filename of the outer notechart.SIDE:Both
is used, the behavior is unspecified.OpenTaiko-OutFox standard version: 1.0
Impact level: timing ★★★★・
First seen in: TaikoJiro v0.80 (initial release)
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per-file
Inspired by: TJF format
Specify the audio file (“waveform audio file”) of the song.
Unspecified: The exact list of supported file extensions.
Unspecified: Whether the notechart ends at the end of the audio file playback (if the audio file exist).
WAVE:<string-filepath-song-audio-file>
<string-filepath-song-audio-file>
has a file extension of one of, e.g.:
.wav
.ogg
.mp3
lame.exe
WAVE:
OpenTaiko-OutFox standard version: 1.0
Impact level: decorative ・・・・・
First seen in: TaikoJiro v2.37
Supported by: (assumedly universally supported, including TaikoJiro v0.80, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per-file
Inspired by: (likely) SM format #SAMPLESTART:<non-negative-float-seconds-preview-audio-offset>;
(?)
from DWI format #SAMPLESTART:<float-with-decimal-places-seconds-preview-audio-offset>;
(among other forms)
Specify the amount of seconds into the song audio for starting playing the preview (“demonstration”) audio in the song selection screen.
DEMOSTART:<non-negative-float-seconds-preview-audio-offset>
DEMOSTART:0
/ DEMOSTART:
OpenTaiko-OutFox standard version: 1.0
Impact level: timing ★★★★・
First seen in: TaikoJiro v0.80 (initial release)
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per–player-side (?)
Inspired by: (likely) SM format #OFFSET:<float-seconds-music-offset>;
(with same signness)
from DWI format #GAP:<float-seconds-chart-offset>;
(with opposite signness)
from MSD format #GAP:<number-1/192nd-chart-offset>;
Specify the amount of seconds past (“offsetted”) from the time position of #START
of the notechart which the song audio should start playing from the beginning.
Replaced the TJF command #GOMUSIC
(starting (“go”) playing the song audio (“music”) from this point).
Equation: music-offset
= time-point-of-audio-beginning
− time-point-of-chart-start
(Unit: Seconds)
OFFSET:<float-seconds-music-offset>
OFFSET:0
/ OFFSET:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: TaikoJiro v1.66
Supported by: TaikoJiro 2, TJAPlayer3 v1.5.2
Scope fineness: per-file
Inspired by: BMS format #VOLWAV <non-negative-number-percent-amplitude-gain>
(?)
Specify the relative amplitude percentage (%) of the desired volume gain of the song audio.
SONGVOL:<non-negative-number-percent-amplitude-gain>
SONGVOL:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: TaikoJiro v1.66
Supported by: TaikoJiro 2
Scope fineness: per–player-side (?)
Inspired by: BMS format #VOLWAV <non-negative-number-percent-amplitude-gain>
(?)
Specify the relative amplitude percentage (%) of the desired volume gain of the taiko sound (“sound effect”).
Unspecified: Whether the volume of system voice is affected.
SEVOL:<non-negative-number-percent-amplitude-gain>
SEVOL:
OpenTaiko-OutFox standard version: 1.0 (minimum, see each form)
Impact level: timing ★★★★・
FIrst seen in: TaikoJiro v0.80 (initial release)
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per–player-side
Inspired by: TJF format BPM:<positive-int-initial-bpm>
(likely) from DWI format #BPM:<positive-number-initial-bpm>;
from MSD format #BPM:<positive-float-bpm>;
from BMS format #BPM <positive-int-bpm>
Specify the initial BPM (beat per minute) of the notechart.
BPM:<positive-int-initial-bpm>
BPM:<positive-float-initial-bpm>
BPM:<negative-float-initial-bpm>
#MEASURE -4/4
were active.#MEASURE 4/4
were active unless overridden by any actual #MEASURE
s before the first note symbol, and the active BPM remains negative and unchanged unless overridden by any #BPMCHANGE
commmands.BPM:0
#BPMCHANGE
with non-zero value non-after the first note symbol of the notechart definition) (?)
#BPMCHANGE 0
were active unless overridden by any actual #BPMCHANGE
s before the first note symbol.BPM:
/ unrecognized value BPM:
is kept.BPM:120
.BPM:0
.BPM:
header or #BPMCHANGE
command may cause the affected notes to be spaced unevenly.OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible) (minimum; unless stated otherwise)
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer2 for.PC
Scope fineness: per–player-side
Specify the initial scrolling velocity (before and non-after the beginning (“head”) of the notechart), relative to the base scrolling velocity.
Can be reset by the #SCROLL
command non-before the beginning of the notechart. If every player-side for every difficulty has #SCROLL
defined at the beginning of the chart, HEADSCROLL:
has no effects.
HEADSCROLL:<float-normal-scroll-velocity>
HEADSCROLL:0
#SCROLL 0
were applied non-after the beginning of the notechart.HEADSCROLL:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: OpenTaiko (0auBSQ) v0.5.4
Scope fineness: per–player-side (?)
Inspired by: DTX format #PREIMAGE: <string-filepath-preview-image>
Specify the jacket (“preview”) image of the song.
PREIMAGE:<string-filepath-preview-image>
PREIMAGE:
OpenTaiko-OutFox standard version: (non-standard)
Impact level: decorative ・・・・・
First seen in: Malody
Scope fineness: per-file
Specify the jacket (“cover”) image of the song.
COVER:<string-filepath-background-image>
<string-filepath-background-image>
MUST be in the same directory as the TJA file..jpg
COVER:
OpenTaiko-OutFox standard version: (non-standard)
Impact level: decorative ・・・・・
First seen in: taiko-web ver.19.02.03
Scope fineness: per-file
Specify the skin in the gameplay screen for taiko-web.
Unspecified: The behavior in other simulators.
TAIKOWEBSKIN:<comma-separated-list-string-key-value>
Each element of <comma-separated-list-string-key-value>
can be one of:
dir <string-dirpath-skin>
<string-dirpath-skin>
defaults to (empty).name <str-skin-variation>
<text-suffix-skin-variation>
to be _<str-skin-variation>
if not empty or to be (empty) if empty.<str-skin-variation>
defaults to (empty).<enum-str-element> <enum-str-type>
, at least 1 element is required
<enum-str-element>
can be one of:
song
— the dancer background (“song” background) of the lower playback screen for single player.stage
— the horizontally repeating dancer floor (“stage”) of the lower playback screen for single player.don
— the horizontally repeating and scrolling background behind the player character (“どんちゃん”).<enum-str-type>
can be one of:
none
— blankstatic
— a still image, requires bg_<str-element><text-suffix-skin-variation>.<text-file-extension>
to exist<enum-str-animation-type>
— animated image with pre-defined animation type, requires both bg_<str-element><text-suffix-skin-variation>_a.<text-file-extension>
& bg_<str-element><text-suffix-skin-variation>_b.<text-file-extension>
to exist.
<str-element>
is stage
.OpenTaiko-OutFox standard version: (non-standard)
Impact level: decorative ・・・・・
First seen in: OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per–player-side (?)
Specify the pre-defined (“preset”) skin (“scene”) in the gameplay screen.
SCENEPRESET:<string-filepath-scene-preset>
SCENEPRESET:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible) (with <non-negative-int-tower-skin>
being 0
–9
(?) or omitted, as in the わくわく冒険ランド “Wakuwaku (Exciting) Adventure land” mode from the 7th PS2 console game)
(non-standard) (otherwise)
Impact level: decorative ・・・・・
First seen in: OpenTaiko (0auBSQ) v0.5.0
Scope fineness: per–player-side (?)
Specify the dedicated tower skin (“type”) to use.
Used in conjunction with COURSE:Tower
.
TOWERTYPE:<non-negative-int-tower-skin>
TOWERTYPE:0
/ TOWERTYPE:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compat) (with <enum-int-dan-tick-skin>
being 0
–5
or omitted, as in AC15.8 (レッドVer. “Red Ver.”) and onward);
(non-standard) (otherwise)
Impact level: decorative ・・・・・
First seen in: OpenTaiko (0auBSQ) v0.5.1
Scope fineness: per-file
Specify the dedicated 段位認定モード “Rank Certification Mode” skin (コスメチック “cosmetic” (?)) to use in the certification challenge selection screen.
段位認定モード “Rank Certification Mode” resembles 段位道場 “Rank Dojo”/Dan-i Dojo in the official games.
Used in conjunction with COURSE:Dan
.
DANTICK:<enum-int-dan-tick-skin>
0
: For ranks below the 初級 “first level” rank1
: Blue ranks2
: Red ranks3
: Silver ranks, for ?人 ranks4
: Gold ranks, also for ?人 ranks5
: For 段位道場 外伝 Bonus Dojo ranks
DANTICK:0
/ DANTICK:
OpenTaiko-OutFox standard version: (non-standard)
Impact level: decorative ・・・・・
First seen in: OpenTaiko (0auBSQ) v0.5.1
Scope fineness: per-file
Specify the color filter to apply to the 段位認定モード “Rank Certification Mode” skin (コスメチック “cosmetic” (?)) objects in the certification challenge selection screen.
段位認定モード “Rank Certification Mode” resembles 段位道場 “Rank Dojo”/Dan-i Dojo in the official games.
Used in conjunction with COURSE:Dan
.
DANTICKCOLOR:<str-color-filter>
<str-color-filter>
can be one of:
#<string-6-digit-24bit-rgb>
#<string-3-digit-12bit-rgb>
<enum-str-html-color-name>
DANTICKCOLOR:#FFFFFF
/ DANTICKCOLOR:
OpenTaiko-OutFox standard version: (non-standard)
Impact level: decorative ・・・・・
First seen in: OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per–player-side (?)
Specify the background image of the song selection screen. Override the skin settings.
SELECTBG:<string-filepath-selection-background-image>
SELECTBG:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: TJAPlayer2 for.PC ver.2016021300
Scope fineness: per–player-side (?)
Inspired by: DTX format #BACKGROUND <string-filepath-background-image>
Specify the background image of the gameplay screen. Override the skin settings.
Unspecified: Whether the image is scaled or stretched to fill the gameplay screen.
BGIMAGE:<string-filepath-background-image>
BGIMAGE:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: ?
Reference: TJA Format Support (vscode extension)
Scope fineness: per–player-side (?)
Specify the amount of seconds past (“offsetted”) from the time position specified by the OFFSET:
header which the background image (“image”) should start displaying.
Equation: bgoffset
= time-point-of-image-displaying
− time-point-of-audio-beginning
(Unit: Seconds)
BGOFFSET:<float-seconds-offset>
BGOFFSET:0
/ BGOFFSET:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: TJAPlayer2 for.PC ver.2016021300
Scope fineness: per–player-side (?)
Specify the background video (“movie”) of the gameplay screen. Override the skin settings.
Unspecified: Whether the video is scaled or stretched to fill the gameplay screen.
BGMOVIE:<string-filepath-background-video>
BGMOVIE:
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: TJAPlayer2 for.PC ver.2015081100
Scope fineness: per–player-side (?)
Specify the amount of seconds past (“offsetted”) from the time position specified by the OFFSET:
header which the background video (“movie”) should start playing from the beginning.
Equation: movieoffset
= time-point-of-video-beginning
− time-point-of-audio-beginning
(Unit: Seconds)
MOVIEOFFSET:<float-seconds-offset>
MOVIEOFFSET:0
/ MOVIEOFFSET:
#START
of the notechart.
movieoffset_f
= time-point-of-video-beginning
− time-point-of-chart-start
(Unit: Seconds)OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: C-Taiko
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per–player-side (?)
Specify a background video (“animation”) to be used in the gameplay screen by the #BGAON
and #BGAOFF
commands.
Unspecified: Whether the video is scaled or stretched to fill the gameplay screen.
Not reset by BGA:
itself.
BGA:<string-filepath-background-video>
BGA:
<string-filepath-background-animation>
must start with <unsigned-int-video-index>
, which must be exactly 2 decimal digits (with 0
prefixed if necessary) and is used to specify the background animation by the #BGAON
and #BGAOFF
commands.OpenTaiko-OutFox standard version: 1.2
Impact level: decorative ・・・・・
First seen in: taiko-web ver.20.03.31, TJAPlayer3-Develop-ReWrite (parse-only)
Supported by: TJAPlayer3-f v1.6.0.0, OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per-file
Specify the lyric file(s) for the song to display lyrics in the playback screen.
Unspecified: The effective lyric file(s) when both the LYRICS:
& LYRICFILE:
headers are used.
Unspecified: Whether #LYRIC
commands are ignored if the lyric file is used.
LYRICS:<string-filepath-lyric-file>
LYRICFILE:<string-filepath-lyric-file>
<string-filepath-lyric-file>
has a file extension of one of, e.g.:
.vtt
— WebVTT, see https://en.wikipedia.org/wiki/WebVTT LYRICS:
header).lrc
— LRC, see https://en.wikipedia.org/wiki/LRC_(file_format) ,
) in <string-filepath-lyric-file>
MUST be escaped as \,
LYRICS:<comma-separated-list-string-filepath-lyric-file>
LYRICFILE:<comma-separated-list-string-filepath-lyric-file>
#NEXTSONG
command.COURSE:Dan
.,
) in the filepath specified in <comma-separated-list-string-filepath-lyric-file>
MUST be escaped as \,
LYRICS:
/ LYRICFILE:
#LYRIC
commands (if any).#LYRIC
commands are ignored.OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: metadata ★・・・・
First seen in: OpenTaiko (0auBSQ) v0.6.0
Scope fineness: per-file
If enabled, specify that the song has explicit (of the meaning of not safe for work (NSFW)) lyrics.
The display details are unspecified.
EXPLICIT:1
EXPLICIT:0
/ EXPLICIT:
OpenTaiko-OutFox standard version: 1.2 (Taiko and Konga modes)
Impact level: note ★★★★★
First seen in: TaikoJiro v2.13
Supported by: taiko-web (plugin “Donkey Konga Mode”)
Scope fineness: per–player-side (?)
Specify the game mode. The meaning of the symbols used in the notechart definition is changed accordingly; see TJA Notechart Definition.
Unspecified: The implemented game modes other than Taiko mode.
See the #GAMETYPE
command for specifying the game mode for specific notechart sections.
GAME:Taiko
/ GAME:TAIKO
/ GAME:taiko
/ GAME:
GAME:Jube
/ GAME:JUBE
/ GAME:jube
GAME:Bm
/ GAME:BM
/ GAME:bm
GAME:Konga
/ GAME:Bongo
GAME:Jube
was unimplemented and was autoplay-only.OpenTaiko-OutFox standard version: 1.0 (minimum, unless stated otherwise)
Impact level: note ★★★★★
First seen in: TaikoJiro v1.76
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, Malody, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per–player-side
Specify the コース “course”/むずかしい “difficulty”/難易度 “difficulty (or easiness) level” difficulty/difficulty level (“course”).
Not to be confused with the difficulty star specified by the LEVEL:
header.
“Course” in other rhythm games usually refers to playing multiple songs in a row. In early arcade console versions of the official game series, the player could only play a fixed difficulty during the クレ(ジット) “credit”/game session. “<difficulty>
コース” (“<difficulty>
course”) was displayed in those official games.
Depending on the simulator, the COURSE:
header may affect the judgment window, default scoring, the default increasing rate of the 魂ゲージ spirit gauge/soul gauge, etc.
COURSE:0
/ COURSE:Easy
/ COURSE:EASY
/ COURSE:easy
COURSE:1
/ COURSE:Normal
/ COURSE:NORMAL
/ COURSE:normal
COURSE:2
/ COURSE:Hard
/ COURSE:HARD
/ COURSE:hard
COURSE:3
/ COURSE:Oni
/ COURSE:ONI
/ COURSE:oni
SCOREMODE:0
). This difficulty was always named 鬼/おに Oni in the PS2 console games and is later synchronized into AC7 and on, but the same scoring rule still applied to CS1–CS5 and AC7.COURSE:4
/ COURSE:Edit
/ COURSE:EDIT
/ COURSE:edit
SIDE:Ex
and the SIDEREV:
head should be used.COURSE:Ura
/ COURSE:ura
COURSE:Edit
COURSE:5
/ COURSE:Tower
/ COURSE:TOWER
/ COURSE:tower
LIFE:
header can be used in conjunction.#SCROLL 1
-equivalent note spawning position right beyond the right edge of the screen. However, in later games such as AC15 and AC16, the draw order is determined instead by notes’ definition order in the notechart file.COURSE:
header.COURSE:6
/ COURSE:Dan
/ COURSE:dan
COURSE:<str-difficulty-name>
Easy
/ Kantan
— Equivalent to COURSE:Easy
in other simulators.Normal
/ Futsuu
— Equivalent to COURSE:Normal
in other simulators.Hard
/ Muzukashii
— Equivalent to COURSE:Hard
in other simulators.Extreme
/ Oni
— Equivalent to COURSE:Oni
in other simulators.Extra
/ Ura Oni
— Equivalent to COURSE:Edit
in other simulators.COURSE:
/ Unrecognized value COURSE:Oni
COURSE:Tower
and its equivalent commands cause unintended behaviors. (?; deduced from source code)
OpenTaiko-OutFox standard version: 1.0 (minimum, see each form)
Impact level: scoring ★★★・・
First seen in: TaikoJiro v0.80 (initial release)
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, Malody, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per–player-side
Inspired by: TJF format LEVEL:<positive-int-difficulty-star>
Specify the 難易度 “difficulty (or easiness) level“/difficulty star/? (“level”).
Since the Japanese terminology is easily confused with the fore-mentioned “difficulty” specified by the COURSE:
header, the difficulty star is often referred as 星の数/★の数 “amount of stars” and is displayed as “★×n” in the official PC-generation arcade games.
Depending on the simulator and/or user settings, the LEVEL:
header may affect the default scoring, the default increasing rate of the 魂ゲージ spirit gauge/soul gauge, etc.
LEVEL:<positive-int-difficulty-star>
LEVEL:<positive-int-difficulty-star>+
LEVEL:<positive-int-difficulty-star>-
LEVEL:0
LEVEL:<non-negative-float-difficulty-star>
LEVEL:
/ Unrecognized value LEVEL:0
.LEVEL:
header are instead both per-difficulty. Each per-difficulty scope starts or resumes at COURSE:
headers specifying the target difficulty and ends at another COURSE:
header specifying a different difficulty.
LEVEL:
for the deceptive difficulty star after all notechart definitions in the per-difficulty scope.LEVEL:
header is defined before any COURSE:
headers with difficulty specified, the specified difficulty star instead of 0 stars will be used as the default difficulty star.LEVEL:
header is defined before any COURSE:
headers with value, the specified difficulty star become the difficulty star for the おに Oni/Extreme difficulty, even if no notecharts are defined for the Oni/Extreme difficulty.OpenTaiko-OutFox standard version: 1.0 (up to 2 player-sides);
1.2 (up to 5 player-sides) (?)
Impact level: note ★★★★★
First seen in: TaikoJiro v1.99
Supported by: TaikoJiro 2, TJAPlayer2 for.PC
Scope fineness: per–player-side
Inspired by: (likely) DWI and earlier MSD format #<enum-str-style>:<enum-str-difficulty-type>:<positive-int-difficulty-stars>:<colon-separated-list-str-notechart-definitions>;
where <enum-str-style>
is one of SINGLE
, DOUBLE
, COUPLE
, & (DWI) SOLO
.
Specify the total amount of player-sides of the notechart(s).
The multiple-player-side notecharts of the difficulty is chosen if enough amount of players have chosen the same difficulty.
In the official games, some difficulties may have only 2-player-side notecharts but are still playable in single player mode, where the notechart for one of the player-side is chosen (always the 1st player-side in PC-generation games).
Unspecified: Whether such notecharts are chosen when some players have chosen different difficulties.
If the specified amount of player-sides is not 1, #START <enum-str-player-side>
should be used for specifying the player-side of the notechart.
STYLE:1
/ STYLE:Single
/ STYLE:SINGLE
/ STYLE:single
/ STYLE:
STYLE:2
/ STYLE:Double
/ STYLE:DOUBLE
/ STYLE:double
/ STYLE:Couple
/ STYLE:couple
STYLE:<positive-int-amount-of-player-sides>
Reference: ダブルプレイ (“Double Play”; “Two-player Charts”). 太鼓の達人 譜面とか Wiki* (“Taiko no Tatsujin - Wiki* about Notecharts and so on”). https://wikiwiki.jp/taiko-fumen/収録曲/ダブルプレイ
OpenTaiko-OutFox standard version: 1.0 (minimum, see each form)
Impact level: note ★★★★★
First seen in: TaikoJiro
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: per–player-side
Specify the required amount of hits of 激連打/ゲキ連打 “fierce drumroll” burst note / 風船/ふ うせん balloon–type notes (denoted by 7
, 9
, or D
in the notechart definition), in the order of their definition, NOT the hit order during playing.
Each balloon-type note with unassigned hit amount requires an unspecified default amount of hits.
5
.Proposal (IID): The #BALLOON
command can be used in the notechart definition for the same purpose instead.
BALLOON:<comma-separated-list-non-negative-int-amount-of-hits>
BALLOONNOR:<comma-separated-list-non-negative-int-amount-of-hits>
BALLOONEXP:<comma-separated-list-non-negative-int-amount-of-hits>
BALLOONMAS:<comma-separated-list-non-negative-int-amount-of-hits>
For each element of <comma-separated-list-non-negative-int-amount-of-hits>
, if the amount of hits is 0
, the per-note behavior is unspecified.
LEVEL:
header). Specifically, if a BALLOON header is specified multiple times in its scope, the specified hit amount values is appended to the existent values, instead of replacing all the existent values.BALLOON:
header is erroneously treated as the BALLOONNOR:
header.#BRANCHEND
and before another #BRANCHSTART
, it erroneously uses 3 values from the iteration of the BALLOONNOR:
/ BALLOONEXP:
/ BALLOONMAS:
list according to the last defined “branch”/path before the #BRANCHEND
. (?; deduced from source code)
#BRANCHEND
and before another #BRANCHSTART
, it use 1 value from each iteration of BALLOONNOR:
, BALLOONEXP:
, & BALLOONMAS:
instead of only BALLOONNOR:
.
OpenTaiko-OutFox standard version: 1.2 (for COURSE:Tower
, except the 0 form)
Impact level: scoring ★★★・・
First seen in: TaikoJiro v2.19
Supported by: OpenTaiko (0auBSQ) v0.4.3
Scope fineness: per–player-side
Inspired by: StepMania and earlier Dance With Intensity CRS format #LIVES:<positive-int-life-count>;
(?)
Specify the initial life count of the life count gauge (if used).
A 不可 BAD judgment decreases the life count by 1 (missing). When the life count decreased to 0, the player is immediately judged to be failed and the notechart ends.
Unspecified: Whether there is invincible time after missing and how long is its time duration.
Unspecified: The behavior when a non-zero value is used not in conjunction with COURSE:Tower
.
LIFE:<positive-int-life-count>
LIFE:0
LIFE:
LIFE:0
.LIFE:5
when used in conjunction with COURSE:Tower
.In TaikoJiro 1 (the header is not supported in TaikoJiro 2), the maximum possible value is 65535 (2¹⁶ − 1).
OpenTaiko-OutFox standard version: 1.0 (despite ignored in TJAPlayer3)
Impact level: scoring ★★★・・
First seen in: TaikoJiro v2.92 & TaikoJiro 2 v0.93
Scope fineness: per–player-side
Inspired by: BMS format #TOTAL <non-negative-number-total-gauge-increment>
Specify the total 魂ゲージ spirit gauge/soul gauge increment of the notechart when all hit-type notes are hit with 良 GREAT/GOOD judgment, i.e., ドンダフルコンボ Donderful Combo.
TOTAL:<non-negative-number-total-gauge-increment>
TOTAL:
OpenTaiko-OutFox standard version: 1.0
Impact level: scoring ★★★・・
First seen in: TJAPlayer3 v1.5.4
Scope fineness: per–player-side
Specify the rounding mode of the increment of the 魂ゲージ spirit gauge/soul gauge.
GAUGEINCR:<enum-str-gauge-increment-rounding-mode>
<enum-str-gauge-increment-rounding-mode>
can be one of:
Normal
Floor
Round
— round to the nearest.Notfix
— no rounding is performed.Ceiling
OpenTaiko-OutFox standard version: 1.0 (minimum, unless stated otherwise)
Impact level: scoring ★★★・・
First seen in: TJAPlayer3 v1.5.0
Post-#START position: forbidden;
allowed (Supported by: TJAPlayer3-Develop-ReWrite)
Scope fineness: per–player-side (?) (or per-song (begins with a #NEXTSONG
command and ends with another #NEXTSONG
command))
Specify a requirement for passing the notechart in 段位認定モード “Rank Certification Mode” (“examination”).
段位認定モード “Rank Certification Mode” resembles 段位道場 “Rank Dojo”/Dan-i Dojo in the official games.
Used in conjunction with COURSE:Dan
.
EXAM<exam-requirement-index-specifier>:<enum-str-requirement>, <number-pass-requirement>, <number-gold-requirement>, <enum-str-range>
<exam-requirement-index-specifier>
specifies the displayed order of this requirement. The display details are unspecified. Its value range is:
1
–3
1
–4
1
, <enum-str-requirement>
is expected to be g
.1
–7
1
, <enum-str-requirement>
is expected to be g
.<enum-str-requirement>
can be one of:
g
— final percentage (%) of 魂ゲージ spirit gauge/soul gauge.jp
— amount of 良 GREAT/GOOD (“perfect”) judgment.jg
— amount of 可 GOOD/OK judgment.jb
— amount of 不可 BAD judgment.jm
— amount of caught bomb/mine notes. ja
— amount of caught Ad libitum (AD-LIB) notes. s
— final score.r
— amount of hits on all drumroll-type notes.
r
(bar drumroll notes–only) used for the condition of the #BRANCHSTART
command.h
— amount of non-不可 BAD, non-blank hits.
Formula:
h
=jp
+jg
+r
c
— maximum/longest combo.a
— final percentage (%) of accuracy. Formula: (良 GREAT/GOOD + 0.5 × 可 GOOD/OK) / max{良 GREAT/GOOD + 可 GOOD/OK + 不可 BAD, 1} × 100(%) (Unit of variables: Amount of judgment results)
<enum-str-range>
can be one of:
m
— more than or equal to (“≥”) the given requirementl
— less than (“<”) the given requirementEXAM<exam-requirement-index-specifier>:<enum-str-requirement>, <comma-separated-list-number-pass-and-gold-requirements>, <enum-str-range>
<comma-separated-list-number-pass-and-gold-requirements>
are pairs of <number-pass-requirement>, <number-gold-requirement>
for each song specified by the #NEXTSONG
command.EXAMGAUGE:<number-pass-requirement>, <number-gold-requirement>, <enum-str-range>
<enum-str-requirement>
is implicitly fixed to g
.EXAM1:
header in TJAPlayer3-Develop-ReWrite & OpenTaiko (0auBSQ).OpenTaiko-OutFox standard version: 1.0
Impact level: scoring ★★★・・
First seen in: TaikoJiro v2.85
Supported by: TaikoJiro 2 v0.72, TJAPlayer2 for.PC
Scope fineness: per–player-side
Specify the scoring mode.
Affects combo bonus, combo milestone bonus, ゴーゴータイム Go-Go Time bonus, & big note bonus.
The main scoring formula has two int
variables: init
& diff
.
The “basic score” below refers to the score awarded per 良 GREAT/GOOD judgment on non-big notes outside Go-Go Time sections.
When either the 真打 “true percussion (performance)”/”true performance” option is enabled or SCOREMODE:3
is used, the basic score is fixed to init
points and the SCOREDIFF:
header is ignored.
Unspecified: Scoring details other than the basic score in each mode; usually one of the official games is followed.
SCOREMODE:0
COURSE:3
for explanation).init
& diff
are both fixed to 1000 points and the SCOREINIT:
and SCOREDIFF:
headers are both ignored.Combo | 1–199 | 200– |
---|---|---|
Basic score (points) | 1000 | 2000 |
SCOREMODE:1
Combo | 1–9 | 10–19 | 20–29 | 30–39 | 40–49 | 50–59 | 60–69 | 70–79 | 80–89 | 90–99 | 100– |
---|---|---|---|---|---|---|---|---|---|---|---|
n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
init
points per note.init
+ n × diff
points.An equivalent formula: Basic score =
init
+ min{floor(combo
/ 10), 10} ×diff
(points).
init
is usualy set to between 3–5 × diff
in official charts.SCOREMODE:2
Combo | 1–9 | 10–29 | 30–49 | 50–99 | 100– |
---|---|---|---|---|---|
n | 0 | 1 | 2 | 4 | 8 |
init
+ n × diff
points.init
is usualy set to between 3–5 × diff
in official charts.SCOREMODE:3
Combo | 1– |
---|---|
Basic score (points) | init |
SCOREMODE:
SCOREMODE:1
Reference: 配点 (“Scoring”). 太鼓の達人 譜面とか Wiki* (“Taiko no Tatsujin - Wiki* about Notecharts and so on”). https://wikiwiki.jp/taiko-fumen/システム/配点
SCOREMODE:3
is treated the same as SCOREMODE:2
, where the behavior of the former SCOREMODE:3
can be enabled by enabling the 真打 “true performance” option.OpenTaiko-OutFox standard version: 1.0
Impact level: scoring ★★★・・
First seen in: TaikoJiro v1.67
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC)
Scope fineness: per–player-side
Specify the 初項 initial term (refers to an arithmetic progression) (init
) used for calculate the basic score. See the explanation for the SCOREMODE:
header.
SCOREINIT:<non-negative-int-score-init>
SCOREINIT:<non-negative-int-score-init>, <non-negative-int-score-init-shin'uchi>
<non-negative-int-score-init-shin'uchi>
is used for init
when the 真打 “true percussion (performance)” option (“stable”) is enabledSCOREINIT:0
SCOREINIT:
init
is determined by the simulator. Unspecified: The details for determining it; usually one of the official games is followed.OpenTaiko-OutFox standard version: 1.0
Impact level: scoring ★★★・・
First seen in: TaikoJiro v1.67
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC)
Scope fineness: per–player-side
Specify the 公差 common difference (refers to an arithmetic progression) (diff
) used for calculate the basic score. See the explanation for the SCOREMODE:
header.
SCOREDIFF:<non-negative-int-score-diff>
SCOREDIFF:<non-negative-int-score-diff>d
SCOREMODE:0
were used, except that the SCOREINIT:
& SCOREDIFF:
are not ignored.Combo | 1–199 | 200– |
---|---|---|
Basic score | init |
init + diff |
SCOREDIFF:0
diff
is 0
.SCOREDIFF:
diff
is determined by the simulator. Unspecified: The details for determining it; usually one of the official games is followed.OpenTaiko-OutFox standard version: 1.0 (except 0 or omitted forms)
Impact level: metadata ★・・・・
First seen in: TJAPlayer2 for.PC
Scope fineness: per–player-side
If enabled, make the 譜面分岐 “notechart branch“/forked path indicator hidden in the song selection screen; hide the “branch”/path mark on the note field from the beginning of the notechart until time point when the “branch”/path–switching effects should play for the first “branch”/path section in the gameplay screen.
HIDDENBRANCH:1
HIDDENBRANCH:0
HIDDENBRANCH:1
HIDDENBRANCH:
OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★ (maximum, depends on the compatibility flags)
Scope fineness: per–player-side
Specify the intended compatibility mode of the chart.
The supported set of headers & commands and allowed argument forms is not affected. However, the arguments might be interpreted differently dependent on the compatibility mode and flags.
TJACOMPAT:<comma-separated-list-enum-str-compat-option>
<comma-separated-list-enum-str-compat-option>
is one of <enum-str-compat-mode>
& <enum-str-compat-flag>
, and subsequent elements are <enum-str-compat-flag>
.<enum-str-compat-flag>
.oos
, unless specified in the TJA file or the box.def
in the directory containing the TJA file.oos
unless the simulator is used as a drop-in replacement of a certain existing simulator.<enum-str-compat-mode>
can be one of:
jiro1
— Reference: TaikoJiro 1 v2.92jiro2
— Reference: TaikoJiro 2 v0.98tmg
— Reference: Latest TaikoManyGimmicks (v0.6.6α)tjap3
— Reference: TJAPlayer3 v5.2.10oos
— OpenTaiko-OutFox standard. Reference: OpenTaiko (0auBSQ)<enum-str-compat-flag>
is in the format of <enum-str-compat-item>=<enum-str-compat-option>
.
These compatibility flags are in the form of <enum-str-compat-item>=<enum-str-compat-mode>
. Charters should only use these flags if necessary.
See Comparison of Compatibility Modes for the value of internal flags for each compatibility mode.
balloon
– Balloon parsing behaviors: balloon-popcount
& balloonnem-popcount-nonbranch
end-at
– Chart ending behaviors: end-at
timing
– Timing behaviors: timing-precision
& timing-effect-order
hbscroll
– HBScroll behaviors: hbscroll-past
& hbscroll-delay
scroll
– Note object scrolling behaviors: roll-pos
, roll-nodes
, scroll-i
, jposscroll-i
, jposscroll-interrupt
, sudden-directions
, & sudden-precision
draw
– Note object drawing behaviors: stack-order
, angle-barline
, angle-note
, & angle-roll-bar
These compatibility flags are considered for internal uses by the simulator and may be unimplemented. Charters should never specify these flags.
balloon-popcount=common
, balloon-popcount=n
BALLOON:
header is assigned in a branched chart.common
— for each balloon-type note head symbol, a value is assigned and consumed if the note symbol is a non-repeated roll head in any branch, in their lexical definition order. The BALLOONNOR:
, BALLOONEXP:
, and BALLOONMAS:
headers are ignored if the BALLOON:
header is specified.n
— the BALLOON:
header is treated the same as the BALLOONNOR:
header.balloonnem-popcount-nonbranch=1n
, balloonnem-popcount-nonbranch=1nem
, balloonnem-popcount-nonbranch=1n-or-end-3last
, balloonnem-popcount-nonbranch=1n-or-end-1nem
1n
— for each balloon-type note head symbol, a value from BALLOONNOR:
is assigned and consumed if the note symbol is a non-repeated roll head in any branch.1nem
— for each balloon-type note head symbol, a value (up to 3 total) from the respect branched BALLOON header is assigned and consumed if the note symbol is a non-repeated roll head in a branch, in the order of Normal, Expert, and Master branches.1n-or-end-3last
— before the first #BRANCHEND
, behaviors as 1n
; after the first #BRANCHEND
, for each balloon-type note head symbol, a value (up to 3 total) from the branched BALLOON header for the last branch specified by #N
, #E
, or #M
is assigned and consumed if the note symbol is a non-repeated roll head in a branch, in the order of Normal, Expert, and Master branches.1n-or-end-1nem
— before the first #BRANCHEND
, behaviors as 1n
; after the first #BRANCHEND
, behaviors as 1nem
end-at=end
, end-at=music
, end-at=music-and-end
end
— the ending point is the (possibly implicit) #END
.music
— the default ending point is the end of music. If the WAVE:
header is not specified or the specified file is missing or unsupported, the ending point is the (possibly implicit) #END
.music-and-end
, the ending point is the earliest one specified by end-at=music
& end-at=end
.timing-precision=any
, timing-precision=ms
, timing-precision=ms-bpm
#DELAY
, and commands.any
— the precision is only limited by the implementation.ms
— the definition cursor has the same precision as any
, but the resulting time for each measure division has the precision is 0.001 seconds, rounded toward 0.ms-bpm
— the definition cursor has the same precision as any
, but the elapsed time between elapse points is rounded to 0.001 second (toward 0). The elapsed point is one of chart start, the #BPMCHANGE
command, and the end of a measure with #BPMCHANGE
defined. The resulting time for each measure division and the time duration of #DELAY
has the precision of 0.001 seconds, rounded toward 0. Notes’ beat position is also aligned to pixels when a #BPMCHANGE
comment is encountered (?).
timing-effect-order=def
, timing-effect-order=flat-time-or-def
, timing-effect-order=time-or-def
, timing-effect-order=time
#BPMCHANGE
& #SCROLL
and the command-time effects of #BPMCHANGE
& positive #DELAY
.def
— by the definition order in a branch.flat-time-or-def
— by time order (if differs) or by the definition order in a branch.time-or-def
— by time order (if differs), with later defined commands overrides earlier defined commands, or by the definition order in a branch.time
— by time range, with later defined commands overrides earlier defined commands, rounded according to timing-precision
.hbscroll-past=hbscroll
, hbscroll-past=nmscroll
hbscroll
— no scroll behavior changes.nmscroll
— when a such object reaches the judgement timing, these objects and earlier defined such objects in the same branch are positioned as if their scroll mode had been changed to Normal Taiko scroll for the remaining gameplay. (and with #SCROLL 1
enforced for BMScroll mode objects)hbscroll-delay=offset
, hbscroll-delay=pause
, hbscroll-delay=freeze
#DELAY
pauses the scroll in HBScroll and BMScroll during its effective duration. A negative #DELAY
always offsets both the time and the beat of the definition cursor regardless of this flag.offset
— does not pause; offsets both the time and the beat of the definition cursor.pause
— pauses while no beat progress happens; offsets only the time of the definition cursor.freeze
— if the #DELAY
is defined at the maximum time ever reached by the definition cursor in the current branch, pauses until the specified duration after the #DELAY
; offsets only the time of the definition cursor.roll-pos=complex
, roll-pos=real
complex
— both of the horizontal and vertical components are considered.real
— only the horizontal component is considered; the vertical compoment is treated as 0.roll-nodes=head
, roll-nodes=tips
, roll-nodes=all
head
— The roll head is used as the only roll node.tips
— The roll head and end are used as roll nodes.all
— The roll head, middle points, and end are used as roll nodes.scroll-i=down
, scroll-i=up
<complex-ri-float-xy>
in #SCROLL <complex-ri-float-xy>
.down
— from the top to the bottom of the screen (↓).up
— from the bottom to the top of the screen (↑).jposscroll-i=down
, jposscroll-i=up
<complex-ri-float-xy>
in #JPOSSCROLL <approach-duration-specifier> <complex-ri-float-xy> 0
.down
— from the top to the bottom of the screen (↓).up
— from the bottom to the top of the screen (↑).jposscroll-interrupt=trunc
, jposscroll-interrupt=jump
, jposscroll-interrupt=add
#JPOSSCROLL
command takes effect while a still-in-action #JPOSSCROLL
.trunc
— The still-in-action #JPOSSCROLL
is terminated, the judgement mark is kept at the expected current position, and then the next #JPOSSCROLL
takes effect.jump
— The still-in-action #JPOSSCROLL
is terminated, the judgement mark is suddenly moved to the destination position, and then the next #JPOSSCROLL
takes effect.add
— The still-in-action #JPOSSCROLL
has it movement done independently of the next #JPOSSCROLL
. The total movement is the sum of all ongoing movements.sudden-directions=all
, sudden-directions=x
#SUDDEN
command.all
— all directions are affected.x
— only the horizontal direction is affected.sudden-precision=any
, sudden-precision=ms
<float-seconds-*-duration>
for the #SUDDEN
command.any
— The precision is only limited by the implementation. The interpreted duration is positive infinity only when the duration is given without any non-0
digits in non-exponential part.ms
— The precision is 0.001 (1 ms), rounded toward 0, and any value < 0.001 is treated as 0, which has the interpreted duration of positive infinity.stack-order=def
, stack-order=time
, stack-order=appear-time
def
— earlier defined notes are stacked over later defined notes.time
— notes with earlier judgement time are stacked over notes with later judgement time.appear-time
— notes with earlier “appear-on-lane” time are stacked over notes with later “appear-on-lane” time.
Formula (approximant, in normal Taiko scroll): appear_time = judgement_time (in seconds) − 4 (beats/scroll_range) × 60 (s/min) ÷ (abs(scroll) × BPM_at_note)
angle-barline=none
, angle-barline=angle-mirror
, angle-barline=im
angle-note=none
, angle-note=angle-mirror
angle-roll-bar=angle
, angle-roll-bar=angle-mirror
#ANGLE
command.none
— neither rorated nor mirrored.angle
— rotated by the angle of the scroll velocity.angle-mirrors
— rotated by the angle of the scroll velocity; mirroed when the real component of scroll velocity is negative.im
— rotated by the imaginary component of the scroll velocity specified by the effective #SCROLL
command (if any) or the the HEADSCROLL:
header, where the unit is 90 degrees (°) clockwise (↻).Each proposed compatibility-mode behavior is enclosed in parentheses (()
) for:
oos
behaviors.Flag \ Mode | (Official game) | jiro1 |
jiro2 |
tmg |
tjap3 |
oos |
---|---|---|---|---|---|---|
balloon-popcount |
N/A | common |
common |
common |
n |
n ( common ) |
balloonnem-popcount-nonbranch |
N/A | N/A ( 1n-or-end-1nem ) |
N/A ( 1n-or-end-1nem ) |
N/A ( 1n-or-end-1nem ) |
1n-or-end-3last |
1nem |
end-at |
music |
music |
music |
music (?) |
end |
end ( music-and-end ) |
timing-precision |
? | ms-bpm |
ms (?) |
any (?) |
ms |
ms |
timing-effect-order |
def |
time |
time |
time (?) |
flat-time-or-def |
flat-time-or-def |
hbscroll-past |
N/A | nmscroll |
hbscroll |
hbscroll |
hbscroll |
hbscroll |
hbscroll-delay |
N/A | freeze |
freeze |
freeze (?) |
offset |
offset |
roll-pos |
N/A | N/A ( complex ) |
complex |
complex |
real |
complex |
roll-nodes |
head |
tips |
tips |
tips |
head |
head |
scroll-i |
N/A | N/A ( down ) |
down |
down |
up |
up |
jposscroll-i |
N/A | N/A ( down ) |
N/A ( down ) |
up |
up |
up |
jposscroll-interrupt |
N/A | N/A ( trunc ) |
N/A ( trunc ) |
trunc |
trunc |
trunc |
sudden-directions |
N/A | N/A ( all ) |
N/A ( all ) |
all |
x |
N/A ( x ) |
sudden-precision |
N/A | N/A ( ms ) |
N/A ( ms ) |
any (?) |
ms |
ms |
stack-order |
appear-time (PS1/2-gen) def (PS3/PC-gen) |
def |
def |
time (?) |
time |
def |
angle-barline |
N/A | angle-mirror (?) |
angle-mirror (?) |
angle-mirror (?) |
im |
none ( angle-mirror ) |
angle-note |
N/A | angle-mirror |
angle-mirror |
angle-mirror |
none |
none ( angle-mirror ) |
angle-roll-bar |
N/A | angle-mirror |
angle-mirror |
angle-mirror |
N/A ( angle-mirror ) |
angle ( angle-mirror ) |
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: note ★★★★★ (restrictive usage) / metadata ★・・・・ (non-mandatory usage)
Scope fineness: per-file
Specification by Komi: https://docs.google.com/document/d/17GKK9U5S_eT97oTwgB6tMMNQsQm2uhp-OIhBMv2Mgso
Specify the version-numbered set of the OpenTaiko-OutFox standard TJA features required by the TJA file.
Simulators may choose to keep the enabled set of TJA features unchanged. If the specified feature set isn’t supported by the simulator, a warning should be emitted, and the simulator may choose the accept or reject such TJA files.
If the TJA file uses any features outside the specified feature set, a warning should be emitted, and the simulator may choose to accept the usage, ignored the usage (treated as a comment for headers and commands, treated as blank 0
for uppercase notechart symbols), or reject such TJA files.
VERSION:<enum-str-version>
<enum-str-version>
can be one of:
1.0
– The feature set common in PC-gen official AC games and TJAPlayer3, including Dan-i certification mode.1.1
– The feature set of TJAPlayer3 v1.6.x, including enhancements originate from TaikoJiro 1 and 2.1.2
– The current stable feature set of the OpenTaiko-OutFox standard, based on the gameplay-focused enhancements of OpenTaiko (0auBSQ) v0.6.0, including a more complete feature of Tower mode and the Konga game mode.1.3
– A developing feature set including enhanced branch conditions, TJA state, and compatibility support.2.0
– A developing feature set including the Beatz game mode and a standardized version of TJAPlayer3-Extended features.OpenTaiko-OutFox standard version: (non-standard)
The descriptions of Header Overview for TJA mostly applies.
Some TJA headers can be used as TJC headers and have similar or even identical effects. Unspecified: Which TJA headers can be used as TJC header aside from TITLE:
, COURSE:
, & TOTAL:
. Only non-TJA headers are listed in this section.
See the #NEXTSONG
command for the TJA command version of TJC headers.
OpenTaiko-OutFox standard version: (non-standard)
Impact level: note ★★★★★
First seen in: TaikoJiro v2.34
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope fineness: sequential
Inspired by: StepMania and earlier Dance With Intensity CRS format #SONG:<string-no-extension-filepath-notechart-file-from-root-song-directory>:<optional-enum-str-difficulty-type>;
(among other forms)
Specify a notechart (“song”) of the notechart set.
SONG:<string-filepath-tja-from-game-root-directory>
TJA commands are written in the format of #COMMAND values
.
Each commands MUST be placed on its own line.
No leading non-newline whitespaces are allowed for the #START
and #END
commands & other commands placed outside of the notechart definition enclosed between #START
& #END
.
However, leading non-newline whitespaces are allowed and ignored in the notechart definition enclosed between #START
& #END
.
The #COMMAND
part MUST be written in an all-upper-case manner and MUST NOT contain whitespaces in-between.
Commands with an unrecognized #COMMAND
name are ignored.
Unspecified: The behavior when the whitespaces before the values
part is omitted for all-letter commands with numeric values (occurs in some legacy charts).
values
part.The arguments for commands introduced in TaikoJiro are comma-separated. However, the arguments for commands introduced in TJAPlayer2 for.PC are instead whitespace-separated as in the .bms
format (which is modified and extended into the .dtx
format for DTXMania).
Unspecified: The behavior when a comma (,
) is used as the decimal point (normally a full-stop (.
)).
Most commands are expected to be placed within the notechart definition enclosed between #START
& #END
. However, some commands are expected to be placed before the notechart definition, or “pre-#START
position”.
Commands allowed in pre-#START position will be explicitly denoted.
Proposal (IID): If a command with command-time effects is placed in the pre-#START position, its command-time effects apply as if these effects were static effects.
Unspecified: The behavior when any commands are placed before any headers outside the notechart definition.
Commands with per–player-side scope are similar to headers but the effects of these commands reset at the end of their scope.
Except for one-shot commands, the effect of each command continues until the next occurrence of any command from the same command group or #END
.
See scope fineness.
For commands, the coarsest fineness is per–player-side. The finest fineness other than sequential is non-before
sequential > non-before > measure & (other) > per–player-side
,
at the end of the previous measure (if any) and before such a command in the notechart definition.Some branch-scoped commands have non-before scope fineness, i.e., they can be arranged freely within the same beat position without causing any behavior changes, as long as both their relative order to the sequential commands and the relative order among commands which override each other are not changed.
All commands with other type of scope implicitly have sequential scope fineness.
A command may have each part of its effects applied at different time position.
Each part of the effects can be classified into the following effect time types according to the effect-applying time position (listed in the order of descending static-ness):
Effect time | Applying time |
---|---|
static | Theoretically negative infinity (−∞) measures (presumely −∞ seconds) before the first measure, practically before the notechart is started. |
command-time | A specific time position relative to the time position of the command. |
object-time | A specific time position relative to the time position of notechart objects (including notes and bar lines). |
An object-time effect can be enabled or disabled at either static time or command-time. Static-enabled object-time effects are a sub-type of static effects. Command-time–enabled object-time effects are a sub-type of command-time effects.
If an effect can be interpreted as different effect time types, the effect is classified as the most static-ness type interpreted.
As a special case, for an effect affecting the scrolling path of notechart objects, the effect is classified as object-time only if the path is a direct or indirect function of the time position of notechart objects.
The non-static effect scope is defined by the targeted game objects which are affected by the non-static effects.
Proposal (IID): Allow the scope of non-static effects to be overridden for branch-scoped commands targeting notes & bar lines, see Proposal (IID): Command Modifier.
Commands only affect their targeting game objects. The target of each command can be any (including none) of:
#SPLITLANE
command is used or (Proposed (IID)) the #JPOSSCROLL
command is used inconsistently in any groups defined by the #GROUP
command.If commands are defined in branched section, some commands affect all branches, while some commands only affects the branch where it is defined.
Due to the incoherent behaviors, many commands introduced in TJAPlayer2 for.PC and descendants have Unspecified effect branches.
#BMSCROLL
/ #HBSCROLL
/ #NMSCROLL
OpenTaiko-OutFox standard version: 1.1 (except #NMSCROLL
; pre-#START position);
1.2 (post-#START
position)
Impact level: gimmicky ★★・・・
First seen in: TaikoJiro v1.91
Supported by: TaikoJiro 2, TJAPlayer2 for.PC
Pre-#START position: required;
allowed (Supported by: OpenTaiko (0auBSQ) v0.6.0)
Scope: per–player-side (or branch)
Scope fineness: per–player-side (or non-before)
Effect time: static
Effect target: notes, bar lines
Effect branches: Unspecified
Use a scrolling mode similar to the scrolling method used in either BEMANI-series or the official Taiko (“normal”) game series for the non-before notes and bar lines, unless overridden by user settings.
#BMSCROLL
#SCROLL
command is ignored.#HBSCROLL
#BMSCROLL
(“BEMANI-like”), but the #SCROLL
command (“(per-note) HiSpeed”) is not ignored and is effective.#NMSCROLL
Scrolling mode comparison: Consider BPM changes occur during notes and bar lines traveling through the whole note field (including the part past the judgment mark).
scroll
is the scrolling rate multiplier specified by the in-effect #SCROLL
command (if any) or HEADSCROLL:
header.
1
when either BMScroll or REGUL-SPEED (TaikoJiro) is used.modifier
is the scrolling rate multiplier specified by the speed modifier options.bpm_displayed
is the effective BPM used by IGS-like scroll modes.
Scrolling mode | Taiko-like | BEMANI-like XMod |
IGS-like CMod |
---|---|---|---|
Command or TaikoJiro setting | (Default) #NMSCROLL |
#BMSCROLL #HBSCROLL User option |
User option: REGUL-SPEED |
Position Formula | px_per_beat × (bpm_at_note ÷ 60 (s/min)) × (second_time_of_note − second_time_played ) × scroll × modifier |
px_per_beat × (visual_beat_of_note − visual_beat_played ) × scroll × modifier |
px_per_beat × (bpm_displayed ÷ 60 (s/min)) × (second_time_of_note − second_time_played ) × scroll × modifier |
Primary Speed Factor | bpm_at_note |
bpm_visual (0 during effective positive delays) (Infinity during visual beat jumps) |
bpm_displayed |
Constant Factor on BPM Changes | Notes’ and bar lines’ individual drawn velocity | Ratios of notes’ and bar lines’ drawn distance to their beat distance | Ratios of drawn distances between Notes’ and bar lines’ |
Default scrolling changes of #BPMCHANGE command |
Set the per-note or per–bar-line base BPM of non-preceding notes and bar lines | Suddenly change the apparent base BPM of all notes & all bar lines | (No changes) |
Default scrolling changes of #DELAY command |
(No changes) | Pause the scrolling if positive and effective; (no changes) if negative |
(No changes) |
Mode-invariant velocity-changing command | #SCROLL <value> |
#HISPEED(<value>) (TMG format) |
(Proposal (IID)) #SPEED <value>; *:*; <changing-duration> |
Analogous Timing Segment in SSC Format | (None) | #SCROLLS:; |
#SPEEDS:; |
In OutFox, the Taiko-like scrolling mode can be achieved by using CAMod (AMod/”Average BPM Scroll Mode” with constant per-note or per–bar-line scrolling speed) with the BPM parameter set to 4 × the average BPM of the notechart.
See Sign of Timing Commands for the behavior of timing commands with different sign of values.
Proposal (IID): See Proposal (IID): Command Modifier for the syntax for mode-invariant commands.
scroll
to 1, but the BMScroll mode entered by specifying the #BMSCROLL
command behaviors the same as the HBScroll mode.#SCROLL 1
applied if the BMScroll entered by F3 is used). Such objects keep a constant velocity even when #BPMCHANGE
commands are used in BMS scrolling modes, except that such objects stop moving during an in-effect positive delay.
#BPMCHANGE
command during gameplay.
#PAPAMAMA
OpenTaiko-OutFox standard version: (non-standard, but seen in official games)
Impact level: note ★★★★★
First seen in: TJAPlayer3-f v1.7.2.0
Pre-#START position: required
Scope: per–player-side
Scope fineness: per–player-side
Effect target: notes
Effect branches: Unspecified
Use the パパママサポート “Parent Support Mode”/Helping Hand Mode gameplay rules from the official arcade games for certain song in the 簡単/かんたん Easy difficulty, where the amount of players is fixed to 1 and the inputs from all players are combined to play the song.
Reference: https://taiko.namco-ch.net/taiko/en/howto/papamama.php#papamama
Unspecified: The behavior when the amount of player-sides specified by the STYLE:
header is not 1.
#END
OpenTaiko-OutFox standard version: 1.0 (except proposed forms)
Impact level: note ★★★★★
First seen in: TaikoJiro v0.80 (initial release)
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Pre-#START position: forbidden (enclosing the notechart definition)
Scope: per–player-side (or notechart)
Scope fineness: per–player-side (or non-before)
Effect time: static notechart definition + command-time show ending animation (for #END
in some simulators)
Non-static effect scope: all
Effect target: notes, bar lines, notefield(s), gameplay screen
Effect branches: all
Inspired by: TJF format
Respectively start / end the region of notechart definition.
#START
STYLE:
header is ignored or this header specifies the amount of player-sides to be 1.#START <enum-str-player-side>
<enum-str-player-side>
, which can be one of:
P1
/ p1
— for the 1st player-side (1P).P2
/ p2
— for the 2nd player-side (2P) if the amount of player-sides specified by the STYLE:
header ≥ 2.<enum-str-player-side>
is used.
<enum-str-player-side>
is treated as if the 0-argument #START
were used.#START P<positive-int-player-side>
<positive-int-player-side>
-th player-side if the amount of player-sides specified by the STYLE:
header ≥ <positive-int-player-side>
.#END
Unspecified: The behavior when any of the followings are violated when defining each difficulty:
#START
#START <enum-str-player-side>
or proposed (IID) P<positive-int-player-side>
.Set of STYLE:1 definitions |
STYLE:2 P1 & P2 defined |
Chosen STYLE:1 1P |
Chosen STYLE:2 1P |
Chosen STYLE:2 2P |
---|---|---|---|---|
Is P2 (s) |
Yes & Yes | Empty Or (crash) when quit from the gameplay after switching from STYLE:2 in the gameplay screen |
Earliest defined STYLE:2 P1 |
Earliest defined STYLE:2 P2 |
Otherwise | Yes & Yes | Earliest defined non-P2 STYLE:1 (if any) Or empty |
Earliest defined STYLE:2 P1 |
Earliest defined STYLE:2 P2 |
Contains P2 (s) |
Yes & No | Earliest defined non-P2 STYLE:1 (if any) Or empty |
(Crash) | (Crash) |
Otherwise | Yes & No | Earliest defined non-P2 STYLE:1 (if any) Or empty |
Earliest defined STYLE:2 P1 |
Any earliest defined |
Contains P1 (s) |
No & Yes | Earliest defined non-P2 STYLE:1 |
Empty | Earliest defined STYLE:2 P2 |
Otherwise | No & Yes | Any earliest defined | Any earliest defined | Earliest defined STYLE:2 P2 |
(Empty) | No & No | Empty | (Crash) | (Crash) |
Contains P1 (s) & P2 (s) |
No & No | Earliest defined non-P2 STYLE:1 |
(Crash) | (Crash) |
Otherwise, contains P1 (s) |
No & No | Earliest defined non-P2 STYLE:1 |
Empty | Any earliest defined |
Otherwise, contains P2 (s) |
No & No | Any earliest defined | (Crash) | (Crash) |
Otherwise (is 0-argument #START (s)) |
No & No | Any earliest defined | Any earliest defined | Any earliest defined |
OpenTaiko-OutFox standard version: 1.0 (positive value)
1.1 (non-zero real value, and resulting time of measure division interval is non-negative or normal Taiko scrolling mode is used)
2.0 (non-zero real value) (?; to be discussed)
Impact level: timing ★★★★・
First seen in: TaikoJiro v0.80 (initial release)
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope: branch
Scope fineness: non-before
Effect time: static objects’ distance + command-time objects’ velocity
Non-static effect scope: all (BMS scrolling modes); (none) (otherwise)
Effect target: notes, bar lines
Effect branches: all
Inspired by: TJF format #BPMCHANGE <positive-int-bpm>
(likely) from DWI format #CHANGEBPM:<comma-separated-list-bpmchanges>;
, where each element is <number-beat-position>=<positive-number-bpm>
(?)
Change the BPM.
#BPMCHANGE <non-zero-float-bpm>
#MEASURE
command used in conjunction.
#BPMCHANGE 0
#BPMCHANGE 0
section have the scrolling behavior of 0 BPM but the time distance of positive infinity BPM. In TaikoJiro 1, the affected section also extends to the end of the notechart.BPM:
header.#BPMCHANGE
placed after the last comma before #END, if placed after a measure contains no #BRANCHSTART
commands, will make the whole chart behaviors as if the REGUL-SPEED scrolling mode is applied, except that the #SCROLL
command still take effects and the notes stop scrolling during effective positive delays in HBScroll or BMScroll mode.#BPMCHANGE
commands are placed within the same millisecond, only the last defined command has effects even if the #BPMCHANGE
commands are defined at different beat positions.BPM:
header or #BPMCHANGE
command may cause the affected notes to be spaced unevenly.OpenTaiko-OutFox standard version: 1.0 (resulting beats of measure is positive);
1.1 (resulting beats of measure is any non-zero real value, and resulting time of measure division interval is non-negative or normal Taiko scrolling mode is used);
2.0 (resulting beats of measure is any real value except division by 0) (?; to be discussed)
Impact level: timing ★★★★・
First seen in: TaikoJiro
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope: branch
Scope fineness: measure
Effect time: static
Effect target: notes, bar lines
Effect branches: Unspecified (with Unspecified behaviors)
Change the time signature / meter signature / measure signature.
Replaced the TJF command #ONESYOSETU
(adjust the duration of this one 小節 “measure” to fit all note symbols on the following line if placed after the previous measure (if any) and before the first note symbol (if any) of this measure in the notechart definition).
#MEASURE <number-upper-numeral>/<positive-number-lower-numeral>
Formula: Amount of beats = 4 ×
upper
/lower
#MEASURE <number-upper-numeral>/<non-positive-lower-numeral>
<non-positive-lower-numeral>
being 0, may cause crashes in some existing simulators).<non-positive-lower-numeral>
+ 4294967296 (2³²).#MEASURE 4/4
/
<number-lower-numeral>
is parsed as an integer, decimal places are thus ignored, and non-positive values are treated as the value plus 4294967296 (2³²).<number-upper-numeral>
being 0 fails to set measures’ timing spacing, but still sets the time duration of measure divisions in each measure to 0. Zero-duration measures can be alternatively constructed using a large <number-upper-numeral>
value due to the limited timing precision.#MEASURE
in a measure applies to the whole measure regardless of where it is defined.#MEASURE
s defined in a branch definition are partially reverted (only affects measure divisions in the measure) after a #BRANCHEND
or another #BRANCHSTART
command. Not explicit defining #MEASURE
after the branch definition section causes unintended behaviors. See the #N
/ #E
/ #M
commands for details.OpenTaiko-OutFox standard version: 1.0
Impact level: timing ★★★★・
First seen in: TaikoJiro v1.60
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC)
Scope: branch
Scope fineness: sequential
Effect time: static objects’ timing + command-time freeze scrolling
Non-static effect scope: all (BMS scrolling modes, positive value); (none) (otherwise)
Effect target: notes, bar lines
Effect branches: Unspecified (with Unspecified behaviors)
Adjust (delay) the time position of all notechart object (including commands) non-preceding the #DELAY
command by the specified time duration.
The decorative visual/audio effects are unspecified.
For the timing of notechart object, multiple #DELAY
commands placed at the same beat position act as a single #DELAY
with the value of the sum of their duration, even when negative delay durations are used.
Unspecified: The visual note positioning behavior in BMS scrolling modes when note objects are placed into the time interval of positive delays.
#DELAY <non-zero-float-seconds-delay-duration>
#DELAY 0
#GOGOSTART
/ #GOGOEND
OpenTaiko-OutFox standard version: 1.0
Impact level: scoring ★★★・・
First seen in: TaikoJiro
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope: branch
Scope fineness: sequential
Effect time: static per-note scoring + command-time visual
Non-static effect scope: notes: (none), gameplay screen: all
Effect target: notes, gameplay screen
Effect branches: current
Respectively start / end a ゴーゴータイム Go-Go Time section if not already respectively started / ended.
Unspecified: The behavior if #GOGOSTART
occurs when a Go-Go Time section has already started.
For playing the Go-Go Time entering effects during an existing Go-Go Time section, a pair of #GOGOEND
and #GOGOSTART
can be placed together.
#DUMMYSTART
/ #DUMMYEND
OpenTaiko-OutFox standard version: (non-standard)
Impact level: note ★★★★★
First seen in: TaikoManyGimmicks
Scope: branch
Scope fineness: sequential
Effect time: static
Effect target: notes
Effect branches: current
Respectively start / end a fake/dummy section if not already respectively started / ended.
OpenTaiko-OutFox standard version: 1.0 (minimum, except TMG forms, see each form)
Impact level: gimmicky ★★・・・
First seen in: TaikoJiro
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC, OutFox v0.4.9.9)
Scope: branch
Scope fineness: non-before
Effect time: static
Effect target: notes, bar lines
Effect branches: current
Change the scrolling speed of notes & bar lines, relative to the normal scrolling velocity and direction.
Unspecified: Whether the notes & the bar lines are rotated around their center accordingly when a complex number value is used.
For specifying the same initial scrolling speed for multiple player-sides or difficulties, the HEADSCROLL:
header can be used instead.
Reset by #RESETCOMMAND
.
#SCROLL <positive-float-scroll-speed-x>
#SCROLL <negative-float-scroll-speed-x>
#SCROLL <non-zero-complex-ri-float-scroll-speed-xy>
<complex-ri-float-scroll-speed-xy>
specifies the vertical scrolling speed from the top to the bottom of the screen (↓). The unit is the same as <float-scroll-speed-x>
.#SCROLL(<float-scroll-speed-x>, <float-scroll-speed-y>)
<float-scroll-speed-y>
specifies the vertical scrolling speed from the top to the bottom of the screen (↓). The unit is the same as <float-scroll-speed-x>
.#SCROLL 0
#SCROLL <float-scroll-speed>, <number-rotation-lower>, <number-rotation-upper>
<float-scroll-speed>
rotated <number-degrees-upper>/<number-degrees-lower>
turns counterclockwise (↺).
<number-rotation-upper>
depends on the <number-rotation-lower>
, e.g.:
<number-rotation-lower>
is 1.<number-rotation-lower>
is 360.<number-rotation-lower>
is 400.Formula:
scroll_speed_x
=scroll_speed
× cos(2π ×rotation_upper
÷rotation_lower
)
Formula:
scroll_speed_y
=scroll_speed
× sin(2π ×rotation_upper
÷rotation_lower
)
#SCROLL 1
/ #SCROLL 1+0i
/ (TaikoManyGimmicks) #SCROLL 1, 180, 0
#SCROLL
commands are placed within the same millisecond, only the last defined command has effects even if the #SCROLL
commands are defined at different beat positions.#BRANCHSTART
commands, #SCROLL
will have measure-based–scope (specifically, the last defined #SCROLL
in a measure applies at the definition position of the first defined #SCROLL
in the measure and onward), so splitting the measures using #MEASURE
& #BARLINEOFF
is needed to make multiple #SCROLL
s visually work in the same measure for branched charts.<complex-ri-float-scroll-speed-xy>
specifies the vertical scrolling speed from the bottom to the top of the screen (↑) instead.<complex-ri-float-scroll-speed-xy>
makes bar lines rotate around their center. However, it is misinterpreted as the amount of rotation and the unit is 90 degrees (°) clockwise (↻), see:
#ANGLE
command introduced in TaikoManyGimmicks can achieve such effects without depending on the unspecified behavior.<complex-ri-float-scroll-speed-xy>
, see the explanation of compatibility issues in Value Type.#BARLINESCROLL
OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: taiko-web (plugin “Custom Barlines”)
Scope: branch
Scope fineness: non-before
Effect time: static
Effect target: bar lines
Effect branches: current (?)
Change the scrolling speed of only bar lines, relative to the normal scrolling velocity and direction and prevent this speed from being overridden by further #SCROLL
.
#BARLINESCROLL <non-negative-float-scroll-speed-x>
#BARLINESCROLL Off
/ #BARLINESCROLL off
/ #BARLINESCROLL
#SCROLL
.OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: TaikoManyGimmicks v0.6.1α
Scope: branch
Scope fineness: non-before
Effect time: static objects’ distance + command-time objects’ velocity
Non-static effect scope: all (BMS scrolling modes); (none) (otherwise)
Effect target: notes, bar lines
Effect branches: all (?)
Suddenly change the scrolling speed (HiSpeed / high-speed) of notes & bar lines in BMS scrolling modes, as if the BPM were changed accordingly.
Reset by #RESETCOMMAND
.
#HISPEED(<float-scroll-speed-x>)
<float-scroll-speed-x>
× BPM.OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: notes, bar lines
Effect branches: current
Inspired by: SSC format #SPEEDS:<comma-separated-list-speed-changes>;
, where each element is <float-beat-position>=<float-base-speed>=<float-beat-or-second-approach-length>=<enum-int-bool-use-second-length>
Suddenly change the base scrolling speed of notes & bar lines. In other words, suddenly change the normal scrolling velocity and direction.
Targeted notes & bar lines have their distance and/or direction to the visual judgment position scaled and/or rotated. The <approach-specifier>
from the proposal (IID) Command Modifier is intended to be used in conjunction.
If the notes & the bar lines are rotated around their center accordingly when a #SCROLL
command with complex number value is used, they are also rotated accordingly when a #SPEED
command with complex number value is used.
#SPEED <float-base-speed-x>
#SPEED <complex-ri-float-base-speed-xy>
<complex-ri-float-base-speed-xy>
specifies the vertical normal scrolling speed from the top to the bottom of the screen (↓). The unit is the same as <float-base-speed-x>
.#SPEED <float-base-speed>, <number-pixel-rotation-center-x>, <float-degrees-angle>
<float-base-speed>
and the normal scrolling direction to <float-degrees-angle>
degrees (°) counterclockwise (↺) centered around the position <number-pixel-rotation-center-x>
from the visual judgment position.#SPEED 1
/ #SPEED 1+0i
/ #SPEED 1, 0, 0
OpenTaiko-OutFox standard version: 1.1 (except proposed forms)
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer2 for.PC
Scope: branch
Scope fineness: non-before
Effect time: static
Effect target: notes, bar lines
Effect branches: Unspecified
Change the scrolling direction of notes & bar lines.
Unspecified: Whether the notes & the bar lines are rotated around their center accordingly.
Unspecified: The behavior when a #SCROLL
command with complex value is active.
Proposal (IID): The direction is relative to the scrolling direction specified by the #SCROLL
command.
#DIRECTION <enum-int-direction>
<enum-int-direction>
specifies the degrees (°) of the counterclockwise (↺) rotation and can be one of:
Rotation (degrees CCW) | Scrolling direction under #SCROLL 1 |
|
---|---|---|
0 |
0° ↺/↻ (no changes) | ← |
1 |
270° ↺ (≡ 90° ↻) | ↑ |
2 |
90° ↺ | ↓ |
3 |
315° ↺ (≡ 45° ↻) | ↖ |
4 |
45° ↺ | ↙ |
5 |
180° ↺ (≡ 180° ↻) | → |
6 |
225° ↺ (≡ 135° ↻) | ↗ |
7 |
135° ↺ | ↘ |
#DIRECTION <number-degrees>deg
<number-degrees-rotation>
specifies the degrees (°) of the counterclockwise (↺) rotation.<enum-int-direction>
specifies the degrees (°) of the clockwise (↻) rotation instead due to the positive vertical scroll direction being inverted as from the bottom to the top of the screen (↑).#BARLINEOFF
/ #BARLINEON
OpenTaiko-OutFox standard version: 1.0
Impact level: gimmicky ★★・・・
First seen in: TaikoJiro v2.69
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC)
Scope: branch
Scope fineness: non-before
Effect time: static
Effect target: bar lines
Effect branches: Unspecified (?)
Respectively disable (“turn off”) / enable (“turn on”) the display of all bar lines (including the special yellow bar lines indicating the beginning of a 譜面分岐 “notechart branch“/forked path section) from the definition position and on.
#BARLINE
OpenTaiko-OutFox standard version: 1.2
Impact level: gimmicky ★★・・・
First seen in: taiko-web (plugin “Custom Barlines”)
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope: branch, instant one-shot
Scope fineness: sequential
Effect time: static
Effect target: bar lines
Effect branches: current
Insert a fake/dummy normal bar line displayed at the head of the current beat position.
OpenTaiko-OutFox standard version: 1.1 (except TMG forms)
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer2 for.PC
Supported by: TaikoManyGimmicks v0.6α
Scope: branch
Scope fineness: sequential
Effect time: command-time
Non-static effect scope: all
Effect target: notes, bar lines, judgment mark, note field
Effect branches: Unspecified
Move (“scroll”) the position of the judgment circle from the current position.
Unspecified: The behavior when another #JPOSSCROLL
command is placed within the moving duration interval of the current #JPOSSCROLL
command.
Reset by #RESETCOMMAND
.
The arguments are whitespace-separated.
#JPOSSCROLL <approach-duration-specifier> <distance-specifier> <direction-specifier>
#JPOSSCROLL(<approach-duration-specifier>, <number-pixel-distance-x>)
#JPOSSCROLL(<approach-duration-specifier>, <number-pixel-distance-x>, <number-pixel-distance-y>)
<approach-duration-specifier>
can be one of:
<positive-float-seconds-approach-duration>
<distance-specifier>
can be one of:
<number-pixel-distance-x>
<complex-ri-number-pixel-distance-xy>
<complex-ri-number-pixel-distance-xy>
specifies the vertical movement toward the top of the screen (↑).<number-distance-x-upper>/<number-distance-x-lower>
<number-distance-x-upper>/<number-distance-x-lower>
of the default note field width.default
<direction-specifier>
.<direction-specifier>
can be one of:
0
<pixel-distance-specifier>
were the argument of the #SCROLL
command when the BPM is positive.1
<direction-specifier>
is 0
.<complex-ri-number-pixel-distance-xy>
specifies the vertical movement toward the bottom of the screen (↓) instead.<complex-ri-float-scroll-speed-xy>
, see the explanation of compatibility issues in Value Type.OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: TaikoManyGimmicks
Scope: branch
Scope fineness: non-before
Effect time: static
Effect target: notes, bar lines
Effect branches: Unspecified (?)
Specify the per–note/bar line visual judgment point to be offset (“delay”) from the judgment mark.
Reset by #RESETCOMMAND
.
The arguments are whitespace-separated.
#JUDGEDELAY 0
#JUDGEDELAY 1 <float-seconds-duration>
/ #JUDGEDELAY(Sec, <float-seconds-duration>)
<float-seconds-duration>
before the judgment mark.#JUDGEDELAY 2 <float-pixel-position-x> <float-pixel-position-y>
/ #JUDGEDELAY(Pos, <float-pixel-position-x>, <float-pixel-position-y>)
#JUDGEDELAY 3 <float-seconds-duration> <float-pixel-position-x> <float-pixel-position-y>
/ #JUDGEDELAY(Sec_Pos, <float-seconds-duration, <float-pixel-position-x>, <float-pixel-position-y>)
<float-seconds-duration>
before the given position relative to the judgment mark.OpenTaiko-OutFox standard version: 1.1 (except proposed forms)
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer2 for.PC
Supported by: TaikoManyGimmicks v0.6α
Scope: branch
Scope fineness: non-before
Effect time: static-enabled object-time
Non-static effect scope: non-before
Effect target: notes
Effect branches: Unspecified
Specify non-preceding notes and their 口唱歌 “Note phoneticization” to respectively appear and move suddenly / disappear (“hidden”) and stop moving suddenly for once as they move through the notefield.
Reset by #RESETCOMMAND
.
Unspecified (?): The behavior when both #NOTESPAWN
command(s) and the #SUDDEN
and/or (proposal (IID)) #HIDDEN
command(s) are in effect.
#NOTESPAWN
command(s) are applied first, and the disappear effect and moving-stop effect of #SUDDEN
and (proposal (IID)) #HIDDEN
command(s) are then applied.The arguments are whitespace-separated.
#SUDDEN <float-seconds-appear-duration> <float-seconds-moving-duration>
#SUDDEN <float-seconds-appear-duration> <float-seconds-moving-duration> <enum-str-affected-type>
#HIDDEN <float-seconds-disappear-duration> <float-seconds-stopping-duration>
#SUDDEN
command, a note never appears.#SUDDEN
, a note never moves.#HIDDEN <float-seconds-disappear-duration> <float-seconds-stopping-duration> <enum-str-affected-type>
#SUDDEN 0 0
& (Proposal (IID)) #HIDDEN 0 0
<float-seconds-*-duration>
specifies the time durations before the time point of judgment of each note is reached; if its absolute value equals to 0
, the time duration is positive infinity (+∞) for the #SUDDEN
command and is negative infinity (−∞) for the #HIDDEN
command.
Proposal (IID): <enum-str-afftect-type>
can be one of:
n
/ Doron
— Affect only the notes, as in the ドロン “note-wise stealth” game modifier.t
— Affect only the “note phoneticization” (“the texts on the lower note field”).nt
/ Stealth
– Affect both the note & the “note phoneticization” (“text”) (“(true) stealth”).b
— Affect only the bar lines.nb
— Affect both the note & the bar lines.ntb
/ All
— Affect all notechart objects.<float-seconds-*-duration>
has the precision of 0.001
(1 ms), and any value < 0.001
is treated as 0
(positive infinity for #SUDDEN
).#START
command. (?)OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: TaikoManyGimmicks
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: non-before
Effect target: notes
Effect branches: current (?)
Specify non-preceding notes and their 口唱歌 “Note phoneticization” to respectively appear / disappear (“hidden”) suddenly when the specified time point before the command is reached.
If multiple #NOTESPAWN
commands are placed at the same measure position, the first #NOTESPAWN
resets the previous #NOTESPAWN
effects to the default, and then all the appear and disappear points specified by the #NOTESPAWN
s at the same measure position are set simultaneously for non-preceding notes.
Reset by #RESETCOMMAND
.
Unspecified (?): The behavior when both #NOTESPAWN
command(s) and #SUDDEN
and/or (proposal (IID)) #HIDDEN
command(s) are in effect.
#NOTESPAWN
command(s) are applied first, and the disappear effect and moving-stop effect of #SUDDEN
and (proposal (IID)) #HIDDEN
commands are then applied.The arguments are whitespace-separated.
#NOTESPAWN 0
#NOTESPANW
with an invalid first argument.#NOTESPAWN 1 <float-seconds-appear-duration>
/ #NOTESPAWN(Spawn, <float-seconds-appear-duration>)
#NOTESPAWN
, an implicit disappear point at positive infinity seconds before the command is reached is also set.#NOTESPAWN 2 <float-seconds-disappear-duration>
/ #NOTESPAWN(Vanish, <float-seconds-disappear-duration>)
<float-seconds-*-duration>
specifies the time durations before the time point of the command is reached.
#ENABLEDORON
/ #DISABLEDORON
OpenTaiko-OutFox standard version: 2.0
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer3-Extended
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: notes
Effect branches: Unspecified
Respectively enable / disable the ドロン “note-wise stealth” game modifier. The 口唱歌 “Note phoneticization” is not hidden by this game modifier.
OpenTaiko-OutFox standard version: 1.0
Impact level: decorative ・・・・・
First seen in: TJAPlayer2 for.PC
Supported by: taiko-web ver.20.03.31, TaikoManyGimmicks v0.6α
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: gameplay screen
Effect branches: Unspecified
Display the specified lyric.
Unspecified: Whether #LYRIC
commands are ignored if the lyric file specified by the LYRICS:
or LYRICFILE:
header is used.
#LYRIC <str-lyric>
\n
in <str-lyric>
is displayed as a newline.Unspecified: The behavior when #LYRIC
commands are not consistent among any of the following:
#LYRIC
command from any branch takes effects regardless of the current branch.#LYRIC
commands, a difficulty (?) with #LYRIC
commands (if exist) is taken for the lyrics.<str-lyric>
terminators the loaded lyric.OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer3 v1.4.0
Scope: branch, note one-shot
Scope fineness: non-before
Effect time: static
Effect target: notes
Effect branches: Unspecified
Override (“change”) the automatically assigned 口唱歌 “Note phoneticization” (“sound effect of a note” or “発声 vocalization of a note” (?)) of the nearest note(s) placed non-before the command.
Similar to the #NOTESCHANGE
command, but with a different range of argument.
#SENOTECHANGE <enum-int-note-phoneticization>
GAME:Taiko
, <enum-int-note-phoneticization>
can be one of:
Note phoneticization | Designed for what note symbol | |
---|---|---|
1 |
ドン Don | 1 |
2 |
ド Do | 1 |
3 |
コ (Do) | 1 |
4 |
カッ Ka | 2 |
5 |
カ (Ka) | 2 |
6 |
ドン(大) DON | 3 |
7 |
カッ(大) KA | 4 |
8 |
連打 Roll | note head of 5 |
9 |
ー – | bar body of 5 & 6 |
10 |
ーっ!! –!! | note end of 5 & 6 |
11 |
連打(大) ROLL | note head of 6 |
12 |
ふ うせん Balloon | 7 |
<enum-int-note-phoneticization>
not designed for the applied note is used.#SENOTECHANGE <enum-str-note-phoneticization>
<enum-str-note-phoneticization>
can be one of:
D
— the default, use the automatically assigned note phoneticization.L
— long:
1
and カッ Ka for note symbol 2
1
, ポン for 2
, and チャン for 4
.D
.F
— final:
1
, ポッ for 2
, and チャッ for 4
.L
.S
— short:
1
and カ (Ka) Ka for note symbol 2
1
, ポ for 2
, and チャ for 4
.D
.A
— alternate:
1
S
.#SENOTECHANGE <comma-separated-list-enum-note-phoneticization>
<comma-separated-list-enum-note-phoneticization>
are valid <enum-int-note-phoneticization>
or <enum-str-note-phoneticization>
and are iterated and applied to multiple notes in their definition order.In the official games, the note phoneticization is assigned per-note and does not follow a definite pattern, especially in earlier games.
The general pattern in recent Taiko games seems to be:
x
& y
(d_<x>_to_<y>
below) is used for determining the note phoneticization and is defined as scroll
× beat_duration_<x>_to_<y>
.d_this_to_next_note
> 1/8th, the end of a chain before a pause.d_this_to_next_note
≥ 4.0 / 3 × d_this_to_previous_note
, the end of a chain before a short pause or a sparser chain.d_next_to_2nd_next_note
≤ 2.0 / 3 × d_this_to_next_note
, the end of a chain before a denser chain.d_this_to_previous_note
< 1/16th, to avoid the texts from overlapping.d_this_to_next_note
< 1/8th, with scroll
upper-limited to 1.0 for calculation, to avoid the text for a note from being extended below the next note.However, in the official Konga games, the general pattern is less consistent and “chain-final” is defined less strictly:
OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: C-Taiko
Scope: branch, note one-shot (?)
Scope fineness: non-before
Effect time: static
Effect target: notes
Effect branches: current (?)
Override (“change”) the automatically assigned 口唱歌 “Note phoneticization” (“sound effect of a note” or “発声 vocalization of a note” (?)) of the nearest note(s) (?) placed non-before the command.
Similar to the #SENOTECHANGE
command, but with a different range of argument.
#NOTESCHANGE <enum-int-note-phoneticization>
GAME:Taiko
, <enum-int-note-phoneticization>
can be one of:
Note phoneticization | Designed for what note symbol | |
---|---|---|
0 |
ドン Don | 1 |
1 |
ド Do | 1 |
2 |
コ (Do) | 1 |
3 |
カッ Ka | 2 |
4 |
カ (Ka) | 2 |
<enum-int-note-phoneticization>
not designed for the applied note is used.#NOTESCHANGE -1
OpenTaiko-OutFox standard version: (non-standard)
Impact level: note ★★★★★
Scope: branch, note one-shot
Scope fineness: non-before
Effect time: static
Effect target: balloon-type notes
Effect branches: current
Basically the same as the BALLOON:
header, except that the #BALLOON
command only applies to non-preceding notes in the note definition.
Override the assigned hit amount specified by the one of the BALLOON headers if applies to an already assigned balloon-type note.
#BALLOON <comma-separated-list-non-negative-int-amount-of-hits>
The semantics are otherwise the same as the BALLOON headers.
#PARTNERNOTE
OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★
Scope: branch, note one-shot
Scope fineness: non-before
Effect time: static
Effect target: notes
Effect branches: current
Specify the next note to be hand-holding (“partner”), like note symbols A
and B
.
proposal (IID): A hand-holding bomb/mine gives extra gauge penalty if all players hit the hand-held notes within a certain time duration.
Unspecified: Whether an originally non–hand-holding note with #PARTNERNOTE
applied awards extra score bonus (except in PC-generation scoring) on successful hand-holding judgement.
If the next note is already a hand-holding note or (proposal (IID)) is not a hit-type note, the command has no effects.
Proposal (IID): If the hand-holding note has no hand-holding notes to hand-hold at any of the other player-sides, it becomes a non–hand-holding note, regardless of whether it is specified to be hand-holding by the note symbol or the #PARTNERNOTE
command.
Unspecified: In Taiko mode, whether big notes 3
and 4
with #PARTNERNOTE
applied are equivalent to the hand-holding notes A
& B
.
Can be conditionally enabled or disabled by the (proposal (Komi)) #COMMANDIF
or (proposal (IID)) #COMMANDIFF
command.
OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★
Scope: branch, note one-shot
Scope fineness: non-before
Effect time: static
Effect target: notes
Effect branches: current
Specify the next note to be giant, as in the official Wii games. A giant notes receive input and reward points the same as a regular note, but sets certain specified (proposal (Komi)) triggers to true based on its received judgement.
Proposal (IID): If the next note is already a giant note or is not a hit-type note, the command has no effects. If the next note is a big note, it is converted to a regular note and then becomes a giant note.
Can be conditionally enabled or disabled by the (proposal (Komi)) #COMMANDIF
or (proposal (IID)) #COMMANDIFF
command.
#GIANTNOTE <str-local-value-trigger-written-on-ok>, <str-local-value-trigger-written-on-great>, <enum-str-bool-great-activates-ok>
<str-local-value-trigger-written-on-ok>
specifies the local trigger to set to true when the giant note receives 可 GOOD/OK judgement.<str-local-value-trigger-written-on-great>
specifies the local trigger to set to true when the giant note receives 良 GREAT/GOOD judgement.<enum-str-bool-great-activates-ok>
defaults to False
and specifies whether the trigger specified by <str-local-value-trigger-written-on-ok>
is also set to true when the giant note receives 良 GREAT/GOOD judgement. If given, it can be one of:
False
— the default; <str-local-value-trigger-written-on-ok>
will be untouched on 良 GREAT/GOOD judgement.True
— <str-local-value-trigger-written-on-ok>
will be set to true on 良 GREAT/GOOD judgement.OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★
Scope: branch, note one-shot
Scope fineness: non-before
Effect time: static
Effect target: notes
Effect branches: current
Conditionally (“if”) enable the next note.
Proposal (IID): If the next note is not a hit-type note, the command has no effects.
#NOTEIF <str-local-trigger-read-enable>, <enum-str-bool-glow-effect>
#NOTEIFF <str-local-formula-trigger-read-enable>, <enum-str-bool-glow-effect>
<str-local-*-trigger-read-enable>
is true, the note is enabled, i.e., displays and receives input. 0
.<enum-str-bool-glow-effect>
defaults to False
and specifies whether the note has the glow effect like the notes added after hitting giant notes in the official Wii games. False
— the default; the note appears as if the #NOTEIF
or (proposal (IID)) #NOTEIFF
command were not applied if the note is enabled.True
— the note has the glow effect if enabled. Intended to be used in conjunction with the (proposal (Komi)) #GIANTNOTE
command.OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★ (maximum, depends on the usage)
Scope: branch, command one-shot
Scope fineness: sequential
Effect time: static
Effect target: notes
Effect branches: current
Conditionally (“if”) enable the next command.
Proposal (IID): If the next command is a #COMMANDIF
or #COMMANDIFF
command, is not a supported command, or is placed after any note symbols, the current #COMMANDIF
or #COMMANDIFF
command has no effects.
#COMMANDIF <str-local-value-trigger-read-enable>
#COMMANDIFF <str-local-formula-trigger-read-enable>
<str-local-*-trigger-read-enable>
is true, the next command is enabled, i.e., has its static-time effects (re-)applied immediately, and has its command-time effects fired when its command time is reached. Commands supporting the #COMMANDIF
and (proposal (IID)) #COMMANDIFF
command:
#PARTNERNOTE
command#GIANTNOTE
command#SONGJUMP
command#SECTION
OpenTaiko-OutFox standard version: 1.0 (except proposed forms)
Impact level: note ★★★★★
First seen in: TaikoJiro v1.63
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC)
Scope: branch, instant one-shot
Scope fineness: non-before
Effect time: static determine in-section objects + command-time switch sections
Non-static effect scope: last and current section (across branches)
Effect target: (none)
Effect branches: all
Start a 譜面分岐 “notechart branch”/forked path–determining section by resetting the value of the conditions for determining the next not-yet-determined “branch(es)”/path(s) at the beginning of the section. See the explanation for the #BRANCHSTART
command.
When the #SECTION
command & a “branch”/path–determining point occur at the same beat position, the effect of the #SECTION
command should take place after the “notechart branch”/forked path is determined.
The effects of #SECTION
applie regardless the current branch and on which branch the command is defined.
An implicit #SECTION
is placed at the beginning of every notechart definition.
The value of the condition for determining the “branch”/path by score (the s
condition) is not reset.
#SECTION
command and a “branch”/path–determining point is indeterminate when they occur at the same beat position.#LEVELHOLD
OpenTaiko-OutFox standard version: 1.0
Impact level: note ★★★★★
First seen in: TaikoJiro v1.63
Supported by: TaikoJiro 2, TJAPlayer2 for.PC
Scope: branch
Scope fineness: measure
Effect time: static
Effect target: (none)
Effect branches: current (only the routes reaching the command)
Override the result of all 譜面分岐 “notechart branch“/forked path (“level”) determination from the definition of this measure and on with the current branch/path (“hold”).
Proposal (IID): Its effects end at either the next another #LEVELHOLD
or a #LEVELREDIR command.
#LEVELHOLD
#LEVELREDIR <enum-str-branch-current>, <enum-str-branch-current>, <enum-str-branch-current>
, where <enum-str-branch-current>
represents the current “branch”/path.#LEVELHOLD
affects all branches and all routes.OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★
Scope: branch
Scope fineness: measure
Effect time: static
Effect target: (none)
Effect branches: current (only the routes reaching the command)
Override the result of all 譜面分岐 “notechart branch“/forked path (“level”) determination from the definition of this measure and on with specified branches/paths (redirect).
Its effects end at either the next #LEVELHOLD
or another #LEVELREDIR
command.
#LEVELREDIR <enum-str-branch-from-normal>, <enum-str-branch-from-expert>, <enum-str-branch-from-master>
<enum-str-branch-from-normal>
/ <enum-str-branch-from-expert>
/ <enum-str-branch-from-master>
when the default “branch”/path is determined to be respectively the 普通 Normal / 玄人 “Professional”/Advanced (“Expert”) / 達人 Master “branch”/path. See the explanation of the #BRANCHSTART
command.#LEVELREDIR N, E, M
The “branch”/path behavior of the おに Oni/Extreme difficulty of “聖徳たいこの「日いずるまで飛鳥」” can be achieved as:
// Measure 15 - 16
#BRANCHSTART r, 5, 6
#N
#LEVELHOLD
#M
#LEVELREDIR N, N, M
#BRANCHEND
#SECTION
// Measure 17 - 18
#BRANCHSTART r, 7, 8
#N
#LEVELHOLD
#M
#LEVELREDIR N, N, M
#BRANCHEND
#SECTION
// Measure 19 - 20
#BRANCHSTART r, 4, 5
#N
// Measure 21 - 25
#E
// Measure 21 - 25
#M
// Measure 21 - 25
#BRANCHSTART p, 101, 101
#BRANCHEND
// Measure 26 -
#BRANCHEND
OpenTaiko-OutFox standard version: 1.0 (except proposed forms; except d
condition)
Impact level: note ★★★★★
First seen in: TaikoJiro v1.63
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC)
Scope: notechart
Scope fineness: measure
Effect time: static objects’ measure position + command-time objects’ enabling status & visual
Non-static effect scope: notes, bar lines, & judgment mark(s): non-before, note field(s): non-before the previous measure (#BRANCHSTART
) or (none) (#BRANCHEND
)
Effect target: notes, bar lines, judgment mark(s), note field(s)
Effect branches: all
Respectively start / end the definition of a 譜面分岐 “notechart branch“/forked path section.
The determining point of this “branch”/path section is defaulted to be placed at the beginning of the previous measure from the #BRANCHSTART
command.
At the determining point, the “branch”/path–switching effects are played and the targeted branch is updated, but only the notes and bar lines whose definition position is non-before the actual beginning of the “branch”/path section have their pattern changed.
#BRANCHSTART <enum-str-condition>, <number-expert-branch-requirement>, <number-master-branch-requirement>
#BRANCHSTART lc:<str-local-value-counter-read-value>, <number-expert-branch-requirement>, <number-master-branch-requirement>
#BRANCHSTART lcf:<str-local-formula-counter-read-value>, <number-expert-branch-requirement>, <number-master-branch-requirement>
<str-local-*-counter-read-value>
is read at the branch determining point as the condition value.#BRANCHSTART lt, <str-local-value-trigger-read-expert-branch-condition>, <str-local-value-trigger-read-master-branch-condition>
#BRANCHSTART ltf, <str-local-formula-trigger-read-expert-branch-condition>, <str-local-formula-trigger-read-master-branch-condition>
<str-local-*-trigger-*-read-*-branch-condition>
is read at the branch determining point as a condition value, with the requirement value being 1 (true).#BRANCHSTART <comma-separated-list-branchstart-arguments>, <enum-str-range>
<comma-separated-list-branchstart-arguments>
is any argument form above without trailing commas.<enum-str-range>
specifies how the requirement is fulfilled, see Condition Judgement. It can be one of:
m
— more than or equal to (“≥”) the given requirementl
— less than (“<”) the given requirementlc:<str-local-value-counter-read-value>
, lcf:<str-local-formula-counter-read-value>
, lt
, & ltf
conditions, negating the value is preferred over specifying l
as <enum-str-range>
.#BRANCHSTART
#FROMNOR
, #FROMEXP
, & #FROMMAS
commands.#LEVELHOLD
and the (Proposal (IID)) #LEVELREDIR
commands are applied, see judging the target branch.#BRANCHEND
The possible conditions includes <enum-str-condition>
, lc:<str-local-value-counter-read-value>
, lcf:<str-local-value-counter-read-value>
, lt
, ltf
, & (none). Conditions other than <enum-str-condition>
are explained above.
<enum-str-condition>
specifies the condition value for determining the “branch”/path can be one of the following:
p
— percentage (%) of 精度 “precision/perfect rate”/accuracy of all missable notes.
Formula: min{100(%), (
<sect:jp>
+ 0.5 ×<sect:jg>
) / max{<sect:tn>
, 1} × 100(%)}
P
— percentage (%) of 精度 “precision/perfect rate”/accuracy of all missable big notes. Formula: min{100(%), (
<sect:jp>
+ 0.5 ×<sect:jg>
) / max{<sect:tn>
, 1} × 100(%)}
d
— (Proposal (IID)) Percentage (%) of “precision”/accuracy of all missable big (大) notes. (d
can be seen as a rotated p
) Formula (TJAPlayer3 (Akasoko-Master), intended):
<sect:JP>
Formula (Proposal (IID)): min{100(%), (
<sect:JP>
+ 0.5 ×<sect:JG>
) / max{<sect:TN>
, 1} × 100(%)}
pp
— percentage (%) of 良 GREAT/GOOD (“perfect”) of all missable notes. Formula: min{100(%),
<sect:jp>
/ max{<sect:tn>
, 1} × 100(%)}
PP
— percentage (%) of 良 GREAT/GOOD (“perfect”) of all missable big notes. Formula: min{100(%),
<sect:JP>
/ max{<sect:TN>
, 1} × 100(%)}
jb
— amount of 不可 BAD judgements. Formula:
<sect:jb>
JB
— amount of 不可 BAD judgements on big notes. Formula:
<sect:JB>
r
— amount of hits on bar drumroll notes.
r
(including all drumroll-type notes) used for the requirement of the EXAM
headers.Formula:
<sect:rt>
−<sect:rb>
R
— amount of hits on big bar drumroll notes.
r
(including all drumroll-type notes) used for the requirement of the EXAM
headers.Formula:
<sect:RT>
−<sect:RB>
rb
— amount of hits on balloon-type drumroll-type notes. Formula:
<sect:rb>
RB
— amount of hits on special (“big”) balloon-type drumroll-type notes (note symbol 9
). Formula:
<sect:RB>
s
— the current score points. Formula:
<s>
SCOREMODE:
header or the 真打 “true performance” option is enabled.The variables in the above formulae are (proposal (Komi)) pre-defined store expression variables. See there for the explanation about calculating the condition value regarding big notes.
For roll count conditions (r
, R
, rb
, & RB
), if a counted drumroll note is defined as beginning non-after but ending after the default beat position of the determining point, the actual determining point is postponed until the earlier of the definition positions of the ending of that note and an unspecified duration before the #BRANCHSTART
command:
The accumulated roll count calculated during the determining section is used.
If a roll count condition is replaced by a charter-defined variable condition (lc:<str-local-value-counter-read-value>
, lcf:<str-local-value-counter-read-value>
, lt
, ltf
), the actual determining point is not postponed.
For the score condition (s
), the final value at the determining point is used.
For other conditions, the percentage or amount calculated during the determining section is used.
Unspecified: The following behaviors regarding the actual hit timing:
s
), whether only notes whose tail (if exists) or critical judgement time is in the taken route are counted, or all judgements made in the taken route are counted.p
, P
, d
, pp
, & PP
), whether the note count variable is based on notes whose tail (if exists) or critical judgement time is in the taken route (as pre-defined store expression variable <t*:t>
), or based on the total amount of judgements (as pre-defined store expression variable <t*:j>
).For number conditions (<enum-str-condition>
, lc:<str-local-value-counter-read-value>
, & lcf:<str-local-value-counter-read-value>
), the condition value will be compared with the specified requirement value.
For Boolean conditions (lt
& ltf
), the condition values for Expert condition and Master condition will be compared with 1 (true).
If <enum-str-range>
is (empty) or m
, the requirement is fulfilled if the value is more than or equal to (“≥”) the given requirement (for a Boolean condition, when the value is 1 (true)).
If <enum-str-range>
is l
, the requirement is fulfilled if the value is less than (“<”) the given requirement (for a Boolean condition, when the value is 0 (false)).
#LEVELHOLD
and the (Proposal (IID)) #LEVELREDIR
commands affect the final determining result.They are conventionally used as follow:
#BRANCHSTART r,1,2 // Exemplar branch/path condition similar to the opening section of the "画竜点睛 (Garyoutensei)" series
#N
// 0 hits: "普通 (Futsuu)" Normal branch/path
// Normal branch/path section
#E
// 1 hit: "玄人 (Kurouto)"/Advanced branch/path
// Advanced branch/path section
#M
// 2+ hits: "達人 (Tatsujin)"/Master branch/path
// Master branch/path section
#BRANCHEND // Sometimes optional, see below
// Some commands or notechart section
#BRANCHSTART p,0,101 // Exemplar condition which forces the "玄人 (Kurouto)"/Advanced branch/path to be chosen
// ...
An implicit #BRANCHEND
is placed before #BRANCHSTART
and #END
commands. If no commands & notechart symbols occur after the explicit defined #BRANCHEND
and before such commands, the #BRANCHEND
can be omitted.
Unspecified: The behavior when any of the followings are violated:
,
should be placed before #BRANCHSTART
or #BRANCHEND
. However, commands except #DELAY
are allowed before them, and multiple #BRANCHSTART
and #BRANCHEND
can be placed.
#BRANCHSTART
with different branch condition should be placed in a measure.
Following are known special conditions (beyond r
& p
) used in official games.
Reference: 譜面分岐条件 (“Notechart branch conditions”). 太鼓の達人 譜面とか Wiki* (“Taiko no Tatsujin - Wiki* about Notecharts and so on”). https://wikiwiki.jp/taiko-fumen/収録曲/譜面分岐条件
s
can be used for simulating older official games (including AC6 and earlier games), but is also useful for simulating the “getting 不可 BAD on anything and hitting no rolls to take certain branch” condition in current official games.
Single condition:
#BRANCHSTART PP,42.8,100
— 3/7 × 100, 7/7 × 100(%)#SECTION
at measure 59, #BRANCHSTART lcf:f,50,90
at measure 63, with the store expression of f
being 100 * (<sect:JP:d> + <sect:JG:d> / 2) / <sect:TN>
— Strong/double-hit precision (not required after AC16, where #BRANCHSTART p,50,90
is enough)#SECTION
at measure 41, and the following #BRANCHSTART
command at measure 47:
#BRANCHSTART rb,38,38
#BRANCHSTART rb,46,46
#BRANCHSTART rb,60,60
#BRANCHSTART pp,76,76
— 60 / 78 × 100(%)#BRANCHSTART JB,1,1,l
#BRANCHSTART PP,100,100
— 24 / 24 × 100(%)#BRANCHSTART PP,100,100
— 96 / 96 × 100(%)#BPMCHANGE 300
1001001001001001,
#MEASURE 3/8
001001, // Measure 77 (0/8 to 3/8 of 7/8)
// Branch determining point for Measure 79
#MEASURE 4/4
#BARLINEOFF
00100100 // Measure 77 (3/8 to 7/8 of 7/8)
#BARLINE
#SCROLL 9
60000800, // Measure 78 (2/4) // The roll in the official game is 1/48th shorter than this notation
#SCROLL 1
#BARLINEON
#BRANCHSTART jb,1,1,l
// ... // Measure 79 and on
#BRANCHSTART p,101,101 // forced Normal branch
#BRANCHEND // Empty branch section
// ... // Measure 122 and on
#BRANCHSTART jb,1,1,l
#BRANCHSTART p,101,101
Compound condition:
#BARLINEOFF
// ...
#MEASURE 2/4
1068, // Measure 19 (0/4 to 2/4 of 6/4) // The roll in the official game is 1/48th shorter than this notation
#BPMCHANGE 220
#MEASURE 4/4
0333, // Measure 19 (2/4 to 6/4 of 6/4)
#MEASURE 0/4 // or 1/240000 (less than 1 ms)
#BRANCHSTART p,0.01,0.01 // Any non-BADs on missable notes to Master
#N
#LEVELHOLD
,
#M
,
#BRANCHEND
#BPMCHANGE 240
#MEASURE 8/4
#BARLINEON
#BRANCHSTART r,1,2
// ... // Measure 20 and on
#BRANCHSTART p,0.01,0.01
with #LEVELHOLD
in #N
+ #BRANCHSTART r,1,2
.#BRANCHSTART lcf:f,1,2
at measure 20 with the store expression of f
being 2 * (<sect:jp> + <sect:jg>) + <sect:rt>
#BRANCHSTART r,0,1
with #LEVELHOLD
in #M
— any bar drumrolls to Master #BRANCHSTART p,0,0.01
with #LEVELHOLD
in #E
& #LEVELREDIR N,E,M
(unhold) in #M
— or any non-不可/BADs on missable notes to Master
#BRANCHSTART lcf:f,0,1
with the store expression of f
being <sect:jp> + <sect:jg> + <sect:rt> - <sect:rb>
and with #LEVELHOLD
in #E
#BRANCHSTART s,0,1
with #LEVELHOLD
in #E
#BRANCHSTART ltf,f,f
with the store expression of f
being <sect:p> >= 0.98 | (<sect:jg> - <sect:JG:d> == 28)
#BRANCHSTART lcf:f,86,94
with the store expression of f
being 100 * (<sect:jp> + <sect:jg> / 2 + x * <sect:rb>) / (<sect:tn> + x * <sect:trbh>)
(x
is certain unknown value)#BRANCHSTART lcf:f,x,87.8
(x
is certain unknown value) with the store expression of f
being 100 * (<sect:jp> + <sect:jg> / 2 + 0.45 * <sect:rb>) / (<sect:tn> + 0.45 * <sect:rb>)
— 100% acc on 87 notes + 1+ (of 28) balloon hits, or 86%+ acc on 87 notes + all 28 balloon hits#BRANCHSTART p,0,0
(forced Master branch)#BRANCHSTART
command with p
condition.Branch-dependent condition:
#LEVELREDIR
.#BRANCHSTART p,80.837,101
with #LEVELREDIR N,N,M
on #E
#BRANCHSTART r,0,1
#BRANCHSTART p,101,101
,
separating the requirement valuesp
.r
branch condition, if a bar-drumroll–type note starts or overlaps with the branch determination point in definition, the displayed branch will be updated as the drumroll is hit since the branch determination point and until the actually branch point.OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★
Scope: notechart
Scope fineness: measure
Effect time: static
Effect target: The last defined #BRANCHSTART
or #BRANCHEND
.
Effect branches: all
Specify or override the branch condition and requirements for when the 普通 Normal / 玄人 “Professional”/Advanced (“Expert”) / 達人 Master 譜面 (分岐) “notechart branch”/forked path is currently targeted (“from”).
The branch determining point for different currently targeted branch may vary.
#FROMNOR <comma-separated-list-branchstart-arguments>
#FROMEXP <comma-separated-list-branchstart-arguments>
#FROMMAS <comma-separated-list-branchstart-arguments>
<comma-separated-list-branchstart-arguments>
is any argument form for the #BRANCHSTART
.The example of #LEVELREDIR
for おに Oni/Extreme difficulty of “聖徳たいこの「日いずるまで飛鳥」” can be alternatively achieved as:
// Measure 15 - 16
#BRANCHSTART r, 5, 6
#BRANCHEND
#SECTION
// Measure 17 - 18
#BRANCHSTART
#FROMEXP r, 7, 8
#FROMMAS r, 8, 8
#BRANCHEND
#SECTION
// Measure 19 - 20
#BRANCHSTART
#FROMEXP r, 4, 5
#FROMMAS r, 5, 5
#N
// Measure 21 - 25
#E
// Measure 21 - 25
#M
// Measure 21 - 25
#BRANCHSTART p, 101, 101
#BRANCHEND
// Measure 26 -
#N
/ #E
/ #M
OpenTaiko-OutFox standard version: 1.0
Impact level: note ★★★★★
First seen in: TaikoJiro v1.63
Supported by: (assumedly universally supported, including TaikoJiro 1 & 2, TJAPlayer2 for.PC)
Scope: notechart
Scope fineness: measure
Effect time: static
Effect target: notes, bar lines, judgment mark(s), note field(s)
Effect branches: all
Start the definition of respectively the 普通 Normal / 玄人 “Professional”/Advanced (“Expert”) / 達人 Master 譜面 (分岐) “notechart branch”/forked path section.
The definition of unused “branches”/paths due to forced “branch”/path determination can be omitted.
Unspecified: The behavior when any of the followings are violated:
#BRANCHSTART
command and before any of the #N
/ #E
/ #M
commands.
#N
section to be defined to contain them.#N
/ #E
/ #M
sections should be ended with ,
. However, commands are allowed there and apply to next measure.
,
cause unintended time and beat position of non-before notes in the current branch and unintendedly counted for determining the per–note-symbol beat duration weight of the next completed measure (probably across multiple definition sections) in the notechart definition. #N
/ #E
/ #M
commands should be placed within the region enclosed by the #BRANCHSTART
& (possibly implicit) #BRANCHEND
commands.
#N
/ #E
/ #M
command always begins a notechart definition section for the last #BRANCHSTART
command even if the definition section has been ended by a #BRANCHEND
. If there are no preceeding #BRANCHSTART
commands, the game crashes.#N
/ #E
/ #M
order if defined.
#MEASURE
commands and mid-measure #DELAY
commands should not appear within the definition of any “branches”/paths.
#DELAY
applies to all branches.#MEASURE
command defined outside of branch definition sections. After a branch section, the internal measure length for calculating per–note-symbol beat duration reverts to the value right before the branch section, but the internal measure length for calculating the time position of measures persists.OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
Scope: branch (?)
Scope fineness: non-before
Effect time: static
Effect target: notes, bar lines, judgment mark(s), note field(s)
Effect branches: current (?)
Start the definition of a timing group. (?)
(TMG syntax, but no known argument)
OpenTaiko-OutFox standard version: (non-standard)
Impact level: note ★★★★★
Scope: branch (?)
Scope fineness: sequential
Effect time: command-time
Non-static effect scope: non-before
Effect target: notes, bar lines, judgment mark(s), note field(s)
Effect branches: current (?)
Define conditionally enabled notechart sections which appear / disappear with the effects of #NOTESPAWN
(“spawn”), when the specified time point before the command is reached.
#IFSPAWN(<bool-condition-enable>, <enum-str-spawntype>, <float-seconds-duration>)
#UNLESSSPAWN(<bool-condition-disable>, <enum-str-spawntype>, <float-seconds-duration>)
#IFSPAWN(<bool-condition-enable>, <enum-str-spawntype>, <float-seconds-duration>)
, where <bool-condition-enable>
is the boolean invert of <bool-condition-disable>
. (?)#ELSEIFSPAWN(<bool-condition-enable>, <enum-str-spawntype>, <float-seconds-duration>)
#ELSESPAWN(<enum-str-spawntype>, <float-seconds-duration>)
#IFSPAWNEND()
All <bool-condition>
within a conditional spawn definition section are (re-)evaluated at each specified <float-seconds-duration>
seconds before the #*SPAWN()
command. (?)
Within a conditional spawn definition section, after each (re-)evaluation, the conditional notechart definition section of the first defined #*SPAWN()
command with <bool-condition-enable>
being true
, <bool-condition-disable>
being false
, or without specifiable <bool-condition-*>
is enabled, while all the other sections are disabled.
<enum-str-spawntype>
must be one of:
Spawn
<float-seconds-duration>
seconds before the time point of the #*SPAWN()
command.Vanish
<float-seconds-duration>
seconds before the time point of the #*SPAWN()
command. (?)Example usages (adapted from barrier15300):
// Evaluated at 0 seconds before the `#IFSPAWN()`
#IFSPAWN(CD.Good == 100, Spawn, 0)
// Initially disabled and invisible
// If enabled, appears 0 seconds before the command
2010201011102010,
#ELSESPAWN(Vanish, 0)
// Initially enabled and visible
// If disabled, disappears 0 seconds before the command
1011201020101120,
#IFSPAWNEND()
// Evaluated at 0.5, 0, & -1 second before the `#UNLESSSPAWN()`
#UNLESSSPAWN(CD.Good < 100, Spawn, 0)
// Initially disabled and invisible
// If enabled, appears 0 seconds before the command
2222102222102222,
#ELSEIFSPAWN(CD.Bad > 0, Vanish, -1)
// Initially enabled and visible
// If disabled, disappears -1 second before (i.e., 1 second after) the command
1111221110102211,
#ELSESPAWN(Spawn, 0.5)
// Initially disabled and invisible
// If enabled, appears 0.5 seconds before the command
1110111011102220,
#IFSPAWNEND()
OpenTaiko-OutFox standard version: 1.0 (minimum, unless stated otherwise)
Impact level: timing ★★★★・
First seen in: TJAPlayer3 v1.5.0
Scope: notechart
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: all
Effect branches: all
Switch to the next song in the 段位認定モード “Rank Certification Mode”.
段位認定モード “Rank Certification Mode” resembles 段位道場 “Rank Dojo”/Dan-i Dojo in the official games.
Used in conjunction with COURSE:Dan
.
See TJC Header for the header version of the #NEXTSONG
command.
#NEXTSONG <string-song-title>,<string-song-subtitle>, <str-genre>,<string-filepath-song-wave>, <non-negative-int-score-init>, <non-negative-int-score-diff>
TITLE:
, SUBTITLE:
, GENRE:
, WAVE:
, SCOREINIT:
, and SCOREDIFF:
headers combined, except that every comma (,
) in each string
values MUST be escaped as \,
#NEXTSONG <string-song-title>,<string-song-subtitle>, <str-genre>,<string-filepath-song-wave>, <non-negative-int-score-init>, <non-negative-int-score-diff>,<non-negative-number-level>, <enum-course>, <enum-str-bool-hide-title>
<non-negative-number-level>, <enum-course>, <enum-str-bool-hide-title>
are optional parameters where the last one(s) can be omitted:
<enum-str-bool-hide-title>
defaults to False
and specifies whether the title of the song is obscured (“hidden”) in the certification challenge selection screen of the 段位認定モード “Rank Certification Mode”, which resembles 段位道場 “Rank Dojo”/Dan-i Dojo in the official games. If given, it can be one of:
False
— the default; the title is displayed as-is.True
— the title is obscured (e.g., displayed as “???
”).<enum-course>
has the effects and the default value of the COURSE:
header.<non-negative-number-level>
has the effects and the default value of the LEVEL:
header.OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★
Scope: notechart
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: all
Effect branches: current
Immediately jump to the loading screen of the specified song. The results (including (proposal (Komi)) local counters and local triggers) of the current gameplay is discarded.
Can be conditionally enabled or disabled by the (proposal (Komi)) #COMMANDIF
or (proposal (IID)) #COMMANDIFF
command.
#SONGJUMP <str-song-unique-id>, <enum-difficulty>
<str-song-unique-id>
is a unique alphanumeric string representing the specified song.<enum-difficulty-course>
can one of the argument to the COURSE:
header.
uniqueID.json
file in the same directory as the TJA file for the song. The uniqueID.json
is automatically generated if not present when the TJA file is being scanned.OpenTaiko-OutFox standard version: 1.2
Impact level: note ★★★★★
First seen in: OpenTaiko (0auBSQ) v0.6.0, OutFox v0.4.18
Scope: branch
Scope fineness: non-before
Effect time: static
Effect target: notes, bar lines
Effect branches: Unspecified
Specify the game mode (“type”) for the notes non-before the current beat position. The meaning of the note symbols non-before the current beat position is changed accordingly; see TJA Notechart Definition.
Unspecified: The implemented game modes other than Taiko mode and Konga mode.
See the GAME:
header for specifying the initial game mode for the notechart.
#GAMETYPE Taiko
#GAMETYPE Konga
/ #GAMETYPE Bongo
GAME:
header (not supported by OpenTaiko (0auBSQ))OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: TaikoManyGimmicks
Scope: branch
Scope fineness: non-before
Effect time: static
Effect target: notes, bar lines
Effect branches: branch (?)
Manipulate the display properties of notes & bar lines.
The arguments are whitespace-separated.
Resetters:
#RESETCOMMAND
#SCROLL
command#SUDDEN
command#JPOSSCROLL
command#JUDGEDELAY
command#NOTESPAWN
command#GRADATION
command#HISPEED
commandSetters:
#SIZE <unsigned-number-scale>
#BARLINESIZE <unsigned-number-pixel-thickness> <unsigned-number-pixel-height>
#ANGLE <number-degrees-rotation>
<number-degrees-rotation>
degrees (°) counterclockwise (↺).#COLOR <unsigned-number-9bit-r> <unsigned-number-9bit-g> <unsigned-number-9bit-b> <unsigned-number-8bit-a>
#COLOR(<unsigned-number-9bit-r>, <unsigned-number-9bit-g>, <unsigned-number-9bit-b>)
<unsigned-number-*bit-*>
− 255.#COLOR 255 255 255 255
or #COLOR(255, 255, 255)
#ALPHA(<unsigned-number-8bit-a>)
#ALPHA(255)
OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: TaikoManyGimmicks v0.6α
Scope: branch
Scope fineness: gradation group
Effect time: command-time
Non-static effect scope: gradation group
Effect target: notes, bar lines
Effect branches: current (?)
Control the commands apply to the starting/ending of the per–note/bar line approaching phase (“gradation”).
Reset by #RESETCOMMAND
.
The arguments are whitespace-separated.
#GRADATION start <float-seconds-approach-duration> <enum-int-easing-points> <enum-int-easing-function>
#GRADATION(Set, <enum-int-easing-points>, <enum-int-easing-function>, <float-seconds-pre-approach-offset>, <float-seconds-approach-duration>)
~
), which has a lower operator precedence than most operators except the comma (,
).<float-seconds-pre-approach-offset>
specifies the time point before the time position of this command when the approaching phase should start.<enum-int-easing-points>
can be one of:
0
— EaseIn1
— EaseOut2
— EaseInOut3
— EaseOutIn <enum-int-easing-function>
can be one of:
0
— Linear1
— Sine2
— Quadratic3
— Cubic4
— Quartic5
— Quintic6
— Exponential7
— Circular8
— Back9
— Elastic10
— Bounce#GRADATION end
#GRADATION start <float-seconds-approach-duration> <enum-int-easing-points> <enum-int-easing-function>
are specified again with a possibly different value here.#GRADATION(Start)
#GRADATION init
#GRADATION(End)
#GRADATION
command to non-preceding notes and bar lines.They are conventionally used as follow:
#GRADATION start 1.0 2 0 // Exemplar
#SIZE 1 // Exemplar command with the value before approaching
// More commands with the values before approaching
#GRADATION end
#SIZE 2 // Exemplar command with the value after approaching
// More commands with the values after approaching
// Notechart section
#GRADATION init // Optional sometimes
#GRADATION(Set, 2, 0, 0.0, 1.0) // Exemplar
#SIZE(1~2) // Exemplar command with the value before~after approaching
// More commands with the values before approaching
#GRADATION(Start)
// Notechart section
#GRADATION(End) // Optional sometimes
If a static effect of a command is specified to be interpolated, the static effect will be overridden by the command-time version of the same effect with the time position relative to the beginning of the gradation group.
Unspecified: Which commands are supported by the #GRADATION
command.
Commands supporting the #GRADATION
command in TaikoManyGimmicks:
#SCROLL
command#JUDGEDELAY
command#SIZE
, #COLOR
, #ALPHA
, & #ANGLE
commands#BARLINESIZE
command OpenTaiko-OutFox standard version: (non-standard)
Impact level: note ★★★★★ (depending on included notechart definition content)
First seen in: TaikoManyGimmicks v0.6.1α
Scope: (depending on included notechart definition content)
Scope fineness: sequential
Effect time: (depending on included notechart definition content)
Effect target: (depending on included notechart definition content)
Effect branches: (depending on included notechart definition content)
Inspired by: C(++) programming language #include <<filepath-standard-header>>
or #include "<filepath-custom-header>"
Append (“include”) the notechart definition content defined the included file to the current definition. The included file can include any headers and commands in the TMG format.
#INCLUDE(<string-filepath-notechart-definition>)
#SPLITLANE
/ #MERGELANE
OpenTaiko-OutFox standard version: (non-standard)
Impact level: gimmicky ★★・・・
First seen in: OpenTaiko (0auBSQ) v0.6.0
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: notes, bar lines, judgment mark(s), note field(s)
Effect branches: Unspecified
Split/merge the note field (“lane”) into/from top and bottom note field, with ドン notes on the top note field, カツ notes on the bottom note field, and other notes on the middle of these 2 note fields.
#SPLITLANE
/ (Proposed (IID)) #SPLITLANE 1
#SPLITLANE <float-split-amount>
#SPLITLANE
& 0 for #MERGELANE
. A negative split amount makes ドン notes on the bottom note field and カツ notes on the top note field intead.#MERGELANE
/ (Proposed (IID)) #SPLITLANE 0
OpenTaiko-OutFox standard version: 2.0
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer3-Extended
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope: branch
Scope fineness: non-before (some are sequential)
Effect time: command-time
Non-static effect scope: all
Effect target: gameplay screen
Effect branches: Unspecified
Manipulate texture objects & the game screen camara.
Loader & unloader, reset by each other:
#ADDOBJECT <str-name-object>, <number-pixel-x>, <number-pixel-y>,<string-filepath-texture>
#REMOVEOBJECT <str-name-object>
Display property setters:
<number-pixel-x>
#OBJX <str-name-object>, <number-pixel-x-end>
#OBJHMOVESTART <str-name-object>, <number-pixel-x-start>, <number-pixel-x-end>, <enum-str-easing-points>, <enum-str-easying-function>
#OBJHMOVEEND
<number-pixel-y>
#OBJY <str-name-object>, <number-pixel-y-end>
#OBJVMOVESTART <str-name-object>, <number-pixel-y-start>, <number-pixel-y-end>, <enum-str-easing-points>, <enum-str-easing-function>
#OBJVMOVEEND
<float-scale-x>
#OBJHSCALE <str-name-object>, <float-scale-x-end>
#OBJHSCALESTART <str-name-object>, <float-scale-x-start>, <float-scale-x-end>, <enum-str-easing-points>, <enum-str-easing-function>
#OBJHSCALEEND
<float-scale-y>
#OBJVSCALE <str-name-object>, <float-scale-y-end>
#OBJVSCALESTART <str-name-object>, <float-scale-y-start>, <float-scale-y-end>, <enum-str-easing-points>, <enum-str-easing-function>
#OBJVSCALEEND
<number-degrees-rotation>
#OBJROTATION <str-name-object>, <number-degrees-rotation-end>
#OBJROTATIONSTART <str-name-object>, <number-degrees-rotation-start>, <number-degrees-rotation-end>, <enum-str-easing-points>, <enum-str-easing-function>
#OBJROTATIONEND
<unsigned-number-8bit-opacity>
#OBJOPACITY <str-name-object>, <unsigned-number-8bit-opacity-end>
#OBJOPACITYSTART <str-name-object>, <unsigned-number-8bit-opacity-start> <unsigned-number-8bit-opacity-end>, <enum-str-easing-points>, <enum-str-easing-function>
#OBJOPACITYEND
<unsigned-number-8bit-*>
#OBJCOLOR <str-name-object>, <unsigned-number-8bit-r-end>, <unsigned-number-8bit-g-end>, <unsigned-number-8bit-b-end>
Frame-based animation:
#OBJANIMSTART <str-name-object>, <positive-number-milliseconds-frame-duration>
#OBJANIMSTARTLOOP <str-name-object>, <positive-number-milliseconds-frame-duration>
#OBJANIMEND <str-name-object>
#OBJFRAME <str-name-object>, <unsigned-int-frame-index>
CAM commands:
#CAMRESET
— resets the following<number-pixel-x>
#CAMHOFFSET <number-pixel-x-end>
#CAMHMOVESTART <number-pixel-x-start>, <number-pixel-x-end>, <enum-str-easing-points>, <enum-str-easing-function>
#CAMHMOVEEND
<number-pixel-y>
#CAMVOFFSET <number-pixel-y-end>
#CAMVMOVESTART <number-pixel-y-start>, <number-pixel-y-end>, <enum-str-easing-points>, <enum-str-easying-function>
#CAMVMOVEEND
<float-zoom-factor>
#CAMZOOM <float-zoom-factor-end>
#CAMZOOMSTART <float-zoom-factor-start>, <float-zoom-factor-end>, <enum-str-easing-points>, <enum-str-easing-function>
#CAMZOOMEND
<float-scale-x>
#CAMHSCALE <float-scale-x-end>
#CAMHSCALESTART <float-scale-x-start>, <float-scale-x-end>, <enum-str-easing-type>, <enum-str-easing-function>
#CAMHSCALEEND
<float-scale-y>
#CAMVSCALE <float-scale-y-end>
#CAMVSCALESTART <float-scale-y-start>, <float-scale-y-end>, <enum-str-easing-points>, <enum-str-easing-function>
#CAMVSCALEEND
<number-degrees-rotation>
#CAMROTATION <number-degrees-rotation-end>
#CAMROTATIONSTART <number-degrees-rotation-start>, <number-degrees-rotation-end>, <enum-str-easing-points>, <enum-str-easing-function>
#CAMROTATIONEND
The #<property>START
and #<property>END
commands are sequential.
The approach phase of a #<property>START
command starts at its definition position and is ended by the nearest non-preceding corresponding #<property>END
in notechart definition. Unspecified: The behavior when a #<property>START
command either has no such corresponding #<property>END
or has such #<property>END
with an earlier time position than the #<property>START
command itself.
<enum-str-easing-points>
can be one of:
IN
OUT
IN_OUT
<enum-str-easing-function>
can be one of:
CUBIC
QUARTIC
QUINTIC
SINUSOIDAL
EXPONENTIAL
CIRCULAR
LINEAR
OpenTaiko-OutFox standard version: 2.0
Impact level: decorative ・・・・・
First seen in: TJAPlayer3-Extended
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: gameplay screen
Effect branches: Unspecified
Set the color of the displayed region outside the border of the gameplay screen (when the gameplay screen camera is manipulated).
#BORDERCOLOR <unsigned-number-8bit-r>, <unsigned-number-8bit-g>, <unsigned-number-8bit-b>
OpenTaiko-OutFox standard version: 2.0
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer3-Extended
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: gameplay screen
Effect branches: Unspecified
Respectively change / restore (“reset”) the texture used in the current skin.
Reset by each other.
#CHANGETEXTURE <string-filepath-original>,<string-filepath-replacing>
#RESETTEXTURE <string-filepath-original>
OpenTaiko-OutFox standard version: 2.0
Impact level: gimmicky ★★・・・
First seen in: TJAPlayer3-Extended
Supported by: OpenTaiko (0auBSQ) v0.6.0
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: gameplay screen
Effect branches: Unspecified
Override (“set”) the config value read from the SkinConfig.ini
of the currently used skin.
Unspecified: The exact list of valid configs, allowed values, and the behaviors.
#SETCONFIG <str-config-key>=<text-config-value>
OpenTaiko-OutFox standard version: (non-mandatory; 1.0-compatible)
Impact level: decorative ・・・・・
First seen in: OpenTaiko (0auBSQ) v0.6.0
Scope: branch
Scope fineness: non-before
Effect time: command-time
Non-static effect scope: all
Effect target: gameplay screen
Effect branches: Unspecified
Start (“on”)/stop (“off”) playing the specified background video (“animation”) defined by the BGA:
header on the gameplay screen.
The arguments are whitespace-separated.
#BGAON <unsigned-int-video-index> <float-milliseconds-video-offset>
<float-milliseconds-video-offset>
milliseconds into the video. The background video specified by BGMOVIE:
(if any) is hidden but is still playing.#BGAOFF <unsigned-int-video-index>
BGMOVIE:
(if any) is shown and is still playing.
”) is allowed for separating arguments<unsigned-int-video-index>
must be exactly 2 decimal digits (with 0
prefixed if necessary).OpenTaiko-OutFox standard version: 1.3
Impact level: note ★★★★★ (depending on usage)
Scope: branch
Scope fineness: sequential
Effect time: command-time
Non-static effect scope: specified target counter or trigger
Effect target: (none)
Effect branches: current
Specification by Komi: https://docs.google.com/document/d/1PZXLStZs8RQGbB62jnf7FKxbDEdjuKO482yatI6oXyA/edit?usp=sharing
Manipulate the value of counters & triggers (collectively called charter-defined variables).
Value types:
Persistence:
The accessible set of global or local charter-defined variables is independent for each song and for each player, regardless of difficulty and player-side.
Evaluation method:
Unspecified: The behavior when a specified charter-defined variable is defined but has unmatched persistence, value type, or evaluation method to those expected by a command or variable accessing tag.
Local charter-defined variable setters:
#STOREC <str-local-value-counter-written>, <string-store-expr-float>
#STORECF <str-local-formula-counter-written>, <string-store-expr-float>
<str-local-*-counter-written>
is the key of the stored local (value or formula) counter and must not have the form of a float
.#STORET <str-local-value-trigger-written>, <string-store-expr-bool>
#STORETF <str-local-formula-trigger-written>, <string-store-expr-bool>
<str-local-*-trigger-written>
is the key of the stored local (value or formula) trigger and must not be one of True
, False
, and any string different from them only by their letter case.<store-expr-*>
Global charter-defined variable setters:
#ELEVATEC <str-global-value-counter-written>, <str-local-value-counter-read>
#ELEVATECF <str-global-value-counter-written>, <str-local-formula-counter-read>
<str-global-value-counter-written>
is the key of the stored global value counter and must not have the form of a float
.#ELEVATET <str-global-value-trigger-written>, <str-local-value-trigger-read>
#ELEVATETF <str-global-value-trigger-written>, <str-local-formula-trigger-read>
<str-global-value-trigger-written>
is the key of the stored global value trigger and must not be one of True
, False
, and any string different from them only by their letter case.Recommendation for charters: Global charter-defined variable setters should be used only when necessary and are preferredly used as late (by time position) as possible in the notechart, such as before #END
or (proposal (Komi)) the #SONGJUMP
command.
If the global charter-defined variables are disabled by user option or unimplemented by the simulator, the global charter-defined variable setters have no effects.
For each charter-defined variable setter, if <str-*-*-*-written>
contains one of the <>,
characters, the command has no effects.
Examplar evaluator implementation in C#: https://dotnetfiddle.net/LtjtCQ
Operations (in descending precedence):
Syntax | Functionality | Precedence Level | Example | Meaning |
---|---|---|---|---|
< <str-tag> : <str-arg0> : <str-arg1> : ... > |
Variable access (see below) |
(preprocess) | • <jp> • <gc:acc_oni_p1> |
• The current number of 良 GREAT/GOOD judgement. • The value of the global counter with key acc_oni_p1 . |
<unsigned-float> |
Unsigned float literal |
primary |
42 / .1 / 3. |
42 / 0.1 / 3.0 |
( <expr-or> ) |
Grouping | primary |
(2+2)/2 |
→ 4 / 2 → 2 |
Proposal (IID): <expr-funcioncall-func> ( <expr-or-arg0> : <expr-or-arg1> : ... ) |
Function call | funcioncall |
<math:min>(<lc:acc>:<a>) |
The minimum of the value of local counter with key acc and the current accuracy. |
- <expr-unary> |
Number negation | unary |
--42 |
→ -(-42) → 42 |
! <expr-bool-unary> |
Boolean NOT | unary |
!!42 |
→ !(!42) → !(!1) (emits warning) → !0 → 1 |
<expr-muldiv> * <expr-unary> |
Multiplication | muldiv |
2*2*2 |
→ (2 * 2) * 2 → 8 |
<expr-muldiv> / <expr-unary> |
Division | muldiv |
9/4/2 |
→ (9 / 4) / 2 → 1.125 |
<expr-muldiv> + <expr-unary> |
Addition | addsub |
1+2+3 |
→ (1 + 2) + 3 → 6 |
<expr-muldiv> - <expr-unary> |
Substraction | addsub |
1-2-3 |
→ (1 - 2) - 3 → -4 |
<expr-comparison> > <expr-addsub> |
Greater-than Results in 0 (false) or 1 (true) |
comparison |
<foo>><bar>><baz> |
→ (<foo> > <bar>) > <baz> |
<expr-comparison> >= <expr-addsub> |
Greater-than-or-equal-to | comparison |
4>=3>=2 |
→ (4 >= 3) >= 2 → 1 >= 2 → 0 |
<expr-comparison> <= <expr-addsub> |
Less-than-or-equal-to | comparison |
-4<=-3<=-2 |
→ (-4 <= -3) <= -2 → 1<=-2 → 0 |
<expr-comparison> < <expr-addsub> |
Less-than | comparison |
<foo><<bar><<baz> |
→ (<foo> < <bar>) < <baz> |
<expr-equality> == <expr-comparison> |
Equal-to | equality |
• 0==0==0 • <a>>=.5==<lc:acc>>=.5 |
• → (0 == 0) == 0 → 1 == 0 → 0 • → (<a> >= 0.5) == (<lc:acc> >= 0.5) |
<expr-equality> != <expr-comparison> |
Not-equal-to | equality |
• 1!=1!=1 • <foo>!=<foo> |
• → (1 != 1) != 1 → 0 != 1 → 1 • 1 (true) if <foo> is NaN, 0 (false) otherwise |
<expr-bool-and> & <expr-bool-equality> |
Boolean AND | and |
0&1&2 |
→ (0 & 1) & 2 → 0 & 2 → 0 & 1 (emits warning) → 0 |
<expr-bool-xor> ^ <expr-bool-and> |
Boolean XOR | xor |
1^0&1^1 |
→ 1 ^ (0 & 1) ^ 1 → 1 ^ 0 ^ 1 → (1 ^ 0) ^ 1 → 1 ^ 1 → 0 |
<expr-bool-or> | <expr-bool-xor> |
Boolean OR | or |
0&1|1&0^1|1^1 |
→ (0 & 1) | ((1 & 0) ^ 1) | (1 ^ 1) → 0 | 1 | 0 → (0 | 1) | 0 → 1 | 0 → 1 |
For Boolean operators, if the resulting value of <expr-bool-*>
is equal to neither 0 (false) or 1 (true), it is converted to 1 (true) (i.e., <expr-bool-*> != 0
) and a warning is emitted.
The result of comparison
and equality
operators is 0 (false) or 1 (true).
The variable access operation < <str-tag> : <str-arg0> : <str-arg1> : ... >
is replaced with the float
literal of the resolved value before the whole expression is parsed.
If the lookup fails, a warning is emitted and the result is 0
.
Proposal (IID): If any of the following are violated, the opening <
is instead parsed as (part of) a comparison operator:
<str-tag>
starts with =
, it should be separated from the opening <
by at least one whitespace, otherwise the operator <=
is formed.<str-tag>
should not start with any of .()!-
or a digit, i.e., the non-whitespace characters possible after the operator <
, and their paired character (if exists).<str-tag>
& <str-arg*>
should not contain any <
— Nested variable accesses are not allowed.>
should present after the opening <
. If present, the first occuring >
character is parsed as the closing >
.Pre-defined variable tags:
The list of (Proposal (IID)) pre-defined constants and functions are separately listed below.
Excessive arguments are ignored. Lacking arguments cause the lookup to fail and cause the result to be 0
.
Proposal (IID): For calculating the pre-defined variables regarding big note statistics:
A
& B
in Taiko mode (not including notes with an enabled (proposal (Komi)) #PARTNERNOTE
command applied) are counted as big notes. No pre-defined judgement statistic variables separate these notes from originally non–hand-holding big notes which are made hand-holding by the (proposal (Komi)) #PARTNERNOTE
command.G
) is not counted as a big note.#GIANTNOTE
command applied) is not counted as a big note.Tag | Arguments | Value |
---|---|---|
cl |
(none) | The LEVEL: value of the current player-side. |
cd |
(none) | The COURSE: (“difficulty”) value (integer form) of the current player-side. |
pc |
(none) | Amount (“count”) of player-sides in this gameplay. |
ss |
(none) | Current value of song speed multiplier modifier. |
sc |
(none) | Current value of scrolling rate multiplier modifier. |
jp |
• (none) • l |
Current amount of 良 GREAT/GOOD (“perfect”) judgements. • l — Only counts successful hand-holding (“l“inked) judgements. |
jg |
• (none) • l |
Current amount of 可 GOOD/OK judgements. • l — Only counts successful hand-holding (“l“inked) judgements. |
jb |
• (none) • l |
Current amount of 不可 BAD judgements on missable notes. • l — Only counts hand-holding (“l“inked) notes. |
Proposal (IID): jbt |
(none) | Current amount of combo-break judgements, including (“total”) 不可 BAD (both for notes and for empty hits) and BOOM. |
Proposal (IID): JP |
• (none) • d • l |
Current amount of 良 GREAT/GOOD (“perfect”) judgements on big notes (not including note symbol G ). • d — Only counts 特 “special”/strong/”double-hit” judgements and successful hand-holding judgements. • l — Only counts successful hand-holding (“l“inked) judgements. |
Proposal (IID): JG |
• (none) • d • l |
Current amount of 可 GOOD/OK judgements on big notes (not including note symbol G ). • d — Only counts 特 “special”/strong/”double-hit” judgements and successful hand-holding judgements. • l — Only counts successful hand-holding (“l“inked) judgements. |
Proposal (IID): JB |
• (none) or d • l |
Current amount of 不可 BAD judgements on big notes. • l — Only counts hand-holding (“l“inked) big notes. |
ja |
• (none) • l |
Current amount of caught Ad libitum (AD-LIB) notes. l — Only counts successful hand-holding (“l“inked) judgements. |
jm |
• (none) | Current amount of caught BOOM (“mine caught”) judgements. |
Proposal (IID): jmb |
• (none) • l |
Current amount of caught bomb/mine. l — Only counts successful hand-holding (“l“inked) judgements. |
Proposal (IID): jrb |
(none) | Current amount of popped balloon-type drumroll-type notes. |
Proposal (IID): JRB |
• (none) • d |
Current amount of popped special/”big” balloon-type drumroll-type notes (note symbol 9 ). • d — Only counts pops with full bonus. |
tn |
(in any order) (• (none) or j • Proposal (IID): t ) : (• (none) • Proposal (IID): l ) |
Total amount of encountered missable notes (Proposal (IID)) (for j ) judged or (for t ) whose critical judgement timing has been reached before now. • l — Only count hand-holding notes. |
Proposal (IID): TN |
(in any order) (• (none) or j • Proposal (IID): t ) : (• (none) or d • Proposal (IID): l ) |
Total amount of encountered missable big notes (Proposal (IID)) (for j ) judged or (for t ) whose critical judgement timing has been reached before now. • l — Only count hand-holding notes. |
ta |
(same as tn ) |
Total amount of encountered Ad libitum (AD-LIB) notes (Proposal (IID)) (for j ) judged or (for t ) whose critical judgement timing has been reached before now. • l — Only count hand-holding notes. |
tm |
• (none) or j • Proposal (IID): t |
Total amount of encountered notes which can give a BOOM (“mine caught”) judgement (Proposal (IID)) (for j ) judged (hit, popped, or failed to pop) or (for t ) whose critical judgement timing or beginning or ending timing has been reached before now. |
Proposal (IID): tmb |
(same as tn ) |
Total amount of encountered bomb/mine notes (Proposal (IID)) (for j ) judged or (for t ) whose critical judgement timing has been reached before now. • l — Only count hand-holding notes. |
Proposal (IID): trb |
• (none) or j • t |
Total amount of encountered balloon-type drumroll-type notes (for j ) popped or failed to pop or (for t ) whose beginning or ending timing has been reached before now. |
Proposal (IID): TRB |
• (none) or j • t |
Total amount of encountered special/”big” balloon-type drumroll-type notes (note symbol 9 ) (for j ) popped or failed to pop or (for t ) whose beginning or ending timing has been reached before now. |
Proposal (IID): trbh |
• (none) or j • t |
Total required amount of hits of all encountered balloon-type drumroll-type notes (for j ) popped or failed to pop or (for t ) whose beginning or ending timing has been reached before now. |
Proposal (IID): TRBH |
• (none) or j • t |
Total required amount of hits of all encountered special/”big” balloon-type drumroll-type notes (note symbol 9 ) (for j ) popped or failed to pop or (for t ) whose beginning or ending timing has been reached before now. |
Proposal (IID): rt |
(none) | Current amount of hits on all (total) drumroll-type notes. |
Proposal (IID): RT |
• (none) • d |
Current amount of hits on all (total) big (including special balloons (note symbol 9 )) drumroll-type notes. • d — Only counts strong/”double-hit” hits on big bar drumrolls. |
Proposal (IID): rb |
(none) | Current amount of hits on balloon-type drumroll-type notes. |
Proposal (IID): RB |
(none) | Current amount of hits on special/”big” balloon-type drumroll-type notes (note symbol 9 ). |
Proposal (IID): sect |
(One of above tags from jp to RB ) : (One of (none), d , & l ) |
The current judgement statistic counted since the last #SECTION (if any) or the start of the chart. The d or l option is applied to the tag if applicable. |
Proposal (IID): sect |
(One of p , P , pp , PP , r , R ) : (One of (none), d , & l ) |
The current value calculated using the formula of the corresponding <enum-str-condition> of the #BRANCHSTART command since the last #SECTION (if any) or the start of the chart. The d or l option is applied to the <sect:*> variables in the formula if applicable. |
a p |
• (none) or j • Proposal (IID): t |
Current percentage (%) of 精度 “precision/perfect rate”/accuracy of all missable notes, based on (Proposal (IID)) (for j ) amount of actual judgements or (for t ) amount of notes whose critical judgement timing has been reached before now. |
Proposal (IID): s |
(none) | Current score. |
cc |
(none) | Current combo earned. |
g |
(none) | Percentage (%) of 魂ゲージ spirit gauge/soul gauge. Proposal (IID): For LIFE: life count, the initial life count is defined as 100%. |
Proposal (IID): cs |
(none) | 0 for failed, 1 for assisted passed, 2 for non-assisted passed, 3 for passed and full combo (<jb:t> == 0 ), 4 for passed and perfect (<jg> + <jb:t> == 0 ). |
mc c |
(none) | Maximum/longest combo ever earned. |
cb |
(none) | Current displayed target branch (0 for Normal, 1 for Expert, 2 for Master) |
cg |
(none) | Current game mode Non-negative for 1-digit note symbol game modes: 0 for Taiko, 1 for Konga (Bongo), 2 for proposal (Komi) Beatz. Negative for multi-digit note symbol modes (reserved, non-standard): -1 for Jube, -2 for Bm. |
lc |
<str-local-value-counter-read> |
Current value of local value counter (0 if undefined) |
lt |
<str-local-value-trigger-read> |
Current value of local value trigger (false if undefined) (0 for false, 1 for true) |
Proposal (IID): lcf |
<str-local-formula-counter-read> |
Current cached value of local counter formula (0 if undefined) |
Proposal (IID): ltf |
<str-local-formula-trigger-read> |
Current cached value of local trigger formula (false if undefined) (0 for false, 1 for true) |
gc |
<str-global-value-counter-read> |
Current value of global value counter (0 if undefined) |
gt |
<str-global-value-trigger-read> |
Current value of global value trigger (false if undefined) (0 for false, 1 for true) |
Proposal (IID): func |
<str-function-name> |
Utility functions |
Proposal (IID): math |
<str-constant-or-function-name> |
Mathematical constants and functions |
Proposal (IID): Pre-defined constants:
Variable | Value |
---|---|
<math:e> |
Base of natural logarithm; e ≈ 2.718 |
<math:nan> |
An unspecified fixed NaN value |
<math:inf> |
Positive infinity; +∞ |
Proposal (IID): Pre-defined functions:
A pre-defined function is a pre-defined variable but with a fixed unspecified value. Each distinct function is represented by a certain floating-number value.
Recommendation for charters: The function to call should never be specified directly with a float
literal. The value of the pre-defined functions should be considered varying each time the store expression is evaluated.
Excessive argument are ignored without warnings. Lacking arguments default to 0
and cause a warning to be emitted.
If a <bool-*>
argument evaluates to neither 0 (false) or 1 (true), it is converted to 1 (true) (i.e., <bool-*> != 0
) and a warning is emitted.
Variable | Arguments | Function |
---|---|---|
<func:index> |
<bool-cond0> : <bool-cond1> : … |
Returns the index (counted from 0) of the first condition evaluating to 1 (true) (if exist) or returns -1 ; the least n such that <bool-condn> = 1, or -1 if all <bool-condn> = 0 |
<func:select> |
<i> : <opt0> : <opt1> : … |
Returns the ith option (counted from 0) (if exist) or returns 0 ; <optn> with n = ⌊i⌋ if 0 ≤ ⌊i⌋ < Amount of <opt*> , 0 otherwise |
<func:cond> |
<bool-cond0> : <opt0> : <bool-cond1> : <opt1> : … |
Returns the first option with the condition evaluating to 1 (true) (if any) or returns 0 ; <optn> with the least n such that <bool-condn> = 1, or 0 if all <bool-condn> = 0 |
<math:rand> |
<min> : <max> |
Random integer between <min> & <max> with uniform distribution. |
<math:abs> |
<x> |
Absolute value; |x|, <x> for NaN |
<math:sign> |
<x> |
Sign; -1 for negative, 0 for zero, 1 for positive, <x> for NaN |
<math:min> |
<x> : <y> |
The minimum of <x> and <y> . |
<math:max> |
<x> : <y> |
The maximum of <x> and <y> . |
<math:exp> |
<p> |
Exponentiation with the base of natural logarithm; ep |
<math:pow> |
<b> : <p> |
Exponentiation with given base; bp |
<math:log> |
<x> |
Natural logarithm; loge(x), NaN for negative |
<math:log10> |
<x> |
Common logarithm (with base 10); log10(x), NaN for negative |
<math:sqrt> |
<x> |
Square root; √(x), NaN for negative |
<math:cbrt> |
<x> |
Cubic root; ∛(x) |
<math:ceil> |
<x> |
Ceiling; ⌈x⌉; the least integer ≥ x |
<math:round> |
<x> |
Rounding; sign(x) × ⌈abs(x) − 0.5⌉; the nearest integer with magnitute ≥ that of x |
<math:trunc> |
<x> |
Truncate; trunc(x); sign(x) × ⌊abs(x)⌋; the nearest integer with magnitute ≤ that of x |
<math:floor> |
<x> |
Floor; ⌊x⌋; the greatest integer ≤ x |
<math:fmod> |
<x> : <y> |
Floating-number remainder; x − trunc(x / y) × y |
Reading point: The value of a charter-defined variable is read when:
#BRANCHSTART
command with local charter-defined variable condition, when its branch-determining point (at the previous measure) is reached.#NOTEIF
, (proposal (IID)) #NOTEIFF
, (proposal (Komi)) #COMMANDIF
, and (proposal (IID)) #COMMANDIFF
commands, whenever the (direct or cached) value of the accessed variable is changed or invalidated.Writing point of values: The value of a charter-defined value variable is written only when:
#GIANTNOTE
command, when the note is judged.Proposal (IID): Writing point of formulae: The cached value of a charter-defined formula variable is invalidated when:
<t*:t>
as mentioned below) are changed or invalidated. The store expression will be re-evaluated and have the cached value updates to the result value.When a store expression of a charter-defined formula variable is (re-)evaluated, the cached value of all accessed charter-defined formula variables is always used regardless whether the cached value is invalidated.
Proposal (IID): Evaluation stages in each game update frame:
<t*:t>
(total amount of encountered certain notes whose critical judgement timing has been reached before now) are updated. #GIANTNOTE
commands have the triggers updated in this stage.#BRANCHSTART
command, assumed to be right before the first note symbol (if any) at the previous measure). <t*:t>
variables are increased to include uncounted notes whose both definition position and time position is before the reading or writing point, and then the store expressions (if any) are evaluated. #STORECF
or #STORETF
command setting them.#BRANCHSTART
command.#SECTION
commands are executed.Evaluation Behavior Examples:
Notation | Meaning |
---|---|
x<lcf:foo> |
<lcf:foo> has been invalidated |
<lcf:foo>' |
<lcf:foo> has been re-evaluated and has updated cached value |
<lcf:foo>x |
<lcf:foo> will be invalidated |
Self-reference example:
#STORECF foo, <lcf:foo> + 1
#STORETF odd, <math:fmod>(<lcf:foo> : 2) != 0
0 // ...
// ...
#NOTEIFF odd, True
1,
Value updating anology in the C programing language:
double foo = 0;
bool odd = false;
void update(void)
{
foo = foo + 1;
odd = fmod(foo, 2) != 0;
}
")
* Character Tabulation / Tab (U+0009; `\t`)
* Carriage Return / CR (U+000D; `\r`)
* Line Feed / LF / Newline (U+000A; `\n`)
* ***NOT***: Ideographic Space / Fullwidth Space (U+3000; "
")
* It is *unspecified* (but unlikely) whether other space-like characters are accepted.
### Translations
Japanese terminologies of the game: <https://wikiwiki.jp/taiko-fumen/用語集>
Japanese terminologies are provided with their pronunciation annotated using a 訓令式ローマ字-like romanization system. If a Japanese terminology can be written in *漢字* "Chinese Character" form, both are listed.
Some of the *漢字* "Chinese Character" form of the Japanese terminologies are literally taken as the Chinese translation.
For some terminologies of the game, there exist multiple English translations. Their are expressed as `"LIT"/TDM/TKT/PC (ALTs)` when necessary in this article:
* `"LIT"` — A rather literal translation
* `TDM` — The earlier English translation from the official PS2 console game *Taiko: Drum Master*
* `TKT` — <https://taikotime.blogspot.com/2010/12/glossary.html>
* `PC` — The official English translation from the official PC-generation games and the official English website: <https://taiko.namco-ch.net/taiko/en>
* `ALTs` — Alternative translation(s) usually used in the code & the notechart format
Fields with unknown (not existing or simply not investigated by the maintainer of this article) translation are denoted with `?`.
Translations which are simply romanization transliterations are omitted.
Some corresponding terminologies from other rhythm games are taken as one of the translations instead: See individual entries of <https://github.com/stepmania/stepmania/wiki>
### Mentioned PC-Compatible Simulators with TJA Format Support
Reference: *太鼓シミュレーター一覧* ("List of Taiko Simulators"). (2022, July 26). 太鼓の達人 Wiki ("Taiko no Tatsujin Wiki"). <https://wikiwiki.jp/taiko/太鼓シミュレーター一覧>
Unless stated otherwise, a simulator mentioned in this article also refers to its derivations.
The honorific title is omitted.
* 太鼓さん次郎 (*TaikoJiro*): By touch.
* The TJF format was modified and extended into the TJA format for this simulator.
* Inspired by 太鼓さん太郎 (*Taikosan*): By VIL.
* The TJF format was developed and used for this simulator.
* Malody: By Mugzone (multiple developers) <https://m.mugzone.net/index>
* TJAPlayer2 for.PC (aka. 太鼓さんアルファ (*TaikosanAlpha*)): By J.MIR (kairera0467) <https://github.com/kairera0467/TJAP2fPC>
* Inspired by TJAPlayer2 (for PSP): (Unknown author)
* ← Derived from DTXManiaXG (Ver.K): By J.MIR (kairera0467) <https://osdn.net/projects/dtxmaniaxg-verk/>, <https://github.com/kairera0467/DTXManiaXG_VerK_Old> \
In comparison, TJAPlayer2 for.PC introduces the originally lacking TJA format parsing and Taiko gameplay, while the original BMS-derived format (specifically DTX, GDA, G2D, BMS, & BME) parsing and GITADORA-style gameplay are either removed or not fully functional.
* ← Derived from DTXMania: By FROM (DTXMania), やぎ。 (yyagi), *et al.* <https://osdn.net/projects/dtxmania/>
* Reference: やぎ。 (2020, September 14). *Derivatives of DTXMania*. DTXMania Wiki - DTXMania. OSDN. <https://web.archive.org/web/20240206041603/https://osdn.net/projects/dtxmania/wiki/derivatives>
* Derivatives \
ver.2017072200, non-after 2017, December 15 → TJAPlayer3 (AioiLight): By AioiLight *et al.* <https://github.com/AioiLight/TJAPlayer3>
* ver-1.6.x, non-after 2019, October 27 → TJAPlayer3 (twopointzero): By Jeremy Gray (twopointzero) <https://github.com/twopointzero/TJAPlayer3>
* v5.2.4, non-after 2020, May 19, – v5.2.9 → TJAPlayer3 (KabanFriends): By KabanFriends <https://github.com/KabanFriends/TJAPlayer3>
* Non-after 2021, May 26 → TJAPlayer3-Extended: By KabanFriends <https://github.com/KabanFriends/TJAPlayer3-Extended>
* master (v1.5.7), non-after 2020, March 25 → TJAPlayer3-f: By Mr-Ojii <https://github.com/Mr-Ojii/TJAPlayer3-f>
* master (v1.5.7), non-after 2020, August 28 → TJAPlayer3-Develop: By touhou-renren *et al.*, later mainly maintained by brian218 *et al.* <https://github.com/TJAPlayer3-Develop/TJAPlayer3-Develop>
* master (v1.5.7), non-after 2020, Nov 8 → TJAPlayer3-Develop-ReWrite: By touhourenren *et al.* <https://github.com/touhourenren/TJAPlayer3-Develop-ReWrite>
* Non-after 2021, Sep 21 → OpenTaiko (aka. TJAPlayer3-Develop-BSQ) (0auBSQ): By 0auBSQ *et al.* <https://github.com/0auBSQ/OpenTaiko>
* Actively developed; last referenced version for behavior verification: v0.6.0 b3+, at commit [e6aa17cdc6](https://github.com/0auBSQ/OpenTaiko/commit/e6aa17cdc677c0c6ec1c13ff431c7a96a533e074)
* taiko-web: By Clemaister, later mainly maintained by bui <https://github.com/bui/taiko-web> (no longer unavailable, see <https://github.com/github/dmca/blob/master/2023/02/2023-02-21-bandai.md>)
* Project OutFox: Mainly maintained by Team Rizu <https://projectoutfox.com/>
* Actively developed; last referenced version for behavior verification: v0.5.0 pre043 a17c
* ← Derived from StepMania 5.1: Mainly maintained by The Spinal Shark Collective <https://github.com/stepmania/stepmania> \
In comparison, Project OutFox introduces the originally lacking TJA format parsing and Taiko gameplay (as "taitai" mode), among with many new game modes, theming and gameplay gimmick support, and other improvements.
* ← Derived from StepMania 3.9: By Chris Danford *et al.*
* TaikoManyGimmicks (aka. taikosimu(NN)): By barrier15300 <https://twitter.com/barrier15300/with_replies>
### Proposers
The honorific title is omitted.
Listed in alphabetic dictionary order.
Screen name used for *proposal* | Other screen names | Notes
--- | --- | ---
barrier | barrier15300 | Main maintainer of TaikoManyGimmicks
IID | Iweidieng Iep | Main maintainer of this article
Komi | 0auBSQ, 申しコミ | Main maintainer of OpenTaiko (0auBSQ)
## References
* *太鼓の達人 譜面とか Wiki\** ("Taiko no Tatsujin - Wiki\* about Notecharts and so on"). <https://wikiwiki.jp/taiko-fumen/>
* tjfフォーマット ("tjf Format"). (2009, January 16). *太鼓さん太郎 nicover* ("Taikosan Nico(nico) ver.") plusedit. [`Readme.txt`](/TJAPlayer3/taiko-sim-readmes/utf-8/Readme-taikosan-plusedit.txt)
* This file is distributed along with Taikosan.
* touch (2013, September 12). tjaフォーマット ("tja Format"). *太鼓さん次郎 Ver. 2.92くらい* ("TaikoJiro Ver. 2.92 or so").
* This section of the documentation can be retrieved from both the files [`readme.txt`](/TJAPlayer3/taiko-sim-readmes/taikojiro/utf-8/readme-v2.92.txt) & [`readme.html`](/TJAPlayer3/taiko-sim-readmes/taikojiro/utf-8/readme-v2.92.html) distributed along with TaikoJiro.
* Some of its paragraphs are cited in other web pages:
* dispconf (2014, January 1). *4-2.譜面追加 自分で作る* ("4-2 - Add Notecharts: Make You Own"). 太鼓さん次郎解説!! ("TaikoJiro Explanation!!"). <https://taikosanjiro.hatenablog.com/entry/譜面-2>
* 仕様 ("Specifications"). (2021, August 28). *太鼓さん次郎* ("TaikoJiro"). 太鼓さん次郎交流 Wiki ("TaikoJiro Communication Wiki"). <https://wikiwiki.jp/jiro/太鼓さん次郎#specifications>
* *How to upload tja_tjaのアップロード方法*. (n.d., before 2025, April 23). Malody. <https://m.mugzone.net/wiki/1964>
* kairera0467 (2021, April 30). *TJAPlayer2 for.PC(仮) by.kairera0467*. kairera0467/TJAP2fPC. GitHub. <https://github.com/kairera0467/TJAP2fPC/blob/work-s/実行時フォルダ/readme.txt>
* *TJAPlayer3/CDTX.cs at ver-1.6.x*. (2019, Mar 2). AioiLight/TJAPlayer3. GitHub. <https://github.com/AioiLight/TJAPlayer3/blob/ver-1.6.x/TJAPlayer3/Songs/CDTX.cs>
* AioiLight (2019, April 17). *.tja フォーマット* (".tja Format"). AioiLight.space. <https://web.archive.org/web/20190914085205/https://aioilight.space/taiko/tjap3/doc/tja/>
* Browsable archive on GitHub Pages by Iweidieng Iep: [TJAPlayer3-AioiLight-docs/doc/tja](<https://iepiweidieng.github.io/TJAPlayer3/TJAPlayer3-AioiLight-docs/doc/tja.html>)
* KabanFriends (2021, May 29). *New TJA Commands in TJAPlayer3-Extended*. KabanFriends/TJAPlayer3-Extended. GitHub. <https://github.com/KabanFriends/TJAPlayer3-Extended/blob/master/Test/COMMANDS.txt>
* *TJA format*. (2021, September 28). bui/taiko-web Wiki. GitHub. <https://web.archive.org/web/20230103093826/https://github.com/bui/taiko-web/wiki/TJA-format>
* Archive on GitHub Gist by Katie Frogs: <https://gist.github.com/KatieFrogs/e000f406bbc70a12f3c34a07303eec8b>
* Katie Frogs (2023, Feburary 12). *taiko-web-plugins/README.md at main*. KatieFrogs/taiko-web-plugins. GitHub. <https://github.com/KatieFrogs/taiko-web-plugins/blob/main/README.md>
* Mr-Ojii (2023, Mar 28). *TJAPlayer3-f/AdditionalFeatures.md at v2*. Mr-Ojii/TJAPlayer3-f. GitHub. <https://github.com/Mr-Ojii/TJAPlayer3-f/blob/v2/TJAPlayer3-f/Docs/AdditionalFeatures.md>
* 0auBSQ (2023, September 18). *New Commands*. 0auBSQ/OpenTaiko. GitHub. <https://github.com/0auBSQ/OpenTaiko/blob/main/OpenTaiko/Documentation/Tja/NewCommands.md>
* *OpenTaiko/CDTX.cs at main*. (2024, May 3). 0auBSQ/OpenTaiko. GitHub. <https://github.com/0auBSQ/OpenTaiko/blob/main/OpenTaiko/src/Songs/CDTX.cs>
* *OpenTaiko/NotesManager.cs at main*. (2024, April 15). 0auBSQ/OpenTaiko. GitHub. <https://github.com/0auBSQ/OpenTaiko/blob/main/OpenTaiko/src/Stages/07.Game/Taiko/NotesManager.cs>
* Squirrel (2023, November 4). *TJA Compatibility*. Project OutFox Wiki. <https://outfox.wiki/dev/mode-support/tja-support/>
* barrier (2023, June 19). [*readme.txt*](/TJAPlayer3/taiko-sim-readmes/TaikoManyGimmicks/utf-8/readme-v0.6.6%CE%B1-revised.txt). *TaikoManyGimmicks ver0.6.6α*.
* This version is not bundled with TaikoManyGimmicks but is published in the *TaikoManyGimmicks配布鯖* "TaikoManyGimmicks Release Server" Discord Server.
* nyoro (2023, November 11). *TJA Format Support*. Visual Studio Marketplace. <https://marketplace.visualstudio.com/items?itemName=nyoro.tja-format-support>
* This vscode extension provides short explanations for TJA headers/commands, including headers/commands introduced by TaikoManyGimmicks.
## TODO
* Reorder headers & commands by their categories & popularity and possibility of being supported: Pending.
* List & explain known gimmicks, especially the gimmicks which have appeared in multiple charts by different chart creators and received terminologies: Planned.
* Add (unimplemented) *proposal*s from simulator developers.
* Add separated recommendation for respectively simulator behavior and chart creators and editors. Currently, the relevant paragraphs have ambiguous phrasing.
* Add standardization information, especially the OpenTaiko-OutFox standardization and the direction toward behavior unification. Currently, the relevant paragraphs lack clarifications and are misleading.
* Fix missing and/or unverified information about Project OutFox.
* Add a dedicated section for explaining gameplay mechanics.
* GitHub page file managements
* Add test TJA files and references for mentioned behaviors for easy re-verification.
* Host image resources on GitHub page locally.
* Update the GitHub page site to add the table-of-content navigation static/popup window