Newbie question: How far can Cantabile be controlled with JS API?

Hello there, and happy new year!

I am about to start a large art project, and I am investigating the best tools.

Is it possible with the JavaScript API to control Cantabile for tasks such as loading and playing waveforms, specify volume and stereo positioning and effects for each waveform, and control the real-time parameters of VST FX plugins?

Basically using Cantabile as a performer, but all in code.

Thank you for your insights.


The closest we have is using the ReaJS plugin, for example: ReaJS script to turn Mono-Pressure into Poly-AT

There is currently discussion on introducing a scripting language to Cantabile: Thinking out loud: a scripting language for Cantabile

@PiGre There’s a lot there, but it’s by no means complete and some of the thing you mention aren’t possible. In particular it’s not really possible to get very far inside a song or rack with the API.

That said, looking forwards, I’m hoping to extend the binding system more in these area which would also make the netapi/jsapi more powerful.

What exactly do you mean by this… triggering a wave in a sampler plugin, triggering a Cantabile media player or something else.

Again depends on what you mean by waveform. If it’s a sampler then I guess you’re talking about parameters on the plugin? The catch here is it’s currently not possible to get to plugin parameters via the API (but I’ve had a couple of requests of late so I might look at getting that working).

By “effects” do you mean adding an effect programmatically or controlling an existing one. Cantabile itself has no effects so any effect processing will need to be done by a plugin.

There’s currently no plans to allow adding/removing plugins via the API.

As mentioned, currently not possible, but maybe soon.

TL;DR: right now the API probably isn’t going to cut it for what you’re suggesting, but feel free to explain in more detail what you’re after (either here, or email me) and we’ll see.

@Derek, I believe the question is in relation to the JavaScript wrapper for the network API (see here).

1 Like

Thank you for the answers.
I am not a Cantabile user, so I can’t really explain the details using specific terminology.
I’ll try to go into more detail.

I need to achieve this through the JS wrapper or also through network interface using a socket, lets say as the simplest example:

1 - Load or import a sample from a specific path
2 - Apply a VST FX to such file, or perform other actions such as pitch-shift or time-stretch
3 - Play such file (with play-end event notification)

Thank you for your time,

Hi PiGre

Cantabile is primarily designed to enable playing VST instruments live: its API also centers around controlling that functionality.

Cantabile isn’t primarily a sample player, even though its audio player is pretty good.

Maybe there are options to do most of what you are planning by combining existing functionality within Cantabile and remote-controlling via MIDI (the “bindings” functionality) and generating MIDI programmatically?

In any case, you’d have to first learn about what Cantabile is and how it works - what you are planning sounds like an advanced usage scenario, so there is quite a learning curve involved until you get to a point where you could actually start implementing your project. Start with the basics, learn about the various elements of Cantabile - it’s quite a journey …

1 Like

As often happens, @Torsten summed up exactly what I wanted to say, but more clearly.

1 Like