A Python piano video exporter.
Project description
PianoVis 0.2.1
A Python piano video exporter.
Examples:
Quick Start
- Install PianoVis:
pip install piano-vis
- Dependencies:
- pygame
- opencv-python
- mido
- colorama
- vext (optional, for playing sound during preview)
- vext.gi (optional, for playing sound during preview)
- playsound (optional, for playing sound during preview)
- win10toast (only on Windows)
- Dependencies:
- Follow this code format:
import pianovis
resolution = (1920, 1080)
fps = 30
offset = 1
vid = pianovis.Video(resolution, fps, offset)
vid.add_midi("midi1.mid")
vid.add_midi("midi2.mid")
vid.set_audio("audio.mp3")
vid.export("video.mp4")
pianovis.Video
pianovis.Video
is the main video class which stores all midi and audio files, and exports the final video.
Video.__init__(resolution: Tuple[int, int], fps: int, offset: int) -> None
- Initializes video.
resolution
: (x, y) pixel resolution of video.fps
: FPS (frames per second) of video.offset
: Offset (frames) of video from audio. Usually, a value of 1 makes the video look lined up with the audio.decor_surf
=None Decoration surface, blitted under the piano.
Video.configure(path: str, value: Any) -> None
- Sets an option for the video (read more in the Customization section).
path
: Option path.value
: Value to set path to.
Video.add_midi(path: str) -> None
- Appends path to midi list.
path
: Midi file path.
Video.set_audio(path: str) -> None
- Sets audio file to path.
path
: Audio file path.
Video.preview(resolution: Tuple[int, int] = (1600, 900), show_meta: bool = True) -> None:
- Opens a pygame window to preview the animation.
resolution
=(1600, 900): Resolution of pygame window.show_meta
=True: Show metadata in the corner of window.audio
=True: Play audio along preview.
Video.export(self, path: str, multicore: bool = False, max_cores: int = multiprocessing.cpu_count(), notify: bool = False) -> None:
- Exports video to path.
path
: Path to export (mp4)multicore
=False: Use multiple cores to export. Can be faster, but will take more power.max_cores
=multiprocessing.cpu_count(): Maximum cores to use. Only relevant if using multicore.notify
=False: Sends notification when done exporting. Requireswin10toast
on Windows.
Customization
Run Video.configure
to change options.
keys.white.gap
: Gap (pixels) between white keys.keys.white.color
: Color (RGB) of white keys.keys.black.width_fac
: Factor of white key width.keys.black.height_fac
: Factor of white key height.keys.black.color
: Color (RGB) of black keys.blocks.speed
: Speed (pixels per second) of blocks.blocks.border
: Border width (pixels) of blocks.blocks.color_grad
: Color gradient of blocks: ((fac1, hsv1), (fac2, hsv2)...)blocks.color_hue
: Hue adjustment (additive) to color.blocks.color_saturation
: Saturation adjustment (multiplicative) to color.blocks.color_value
: Value adjustment (multiplicative) to color.blocks.color_border
: Color (RGB) of border.blocks.rounding
: Rounding radius of blocks.blocks.motion_blur
: Use motion blur in blocks.blocks.light
: Light up blocks when hit. Still in development.
How It Works
- The user adds midis and sets an audio.
- When the user calls
Video.export
, a few things happen:- All midis are parsed.
- Single core:
- Each frame is rendered with pygame, saved, and encoded with opencv.
- All temporary files are deleted.
- Multi core:
- Each core is assigned a chunk of frames and renders and saves them.
- Each frame is encoded with opencv.
- All temporary files are deleted.
- The audio is combined with video with ffmpeg.
Extras
Constants (pianovis.constants
)
Note: pianovis.BLACK == pianovis.constants.BLACK
- Colors (Normalized HSV)
- Block color gradient presets.
App (pianovis.app
)
- Create piano videos in a GUI.
- Currently version 1 (in development)
- Run
pianovis.app.launch()
to launch the latest version.
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
piano-vis-0.2.1.tar.gz
(11.7 kB
view details)
Built Distribution
piano_vis-0.2.1-py3-none-any.whl
(27.3 kB
view details)
File details
Details for the file piano-vis-0.2.1.tar.gz
.
File metadata
- Download URL: piano-vis-0.2.1.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.3.3 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e5919ae023c23d2cdbf88ad6bea2742bc49d1281d158739cf87d3b1365b4d20 |
|
MD5 | 37134d354d1dd2affb2590e8bed7684c |
|
BLAKE2b-256 | 96c189c2e9e9a30180b4e857c43ad1fd6cb7f3112cde3c6d33e569846a8eec41 |
File details
Details for the file piano_vis-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: piano_vis-0.2.1-py3-none-any.whl
- Upload date:
- Size: 27.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.3.3 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e9fbcd36ba7def341cdabdabbd9a6093afb83da6ac4f82d91331263cdabd0dc |
|
MD5 | c93f4d14151e0fa7f45101d607c252a1 |
|
BLAKE2b-256 | 79429416ab64c61a1d5e7e6754d653f0befb3b6bb9c10a3cf3cb8d522c6126e1 |