首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将dmix与ladspa插件结合到默认设备上

如何将dmix与ladspa插件结合到默认设备上
EN

Unix & Linux用户
提问于 2013-12-22 20:15:14
回答 2查看 2.5K关注 0票数 3

有一段时间,我已经放弃了所有的声音守护进程,并快乐地生活,从那时起,我只使用dmix插件。然而,最近我对youtube视频的不同音量水平感到恼火,并决定插入压缩机和限制器。IMHO,这是一个非常理想的设置。

但唉,我运气不好。我得到了播放或捕捉,但从来没有两者兼而有之。我想根本的问题是我缺乏理解,所以我的基本问题是:

  • 在哪里可以找到alsa和.asoundrc的好文档,这不仅仅是示例,而且可以解释我得到的错误消息(参见下面)。
  • 有没有人成功地建立了一个没有守护进程的声音设置,其中包括ladspa插件?
  • 有没有人知道原因,甚至是解决我的特殊问题的方法(下面描述)?

对于那些有耐心跟随我的痛苦的人来说,他们就在这里。我已经能演奏出这样的声音了

代码语言:javascript
复制
aplay -D ladspaChain /usr/share/skype/sounds/CallBusy.wav

但我不能通过默认设备播放。

代码语言:javascript
复制
 pcm.!default {
    type plug
    slave.pcm {
    type asym
    playback.pcm "ladspaChain"
    capture.pcm "dsnooper"
   }
}

如果没有-D ladspaChain,我会

代码语言:javascript
复制
aplay: pcm_params.c:170: snd1_pcm_hw_param_get_min: Assertion `!snd_interval_empty(i)' failed.**

或者我试过了

代码语言:javascript
复制
 pcm.!default {
    type route
    slave.pcm {
    type asym
    playback.pcm "ladspaChain"
    capture.pcm "dsnooper"
   }
    ttable {
        0.0     1       # left channel
        1.1     1       # right channel
    } 
} 

在这种情况下,回放工作,但记录给我

代码语言:javascript
复制
arecord: set_params:1081: Sample format non available
Available formats:
- S32_LE
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2015-01-26 18:04:51

我在https://forums.gentoo.org/viewtopic-t-733367-start-0.html上找到了一个完整的答案(与Permat和Ramesh的回答完全一致):

希兰赫恩:“基本上,我必须将Dmix定义为插件,然后才能使用它。”

虽然这与阿尔萨很好,但我不能让脉动音频/阿普尔斯工作(对于skype)。当我将脉冲设置为直接使用dmix时,它工作了,但它只抓住了设备,alsa就不再工作了。让脉冲使用远离卡的pcms根本不起作用。

解决方案是创建两个dmixes。现在我有了

  • 永久插入ladspa插件的一种方法(在我的例子中是一个限制器)
  • 默认设备工作(firefox很高兴)
  • 无脉冲音频
  • skype仍然通过apulse工作。

出口APULSE_PLAYBACK_DEVICE=plug:duplexPulse apulse skype

这是我现在的.asoundrc

代码语言:javascript
复制
#--------------------------------------------------
# Cards
#--------------------------------------------------
pcm.audiophile {
    type hw
    card 0
}

ctl.audiophile {
    type hw
    card 0
}


#--------------------------------------------------
# Normal alsa
#--------------------------------------------------
pcm.!default {
    type plug
    slave.pcm "duplex"
} 

pcm.duplex {
    type asym
    playback.pcm "ladspa"
    capture.pcm "dsnooper"
}


# --- ladspa chain ---
    
pcm.ladspa {
  type ladspa
  slave.pcm "dmixplug"
  path "/usr/lib/ladspa";
  plugins [
    {
    label fastLookaheadLimiter
    input {
        #InputGain(Db) Limit (db) Release time (s) 
        controls [ 9 -3 10]
        }
    
    }]
}



pcm.dmixplug {
  type plug
  slave.pcm "dmixer"
}


pcm.dmixer {
    type dmix
    ipc_key 1234
    slave {
        pcm "audiophile"
        period_size 1024
        buffer_size 4096
        rate 44100
    }
} 

pcm.dsnooper {
    type dsnoop
    ipc_key 2048
    ipc_perm 0666 
    slave.pcm "audiophile"
    slave 
    {
        period_time 0
        period_size 1024
        buffer_size 4096
        rate 44100
    }
    bindings {
        0 0
        1 1
    }
}

#--------------------------------------------------
# special entries for pulseaudio/apulse
#--------------------------------------------------

pcm.duplexPulse {
    type asym
    playback.pcm "dmixerPulse"
    capture.pcm "dsnooper"
}

pcm.dmixerPulse {
    type dmix
    ipc_key 1234
    slave {
        pcm "audiophile"
        period_size 1024
        buffer_size 4096
        rate 44100
    }
} 
票数 0
EN

Unix & Linux用户

发布于 2014-05-24 21:11:40

使用即插即用(它也接受表),而不是按类型路由,这意味着您可以跳过一个层次的嵌套。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/106270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档