首页 > 其他分享 >asound.conf的作用

asound.conf的作用

时间:2023-08-09 09:11:53浏览次数:35  
标签:asound slave default hw channels conf pcm type 作用

asound.conf允许对声卡或者设备进行更高级的控制,提供访问alsa-lib中的pcm插件方法,允许你做更多的复杂的控制,比如可以把声卡组合成一个或者多声卡访问多个I/O。

  • Default plugin

pcm.!default {
    type hw
    card 0
}
 
ctl.!default {
    type hw           
    card 0
}

关键字default定义在alsa-lib中,将会访问hw:0,0声卡。
aplay -D default test.wav  (== aplay -Dhw:0,0 test.wav)

  

  • Plugin

rate_convert
 
pcm.rate_convert {
    type rate
    slave {
        pcm
        rate 48000
    }
}

调用这个接口,比如之前44.1k的采样频率将会转换为48khz。

 

更复杂的用法:

type plug                 # Format adjusted PCM
slave STR               # Slave name (see pcm_slave)
# or
slave {                 # Slave definition
    pcm STR         # Slave PCM name
    # or
    pcm { }         # Slave PCM definition
    [format STR]    # Slave format (default nearest) or "unchanged"
    [channels INT]  # Slave channels (default nearest) or "unchanged"
    [rate INT]      # Slave rate (default nearest) or "unchanged"
}
route_policy STR     # route policy for automatic ttable generation
                          # STR can be 'default', 'average', 'copy', 'duplicate'
                       # average: result is average of input channels
                          # copy: only first channels are copied to destination
                          # duplicate: duplicate first set of channels
                       # default: copy policy, except for mono capture - sum
ttable {               # Transfer table (bidimensional compound of 
                       # cchannels * schannels numbers)
    CCHANNEL {
        SCHANNEL REAL     # route value (0.0 ... 1.0)
    }
}
pcm_slave.sl3 {
    pcm "hw:1,0"
    format S16_LE
    channels 1
    rate 16000
}
 
pcm.complex_convert {
    type plug
    slave sl3
}

  

dmix

pcm.!default {
    type plug
    slave.pcm "dmixer"
}
 
pcm.dmixer  {
     type dmix
     ipc_key 1024
     slave {
        pcm "hw:1,0"
        period_time 0
        period_size 1024
        buffer_size 4096
        rate 44100
    }
    bindings {
        0 0
        1 1
    }
}
 
ctl.dmixer {
    type hw
    card 0
}

aplay -f cd -D default test.wav

  

dsnoop

pcm.mixin {
    type dsnoop
    ipc_key 5978293    # must be unique for all dmix plugins!!!!
    ipc_key_add_uid yes
    slave {
        pcm "hw:0,0"
        channels 2
        period_size 1024
        buffer_size 4096
        rate 44100
        periods 0 
        period_time 0
    }
    bindings {
        0 0
        0 1
    }
}

  

jack plugin

pcm.jackplug {
    type plug
    slave { pcm "jack" }
}
 
pcm.jack {
    type jack
    playback_ports {
        0 alsa_pcm:playback_1
        1 alsa_pcm:playback_2
    }
    capture_ports {
        0 alsa_pcm:capture_1
        1 alsa_pcm:capture_2
    }
}

aplay -Djackplug somefile
arecord -Djackplug somefile

  

Virtual multi channel devices

如果你想链接两个或者多个alsa设备,以便你有一个虚拟的多通道设备。

# create a virtual four-channel device with two sound devices:
# This is in fact two interleaved stereo streams in
# different memory locations, so JACK will complain that it
# cannot get mmap-based access. see below.
 
pcm.multi {
        type multi;
        slaves.a.pcm "hw:0,0";
        slaves.a.channels 2;
        slaves.b.pcm "hw:1,0";
        slaves.b.channels 2;
        bindings.0.slave a;
        bindings.0.channel 0;
        bindings.1.slave a;
        bindings.1.channel 1;
        bindings.2.slave b;
        bindings.2.channel 0;
        bindings.3.slave b;
        bindings.3.channel 1;
}
 
# JACK will be unhappy if there is no mixer to talk to, so we set
# this to card 0. This could be any device but 0 is easy. 
 
ctl.multi {
        type hw;
        card 0;
}
 
# This creates a 4 channel interleaved pcm stream based on
# the multi device. JACK will work with this one.
 
pcm.ttable {
        type route;
        slave.pcm "multi";
        slave.channels 4;
        ttable.0.0 1;
        ttable.1.1 1;
        ttable.2.2 1;
        ttable.3.3 1;
}
# see above.
ctl.ttable {
        type hw;
        card 0;
}
arecord -f S16_LE -r 44100 -c 4 -D multi | aplay -f S16_LE -r 44100 -c 4 -D multi

  



标签:asound,slave,default,hw,channels,conf,pcm,type,作用
From: https://www.cnblogs.com/ahuo/p/17615954.html

相关文章

  • k8s 学习笔记之配置存储——ConfigMap&Secret
    配置存储ConfigMapConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。创建configmap.yaml,内容如下:apiVersion:v1kind:ConfigMapmetadata:name:configmapnamespace:devdata:info:|(这个|后面整个都是值)username:adminpassword:12......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • Template String Converter 无法作用在 vue、html 解决方案
    在vscode插件安装地址中找到该插件,默认位置:C:\Users\你的用户名\.vscode\extensions\meganrogge.template-string-converter-0.6.1该目录下有一个package.json文件,打开该文件,编辑里面的 activationEvents项,添加你想要作用的语言,例:"activationEvents":["onLanguage:......
  • configure: line 481: sed: command not found
    执行configure时,提示各种命令都没有找到一、执行./configureCFLAGS=-D_GNU_SOURCE二、错误提示./configureCFLAGS=-D_GNU_SOURCE./configure:line481:sed:commandnotfound./configure:line480:expr:commandnotfound./configure:line481:sed:command......
  • ERROR:'ipconfig'不是内部或外部命令,也不是可运行的程序 && 解决配置环境变量时只显示
     解决方法: 输入cdc:\windows\system32进入该路径后输入ipconfig,即可得出ip地址。 拓:发现两个进入高级系统设置的方法。1.桌面.此电脑→右键.属性→高级系统设置2.桌面.控制面板→搜索.高级系统设置 拓:编辑环境变量的时候,解决配置环境变量时只显示一行的问题变量值......
  • 易基因:m5C RNA甲基转移酶及其在癌症中的潜在作用机制|深度综述
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。近年来,5-甲基胞嘧啶(m5C)RNA修饰已成为通过编码和非编码RNA调控RNA代谢和功能的关键参与者。越来越多的证据表明,m5C可以调控RNA稳定性、翻译、转录、出核和切割,以及介导细胞增殖、分化、凋亡、应激反应和其他生物学功能......
  • 直线电机模组在激光切割机上的作用
    激光切割机是将从激光器发射出的激光,经光路系统,聚焦成高功率密度的激光束。激光束照射到工件表面,使工件达到熔点或沸点,同时与光束同轴的高压气体将熔化或气化金属吹走。激光切割加工是用不可见的光束代替了传统的机械刀,具有精度高,切割快速,不局限于切割图案限制,自动排版节省材料,切口......
  • java中static关键字的作用
    static关键字的作用static可以修饰变量、方法、代码块和内部类static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。static变量和非sta......
  • 反射中setAccessIble(true)有什么作用?
    结论动态修改一个类的方法或属性或执行方法都要受安全体系的检查,而安全体系处理是非常消耗资源的。因此运行期间想要动态修改类信息时提供了一个Accessible方法,其作用是是否逃避java安全体系的检查,进行快速访问。相比不进行设置setAccessible=true的操作,性能消耗大概是20倍左右......
  • nginx:配置文件(nginx.conf)各项说明
    学习自:Nginxnginx.conf配置文件详解_nginxconf配置详解_一片星空~的博客-CSDN博客一、配置文件结构worker_processes1;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;sendfile......