Metadata-Version: 2.4
Name: pianola
Version: 0.10.0
Dynamic: Keywords
Summary: 🎹 Smoothest piano roll visualizer
Author: Tremeschin
License-Expression: AGPL-3.0
Requires-Python: >=3.10
Requires-Dist: cyclopts
Requires-Dist: dearlog
Requires-Dist: platformdirs
Requires-Dist: pooch~=1.0
Requires-Dist: shaderflow
Description-Content-Type: text/markdown

<div align="center">
  <img src="https://raw.githubusercontent.com/BrokenSource/Pianola/main/website/assets/images/logo.png" width="170">
  <h1 style="margin-top: 0">Pianola</h1>
  <span>🎹 Smoothest piano roll visualizer 🎹</span>
  <br>
  <br>
    <a href="https://pypi.org/project/pianola/"><img src="https://img.shields.io/pypi/v/pianola?label=PyPI&color=blue"></a>
    <a href="https://pypi.org/project/pianola/"><img src="https://img.shields.io/pypi/dw/pianola?label=Installs&color=blue"></a>
    <a href="https://github.com/BrokenSource/Pianola"><img src="https://img.shields.io/github/v/tag/BrokenSource/Pianola?label=GitHub&color=orange"></a>
    <a href="https://github.com/BrokenSource/Pianola/stargazers"><img src="https://img.shields.io/github/stars/BrokenSource/Pianola?label=Stars&style=flat&color=orange"></a>
    <!-- <a href="https://github.com/BrokenSource/Pianola/releases/"><img src="https://img.shields.io/github/v/release/BrokenSource/Pianola?label=Pyaket&color=light-green"></a> -->
    <!-- <a href="https://github.com/BrokenSource/Pianola/releases/"><img src="https://img.shields.io/github/downloads/BrokenSource/Pianola/total?label=%E2%86%93&color=light-green"></a> -->
    <a href="https://discord.gg/KjqvcYwRHm"><img src="https://img.shields.io/discord/1184696441298485370?label=Discord&style=flat&color=purple"></a>
  <br>
  <b>
    Links •
    <a href="https://github.com/BrokenSource/Pianola/">GitHub</a> •
    <a href="https://pianola.tremeschin.com/">Documentation</a> •
    <a href="https://pianola.tremeschin.com/about/license">License</a> •
    <a href="https://github.com/sponsors/Tremeschin/">Support</a>
  </b>
  <br>
  <sub><small>⭐️ Consider starring the project to help it grow! ⭐️</small></sub>
  <br>
</div>

<video src="https://github.com/user-attachments/assets/3de5c4dc-205f-44c7-a6a5-3aa414e1cd09" controls></video>
<sup><i><b>⚖️</b> <a href="https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=263">The Entertainer</a> by Scott Joplin (Public Domain), <a href="https://www.schristiancollins.com/generaluser.php">GeneralUser GS</a> SoundFont</i></sup>

## 🔥 Description

**Pianola** is an elegant and dynamic piano roll visualizer written in Python and GLSL Shaders, with a focus on quality, performance and visuals - powered by the [shaderflow](https://github.com/BrokenSource/ShaderFlow) engine.

- [x] **Spring** physics model governing many animations, providing a realistic and organic feel to the visuals.
- [x] **Unlimited** rendering with any framerate, resolution, or supersampling you want
- [x] **Commercial** use allowed and encouraged, simply pick a [sponsorship](https://github.com/sponsors/Tremeschin/) tier!

## 📦 Getting Started

🚧 Under maintenance (reworking website) • For now, either: 👷

### Command line

Run with <code><a href="https://docs.astral.sh/uv/">uvx</a> pianola main</code>

- Export videos with `pianola config --midi file.mid main --ssaa 2 --output output.mp4`
- Add your own audio `pianola config --audio file.flac (...)`
- See options `pianola main --help`, `pianola config --help`

### Dependency

Add into your `pyproject.toml`:

```toml
[project]
dependencies = ["pianola"]
```

Check usage in the <kbd><a href="https://github.com/BrokenSource/Pianola/tree/main/examples">Examples</a></kbd> directory!
