A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without altering any audio information.

Overview
OptiVorbis logo

OptiVorbis

A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without altering any audio information.

CI workflow status crates.io latest version docs.rs status

crates.io downloads GitHub Releases downloads

πŸ” Overview

OptiVorbis does lossless optimizations and repairs of complete, seekable Vorbis I audio streams, usually contained in Ogg Vorbis (.ogg) files, as defined in the Vorbis I specification. It leverages the great flexibility the Vorbis I stream setup configuration header provides to achieve its goals.

The optimization is lossless: streams processed by this library are guaranteed to be decoded to the same audio samples as before by any sane decoder. The internal file structure may differ substantially, but these differences are transparent for end-users, as the resulting streams still conform to the specification. At the user's discretion, it is possible to save even more space by removing comments (track title, author, etc.) and encoder version information.

In addition, OptiVorbis' understanding of the Vorbis format and container encapsulations, combined with the somewhat more lenient, purpose-built parsers it uses, provide it with some repair capabilities. It also tends to output more detailed and actionable error information on failure than other tools, rendering it suitable for sanity-checking Vorbis streams.

In a nutshell, the optimization works by doing two passes over the Vorbis stream data, which requires the whole stream to be available and seekable, usually either in a memory buffer or a file:

  • The first pass analyzes the stream, gathering internal data structure statistics.
  • The second pass uses the data obtained in the first pass to select the most optimal data structures to use and rewrites the stream accordingly. At this point, OptiVorbis has more knowledge about the usage of data structures than every known Vorbis encoder, making better choices.

πŸ“₯ Installation

OptiVorbis is officially distributed in three ways:

  • Within the project demo web page.
  • As a command-line interface (CLI) application that both savvy end-users and other applications can use.
  • As a Rust library that other Rust packages may use.

If you are an end-user looking to optimize files, either the demo web page or the CLI application is all you need. On the other hand, if you are a developer, you should look into the CLI or the Rust library.

Demo web page

Just visit the website: no installation required! Only a modern web browser that supports the required technologies is needed. Notably, Internet Explorer is not supported, but you should no longer be using it.

CLI

Download the appropriate CLI executable from GitHub Releases, according to your operating system and CPU architecture. The executables are statically linked, so they are entirely self-contained and do not require any system configuration to run.

If you are using a Unix-like OS (Linux, macOS), remember that the executable must have the execute permission to work. This permission may be granted with the chmod command: chmod +x optivorbis.

If you want to go bleeding edge and try out code that was not yet released, you can get the latest CLI executables from the GitHub Actions CI workflow. No guarantees are made about the stability of these builds.

Rust library

Like any other dependency, add it to the Cargo.toml manifest of your project, and start calling its API as you like. Check out its page at crates.io and the API docs at docs.rs to get started.

The minimum supported Rust version (MSRV) for every package in this repository is 1.61. Bumping this version is not considered a breaking change for semantic versioning purposes. We will try to do it only when we estimate that such a bump would not cause widespread inconvenience or breakage.

πŸ“• Usage

By now, it should be obvious how to use the demo web page or Rust library. The CLI arguments follow a well-defined syntax. Several options are accepted to customize the optimization process and affect the output and operation of the CLI. The most important one to get started is --help, which shows the following usage help:

Usage:
    optivorbis [OPTION]... <input file> <output file or ->

Options:
    -h, --help          Prints information about the accepted command line
                        arguments and exits.
        --version       Prints version and copyright information, then exits.
    -q, --quiet         When enabled, the program will only print error
                        messages, unless -h is specified.
    -v, --verbose       Increases the verbosity of the messages. Can be
                        repeated several times.
    -r, --remuxer REMUXER
                        The remuxer to use for managing the encapsulation of
                        Vorbis streams in a container. If not specified, it
                        will be automatically deduced from the extension of
                        the output file.
                        Available remuxers: ogg2ogg
        --vendor_string_action VENDOR-STRING-ACTION
                        Changes how the vendor string contained in the Vorbis
                        identification header will be dealt with.
                        Available actions: copy, replace, appendTag,
                        appendShortTag, empty
        --comment_fields_action COMMENT-FIELDS-ACTION
                        Changes how the user comment fields contained in the
                        Vorbis comment header will be dealt with.
                        Available actions: copy, delete
        --remuxer_option OPTION=VALUE
                        Sets a remuxer-specific option to a value.
                        -----------------------
                        ogg2ogg remuxer options
                        -----------------------
                        - randomize_stream_serials=BOOLEAN
                        If set to true, the stream serials will be randomized,
                        following the intent of the Ogg specification. Set to
                        false to disable this behavior and have more control
                        over the serials. The default value is true.
                        - first_stream_serial_offset=INTEGER
                        A zero or positive integer that sets the offset that
                        will be added to the serial of the first stream. When
                        not randomizing stream serials, the offset matches the
                        serial that will be used for the first stream. The
                        default value is 0.
                        - ignore_start_sample_offset=BOOLEAN
                        Sets whether a non-zero calculated granule position
                        for the first audio sample will be honored when
                        recomputing granule positions in the generated Ogg
                        file or not. This usually is a good thing, but for
                        increased compatibility with some players or dedicated
                        purposes it may be advised to ignore this offset. The
                        default value is false.

πŸ“Š Testing and results

OptiVorbis has been developed as a part of a master's thesis and extensively tested before its public release with a dataset of 1783 randomly selected, valid Ogg Vorbis files downloaded from Freesound, totaling 164 hours and 16.58 GiB of sound data. OptiVorbis passed all the defined unit, integration, and system tests, achieving a size reduction for every analyzed file without altering the audio samples as decoded by oggdec (from the Debian vorbis-tools package, version 1.4.2). The only exceptions were four files that had their granule position data corruption fixed by OptiVorbis. The dataset comprised all kinds of Ogg Vorbis files containing mono, stereo, and surround sounds at varying sampling rates, generated by a wide variety of encoders. It was optimized in about half an hour, parallelizing the work across six CPU cores.

The following boxplot represents the distribution of relative per-file size reductions achieved by OptiVorbis.

Even though the optimization potential may vary substantially, every file had its size reduced. The achieved reduction was significantly better than using generic compression tools on the Ogg Vorbis files, such as xz. Interestingly, the file size reduction distribution is slightly skewed towards higher reduction rates, as evidenced by the average (11.35%) being slightly higher than the median (9.62%). Half of the analyzed files had their size reduced between 4.91% and 13.44%.

Notably, the testing techniques included fuzzing, employing the AFL++ fuzzer. With the help of AFL++, the optimization of 600 million mutated Ogg Vorbis files was tested, discovering tens of failing runtime assertions that were fixed.

βš–οΈ License

The OptiVorbis library is licensed under either of

at your option. The OptiVorbis CLI is licensed under the GNU Affero General Public License, Version 3 only. Other components (the web demo, etc.) are licensed according to the license files present in their root directory and their package metadata, if any.

✨ Contributing

Pull requests are accepted. Feel free to contribute if you can improve some aspect of the OptiVorbis project!

Contributions include, but are not limited to:

  • Writing good bug reports or feature requests
  • Sending a PR with code changes that implement an improvement or fix an issue
  • Recommending OptiVorbis to others and engaging with the community
  • Economically supporting the project (check out the "Sponsor" button in the GitHub page)

Code contributions must pass CI checks and be deemed of enough quality by a repository maintainer to be merged. OptiVorbis is structured as a standard Cargo workspace with several packages:

  • packages/optivorbis: the OptiVorbis Rust library.
  • packages/optivorbis_afl_fuzz_target: an AFL++ target for fuzzing OptiVorbis. See also the related scripts/afl-fuzz.sh script.
  • packages/optivorbis_cli: the OptiVorbis CLI.
  • packages/vorbis_bitpack: an implementation of bitwise reading and writing operations according to the Vorbis bitpacking convention.

The website (web) is a standard npm project that uses WebPack and the OptiVorbis library WASM target JS bindings, built with wasm-pack.

🀝 Contact

We welcome friendly talk about the project, including questions, congratulations, and suggestions. Head to the GitHub Discussions page to interact with fellow users, contributors and developers.

πŸ§‘β€πŸ€β€πŸ§‘ Contributors

Thanks goes to these wonderful people (emoji key):


Alejandro GonzΓ‘lez

πŸ’» πŸ“– 🎨 πŸ€” 🚧 πŸ“† πŸ”£ πŸ–‹ πŸ”¬ πŸš‡

victorlf4

πŸ€”

Miguel

🎨

sya-ri

πŸ€” πŸš‡

This project follows the all-contributors specification. Contributions of any kind welcome!

➑️ Related software

If you found OptiVorbis useful, you may be interested in programs such as:

  • rogg: a small library for manipulating Ogg Vorbis files, which offers advanced and unusual features such as adjusting granule positions, replacing stream serial numbers, and recomputing the CRC of every Ogg page.
  • oggz: a library and set of command-line tools for low-level inspection and manipulation of Ogg Vorbis files.
  • revorb: a command-line tool for recomputing granule positions of Ogg Vorbis files. OptiVorbis does such recomputation automatically, too.
  • rehuff: a proprietary, buggy, proof of concept program for optimizing Vorbis streams from 2002, written by Segher Boessenkool. OptiVorbis expands upon the optimization techniques said to be implemented in rehuff, offering a much more finished, reliable solution that is open-source.

β›” Known limitations

As a concession to implementation simplicity, Vorbis streams that use the floor signal component format of type 0 are not supported. According to the Vorbis I specification, this format is "of limited modern use" and has been effectively deprecated by every known Vorbis encoder for more than 20 years, so streams with this floor type should be extremely rare to find. Pull requests that address this limitation are welcome.

Due to the two-pass optimization algorithm described above, OptiVorbis is not readily applicable for live-streaming use cases.

The Vorbis I setup header codebook format is vulnerable to denial of service attacks, as extremely dense prefix code trees, which take a significantly long time to parse, are valid according to the specification. OptiVorbis does not impose a depth or density limit in such trees, which guarantees its interoperability, but renders it vulnerable to specially-crafted files. This may be addressed in the future as information about the interoperability and mitigation impact of limiting the tree depth is gathered. In the meantime, applications dealing with untrusted files should be aware of this and resort to using OS features to bound resource consumption when applicable.

Comments
  • Update dependency mini-css-extract-plugin to v2.7.2

    Update dependency mini-css-extract-plugin to v2.7.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | mini-css-extract-plugin | 2.7.1 -> 2.7.2 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    webpack-contrib/mini-css-extract-plugin

    v2.7.2

    Compare Source


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update typescript-eslint monorepo to v5.45.1

    Update typescript-eslint monorepo to v5.45.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @typescript-eslint/eslint-plugin | 5.45.0 -> 5.45.1 | age | adoption | passing | confidence | | @typescript-eslint/parser | 5.45.0 -> 5.45.1 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)

    v5.45.1

    Compare Source

    Bug Fixes
    • eslint-plugin: [keyword-spacing] unexpected space before/after in import type (#​6095) (98caa92)
    • eslint-plugin: [no-shadow] add call and method signatures to ignoreFunctionTypeParameterNameValueShadow (#​6129) (9d58b6b)
    • eslint-plugin: [prefer-optional-chain] collect MetaProperty type (#​6083) (d7114d3)
    • eslint-plugin: [sort-type-constituents, sort-type-union-intersection-members] handle some required parentheses cases in the fixer (#​6118) (5d49d5d)
    typescript-eslint/typescript-eslint (@​typescript-eslint/parser)

    v5.45.1

    Compare Source

    Bug Fixes
    • parser: remove the jsx option requirement for automatic jsx pragma resolution (#​6134) (e777f5e)

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update dependency webpack-cli to v5.0.1

    Update dependency webpack-cli to v5.0.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | webpack-cli (source) | 5.0.0 -> 5.0.1 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    webpack/webpack-cli

    v5.0.1

    Compare Source

    Bug Fixes

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update typescript-eslint monorepo to v5.45.0

    Update typescript-eslint monorepo to v5.45.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @typescript-eslint/eslint-plugin | 5.44.0 -> 5.45.0 | age | adoption | passing | confidence | | @typescript-eslint/parser | 5.44.0 -> 5.45.0 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)

    v5.45.0

    Compare Source

    Bug Fixes
    • eslint-plugin: [array-type] --fix flag removes parentheses from type (#​5997) (42b33af)
    • eslint-plugin: [keyword-spacing] prevent crash on no options (#​6073) (1f19998)
    • eslint-plugin: [member-ordering] support private fields (#​5859) (f02761a)
    • eslint-plugin: [prefer-readonly] report if a member's property is reassigned (#​6043) (6e079eb)
    Features
    • eslint-plugin: [member-ordering] add a required option for required vs. optional member ordering (#​5965) (2abadc6)
    typescript-eslint/typescript-eslint (@​typescript-eslint/parser)

    v5.45.0

    Compare Source

    Note: Version bump only for package @​typescript-eslint/parser


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update dependency autoprefixer to v10.4.13

    Update dependency autoprefixer to v10.4.13

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | autoprefixer | 10.4.12 -> 10.4.13 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    postcss/autoprefixer

    v10.4.13

    Compare Source

    • Fixed missed prefixes on vendor prefixes in name of CSS Custom Property.

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update Rust crate afl to 0.12.9

    Update Rust crate afl to 0.12.9

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | afl | dependencies | patch | 0.12.8 -> 0.12.9 |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    rust-fuzz/afl.rs

    v0.12.9


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update dependency postcss to v8.4.18

    Update dependency postcss to v8.4.18

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | postcss (source) | 8.4.17 -> 8.4.18 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    postcss/postcss

    v8.4.18

    Compare Source

    • Fixed an error on absolute: true with empty sourceContent (by Rene Haas).

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update typescript-eslint monorepo to v5.40.0

    Update typescript-eslint monorepo to v5.40.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @typescript-eslint/eslint-plugin | 5.39.0 -> 5.40.0 | age | adoption | passing | confidence | | @typescript-eslint/parser | 5.39.0 -> 5.40.0 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)

    v5.40.0

    Compare Source

    Bug Fixes
    Features
    typescript-eslint/typescript-eslint (@​typescript-eslint/parser)

    v5.40.0

    Compare Source

    Note: Version bump only for package @​typescript-eslint/parser


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update Rust crate afl to 0.12.8

    Update Rust crate afl to 0.12.8

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | afl | dependencies | patch | 0.12.6 -> 0.12.8 |


    Release Notes

    rust-fuzz/afl.rs

    v0.12.8

    v0.12.7


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update Rust crate ouroboros to 0.15.2

    Update Rust crate ouroboros to 0.15.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | ouroboros | dependencies | patch | 0.15.1 -> 0.15.2 |


    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Update dependency favicons-webpack-plugin to v6

    Update dependency favicons-webpack-plugin to v6

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | favicons-webpack-plugin | 5.0.2 -> 6.0.0 | age | adoption | passing | confidence |


    ⚠ Dependency Lookup Warnings ⚠

    Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information.


    Release Notes

    jantimon/favicons-webpack-plugin

    v6.0.0

    Compare Source

    • update dependencies to their latest versions (#​342)

    Configuration

    πŸ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    β™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    πŸ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 0
  • A setting to overwrite files/bulk optimization?

    A setting to overwrite files/bulk optimization?

    Hello! I've stumbled upon this program, and the first thing I thought is that it would be extremely handy if I could just point this application at a folder and have it optimize everything within it without having to manually input each file. I'm a barely tech literate sort of person so I don't really know how to write a fancy script that would do that for me automagically like what I've seen others do. If there was a setting to optimize and overwrite the original files without having to do it all manually, that would rock my socks off. It would be doubly awesome if I could just drag and drop files/folders on the executable and have it do all the magic without ever touching a command prompt, kind of like how PNGOUT does it!

    enhancement hacktoberfest 
    opened by abbuw 1
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.


    ⚠ Dependency Lookup Warnings ⚠

    • Renovate failed to look up the following dependencies: optivorbis.

    Files affected: web/package.json


    Other Branches

    These updates are pending. To force PRs open, click the checkbox below.

    • [ ] chore(deps): update mcr.microsoft.com/vscode/devcontainers/rust docker tag to v1

    Detected dependencies

    cargo
    packages/optivorbis/Cargo.toml
    • ogg 0.9.0
    • indexmap 1.9.2
    • bumpalo 3.11.1
    • tinyvec 1.6.0
    • getrandom 0.2.8
    • rand_xoshiro 0.6.0
    • thiserror 1.0.38
    • strum_macros 0.24.3
    • ouroboros 0.15.5
    • slice-group-by 0.3.0
    • log 0.4.17
    • wasm-bindgen 0.2.83
    • wee_alloc 0.4.5
    • console_log 0.2.0
    • console_error_panic_hook 0.1.7
    • pretty_env_logger 0.4.0
    • oggvorbismeta 0.1.0
    • git2 0.15.0
    • time 0.3.17
    packages/optivorbis_afl_fuzz_target/Cargo.toml
    • afl 0.12.11
    packages/optivorbis_cli/Cargo.toml
    • getopts 0.2.21
    • log 0.4.17
    • stderrlog 0.5.4
    packages/vorbis_bitpack/Cargo.toml
    • acid_io 0.1.0
    • libm 0.2.6
    dockerfile
    .devcontainer/Dockerfile
    • mcr.microsoft.com/vscode/devcontainers/rust 0-buster
    github-actions
    .github/workflows/ci.yml
    • actions/checkout v3
    • dtolnay/rust-toolchain v1
    • Swatinem/rust-cache v2
    • actions/checkout v3
    • Swatinem/rust-cache v2
    • actions-rs/clippy-check v1
    • EmbarkStudios/cargo-deny-action v1
    • actions/upload-artifact v3
    • actions/checkout v3
    • actions/setup-node v3
    • Swatinem/rust-cache v2
    • peaceiris/actions-gh-pages v3
    npm
    web/package.json
    • core-js 3.27.1
    • optivorbis ^0.1.2
    • @typescript-eslint/eslint-plugin 5.48.0
    • @typescript-eslint/parser 5.48.0
    • @wasm-tool/wasm-pack-plugin 1.6.0
    • autoprefixer 10.4.13
    • css-loader 6.7.3
    • cssnano 5.1.14
    • eslint 8.31.0
    • eslint-config-airbnb-base 15.0.0
    • eslint-import-resolver-typescript 3.5.2
    • eslint-plugin-import 2.26.0
    • favicons-webpack-plugin 6.0.0
    • html-webpack-plugin 5.5.0
    • mini-css-extract-plugin 2.7.2
    • postcss 8.4.21
    • postcss-loader 7.0.2
    • svg-inline-loader 0.8.2
    • tailwindcss 3.2.4
    • ts-loader 9.4.2
    • typescript 4.9.4
    • webpack 5.75.0
    • webpack-cli 5.0.1
    • webpack-dev-server 4.11.1

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    dependencies 
    opened by renovate[bot] 0
Releases(v0.1.2)
Owner
OptiVorbis
The home of OptiVorbis, a software project for lossless, format-preserving, two-pass optimization and repair of Vorbis streams.
OptiVorbis
Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it.

MIDNOTE Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it. Goals As a blind musician my

null 4 Oct 30, 2022
Quite OK Audio format in Rust.

QOA - The Quite Ok Audio Format This is a pure Rust (zero dependency) implementation of the QOA audio format. This code is based off the reference C i

Rafael CarΓ­cio 10 Apr 16, 2023
MIDI-controlled stereo-preserving granular-synthesizer LV2 plugin

Stereog "Stereog" rhymes with "hairy dog." Stereog is a MIDI-controlled stereo-preserving granular synthesizer LV2 plugin. It is experimental software

Ed Cashin 6 Jun 3, 2022
Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device.

Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device. Polaris works by streami

Antoine Gersant 1k Jan 9, 2023
A simple GUI rust application that keeps track of how much time you spend on each application.

TimeSpent A simple GUI rust application that keeps track of how much time you spend on each application. Installation Click here to download the Setup

Slacked Lime 4 Sep 23, 2022
A low-overhead and adaptable audio playback library for Rust

Awedio   A low-overhead and adaptable audio playback library for Rust. Examples Play a single sound file: let (mut manager, backend) = awedio::start()

10 Buttons 20 May 25, 2023
Cross-platform audio I/O library in pure Rust

CPAL - Cross-Platform Audio Library Low-level library for audio input and output in pure Rust. This library currently supports the following: Enumerat

null 1.8k Jan 8, 2023
Rust audio playback library

Audio playback library Rust playback library. Playback is handled by cpal. MP3 decoding is handled by minimp3. WAV decoding is handled by hound. Vorbi

null 1.2k Jan 1, 2023
Rust bindings for the soloud audio engine library

soloud-rs A crossplatform Rust bindings for the soloud audio engine library. Supported formats: wav, mp3, ogg, flac. The library also comes with a spe

Mohammed Alyousef 38 Dec 8, 2022
Flutter crossplatform audio playback library powered by golang beep & oto

Rowdy Pure Rust based Dart/Flutter audio playback library Installation $ flutter pub add rowdy Configuration You'll need the Rust toolchain installed

Kingkor Roy Tirtho 3 Aug 31, 2022
TinyAudio is a cross-platform audio output library

TinyAudio TinyAudio is a cross-platform audio output library. Its main goal to provide unified access to a default sound output device of your operati

Dmitry Stepanov 39 Apr 4, 2023
Implements the free and open audio codec Opus in Rust.

opus-native Overview Implements the free and open audio codec Opus in Rust. Status This crate is under heavy development. Most functionality is not wo

Nils Hasenbanck 9 Nov 28, 2022
An open-source and fully-featured Digital Audio Workstation, made by musicians, for musicians

Meadowlark An open-source and fully-featured Digital Audio Workstation, made by musicians, for musicians. *Current design mockup, not a functioning pr

Meadowlark 1k Jan 7, 2023
Simple examples to demonstrate full-stack Rust audio plugin dev with baseplug and iced_audio

iced baseplug examples Simple examples to demonstrate full-stack Rust audio plugin dev with baseplug and iced_audio WIP (The GUI knobs do nothing curr

Billy Messenger 10 Sep 12, 2022
DSP real time audio synthesis, effect algorithms and utilities for Rust

synfx-dsp synfx-dsp DSP real time audio synthesis, effect algorithms and utilities for Rust Most of the algorithms and implementations in this library

Weird Constructor 8 Nov 23, 2022
An experimental audio visualizer combining fractals and particle simulations.

fractal_sugar About the project fractal_sugar is an experimental audio visualizer combining fractals and particle simulations. It is cross-platform, w

Ryan Andersen 4 Nov 25, 2022
Rust-crate with functions and helpers for working with music / audio, inspired by computer music languages.

music-math This crate contains common functions and helpers for working with music / audio in Rust. Most of these are inspired by similar functions fo

Mads Kjeldgaard 3 Apr 10, 2024
A collection of filters for real-time audio processing

Audio Filters A collection of filters for real-time audio processing Feature Progress #![no_std] (via libm) f32 & f64 capable (via num-traits) SIMD Do

null 42 Nov 5, 2022
A discord.py experimental extension for audio recording

discord-ext-audiorec This project is currently under development. We do not guarantee it works.

Tomoya Ishii 11 Jan 2, 2023