{"id":17861216,"url":"https://github.com/jonathanstowe/euclideanrhythm","last_synced_at":"2025-07-27T10:40:14.113Z","repository":{"id":42576372,"uuid":"55868634","full_name":"jonathanstowe/EuclideanRhythm","owner":"jonathanstowe","description":"Implementation of the algorithm described in http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf","archived":false,"fork":false,"pushed_at":"2022-08-07T08:44:17.000Z","size":17,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-04-22T17:06:59.651Z","etag":null,"topics":["algorithm","euclid","music","raku"],"latest_commit_sha":null,"homepage":"","language":"Raku","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"artistic-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathanstowe.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-09T21:52:49.000Z","updated_at":"2022-08-07T08:44:21.000Z","dependencies_parsed_at":"2022-07-09T07:46:24.628Z","dependency_job_id":null,"html_url":"https://github.com/jonathanstowe/EuclideanRhythm","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FEuclideanRhythm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FEuclideanRhythm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FEuclideanRhythm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanstowe%2FEuclideanRhythm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanstowe","download_url":"https://codeload.github.com/jonathanstowe/EuclideanRhythm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221809002,"owners_count":16883832,"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":["algorithm","euclid","music","raku"],"created_at":"2024-10-28T08:43:22.912Z","updated_at":"2024-10-28T08:43:23.620Z","avatar_url":"https://github.com/jonathanstowe.png","language":"Raku","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EuclideanRhythm\n\nImplementation of the algorithm described in http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf\n\n![Build Status](https://github.com/jonathanstowe/EuclideanRhythm/workflows/CI/badge.svg)\n\n\n## Synopsis\n\n```raku\n\n    use EuclideanRhythm;\n\n    my $r = EuclideanRhythm.new(slots =\u003e 16, fills =\u003e 7);\n\n    for $r.list {\n        # do something if the value is True\n    }\n```\n\n## Description\n\n\nThis provides an implementation of the algorithm described in\n[http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf](http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf)\nwhich is in turn derived from a Euclidean algorithm. Simply put it\nprovides a simple method to distribute a certain number of \"fills\"\n(hits, beats, notes or whatever you want to call them,) as evenly as\npossibly among a number of \"slots\". The linked paper describes how, using\nthis method, you can approximate any number of common rhythmic patterns\n(as well as not so common ones.)\n\nYou could of course use it for something other than generating musical\nrhythms: any requirement where a number of events need to be distributed\nover a fixed number of slots may find this useful.\n\n## Installation\n\nAssuming you have a working installation of Rakudo then you should be able to install this with *zef*:\n\n\tzef install EuclideanRhythm\n\nor if you have a local copy of this repository:\n\n\tzef install .\n\nin the directory you found this file.\n\n## Support\n\nThis is a fairly simple module such that the scope for any\negregious bugs is quite limited, however if you have any\nsuggestions, patches or comment the feel free to leave a post at\nhttps://github.com/jonathanstowe/EuclideanRhythm/issues.\n\nBecause it is quite simple in both scope and implementation I would\nanticipate that any higher level functionality (such as providing timing,)\nwould be implemented in another module.\n\n## Licence and Copyright\n\nThis is free software. Please see the [LICENCE](LICENCE) file in the distribution.\n\n© Jonathan Stowe 2016 - 2021\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanstowe%2Feuclideanrhythm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanstowe%2Feuclideanrhythm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanstowe%2Feuclideanrhythm/lists"}