Tools for publishing albums to the web and digital stores
Project description
pyBlamscamp
This is based on blamscamp, with an intention towards being a standalone program you run on your computer to automatically encode 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.
To use it, you'll need to install LAME, oggenc, and FLAC; on macOS you can install these via homebrew, on Linux you can use your system's package manager, and on Windows you're on your own.
You'll also need to install Python, after which you can install pyBlamscamp with:
pip install blamscamp
blamscamp --help
will provide a lot more detailed information. For the most part you should be able to just do:
blamscamp input_dir output_dir
and the rest will Just Work™.
Building an album
Make a directory with all of your source audio files and artwork and so on. Create a JSON file named album.json
(which can be overridden) that looks something like this:
{
"artist": "The artist of the album",
"title": "The title of the album",
"bg_color": "black",
"fg_color": "white",
"highlight_color": "#cc00ff",
"artwork": "album_cover.jpg",
"tracks": [{
"filename": "the first track.wav",
"title": "The First Track",
"artwork": "track1_cover.jpg",
"lyrics": ["This is the first line",
"This is the second line",
"This is the third line",
"",
"This is the second verse",
"This song just keeps getting worse"],
"hidden": false,
"preview": true
}]
}
Basically, the top-level album contains the following properties (all optional):
artist
: The artist for the album as a wholetitle
: The album's titlebg_color
,fg_color
,highlight_color
: The color theme for the playerartwork
: an image file to use for the album's cover arttracks
: an array of track descriptions, in album order
Each track element contains:
title
: The title of the trackartist
: The artist of this track, if different from the album as a wholeartwork
: Track-specific cover art (e.g. for a single)lyrics
: An array of strings, one line of lyrics per string; alternately, this can be the name of a text file to read the lyrics fromhidden
: A boolean for whether to hide this track from the web player entirely (e.g. a purchase bonus); defaults tofalse
preview
: A boolen for whether to generate a preview for the web player; defaults totrue
See the sample album JSON file for a rough example.
Publishing to Itch
Here's the process for publishing an album to itch.io:
-
Install butler and log in with
butler login
-
Set it as a "soundtrack," with the kind of project being "HTML"
-
Set your pricing, add the artwork etc., and save. Don't do any uploading from this interface.
-
Run
blamscamp
with a-b user/project
flag; for example:blamscamp novembeat\ 2021/wav novembeat\ 2021/out -b fluffy/novembeat-2021
-
Wait a moment for itch to finish processing; you can use
butler status user/project
(e.g.butler status fluffy/novembeat-2021
) -
Reload your project edit page; you should now have a few targets, such as
preview
,mp3
, etc. -
Set the
preview
target to "This file will be played in the browser". Set all the other targets to "soundtrack" and, optionally, change the display name. -
View the project page, and when you're ready to publish, publish!
Contributing
Pull requests are welcome! But please note the following:
The generated blamscamp 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.
License
This software is public domain.
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 blamscamp-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e79a06df93084aa9e3f8c0d965d680c4a05b306aedd3263e6f935b5b836afec9 |
|
MD5 | 3ddc8986dd1bf3970be6878f24e0bfe0 |
|
BLAKE2b-256 | 1507803890c8ca8a79d6edfac3ca10555f2855e7f2184c21d98219daab56da89 |