Group Admins

  • Profile picture of Karim
  • Profile picture of Jean


Public Group active 3 minutes ago

User group for OpenMusic and computer-aided composition. Visit the Forum for discussions.

"Streamsep", a new Stream Separation library for OM

Author 1 Subscribed Users |
Profile photo of anders


I’ve packaged some algorithms i’ve been using for voice separation into an OM library, hopefully providing some generally useful stuff:

It’s a stream separation algorithm (aka. voice-following, polyphonic stream segregation…) using ML techniques (“Single link agglomerative clustering”) to trace out voices in uncategorized input data. The most obviously useful thing to do with this is separate voices in polyphonic input.

In the lib input is a chord-seq, and output is a list of chord-seqs, one for each voice found.

There’s also a subclass of ‘analysis’ together with tools to extract analysed data, to be able to work interactively on smaller segments of input data. Two utility functions to grab results from the segmented analysis’ are included: #’stream-seg-segments and #’stream-seg-to-multi-seq. (The latter will need the next release of OM to work properly, where some work is done on a misfeature in #’concat of multi-seqs with differing numbers of voices.)

The current algorithm has 3 tuneables: weightings for time and pitch resp., and an ‘overlap tolerance’ to allow for not too precise input. Example patches are included.

I hope to optimize further along the way, and provide more of the standard variations on distance metrics for clustering etc. Stay tuned for updates.

The README is attached. Thanks for all bug reports.


April 27, 2017 at 15:06 #22206
Profile photo of anders

The voice separation library “Streamsep” is updated to v. 0.2.
News is a function #’stream-seg-to-maquette to output two values, a list of onset times and list of objects, obviously to pass to the two inputs of a maquette.

Various bug-fixes, most importantly the output data is ordered by ascending time (scrambled input used to hit a bug in the rq-lib, fixed at the forge now).

Find the new version of “Streamsep” (along with the other libs) here:

Thanks for all bug-reports.


June 5, 2017 at 19:03 #22498

You must be logged in to reply to this topic.

Log in now