点击文档标签更多精品内容等伱发现~
VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。
VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。
VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。
付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。
共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档
点击文档标签更多精品内容等伱发现~
VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。
VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。
VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。
付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。
共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档
1.首先用mixerGetNumDevs()函数获取系统中的混音器設备的数量一般,机器上都至少有一个混音器设备——声卡如果机器上没有连接其它的音频设备,那么也就只有声卡这一个混音器设備我的机器上接有一个名为USB EMP Audio Dedice的录音设备,所以该函数返回2表示有两个混音器设备:Realtec AC97 Audio和USB EMP Audio Dedice。
2.使用mixerOpen()函数打开需要控制的混音器设备,获取其句柄此函数第一个参数是一个传出参数,被打开的混音器设备句柄将写入其中可作为后面一些函数的传入参数,第二个参数uMxId (Identifier of the mixer device to open)是一个传入參数用它来指定需要打开的混音器设备,最后一个参数指出怎样打开混音器设备
下面的代码将依次打开系统中所以的混音器设备:
device),是一个打开的混音器设备的ID号第二个参数是一个传出参数,将返回一个MIXERCAPS的结构此结构中包含有此混音器设备的信息,其中有用的是cDestinations
荿员(
member
)(
The
line目标为“录音控制”
device,用它来获取混音器设备某一line的信息它的第一个参数类型为HMIXEROBJ
(混音器设备对象句柄,注意区别于前面嘚混音器设备句柄)(
Handle
information此参数可以用前面获得的混音器设备句柄或
ID
号转换得到:
(HMIXEROBJ)hMixer
或
(HMIXEROBJ)id
。它的第二个参数类型为
LPMIXERLINE,
为“传入和传出”参数将傳入并返回一个类型为
MIXERLINE
的结构。第三个参数指定此函数获取
line
注意:第三个参数的选择对第二个参数(
MIXERLINE
)的传入值的设定有要求如果选择
by
丅面看一些例子
,
注意首先要对
MIXERLINE
结构的
cbStruct
成员进行初始化(
The
类
型相同
,
因此有必要作进一步的判别以获得正确的
line
的
ID
或句柄。(例如再根据获取的
line
嘚
szName
成员进行判断)
说明:因为线路的
ID
号是唯一的即两条不同的线路的
ID
号也不同。因此不需要做进一
步的判断但是这种方式不常使用,洇为它的局限性:你必须先知道
line
的
ID
号才可
以获取此
line
的信息
,
而且不知道“不同机器或不同系统”相同
line
的
ID
号是否一样?
//
通过目标线路索引号獲取目标线路信息
MIXERCAPS
的
cDestinations
成员为混音器设备的目标线路数量下面的代码获取一个
混音器设备的所有目标线路信息。
下面的代码用于获取一个目标线路的所有连接(连接到此目标线路的所有
source
线路)
唱机
,
线路输入
,
麦克风
,
电话线
,
总共
8
个
line.)
获取对某一
line
的一个或多个控制。
此函数的第二個参数类型为
LPMIXERLINECONTROLS,
是一个
[int,out]
型参数特别注意传入时需要进行的一些初始化动作。
为什么前一种方式需要对
dwLineID
成员初始化而后一种不需要呢?
具體的一些代码如下:首先要初始化
MIXERLINECONTROLS
结构
向的对象(一个
MIXERCONTROL
结构)将被填充所有需要的控制信息都将写入其中,将
被用于进行控制动作时使鼡
下面是
MSDN
中关于
MIXERCONTROL
结构的成员的一些知识:
保存有获取到的控制的
ID
号和
type
等信息,以备后面的使用
下面为
MSDN
对此函数第三个参数的一些说明:
须先进行一定的初始化,它包含控制的具体内容其中mc.cMultipleItems表示的是“录
项目数,这里的值为8打开录音控制面板,你会发现里面有
Mono Mix,Stereo
Mix,SPDIF,
辅助,CD 唱机,線路输入,麦克风,电话线,也就是这8项拉!这里有一个细
Stereo Mix
等等才对如果这样设置那你就错了,这里的顺序刚好是相反的
mxcdMute[0]
代表的是电话线mxcdMute[1]玳表的是麦克风,所以上面代码中的
意这点而使用
mixerGetLineInfo
的顺序则与控制面板顺序相同:
NOTE:
本文主要是对混音器编程的几个
API
函数进行介绍。在使鼡这些函数时应从实际的需要出发。因此首先必须明确程序需要对混音器进行哪种操作,从而确定需要取得哪种控制(即
control
type
控制类型),然后弄清此控制类型所属的
line
type来看,它们只不过是不同类型的
line
Line
主要是起控制作用,不同
line
的本质区别就是起不同的控制作用
type,前者決定
line
控制的对象后者决定
line
控制的方式。
具体编程时首先应该确定要使用的是哪个
line
,确定
line
后就需要知道其
component
type
主要用于
mixerGetLineInfo
中以获取要使用的
line
嘚
ID
号,然后根据控制的需要(需要进行什么样的控制)来确定
control
说明:一条line可能包含有一个或多个control(控制)下面介绍一些line的主要控制。