Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright

Waveshaper

Post any examples or modules that you want to share here

Waveshaper

Postby TheOm » Tue Jul 01, 2014 2:36 pm

Hello,
I would like to share my first plugin with you.
It's a Waveshaper with User-definable transfer function.
I'm using the Ruby eval function to build a lookup table of the user's function which is then read with linear interpolation.
The User can also define the size of the lookup table (i.e. the Quality).
Choose between Unipolar-Mode, where your function is applied to the absolute value of the input and then multiplied with the sign of the input (symmetrical distortion)
and Bipolar-Mode, where you can do different things to positive and negative values (asymmetrical)
The ternary operator is useful for that:
x>0 ? x : 0
is the same as:
if x>0
x
else
0

Values above 1 and below -1 are hardclipped.
You can use three knobs a, b and c (with user-definable min/max values) to quickly alter parameters of your function (these are not automatable though).

I have also included optional DC-offset removal and 4xOversampling.

Special values you can use in formulas: pi, e, res(Current Resolution)

Functions you can use in formulas:
normal operators: +, -, *, /, ^

http://www.ruby-doc.org/core-1.9.3/Math.html <= all of those
Useful ones are: tanh(x); atan(x); log10(x); log2(x); sin(x); cos(x); sqrt(x); acosh(x); cbrt(x)

sin1(x) =sin(2*pi*x)
cos1(x) =cos(2*pi*x)
floor(x)
round(x)
ceil(x)
abs(x)
sgn(x) =sign(x)
clip(x, min=-1, max=1)

I will post some example formulas later

Feedback and suggestions are very appreciated.

EDIT2: Version 1.0.2
Attachments
ExpShaper02.fsm
(46.8 KiB) Downloaded 1424 times
Last edited by TheOm on Wed Jul 02, 2014 6:35 pm, edited 3 times in total.
TheOm
 
Posts: 103
Joined: Tue Jan 28, 2014 7:35 pm
Location: Germany

Re: Waveshaper

Postby CoreStylerz » Tue Jul 01, 2014 5:17 pm

it's really amazing. ;)
Need my support for app development, website or custom scripts?
PM me if you are interested.
Experienced Java, J2EE, PHP, Javascript, Angular, Cloud Solutions developer.
User avatar
CoreStylerz
 
Posts: 327
Joined: Sun Jan 22, 2012 2:19 am
Location: italy

Re: Waveshaper

Postby Exo » Tue Jul 01, 2014 5:58 pm

Thanks for sharing. I will take a look when I'm back at my PC.

I made a wave shaper once, had a graphical envelope with 4 times oversampling called X wave. So I will be looking at your techniques with interest.
Flowstone Guru. Blog and download site for Flowstone.
Best VST Plugins. Initial Audio.
Exo
 
Posts: 426
Joined: Wed Aug 04, 2010 8:58 pm
Location: UK

Re: Waveshaper

Postby trogluddite » Tue Jul 01, 2014 7:32 pm

Welcome to the forum, TheOm! :)
What a great first download - the 'user variables' are an excellent idea, really makes twiddling with the equation easy. Not had a chance to sling my bass through it yet, but I'm betting the big lookup table and oversampling will allow some nice smooth "atan" type saturation.

Suggestions? Nothing much springs to mind - you could maybe "include" the Math module (or "self.extend(Math)") rather than redefine the methods - but that's just hacker nit-picking, and it won't make it sound any better! ;)

Good to have you join the party - looking forward to whatever other goodies you're cooking up.
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
User avatar
trogluddite
 
Posts: 1730
Joined: Fri Oct 22, 2010 12:46 am
Location: Yorkshire, UK

Re: Waveshaper

Postby Tronic » Wed Jul 02, 2014 9:31 am

Missing in your schematic, the module SSE Floor and the module Stream ABS, into is empty.
Tronic
 
Posts: 539
Joined: Wed Dec 21, 2011 12:59 pm

Re: Waveshaper

Postby TheOm » Wed Jul 02, 2014 2:09 pm

Thanks everyone.
trogluddite wrote:the 'user variables' are an excellent idea, really makes twiddling with the equation easy

Well, to be honest, I did not come up with it myself.
The whole plugin is baiscly just a "Hey, I can do this too"-kinda thing. ;)
trogluddite wrote: you could maybe "include" the Math module (or "self.extend(Math)") rather than redefine the methods

Yes, thank you, I changed it now.
Tronic wrote:Missing in your schematic, the module SSE Floor and the module Stream ABS, into is empty.

I think it was a Flowstone bug, it's fixed now.
TheOm
 
Posts: 103
Joined: Tue Jan 28, 2014 7:35 pm
Location: Germany


Return to User Examples

Who is online

Users browsing this forum: Google [Bot] and 46 guests