Giter Site home page Giter Site logo

bemuse-tools's People

Contributors

dtinth avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

drummaniac

bemuse-tools's Issues

BEMUSEPACK 2.0

Revamp the format. Totally breaks the older version. It's good that 1.0 has never been used.

BEMUSEPACK

A .bemuse file contains

  • an arbitrary metadata
  • an opaque payload

Usually, the metadata describes what's inside the payload.

File Format

  • 10 bytes magic string BEMUSEPACK
  • 4 bytes Uint32LE — metadata size N (may be 0 if no metadata)
  • N bytes — metadata
  • the rest of the file — payload

Metadata

An entry file should have a metadata of more than 0 bytes. It should be a valid JSON. It describe all files both internal and external. External packages should have metadata of 0 bytes.

{
  version: 2,
  song: { title, artist, genre, ... },
  refs: [
    { size, hash }, // the first ref (0) describes its own payload
    { path, size, hash }, // ref 1's payload metadata
    ...
  ],
  files: [
    {
      name, type, size, hash,
      refs: [
        { [ ref, start, end ], ... }, // start, end relative to payload
        ...
      ]
    }
  ]
}

Display progress bar instead

Since we want to include song metadata into the BEMUSE file, the metadata being written should be visible.

Right now, the STDOUT is overwhelmed by log messages. We should turn that into a progress bar instead.

Only pack assets in bemuse archive, restructure

After much consideration, finally I feel that it's better to only pack assets (keysounds and BGA) into the bemuse pack.

Things that change often VS things that don't

It is planned that .bemuse files will be cached long-term, so we should put things that don't change often here.

  • Things that may change
    • List of BMS files
      • new levels, sabuns, note updates and fixes
    • Metadata
      • correction to artist names and profiles
      • updates to README text
  • Things that don't change often
    • Keysound files
    • BGA files

New folder and file structure

  • [song name]/
    • normal.bms
    • hyper.bms
    • another.bms
    • sabun_title.bms
    • assets/
      • metadata.json — same as in BEMUSEPACK v2
      • sound.part1.[hash].bemuse
      • sound.part2.[hash].bemuse
      • bga.part1.[hash].bemuse
      • bga.part2.[hash].bemuse

BEMUSEPACK v3

Folder-based approach. All metadata is stored in metadata.json, so no more need for metadata chunk.

  • 10 bytes magic string BEMUSEPACK
  • the rest of the file — payload

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.