Tölvera
Tölvera is a library for exploring musical performance with artificial life (ALife) and self-organising systems. The word is an Icelandic kenning:
- Tölva = computer, from tala (number) + völva (prophetess)
- Vera = being
- Tölvera = number being
Tölvera is written in Taichi, a domain-specific language embedded in Python.
This is experimental software and everything is currently subject to change.
Join us on the Tölvera Discord.
Showcase
Visit the YouTube Playlist (if you'd like to add a video, please get in touch).
Features
tv.v
: a collection of "vera" (beings) including Move, Flock, Slime and Swarm, with more being continuously added. Vera can be combined and composed in various ways.tv.p
: extensible particle system. Particles are divided into multiple species, where each species has a unique relationship with every other species, including itselftv.s
: n-dimensional state structures that can be used by "vera", including built-in OSC and IML creation (see below).tv.px
: drawing library including various shapes and blend modes, styled similarly to p5.js etc.tv.osc
: Open Sound Control (OSC) via iipyper, including automated export of OSC schemas to JSON, XML, Pure Data (Pd), Max/MSP (SuperCollider TBC).tv.iml
: Interactive Machine Learning via anguilla.tv.ti
: Taichi-based simulation and rendering engine. Can be run "headless" (without graphics).tv.cv
: computer vision integration based on OpenCV and Mediapipe.
Examples
Examples can be found at iil-examples/tolvera. When run as a script, Tölvera program looks like this:
from tolvera import Tolvera, run
def main(**kwargs):
tv = Tolvera(**kwargs)
@tv.render
def _():
return tv.px
if __name__ == '__main__':
run(main)
Install
Taichi supports numerous operating systems and backends. If you plan on using Vulkan for graphics (recommended for macOS), you may need to install the Vulkan SDK first and restart your machine.
Tölvera is registered on PyPI and can be installed via a Python package manager such as pip
:
Develop
Fork/clone this repository and install the package with poetry
:
git clone https://github.com/Intelligent-Instruments-Lab/tolvera # (or clone your own fork)
cd tolvera
poetry install
Contribute
We welcome Pull Requests across all areas of the project:
- Addressing Issues
- Adding features (see Issues and Discussion)
- Examples
- Tests
- Documentation
Community
To discuss Tölvera with developers and other users:
- Use GitHub Issues to report bugs and make specific feature requests.
- Use GitHub Discussions to share ideas and ask questions.
- Use Discord for further support, sharing your work, and general chat.
Across the project, we follow the Berlin Code of Conduct. Please get in touch if you experience or witness any conduct issues.
Roadmap
See Discussion.
Citing
Tölvera is being written about and used in a number of contexts (see references.bib), here are a few recent examples:
@inproceedings{armitageAgentialScoresExploring2023,
Address = {Boston, Massachusetts, USA},
Author = { Jack Armitage and Thor Magnusson },
Title = {Agential Scores: Artificial Life for Emergent, Self-Organising and Entangled Music Notation},
Booktitle = {Proceedings of the International Conference on Technologies for Music Notation and Representation -- TENOR'2023},
Pages = {51 - 61},
Year = {2023},
Editor = {Anthony Paul De Ritis and Victor Zappi and Jeremy Van Buskirk and John Mallia},
Publisher = {Northeastern University},
ISBN = {978-0-6481592-7-8}
}
@inproceedings{armitageStrengjavera2023,
title = {Strengjavera},
booktitle = {{{AI Music Creativity}} 2023},
author = {Armitage, Jack},
year = {2023},
address = {{University of Sussex, Brighton, UK}},
doi = {10.5281/zenodo.8329855},
ISBN = {978-0-9957862-9-5},
url = {https://zenodo.org/records/8329855}
}
Inspiration
- SwissGL
- Lenia
- Particle Life (attributed to various, see for example Clusters)
- Journey to the Microcosmos
- Complexity Explorables
Contact
tolvera
is developed by the Intelligent Instruments Lab. Get in touch to collaborate:
◦ iil.is ◦ Facebook ◦ Instagram ◦ X (Twitter) ◦ YouTube ◦ Discord ◦ GitHub ◦ LinkedIn ◦ Email ◦
Funding
The Intelligent Instruments project (INTENT) is funded by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (Grant agreement No. 101001848).