Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 07-18-2021, 10:26 AM   #881
NomadMonad
Human being with feelings
 
Join Date: Jun 2021
Posts: 16
Default

I'd also like to say your plugins are outstanding and thank you for all your amazing work!

Especially Filther is the dirtiest sounding filter I have ever tried, and I tried a lot of them. If one day you could release a version with larger fonts (getting a bit presbyopic here) would be amazing :-D
NomadMonad is offline   Reply With Quote
Old 07-18-2021, 11:51 AM   #882
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

I've been toying with Bric-a-brac for a while already, and I haven't been able to get it to work. Dragging a "texture" sample into one of the four slots seems to produce no result.

I'm dragging from the MEX, not from Project Media Bay, Timeline or from an OS file browser window. The dragged file's name does register in the slot, but no waveform is shown, and there is no audible effect - meaning that when I set the mix to 100% wet, it goes silent.

Being in alpha stage, I'm sure it's no biggie, but I thought I'd mention it.

SUGGESTION - Even before it actually works for me, I already have a suggestion: a couple of utility (Hi/Lo-pass) filters just for the detection, per-texture. Use case: using a single instance to add some triggered beef to the BD, while messing up the rest of the loop in other ways, likely envelope-following: metal, white noise or farting ducks. FUN! It will be fun for sure. I'm planning to use this on a live cajon track to make assorted sounding loops on the fly.

Thanks, Sai'ke. Your creations give me definite pangs of happiness, and they enable me to make some music I wouldn't otherwise have made.
juan_r is offline   Reply With Quote
Old 07-18-2021, 11:58 AM   #883
JamesPeters
Human being with feelings
 
Join Date: Aug 2011
Location: Near a big lake
Posts: 3,943
Default

Quote:
Originally Posted by NomadMonad View Post
Especially Filther is the dirtiest sounding filter I have ever tried, and I tried a lot of them. If one day you could release a version with larger fonts (getting a bit presbyopic here) would be amazing :-D
Press the "L" button on your keyboard when the Filther window is open and the font size will increase. You'll have to do it every time you load the plugin or change a preset, unless you make that change to the presets and save them that way.

It's that button because that specific feature was added to help Linux users who complained the font size was too small (me).
JamesPeters is offline   Reply With Quote
Old 07-18-2021, 12:04 PM   #884
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by juan_r View Post
I've been toying with Bric-a-brac for a while already, and I haven't been able to get it to work. Dragging a "texture" sample into one of the four slots seems to produce no result.
Did you set a loop? Otherwise it plays only once and only when you jump with the playhead (without loop is only intended for triggered mode).

Maybe I should just set the full sample as loop on import by default when it is not set to triggered mode.

EDIT: Actually, come to think of it, it's probably better to load them looped by default when in non-trigger mode so made that the new default.

Quote:
Originally Posted by juan_r View Post
SUGGESTION - Even before it actually works for me, I already have a suggestion: a couple of utility (Hi/Lo-pass) filters just for the detection, per-texture. Use case: using a single instance to add some triggered beef to the BD, while messing up the rest of the loop in other ways, likely envelope-following: metal, white noise or farting ducks. FUN! It will be fun for sure. I'm planning to use this on a live cajon track to make assorted sounding loops on the fly.
Should be possible. Need to have a look how to fit it into the UI.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]

Last edited by sai'ke; 07-18-2021 at 12:57 PM.
sai'ke is offline   Reply With Quote
Old 07-18-2021, 12:40 PM   #885
NomadMonad
Human being with feelings
 
Join Date: Jun 2021
Posts: 16
Default

Quote:
Originally Posted by JamesPeters View Post
Press the "L" button on your keyboard when the Filther window is open and the font size will increase. You'll have to do it every time you load the plugin or change a preset, unless you make that change to the presets and save them that way.

It's that button because that specific feature was added to help Linux users who complained the font size was too small (me).

ah right, thanks!
NomadMonad is offline   Reply With Quote
Old 07-18-2021, 04:16 PM   #886
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

Quote:
Originally Posted by sai'ke View Post
Did you set a loop? Otherwise it plays only once and only when you jump with the playhead (without loop is only intended for triggered mode).
I can't set a loop because the waveform doesn't even show up. The "texture" slots look like they won't load up. The filename showing is all that happens.

Quote:
Originally Posted by sai'ke View Post
Should be possible. Need to have a look how to fit it into the UI.
Hehe, I had thought of that myself. Admitting he likes the idea, where could the knobs be placed?

Thanks again. Apart from your coding, your social interaction is top notch.
juan_r is offline   Reply With Quote
Old 07-18-2021, 04:39 PM   #887
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by juan_r View Post
I can't set a loop because the waveform doesn't even show up. The "texture" slots look like they won't load up. The filename showing is all that happens.
Hmm, let's try and get this debugged

Just so we're on the same page on what's supposed to happen. Normally, you drag to one of the four slots. This should show the waveform in that slot (it may be hard to see if the wave is quiet, so maybe try with something loud). Then, when you click that slot, you select it as the active one, and then it should show the waveform in the big box on the right, where you can interact with it.

If you don't see any waveform appearing in the small box, then something strange is going on.

First thing to check would be the REAPER version. Which version of REAPER are you on? Is it newer than 6.17 (that's when absolute path reading was introduced)? Absolute path reading is necessary for this plugin to work.

Second thing to exclude would be something funky with the file or directory name (although I kind of doubt it would be a problem). To just try and narrow it down, try and make the directory path and file name as basic as possible (no spaces, no special character names etc).

Ah, it might also be good if I knew which OS you are on.

Quote:
Originally Posted by juan_r View Post
Hehe, I had thought of that myself. Admitting he likes the idea, where could the knobs be placed?
Ghehe, it's a good idea! Somehow I feel they should be differentiated from the ones that act on the sample. Perhaps place them somewhere in the top window with the waveform.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 07-18-2021, 06:33 PM   #888
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

Quote:
Originally Posted by sai'ke View Post
First thing to check would be the REAPER version. Which version of REAPER are you on? Is it newer than 6.17 (that's when absolute path reading was introduced)? Absolute path reading is necessary for this plugin to work.
Got it on the first guess! Updated and it works like a charm!
juan_r is offline   Reply With Quote
Old 07-19-2021, 04:10 PM   #889
tonalstates
Human being with feelings
 
tonalstates's Avatar
 
Join Date: Jun 2020
Posts: 646
Default

Awesome, already seeing a ton of potential in bric-a-brac reaaally nice.

Thank you.

I still have a few resizing issues where text overlaps but it's negligible
one thing though, is there a way to add a menu for the different LFO shapes? Or maybe a RMB + drag up or down to scroll trough as if they were in fixed positions or something (so it wouldn't scroll by really fast) would be better imo

thanks again
tonalstates is online now   Reply With Quote
Old 07-21-2021, 02:22 AM   #890
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Input filters are in. I am still debating whether to hide them by default and add an advanced mode or not. Reason being that it is usually my aim to only initially present users only with sliders that have obvious and immediately audible effects. Decisions decisions.

Next dev hour I will look at changing the RMB behaviour to a little menu. The only thing I don't like about those is that they pause the gfx thread. This is why I am still debating whether that menu should be behind a modifier like Ctrl or alt or be the default. What do you think?
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 07-21-2021, 11:42 AM   #891
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

Hard to make my mind about a mandatory modifier to let the gfx thread run uninterrupted, or a more easily accessed "normal" RMB menu that stops the visualization... I think this is developer struggle material.

As for new suggestions after playing more and more with the already quite usable alpha, I've got a couple:

- Numerical readouts for parameter values, at least when tweaking them


- (edited) Sync for the LFO, could be nice especially for slowish rates (I'm thinking half bar/one bar). Maybe more resolution for the knob on the "slow" side when unsynced. It feels like the transition from still to slow is a bit too abrupt. Not as much resolution is needed on the "quick" side, I think?

EDIT
This is progressing, I see. Numerical readouts implemented! Thanks for the great work and for listening to this user :-) The readout does help confirm visually that we are (or aren't) making significant changes in the value.

I've got another suggestion - in the gfx area, the two thresholds painted in the same color do not make it clear which is which. Besides, it seems that they swap position when dragging one of them to cross over the other.

These suggestions are entering the nitpicking area. Bric-a-brac is now highly usable, and I envision playing one-two pieces at "creative" gigs based on this and other Sai'ke magic. THANK YOU!

EDIT2
An apparently minor, but IMHO important touch: I just love your take on the dry/wet mix, with one side remaining at 100% while the other varies in 0-100. It feels just right: much easier to use than the usual 0-100 crossfader.

Last edited by juan_r; 07-22-2021 at 02:40 PM. Reason: Adding to the post without making a new one (since it's still the most recent)
juan_r is offline   Reply With Quote
Old 07-22-2021, 10:30 AM   #892
tonalstates
Human being with feelings
 
tonalstates's Avatar
 
Join Date: Jun 2020
Posts: 646
Default

Nice! Thank you Sai'ke for implementing those.

I was using it yesterday (with very cool results) and thought of a few things.

1.- Maybe a modifier like alt + LMB or close "x" button to clear the samples from the sample grids instead (or additionally) of selecting the whole sample in the timeline, RMB and cutting it, which at first wasn't obvious to me it was the only way to delete them from the batch.

2.- The Mod and Env Mod could use a few distinct colors between them in the knobs circle visualization thing (forgot the name hehe) to always remember which is which.

3.- I know the Follower mode is supposed to not exceed the volume of the sample but a kind of "volume offset" or "wet volume" for the effect to be lowered or amplified could help since I ran into the issue that I had to kinda blast a sample to actually hear it but well, it hurts working at those volumes haha so yeah ALSO may be a bug, because sometimes it just worked with other samples in another instance at same low levels.

4.- Thank you for the menu, I just noticed my scroll wheel didn't work idkw. (os mojave 10.14 R6.32)

5.- Still a bit of text cramping (my second monitor is 1080) when resizing to be a bit smaller but again, negligible at bigger sizes.

6.- I had like 2 huge spikes in volume (thank you auto-track mute) when making new loop selections like one after the other in different lengths without deleting the last one and bam, it clipped. I could not reproduce it after though but Im pretty shure that's what happened.

Thanks.
tonalstates is online now   Reply With Quote
Old 07-22-2021, 02:44 PM   #893
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

Quote:
Originally Posted by tonalstates View Post
1.- Maybe a modifier like alt + LMB or close "x" button to clear the samples from the sample grids instead (or additionally) of selecting the whole sample in the timeline, RMB and cutting it, which at first wasn't obvious to me it was the only way to delete them from the batch.
Clicking (therefore selecting) the left frame and pressing DEL also works. It's quick!

Quote:
3.- I know the Follower mode is supposed to not exceed the volume of the sample but a kind of "volume offset" or "wet volume" for the effect to be lowered or amplified could help since I ran into the issue that I had to kinda blast a sample to actually hear it but well, it hurts working at those volumes haha so yeah ALSO may be a bug, because sometimes it just worked with other samples in another instance at same low levels.
I have felt the same need, so I have a gain jsfx right after Bric-a-brac. Not quite the same as you say, but workable.
juan_r is offline   Reply With Quote
Old 07-22-2021, 02:46 PM   #894
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by juan_r View Post
Sync for the LFO, could be nice especially for slowish rates (I'm thinking half bar/one bar). Maybe more resolution for the knob on the "slow" side when unsynced. It feels like the transition from still to slow is a bit too abrupt. Not as much resolution is needed on the "quick" side, I think?
This needs a little more thought on my end.

Quote:
Originally Posted by juan_r View Post
This is progressing, I see. Numerical readouts implemented! Thanks for the great work and for listening to this user :-) The readout does help confirm visually that we are (or aren't) making significant changes in the value.
Quote:
I've got another suggestion - in the gfx area, the two thresholds painted in the same color do not make it clear which is which. Besides, it seems that they swap position when dragging one of them to cross over the other.
Ideally, you shouldn't be able to move them past each other (since it doesn't make sense). Did you manage to swap them on the latest? The correct behaviour should be that if you pull the upper threshold past the lower, they both just get pushed down.

Quote:
Originally Posted by tonalstates View Post
Nice! Thank you Sai'ke for implementing those.
1.- Maybe a modifier like alt + LMB or close "x" button to clear the samples from the sample grids instead (or additionally) of selecting the whole sample in the timeline, RMB and cutting it, which at first wasn't obvious to me it was the only way to delete them from the batch.
I could, but just fyi there is one easy way to delete. Click the pad and hit del. That drops the entire sample including the name.

Quote:
Originally Posted by tonalstates View Post
The Mod and Env Mod could use a few distinct colors between them in the knobs circle visualization thing (forgot the name hehe) to always remember which is which.
Yeah, will do. That's also how I had it set up in Yutani.

Quote:
Originally Posted by tonalstates View Post
3.- I know the Follower mode is supposed to not exceed the volume of the sample but a kind of "volume offset" or "wet volume" for the effect to be lowered or amplified could help since I ran into the issue that I had to kinda blast a sample to actually hear it but well, it hurts working at those volumes haha so yeah ALSO may be a bug, because sometimes it just worked with other samples in another instance at same low levels.
There's already a per-sample gain knob. I could just allow gain to go a little bit higher than it does now. Now the max is +6 dB. If I increase that a bit you could just bump it. Alternatively, if it's really a big workflow killer, I could add an overall gain knob, but it'd make the knobs smaller again (with all the text issues that come with that)

Quote:
Originally Posted by tonalstates View Post
4.- Thank you for the menu, I just noticed my scroll wheel didn't work idkw. (os mojave 10.14 R6.32)
I don't know how to fix that (since I also can't reproduce it locally). If there's anyone else on this thread with the same OS, would be good to confirm if you also get this.

Quote:
Originally Posted by tonalstates View Post
5.- Still a bit of text cramping (my second monitor is 1080) when resizing to be a bit smaller but again, negligible at bigger sizes.
Hm. I'll look into this, but it may take a while. Small screens are always a challenge

Quote:
Originally Posted by tonalstates View Post
6.- I had like 2 huge spikes in volume (thank you auto-track mute) when making new loop selections like one after the other in different lengths without deleting the last one and bam, it clipped. I could not reproduce it after though but Im pretty shure that's what happened.
This is a showstopping bug. Thank you for reporting it. Spikes should never happen and I'm sorry they did. I've been trying to reproduce this behaviour, and found three (!) corner cases.
1. When going from a bidi loop to a forward loop, it could go into negative time (and spike). This is fixed.
2. If you pull a loop where you swap the start and end, it'll start churning out spikes. Fixed!
3. If you had an extremely long sample, it could go past the end if you modulated the pitch mid-playback. Also fixed!


Thank you both for the FRs and bug reports. Please continue putting this thing through its paces
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 07-22-2021, 03:48 PM   #895
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

Quote:
Originally Posted by sai'ke View Post
Ideally, you shouldn't be able to move them past each other (since it doesn't make sense). Did you manage to swap them on the latest? The correct behaviour should be that if you pull the upper threshold past the lower, they both just get pushed down.
I think in some circumstances, I am able to move them past each other. Not 100% it is what really happens, but a possibly telling symptom is that the higher threshold can't be moved anymore, either up or down (probably because it's actually the "lower" one that happened to end up there?)

The solution that works for me is moving the other threshold past the unbudging one.

This was the rationale for suggesting different colors for the two thresholds: clear visual feedback, if only for debugging at the present time.
juan_r is offline   Reply With Quote
Old 07-23-2021, 02:54 PM   #896
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by juan_r View Post
I think in some circumstances, I am able to move them past each other. Not 100% it is what really happens, but a possibly telling symptom is that the higher threshold can't be moved anymore, either up or down (probably because it's actually the "lower" one that happened to end up there?)

The solution that works for me is moving the other threshold past the unbudging one.

This was the rationale for suggesting different colors for the two thresholds: clear visual feedback, if only for debugging at the present time.
I actually did notice a bug in the threshold handling, which should be fixed now.

There's a second way to get the thresholds to switch, which is via automation on the timeline. I don't think I'll explicitly disallow that, but it's definitely a "you're on your own" scenario when you do that

But it's a fair point. While in beta, I'll give them different colors. You'll now notice in the next version that their color is a bit different.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 07-28-2021, 11:51 AM   #897
Reflected
Human being with feelings
 
Reflected's Avatar
 
Join Date: Jul 2009
Posts: 3,290
Default

EDIT: amazing reflectotaurus!

Sai'ke,
is it possible to automate the L/R pan?
the pan left/right doesn't work in reverb mode?

Last edited by Reflected; 07-28-2021 at 12:16 PM.
Reflected is online now   Reply With Quote
Old 08-08-2021, 09:20 PM   #898
tonalstates
Human being with feelings
 
tonalstates's Avatar
 
Join Date: Jun 2020
Posts: 646
Default

Quote:
Originally Posted by sai'ke View Post

I could, but just fyi there is one easy way to delete. Click the pad and hit del. That drops the entire sample including the name.
Hi, just tuning in while trying bric-a-brac again, this doesn't seem to work with me on mac, idkw

Everything else is working great, thank you. Also squashman, man, a beauty.
tonalstates is online now   Reply With Quote
Old 09-02-2021, 02:36 PM   #899
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by tonalstates View Post
Hi, just tuning in while trying bric-a-brac again, this doesn't seem to work with me on mac, idkw
That's strange. I have no idea why that could be the case.

Quote:
Originally Posted by Reflected View Post
EDIT: amazing reflectotaurus!

Sai'ke,
is it possible to automate the L/R pan?
the pan left/right doesn't work in reverb mode?
Hmmm... currently, no. Just to investigate your use case, which pan do you want to automate? All the nodes?

Ah, pan may be not implemented yet in reverb mode yes. I'll have a look if that needs fixing on the weekend.

Some of you might've already noticed, there is a small new toy (NOTT, still in beta). It's basically a rework of Ravager, but now including a FIR version of the crossover filters, dry/wet/amount control (which induces the same phase distortion on the dry signal as on the wet one) and some more fine grained attack/decay/ratio/threshold/gain controls.

Changing thresholds (some shortcuts for changing parameters across all bands too, definitely have a look at the tooltips).


Changing ratio (drag area above or below threshold).


Changing attack/decay.


Adding/Removing bands (up to 5).
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 09-11-2021, 07:25 AM   #900
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by Reflected View Post
is it possible to automate the L/R pan?
Added, but consider it beta functionality for now.

Quote:
Originally Posted by Reflected View Post
the pan left/right doesn't work in reverb mode?
Fixed!
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 09-12-2021, 08:24 AM   #901
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Some more quality of life improvements for the various plugins:

Amaranth: Added polyphony support. When playing chords, Amaranth will now play each grain at a randomly selected note from the chord being played. This allows you to play chords. Sample (this is Amaranth with Abyss verb): https://github.com/JoepVanlier/Audio..._poly_test.mp3
4-pole bandsplitter: Added higher quality modes for the FIR filtered mode. Note that in most cases you won't need these unless you're setting the filters to quite low cutoff values. However, for those cases where you do absolutely need the quality, it's there now
Reflectosaurus: Allow automating panning as a parameter now.
Reflectosaurus: Allow panning of reverb nodes.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 09-12-2021, 06:59 PM   #902
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,173
Default

I think the gain on the low band of Not OTT isn't working
Fergler is offline   Reply With Quote
Old 09-13-2021, 01:45 AM   #903
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by Fergler View Post
I think the gain on the low band of Not OTT isn't working
Hmm. It seems to work here?



Where are you controlling the gain? Note that the bars in NOTT refer to thresholds and not the gain.

Could you record me a short GIF so I can reproduce what you're doing?
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 09-14-2021, 01:12 PM   #904
rafa1981
Human being with feelings
 
Join Date: Feb 2008
Posts: 186
Default

You might be interested on this.

Code:
desc:LinearPhaseBandProcessing

slider1:q=1/sqrt(2)<0.001,2.,.001>Q
slider2:f1=800<20,22000,1.>f1
slider3:f2=2128<20,22000,1.>f2

@init

function svf_lp(freq, q, sr) local (k, g)(
  k = 1.0 / q;
  g = tan ($pi * freq / sr);
  this.a1 = 1.0 / (1.0 + g * (g + k));
  this.a2 = g * this.a1;
  this.a3 = g * this.a2;
  this.m0 = 0;
  this.m1 = 0;
  this.m2 = 1;
  
  this.ic1eq = 0;
  this.ic2eq = 0;
);

function svf_hp(freq, q, sr) local (k, g)(
  k = 1.0 / q;
  g = tan ($pi * freq / sr);
  this.a1 = 1.0 / (1.0 + g * (g + k));
  this.a2 = g * this.a1;
  this.a3 = g * this.a2;
  this.m0 = 1;
  this.m1 = -k;
  this.m2 = -1;
  
  this.ic1eq = 0;
  this.ic2eq = 0;
);

function svf_tick(in) local (v1, v2, v3)(
  v3 = in - this.ic2eq;
  v1 = this.a1 * this.ic1eq + this.a2 * v3;
  v2 = this.ic2eq + this.a2 * this.ic1eq + this.a3 * v3;
  this.ic1eq = 2 * v1 - this.ic1eq;
  this.ic2eq = 2 * v2 - this.ic2eq;
  
  this.m0 * in + this.m1 * v1 + this.m2 * v2;
);


@block

hp1.svf_hp(f1, q, srate);
lp1.svf_lp(f2, q, srate);

@sample
b1a = hp1.svf_tick(spl0);
lo = spl0 - b1a;

b1 = lp1.svf_tick(b1a);
hi = b1a - b1;

// spl0 sums linear phase. b1 is butterworth.
spl0=b1 + lo + hi;
spl1=b1;
Basically it goes like this:

-Apply a Butterworth hipass to the input signal and obtain "b1a". This is to separate the lows from the band of interest.

-Get the "lo" band by subtracting "b1a" from the input sample. This "lo" band is wonky, has ripples on the frequency response and isn't butterworth, but it isn't going to be processed, it's just a residue.

-Get the band of interest "b1" by applying a lowpass to "b1a". This band is as if separated from a Butterworth crossover.

-Get the high band by subtracting "b1" from "b1a". Again this band is "wonky".

-Do multiband processing on b1.

-Sum lo + b1 + hi. The result is linear-phase.

-Start processing the next band.

Obviously this type of parallel processing has one drawback which might be bad depending on the application, one of the transition regions is going to leak processed frequencies from the past band into the next band. So some transition regions get double processing. Other than that, is there an obvious drawback that I as a newbie I'm missing?

Another alternative is to separate all bands at once and process bands with "wonkiness" and seemingly wrong crossover points at one of the sides. I guess in some case it might be workable, specially if the lowest band (usually with the most energy) is kept wonkiness-free.

Maybe the Sonnox Inflator is doing something like this to achieve 0 latency linear-phase summing?
rafa1981 is offline   Reply With Quote
Old 09-14-2021, 02:59 PM   #905
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by rafa1981 View Post
You might be interested on this.
Maybe the Sonnox Inflator is doing something like this to achieve 0 latency linear-phase summing?
That's a nice trick indeed!

It sums back to zero by construction, but the moment you adjust any of the bands you will induce phase distortions, no? That wouldn't happen with a linear phase FIR setup. Though it is really a nice benefit of this construction that you don't when making no adjustments while maintaining no latency.

I do wonder if this is indeed similar to what they did in the Sonnox.

Next time I'll have some time, I'll play around with this setup a bit. Thanks for the heads up
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 09-14-2021, 10:38 PM   #906
rafa1981
Human being with feelings
 
Join Date: Feb 2008
Posts: 186
Default

I have been using it on a waveshaper-saturation with envelope follower that I'm doing and it didn't sound that bad. In this case I'm using a wonky band.

Another interesting point is that the crossovers don't need to be Linkwitz-Riley (or Butterworth). So 6dB/Octave bands are possible. In my case I offer selectable slope for each band.

I tried to adjust the Q to make both the residue and the band to cross at -3dB, but the Q is too low and I have no theoretical filter knowledge, so I desisted.

On mobile, but if my memory serves me well the 1-pole version is still perfect-butterworth.

EDIT:

But yes the thing as a whole is fragile. E.g. a simple gain bump in one band causes a ripple on the opposite direction on the neighboring band. At high orders is totally insane. For creative FX types it can have its place. On chorus, phaser, flangers, reverbs it might be acceptable.

One interesting property is that the 6dB/Octave (1-pole) version doesn't suffer severe issues (at least from a practical point of view, I don't know the math) and 6dB/Octave is not doable as a Linkwitz-Riley crossover AFAIK.

Last edited by rafa1981; 09-15-2021 at 02:44 AM.
rafa1981 is offline   Reply With Quote
Old 09-26-2021, 03:00 PM   #907
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

I didn't have much free time to play around with Bric-a-brac lately, but I'm having lots of fun with it today. Thanks Saike!

I gave a spin to Amaranth too, but I can't figure how to use it. Can anyone suggest interesting use cases for live settings (or studio, for that matter)? Is it intended to be played as a synth?

One small glitch I found with Amaranth is that the "Last key pressed" doesn't respond as usual with other synths. Here's what I mean.

Action: Resulting Last Note for Amaranth
Press C4: C4
Leave C4 depressed and press D4: D4
Release C4: C4

The last line seems like a glitch to me: I think the resulting last note should be D4, more so since the C4 has been released.

After this brief encounter with my new friend Amaranth, I quickly went back to Bric-a-brac to keep the fun factor going :-)
juan_r is offline   Reply With Quote
Old 09-26-2021, 03:25 PM   #908
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by juan_r View Post
I didn't have much free time to play around with Bric-a-brac lately, but I'm having lots of fun with it today. Thanks Saike!


Quote:
Originally Posted by juan_r View Post
I gave a spin to Amaranth too, but I can't figure how to use it. Can anyone suggest interesting use cases for live settings (or studio, for that matter)? Is it intended to be played as a synth?
Yeah, mostly like a synth. You can can record some audio into it. It's meant for pad-style sounds. The clip I made earlier is using it with a small vocal sample btw:
https://github.com/JoepVanlier/Audio..._poly_test.mp3

It pairs well with reverb.

Quote:
Originally Posted by juan_r View Post
One small glitch I found with Amaranth is that the "Last key pressed" doesn't respond as usual with other synths. Here's what I mean.

Action: Resulting Last Note for Amaranth
Press C4: C4
Leave C4 depressed and press D4: D4
Release C4: C4

The last line seems like a glitch to me: I think the resulting last note should be D4, more so since the C4 has been released.
Correct. Thanks for letting me now. It's fixed now (0.24).

Quote:
After this brief encounter with my new friend Amaranth, I quickly went back to Bric-a-brac to keep the fun factor going :-)
Have any bric-a-brac works online?
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 09-26-2021, 11:08 PM   #909
juan_r
Human being with feelings
 
juan_r's Avatar
 
Join Date: Oct 2019
Posts: 1,066
Default

Quote:
Originally Posted by sai'ke View Post
Have any bric-a-brac works online?
I'm mostly playing it live with various sources, so I never actually recorded with it, much less uploaded any work. Sorry I'm not providing any interesting sound examples... but if I do, I'll be sure to post a note in this thread!
juan_r is offline   Reply With Quote
Old 09-27-2021, 12:41 PM   #910
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by juan_r View Post
I'm mostly playing it live with various sources, so I never actually recorded with it, much less uploaded any work. Sorry I'm not providing any interesting sound examples... but if I do, I'll be sure to post a note in this thread!
All good man, no worries
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 10-01-2021, 10:42 AM   #911
rafa1981
Human being with feelings
 
Join Date: Feb 2008
Posts: 186
Default

The paper linked by martinvicanek on this thread seems super interesting to achieve linear-phase crossovers at lower latency than a FIR with reverse truncated IIR's.

Unfortunately it is out of my league.

https://www.kvraudio.com/forum/viewt...?f=33&t=571223

EDIT: I guess that the latency can't be lower than a FIR of the same spec, this is impossible, but lower than a block based forwards-backwards scheme. So maybe the main benefit is easier coefficient recalculation.

Last edited by rafa1981; 10-01-2021 at 10:50 PM.
rafa1981 is offline   Reply With Quote
Old 10-02-2021, 01:19 AM   #912
flechtwerk
Human being with feelings
 
Join Date: Oct 2020
Posts: 42
Default

Quote:
Originally Posted by sai'ke View Post
Never odd or even, inspired by the former, this plugin allows you to selectively add either odd or even harmonics. It's mechanism of action is pretty simple. It works by first saturating with a tanh (producing odd harmonics), then pushing that through an even polynomial (producing even harmonics, but in a range limited way since the tanh kept the signal between -1 and 1). I subtract the fundamental (corrected for gain transformation by the tanh) out of the odd set again and add it back. This allows you to add even and odd harmonics independently.

Neither contain oversampling at this point, but I may add this in a future update if someone feels a need for it.
First of all - thanks for all your wonderful work, sai'ke!
I just stumbled over the little "Never odd or even" jsfx, it sounds very good and is highly useful. I for my part would be very grateful for an oversampling option
flechtwerk is offline   Reply With Quote
Old 10-03-2021, 02:54 AM   #913
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,030
Default

flechtwerk, how are you using it? Are you designing your guitar sound with it? Or what exactly? Any practical examples?
TonE is offline   Reply With Quote
Old 10-03-2021, 05:11 AM   #914
JonLinnarson
Human being with feelings
 
JonLinnarson's Avatar
 
Join Date: Jul 2020
Posts: 717
Default

@Saike

When I click the Filter DC option in Not OTT, everything becomes mono. Is it supposed do to this?
JonLinnarson is offline   Reply With Quote
Old 10-03-2021, 06:36 AM   #915
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,448
Default

Quote:
Originally Posted by rafa1981 View Post
The paper linked by martinvicanek on this thread seems super interesting to achieve linear-phase crossovers at lower latency than a FIR with reverse truncated IIR's.

Unfortunately it is out of my league.

https://www.kvraudio.com/forum/viewt...?f=33&t=571223

EDIT: I guess that the latency can't be lower than a FIR of the same spec, this is impossible, but lower than a block based forwards-backwards scheme. So maybe the main benefit is easier coefficient recalculation.
Oh man, that's a neat trick! I'm a little burned out this weekend, but I've definitely put it on my reading stack. At a first glance it sounds similar to the forwards backwards filtering that's often done, but then truncated and restructured so that it can be done much more efficiently. Looks like you could get away with a lot less computation than a corresponding FIR filter? I should play around a bit with this in Python to get a feel for it. Maybe next weekend

It might be a nice middle ground to offer between IIR and block-based FIR.

Quote:
Originally Posted by flechtwerk View Post
First of all - thanks for all your wonderful work, sai'ke!
I just stumbled over the little "Never odd or even" jsfx, it sounds very good and is highly useful. I for my part would be very grateful for an oversampling option
I just added a few oversampling options.
I also added the same approximate AGC I added to Squashman. It is intended to be used by enabling it on part of the track and then setting it to fixed once it is settled. Hopefully it'll make it easier to dial in the tone while not being as biased by the loudness

Quote:
Originally Posted by JonLinnarson View Post
@Saike
When I click the Filter DC option in Not OTT, everything becomes mono. Is it supposed do to this?
Thanks for reporting this. There was indeed a bug there that resulted in a mono dry signal when DC was enabled. Should be fixed now (update to 0.12).

I also noticed that even in the FIR mode, the DC correction induced some phase distortion. Now I have folded the DC correction into the FIR when the plugin is run in FIR mode. I have also added higher quality FIR modes.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 10-03-2021, 08:56 AM   #916
rafa1981
Human being with feelings
 
Join Date: Feb 2008
Posts: 186
Default

Quote:
Originally Posted by sai'ke View Post
Oh man, that's a neat trick! I'm a little burned out this weekend, but I've definitely put it on my reading stack. At a first glance it sounds similar to the forwards backwards filtering that's often done, but then truncated and restructured so that it can be done much more efficiently. Looks like you could get away with a lot less computation than a corresponding FIR filter? I should play around a bit with this in Python to get a feel for it. Maybe next weekend

It might be a nice middle ground to offer between IIR and block-based FIR.
For what I gathered I see it like this:

-Less latency than windowed forward-backwards, as it doesn't have to buffer blocks. Equivalent to a FIR of the same spec at powers of two boundaries.
-Less memory requirements: no coefficients/impulse to store.
-Much easier coefficient recompitation
Modulation is possible.
-Recursive: dramatically less operations but less parallelizable.

An obvious application, other than the crossover is linear phase HP-LP butterworths. Definitely nice to have on an EQ.

In my case I want to add a LP crossover to MixMaxtrix, so I will have to read a digital filters 101 course/book, I have been kicking the can down the road for too long.

I could go the FIR route today but as my crossovers allow offsetting the left and right cutoff not having to store 2 different sets of coefficients is a win big enough
rafa1981 is offline   Reply With Quote
Old 10-08-2021, 01:47 PM   #917
JonLinnarson
Human being with feelings
 
JonLinnarson's Avatar
 
Join Date: Jul 2020
Posts: 717
Default

When Wavesfactory released their Quantum plug-in a couple of weeks ago, I had the idea to try and recreate the same effect inside of Reaper with JSFX. I've been using Boz Digital Transgressor 1 & 2 for a few years actually, but didn't think of it until now.

I just made the track 4 channels, added two instances of ReaGate on the track (with one set to "Invert gate") and then added a Channel Mapper-Downmixer afterwards to mix them together again. To add FX to the independent signals you just have to add for example a compressor after the "Attack" gate instance and if you want to add a EQ for the sustain, you just add it after the "Sustain" gate instance. Here's a link to my FX-chain: https://stash.reaper.fm/v/43063/Tran...chain.RfxChain

Very useful trick for mixing drums!

I thought it could maybe be something you would be interested in creating a dedicated JS for. I would have done it myself, but I couldn't even write a "Hello world" script if my life depended on it

Last edited by JonLinnarson; 10-20-2021 at 02:03 PM.
JonLinnarson is offline   Reply With Quote
Old 10-15-2021, 10:48 AM   #918
flechtwerk
Human being with feelings
 
Join Date: Oct 2020
Posts: 42
Default

Quote:
Originally Posted by TonE View Post
flechtwerk, how are you using it? Are you designing your guitar sound with it? Or what exactly? Any practical examples?
Sorry for the late reply, I didn't see your post -
I find it very useful for very specifically placed saturation, e.g. when wanting to add some even harmonics to a bass (getting a "tubey" sound). Or just adding a little bit of odd harmonics for a transistor style analog track colouring. The whole thing reminds me a lot of that new highly praised Gsat+ Plugin by TBPro Audio, just missing the wonderful fluctuation nob
flechtwerk is offline   Reply With Quote
Old 10-15-2021, 10:53 AM   #919
flechtwerk
Human being with feelings
 
Join Date: Oct 2020
Posts: 42
Default

Quote:
Originally Posted by sai'ke View Post
I just added a few oversampling options.
I also added the same approximate AGC I added to Squashman. It is intended to be used by enabling it on part of the track and then setting it to fixed once it is settled. Hopefully it'll make it easier to dial in the tone while not being as biased by the loudness
Thanks for the additions, they are highly appreciated!
(The oversampling seems to be done using a higher placed LPF than in Filther, is that correct?)

I'm increasingly in awe of all of your jsfx, currently exploring that amazing Filther. Again, thank you for your generous work!
flechtwerk is offline   Reply With Quote
Old 10-24-2021, 07:26 PM   #920
Akashic Bird
Human being with feelings
 
Akashic Bird's Avatar
 
Join Date: Jun 2021
Posts: 31
Default

Dear Sai'ke,

May I suggest a few things for the excellent Never odd or even?

- How about a low/high pass filter? (low being more important I think)
- Is something like a low-high (maybe mid) pre/post-eq (ideally, one you can switch from pre to post, like the free SGA1566 plugin) possible?
- I think an input and output gain could be nice (but maybe I'm doing things wrong as a beginner).

Also, I really want to give you money as soon as I can for of your work on these great plugins, not sure if this has been asked already but do you have a Paypal, Patreon or something?
Akashic Bird is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 02:44 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.