bemusic / bmson-spec Goto Github PK
View Code? Open in Web Editor NEWTechnical specification for bmson format
Home Page: http://bmson-spec.readthedocs.org/
Technical specification for bmson format
Home Page: http://bmson-spec.readthedocs.org/
Criteria:
How to list available songs?
Another alternative would be to use an Atom feed or RSS feed, like Podcast. Either as an <enclosure>
or <link rel="enclosure"
or a new XML namespace.
Both Bemuse and CircularRhythm are using custom file format to save assets.
An alternative would be to use ZIP files:
Some problem with ZIP files:
bga.zip
. May need to generate extra metadata file for web distribution.Proposed by @mechacrash to me.
This idea is taken from classic beatmania.
It is a kind of longnote that only appears on turntable.
Instead of continuing to spin the turntable, you can scratch as you will.
Should we include this in the specification, or make implementation player-dependant?
The standard does not explain how the case of bpm <= 0 should be dealt with.
I believe the case should be that:
Opinions?
Requesting support for WebM.
https://www.webmproject.org/
Requesting FLIF support for bmson. It seems this format is much smaller than super compressed PNG, and its free licensed.
http://flif.info/
Hi, recently I heard new bms emulator is working in progress and I'm very glad to hear that. But I found there's no support about midi related support(like keysound pitch ...) in bmson format.
Recently I'm working on with *.vos format, which is quite old rhythm game char format based on midi, personally, and I'm integrating that format with my own project. And as vos format is quite old one, I was planning to export this file in 'new playable file format I'm developing myself', and now I'd more like to export as bmson format.
I wish this new bms format, bmson, can support midi file format for playing, as there's no reason to unsupport. just more metadata and pitch data can make bmson format support midi.
Original game will add a new kind of LN(MSS).
I used the idea of LN key-up sound (#9) as a way to achieve this: allow "up": true
for LN objects.
LN1 is a regular LN.
LN2, has "up": true
, overlaps LN1.
Due to "up": true
, the player will know that LN2 is a MSS object and not a regular LN.
In this way, it is possible to have a Normal Charge section and a Hell Charge section coexist in the same MSS.
For example, in the image above, if we change LN2 to "t": 3
, SP1 will be the Normal Charge section and SP2 will be the Hell Charge section.
The text up to this point has been translated using an automatic translation site (deepl.com). The following is the text before translation.
ここまでの文章は自動翻訳サイト(deepl.com)を用いて翻訳されました。以下に翻訳前の文章を示します。
オリジナルゲームに新種のロングノーツ(MSS)が追加されるそうです
これをbmson上で再現する方法として、LN key-up sound (#9)のアイデアを用い、LNにも"up": true
を用いることを提案します。
LN1 は、通常のLNです。
LN2 には"up": true
があり、LN1と重なっています。
"up": true
があるので、再生ソフトはLN2が通常のLNではなく、MSSオブジェクトであることがわかります。
このようにすることで、同じMSS中に通常のチャージ区間とヘルチャージ区間を共存させることができます。
例えば、上の画像でLN2を"t": 3
に変更すると、SP1は通常のチャージ区間に、SP2はヘルチャージ区間になります。
Notes which remove HP when hit do not have a standard specification on bmson yet.
Given their popularity, I believe we should have a way to specify bombs, whether we'll use a sliced sound (or affect the cutting algorithm at all) or similar.
Besides, I think people have used tricks to do Bombs with special sounds so should we look into this use case as well?
zardoru, wosderge, flicknote, suitougreentea, exclusion and I discussed the addition of this in a DM conversation on Twitter.
The idea is simple: The ending point of a LN plays a sound when the player releases the key.
This lets us emulate back-spin scratch from IIDX where a new sound is played at the note release, and it also offers more variety and interesting possibilities for chart creation.
Pictured above:
note1 with l: 240
is a regular long note.
note2 with up: true
overlaps note1
Due to up: true
, the player will know that note2 is a key-up sound and not a regular note.
note2 may also be in a different sound channel than note1. Like so:
Some key points from the discussion:
note1.y + note1.l == note2.y
as an overlap. We should make it explicitly clear that there is an overlap to ensure that all implementations are similar.Currently it is up to the player to decide which LN type the chart will use. (LN, CN or HCN).
exch implemented an unofficial solution to this in beatoraja which determines LN type per note.
However I think specifying LN type per note becomes quickly tedious and it is also very confusing for the person playing the chart if it mixes LN types.
I would like to propose a global command that specifies the LN type for the entire chart instead of each individual note.
ln_type: 1/2/3
1 = LONG NOTE
2 = CHARGE NOTE
3 = HELL CHARGE NOTE
Besides BPM/Stops, I think it would be a good idea to add to the spec a standard specification for new timing classes featured in Stepmania and recently osu!mania:
Initial proposition would be to { Time: pulse, Value: pulses_to_skip }
for Warps, and adopt the stepmania initial value, final value, start time and duration specification for speeds and just use the multiplier for scrolls.
I know this is really specific but I'm making a game in which each chart can have custom timing window values (Delta in Pulses), like this:
"judgement_deltas": { "KOOL": 5, "COOL": 18, "GOOD": 40, "MISS": 56 }
And the same but for life like this:
"life_deltas": { "COOL": 0.2, "GOOD": 0.1, "MISS": -2.0, "FAIL": -5.0 }
Edit: for the timing they're symmetric but we can just make "JUDGE": [-10,+5]
for asymmetry. (Like in 2DX)
Opus provide more effective quality and impressive compression than ogg with major browser support
Especially, opus 1.2 highly improve the music quality with same bitrate. even just 32kb/s, opus still save good quality.
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.