Skip to content

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 itself
  • tv.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:

pip install tolvera

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:

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

Contact

tolvera is developed by the Intelligent Instruments Lab. Get in touch to collaborate:

iil.isFacebookInstagramX (Twitter)YouTubeDiscordGitHubLinkedInEmail

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).