[linux-audio-dev] sequencing..Symbolic Control Protocol

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] sequencing..Symbolic Control Protocol
From: est_AT_hyperreal.org
Date: la elo    21 1999 - 17:37:38 EDT


Eli Brandt discourseth:
>
> The way I think, I'd prefer a music sequencer that handles abstract
> time-structured data and maps it to MIDI.

I'm totally into this approach. I think a canonical textual
representation is useful as well.

For example, oolaboola (www.hyperreal.org/~est/oolaboola) has complete
separation of the dsp and the gui. They communicate over a pair of
pipes using something I call (though it's only in a nascent state)
Symbolic Control Protocol (scp) which uses Scheme symbolic expressions
for its lexical structure. Both the protocol and oola's use of it
need considerable fleshing out. All communications from the gui to
the dsp are logged to a time-stamped (in its name) sequence file. The
file has entries like:

 (delta 31.010903 (file0 "/music/all-in-your-hands.wav"))

..meaning 31.010903 seconds after the previous event, load
"/music/all-in-your-hands.wav" onto player 0.

The oola distribution includes a tiny sequencer program (`seq', which
is installed into the oola library directory) which can be used to run
the dsp using one of these log files.

The long-term idea is that scp-speaking resources would have a grammar.
For example a midi device might have a grammar that includes

(type channel (range 1 16))
(type key (range 0 127))
(type velocity (range 0 127))

(event (| (note-on channel key velocity))
        ...)

It might be worthwhile to restrict such grammars to be regular (in the
linguistic complexity sense).

Given a grammar and a sequence file, a sequence editor could be pretty
friendly. Useful composite operations could be created for various
grammars with standard ones in a library.

Other interesting scp uses include:

* Mapping of raw MIDI to more abstract MIDI grammars might be useful.
  When it comes to computer-based sound processing, however, I find it
  pleasant to completely forget about MIDI. :)

* scp can be used for hand-shaking between resources which then set up
  streaming data connections via tcp or (if on the same machine)
  shared-memory.

* scp-speaking resources could be accessed via URLs (e.g.,
  scp://localhost/my-soundcard), and programs could determine where to
  send output (control and/or data) via an scp URL specified in an
  environment variable (like the X DISPLAY variable). I'll be doing
  something like this when oola is extended to handle multiple cheap
  soundcards.

One obvious question about the scp approach is `why not XML'? The
decision doesn't seem clear-cut either way to me. Some salient points
are:

* XML was never intended for streaming messages.

* Scheme has well-defined lexics for numerical quantities. The type
  schemata extensions to XML are in a draft stage and are, IMHO,
  fairly poor.

* Scheme symbolic expressions are cheap and easy to parse and have had
  their structure debugged over 40 years.

* I'm a lisp chavinist. :)

* In any case, translation between xml and scp doesn't seem too difficult.

Thoughts?

Eric


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : pe maalis 10 2000 - 07:25:52 EST