{ "info": { "author": "Nikolay Lysenko", "author_email": "nikolay-lysenco@yandex.ru", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Artistic Software" ], "description": "[![Build Status](https://travis-ci.org/Nikolay-Lysenko/rl-musician.svg?branch=master)](https://travis-ci.org/Nikolay-Lysenko/rl-musician)\n[![codecov](https://codecov.io/gh/Nikolay-Lysenko/rl-musician/branch/master/graph/badge.svg)](https://codecov.io/gh/Nikolay-Lysenko/rl-musician)\n[![Maintainability](https://api.codeclimate.com/v1/badges/a43618b5f9454d01186c/maintainability)](https://codeclimate.com/github/Nikolay-Lysenko/rl-musician/maintainability)\n[![PyPI version](https://badge.fury.io/py/rl-musician.svg)](https://badge.fury.io/py/rl-musician)\n\n# RL-Musician\n\n## Overview\n\nAs of now, this is a proof-of-concept for music composition by reinforcement learning agents. Here, an agent interacts with [piano roll](https://en.wikipedia.org/wiki/Piano_roll#In_digital_audio_workstations) environment, episode end is submission of current piano roll, and reward is determined by applying evaluation rules to the roll.\n\nComparing to music composition tools such as [MuseNet](https://openai.com/blog/musenet/), reinforcement learning approach (at least in theory) has two advantages:\n* Actual creativity lies not in imitation of famous pieces, but in finding new ways to create something to be called art. Reinforcement learning meets this criterion, but supervised learning don't.\n* There are [tuning systems](https://en.wikipedia.org/wiki/Musical_tuning#Tuning_systems) other than [equal temperament](https://en.wikipedia.org/wiki/Equal_temperament) (say, in [microtonal music](https://en.wikipedia.org/wiki/Microtonal_music)) and there can be not enough pieces for some of them. A model can not be trained in a supervised manner without a dataset, but, given evaluation rules, an agent can be trained even for an absolutely new tuning system.\n\nCurrently, the implementation of environment supports only equal temperament, but this limitation may be eliminated in the future.\n\n## Installation\n\nTo install a stable version, run:\n```bash\npip install rl-musician\n```\n\n## Usage\n\nTo train an agent from scratch and to get results produced by it, run:\n```bash\npython -m rlmusician \\\n -c [path/to/your/config] \\\n -p [how_long_to_train] \\\n -e [how_many_pieces_to_produce]\n```\n\nAll three arguments are optional. [Default config](https://github.com/Nikolay-Lysenko/rl-musician/blob/master/rlmusician/configs/default_config.yml) is used if `-c` argument is not passed; `-p` and `-e` options have reasonable defaults too.\n\nCreated pieces are stored in a directory specified in the config. For each piece, there is a nested directory that contains:\n* Piano roll in TSV format;\n* MIDI file;\n* Events file in [sinethesizer](https://github.com/Nikolay-Lysenko/sinethesizer) TSV format;\n* WAV file.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Nikolay-Lysenko/rl-musician", "keywords": "ai_music algorithmic_composition reinforcement_learning", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rl-musician", "package_url": "https://pypi.org/project/rl-musician/", "platform": "", "project_url": "https://pypi.org/project/rl-musician/", "project_urls": { "Homepage": "https://github.com/Nikolay-Lysenko/rl-musician" }, "release_url": "https://pypi.org/project/rl-musician/0.1.1/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Composition of music with reinforcement learning.", "version": "0.1.1" }, "last_serial": 5908196, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0cb33457f42d934420663a4882103a5c", "sha256": "7324228d466e78a9ad4afe71e6c5909184f7eaba006a8da7d981bd82fea742b4" }, "downloads": -1, "filename": "rl-musician-0.0.1.tar.gz", "has_sig": false, "md5_digest": "0cb33457f42d934420663a4882103a5c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 1403, "upload_time": "2019-08-17T10:43:14", "url": "https://files.pythonhosted.org/packages/f7/53/f500aef67d9367b72b23dda00b560ea6369c8bafdcf283b5a22f49f11e67/rl-musician-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "7483d937837f0c55ede24dcfb849cbaf", "sha256": "459816892b048f3e1f63d0281eee29f19a8349a0741a1b8af0a0cc7d178198ef" }, "downloads": -1, "filename": "rl-musician-0.1.0.tar.gz", "has_sig": false, "md5_digest": "7483d937837f0c55ede24dcfb849cbaf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15258, "upload_time": "2019-09-10T19:25:56", "url": "https://files.pythonhosted.org/packages/eb/bd/def7c4d301929c49e8b083275b5ec2e3e7ee0f2d3ede1d999bfa09a419e0/rl-musician-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "bcfc4f9bc10636053a71441135818ee4", "sha256": "5c2c1fa00f43cfd7a148e01643afa928301107c66a13a5551fc329fcf053978d" }, "downloads": -1, "filename": "rl-musician-0.1.1.tar.gz", "has_sig": false, "md5_digest": "bcfc4f9bc10636053a71441135818ee4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17304, "upload_time": "2019-09-30T17:52:52", "url": "https://files.pythonhosted.org/packages/7c/6a/2b5a253cefa596d87826f0d9e91eecf1b645b38ef9a86ab7aa36583f0915/rl-musician-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bcfc4f9bc10636053a71441135818ee4", "sha256": "5c2c1fa00f43cfd7a148e01643afa928301107c66a13a5551fc329fcf053978d" }, "downloads": -1, "filename": "rl-musician-0.1.1.tar.gz", "has_sig": false, "md5_digest": "bcfc4f9bc10636053a71441135818ee4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17304, "upload_time": "2019-09-30T17:52:52", "url": "https://files.pythonhosted.org/packages/7c/6a/2b5a253cefa596d87826f0d9e91eecf1b645b38ef9a86ab7aa36583f0915/rl-musician-0.1.1.tar.gz" } ] }