即興重複段
在金屬樂中用得及其之多。換句話說,金屬音樂最主要的特點就是riff段,沒有riff也就沒有metal。
具體介紹
關於riff具體的解釋,Roy Shuker在通俗音樂入門讀物Understanding Popular Music Culture,e3中指出,即興重複段是隨著音樂的不斷變化而一直重複的一小段短暫鏇律和節奏模式。就是由幾個和弦組成的反覆演奏的一段音樂。這種聲音的重複是大量經典通俗音樂唱片的特點,其中最為著名的當屬滾石樂隊的Satisfacion。
riff的含義很廣。
不僅僅是指在金屬音樂中有riff,在早期的爵士樂中就有了riff,甚至有的說法是在古典音樂中就有riff了。在不同的音樂風格中,riff也有著些微的不同,大體是指重複的排比段。也不只是吉他可以riff。
riff也不完全是即興的,很多也是預先編排好的。但riff一定是重複的。重複,就是riff最大的特徵。
檔案格式
1. 簡介RIFF全稱為資源互換檔案格式(ResourcesInterchange FileFormat),RIFF檔案是windows環境下大部分多媒體檔案遵循的一種檔案結構,RIFF檔案所包含的數據類型由該檔案的擴展名來標識,能以RIFF檔案存儲的數據包括:音頻視頻交錯格式數據(.AVI) 波形格式數據(.WAV) 點陣圖格式數據(.RDI) MIDI格式數據(.RMI)調色板格式(.PAL)多媒體電影(.RMN)動畫游標(.ANI)其它RIFF檔案(.BND)
2. CHUNK
chunk是組成RIFF檔案的基本單元,它的基本結構如下:
struct chunk{
u32 id; /* 塊標誌 */
u32 size; /* 塊大小 */
u8 dat[size]; /* 塊內容 */
};
id 由4個ASCII字元組成,用以識別塊中所包含的數據。如:'RIFF','LIST','fmt','data','WAV','AVI'等等,由於這種檔案結構最初是由Microsoft和IBM為PC機所定義,RIFF檔案是按照little-endian
位元組順序寫入的。
size(塊大小) 是存儲在data域中數據的長度,id與size域的大小則不包括在該值內。
dat(塊內容) 中所包含的數據是以字(WORD)為單位排列的,如果該數據結構長度是奇數,則在最後添加一個空(NULL)位元組。
chunk塊中有且僅有兩種類型塊:'RIFF'和'LIST'類型可以包含其他塊,而其它塊僅能含有數據。
'RIFF'和'LIST'類型的chunk結構如下
structchunk{
u32 id; /* 塊標誌 */
u32 size; /* 塊大小 */
/*此時的dat = type + restdat */
u32 type ; /* 類型 */
u8 restdat[size] /* dat中除type4個位元組後剩餘的數據*/
};
可以看出,'RIFF'和'LIST'也是chunk,只是它的dat由兩部分組成type和restdat。
type,由4個ASCII字元組成,代表RIFF檔案的類型,如'WAV','AVI ';或者'LIST'塊的類型,如avi檔案中的列表'hdrl','movi'。
restdat,dat中除type4個位元組後剩餘的數據,包括塊內容,包含若干chunk和'LIST'
2.1 FOURCC 一個FOURCC(fourcharacter code)是一個占4個位元組的數據,一般表示4個ASCII字元。在RIFF檔案格式中,FOURCC非常普遍,structchunk 中的id成員,'LIST','RIFF'的type成員,起始標識等信息都是用FOURCC表示的。FOURCC一般是四個字元,如'abcd'這樣的形式,也可以三個字元包含一個空格,如'abc'這樣的形式。
檔案塊
RIFF檔案塊的數據結構如下:
'RIFI' | FileSize | FileType | FileData |
'RIFF' 是一個FOURCC,用於標識該檔案是一個RIFF格式的檔案。FileSize 是一個4位元組的數據,給出檔案的大小,但僅包括FileType和FileData兩部分。FileType是一個FOURCC,用來說明檔案類型,如"WAV","AVI"等。FileData部分表示檔案的具體內容,可以是LIST也可以是CHUNK.
LIST
一個LIST數據塊的數據結構如下:
'LIST' ListSize ListType ListData
'LIST' 是一個FOURCC,而且是固定的,每個LIST都是以'LIST'為開頭。
ListSize 占用4個位元組,表示ListType和ListData兩部分加在一起的大小。
ListType 是一個FOURCC,是對LIST具體包含的數據內容的標識。
ListData 是該LIST的數據內容區,由CHUNK和子LIST組成,它們的個數和組成次序可以是不確定的。
3. 舉例
4. 總結
RIFF檔案的FileData部分由若干個'LIST'和chunk組成,而'LIST'的ListData又可以由若干個'LIST'和chunk組成,即'LIST'是可以嵌套的。
'RIFF',FileType,'LIST',ListType,ChunkID都是FOURCC,即使用4位元組的ASIIC字元標識類型。
FileSize,ListSize,ChunkSize為little-endian32-bit正整數,表示Type(只有'RIFF','LIST'chunk有Type)+Data一起的大小,注意它是little-endian表示,如:0x00123456,存儲地址由低到高,在little-endian系統中的存儲表示為0x56341200(位元組由低位到高位存儲),而在big-endian為0x00123456(位元組由高位到低位存儲)。32bit整數0x00123456存儲地址低--------->;高little-endian(位元組由低位到高位存儲)56341200big-endian(位元組由高位到低位存儲)00123456