AddRange のバックアップソース(No.5)

#contents

**説明 [#k723509e]
AddRange関数は、VirtualDub(VirtualDubMod含む)の編集設定ファイル(vcfファイル((VirtualDub Configuration File)))を利用して、選択範囲を指定するための関数です。2ちゃんねるDTV板「DivX & Avisynth を絶賛しよう 3」スレッドの236さんが作成されました。

同名の[[AddRangeプラグイン>選択範囲の指定方法#ff5fcec1]]と同様の機能を持つ関数ですが、使用方法は異なります。詳しくは、下記の[[使用例>#ycb635c3]]をご覧下さい。

**関数 [#qba210f7]
***オリジナル版 [#s4c3d7ed]
#code(nonumber)<<EOF
function AddRange(clip clip, int "startframe", int "offset")
{
return clip.Trim( default(startframe,0), ((default(offset,0)==0) ? 0 : startframe+offset-1) )
}
EOF

***簡略化版 [#p63fdb6f]
#code(nonumber)<<EOF
function AddRange(clip clip, int "startframe", int "offset")
{
return clip.Trim( startframe, -offset)
}
EOF

こちらを使用する場合は、AviSynth 2.0.7以降を使用してください。((AviSynth 2.0.7よりも古いバージョンには、Trimの2つ目の引数が負の値の場合に、正しい値が適用されないバグがあるため。))

**書式 [#se2081e2]
 AddRange(clip clip, int "startframe", int "offset")

-引数
--startframe: 開始フレーム
--offset: オフセット

**使用例 [#ycb635c3]
***1.vcfファイルの作成 [#o57ab562]

まず、VirtualDub上で編集作業を行い、vcfファイルを出力します。

vcfファイルの作成方法については、[[AddRangeプラグインの使用手順>選択範囲の指定方法#bc7a5b0c]]の(1)〜(3)を参考にしてください。
#br

***2.AddRange()の抽出 [#b6d3d9d6]

&ref(dd_vcf.png);~
1で作成したvcfファイルを、メモ帳で開きます。メモ帳のウィンドウ上に、vcfファイルのアイコンをドラッグ&ドロップするなどして開いてください。

vcfファイルには
 VirtualDub.subset.AddRange ( *** , *** )
のように記された部分が含まれていると思います(([[VirtualDub1.5.8/VirtualDubMod1.5.10.1以降におけるvcf保存時の注意>選択範囲の指定方法#e5078fdf]]を参照。))。

&ref(vdubmod_vcf.png);~
このうち、AddRange()の部分(図の赤丸で囲んでいる部分)((最後の;(セミコロン)は必要ありません。))をコピーして、AVSファイル内の選択範囲を指定したい行に貼り付けてください。

選択範囲が複数ある場合は、次のように++(または+)((+と++の違いについては、[[Splice]]を参照。))で連結する形で、記述します。
 AddRange(0,6) ++ AddRange(13,3) ++ AddRange(20,4)
#br

***3.スクリプトの更新 [#v6b9693c]

AddRange関数をスクリプト内の任意の位置に貼り付けるか、別途、関数定義ファイルにして[[Import]]します。

-使用例1: 1スクリプト内に記述する場合
#code(nonumber)<<EOF
 AddRange(0,6) ++ AddRange(13,3) ++ AddRange(20,4)
 
 function AddRange(clip clip, int "startframe", int "offset")
 {
 return clip.Trim( default(startframe,0), ((default(offset,0)==0) ? 0 : startframe+offset-1) )
 }
EOF

-使用例2: 外部ファイル化して[[Import]]する場合
#code(nonumber)<<EOF
 Import("AddRange.avs")
 AddRange(0,6) ++ AddRange(13,3) ++ AddRange(20,4)
EOF

あとは、AVSファイルを上書き保存して、VirtualDubで開きなおしてください。VirtualDubModを使用している場合は、スクリプトエディタ上で[F5]キー(または[F7]キー)を押すことで、選択範囲が適用されます。