Voice Component Modeling

Moderator: Solaris Moderators

stefanovic
Posts: 11
Joined: Thu Mar 01, 2018 1:49 pm
Contact:

Voice Component Modeling

Post by stefanovic »

I came across this: Voice Component Modeling (VCM) : http://www.voicecomponentmodeling.com/

In a nutshell, and as far as I understood it:
According to its author, Jason Cooper, the analog character of a polysynth does not come from completely random deviations, but rather from repeated, same random deviations of voice parameters such as pitch, attacks and decays.
He insists that the deviation is 'random' across voices, but randomness is specific to a voice and does not change each time a sound is played on that voice. A particular voice allocation algorithm will cycle through all same random deviations though.
Actually he thinks that randomness is not an 'analog' attribute, and using it unwisely will rather make the sound weird.

To test his hypothesis, he made a clever use of the 'Key Step' mode of sequencers.
- 4 step seqs are connected to/modulate pitch, shape, attacks, decays.
- each seq step contains small deviation value such as -1,2,3,-4 etc. The number of steps is the same as the number of voices polyphony (say 10 on the Solaris, but you could imitate a Prophet 5 with 5 steps)
- each key hit will advance the seq by one step, and modulate the parameters of the voice with the next deviation. Since the seq is cyclic, this ends up in repeated deviations, and imitates a typical voice-stealing algorithms

The solaris sequencer can be programmed as VCM for pitch and shape, but not for attacks and decays of envelope, as the set of sources is very limited (no seq, but CCs).
I hacked together a javascript, midi and browser-based program that simulates a seq in Key Step mode: when it receives NoteOn events, it emits CCs (20 and 21) to change attacks and decays of vcf and vca envelopes (It will not be great for very fast attacks though, because of the time it might take to transmit midi forth and back).

The HTML/javascript program is available here:

https://jsfiddle.net/rv24ho7k/3/

You'll need a special purpose preset, attached to this message.
(hum, actually, I am not able to attach anything, what should I do? Meanwhile I'm putting it here:

https://drive.google.com/file/d/1ALPWJa ... sp=sharing

)

The preset is a very simple, annoying brass with no modulation whatsoever (no LFO), except:
seq A => osc 1 pitch
seq B => osc 2 pitch
(maybe seq A => osc B shape, I do not remember)
CC1 => eg1 A and eg6 A
CC2 => eg1 D and eg6 D

Plug the solaris usb midi in the computer running the browser, and set CC1 to 20 and CC2 to 21, as they are the CCs used by the javascript program (you may need a midi plugin for your browser, such as jazz midi)

By default the preset has VCM mode on. To compare with no VCM, switch off the sequencer button on the Solaris, and uncheck the VCM checkbox on the web page.
To make sure the midi-browser stuff is working as expected, check "volume" on the web page: this will emit CC 7 (main volume) so you should hear variations of volume each time you hit a key (try this by repeatedly hitting the same key on the Solaris).

The parameters to play with are:
- on the solaris :
seq modulation amount in osc1 osc2 (modulation 3)
modulation amount in A and D of env1 and env6
values in seq A and B
you could also feed osc1 shape with seqB and osc2 shape with seqA (providing that the waveform shape parameter is possible with the waveform you chose)
- in the javascript program,
arrays on top of the source
offset and slope of the CC transfer function

I post this message for everyone to experiment, but also to discuss how this could influence the next Solaris firmwares:
- one thing to do to make VCM easier to experiment with, and get rid of the HTML/javascript stuff, would be to add modulation sources to envelope parameters. This could be seq of course, but I would suggest Lags instead, as they seem to be the only ports in Solaris that can act as output ports for any other source (e.g. seq, or even CCs) that is connected to it. It could even replace CCs altogether in the set of envelope modulations, and controlling with CC would just necessitate an indirection through the lags with 0ms delay
- If we find some combinations of VCM parameters that sound great, this VCM algorithm may be implemented in the firmware, so that we do not waste seqs and lfos for the sake of analog imitation anymore.

I may be completely mistaken though, so take this with a grain of salt, even if I'm quite confident that your solaris should not blow up because of this stuff :-)

And... no audio demo, I do not own a soundcard :facepalm:...

[EDIT] share a .pre file instead of a .syx file
Last edited by stefanovic on Thu May 20, 2021 10:00 am, edited 1 time in total.
John Bowen
Site Admin
Posts: 1944
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Re: Voice Component Modeling

Post by John Bowen »

Thanks for posting this! One of the things I want to expand in a future OS is the mod source amounts for the envelope segments....if the 4 sequence rows were in the Source list, for example. These are on the list, as well as a few others.
stefanovic
Posts: 11
Joined: Thu Mar 01, 2018 1:49 pm
Contact:

Re: Voice Component Modeling

Post by stefanovic »

Yes, I saw that you put env mod sources in the list of features for the next OS. To prevent any missing parameter in future use, I suggest to begin with lags in all mod sources in the solaris, and use them as general i/o. It might be the easiest path for the next firmware (?).

(Btw, I uploaded a new preset, with full volume. If you test the web app with the volume CC, do not forget to set the volume back to 127 once you're done!)
John Bowen
Site Admin
Posts: 1944
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Re: Voice Component Modeling

Post by John Bowen »

Got it!
Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests