Old 11th August 2002, 16:25   #1
che.0
Member
 
che.0's Avatar
 
Join Date: Jun 2002
Location: Prague, Czech Republic
Posts: 62
a preset

che - focus on Sidon
Attached Files
File Type: zip che - focus on sidon.zip (1.2 KB, 148 views)
che.0 is offline   Reply With Quote
Old 11th August 2002, 17:17   #2
ryan
not fucked, not quite.
(Forum King)
 
ryan's Avatar
 
Join Date: Feb 2002
Location: Missouri via Tennessee
Posts: 8,813
Send a message via AIM to ryan
Really nice preset here....
ryan is offline   Reply With Quote
Old 11th August 2002, 17:40   #3
ryan
not fucked, not quite.
(Forum King)
 
ryan's Avatar
 
Join Date: Feb 2002
Location: Missouri via Tennessee
Posts: 8,813
Send a message via AIM to ryan
Here are some mods of your stuff I forgot to post.
Attached Files
File Type: zip nebula remix's.zip (2.0 KB, 125 views)
ryan is offline   Reply With Quote
Old 12th August 2002, 09:22   #4
che.0
Member
 
che.0's Avatar
 
Join Date: Jun 2002
Location: Prague, Czech Republic
Posts: 62
I like those ... especially House of horrors
che.0 is offline   Reply With Quote
Old 14th August 2002, 01:36   #5
Krash
Major Dude
 
Krash's Avatar
 
Join Date: Jun 2001
Location: Sydney, Australia
Posts: 977
I like the beat detection you have going there, but I'm having a hard time following it through (all those non-sensical variable names =\)
Would you mind explaining what you're doing (and your reasons for doing it) in the code there?

- Krash

Eighty-three percent of all statistical quotes are made up on the spot.
Krash is offline   Reply With Quote
Old 14th August 2002, 07:08   #6
Illusion
Major Dude
 
Join Date: Jun 2001
Location: Adelaide, Australia
Posts: 689
Send a message via ICQ to Illusion
Another excellent preset che

And house of horrors is very good too, idiot24-7, nice stuff....
Illusion is offline   Reply With Quote
Old 14th August 2002, 10:29   #7
ryan
not fucked, not quite.
(Forum King)
 
ryan's Avatar
 
Join Date: Feb 2002
Location: Missouri via Tennessee
Posts: 8,813
Send a message via AIM to ryan
Are you guys talking about (House of Mirrors)?
ryan is offline   Reply With Quote
Old 14th August 2002, 12:03   #8
Illusion
Major Dude
 
Join Date: Jun 2001
Location: Adelaide, Australia
Posts: 689
Send a message via ICQ to Illusion
Yeah, I meant House Of Mirrors, I just assumed that I misread the name, and so just called it what Che called it

And I think Krash was referring to Che's presets, some of the per_frame lines have rather unusual variable names, like these:

per_frame_2=le=1.4*bass_att+.1*bass+.5*treb;
per_frame_3=pulse=band(above(le,th),above(le-th,block));
per_frame_4=block=le-th;
per_frame_5=th=if(above(le,th),le+114/(le+10)-7.407,
per_frame_6=th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th));
per_frame_7=th=if(above(th,5.2),4,th);
Illusion is offline   Reply With Quote
Old 14th August 2002, 16:05   #9
unchained
Major Dude
 
Join Date: Jul 2001
Location: richmond, va
Posts: 639
Send a message via Yahoo to unchained
non-sensical? hrm..here's some guesses

le = level
th = threshhold
ccl = Cecil, my good friend from school...
thccl = THUS HUMANS CREATED CAPS-LOCK
unchained is offline   Reply With Quote
Old 14th August 2002, 18:04   #10
che.0
Member
 
che.0's Avatar
 
Join Date: Jun 2002
Location: Prague, Czech Republic
Posts: 62
I must say I've had a hard time too interpreting my lines...

le=1.4*bass_att+.1*bass+.5*treb;
le should be a level
pulse=band(above(le,th),above(le-th,block));
block=le-th;
to initiate a pulse, level has to be above old threshold and the difference must be greater than last time
th=if(above(le,th),le+114/(le+10)-7.407,th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th));
this was meant to increase threshold if the level exceeds it and vice versa. the functions do a slightly adaptive change according to the actual level of "level"
th=if(above(th,5.2),4,th);
the funtions above don't work as they should for extremely high values of th, so this corrects the bug
q1=.12*th;
ccl=if(pulse,ccl+1,ccl);
ccl is derived from "cycle" ... it cycles through the variant of preset outlook
q2=ccl;

mvrot=if(pulse,if(above(mvrot,4),0,mvrot+1),mvrot);
motion vector color rotation. changes on every pulse
mv_r=if(above(mvrot,2),if(above(mvrot,4),.039,if(equal(mvrot,3),.137,.835)),if(above(mvrot,1),.651,if(equal(mvrot,0),1,.773)));
mv_g=if(above(mvrot,2),if(above(mvrot,4),.267,if(equal(mvrot,3),.886,.176)),if(above(mvrot,1),.804,if(equal(mvrot,0),1,.38)));
mv_b=if(above(mvrot,2),if(above(mvrot,4),.694,if(equal(mvrot,3),.776,.851)),if(above(mvrot,1),.114,if(equal(mvrot,0),1,.145)));

thccl = thccl + th;
i admit thccl name doesn't make must sense. it adds another variations to mv colors
mv_r=min(1,max(0,mv_r+.5*sin(.015*thccl)));
mv_g=min(1,max(0,mv_g+.5*sin(.016*thccl)));
mv_b=min(1,max(0,mv_b+.5*sin(.017*thccl)));

wave_r=1-mv_b;
wave_g=1-mv_r;
wave_b=1-mv_g;

echo_alpha=.45+.4*sin(ccl)+.05*sin(time);
echo_zoom=1.7+sin(3*ccl);
echo_orient=ccl%4;
video echo - oscillation of the values is derived from ccl, which is an integer increasing on every pulse. it's the same with all the per pixel values, the only difference is that those are divided into two areas, size of which depends of threshold level

per pixel:
mv_x=mv_x+ccl%31-9;
mv_y=mv_y+ccl%21-7;
zone=below(rad,q1);
zoom=1+.02*if(zone,q2%4-1,(q2+1)%3);
rot=.04*if(zone,q2%5-2,(q2+2)%7-3);
sx=1+.03*if(zone,(q2+.5)%8-5,(q2+3)%6-3);
sy=1+.03*if(zone,q2%7-5,(q2+3.4)%7-3);
che.0 is offline   Reply With Quote
Old 14th August 2002, 18:22   #11
Illusion
Major Dude
 
Join Date: Jun 2001
Location: Adelaide, Australia
Posts: 689
Send a message via ICQ to Illusion
I think it's possible to do comments in your code ala Java or C++, that is, like:

// th = threshold, le = level, ccl = cycle
// mvrot = motion vector rotation

Perhaps it's worthwhile putting some brief comments in if you use variables with very short names (which usually saves time & space). That way, anyone who wants to understand or modify your code will be able to do so more easily.

Disclaimer: If I'm wrong about being able to do comments, well, I'm sure I will be corrected by Krash or Rova very soon )

Anyhow, don't worry too much about the names, because this is a great preset. Our comments on your variable names are just to help you improve...
Illusion is offline   Reply With Quote
Old 14th August 2002, 18:43   #12
che.0
Member
 
che.0's Avatar
 
Join Date: Jun 2002
Location: Prague, Czech Republic
Posts: 62
You're right - it's possible. I'm just usually too lazy to do it. On the other hand, if I had put them in, I wouldn't know that some people actually want to know how my presets work
che.0 is offline   Reply With Quote
Old 16th August 2002, 03:53   #13
Krash
Major Dude
 
Krash's Avatar
 
Join Date: Jun 2001
Location: Sydney, Australia
Posts: 977
Right, I guess I follow it now =]

The thing that was (and to some extent, still is) throwing me off the track, is that big long line defining th

For example, if the condition is true, you're doing some math, and then subtracting 7.407. Why 7.407? That seems like a pretty arbitrary number, as far as I can tell.
And then, if the condition is false, you're adding th (which can never be above 5.2, due to your code) to... let's see...

th times 0.07 (never bigger than 0.364)
divided by th minus twelve plus 10% of the difference between th and 2.7 (only if th is less than 2.7) (which could be as high as negative 6.8)
so the total function comes out to somewhere between some number and some other number

you see my problem here? I can follow the equations, but I don't know why you're using the numbers you are - which is why I get lost.

They seem to be very round-about ways of generating nothing in particular. Which of course is amazing, considering the reactivity as a whole is quite good.
Maybe I just can't be bothered putting in the time required to figure it out properly...

- Krash

Eighty-three percent of all statistical quotes are made up on the spot.
Krash is offline   Reply With Quote
Old 16th August 2002, 07:24   #14
che.0
Member
 
che.0's Avatar
 
Join Date: Jun 2002
Location: Prague, Czech Republic
Posts: 62
The best explanation I can give you are the graphs of
f(le)=le+114/(le+10)-7.407
f(th)=th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th)

which make curves that I found to be working good for adapting values of th. I used Mathematica application to get the numbers above. I can post the graphs or send them to you if you want.
che.0 is offline   Reply With Quote
Old 17th August 2002, 04:10   #15
Krash
Major Dude
 
Krash's Avatar
 
Join Date: Jun 2001
Location: Sydney, Australia
Posts: 977
yeah, post the graphs. I'm curious now

- Krash

Eighty-three percent of all statistical quotes are made up on the spot.
Krash is offline   Reply With Quote
Old 17th August 2002, 07:13   #16
Rozzor
Senior Member
 
Join Date: Mar 2002
Location: Phoenix, Arizona
Posts: 165
Yay, an opportunity for me to hold forth about beat detection!

Complexity in code is a way to add stability (or robustness, if you will). It is like an ecological system -- If you have a monoculture, a field of soybeans for instance, the lack of variation makes it susceptible to devastating swings in pest populations. A mature ecosystem like a prairie buffers the environmental variation. You hack your code until it works as you wish, twisting it and tweaking it and adding this and subtracting that, creating variation and complexity. Once it is working it would be cool to take out the parts of the expressions that evaluate to a constant over the entire range of likely inputs, but that is sometimes a lot easier said than done.

If you think about it, beat detection is much like per-pixel code. Complexity can definately improve both, but the question of how much is too much is a matter of personal taste. For instance, which is worse in terms of processing time, the per-frame code of:

th=if(above(le,th),le+114/(le+10)-7.407, th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th));

and the per-pixel code of:

zoom=1+.1*sin(time*q1*.03)+.2*cos(1.6*sin(time)+rad*6.28*q1)*below(x,.5+snee)*below(y,.5-snee);

I think the main difference between the two is that the beat detection was evaluated more with the ears than the per-pixel code was.

Attached is the preset I used to study che's code. Since 2 names for a preset is enough for Rovastar, I left his name out of the credits.
Rozzor is offline   Reply With Quote
Old 17th August 2002, 08:55   #17
Rovastar
Moderator
 
Join Date: Jun 2001
Location: London, England
Posts: 3,632
Send a message via AIM to Rovastar
Using the anaology of processing timecan be confusing.

What happens on the screen affect you fps a lot more than complex lines of code.

zoom = 0.5;

is a tiny line but will do a lot of work internally probably a couple of pages full of code (with no on screen results i.e. only user variables never accessing rot, zoom, etc) to get the fps to be the same.

If this pages of code I refered to is in the per_pixel section than you multiple this by how many 'pixels' on the screen (Not the amount of pixels is all to do with the res, mesh & texture size)

As it is calculated every pixel.

So 2 things here.

A complex processing wise procedure can very, very little code from our point of veiw zoom = 0.5 where as a stacks line of code that does nothing on the screen will be have the same effect.

Always the same line in the per_frame code will use many, many times more processing power in the per_pixel. So basically do as much as you can in the per_frame.

So I answer you question (if it was one) is that the per_pixel one will use a LOT more processing time.

For the process of beat detection the better beat detection will come with the greater fps (if you write the code that way) but then you have no effects on the screen.

Thank you for bring some sanity to the forum with the preset naming. Some of the names had everyone under the sun in them...apart from Krash that is because he doesn't make any presets any more.

"Rules are for the guidance of wisemen and the obedience of fools"

Visuals - Morphyre www.Morphyre.com
Rovastar is offline   Reply With Quote
Old 17th August 2002, 11:30   #18
che.0
Member
 
che.0's Avatar
 
Join Date: Jun 2002
Location: Prague, Czech Republic
Posts: 62
So the graphs:

[img]http://sweb*****_che/sensor/le.gif[/img]
This shows pure le and le+114/(le+10)-7.407, which is used for th when th is exceeded by level. When I studied unchained's code, I have realized that he assigns a constant value to thresh when level exceeds it. Because in my code exceeding of thresh almost always means generating a pulse, I thought it may be useful to get higher thresh for higher values of level, so it would be less likely to generate two pulses in small amount of time. The slight increase for very small values is indended to prevent pulses resulting from increase of signal after silent parts.

As for the second function, I found the graph of new th and old th quite unuseful, because the values don't change that much, so I rather used graph of difference between these two. It's used when level is lower than old th.
[img]http://sweb*****_che/sensor/th.gif[/img]
This is th*.07/(th-12)+below(th,2.7)*.1*(2.7-th). The first part makes that "high th's make lower" curve. The second part is obviously responsible for the almost linear left part of curve. Its purpose is to reduce the probability of generating pulses after silent part of track, because it prevents (or should prevent) th from falling too low by actually raising it instead of lowering it for small values.
che.0 is offline   Reply With Quote
Old 17th August 2002, 15:55   #19
Rozzor
Senior Member
 
Join Date: Mar 2002
Location: Phoenix, Arizona
Posts: 165
Quote:
Originally posted by Rovastar
(I'm snipping a bunch of helpful stuff)
Quote:
Thank you for bring some sanity to the forum with the preset naming.
That's very gracious of you, Rovastar, all things considered. ;)
"bringing sanity" wasn't quite the effect I was going for. >;)
--
Roz
Rozzor is offline   Reply With Quote
Old 17th August 2002, 16:19   #20
ryan
not fucked, not quite.
(Forum King)
 
ryan's Avatar
 
Join Date: Feb 2002
Location: Missouri via Tennessee
Posts: 8,813
Send a message via AIM to ryan
Is all is a little hard to understand for me.. so I will just read and not post on this subject.. Most anything I post will be incorrect or already posted.
ryan is offline   Reply With Quote
Old 19th August 2002, 01:07   #21
Krash
Major Dude
 
Krash's Avatar
 
Join Date: Jun 2001
Location: Sydney, Australia
Posts: 977
Quote:
Originally posted by Rovastar
...apart from Krash that is because he doesn't make any presets any more.
Just not often =]
I finish my uni degree this semester, so I'm a little busy.
Plus, all my spare time is taken up by Warcraft3

- Krash

Eighty-three percent of all statistical quotes are made up on the spot.
Krash is offline   Reply With Quote
Reply
Go Back   Winamp & Shoutcast Forums > Visualizations > MilkDrop > MilkDrop Presets

Thread Tools Search this Thread
Search this Thread:

Advanced Search
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