Old 01-10-2018, 08:04 AM   #1
MacFizz
Human being with feelings
 
MacFizz's Avatar
 
Join Date: Nov 2010
Location: Colmar, France
Posts: 401
Default Need help on an heavy one

Hello
As I was trying to make a point here https://forum.cockos.com/showthread.php?t=199827
I've put together a JSFX that includes plugins from various sources and a GUI to bind them all.
The whole thing looks OK and is easy to use
[url=https://flic.kr/p/228WsWN]

But it seems that on some systems, crackling noises appears but I couldn't find the source of it as each module seems to work properly.
I also tested the plugin without any graphics but the result was the same.
If anyone has any clue that might help:
https://stash.reaper.fm/32490/Reaper...ip-MacFizz.zip

Please note: I don't know what I'm doing so the code lacks clarity and comments...

Last edited by MacFizz; 01-11-2018 at 06:18 AM.
MacFizz is offline   Reply With Quote
Old 01-10-2018, 03:37 PM   #2
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,784
Default

IMHO, a "channel strip" (visual plugin container) should not deal with audio at all, but just create a GUI that manages the plugins that are placed in the FX chain of a track in the normal way.

By that audio glitches are not possible to be introduced.

In fact I don't know how the other "channel strips" hat have been discussed here, work.

-Michael
mschnell is offline   Reply With Quote
Old 01-11-2018, 01:46 AM   #3
MacFizz
Human being with feelings
 
MacFizz's Avatar
 
Join Date: Nov 2010
Location: Colmar, France
Posts: 401
Default

Well, that's what I've done here, the dsps i themselves haven't been changed from there respective source.
I suspect some kind of limitations on JS's end when dealing with multiple chained dsp.
MacFizz is offline   Reply With Quote
Old 01-11-2018, 05:45 AM   #4
MacFizz
Human being with feelings
 
MacFizz's Avatar
 
Join Date: Nov 2010
Location: Colmar, France
Posts: 401
Default

OK, link's fixed.

Details of the problem:
I can reproduce the problem by creating a new project, insert a new media (any mp3 works). Add the plugin to the channel and start playing.
Then, activate modules. At some point, cracklings can heard. Those are similar to those you can have when you're latency is to low for a heavy project.

I have hard time figuring what part is causing the problem and I haven't been able to determine if the plug in is getting to "heavy" in some ways.
With all modules activated (and eq gain!=0), I get something around 3% cpu usage. However, that doesn't seem to include gfx. And gfx shouldn't be that intensive anyways.
MacFizz is offline   Reply With Quote
Old 01-11-2018, 02:29 PM   #5
MacFizz
Human being with feelings
 
MacFizz's Avatar
 
Join Date: Nov 2010
Location: Colmar, France
Posts: 401
Default

Quote:
Originally Posted by Veto View Post
Also some controls (like compressor Post gain) need "Parameter smoothing". Have a look at /utility/volume_pan for a possible implementation.
I fail to understand what it is and what it does (and why some controls would need it).
MacFizz is offline   Reply With Quote
Old 01-15-2018, 01:48 AM   #6
MacFizz
Human being with feelings
 
MacFizz's Avatar
 
Join Date: Nov 2010
Location: Colmar, France
Posts: 401
Default

Quote:
Originally Posted by Veto View Post
Because of the zipper noise when turning them.
It's maybe the least of your problems but it is more audible on faster movements.

Usually it's caused by sudden parameter jumps, kind of like a 0ms fade-in (I'm sure a search on "zipper noise dsp" or "parameter smoothing dsp" yields a much better explanation) and a simple approach to get rid of it, is to delay the parameter change a tiny bit and linear interpolate between current and next value (kind of like a linear fade-in) like done in the JSFX /utility/volume_pan.

To fix compressor Post Gain add this to Reaper_Contest-ChannelStrip
PHP Code:
@block
dVol 
= (vol-oldVol)/samplesblock;
tvol oldVol;
oldVol vol
and change line 305-306 in macfizz-toolbox.jsfx-inc to
PHP Code:
tvol += dVol;
this.out0 inL gain*tvol;
this.out1 inR gain*tvol
Now I get it. Thx for the tip.

I'll implement it as sonn as I'll have the noises fixed.
On that front, I might a some clues.
Many parts in the code where done copying and pasting without truly understanding what was doing what when.
So, now, the @sample section contains things that belong in the @slider section.
I'll do a full cleanup, I'll the, have a better view of what's going on in there.
MacFizz 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 09:35 PM.


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