Tools for publishing albums to the web and digital stores
Project description
Bandcrash
Bandcrash is a standalone program that automatically encodes an album of songs into a bunch of different formats for distribution on various platforms, such as itch.io, or for hosting on your own website. The embedded player is originally based on the one from blamscamp by @blackle, although it has been pretty thoroughly modified at this point.
Features
- Output as mp3, ogg, FLAC, and web preview (HTML5+mp3 at a lower bitrate)
- Optionally upload everything to your page on itch using butler
- High-quality encoding and metadata, with support for cover songs, per-track artwork, embedded lyrics, and more
- Web player also supports per-track artwork
Usage
Please see the online documentation for installation and usage instructions.
Contributing
Pull requests are welcome! But please note the following:
The generated web player must not receive any added dependencies. The generator must stay as a single, self-contained file that is as small as reasonably possible. The point is for the generated file to be lightweight. Stick to Vanilla JS.
Development environment notes
If you are developing under Windows, you will probably need to use a POSIX environment under Windows (such as msys or Git Bash) rather than WSL.
If you are developing under macOS, please use a universal2
build of Python (such as the ones installable from python.org) and you need to ensure that you've created your environment against that (e.g. poetry env use /usr/local/bin/python3.11
).
Roadmap
See the github issues for details, but roughly:
- Local GUI and/or web UI to make setting up the
album.json
easier (and easier installation, especially on Windows!) - Various player improvements
- Easy embedding into websites (opengraph et al)
FAQ
How is this different from blamscamp, scritch, etc.?
Blamscamp and scritch are both great programs for publishing album previews on itch.io and other websites! However, their functionality is only to bundle already-encoded audio files into a web-based player. They don't do the difficult work of encoding and tagging your files, which can be an extremely tedious and error-prone process. Bandcrash's intention is to make the process of encoding and uploading your albums easier to as many stores as possible.
Why was it renamed?
Back when this project started, it was named pyBlamscamp as the intention was to be basically a Python version of the blamscamp GUI which would also handle encoding steps for you, but it very quickly drifted away from that and became something else. Unfortunately, the similarity of the names was incredibly confusing.
Currently the only connection between Bandcrash and blamscamp is that Bandcrash uses a highly-modified version of blamscamp's web player. They serve different goals.
Why make a local GUI instead instead of a web app?
You already have your large .wav files on your local hard drive. Your local drive is also a good place to keep your previous encoding results. Your local computer also has a lot more space available than a typical cloud server, doesn't have to juggle cloud storage credentials, doesn't have to worry about the security of the server running the encoder app, the cost of running servers or paying for cloud storage, and so on.
Basically, it's easier for everyone.
Sometimes local apps are just Better™.
That said, Bandcrash is also embeddable as a library, so someone could conceivably build a web-based system that uses it for encoding and tagging files. If they do so, I hope they avoid it becoming yet another walled garden.
Credits
- Main code: @fluffy-critter
- Original player code and this project's name: @blackle
Project details
Release history Release notifications | RSS feed
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
Hashes for bandcrash-0.6.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e41fb6568369e1aa6038830b7784862945ab0798fa316db1c796a641ec2de610 |
|
MD5 | 43499928fc1de2142f7f5133becf71d9 |
|
BLAKE2b-256 | e8e742633602c7cdc49bd324af8bd6010b0880b5c2f57c1460292a20c716b8c7 |