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

Irregular Sine Waves

For general discussion related FlowStone

Re: Irregular Sine Waves

Postby tulamide » Tue Nov 03, 2015 9:47 am

martinvicanek wrote:Tulamide, why do you insist that the wave be convex in the upper half and concave in the lower? KG is right, such a requirement leaves very little headroom for modulation if you want the wave to have continuous slope at the joints. It feels unnatural to me, I don't see the rationale behind it.

I just insist that the curve should be sinusoidal at all times. A sine wave is convex at all times. Here's what happens, when you squeeze a sine (see .fsm). You can clearly see it stays convex, no matter how much you push.

I just got another answer from the other forum, which is using polynomials and a gauss function. It is visual and behaves correctly inbetween a certain limit. I have to convert it first for you to be able to see it, but it really seems cubic is the correct way to go. And that probably isn't doable at samplerate :(
Attachments
sine_stretching.fsm
(6.78 KiB) Downloaded 826 times
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Irregular Sine Waves

Postby KG_is_back » Tue Nov 03, 2015 11:32 am

You are missing the point... We are not merely sqeezing (half)sines - we also want them to seamlessly joint.

I think I know about a reasonable compromise. the second half of the sine is convex and first half is concave. Perhaps if we start to drop the crurvature just after it crosses zero (instead of before) to reach correct curvature... with the FM this can be done by phase-shifting the modulation signal forward a little. With my approach of distorting the ramp, I have no idea...
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: Irregular Sine Waves

Postby martinvicanek » Tue Nov 03, 2015 12:38 pm

The ramp IS the phase. Distorting the ramp IS phase modulation. ;)
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Re: Irregular Sine Waves

Postby tulamide » Tue Nov 03, 2015 2:15 pm

Maybe we just talked past another?

sinusoidal.png
sinusoidal.png (18.36 KiB) Viewed 15755 times

The lines enclosed in red are not sinusoidal waves (they are the "opposite", so to speak), the ones in green are.

Here is an example of a fully sinusoidal wave that is continuous on either side and in the center:
sine-1.png
sine-1.png (1.9 KiB) Viewed 15755 times


Also, I converted the project from the second answer for you to see. It is an online interactive page. Just click the link, wait for the start screen to vanish and then move the slider to see the changes. Note that it is fully sinusoidal AND continuous. Link: https://db.tt/ILkzu55c

I've attached the math used to do this. It is a text file of javascript code. The function "calc_coefs" is called with m (the mid point's relative x position) on every change of the slider to get the 10(!) unknowns to solve the equation of
Code: Select all
if x < m
    y = (a0*x^4+b0*x^3+c0*x^2+d0*x+e0)
else
    y = (a1*x^4+b1*x^3+c1*x^2+d1*x+e1)
Attachments
(irregular sine)js.rar
contains a .txt file. This ending is not allowed to be attached, therefore an archive.
(932 Bytes) Downloaded 948 times
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Irregular Sine Waves

Postby Xtinct » Tue Nov 03, 2015 3:55 pm

To get the same shape sine as in the link simply PM/FM the sine with a second sine offset by 90 degrees
you will not be able to get full PW mod before it distorts but you will get as much as is displayed in the link.

Edit added example
Sine PM PW.fsm
(21.09 KiB) Downloaded 880 times
Xtinct
 
Posts: 106
Joined: Fri Feb 11, 2011 12:06 am

Re: Irregular Sine Waves

Postby BobF » Tue Nov 03, 2015 8:23 pm

BobsDoubleIntegratedSaw.fsm
(327.86 KiB) Downloaded 844 times

Hello gang,

Just another way to get close to this "Irregular Sine Wave"

Kind of fun, lots of different ways here! Also tried integrating a pulse wave but it had to much dc offset.

P.S., does anyone have a GOOD dc blocker?

Later then, BobF.....
BobF
 
Posts: 598
Joined: Mon Apr 20, 2015 9:54 pm

Re: Irregular Sine Waves

Postby martinvicanek » Tue Nov 03, 2015 8:59 pm

[...] does anyone have a GOOD dc blocker?
A simple 1 pole highpass with cutoff = 20 Hz should do the job. FS Guru is your friend. ;)
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Re: Irregular Sine Waves

Postby tulamide » Tue Nov 03, 2015 9:39 pm

Guys I love your examples. They all show the creativity we all have.

@xtinct
It is awesome to see with how little effort this behaviour at least can be achieved.

@all
Maybe I seem like a child that is stubborn just because. But I assure you I'm not. It is rather that I see how close we are. I see Martin's awesome algorithmic oscillators. They consist of just one ASM code module. You input frequency and phase and it spits out a stable waveform, whose cycle is constant in length for a given freq.

I so hoped that this irregular thing could also end like this, just an ASM module with a freq input and some kind of phase input, only that it not just moves the start point of the cycle around, but instead moves the mid-point.

And I know it can be done. I know it because I already have done it. Just not for audio. I can shape curves to look exactly like the audio signals should be. And I don't use magic - it is just plain cubic interpolation. Those of you who are reading here and are not quite sure what I mean, look at the images:

Image
Here you see two points connected by a line. But that line doesn't exist. It is completely estimated by cubic interpolation. The only known values are the two points, and then math calculates how to connect them. Such a thing like the above can also be done with linear interpolation (aka lerp).

Image
Here you see a third point. This one is used indirectly. It means that the calculation tries to connect the two outer points, but while doing so tends towards the third point. Something like this can also be achieved with quadratic interpolation (aka qarp)

Image
Now there are two additional points. But you already know the game. The math tries to connect the outer points, but tends towards the two other points while doing so. This is cubic interpolation (aka cubic). The additional points are so called control points. They only influence the line, but they are not connected to it. Each end point has one control point.

For the irregular wave we use 3 instead of two points, the line has to connect. That makes a total of two cubic lines generated from 3 base points and 4 control points. For example:

Image

Now you may think, this is all so complicated. But it isn't. I talked about lerp earlier. If you lerp two lerps, the result is a qarp.

The equation for a lerp is
Code: Select all
pos = a*(1-t) + b*t
# with a and b the start and end points and t the t-value (in case of audio either the time or sample pos)
# if t = 0 then pos = a and if t = 1 then pos = b and if 1 > t > 0 then somewhere between a and b


so lerping two lerps is
Code: Select all
pos1 = a*(1-t) + b*t
pos2 = b*(1-t) + c*t
q = pos1*(1-t) + pos2*t
# with a and c being the end points and b the control point

We made qarp.

And yes, it is just as easy to get to cubic. cubic is just lerping two qarps
Code: Select all
pos1 = a*(1-t) + b*t
pos2 = b*(1-t) + c*t
pos3 = b*(1-t) + c*t
pos4 = c*(1-t) + d*t

q1 = pos1*(1-t) + pos2*t
q2 = pos3*(1-t) + pos4*t

cubic = q1*(1-t) + q2*t
# with a and d being the end points and b and c the control points


If you do this for enough t-values you get a line a curve, etc. Since this math is so simple (no exponents, no roots, just multiplication and addition/subtraction), I am absolutely sure it can be done in DSP/ASM.

Maybe we should forget about the word "sine" and call it a spline oscillator instead. We would have created something completely new, that is sonically rich and useful, plus works in realtime, without any wavetables. That makes it very versatile and modulator-friendly.

Is it really just a dream?
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Irregular Sine Waves

Postby Xtinct » Wed Nov 04, 2015 1:23 am

Wow forget about sine, just when I'd come up with a new version, oh well here it is anyway.
Sine PM PW2.fsm
(21.68 KiB) Downloaded 844 times
Xtinct
 
Posts: 106
Joined: Fri Feb 11, 2011 12:06 am

Re: Irregular Sine Waves

Postby tulamide » Wed Nov 04, 2015 10:12 am

Xtinct wrote:Wow forget about sine, just when I'd come up with a new version, oh well here it is anyway.
Sine PM PW2.fsm

Haha, don't worry! There's a difference between "forget about sine" and "forget about the word sine", so keep it coming!

This last version seems to work differently by shaping the sine to the right? Looking at the ASM-code doesn't help me as you might have guessed already, but whatever you cook there - don't stop!
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

PreviousNext

Return to General

Who is online

Users browsing this forum: No registered users and 57 guests