One tiny suggestion:
When you right click, could you make the whole text already selected, so that we only have to type in the value? Now we have to manually delete the value and the unit. You know, we use plugins because we are lazy :P

One tiny suggestion:
When you right click, could you make the whole text already selected, so that we only have to type in the value?

I wondered whether I would get this request. It is the intuitive behaviour, and I thought about it at the time.

It's on my list, but I won't get around to it for a week or two. I'm doing a bit of work on my UI library at the moment, including refactoring the text-input control, which will make implementing this a lot cleaner.

This sounds very nice, and allows control over aspects a lot of other synth plugins don't.

Does it have a polyphony limit? I noticed CPU was fairly high when playing a lot of notes simultaneously.

If it has no polyphony limit, or it's fairly high, would it be possible to introduce a polyphony limit option? It's nice to have high polyphony but for some patches it might not be practical especially if it makes the CPU struggle.

Spectrum Matcher:

I just tried this, and it works really well! A note to anyone using it: you can do your "learn"/"save" on the source track, then drag the effect instance to the destination track for the "correction" (since the plugin copy will retain the "learned" curve).

One thing I noticed is that the Q control doesn't reset to its default value when CTRL + left mouse click (or double left mouse click) on it.

one Q:
is it possible to add an option/mode to Humonica
for trigger-produce output only when midi notes pressed?

I'm afraid I don't quite understand - Humonica should already only produce audio output when there are MIDI notes active. Do you mean only produce audio when a note is first pressed, like an envelope decay or something?

I'm afraid I don't quite understand - Humonica should already only produce audio output when there are MIDI notes active. Do you mean only produce audio when a note is first pressed, like an envelope decay or something?

oops! i am sorry this is absolutely my mistake ..
plugin i use (microtonic) also sens midi notes to Humonica
i figured it out while creating this setup two days ago ..
but today one of my senior moments arrived and i forgot sorry again!

now the real question:
how can i buy a drink for you?
(paypal is dead in here - Turkey)
what would you think about an Amazon egift card?

how can i buy a drink for you?
(paypal is dead in here - Turkey)
what would you think about an Amazon egift card?

That's a generous thought, thanks.

Amazon gift cards are country-specific, so you'd have to get one from amazon.co.uk, not amazon.com.tr. My email's on my profile if you want to do that (or Bandcamp might actually be simpler if that works).

Amazon gift cards are country-specific, so you'd have to get one from amazon.co.uk, not amazon.com.tr. My email's on my profile if you want to do that (or Bandcamp might actually be simpler if that works).

Mostly I'm glad you're enjoying the effects though!

Hey there!
Bandcamp then & just done
PS: i love the Cello versions of Paper Thunderstorm very beautiful work!

Be mildly warned: Spectrum Matcher uses more CPU than you might expect (it's basically a 30-band EQ - I considered using FFT instead, but there are reasons to do the analysis this way.). Rather than have 10 instances running at once, I personally use this correction as a preview, and then use the correction curves to create a matching curve in ReaEQ. (If you hover over the top graph, it should show you the frequency/dB values of its correction curve.)

That could be automated - we can create ReaEQ bands and set parameter values from Reascript. But the corrected data should be exposed as parameter values...

Would it be possible to store the curve (gain values) to, for example, 30 hidden sliders?

That could be automated - we can create ReaEQ bands and set parameter values from Reascript. But the corrected data should be exposed as parameter values...

Would it be possible to store the curve (gain values) to, for example, 30 hidden sliders?

I actually fixed the performance issue I mentioned there (got a 5x boost by refactoring my filters to use pseudo-objects instead of arrays), so I think it's now only 2x slower than ReaEQ, which is what Justin said to expect from JSFX.

I also put in an extra dial (visible if you hit "Freeze") that reduces the number of bands used for correction by merging similar ones - it's not a world of difference, but between those two improvements I think the performance advantages of exporting to ReaEQ are less dramatic. I now use it directly, without ReaEQ.

Gains could still be exposed - there's actually up to 50 bands, so you'd need 50 gains, a band-count, a Q value, and enough information to reconstruct the filter frequencies (you can't export the freqs as 50 individual sliders because I believe there's a 64-slider limit). If your goal is performance, you might not want to just create 30-50 bands in ReaEQ, but perhaps design a different (smaller) set of features to match the curve.

I actually fixed the performance issue I mentioned there (got a 5x boost by refactoring my filters to use pseudo-objects instead of arrays), so I think it's now only 2x slower than ReaEQ, which is what Justin said to expect from JSFX.

I also put in an extra dial (visible if you hit "Freeze") that reduces the number of bands used for correction by merging similar ones - it's not a world of difference, but between those two improvements I think the performance advantages of exporting to ReaEQ are less dramatic. I now use it directly, without ReaEQ.

Gains could still be exposed - there's actually up to 50 bands, so you'd need 50 gains, a band-count, a Q value, and enough information to reconstruct the filter frequencies (you can't export the freqs as 50 individual sliders because I believe there's a 64-slider limit). If your goal is performance, you might not want to just create 30-50 bands in ReaEQ, but perhaps design a different (smaller) set of features to match the curve.

It would be possible to build a dedicated Reascript to read in all values as automation if maybe you had one set of sliders for a single band and a toggle slider which simply shifted the band that's being exposed by the sliders.

So you'd have a slider to select the band - setting this from Reascript then triggers the JSFX to set the other eq band sliders to the values that band is set to. So the Reascript would select band 1 on the band selector slider - your JSFX would set the sliders appropriately. Reascript could read the values of that band - then from Reascript - set the band select slider to band 2 - repeat etc.

Hence all bands could be exposed inividually and copied across to ReaEQ instance one by one in Reascript. No limitations caused by exposing each band at once.

Just an idea - depending on how useful it would be to anyone.

EDIT: Of course - this is assuming the matched EQ settings do not change once set.

EDIT2: - I should probably read a little better - sounds like you may have been suggesting something along these lines anyway

I actually fixed the performance issue I mentioned there (got a 5x boost by refactoring my filters to use pseudo-objects instead of arrays), so I think it's now only 2x slower than ReaEQ, which is what Justin said to expect from JSFX.

I also put in an extra dial (visible if you hit "Freeze") that reduces the number of bands used for correction by merging similar ones - it's not a world of difference, but between those two improvements I think the performance advantages of exporting to ReaEQ are less dramatic. I now use it directly, without ReaEQ.

Gains could still be exposed - there's actually up to 50 bands, so you'd need 50 gains, a band-count, a Q value, and enough information to reconstruct the filter frequencies (you can't export the freqs as 50 individual sliders because I believe there's a 64-slider limit). If your goal is performance, you might not want to just create 30-50 bands in ReaEQ, but perhaps design a different (smaller) set of features to match the curve.

Thanks for your reply!
No performance issues here - it was just an idea

not the transferring to Rea EQ instances via scripts but
this is what i was dreaming
would wonderful if the output result of Spectrum Matcher can be capture-able
(LBX-Stripper term .. capture the snapshots of automation-able parameters)
but all parameters needs exposed & ready to automation..

create a database from the fav. songs
and try them on the fly,
when you find a result that you like press to freeze and capture..
continue to tweak your sound .. then repeat the first step and capture.
...

but i thing not possible because of 64 slider limit of JS ?
anyway..

PS: also i have no worry about the performance thingy .. so far works great!

not the transferring to Rea EQ instances via scripts but
this is what i was dreaming
would wonderful if the output result of Spectrum Matcher can be capture-able
(LBX-Stripper term .. capture the snapshots of automation-able parameters)
but all parameters needs exposed & ready to automation.

So, would you be looking to capture the correction gains? Or to get/set the reference spectrum? Or both?

Quote:

Originally Posted by lb0

EDIT2: - I should probably read a little better - sounds like you may have been suggesting something along these lines anyway

What you're suggesting is more compact and uses few sliders that what I was imagining. I'm not familiar with exactly when various things get executed when setting/reading sliders between ReaScript and JSFX, but if you describe a protocol that would work for you (probably best via DM - or my email is on my profile), I could implement a set of "LBX-Stripper integration" sliders, or something more general if that's works too.

So, would you be looking to capture the correction gains? Or to get/set the reference spectrum? Or both?

since we can store & recall reference spectrum as Reaper presets
no need to access them as automation parameters or store-recall them via snapshots..
only the output result so the correction gains .. i think

Quote:

Originally Posted by geraintluff

What you're suggesting is more compact and uses few sliders that what I was imagining. I'm not familiar with exactly when various things get executed when setting/reading sliders between ReaScript and JSFX, but if you describe a protocol that would work for you (probably best via DM - or my email is on my profile), I could implement a set of "LBX-Stripper integration" sliders, or something more general if that's works too.

if this full implementation possible .. please just ignore my suggestion above

Was checking out Spectrum Matcher. Very nice tool, but I did find a small issue.

During testing, I made a series of Presets of captured audio. I can load each of them ... but I noticed that when I reload a project, the NAME of the Preset I had saved the project in was not visible. The 'curve' was there ... but I could not see the Preset name in the display, or preset window.

Did I miss something, or is there a way to add the Preset name [recallable] so that we know which preset was used ?

During testing, I made a series of Presets of captured audio. I can load each of them ... but I noticed that when I reload a project, the NAME of the Preset I had saved the project in was not visible. The 'curve' was there ... but I could not see the Preset name in the display, or preset window.

I think I get what you mean - you loaded a preset and used it for correction, but when you saved and re-loaded the project it no longer displayed the preset name in the top bar where you loaded it from? This is kind of a REAPER feature, rather than a Spectrum Matcher one. JSFX plugins have no way to get the names of presets being loaded into them.

I could add a "label" text entry within Spectrum Matcher, but you'd end up with two places to enter a name: once within Spectrum Matcher itself, and again when saving the preset. However, I don't think that would be a great experience, and not really that much easier than renaming the effect instance to note down which preset you used. (Maybe there's a script that could do that automatically?)

Sorry, that's probably not a very satisfying answer, but I don't think I can do anything about it from within JSFX.

I think I get what you mean - you loaded a preset and used it for correction, but when you saved and re-loaded the project it no longer displayed the preset name in the top bar where you loaded it from? This is kind of a REAPER feature, rather than a Spectrum Matcher one. JSFX plugins have no way to get the names of presets being loaded into them.

I could add a "label" text entry within Spectrum Matcher, but you'd end up with two places to enter a name: once within Spectrum Matcher itself, and again when saving the preset. However, I don't think that would be a great experience, and not really that much easier than renaming the effect instance to note down which preset you used. (Maybe there's a script that could do that automatically?)

Sorry, that's probably not a very satisfying answer, but I don't think I can do anything about it from within JSFX.

Is it possible to get the wavefile's FileName ??? and display that ??
just wondering.

I wondered whether I would get this request. It is the intuitive behaviour, and I thought about it at the time.

It's on my list, but I won't get around to it for a week or two. I'm doing a bit of work on my UI library at the moment, including refactoring the text-input control, which will make implementing this a lot cleaner.

Hey Geraint,

how are things? I was wondering if you got any further regarding this neat little feature?

Yes- at the top right corner, adjust the mix percentage - that will allow you to dial down the strength of it.

You're talking about Reapers default MIX control ... I see that ...

But what I'm looking for is scaling the corrected response that [with the display] we have Freq ranges and Gain values displayed. I'd find it useful to have a Gain scaling that would also show in the GUI.