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. Requireswin10toaston 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
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
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
|