KYMATICA

KyCE II - Kymatica Compositional Environment

click for full-size screenshot

About

KyCE is an object oriented programming environment for composition based on the Nasal scripting language. It runs on Linux and depends on GTK+ and ALSA.

The output from KyCE is mainly real-time MIDI output through ALSA.

I'm currently working on another application: AlgoScore, an interactive graphical score for non-realtime algorithmic composition. Please check it out.

KyCE consists of a Nasal interpreter, libraries for ALSA output and other stuff, a scheduler to run multiple tasks in a cooperative multitasking, and an OOP layer written in Nasal. The concept is to write classes in Nasal code, create objects of them and connect them together in a patch. Each object has a function that will run as a task with precise time control, and a function to respond on incomming messages from other objects.

Each task does their work and then tells the scheduler that it's done and when it wants to be woken up to continue where it left off. A watchdog makes sure that tasks don't halt the scheduler by not returning control within a given timespan (default 3 secs).

All tasks are synchronized, so you can know in which order they are executed and what timestamp they will have when outputting ALSA events.

The patching is done with code, not graphically. This means you could have dynamic patches, create objects from other objects, etc...

So, it's kind of a merge between systems like Max and PureData with patchable objects, and fully text-based systems like ChucK or SuperCollider. Note that KyCE does not have any DSP functionality, this is better handled by other software like PD, ChucK or CSound. (Or even better, analogue hardware synthesis... ;)

The GTK library is also available in Nasal, making it easy to create custom GUI's for controlling algorithms, creating graphical sequencers, visualizing data, etc...

Features

  • Open Source
  • Based on Nasal, flexible dynamically typed programming language with garbage collection and lexical scoping. Syntax reminding of C and JavaScript.
  • Suitible for algorithmic composition.
  • Patch-concept
    • objects are created and connected in a network, with code.
    • objects can send messages of any type to each others, including functions and other objects
  • Collaborative multitasking scheduler
    • Precise time-control of tasks
    • Guaranteed synchronization and ordering between tasks
  • Real-time ALSA sequencer input and output
  • Everything can be changed and updated in real-time, recompiling classes, changing the patch, etc...
  • GTK gui with interactive Nasal interpreter, project manager, text editor and task manager
  • GTK can be used to create custom user interfaces
  • MTC and MMC output to synchronize with recording equipment and such
  • Graphical score editor
    • curves - line interpolation (optionally curved) or stepped
    • events - boxes with code in them to be executed at specific time, with different operators to interpolate from one box to another. (morph, shift, substitute, and more...)
    • (more shape types to come...)
    • control other objects (algorithms or external synthesis parameters)
    • visual layering of shapes (with transparency) according to groups
    • PDF export (see example)

Download

Documentation

Page last modified on March 31, 2008, at 11:22 AM π