{"id":21631865,"url":"https://github.com/katef/eurorack-cpu","last_synced_at":"2026-02-03T22:07:22.896Z","repository":{"id":37439456,"uuid":"442861263","full_name":"katef/eurorack-cpu","owner":"katef","description":"A CPU implemented in a modular synthesizer","archived":false,"fork":false,"pushed_at":"2022-03-20T03:32:04.000Z","size":35292,"stargazers_count":304,"open_issues_count":1,"forks_count":8,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-07-05T17:12:45.030Z","etag":null,"topics":["cpu-emulator","modular","processor-design","synthesizer"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/katef.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2021-12-29T18:42:29.000Z","updated_at":"2025-06-23T20:54:15.000Z","dependencies_parsed_at":"2022-07-20T12:17:33.241Z","dependency_job_id":null,"html_url":"https://github.com/katef/eurorack-cpu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/katef/eurorack-cpu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katef%2Feurorack-cpu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katef%2Feurorack-cpu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katef%2Feurorack-cpu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katef%2Feurorack-cpu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/katef","download_url":"https://codeload.github.com/katef/eurorack-cpu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/katef%2Feurorack-cpu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29059118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T20:13:53.544Z","status":"ssl_error","status_checked_at":"2026-02-03T20:13:40.507Z","response_time":96,"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":["cpu-emulator","modular","processor-design","synthesizer"],"created_at":"2024-11-25T02:15:38.832Z","updated_at":"2026-02-03T22:07:22.855Z","avatar_url":"https://github.com/katef.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## A CPU implemented in an analog modular synthesizer\n\nThis runs in the [VCV Rack](https://vcvrack.com/) eurorack simulator.\n\nI wrote a thread explaining the CPU [on twitter](https://twitter.com/thingskatedid/status/1476679065411022849)  \nand a thread [explaining just the ripple adder](https://twitter.com/thingskatedid/status/1475128017374437380).\n\nTODO list: https://github.com/katef/eurorack-cpu/issues/1\n\n![](img/cpu-layout-annotated.png)\n[Here's the unannotated screenshot](img/cpu.png)\nand [here's a video of the whole thing running](img/cpu-running.mp4?raw=true)\n\nInstruction formats:\n\n```\n00000: no-op (clears bus)\n10ooo: output ALU op to bus\n010rr: load reg from bus (keeps bus)\n110rr: output register to bus\n0110n: load ALU operand (clears bus)\n0111i: output immediate to bus\n\nooo = alu op\nrr = register number\nn = alu operand\ni = immediate\n```\n\n## Fetch and Decode\n![](img/instruction-decoder.png)\n[and a video of it running](img/instruction-decoding-running.mp4?raw=true)\n\n## Data bus\n![](img/bus-load-store.png)\n\n## 3-Stage Clock\n![](img/clock-stages.gif)\n\n## A single register\n![](img/single-register.png)\n\n## Register bank\n![](img/register-bank.gif)\n![and a video of it running](img/register-bank-running.mp4?raw=true)\n\n## Immediate value\n![](img/output-immediate.png)\n\n## ALU\n![](img/alu.png)\n\n## Ripple carry adder\n![](img/adder.png)\n![](img/adder-sine.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatef%2Feurorack-cpu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkatef%2Feurorack-cpu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkatef%2Feurorack-cpu/lists"}