Filter

Filter

Filter 技術是servlet 2.3 新增加的功能。servlet2.3是sun公司 於2000年10月發布的,它的開發者包括許多個人和公司團體,充分體現了sun公司所倡導的代碼開放性原則。在眾多參與者的共同努力下,servlet2.3比以往功能都強大了許多,而且性能也有了大幅提高。

特點功能

它新增加的功能包括:

1. 應用程式生命周期事件控制;

2. 新的國際化;

3. 澄清了類的裝載規則;

4. 新的錯誤及安全屬性;

5. 不贊成使用HttpUtils 類;

6. 各種有用的方法;

7. 闡明並擴展了幾個servlet DTD;

8. filter功能.

功能介紹

其中最重要的就是filter功能.它使用戶可以改變一個request和修改一個response. Filter 不是一個servlet,它不能產生一個response,它能夠在一個request到達servlet之前預處理request,也可以在response離開servlet時處理response.換種說法,filter其實是一個“servlet chaining“(servlet 鏈).

包括

1. 在servlet被調用之前截獲;

2. 在servlet被調用之前檢查servlet request;

3. 根據需要修改request頭和request數據;

4. 根據需要修改response頭和response數據;

5. 在servlet被調用之後截獲.

你能夠配置一個filter 到一個或多個servlet;單個servlet或servlet組能夠被多個filter 使用。幾個實用的filter 包括:用戶辨認filter,日誌filter,審核filter,加密filter,符號filter,能改變xml內容的XSLT filter等。

一個filter必須實現javax.servlet.Filter。

三個方法

1. void setFilterConfig(FilterConfig config) //設定filter 的配置對象;

2. FilterConfig getFilterConfig() //返回filter的配置對象;

3. void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) //執行filter 的工作.

註:現setFilterConfig和getFilterConfig方法已取消,代之為init(FilterConfig config)和destory()方法。

伺服器每次只調用setFilterConfig方法一次準備filter 的處理;調用doFilter方法多次以處理不同的請求.FilterConfig接口有方法可以找到filter名字及初始化參數信息.伺服器可以設定FilterConfig為空來指明filter已經終結.

每一個filter從doFilter()方法中得到當前的request及response.在這個方法裡,可以進行任何的針對request及response的操作.(包括收集數據,包裝數據等).filter調用chain.doFilter()方法把控制權交給下一個filter.一個filter在doFilter()方法中結束.如果一個filter想停止request處理而獲得對response的完全的控制,那它可以不調用下一個filter.

一個filter可以包裝request 或response以改變幾個方法和提供用戶定製的屬性.Api2.3提供了HttpServletRequestWrapper 和HttpServletResponseWrapper來實現.它們能分派最初的request和response.如果要改變一個方法的特性,必須繼承wapper和重寫方法.下面是一段簡單的日誌filter用來記錄所有request的持續時間.

public class LogFilter implements Filter {

FilterConfig config;

public void setFilterConfig(FilterConfig config) {

this.config = config;

}

public FilterConfig getFilterConfig() {

return config;

}

public void doFilter(ServletRequest req,

ServletResponse res,

FilterChain chain) {

ServletContext context = getFilterConfig().getServletContext();

long bef = System.currentTimeMillis();

chain.doFilter(req,res); // no chain parameter needed here

long aft = System.currentTimeMillis();

context.log("Request to " + req.getRequestURI()

+ ": " + (aft-bef));

}

}

當server調用setFilterConfig(),filter保存config信息.在doFilter()方法中通過config信息得到servletContext.如果要運行這個filter,必須去配置到web.xml中.以tomcat4.01為例:

<filter>

<filter-name>

log //filter 名字

</filter-name>

<filter-class>

LogFilter //filter class(上例的servlet)

</filter-class>

</filter>

<filter-mapping>

<filter-name>log</filter-name>

< url-pattern>/*< /url-pattern>

</filter-mapping>

<servlet>

<servlet-name>servletname</servletname>

<servletclass>servletclass</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>servletname</servlet-name>

<url-pattern>*</url-pattern>

</servlet-mapping>

把這個web.xml放到web-inf中(詳請參考tomcat幫助文檔).

當每次請求一個request時(如index.jsp),先到LogFilter中去並調用doFilter()方法,然後才到各自的servlet中去.如果是一個簡單的servlet(只是一個頁面,無任何輸出語句),那么可能的輸出是:

Request to /index.jsp: 10

PHP

簡介

在 PHP 中,Filter 用於對來自非安全來源的數據(比如用戶輸入)進行驗證和過濾。

安裝

Filter 函式是 PHP 核心的組成部分。無需安裝即可使用這些函式。

函式

PHP:指示支持該函式的最早的 PHP 版本。

filter_has_var() 檢查是否存在指定輸入類型的變數,php版本5

filter_id() 返回指定過濾器的 ID 號,php版本5

filter_input() 從腳本外部獲取輸入,並進行過濾,php版本5

filter_input_array() 從腳本外部獲取多項輸入,並進行過濾,php版本5

filter_list() 返回包含所有得到支持的過濾器的一個數組,php版本5

filter_var_array() 獲取多個變數,並進行過濾,php版本為5

filter_var() 獲取一個變數,並進行過濾,php版本為5

函式

PHP Filter 函式

MFC

概念

Filter是一個COM組件,由一個或多個Pin組成。Pin也是一個COM組件。Filter檔案的擴展名為.ax,但也可以是.dll。Filter根據其包含Input pin或Output pin的情況(或在Filter Graph中的位置),大致可分為三類:Source Filter(僅有Output pin)、Transform Filter(同時具有Input pin和Output pin)和Renderer Filter(僅有Input pin)。

一般情況下,創建Filter使用一個普通的Win32 DLL項目。而且,一般Filter項目不使用MFC。這時,應用程式通過調用CoCreateInstance函式創建Filter實例;Filter與應用程式在二進制級別協作。另外一種方法,也可以在MFC的應用程式項目中創建Filter。這種情況下,Filter不需註冊為COM組件,Filter與應用程式之間的協作是原始碼級別的;創建Filter實例,不再使用CoCreateInstance函式,而是直接new出一個Filter對象,如下:

m_pFilterObject = new CFilterClass();

// make the initial refcount 1 to match COM creation

m_pFilterObject ->AddRef();

因為Filter的基類實現了對象的引用計數,所以即使在第二種情況下,對創建後的Filter對象的操作也完全可以遵循COM標準。

Filter是一個獨立功能模組,最好不要將Filter依賴於其他第三方的DLL。因為Filter具有COM的位置透明性特點,Filter檔案可以放在硬碟的任何位置,只要位置移動後重新註冊。但此時,如果Filter依賴其他DLL,則Filter對該DLL的定位就會出現問題。

Filter不能脫離Filter Graph單獨使用。所以,如果你想繞過Filter Graph直接使用Filter實現的模組功能,請將你的Filter移植成DMO(DirectX Media Object)。對於DirectShow應用程式開發者來說,還有一點,請不要忘記使用OleInitialize進行初始化。

註冊

Filter是COM組件,所以在使用前一定要註冊。Filter的註冊程式為regsvr32.exe。如果帶上命令行參數/u,表示註銷;如果帶上是/s,表示不彈出任何註冊/註銷成功與否的提示對話框。如果你想在Build Filter項目的時候進行自動註冊,請在VC的Project settings的Custom Build頁如下設定:

Description: Register filter

Commands: regsvr32 /s /c $(TargetPath)

echo regsvr32 exe.time > $(TargetDir)\$(TargetName).trg

Outputs: $(TargetDir)\$(TargetName).trg

Filter的註冊信息包括兩部分:基本的COM信息和Filter信息。註冊信息都存放在註冊表中。前者的位置為:HKEY_CLASSES_ROOT\CLSID\Filter Clsid\,後者的位置為:HKEY_CLASSES_ROOT\CLSID\Category\Instance\ Filter Clsid\。COM信息標示了Filter是一個標準的可以通過CoCreateInstance函式創建的COM組件,Filter信息標示了我們通過Graphedit看到的描述這個Filter的信息。如果你不想讓Graphedit看到(或者讓Filter枚舉器找到)你寫的Filter,你完全可以不註冊Filter信息。而且不用擔心,你這么做也完全不會影響Filter的功能。

禁止註冊Filter信息的方法也很簡單。因為CBaseFilter實現了IAMovieSetup接口的兩個函式:Register和Unregister。我們只需重載這兩個函式,直接return S_OK就行了。

Filter的Merit值。這個值是微軟的“智慧型連線”函式使用的。在Graphedit中,當我們加入一個Source Filter後,在它的pin上執行“Render”,會自動連上一些Filter。Merit的值參考如下:

MERIT_PREFERRED = 0x800000,

MERIT_NORMAL = 0x600000,

MERIT_UNLIKELY = 0x400000,

MERIT_DO_NOT_USE = 0x200000,

MERIT_SW_COMPRESSOR = 0x100000,

MERIT_HW_COMPRESSOR = 0x100050

Merit值只有大於MERIT_DO_NOT_USE的時候才有可能被“智慧型連線”使用;Merit的值越大,這個Filter的機會就越大。

連線過程

Filter只有加入到Filter Graph中並且和其它Filter連線成完整的鏈路後,才會發揮作用。Filter之間的連線(也就是Pin之間的連線),實際上是連線雙方的一個Media type的協商過程。連線的方向總是從Output pin指向Input pin。連線的大致過程為:如果調用連線函式時已經指定了完整的Media type,則用這個Media type進行連線,成功與否都結束連線過程;如果沒有指定或不完全指定了Media type,則進入下面的枚舉過程。枚舉欲連線的Input pin上所有的Media type,逐一用這些Media type與Output pin進行連線(如果連線函式提供了不完全Media type,則要先將每個枚舉出來的Media type與它進行匹配檢查),如果Output pin也接受這種Media type,則Pin之間的連線宣告成功;如果所有Input pin上枚舉的Media type,Output pin都不支持,則枚舉Output pin上的所有Media type,並逐一用這些Media type與Input pin進行連線。如果Input pin接受其中的一種Media type,則Pin之間的連線到此也宣告成功;如果Output pin上的所有Media type,Input pin都不支持,則這兩個Pin之間的連線過程宣告失敗。

每個Pin都可以實現GetMediaType函式來提供該Pin上支持的所有Preferred Media type(但一般只在Output pin上實現,Input pin主要實現CheckMediaType看是否支持當前提供的Media type就行了)。連線過程中,Pin上枚舉得到的所有Media type就是這裡提供的。

在CBasePin類中有一個protected的成員變數m_bTryMyTypesFirst,默認值為false。在我們定製Filter的Output pin中改變這個變數的值為true,可以定製我們自己的連線過程(先枚舉Output pin上的Media type)。

當Pin之間的連線成功後,各自的pin上都會調用CompleteConnect函式。我們可以在這裡取得一些連線上的Media type的信息,以及進行一些計算等。在Output pin的CompleteConnect實現中,還有一個重要的任務,就是協商Filter Graph運行起來後Sample傳輸使用的記憶體配置情況。這同樣是一個互動過程:首先要詢問一下Input pin上的配置要求,如果Input pin提供記憶體管理器(Allocator),則優先使用Input pin上的記憶體管理器;否則,使用Output pin自己生成的記憶體管理器。我們一般都要實現DecideBufferSize來決定存放Sample的記憶體大小。注意:這個過程協商完成之後,實際的記憶體並沒有分配,而要等到Output pin上的Active函式調用。

概述

Media type一般可以有兩種表示:AM_MEDIA_TYPE和CMediaType。前者是一個Struct,後者是從這個Struct繼承過來的類。

每個Media type有三部分組成:Major type、Subtype和Format type。這三個部分都使用GUID來唯一標示。Major type主要定性描述一種Media type,比如指定這是一個Video,或Audio或Stream等;Subtype進一步細化Media type,如果Video的話可以進一步指定是UYVY或YUY2或RGB24或RGB32等;Format type用一個Struct更進一步細化Media type。

如果Media type的三個部分都是指定了某個具體的GUID值,則稱這個Media type是完全指定的;如果Media type的三個部分中有任何一個值是GUID_NULL,則稱這個Media type 是不完全指定的。GUID_NULL具有通配符的作用。

常用的Major type:

MEDIATYPE_Video;

MEDIATYPE_Audio;

MEDIATYPE_AnalogVideo; // Analog capture

MEDIATYPE_AnalogAudio;

MEDIATYPE_Text;

MEDIATYPE_Midi;

MEDIATYPE_Stream;

MEDIATYPE_Interleaved; // DV camcorder

MEDIATYPE_MPEG1SystemStream;

MEDIATYPE_MPEG2_PACK;

MEDIATYPE_MPEG2_PES;

MEDIATYPE_DVD_ENCRYPTED_PACK;

MEDIATYPE_DVD_NAVIGATION;

常用的Subtype:

MEDIASUBTYPE_YUY2;

MEDIASUBTYPE_YVYU;

MEDIASUBTYPE_YUYV;

MEDIASUBTYPE_UYVY;

MEDIASUBTYPE_YVU9;

MEDIASUBTYPE_Y411;

MEDIASUBTYPE_RGB4;

MEDIASUBTYPE_RGB8;

MEDIASUBTYPE_RGB565;

MEDIASUBTYPE_RGB555;

MEDIASUBTYPE_RGB24;

MEDIASUBTYPE_RGB32;

MEDIASUBTYPE_ARGB32; // Contains alpha value

MEDIASUBTYPE_Overlay;

MEDIASUBTYPE_MPEG1Packet;

MEDIASUBTYPE_MPEG1Payload; // Video payload

MEDIASUBTYPE_MPEG1AudioPayload; // Audio payload

MEDIASUBTYPE_MPEG1System; // A/V payload

MEDIASUBTYPE_MPEG1VideoCD;

MEDIASUBTYPE_MPEG1Video;

MEDIASUBTYPE_MPEG1Audio;

MEDIASUBTYPE_Avi;

MEDIASUBTYPE_Asf;

MEDIASUBTYPE_QTMovie;

MEDIASUBTYPE_PCM;

MEDIASUBTYPE_WAVE;

MEDIASUBTYPE_dvsd; // DV

MEDIASUBTYPE_dvhd;

MEDIASUBTYPE_dvsl;

MEDIASUBTYPE_MPEG2_VIDEO;

MEDIASUBTYPE_MPEG2_PROGRAM;

MEDIASUBTYPE_MPEG2_TRANSPORT;

MEDIASUBTYPE_MPEG2_AUDIO;

MEDIASUBTYPE_DOLBY_AC3;

MEDIASUBTYPE_DVD_SUBPICTURE;

MEDIASUBTYPE_DVD_LPCM_AUDIO;

MEDIASUBTYPE_DVD_NAVIGATION_PCI;

MEDIASUBTYPE_DVD_NAVIGATION_DSI;

MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER;

常用的Format type:

FORMAT_None

FORMAT_DvInfo DVINFO

FORMAT_MPEGVideo MPEG1VIDEOINFO

FORMAT_MPEG2Video MPEG2VIDEOINFO

FORMAT_VideoInfo VIDEOINFOHEADER

FORMAT_VideoInfo2 VIDEOINFOHEADER2

FORMAT_WaveFormatEx WAVEFORMATEX

平台

概念

WordPress中的Filter是一些函式,這些函式在數據寫到資料庫之前或者傳送到瀏覽器之前被調用,完成一些文字的修改和過濾功能。WordPress二次開發者可以自行註冊添加Filter,WordPress會根據各個Filter的優先權來順序調用,從而達到擴展WordPress,完成開發者指定功能的目的。

聲明註冊

Filter實際上只是一些函式,在編寫函式之前,要確定這個Filter屬於哪一類,不同類的Filter,所需要的參數是不一樣的,預設情況下,參數個數為一個。在WordPress中,Filter的類名是通過Tag來指定的,每個Tag下可以定義很多Filter,每個Filter又可以有自己的優先權。Filter是通過Tag來調用的,每次調用,註冊在該Tag下的所有的Filter都會被運行,這些Filter的調用順序是根據註冊時定義的優先權來確定的,優先權數值低的先執行,優先權數值高的後執行。

要知道具體某一類Filter的參數是什麼,需要先知道該類Filter的Tag名,不同的Tag在不同的時候會被調用,通過查閱WordPress文檔找到添加Filter的適當地方。然後在WordPress的源碼中搜尋該Tag的名字,查找某個已加入該Tag的函式或者說是Filter,確定函式參數以後就可以編寫自己的實現函式了。注意要在函式中返回處理過後的內容以供其他的Filter繼續處理。

當Filter定義完成以後,通過Add_filter這個函式將Filter添加到整個WordPress系統中。其中Add_filter函式的聲明是這樣的:

function add_filter($tag,$function_to_add,$priority = 10,$accepted_args = 1)

其中第一個參數是Tag名,也就是上面提到的Filter類名,第二個參數是實現具體功能的函式名,第三個參數是優先權,預設為10,第四個參數是改Filter接受參數的個數,預設為一個。

如果想讓Filter在比較後面調用,可以將第三個參數設得比10大,那么一般情況下,該Filter會在WordPress自帶Filter都調用完以後再調用這個新加的Filter。反之則可以把優先權設得比10小。

實例

作為一個例子,假設我們想要在每篇文章下面加上這篇文章的連結地址,聲明一下版權資訊。也就是在每篇文章後面加上這么一句話:

“本文地址:http://xxx.xxx.xxx/ 轉載請註明”

通過查閱WordPress文檔知,每個單篇文章在傳送到瀏覽器之前要調用Filter the_content。於是這個Filter可以加到Tag the_content裡面。並且通過查閱一個該Tag裡面的函式知,這類Filter只有一個參數進來,那就是文章的內容本身。這樣該Filter就比較清楚了,只要在文章內容的最後添加上面的一行聲明就好了。另外,為了保證該Filter在最後被調用,在註冊該Filter的時候,把優先權數字設得稍微大一點。具體代碼如下:

function my_copyright($content)

{

$content .= "本文地址:http://xxx.xxx.xxx/ 轉載請註明";

return $content ;

}

add_filter("the_content",my_copyright,15);

當然,這只是個最簡單的例子,要實用還需要一些改動,但是添加一個Filter的過程基本上就是這樣。

濾鏡樣式

數據傳送

Filter之間的數據是通過Sample來傳送的。Sample是一個COM組件,擁有自己的一段數據緩衝。Sample由Allocator統一管理。如下圖所示:

Filter之間數據傳送的方式有兩種:Push模式和Pull模式。

css中的filter濾鏡功能

CSS靜態濾鏡樣式 (filter)(只有IE4.0以上支持)

CSS靜態濾鏡樣式的使用方法:{ filter : filtername( parameters1,parameters2,...) }

Filter樣式 簡要說明 支持參數

alpha 設定圖片或文字的不透明度 opacity、finishOpacity、style、startX、startY、finishX、finishY、add、direction、strength

blur 在指定的方向和位置上產生動感模糊效果 add、direction、strength

chroma 對所選擇的顏色進行透明處理 color

dropShadow 在指定的方向和位置上產生陰影 color、offX、offY、positive

flipH 沿水平方向翻轉對象

flipV 沿垂直方向翻轉對象

glow 在對象周圍上發光 color、strength

gray 將對象以灰度處理

invert 逆轉對象顏色

light 對對象進行模擬光照

mask 對對象生成掩膜 color

shadow 沿對象邊緣產生陰影 color、direction

wave 在垂直方向產生正弦波形 add、freq、lightStrength、phase、strength

xray 改變對象顏色深度,並繪製黑白圖象

以上就是靜態濾鏡的全部內容,要注意的是CSS是區分大小寫的!

動態濾鏡

動態濾鏡可以為頁面添加動人的淡入淡出、圖象轉化效果,它可以分為兩種blend(混合)和reveal(顯示),前者可以使對象漸漸消失或出現,後者提供了24種圖象轉化的效果。對於動態濾鏡的調用除去象在靜態濾鏡中要定義的濾鏡類型,參數等等,還用到腳本語言控制它的狀態。

首先,在開始一個動態效果之前,先需要進行裝備(Apply),然後播放(Play)動態效果,在動態效果進行中還可以中斷動態效果(Stop),以上可以用下面的方法實現:

對象名.filters(濾鏡數值).Apply()

對象名.filters(濾鏡數值).Play()

對象名.filters(濾鏡數值).Stop()

對於濾鏡狀態的判斷可以通過“對象名.filters(濾鏡數值).status”判斷,該值為0時,表示濾鏡未執行,為1時,表示濾鏡已經完成,為2時表示濾鏡在執行中。

在定義filter時,如上面所提到的,可以有混合(“filter:blendTrans(duration=時間數值)”,duration表示濾鏡執行需要的時間,單位為秒)和顯示(“filter:revealTrans(duration=時間數值,transition=過渡類型)”,過渡類型為從0-23的數值)兩種。

濾鏡還未被W3C正式承認。濾鏡只是微軟IE瀏覽器的組成部分,不能用於Netscape瀏覽器。制定有關標準的組織正在就此進行討論,但尚未達成最後定論。在我看來,濾鏡是一種非常有趣而且是製作精彩的視覺效果必不可少的一部分。濾鏡能節省頻寬,而且是你能在製作奇妙的

視覺設計時使用文字格式,而不必先製作龐大的文字點陣圖以取得相同的效果。

但由於這些功能尚未成為HTML的正式組成部分,所以並不是所有的瀏覽器都能看到這些特色。有些時候,你必須考慮以傳統的方式製作相同的效果,當然,你不得不繼續將龐大的GIF檔案塞到網頁之中。

沉默...沉默...

CSS濾鏡filter詳解

語法:STYLE="filter:filtername(fparameter1,fparameter2...)"

(Filtername為濾鏡的名稱,fparameter1、fparameter2等是濾鏡的參數)

濾鏡說明:

alpha:設定透明層次

blur:創建高速度移動效果,即模糊效果

chroma:製作專用顏色透明

DropShadow:創建對象的固定影子

FlipH:創建水平鏡像圖片

FlipV:創建垂直鏡像圖片

glow:加光輝在附近對象的邊外

gray:把圖片灰度化

invert:反色

light:創建光源在對象上

mask:創建透明掩膜在對象上

shadow:創建偏移固定影子

wave:波紋效果

Xray

Alpha

語法:STYLE="filter:Alpha(Opacity=opacity,FinishOpacity=finishopacity,Style=style,StartX=startX,StartY=startY,FinishX=finishX,FinishY=finishY)"

說明:

Opacity:起始值,取值為0~100,0為透明,100為原圖。

FinishOpacity:目標值。

Style:1或2或3

StartX:任意值

StartY:任意值

例子:filter:Alpha(Opacity="0",FinishOpacity="75",Style="2")

blur

語法:STYLE="filter:Blur(Add = add,Direction = direction,Strength = strength)"

說明:

Add:一般為1,或0。

Direction:角度,0~315度,步長為45度。

Strength:效果增長的數值,一般5即可。

例子:filter:Blur(Add="1",Direction="45",Strength="5")

Chroma

語法:STYLE="filter:Chroma(Color = color)"

說明:color:#rrggbb格式,任意。

例子:filter:Chroma(Color="#FFFFFF")

DropShadow

語法:STYLE="filter:DropShadow(Color=color,OffX=offX,OffY=offY,Positive=positive)"

說明:Color:#rrggbb格式,任意。

Offx:X軸偏離值。

Offy:Y軸偏離值。

Positive:1或0。

例子:filter:DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1")

FlipH

語法:STYLE="filter:FlipH"

例子:filter:FlipH

FlipV

語法:STYLE="filter:FlipV"

例子:filter:FlipV

glow

語法:STYLE="filter:Glow(Color=color,Strength=strength)"

說明:

Color:發光顏色。

Strength:強度(0-100)

例子:filter:Glow(Color="#6699CC",Strength="5")

gray

語法:STYLE="filter:Gray"

例子:filter:Gray

invert

語法:STYLE="filter:Invert"

例子:filter:Invert

mask

語法:STYLE="filter:Mask(Color=color)"

例子:filter:Mask (Color="#FFFFE0")

shadow

語法:filter:Shadow(Color=color,Direction=direction)

說明:

Color:#rrggbb格式。

Direction:角度,0-315度,步長為45度。

例子:filter:Shadow (Color="#6699CC",Direction="135")

wave

語法:filter: Wave(Add=add,Freq=freq,LightStrength=strength,Phase=phase, Strength=strength)

說明:

Add:一般為1,或0。

Freq:變形值。

LightStrength:變形百分比。

Phase:角度變形百分比。

Strength:變形強度。

例子:filter: wave(Add="0",Phase="4",Freq="5",LightStrength="5",Strength="2")

Xray

語法:STYLE="filter:Xray"

例子:filter:Xray

工業金屬樂隊Filter由曾於89年到93年間擔任於工業金屬搖滾名團Nine Inch Nails之吉他手的Richard Patrick創建,他堅信他有絕對的新玩意兒,能做出不同於NIN時期所帶出的音樂色彩,所包容與展現的音樂性也更大,便毅然決然地離開事業正如日中天的NIN。之後便與也曾在91年至93年間待過NIN的Brian Liesegang以兩人完成了95年的首張專輯,在音樂上仍保有NIN工業金屬/工業舞曲的狂野力道,不僅加重了搖滾與金屬的份量,更加入龐克、低保真等不同的音樂風格進去,成功地讓Patrick跨出舊有的音樂藩籬,朝向更多元的音樂經營理念。

Filter也為多部電影,包括【The Crow-City Of Angels】、【Spawn】、【The X-Files:Fight The Future】、《2012》(2009)演唱單曲。97年Brian Liesegang因音樂理念的不同而離團後,Filter再加入Frank Cavanaugh(貝斯手)、Steven Gillis(鼓手)及Geno Lenardo(吉它手)三位新血成為一個更完整的四人樂團,並推出99年熱門大作「Title Of Record」,此張專輯並獲得全美著名另類搖滾雜誌A.P.滿分推崇。其中《Fades Like a Photograph》為2009年上映的《2012》的第二首片尾曲。

數學軟體

FILTER One-dimensional digital filter.

Y = FILTER(B,A,X) filters the data in vector X with the

filter described by vectors A and B to create the filtered

data Y. The filter is a "Direct Form II Transposed"

implementation of the standard difference equation:

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)

- a(2)*y(n-1) - ... - a(na+1)*y(n-na)

If a(1) is not equal to 1,FILTER normalizes the filter

coefficients by a(1).

FILTER always operates along the first non-singleton dimension,

namely dimension 1 for column vectors and non-trivial matrices,

and dimension 2 for row vectors.

[Y,Zf] = FILTER(B,A,X,Zi) gives access to initial and final

conditions,Zi and Zf,of the delays. Zi is a vector of length

MAX(LENGTH(A),LENGTH(B))-1,or an array with the leading dimension

of size MAX(LENGTH(A),LENGTH(B))-1 and with remaining dimensions

matching those of X.

FILTER(B,A,X,[],DIM) or FILTER(B,A,X,Zi,DIM) operates along the

dimension DIM.

翻譯:

Y = filter(B,A,X) 過濾向量X,通過係數向量A,B,產生向量Y。

[Y,Zf] = filter(B,A,X,Zi)給出初始和最終條件。ZI和Zf是延遲。

音樂作品

專輯
專輯名稱發行時間
short bus 1995-05-15

相關詞條

相關搜尋

熱門詞條