An utility to render note block songs to a variety of audio formats
Project description
nbswave
A Python package to render note block songs to a variety of audio formats.
Overview
nbswave is a Python package aimed at rendering note block songs from Open Note Block Studio to audio tracks. Supports many common audio formats, both for loading custom sounds as well as exporting tracks.
Setup
The package can be installed with pip.
$ pip install nbswave
In order to use the package, FFmpeg must be available:
- Download precompiled binaries for
ffmpegandffprobehere. - Add the destination folder to your
PATH, or, alternatively, place both executables in the root folder of the project.
Usage
from nbswave import *
render_audio("song.nbs", "output.mp3")
The output format will be detected automatically based on the file extension. You can still specify it explicitly if you'd like:
from nbswave import *
render_audio("song.nbs", "output", format='wav')
[!NOTE] Compatibility with audio formats depends on your FFmpeg configuration.
Custom instruments
In order to render songs with custom instruments, you have a few options:
-
Copy the sounds manually to the
soundsfolder -
Pass the path to a folder (or ZIP file) containing custom sounds:
from pathlib import Path
nbs_sounds_folder = Path.home() / "Minecraft Note Block Studio" / "Data" / "Sounds"
render_audio("song.nbs", "output.mp3", custom_sound_path=nbs_sounds_folder)
If any sound file used in the song is not found in that location, a MissingInstrumentException will be raised. This behavior can be suppressed with the following argument:
render_audio("song.nbs", "output.mp3", ignore_missing_instruments=True)
Advanced usage
For more advanced use cases where you might need more control over the export process, it's possible to use the SongRenderer class. This will allow you to load custom instruments from multiple sources, as well as query which instruments are still missing:
from nbswave import *
renderer = SongRenderer("song.nbs")
renderer.load_instruments(nbs_sounds_folder)
renderer.load_instruments("some_more_instruments.zip")
renderer.missing_instruments()
track = renderer.mix_song()
track.save("song.mp3")
[!TIP] For additional parameters, check out the source code!
Contributing
Contributions are welcome! Make sure to open an issue discussing the problem or feature suggestion before creating a pull request.
This project uses poetry for managing dependencies. Make sure to install it, and run:
$ poetry install
This project follows the black code style. Import statements are sorted with isort.
$ poetry run isort nbswave
$ poetry run black nbswave
$ poetry run black --check nbswave
License - MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nbswave-0.4.0.tar.gz.
File metadata
- Download URL: nbswave-0.4.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.10 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbac8353cfa8603356ad3ec41d2ba0247cb6530a36fd076d503c67bff9056fa5
|
|
| MD5 |
99d8825084f1ddeb6d42f6722deae0a9
|
|
| BLAKE2b-256 |
8cada5e4d0ba18f53b091118b36b90529d6cfc4aba8f1b55f6eba29c9779d6c6
|
File details
Details for the file nbswave-0.4.0-py3-none-any.whl.
File metadata
- Download URL: nbswave-0.4.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.10 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0a583cbb0c6406e62ca82a6caeb499731c6a59d2765a9bc803a82b3ec9334d0
|
|
| MD5 |
2e96d2f712202dc561f75ca652f912ad
|
|
| BLAKE2b-256 |
fe4b0ff33812780b29c56de1148c2ab2b0530676cf9ebe15eea35f5626b882c2
|