# Whacker Hero
Create play-along videos for [Boomwhackers](https://boomwhackers.com/).
![example animation of falling notes](https://user-images.githubusercontent.com/7693838/147457241-99963c9e-357b-468e-b7dd-2ec2b31da3c4.gif)
## Installation
pip install "whackerhero[gui]"
`[gui]` is optional. It installs `gooey` which may take a while on Linux.
You have to do a pip-install in order to use the gui, it cannot be launched directly from python or the shell.
Other dependencies are `mido` for midi reading, `numpy` for graphics, and `moviepy` for video rendering.
## Usage
![screenshot of config window](https://user-images.githubusercontent.com/7693838/147457255-23bd71e7-ba8b-4ef2-99df-f19f9c7179ba.jpg)
If you've installed the gui, it's pretty straightforward.
The most work goes into writing a music arrangement suitable for playing along to (see the example below).
There are many midi files on the internet, but they can be big and messy.
You should trim it down to only one or two octaves.
The midi file will *only* be used for visuals. If you want it for audio too, you have to convert it manually.
There is also a command line variant:
whackercmd -a music.mp3 -i background.jpg midifile.mid output.mp4
You can even create gif images for some reason.
whackercmd -s 400x300 --fps 15 midifile.mid output.gif
Due to the single-core design of moviepy, rendering takes forever.
Use the `test` option to generate a 10 sec long video before you do your final rendering.
### Adding play-along to a music video
1. Download the music video and [extract](https://www.audacityteam.org/) the music.
1. Import the music into your [DAW](https://lmms.io) of choice. Don't add any silence at the beginning.
1. Write notes in sync with the music. What you hear is what you'll see.
If you make all notes the same short length, things will look less cluttered in the final video.
1. Export to a midi file.
1. Run `whackerhero`
1. Select the midi file and the music video.
1. Check the `test` box and press start.
1. If everything looks good, uncheck `test` and run again.
Raw data
{
"_id": null,
"home_page": "https://github.com/allejok96/whackerhero",
"name": "whackerhero",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "boomwhacker video generator midi piano-roll",
"author": "allejok96",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/7a/aa/7eb4529ee6268d389c15cccb7fbfc1bf650988f17f11362f9659f1ae9e84/whackerhero-0.1.1.tar.gz",
"platform": null,
"description": "# Whacker Hero\n\nCreate play-along videos for [Boomwhackers](https://boomwhackers.com/).\n\n![example animation of falling notes](https://user-images.githubusercontent.com/7693838/147457241-99963c9e-357b-468e-b7dd-2ec2b31da3c4.gif)\n\n## Installation\n\n pip install \"whackerhero[gui]\"\n\n`[gui]` is optional. It installs `gooey` which may take a while on Linux.\nYou have to do a pip-install in order to use the gui, it cannot be launched directly from python or the shell.\n\nOther dependencies are `mido` for midi reading, `numpy` for graphics, and `moviepy` for video rendering.\n\n## Usage\n\n![screenshot of config window](https://user-images.githubusercontent.com/7693838/147457255-23bd71e7-ba8b-4ef2-99df-f19f9c7179ba.jpg)\n\nIf you've installed the gui, it's pretty straightforward.\nThe most work goes into writing a music arrangement suitable for playing along to (see the example below).\nThere are many midi files on the internet, but they can be big and messy.\nYou should trim it down to only one or two octaves.\n\nThe midi file will *only* be used for visuals. If you want it for audio too, you have to convert it manually.\n\nThere is also a command line variant:\n\n whackercmd -a music.mp3 -i background.jpg midifile.mid output.mp4\n\nYou can even create gif images for some reason.\n\n whackercmd -s 400x300 --fps 15 midifile.mid output.gif\n\nDue to the single-core design of moviepy, rendering takes forever.\nUse the `test` option to generate a 10 sec long video before you do your final rendering.\n\n### Adding play-along to a music video\n\n1. Download the music video and [extract](https://www.audacityteam.org/) the music.\n1. Import the music into your [DAW](https://lmms.io) of choice. Don't add any silence at the beginning.\n1. Write notes in sync with the music. What you hear is what you'll see.\n If you make all notes the same short length, things will look less cluttered in the final video.\n1. Export to a midi file.\n1. Run `whackerhero`\n1. Select the midi file and the music video.\n1. Check the `test` box and press start.\n1. If everything looks good, uncheck `test` and run again.\n",
"bugtrack_url": null,
"license": "",
"summary": "Generate Boomwhacker play-along videos from MIDI files",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://github.com/allejok96/whackerhero"
},
"split_keywords": [
"boomwhacker",
"video",
"generator",
"midi",
"piano-roll"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8e1209d77153c25e101c72345e6af5a14839b5f26463430c92552bbf67a5ddf0",
"md5": "6cffefb53e96182278a735dfe6b0dedc",
"sha256": "2bdb35864fc9a09fffcf2c3d51d8f2bcedffdca6471033f87a250d6c0d4277d4"
},
"downloads": -1,
"filename": "whackerhero-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6cffefb53e96182278a735dfe6b0dedc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 21644,
"upload_time": "2023-05-15T18:59:58",
"upload_time_iso_8601": "2023-05-15T18:59:58.574384Z",
"url": "https://files.pythonhosted.org/packages/8e/12/09d77153c25e101c72345e6af5a14839b5f26463430c92552bbf67a5ddf0/whackerhero-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7aaa7eb4529ee6268d389c15cccb7fbfc1bf650988f17f11362f9659f1ae9e84",
"md5": "9d8dd1c687630f724c0d5c830bfe514d",
"sha256": "7fe9d37e9e40a694bf5d440d5e4e2f297be70c18e6df53aa7985fdac32b1c992"
},
"downloads": -1,
"filename": "whackerhero-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "9d8dd1c687630f724c0d5c830bfe514d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 21287,
"upload_time": "2023-05-15T19:00:00",
"upload_time_iso_8601": "2023-05-15T19:00:00.073798Z",
"url": "https://files.pythonhosted.org/packages/7a/aa/7eb4529ee6268d389c15cccb7fbfc1bf650988f17f11362f9659f1ae9e84/whackerhero-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-15 19:00:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "allejok96",
"github_project": "whackerhero",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "whackerhero"
}