Fluid.sines features

Hello !

Would it be possible with the current algorithm in fluid.sines~ to control the frequencies and amplitudes ? Just being able to transpose (+ and -), and shift (+ and -), the sine frequencies ?
That is maybe difficult with fft bins though…

Hiya,
@groma will be able to tell me if I’m wrong, but I think that the current sines algorithm works by direct additive synthesis for the sinusoidal part, but that the residual is taken as the difference between the original and the tracked sines, so that would be less useful if tranposition was used.

(I think also that Gerard might feel like he has unfinished business with that algorithm which might need attending to before any new features creep in.)

Yes, the algorithm definitely has the frequencies and amplitudes of the tracked sinusoids, but they are not accessible. Maybe it could be considered as a descriptor object, but the handling of the outputs as tracks is definitely not trivial…

Do we need an additive synthesis object as well then? :grin:

1 Like

Well in most environments driving a set of oscillators should be quite easy, on the other hand I guess transformations such as shift and transposition would belong to the second toolbox…

1 Like

This is what I guessed unfortunately. But maybe thru a conversion from instantaneous frequencies and using a bank of oscillators ? Thank would have been useful to play around with extracted sinewaves.
This is totally another story, another object. Just asking…

2 Likes

Definitely worth considering for the future though.

In one possible future, we would need a way to communicate data between objects ? Something like a real-time SDIF within Max ?

1 Like

We’ve been quite resistant to introducing coupled ways of our objects talking to each other. Partly because it makes having something that would work across multiple environments even harder, but also because things then start to become big and frameworky, which in turn can affect how easy it is to just pick and choose individual objects, as well as raising the barrriers to use.

On the other hand, dealing with structured data is a live issue, especially for the next toolkit.

IOW: there’ll be something, hopefully terribly clever, but we don’t know what yet :smiley:

I understand you !!!..
I think thinking of more and more features can show a lack of ideas somewhere else.

We shall print this out and put it on the office wall

1 Like

And vise versa…<>

actually, you get that with the sines output, no? @groma am I right?

What we have now as output is the result of masking the input with an estimate of the sines, although these are really synthesized in frequency domain. I am guessing @pasquetje would want something more like sigmund~. The parameters of the sinusoids could be output (possibly in a different object using the same code) but the tracking makes it a bit complicated, especially across different environments.

I think I understood both request: resynth out, and data out to do resynth elsewhere. IIUC our object does the former, and we have had request for the latter by Olivier at the plenary and it is on our mid-term dream list, right?

Yes indeed ! :slight_smile:

My initial specific question about fluid.sine was that I wanted to be able to transpose and shift the frequencies. For instance, parameters named “trans $1” and “shift $1” would do the job. The sound would come from the object as it already does.

But I think this is difficult because fluid.sine is an inverse fft (integration), and not discreet additive syntheses. It works with “quatified” fft bins and not frequencies that can be multiplied by a fixed factor. fluid.sine would need to do additive synthesis using a heavy bank of oscillators. Doing such conversion only for that purpose would change the aim of that external.
Tell me if I am wrong…

Maybe @rodrigo.constanzo would prefer “mc.cycle~” rather than “ioscbank~” in Max 8 ?

I’m not certain about this… IIUC @groma it is an hybrid…

Ohh ok. So that would be super useful I think.

One next simple gadget dream would be the possibility to apply an expression for frequencies, phases and amplitudes. Just a message to the object in the “expr” format.

1 Like