PianoPlayer - Automatic fingering generator for piano scores

Overview

PianoPlayer

Codacy Badge Downloads lics DOI

Automatic piano fingering generator.
Find the optimal fingering combination to play a piano score. Optionally visualize it in 3D with vedo.

Download and Install:

pip install pianoplayer

to enable sound you may need to:

sudo apt install libasound2-dev
pip install simpleaudio

Installing without 3D rendering

To only install the core functionality and skip everything else, use the following:

pip install music21
pip install --no-deps pianoplayer

To visualize the output annotated score install the latest musescore, or any other renderer of MusicXML files.

Windows 10 users can place this file: pianoplayer.bat on their desktop (edit the path to your local anaconda or python installation). Check out this link in case of installation problems.

CLI Usage:

Example command line from terminal:
pianoplayer scores/bach_invention4.xml --verbose -n10 -rvzm
will find the right hand fingering for the first 10 measures, pop up a 3D rendering window and invoke musescore.

The output is saved as a MusicXML file with name output.xml.

pianoplayer         # if no argument is given a GUI will pop up (on windows try `python pianoplayer.py`)
# Or
pianoplayer [-h] [-o] [-n] [-s] [-d] [-k] [-rbeam] [-lbeam] [-q] [-m] [-v] [--vedo-speed]
            [-z] [-l] [-r] [-XXS] [-XS] [-S] [-M] [-L] [-XL] [-XXL]
            filename
# Valid file formats: MusicXML, musescore, midi (.xml, .mscz, .mscx, .mid)
#
# Optional arguments:
#   -h, --help            show this help message and exit
#   -o , --outputfile     Annotated output xml file name
#   -n , --n-measures     [100] Number of score measures to scan
#   -s , --start-measure  Start from measure number [1]
#   -d , --depth          [auto] Depth of combinatorial search, [2-9]
#   -rbeam                [0] Specify Right Hand beam number
#   -lbeam                [1] Specify Left Hand beam number
#   --quiet               Switch off verbosity
#   -m, --musescore       Open output in musescore after processing
#   -b, --below-beam      Show fingering numbers below beam line
#   -v, --with-vedo       Play 3D scene after processing
#   -z, --sound-off       Disable sound
#   -l, --left-only       Fingering for left hand only
#   -r, --right-only      Fingering for right hand only
#   -XXS, --hand-size-XXS Set hand size to XXS
#   -XS, --hand-size-XS   Set hand size to XS
#   -S, --hand-size-S     Set hand size to S
#   -M, --hand-size-M     Set hand size to M
#   -L, --hand-size-L     Set hand size to L
#   -XL, --hand-size-XL   Set hand size to XL
#   -XXL, --hand-size-XXL Set hand size to XXL

GUI Usage:

Just type pianoplayer in a terminal (or double click the pianoplayer.bat file), then:

newgui

  • press Import Score (valid formats: musescore, MusicXML, MIDI, PIG)
  • press GENERATE (output.xml is written)
  • press Musescore to visualize the annotated score
  • press 3D Player to show the animation (Press Esc to quit the application)

Example output, as displayed in musescore:

(If fingering numbers are not visible enough try -b option.)

bachinv4

pianoplayer3d

How the algorithm works:

The algorithm minimizes the fingers speed needed to play a sequence of notes or chords by searching through feasible combinations of fingerings.

One possible advantage of this algorithm over similar ones is that it is completely dynamic, which means that it takes into account the physical position and speed of fingers while moving on the keyboard and the duration of each played note. It is not based on a static look-up table of likely or unlikely combinations of fingerings.

Fingering a piano score can vary a lot from individual to individual, therefore there is not such a thing as a "best" choice for fingering. This algorithm is meant to suggest a fingering combination which is "optimal" in the sense that it minimizes the effort of the hand avoiding unnecessary movements.

Parameters you can change:

  • Your hand size (from 'XXS' to 'XXL') which sets the relaxed distance between thumb and pinkie.
  • The beam number associated to the right hand is by default nr.0 (nr.1 for left hand). You can change it with -rbeam and -lbeam command line options.
  • Depth of combinatorial search, from 3 up to 9 notes ahead of the currently playing note. By default the algorithm selects this number automatically based on the duration of the notes to be played.

Limitations

  • Some specific fingering combinations, considered too unlikely in the first place, are excluded from the search (e.g. the 3rd finger crossing the 4th).
  • Hands are always assumed independent from each other.
  • In the 3D representation with sounds enabled, notes are played one after the other (no chords), so the tempo within the measure is not always respected.
  • Small notes/ornaments are ignored.
Comments
  • cannot find vtkplotter package

    cannot find vtkplotter package

    I receive the following error on Windows 10 and Ubuntu 18.04 as well after I import a score and click on 3D player in the GUI.

    VirtualKeyboard: cannot find vtkplotter package. Not installed?
    Try:
    (sudo) pip install --upgrade vtkplotter
    

    Any idea?

    bug 
    opened by kohanyirobert 10
  • Problem installing

    Problem installing

    Hello! The last month, i've been trying to install this program, but i just can't seem to do it. I never worked with python before, but i managed to get pip install working now. When i put in the pip install --upgrade pianoplayer , it says :

    Collecting pianoplayer Using cached pianoplayer-2.1.0.tar.gz (1.2 MB) Collecting music21 Using cached music21-5.7.2.tar.gz (18.5 MB) Collecting vtkplotter Using cached vtkplotter-2020.3.1.tar.gz (18.4 MB) ERROR: Could not find a version that satisfies the requirement vtk (from vtkplotter->pianoplayer) (from versions: none) ERROR: No matching distribution found for vtk (from vtkplotter->pianoplayer)

    when i then try to open the batch file, it just flashes and dissapears. Could someone please help me out? Thank you! Regards, Brend

    opened by BrendRR 10
  • Suggestion to UI

    Suggestion to UI

    Instead of writing fingering numbers as lyrics, could you consider using MuseScore's fingering notation? I think it would be more ergonomic and aesthetically more pleasing.

    opened by mhoangvslev 8
  • pianoplayer) (from versions: none) ERROR: No matching distribution found for vtk (from vtkplotter->pianoplayer)"">

    " Using cached vtkplotter-2020.3.1.tar.gz (18.4 MB) ERROR: Could not find a version that satisfies the requirement vtk (from vtkplotter->pianoplayer) (from versions: none) ERROR: No matching distribution found for vtk (from vtkplotter->pianoplayer)"

    Hi, I'm trying to install this for windows 10 and I get this error when I enter "pip install --upgrade pianoplayer" what should I do? I'm using python 3.8.5 if that matters.

    opened by gabezilla52 6
  • AttributeError: 'Instrument' object has no attribute 'tie'

    AttributeError: 'Instrument' object has no attribute 'tie'

    I'm getting the following error when running pianoplayer "xy.mid" --verbose -n10 -rvz (tested on Windows with Python 3.8 & 3.7, and on Manjaro python 3.8)

    Traceback (most recent call last):
      File "/home/anton/.local/bin/pianoplayer", line 195, in <module>
        rh.noteseq = reader(sf, beam=args.rbeam)
      File "/home/anton/.local/lib/python3.8/site-packages/pianoplayer/scorereader.py", line 51, in reader
        if n.tie and (n.tie.type=='continue' or n.tie.type=='stop'): continue
    AttributeError: 'Instrument' object has no attribute 'tie'
    
    opened by IngoOutgo 4
  • Errors package

    Errors package

    I downloaded the 2000 most popular piano sheet music from Musescore, as mxl.

    I ran the lastest pip version of pianoplayer on all of the files (on XXS setting), and started getting errors, like https://github.com/marcomusy/pianoplayer/issues/21 and others (python errors).

    Here I share an archive of all of the files that had execution errors (148 out of 2000), in the hope this helps you make this system more robust.

    File names are constructed from musescore ID, and title, so you can always trace back to musescore.com in order to see the file.

    errors.zip

    opened by AmitMY 4
  • Hand size keeps defaulting to M, MuseScore3 not showing fingering

    Hand size keeps defaulting to M, MuseScore3 not showing fingering

    Running this on Windows, so not sure how much of it has to do with this!

    Whenever I try to run it from either the GUI or command line using -S, -XS, etc, it defaults to M. It also seems to run through it twice (e.g., I see 'Your hand span set to size-M which is 17.22 cm (max relaxed distance between thumb and pinkie)' appear twice with the fingering output following it.

    Additionally, opening the output.xml file in MuseScore3 does not show any fingering, just the music. Scanning through the output file XML doesn't seem to clearly show any fingering.

    My apologies if this has already been addressed - I've searched through the issues and haven't seen anything in regard to these two issues!

    opened by kchurch05 3
  • Exception in Tkinter Callback

    Exception in Tkinter Callback

    Love this program as it's very helpful in learning fingering for new songs but getting an Exception in Tkinter calklback on a couple scores and hoping you might be able to help?

    Saving score to output.xml
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\Matth\anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
        return self.func(*args)
      File "C:\Users\Matth\anaconda3\Scripts\pianoplayer", line 93, in generateCMD
        sf.write('xml', fp='output.xml')
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\stream\__init__.py", line 252, in write
        return super().write(*args, **kwargs)
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\base.py", line 2562, in write
        return formatWriter.write(self, regularizedConverterFormat, fp, subformats, **keywords)
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\converter\subConverters.py", line 927, in write
        dataBytes = generalExporter.parse()
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\musicxml\m21ToXml.py", line 363, in parse
        outObj = self.fromGeneralObject(obj)
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\musicxml\m21ToXml.py", line 399, in fromGeneralObject
        outObj = meth(obj)
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\musicxml\m21ToXml.py", line 411, in fromScore
        scOut = sc.makeNotation(inPlace=False)
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\stream\__init__.py", line 13127, in makeNotation
        **subroutineKeywords)
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\stream\__init__.py", line 6040, in makeNotation
        bestClef=bestClef)
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\stream\__init__.py", line 5765, in makeMeasures
        inPlace=inPlace,
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\stream\makeNotation.py", line 577, in makeMeasures
        'within any measures' % (e, start, end))
    music21.exceptions21.StreamException: cannot place element Piano with start/end 180.0/180.0 within any measures
    

    On a different score I get the following error:

    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\Matth\anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
        return self.func(*args)
      File "C:\Users\Matth\anaconda3\Scripts\pianoplayer", line 89, in generateCMD
        self.lh.noteseq = reader(sf, beam=self.LeftHandBeam)
      File "C:\Users\Matth\anaconda3\lib\site-packages\pianoplayer\scorereader.py", line 32, in reader
        strm = sf.parts[beam].flat
      File "C:\Users\Matth\anaconda3\lib\site-packages\music21\stream\iterator.py", line 328, in __getitem__
        e = fe[k]
    IndexError: list index out of range
    

    I did some research and found the following: This error occurs when you run a program using the Canvas library (used from Unit 2 onwards) more than once. This is a known problem with Canvas, and is not caused by your programming. The only solution is to close all Python windows then re-run IDLE after each time you run your program.

    Not sure if the above is relevant. Any idea on how to fix the issue?

    bug 
    opened by mathiasjg 3
  • Exception on loading a music xml file

    Exception on loading a music xml file

    Windows 7, x64 system with python 3.6.

    I get an exception after loading a XML file. The program first prints the following

    Your hand span set to size-M which is 17.22 cm
    (max relaxed distance between thumb and pinkie)
    Reading beam 0 with 63 objects in stream.
    meas.1   finger:2 on C4         v=0.1      [2, 2, 3, 2, 5, 4] d:
    meas.1   finger:2 on C4         v=0.1      [2, 3, 2, 5, 4] d:5
    meas.2   finger:3 on D4         v=0.1      [3, 2, 5, 4, 2] d:5
    meas.2   finger:2 on C4         v=0.1      [2, 5, 4, 2, 2] d:5
    meas.2   finger:5 on F4         v=0.1      [5, 4, 2, 2, 3] d:5
    meas.3   finger:4 on E4         v=0.1      [4, 2, 2, 3, 2] d:5
    meas.3   finger:2 on C4         v=0.6      [2, 2, 3, 2, 5, 4] d:
    meas.3   finger:2 on C4         v=0.8      [2, 3, 2, 5, 4] d:5
    meas.4   finger:3 on D4         v=0.9      [3, 2, 5, 4, 1] d:5
    meas.4   finger:2 on C4         v=0.8      [2, 5, 4, 1, 1] d:5
    meas.4   finger:5 on G4         v=3.3      [5, 4, 1, 1, 5] d:5
    meas.5   finger:4 on F4         v=3.3      [4, 1, 1, 5, 3] d:5
    meas.5   finger:1 on C4         v=3.2      [1, 1, 5, 3, 2, 1] d:
    meas.5   finger:1 on C4         v=4.0      [1, 5, 3, 2, 1] d:5
    meas.6   finger:5 on C5         v=1.3      [5, 4, 3, 2, 1] d:5
    meas.6   finger:4 on A4         v=0.8      [4, 3, 2, 1, 5] d:5
    meas.6   finger:3 on F4         v=0.4      [3, 2, 1, 5, 5] d:5
    meas.7   finger:2 on E4         v=0.7      [2, 1, 5, 5, 4, 2] d:
    meas.7   finger:1 on D4         v=0.6      [1, 5, 5, 4, 2, 4] d:
    meas.7   finger:5 on B-4        v=0.5      [5, 5, 4, 2, 4, 3] d:
    meas.7   finger:5 on B-4        v=0.6      [5, 4, 2, 4, 3] d:5
    meas.8   finger:4 on A4         v=0.5      [4, 2, 4, 3, 1] d:5
    meas.8   finger:2 on F4         v=0.7      [2, 4, 3, 1, 2] d:5
    meas.8   finger:4 on A4         v=0.9      [4, 3, 1, 2, 1] d:5
    meas.9   finger:3 on G4         v=0.9      [3, 2, 3, 2, 5] d:5
    meas.9   finger:2 on C4         v=0.1      [2, 3, 2, 5, 4] d:5
    meas.10   finger:3 on D4        v=0.1      [3, 2, 5, 4, 2] d:5
    meas.10   finger:2 on C4        v=0.1      [2, 5, 4, 2, 3] d:5
    meas.10   finger:5 on F4        v=0.1      [5, 4, 2, 3, 2] d:5
    meas.11   finger:4 on E4        v=0.8      [4, 2, 3, 2, 5] d:5
    meas.11   finger:2 on C4        v=0.8      [2, 3, 2, 5, 4] d:5
    meas.12   finger:3 on D4        v=0.9      [3, 2, 5, 4, 1] d:5
    meas.12   finger:2 on C4        v=2.6      [2, 5, 4, 1, 5] d:5
    meas.12   finger:5 on G4        v=1.9      [5, 4, 1, 5, 3] d:5
    meas.13   finger:4 on F4        v=2.1      [4, 1, 5, 3, 1] d:5
    meas.13   finger:1 on C4        v=2.6      [1, 5, 3, 2, 1] d:5
    meas.14   finger:5 on C5        v=1.3      [5, 4, 3, 2, 1] d:5
    meas.14   finger:4 on A4        v=0.8      [4, 3, 2, 1, 5] d:5
    meas.14   finger:3 on F4        v=0.6      [3, 2, 1, 5, 4] d:5
    meas.15   finger:2 on E4        v=0.6      [2, 1, 5, 4, 2] d:5
    meas.15   finger:1 on D4        v=0.4      [1, 5, 4, 2, 3] d:5
    meas.15   finger:5 on B-4       v=0.3      [5, 4, 2, 3, 2] d:5
    meas.16   finger:4 on A4
    meas.16   finger:2 on F4
    meas.16   finger:3 on G4
    meas.17   finger:2 on F4
    meas.17   finger:1 on C4
    meas.17   finger:1 on C4
    meas.18   finger:5 on A4
    meas.18   finger:3 on F4
    meas.18   finger:4 on G4
    meas.19   finger:0 on F4
    Your hand span set to size-M which is 17.22 cm
    (max relaxed distance between thumb and pinkie)
    

    and then throws an exception

    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1705, in __call
    __
        return self.func(*args)
      File "pianoplayer", line 89, in generateCMD
        self.lh.noteseq = reader(sf, beam=self.LeftHandBeam)
      File "C:\Program Files\Python36\lib\site-packages\pianoplayer\scorereader.py",
     line 32, in reader
        strm = sf.parts[beam].flat
      File "C:\Program Files\Python36\lib\site-packages\music21\stream\iterator.py",
     line 328, in __getitem__
        e = fe[k]
    IndexError: list index out of range
    

    I have attached the xml file that causes this error. Any pointers to this would be very helpful. TIA

    hb.zip

    opened by GitterHubber 3
  • Odd results for some accidentals

    Odd results for some accidentals

    This is a neat piece of software -- thanks for writing it!

    I've been playing with it a bit and noticed that for some "weird" accidentals like Cb the program outputs bizarre fingering choices. If I rewrite the note as B the fingering makes much more sense. I haven't tried the other comparable accidentals (B#, E#, Fb) to know if this is a general or specific problem (nor have I looked at double sharps or double flats). You may not even be actively working on this software anymore, but in case you are this is a minor issue that could use correcting. Thanks!

    Best, Jeffrey

    opened by jncarey 3
  • Double sharps are not recognized

    Double sharps are not recognized

    So for this score: https://musescore.com/user/147231/scores/1029831

    I get many errors:

    ERROR note not found F##

    Definitely makes sense why it's not recognized, just wanted to let you know in case you want to fix

    opened by AmitMY 2
  • On Windows

    On Windows

    "pip install pianoplayer" gives

    ERROR: Cannot install pianoplayer==1.0.0, pianoplayer==1.1.0, pianoplayer==1.1.1, pianoplayer==2.0.0, pianoplayer==2.0.1, pianoplayer==2.0.4, pianoplayer==2.0.5, pianoplayer==2.0.6, pianoplayer==2.0.7 and pianoplayer==2.1.0 because these package versions have conflicting dependencies.

    opened by AllTheProjects 1
  • Cannot visualize: `ERROR: texture file wood1 does not exist`

    Cannot visualize: `ERROR: texture file wood1 does not exist`

    Hello. I'm trying to visualize my MIDI file with this command:

    pianoplayer midi_file.midi -vz
    

    However, the command fails with these errors:

    [vedo.mesh.py:463] ERROR: texture file wood1 does not exist
    [vedo.mesh.py:463] ERROR: texture file wood1 does not exist
    Traceback (most recent call last):
      File "/home/hiroki/.local/bin/pianoplayer", line 224, in <module>
        vk = VirtualKeyboard(songname=xmlfn)
      File "/home/hiroki/.local/lib/python3.9/site-packages/pianoplayer/vkeyboard.py", line 41, in __init__
        self.build_keyboard()
      File "/home/hiroki/.local/lib/python3.9/site-packages/pianoplayer/vkeyboard.py", line 91, in build_keyboard
        self.vp += Text('PianoPlayer ^'+__version__+" ",
    NameError: name 'Text' is not defined
    

    I couldn't find the texture files on my computer. How can I get them?

    opened by toku-sa-n 3
  • No output.xml

    No output.xml

    After the program is finished processing, there is no output.xml file, or it is nowhere to be found. The first time running the program, it was found in the folder, but no longer. Also, the GUI Musescore function does not work, returning 'musescore' is not recognized as an internal or external command, operable program or batch file..

    opened by ztianhan 0
  • Timing information units ?

    Timing information units ?

    Hi,

    I am trying to understand the data in the INote class, in particular self.time and self.duration

    https://github.com/marcomusy/pianoplayer/blob/master/pianoplayer/scorereader.py#L20

    What are their units ? Are they measured in seconds or are they relative to another time reference ?

    Cheers

    opened by nyue 0
Releases(2.2.0)
Owner
Marco Musy
EMBL
Marco Musy
Spotipy - Player de música simples em Python

Spotipy Player de música simples em Python, utilizando a biblioteca Pysimplegui para a interface gráfica. Este tocador é bastante simples em si, mas p

Adelino Almeida 4 Feb 28, 2022
Synchronize a local directory of songs' (MP3, MP4) metadata (genre, ratings) and playlists with a Plex server.

PlexMusicSync Synchronize a local directory of songs' (MP3, MP4) metadata (genre, ratings) and playlists (m3u, m3u8) with a Plex server. The song file

Tom Goetz 9 Jul 07, 2022
This Bot can extract audios and subtitles from video files

Send any valid video file and the bot shows you available streams in it that can be extracted!!

TroJanzHEX 56 Nov 22, 2022
Bot duniya Music Player

Bot duniya Music Player Requirements 📝 FFmpeg (Latest) NodeJS nodesource.com (NodeJS 17+) Python (3.10+) PyTgCalls (Lastest) 2nd Telegram Account (ne

Aman Vishwakarma 16 Oct 21, 2022
An AI for Music Generation

An AI for Music Generation

Hao-Wen Dong 1.3k Dec 31, 2022
❤️ Hi There Im Cozmo Music Bot A next gen powerful telegram group Music bot for get your Songs and music @Venuja_Sadew

🎵 Cozmo MUSIC 🎵 Cozmo Music is a Music powerfull bot for playing music on telegram voice chat groups. Requirements FFmpeg NodeJS nodesource.com Pyth

Venuja Sadew 3 Jan 08, 2022
Audio library for modelling loudness

Loudness Loudness is a C++ library with Python bindings for modelling perceived loudness. The library consists of processing modules which can be casc

Dominic Ward 33 Oct 02, 2022
MelGAN test on audio decoding

Official repository for the paper MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis The original work URL: https://github.com

Jurio 1 Apr 29, 2022
Python implementation of the Short Term Objective Intelligibility measure

Python implementation of STOI Implementation of the classical and extended Short Term Objective Intelligibility measures Intelligibility measure which

Pariente Manuel 250 Dec 21, 2022
Use android as mic/speaker for ubuntu

Pulse Audio Control Panel Platforms Requirements sudo apt install ffmpeg pactl (already installed) Download Download the AppImage from release page ch

19 Dec 01, 2022
Audio2midi - Automatic Audio-to-symbolic Arrangement

Automatic Audio-to-symbolic Arrangement This is the repository of the project "Audio-to-symbolic Arrangement via Cross-modal Music Representation Lear

Ziyu Wang 24 Dec 05, 2022
Play any song directly into your group voice chat.

Telegram VCPlayer Bot Play any song directly into your group voice chat. Official Bot : VCPlayerBot | Discussion Group : VoiceChat Music Player Suppor

Shubham Kumar 50 Nov 21, 2022
PyAbsorp is a python module that has the main focus to help estimate the Sound Absorption Coefficient.

This is a package developed to be use to find the Sound Absorption Coefficient through some implemented models, like Biot-Allard, Johnson-Champoux and

Michael Markus Ackermann 8 Oct 19, 2022
L-SpEx: Localized Target Speaker Extraction

L-SpEx: Localized Target Speaker Extraction The data configuration and simulation of L-SpEx. The code scripts will be released in the future. Data Gen

Meng Ge 20 Jan 02, 2023
Hide Your Secret Message in any Wave Audio File.

HiddenWave Embedding secret messages in wave audio file What is HiddenWave Hiddenwave is a python based program for simple audio steganography. You ca

TechChip 99 Dec 28, 2022
Make an audio file (really) long-winded

longwind Make an audio file (really) long-winded Daily repetitions are an illusion anyway.

Vincent Lostanlen 2 Sep 12, 2022
Full LAKH MIDI dataset converted to MuseNet MIDI output format (9 instruments + drums)

LAKH MuseNet MIDI Dataset Full LAKH MIDI dataset converted to MuseNet MIDI output format (9 instruments + drums) Bonus: Choir on Channel 10 Please CC

Alex 6 Nov 20, 2022
All-In-One Digital Audio Workstation and Plugin Suite

How to install Windows Mac OS X Fedora Ubuntu How to Build Debian and Ubuntu Fedora All Other Linux Distros Mac OS X Windows What is MusiKernel? MusiK

j3ffhubb 111 Sep 21, 2021
Python library for audio and music analysis

librosa A python package for music and audio analysis. Documentation See https://librosa.org/doc/ for a complete reference manual and introductory tut

librosa 5.6k Jan 06, 2023
SU Music Player — The first open-source PyTgCalls based Pyrogram bot to play music in voice chats

SU Music Player — The first open-source PyTgCalls based Pyrogram bot to play music in voice chats Note Neither this, or PyTgCalls are fully

SU Projects 58 Jan 02, 2023