Hi, I’m interested in modalys but I wanted to first ask if it would be
suitable for my use, since it’s hard to tell entirely from the documentation.
I use a sequencer of my own design, and I’d like to drive modalys as an
external synthesizer. For this, I need some way to get control data to
modalys, and from the documentation I can see two ways.
One way is to merge all the notes for each instrument into a sound file with
a channel for each control, then generate a lisp script to connect each sound
file to its corresponding instrument. The problem is that the sound file
needs to either have a constant sampling rate, or I need to put each controller
into its own file and play some very careful tricks with the variable sampling
rate… which would mean two sound files for each controller. It would be
much simpler to use a constant sampling rate, but with say a sampling rate of
100hz that’s about 1.37mb for an hour, so say 20 instruments each with 5
controllers I have to write a 137mb sound file. This is likely pretty fast,
but still quite inefficient given that most controllers are static most of the
time.
The other approach would be to emit giant envelope controller expressions, but
I worry that this would be even less efficient for complicated signals, since
it has to be interpreted as text by lisp.
Ideally I could write a binary file with breakpoints, but as far as I can tell
modalys doesn’t provide hooks to implement my own controller. Or does it?
Normally for this kind of system I would assume the source is included, but
with commercial software I can’t be certain.
Also, I assume modalys can be invoked from the command line, and I don’t have
to use its specialized editor, right?
Also, if there’s significant startup overhead I’d like to start it once and
then drive it from a socket. Presumably if the REPL listens to stdin I could
do it with pty hackery, but a proper solution would work better. I gather
it’s built on a standard common lisp compiler so I’d assume it would have or
could be made to support basic things like this, but it can’t hurt to be
sure.
Is there built-in support for multiple CPUs? Otherwise I could start an
instance for each CPU and divide the instruments among them, but lower level
support would be able to balance the load more evenly.
Of course for realtime use I know I can start it up and send OSC, but I’d
likely use that only for realtime preview. For the proper render I’d need
offline render.
And of course if anyone else has experience driving modalys from a sequencer,
I’d be interested in hearing about how that went.
Thanks!