跳转到内容

BlitzMax/模块/BaH/BASS

来自 Wikibooks,开放世界中的开放书籍

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/ 中。

TBassInfo

[编辑 | 编辑源代码]

与 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

TBassInfo:方法

[编辑 | 编辑源代码]
GetFlags

方法 GetFlags:Int()

描述:flags 设备的功能... 这些标志的组合。

GetHWSize

方法 GetHWSize:Int()

描述:设备的总硬件内存量。

GetHWFree

方法 GetHWFree:Int()

描述:设备的可用硬件内存量。

GetFreeSam

方法 GetFreeSam:Int()

描述:硬件中可用样本插槽的数量。

GetFree3d

方法 GetFree3d:Int()

描述:硬件中可用 3D 样本插槽的数量。

GetMinRate

方法 GetMinRate:Int()

描述:硬件支持的最小采样率。

GetMaxRate

方法 GetMaxRate:Int()

描述:硬件支持的最大采样率。

GetEAX

方法 GetEAX:Int()

描述:设备支持 EAX 并且已启用?

信息:设备的“硬件加速”需要在其“高级属性”设置中设置为“完全”,否则 EAX 将被禁用。如果在调用 TBass.Init 时未指定 BASS_DEVICE_3D,则此值始终为 FALSE。

GetMinBuf

方法 GetMinBuf:Int()

描述:推荐使用的最小缓冲区长度(向上取整到最接近的毫秒)(使用 BASS_CONFIG_BUFFER 配置选项)。

信息:要求在调用 TBass.Init 时使用 BASS_DEVICE_LATENCY。

GetDSVer

方法 GetDSVer:Int()

描述:DirectSound 版本...

信息:9 = DX9/8/7/5 功能可用,8 = DX8/7/5 功能可用,7 = DX7/5 功能可用,5 = DX5 功能可用。0 = DX9/8/7/5 功能均不可用。

GetLatency

方法 GetLatency:Int()

描述:播放 TBassStream/TBassMusic 通道的平均延迟(向上取整到最接近的毫秒),以开始并被听到。

信息:要求在调用 TBass.Init 时使用 BASS_DEVICE_LATENCY。

GetInitFlags

方法 GetInitFlags:Int()

描述:TBass.Init 调用的 flags 参数。

GetSpeakers

方法 GetSpeakers:Int()

描述:设备/驱动程序支持的扬声器数量...

信息:2 表示不支持扬声器分配(对于 VxD 驱动程序,这将始终是这种情况)。也可能在某些设备/驱动程序中错误地为 2,而设备实际上支持更多扬声器。在这种情况下,可以在 TBass.Init 调用中使用 BASS_DEVICE_CPSPEAKERS 标志使用 Windows 控制面板设置,或者可以使用 BASS_DEVICE_SPEAKERS 标志强制启用扬声器分配。

GetFreq

方法 GetFreq:Int()

描述:设备的当前输出采样率。

信息:这仅在 Windows Vista 和 OS X 上可用。

TBassChannel

[编辑 | 编辑源代码]

“通道”可以是样本播放通道 (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

TBassChannel:方法

[编辑 | 编辑源代码]
播放

方法 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

方法 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

方法 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

方法 GetTags:String[](tags:Int)

描述:从通道中检索标签/标题。

返回值:如果成功,则返回请求的标签,否则返回 NULL。使用 TBass.ErrorGetCode 获取错误代码。

信息:参数

  • tags : 所需的标签/标题... 以下之一。
常量描述
BASS_TAG_ID3BASS_TAG_ID3ID3v1 标签。返回指向 128 字节块的指针。有关块结构的详细信息,请参阅 http://www.id3.org/ID3v1
BASS_TAG_ID3V2xxxxxxxxxxxxxxxxxxx
BASS_TAG_LYRICS3xxxxxxxxxxxxxxxxxxx
BASS_TAG_OGGxxxxxxxxxxxxxxxxxxx
BASS_TAG_VENDORxxxxxxxxxxxxxxxxxxx
BASS_TAG_HTTPxxxxxxxxxxxxxxxxxxx
BASS_TAG_ICYxxxxxxxxxxxxxxxxxxx
BASS_TAG_METAxxxxxxxxxxxxxxxxxxx
BASS_TAG_RIFF_INFOxxxxxxxxxxxxxxxxxxx
BASS_TAG_MUSIC_NAMExxxxxxxxxxxxxxxxxxx
BASS_TAG_MUSIC_MESSAGExxxxxxxxxxxxxxxxxxx
BASS_TAG_MUSIC_INSTxxxxxxxxxxxxxxxxxxx
BASS_TAG_MUSIC_SAMPLExxxxxxxxxxxxxxxxxxx

ID3v1 标签位于文件末尾,因此当从互联网流式传输带有 ID3v1 标签的文件时,标签将不可用,直到下载完成。可以通过 BASS_ChannelSetSync 设置 BASS_SYNC_DOWNLOAD 同步,以便在下载完成时通知您。BASS_SYNC_META 同步可用于通知新的 Shoutcast 元数据,而 BASS_SYNC_OGG_CHANGE 同步用于通知链式 OGG 流中新的逻辑比特流开始,这通常会带来新的 OGG 标签。

IsActive

方法 IsActive:Int()

描述:检查样本、流或 MOD 音乐是否处于活动状态(正在播放)或停止状态。

信息:还可以检查录制是否正在进行。当使用此方法与解码通道一起使用时,只要还有数据要解码,就会返回 BASS_ACTIVE_PLAYING。到达末尾后,将返回 BASS_ACTIVE_STOPPED。BASS_ACTIVE_STALLED 从未为解码通道返回;如果 BASS_ChannelGetData 返回的數據少于请求的数据,并且此函数仍然返回 BASS_ACTIVE_PLAYING,则可以判断解码通道是否处于停止状态。

GetPosition

方法 GetPosition:Long(mode:Int)

描述:检索样本、流或 MOD 音乐的播放位置。

返回值:如果成功,则返回通道的位置,否则返回 -1。使用 TBass.ErrorGetCode 获取错误代码。

信息:也可以用于录制通道。参数

  • mode : 如何检索位置。以下之一。
常量描述
BASS_POS_BYTE获取字节位置。
BASS_POS_MUSIC_ORDER获取订单和行的位置... LOWORD = 订单,HIWORD = 行 * 缩放器 (BASS_ATTRIB_MUSIC_PSCALER)。(TBassMusic 仅限)
其他模式可能由加载项支持,请参阅文档。
GetPositionLowHigh

方法 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

方法 SlideAttribute:Int(attrib:Int, value:Float, time:Int)

描述:将通道属性从当前值滑动到新值。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

信息:此方法类似于SetAttribute,但属性在指定的时间段内逐渐过渡到该值。另一个区别是值没有预先检查。如果它无效,滑动将简单地提前结束。如果属性已经在滑动,则旧的滑动将被停止并被新的滑动取代。IsSliding 可用于检查属性当前是否正在滑动。BASS_SYNC_SLIDE 同步也可以通过SetSync 设置,以便在滑动结束时触发。在现有滑动被新的滑动取代的情况下,不会触发同步。属性滑动不受通道是正在播放、暂停还是停止的影响。它们继续进行,无论如何。

IsSliding

方法 IsSliding:Int(attrib:Int)

描述:检查样本、流或 MOD 音乐的属性(或任何属性)是否正在滑动。

返回值:如果属性正在滑动,则返回 TRUE,否则返回 FALSE。

Bytes2Seconds

方法 Bytes2Seconds:Double(pos:Long)

描述:根据通道的格式将字节位置转换为时间(秒)。

返回值:如果成功,则返回转换后的长度,否则返回负值。使用 TBass.ErrorGetCode 获取错误代码。

信息:转换基于通道的初始采样率,即创建时的采样率。

标志

方法 Flags:Int(flags:Int, mask:Int)

描述:修改和检索通道的标志。

返回值:如果成功,则返回通道的更新后的标志,否则返回 -1。使用 BASS_ErrorGetCode 获取错误代码。

信息:在某些情况下,某些标志可能无法调整,因此应检查返回值以确认任何更改。上面列出的标志只是可以修改的标志,返回值中可能存在其他标志。有关标志的完整列表,请参阅 BASS_CHANNELINFO 文档。通过加载项创建的流可能可以使用其他标志。但是,可能的标志值数量有限,因此某些加载项可能使用相同的标志值来表示不同的内容。这意味着,当使用通过插件系统创建的流的加载项特定标志时,最好先通过 BASS_ChannelGetInfo 检查其 ctype,以确认加载项正在处理该流。在播放过程中,标志更改的效果不会立即听到,因为存在缓冲。要减少延迟,请使用 BASS_CONFIG_BUFFER 配置选项来减少缓冲区长度。

SetFX

方法 SetFX:TBassFX(fxType:Int, priority:Int)

描述:在流、MOD 音乐或录制通道上设置效果。

返回值:如果成功,则返回新的效果句柄,否则返回 Null。使用 TBass.ErrorGetCode 获取错误代码。

GetAttribute

方法 GetAttribute:Int(attrib:Int, value:Float Var)

描述:检索通道属性的值。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

信息:参数

  • attrib : 要设置值的属性... 以下之一。
常量描述
BASS_ATTRIB_EAXMIXEAX 干湿混音。(TBassSample/TBassMusic/TBassStream 仅限)
BASS_ATTRIB_FREQ采样率。
BASS_ATTRIB_MUSIC_AMPLIFY放大级别。(TBassMusic)
BASS_ATTRIB_MUSIC_BPMBPM。(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

方法 SetAttribute:Int(attrib:Int, value:Float)

描述:设置通道属性的值。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

信息:参数

  • attrib : 要设置值的属性... 以下之一。
常量描述
BASS_ATTRIB_EAXMIXEAX 干湿混音。(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_BPMBPM。(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

方法 SetLink:Int(channel:TBassChannel)

描述:将两个 MOD 音乐或流通道链接在一起。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

信息:链接的通道将一起启动/停止/暂停/恢复。链接是单向的,例如,通道 chan 将由通道句柄启动,但反之则不会,除非在该方向设置了另一个链接。如果链接的通道已到达末尾,则当与之链接的通道启动时,它不会重新启动。如果希望链接的通道重新启动,则需要先使用 SetPosition 重置其位置。

Get3DPosition

方法 Get3DPosition:Int(pos:TBass3DVector = Null, orient:TBass3DVector = Null, vel:TBass3DVector = Null)

描述:检索具有 3D 功能的样本、流或 MOD 音乐通道的 3D 位置。

Set3DPosition

方法 Set3DPosition:Int(pos:TBass3DVector = Null, orient:TBass3DVector = Null, vel:TBass3DVector = Null)

描述:设置具有 3D 功能的样本、流或 MOD 音乐通道的 3D 位置。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

Set3DAttributes

方法 Set3DAttributes:Int(mode:Int = -1, minDist:Float = 0, maxDist:Float = 0, iangle:Int = -1, ..

描述:设置具有 3D 功能的样本、流或 MOD 音乐通道的 3D 属性。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

Get3DAttributes

方法 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

方法 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

方法 GetDevice:Int()

描述:检索通道正在使用的设备。

返回值:如果成功,则返回设备编号,否则返回 -1。使用 BASS_ErrorGetCode 获取错误代码。

GetInfo

方法 GetInfo:TBassChannelInfo()

描述:检索通道的信息。

锁定

方法 Lock:Int(value:Int)

描述:将流、MOD 音乐或录音通道锁定到当前线程。

信息:锁定通道可防止其他线程对它执行大多数功能,包括缓冲区更新。想要访问锁定通道的其他线程将被阻塞,直到它被解锁,因此通道只应短暂锁定。必须在锁定通道的同一线程中解锁通道。

Seconds2Bytes

方法 Seconds2Bytes:Long(pos:Double)

描述:基于通道的格式,将时间(秒)位置转换为字节。

返回值:如果成功,则返回转换后的长度,否则返回 -1。使用 BASS_ErrorGetCode 获取错误代码。

信息:转换基于通道创建时的初始采样率。返回值向下取整为最接近样本的位置。

SetSync

方法 SetSync(stype:Int, param:Long, syncData:TBassSyncData)

SetPosition

方法 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 标志)。

TBassSyncData

[编辑 | 编辑源代码]

在 SetSync 方法中使用。

在 SetFX 方法中使用。

方法
  • Reset
  • GetParameters
  • SetParameters

TBassFX:方法

[编辑 | 编辑源代码]
Reset

方法 Reset:Int()

描述:重置 FX 数据。

GetParameters

方法 GetParameters:TBassFXType()

描述:获取当前 FX 参数。

SetParameters

方法 SetParameters:Int(fx:TBassFXType)

描述:设置 FX 参数。

TBassFXType

[编辑 | 编辑源代码]

在 GetParameters、SetParameters 和 FXForType 方法中使用。

TBassDX8Chorus

[编辑 | 编辑源代码]

未被使用。

TBassStream

[编辑 | 编辑源代码]

Bass 流类型。

方法
  • Create
  • CreateFile
  • CreateMem
  • CreateFileUser
  • CreateURL
  • CreateTStream
  • GetFilePosition
  • PutData
  • PutFileData
  • Free
函数
  • StreamCreate
  • StreamCreateFile
  • StreamCreateMem
  • StreamCreateFileUser
  • StreamCreateURL
  • StreamCreateTStream

TBassStream:方法

[编辑 | 编辑源代码]
Create

方法 Create:TBassStream(freq:Int, chans:Int, flags:Int, proc:Int(handle:TBassStream, buffer:Byte Ptr, length:Int, user:Object), user:Object)

描述:创建一个新的流。

CreateFile

方法 CreateFile:TBassStream(filename:String, offset:Long, length:Long, flags:Int)

描述:创建一个新的文件。

CreateMem

方法 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

方法 CreateFileUser:TBassStream()

描述:尚未实现。

CreateURL

方法 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

方法 CreateTStream:TBassStream(stream:TStream, system:Int, flags:Int)

描述:创建一个标准流。

GetFilePosition

方法 GetFilePosition:Long(mode:Int)

描述:检索流的文件位置/状态。

PutData

方法 PutData(buffer:Byte Ptr, length:Int)

描述:尚未实现。

PutFileData

方法 PutFileData(buffer:Byte Ptr, length:Int)

描述:尚未实现。

Free

方法 Free:Int()

描述:释放样本流的资源,包括它拥有的任何同步/DSP/FX。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

TBassStream:函数

[编辑 | 编辑源代码]
StreamCreate

函数 StreamCreate:TBassStream(freq:Int, chans:Int, flags:Int, proc:Int(handle:TBassStream, buffer:Byte Ptr, length:Int, user:Object), user:Object)

描述:创建一个新的流。

StreamCreateFile

函数 StreamCreateFile:TBassStream(filename:String, offset:Int, length:Int, flags:Int)

描述:创建一个新的文件流。

StreamCreateMem

函数 StreamCreateMem:TBassStream(mem:Byte Ptr, length:Long, flags:Int)

描述:从内存中创建支持 MP3、MP2、MP1、OGG、WAV、AIFF 或插件的样本流。

StreamCreateFileUser

函数 StreamCreateFileUser:TBassStream()

描述:尚未实现。

StreamCreateURL

函数 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

函数 StreamCreateTStream:TBassStream(stream:TStream, system:Int, flags:Int)

描述:创建一个标准流。

TBassSample

[编辑 | 编辑源代码]

音频样本。

方法
  • Create
  • FileLoad
  • MemLoad
  • Free
  • GetChannel
  • 停止
  • GetInfo
  • SetInfo
  • GetData
  • SetData
  • GetChannels
函数
  • SampleCreate
  • SampleFileLoad
  • SampleMemLoad

TBassSample:方法

[编辑 | 编辑源代码]
Create

方法 Create:TBassSample(length:Int, freq:Int, channels:Int, maxPlaybacks:Int, flags:Int)

描述: 创建一个新的样本。

FileLoad

方法 FileLoad:TBassSample(file:String, offset:Long, length:Int, maxPlaybacks:Int, flags:Int)

描述: 加载文件样本。

MemLoad

方法 MemLoad:TBassSample(mem:Byte Ptr, length:Int, maxPlaybacks:Int, flags:Int)

描述: 从内存中加载文件样本。

Free

方法 Free:Int()

描述: 释放样本的资源。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

GetChannel

方法 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

方法 GetInfo:TBassSampleInfo()

描述: 检索样本的默认属性和其他信息。

SetInfo

方法 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

方法 GetData:Int(buffer:Byte Ptr)

描述: 检索样本数据的副本。

信息:参数

  • buffer : 指向要接收数据的缓冲区的指针。缓冲区必须足够大以接收样本数据,
其大小可以通过 GetInfo() 获取。
SetData

方法 SetData:Int(buffer:Byte Ptr)

描述: 设置样本数据。

返回值: 如果成功,则返回 True,否则返回 False。使用 TBass.ErrorGetCode 获取错误代码。

信息: 可以通过 GetInfo() 获取数据的所需长度和格式。样本数据可以在任何时间设置,包括在回放期间。参数

  • buffer : 指向要接收数据的缓冲区的指针。
GetChannels

方法 GetChannels:TBassSample[]()

描述: TODO

TBassSample:函数

[编辑 | 编辑源代码]
SampleCreate

函数 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

函数 SampleFileLoad:TBassSample(file:String, offset:Long, length:Int, maxPlaybacks:Int, flags:Int)

描述: 加载文件样本。

SampleMemLoad

函数 SampleMemLoad:TBassSample(mem:Byte Ptr, length:Int, maxPlaybacks:Int, flags:Int)

描述: 从内存中加载文件样本。

TBassSampleInfo

[编辑 | 编辑源代码]

与 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

TBassSampleInfo:方法

[编辑 | 编辑源代码]
GetFreq

方法 GetFreq:Int()

描述: 默认采样率。

SetFreq

方法 SetFreq(value:Int)

描述: 默认采样率。

GetVolume

方法 GetVolume:Float()

描述: 默认音量... 0(静音)到 1(满音量)。

SetVolume

方法 SetVolume(value:Float)

描述: 默认音量... 0(静音)到 1(满音量)。

GetPan

方法 GetPan:Float()

描述: 默认声像位置... -1(全左)到 +1(全右),0 = 中心。

SetPan

方法 SetPan(value:Float)

描述: 默认声像位置... -1(全左)到 +1(全右),0 = 中心。

GetFlags

方法 GetFlags:Int()

描述: 这些标志的组合。

信息:

常量描述
BASS_SAMPLE_8BITS8 位分辨率。如果既没有此标志也没有 BASS_SAMPLE_FLOAT 标志,则样本为 16 位。
BASS_SAMPLE_FLOAT32 位浮点数。
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

方法 SetFlags(flags:Int)

描述: 这些标志的组合。

信息:

常量描述
BASS_SAMPLE_8BITS8 位分辨率。如果既没有此标志也没有 BASS_SAMPLE_FLOAT 标志,则样本为 16 位。
BASS_SAMPLE_FLOAT32 位浮点数。
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

方法 GetLength:Int()

描述: 以字节为单位的长度。

GetMax

方法 GetMax:Int()

描述: 同时播放的最大次数。

GetOrigRes

方法 GetOrigRes:Int()

描述: 原始分辨率(每样本位数)... 0 = 未定义。

GetChans

方法 GetChans:Int()

描述: 通道数... 1 = 单声道,2 = 立体声,等等...

GetMinGap

方法 GetMinGap:Int()

描述: 使用 TBassSample.GetChannel 创建通道之间的最小时间间隔(以毫秒为单位)。

信息: 这可以用来防止由于非常接近地多次播放样本而导致的颤音效果。默认设置(在加载/创建样本后)为 0(禁用)。

SetMinGap

方法 SetMinGap(value:Int)

描述: 使用 TBassSample.GetChannel 创建通道之间的最小时间间隔(以毫秒为单位)。

信息: 这可以用来防止由于非常接近地多次播放样本而导致的颤音效果。默认设置(在加载/创建样本后)为 0(禁用)。

GetMode3D

方法 GetMode3D:Int()

描述: 3D 处理模式... 以下标志之一。

信息:

常量描述
BASS_3DMODE_NORMAL正常的 3D 处理。
BASS_3DMODE_RELATIVE样本的 3D 位置(位置/速度/方向)相对于

听众。当听众的位置/速度/方向通过 BASS_Set3DPosition 更改时,样本的

相对于听众的位置不会改变。
BASS_3DMODE_OFF关闭样本上的 3D 处理,声音将在中心播放。
SetMode3D

方法 SetMode3D(value:Int)

描述: 3D 处理模式... 以下标志之一。

信息:

常量描述
BASS_3DMODE_NORMAL正常的 3D 处理。
BASS_3DMODE_RELATIVE样本的 3D 位置(位置/速度/方向)相对于

听众。当听众的位置/速度/方向通过 BASS_Set3DPosition 更改时,样本的

相对于听众的位置不会改变。
BASS_3DMODE_OFF关闭样本上的 3D 处理,声音将在中心播放。
GetMinDist

方法 GetMinDist:Float()

描述: 最小距离。

信息: 当听众在该距离内时,样本的音量达到最大值。

SetMinDist

方法 SetMinDist(value:Float)

描述: 最小距离。

信息: 当听众在该距离内时,样本的音量达到最大值。

GetMaxDist

方法 GetMaxDist:Float()

描述: 最大距离。

信息: 当听众超出该距离时,样本的音量停止下降。

SetMaxDist

方法 SetMaxDist(value:Float)

描述: 最大距离。

信息: 当听众超出该距离时,样本的音量停止下降。

GetIAngle

方法 GetIAngle:Int()

描述: 内侧投影锥体的角度(以度为单位)... 0(无锥体)到 360(球体)。

SetIAngle

方法 SetIAngle(value:Int)

描述: 内侧投影锥体的角度(以度为单位)... 0(无锥体)到 360(球体)。

GetOAngle

方法 GetOAngle:Int()

描述: 外侧投影锥体的角度(以度为单位)... 0(无锥体)到 360(球体)。

SetOAngle

方法 SetOAngle(value:Int)

描述: 外侧投影锥体的角度(以度为单位)... 0(无锥体)到 360(球体)。

GetOutVol

方法 GetOutVol:Float()

描述: 外侧投影锥体外的增量音量... 0(静音)到 1(满音量)。

SetOutVol

方法 SetOutVol(value:Float)

描述: 外侧投影锥体外的增量音量... 0(静音)到 1(满音量)。

GetVAM

方法 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

方法 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

方法 GetPriority:Int()

描述:优先级,与 BASS_VAM_TERM_PRIO 标志一起使用......0(最小)到 $FFFFFFFF(最大)。

SetPriority

方法 SetPriority(value:Int)

描述:优先级,与 BASS_VAM_TERM_PRIO 标志一起使用......0(最小)到 $FFFFFFFF(最大)。

TBassMusic

[编辑 | 编辑源代码]

Mod 音乐文件:MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。

方法
  • FileLoad
  • MemLoad
  • Free
函数
  • MusicFileLoad
  • MusicMemLoad

TBassMusic:方法

[编辑 | 编辑源代码]
FileLoad

方法 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

方法 MemLoad:TBassMusic(mem:Byte Ptr, length:Int, flags:Int, freq:Int)

描述:从内存中加载 MOD 音乐文件;MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。

返回值:如果成功,则返回加载的 MOD 音乐的句柄,否则返回 Null。使用 TBass.ErrorGetCode 获取错误代码。

Free

方法 Free:Int()

描述:释放 MOD 音乐的资源,包括其任何同步/DSP/FX。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

TBassMusic:函数

[编辑 | 编辑源代码]
MusicFileLoad

函数 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

函数 MusicMemLoad:TBassMusic(mem:Byte Ptr, length:Int, flags:Int, freq:Int)

描述:从内存中加载 MOD 音乐文件;MO3 / IT / XM / S3M / MTM / MOD / UMX 格式。

返回值:如果成功,则返回加载的 MOD 音乐的句柄,否则返回 Null。使用 TBass.ErrorGetCode 获取错误代码。

TBassChannelInfo

[编辑 | 编辑源代码]

与 TBassChannel.GetInfo 一起使用,以检索有关通道的信息。

BASS_SAMPLE_SOFTWARE 标志指示通道的样本数据是否由硬件混合到最终输出中。它不指示(在流或 MOD 音乐的情况下)生成样本数据所需的处理是否由硬件完成,此处理始终由软件完成。

对于录音通道,BASS_STREAM_DECODE 标志指示它没有使用 RECORDPROC 回调函数。

BASS 支持 8/16/32 位样本数据,因此,例如,如果 WAV 文件使用其他样本分辨率,则 BASS 必须对其进行转换。origres 成员可用于检查原始分辨率是什么。

方法
  • GetFreq
  • GetChannels
  • GetFlags
  • GetCType
  • GetOrigRes
  • GetSample
  • GetFilename

TBassChannelInfo:方法

[编辑 | 编辑源代码]
GetFreq

方法 GetFreq:Int()

描述:默认播放速率。

GetChannels

方法 GetChannels:Int()

描述:通道数量......1=单声道,2=立体声,等等......

GetFlags

方法 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_RAMPMOD 音乐使用“正常”斜坡。(HMUSIC)
BASS_MUSIC_RAMPSMOD 音乐使用“敏感”斜坡。(HMUSIC)
BASS_MUSIC_SURROUNDMOD 音乐使用环绕声。(HMUSIC)
BASS_MUSIC_SURROUND2MOD 音乐使用环绕声模式 2。(HMUSIC)
BASS_MUSIC_NONINTERMOD 音乐使用非插值混音。(HMUSIC)
BASS_MUSIC_FT2MODMOD 音乐使用 FastTracker 2 .MOD 播放。(HMUSIC)
BASS_MUSIC_PT1MODMOD 音乐使用 ProTracker 1 .MOD 播放。(HMUSIC)
BASS_MUSIC_STOPBACK当播放向后跳转效果时,MOD 音乐将停止。(HMUSIC)
BASS_SPEAKER_xxx扬声器分配标志。(HSTREAM/HMUSIC)
BASS_UNICODEfilename 是一个 Unicode (UTF-16) 文件名。
GetCType

方法 GetCType:Int()

描述: 它是通道的类型,可以是以下之一。

信息:

常量描述
BASS_CTYPE_SAMPLE样本通道。(HCHANNEL)
BASS_CTYPE_STREAM用户样本流。这也可以用作标志来测试通道是否为任何类型的 HSTREAM。
BASS_CTYPE_STREAM_OGGOgg Vorbis 格式流。
BASS_CTYPE_STREAM_MP1MPEG 第 1 层格式流。
BASS_CTYPE_STREAM_MP2MPEG 第 2 层格式流。
BASS_CTYPE_STREAM_MP3MPEG 第 3 层格式流。
BASS_CTYPE_STREAM_AIFF音频 IFF 格式流。
BASS_CTYPE_STREAM_WAV_PCM整数 PCM WAVE 格式流。
BASS_CTYPE_STREAM_WAV_FLOAT浮点 PCM WAVE 格式流。
BASS_CTYPE_STREAM_WAVWAVE 格式标志。这可以用来测试通道是否为任何类型的 WAVE 格式。编解码器(文件的“wFormatTag”)在 LOWORD 中指定。
BASS_CTYPE_MUSIC_MOD通用 MOD 格式音乐。这也可以用作标志来测试通道是否为任何类型的 HMUSIC。
BASS_CTYPE_MUSIC_MTMMultiTracker 格式音乐。
BASS_CTYPE_MUSIC_S3MScreamTracker 3 格式音乐。
BASS_CTYPE_MUSIC_XMFastTracker 2 格式音乐。
BASS_CTYPE_MUSIC_ITImpulse Tracker 格式音乐。
BASS_CTYPE_MUSIC_MO3MO3 格式标志,与 BASS_CTYPE_MUSIC 类型之一结合使用。
BASS_CTYPE_RECORD录音通道。(HRECORD)
GetOrigRes

方法 GetOrigRes:Int()

描述: 原始分辨率(每样本位数)... 0 = 未定义。

GetSample

方法 GetSample:TBassSample()

描述: 在通道上播放的样本。(仅限 HCHANNEL)

GetFilename

方法 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]
Free

Function Free:Int()

描述: 释放输出设备使用的所有资源,包括其所有样本、流和 MOD 音乐。

Init

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 检查它是什么。

ErrorGetCode

Function ErrorGetCode:Int()

描述: 检索当前线程中最近一次 BASS 函数调用的错误代码。

GetVolume

Function GetVolume:Float()

描述: 检索当前主音量级别。

返回值: 如果成功,则返回音量级别,否则返回 -1。使用 TBass.ErrorGetCode 获取错误代码。

SetVolume

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 设置)决定此函数调用适用于哪个设备。

Start

Function Start:Int()

描述: 启动(或恢复)输出。

返回值: 如果成功,则返回 True,否则返回 False。使用 TBass.ErrorGetCode 获取错误代码。

信息: 输出由 TBass.Init 自动启动,因此除非您已停止或暂停输出,否则无需使用此函数。当使用多个设备时,当前线程的设备设置(如使用 SetDevice 设置)决定此函数调用适用于哪个设备。

SetDevice

Function SetDevice:Int(device:Int)

描述: 设置用于后续调用的设备。

返回值: 如果成功,则返回 TRUE,否则返回 FALSE。使用 BASS_ErrorGetCode 获取错误代码。

信息: BASS API 通过上下文切换系统支持同时使用多个设备;函数调用中没有额外的“设备”参数,而是先设置要使用的设备,然后再调用函数。使用该设备选择的函数如下: FreeGetDSoundObjectGetInfoStartStopPauseSetVolumeGetVolumeSet3DFactorsGet3DFactorsSet3DPositionGet3DPositionSetEAXParametersGetEAXParameters。它还决定使用哪个设备来创建新的样本/流/音乐:BASS_MusicLoad、BASS_SampleLoad、BASS_StreamCreateFile 等等。当其中一个函数(或 GetDevice)被调用时,BASS 会检查设备设置,如果没有选择设备(或没有初始化所选设备),BASS 会自动选择已初始化的最低设备。这意味着当使用单个设备时,无需使用此函数;BASS 会自动使用已初始化的设备。即使您释放设备并初始化另一个设备,BASS 也会自动切换到已初始化的设备。参数

  • device : 要使用的设备... 0 = 无声,1 = 第一个真实输出设备。
GetDevice

Function GetDevice:Int()

描述: 检索当前线程的设备设置。

返回值: 如果成功,则返回设备号,否则返回 -1。使用 TBass.ErrorGetCode 获取错误代码。

GetCPU

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 设置)决定此函数调用适用于哪个设备。

GetVersion

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

函数 GetDeviceInfo:TBassDeviceInfo(device:Int)

描述:检索有关输出设备的信息。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

信息:此方法可用于枚举可用于设置对话框的可用设备。设备 0 始终是“无声音”设备,因此如果您只希望列出真实设备,则应从设备 1 开始。

GetConfig

函数 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_VIRTUALIT 虚拟频道。
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

函数 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_VIRTUALIT 虚拟频道。
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

函数 Apply3D()

描述:应用对 3D 系统所做的更改。

信息:必须调用此函数以应用使用 TBass.Set3DFactors、TBass.Set3DPosition、TBassChannel.Set3DAttributes 或 TBassChannel.Set3DPosition 所做的任何更改。这允许同步多个更改,并提高性能。此函数在所有已初始化的设备上应用 3D 更改。使用多个设备时,无需为每个单独的设备重新调用它。

GetEAXParameters

函数 GetEAXParameters:Int(env:Int Var, vol:Float Var, decay:Float Var, damp:Float Var)

描述:检索当前的 EAX 环境类型及其参数。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

SetEAXParameters

函数 SetEAXParameters:Int(env:Int, vol:Float, decay:Float, damp:Float)

描述:设置 EAX 环境类型及其参数。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

Get3DFactors

函数 Get3DFactors:Int(distf:Float Var, rollf:Float Var, doppf:Float Var)

描述:检索影响 3D 声效计算的因素。

返回值:如果成功,则返回 TRUE,否则返回 FALSE。使用 TBass.ErrorGetCode 获取错误代码。

信息:参数

  • distf : 距离系数
  • rollf : 衰减系数
  • doppf : 多普勒系数

使用多个设备时,当前线程的设备设置(使用 BASS_SetDevice 设置)决定此函数调用应用于哪个设备。

Set3DFactors

函数 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 倍。多普勒效应是声音在朝您移动或远离您移动时听起来音调发生变化的方式。监听器和声音速度设置用于

计算这种效果,此 doppf 值可用于减弱或夸大这种效果。

与所有 3D 函数一样,请使用 Apply3D 应用更改。使用多个设备时,当前线程的设备设置(使用 BASS_SetDevice 设置)决定此函数调用应用于哪个设备。

GetInfo

函数 GetInfo:TBassInfo()

描述:检索有关正在使用的设备的信息。

返回值:如果成功,将返回 TBassInfo 对象,否则返回 Null。

信息:使用多个设备时,当前线程的设备设置(使用 BASS_SetDevice 设置)决定此函数调用应用于哪个设备。

PluginLoad

函数 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

方法 GetName:String()

描述:设备的描述。

GetDriver

方法 GetDriver:String()

描述:驱动程序的文件名... NULL = 无驱动程序(“无声音”设备)。

信息:在可以使用 VxD 和 WDM 驱动程序的系统(Windows Me/98SE)上,这将揭示正在使用哪种类型的驱动程序。可以使用 GetFileVersionInfo Win32 API 函数从该文件获取更多信息。

GetFlags

方法 GetFlags:Int()

描述:设备的当前状态... 这些标志的组合。

TBassRecord

[edit | edit source]

Bass 录制类型。

方法
  • Start
函数
  • RecordStart
  • Free
  • GetRecordDevice
  • Init
  • SetDevice
  • SetInput
  • GetInput
  • GetInputName
  • GetRecordInfo

TBassRecord:方法

[edit | edit source]
Start

方法 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

函数 RecordStart:TBassRecord(freq:Int, chans:Int, flags:Int, proc:Int(handle:TBassRecord, buffer:Byte Ptr, length:Int, user:Object), user:Object)

描述:开始新的录制。

Free

Function Free:Int()

描述:释放录制的资源。

GetRecordDevice

函数 GetRecordDevice:Int()

描述:获取当前录制设备。

Init

函数 Init:Int(device:Int)

描述:初始化录制设备。

SetDevice

Function SetDevice:Int(device:Int)

描述:设置在当前线程中的后续调用中使用的录制设备。

SetInput

函数 SetInput:Int(inp:Int, flags:Int, volume:Float)

描述:设置录制输入源的设置。

GetInput

函数 GetInput:Int(inp:Int, volume:Float Var)

描述:检索录制输入源的当前设置。

GetInputName

函数 GetInputName:String(inp:Int)

描述:检索录制输入源的文本描述。

GetRecordInfo

函数 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

方法 GetFlags:Int()

描述:设备的功能... 这些标志的组合。

信息:

常量描述
DSCCAPS_EMULDRIVER设备的驱动程序没有 DirectSound 录制支持,因此正在被模拟。
DSCCAPS_CERTIFIED设备驱动程序已通过 Microsoft 认证。
GetFormats

方法 GetFormats:Int()

描述:设备支持的标准格式... 这些标志的组合。

信息:

常量描述
WAVE_FORMAT_1M0811025Hz,单声道,8 位
WAVE_FORMAT_1S0811025Hz,立体声,8 位
WAVE_FORMAT_1M1611025Hz,单声道,16 位
WAVE_FORMAT_1S1611025Hz,立体声,16 位
WAVE_FORMAT_2M0822050Hz,单声道,8 位
WAVE_FORMAT_2S0822050Hz,立体声,8 位
WAVE_FORMAT_2M1622050Hz,单声道,16 位
WAVE_FORMAT_2S1622050Hz,立体声,16 位
WAVE_FORMAT_4M0844100Hz,单声道,8 位
WAVE_FORMAT_4S0844100Hz,立体声,8 位
WAVE_FORMAT_4M1644100Hz,单声道,16 位
WAVE_FORMAT_4S1644100Hz,立体声,16 位
GetInputs

方法 GetInputs:Int()

描述:设备可用的输入源数量。

IsSingleIn

方法 IsSingleIn:Int()

描述:TRUE = 每次只能激活一个输入。

GetFreq

方法 GetFreq:Int()

描述:设备当前的输入采样率(仅适用于 Windows Vista 和 OSX)。

信息:以该速率录制将提供最佳质量和性能,因为不需要重新采样。

TBass3DVector

[编辑 | 编辑源代码]

3D 函数用于描述位置、速度和方向的类型。

函数
  • CreateVector
方法
  • Create
  • GetX
  • GetY
  • GetZ
  • SetX
  • SetY
  • SetZ
  • GetXYZ
  • SetXYZ

TBass3DVector:函数

[编辑 | 编辑源代码]
CreateVector

函数 CreateVector:TBass3DVector(x:Float = 0, y:Float = 0, z:Float = 0)

描述:创建一个新的 3D 矢量对象。

TBass3DVector:方法

[编辑 | 编辑源代码]
Create

方法 Create:TBass3DVector(x:Float = 0, y:Float = 0, z:Float = 0)

描述:创建一个新的 3D 矢量对象。

GetX

方法 GetX:Float()

描述:返回 X 矢量。

GetY

方法 GetY:Float()

描述:返回 Y 矢量。

GetZ

方法 GetZ:Float()

描述:返回 Z 矢量。

SetX

方法 SetX(value:Float)

描述:设置 X 矢量。

SetY

方法 SetY(value:Float)

描述:设置 Y 矢量。

SetZ

方法 SetZ(value:Float)

描述:设置 Y 矢量。

GetXYZ

方法 GetXYZ(x:Float Var, y:Float Var, z:Float Var)

描述:返回 X、Y 和 Z。

SetXYZ

方法 SetXYZ(x:Float, y:Float, z:Float)

描述:设置 X、Y 和 Z。

华夏公益教科书