ScriptFunctions のバックアップの現在との差分(No.6)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*スクリプト関数: [#iea63ce3]

これらの関数の入出力は、クリップではなく、スクリプトの中で使われる別の変数です。

#contents

**数値関数: [#u1ee7bc9]

#hr

 MulDiv(int, int, int) v2.56

64ビットの中間結果(intermediate result)を(m*n+d/2)/d

''例'':

:MulDiv (1, 1, 2) = 1|
:MulDiv (2, 3, 2) = 3|

#hr

 Floor(float)

floatからintへ変換します(小数点以下の端数を切り捨て)。

''例:''

 Floor(1.2) = 1 
 Floor(1.6) = 1 
 Floor(-1.2) = -2 
 Floor(-1.6) = -2 
:Floor(1.2) = 1|
:Floor(1.6) = 1|
:Floor(-1.2) = -2|
:Floor(-1.6) = -2|

#hr

 Ceil(float)

floatからintへ変換します(小数点以下の端数を切り上げ)。

''例:''

 Ceil(1.2) = 2.0 
 Ceil(1.6) = 2.0 
 Ceil(-1.2) = -1 
 Ceil(-1.6) = -1 
:Ceil(1.2) = 2.0|
:Ceil(1.6) = 2.0|
:Ceil(-1.2) = -1|
:Ceil(-1.6) = -1|

#hr

 Round(float)

floatからintへ変換します(最も近い整数に四捨五入する)。

''例:''

 Round(1.2) = 1 
 Round(1.6) = 2 
 Round(-1.2) = -1 
 Round(-1.6) = -2 
:Round(1.2) = 1|
:Round(1.6) = 2|
:Round(-1.2) = -1|
:Round(-1.6) = -2|

#hr

 Sin(float) v2

引数のサイン(正弦)を返します(それがラジアン(弧度)であると仮定します)。

''例:''

:Sin(Pi()/4) = 0.707|
:Sin(Pi()/2) = 1.0|

#hr

 Cos(float) v2

引数のコサイン(余弦)を返します(それがラジアン(弧度)であると仮定します)。

''例:''

:Cos(Pi()/4) = 0.707|
:Cos(Pi()/2) = 0.0|

#hr

 Pi() v2

"π"定数の値(円周率)を返します。

''例:''

:d = Pi() # d == 3.141593|

#hr

 Log(float) v2

引数の自然対数(natural(base-e)logarithm)を返します。

''例:''

:Log(1) = 0.0|
:Log(10) = 2.30259|

#hr

 Exp(float) v2

自然指数(natural(base-e)exponent)を返します。

''例:''

:Exp(1) = 2.718282|
:Exp(0) = 1.0|

#hr

 Pow(float base, float power) v2

2番目の引数によって示された累乗に引き上げられた"base"を返します。

''例:''

:Pow(2, 3) = 8|
:Pow(3, 2) = 9|
:Pow(3.45, 1.75) = 8.7334|

#hr

 Sqrt(float) v2

引数の平方根を返します。

''例:''

:Sqrt(1) = 1.0|
:Sqrt(2) = 1.4142|

#hr

 Abs(float or integer) v2.07

絶対値を返します(floatにはfloatを、整数には整数を返す)。

''例:''

 Abs(-3.8) = 3.8 
:Abs(-3.8) = 3.8|

#hr

 Sign(float) v2.07

値の符号を返します(1、0、または-1)。

''例:''

 Sign(-3.5) = -1 
 Sign(3.5) = 1 
 Sign(0) = 0 
:Sign(-3.5) = -1|
:Sign(3.5) = 1|
:Sign(0) = 0|

#hr

 Int(float) v2.07

floatからintへ変換します(0のほうへ丸める)。

''例:''

 Int(1.2) = 1 
 Int(1.6) = 1 
 Int(-1.2) = -1 
 Int(-1.6) = -1 
:Int(1.2) = 1|
:Int(1.6) = 1|
:Int(-1.2) = -1|
:Int(-1.6) = -1|

#hr

 Frac(float) v2.07

与えられた値の小数点以下の端数分を返します。

''例:''

 Frac(3.7) = 0.7 
 Frac(-1.8) = -0.8 
:Frac(3.7) = 0.7|
:Frac(-1.8) = -0.8|

#hr

 Float(int) v2.07

intをfloatへ変換します。

#hr

 Value(string) v2.07

文字列を数値へ変換します。

''例:''

:Value ("-2.7") = -2.7|

#hr

 HexValue(string) v2.07

文字列を16進数の値として評価します。

''例:''

 HexValue ("FF00") = 65280
:HexValue ("FF00") = 65280|

#hr

&aname(rand);
 Rand([int max] [, bool scale] [, bool seed]) v2.07

ランダムな整数値を返します。すべてのパラメータはオプションです。maxは最大値+1を設定し(デフォルト 32768)、負の結果のために負の値を設定することができます。scaledモードかmodulus((訳者註: 係数の意。)モードのどちらかで処理します(デフォルトは、maxの絶対値が32768より大きいならscale=true、それ以外はscale=false)。scaledモードは、内部のランダム数ジェネレータの値を最大値(max)にあわせて調整します。一方、modulusモード(scale=false)は、整数の割り算により、最大値でランダムジェネレータの値を割ったときの余りを使用します。最大値が小さいときほど、modulusモードが最適です。seed=trueを使うと、ランダム数ジェネレータに現在の時間をシード(seed)します。デフォルトではfalseとなり、おそらくseed=trueを使用する必要はありません。しかし、万一に備えて、seedパラメータは存在します。一般的に、この関数は、ランダムなクリップ用のSelect関数と一緒に使用されます。
ランダムな整数値を返します。すべてのパラメータはオプションです。maxは最大値+1を設定し(デフォルト 32768)、負の結果のために負の値を設定することができます。scaledモードかmodulus((訳者註: 係数の意。))モードのどちらかで処理します(デフォルトは、maxの絶対値が32768より大きいならscale=true、それ以外はscale=false)。scaledモードは、内部のランダム数ジェネレータの値を最大値(max)にあわせて調整します。一方、modulusモード(scale=false)は、整数の割り算により、最大値でランダムジェネレータの値を割ったときの余りを使用します。最大値が小さいときほど、modulusモードが最適です。seed=trueを使うと、ランダム数ジェネレータに現在の時間をシード(seed)します。デフォルトではfalseとなり、おそらくseed=trueを使用する必要はありません。しかし、万一に備えて、seedパラメータは存在します。一般的に、この関数は、ランダムなクリップ用のSelect関数と一緒に使用されます。

''例:''

 Select(Rand(5), clip1, clip2, clip3, clip4, clip5) 
:Select(Rand(5), clip1, clip2, clip3, clip4, clip5)|

#hr

 Spline(float X, x1, y1, x2, y2, .... [, bool cubic]) v2.51

コントロールポイント(制御点)x1/y1などを使って、Yの値をX点で補間します。x/yのペアは、少なくとも2つ以上でなければなりません。補間は、3次(cubic)補間(結果はスプライン)か線形(linear)補間(結果は多角形(polygon))になります。

''例:''

 Spline(5, 0, 0, 10, 10, 20, 0, false) = 5 
 Spline(5, 0, 0, 10, 10, 20, 0, true) = 7
:Spline(5, 0, 0, 10, 10, 20, 0, false) = 5|
:Spline(5, 0, 0, 10, 10, 20, 0, true) = 7|

#hr

**文字列関数: [#s1b75b61]

#hr

 LCase(string) v2.07

stringを小文字で返します。

''例:''

 LCase("AviSynth") = "avisynth" 
:LCase("AviSynth") = "avisynth"|

#hr

 UCase(string) v2.07

stringを大文字で返します。

''例:''

 UCase("AviSynth") = "AVISYNTH" 
:UCase("AviSynth") = "AVISYNTH"|

#hr

 StrLen(string) v2.07

stringの長さを返します。

''例:''

 StrLen("AviSynth") = 8 
:StrLen("AviSynth") = 8|

#hr

 RevStr(string) v2.07

stringを逆さまに返します。

''例:''

 RevStr("AviSynth") = "htnySivA" 
:RevStr("AviSynth") = "htnySivA"|

#hr

 LeftStr(string, int) v2.07

文字列の最初のint個を返します。

''例:''

 LeftStr("AviSynth", 3) = "Avi" 
:LeftStr("AviSynth", 3) = "Avi"|

#hr

 RightStr(string, int) v2.07

文字列の最後のint個を返します。

''例:''

 LeftStr("AviSynth", 5) = "Synth" 
:RightStr("AviSynth", 5) = "Synth"|

#hr

 MidStr(string, int pos [, int length]) v2.07

pos番目の文字から、オプションで指定するlength個分、またはstringの最後までのサブストリング(部分文字列)を返します。pos=1は、stringの先頭を明示します。

''例:''

 MidStr("AviSynth", 3, 2) = "iS" 
:MidStr("AviSynth", 3, 2) = "iS"|

#hr

 FindStr(string, substring) v2.07

stirngの中におけるsubstringのポジションを返します。見つからないなら、0を返します。

''例:''

 Findstr("AviSynth", "syn") = 4 
:Findstr("AviSynth", "syn") = 4|

#hr

 String(float / int) v2

数字をstringに変換します。

''例:''

 Subtitle( "Clip height is " + String(last.height) ) 
:Subtitle( "Clip height is " + String(last.height) )|

#hr

 Chr(int) v2.51

アスキー文字を返します。


''例:''

 Chr(34) # 引用文字を返します。
:Chr(34) # 引用文字を返します。|

#hr

 Time(string) v2.51

Returns a string with the current system time formatted as defined by the string.Codes for output formatting:
stringによって定義されたフォーマットで、現在のシステム時間に関するstringを返します。出力フォーマットのためのコード:

%a Abbreviated weekday name
%a 短縮された曜日名

%A Full weekday name
%A 完全な曜日名

%b Abbreviated month name
%b 短縮された月の名前

%B Full month name
%B 完全な月の名前

%c Date and time representation appropriate for locale
%c ロケールに適した日時の表示

%d Day of month as decimal number (01 ? 31)
%d 10進数で、その月の何日か (01 - 31)

%H Hour in 24-hour format (00 ? 23)
%H 24時間方式における時間 (00 - 23)

%I Hour in 12-hour format (01 ? 12)
%I 12時間方式における時間 (01 - 12)

%j Day of year as decimal number (001 ? 366)
%j 10進数で、その年の何日目か (001 - 366)

%m Month as decimal number (01 ? 12)
%m 10進数で、何月か (01 - 12)

%M Minute as decimal number (00 ? 59)
%M 10進数で、何分か (00 - 59)

%p Current locale?s A.M./P.M. indicator for 12-hour clock
%p カレントロケールの、12時間時計用のA.M./P.M(午前/午後)表示器

%S Second as decimal number (00 ? 59)
%S 10進法で、何秒か (00 - 59)

%U Week of year as decimal number, with Sunday as first day of week (00 ? 53)
%U 日曜日を週の始まりとしたときに、10進法で、その年の何週目か (00 - 53)

%w Weekday as decimal number (0 ? 6; Sunday is 0)
%w 10進法としての曜日 (0 - 6; 日曜日は0)

%W Week of year as decimal number, with Monday as first day of week (00 ? 53)
%W 月曜日を週の始まりとしたときに、10進法で、その年の何週目か (00 - 53)

%x Date representation for current locale
%x カレントロケール用の日にちの表示

%X Time representation for current locale
%X カレントロケール用の時間表示

%y Year without century, as decimal number (00 ? 99)
%y 10進法で、世紀なしの年数 (00 - 99)

%YYear with century, as decimal number
%Y 10進法で、世紀を伴った年数

%z, %Z Time-zone name or abbreviation; no characters if time zone is unknown
%z, %Z タイムゾーン名、または、その省略形; タイムゾーンが不明なら、文字なし

%% Percent sign
%% パーセント記号

The # flag may prefix any formatting code. In that case, the meaning of the format code is changed as follows:
#フラグは、どんなフォーマットコードの前につけてもかまいません。その場合、フォーマットコードの意味は、以下のように変更されます:

%#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% # flag is ignored.
%#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% #フラグは無視されます。

%#c Long date and time representation, appropriate for current locale. For example: “Tuesday, March 14, 1995, 12:41:29?.
%#c カレントロケールに適した、長文の日時表示。例: "Tuesday, March 14, 1995, 12:41:29"。

%#x Long date representation, appropriate to current locale. For example: “Tuesday, March 14, 1995?.
%#x カレントロケールに適した、長文の日にち表示。例: "Tuesday, March 14, 1995"。

%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y Remove leading zeros (if any).
%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y 先頭の0を削除(もしあるなら)。

#hr

**Version Checking Functions: [#k3d35a2c]
**バージョンチェック関数: [#k3d35a2c]

#hr

 VersionNumber() v2.07

Returns AviSynth version number as float.
AviSynthのバージョンナンバーをfloatとして返します。

''Example:''
''例:''

 VersionNumber() = 2.07 
:VersionNumber() = 2.07|

#hr

 VersionString() v2.07

Returns AviSynth version info as string (first line used in Version command).
AviSynthのバージョン情報をstringとして返します(Versionフィルタで使用される最初の行)。

''Example:''
''例:''

 VersionString() = "AviSynth 2.08 (avisynth.org) 22 nov. 2002"
:VersionString() = "AviSynth 2.08 (avisynth.nl) 22 nov. 2002"|

#hr

**Variable Type and File Checking Functions: [#sb873dca]
**変数型およびファイルをチェックする関数: [#sb873dca]

 IsBool(var)

 IsInt(var)

 IsFloat(var)

 IsString(var)

 IsClip(var)

 Exist(filename) v2.07

Checks if specified file exists.
明記されたファイルが存在するかどうかをチェックします。

 Defined(var): returns true if var defined, false otherwise.
 Defined(var)

 Default(x,d): returns x if Defined(x), d otherwise.
: varが定義されているならtrueを、さもなければfalseを返します。

Note: Defined and Default are primarily designed for dealing with optional declared variables in user-defined functions and are used to determine whether an optional variable has been passed. Any completely undeclared variable will generate an error. See "User Defined Functions" later in this section for more information.
 Default(x,d)

: Defined(x)ならxを、さもなければdを返します。

註: DefinedとDefaultは、主として、ユーザー定義関数においてオプションで宣言される変数を扱うことを目的として作られており、オプションの変数が渡されているかどうかを決定するために使われます。完全に宣言されていない変数は、エラーを生成するでしょう。より詳しい情報に関しては、このセクションの"[[ユーザー定義関数>#user_defined_functions]]"を、後で見てください。

 Eval(string)

 Apply(func-string, arg, ...): Eval("f(x)") is equivalent to f(x) is equivalent to Apply("f", x))
 Apply(func-string, arg, ...)

'''You can use Eval for something like:'''
: Eval("f(x)")は、Apply("f", x))に相当します。

 settings = "352, 288"
 
 Eval( "BicubicResize(" + settings + ")" )
'''以下のようなことのために、Evalを使用することができます(ここでは[[BicubicResize>Resize]]フィルタの明確な呼び出しが示されていますが、しかし趣旨はわかります):'''

'''You can import the text of another script:'''
#pre{{
settings = "352, 288"
Eval( "BicubicResize(" + settings + ")" )
}}

 Import (filename): evals contents of another AviSynth script.
'''別のスクリプトのテキストをインポートすることができます:'''

'''For error reporting and catching bad input to user-defined function you can use (error-message if bool=false):'''
 Import (filename)

: 別のAviSynthスクリプトの内容を評価(eval)します。

'''エラーリポートとユーザー定義関数への不正な入力をキャッチするために、以下の関数を使うことができます(bool=falseなら、error-message):'''

 Assert (bool, string error-message)

There is a function for checking if an error WILL arise:
エラーが発生する''であろう''かどうかをチェックするための関数があります:

 Try {
 
 AviSource("file.avi")
 }
 
 catch(err_msg) {
 
 Blackness.Subtitle(err_msg)
 
 }
#pre{{
Try {
AviSource("file.avi")
}
catch(err_msg) {
Blackness.Subtitle(err_msg)
}
}}

**Control Functions: [#u1280d7c]
**制御関数: [#u1280d7c]

 SetMemoryMax(int)
: Sets the maximum memory that AviSynth uses (in MB). v2

In some versions there is a default setting of 5MB, which is quite low. If you encounter problems (e.g. low speed) try to set this values to at least 32MB.
: AviSynthが使用する最大メモリを設定します(MB単位)。 v2

いくつかのバージョンにおいては、デフォルトの設定が5MBと、かなり低く設定されています。もし、何らかの問題(たとえば、処理速度が遅いなど)に遭遇したなら、この値を少なくとも32MBに設定してみてください。戻り値: 実際のMemory_Max(メモリの最大)値。

 SetPlanarLegacyAlignment (clip, bool)

: Planarなフレームにアライメント(alignment)モードを設定する。 v2.5.6

いくつかの古いプラグインは、メモリにおけるビデオフレームのレイアウトを、不正に引き受けます。この特別なフィルタは、Planarなフレームのメモリレイアウトを、前のバージョンのAviSynthと互換性があるように強制します。フィルタはGetFrame()コールスタック((訳者註: 参考 - [[ASCII24 - アスキー デジタル用語辞典 - コールスタック:http://yougo.ascii24.com/gh/30/003098.html]]))に関して働きます。そのため、スクリプトの中の、それよりも前のフィルタに効果を与えます。

''例'':

#pre{{
# 古いバージョンのMpeg2Source()を使用
LoadPlugin("...\Mpeg2Dec.dll")
Mpeg2Source("test.d2v") # メモリレイアウトを不正に引き受けるプラグイン
SetPlanarLegacyAlignment(true) # 前の命令文に対し、旧来型の(legacy)メモリアライメントを設定する
ConvertToYUY2() # スクリプトの最後に至るまでの命令文は
...             # 進歩したメモリアライメントを持つ
}}

#br

 SetWorkingDir(string)
: Sets the directory from which AviSource, LoadPlugin, etc. are referenced. This is primarily for easy loading of source clips, etc. Does not affect plugin autoloading. Return value: 0 if successful, -1 otherwise. v2
: AviSourceやLoadPluginなどのフィルタが関連付けられるディレクトリを設定します。これは、おもに、ソースクリップなどを簡単に読み込むためのものです。プラグインのオートローディングには影響を与えません。戻り値: 成功なら0、さもなければ-1。 v2

''Conditional Operations:''
***条件演算: [#y19f2b02]

'''[var=]boolean expression ? iftrue value or operation : ifelse value or operation'''
 [var=]boolean式 ? trueの場合の値か演算 : その他の場合の値か演算

#hr

 nop()
: v2.07 null result primarily for if-then-else operation above where ifelse is not desired
: おもに、(上の条件式で)その他の場合の演算が望まれないときに、代わりにヌルの結果を返します。 v2.07~
:(nopは、おもに、[[Import]]やLoadPluginのような、変数なし / クリップなしの関数に対する形で使用されます。)|

(nop primarily to be used against non-variable / non-clip functions such as import and loadplugin) 
''例:''

''Example:''
#pre{{
VersionNumber<2.07 ? import("patches.avs") : nop()
}}

 versionnumber<2.07 ? import("patches.avs") : nop()
#hr

 Select(int index, val item0 [,item1...]) <v2.07>

Indexed selection of item0 ... item<n-1> (no particular limit on number of items). Items can be of any type, including clips and technically, item types don't have to match, but that could be problematic. Can be used with Rand() function for the index to have a random clip generator or to manage various versions (i.e.,title, preview, main or perhaps PAL, NTSC, FILM) in the same script.
item0からitem<n-1>のitemを、indexによって選択((訳者註: index=0なら、item0。))します(itemの数には、特別な制限はありません)。itemは、clipを含む、あらゆる変数型((訳者註: ScriptVariablesを参照。))をとることができます。技術的には、アイテムの型が一致しなくてもかまいませんが、しかし、それ(型が一致しないアイテムを指定すること)は問題となりうるでしょう。同じスクリプトの中で、ランダムにクリップを生成したり、さまざまなバージョン(たとえば、title, preview, main、あるいはPAL, NTSC, FILM)を統御したりするために、indexには、Rand()関数を使って指定されることができます。((訳者註: [[Rand>#rand]]の欄を参照。))

''User defined functions:''
***&aname(user_defined_functions);ユーザー定義関数: [#jeb5d893]

You can define and call your own functions in AVS scripts as shown below. ScriptGrammar within a function is identical to that of a script at large. The function can return any clip or variable type. The format is generally as follows:
下の方で説明されているように、あなたは、あなた自身の関数を定義し、そして、それを呼び出すことができます。関数内の[[スクリプト文法>ScriptGrammar]]は、スクリプト全般のそれと同じです。関数は、あらゆるクリップや変数型((訳者註: ScriptVariablesを参照。))を返すことができます。そのフォーマットは、一般には、次のようになります:

 function function_name([var_type var_name [,...])
 
 { 
 function commands
 
 . 
 . 
 . 
 
 return(result) 
 } 

Curled brackets must enclose the function commands, but they can share lines with the function header and / or the first and last function commands. The following is an example of a single line function:
:function 関数名([変数型 変数名 [,...])|
::{|
::関数のコマンド|
::|
:::.|
:::.|
:::.|
::|
::return(結果)|
::}|

 function rednum(clip c, int "num") { return subtitle(c,string(default(num,0)),text_color=$FF0000) } 
カールした括弧((訳者註: {と}))は、関数のコマンドを取り囲まなければなりませんが、関数のヘッダ、そして / あるいは、関数のコマンド全体と、行を共有することができます。下記のものは、1行書きの関数の例です:

Variables passed to functions can be made optional by enclosing var_name in quotes (i.e., int "num" in the previous example). Within the function, you would include a Defined or Default function to determine if var_name was passed and set the default value or alter your processing accordingly. Optional parameters can also be called using the var_name=value syntax to skip over other optional parameters.
:''function rednum(clip c, int "num") { return subtitle(c,string(default(num,0)),text_color=$FF0000) }''|

 function NTSC2PAL(clip c) {
 # Fairly good NTSC->PAL conversion.  Would be better with Smart Bob. :-)
 Assert(c.height == 480, "NTSC2PAL: input clip must have 480 scan lines")
 Bob(c, height=576)
 ChangeFPS(50)
 SeparateFields.SelectEvery(4, 0, 3)
 return Weave
 }
関数へ渡される変数は、変数名を引用符で囲むことによって(たとえば、前の例におけるint "num")、オプション扱いにすることができます。関数内部では、変数名が渡されたかどうかを決定し、デフォルト値を設定したり、それによって加工を変更したりするために、DefinedやDefault関数をインクルードするでしょう。オプションのパラメータは、他のオプションのパラメータをスキップするために、「変数名=値」というシンタックスを使って呼び出されることができます。

 AviSource("ntsc.avi").NTSC2PAL
#pre{{
function NTSC2PAL(clip c) {
# かなり優れたNTSC->PAL変換。SmartBobを使うと、もっといいでしょう :-)
Assert(c.height == 480, "NTSC2PAL: input clip must have 480 scan lines")
Bob(c, height=576)
ChangeFPS(50)
SeparateFields.SelectEvery(4, 0, 3)
return Weave
}

If you create anything cool, be sure to post it to ShareFunctions!
AviSource("ntsc.avi").NTSC2PAL
}}

Back to AviSynthManual
もし、何かクールな関数を作ったら、必ず[[ShareFunctions:http://www.avisynth.nl/ShareFunctions]]に投稿してください!

''AviSynthManualに戻る''

#hr
註: このページは、http://www.avisynth.nl/ScriptFunctionsの日本語訳です。