{ "info": { "author": "Irmen de Jong", "author_email": "irmen@razorvine.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Natural Language :: Dutch", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Multimedia :: Sound/Audio", "Topic :: Multimedia :: Sound/Audio :: Conversion", "Topic :: Multimedia :: Sound/Audio :: Mixers", "Topic :: Multimedia :: Sound/Audio :: Players", "Topic :: Multimedia :: Sound/Audio :: Sound Synthesis" ], "description": "[![saythanks](https://img.shields.io/badge/say-thanks-ff69b4.svg)](https://saythanks.io/to/irmen)\n[![Latest Version](https://img.shields.io/pypi/v/synthplayer.svg)](https://pypi.python.org/pypi/synthplayer/)\n\n**Software sound synthesizer (FM/PWM oscillators), sound file streaming and conversion, \nand sound playback and mixing engine.**\n\nPypi: [synthplayer](https://pypi.org/project/synthplayer/) \n\n*requires Python 3.5 or newer*.\n\n\n# synthplayer.synth\n\nA waveform synthesizer that can generate different wave form samples:\nsine, triangle, sawtooth, square, pulse wave, harmonics and white noise.\nIt also supports Frequency Modulation, Pulse-width modulation, and ADSR envelopes using LFOs.\n\nFor efficiency reasons, the oscillators and filters return their waveform values in small\nchunks/lists instead of per individual value. When running the synthesizer with pypy the\nspeedup is remarkable over the older version (that used single value generators).\n\n\n![Synth Waveforms overview](./waveforms.png?raw=true \"Overview of the basic waveforms available in the synth\")\n\n![Synth GUI screenshot](./screenshot.png?raw=true \"Screenshot of the Keyboard GUI\")\n\n\n# synthplayer.playback\n\nSound playback engine. Supports multiple sound APIs, \nefficient sequential streaming or real-time mixing of shorter sound clips.\nThe streaming is implemented via Python generators where the main generator essentially produces mixed sample fragments.\nThese are written to an audio stream of one of the supported audio libraries.\nSynthplayer will detect them in this order:\n\n- [``miniaudio``](https://github.com/irmen/pyminiaudio/) \u2190 highly recommended, lots of nice features\n- [``soundcard``](https://soundcard.readthedocs.io/)\n- [``sounddevice``](http://python-sounddevice.readthedocs.io/)\n- [``pyaudio``](http://people.csail.mit.edu/hubert/pyaudio/) \n- ``winsound`` (only on Windows, and has very limited capabilities, but comes installed by default). \n\n### No errors, but hearing no sound? \nIf you see no errors but hear nothing, you may need to manually configure the correct \noutput audio device. On some systems, the portaudio system audio library seems to report a wrong \ndefault output audio device. In this case, you may get an ``IOError``\n(describing the problem). You can also get another error (or no sound output at all,\nwithout any errors at all...) If this happens, you can manually configure the output audio device\nthat should be used:\n\nEither set the ``PY_SYNTHPLAYER_AUDIO_DEVICE`` environment variable to the correct device number,\nor set the ``synthplayer.playback.default_audio_device`` parameter at the start of your code.\n(The environment variable has priority over the code parameter)\n\nTo find the correct device number you can use the ``query_devices`` method or type ``python -m sounddevice``.\n\n# synthplayer.sample\n\nContains the Sample class that represents a digitized sound clip.\nIt provides a set of simple sound manipulation methods such as changing\nthe amplitude, fading in/out, and format conversions.\n\n\n# synthplayer.streaming\n\nProvides various classes to stream audio data with.\nUses ffmpeg or oggdec to read/stream many different sound formats.\n\n\n# Example program: jukebox.box\n\nThis is a jukebox like party sound player that allows to prepare a playlist,\nfade from a track to the next from the list, and insert random soundbytes for added fun.\nThe songs are queried from a backend audio file database server program.\n\n\n# Example program: trackmixer\n\nYou assemble rhythm samples into bars and patterns, which are then mixed.\nSamples have to be in .wav format but can be anything that the Python wave module understands. \nThe 'track' files are in a simple .ini format and can be edited with any text editor.\nMost of the file should be self explanatory but here are a few tips:\n\n- Song bpm means beats per minute, which translates in how many *bars* are played per minute.\n If you put one kick/bass drum trigger in one bar, it exactly hits the specified number of beats per minute.\n- Song ticks means how many *ticks* (or *triggers*) are in one bar. More ticks means more resolution. Nice for fast hi-hats.\n- A *bar* is a sequence of instrument *ticks* (or *triggers*) where '.' means nothing is played at that instant,\n and another character such as 'x' means that the sample is played at that instant.\n- you can separate bars with whitespace for easier readability\n- pattern names are prefixed with ``pattern.`` when writing their section (ini file limitation, you can't nest things)\n- patterns can contain one or more bars per instrument (so you can have long and short patterns). However inside\n a pattern every instrument has to have the same number of bars.\n\n\nHere is a very simple example of a track file:\n\n```ini\n[paths]\n# where to find the sample files\nsamples = samples/\n\n[samples]\n# list your samples here\nkick7 = biab_kick_7.wav\nsnare2 = biab_sn_2.wav\nsnare10 = biab_sn_10.wav\nhihat2 = biab_hat_2.wav\nhihat4 = biab_hat_4.wav\n\n[song]\n# basic song parameters and pattern sequence\nbpm = 128\nticks = 4\npatterns = pat1 pat2 pat1 pat2 outro\n\n[pattern.pat1]\nhihat2 = x.x. x.x. x.x. x.x.\nsnare2 = .... x... .... x...\nkick7 = x... x... x... x...\n\n[pattern.pat2]\nhihat4 = x.x. x.x. x.x. x.x.\nsnare10 = .... .... x... x...\n\n[pattern.outro]\nhihat2 = x.x. x.x. \nhihat4 = .... x...\nkick7 = .... x...\n```\n\n## invoking the mixer\n\nTo simply mix and stream your track file to your speakers use the following command:\n\n``python trackmixer.py mytrack.ini``\n\nTo load your track file and start the interactive command line interface:\n\n``python trackmixer.py -i mytrack.ini``\n\n...then type ``help`` to see what commands are available.\n\nA few example tracks are provided, try them out! (pre-mixed output can be found in the example_mixes folder)\n\n- track1.ini - a short jungle-ish fragment\n- track2.ini - a somewhat longer classic rhythm loop, I guess it's in 4/4 time\n- track3.ini - an experiment with a few liquid drum'n'bass type patterns\n\n\n\n", "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/irmen/synthesizer", "keywords": "sound,audio,playback,conversion,synthesizer,FM,PWM,oscillator", "license": "LGPL3", "maintainer": "", "maintainer_email": "", "name": "synthplayer", "package_url": "https://pypi.org/project/synthplayer/", "platform": "", "project_url": "https://pypi.org/project/synthplayer/", "project_urls": { "Homepage": "https://github.com/irmen/synthesizer" }, "release_url": "https://pypi.org/project/synthplayer/2.4/", "requires_dist": null, "requires_python": "", "summary": "software sound synthesizer, audio streaming and conversion, and playback engine", "version": "2.4" }, "last_serial": 5498242, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "a4b2b340201f99d3bde37c38e39a3c10", "sha256": "84639f365e502e7b62b6023a7e3d649d269b273e28f6559ee3e0602125aaf0d2" }, "downloads": -1, "filename": "synthplayer-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a4b2b340201f99d3bde37c38e39a3c10", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 30156, "upload_time": "2018-07-16T21:43:22", "url": "https://files.pythonhosted.org/packages/38/81/266d62d3ab42f57e63aaee0cbf72c9d7ed5fa611633eb6e39756651640d3/synthplayer-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff040fc6b1120948d3eb4a9ecc6aeb89", "sha256": "777b9c58481e73ad4fd75fdc83d63dcd19ad65d3166beef03ee1653013a55229" }, "downloads": -1, "filename": "synthplayer-1.0.tar.gz", "has_sig": false, "md5_digest": "ff040fc6b1120948d3eb4a9ecc6aeb89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29234, "upload_time": "2018-07-16T21:43:20", "url": "https://files.pythonhosted.org/packages/42/86/354a38ae9d15f9744b51f89dd91c5e62edb58bda22455de954f3c9b26342/synthplayer-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "dcb18652d2d5c9ca9611eb68402563d8", "sha256": "9d0afa8d57612b88d658931031adaf18c0c3746c3c6df496efa5850387e236d2" }, "downloads": -1, "filename": "synthplayer-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "dcb18652d2d5c9ca9611eb68402563d8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 32170, "upload_time": "2018-07-16T21:49:45", "url": "https://files.pythonhosted.org/packages/30/40/d0b915cc1c6431db04156a73b81a4fc69901c526d5393e249cc1493fdd8e/synthplayer-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9ef81b5cbb83dbecc8c5a2ac268300d", "sha256": "61c308e21a9b2a94ded65ce925c77cc0ddade5b9c6af8357b622d03046cb0f28" }, "downloads": -1, "filename": "synthplayer-1.0.1.tar.gz", "has_sig": false, "md5_digest": "c9ef81b5cbb83dbecc8c5a2ac268300d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32481, "upload_time": "2018-07-16T21:49:43", "url": "https://files.pythonhosted.org/packages/03/99/8b7827265589944ec7f610d2ff0f24a2e75ff3ec0aa12232454fc5d9cc72/synthplayer-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "545309501c12db64ee5398cb14cbca5e", "sha256": "2b85daa2785a5e66d29dad2fd7885597367387f7ed639007616e09cbcd3c77a3" }, "downloads": -1, "filename": "synthplayer-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "545309501c12db64ee5398cb14cbca5e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32171, "upload_time": "2018-07-16T21:55:20", "url": "https://files.pythonhosted.org/packages/2d/22/29be5cf12479e354766644f62e144a0f3767d648fdc082518da23c14debb/synthplayer-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "478249d7263dd71035f2397b7a75dc3e", "sha256": "97d7076c92fbe689ba43f3d80301d6fc0216f4907099b913002d16bb70ef9e0d" }, "downloads": -1, "filename": "synthplayer-1.0.2.tar.gz", "has_sig": false, "md5_digest": "478249d7263dd71035f2397b7a75dc3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32478, "upload_time": "2018-07-16T21:55:22", "url": "https://files.pythonhosted.org/packages/e5/5b/79dcef3fe3b45cf1881934d94a674a10994f01856c7e842e33365a0cf420/synthplayer-1.0.2.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "ebf25b55e6bf6a8edcb7afac81c90805", "sha256": "df06eaa26a6d92dc29f58f55123351f1274d3e62d934f6d4deed343331c53765" }, "downloads": -1, "filename": "synthplayer-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ebf25b55e6bf6a8edcb7afac81c90805", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 35059, "upload_time": "2018-07-17T22:52:03", "url": "https://files.pythonhosted.org/packages/9d/52/d9f0085170e1170544f6bd464392dd0df05ef3e6da72929cc17152f43271/synthplayer-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9119783d9b48ced9a17c12e60063065", "sha256": "cbe3dbbdde07e5fec462eca28fba14c8445706dba0933320e8ed572534a33bc6" }, "downloads": -1, "filename": "synthplayer-1.1.tar.gz", "has_sig": false, "md5_digest": "f9119783d9b48ced9a17c12e60063065", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32657, "upload_time": "2018-07-17T22:52:01", "url": "https://files.pythonhosted.org/packages/af/f2/c1d46d7d849038fe9f0f6c46d160f197c0e64caaad7460cc36a1eb11294e/synthplayer-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "38c74c56c512f61adf7d562476d51d64", "sha256": "ba97a33246c798211333f288b0df4c64fc7add0ab3e9886d5f493196d5d88446" }, "downloads": -1, "filename": "synthplayer-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "38c74c56c512f61adf7d562476d51d64", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36066, "upload_time": "2018-08-03T20:38:55", "url": "https://files.pythonhosted.org/packages/4c/db/4841e18c7f4974f94584140e0db4bcb8f6659b8d217d2a7b3a0e3acd73e5/synthplayer-1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65f7d8039d35c2a9df8dbd961370f5dd", "sha256": "51f8a93036d00879969899a320c7d9b0e6a5ab2938d2d8a7ae2f80892aadc326" }, "downloads": -1, "filename": "synthplayer-1.2.tar.gz", "has_sig": false, "md5_digest": "65f7d8039d35c2a9df8dbd961370f5dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33688, "upload_time": "2018-08-03T20:38:56", "url": "https://files.pythonhosted.org/packages/57/e2/15c511e8fd9eb02fda1807c9eaedbddada1819dc39535ebdb71cf7fc1ae4/synthplayer-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "e5796fd1f24b3c7435381d46be2c12a0", "sha256": "7127d804f92a62b45f14d311ad651b870f2bdc18259862b86408c543c91d0bfc" }, "downloads": -1, "filename": "synthplayer-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e5796fd1f24b3c7435381d46be2c12a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37266, "upload_time": "2018-10-27T15:42:50", "url": "https://files.pythonhosted.org/packages/0b/ff/14a32e06e73cb362a9210745edccea969053e56757a3db6e67976bae1f4f/synthplayer-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7fd122173e348e9902c7ad16f4143f2", "sha256": "24bb3006d1062b9a810363d6dfb2ca13d9c5cb51a3617a824cb9c99c5bdae8c9" }, "downloads": -1, "filename": "synthplayer-1.3.tar.gz", "has_sig": false, "md5_digest": "c7fd122173e348e9902c7ad16f4143f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35126, "upload_time": "2018-10-27T15:42:52", "url": "https://files.pythonhosted.org/packages/8f/ed/77695174bbccf7ba70196fa7f8377224c07da1338e0b4051fc54e419127c/synthplayer-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "1f469129877855f4e590f2fa6c1450e1", "sha256": "569cf4d5536b57a0754502bbea39ca70654d2a63291819dd2607ca5a15a2aedd" }, "downloads": -1, "filename": "synthplayer-1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1f469129877855f4e590f2fa6c1450e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37862, "upload_time": "2018-11-14T21:52:53", "url": "https://files.pythonhosted.org/packages/c2/06/53a555a89645a05515fcb8a798b32ea5912aeaf74e4d423fca397dfd4803/synthplayer-1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "611e9162b06f4beef376c6c332bb19d0", "sha256": "89cf0db401187543c2f0dfc9db5d2c770bfedc0bf48fd850f2e768a1e5ee3a98" }, "downloads": -1, "filename": "synthplayer-1.4.tar.gz", "has_sig": false, "md5_digest": "611e9162b06f4beef376c6c332bb19d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35770, "upload_time": "2018-11-14T21:52:55", "url": "https://files.pythonhosted.org/packages/3f/84/305ddfe814dd927a5735bc2b431f77983f10bad868e2e00d9ec7d857ba00/synthplayer-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "8cdd9d84c7ce1168758584b972f6b884", "sha256": "160c08d0fad9b4e497ff6a946b915be48fcc501f6ea6f4385585b07da549a838" }, "downloads": -1, "filename": "synthplayer-1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "8cdd9d84c7ce1168758584b972f6b884", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37867, "upload_time": "2018-11-27T22:48:58", "url": "https://files.pythonhosted.org/packages/48/eb/e6e27785458f2470d601af20d4b837446eb0a39fc691b34ed08eccf903fd/synthplayer-1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0d532920ca88a019e24e7bcf65e1fbd", "sha256": "1c184fbb4b5596098dafa6a67c8a0c70404443ac5e3d51b08ebd089e05f8e6d0" }, "downloads": -1, "filename": "synthplayer-1.5.tar.gz", "has_sig": false, "md5_digest": "f0d532920ca88a019e24e7bcf65e1fbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35772, "upload_time": "2018-11-27T22:49:01", "url": "https://files.pythonhosted.org/packages/66/f8/abd0f821fb3e3502ee436c6c6602d9772c49d6fbd5b95906f41ce4eac73b/synthplayer-1.5.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "e7fdc057cd5023626e1e0bdf1c8daa8b", "sha256": "6f8484264e364a5cffbe116308a84ca9be4430d29ccb77f125e9391bb9834aa8" }, "downloads": -1, "filename": "synthplayer-2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e7fdc057cd5023626e1e0bdf1c8daa8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41277, "upload_time": "2019-06-04T23:39:15", "url": "https://files.pythonhosted.org/packages/ff/c0/e05e69802a55fdd8a5db4ee470f8ea738914f086a1ae9da4e133313301e0/synthplayer-2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb631d04816b71cafe9b78c214653bef", "sha256": "a0dae476cb626d0a7333eb262c365dd4bb33b5b8dd6a0a8b10b921a86c54c20b" }, "downloads": -1, "filename": "synthplayer-2.0.tar.gz", "has_sig": false, "md5_digest": "fb631d04816b71cafe9b78c214653bef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41306, "upload_time": "2019-06-04T23:39:17", "url": "https://files.pythonhosted.org/packages/ae/20/e131514fe4f885b4d09f7700af0eed1cc11e8d446e0f70928ef1b3db5d60/synthplayer-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "1cff66417b73a48d5cebe68662a68c3a", "sha256": "b91b880f8af4a9898f00b5e220f4415110f01c8f799b8851d369dcb21bcbcb0d" }, "downloads": -1, "filename": "synthplayer-2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1cff66417b73a48d5cebe68662a68c3a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37342, "upload_time": "2019-06-09T22:24:20", "url": "https://files.pythonhosted.org/packages/ed/02/a22ee69fba8eb0614d99ae59f62a0636eac68ceebf4452c76978bd48c5c2/synthplayer-2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "56e6691973c5a6da8b74727f1c93eed9", "sha256": "0cc4bd87029480ddbd87a23aa7be73546ad11c4fdd26c0151d11a72abcdf379b" }, "downloads": -1, "filename": "synthplayer-2.1.tar.gz", "has_sig": false, "md5_digest": "56e6691973c5a6da8b74727f1c93eed9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37532, "upload_time": "2019-06-09T22:24:22", "url": "https://files.pythonhosted.org/packages/d6/36/15e6907df316a0823498e9f3e956511f83d2fe63a6f3cb4d2656c2def87a/synthplayer-2.1.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "326dda316ea84ce4e8f0317be476a8e0", "sha256": "b9b53db3dff40e141daf717be45ea8f4a95ab4cb9d57ef781bffd78c836e35f7" }, "downloads": -1, "filename": "synthplayer-2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "326dda316ea84ce4e8f0317be476a8e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37936, "upload_time": "2019-06-17T17:44:32", "url": "https://files.pythonhosted.org/packages/fa/a0/793cd3d813eceaf487d4bb9e8ac8329b40e7935a981436a66e148ef29bd3/synthplayer-2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d209c08f7730c5b2c5971ab05149d345", "sha256": "330a637913eb2134692b963e3e6903ec7e2caa7262e1cd320ad4f77dffbd8c77" }, "downloads": -1, "filename": "synthplayer-2.2.tar.gz", "has_sig": false, "md5_digest": "d209c08f7730c5b2c5971ab05149d345", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38232, "upload_time": "2019-06-17T17:44:34", "url": "https://files.pythonhosted.org/packages/11/3c/8370d45e82982d70a5e674dcab978a76a6551a89a25c58228aefb8179ae0/synthplayer-2.2.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "d485c460d6349fbabf53be41af631dd8", "sha256": "255f411b97f4f096fda7246f063b48f71221707a8e75d6f401421751b8eaf868" }, "downloads": -1, "filename": "synthplayer-2.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d485c460d6349fbabf53be41af631dd8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50319, "upload_time": "2019-07-03T14:54:57", "url": "https://files.pythonhosted.org/packages/53/68/d886721e9e4f5dff510938b244b139dceccebe20cc2c3c5ca062378f6d56/synthplayer-2.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbf7b8c361b315eb5628c68ed6d9aa53", "sha256": "8492b2c6bea2b1143145e239cb77c8e7e9e0b83d47a6e9a01bb798eb2782e926" }, "downloads": -1, "filename": "synthplayer-2.2.1.tar.gz", "has_sig": false, "md5_digest": "dbf7b8c361b315eb5628c68ed6d9aa53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44225, "upload_time": "2019-07-03T14:54:59", "url": "https://files.pythonhosted.org/packages/76/e5/5b4dd1c2a653f61ee3ae57b98fd678579ebf8204772eab48e868590d6a12/synthplayer-2.2.1.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "192bdb7cf1c4f8dc0b394f9ec373162a", "sha256": "60274bb84009dcf6619d07c0a049ce4e99b50862cd18be8ae70be0f0c6986469" }, "downloads": -1, "filename": "synthplayer-2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "192bdb7cf1c4f8dc0b394f9ec373162a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50355, "upload_time": "2019-07-04T16:17:49", "url": "https://files.pythonhosted.org/packages/bb/b0/f0f3b6c9362cf4445e33e55f5e249d2bd22ee6c32366e8c948b46d12b164/synthplayer-2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b17c6d0f5080db0122bac3e2f64491d", "sha256": "d48fb2ffb8f9a77cb0a77e20a31e1069d97bfec90880cdd894e8af2ba92c3dc8" }, "downloads": -1, "filename": "synthplayer-2.3.tar.gz", "has_sig": false, "md5_digest": "6b17c6d0f5080db0122bac3e2f64491d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44312, "upload_time": "2019-07-04T16:17:50", "url": "https://files.pythonhosted.org/packages/90/b6/db041fa04276f13ec3cf9a87e2510d0f590ea5515c844479b584deb6af55/synthplayer-2.3.tar.gz" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "79a14f06925dc6e468366eafcb677bb2", "sha256": "c0ad26b605beb03c7bdce10fda900aea3429d286c6dca7c298ae44dc3a4333d4" }, "downloads": -1, "filename": "synthplayer-2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "79a14f06925dc6e468366eafcb677bb2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50576, "upload_time": "2019-07-07T22:02:08", "url": "https://files.pythonhosted.org/packages/2a/7f/3835e02c980a3d54a7801183d12d04dcced4d4243e5ad61381b3b61643f8/synthplayer-2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19b57725d2be29b24c50e19873f60854", "sha256": "106795bd0f2c7ea3827405a84bbb57fdf841a87e60f70e911b794adfa4e1a036" }, "downloads": -1, "filename": "synthplayer-2.4.tar.gz", "has_sig": false, "md5_digest": "19b57725d2be29b24c50e19873f60854", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44619, "upload_time": "2019-07-07T22:02:10", "url": "https://files.pythonhosted.org/packages/57/83/5079bd8617bcb9475926ffd84005e9096de3c6b14066824af453c2dcc898/synthplayer-2.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "79a14f06925dc6e468366eafcb677bb2", "sha256": "c0ad26b605beb03c7bdce10fda900aea3429d286c6dca7c298ae44dc3a4333d4" }, "downloads": -1, "filename": "synthplayer-2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "79a14f06925dc6e468366eafcb677bb2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50576, "upload_time": "2019-07-07T22:02:08", "url": "https://files.pythonhosted.org/packages/2a/7f/3835e02c980a3d54a7801183d12d04dcced4d4243e5ad61381b3b61643f8/synthplayer-2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19b57725d2be29b24c50e19873f60854", "sha256": "106795bd0f2c7ea3827405a84bbb57fdf841a87e60f70e911b794adfa4e1a036" }, "downloads": -1, "filename": "synthplayer-2.4.tar.gz", "has_sig": false, "md5_digest": "19b57725d2be29b24c50e19873f60854", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44619, "upload_time": "2019-07-07T22:02:10", "url": "https://files.pythonhosted.org/packages/57/83/5079bd8617bcb9475926ffd84005e9096de3c6b14066824af453c2dcc898/synthplayer-2.4.tar.gz" } ] }