{"id":20918824,"url":"https://github.com/amiika/ziffers","last_synced_at":"2025-04-15T15:14:08.241Z","repository":{"id":43349289,"uuid":"146776274","full_name":"amiika/ziffers","owner":"amiika","description":"Numbered musical notation for composing algorithmic and generative melodies","archived":false,"fork":false,"pushed_at":"2024-06-26T11:12:24.000Z","size":1255,"stargazers_count":83,"open_issues_count":2,"forks_count":5,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-15T15:14:03.033Z","etag":null,"topics":["algorithmic-composition","generative-music","music","music-composition","music-notation","music-theory","numbered-musical-notation","numbered-notation","numeric-notation","sonic-pi"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/amiika.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-30T16:22:19.000Z","updated_at":"2025-03-15T21:43:16.000Z","dependencies_parsed_at":"2023-01-29T20:16:02.090Z","dependency_job_id":"1bc79f5d-e28d-4259-8817-b127d7554421","html_url":"https://github.com/amiika/ziffers","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amiika%2Fziffers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amiika%2Fziffers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amiika%2Fziffers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amiika%2Fziffers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amiika","download_url":"https://codeload.github.com/amiika/ziffers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249094934,"owners_count":21211837,"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":["algorithmic-composition","generative-music","music","music-composition","music-notation","music-theory","numbered-musical-notation","numbered-notation","numeric-notation","sonic-pi"],"created_at":"2024-11-18T16:40:12.584Z","updated_at":"2025-04-15T15:14:08.224Z","avatar_url":"https://github.com/amiika.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://github.com/amiika/ziffers/raw/ziffers2/ziffers.png\" width=250, border=0, padding=0\u003e\n\n# Ziffers: Numeric notation for composing algorithmic and generative music using Sonic Pi\nZiffers is a generative numbered musical notation (aka. Ziffersystem) and a live code golfing framework that makes composing melodies and rhythms easier and faster in [Sonic Pi](https://sonic-pi.net/).\n\nWriting and playing melodies in any key or scale will be as simple as:\n```\nzplay \"q 4 e 1 1 q 2 1 r #3 4 \", key: \"f\", scale: \"major\", synth: :piano\n```\nor playing loops:\n```\nzloop :ride, \"e 3 3 2 2 1 1 2 2\", key: :c, scale: :chromatic, synth: :piano\n```\nor loops with generative live rules:\n```\nz1 \"e1\",\nrules: {\n  \"1\"=\u003e\"3\",\n  \"3\"=\u003e\"2\",\n  \"2\"=\u003e\"4\",\n  \"4\"=\u003e\"(1,6)\",\n  \"5\"=\u003e\"1\",\n  \"6\"=\u003e\"2\"\n}, synth: :pretty_bell\n```\nor play infinite sequences. Easy as:\n```\nzplay pi, rhythm: \"q q h q q h h q ee h q ee\"\n```\nor simple [aleatoric](https://en.wikipedia.org/wiki/Aleatoric_music) melodies:\n```\nz1 \"[0,3,5] 4 (1,3) (4,6) 2 e \u003c3 0 (2,4)\u003e (5,7)\", scale: :ahirbhairav, key: :e, synth: :piano, attack: 0.25\n```\nor go crazy and create lists and do list operations using transformations and nested notation:\n```\nz1 \"q (0 1 (3,7) 3)~\u003c*\u003e(4 [6,4,[5,4,2,7]] (0,(5,8)) (1,6))\", synth: :kalimba\n```\nand much more ... See [Ziffers wiki](https://github.com/amiika/ziffers/wiki) or download [A4 cheatsheet](https://github.com/amiika/ziffers/raw/master/Cheatsheet.pdf) to learn more.\n\nHere is a cheatsheet you can copy to Sonic Pi editor:\n```\n# Pitches: -2 -1 0 1 2\n# Chords: 0 024 2 246\n# Note lengths: w 0 h 1 q 2 e 3 s 4\n# Subdivision: [1 2 [3 4]]\n# Decimal durations: 0.25 0 1 \u003c0.333\u003e2 3\n# Octaves: ^ 0 ^ 1 _ 2 _ 3\n# Escaped octave: \u003c2\u003e 1 \u003c1\u003e1\u003c-2\u003e3\n# Roman chords: i ii iii+4 iv+5 v+8 vi+10 vii+20\n# Named chords: i^7 i^min i^dim i^maj7\n# Modal interchange (a-g): iiia ig ivf^7\n# Escape/eval: {10 11} {1.2 2.43} {3+1*2}\n# Randoms: % ? % ? % ?\n# Random between: (-3,6)\n# Random selections: [q 1 2, q 3 e 4 6]\n# Repeat: [: 1 (2,6) 3 :4]\n# Repeat cycles: [: \u003cq e\u003e (1,4)  \u003c(2 3) (3 (1,7))\u003e :]\n# Lists: h 1 q(0 1 2 3) 2\n# List cycles: (: \u003cq e\u003e (1,4) \u003c(2 3) (3 (1,7))\u003e :)\n# Loop cycles (for zloop or z0-z9): \u003c0 \u003c1 \u003c2 \u003c3 \u003c4 5\u003e\u003e\u003e\u003e\u003e\n# Basic operations: (1 2 (3 4)+2)*2 ((1 2 3)+(0 9 13))-2 ((3 4 {10})*(2 9 3))%7\n# Product operations: (0 1 2 3)+(1 4 2 3) (0 1 2)-(0 2 1)+2\n# Euclid cycles: (q1)\u003c6,7\u003e(q4 (e3 e4) q2) or (q1)\u003c6,7\u003c(q4 q3 q2)\n# Transformations: (0 1 2)\u003cr\u003e (0 1 2)\u003ci\u003e(-2 1) etc.\n# List assignation: A=(0 (1,6) 3) B=(3 ? 2) B A B B A\n# Random repeat: (: 1 (2,6) 3 :4)\n# Conditionals: 1 {%\u003c0.5?3} 3 4 (: 1 2 {%\u003c0.2?3:2} :3)\n# Functions: (0 1 2 3){x%3==0?x-2:x+2}\n# Polynomials: (-10..10){(x**3)*(x+1)%12}\n```\n\n# Quick start\n\n## Requirements\n\n- [Sonic Pi](https://sonic-pi.net/)\n- Clone using git or download [latest release](https://github.com/amiika/ziffers/releases/latest)\n\n## Install ziffers\n\nInstall Ziffers to your Sonic Pi by cloning this project into your home directory (this makes referencing easier as most of the examples use ~ shorthand to require stuff). Ziffers can then be required to your Sonic Pi project using:\n\n```\nrequire \"~/ziffers/ziffers.rb\" # ~ references ziffers under users home folder, works also in Windows\n```\n\nStay up to date as the Ziffers is an ongoing project. Post Issues to report bugs or to ask questions.\n\n## Examples\n\nThere are some pretty random examples in the [Examples](https://github.com/amiika/ziffers/tree/master/examples)-folder. You can also try out [one line](https://github.com/amiika/ziffers/blob/master/test/play_tests.rb) examples from tests or browse trough [wiki](https://github.com/amiika/ziffers/wiki). If you make some nice tunes do a pull request to Examples folder to share! Thanks!\n\n## Documentation\n\nSyntax and methods are documented in [Ziffers wiki](https://github.com/amiika/ziffers/wiki).\n\n# Help \u0026 Contributions\n\nFor bugs post an [issue](https://github.com/amiika/ziffers/issues) or a fix using merge request. Use [discussions](https://github.com/amiika/ziffers/discussions) for general questions and feature requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famiika%2Fziffers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famiika%2Fziffers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famiika%2Fziffers/lists"}