Hey Andrea, your pm box is full. I'll just post it here though. It should work with ntsc and pal without any extra input from the user.
EDIT: Had to separate luma and chroma filtering. The chroma sampling was actually sampling luma and removing too much noise. Separating luma and chroma filtering has caused it to run very slow but the output is much better quality. So it is.
function LDnoise(clip input, float "strength", int "mc", int "temporalframes",\
int "blksize", int "search", int "searchparam", int "overlap", int "dct")
{
# Set default options.
width=width(input)
height=height(input)
strength=default(strength,1)
temporalframes=default(temporalframes,1)
mc = default(mc, 0)
# Prepare supersampled clip.
super = input.MSuper(levels=6,chroma=true)
# Motion vector search.
b5vec = MAnalyse(super, delta=5, isb=true,chroma=true, search=search, searchparam=searchparam, overlap=overlap, dct=dct)
b4vec = MAnalyse(super, delta=4, isb=true,chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
b3vec = MAnalyse(super, delta=3, isb=true,chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
b2vec = MAnalyse(super, delta=2, isb=true,chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
b1vec = MAnalyse(super, delta=1, isb=true,chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
f1vec = MAnalyse(super, delta=1, chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
f2vec = MAnalyse(super, delta=2, chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
f3vec = MAnalyse(super, delta=3, chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
f4vec = MAnalyse(super, delta=4, chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
f5vec = MAnalyse(super, delta=5, chroma=true, search=search, searchparam=searchparam, overlap=overlap, blksize=blksize, dct=dct)
# Motion Compensation.
b5clip = MCompensate(input,super, b5vec)
b4clip = MCompensate(input,super, b4vec)
b3clip = MCompensate(input,super, b3vec)
b2clip = MCompensate(input,super, b2vec)
b1clip = MCompensate(input,super, b1vec)
f1clip = MCompensate(input,super, f1vec)
f2clip = MCompensate(input,super, f2vec)
f3clip = MCompensate(input,super, f3vec)
f4clip = MCompensate(input,super, f4vec)
f5clip = MCompensate(input,super, f5vec)
# Create compensated clip.
interleaved = mc >= 5 ? Interleave(f5clip, f4clip, f3clip, f2clip, f1clip, input, b1clip, b2clip, b3clip, b4clip, b5clip) :
\ mc == 4 ? Interleave(f4clip, f3clip, f2clip, f1clip, input, b1clip, b2clip, b3clip, b4clip) :
\ mc == 3 ? Interleave(f3clip, f2clip, f1clip, input, b1clip, b2clip, b3clip) :
\ mc == 2 ? Interleave(f2clip, f1clip, input, b1clip, b2clip) :
\ mc == 1 ? Interleave(f1clip, input, b1clip):
\ input
#Perform DFTTEST
yparams="""dfttest(y=true,u=false,v=false,f0beta=0.5,sigma=0,dither=0,sbsize=25,sosize=20,tbsize="""+string(temporalframes)+""",tosize="""+string(temporalframes)+"""/3,nstring=\
"a:"""+string(strength)+""" \
"+string(current_frame)+",0,"""+string(height-40)+""",10 \
"+string(current_frame)+",0,10,10 \
"+string(current_frame)+",0,10,"""+string(width/4)+""" \
"+string(current_frame)+",0,10,"""+string(width/2)+""" \
"+string(current_frame)+",0,10,"""+string(width/1.5)+""" \
"+string(current_frame)+",0,10,"""+string(width-40)+""" \
"+string(current_frame)+",0,"""+string(height-40)+""","""+string(width-40)+""" ")
"""
yfilter=eval("scriptclip(interleaved,yparams)")
uvparams="""dfttest(y=false,u=true,v=true,f0beta=0.5,sigma=0,dither=0,sbsize=25,sosize=20,tbsize="""+string(temporalframes)+""",tosize="""+string(temporalframes)+"""/3,nstring=\
"a:"""+string(strength)+""" \
"+string(current_frame)+",1,"""+string((height/2)-30)+""",3 \
"+string(current_frame)+",1,3,3 \
"+string(current_frame)+",1,3,"""+string((width/2)/2)+""" \
"+string(current_frame)+",1,3,"""+string((width/2)-30)+""" \
"+string(current_frame)+",1,"""+string((height/2)-30)+""","""+string((width/2)-30)+""" \
"+string(current_frame)+",2,"""+string((height/2)-30)+""",3 \
"+string(current_frame)+",2,3,3 \
"+string(current_frame)+",2,3,"""+string((width/2)/2)+""" \
"+string(current_frame)+",2,3,"""+string((width/2)-30)+""" \
"+string(current_frame)+",2,"""+string((height/2)-30)+""","""+string((width/2)-30)+""" ")
"""
uvfilter=eval("scriptclip(yfilter,uvparams)")
return SelectEvery(uvfilter, mc * 2 + 1,mc)
}