{"id":16138174,"url":"https://github.com/ul/livecore","last_synced_at":"2025-03-16T09:33:13.803Z","repository":{"id":45058743,"uuid":"330362427","full_name":"ul/livecore","owner":"ul","description":"A hardcore livecoding system for realtime audio synth.","archived":false,"fork":false,"pushed_at":"2024-08-23T04:37:55.000Z","size":12089,"stargazers_count":32,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-08T17:08:55.928Z","etag":null,"topics":["audio","livecoding","nim","nim-lang","synth"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ul.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}},"created_at":"2021-01-17T10:12:33.000Z","updated_at":"2024-09-06T10:19:53.000Z","dependencies_parsed_at":"2024-02-17T01:35:32.020Z","dependency_job_id":null,"html_url":"https://github.com/ul/livecore","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ul%2Flivecore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ul%2Flivecore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ul%2Flivecore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ul%2Flivecore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ul","download_url":"https://codeload.github.com/ul/livecore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243809844,"owners_count":20351406,"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":["audio","livecoding","nim","nim-lang","synth"],"created_at":"2024-10-09T23:32:39.305Z","updated_at":"2025-03-16T09:33:11.828Z","avatar_url":"https://github.com/ul.png","language":"C","readme":"# LiveCore\n\nA hardcore livecoding system for realtime audio synth in [the spirit of Sound Garden](http://ul.mantike.pro/sound-garden-manifesto.html).\nWIP with\n[Work with the garage door up](https://notes.andymatuschak.org/Work_with_the_garage_door_up) ethos.\n\n## Influences\n\n- [clive](https://mathr.co.uk/clive/)\n- [Extempore](https://extemporelang.github.io)\n- Sound Garden [1](https://github.com/ul/sound-garden) \u0026 [2](https://github.com/ul/sound-garden-0x2)\n- [Ad Libitum](https://github.com/ul/ad-libitum)\n- [Strudel](https://github.com/tidalcycles/strudel)\n\n## Dependencies\n\n- [Nim](https://nim-lang.org) 2.0.0\n- [fswatch](http://emcrisostomo.github.io/fswatch/) 1.17.1\n- [libsndfile](http://www.mega-nerd.com/libsndfile/) 1.1.0\n- [LLD](https://lld.llvm.org)\n\nOn macOS:\n\n```\n$ brew install fswatch libsndfile\nor\n$ port install fswatch libsndfile\n```\n\nFor Nim try [choosenim](https://github.com/dom96/choosenim#choosenim).\n\nThere is also `shell.nix` for Nix users, which is the installation method I use and test against.\n\n## Configuration\n\nSample rate and channels count is hardcoded to `48000` and `2` respectively.\nIf your device requires different values, edit `src/dsp/frame.nim`.\n\n## Session workflow\n\nNB: you need to run all the mentioned scripts from the repo root.\n\n- Checkout starting point. For a fresh session the `main` branch is a good choice.\n- Make sure that the git tree is clean, as this script will be committing your\n  changes as you make them.\n- Start server with `./start-server`\n- Run `./start-session` with a session name as an argument.\n  It must be valid as a part of git branch name as the script will prefix it with\n  `session/` and checkout this branch.\n- If the session with such name exists it will be resumed.\n- Make changes in `src/session.nim` and save file to compile and send to the server.\n- After every successful compilation there will be a commit.\n- Ctrl-C this script to stop and switch back to the starting point.\n- The system is ready for the next session!\n\n## Render\n\nTo render a specific session duration in a non-interactive mode to a file:\n\n```\n$ ./render \u003cduration in seconds\u003e \u003cpath/to/output.wav\u003e\n```\n\n## Examples\n\nPeek into `src/session.nim` in `session/*` branches.\n\n## License\n\nThis project is licensed under [BSD-3-Clause](./LICENSE), with the exception of\nderivative work that is covered either by licenses defined via `LICENSE` files\nin the corresponding sub-directories or via comments directly in the source code\nfiles.\n\n## FAQ\n\n### Why Nim?\n\nC-like freedom, performance and fast compilation with heaps of syntactic sugar.\nclive very much aligns with the vision I wanted to implement and I'd just port\nclive to macOS if only C was terser. When I'm jamming I want the code to be\nclean, concise and close to my intention, all other necessary trade-offs\nconsidered.\n\n### Does it run on Windows/Linux?\n\nMaybe. Please try and let me know! I strive to write the code in a\nplatform-independent way but I test it only on macOS.\n\n### Why snake_case procs and vars?\n\nPurely irrational, æsthetic choice. CamelCase seems to be prevalent in the Nim\necosystem, and majority of the code I write/read in other languages is camelCase\ntoo. However, I enjoy the most writing/reading OCaml and Rust in the regard of\nthat particular convention, and I'm glad that Nim's compiler doesn't actually\ncare, so I went with underscores.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ful%2Flivecore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ful%2Flivecore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ful%2Flivecore/lists"}