{"id":22143448,"url":"https://github.com/afhverjuekki/tolvera","last_synced_at":"2025-07-26T00:33:03.473Z","repository":{"id":207382445,"uuid":"718075863","full_name":"afhverjuekki/tolvera","owner":"afhverjuekki","description":"Tölvera is a creative medium inspired by artificial life and self-organising systems.","archived":false,"fork":false,"pushed_at":"2024-09-28T13:32:53.000Z","size":6875,"stargazers_count":40,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-10T17:42:55.206Z","etag":null,"topics":["algorave","alife","artificial-life","interactive-machine-learning","live-coding","music","opensoundcontrol"],"latest_commit_sha":null,"homepage":"http://tolvera.is","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/afhverjuekki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["jarmitage"]}},"created_at":"2023-11-13T10:24:59.000Z","updated_at":"2024-10-04T17:01:26.000Z","dependencies_parsed_at":"2024-01-27T23:26:53.831Z","dependency_job_id":"69065dc7-7557-458f-811f-938425c838bd","html_url":"https://github.com/afhverjuekki/tolvera","commit_stats":null,"previous_names":["jarmitage/tolvera","intelligent-instruments-lab/tolvera","afhverjuekki/tolvera"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afhverjuekki%2Ftolvera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afhverjuekki%2Ftolvera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afhverjuekki%2Ftolvera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afhverjuekki%2Ftolvera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/afhverjuekki","download_url":"https://codeload.github.com/afhverjuekki/tolvera/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227635464,"owners_count":17796971,"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":["algorave","alife","artificial-life","interactive-machine-learning","live-coding","music","opensoundcontrol"],"created_at":"2024-12-01T22:11:05.647Z","updated_at":"2025-07-26T00:33:03.435Z","avatar_url":"https://github.com/afhverjuekki.png","language":"Python","funding_links":["https://github.com/sponsors/jarmitage"],"categories":[],"sub_categories":[],"readme":"# Tölvera\n\n\u003e ⭐️ Tölvera has been selected for Mozilla's first Builders Accelerator! [Read the announcement](https://blog.mozilla.org/en/mozilla/14-ai-projects-to-watch-mozillas-first-builders-accelerator-cohort-kicks-off/) and join our [Discord](https://discord.gg/ER7tWds9vM)!\n\n![type:video](https://www.youtube.com/embed/BmoinLR8Otc)\n\n[Tölvera](https://tolvera.is) is a Python library designed for [composing together](https://arxiv.org/abs/2303.06777) and interacting with [basal](https://royalsocietypublishing.org/doi/full/10.1098/rstb.2019.0750) [agencies](https://link.springer.com/article/10.1007/s00018-023-04790-z), inspired by fields such as artificial life (ALife) and self-organising systems. \nIt provides creative coding-style APIs that allow users to combine and compose various built-in behaviours, such as flocking, slime mold growth, and swarming, and also author their own. \n\nWith built-in support for Open Sound Control (OSC) via [iipyper](https://github.com/Intelligent-Instruments-Lab/iipyper) and interactive machine learning (IML) via [anguilla](https://github.com/Intelligent-Instruments-Lab/anguilla), Tölvera interfaces with and rapidly maps onto existing creative computing software and hardware, striving to be both an accessible and powerful tool for exploring [diverse intelligence](https://www.frontiersin.org/articles/10.3389/fnsys.2022.768201/full) in artistic contexts.\n\nInspired by our lab's location in Iceland, the word Tölvera is an Icelandic [kenning](https://en.wikipedia.org/wiki/Kenning) based on _tölva_ meaning computer, from _tala_ (number) and _völva_ (prophetess), and _vera_ (being), composed together as _number being_.\n\nWe have employed Tölvera in various collaborative artistic works, including musical performances, compositions, and multimedia installations (see [`references.bib`](https://github.com/Intelligent-Instruments-Lab/tolvera/blob/main/references.bib) for peer-reviewed publications).\nTölvera's role in these pieces has mainly been \"mappable behaviour engine\", where interface inputs can control Tölvera programs, and Tölvera runtime data can control interface outputs, in practically any combination.\nIn this way, and to controllable degrees, Tölvera can contribute to the underlying dynamics of a given interactive scenario.\nIt can also add a [visual component](https://www.youtube.com/watch?v=W2c8vFmdANY), and equally has been used without projection in [other works](https://marcodonnarumma.com/works/ex-silens/).\n\nTölvera makes use of [Taichi](https://www.taichi-lang.org/), a domain-specific language embedded in Python that enables parallelisation, and is experimental software subject to change.\n\nWe would be happy to have you join us on our [Discord](https://discord.gg/ER7tWds9vM) server!\n\n## Showcase \u0026 Examples\n\nExamples can be found at [iil-examples/tolvera](https://github.com/Intelligent-Instruments-Lab/iil-examples/tree/main/tolvera).\nSee also the [guide](https://afhverjuekki.github.io/tolvera/guide), [reference](https://afhverjuekki.github.io/tolvera/reference/tolvera/context) and [experiments](https://afhverjuekki.github.io/tolvera/experiments) pages.\n\n[Visit the YouTube Playlist](https://www.youtube.com/embed/ahSXjnYHZLU?\u0026list=PL8bdQleKUA1vNez5gw-pfQB21Q1-vHn3x) (if you'd like to add a video, please get in touch).\n\n![type:video](https://www.youtube.com/embed/ahSXjnYHZLU?\u0026list=PL8bdQleKUA1vNez5gw-pfQB21Q1-vHn3x)\n\n\u003c!-- [![](assets/images/tolvera.jpg)](https://www.youtube.com/watch?v=ahSXjnYHZLU\u0026list=PL8bdQleKUA1vNez5gw-pfQB21Q1-vHn3x\u0026pp=gAQBiAQB) --\u003e\n\n## Install\n\nTaichi [supports numerous operating systems and backends](https://docs.taichi-lang.org/docs/hello_world#supported-systems-and-backends).\nIf you plan on using Vulkan for graphics (recommended for macOS), you may need to [install the Vulkan SDK](https://docs.taichi-lang.org/docs/hello_world#supported-systems-and-backends) first and restart your machine.\n\nTölvera is [registered on PyPI](https://pypi.org/project/tolvera) and can be installed via a Python package manager such as `pip`:\n\n```sh\npip install tolvera\n```\n\n## Develop\n\nFor development, we use [`poetry`](https://python-poetry.org/).\nFork/clone this repository and install the package with `poetry:\n\n```sh\ngit clone https://github.com/Intelligent-Instruments-Lab/tolvera # (or clone your own fork)\ncd tolvera\npoetry install\n```\n\n## Documentation\n\nDocumentation is written using [MkDocs](https://www.mkdocs.org/).\n\n```sh\nmkdocs serve # serve the docs locally\nmkdocs build # build the docs\nmkdocs gh-deploy # deploy via github pages\n```\n\n## Known Issues \u0026 Limitations\n\n- Tölvera does not support Intel-based Apple devices (due to [`anguilla`](https://github.com/Intelligent-Instruments-Lab/anguilla)'s FAISS dependency, and Mediapipe not supporting Intel Macs).\n- On macOS, [an OpenMP issue](https://github.com/pytorch/pytorch/issues/78490) may prevent Tölvera programs from running, which can be addressed by adding the following environment variable:\n```sh\nexport KMP_DUPLICATE_LIB_OK=TRUE\n```\n- Sonification via [SignalFlow](https://signalflow.dev) does not work on Windows.\n- Mediapipe versions [may need to be downgraded](https://github.com/google/mediapipe/issues/5168) in order to work on macOS and Windows.\n- `OSError: Could not find any hidapi library`: this is due to the DualSense (PS5 controller) class. On macOS you can `brew install hidapi` and it should work. \n\n## Contribute\n\nWe welcome [Pull Requests](https://github.com/Intelligent-Instruments-Lab/tolvera/pulls) across all areas of the project:\n\n- Addressing [Issues](https://github.com/Intelligent-Instruments-Lab/tolvera/issues)\n- Adding features (see [Issues](https://github.com/Intelligent-Instruments-Lab/tolvera/issues) and [Discussion](https://github.com/Intelligent-Instruments-Lab/tolvera/discussion))\n- [Examples](https://github.com/Intelligent-Instruments-Lab/iil-examples/tree/main/tolvera)\n- [Tests](https://github.com/afhverjuekki/tolvera)\n- [Documentation](https://afhverjuekki.github.io/tolvera/)\n\n## Community\n\nTo discuss Tölvera with developers and other users:\n\n- Use GitHub [Issues](https://github.com/Intelligent-Instruments-Lab/tolvera/issues) to report bugs and make specific feature requests.\n- Use GitHub [Discussions](https://github.com/Intelligent-Instruments-Lab/tolvera/discussions) to share ideas and ask questions.\n- Use [Discord](https://discord.gg/ER7tWds9vM) for further support, sharing your work, and general chat.\n\nAcross the project, we follow the [Berlin Code of Conduct](https://berlincodeofconduct.org/). \nPlease get in touch if you experience or witness any conduct issues.\n\n## Roadmap\n\nSee [Discussion](https://github.com/Intelligent-Instruments-Lab/tolvera/discussion).\n\n## Citation\n\nTölvera is being written about and used in a number of contexts (see [references.bib](https://github.com/Intelligent-Instruments-Lab/tolvera/blob/main/references.bib)).\nThe current canonical citation is our [NIME 2024](https://www.nime2024.org/) paper:\n\n```bibtex\n@inproceedings{armitageTolveraComposingBasal2024,\n  title = {T{\\\"o}lvera: {{Composing With Basal Agencies}}},\n  booktitle = {Proc. {{New Interfaces}} for {{Musical Expression}}},\n  author = {Armitage, Jack and Shepardson, Victor and Magnusson, Thor},\n  year = {2024},\n  address = {Utrecht, NL},\n}\n```\n\n## Inspiration\n\n- [Michael Levin](https://en.wikipedia.org/wiki/Michael_Levin_(biologist))\n- [SwissGL](https://swiss.gl)\n- [Lenia](https://chakazul.github.io/lenia.html)\n- Particle Life (attributed to various, see for example [Clusters](https://www.ventrella.com/Clusters/))\n- [Journey to the Microcosmos](https://www.youtube.com/@journeytomicro)\n- [Complexity Explorables](https://www.complexity-explorables.org/)\n\n## Contact\n\nTölvera is developed by [Jack Armitage](https://jackarmitage.com).\n\n## Acknowledgements\n\nWe thank the Taichi community for their project that makes Tölvera possible.\n\nTölvera was originally created at the [Intelligent Instruments Lab](https://iil.is).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafhverjuekki%2Ftolvera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fafhverjuekki%2Ftolvera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafhverjuekki%2Ftolvera/lists"}