{ "info": { "author": "Neil F Jones", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3" ], "description": "# audio-to-midi\n\n`audio-to-midi` takes in a sound file and converts it to a multichannel MIDI file. It accomplishes this by performing FFT's on all channels of the audio data at user specified time steps. It then separates the resulting frequency analysis into equivalence classes which correspond to the twelve tone scale; the volume of each class being the average volume of its constituent frequencies. It then formats this data for MIDI and writes it out to a user specified file. It has the ability to convert whichever audio file formats are supported by the [soundfile](https://pypi.org/project/SoundFile/) module. libsndfile must be installed before running `audio-to-midi`\n\n- [This is an example of a conversion using a time window of 5ms and an activation level of 0.](https://soundcloud.com/neil-jones/this-is-a-test)\n\n## Installation\n\n```\n> python3 ./setup.py install\n```\n\n## Usage\n\n```shell\n> audio-to-midi --help\nusage: audio-to-midi [-h] [--output OUTPUT] [--time-window TIME_WINDOW]\n [--activation-level ACTIVATION_LEVEL] [--condense]\n [--single-note] [--no-progress]\n infile\n\npositional arguments:\n infile The sound file to process.\n\noptional arguments:\n -h, --help show this help message and exit\n --output OUTPUT, -o OUTPUT\n The MIDI file to output. Default: .mid\n --time-window TIME_WINDOW, -t TIME_WINDOW\n The time span over which to compute the individual\n FFTs in milliseconds.\n --activation-level ACTIVATION_LEVEL, -a ACTIVATION_LEVEL\n The amplitude threshold for notes to be added to the\n MIDI file. Must be between 0 and 1.\n --condense, -c Combine contiguous notes at their average amplitude.\n --single-note, -s Only add the loudest note to the MIDI file for a given\n time span.\n --no-progress, -n Don't print the progress bar.\n```\n\n## Example\n\n```shell\n> audio-to-midi ./this_is_a_test.wav --time-window 5 --activation-level 0.0\nConverting: ./this_is_a_test.wav\n|================================================================================| 100.00%\n> ls ./*.mid\n./this_is_a_test.wav.mid\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/NFJones/audio-to-midi", "keywords": "audio midi conversion", "license": "", "maintainer": "", "maintainer_email": "", "name": "audio-to-midi", "package_url": "https://pypi.org/project/audio-to-midi/", "platform": "", "project_url": "https://pypi.org/project/audio-to-midi/", "project_urls": { "Homepage": "https://github.com/NFJones/audio-to-midi" }, "release_url": "https://pypi.org/project/audio-to-midi/2019.3/", "requires_dist": [ "cffi (==1.12.3)", "Cython (==0.29.7)", "MIDIUtil (==1.2.1)", "numpy (==1.16.3)", "pycparser (==2.19)", "SoundFile (==0.10.2)" ], "requires_python": ">=3.5.*, <4", "summary": "Convert audio to multichannel MIDI.", "version": "2019.3" }, "last_serial": 5286239, "releases": { "2019.1": [ { "comment_text": "", "digests": { "md5": "ac2314b195cb7e585f73565745f9f37d", "sha256": "e5def6a48b7cca77247dbfdaaaad4de81ebb3a87d12acfe430d39e2cbcfe9fdb" }, "downloads": -1, "filename": "audio_to_midi-2019.1-py3.5.egg", "has_sig": false, "md5_digest": "ac2314b195cb7e585f73565745f9f37d", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": ">=3.5.*, <4", "size": 14598, "upload_time": "2019-05-18T05:20:18", "url": "https://files.pythonhosted.org/packages/4a/c6/d642144bff91bd032a5f237e9d9bb45474a1ef2334d3efb3d68803fbdc24/audio_to_midi-2019.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "bc3e4e07142dcb754aa96e47768e9751", "sha256": "fae81d2767fce20bf8c9c934efe156048c678f6432f5b2a4262af13efb2bc1c9" }, "downloads": -1, "filename": "audio_to_midi-2019.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bc3e4e07142dcb754aa96e47768e9751", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.*, <4", "size": 8332, "upload_time": "2019-05-18T05:20:16", "url": "https://files.pythonhosted.org/packages/f7/fb/893700796bb43326797bbed01a3524b537ee472687e2976c02afa59733cc/audio_to_midi-2019.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "719f9507a9eacec283b95fce0ab7c98b", "sha256": "b1c781a7f657df3b67a9eee201aabccb1e1a5461b16ef53a6b8d05aa0c290e7c" }, "downloads": -1, "filename": "audio_to_midi-2019.1.tar.gz", "has_sig": false, "md5_digest": "719f9507a9eacec283b95fce0ab7c98b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 5958, "upload_time": "2019-05-18T05:20:20", "url": "https://files.pythonhosted.org/packages/66/14/6947bf1c7e6e1f7b7bfbdfc1429ee505ef1212449bb767b01f46e11f7e87/audio_to_midi-2019.1.tar.gz" } ], "2019.2": [ { "comment_text": "", "digests": { "md5": "240e9e5d9de232f7207f002945518846", "sha256": "ef0df9d238efe512a17d8e498464c1440eca1e59d480786da092aef445adbbfe" }, "downloads": -1, "filename": "audio_to_midi-2019.2-py3.5.egg", "has_sig": false, "md5_digest": "240e9e5d9de232f7207f002945518846", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": ">=3.5.*, <4", "size": 14717, "upload_time": "2019-05-18T05:30:49", "url": "https://files.pythonhosted.org/packages/ec/45/0896fc87b70221ce9349e02220c7eedb2e288d5220a5c5ff7a46125c0339/audio_to_midi-2019.2-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "1ec04535241d560b08233df1fe36f29c", "sha256": "f71ddfe12906f69f2daf5969a3d285a7a76aa073ac66903817fb94b0565fca02" }, "downloads": -1, "filename": "audio_to_midi-2019.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1ec04535241d560b08233df1fe36f29c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.*, <4", "size": 8408, "upload_time": "2019-05-18T05:30:48", "url": "https://files.pythonhosted.org/packages/67/15/900bec369cdd29b9adc001e308f651f905247ed19593586ada9e80226561/audio_to_midi-2019.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea8ade6b81b647d653dbb7b4eed26c6c", "sha256": "15be343549bf28bb49dfa9625ae7160ea24b9fe990347405799b407b21fd0098" }, "downloads": -1, "filename": "audio_to_midi-2019.2.tar.gz", "has_sig": false, "md5_digest": "ea8ade6b81b647d653dbb7b4eed26c6c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 6027, "upload_time": "2019-05-18T05:30:51", "url": "https://files.pythonhosted.org/packages/d2/81/ca5bce187b9ad2d04e8b465a97afa38b5e1426959020c6dc0c8d92ff9ae5/audio_to_midi-2019.2.tar.gz" } ], "2019.3": [ { "comment_text": "", "digests": { "md5": "9198420627197a950386fc9ea2a24cb7", "sha256": "2e82da9a9ba9939f83c8304bea0de4fb1f1edaa713613b01ea35cc8d6d25be2a" }, "downloads": -1, "filename": "audio_to_midi-2019.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9198420627197a950386fc9ea2a24cb7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.*, <4", "size": 8466, "upload_time": "2019-05-18T17:26:30", "url": "https://files.pythonhosted.org/packages/73/eb/98dc72cf408793bb94fcd263dff45da0f9d868d402270347a2a36cd96464/audio_to_midi-2019.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f244e002b8639a68a1578aa6baae1698", "sha256": "30de13b251938eceaa8cb403ca01f8436973956c8d17749d88d55570c1ea9dd8" }, "downloads": -1, "filename": "audio_to_midi-2019.3.tar.gz", "has_sig": false, "md5_digest": "f244e002b8639a68a1578aa6baae1698", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 6108, "upload_time": "2019-05-18T17:26:31", "url": "https://files.pythonhosted.org/packages/4e/a4/9b283972d355efbd0d2a1314f61e8ca20ed5967336261b9740d4528ed074/audio_to_midi-2019.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9198420627197a950386fc9ea2a24cb7", "sha256": "2e82da9a9ba9939f83c8304bea0de4fb1f1edaa713613b01ea35cc8d6d25be2a" }, "downloads": -1, "filename": "audio_to_midi-2019.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9198420627197a950386fc9ea2a24cb7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.*, <4", "size": 8466, "upload_time": "2019-05-18T17:26:30", "url": "https://files.pythonhosted.org/packages/73/eb/98dc72cf408793bb94fcd263dff45da0f9d868d402270347a2a36cd96464/audio_to_midi-2019.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f244e002b8639a68a1578aa6baae1698", "sha256": "30de13b251938eceaa8cb403ca01f8436973956c8d17749d88d55570c1ea9dd8" }, "downloads": -1, "filename": "audio_to_midi-2019.3.tar.gz", "has_sig": false, "md5_digest": "f244e002b8639a68a1578aa6baae1698", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 6108, "upload_time": "2019-05-18T17:26:31", "url": "https://files.pythonhosted.org/packages/4e/a4/9b283972d355efbd0d2a1314f61e8ca20ed5967336261b9740d4528ed074/audio_to_midi-2019.3.tar.gz" } ] }