Skip to content

sova-org/Sova

Repository files navigation

Sova (сова)

A Polyglot Script Sequencer and a Virtual Machine for Live Coding

Sova GUI

Sova is a new sequencer and musical programming environment designed in Rust, under active development. It is based on a robust virtual machine that allows to improvise music in real time through code. The virtual machine allows Sova to support multiple bespoke programming languages, each tailored to a specific way to think about music. Sova is free and open-source software, developed for artists, developers and researchers alike.

  • Virtual machine: Sova is built on a robust virtual machine that specializes in executing code precisely in realtime. The virtual machine is tightly coupled with a realtime musical scheduler based on Ableton Link. Code execution is temporized, offering very strong guarantees of accuracy.

  • Polyglocy: Sova supports using multiple programming languages concurrently in the same session, both compiled and interpreted. You can build bespoke musical programming languages for Sova or adapt your favorite live coding library to the Sova virtual machine. Each language can provide a different way to think about musical expression or a different way to describe musical sequences and musical objects.

  • Sequencer Session: Sova code execution works following a timeline-like paradigm. It allows you to order and sequence multiple scripts both sequentialy or in parallel. It is possible to execute multiple scripts written in different languages in the same session.

    • Composers can leverage the timeline to compose pieces of music through code.
    • Live coders can ignore the timeline or use it to structure a live improvisation.
  • Server/Client Architecture: Sova is designed to support multiple clients in a same networked session. By default, Sova is ready for collaborative jamming. Anybody can start a session, anybody can join on the local network.

  • Modular: Sova is not a monolithic piece of software. You can think of it as multiple objects forming a coherent framework or system. There is the virtual machine, the server, the various clients, etc. Take the bits you like, leave the other stuff behind.

  • I/O: Sova is capable of emitting and receiving MIDI and OSC messages. Thanks to its modular design, it is relatively easy to add support for other protocols if the need arises.


Sova Architecture

Quick Start

Prerequisites

  • Rust (latest stable)

Build and run

git clone https://github.com/Bubobubobubobubo/Sova.git
cd Sova
cargo run -p sova-desktop --release

Pre-built releases are available on the Releases page.

Project status

Sova is a young project, still to be considered in alpha stage. The virtual machine is entirely functional and works quite well. It already supports multiple programming languages, both compiled and interpreted. Clients and languages are still under development but already more than usable! Documentation and more bespoke programming languages are already on the way. You can start hacking freely, the code is stable!

Feel free to ask questions! The project is slowly growing and we are always looking for contributors or critical feedback.

Build

See the Quick Start section above, or the Contributing Guide for detailed development setup.

License

Sova is distributed under the AGPL-3.0 license. A copy of the license is distributed with the software: LICENSE.

Community

Acknowledgments

The research and design work on Sova was supported by the following institutions:

Many thanks for their continuous support.

About

Sova: a polyglot sequencer and virtual machine for music live coding. Made with Rust and Love.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages