< Back to IRCAM Forum

Use-cases for Arrays and Matrices

Hi everyone,

One basic OM function I’ve struggled to understand is: what is a matrix for, and what interesting things can you do with it? I’ve read all the documentation but I just don’t understand it. Recently, it occured to me that maybe arrays could be an interesting way to implement musical processes… but the documentation says it’s primarily a tool for synthesis. So - is it possible to do things with an array that you couldn’t do with a few bpfs in a patch? For example, I’ve often wanted to use harmonic distortion or deformation as a linear function on a chord-seq, but so far I haven’t figured out how to do it.

I would be most grateful for use cases (screenshots, patches, etc) as for whatever reason, I’ve read the documentation several times and can’t make any sense of it. There is a surprisingly large amount of interesting material that comes up in google searches, but a lot of it’s hard to find or in Japanese.

Also, if we’re sharing use cases, I would really like to see some more practical examples of using lambda functions.

Thanks in advance!

Hello — Indeed, matrices in OM (class-array) were essentially introduced to control sound synthesis processes with OMChroma.

This object gathers a number of features allowing to structure a potentially important set of data in a single and consistent object.
Matrix fields can be specified by “high-level” means (e.g. with a single value, a bpf to sample, a function to evaluate given a specified number of elements).
Class-array also provides means to determine a matrix field as a function, which can depend on another field of the same matrix.

Besides sound synthesis, class-array was also used, for instance, to control sound spatialization (see for instance the spat-matrix in OM-Spat, which represents a whole spatial sound scene including sources, trajectories, reverberation and other effects).

You might be interested as well in Marlon Schumacher’s libraries OM-Geste, or OM-Pursuit which make consistent use of class-arrays.

Best regards,
—Jean

Hi Jean, thanks for the info, it’s a big help. I haven’t delved into the audio-processing side of OM so much, because by the time I really learn my way around the interesting aspects of some music technology, it’s well on its way to becoming obsolete or it requires an ongoing subscription with a bank card. So I try to rely on hardware whose development cycle is measured in centuries and is unlikely to get “bricked” by a marketing department in Cupertino.

I’ve got OM-geste and pursuit in my libraries, and have been quite eager to try them out. But I haven’t been able to get them to work. OM-Geste says: “Lambda list (self) is not congruent with the lambda list (matrix-data stream) of #omgenericfunction get-valuelists 424034F754>.” OMPursuit, meanwhile, says “No applicable methods for #<standard-generic-function lib-pathname 40D0B110E4> with args (nil)”.

From what you describe - “Matrix fields can be specified by “high-level” means (e.g. with a single value, a bpf to sample, a function to evaluate given a specified number of elements).Class-array also provides means to determine a matrix field as a function, which can depend on another field of the same matrix.” - that’s exactly what I’m looking for, though I’ve found ways to do that “outside of the box” or, in a pinch, with OMLOOP.

best,
Michal

If you have any ideas how I can get those libraries up and running in the meantime,