太鼓譜を記述するためのオープンなフォーマット。
(多言語への翻訳などContributionしてくれる方お待ちしております。)
段位認定の対応
(多言語への翻訳などContributionしてくれる方お待ちしております。)
譜面分岐の対応
(現在仕様の策定中です。もしよろしければ、issueの方に挙がっていますのでよろしくお願いします。)
太鼓譜を記述するためのオープンなフォーマット。
License: MIT License
tciに追加。
曲と効果音の音量調整。
tjaにおけるSONGVOL: SEVOL:と同じものです。
"songvol": 80,
"sevol": 100,
TJAPlayer3で実装された段位認定モードでは、段位認定専用の難易度を作成し、そこに譜面を曲数分記述するという方法が取られていましたが、これでは譜面ファイル自体、他の難易度との共存が難しく、またふうせん連打などの記述も分かりづらいものです。命令上に譜面情報を格納する仕様上制約もありました。
そこで、Open Taiko Chartでは、「.tjc」フォーマットのように、複数の「.tci」ファイルを読み込んでそれを連奏するという仕組みにしようと考えています。そうすることで、譜面ファイルをひとつに結合する作業がなくなり、また譜面の情報は「.tci」ファイルから取得できるため、再利用性も高まります。
では、段位認定用のフォーマットはどのようなものにすべきでしょうか。自由に書き込んで構いません。
現状のOTCフォーマットの構想には、tjaフォーマットにあったBMSCROLL/HBSCROLLの要素が無いように思われます。
tjaからの移行を考える上では必要不可欠な要素と考えており、ぜひ導入してほしいです。
個人的には、OTCフォーマットでこれらを表現するならば、.tccの変数名(tjaで考えるなら、COURSE以下の各ヘッダーと譜面部分?理解不足があったらすみません)として、
"scoreinit": 800,
"scorediff": 200,
"scoreshinuchi": 1200,
"balloon": [ 6, 10, 24 ],
"bmscroll": 0,
"measure":(以下譜面に続く)
のような位置にねじ込むのが最善かな、と考えています。
こうした場合、変数名 bmscroll の値は 0, 1, 2 のいずれかとし、それぞれがtjaフォーマットで言うところの
0:通常のスクロール
1:BMSCROLL
2:HBSCROLL
とする・・・のが個人的にはしっくりきます。
皆さんの意見や問題点の指摘などがありましたら、お願いします。
小節線の表示/非表示を切り替える命令文。
bmsのように選曲画面で曲の画像を表示可能にする案。
主にギミック譜面に使える命令として、譜面をワープさせる命令が欲しいです。
BMSCROLL時、今まではワープを実装しようとすると"#bpm 9999999"のように書かなければならず、スマートではありませんでした。
["1000","#warpstart","10001000","#warpend","1000"]
とした場合、この小節では2拍目から4拍目にワープする。
音符を回転できるようにする。
#rotate n1
n1
: 音符の角度。度数法で指定する。
多くのプログラミング言語において三角関数は弧度法を用いるので、プログラム上で度数法から弧度法に変換する必要がある。
MOVIEOFFSETに代わるものがないことに気づいたので。
オフセットの基準をどこにするかが問題。
#bpm
、#scroll
等に対して相対指定を行えるようにする。
今までは絶対的な値を指定していた e.g. #bpm 160
が、これに加えて、「前の値から加算・減算する」という書式を作る。
e.g. 現在のBPMが160で、小節毎に10ずつ増やしたい場合
[ "#bpm +10" ],
[ "#bpm +10" ],
[ "#bpm +10"],
e.g. 現在のスクロール速度が1で、小節毎に0.1ずつ減らしたい場合
[ "#scroll -0.1" ],
[ "#scroll -0.1" ],
[ "#scroll -0.1" ],
スクロールの負数指定は、今まで未定義だったがこの変更を持って負数になるスクロール速度はフォーマットとして正しくなくなる。
逆走に関しては、音符の回転命令を作ることで代用する。
既存の「.tja」フォーマットでは、譜面分岐は#SECTION
で条件をリセットし、#BRANCHSTART X,Y,Z
で譜面分岐を開始し、#N
、#E
、#M
で普通譜面、玄人譜面、達人譜面を記述するという形でした。ですがこれでは各譜面で小節数の違いができてしまったり、そもそも上から下へ譜面が流れていくこのフォーマットでは、複雑な譜面分岐になればなるほど難解なものになります。また、強制○○譜面分岐なども取り得る数値を超えたものを指定して分岐させるのではなく、ひとつの機能として提供するべきだと思います。
そこで、「Open Taiko Chart」ではより譜面分岐を簡潔に表現するためのフォーマットを作ろうと思っています(現時点譜面分岐というのが本家独自の仕様であり、また自分が使うこともないため優先度はかなり低いですが……)。
もしよろしければ意見などどうぞ。
#scrollとは別に、譜面のスクロール速度をBPMで直接指定できる命令が欲しいです。
名前の候補としては#bscrollとか?
#scrollだけでも同じ見た目の譜面は実現可能ですが、とにかく計算が面倒です。
特に、BPMが細かく変わるなか、一定のスクロール速度を実現しようとしたときに効果を発揮するかと。
煩わしさを軽減するための命令。
この名前だとbmscrollと名前が似ているのでややこしい。bmscroll側をhbscrollに改名する?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.