UPDATED - A little help pls

Discussion forum for G-Force users

Moderators: BTT, andy55, b.dwall, juxtiphi

jerohm
Senior Member
Posts: 419
Joined: Fri Jan 09, 2009 5:19 pm

just for shits and giggles...

Post by jerohm »

I was bored and re-wrote ShohS's "noname4" (AKA Kana Kone) in a VectorC form. IT IS IN NO WAY to imply ShohS's version isn't every bit as good... maybe even better, and SHOULD result in identical output.
It was ONLY an exercise in intellectual curiosity; for those stricken with such afflictions, it might prove useful...

Nice work ShohS! :D

Code: Select all

// noname4 By ShohS

Aspc=1 
stps="4000" 
Num="2 + round(rnd(4))" 

A0="2 * pi" 
A1=".3" 
A2="num*2" 

A3="{ sin( s * 6.28318530/A2)
    , cos( s * 6.28318530/A2)
    }"

//  A4="{ sin(-s * 6.28318530/A2 + A2 * pi)
//      , cos(-s * 6.28318530/A2 + A2 * pi)
//      }"                                             // Original Code

A4="{ sin(-s * 6.28318530/A2 )
    , cos(-s * 6.28318530/A2 )
    }"                                                 // Equivalent Code (JRM)

A5="{ sgn(cos(s*120/A2*pi))
    ,-sgn(cos(s*120/A2*pi))
    }"

B0="fft(s/num) * .3"
B1="A5 * B0 + .6" 

B2="A3 * row(B1, 0)"      // It is IMPORTANT to understand that A3 * B1 couldn't be used here
B3="A3 * row(B1, 1)" 
B4="A4 * row(B1, 0)" 
B5="A4 * row(B1, 1)" 

// A6="A0 * ( 1 + (vectorLR(NUM, 0, NUM-1) / NUM))"    // Original Code
A6="A0 * (vectorLR(NUM, 0, NUM-1) / NUM)"              // Equivalent Code (JRM)
B6="t * A1 + col(A6, ID)" 

X0="row(B2, 0) * cos( B6 ) + row(B2, 1) * sin( B6 )" 
Y0="row(B2, 0) * sin( B6 ) - row(B2, 1) * cos( B6 )" 

X1="row(B3, 0) * cos( B6 ) + row(B3, 1) * sin( B6 )" 
Y1="row(B3, 0) * sin( B6 ) - row(B3, 1) * cos( B6 )" 

X2="row(B4, 0) * cos( B6 ) + row(B4, 1) * sin( B6 )" 
Y2="row(B4, 0) * sin( B6 ) - row(B4, 1) * cos( B6 )" 

X3="row(B5, 0) * cos( B6 ) + row(B5, 1) * sin( B6 )" 
Y3="row(B5, 0) * sin( B6 ) - row(B5, 1) * cos( B6 )" 

ConB=1 
LWdt="1.5 + energy" 
Pen="1" 

Vers=540
 
I may have leaped, before I looked... I think everything was correct & in sync
:oops:
Last edited by jerohm on Mon Sep 03, 2018 3:21 am, edited 6 times in total.

User avatar
BTT
Administrator
Posts: 2162
Joined: Sun Jun 20, 2010 9:34 pm
Location: United Kingdom

Post by BTT »

Hello All

Just so you can see the difference between the Shohs original and Jerhom's version.

Code: Select all


// Kana Kone - WaveShape - Author ShohS

Aspc=1
stps="4000"
Num="2 + round(rnd(4))"

A0="2 * pi"

B0=".3"
B1="t * B0 + A0 + 2 * pi * ID / NUM"
B2="num*2"

C0="0.5 + .1 + sgn(cos(s*120/B2*pi)) * fft(s/num) * .3"
C1="0.5 + .1 + sgn(cos(s*120/B2*pi)) * fft(s/num) * -.3"
C2="s * 6.28318530/B2"
C3="-s * 6.28318530/B2 + B2 * pi"
C4="C0 * sin(C2)"
C5="C0 * cos(C2)"
C6="C1 * sin(C2)"
C7="C1 * cos(C2)"
C8="C0 * sin(C3)"
C9="C0 * cos(C3)"
C10="C1 * sin(C3)"
C11="C1 * cos(C3)"

X0="C4 * cos( B1 ) + C5 * sin( B1 )"
Y0="C4 * sin( B1 ) - C5 * cos( B1 )"
X1="C6 * cos( B1 ) + C7 * sin( B1 )"
Y1="C6 * sin( B1 ) - C7 * cos( B1 )"
X2="C8 * cos( B1 ) + C9 * sin( B1 )"
Y2="C8 * sin( B1 ) - C9 * cos( B1 )"
X3="C10 * cos( B1 ) + C11 * sin( B1 )"
Y3="C10 * sin( B1 ) - C11 * cos( B1 )"

ConB=1
LWdt="1.5 + energy"
Pen="1"

Vers=540 
.
Regards BTT

ColorMap Creator for G-Force and Aeon --- SoundSpectrum Forum Administrator.

User avatar
DanPin
Posts: 161
Joined: Tue Mar 15, 2016 8:43 pm
Location: Los Angeles County, California

Post by DanPin »

JRM, thanks for the rewrite, but the waveshape is rotating a bit too fast. I tried decreasing the value from .3 to .03 in A1, but this ends up with the same result. Can you identify which value is set for 't'?

jerohm
Senior Member
Posts: 419
Joined: Fri Jan 09, 2009 5:19 pm

Post by jerohm »

On the version I posted, spin timing is set using A1 and used in B6

Code: Select all

A1=".3" 
 .
 .
 .
A6="A0 * ( 1 + (vectorLR(NUM, 0, NUM-1) / NUM))" 
B6="t * A1 + col(A6, ID)" 
Since .3 is a CONSTANT, I used an 'Avar'
I also calculated the other part of ShohS's equation ONCE (A6) for each thread, and reference the CORESPONDING CONSTANT values' array(col) position by ID
My code may look less straight forward, but should have a more efficient run time; I have a sick mind :wink:

In ShohS's original version:

Code: Select all

B0=".3" 
B1="t * B0 + A0 + 2 * pi * ID / NUM"

jerohm
Senior Member
Posts: 419
Joined: Fri Jan 09, 2009 5:19 pm

Post by jerohm »

If you have played along so far, you can use the fact that:

Code: Select all

-sin(-x) == sin(x)
 cos(-x) == cos(x)
and reduce things even further.

If you think, "Hey!, you should also be able to reduce A5!!!" Think again (hint: B1).

Code: Select all

// noname4 By ShohS (optimized VectorC)

Aspc=1 
stps="4000" 
Num="2 + round(rnd(4))" 

A0="2 * pi" 
A1=".3" 
A2="s * Pi/Num" 

A3="sin(A2)"
A4="cos(A2)"

B0="fft(s/num) * .3"

A5="{ sgn(cos(60*A2))
    ,-sgn(cos(60*A2))
    }"
B1="A5 * B0 + .6"

B2="A3*B1"    // sin(A2) * B1
B3="A4*B1"    // cos(A2) * B1 
B4=""
B5=""

A6="A0 * (vectorLR(NUM, 0, NUM-1) / NUM)" 
B6="t * A1 + col(A6, ID)" 

X0=" row(B2, 0) * cos( B6 ) + row(B3, 0) * sin( B6 )" 
Y0=" row(B2, 0) * sin( B6 ) - row(B3, 0) * cos( B6 )" 

X1=" row(B2, 1) * cos( B6 ) + row(B3, 1) * sin( B6 )" 
Y1=" row(B2, 1) * sin( B6 ) - row(B3, 1) * cos( B6 )" 

X2="-row(B2, 0) * cos( B6 ) + row(B3, 0) * sin( B6 )" 
Y2="-row(B2, 0) * sin( B6 ) - row(B3, 0) * cos( B6 )" 

X3="-row(B2, 1) * cos( B6 ) + row(B3, 1) * sin( B6 )" 
Y3="-row(B2, 1) * sin( B6 ) - row(B3, 1) * cos( B6 )" 

ConB=1 
LWdt="1.5 + energy" 
Pen="1" 

Vers=540 

:shock:

Post Reply