在安装的Ubuntu 14.04 中oss-compat
,我有以下内容/dev/snd
:
- 控制C0
- 控制C1
- 硬件C0D0
- 硬件C0D1
- midiC1D0
- midiC1D1
- midiC1D2
- midiC1D3
- pcmC0D0c
- pcmC0D0p
- pcmC0D1c
- pcmC0D1p
- 序号
- 计时器
现在,在 Ubuntu 16.04(最近刚刚从 14.04 迁移到 16.04 作为新安装)中,我只有这些:
- 控制C0
- 硬件C0D0
- 硬件C0D1
- pcmC0D0c
- pcmC0D0p
- pcmC0D1p
- 序号
- 计时器
失踪midiCnDn
了。
我注意到在 16.04 中,由(作为虚拟包提供)oss-compat
提供。我以为是这个问题,但在用(该名称的具体包)替换后,它仍然相同。我使用新旧目录进行比较,没有运气,似乎差异不是来自 中的不同配置。osspd
oss-compat
osspd
oss-compat
meld
etc
etc
这种差异可能来自哪里?我如何更改提供的内容?这是一个内核选项吗?或者这真的是我遗漏的东西etc
?
答案1
在@CL.的评论之后,我可以通过添加一行snd-virmidi
在末尾解决这个问题/etc/modules
。重启后,ls /dev/snd
显示预期的midiCnDn
条目。如果想立即检查而不重启,那么sudo modprobe snd-virmidi
可以做同样的事情,但只是暂时的。需要在末尾添加一行/etc/modules
才能永久加载此模块。
如果您希望虚拟 MIDI 卡使用固定索引,您可以添加索引选项创建/etc/modprobe.d/snd-virmidi.conf
文件(自 Ubuntu 16.04 以来是必需的方式),然后添加行,options snd-virmidi index=n
其中 N 是您希望它所在的索引。如果您有一张真正的声卡,其索引将为 0,因此希望将虚拟 MIDI 卡置于索引 1 处。默认情况下,虚拟 MIDI 卡将公开四个虚拟 MIDI 设备。如果索引为 1,它们将从/dev/snd/midiC1D0
到/dev/snd/midiC1D3
。
因此有一个用于虚拟 MIDI 设备的内核模块,它与 OSS 仿真无关。