{ "info": { "author": "Yuma Mihira", "author_email": "info@yurax2.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Topic :: Multimedia :: Sound/Audio :: MIDI", "Topic :: Multimedia :: Sound/Audio :: Sound Synthesis" ], "description": "# Python synthesizer [![Build Status](https://travis-ci.org/yuma-m/synthesizer.svg?branch=master)](https://travis-ci.org/yuma-m/synthesizer) [![Documentation Status](https://readthedocs.org/projects/synthesizer/badge/?version=latest)](http://synthesizer.readthedocs.io/en/latest/?badge=latest)\n\n\n- Virtual analog synthesizer. \n\n## Installation\n\n```bash\n$ pip install synthesizer\n```\n\n### Install dependencies\n\n#### Ubuntu\n\n```bash\n$ apt install portaudio19-dev\n$ pip install pyaudio\n```\n\n### macOS\n\n```bash\n$ brew install portaudio\n$ pip install pyaudio\n```\n\n## Basic usage\n\n### Play 440Hz sine wave\n\n```python\n>>> from synthesizer import Player, Synthesizer, Waveform\n\n\n>>> player = Player()\n>>> player.open_stream()\n>>> synthesizer = Synthesizer(osc1_waveform=Waveform.sine, osc1_volume=1.0, use_osc2=False)\n# Play A4\n>>> player.play_wave(synthesizer.generate_constant_wave(440.0, 3.0))\n```\n\n### Play chord\n\n```python\n# Play C major\n>>> chord = [261.626, 329.628, 391.996]\n>>> player.play_wave(synthesizer.generate_chord(chord, 3.0))\n```\n\n### Specify audio device\n\n```python\n>>> player.enumerate_device()\n# index: 00, name: \"Built-in Microphone\", rate: 44100\n# index: 01, name: \"Built-in Output\", rate: 44100\n# index: 02, name: \"UA-25EX 44.1kHz\", rate: 44100\n>>> player.open_stream(device_name=\"UA-25EX\")\n```\n\n### Write wav file\n\n```python\n>>> from synthesizer import Writer\n>>> writer = Writer()\n\n>>> chord = [261.626, 329.628, 391.996]\n>>> wave = synthesizer.generate_chord(chord, 3.0)\n>>> writer.write_wave(\"path/to/your.wav\", wave)\n```\n\n## Supported OS\n\n- macOS 10.12 and above\n- Ubuntu 16.04\n\n## Supported versions\n\n- Python 2.7\n- Python 3.4 and above\n\n## Author\n\n- [Yuma Mihira](http://yurax2.com/)\n\n## License\n\n- GPL v3 License\n\n## Links\n\n- PyPI: https://pypi.python.org/pypi/synthesizer\n- GitHub: https://github.com/yuma-m/synthesizer\n- Document: https://synthesizer.readthedocs.io", "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/yuma-m/synthesizer", "keywords": "analog synthesizer", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "synthesizer", "package_url": "https://pypi.org/project/synthesizer/", "platform": "", "project_url": "https://pypi.org/project/synthesizer/", "project_urls": { "Homepage": "https://github.com/yuma-m/synthesizer" }, "release_url": "https://pypi.org/project/synthesizer/0.1.5/", "requires_dist": null, "requires_python": "", "summary": "A simple virtual analog synthesizer.", "version": "0.1.5" }, "last_serial": 4950543, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "a7a0329e64133383b828f4dbbb612436", "sha256": "0198d218f68c06119c2f3f70a0101236ed6c2d2c193b1fa8dbdea3793de574db" }, "downloads": -1, "filename": "synthesizer-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a7a0329e64133383b828f4dbbb612436", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 2809, "upload_time": "2017-10-01T12:05:51", "url": "https://files.pythonhosted.org/packages/20/77/5c9f4a952e2d7133c436500c30a8660a8dafa4af5c72ba20fb046cb6e829/synthesizer-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13fac8d6902d9287f5b043edc66c7c04", "sha256": "83c7cecff0e155e4566cb1da7482aab8651cedbed565f5f9c1e09f45cf5acb7c" }, "downloads": -1, "filename": "synthesizer-0.1.0.tar.gz", "has_sig": false, "md5_digest": "13fac8d6902d9287f5b043edc66c7c04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1459, "upload_time": "2017-10-01T12:05:54", "url": "https://files.pythonhosted.org/packages/08/c8/c30206a7850bc5d97dd1f23bdf5c6c6eacceec5684c33e71703c7d57f353/synthesizer-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b8ba663fa64e4d864a70d33db4c10889", "sha256": "fb6084e3e96243f8fa339acbd3960718a07ead2d7af72bc1f4507039aed45a50" }, "downloads": -1, "filename": "synthesizer-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b8ba663fa64e4d864a70d33db4c10889", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5647, "upload_time": "2017-10-01T14:20:53", "url": "https://files.pythonhosted.org/packages/19/06/a9e038004ca6cdd35a922cb5d31a3c0fb0143678b5a4a9d803f455d68d65/synthesizer-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "842fd4500750edabf413084d6e037776", "sha256": "e15fc21587ea0dfe288d1a3d48d37019213d6ff62780bc15ab3fbfa90265d338" }, "downloads": -1, "filename": "synthesizer-0.1.1.tar.gz", "has_sig": false, "md5_digest": "842fd4500750edabf413084d6e037776", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3427, "upload_time": "2017-10-01T14:20:54", "url": "https://files.pythonhosted.org/packages/6f/1d/8bb9bb48bbbacb3c6bafd8c1dec90acaaea2751ec769a42299c5884b4c40/synthesizer-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a8c9b8a5d9296466ae7d12a2dfd1241c", "sha256": "3d3428243bce183962c3d5969f715124ceb6e947c6c976ea3c9a4f35fa73d65c" }, "downloads": -1, "filename": "synthesizer-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a8c9b8a5d9296466ae7d12a2dfd1241c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5934, "upload_time": "2017-10-01T16:00:15", "url": "https://files.pythonhosted.org/packages/de/36/48a021d2d9dd769d2ee96d54a3fcd63288850be4fe90a4cb264bb3f4cf6d/synthesizer-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59177407e4345778fdd5a05265afc3e6", "sha256": "57f06814d340389a66a7b827e941380fcf6930600410bedb7fd5605e09d4a0f8" }, "downloads": -1, "filename": "synthesizer-0.1.2.tar.gz", "has_sig": false, "md5_digest": "59177407e4345778fdd5a05265afc3e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3673, "upload_time": "2017-10-01T16:00:18", "url": "https://files.pythonhosted.org/packages/9a/0b/b64e561ea823355ad43484cace76796750668df882c877fba059ff0f366f/synthesizer-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "626f9cea2fcdc8b3475fe7d3d5f61657", "sha256": "1a4fb109f1a2b49c664b08a721db3fb294ac5627185848b170a73adef51e984f" }, "downloads": -1, "filename": "synthesizer-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "626f9cea2fcdc8b3475fe7d3d5f61657", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7113, "upload_time": "2017-10-02T14:00:50", "url": "https://files.pythonhosted.org/packages/f2/2f/21dca91a223e5593419a1e677e67de6a9052bc3c6cb994c3e1e826314808/synthesizer-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f03fa031265ffb8106538cf10077fa5", "sha256": "06e1f45f957b0b65e79c7dee594c98eb16eb6a2caf78b521330d4060799c4aca" }, "downloads": -1, "filename": "synthesizer-0.1.3.tar.gz", "has_sig": false, "md5_digest": "2f03fa031265ffb8106538cf10077fa5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4667, "upload_time": "2017-10-02T14:00:51", "url": "https://files.pythonhosted.org/packages/85/7b/9445f988e7ef9f9dac5daaf70c1489c800708a225bf15ce1263c55b66fdc/synthesizer-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "144951ebc96ba621845a67163b4eff98", "sha256": "bdf6c7a406e4129bbf92dbf039938c3af7175c799cf5c431b6d888b66b61f548" }, "downloads": -1, "filename": "synthesizer-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "144951ebc96ba621845a67163b4eff98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7013, "upload_time": "2017-12-02T06:32:30", "url": "https://files.pythonhosted.org/packages/48/a3/dd4583add309c73e615649925f42058be203276ea1e5bff16c2ec480d75d/synthesizer-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b6280fbc04c69e74930194c07671a4b", "sha256": "fdc011702cd7a405705ff55d1698ad7cd3110dec57b64a16f2c76f4c174939c9" }, "downloads": -1, "filename": "synthesizer-0.1.4.tar.gz", "has_sig": false, "md5_digest": "4b6280fbc04c69e74930194c07671a4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4622, "upload_time": "2017-12-02T06:32:31", "url": "https://files.pythonhosted.org/packages/79/fb/01f7f30ea2f7dd8111fbe26e2ee2cdc3707a0d0714348fba7b6fb33e878a/synthesizer-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "d3982d43fdc7cc56fddb8c861bddc358", "sha256": "1c23ec9f14d90ef3dd52ea942ff87027e9ad121b2ee1a425e056ca8d408d70b6" }, "downloads": -1, "filename": "synthesizer-0.1.5.tar.gz", "has_sig": false, "md5_digest": "d3982d43fdc7cc56fddb8c861bddc358", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4738, "upload_time": "2019-03-17T15:28:53", "url": "https://files.pythonhosted.org/packages/5d/f2/2971aa59912323ccaf8b8898e77bf5c271f88db760c417f579d4e290f154/synthesizer-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d3982d43fdc7cc56fddb8c861bddc358", "sha256": "1c23ec9f14d90ef3dd52ea942ff87027e9ad121b2ee1a425e056ca8d408d70b6" }, "downloads": -1, "filename": "synthesizer-0.1.5.tar.gz", "has_sig": false, "md5_digest": "d3982d43fdc7cc56fddb8c861bddc358", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4738, "upload_time": "2019-03-17T15:28:53", "url": "https://files.pythonhosted.org/packages/5d/f2/2971aa59912323ccaf8b8898e77bf5c271f88db760c417f579d4e290f154/synthesizer-0.1.5.tar.gz" } ] }