{"id":15563556,"url":"https://github.com/aspiers/ly2video","last_synced_at":"2026-02-21T03:03:05.058Z","repository":{"id":5532504,"uuid":"6735072","full_name":"aspiers/ly2video","owner":"aspiers","description":"generating videos from LilyPond projects","archived":false,"fork":false,"pushed_at":"2024-07-13T16:00:16.000Z","size":3387,"stargazers_count":173,"open_issues_count":29,"forks_count":24,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-10-21T04:43:09.296Z","etag":null,"topics":["lilypond","music","music-notation","python","sheet-music","video-generator"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aspiers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-11-17T12:40:52.000Z","updated_at":"2025-09-15T15:37:13.000Z","dependencies_parsed_at":"2024-06-20T10:19:55.708Z","dependency_job_id":"de8330be-4352-4276-9b30-1abca152b71c","html_url":"https://github.com/aspiers/ly2video","commit_stats":{"total_commits":409,"total_committers":13,"mean_commits":31.46153846153846,"dds":"0.15647921760391204","last_synced_commit":"baddaf4cac1e3eb24ac117fa67f4a0cde48f6560"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/aspiers/ly2video","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspiers%2Fly2video","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspiers%2Fly2video/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspiers%2Fly2video/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspiers%2Fly2video/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aspiers","download_url":"https://codeload.github.com/aspiers/ly2video/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspiers%2Fly2video/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29672272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T00:11:43.526Z","status":"online","status_checked_at":"2026-02-21T02:00:07.432Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lilypond","music","music-notation","python","sheet-music","video-generator"],"created_at":"2024-10-02T16:24:02.499Z","updated_at":"2026-02-21T03:03:05.052Z","avatar_url":"https://github.com/aspiers.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ly2video\n\n`ly2video` is a Python script which converts music represented by a [GNU\nLilyPond](http://lilypond.org) file into a video containing a\nhorizontally scrolling music staff which is synchronized with a\nMIDI-generated audio rendering of the music.\n\nIt is also possible to [synchronize the video of the scrolling music\nnotation with a previously recorded audio track of the same\nmusic](doc/how-to-audio-sync.md), such as a live performance, even\nwhen the audio uses [*tempo rubato*](https://en.wikipedia.org/wiki/Tempo_rubato)\nor is not precisely metronomic.\n\n## Examples\n\nHere are some [examples of videos generated by ly2video](http://www.youtube.com/playlist?list=PLfRwjd606WZlxRU_kaUPagX3-Uv-SYRMH).\n\n## Caveat emptor\n\nBeware, here be dragons!\n\nUnfortunately I don't currently have the time to work on ly2video\nmuch.  These means that in some places bitrot has set in.\n\nHaving said that, I'll do my best to support anyone who is trying\nto get it working - please see below for how to get support.\n\n## Requirements\n\n**Please also read the Installation section below before you start installing anything!**\n\n*   GNU LilyPond \u003e= 2.15.41\n    (needs [`one-line-breaking`](http://www.lilypond.org/doc/v2.17/Documentation/notation/one_002dline-page-breaking) support)\n*   FFmpeg (if you are on Ubuntu or Debian, see first see\n    [issue 32](https://github.com/aspiers/ly2video/issues/32))\n*   TiMidity++\n*   Python \u003e= 3.5\n*   Python's [pip installer](http://www.pip-installer.org)\n\n## Installation\n\n### Installing dependencies on openSUSE 12.2\n\nInstall the `ffmpeg` package from Packman via [1-click\ninstall](http://packman.links2linux.org/install/ffmpeg) (you can also\nfind the button on [this\npage](http://packman.links2linux.org/package/ffmpeg)), or via [YaST\nand/or\nzypper](http://wiki.links2linux.de/packman:faq_en#software_installation_updates_deinstallation).\n\nYou can ensure the remaining dependencies are installed via something\nlike:\n\n    sudo zypper install lilypond timidity python3-pip python-imaging alsa-devel\n\n### Installing dependencies on Debian- and Ubuntu-based Linux distributions\n\nThere is currently a known issue on these distributions, since [Debian\nand Ubuntu switched from `ffmpeg` to the `libav\nfork`](https://github.com/aspiers/ly2video/issues/32).  See [issue #32](https://github.com/aspiers/ly2video/issues/32) for a suggested\nworkaround.\n\nAdditionally, Debian and Ubuntu both currently ship very old versions\nof LilyPond, so you might need to install a newer one via the\n\"Generic Packages\" section near the top of: http://lilypond.org/unix.html\n\nYou can ensure the remaining dependencies are installed via something\nlike:\n\n    sudo apt-get install timidity python3-pip python3-pil\n\n### Installing dependencies on Arch-based Linux distributions\n\nDownload and install [the AUR package `ly2video-git`](https://aur.archlinux.org/packages/ly2video-git/). See the [the Arch wiki](https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages) for further instructions.\n\n### Installing dependencies on other platforms\n\nIf you have figured out how to install the dependencies and get\nly2video working on another platform, please [file a new\nissue](https://github.com/aspiers/ly2video/issues) containing the\ninformation, so that this README can be updated.  Thanks!\n\n### Installing required Python module dependencies\n\n[ly2video requires some specific Python modules](https://github.com/aspiers/ly2video/blob/master/requirements.txt) - **do NOT install these manually!** (unless you are a Python expert.)\nThey can be installed system-wide via:\n\n    sudo pip install -r requirements.txt\n\nor for the current user via:\n\n    pip install --user -r requirements.txt\n\nYou can optionally protect against the risk of installation of these\nPython modules destabilising any other Python applications you may\nuse, by isolating them in a virtual environment using\n[`virtualenv`](http://www.virtualenv.org/en/latest/).  The most\nconvenient way to do this is via\n[`virtualenvwrapper`](http://virtualenvwrapper.readthedocs.org/en/latest/).\nOnce you have `virtualenvwrapper` installed, it's as simple as:\n\n    mkvirtualenv ly2video\n    pip install -r requirements.txt\n\n### Installing ly2video itself\n\nThis is done via [Python's standard package installation\nmechanism](https://packaging.python.org/tutorials/installing-packages/).\n\nFor example, to install system-wide, just run\n\n    sudo pip install .\n\nor for the current user via:\n\n    pip install --user .\n\nIf something fails, please double-check you correctly met the\nrequirements and dependencies detailed above.\n\n## Usage\n\nRun `ly2video --help` to display usage information.\n\nYou must ensure that your `.ly` input file contains both `\\layout { }`\nand `\\midi` commands, which ensure that valid `.midi` and `.png` files\nare generated when it is run through `lilypond --png`.\n\n## Usage with docker container\n\nSet up your path to argument LILY_FILES in makefile.\n\nBuild docker container with workable ly2video inside\n\n    make build\n\nRun docker container with access to direcory you point at LILY_FILES\n\n    make run\n\nUse `ly2video` usually.\nAll actions applied in container to your files (LILY_FILES) will change your files (LILY_FILES) outside container.\n\n## Support, bugs, development etc.\n\nFirstly, please check the [issue tracker](https://github.com/aspiers/ly2video/issues)\nfor known issues, and if yours is not there, please submit it.\n\nSecondly, if you are able to perform some trouble-shooting yourself,\neven if you can't identify the exact problem or suggest a fix, any\nextra light you can shed will greatly increase the chances of it being\nfixed.  Please see [the trouble-shooting guide](TROUBLE-SHOOTING.md)\nfor information on how to do this.\n\nIf you know how to fix a problem or contribute an enhancement, you are\nextremely welcome to [fork this repository](https://github.com/aspiers/ly2video/fork),\ncommit your fix, and then send a [pull request](https://help.github.com/articles/using-pull-requests)!\n\n## Acknowledgements\n\nHuge credits for the initial implementation go to Jiří \"FireTight\"\nSzabó, who wrote it as part of his Bachelor's degree.  You can read\nhis thesis on ly2video in the `doc/thesis/` subdirectory, or\n[online](http://is.muni.cz/th/359741/fi_b/text_prace.pdf), although\nit's in Czech so you may need to use a translation service.\n\nVery big thanks also to Jan Nieuwenhuizen not only for co-inventing\nLilyPond in the first place, but also for helping me implement the\ncomplete revamp of the synchronization algorithm, which should be\nmuch more robust than the previous one.\n\nAnd finally of course, much gratitude to the many great people who\nhave contributed to LilyPond over the years.  This would not have\nbeen possible without you.\n\n## License\n\nly2video is released under the [GNU GPL v3](http://www.gnu.org/licenses/gpl.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspiers%2Fly2video","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faspiers%2Fly2video","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspiers%2Fly2video/lists"}