renders cool piano videos from file
Project description
synthviz
synthviz
is a library for creating visualizations of piano-playing from MIDI files. The videos look like this:
Right now, synthviz just provides a Python API. Command-line API is hopefully coming soon!
Requirements
system requirements
You'll need to install a couple of tools that make rendering this video possible:
- ffmpeg (creates video from audio and image video frames) - on Ubuntu,
sudo apt-get install ffmpeg
- timidity (synthesizes piano audio from MIDI) - on Ubuntu,
sudo apt-get install timidity
python package requirements
Install this package via pypi
:
pip install synthviz
Usage
You can use synthviz through the Python API:
from synthviz import create_video
create_video('river.midi') # provide str path of MIDI file
Options
The create_video
function provides a lot of of options:
def create_video(input_midi: str,
video_filename = "output.mp4",
image_width = 1280,
image_height = 720,
black_key_height = 2/3,
falling_note_color = [75, 105, 177], # default: darker blue
pressed_key_color = [197, 208, 231], # default: lighter blue
vertical_speed = 1/4,
fps = 20
)
input_midi
(str): path to MIDI filevideo_filename
(str): path to output video, synthviz will write the video hereimage_width
(int): width of output video in pximage_height
(int): height of output video in pxblack_key_height
(float): height of black keys as a percentage of piano heightfalling_note_color
(Tuple[int]): color of falling keys in video, list of three RGB integerspressed_key_color
(Tuple[int]): color of pressed-down keys in video, list of three RGB integersvertical_speed
(float): the speed of the falling keys, fraction measured as main-image-heights per secondfps
(int): frames-per-second of output video
Creating video from raw audio
With the help of the piano_transcription_inference
library, you can make a cool video directly from raw audio!
First, install that library via pip install piano_transcription_inference
. Then run the following code:
import librosa
import os
import pathlib
from piano_transcription_inference import PianoTranscription, sample_rate, load_audio
from synthviz import create_video
audio_input = 'my_audio.mp3'
midi_intermediate_filename = 'transcription.mid'
video_filename = 'output.mp4'
transcriptor = PianoTranscription(device='cuda', checkpoint_path='./model.pth')
audio, _ = librosa.core.load(str(audio_input), sr=sample_rate)
transcribed_dict = transcriptor.transcribe(audio, midi_intermediate_filename)
create_video(input_midi=midi_intermediate_filename, video_filename=video_filename)
Credits
The synthviz library was originall adapted from this blog post, "Making Synthesia-style videos in Ubuntu", written by David Barry. Thanks David!
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
File details
Details for the file synthviz-0.0.2.tar.gz
.
File metadata
- Download URL: synthviz-0.0.2.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfd7e46621ab1b706aea2d94c8e6abf82cf048df661f898013eab721701927ec |
|
MD5 | d847830f199f5b94da2e2c2e4272fb27 |
|
BLAKE2b-256 | dce9f7845c0e0aba08579811d02df6ff0e028e7eda9b8d42671d784271034198 |
File details
Details for the file synthviz-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: synthviz-0.0.2-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad983814f1efd08be41707883aa23a59aab78baf5d1de3decdf5b8f80e54c788 |
|
MD5 | 0a9e923de1339888323fb17f5f4541eb |
|
BLAKE2b-256 | 7dfc9137d733b3035b9f1a8eb724162d71c4d3b060c856ea41624781cf4c23df |