A Neovim plugin for live coding algorithmic music and visuals with Strudel, providing real-time two-way synchronization and remote control.
strudel.nvim is a Neovim plugin that allows users to live code algorithmic music and visuals using Strudel directly from their Neovim editor. It solves the problem of switching between a web-based editor and a local text editor by providing real-time two-way synchronization and remote control of Strudel's playback and evaluation functions.
Musicians, visual artists, and live coders who use Neovim and want to integrate Strudel's algorithmic music and visual capabilities into their existing workflow.
Developers choose strudel.nvim because it seamlessly integrates Strudel into Neovim, enabling a file-based, version-control-friendly live coding experience with real-time sync, remote control, and extensive customization options.
A Neovim based strudel.cc controller, live coding using Strudel from Neovim.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements two-way content and cursor synchronization between Neovim and Strudel, enabling live updates without manual copying, as detailed in the synchronization feature.
Allows remote control of Strudel's play, stop, and update functions from Neovim via commands like :StrudelToggle, streamlining the live coding workflow.
Supports saving files as .str or .std extensions, facilitating version control integration and offline editing, as emphasized in the file-based workflow philosophy.
Offers options to hide UI elements, inject custom CSS, and configure Hydra-only modes for performance projections, providing tailored live coding experiences.
Requires Neovim 0.9.0+, Node.js 16.0+, npm, and a Chromium browser, adding significant setup complexity compared to standalone editors.
Running Puppeteer and a browser instance for synchronization can consume substantial system resources, especially in headless or long-running sessions.
The README notes that lazy loading may break file type support (issue #5), limiting flexibility in Neovim configuration for some users.