{"id":22293606,"url":"https://github.com/xi/xi2","last_synced_at":"2025-03-25T22:18:17.044Z","repository":{"id":195810272,"uuid":"693723026","full_name":"xi/xi2","owner":"xi","description":"a plain text language that compiles to MIDI","archived":false,"fork":false,"pushed_at":"2023-09-19T15:28:23.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-30T19:24:05.529Z","etag":null,"topics":["midi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xi.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}},"created_at":"2023-09-19T15:25:45.000Z","updated_at":"2023-09-19T15:26:32.000Z","dependencies_parsed_at":"2023-09-19T17:57:26.501Z","dependency_job_id":"567badea-692e-4db7-aa8e-b72ca2bd8b2d","html_url":"https://github.com/xi/xi2","commit_stats":null,"previous_names":["xi/xi2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fxi2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fxi2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fxi2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fxi2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xi","download_url":"https://codeload.github.com/xi/xi2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245550681,"owners_count":20633883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["midi"],"created_at":"2024-12-03T17:29:47.608Z","updated_at":"2025-03-25T22:18:17.027Z","avatar_url":"https://github.com/xi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"xi2 is a plain text language that compiles to MIDI.\n\n# Usage\n\nNotes are expressed as numbers. By default, an offset of 60 is applied, so `0`\nis 60 in MIDI, which is c3.\n\nBeats are separated by comma:\n\n    0: 0,2,4,5,7,9,11,12,\n\nYou can leave a beat empty or use `-` to hold the previous note:\n\n    0: 0, ,0,0,7,-,-,-,\n\nBeats can be subdivided using parens. Notes that are grouped this way are\nevenly spaced, so e.g. grouping 3 notes gives you triplets:\n\n    0: (0,0),(4,4,4),(7,7,7,7),12,\n\nNotes can also be played at the same time (chords) using curly braces:\n\n    0: {0,4,7},{0,4,9},{0,5,9},{2,7,11},\n\nEach track has its own line. Sections are separated by a blank line. Whitespace\ninside lines is ignored, so you can align the tracks:\n\n    0: 12,      (16, 21), -,       (23,19,14),\n    8: {0,4,7}, {0,4,9},  {0,5,9}, {2,7,11},\n\n    0: (16,19), (16,21), (-,17),  (19,23),\n    8: {0,4,7}, {0,4,9}, {0,5,9}, {2,7,11},\n\nMacros allow you to reuse patterns without having to write them again and\nagain. xi2 supports both single-line and multi-line patterns:\n\n    [C]: {0,4,7}\n    [G]: {7,11,14}\n\n    [intro]:\n    0: [C],[C],[G],[C],\n    [end]\n\n    [intro]\n    [intro]\n\nInstead of notes you can also include strings for lyrics. Be aware that\nwhitespace will be ignored, so you should use `_` instead:\n\n    0: (9   ,,),(2    ,-,5   ),4  ,0   ,\n    l: (Pop_,,),(goes_,-,the_),Wea,sel.,\n\n# similar projects\n\n-   [drumscript](https://github.com/tepreece/drumscript/)\n-   [lilypond](https://lilypond.org/doc/v2.24/Documentation/learning/simple-notation)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxi%2Fxi2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxi%2Fxi2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxi%2Fxi2/lists"}