{"id":42165566,"url":"https://github.com/Emanuel-de-Jong/MIDI-To-Strudel","last_synced_at":"2026-02-05T22:00:45.934Z","repository":{"id":300777287,"uuid":"1007084653","full_name":"Emanuel-de-Jong/MIDI-To-Strudel","owner":"Emanuel-de-Jong","description":"Convert Midi files to Strudel code.","archived":false,"fork":false,"pushed_at":"2026-01-21T11:09:09.000Z","size":678,"stargazers_count":31,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-21T22:51:54.470Z","etag":null,"topics":["livecoding","midi","midi-converter","midi-parser","strudel","tonejs","webmidi"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/Emanuel-de-Jong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-23T12:46:00.000Z","updated_at":"2026-01-21T13:26:32.000Z","dependencies_parsed_at":"2025-08-10T14:47:23.163Z","dependency_job_id":null,"html_url":"https://github.com/Emanuel-de-Jong/MIDI-To-Strudel","commit_stats":null,"previous_names":["emanuel-de-jong/midi-to-strudel"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Emanuel-de-Jong/MIDI-To-Strudel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emanuel-de-Jong%2FMIDI-To-Strudel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emanuel-de-Jong%2FMIDI-To-Strudel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emanuel-de-Jong%2FMIDI-To-Strudel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emanuel-de-Jong%2FMIDI-To-Strudel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Emanuel-de-Jong","download_url":"https://codeload.github.com/Emanuel-de-Jong/MIDI-To-Strudel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emanuel-de-Jong%2FMIDI-To-Strudel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29135909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T21:59:57.939Z","status":"ssl_error","status_checked_at":"2026-02-05T21:59:57.628Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["livecoding","midi","midi-converter","midi-parser","strudel","tonejs","webmidi"],"created_at":"2026-01-26T21:00:27.058Z","updated_at":"2026-02-05T22:00:45.901Z","avatar_url":"https://github.com/Emanuel-de-Jong.png","language":"JavaScript","funding_links":[],"categories":["📚 Awesome Repositories"],"sub_categories":[],"readme":"# MIDI To Strudel\n\u003e You can try the web version here: https://rayanfer32.github.io/midi-to-strudel-web/ \u003cbr\u003e\n\u003e Read more about the webapp: [README.web](/README.web.md)\n\nA python script that converts a Midi file to Strudel code. For artists that like remixing.\n\nIt sets the right cpm and creates a new sound source per Midi track. Example output:\n```\nsetcpm(91/4)\n\n$: note(`\u003c\n    [g#4 c5 g4 g#4 f4 g4 d#4 d4] [- - - - - - - g#4] [- c5 g4 g#4 f4 g4 g#4 a#4] -\n    [- - f4 f4 g#4 g#4 f4 f4] [c5 c5 - c5 - g#4 - -] [a#4 a#4 - a#4 - g4 - -] [a#4 a#4 - a#4 - g#4 g4 f4]\n  \u003e`).sound(\"piano\")\n\n$: note(`\u003c\n    [- [g#3,c4] f3 [g#3,c4]] [a#3 [d4,f4] a#3 [d4,f4]] [f3 [g#3,c4] f3 [g#3,c4]] [a#3 [d4,f4] a#3 [d4,f4]]\n    [f3 [g#3,c4] f3 [g#3,c4]] [g#3 [c4,d#4] g#3 [c4,d#4]] [d#3 [g3,a#3] d#3 [g3,a#3]] [a#3 [d4,f4] a#3 [d4,f4]]\n  \u003e`).sound(\"piano\")\n```\n\n\u003e [!NOTE]\n\u003e Only 4/4 time signature is supported for now! PRs are welcome.\n\n**Active Development:** 2025-06-23 - 2025-06-24\u003cbr\u003e\n**Last Change:** 2026-01-21\u003cbr\u003e\n\n| | |\n| :---: | :---: |\n| ![](/screenshots/1-Webapp.png) | ![](/screenshots/2-Drag_and_Drop.png) |\n\n## Requirements\n- python (I use 3.11.9 but most versions will work)\n- mido (in `requirements.txt`)\n\n## Usage\n1. Run `pip install -r requirements.txt` to install the dependencies.\n2. There are two ways to run the tool:\n    - If you're on Windows, the easiest way is dragging your Midi file onto the `Drag-and-Drop.bat` script. However, this way you can't set console arguments.\n    - Run the tool directly with `python Midi-to-Strudel.py`.\n3. Get the Strudel code. Either from the text in the console or the content of the new `result.txt` file.\n\n### Arguments\n```\nusage: Midi-to-Strudel.py [-h] [-m MIDI] [-b BAR_LIMIT] [-f] [-t TAB_SIZE] [-n NOTES_PER_BAR]\n  -m, --midi            Path to the Midi file. (default: Uses first .mid in folder)\n  -b, --bar-limit       The amount of bars to convert. 0 means no limit. (default: 0)\n  -f, --flat-sequences  No complex timing or chords. (default: off)\n  -t, --tab-size        How many spaces to use for indentation in the output. (default: 2)\n  -n, --notes-per-bar   The resolution. Usually in steps of 4 (4, 8, 16...).\n                        Higher gives better note placement but can get big. (default: 64)\n```\n\n## TODO\n- Support more starting time signatures than only 4/4.\n- Support mid-song time signature switches.\n\n## Contributors\n- [rayanfer32](https://github.com/rayanfer32) (Created the web version)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEmanuel-de-Jong%2FMIDI-To-Strudel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FEmanuel-de-Jong%2FMIDI-To-Strudel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEmanuel-de-Jong%2FMIDI-To-Strudel/lists"}