Giter Site home page Giter Site logo

gemichelst / ni-file Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gitter-badger/ni-file

0.0 0.0 0.0 90.58 MB

Native Instruments container file format support, including compressed presets.

Home Page: https://gitter.im/ni-file/

Rust 100.00%

ni-file's Introduction

Native Instruments File Format

Native Instruments file format support for rust. Very basic support at the moment, mostly surrounding the container format (called a NISound document).

Anyone who wants to join the effort, please join the telegram group at https://t.me/ni_file

I'm on telegram at @deathdisco.

Progress

After several years doing this part time, the container format is around 80% reversed, not all of this is reflected in the code. Currently you can:

  • read container metadata (NISound version, App type etc)
  • search / traverse container hierarchy with inspection
  • access inner presets (the actual raw preset data of each app)

More is coming very shortly, please check the examples directory for usage.

Installation

This is a library, but several helper binaries will be included.

  • ni-info prints information about NISD containers.
  • ni-tree prints the tree structure of NISD containers.
  • ni-extract (coming soon) dumps presets and samples from ni files
  • ni-convert (coming soon) converts between formats
cargo install --path . --example ni-info

To just run the examples in place, try:

cargo run --example ni-info -- tests/data/nisound/file/**/*.nki
cargo run --example ni-info -- tests/data/nisound/file/**/*.nkm

FAQ

Q: Can I extract .wav files from kontakt files? A: Not yet but there is functionality in the code for extracting samples from monoliths.

Q: Can I extract any meaningful information besides library and file metadata from any preset types? A: Not yet but this is coming very very soon. The container format took years to reverse engineer part-time but that was most of the tricky work done. This work also opens the door for other reversers to document simpler internal preset structures.

Q: Will there be write support? A: I don't really care about keeping people inside the NI ecosystem, just helping them escape it, so probably not unless someone PRs it.

Q: Are compressed samples/presets supported? A: Yes, files mostly use FastLZ compression internally and tdecompression is supported by the library.

Q: Is decryption supported? A: No, but this will be eventually implemented and supported through legal means.

Special Thanks

To Native Instruments, for being a driving force in monopolising the audio software industry, helping to make it so proprietary that I learned how to reverse engineer to open up your formats to everyone. I learned so much due to your propensity for evil. As anyone who has ever delved into audio software knows, proprietary formats have killed the experience ever since it first existed. So many projects destroyed midway due to 'compatibility issues' and whatnot. If you want to make samplers or dildos best of luck I don't care, but you don't own what people make with your software, including the patch metadata itself.

Fair use exists for a reason, and this is it.

ni-file's People

Contributors

monomadic avatar doescapswork avatar ma5onic avatar

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.