BlitzMax/模組/BaH/BASS
BASS 是一個用於 Windows 和 Mac OSX 軟體的音訊庫。
它的目的是為開發人員提供強大而高效的樣本、流(MP3、MP2、MP1、OGG、WAV、AIFF、自定義生成,以及透過附加元件獲得更多)、MOD 音樂(XM、IT、S3M、MOD、MTM、UMX)、MO3 音樂(MP3/OGG 壓縮 MOD)、以及錄音功能。
此 BlitzMax 模組以及標準流功能也支援使用 TStream,允許比 BASS 已經提供的功能更靈活。
您可以在模組發行版的 lib/^platform^ 資料夾中找到執行時庫,其中 ^platform^ 是 win32 或 macos。
在 Windows 上,您應該將 bass.dll 檔案放置在與您的應用程式相同的資料夾中。
在 OS X 上,libbass.dylib 應該放置在應用程式包內。例如,如果您的應用程式名為 MyApp,那麼庫需要放置在 MyApp.app/Contents/MacOS/ 中。
與 TBass.GetInfo 一起使用以檢索有關當前裝置的資訊。
OSX 註釋:僅使用 latency、minbuf、initflags、speakers 和 freq 成員。硬體混合和 EAX 在 OS X 中不可用。speakers 和 freq 值將隨著裝置輸出的變化而變化,例如透過其控制面板。
- GetFlags
- GetHWSize
- GetHWFree
- GetFreeSam
- GetFree3d
- GetMinRate
- GetMaxRate
- GetEAX
- GetMinBuf
- GetDSVer
- GetLatency
- GetInitFlags
- GetSpeakers
- GetFreq
方法 GetFlags:Int()
描述:flags 裝置的功能... 這些標誌的組合。
方法 GetHWSize:Int()
描述:裝置的總硬體記憶體量。
方法 GetHWFree:Int()
描述:裝置的可用硬體記憶體量。
方法 GetFreeSam:Int()
描述:硬體中可用樣本插槽的數量。
方法 GetFree3d:Int()
描述:硬體中可用 3D 樣本插槽的數量。
方法 GetMinRate:Int()
描述:硬體支援的最小取樣率。
方法 GetMaxRate:Int()
描述:硬體支援的最大采樣率。
方法 GetEAX:Int()
描述:裝置支援 EAX 並且已啟用?
資訊:裝置的“硬體加速”需要在其“高階屬性”設定中設定為“完全”,否則 EAX 將被停用。如果在呼叫 TBass.Init 時未指定 BASS_DEVICE_3D,則此值始終為 FALSE。
方法 GetMinBuf:Int()
描述:推薦使用的最小緩衝區長度(向上取整到最接近的毫秒)(使用 BASS_CONFIG_BUFFER 配置選項)。
資訊:要求在呼叫 TBass.Init 時使用 BASS_DEVICE_LATENCY。
方法 GetDSVer:Int()
描述:DirectSound 版本...
資訊:9 = DX9/8/7/5 功能可用,8 = DX8/7/5 功能可用,7 = DX7/5 功能可用,5 = DX5 功能可用。0 = DX9/8/7/5 功能均不可用。
方法 GetLatency:Int()
描述:播放 TBassStream/TBassMusic 通道的平均延遲(向上取整到最接近的毫秒),以開始並被聽到。
資訊:要求在呼叫 TBass.Init 時使用 BASS_DEVICE_LATENCY。
方法 GetInitFlags:Int()
描述:TBass.Init 呼叫的 flags 引數。
方法 GetSpeakers:Int()
描述:裝置/驅動程式支援的揚聲器數量...
資訊:2 表示不支援揚聲器分配(對於 VxD 驅動程式,這將始終是這種情況)。也可能在某些裝置/驅動程式中錯誤地為 2,而裝置實際上支援更多揚聲器。在這種情況下,可以在 TBass.Init 呼叫中使用 BASS_DEVICE_CPSPEAKERS 標誌使用 Windows 控制面板設定,或者可以使用 BASS_DEVICE_SPEAKERS 標誌強制啟用揚聲器分配。
方法 GetFreq:Int()
描述:裝置的當前輸出取樣率。
資訊:這僅在 Windows Vista 和 OS X 上可用。
“通道”可以是樣本播放通道 (TBassSample)、樣本流 (TBassStream)、MOD 音樂 (TBassMusic) 或錄音 (TBassRecord)。每個“通道”函式都可以與其中一種或多種通道型別一起使用。
- 播放
- 暫停
- 停止
- GetLength
- GetLevel
- GetTags
- IsActive
- GetPosition
- GetPositionLowHigh
- 更新
- SlideAttribute
- IsSliding
- Bytes2Seconds
- 標誌
- SetFX
- GetAttribute
- SetAttribute
- SetLink
- Get3DPosition
- Set3DPosition
- Set3DAttributes
- Get3DAttributes
- GetData
- GetDevice
- GetInfo
- 鎖定
- Seconds2Bytes
- SetSync
- SetPosition
方法 Play:Int(restart:Int = True)
描述:開始(或恢復)樣本、流、MOD 音樂或錄音的播放。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 BASS_ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- restart : 從頭開始播放?如果通道是使用者流,則其當前緩衝區內容將被清除。
- 如果它是 MOD 音樂,則其 BPM/等將重置為其初始值。
當以塊方式流式傳輸 (BASS_STREAM_BLOCK) 時,restart 引數會被忽略,因為無法返回到開頭。對於錄音通道,restart 引數也無關緊要。
方法 Pause:Int()
描述:暫停樣本、流、MOD 音樂或錄音。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 BASS_ErrorGetCode 獲取錯誤程式碼。
資訊:使用 Play 恢復暫停的通道。Stop 可用於停止暫停的通道。
方法 Stop:Int()
描述:停止樣本、流、MOD 音樂或錄音。
方法 GetLength:Long(mode:Int)
描述:檢索通道的播放長度。
返回值:如果成功,則返回通道的長度,否則返回 -1。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:流的確切長度將在整個檔案流式傳輸完畢後返回,在此之前,無法始終 100% 準確地估計流的長度。當在 BASS_StreamCreateFile 呼叫中使用 BASS_STREAM_PRESCAN 標誌時,MP3/MP2/MP1 檔案的長度始終是準確的。當未使用 BASS_STREAM_PRESCAN 標誌時,長度是基於檔案大小的(通常準確的)估計,直到整個檔案流式傳輸完畢。對於 OGG 檔案返回的長度通常是準確的(假設檔案沒有損壞),但對於從網際網路流式傳輸的 OGG 檔案(或“緩衝”的使用者檔案流),它可能是一個非常粗略的估計,直到整個檔案下載完畢。檢索 MOD 音樂的位元組長度要求在 BASS_MusicLoad 呼叫中使用 BASS_MUSIC_PRESCAN 標誌。引數
- mode : 如何檢索長度。以下之一。
| 常量 | 描述 |
|---|---|
| BASS_POS_BYTE | 獲取位元組長度。 |
| BASS_POS_MUSIC_ORDER | 獲取訂單長度。(僅限 HMUSIC) |
方法 GetLevel:Int(leftLevel:Int Var, rightLevel:Int Var)
描述:檢索流、MOD 音樂或錄製通道的電平(峰值振幅)。
資訊:此方法測量通道樣本資料的電平,而不是最終輸出混音中通道的電平,因此通道的音量(BASS_ATTRIB_VOL 屬性)不會影響它。對於超過立體聲的通道,左電平將包含所有左通道(例如,前左、後左、中置),而右電平將包含所有右通道(前右、後右、LFE)。如果有奇數個通道,則左電平和右電平將包含所有通道。如果需要每個單獨通道的電平,則可以根據GetData提供的樣本資料計算出來。當與解碼通道一起使用時,此方法必須從通道中解碼資料(20 毫秒)才能計算電平。這意味著資料已丟失,例如,它不可用於GetData。如果發生錯誤,則返回 -1,使用 TBass.ErrorGetCode 獲取錯誤程式碼。如果成功,則左通道的電平將返回在低字(低 16 位),右通道的電平將返回在高字(高 16 位)。如果通道是單聲道,則低字將在高字中複製。電平範圍從 0(靜音)到 32768(最大值)線性變化。當通道停止時將返回 0。
方法 GetTags:String[](tags:Int)
描述:從通道中檢索標籤/標題。
返回值:如果成功,則返回請求的標籤,否則返回 NULL。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- tags : 所需的標籤/標題... 以下之一。
| 常量 | 描述 |
|---|---|
| BASS_TAG_ID3 | BASS_TAG_ID3ID3v1 標籤。返回指向 128 位元組塊的指標。有關塊結構的詳細資訊,請參閱 http://www.id3.org/ID3v1。 |
| BASS_TAG_ID3V2 | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_LYRICS3 | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_OGG | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_VENDOR | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_HTTP | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_ICY | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_META | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_RIFF_INFO | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_MUSIC_NAME | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_MUSIC_MESSAGE | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_MUSIC_INST | xxxxxxxxxxxxxxxxxxx |
| BASS_TAG_MUSIC_SAMPLE | xxxxxxxxxxxxxxxxxxx |
ID3v1 標籤位於檔案末尾,因此當從網際網路流式傳輸帶有 ID3v1 標籤的檔案時,標籤將不可用,直到下載完成。可以透過 BASS_ChannelSetSync 設定 BASS_SYNC_DOWNLOAD 同步,以便在下載完成時通知您。BASS_SYNC_META 同步可用於通知新的 Shoutcast 元資料,而 BASS_SYNC_OGG_CHANGE 同步用於通知鏈式 OGG 流中新的邏輯位元流開始,這通常會帶來新的 OGG 標籤。
方法 IsActive:Int()
描述:檢查樣本、流或 MOD 音樂是否處於活動狀態(正在播放)或停止狀態。
資訊:還可以檢查錄製是否正在進行。當使用此方法與解碼通道一起使用時,只要還有資料要解碼,就會返回 BASS_ACTIVE_PLAYING。到達末尾後,將返回 BASS_ACTIVE_STOPPED。BASS_ACTIVE_STALLED 從未為解碼通道返回;如果 BASS_ChannelGetData 返回的資料少於請求的資料,並且此函式仍然返回 BASS_ACTIVE_PLAYING,則可以判斷解碼通道是否處於停止狀態。
方法 GetPosition:Long(mode:Int)
描述:檢索樣本、流或 MOD 音樂的播放位置。
返回值:如果成功,則返回通道的位置,否則返回 -1。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:也可以用於錄製通道。引數
- mode : 如何檢索位置。以下之一。
| 常量 | 描述 |
|---|---|
| BASS_POS_BYTE | 獲取位元組位置。 |
| BASS_POS_MUSIC_ORDER | 獲取訂單和行的位置... LOWORD = 訂單,HIWORD = 行 * 縮放器 (BASS_ATTRIB_MUSIC_PSCALER)。(TBassMusic 僅限) |
- 其他模式可能由載入項支援,請參閱文件。
方法 GetPositionLowHigh:Long(mode:Int, low:Int Var, high:Int Var)
方法 Update:Int(length:Int)
描述:更新流或 MOD 音樂的播放緩衝區。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- length : 要渲染的量,以毫秒為單位... 0 = 預設值(2 x 更新週期)。這被限制在緩衝區中可用空間。
- 在緩衝區中可用空間。
在開始播放流或 MOD 音樂時,在建立它或更改其位置後,將會有短暫的延遲,而初始資料被解碼以供播放。通常延遲並不明顯或重要,但如果您需要在呼叫Play時立即開始播放,則應先使用此方法。length 引數至少應等於更新週期。可能無法始終渲染請求的資料量,在這種情況下,此方法仍然會成功。GetData(BASS_DATA_AVAILABLE) 可用於檢查通道為播放緩衝了多少資料。當自動更新被停用 (BASS_CONFIG_UPDATEPERIOD = 0) 時,此方法可用於代替 TBass.Update 來實現不同通道的不同更新週期,而不是所有通道的單個更新週期。與 TBass.Update 不同,此方法也可以在啟用自動更新時使用。此方法的 CPU 使用率不包括在 TBass.GetCPU 讀取中。
方法 SlideAttribute:Int(attrib:Int, value:Float, time:Int)
描述:將通道屬性從當前值滑動到新值。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:此方法類似於SetAttribute,但屬性在指定的時間段內逐漸過渡到該值。另一個區別是值沒有預先檢查。如果它無效,滑動將簡單地提前結束。如果屬性已經在滑動,則舊的滑動將被停止並被新的滑動取代。IsSliding 可用於檢查屬性當前是否正在滑動。BASS_SYNC_SLIDE 同步也可以透過SetSync 設定,以便在滑動結束時觸發。在現有滑動被新的滑動取代的情況下,不會觸發同步。屬性滑動不受通道是正在播放、暫停還是停止的影響。它們繼續進行,無論如何。
方法 IsSliding:Int(attrib:Int)
描述:檢查樣本、流或 MOD 音樂的屬性(或任何屬性)是否正在滑動。
返回值:如果屬性正在滑動,則返回 TRUE,否則返回 FALSE。
方法 Bytes2Seconds:Double(pos:Long)
描述:根據通道的格式將位元組位置轉換為時間(秒)。
返回值:如果成功,則返回轉換後的長度,否則返回負值。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:轉換基於通道的初始取樣率,即建立時的取樣率。
方法 Flags:Int(flags:Int, mask:Int)
描述:修改和檢索通道的標誌。
返回值:如果成功,則返回通道的更新後的標誌,否則返回 -1。使用 BASS_ErrorGetCode 獲取錯誤程式碼。
資訊:在某些情況下,某些標誌可能無法調整,因此應檢查返回值以確認任何更改。上面列出的標誌只是可以修改的標誌,返回值中可能存在其他標誌。有關標誌的完整列表,請參閱 BASS_CHANNELINFO 文件。透過載入項建立的流可能可以使用其他標誌。但是,可能的標誌值數量有限,因此某些載入項可能使用相同的標誌值來表示不同的內容。這意味著,當使用透過外掛系統建立的流的載入項特定標誌時,最好先透過 BASS_ChannelGetInfo 檢查其 ctype,以確認載入項正在處理該流。在播放過程中,標誌更改的效果不會立即聽到,因為存在緩衝。要減少延遲,請使用 BASS_CONFIG_BUFFER 配置選項來減少緩衝區長度。
方法 SetFX:TBassFX(fxType:Int, priority:Int)
描述:在流、MOD 音樂或錄製通道上設定效果。
返回值:如果成功,則返回新的效果控制代碼,否則返回 Null。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
方法 GetAttribute:Int(attrib:Int, value:Float Var)
描述:檢索通道屬性的值。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- attrib : 要設定值的屬性... 以下之一。
| 常量 | 描述 |
|---|---|
| BASS_ATTRIB_EAXMIX | EAX 乾溼混音。(TBassSample/TBassMusic/TBassStream 僅限) |
| BASS_ATTRIB_FREQ | 取樣率。 |
| BASS_ATTRIB_MUSIC_AMPLIFY | 放大級別。(TBassMusic) |
| BASS_ATTRIB_MUSIC_BPM | BPM。(TBassMusic) |
| BASS_ATTRIB_MUSIC_PANSEP | 聲像分離級別。(TBassMusic) |
| BASS_ATTRIB_MUSIC_PSCALER | 位置縮放器。(TBassMusic) |
| BASS_ATTRIB_MUSIC_SPEED | 速度。(TBassMusic) |
| BASS_ATTRIB_MUSIC_VOL_CHAN | 通道音量級別。(TBassMusic) |
| BASS_ATTRIB_MUSIC_VOL_GLOBAL | 全域性音量級別。(TBassMusic) |
| BASS_ATTRIB_MUSIC_VOL_INST | 樂器/樣本音量級別。(TBassMusic) |
| BASS_ATTRIB_PAN | 聲像/平衡位置。 |
| BASS_ATTRIB_VOL | 音量級別。 |
- 其他屬性可能由載入項支援,請參閱文件。
- value : 用於接收屬性值的變數。
- 其他屬性可能由載入項支援,請參閱文件。
方法 SetAttribute:Int(attrib:Int, value:Float)
描述:設定通道屬性的值。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- attrib : 要設定值的屬性... 以下之一。
| 常量 | 描述 |
|---|---|
| BASS_ATTRIB_EAXMIX | EAX 乾溼混音。(TBassSample/TBassMusic/TBassStream 僅限) 乾溼比例... 0(全乾)到 1(全溼),-1 = 根據距離自動計算混音(預設值)。 |
| BASS_ATTRIB_FREQ | 取樣率。 取樣率... 100(最小值)到 100000(最大值),0 = 原始速率(通道建立時的速率)。該值將向下取整為整數。此屬性適用於通道播放,不會影響通道的樣本資料,因此對解碼通道沒有實際影響。不過,它仍然可調,以便可以被 BASSmix 附加元件以及任何想要使用它的其他元件使用。儘管標準的有效取樣率範圍是 100 到 100000,但某些裝置/驅動程式可能具有不同的有效範圍。請參閱 TBassInfo 型別中的 minrate 和 maxrate 成員。如果通道上啟用了“帶有 FX 標誌”的 DX8 效果實現,則無法更改通道的取樣率,除非安裝了 DirectX 9 或更高版本。以更高的取樣率播放 MOD 音樂和流需要更多的 CPU 處理能力。如果計劃以大幅提高的取樣率播放 MOD 音樂或流,則應增加緩衝區長度(BASS_CONFIG_BUFFER),以避免可能出現的音訊中斷。 |
| BASS_ATTRIB_MUSIC_AMPLIFY | 放大級別。(TBassMusic) 放大級別... 0(最小值)到 100(最大值)。這將向下取整為整數。隨著放大級別的提高,樣本資料的範圍會增加,因此解析度也會增加。但是,如果級別設定過高,則可能會發生削波,從而導致音訊失真。可以使用 TBassChannel.GetLevel 在任何時候檢查 MOD 音樂的當前級別。透過這樣做,您可以決定是否需要調整 MOD 音樂的放大級別。預設放大級別為 50。在播放期間,由於緩衝,對該屬性的更改效果不會立即聽到。要減少延遲,請使用 BASS_CONFIG_BUFFER 配置選項減少緩衝區長度。 |
| BASS_ATTRIB_MUSIC_BPM | BPM。(TBassMusic) BPM... 1(最小值)到 255(最大值)。這將向下取整為整數。此屬性是 MOD 的 BPM 的直接對映,因此可以透過 MOD 本身的效果更改該值。請注意,更改此屬性會更改播放長度。在播放期間,由於緩衝,對該屬性的更改效果不會立即聽到。要減少延遲,請使用 BASS_CONFIG_BUFFER 配置選項減少緩衝區長度。 |
| BASS_ATTRIB_MUSIC_PANSEP | 聲像分離級別。(TBassMusic) 聲像分離... 0(最小值)到 100(最大值),50 = 線性。這將向下取整為整數。預設情況下,BASS 使用線性聲像“曲線”。如果要使用 FT2 的聲像,請使用大約 35 的聲像分離設定。要使用 Amiga 聲像(即全左和全右),請將其設定為 100。 |
| BASS_ATTRIB_MUSIC_PSCALER | 位置縮放器。(TBassMusic) 縮放器... 1(最小值)到 256(最大值)。這將向下取整為整數。透過 TBassChannel.GetPosition 獲取順序位置時,將透過該值縮放行。使用更高的縮放器,可以獲得更精確的位置指示。預設位置縮放器為 1。 |
| BASS_ATTRIB_MUSIC_SPEED | 速度。(TBassMusic) 速度... 0(最小值)到 255(最大值)。這將向下取整為整數。此屬性是 MOD 速度的直接對映,因此可以透過 MOD 本身的效果更改該值。“速度”是每行的節拍數。將其設定為 0 會停止並結束音樂。請注意,更改此屬性會更改播放長度。在播放期間,由於緩衝,對該屬性的更改效果不會立即聽到。要減少延遲,請使用 BASS_CONFIG_BUFFER 配置選項減少緩衝區長度。 |
| BASS_ATTRIB_MUSIC_VOL_CHAN + 通道 | 通道音量級別。(TBassMusic) 對於通道,0 = 第一個通道。此屬性使用的音量曲線始終為線性,例如 0.5 = 50。BASS_CONFIG_CURVE_VOL 配置選項設定對此沒有影響。所有通道的音量級別最初為 1(滿)。在播放期間,由於緩衝,對該屬性的更改效果不會立即聽到。要減少延遲,請使用 BASS_CONFIG_BUFFER 配置選項減少緩衝區長度。此屬性還可以用來統計 MOD 音樂中的通道數量。 |
| BASS_ATTRIB_MUSIC_VOL_GLOBAL | 全域性音量級別。(TBassMusic) 全域性音量級別... 0(最小值)到 64(最大值,IT 格式為 128)。這將向下取整為整數。此屬性是 MOD 全域性音量的直接對映,因此可以透過 MOD 本身的效果更改該值。在播放期間,由於緩衝,對該屬性的更改效果不會立即聽到。要減少延遲,請使用 BASS_CONFIG_BUFFER 配置選項減少緩衝區長度。 |
| BASS_ATTRIB_MUSIC_VOL_INST + 樂器 | 樂器/樣本音量級別。(TBassMusic) 對於樂器,0 = 第一個樂器。此屬性使用的音量曲線始終為線性,例如 0.5 = 50。BASS_CONFIG_CURVE_VOL 配置選項設定對此沒有影響。所有樂器的音量級別最初為 1(滿)。對於不使用樂器的 MOD 格式,將“樂器”讀作“樣本”。在播放期間,由於緩衝,對該屬性的更改效果不會立即聽到。要減少延遲,請使用 BASS_CONFIG_BUFFER 配置選項減少緩衝區長度。此屬性還可以用來統計 MOD 音樂中的樂器數量。 |
| BASS_ATTRIB_PAN | 聲像/平衡位置。 聲像位置... -1(全左)到 +1(全右),0 = 中心。此屬性適用於通道播放,不會影響通道的樣本資料,因此對解碼通道沒有實際影響。不過,它仍然可調,以便可以被 BASSmix 附加元件以及任何想要使用它的其他元件使用。無法設定 3D 通道的聲像位置。在使用揚聲器分配時也無法設定聲像位置,但如果需要,可以透過 DSP 函式代替(在單聲道通道上不行)。 |
| BASS_ATTRIB_VOL | 音量級別。 音量級別... 0(靜音)到 1(滿)。此屬性適用於通道播放,不會影響通道的樣本資料,因此對解碼通道沒有實際影響。不過,它仍然可調,以便可以被 BASSmix 附加元件以及任何想要使用它的其他元件使用。使用 BASS_ChannelSlideAttribute 使該屬性滑動時,可以使用負音量值淡出然後停止通道。 |
- 其他屬性可能由載入項支援,請參閱文件。
- value : 用於接收屬性值的變數。
- 其他屬性可能由載入項支援,請參閱文件。
方法 SetLink:Int(channel:TBassChannel)
描述:將兩個 MOD 音樂或流通道連結在一起。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:連結的通道將一起啟動/停止/暫停/恢復。連結是單向的,例如,通道 chan 將由通道控制代碼啟動,但反之則不會,除非在該方向設定了另一個連結。如果連結的通道已到達末尾,則當與之連結的通道啟動時,它不會重新啟動。如果希望連結的通道重新啟動,則需要先使用 SetPosition 重置其位置。
方法 Get3DPosition:Int(pos:TBass3DVector = Null, orient:TBass3DVector = Null, vel:TBass3DVector = Null)
描述:檢索具有 3D 功能的樣本、流或 MOD 音樂通道的 3D 位置。
方法 Set3DPosition:Int(pos:TBass3DVector = Null, orient:TBass3DVector = Null, vel:TBass3DVector = Null)
描述:設定具有 3D 功能的樣本、流或 MOD 音樂通道的 3D 位置。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
方法 Set3DAttributes:Int(mode:Int = -1, minDist:Float = 0, maxDist:Float = 0, iangle:Int = -1, ..
描述:設定具有 3D 功能的樣本、流或 MOD 音樂通道的 3D 屬性。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
方法 Get3DAttributes:Int(mode:Int Var, minDist:Float Var, maxDist:Float Var, iangle:Int Var, oangle:Int Var, ..
描述:檢索具有 3D 功能的樣本、流或 MOD 音樂通道的 3D 屬性。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
方法 GetData:Int(buffer:Byte Ptr, length:Int)
描述:檢索流或 MOD 音樂通道的直接樣本資料(或其 FFT 表示)。
返回值:如果發生錯誤,則返回 -1,使用 BASS_ErrorGetCode 獲取錯誤程式碼。請求 FFT 資料時,將返回從通道讀取的位元組數(以執行 FFT)。請求樣本資料時,將返回寫入緩衝區的位元組數(不一定與使用 BASS_DATA_FLOAT 標誌時讀取的位元組數相同)。使用 BASS_DATA_AVAILABLE 標誌時,將返回通道緩衝區中的位元組數。
資訊:也可以與錄音通道一起使用。此方法只能返回已寫入通道緩衝區的儘可能多的資料,因此可能無法始終獲得請求的資料量,尤其是在請求大量資料時。如果確實需要大量資料,請增加緩衝區長度(BASS_CONFIG_BUFFER)。BASS_DATA_AVAILABLE 標誌可用於檢查通道緩衝區在任何時候包含多少資料,包括停止或停滯時。當從“解碼通道”請求資料時(建立時使用 BASS_STREAM_DECODE 或 BASS_MUSIC_DECODE),沒有中間緩衝區參與,因此可以一次性解碼儘可能多的可用資料。檢索樣本資料時,8 位樣本是無符號的(0 到 255),16 位樣本是有符號的(-32768 到 32767),32 位浮點樣本的範圍從 -1 到 +1(未削波,因此實際上可以超出此範圍)。除非使用 BASS_DATA_FLOAT 標誌,在這種情況下,樣本資料將轉換為 32 位浮點(如果還沒有)。請求 FFT 資料時,將返回範圍從 0 到 1 的浮點值。只有 FFT 的前半部分是有用的,這就是 BASS 返回的內容。例如,對於 2048 個樣本的 FFT,它將返回 1024 個值;第一個值是直流分量,第二個值是通道取樣率的 1/2048 處的振幅,然後是 2/2048、3/2048 等等...除非使用 BASS_DATA_FFT_NOWINDOW 標誌,否則會將漢寧窗應用於樣本資料以減少洩漏。具有 2 個或更多個樣本通道(即立體聲或更高)的通道可能對每個單獨的通道執行 FFT,使用 BASS_DATA_FFT_INDIVIDUAL 標誌。沒有此標誌,所有通道都會合並,並執行單個單聲道 FFT。當然,執行額外的單獨 FFT 會增加所需的處理量。返回值以與通道樣本資料相同的順序交織,例如立體聲 = 左、右、左、等等... 此方法在您希望視覺化(例如頻譜分析)聲音時最有用。
方法 GetDevice:Int()
描述:檢索通道正在使用的裝置。
返回值:如果成功,則返回裝置編號,否則返回 -1。使用 BASS_ErrorGetCode 獲取錯誤程式碼。
方法 GetInfo:TBassChannelInfo()
描述:檢索通道的資訊。
方法 Lock:Int(value:Int)
描述:將流、MOD 音樂或錄音通道鎖定到當前執行緒。
資訊:鎖定通道可防止其他執行緒對它執行大多數功能,包括緩衝區更新。想要訪問鎖定通道的其他執行緒將被阻塞,直到它被解鎖,因此通道只應短暫鎖定。必須在鎖定通道的同一執行緒中解鎖通道。
方法 Seconds2Bytes:Long(pos:Double)
描述:基於通道的格式,將時間(秒)位置轉換為位元組。
返回值:如果成功,則返回轉換後的長度,否則返回 -1。使用 BASS_ErrorGetCode 獲取錯誤程式碼。
資訊:轉換基於通道建立時的初始取樣率。返回值向下取整為最接近樣本的位置。
方法 SetSync(stype:Int, param:Long, syncData:TBassSyncData)
方法 SetPosition:Int(pos:Long, mode:Int)
描述:設定樣本、MOD 音樂或流的播放位置。
資訊:將 MOD 音樂的位置設定為位元組數(不為 0)需要在 BASS_MusicLoad 呼叫中使用 BASS_MUSIC_PRESCAN 標誌。當以節拍和行設定位置時,通道的位元組位置(由 BASS_ChannelGetPosition 報告)將重置為 0。這是因為無法獲取節拍/行位置的位元組位置;可能某個位置在正常情況下永遠不會播放,或者可能被播放多次。當設定 MOD 音樂的位置時,如果 BASS_MUSIC_POSRESET 標誌處於活動狀態,所有在位置更改之前播放的音符將被停止。否則,音符將繼續播放,直到它們在 MOD 音樂中被停止。當以位元組設定位置時,BPM、速度和全域性音量將更新為它們在新位置時應有的值。否則,它們將保留在位置更改之前的狀態,除非查詢位置為 0(開頭),在這種情況下它們也會重置為起始值(使用 BASS_MUSIC_POSRESET 標誌)。當 BASS_MUSIC_POSRESETEX 標誌處於活動狀態時,BPM、速度和全域性音量會在每次查詢時重置。對於 MP3/MP2/MP1 流,如果在呼叫 BASS_StreamCreateFile 建立流時使用了 BASS_STREAM_PRESCAN 標誌,則查詢將精確到請求的位元組。否則,它將是一個近似值,通常仍然非常準確。網際網路檔案(和“緩衝”使用者檔案)流中的查詢在下載達到請求的位置後是可能的,只要檔案不是以塊形式流式傳輸(BASS_STREAM_BLOCK 標誌)。
在 SetSync 方法中使用。
在 SetFX 方法中使用。
- Reset
- GetParameters
- SetParameters
方法 Reset:Int()
描述:重置 FX 資料。
方法 GetParameters:TBassFXType()
描述:獲取當前 FX 引數。
方法 SetParameters:Int(fx:TBassFXType)
描述:設定 FX 引數。
在 GetParameters、SetParameters 和 FXForType 方法中使用。
未被使用。
Bass 流型別。
- Create
- CreateFile
- CreateMem
- CreateFileUser
- CreateURL
- CreateTStream
- GetFilePosition
- PutData
- PutFileData
- Free
- StreamCreate
- StreamCreateFile
- StreamCreateMem
- StreamCreateFileUser
- StreamCreateURL
- StreamCreateTStream
方法 Create:TBassStream(freq:Int, chans:Int, flags:Int, proc:Int(handle:TBassStream, buffer:Byte Ptr, length:Int, user:Object), user:Object)
描述:建立一個新的流。
方法 CreateFile:TBassStream(filename:String, offset:Long, length:Long, flags:Int)
描述:建立一個新的檔案。
方法 CreateMem:TBassStream(mem:Byte Ptr, length:Long, flags:Int)
描述:從記憶體中建立支援 MP3、MP2、MP1、OGG、WAV、AIFF 或外掛的樣本流。
返回值:如果成功,則返回新的流的控制代碼,否則返回 0。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- mem : 記憶體位置
- length : 記憶體中樣本的長度。
- flags : 這些標誌的任意組合。
| 常量 | 描述 |
|---|---|
| BASS_SAMPLE_FLOAT | 使用 32 位浮點樣本資料。有關資訊,請參見浮點通道。 |
| BASS_SAMPLE_MONO | 以單聲道解碼/播放流(僅限 MP3/MP2/MP1),降低 CPU 使用率(如果 它最初是立體聲)。如果在呼叫 BASS_Init 時指定了 BASS_DEVICE_MONO,則會自動應用此標誌。 |
| BASS_SAMPLE_SOFTWARE | 強制流不使用硬體混合。 |
| BASS_SAMPLE_3D | 啟用 3D 功能。這需要在呼叫 BASS_Init 時指定 BASS_DEVICE_3D 標誌,並且流必須是單聲道。SPEAKER 標誌不能與 此標誌一起使用。 |
| BASS_SAMPLE_LOOP | 迴圈檔案。此標誌可以使用 BASS_ChannelFlags 在任何時間切換。 |
| BASS_SAMPLE_FX | 啟用 DirectX 8 效應的舊實現。有關詳細資訊,請參見 DX8 效應實現部分。使用 BASS_ChannelSetFX 向流新增效應。 |
| BASS_STREAM_PRESCAN | 啟用對 MP3/MP2/MP1 流進行精確查詢(到確切的位元組)。由於整個檔案被預先掃描以查詢 查詢點,因此這也增加了建立流所花費的時間。 |
| BASS_STREAM_AUTOFREE | 在播放結束時自動釋放流。 |
| BASS_STREAM_DECODE | 解碼樣本資料,而不播放它。使用 BASS_ChannelGetData 檢索解碼後的樣本資料。BASS_SAMPLE_3D、BASS_STREAM_AUTOFREE 和 SPEAKER 標誌不能與 此標誌一起使用。BASS_SAMPLE_SOFTWARE 和 BASS_SAMPLE_FX 標誌也會被忽略。 |
| BASS_SPEAKER_xxx | 揚聲器分配標誌。當流超過立體聲時,這些標誌不起作用。 |
| BASS_UNICODE | 檔案是 Unicode (UTF-16) 檔名。 |
BASS 內建支援 MPEG、OGG、WAV 和 AIFF 檔案。對其他格式的支援可透過附加元件獲得,這些附加元件可以從 BASS 網站下載:http://www.un4seen.com/ 支援 MPEG 1.0、2.0 和 2.5 第 3 層 (MP3) 檔案,也支援第 1 層 (MP1) 和第 2 層 (MP2)。WAV 檔案可以是標準 PCM 格式,也可以使用任何 ACM 編解碼器壓縮,但編解碼器需要安裝在使用者的計算機上才能解碼 WAV。因此,您應該將編解碼器與您的軟體一起分發,或者使用 Windows 附帶的編解碼器(例如 Microsoft ADPCM)。WAV 和 AIFF 檔案支援 8 到 32 位的所有 PCM 格式,但除非使用 BASS_SAMPLE_FLOAT 標誌,否則輸出將限制為 16 位。可以透過 GetInfo 獲取檔案的原始解析度。支援多聲道(即超過立體聲)OGG、WAV 和 AIFF 檔案。使用 GetInfo 檢索有關流的格式(取樣率、解析度、聲道)的資訊。可以使用 GetLength 檢索流的播放長度。從記憶體中流式傳輸時,記憶體通常必須在流之前不被釋放。
OSX 注意:檔名採用 UTF-8 格式,BASS_UNICODE 標誌不起作用。所有混合都在軟體中完成(由 BASS 完成),因此 BASS_SAMPLE_SOFTWARE 標誌不起作用。不支援壓縮的 WAV 檔案,只支援標準 PCM。
方法 CreateFileUser:TBassStream()
描述:尚未實現。
方法 CreateURL:TBassStream(url:String, offset:Int, flags:Int, proc(buffer:Byte Ptr, length:Int, data:Object), user:Object)
描述:從網際網路上建立支援 MP3、MP2、MP1、OGG、WAV、AIFF 或外掛的檔案的樣本流,可以選擇在回撥函式中接收下載的資料。
方法 CreateTStream:TBassStream(stream:TStream, system:Int, flags:Int)
描述:建立一個標準流。
方法 GetFilePosition:Long(mode:Int)
描述:檢索流的檔案位置/狀態。
方法 PutData(buffer:Byte Ptr, length:Int)
描述:尚未實現。
方法 PutFileData(buffer:Byte Ptr, length:Int)
描述:尚未實現。
方法 Free:Int()
描述:釋放樣本流的資源,包括它擁有的任何同步/DSP/FX。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
函式 StreamCreate:TBassStream(freq:Int, chans:Int, flags:Int, proc:Int(handle:TBassStream, buffer:Byte Ptr, length:Int, user:Object), user:Object)
描述:建立一個新的流。
函式 StreamCreateFile:TBassStream(filename:String, offset:Int, length:Int, flags:Int)
描述:建立一個新的檔案流。
函式 StreamCreateMem:TBassStream(mem:Byte Ptr, length:Long, flags:Int)
描述:從記憶體中建立支援 MP3、MP2、MP1、OGG、WAV、AIFF 或外掛的樣本流。
函式 StreamCreateFileUser:TBassStream()
描述:尚未實現。
函式 StreamCreateURL:TBassStream(url:String, offset:Int, flags:Int, proc(buffer:Byte Ptr, length:Int, user:Object), data:Object)
描述:從網際網路上建立支援 MP3、MP2、MP1、OGG、WAV、AIFF 或外掛的檔案的樣本流,可以選擇在回撥函式中接收下載的資料。
函式 StreamCreateTStream:TBassStream(stream:TStream, system:Int, flags:Int)
描述:建立一個標準流。
音訊樣本。
- Create
- FileLoad
- MemLoad
- Free
- GetChannel
- 停止
- GetInfo
- SetInfo
- GetData
- SetData
- GetChannels
- SampleCreate
- SampleFileLoad
- SampleMemLoad
方法 Create:TBassSample(length:Int, freq:Int, channels:Int, maxPlaybacks:Int, flags:Int)
描述: 建立一個新的樣本。
方法 FileLoad:TBassSample(file:String, offset:Long, length:Int, maxPlaybacks:Int, flags:Int)
描述: 載入檔案樣本。
方法 MemLoad:TBassSample(mem:Byte Ptr, length:Int, maxPlaybacks:Int, flags:Int)
描述: 從記憶體中載入檔案樣本。
方法 Free:Int()
描述: 釋放樣本的資源。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
方法 GetChannel:TBassChannel(onlyNew:Int)
描述: 為樣本建立/初始化回放通道。
返回值: 如果成功,則返回新通道,否則返回 Null。使用 TBass.ErrorGetCode() 獲取錯誤程式碼。
資訊: 使用 GetInfo() 和 SetInfo() 設定樣本的預設屬性,這些屬性在建立通道時使用。建立後,可以透過 TBassChannel::SetAttribute、TBassChannel::Set3DAttributes 和 TBassChannel::Set3DPosition 更改通道的屬性。在開始回放 3D 樣本之前,應該呼叫 TBass.Apply3D,即使您只想使用預設設定。樣本通道在被新通道覆蓋時或透過 TBassChannel::Stop、TBassSample::Stop 或 TBass::Stop 停止時會自動釋放。如果您希望停止通道並重新使用它,則應使用 TBassChannel::Pause 來暫停它。可以透過嘗試在函式呼叫中使用控制代碼來確定通道是否仍然存在。還可以透過 TBassSample::GetChannels 獲取所有現有樣本通道的列表。新通道的初始狀態為暫停 (BASS_ACTIVE_PAUSED)。這可以防止通道在播放之前被另一個函式呼叫佔用,除非由於缺少空閒通道而被覆蓋。樣本的所有通道共享相同的樣本資料,並且僅具有其自己的回放狀態資訊(音量/位置/等)。引數
- onlyNew : 不要回收/覆蓋樣本的任何現有通道?
方法 Stop:Int()
描述: 停止樣本的所有例項。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊: 如果樣本正在同時多次播放,則呼叫此函式將停止它們全部,這顯然比多次呼叫 BASS_ChannelStop 更簡單。
方法 GetInfo:TBassSampleInfo()
描述: 檢索樣本的預設屬性和其他資訊。
方法 SetInfo:Int(info:TBassSampleInfo)
描述: 設定樣本的預設屬性。
返回值: 如果成功,則返回 True,否則返回 False。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊: 使用此方法和 GetInfo() 來編輯樣本的預設屬性。更改樣本的預設屬性不會影響任何現有通道,它只會影響隨後透過 GetChannel() 建立的通道。VAM 設定是例外,對它的更改將應用於樣本的所有通道在它們下次回放 (TBassChannel::Play) 時。使用 TBassChannel::SetAttribute 和 TBassChannel::Set3DAttributes 更改現有樣本通道的屬性。TBassSampleInfo 的 length、max、origres 和 chans 成員不可修改;任何更改都會被忽略。BASS_SAMPLE_8BITS、BASS_SAMPLE_MONO、BASS_SAMPLE_3D、BASS_SAMPLE_MUTEMAX、BASS_SAMPLE_SOFTWARE 和 BASS_SAMPLE_VAM 標誌也不能更改。
方法 GetData:Int(buffer:Byte Ptr)
描述: 檢索樣本資料的副本。
資訊:引數
- buffer : 指向要接收資料的緩衝區的指標。緩衝區必須足夠大以接收樣本資料,
- 其大小可以透過 GetInfo() 獲取。
方法 SetData:Int(buffer:Byte Ptr)
描述: 設定樣本資料。
返回值: 如果成功,則返回 True,否則返回 False。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊: 可以透過 GetInfo() 獲取資料的所需長度和格式。樣本資料可以在任何時間設定,包括在回放期間。引數
- buffer : 指向要接收資料的緩衝區的指標。
方法 GetChannels:TBassSample[]()
描述: TODO
函式 SampleCreate:TBassSample(length:Int, freq:Int, channels:Int, maxPlaybacks:Int, flags:Int)
描述: 建立一個新的樣本。
資訊: 樣本的初始內容是未定義的。應使用 SetData() 來設定樣本資料。除非使用 BASS_SAMPLE_SOFTWARE 標誌,否則樣本將在硬體資源可用時使用硬體混合。使用 BASS_GetInfo 檢視是否有硬體混合資源可用,以及硬體支援哪些樣本格式。BASS_SAMPLE_VAM 標誌允許樣本透過硬體和軟體播放,該決定是在樣本播放時而不是載入時做出的。樣本的 VAM 選項透過 SetInfo() 設定。要播放樣本,首先必須使用 GetChannel() 獲取一個通道,然後可以使用 TBassChannel::Play 播放它。如果您想播放大型或一次性樣本,那麼最好使用 TBassStream::Create 代替進行流式傳輸。
函式 SampleFileLoad:TBassSample(file:String, offset:Long, length:Int, maxPlaybacks:Int, flags:Int)
描述: 載入檔案樣本。
函式 SampleMemLoad:TBassSample(mem:Byte Ptr, length:Int, maxPlaybacks:Int, flags:Int)
描述: 從記憶體中載入檔案樣本。
與 TBassSample::GetInfo 和 TBassSample::SetInfo 一起使用,以檢索和設定樣本的預設回放屬性。
- GetFreq
- SetFreq
- GetVolume
- SetVolume
- GetPan
- SetPan
- GetFlags
- SetFlags
- GetLength
- GetMax
- GetOrigRes
- GetChans
- GetMinGap
- SetMinGap
- GetMode3D
- SetMode3D
- GetMinDist
- SetMinDist
- GetMaxDist
- SetMaxDist
- GetIAngle
- SetIAngle
- GetOAngle
- SetOAngle
- GetOutVol
- SetOutVol
- GetVAM
- SetVAM
- GetPriority
- SetPriority
方法 GetFreq:Int()
描述: 預設取樣率。
方法 SetFreq(value:Int)
描述: 預設取樣率。
方法 GetVolume:Float()
描述: 預設音量... 0(靜音)到 1(滿音量)。
方法 SetVolume(value:Float)
描述: 預設音量... 0(靜音)到 1(滿音量)。
方法 GetPan:Float()
描述: 預設聲像位置... -1(全左)到 +1(全右),0 = 中心。
方法 SetPan(value:Float)
描述: 預設聲像位置... -1(全左)到 +1(全右),0 = 中心。
方法 GetFlags:Int()
描述: 這些標誌的組合。
資訊:
| 常量 | 描述 |
|---|---|
| BASS_SAMPLE_8BITS | 8 位解析度。如果既沒有此標誌也沒有 BASS_SAMPLE_FLOAT 標誌,則樣本為 16 位。 |
| BASS_SAMPLE_FLOAT | 32 位浮點數。 |
| BASS_SAMPLE_LOOP | 迴圈? |
| BASS_SAMPLE_3D | 樣本啟用了 3D 功能。 |
| BASS_SAMPLE_MUTEMAX | 當樣本位於(或超出)其最大距離時靜音樣本(僅限 3D 樣本)。 |
| BASS_SAMPLE_SOFTWARE | 樣本不使用硬體混合... 它正在透過 DirectSound 在軟體中混合。 |
| BASS_SAMPLE_VAM | 啟用了 DX7 語音分配和管理功能(請參閱 VAM)。 |
| BASS_SAMPLE_OVER_VOL | 覆蓋:音量最低的通道被覆蓋。 |
| BASS_SAMPLE_OVER_POS | 覆蓋:播放時間最長的通道被覆蓋。 |
| BASS_SAMPLE_OVER_DIST | 覆蓋:距離(聽眾)最遠的通道被覆蓋(僅限 3D 樣本)。 |
方法 SetFlags(flags:Int)
描述: 這些標誌的組合。
資訊:
| 常量 | 描述 |
|---|---|
| BASS_SAMPLE_8BITS | 8 位解析度。如果既沒有此標誌也沒有 BASS_SAMPLE_FLOAT 標誌,則樣本為 16 位。 |
| BASS_SAMPLE_FLOAT | 32 位浮點數。 |
| BASS_SAMPLE_LOOP | 迴圈? |
| BASS_SAMPLE_3D | 樣本啟用了 3D 功能。 |
| BASS_SAMPLE_MUTEMAX | 當樣本位於(或超出)其最大距離時靜音樣本(僅限 3D 樣本)。 |
| BASS_SAMPLE_SOFTWARE | 樣本不使用硬體混合... 它正在透過 DirectSound 在軟體中混合。 |
| BASS_SAMPLE_VAM | 啟用了 DX7 語音分配和管理功能(請參閱 VAM)。 |
| BASS_SAMPLE_OVER_VOL | 覆蓋:音量最低的通道被覆蓋。 |
| BASS_SAMPLE_OVER_POS | 覆蓋:播放時間最長的通道被覆蓋。 |
| BASS_SAMPLE_OVER_DIST | 覆蓋:距離(聽眾)最遠的通道被覆蓋(僅限 3D 樣本)。 |
方法 GetLength:Int()
描述: 以位元組為單位的長度。
方法 GetMax:Int()
描述: 同時播放的最大次數。
方法 GetOrigRes:Int()
描述: 原始解析度(每樣本位數)... 0 = 未定義。
方法 GetChans:Int()
描述: 通道數... 1 = 單聲道,2 = 立體聲,等等...
方法 GetMinGap:Int()
描述: 使用 TBassSample.GetChannel 建立通道之間的最小時間間隔(以毫秒為單位)。
資訊: 這可以用來防止由於非常接近地多次播放樣本而導致的顫音效果。預設設定(在載入/建立樣本後)為 0(停用)。
方法 SetMinGap(value:Int)
描述: 使用 TBassSample.GetChannel 建立通道之間的最小時間間隔(以毫秒為單位)。
資訊: 這可以用來防止由於非常接近地多次播放樣本而導致的顫音效果。預設設定(在載入/建立樣本後)為 0(停用)。
方法 GetMode3D:Int()
描述: 3D 處理模式... 以下標誌之一。
資訊:
| 常量 | 描述 |
|---|---|
| BASS_3DMODE_NORMAL | 正常的 3D 處理。 |
| BASS_3DMODE_RELATIVE | 樣本的 3D 位置(位置/速度/方向)相對於 聽眾。當聽眾的位置/速度/方向透過 BASS_Set3DPosition 更改時,樣本的 相對於聽眾的位置不會改變。 |
| BASS_3DMODE_OFF | 關閉樣本上的 3D 處理,聲音將在中心播放。 |
方法 SetMode3D(value:Int)
描述: 3D 處理模式... 以下標誌之一。
資訊:
| 常量 | 描述 |
|---|---|
| BASS_3DMODE_NORMAL | 正常的 3D 處理。 |
| BASS_3DMODE_RELATIVE | 樣本的 3D 位置(位置/速度/方向)相對於 聽眾。當聽眾的位置/速度/方向透過 BASS_Set3DPosition 更改時,樣本的 相對於聽眾的位置不會改變。 |
| BASS_3DMODE_OFF | 關閉樣本上的 3D 處理,聲音將在中心播放。 |
方法 GetMinDist:Float()
描述: 最小距離。
資訊: 當聽眾在該距離內時,樣本的音量達到最大值。
方法 SetMinDist(value:Float)
描述: 最小距離。
資訊: 當聽眾在該距離內時,樣本的音量達到最大值。
方法 GetMaxDist:Float()
描述: 最大距離。
資訊: 當聽眾超出該距離時,樣本的音量停止下降。
方法 SetMaxDist(value:Float)
描述: 最大距離。
資訊: 當聽眾超出該距離時,樣本的音量停止下降。
方法 GetIAngle:Int()
描述: 內側投影錐體的角度(以度為單位)... 0(無錐體)到 360(球體)。
方法 SetIAngle(value:Int)
描述: 內側投影錐體的角度(以度為單位)... 0(無錐體)到 360(球體)。
方法 GetOAngle:Int()
描述: 外側投影錐體的角度(以度為單位)... 0(無錐體)到 360(球體)。
方法 SetOAngle(value:Int)
描述: 外側投影錐體的角度(以度為單位)... 0(無錐體)到 360(球體)。
方法 GetOutVol:Float()
描述: 外側投影錐體外的增量音量... 0(靜音)到 1(滿音量)。
方法 SetOutVol(value:Float)
描述: 外側投影錐體外的增量音量... 0(靜音)到 1(滿音量)。
方法 GetVAM:Int()
描述: 語音分配/管理標誌... 以下標誌的組合
| 常量 | 描述 |
|---|---|
| BASS_VAM_HARDWARE | 在硬體中播放樣本。如果硬體沒有可用語音,則播放呼叫將失敗。 |
| BASS_VAM_SOFTWARE | 在軟體中(即非加速)播放樣本。此標誌不可與其他 VAM 標誌一起使用。 |
| BASS_VAM_TERM_TIME | 如果沒有空閒的硬體語音,則要終止的緩衝區將是剩餘播放時間最少的緩衝區。(注意:此標誌啟用硬體資源竊取... 如果硬體沒有可用語音,則當前正在播放的緩衝區將被停止以騰出空間用於新緩衝區。僅具有 VAM 啟用的樣本被視為要終止。) |
| BASS_VAM_TERM_DIST | 如果沒有空閒的硬體語音,則要終止的緩衝區將是
如果樣本是用 BASS_SAMPLE_MUTEMAX 標誌載入/建立的,並且超出了其最大距離(maxdist)。如果沒有緩衝區 滿足此條件,則播放呼叫將失敗。(注意:此標誌啟用硬體資源搶佔......如果硬體沒有可用的聲音,則當前播放的緩衝區將被停止以騰出空間用於新緩衝區。只有啟用了 VAM 的樣本才會被考慮終止。) |
| BASS_VAM_TERM_PRIO | 如果沒有可用的硬體聲音,將終止優先順序最低的緩衝區 優先順序最低。此標誌可與 TERM_TIME 或 TERM_DIST 標誌一起使用,如果多個聲音具有相同的 優先順序,然後使用時間或距離來決定哪個要終止。(注意:此標誌啟用硬體資源搶佔......如果硬體沒有可用的聲音,則當前播放的緩衝區將被停止以騰出空間用於新緩衝區。只有啟用了 VAM 的樣本才會被考慮終止。) |
方法 SetVAM(value:Int)
描述: 語音分配/管理標誌... 以下標誌的組合
| 常量 | 描述 |
|---|---|
| BASS_VAM_HARDWARE | 在硬體中播放樣本。如果硬體沒有可用語音,則播放呼叫將失敗。 |
| BASS_VAM_SOFTWARE | 在軟體中(即非加速)播放樣本。此標誌不可與其他 VAM 標誌一起使用。 |
| BASS_VAM_TERM_TIME | 如果沒有空閒的硬體語音,則要終止的緩衝區將是剩餘播放時間最少的緩衝區。(注意:此標誌啟用硬體資源竊取... 如果硬體沒有可用語音,則當前正在播放的緩衝區將被停止以騰出空間用於新緩衝區。僅具有 VAM 啟用的樣本被視為要終止。) |
| BASS_VAM_TERM_DIST | 如果沒有空閒的硬體語音,則要終止的緩衝區將是
如果樣本是用 BASS_SAMPLE_MUTEMAX 標誌載入/建立的,並且超出了其最大距離(maxdist)。如果沒有緩衝區 滿足此條件,則播放呼叫將失敗。(注意:此標誌啟用硬體資源搶佔......如果硬體沒有可用的聲音,則當前播放的緩衝區將被停止以騰出空間用於新緩衝區。只有啟用了 VAM 的樣本才會被考慮終止。) |
| BASS_VAM_TERM_PRIO | 如果沒有可用的硬體聲音,將終止優先順序最低的緩衝區。此標誌可與 TERM_TIME 或 TERM_DIST 標誌一起使用,如果多個聲音具有相同的優先順序,然後使用時間或距離來決定哪個要終止。(注意:此標誌啟用硬體資源搶佔......如果硬體沒有可用的聲音,則當前播放的緩衝區將被停止以騰出空間用於新緩衝區。只有啟用了 VAM 的樣本才會被考慮終止。) |
方法 GetPriority:Int()
描述:優先順序,與 BASS_VAM_TERM_PRIO 標誌一起使用......0(最小)到 $FFFFFFFF(最大)。
方法 SetPriority(value:Int)
描述:優先順序,與 BASS_VAM_TERM_PRIO 標誌一起使用......0(最小)到 $FFFFFFFF(最大)。
Mod 音樂檔案:MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。
- FileLoad
- MemLoad
- Free
- MusicFileLoad
- MusicMemLoad
方法 FileLoad:TBassMusic(file:String, offset:Long, length:Int, flags:Int, freq:Int)
描述:載入 MOD 音樂檔案;MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。
返回值:如果成功,則返回載入的 MOD 音樂的控制代碼,否則返回 Null。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
方法 MemLoad:TBassMusic(mem:Byte Ptr, length:Int, flags:Int, freq:Int)
描述:從記憶體中載入 MOD 音樂檔案;MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。
返回值:如果成功,則返回載入的 MOD 音樂的控制代碼,否則返回 Null。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
方法 Free:Int()
描述:釋放 MOD 音樂的資源,包括其任何同步/DSP/FX。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
函式 MusicFileLoad:TBassMusic(file:String, offset:Long, length:Int, flags:Int, freq:Int)
描述:載入 MOD 音樂檔案;MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。
返回值:如果成功,則返回載入的 MOD 音樂的控制代碼,否則返回 Null。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- file:檔名
- offset:檔案偏移量,從中載入 MOD 音樂
- length:資料長度......0 = 使用所有資料,直到檔案末尾
- flags:這些標誌的組合。
| 常量 | 描述 |
|---|---|
| BASS_SAMPLE_8BITS | 使用 8 位解析度。如果未指定此標誌或 BASS_SAMPLE_FLOAT 標誌,則樣本資料將為 16 位。 |
| BASS_SAMPLE_FLOAT | 使用 32 位浮點樣本資料。有關資訊,請參見浮點通道。 |
| BASS_SAMPLE_MONO | 以單聲道解碼/播放 MOD 音樂(比立體聲使用更少的 CPU)。如果在呼叫 BASS_Init 時指定了 BASS_DEVICE_MONO,則此標誌將自動應用。 |
| BASS_SAMPLE_SOFTWARE | 強制 MOD 音樂不使用硬體混音。 |
| BASS_SAMPLE_3D | 啟用 3D 功能。這需要在呼叫 BASS_Init 時指定 BASS_DEVICE_3D 標誌。3D 通道也必須是單聲道的,因此 BASS_SAMPLE_MONO 將自動應用。SPEAKER 標誌不能與此標誌一起使用。 |
| BASS_SAMPLE_FX | 啟用 DirectX 8 效果的舊實現。有關詳細資訊,請參閱 DX8 效果實現部分。使用 BASS_ChannelSetFX 為音樂新增效果。 |
| BASS_SAMPLE_LOOP | 迴圈播放音樂。 |
| BASS_MUSIC_NONINTER | 使用非插值樣本混音。這通常會降低音質,但對晶片音樂來說可能很好。 |
| BASS_MUSIC_SINCINTER | 使用 sinc 插值樣本混音。這會提高音質,但也需要更多處理。如果未指定此標誌或 BASS_MUSIC_NONINTER 標誌,則使用線性插值。 |
| BASS_MUSIC_RAMP | 使用“正常”斜坡(如 FastTracker 2 中使用的那樣)。 |
| BASS_MUSIC_RAMPS | 使用“敏感”斜坡。 |
| BASS_MUSIC_SURROUND | 將 XMPlay 的環繞聲應用於音樂(在單聲道中忽略)。 |
| BASS_MUSIC_SURROUND2 | 將 XMPlay 的環繞聲模式 2 應用於音樂(在單聲道中忽略)。 |
| BASS_MUSIC_FT2MOD | 以 FastTracker 2 的方式播放 .MOD 檔案。 |
| BASS_MUSIC_PT1MOD | 以 ProTracker 1 的方式播放 .MOD 檔案。 |
| BASS_MUSIC_POSRESET | 在尋道時停止所有音符(BASS_ChannelSetPosition)。 |
| BASS_MUSIC_POSRESETEX | 停止所有音符並在尋道時重置 bpm/等。 |
| BASS_MUSIC_STOPBACK | 在播放向後跳躍效果時停止音樂。這會阻止永遠不會到達結尾的音樂進入無限迴圈。某些 MOD 音樂被設計為到處跳躍,因此此標誌會導致這些音樂過早停止。如果此標誌與 BASS_SAMPLE_LOOP 標誌一起使用,則音樂不會停止,但任何 BASS_SYNC_END 同步都會被觸發。 |
| BASS_MUSIC_PRESCAN | 計算音樂的播放長度,並啟用以位元組為單位的尋道。這會稍微增加載入音樂所需的時間,具體取決於音樂的長度。對於迴圈播放的音樂,會計算到迴圈發生之前的長度。使用 BASS_ChannelGetLength 檢索長度。 |
| BASS_MUSIC_NOSAMPLE | 不要載入樣本。這會減少載入音樂所需的時間(和記憶體),尤其是在 MO3 檔案的情況下,如果您只是想獲取音樂的文字和/或長度而無需播放它,這很有用。 |
| BASS_MUSIC_AUTOFREE | 在播放結束時自動釋放音樂。請注意,某些音樂具有無限迴圈,因此永遠不會自行結束。 |
| BASS_MUSIC_DECODE | 解碼/渲染樣本資料,而不播放它。使用 BASS_ChannelGetData 檢索解碼後的樣本資料。BASS_SAMPLE_3D、BASS_STREAM_AUTOFREE 和 SPEAKER 標誌不能與此標誌一起使用。BASS_SAMPLE_SOFTWARE 和 BASS_SAMPLE_FX 標誌也會被忽略。 |
| BASS_SPEAKER_xxx | 揚聲器分配標誌。使用單聲道揚聲器分配標誌時,BASS_SAMPLE_MONO 標誌將自動應用。 |
| BASS_UNICODE | 檔案是 Unicode (UTF-16) 檔名。 |
- freq:以哪個取樣率渲染/播放 MOD 音樂......0 = TBass.Init 呼叫中指定的速率。
BASS 使用與 XMPlay 相同的程式碼來支援其 MOD 音樂,從而提供最準確的 MO3 / IT / XM / S3M / MTM / MOD / UMX 檔案再現。MO3 的處理方式與普通 MOD 音樂完全相同。MO3 的優點是,它們可以小很多,但質量幾乎相同。播放 MO3 不會比播放原始 MOD 版本使用更多的 CPU 功率。唯一的區別是載入時間略長,因為樣本正在被解碼。MO3 檔案是使用 BASS 網站提供的 MO3 編碼器建立的。DMO 效果(與 BASS_ChannelSetFX 相同)可用於使用 Modplug Tracker 建立的 IT 和 XM 檔案(以及它們的 MO3 版本)。這允許將效果新增到音軌,而無需訴諸 MP3 或 OGG 版本,因此它可以保持較小的尺寸,並且仍然聽起來很fancy。當然,效果需要一些 CPU,因此如果效能至關重要,則不應隨意使用。DirectX 8(或更高版本)是聽到效果的必要條件;如果沒有,音樂仍然可以播放,但效果會被停用。斜坡不會佔用很多額外的處理,並且透過消除“咔嗒聲”來提高音質。敏感斜坡會保留尖銳的攻擊樣本,而正常斜坡會導致它們失去一些影響。通常,建議將正常斜坡用於 XM,將敏感斜坡用於其他格式。但是,某些 XM 也可能在使用敏感斜坡時聽起來更好。從記憶體中載入 MOD 音樂後(mem = TRUE),可以安全地丟棄記憶體。
OSX 注意事項:檔名採用 UTF-8 格式,BASS_UNICODE 標誌無效。所有混音都在軟體(由 BASS)中完成,因此 BASS_SAMPLE_SOFTWARE 標誌無效。
函式 MusicMemLoad:TBassMusic(mem:Byte Ptr, length:Int, flags:Int, freq:Int)
描述:從記憶體中載入 MOD 音樂檔案;MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。
返回值:如果成功,則返回載入的 MOD 音樂的控制代碼,否則返回 Null。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
與 TBassChannel.GetInfo 一起使用,以檢索有關通道的資訊。
BASS_SAMPLE_SOFTWARE 標誌指示通道的樣本資料是否由硬體混合到最終輸出中。它不指示(在流或 MOD 音樂的情況下)生成樣本資料所需的處理是否由硬體完成,此處理始終由軟體完成。
對於錄音通道,BASS_STREAM_DECODE 標誌指示它沒有使用 RECORDPROC 回撥函式。
BASS 支援 8/16/32 位樣本資料,因此,例如,如果 WAV 檔案使用其他樣本解析度,則 BASS 必須對其進行轉換。origres 成員可用於檢查原始解析度是什麼。
- GetFreq
- GetChannels
- GetFlags
- GetCType
- GetOrigRes
- GetSample
- GetFilename
方法 GetFreq:Int()
描述:預設播放速率。
方法 GetChannels:Int()
描述:通道數量......1=單聲道,2=立體聲,等等......
方法 GetFlags:Int()
描述: 這些標誌的組合。
資訊:
| 常量 | 描述 |
|---|---|
| BASS_SAMPLE_8BITS | 通道的解析度為 8 位。如果此標誌或 BASS_SAMPLE_FLOAT 標誌都不存在,則通道的解析度為 16 位。 |
| BASS_SAMPLE_FLOAT | 通道的解析度為 32 位浮點。 |
| BASS_SAMPLE_LOOP | 通道是迴圈的。 |
| BASS_SAMPLE_3D | 通道啟用了 3D 功能。 |
| BASS_SAMPLE_SOFTWARE | 通道未使用硬體混音。 |
| BASS_SAMPLE_VAM | 通道使用 DX7 音效分配和管理功能。(僅限 HCHANNEL) |
| BASS_SAMPLE_MUTEMAX | 通道在達到(或超過)最大距離時靜音。(HCHANNEL) |
| BASS_SAMPLE_FX | 通道啟用了帶有“帶有 FX 標記”的 DX8 效果實現。(HSTREAM/HMUSIC) |
| BASS_STREAM_RESTRATE | 網際網路檔案下載速率受到限制。(HSTREAM) |
| BASS_STREAM_BLOCK | 網際網路檔案(或“緩衝”使用者檔案)以小塊的形式進行流式傳輸。(HSTREAM) |
| BASS_STREAM_AUTOFREE | 通道將在結束時自動釋放。(HSTREAM/HMUSIC) |
| BASS_STREAM_DECODE | 通道是一個“解碼通道”。(HSTREAM/HMUSIC/HRECORD) |
| BASS_MUSIC_RAMP | MOD 音樂使用“正常”斜坡。(HMUSIC) |
| BASS_MUSIC_RAMPS | MOD 音樂使用“敏感”斜坡。(HMUSIC) |
| BASS_MUSIC_SURROUND | MOD 音樂使用環繞聲。(HMUSIC) |
| BASS_MUSIC_SURROUND2 | MOD 音樂使用環繞聲模式 2。(HMUSIC) |
| BASS_MUSIC_NONINTER | MOD 音樂使用非插值混音。(HMUSIC) |
| BASS_MUSIC_FT2MOD | MOD 音樂使用 FastTracker 2 .MOD 播放。(HMUSIC) |
| BASS_MUSIC_PT1MOD | MOD 音樂使用 ProTracker 1 .MOD 播放。(HMUSIC) |
| BASS_MUSIC_STOPBACK | 當播放向後跳轉效果時,MOD 音樂將停止。(HMUSIC) |
| BASS_SPEAKER_xxx | 揚聲器分配標誌。(HSTREAM/HMUSIC) |
| BASS_UNICODE | filename 是一個 Unicode (UTF-16) 檔名。 |
方法 GetCType:Int()
描述: 它是通道的型別,可以是以下之一。
資訊:
| 常量 | 描述 |
|---|---|
| BASS_CTYPE_SAMPLE | 樣本通道。(HCHANNEL) |
| BASS_CTYPE_STREAM | 使用者樣本流。這也可以用作標誌來測試通道是否為任何型別的 HSTREAM。 |
| BASS_CTYPE_STREAM_OGG | Ogg Vorbis 格式流。 |
| BASS_CTYPE_STREAM_MP1 | MPEG 第 1 層格式流。 |
| BASS_CTYPE_STREAM_MP2 | MPEG 第 2 層格式流。 |
| BASS_CTYPE_STREAM_MP3 | MPEG 第 3 層格式流。 |
| BASS_CTYPE_STREAM_AIFF | 音訊 IFF 格式流。 |
| BASS_CTYPE_STREAM_WAV_PCM | 整數 PCM WAVE 格式流。 |
| BASS_CTYPE_STREAM_WAV_FLOAT | 浮點 PCM WAVE 格式流。 |
| BASS_CTYPE_STREAM_WAV | WAVE 格式標誌。這可以用來測試通道是否為任何型別的 WAVE 格式。編解碼器(檔案的“wFormatTag”)在 LOWORD 中指定。 |
| BASS_CTYPE_MUSIC_MOD | 通用 MOD 格式音樂。這也可以用作標誌來測試通道是否為任何型別的 HMUSIC。 |
| BASS_CTYPE_MUSIC_MTM | MultiTracker 格式音樂。 |
| BASS_CTYPE_MUSIC_S3M | ScreamTracker 3 格式音樂。 |
| BASS_CTYPE_MUSIC_XM | FastTracker 2 格式音樂。 |
| BASS_CTYPE_MUSIC_IT | Impulse Tracker 格式音樂。 |
| BASS_CTYPE_MUSIC_MO3 | MO3 格式標誌,與 BASS_CTYPE_MUSIC 型別之一結合使用。 |
| BASS_CTYPE_RECORD | 錄音通道。(HRECORD) |
方法 GetOrigRes:Int()
描述: 原始解析度(每樣本位數)... 0 = 未定義。
方法 GetSample:TBassSample()
描述: 在通道上播放的樣本。(僅限 HCHANNEL)
方法 GetFilename:String()
描述: 與通道關聯的檔名。(僅限 HSTREAM)
TBass
[edit | edit source]Bass 資料型別。
- Free
- Init
- ErrorGetCode
- GetVolume
- SetVolume
- Start
- SetDevice
- GetDevice
- GetCPU
- 暫停
- GetVersion
- 更新
- GetDeviceInfo
- GetConfig
- SetConfig
- Apply3D
- GetEAXParameters
- SetEAXParameters
- Get3DFactors
- Set3DFactors
- GetInfo
- PluginLoad
TBass: 函式
[edit | edit source]Function Free:Int()
描述: 釋放輸出裝置使用的所有資源,包括其所有樣本、流和 MOD 音樂。
Function Init:Int(device:Int, freq:Int, flags:Int, win:Byte Ptr = Null, clsid:Byte Ptr = Null)
描述: 初始化輸出裝置。
返回值: 如果裝置成功初始化,則返回 True,否則返回 False。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊: 在使用任何樣本、流或 MOD 音樂函式之前,必須成功呼叫此函式。無需呼叫此函式即可使用錄製功能。即使沒有音效卡(或沒有安裝 DirectX),"無聲"裝置也允許載入和播放 MOD 音樂。這樣您就可以在沒有音效卡的情況下(或沒有安裝 DirectX 的情況下)仍然使用 MOD 音樂作為同步器。解碼通道也可以在使用“無聲”裝置時使用。當使用“無聲”裝置時,您仍然應該設定其他引數,就像您通常會做的那樣。呼叫此函式時指定的格式(取樣率等)實際上只對使用 VxD 驅動程式的裝置的輸出有效。使用 WDM 驅動程式時,輸出格式會根據播放的通道的格式以及裝置支援的格式自動設定。而在 Vista 中,輸出格式由使用者在控制面板中的選擇決定;可以使用 BASS_GetInfo 檢查它是什麼。為了便於參考... Windows XP/2000 僅使用 WDM 驅動程式。Windows Me/98SE 可以使用 WDM 或更舊的 VxD 驅動程式模型。Windows 98/95 僅使用 VxD 驅動程式。當指定類識別符號 (clsid) 時,在成功初始化後,可以使用 BASS_GetDSoundObject 檢索 DirectSound 物件,並透過它訪問物件可能提供的任何特殊介面。BASS API 透過上下文切換系統支援同時使用多個裝置;函式呼叫中沒有額外的“裝置”引數,而是先設定要使用的裝置,然後再呼叫函式。SetDevice 用於切換當前裝置。成功後,BASS_Init 會自動將當前執行緒的裝置設定為剛剛初始化的裝置。當使用預設裝置 (device = -1) 時,可以使用 GetDevice 找出它被對映到哪個裝置。
OSX 說明: win 和 clsid 引數未使用。BASS_DEVICE_LATENCY、BASS_DEVICE_CPSPEAKERS 和 BASS_DEVICE_SPEAKERS 標誌也會被忽略;延遲會自動計算,揚聲器數量始終被準確地檢測到。指定的樣本格式對裝置輸出沒有影響;可以使用 BASS_GetInfo 檢查它是什麼。
Function ErrorGetCode:Int()
描述: 檢索當前執行緒中最近一次 BASS 函式呼叫的錯誤程式碼。
Function GetVolume:Float()
描述: 檢索當前主音量級別。
返回值: 如果成功,則返回音量級別,否則返回 -1。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
Function SetVolume:Int(volume:Float)
描述: 設定輸出主音量。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊: 由於底層精度差異,實際音量級別可能與請求的音量級別不完全相同。可以使用 BASS_GetVolume 確認音量是什麼。此函式會影響使用相同輸出裝置的所有應用程式的音量級別。如果您只想影響應用程式聲音的級別,則應改為使用 BASS_ATTRIB_VOL 屬性和/或 BASS_CONFIG_GVOL_MUSIC / BASS_CONFIG_GVOL_SAMPLE / BASS_CONFIG_GVOL_STREAM 配置選項。當使用多個裝置時,當前執行緒的裝置設定(如使用 BASS_SetDevice 設定)決定此函式呼叫適用於哪個裝置。
Function Start:Int()
描述: 啟動(或恢復)輸出。
返回值: 如果成功,則返回 True,否則返回 False。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊: 輸出由 TBass.Init 自動啟動,因此除非您已停止或暫停輸出,否則無需使用此函式。當使用多個裝置時,當前執行緒的裝置設定(如使用 SetDevice 設定)決定此函式呼叫適用於哪個裝置。
Function SetDevice:Int(device:Int)
描述: 設定用於後續呼叫的裝置。
返回值: 如果成功,則返回 TRUE,否則返回 FALSE。使用 BASS_ErrorGetCode 獲取錯誤程式碼。
資訊: BASS API 透過上下文切換系統支援同時使用多個裝置;函式呼叫中沒有額外的“裝置”引數,而是先設定要使用的裝置,然後再呼叫函式。使用該裝置選擇的函式如下: Free、GetDSoundObject、GetInfo、Start、Stop、Pause、SetVolume、GetVolume、Set3DFactors、Get3DFactors、Set3DPosition、Get3DPosition、SetEAXParameters、GetEAXParameters。它還決定使用哪個裝置來建立新的樣本/流/音樂:BASS_MusicLoad、BASS_SampleLoad、BASS_StreamCreateFile 等等。當其中一個函式(或 GetDevice)被呼叫時,BASS 會檢查裝置設定,如果沒有選擇裝置(或沒有初始化所選裝置),BASS 會自動選擇已初始化的最低裝置。這意味著當使用單個裝置時,無需使用此函式;BASS 會自動使用已初始化的裝置。即使您釋放裝置並初始化另一個裝置,BASS 也會自動切換到已初始化的裝置。引數
- device : 要使用的裝置... 0 = 無聲,1 = 第一個真實輸出裝置。
Function GetDevice:Int()
描述: 檢索當前執行緒的裝置設定。
返回值: 如果成功,則返回裝置號,否則返回 -1。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
Function GetCPU:Float()
描述: 檢索 BASS 的當前 CPU 使用率。
返回值: BASS CPU 使用率,佔總 CPU 時間的百分比。
資訊: 此函式包括在播放期間渲染流(TBassStream)和 MOD 音樂(TBassMusic)通道所花費的時間,以及在這些通道上設定的任何 DSP 函式。它不包括樣本(TBassSample)通道,這些通道由輸出裝置(硬體加速)或 DirectSound/驅動程式混合。某些附加流格式的渲染可能不會完全包含在內,如果它們使用額外的解碼執行緒。有關詳細資訊,請參閱附加文件。此函式並不嚴格地告訴 CPU 使用率,而是告訴緩衝區更新的及時性。例如,如果渲染 100 毫秒的資料需要 10 毫秒,那麼這將是 10。 如果報告的用量達到 100, 則意味著通道資料播放速度快於渲染速度,並且很可能發生緩衝區不足。如果停用自動更新,則此函式返回的值僅在每次呼叫 Update 後才會更新。TBassChannel.Update 用量不包括在內。
OSX 說明: CPU 使用率包括樣本播放。
Function Pause:Int()
描述: 停止輸出,暫停所有音樂/樣本/流。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊: 使用 Start 恢復輸出和暫停的通道。當使用多個裝置時,當前執行緒的裝置設定(如使用 SetDevice 設定)決定此函式呼叫適用於哪個裝置。
Function GetVersion:Int()
描述: 檢索載入的 BASS 版本。
返回值:BASS 版本。例如,0x02040103(十六進位制)為版本 2.4.1.3。
資訊:無法保證 BASS 的先前或未來版本是否支援您正在使用的所有 BASS 函式,因此您應始終使用此函式以確保載入了正確的版本。可以安全地假設未來版本(在 LOWORD 中指示)將完全相容。BASS API 包含 BASSVERSION 常量,可用於檢查載入的 BASS.DLL 是否與使用的 API 版本匹配,忽略修訂版本。
函式 Update:Int(length:Int)
描述:手動更新 TBassStream 和 TBassMusic 頻道播放緩衝區。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- length : 渲染量,以毫秒為單位。
當停用自動更新時,需要呼叫此函式(或 TBassChannel.Update)來保持播放緩衝區更新。length 引數應包含一些安全裕量,以防下一個更新週期延遲。例如,如果每 100 毫秒呼叫一次此函式,200 將是一個合理的 length 引數。
函式 GetDeviceInfo:TBassDeviceInfo(device:Int)
描述:檢索有關輸出裝置的資訊。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:此方法可用於列舉可用於設定對話方塊的可用裝置。裝置 0 始終是“無聲音”裝置,因此如果您只希望列出真實裝置,則應從裝置 1 開始。
函式 GetConfig:Int(option:Int)
描述:檢索配置選項的值。
返回值:如果成功,將返回請求的配置選項的值,否則返回 -1。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:檢索配置選項的值。引數
- option
| 常量 | 描述 |
|---|---|
| BASS_CONFIG_3DALGORITHM | 用於軟體混合 3D 頻道的 3D 演算法。 |
| BASS_CONFIG_BUFFER | 播放緩衝區長度。 |
| BASS_CONFIG_CURVE_PAN | 平移曲線。 |
| BASS_CONFIG_CURVE_VOL | 音量轉換曲線。 |
| BASS_CONFIG_FLOATDSP | 將 32 位浮點樣本資料傳遞給所有 DSP 函式嗎? |
| BASS_CONFIG_GVOL_MUSIC | 全域性 MOD 音樂音量。 |
| BASS_CONFIG_GVOL_SAMPLE | 全域性樣本音量。 |
| BASS_CONFIG_GVOL_STREAM | 全域性流音量。 |
| BASS_CONFIG_MUSIC_VIRTUAL | IT 虛擬頻道。 |
| BASS_CONFIG_NET_BUFFER | 網際網路下載緩衝區長度。 |
| BASS_CONFIG_NET_PASSIVE | 在 FTP 連線中使用被動模式嗎? |
| BASS_CONFIG_NET_PLAYLIST | 處理播放列表中的 URL 嗎? |
| BASS_CONFIG_NET_PREBUF | 開啟網際網路流時預緩衝的量。 |
| BASS_CONFIG_NET_TIMEOUT | 等待伺服器響應連線請求的時間。 |
| BASS_CONFIG_PAUSE_NOPLAY | 當輸出暫停時阻止播放頻道嗎? |
| BASS_CONFIG_REC_BUFFER | 錄製緩衝區長度。 |
| BASS_CONFIG_UPDATEPERIOD | 播放緩衝區的更新週期。 |
| BASS_CONFIG_UPDATETHREADS | 更新執行緒的數量。 |
| BASS_CONFIG_VERIFY | 檔案格式驗證長度。 |
函式 SetConfig:Int(option:Int, value:Int)
描述:設定配置選項的值。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:要設定其值的選項... 以下之一。引數
- option
| 常量 | 描述 |
|---|---|
| BASS_CONFIG_3DALGORITHM | 用於軟體混合 3D 頻道的 3D 演算法。 |
| BASS_CONFIG_BUFFER | 播放緩衝區長度。 |
| BASS_CONFIG_CURVE_PAN | 平移曲線。 |
| BASS_CONFIG_CURVE_VOL | 音量轉換曲線。 |
| BASS_CONFIG_FLOATDSP | 將 32 位浮點樣本資料傳遞給所有 DSP 函式嗎? |
| BASS_CONFIG_GVOL_MUSIC | 全域性 MOD 音樂音量。 |
| BASS_CONFIG_GVOL_SAMPLE | 全域性樣本音量。 |
| BASS_CONFIG_GVOL_STREAM | 全域性流音量。 |
| BASS_CONFIG_MUSIC_VIRTUAL | IT 虛擬頻道。 |
| BASS_CONFIG_NET_BUFFER | 網際網路下載緩衝區長度。 |
| BASS_CONFIG_NET_PASSIVE | 在 FTP 連線中使用被動模式嗎? |
| BASS_CONFIG_NET_PLAYLIST | 處理播放列表中的 URL 嗎? |
| BASS_CONFIG_NET_PREBUF | 開啟網際網路流時預緩衝的量。 |
| BASS_CONFIG_NET_TIMEOUT | 等待伺服器響應連線請求的時間。 |
| BASS_CONFIG_PAUSE_NOPLAY | 當輸出暫停時阻止播放頻道嗎? |
| BASS_CONFIG_REC_BUFFER | 錄製緩衝區長度。 |
| BASS_CONFIG_UPDATEPERIOD | 播放緩衝區的更新週期。 |
| BASS_CONFIG_UPDATETHREADS | 更新執行緒的數量。 |
| BASS_CONFIG_VERIFY | 檔案格式驗證長度。 |
- value : 新的選項設定。有關可能值的詳細資訊,請參閱選項的文件。
函式 Apply3D()
描述:應用對 3D 系統所做的更改。
資訊:必須呼叫此函式以應用使用 TBass.Set3DFactors、TBass.Set3DPosition、TBassChannel.Set3DAttributes 或 TBassChannel.Set3DPosition 所做的任何更改。這允許同步多個更改,並提高效能。此函式在所有已初始化的裝置上應用 3D 更改。使用多個裝置時,無需為每個單獨的裝置重新呼叫它。
函式 GetEAXParameters:Int(env:Int Var, vol:Float Var, decay:Float Var, damp:Float Var)
描述:檢索當前的 EAX 環境型別及其引數。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
函式 SetEAXParameters:Int(env:Int, vol:Float, decay:Float, damp:Float)
描述:設定 EAX 環境型別及其引數。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
函式 Get3DFactors:Int(distf:Float Var, rollf:Float Var, doppf:Float Var)
描述:檢索影響 3D 聲效計算的因素。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- distf : 距離係數
- rollf : 衰減係數
- doppf : 多普勒係數
使用多個裝置時,當前執行緒的裝置設定(使用 BASS_SetDevice 設定)決定此函式呼叫應用於哪個裝置。
函式 Set3DFactors:Int(distf:Float, rollf:Float, doppf:Float)
描述:設定影響 3D 聲效計算的因素。
返回值:如果成功,則返回 TRUE,否則返回 FALSE。使用 TBass.ErrorGetCode 獲取錯誤程式碼。
資訊:引數
- distf : 距離係數... 0 或更小 = 保留當前... 示例:1.0 = 使用米,
0.9144 = 使用碼,0.3048 = 使用英尺。預設情況下,BASS 以米為單位測量距離,如果您使用的是其他計量單位,可以更改此
- 設定。
- rollf : 衰減係數,聲音隨著距離衰減的速度... 0.0(最小) - 10.0(最大),
- 設定。
小於 0.0 = 保留當前...
- 示例:0.0 = 無衰減,1.0 = 現實世界,2.0 = 現實世界的 2 倍。
- doppf : 多普勒係數... 0.0(最小) - 10.0(最大),小於 0.0 = 保留當前... 示例
- 示例:0.0 = 無衰減,1.0 = 現實世界,2.0 = 現實世界的 2 倍。
0.0 = 無多普勒,1.0 = 現實世界,2.0 = 現實世界的 2 倍。多普勒效應是聲音在朝您移動或遠離您移動時聽起來音調發生變化的方式。監聽器和聲音速度設定用於
- 計算這種效果,此 doppf 值可用於減弱或誇大這種效果。
與所有 3D 函式一樣,請使用 Apply3D 應用更改。使用多個裝置時,當前執行緒的裝置設定(使用 BASS_SetDevice 設定)決定此函式呼叫應用於哪個裝置。
函式 GetInfo:TBassInfo()
描述:檢索有關正在使用的裝置的資訊。
返回值:如果成功,將返回 TBassInfo 物件,否則返回 Null。
資訊:使用多個裝置時,當前執行緒的裝置設定(使用 BASS_SetDevice 設定)決定此函式呼叫應用於哪個裝置。
函式 PluginLoad:Int(file:String, flags:Int)
描述:將“附加元件”插入標準流和樣本建立函式中。
TBassDeviceInfo
[edit | edit source]與 TBass.GetDeviceInfo 或 TBassRecord.GetDeviceInfo 一起使用以檢索有關裝置的資訊。
當裝置被停用/斷開連線時,它仍然保留在裝置列表中,但 BASS_DEVICE_ENABLED 標誌將從其中刪除。如果隨後重新啟用裝置,它可能會使用相同的裝置號再次可用,或者系統可能會為它新增一個新條目。
當連線新裝置時,它可能會影響其他裝置,並導致系統將它們移動到新的裝置條目。如果受影響的裝置已初始化,它將停止工作,需要使用其新的裝置號重新初始化。
OSX 注:未使用驅動程式。
- GetName
- GetDriver
- GetFlags
TBassDeviceInfo:方法
[edit | edit source]方法 GetName:String()
描述:裝置的描述。
方法 GetDriver:String()
描述:驅動程式的檔名... NULL = 無驅動程式(“無聲音”裝置)。
資訊:在可以使用 VxD 和 WDM 驅動程式的系統(Windows Me/98SE)上,這將揭示正在使用哪種型別的驅動程式。可以使用 GetFileVersionInfo Win32 API 函式從該檔案獲取更多資訊。
方法 GetFlags:Int()
描述:裝置的當前狀態... 這些標誌的組合。
TBassRecord
[edit | edit source]Bass 錄製型別。
- Start
- RecordStart
- Free
- GetRecordDevice
- Init
- SetDevice
- SetInput
- GetInput
- GetInputName
- GetRecordInfo
TBassRecord:方法
[edit | edit source]方法 Start:TBassRecord(freq:Int, chans:Int, flags:Int, proc:Int(handle:TBassRecord, buffer:Byte Ptr, length:Int, user:Object), user:Object)
描述:開始新的錄製。
TBassRecord:函式
[edit | edit source]函式 RecordStart:TBassRecord(freq:Int, chans:Int, flags:Int, proc:Int(handle:TBassRecord, buffer:Byte Ptr, length:Int, user:Object), user:Object)
描述:開始新的錄製。
Function Free:Int()
描述:釋放錄製的資源。
函式 GetRecordDevice:Int()
描述:獲取當前錄製裝置。
函式 Init:Int(device:Int)
描述:初始化錄製裝置。
Function SetDevice:Int(device:Int)
描述:設定在當前執行緒中的後續呼叫中使用的錄製裝置。
函式 SetInput:Int(inp:Int, flags:Int, volume:Float)
描述:設定錄製輸入源的設定。
函式 GetInput:Int(inp:Int, volume:Float Var)
描述:檢索錄製輸入源的當前設定。
函式 GetInputName:String(inp:Int)
描述:檢索錄製輸入源的文字描述。
函式 GetRecordInfo:TBassRecordInfo()
描述:獲取當前錄製資訊。
TBassRecordInfo
[edit | edit source]Bass 錄製資訊型別。
formats 成員不代表裝置支援的所有格式,僅代表“標準”格式。
如果沒有裝置的 DirectSound 驅動程式(即它正在被模擬),則 driver 成員將包含類似於“WaveIn”而不是檔名。
OSX 注:flags 和 formats 成員未使用。singlein 始終為 TRUE。
- GetFlags
- GetFormats
- GetInputs
- IsSingleIn
- GetFreq
TBassRecordInfo:方法
[edit | edit source]方法 GetFlags:Int()
描述:裝置的功能... 這些標誌的組合。
資訊:
| 常量 | 描述 |
|---|---|
| DSCCAPS_EMULDRIVER | 裝置的驅動程式沒有 DirectSound 錄製支援,因此正在被模擬。 |
| DSCCAPS_CERTIFIED | 裝置驅動程式已透過 Microsoft 認證。 |
方法 GetFormats:Int()
描述:裝置支援的標準格式... 這些標誌的組合。
資訊:
| 常量 | 描述 |
|---|---|
| WAVE_FORMAT_1M08 | 11025Hz,單聲道,8 位 |
| WAVE_FORMAT_1S08 | 11025Hz,立體聲,8 位 |
| WAVE_FORMAT_1M16 | 11025Hz,單聲道,16 位 |
| WAVE_FORMAT_1S16 | 11025Hz,立體聲,16 位 |
| WAVE_FORMAT_2M08 | 22050Hz,單聲道,8 位 |
| WAVE_FORMAT_2S08 | 22050Hz,立體聲,8 位 |
| WAVE_FORMAT_2M16 | 22050Hz,單聲道,16 位 |
| WAVE_FORMAT_2S16 | 22050Hz,立體聲,16 位 |
| WAVE_FORMAT_4M08 | 44100Hz,單聲道,8 位 |
| WAVE_FORMAT_4S08 | 44100Hz,立體聲,8 位 |
| WAVE_FORMAT_4M16 | 44100Hz,單聲道,16 位 |
| WAVE_FORMAT_4S16 | 44100Hz,立體聲,16 位 |
方法 GetInputs:Int()
描述:裝置可用的輸入源數量。
方法 IsSingleIn:Int()
描述:TRUE = 每次只能啟用一個輸入。
方法 GetFreq:Int()
描述:裝置當前的輸入取樣率(僅適用於 Windows Vista 和 OSX)。
資訊:以該速率錄製將提供最佳質量和效能,因為不需要重新取樣。
3D 函式用於描述位置、速度和方向的型別。
- CreateVector
- Create
- GetX
- GetY
- GetZ
- SetX
- SetY
- SetZ
- GetXYZ
- SetXYZ
函式 CreateVector:TBass3DVector(x:Float = 0, y:Float = 0, z:Float = 0)
描述:建立一個新的 3D 向量物件。
方法 Create:TBass3DVector(x:Float = 0, y:Float = 0, z:Float = 0)
描述:建立一個新的 3D 向量物件。
方法 GetX:Float()
描述:返回 X 向量。
方法 GetY:Float()
描述:返回 Y 向量。
方法 GetZ:Float()
描述:返回 Z 向量。
方法 SetX(value:Float)
描述:設定 X 向量。
方法 SetY(value:Float)
描述:設定 Y 向量。
方法 SetZ(value:Float)
描述:設定 Y 向量。
方法 GetXYZ(x:Float Var, y:Float Var, z:Float Var)
描述:返回 X、Y 和 Z。
方法 SetXYZ(x:Float, y:Float, z:Float)
描述:設定 X、Y 和 Z。