As an avs developer, lolololololol.Phantasmagoriat wrote:Don't be so pessimistic, they'll have 64bit, mt, cross-platform in no time
Range() v3.2 Now with rg()
-
- Joined: Tue Dec 25, 2007 8:26 am
- Status: better than you
- Contact:
Re: Range() and Selective Filtering
- Phantasmagoriat
- Joined: Mon Feb 06, 2006 11:26 pm
- Status: ☁SteamPunked≈☂
- Contact:
Re: Range() and Selective Filtering [now with fadein/fadeout!]
Alrighty, I've made a *TON* of changes to range() over the last couple days ^__^
The major ones being:
- The old parameter [filterchain] is now called [mod] which stands for "modification" because it accepts other Types of input now.
- Clip Replacement
- A place in the code for Presets
- Boundary Checking (for the special cases brought up on doom9)
So:
- Code updated to v3.0
- Documentation updated to reflect all the new features
- (Now, the first post is HUGE because of all the extra functionality!)
- see the Changelog and new Docs for full details
Enjoy,
[and yes, let me know if you find any bugs too ]
The major ones being:
- The old parameter [filterchain] is now called [mod] which stands for "modification" because it accepts other Types of input now.
- Clip Replacement
- A place in the code for Presets
- Boundary Checking (for the special cases brought up on doom9)
So:
- Code updated to v3.0
- Documentation updated to reflect all the new features
- (Now, the first post is HUGE because of all the extra functionality!)
- see the Changelog and new Docs for full details
Code: Select all
CHANGELOG:
v3.0 - Changed [mod]/[mod_extra] into Val Types to allow four different inputs using the same variables:
A. Filter_Chains (String)
B. Preset_Names (String)
C. Preset_Numbers (Integer)
D. Replacement_Clips (Clip)
v2.9 - Changed default value for [mod] to "null" because of Clip Replacement
v2.8 - Added Preset_Numbers (as Integers)
- Added more Presets:
"freeze", "nothing", "black", "white", "invert", "noise", "blur"
v2.7 - Changed [filterchain] parameter to [mod]
- Added [mod_extra] parameter
v2.6 - Implemented Clip Replacement
v2.5 - Implemented Filter Presets:
"light", "medium", "heavy", "nuke"
v2.4 - Added special ranges:
range(20,0 "filter()") filters frames 20 until the end.
range( 0,0 "filter()") filters all frames
v2.3 - Added Boundary checking for those pesky special cases :P
v2.2 - Added Single-frame filtering
v2.1 - Added [Length] parameter
v2.0 - Implemented dissolve method to allow:
[fadein]/[fadeout]/[head]/[tail] parameters
v1.0 - Range() made public
[and yes, let me know if you find any bugs too ]
PLAY FREEDOOM!! | Phan Picks! | THE424SHOW | YouTube | "Painkiller" | Vanilla MIDI's
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
- Zarxrax
- Joined: Sun Apr 01, 2001 6:37 pm
- Contact:
Re: Range() v3.0 [Now with Clip Replacement and Presets!]
Are the presets really necessary?
I think they add unnecessary complexity to the function.
Also, every single preset is quite simple. There's really no advantage to using the preset than just writing the function directly, except you have to memorize what all the presets are, when people probably already know how to use the original filters anyways.
I think they add unnecessary complexity to the function.
Also, every single preset is quite simple. There's really no advantage to using the preset than just writing the function directly, except you have to memorize what all the presets are, when people probably already know how to use the original filters anyways.
- Phantasmagoriat
- Joined: Mon Feb 06, 2006 11:26 pm
- Status: ☁SteamPunked≈☂
- Contact:
Re: Range() v3.0 [Now with Clip Replacement and Presets!]
Well, no the presets aren't really necessary, but they do add convenience.
I mean, if I want a section to fade to solid black, I can just type:
instead of remembering what values are required for levels, and in what order:Using the preset number 6, is optional, so you don't have to memorize anything as long as you can remember a name like "black"
But what I really wanted to do was create a block of code in the script where you can put your own presets. Particularly with "light", "medium", and "heavy" which you can change to whatever you want. The defaults are just suggestions. I want to encourage people to add/change presets in the main script with their favorite filtering methods, so they just have to add them once using an easily-to-remember name, save the script, and then call them any time they want later. You are right, most of the presets are simple enough to be called regularly, but since there is a dedicated block of code for presets (labeled ## PRESET RECOGNITION ##), it's really easy to set your own ones for more complicated filterchains.
It's basically a way to put all your favorite filterchains in one place.
I mean, if I want a section to fade to solid black, I can just type:
Code: Select all
range(1200,1300, "black", 24,24)
instead of remembering what values are required for levels, and in what order:
Code: Select all
range(1200,1300, "levels(255, 1, 255, 0, 0)", 24,24)
But what I really wanted to do was create a block of code in the script where you can put your own presets. Particularly with "light", "medium", and "heavy" which you can change to whatever you want. The defaults are just suggestions. I want to encourage people to add/change presets in the main script with their favorite filtering methods, so they just have to add them once using an easily-to-remember name, save the script, and then call them any time they want later. You are right, most of the presets are simple enough to be called regularly, but since there is a dedicated block of code for presets (labeled ## PRESET RECOGNITION ##), it's really easy to set your own ones for more complicated filterchains.
It's basically a way to put all your favorite filterchains in one place.
PLAY FREEDOOM!! | Phan Picks! | THE424SHOW | YouTube | "Painkiller" | Vanilla MIDI's
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
- Phantasmagoriat
- Joined: Mon Feb 06, 2006 11:26 pm
- Status: ☁SteamPunked≈☂
- Contact:
Re: Range() v3.1 [Now with Clip Replacement and Presets!]
Yet another update:
-amongst some extra code cleaning, I also condensed the docs. It's still not as brief as I want it, but I can't see it getting any shorter than that.
Code: Select all
CHANGELOG:
v3.1 - Presets are now in a completely isolated code block.
- This makes it much easier to Save your own presets. Instructions are in the Docs.
- Conversely, you can delete the entire Presets Section in the code,
and it won't affect range()'s functionality.
PLAY FREEDOOM!! | Phan Picks! | THE424SHOW | YouTube | "Painkiller" | Vanilla MIDI's
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
- Corran
- Joined: Mon Oct 14, 2002 7:40 pm
- Contact:
Re: Range() and Selective Filtering
The if/then statements were necessary for avoiding issues when using trim() in certain situations. (though it looks like you've made some changes to address trim's issues in your script now so you probably know that...) But yeah, it could have been written better.Phantasmagoriat wrote:I suppose the syntax is the same, but mine's still better because:
-The code is easier to read
-It doesn't use unnecessary if/then statements
-It has a default filter chain
-It will eventually have fadein/fadeout parameters
- Phantasmagoriat
- Joined: Mon Feb 06, 2006 11:26 pm
- Status: ☁SteamPunked≈☂
- Contact:
Re: Range() v3.1 [Now with Clip Replacement and Presets!]
lol, I guess I put my foot in my own mouth.Corran wrote:The if/then statements were necessary for avoiding issues when using trim() in certain situations. (though it looks like you've made some changes to address trim's issues in your script now so you probably know that...) But yeah, it could have been written better.Phantasmagoriat wrote:I suppose the syntax is the same, but mine's still better because:
-The code is easier to read
-It doesn't use unnecessary if/then statements
-It has a default filter chain
-It will eventually have fadein/fadeout parameters
It actually required more if/then statements than you used to cover the really annoying special cases like:
sceneadjust(0,all-1, "invert()") # see what happens to the last frame
sceneadjust(0,0, "invert()") # splits the video in two
sceneadjust(1,all, "invert()") # misses the first frame
The special cases were such a pain, and I wouldn't be surprised if I missed any,
so I take that back.
PLAY FREEDOOM!! | Phan Picks! | THE424SHOW | YouTube | "Painkiller" | Vanilla MIDI's
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
- Phantasmagoriat
- Joined: Mon Feb 06, 2006 11:26 pm
- Status: ☁SteamPunked≈☂
- Contact:
Re: Range() v3.2 Now with rg()
Minor update:
Generally range() is used by specifying the startframe, endframe, modification, and some generic fadein/fadeout frames.
However, in some cases it would be more convenient to use all four frame positions *in sequencial order*
That is what rg() is for. It is literally the same as range() but with rearranged variables as shown above.
This is useful for adding effects, or when you need to be precise all the time. Here is an example of one of my recent uses:
In this case I wanted to make select scenes in my AMV glow a bit by boosting their luma. I knew exactly when I wanted the levels to start changing, so it would have been annoying and confusing to type something like the following for each segment:
Code: Select all
CHANGELOG:
v3.2 - Included rg() function with conveniently rearranged variables: rg( head,startframe,endframe,tail,mod )
However, in some cases it would be more convenient to use all four frame positions *in sequencial order*
That is what rg() is for. It is literally the same as range() but with rearranged variables as shown above.
This is useful for adding effects, or when you need to be precise all the time. Here is an example of one of my recent uses:
Code: Select all
c0=as("UNCOMPRESSED.avi").yv().Levels(0, 1.00, 270, 0, 300)
c1=c0.Levels(0, 1.00, 290, 0, 300)
c2=c0.Levels(0, 1.00, 280, 0, 300)
c3=c0.Levels(0, 1.00, 270, 0, 300)
c4=c0.Levels(0, 1.00, 250, 0, 300)
credits = as("CREDITS_NEW.avi").yv()
c0
rg( 116, 138, 138, 182,c1)
rg( 182, 212, 212, 239,c1)
rg( 212, 260, 294, 356,last.Levels(0, 1.00, 260, 0, 300) )
rg( 322, 386, 394, 430,c2)
rg( 435, 445, 493, 537,c3)
rg( 547, 570, 756, 801,c4)
rg( 756, 801, 826, 826,last.Levels(0, 1.00, 270, 0, 300))
rg(1255,1274,1322,1366,c4)
rg(1408,1408,1772,1796,c3)
rg(1796,1811,1900,1960,c2)
rg(1960,2014,2014,2045,c2)
rg(2412,2469,2618,2657,c2)
rg(2657,2676,2726,2775,c2)
rg(2775,2799,2824,2851,c3)
rg(3715,3787,4169,4193,c2)
gradfun2db
trim(0,5443)++credits
Code: Select all
range(1811,1900,c2, head=1796, tail=1960)
PLAY FREEDOOM!! | Phan Picks! | THE424SHOW | YouTube | "Painkiller" | Vanilla MIDI's
"Effort to Understand; Effort to be Understood; to See through Different Eyes."
"Effort to Understand; Effort to be Understood; to See through Different Eyes."