Arturia synth development.

VST, AU, AAX, CLAP, etc. Plugin Virtual Instruments Discussion
Post Reply New Topic
RELATED
PRODUCTS

Post

Ingonator wrote: The only external FX is the Waves One Knob Phatter bass enhancement plugin. Not really necessary for those specific patches but is more a less a "standard" plugin for me when using this synth (and also some others) while in this case not at the maximum amount (which is the only knob in that FX plugin).
i never used one knob before,so let's see what is exactly adding:
Image

harmonic distortion:

from a sine sweep,(knob at 10) brighter colors means more amplitude. i can see that the low frequencies have more harmonic distortion,this emulates how some vintage gear warms some of the signal,it's a frequency dependent distortion :)

frequency response:
a nice low end boost.this can be replicated with a equalizer ,all the knobs positions were tested.

so the magic of this plugin is the interaction of the low harmonic distortion with the low end boost. nice :)
...want to know how to program great synth sounds,check my video tutorials: http://www.youtube.com/user/sergiofrias25

Post

Ingonator wrote:This is a spontaneous improvisation using a layer of 3 of my own patches for Arturia Matrix-12 V2 (actually converted from the first version using teh new converter software):
IW - Matrix-12 V2 Ambient improvisation 01

This was recorded "live" so no overdub. The only built-in effect used with those patches is the Chorus.
The only external FX is the Waves One Knob Phatter bass enhancement plugin. Not really necessary for those specific patches but is more a less a "standard" plugin for me when using this synth (and also some others) while in this case not at the maximum amount (which is the only knob in that FX plugin).

The patches use some of the advanced features likee.g. "3-Phase" filter and FM. The stereo width is introduced both by the Chorus and pannning the voices (you could detune and pan each voice seperately) on the "Voice" page).

IMO the Matrix-12 plugn works perfectly as a "pad machine" and of course does some classics like synth Brass, Synth Strings etc. very well. You could also get a huge Unison with up to 12 voices while you could also use less and you could detune (both in semitones and cents) and pan each voice.
In this case (like with some other Arturia synths too) i do not even care really much if this synth sounds exactly like the real thing, it just soudns great as it is IMO.
I think this post isn't what I'm really talking about in my initial post. Matrix 12 V is one of the newer emulations and does indeed sound decent. Could be maybe a bit better, but I'm not really concerned about it. What's really on my radar is Prophet V and CS80 V.

BTW, I also happen to think that Modular V is pretty damn good.
Zerocrossing Media

4th Law of Robotics: When turning evil, display a red indicator light. ~[ ●_● ]~

Post

fmr wrote:
XpanderDude wrote:What all would be involved in Arturia overhauling the code to take more advantage of recent CPU changes?

It seems like CPU/RAM tech has improved vastly over the last 5 or even 10 years. Wouldn't re-coding be a good idea? Too expensive to undertake?
Arturia is working on the code, but we are talking about a collection that nowadays spans 17 instruments. Some are new, some are older, some are really old. Also, some of the new stuff still needs to be perfected (the physical models). There's a lot of work to be done, so, we need to be patient.
But what if you're American? :lol:

Seriously, contract Xils to do these under the Arturia brand like they did with Synclavier V. Give Xils most of the profits and consider it advertising/marketing to bring Arturia back as one of the reigning champs of analog modeling. See? I fixed everything! :hyper:
Zerocrossing Media

4th Law of Robotics: When turning evil, display a red indicator light. ~[ ●_● ]~

Post

zerocrossing wrote: I think this post isn't what I'm really talking about in my initial post. Matrix 12 V is one of the newer emulations and does indeed sound decent. Could be maybe a bit better, but I'm not really concerned about it. What's really on my radar is Prophet V and CS80 V.

BTW, I also happen to think that Modular V is pretty damn good.
I was quite surpsrised and also happy when Arturia released both Matrix-12V (now V2) and Synclavier V which IMO both are 2 of the most outstanding plugins in the collection.
Before Arturia did those i feared that no developer would ever do those and at the moment there is no direct competition for them in terms of emulations. All other develoeprs are free to do it better but as the original developer was involved with the Synclavier V it would be difficult at least for that one.


FWIW i also think that Piano V is really nice for being their first acoustiic piano modelling plugin. With a little tweaking i was alraedy able to get some very nice sounds from it and with some included models/presets like e.g. the Glass or Metal Grand Piano you could get some sounds beyond the commonly known ones.
Last edited by Ingonator on Sat Oct 29, 2016 9:50 pm, edited 1 time in total.
Ingo Weidner
Win 10 Home 64-bit / mobile i7-7700HQ 2.8 GHz / 16GB RAM //
Live 10 Suite / Cubase Pro 9.5 / Pro Tools Ultimate 2021 // NI Komplete Kontrol S61 Mk1

Post

zerocrossing wrote: Seriously, contract Xils to do these under the Arturia brand like they did with Synclavier V. Give Xils most of the profits and consider it advertising/marketing to bring Arturia back as one of the reigning champs of analog modeling. See? I fixed everything! :hyper:
Well, I think that Xavier Oudin would easily pick the code of Modular V, CS-80 V and Mini V and update it, since he was one of the main developers of these (before he left to found Xils).

But considering he left Arturia, I find this perhaps a little difficult (I don't in what terms they split, but I imagine there can be some bitterness remaining. But who knows? :hihi:

Anyway, judging for the most recent launchings, I think that Arturia is getting back on tracks regarding software development. Let's give them some time, and hope for the best. :)
Fernando (FMR)

Post

fmr wrote:
zerocrossing wrote: Seriously, contract Xils to do these under the Arturia brand like they did with Synclavier V. Give Xils most of the profits and consider it advertising/marketing to bring Arturia back as one of the reigning champs of analog modeling. See? I fixed everything! :hyper:
Well, I think that Xavier Oudin would easily pick the code of Modular V, CS-80 V and Mini V and update it, since he was one of the main developers of these (before he left to found Xils).

But considering he left Arturia, I find this perhaps a little difficult (I don't in what terms they split, but I imagine there can be some bitterness remaining. But who knows? :hihi:

Anyway, judging for the most recent launchings, I think that Arturia is getting back on tracks regarding software development. Let's give them some time, and hope for the best. :)
Oh, I was (mostly) kidding. I love Xils synths. I put them right up there with the best. I just want an XILS quality Prophet V. Is that so wrong? :oops: I'd really love it if XILS did a Oxium v2 that had wavetable oscillators. Imagine being able to do wave sequencing with the sequencer.
Zerocrossing Media

4th Law of Robotics: When turning evil, display a red indicator light. ~[ ●_● ]~

Post

zerocrossing wrote: I just want an XILS quality Prophet V. Is that so wrong? :oops: I'd really love it if XILS did a Oxium v2 that had wavetable oscillators. Imagine being able to do wave sequencing with the sequencer.
If by that you mean a Prophet V/VS, I'm right there with you!

/Joachim
If it were easy, anybody could do it!

Post

Hi all,

I am the guy who is responsible for the Mini V filter. I would normally not jump in such discussions, as my opinion is obviously be biased, but I need to get a couple of things straight at this point.
Urs wrote:
Kevin [Arturia] wrote:Just for clarifying, this techniques is ZDF as stated in the title of the article.
To clarify, it's an *approximation* to what other developers are doing by implicitly solving non-linear equations with a delay-less closed loop. It's likely better than "the olden method", but it's not as close to the non-linear behaviour as a circuit simulation based on Kirchhoff. It's a compromise for CPU usage.
Technically speaking everything is an approximation, SPICE simulations included. Even the analog circuit is an approximation of the schematics, in a sense. If we really wanted to be "as perfect as possible", we'd need to use a good circuit simulator as the DSP part of plugins, but that would not meet real-time constraints. Thus, I reject the accusation of "using an approximation" as a demerit tout-court.

Talking in general about the quality of the approximations, using a full-blown nonlinear equation/system solver will not necessarily guarantee better results, and any discretization scheme you use will certainly introduce errors. Hence, I think it is misleading to claim that there are "true/correct methods" of doing things, and everything else is not as good a priori.

Now, to the point of our implementation, I want to first remind everybody that the original articles are the result of about 1 year of research on the subject, they are published in a highly-reputed international journal, and they have gone through extensive scientific peer-review. But more specifically, the quality of the approximation of the nonlinear behavior is also evaluated in comparison with previous academic research and the SPICE reference, and it can be found in section V.B of the second article. Furthermore, the filter always runs at a sample rate of at least 176.4 kHz, thus even if there is no real solving of the nonlinear part, the output error will be however negligible.

If none of this convinces you in any way, I attach here an Octave (and hopefully MATLAB-compatible) implementation so that you can check yourself. At this point, however, the burden of proving that this algorithm deviates from the behavior of the real circuit is all yours.
Urs wrote:I like you guys, it's always good to hang out with some peeps of Arturia at trade shows. However, I'm sorry to say that, but your marketing department is always good for a facepalm. A quote from the "behind the scenes" website:
about the old methods they wrote:This was very evident when the filter was set in self-oscillation mode: if you kept the emphasis high enough and tried to sweep the cutoff, you could see that the amplitude of the sine wave generated by self-oscillation was very far from constant, and at the lowest cutoff settings it would just die out.
Well, guess what, a real Minimoog filter does that too. Self-oscillation / resonance dies out below 200Hz. If your new implementation doesn't (as the context of the quote suggests), then you're advertising a bug as a feature :clown:
This is harder to explain. So, yes, it is true that the real thing behaves as you describe, however as far as I know that is due to the feedback amplifier having a highpass (DC remover) built-in. And yes, we chose to do it differently, so strictly speaking we are not like the original in this sense. But this is so for a very good reason: the highpass in the feedback would not just kill the self-oscillation, but also detune it. Is this a "bug" in the original device or in our algorithm? I myself wouldn't be able to answer this question, but we decided together to introduce that change.

However, the previous implementation was much worse in that the self-oscillation would be far from constant at any cutoff setting (the first part of the sentence), not just at low cutoff.
Urs wrote:
.jon wrote:I understand that people here are now going through an obsessive phase where the accuracy of a filter resonance hump emulation @ 200Hz seems like really important, but such details have no connection with music whatsoever.
It contributes to the warm fuzzy feeling of the Moog sound. It is key to the Moog sound, more so than Zero Delay Feedback (which Arturia's marketing department in yet another facepalm moment calls "Zero Delay Filters" on the same page :dog:). Obviously, Arturia's marketing guys deem it important enough to substantiate their efforts with such bogus pages, the intent of which is to lure the unsuspecting user to think of "compromise" as "revolution". I would be very grateful, as an individual and as a competitor, if they stopped doing that.
I wonder if you can prove this "contribution to the warm fuzzy feeling of the Moog sound". I would honestly be happy if that was the case, as I would have learnt something new and I would know how to improve our algorithm. Regarding the "zero delay filters" mistake, it is a typo, and it's fully my responsibility, not the marketing guys'. I will get them to correct it as soon as possible.

Anyway, our filter is not free from mistakes (that I hope to correct not too far away in the furture), but as far as I know they have nothing to do with what was brought up in this discussion. Personally I have a lot of work to get done these days, and keeping up with this thread is not high in my priority list, thus if anybody has anything important to say, please contact me on my personal email.

(This forum will not let me attach the .m file, so here I copy it):

## Copyright (C) 2014 Stefano D'Angelo
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to deal
## in the Software without restriction, including without limitation the rights
## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
## copies of the Software, and to permit persons to whom the Software is
## furnished to do so, subject to the following conditions:
##
## The above copyright notice and this permission notice shall be included in
## all copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
## THE SOFTWARE.

## -*- texinfo -*-
## @deftypefn {Function File} {@var{y} =} moog_ladder_nonlinear (@var{fs}, @var{N}, @var{x}, @var{fc}, @var{k}, @var{fccomp}, @var{knorm}, @var{gaincomp})
##
## Simulate the generalized Moog ladder filter as described in
## @quotation
## S. D'Angelo and V. Valimaki, ``Generalized Moog Ladder Filter:
## Part II-Explicit Nonlinear Model through a Novel Delay-Free Implementation
## Method,'' @emph{IEEE/ACM Trans. Audio, Speech, and Lang. Process.}, vol. 22,
## no. 12, pp. 1873-1883, December 2014.
## @end quotation
##
## It produces the output vector @var{y} from the audio input vector @var{x}.
## @var{fs} is the sample rate (in Hz) and @var{N} is the filter order.
##
## @var{fc} and @var{k} are, respectively, the cutoff frequency (in Hz) and
## global feedback gain, and they can either be scalars or vectors whose length
## is equal to the length of @var{x}. If @var{fccomp} is true, @var{fc}
## represents the actual cutoff frequency of the leading poles (@math{f_c}),
## otherwise it represents the natural cutoff frequency (@math{\widehat{f_c}).
## If @var{knorm} is true, @var{k} is the normalized feedback gain value,
## otherwise it is the absolute feedback gain value.
##
## @var{gaincomp} can be: 1 (no gain compensation), 2 (dc gain compensation),
## or 3 (cutoff-slope gain compensation).
##
## @end deftypefn

## Author: Stefano D'Angelo <zanga.mail@gmail.com>
## Maintainer: Stefano D'Angelo <zanga.mail@gmail.com>
## Version: 1.0.0
## Keywords: moog ladder filter lowpass resonant vcf nonlinear

function y = moog_ladder_nonlinear(fs, N, x, fc, k, fccomp, knorm, gaincomp)

### Constant values

VT = 26e-3;

### Input arguments

# Checks

if (nargin != 8)
print_usage();
elseif (!isscalar(fs) || !isnumeric(fs) || !isreal(fs) || fs <= 0)
error("moog_ladder_nonlinear: FS must be a positive real");
elseif (!isscalar(N) || !isnumeric(N) || !isreal(N) || isinf(N)
|| floor(N - 1) != abs(N - 1))
error("moog_ladder_nonlinear: N must be a finite positive integer");
elseif (isscalar(x) || !isvector(x) || !isnumeric(x) || !isreal(x))
error("moog_ladder_nonlinear: X must be a vector of real values");
elseif (!isnumeric(fc) || !isreal(fc)
|| (!isscalar(fc) && !isvector(fc))
|| (!isscalar(fc) && isvector(fc)
&& length(fc) != length(x)))
error(["moog_ladder_nonlinear: FC must be a scalar or a vector of real " ...
"values whose length is equal to the length of X"]);
elseif (!isnumeric(k) || !isreal(k)
|| (!isscalar(k) && !isvector(k))
|| (!isscalar(k) && isvector(k)
&& length(k) != length(x)))
error(["moog_ladder_nonlinear: K must be a scalar or a vector of real " ...
"values whose length is equal to the length of X"]);
elseif (!isscalar(gaincomp)
|| (gaincomp != 1 && gaincomp != 2 && gaincomp != 3))
error("moog_ladder_nonlinear: GAINCOMP must be 1, 2, or 3");
endif

# Convert to row vectors

if (rows(fc) > columns(fc))
fc = fc';
endif
if (rows(k) > columns(k))
k = k';
endif

# Compensate/normalize parameters

if (!fccomp)
fc .*= alpha(k);
endif

if (knorm && N <= 2)
warning(["moog_ladder_linear: KNORM cannot be true when N <= 2, " ...
"ignoring it"]);
elseif (knorm)
k .*= sec(pi / N) ^ N;
endif

# Enforce bounds

fc = limit(fc, 0, fs / 2, "FC");
k = limit(k, 0, inf, "K");

# Convert parameters to vectors

if (isscalar(fc))
fc = repmat(fc, 1, length(x));
endif
if (isscalar(k))
k = repmat(k, 1, length(x));
endif

### Coefficients

g = tan(pi / fs * fc) ./ alpha(N, k);
VT2 = 2 * VT;
VT2i = 1 / VT2;

# Ladder stages

p0s = 1 ./ (1 + g);
q0s = 1 - g;
r1s = -g;
k0s = VT2 * g .* p0s;

# Global filter

gN = (1 - p0s) .^ N; # == (g ./ (g + 1)) .^ N
kgN = k .* gN;
p0g = 1 ./ (1 + kgN);
bin = bincoeff(N, 1:N)';
rg = -bin * kgN;
qg = rg - repmat(bin, 1, length(x)) ...
.* (repmat((g - 1) .* p0s, N, 1) .^ repmat([1:N]', 1, length(x)));
k0g = -VT2i * p0g;

### Filter

y = zeros(1, length(x));
si = zeros(1, N);
sf = zeros(1, N);
sg = zeros(1, N);
for i = 1:length(x)
yo = tanh(k0g(i) * (x(i) + sg(1)));

for n = 1:N
yi = yo;
yd = k0s(i) * (yi + sf(n));
y(i) = yd + si(n);
yo = tanh(VT2i * y(i));

si(n) = yd + y(i);
sf(n) = r1s(i) * yi - q0s(i) * yo;
endfor

yf = k(i) * y(i);
for n = 1:(N-1)
sg(n) = rg(n, i) * x(i) + qg(n, i) * yf + sg(n + 1);
endfor
sg(N) = rg(N, i) * x(i) + qg(N, i) * yf;
endfor

### Gain compensation

if (gaincomp == 2)
y .*= 1 + k;
elseif (gaincomp == 3)
y .*= alpha(N, k) .^ N;
endif

endfunction

function y = alpha(N, k)
if (N == 1)
y = 1 + k;
else
y = Aw(N, 0, k);
endif
endfunction

function y = Aw(N, w, k)
y = sqrt(1 + k .^ (2 / N) - 2 * k .^ (1 / N) .* cos(((2 * w + 1) * pi) / N));
endfunction

function y = Bw(N, w, k)
y = 1 - k .^ (1 / N) .* cos(((2 * w + 1) * pi) / N);
endfunction

function y = limit(x, low, up, name)
y = x;
if (min(y) < low || max(y) > up)
warning(["moog_ladder_nonlinear: limiting " name " to [" num2str(low) ...
", " num2str(up) "]"]);
y(y < low) = low;
y(y > up) = up;
endif
endfunction

Post

The highpass filters (plural) in the feedback path reduce the volume attenuation of low frequencies when you add resonance. You want that Moog sound, this is what you need. Have you ever tried a real Minimoog and mapped Cutoff CV to actual filter frequency?

Also please note that I do not (and probably can't) comment on your DSP code. I'll just say that yes, you can create an explicit zero delay feedback filter and mimic non-linear behaviour otherwise. But you can't magically create the same result as calculating implicit non-linearities with an iterative solver.

I did - as some times before - comment on Arturia's marketing tactics. They sell "compromise" as "revolution". And I can't see any revolution here.

Post

Judging from the audio examples the Arturia emulation sounds very good and pleasant (whether 100% authentic or not I can't tell, nor would I care whether it is 95 or 98% authentic) and I would be much more likely to pay those 150 bucks than 100 for the Synapse or NI one because the Arturia one has so many useful additions that go beyond the original and would keep me interested in the long run, whereas the other two are rather limited musically speaking.

Non-linearities mean deliberate imperfection, so to speak, right? Can't one use the random generator for that, which I suppose uses much fewer resources? Layman's question, I know 8)
Or is it non-linear as in exponential or whatever?

Post

BTW. I forgot to confirm, although some already guessed it right. In my audio examples posted last week, synth A is Mini V, synth B is Minimonsta and synth C is Monark. I still didn't install the demo version of Legend, but I will probably, and try to recreate the trest sounds also with that one (even if I am convinced already that it is very good, since it is being so unanimously praised)
Fernando (FMR)

Post

daste wrote:Is this a "bug" in the original device or in our algorithm?
If you want to call something an "accurate emulation", you have to be that: Accurate. The degree of accuracy may be debatable, but in audio applications it's safe to say that "until no audible difference" is a good bar.

Why talk about Spice models at all? I have spent tens of thousands of euros on 10 vintage hardware Moog filters in various vintage synthesizers. We compared them, opened some them, measured them. We measured the gain staging, actual distortion curves, frequency relations, everything. It's a hands-on job. Then we built models that covered the effects we found, and implemented those we found important for the sound - which is "the things one can hear". We certainly missed some, but we haven't deliberately neglected any. I know that the guys at Native Instruments and Synapse Audio did pretty much the same (both of which IMHO having utterly accurate Minimoog emulations). In any case, it's a tedious job, and everyone has given their best to get the *actual* behaviour of the Moog Ladder filter right.

So now there's a competitor who obviously chose to sacrifice an *easily audible* property of the original emulation for, hmmm, is it an ideal filter frequency (?). They also still call it "reproduce the linear behavior of the filter with practically 100% accuracy".

So yeah, it's kinda weird. There'll be a moment some guys on the internet do a comparison between different Ladder filter implementations. And they'll read the article on Arturia's website. And they'll find out that "only the Arturia one got that one right".

So, going back to the question: No matter if it's a bug, a flaw or a feature of the original hardware - if you can hear it and if you want to call your emulation accurate, you have to model it. Otherwise it's a bug in your implementation. And it's quite certainly not a sane marketing argument.

Post

Urs wrote:
daste wrote:Is this a "bug" in the original device or in our algorithm?
If you want to call something an "accurate emulation", you have to be that: Accurate. The degree of accuracy may be debatable, but in audio applications it's safe to say that "until no audible difference" is a good bar.
I usually hear a difference when listening to A/B comparisons, when companies release their emulations, unless the sound examples are too basic. I probably won't be able to pick which one is the original though. But there's always certain variations of timbres, or the one sounds more drift-y than the other, or one has a bit less bottom end, or more top end. Frankly, i don't even know if it's possible to make them sound EXACTLY the same, the work seems to be too tedious, and complex to ever achieve that. At best it's "good enough", which, surely, is... good enough. :) At least for most.

Post

Urs wrote: So, going back to the question: No matter if it's a bug, a flaw or a feature of the original hardware - if you can hear it and if you want to call your emulation accurate, you have to model it. Otherwise it's a bug in your implementation. And it's quite certainly not a sane marketing argument.
To Stefano: IMO, Urs has a point here. If we are in it for making a truly accurate emulation, the flaws have to be taken in consideration, even if don't like them. Otherwise, it would not be a completely faithful emulation.

Personally, I am not in favour of emulating flaws. But sometimes flaws become an important part of the picture, and start to be perceived as "features" (especially when they have the dust and aproval of History). Of course, there is always the possibility to have a "switch" that allows the user to introduce the flaw or get rid of it (especially if, to emulate that flaw, we have to sacrifice other things). This is what I personally defend - giving the user the option to have the original in its full extent, with all the flaws, and the possibility to experience what would be an "ideal" unit, without flaws.
Last edited by fmr on Mon Oct 31, 2016 12:17 pm, edited 1 time in total.
Fernando (FMR)

Post

Having tried Legend before, I am actually wasting 200MB+ on the Arturia thingy now, curious about the sound...

Post Reply

Return to “Instruments”