# bass.channel 库模块帮助文档

## bass 成员列表 <a id="bass" href="#bass">&#x23;</a>

### bass.channel() <a id="bass.channel" href="#bass.channel">&#x23;</a>
[返回对象:basschannelObject](#basschannelObject)

## bass.channel 成员列表 <a id="bass.channel" href="#bass.channel">&#x23;</a>

### bass.channel.create <a id="bass.channel.create" href="#bass.channel.create">&#x23;</a>
创建 PCM 样本推送流（不能推送 MP3 编码字节）。  
成功返回 bass.channel 对象,  
失败返回 null,错误信息

### bass.channel.create() <a id="bass.channel.create" href="#bass.channel.create">&#x23;</a>
[返回对象:basschannelObject](#basschannelObject)

### bass.channel.create(freq,chans,flags) <a id="bass.channel.create" href="#bass.channel.create">&#x23;</a>
创建音频推送流。  
参数@freq 指定采样率，@chans 指定通道数，@flags 指定选项。  
可选使用参数@2指定选项  
详细用法请参考bass文档

### bass.channel.open <a id="bass.channel.open" href="#bass.channel.open">&#x23;</a>
打开音频。  
成功返回 bass.channe 对象,  
失败返回 null,错误信息

### bass.channel.open() <a id="bass.channel.open" href="#bass.channel.open">&#x23;</a>
[返回对象:basschannelObject](#basschannelObject)

### bass.channel.open(buffer,flags) <a id="bass.channel.open" href="#bass.channel.open">&#x23;</a>
打开音频,  
参数 @1 需要用一个 buffer 对象指定内存数据。  
可选使用参数 @2 指定选项。  
详细用法请参考 bass 文档

### bass.channel.open(path,flags) <a id="bass.channel.open" href="#bass.channel.open">&#x23;</a>
打开音频,  
参数 @1 可用一个字符串指定本地文件路径、资源文件路径、网址、内存数据,  
可选使用参数 @2 指定选项  
详细用法请参考 bass 文档。

### bass.channel.openPush() <a id="bass.channel.openPush" href="#bass.channel.openPush">&#x23;</a>
[返回对象:basschannelObject](#basschannelObject)

### bass.channel.openPush(initialData,flags) <a id="bass.channel.openPush" href="#bass.channel.openPush">&#x23;</a>
创建压缩文件推送流（MP3/OGG 等，非 PCM）。  
参数 @initialData 是从文件开头连续取得的初始数据；不足以识别格式时可能失败，可积累更多初始数据后重试。  
成功返回 channel,已消费的初始字节数；未消费的初始字节仍须先 pushFile，再推送后续字节。  
失败返回 null,错误信息,BASS错误码。  
禁止 AUTOFREE。必须在创建线程调用 free。  
通常请改用自动缓冲与收尾的 bass.streamPlayer。

## basschannelObject 成员列表 <a id="basschannelObject" href="#basschannelObject">&#x23;</a>

### basschannelObject.duration() <a id="basschannelObject.duration" href="#basschannelObject.duration">&#x23;</a>
返回总时长,以秒为单位

### basschannelObject.effect() <a id="basschannelObject.effect" href="#basschannelObject.effect">&#x23;</a>
[返回对象:basseffectObject](#basseffectObject)

### basschannelObject.effect(type,priority) <a id="basschannelObject.effect" href="#basschannelObject.effect">&#x23;</a>
创建效果

### basschannelObject.free() <a id="basschannelObject.free" href="#basschannelObject.free">&#x23;</a>
释放对象  
音频对象不会自动释放,  
必须在不再使用该音频时手动调用些函数释放对象

### basschannelObject.getAttribute(attrib) <a id="basschannelObject.getAttribute" href="#basschannelObject.getAttribute">&#x23;</a>
获取属性值

### basschannelObject.getData(_BASS_DATA) <a id="basschannelObject.getData" href="#basschannelObject.getData">&#x23;</a>
获取FFT频谱数据

### basschannelObject.getDevice() <a id="basschannelObject.getDevice" href="#basschannelObject.getDevice">&#x23;</a>
返回音频设备索引

### basschannelObject.getInfo() <a id="basschannelObject.getInfo" href="#basschannelObject.getInfo">&#x23;</a>
返回音频信息,返回格式请参考些函数源码

### basschannelObject.getPosition() <a id="basschannelObject.getPosition" href="#basschannelObject.getPosition">&#x23;</a>
返回当前位置,可选使用参数@1指定使用的单位

### basschannelObject.getTime() <a id="basschannelObject.getTime" href="#basschannelObject.getTime">&#x23;</a>
返回以秒为单位的当前播放时间位置

### basschannelObject.getVolume() <a id="basschannelObject.getVolume" href="#basschannelObject.getVolume">&#x23;</a>
返回音量,  
返回值为0到1之间表示百分比的小数

### basschannelObject.isActive() <a id="basschannelObject.isActive" href="#basschannelObject.isActive">&#x23;</a>
音频是否可用

### basschannelObject.loop() <a id="basschannelObject.loop" href="#basschannelObject.loop">&#x23;</a>
设置是否循环播放

### basschannelObject.pause() <a id="basschannelObject.pause" href="#basschannelObject.pause">&#x23;</a>
暂停播放

### basschannelObject.play() <a id="basschannelObject.play" href="#basschannelObject.play">&#x23;</a>
播放音频

### basschannelObject.posCallback(callback,interval) <a id="basschannelObject.posCallback" href="#basschannelObject.posCallback">&#x23;</a>

```aardio
basschannelObject.posCallback(  
	function(seconds){  
		/*播放进度改变时触发此函数,  
seconds为当前播放时长,以秒为单位*/	  
	}  
)
```

### basschannelObject.push <a id="basschannelObject.push" href="#basschannelObject.push">&#x23;</a>
向 bass.channel.create 创建的流推送 PCM 样本，不能传入 MP3 编码字节

### basschannelObject.push(buffer,length) <a id="basschannelObject.push" href="#basschannelObject.push">&#x23;</a>
buffer 为字符串或 buffer 对象。  
length 指定推送长度，如果不指定 length 则自动取参数 @1 长度。  
如果参数 @1 为内存指针，则必须指定 length 参数

### basschannelObject.pushFile(data,length) <a id="basschannelObject.pushFile" href="#basschannelObject.pushFile">&#x23;</a>
向 openPush 创建的压缩文件流添加编码字节。  
返回实际接收字节数（0 表示缓冲暂满），失败返回 null,错误信息；必须保留未接收的数据并稍后重试，不能丢弃。  
参数 length 默认 #data；pushFile(null,0) 表示 EOF，仅可在全部数据已接收后调用。空块不能当作普通数据调用此接口。  
建议直接使用 bass.streamPlayer 自动处理缓冲与 EOF。

### basschannelObject.resetEffect() <a id="basschannelObject.resetEffect" href="#basschannelObject.resetEffect">&#x23;</a>
重置效果

### basschannelObject.setAttribute(attrib,value) <a id="basschannelObject.setAttribute" href="#basschannelObject.setAttribute">&#x23;</a>
设置属性值

### basschannelObject.setDevice() <a id="basschannelObject.setDevice" href="#basschannelObject.setDevice">&#x23;</a>
指定音频设备索引,  
参数为 bass.getDeviceInfos 返回的音频设备数组中对应设备的数组索引值,  
参数指定的设备索引如果未初始化则自动调用 bass.init 函数初始化

### basschannelObject.setFlags(flags,mask) <a id="basschannelObject.setFlags" href="#basschannelObject.setFlags">&#x23;</a>
设置选项

### basschannelObject.setPosition(pos) <a id="basschannelObject.setPosition" href="#basschannelObject.setPosition">&#x23;</a>
设置位置,可选使用参数@2指定使用的单位

### basschannelObject.setSpeed(速率) <a id="basschannelObject.setSpeed" href="#basschannelObject.setSpeed">&#x23;</a>
设置播放速度。  
参数为 0 到 1 的小数减慢速度，设为大于 1 的数加快速度，1 为正常速度。  

此函数调用 setAttribute 函数并以 _BASS_ATTRIB_FREQ 为参数改变采样率，从而影响播放速度。  
此方法对音高也有影响，播放速度更快声音也会变得更尖锐，

### basschannelObject.setTime(seconds) <a id="basschannelObject.setTime" href="#basschannelObject.setTime">&#x23;</a>
设置当前播放时间位置,参数指定秒数

### basschannelObject.setVolume() <a id="basschannelObject.setVolume" href="#basschannelObject.setVolume">&#x23;</a>
使用0到1之间表示百分比的小数设置音量

### basschannelObject.slideAttribute(attrib,value,milliseconds) <a id="basschannelObject.slideAttribute" href="#basschannelObject.slideAttribute">&#x23;</a>
在参数@3指定的时间内  
渐变参数@1指定的属性到参数@2指定的值

### basschannelObject.slideVolume(vol,milliseconds) <a id="basschannelObject.slideVolume" href="#basschannelObject.slideVolume">&#x23;</a>
渐变音量到 @vol 参数指定的值,  
使用 0 到 1 之间表示百分比的小数表示音量  
,参数@3指定渐变时长

### basschannelObject.stop() <a id="basschannelObject.stop" href="#basschannelObject.stop">&#x23;</a>
停止播放

### basschannelObject.syncCallback(callback,syncType,syncParam) <a id="basschannelObject.syncCallback" href="#basschannelObject.syncCallback">&#x23;</a>

```aardio
basschannelObject.syncCallback(function(data){  

},_BASS_SYNC/*指定同步回调类型,可选用参数@3指定附加参数  
此函数详细用法请参数函数源码以及bass.dll的文档*/)
```

## basseffectObject 成员列表 <a id="basseffectObject" href="#basseffectObject">&#x23;</a>

### basseffectObject.delete() <a id="basseffectObject.delete" href="#basseffectObject.delete">&#x23;</a>
删除效果

### basseffectObject.getParameters() <a id="basseffectObject.getParameters" href="#basseffectObject.getParameters">&#x23;</a>
获取参数

### basseffectObject.setParameters() <a id="basseffectObject.setParameters" href="#basseffectObject.setParameters">&#x23;</a>
设置参数

### basseffectObject.setPriority() <a id="basseffectObject.setPriority" href="#basseffectObject.setPriority">&#x23;</a>
设置优先级
