muslib


Namemuslib JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryRust library for music synthesis and processing, inspired by Essentia.
upload_time2024-01-08 23:07:13
maintainerNone
docs_urlNone
authorWiktor W. <wykwit@disroot.org>
requires_python
licenseAGPL-3.0-or-later
keywords music
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # muslib

Rust library for music synthesis and processing, inspired by [Essentia](https://essentia.upf.edu/).

It provides a few simple algorithms and utilities:

  - (WIP) tonal analysis with harmonic pitch class profile -- **HPCP**
  - (WIP) inverse fast Fourier transform -- **IFFT**
  - (WIP) short-time Fourier transform -- **STFT**
  - simple **mixer** to create mono tracks
  - **synth**esizer for simple waveforms

## Installation

You can download pre-built binaries from [the releases page](https://gitlab.com/wykwit/muslib/-/releases).
Otherwise see [build](#build) instructions for more details.

The Rust crate is available through [crates.io](https://crates.io/crates/muslib).
You can add it with a simple:
```
$ cargo add muslib
```

There is also a Python package available on [pypi.org](https://pypi.org/project/muslib/).
You can install it with a simple:
```
$ pip install muslib
```

## Usage

This project provides a Rust library that can be used in other Rust projects
or from Python code with our [PyO3](https://pyo3.rs/) bindings.

See [docs](#docs) for a more detailed documentation
and [examples](#examples) to learn how you could use this project in your own code.

## Development

### build

You can use a simple `cargo` command to compile a release binary.
The output will be in the `target/release` directory.

```
$ cargo build --release
```

To compile a Python wheel use `maturin`.

```
$ maturin build
```

All project dependencies are listed in the `Cargo.toml` file.

### docs

You can generate docs with a simple `cargo` command.
The output will be in the `target/doc` directory.

```
$ cargo doc
```

The documentation should also be available through [docs.rs](https://docs.rs/muslib/latest/muslib/).

### tests

```
$ cargo test
```

TODO: create build CI and link it here

### examples

You can run Rust examples from the `examples` directory with:
```
$ cargo run --example [name] [args]
```

You will also find Python examples there, including those comparing the usage of muslib and Essentia for simple tasks.

Some test scripts and helpers that were often run by hand during development are also there.

## alternatives

Other interesting Rust projects for audio DSP:

- [dasp](https://github.com/RustAudio/dasp)
- [fundsp](https://github.com/SamiPerttu/fundsp)

## license

In the same spirit as Essentia, this project is licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html).

```
Copyright (C) 2023 wykwit

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
```


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "muslib",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": null,
    "keywords": "music",
    "author": "Wiktor W. <wykwit@disroot.org>",
    "author_email": "Wiktor W. <wykwit@disroot.org>",
    "download_url": "https://files.pythonhosted.org/packages/f4/bf/1a2790aa4e9de1ad82579e974708bff3a7babba533b455d5e7a67098397c/muslib-0.1.1.tar.gz",
    "platform": null,
    "description": "# muslib\n\nRust library for music synthesis and processing, inspired by [Essentia](https://essentia.upf.edu/).\n\nIt provides a few simple algorithms and utilities:\n\n  - (WIP) tonal analysis with harmonic pitch class profile -- **HPCP**\n  - (WIP) inverse fast Fourier transform -- **IFFT**\n  - (WIP) short-time Fourier transform -- **STFT**\n  - simple **mixer** to create mono tracks\n  - **synth**esizer for simple waveforms\n\n## Installation\n\nYou can download pre-built binaries from [the releases page](https://gitlab.com/wykwit/muslib/-/releases).\nOtherwise see [build](#build) instructions for more details.\n\nThe Rust crate is available through [crates.io](https://crates.io/crates/muslib).\nYou can add it with a simple:\n```\n$ cargo add muslib\n```\n\nThere is also a Python package available on [pypi.org](https://pypi.org/project/muslib/).\nYou can install it with a simple:\n```\n$ pip install muslib\n```\n\n## Usage\n\nThis project provides a Rust library that can be used in other Rust projects\nor from Python code with our [PyO3](https://pyo3.rs/) bindings.\n\nSee [docs](#docs) for a more detailed documentation\nand [examples](#examples) to learn how you could use this project in your own code.\n\n## Development\n\n### build\n\nYou can use a simple `cargo` command to compile a release binary.\nThe output will be in the `target/release` directory.\n\n```\n$ cargo build --release\n```\n\nTo compile a Python wheel use `maturin`.\n\n```\n$ maturin build\n```\n\nAll project dependencies are listed in the `Cargo.toml` file.\n\n### docs\n\nYou can generate docs with a simple `cargo` command.\nThe output will be in the `target/doc` directory.\n\n```\n$ cargo doc\n```\n\nThe documentation should also be available through [docs.rs](https://docs.rs/muslib/latest/muslib/).\n\n### tests\n\n```\n$ cargo test\n```\n\nTODO: create build CI and link it here\n\n### examples\n\nYou can run Rust examples from the `examples` directory with:\n```\n$ cargo run --example [name] [args]\n```\n\nYou will also find Python examples there, including those comparing the usage of muslib and Essentia for simple tasks.\n\nSome test scripts and helpers that were often run by hand during development are also there.\n\n## alternatives\n\nOther interesting Rust projects for audio DSP:\n\n- [dasp](https://github.com/RustAudio/dasp)\n- [fundsp](https://github.com/SamiPerttu/fundsp)\n\n## license\n\nIn the same spirit as Essentia, this project is licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html).\n\n```\nCopyright (C) 2023 wykwit\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program.  If not, see <https://www.gnu.org/licenses/>.\n```\n\n",
    "bugtrack_url": null,
    "license": "AGPL-3.0-or-later",
    "summary": "Rust library for music synthesis and processing, inspired by Essentia.",
    "version": "0.1.1",
    "project_urls": {
        "Source Code": "https://gitlab.com/wykwit/muslib/"
    },
    "split_keywords": [
        "music"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e13ba89b4092dbddbac4177ff6ec92caac9abefae20fe547974a04fa1d02f71b",
                "md5": "ad6d8de0848f436d0b0715500f50c2f1",
                "sha256": "44af5b675916f96410a27f3071f07c26b20fb4f7042f87844bc5c6418b91a464"
            },
            "downloads": -1,
            "filename": "muslib-0.1.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad6d8de0848f436d0b0715500f50c2f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 6847012,
            "upload_time": "2024-01-08T23:07:10",
            "upload_time_iso_8601": "2024-01-08T23:07:10.164320Z",
            "url": "https://files.pythonhosted.org/packages/e1/3b/a89b4092dbddbac4177ff6ec92caac9abefae20fe547974a04fa1d02f71b/muslib-0.1.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f4bf1a2790aa4e9de1ad82579e974708bff3a7babba533b455d5e7a67098397c",
                "md5": "b79543ee9ed3de0cc54ac387d1e15059",
                "sha256": "8790f50d434cf611d0587616baec30f24eabdad4316e23c1fcbd57bf4bf0158a"
            },
            "downloads": -1,
            "filename": "muslib-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "b79543ee9ed3de0cc54ac387d1e15059",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 107046,
            "upload_time": "2024-01-08T23:07:13",
            "upload_time_iso_8601": "2024-01-08T23:07:13.939464Z",
            "url": "https://files.pythonhosted.org/packages/f4/bf/1a2790aa4e9de1ad82579e974708bff3a7babba533b455d5e7a67098397c/muslib-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-08 23:07:13",
    "github": false,
    "gitlab": true,
    "bitbucket": false,
    "codeberg": false,
    "gitlab_user": "wykwit",
    "gitlab_project": "muslib",
    "lcname": "muslib"
}
        
Elapsed time: 0.34079s