Well, the settings I posted here back then are very outdated now.
Having better references now, I'm sure I could do better if I remade the settings today. Currently I'm a bit too busy to do it though.
Here's an experimental script I made a while ago, trying to make make the movie look more like the technicolor version:
DirectShowSource("Starwars.mkv") # Replace with the filename of the movie.
ConvertToRGB32()
GiCoCu("BD1.cur")
selectivecolour(last,\
0,-0.05,0,\
-0.4,0,0,\
-0.05,0.25,0,\
0,0.5,-0.5,\
0,0,0,\
-0.25,-0.5,0,\
false)GiCoCu("BD4.cur")
ConvertToYV12()
Function SelSah_v3 (clip clp, float "Sat", float "Hue", int "Luma_Low", int "Luma_High", int "Low_OS", int "High_OS",
\ Float "minSat", float "maxSat", float "startHue", float "endHue", float "interp", clip "clp2",
\ bool "Exclude", bool "Preview")
{# Extends Tweak to allow selective control of saturation and hue over a defined luma range.
# Assembled by WorBry. MaskTools computations kindly provided by Didee. Thanks to Gavino for advice on script syntax.
# Requires YV12 clp input and assumes full (pc) luma range 0-255.
# Requires MaskTools v2. Tweak should be v2.58 or higher.
#
# Parameters:
# Clp - Is the input clip that will be processed.
# Clp2 - Provides option to use a second clip with different luma curve for the saturation/hue control.
# Sat - Saturation. Desaturation 0.0 =< 1.0 > Increased saturation. See Tweak 2.58 doc
# Hue - Hue. Range -180 to +180. Default 0.0. See Tweak 2.58 doc
# startHue - See Tweak 2.58 doc for details. Range 0 - <360. Default 0
# endHue - See Tweak 2.58 doc for details. Range >0 - 360. Default 360
# minSat - See Tweak 2.58 doc for details. Range 0 - <150 ; must be < MaxSat. Default 0
# maxSat - See Tweak 2.58 doc for details. Range >0 -150. Default 150
# interp - See Tweak 2.58 doc for details. Range 0 - 32. Default 16
# Luma_Low - Lower luma range point. Range 0 - 255* Default 0
# Luma_High - Upper luma range point. Range 0 - 255* Default 255
# Low_OS - Lower over-shoot point. Provides soft roll-off at lower range boundary. Range 0 - 255*
# Default is Luma_Low+20 for normal (inclusive) range mode and Luma_low-20 for Exclude mode.
# High_OS - Upper over-shoot point. Provides soft roll-off at upper range boundary. Range 0 - 255*
# Default is Luma_High-20 for normal (inclusive) mode and Luma_High+20 for Exclude mode.
# Exclude True/False. True excludes the range selected by the luma set points. False (default) includes the selected range.
# Preview - True/False. True gives preview of input clip, output and luma masks with original and output chroma.
# Default is false
#
# *Note: the luma set points are limited with respect to each other to ensure correct orientation and avoid overlap.
#
#Defaults:
Sat = default(Sat, 1.0)
Hue = default(Hue, 0.0)
startHue = default(startHue, 0)
endHue = default(endHue, 360)
minSat = default(minSat, 0)
maxSat = default(maxSat, 150)
interp = default(interp, 16)
Exclude = default(Exclude, False)
Luma_Low = default(Luma_Low, 0.0)
Luma_High = default(Luma_High, 255)
Low_OS = Exclude ? default(Low_OS, Luma_Low + 20)
\ : default(Low_OS, Luma_Low - 20)
High_OS = Exclude ? default(High_OS, Luma_High - 20)
\ : default(High_OS, Luma_High + 20)
clp2 = default(clp2, clp)
Preview = default(Preview, False)
#
#Limits:
Sat = Sat <0.0 ? 0.0 : Sat
Hue = Hue <-180 ? -180 : Hue > 180 ? 180 : Hue
Luma_Low = Luma_Low <0.0 ? 0.0 : Luma_Low >255 ? 255 : Luma_Low
Luma_High = Luma_High <0.0 ? 0.0 : Luma_High >255 ? 255 : Luma_High
Low_OS = Exclude && Low_OS \ : Exclude && Low_OS > High_OS ? ((Luma_Low + Luma_High)/2)
\ : Low_OS <0.0 ? 0.0 : Low_OS >Luma_Low ? Luma_Low : Low_OS
High_OS = Exclude && High_OS >Luma_High ? Luma_High
\ : Exclude && High_OS < Low_OS ? ((Luma_Low + Luma_High + 2)/2)
\ : High_OS 255 ? 255 : High_OS
#
#Limits for startHue, endHue, minSat and maxSat set by Tweak
#
#Create Saturation and Hue control clip:
twclp = clp2.tweak(sat=Sat, hue=Hue, startHue=startHue, endHue=endHue,
\ minSat=minSat, maxSat=maxSat, interp=interp, coring=false)
#
#Create luma mask with low/high range points and roll-off gradient at boundaries:
#"Include" [0]<-black->[Low_OS]<-gradient->[Luma_Low]<-white->[Luma_High]<-gradient->[High_OS]<-black->[255]
#"Exclude" [0]<-white->[Luma_Low]<-gradient->[Low_OS]<-black->[High_OS]<-gradient->[Luma_High]<-white->[255]
#
Low_OS = string(Low_OS) Luma_Low = String(Luma_Low)
Luma_High = String(Luma_High) High_OS = String(High_OS)
#Create "Include" range expression for mask:
blkI = "x "+Low_OS+" < x "+High_OS+" > | 0 "
whtI = "x "+Luma_Low+" >= x "+Luma_High+" <= & 255 "
grLI = "x "+Luma_Low+" < 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHI = "x "+Luma_High+" > 255 1 x "+Luma_High+" - "+High_OS+" "+Luma_High+" - / - * "
exprI = blkI + whtI + grLI + grHI + "x ? ? ? ?"
#Create "Exclude" range expression for mask:
blkE = "x "+Low_OS+" >= x "+High_OS+" <= & 0 "
whtE = "x "+Luma_Low+" < x "+Luma_High+" > | 255 "
grLE = "x "+Low_OS+" <= 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHE = "x "+Luma_High+" < 255 x "+High_OS+" - "+Luma_High+" "+High_OS+" - / * "
exprE = blkE + whtE + grLE + grHE + "x ? ? ? ?"
#Luma Mask (greyscale for output):
lmask = twclp.mt_lut(expr = (Exclude ? ExprE : ExprI))
lmaskg = lmask.Greyscale()
# Apply luma mask:
Output = mt_merge(clp,twclp,lmaskg,luma=true,Y=2,U=3,V=3)
#
#PREVIEW set-up
clps =clp.Subtitle("Original Clip").LanczosResize(640,360)
outs =output.Subtitle("Final Output").LanczosResize(640,360)
#Luma Mask with chroma from tweaked clp
lmcts = lmask.Subtitle("Luma mask + Tweaked Chroma").LanczosResize(640,360)
#Luma Mask with chroma from original clp
lmcc = Exclude ? clp2.mt_lut(expr=ExprE) : clp2.mt_lut(expr=exprI)
lmccs = lmcc.Subtitle("Luma Mask + Original Chroma").LanczosResize(640,360)
#Create composite view
Clpout = StackVertical(clps,outs)
Masks = StackVertical(lmccs, lmcts)
Prev = StackHorizontal(Clpout,Masks)
#
Final = Preview ? Prev : Output
#
Return(Final)}
SelSah_v3(Luma_Low=0, Luma_High=25, startHue=310, endHue=80, Sat=0.50)
ConvertToRGB32()GiCoCu("BDtech.cur")
selectivecolour(last,\
0.2,0,0,\
0,0.05,-0.05,\
0,0.20,0,\
0,0,0,\
0,0,0,\
-0.25,-0.5,0,\
false)GiCoCu("BDtech2.cur")
Levels(0, 0.85, 255, 0, 255)
ConvertToYV12()
You'll need the custom curve files for this script. (and the following one)
Here's an alternate version of the script, aimed more for the 70's projection look as seen in Mike Verta's photos he posted:
DirectShowSource("Starwars.mkv") # Replace with the filename of the movie.
ConvertToRGB32()
GiCoCu("BD1.cur")
selectivecolour(last,\
0,-0.05,0,\
-0.4,0.3,0,\
-0.05,0.25,0,\
0,0.5,-0.5,\
0,0,0,\
-0.25,-0.5,0,\
false)GiCoCu("BD4.cur")
ConvertToYV12()
Function SelSah_v3 (clip clp, float "Sat", float "Hue", int "Luma_Low", int "Luma_High", int "Low_OS", int "High_OS",
\ Float "minSat", float "maxSat", float "startHue", float "endHue", float "interp", clip "clp2",
\ bool "Exclude", bool "Preview")
{# Extends Tweak to allow selective control of saturation and hue over a defined luma range.
# Assembled by WorBry. MaskTools computations kindly provided by Didee. Thanks to Gavino for advice on script syntax.
# Requires YV12 clp input and assumes full (pc) luma range 0-255.
# Requires MaskTools v2. Tweak should be v2.58 or higher.
#
# Parameters:
# Clp - Is the input clip that will be processed.
# Clp2 - Provides option to use a second clip with different luma curve for the saturation/hue control.
# Sat - Saturation. Desaturation 0.0 =< 1.0 > Increased saturation. See Tweak 2.58 doc
# Hue - Hue. Range -180 to +180. Default 0.0. See Tweak 2.58 doc
# startHue - See Tweak 2.58 doc for details. Range 0 - <360. Default 0
# endHue - See Tweak 2.58 doc for details. Range >0 - 360. Default 360
# minSat - See Tweak 2.58 doc for details. Range 0 - <150 ; must be < MaxSat. Default 0
# maxSat - See Tweak 2.58 doc for details. Range >0 -150. Default 150
# interp - See Tweak 2.58 doc for details. Range 0 - 32. Default 16
# Luma_Low - Lower luma range point. Range 0 - 255* Default 0
# Luma_High - Upper luma range point. Range 0 - 255* Default 255
# Low_OS - Lower over-shoot point. Provides soft roll-off at lower range boundary. Range 0 - 255*
# Default is Luma_Low+20 for normal (inclusive) range mode and Luma_low-20 for Exclude mode.
# High_OS - Upper over-shoot point. Provides soft roll-off at upper range boundary. Range 0 - 255*
# Default is Luma_High-20 for normal (inclusive) mode and Luma_High+20 for Exclude mode.
# Exclude True/False. True excludes the range selected by the luma set points. False (default) includes the selected range.
# Preview - True/False. True gives preview of input clip, output and luma masks with original and output chroma.
# Default is false
#
# *Note: the luma set points are limited with respect to each other to ensure correct orientation and avoid overlap.
#
#Defaults:
Sat = default(Sat, 1.0)
Hue = default(Hue, 0.0)
startHue = default(startHue, 0)
endHue = default(endHue, 360)
minSat = default(minSat, 0)
maxSat = default(maxSat, 150)
interp = default(interp, 16)
Exclude = default(Exclude, False)
Luma_Low = default(Luma_Low, 0.0)
Luma_High = default(Luma_High, 255)
Low_OS = Exclude ? default(Low_OS, Luma_Low + 20)
\ : default(Low_OS, Luma_Low - 20)
High_OS = Exclude ? default(High_OS, Luma_High - 20)
\ : default(High_OS, Luma_High + 20)
clp2 = default(clp2, clp)
Preview = default(Preview, False)
#
#Limits:
Sat = Sat <0.0 ? 0.0 : Sat
Hue = Hue <-180 ? -180 : Hue > 180 ? 180 : Hue
Luma_Low = Luma_Low <0.0 ? 0.0 : Luma_Low >255 ? 255 : Luma_Low
Luma_High = Luma_High <0.0 ? 0.0 : Luma_High >255 ? 255 : Luma_High
Low_OS = Exclude && Low_OS \ : Exclude && Low_OS > High_OS ? ((Luma_Low + Luma_High)/2)
\ : Low_OS <0.0 ? 0.0 : Low_OS >Luma_Low ? Luma_Low : Low_OS
High_OS = Exclude && High_OS >Luma_High ? Luma_High
\ : Exclude && High_OS < Low_OS ? ((Luma_Low + Luma_High + 2)/2)
\ : High_OS 255 ? 255 : High_OS
#
#Limits for startHue, endHue, minSat and maxSat set by Tweak
#
#Create Saturation and Hue control clip:
twclp = clp2.tweak(sat=Sat, hue=Hue, startHue=startHue, endHue=endHue,
\ minSat=minSat, maxSat=maxSat, interp=interp, coring=false)
#
#Create luma mask with low/high range points and roll-off gradient at boundaries:
#"Include" [0]<-black->[Low_OS]<-gradient->[Luma_Low]<-white->[Luma_High]<-gradient->[High_OS]<-black->[255]
#"Exclude" [0]<-white->[Luma_Low]<-gradient->[Low_OS]<-black->[High_OS]<-gradient->[Luma_High]<-white->[255]
#
Low_OS = string(Low_OS) Luma_Low = String(Luma_Low)
Luma_High = String(Luma_High) High_OS = String(High_OS)
#Create "Include" range expression for mask:
blkI = "x "+Low_OS+" < x "+High_OS+" > | 0 "
whtI = "x "+Luma_Low+" >= x "+Luma_High+" <= & 255 "
grLI = "x "+Luma_Low+" < 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHI = "x "+Luma_High+" > 255 1 x "+Luma_High+" - "+High_OS+" "+Luma_High+" - / - * "
exprI = blkI + whtI + grLI + grHI + "x ? ? ? ?"
#Create "Exclude" range expression for mask:
blkE = "x "+Low_OS+" >= x "+High_OS+" <= & 0 "
whtE = "x "+Luma_Low+" < x "+Luma_High+" > | 255 "
grLE = "x "+Low_OS+" <= 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHE = "x "+Luma_High+" < 255 x "+High_OS+" - "+Luma_High+" "+High_OS+" - / * "
exprE = blkE + whtE + grLE + grHE + "x ? ? ? ?"
#Luma Mask (greyscale for output):
lmask = twclp.mt_lut(expr = (Exclude ? ExprE : ExprI))
lmaskg = lmask.Greyscale()
# Apply luma mask:
Output = mt_merge(clp,twclp,lmaskg,luma=true,Y=2,U=3,V=3)
#
#PREVIEW set-up
clps =clp.Subtitle("Original Clip").LanczosResize(640,360)
outs =output.Subtitle("Final Output").LanczosResize(640,360)
#Luma Mask with chroma from tweaked clp
lmcts = lmask.Subtitle("Luma mask + Tweaked Chroma").LanczosResize(640,360)
#Luma Mask with chroma from original clp
lmcc = Exclude ? clp2.mt_lut(expr=ExprE) : clp2.mt_lut(expr=exprI)
lmccs = lmcc.Subtitle("Luma Mask + Original Chroma").LanczosResize(640,360)
#Create composite view
Clpout = StackVertical(clps,outs)
Masks = StackVertical(lmccs, lmcts)
Prev = StackHorizontal(Clpout,Masks)
#
Final = Preview ? Prev : Output
#
Return(Final)}
SelSah_v3(Luma_Low=0, Luma_High=25, startHue=310, endHue=80, Sat=0.50)
ConvertToRGB32()GiCoCu("BDtech.cur")
selectivecolour(last,\
0.2,0,0,\
0,0.05,-0.05,\
0,0.20,0,\
0,0,0,\
0,0,0,\
-0.25,-0.5,0,\
false)ConvertToYV12()
SelSah_v3(Luma_Low=0, Luma_High=25, startHue=310, endHue=80, Sat=0.50)
ConvertToRGB32()
Levels(0, 0.90, 255, 0, 255)
selectivecolour(last,\
0,0,0,\
0,0,-0.1,\
0,0.5,0,\
0,0,0,\
0,0,0.2,\
0,0,0,\
false)GiCoCu("technew.cur")
Levels(0, 0.90, 255, 0, 255)
ConvertToYV12()
And note that these are only experimental scripts. They will have their ups and downs. Feel free to play around with them and change settings. :)
By the way, for those who wants to make sure the scripts work like they should, get this file.
I've included my whole plugins folder for avisynth there, which should usually be put in C:\Program files (x86)\AviSynth 2.5\
I've also included some system files. The latest version of avisynth which is also the most stable version I've come across, and a couple other files which are used by avisynth and it's plugins. If you have a 32-bit OS, put them in C:\Windows\System32\ , in 64-bit OS, put them in C:\Windows\SysWOW64\