# piano_repertoire The piano_repertoire-project develops a database to keep track of the pieces a pianist can play, as well as an app to interact with the database. The software is open source and developed under the MIT license. ## Features At the moment, an alpha version is undertaken, with these features: ### Database - The sqlite-database holds a growing number of piano-solo pieces, together with their exact catalogue-numbers and composers. - Enclosed in this database is a table for users (pianists), in which is marked which of the works and movements can be played. ### Application and usage, Roadmap - Create new users (`n username`) - Show users (`su`) - Set an active user (`a number_of_user`) - Show the pieces stored in the database (`s`) - Mark work as mastered for the active user (`m number_of_work`) - Show pieces by composer (`c` shows composers, `s number_of_composer` shows pieces) - Show movements through works (`sw work_number`) - Mark movement as mastered for active user (`m number_of_work number_of_movement`) - Show possible commands (`h`) - Show mastered movements for activated user (`sm`) - display, if work or movement is mastered from active user when viewing works and movements - Works are shown sorted by composer and opus/work_directory-number (`s`, `smo`) or by composer and collection (`sm`) - Remove work or movement from being mastered for active user (`r number_of_work` or `r number_of_work number_of_movement`) - Remove user (`delete_my_user_record_including_all_mastered_works`) - Fixed bug: double marking crashes the program - Fixed bug: check for user before setting _(planned) Release piano_repertoire_cli V 0.0.1 alpha (learn about versioning before)_ _(planned) Port funtionality to a kivy-GUI_ - (planned) Save recordings per movement in userspace - (planned) Listen to saved recordings ## Requirements and how to run the application - Python 3.9 or higher - Enough disk space to hold the database - run `python builddb.py` to build the SQLite-database-file before running `python rep_cli.py` ## Known Bugs - Trying to mark works as mastered that are not present crashes the program - Providing alphabetic chars where numbers are expected crashes the program