Giter Site home page Giter Site logo

upiano's Introduction

UPiano

A Piano in your terminal.

Screenshot

How to run

First, you'll need to install FluidSynth, if you haven't already. See here how to install FluidSynth on your system.

Then, install upiano via pip:

pip install upiano

And then run:

upiano

Make sure your terminal window is big enough. The wider you can make it, the more keys you'll have! ๐ŸŽน ๐Ÿ˜€

How to play

To play with the mouse, click on the notes you want to play.

To play with the computer keyboard, there is a limited and currently hardcoded keymap that corresponds to the following, which will play the notes on the left side:

โ”Œโ”€โ”ฌโ”€โ”€โ”ฌโ”ฌโ”€โ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”€โ”ฌโ”ฌโ”€โ”€โ”ฌโ”ฌโ”€โ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”€โ”ฌโ”ฌโ”€โ”€โ”ฌโ”€โ”ฌโ”€โ”ฌโ”€โ”€โ”ฌโ”
โ”‚ โ”‚โ–ˆโ–ˆโ”‚โ”‚โ–ˆโ–ˆโ”‚ โ”‚ โ”‚โ–ˆโ–ˆโ”‚โ”‚โ–ˆโ–ˆโ”‚โ”‚โ–ˆโ–ˆโ”‚ โ”‚ โ”‚โ–ˆโ–ˆโ”‚โ”‚โ–ˆโ–ˆโ”‚ โ”‚ โ”‚โ–ˆโ–ˆโ”‚โ”‚
โ”‚ โ”‚Wโ–ˆโ”‚โ”‚Eโ–ˆโ”‚ โ”‚ โ”‚Tโ–ˆโ”‚โ”‚Yโ–ˆโ”‚โ”‚Uโ–ˆโ”‚ โ”‚ โ”‚Oโ–ˆโ”‚โ”‚Pโ–ˆโ”‚ โ”‚ โ”‚โ–ˆโ–ˆโ”‚โ”‚
โ”‚ โ””โ”ฌโ”€โ”˜โ””โ”ฌโ”€โ”˜ โ”‚ โ””โ”ฌโ”€โ”˜โ””โ”ฌโ”€โ”˜โ””โ”ฌโ”€โ”˜ โ”‚ โ””โ”ฌโ”€โ”˜โ””โ”ฌโ”€โ”˜ โ”‚ โ””โ”ฌโ”€โ”˜โ”‚
โ”‚A โ”‚ S โ”‚ D โ”‚F โ”‚ G โ”‚  Hโ”‚ J โ”‚K โ”‚ L โ”‚ ; โ”‚' โ”‚  โ”‚
โ””โ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”ดโ”€โ”€โ”ดโ”€โ”€โ”˜

Note that since the terminal doesn't really support key press and release events (it receives a stream of characters instead), there is no way to support two key playing at the same time with the computer keyboard only.

But you can play with the computer keyboard and with the mouse simultaneously, as you can see in this video: https://www.youtube.com/watch?v=0VXit110PcA

Powered by

Made with โค๏ธ by Elias Dorneles

History

This started as a fun pairing project by friends Elias and Nandaja around 2017, after they had finished their Recurse Center retreat and were missing hacking together.

They had fun building a small terminal piano app using urwid for the user interface and playing notes by spawning sox subprocesses. This version is available in the project source code, if you have urwid and sox installed, you can try it by running: python upiano/legacy.py.

Fast-forward to 2023, Elias attended EuroPython and learned the Textual library there, got excited about terminal apps again and decided to reboot this project using the newly acquired knowledge, package and distribute it, and add to the fun by plugging a true synthesizer to it, and playing with its controls.

Changelog:

  • v0.1.2
    • added volume, reverb and chorus sliders
    • fix packaging config, to work on any Python 3.10+
  • v0.1.1
    • added sustain
    • fix mouse handling, and allow playing by "swiping" over keys
  • v0.1.0
    • first version released to PyPI, already using Textual

upiano's People

Contributors

eliasdorneles avatar nandajavarma avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.