Haha the easter bunny has delivered.
-
@d-healey My gut feeling is that the performance is not good enough for realtime usage. A 8 second sample takes about 2 seconds to synthesise, so a single voice is 25% CPU, so playing a chord will eat up your entire CPU.
I think the library was never intended to be used in realtime and the amount of work to make this possible is more or less the same as writing a fast additive synth that uses the analysed partial data from scratch.
-
"a fast additive synth that uses the analysed partial data from scratch...."
-- so that would be a great idea to do - just do all your partial generating in batch and ship this specification file with an additive sound generator that knew how to read them...
-
@Christoph-Hart That makes sense. Ok I'll continue with the phase alignment idea. I'm already working with another developer on this angle too.
Oh actually you might be interested, it's the guy who made this - https://github.com/VirtualAnalogy/Paraphrasis
-
@d-healey said in Haha the easter bunny has delivered.:
@Christoph-Hart That makes sense. Ok I'll continue with the phase alignment idea. I'm already working with another developer on this angle too.
Oh actually you might be interested, it's the guy who made this - https://github.com/VirtualAnalogy/Paraphrasis
ooh, err, that'd be good.....
-
Is the save button implemented?
Does the pitch lock use the harmonify class (or whatever it's called)?
-
@d-healey Nope, the save button doesn't do anything yet, I'll try to think of a few ways of batch processing this stuff as you don't want to click on it for each sample export :)
the pitch lock is a custom script function - that's the great thing about the entire setup: you can just define a Javascript function that processes each breakpoint (=read grain) of each partial (=read harmonic).
The relevant function looks like this:
inline function pitchLock(obj) { // Repitch obj.frequency *= pitchFactor; // Apply noise gain (bandwidth is the noise amount, 1 = full noise, 0 = pure sinusoidal) obj.bandwidth *= noiseGain; // calculate the "real" harmonic local ratio = Math.round(obj.frequency / obj.rootFrequency); // calculate the fully locked frequency local lockedFrequency = ratio * obj.rootFrequency; // interpolate between the locked and original frequency obj.frequency = pitchLockAmount * lockedFrequency + (1.0 - pitchLockAmount) * obj.frequency; }
As you can see, it's almost pseudo-code style easy to write spectral manipulation functions, which makes it a super nice tool for playing around.
-
@Christoph-Hart Oh wow, that makes it quite simple to use then. Yes batch preprocessing would be good.
-
I'm thinking if I pitch lock all the dynamic layers, then align the peaks and troughs my chorusing issues should be eliminated. Is there a way to overlay waveform views so I can do the lining up in HISE?
-
what the heck is a Loris?
-
-
@d-healey i shall resub when I'm not MC Hammer-broke ;)
i assume there's already someone out there way smarter than me working on a differentiable version of this...
-
@iamlamprey Oh sorry, didn't realise you weren't subscribed. The video will probably be public in a couple of weeks.
Basically Loris is a tool for dismantling audio files into individual sine-waves, fiddling about with them, and then putting them back together.
And what Christoph has done is use it to create what is essentially a harmonic editor.
This kind of thing:
https://www.youtube.com/watch?v=TSqx_zZKlLk -
@d-healey Aah, keymap, the glory days. What a shame what Apple did to this software...
-
@Christoph-Hart Fortunately it was never something I used and didn't become dependent on for my workflow. I know some developers still keep some really old Mac hardware around just for this one tool. But this feature always seemed cool to me.
-
@Christoph-Hart can i steal this LAF? good lord it's beautiful
-
@Christoph-Hart It crashes on mac with a mouseUp in the upper previewPanel so I changed this
Engine.playBuffer("", "", 0.0);
into this
Engine.playBuffer([], "", 0.0);
-
@ustk Intel or M1?
@Christoph-Hart said in Haha the easter bunny has delivered.:
I also got the crash on Windows, but on macOS it's not crashing for some reason... I'll debug it later, but it looks like an easy fix.
Can you also make the export work? :D
-
@d-healey Intel... If the export is meant to be the save button then it apparently isn't linked to anything...
-
@ustk Yeah that's the button (discussed a bit further up this thread). Christoph is planning a batch processing feature and the toolkit at the moment is quite barebones.
-
@d-healey Yeah I was just playing a wee bit :)
ATM I don't really see many use cases for me anyway if it can't be real-time, but we'll see when it's ready...EDIT: except if it can extract the data, like the harmonics!