{ "info": { "author": "Matthew Scott", "author_email": "matt@11craft.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Overview of Radiant Voices\r\n==========================\r\n\r\n\r\n\r\nPart of the Metrasynth_ project.\r\n\r\n.. _Metrasynth: https://metrasynth.github.io/\r\n\r\nRadiant Voices provides tools to\r\n**create, read, modify, and write SunVox files**.\r\nThis includes project files ending in ``.sunvox``,\r\nand module/synth files ending in ``.sunsynth``.\r\n\r\n\r\n\r\nSunVox data structures and APIs\r\n-------------------------------\r\n\r\nRadiant Voices has nearly 100% coverage of\r\nall data structures used by SunVox files,\r\nexposing a \"Pythonic\" API for creating and manipulating\r\nthose structures.\r\n\r\nUsing the API, you can do things not possible\r\nwith the standard SunVox interface or the SunVox DLL, such as:\r\n\r\n- `algorithmic composition`_\r\n- parametric synth/module design\r\n- structure and complexity analysis\r\n- automatic `graph layout`_ of modules\r\n- and more...\r\n\r\nOur collective imagination is the limit!\r\n\r\n.. _algorithmic composition:\r\n https://en.wikipedia.org/wiki/Algorithmic_composition\r\n\r\n.. _graph layout:\r\n https://en.wikipedia.org/wiki/Graph_drawing\r\n\r\n\r\nInteraction with the SunVox DLL\r\n-------------------------------\r\n\r\nBy combining Radiant Voices with sunvox-dll-python_,\r\none can also create alternative editing and performance tools\r\nto use alongside, or instead of, the official SunVox app.\r\n\r\nThe two packages work together to provide convenient high-level\r\nAPIs for loading project and module objects directly into\r\nplayback slots managed by the SunVox DLL.\r\n\r\nSome possibilities might include:\r\n\r\n- alternative project editors\r\n- generative_ sound design using `genetic algorithms`_\r\n- network-enabled performance tools\r\n\r\nWhat can *you* come up with?\r\n\r\n.. _sunvox-dll-python:\r\n https://sunvox-dll-python.readthedocs.io/\r\n\r\n.. _generative:\r\n https://en.wikipedia.org/wiki/Generative_Design\r\n\r\n.. _genetic algorithms:\r\n https://en.wikipedia.org/wiki/Genetic_algorithm\r\n\r\n\r\nSunVox file format documentation\r\n--------------------------------\r\n\r\nRadiant Voices intends to serve as a *de facto* source of documentation\r\nabout the format, as there is currently\r\n`no official documentation for the SunVox file format`_.\r\n\r\n.. _no official documentation for the SunVox file format:\r\n http://www.warmplace.ru/forum/viewtopic.php?t=1943#p5562\r\n\r\nThe interpretation of SunVox file formats is based on a mix of \"clean room\"\r\nstyle inspection of what SunVox writes to disk when a file is edited\r\na specific way, as well as the\r\n`most recent BSD-licensed source code for the SunVox audio engine`_.\r\n\r\n.. _most recent BSD-licensed source code for the SunVox audio engine:\r\n https://github.com/warmplace/sunvox_sources\r\n\r\n\r\nRequirements\r\n------------\r\n\r\n- Python 3.5\r\n\r\n- OS supported by `sunvox-dll-python`_, if working with SunVox DLL.\r\n\r\n- GraphViz_, if you want to make use of module auto-layout features.\r\n\r\n.. _GraphViz:\r\n http://www.graphviz.org/\r\n\r\n\r\nQuick start\r\n-----------\r\n\r\nThe \"hello world\" example will construct a SunVox project in memory\r\ncontaining a FM module connected to the Output module.\r\nIt will then load it into the SunVox DLL and send a single note-on command\r\nto the FM module::\r\n\r\n $ pip install radiant-voices\r\n $ git clone https://github.com/metrasynth/radiant-voices\r\n $ cd radiant-voices/examples\r\n $ python helloworld.py\r\n\r\n\r\nAbout SunVox\r\n------------\r\n\r\nFrom the `SunVox home page`_:\r\n\r\n SunVox is a small, fast and powerful modular synthesizer with pattern-based sequencer (tracker).\r\n It is a tool for those people who like to compose music wherever they are, whenever they wish.\r\n On any device. SunVox is available for Windows, OS X, Linux, Maemo, Meego, Raspberry Pi,\r\n Windows Mobile (WindowsCE), PalmOS, iOS and Android.\r\n\r\n.. _SunVox home page: http://www.warmplace.ru/soft/sunvox/\r\n\r\nChangelog\r\n=========\r\n\r\n0.3.0 (2017-04-18)\r\n------------------\r\n\r\nAdditions\r\n.........\r\n\r\n- Add ``propagate`` argument to ``MultiCtl.reflect()``.\r\n Defaults to ``True`` which causes the new ``MultiCtl.value`` to\r\n immediately propagate to all mapped controllers,\r\n including the one that was just reflected.\r\n\r\n Set to ``False`` if you only want to set ``MultiCtl.value``\r\n without propagating to mapped controllers.\r\n\r\n- Pass a value for ``initial`` when calling ``MultiCtl.macro()`` to\r\n set and propagate an initial value. Default behavior is to not set a value.\r\n\r\nChanges\r\n.......\r\n\r\n- The ``repr`` of a ``CompactRange`` instance now shows that class name,\r\n instead of ``Range``.\r\n\r\nFixes\r\n.....\r\n\r\n- Fix algorithm for propagating ``MultiCtl.value`` changes to\r\n mapped controllers.\r\n\r\n- Fix algorithm for reflecting mapped controllers back to ``MultiCtl.value``.\r\n\r\n0.2.0 (2017-04-02)\r\n------------------\r\n\r\nAdditions\r\n.........\r\n\r\n- Add ``Controller.pattern_value()`` instance method, to map a controller's\r\n value to a pattern value in the range of 0x0000-0x8000.\r\n\r\n- Add ``ALL_NOTES`` constant to see if a ``NOTECMD`` is a note or a command.\r\n (Example: ``if some_note in ALL_NOTES: ...``)\r\n\r\n- Add ``tabular_repr()`` instance methods to ``Note`` and ``Pattern``,\r\n returning a tabular representation suitable for inclusion in text documents.\r\n\r\n- Add ``behaviors`` attribute to all module classes, describing the\r\n types of information each module can send and receive.\r\n\r\n- Add package-specific exception base classes to ``rv.errors``.\r\n\r\n- Add support for reading, writing, and modifying controller MIDI mappings.\r\n\r\n- Add a ``MultiCtl.macro()`` static method, for quickly creating a\r\n ``MultiCtl`` that controls several similar controllers on connected modules.\r\n\r\n- Add a ``MultiCtl.reflect()`` instance method, for setting a ``MultiCtl``'s\r\n value based on the destination controller mapped at a given index.\r\n\r\n- Add ``# TODO: ...`` notes to indicate unimplemented features.\r\n\r\n- Allow property-style access to user-defined controllers on ``MetaModule``s\r\n using a ``u_`` prefix. For example, if there's a user-defined controller\r\n named \"Attack\", it will be accessible via the ``.u_attack`` property.\r\n\r\n- Add ``ArrayChunk.set_via_fn()`` method, for setting various curves using\r\n the output of a function.\r\n\r\n- Add ``DRUMNOTE``, ``BDNOTE``, ``HHNOTE``, and ``SDNOTE`` enumerations to\r\n ``DrumSynth`` class, providing note aliases for easier programming of\r\n drum sequences.\r\n\r\n- Add ``Pattern.set_via_fn()`` and ``.set_via_gen()`` instance methods,\r\n for altering a pattern based on the output of a function or generator.\r\n\r\nChanges\r\n.......\r\n\r\n- Rename ``Output`` module's module group to ``\"Output\"``.\r\n\r\n- When using ``Project.layout()``, default to using ``dot`` layout engine.\r\n\r\n- Use a direct port of SunVox's algorithm for mapping ``MultiCtl`` values\r\n to destination controllers.\r\n\r\n- Use 1.9.2.0 as SunVox version number when writing projects to files.\r\n\r\n- Allow using separate x/y offsets and factors during ``Project.layout()``\r\n\r\nFixes\r\n.....\r\n\r\n- Use same sharp note notation as used by SunVox (lowercase indicates sharp).\r\n\r\n- Honor ``prog`` keyword arg when passed into ``Project.layout()`` method.\r\n\r\n- Do not require pattern ``x`` or ``y`` to be divisible by 4.\r\n\r\n- Assign correct controller number to user-defined controllers on\r\n ``MetaModule``s.\r\n\r\n- Correct the max value allowed in a ``MultiSynth`` velocity/velocity curve.\r\n\r\n- Move ``pygraphviz`` from ``requirements/base.txt`` to ``.../tools.txt``\r\n to be more Windows-friendly.\r\n\r\n0.1.1 (2016-11-09)\r\n------------------\r\n\r\n- Fix upload to PyPI.\r\n\r\n0.1.0 (2016-11-09)\r\n------------------\r\n\r\n- Initial release.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/metrasynth/radiant-voices", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "radiant-voices", "package_url": "https://pypi.org/project/radiant-voices/", "platform": "any", "project_url": "https://pypi.org/project/radiant-voices/", "project_urls": { "Homepage": "https://github.com/metrasynth/radiant-voices" }, "release_url": "https://pypi.org/project/radiant-voices/0.3.0/", "requires_dist": null, "requires_python": "", "summary": "Create, read, modify, and write SunVox files.", "version": "0.3.0" }, "last_serial": 3659288, "releases": { "0.1.0": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b4761decf18992b94bd64394e956ad7f", "sha256": "28ad0c883a620656dbe37fd72ac5a6d5c99e29d3978afbbc3bcb6e0ffb9f9721" }, "downloads": -1, "filename": "radiant-voices-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b4761decf18992b94bd64394e956ad7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49324, "upload_time": "2016-11-09T18:16:54", "url": "https://files.pythonhosted.org/packages/60/ae/8d78b2de032106ef1c5d28992623ce656aee02df7f1b48e44447b0af3fbe/radiant-voices-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c67fd74a574bd3e0f0c345ec98867998", "sha256": "b3c4bc837aa6e9226b516becdb2c2c9a4037c1a9c9efc2412131eb7e52f38b15" }, "downloads": -1, "filename": "radiant-voices-0.2.0.tar.gz", "has_sig": false, "md5_digest": "c67fd74a574bd3e0f0c345ec98867998", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55892, "upload_time": "2017-04-03T01:18:13", "url": "https://files.pythonhosted.org/packages/cd/c1/ece1113611d191c57d45539eb4a40ed95d60e536e3d4ab556ee01ccceb01/radiant-voices-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "427ddfa2bf194618c9489d04a4a71c32", "sha256": "f285c7f93419138307c9d260c88bf619ac80e276794745c2674141753ab25d62" }, "downloads": -1, "filename": "radiant-voices-0.3.0.tar.gz", "has_sig": false, "md5_digest": "427ddfa2bf194618c9489d04a4a71c32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56467, "upload_time": "2017-04-18T16:07:16", "url": "https://files.pythonhosted.org/packages/cc/f8/06a015f47d0fee1ef4f7a3de595538d6e07860c3f2d1c894261cd57d5781/radiant-voices-0.3.0.tar.gz" } ], "0.4.0.dev1": [ { "comment_text": "", "digests": { "md5": "f548dfd565f8699aaf87c8315ace0bd2", "sha256": "2ebd905efc36a5b8588ed7340c96d22d345e460a1ae470a76f0f2f6828d0a744" }, "downloads": -1, "filename": "radiant_voices-0.4.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "f548dfd565f8699aaf87c8315ace0bd2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 75021, "upload_time": "2018-03-11T16:48:21", "url": "https://files.pythonhosted.org/packages/51/c2/54e87ca8f703d11a4d7439fdc413f9a182968a6f658f0e9561613f4b9d14/radiant_voices-0.4.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c1a13b31b2c99e9f02f681a371b62156", "sha256": "79619b7885a9c510d1f252d69725a86a9d72fd722eda3fdbf9c3f4a4d93e04aa" }, "downloads": -1, "filename": "radiant-voices-0.4.0.dev1.tar.gz", "has_sig": false, "md5_digest": "c1a13b31b2c99e9f02f681a371b62156", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2178097, "upload_time": "2018-03-11T16:48:23", "url": "https://files.pythonhosted.org/packages/d0/d4/c58a1ed8b64e33bd6a35fc28467ab671e29fb050520101a642125251f3c8/radiant-voices-0.4.0.dev1.tar.gz" } ], "0.4.0.dev2": [ { "comment_text": "", "digests": { "md5": "4fb417846c5979bcb31f222b4b5dbc11", "sha256": "1da25ad2b8e4b7d79e474d041337e02e87316e4c9629fc5f9060790b771ddbe7" }, "downloads": -1, "filename": "radiant_voices-0.4.0.dev2-py3-none-any.whl", "has_sig": false, "md5_digest": "4fb417846c5979bcb31f222b4b5dbc11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 75137, "upload_time": "2018-03-11T16:55:47", "url": "https://files.pythonhosted.org/packages/bd/7e/5835c0967fa2580f141d0c35bd4005274407c63f2e29e4ce2b742a9be4b8/radiant_voices-0.4.0.dev2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22a0f35f6fd1266cff2b38ce8c47bfca", "sha256": "d6ac80afce311449c1a44e52c736047325779ec2c7fbe5e2a067a46cebf5ec3f" }, "downloads": -1, "filename": "radiant-voices-0.4.0.dev2.tar.gz", "has_sig": false, "md5_digest": "22a0f35f6fd1266cff2b38ce8c47bfca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76431, "upload_time": "2018-03-11T16:55:48", "url": "https://files.pythonhosted.org/packages/30/05/f23e2e7aaf51b88e5b8c6ecee3e47b50dcf220ddaefe921ae302c01d0071/radiant-voices-0.4.0.dev2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "427ddfa2bf194618c9489d04a4a71c32", "sha256": "f285c7f93419138307c9d260c88bf619ac80e276794745c2674141753ab25d62" }, "downloads": -1, "filename": "radiant-voices-0.3.0.tar.gz", "has_sig": false, "md5_digest": "427ddfa2bf194618c9489d04a4a71c32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56467, "upload_time": "2017-04-18T16:07:16", "url": "https://files.pythonhosted.org/packages/cc/f8/06a015f47d0fee1ef4f7a3de595538d6e07860c3f2d1c894261cd57d5781/radiant-voices-0.3.0.tar.gz" } ] }