zwirn: a live coding language for playing with nested functions of time

[ gpl, language, library, sound ] [ Propose Tags ] [ Report a vulnerability ]

zwirn is a live coding language for playing with nested functions of time, which trigger the sending of osc-messages. it's syntax is inspired by TidalCycles' mini-notation and it's API for manipulating patterns.


[Skip to Readme]

Modules

  • Zwirn
    • Zwirn.Language
      • Zwirn.Language.Block
      • Builtin
        • Zwirn.Language.Builtin.Internal
        • Zwirn.Language.Builtin.Parameters
        • Zwirn.Language.Builtin.Prelude
      • Zwirn.Language.Compiler
      • Zwirn.Language.Environment
      • Zwirn.Language.Evaluate
        • Zwirn.Language.Evaluate.Convert
        • Zwirn.Language.Evaluate.Expression
        • Zwirn.Language.Evaluate.Internal
        • Zwirn.Language.Evaluate.SKI
      • Zwirn.Language.Lexer
      • Zwirn.Language.Parser
      • Zwirn.Language.Pretty
      • Zwirn.Language.Rotate
      • Zwirn.Language.Simple
      • Zwirn.Language.Syntax
      • TypeCheck
        • Zwirn.Language.TypeCheck.Constraint
        • Zwirn.Language.TypeCheck.Infer
        • Zwirn.Language.TypeCheck.Types
    • Zwirn.Stream

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0
Dependencies array (>=0.5 && <0.6), base (>=4.17 && <4.20), bytestring (>=0.12.1 && <0.13), containers (>=0.6 && <0.7), exceptions (>=0.10 && <0.11), filepath (>=1.5 && <1.6), hosc (>=0.21.1 && <0.22), mtl (>=2.3 && <2.4), network (>=3.2 && <3.3), pretty (>=1.1 && <1.2), text (>=2 && <2.2), tidal-link (>=1.1 && <1.2), zwirn-core (>=0.1.1 && <0.2) [details]
Tested with ghc ==9.8.2
License GPL-3.0-only
Copyright Martin Gius
Author Martin Gius
Maintainer Martin Gius
Revised Revision 1 made by MartinGius at 2025-02-09T19:00:55Z
Category Language, Sound
Source repo this: git clone https://github.com/polymorphicengine/zwirn(tag 0.1.0.0)
Uploaded by MartinGius at 2025-02-09T17:53:34Z
Distributions
Downloads 23 total (23 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2025-02-10 [all 3 reports]

Readme for zwirn-0.1.0.0

[back to package description]

🧶🧵🧶 zwirn 🧶🧵🧶

zwirn is a live coding language for playing with nested functions of time.

Inspiration

zwirn is an experiment in making the pattern language TidalCycles into a small functional language of it's own. while zwirn's internals are quite different from Tidal's, zwirns design owes almost everything to tidals design by Alex McLean.

the internal representation of signals of time was implemented together (and parallel) with Julian Rohrhuber, in an effort to port tidal to SuperCollider. This can be found in the seperate haskell library zwirn-core.

the implementation of the compiler is inspired by the excellent Write You a Haskell by Stephen Diehl.

Installing zwirn

There are currently two ways to play with zwirn:

  • zwirnzi - the zwirn zompiler-interpreter
  • zwirn-loom - a compiler-interpreter for zwirn with an experimental editor interface

Zwirnzi is meant to serve as a way to play with zwirn in an editor of your choice, currently there are no official editor extensions - but it shouldn't be too hard to implement one. This means that zwirn-loom is the best way to play with zwirn at the moment.

Limitations

due to the representation of signals and the way they are queried, there can only be a limited amount of triggers per cycle, if this number is exceeded zwirn fails to find any triggers. Currently the threshold seems to be at 500 triggers per cycle:

while fast 499 $ s "bd" works as expected, fast 500 $ s "bd" is silent. if you would like to increase the amount of trigger per second (not cycle!), increase the cycles per second, for example by running :cps 1.

Documentation

documentation for zwirn is still in progress and available here, feel free to drop me a message if you have any questions.