First time here? Check out the FAQ!

How can I modularise or encapsulate a sequencer that has many VCS controls?

0 votes

I've made a midi step sequencer based around the StepSequencer sound. I'm using it to control a modular synth via a midi-to-cv converter. The sequencer has 16 steps and outputs gate, pitch, velocity, midi CC1 and pitch bend. Here's a screenshot of it:

Here's an example of it playing the Mutable Instruments Braids oscillator:

(all the tweaking in the sample is done using the VCS in kyma)

I want to have 4 (and possibly more) of these sequencers in a Sound where the only difference between them will be their midi output channel. This seemed like a good case for using a Class. I've tried using the "new class from example" option from the Action menu... but that gets tricky! First kyma prompts me to enter a value for each !EventValue... but there's about 96 of those. If I enter a simple value like "1" for each of those, it doesn't work.

I've tried this with smaller example sequencers. The class making process asks me to replace all !EventValues for ?EventVariables. If I do that then I end up with a whole bunch of parameters like P01, P02, P03 etc etc. Where the original StepSequencer had a single parameter called Pitches which expected an array.

My pitch array in the StepSequencer is created by a script:

pitches: {1 to: ?Steps collect: [:i | (!Pitch_ suffix: i) + (!Octave * 12) + !PitchOffset + 60]}

If I replace this with something like ?pitches, I don't know what to put when Kyma prompts me to enter a value for ?pitches.

What I want is that nicely laid out grid of VCS controls - it takes quite a while to format and place all those controls! Is the only way to get a VCS control to appear, when making a class, is to have a parameter field in the class and then the user of that class enters a !EventValue in the that field?

Ideally what I want is a class with a single parameter "Midi Channel" but when used, you get all the VCS controls. Is that possible? The second best option would be a class which has parameters for gate, pitch, velocity, CC, pitch-bend but each of these would be a single parameter that would take an array and the default value in that parameter would generate the VCS controls in the screenshot. How would I do either of those?

Also the StepSequencer creates a !Stage EventValue. When I try and make a class Kyma insists I change that to ?Stage but then I get this error:


Thanks for any help! Sorry this is a bit of a long rambling question, I hope it makes sense.



asked May 13, 2017 in Capytalk & Smalltalk by alan-jackson (Master) (4,030 points)
As an alternative, have you tried using a Replicator to make the four copies, rather than making a class? You could use ?VoiceNumber for the MIDI channel number.

1 Answer

+1 vote
Best answer
if you want an array parameter field you should provide an array when asked for the value (e.g. #(1) ). Then in the class editor you can choose array for type. Anyway, encapsulation will not give you what you want. an encapsulated class doesn't necessarily save the VCS. Instead I would keep it as is and use Prefixers or a replicator. did you try that already?
answered May 13, 2017 by kymaguy (Master) (9,580 points)
selected May 23, 2017 by alan-jackson
I used a replicator in the end. When I create a copy of the sequencer using a replicator all of the replicated controls are faders with a range of 0 to 1. It took me hours to reformat all the VCS controls. Is there an easier way?