我的 Alsa 音序器似乎有问题。我正在使用抛物线(Arch 变体)并且我不使用 Pulseaudio,我直接使用 Alsa。我正在尝试通过具有 MIDI 音频的 Wine 玩游戏。我安装了流体合成器,它可以工作 - 我可以播放一个 MIDI 文件,听起来不错。但是,如果我启动流体合成服务器并运行aplaymidi -l
,我会收到以下错误:
$ aplaymidi -l
ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
我没有/dev/snd/seq
文件,这似乎是应该存在的,与 Alsa 音序器有关。有谁知道为什么该文件可能不存在以及我可以尝试哪些解决方案?
编辑:
为了回答评论中的问题,这里是/proc/config.gz
处理序列器的部分的输出:
$ zgrep -A 5 -B 5 SEQUENCER /proc/config.gz
# CONFIG_SND_CTL_VALIDATION is not set
# CONFIG_SND_JACK_INJECTION_DEBUG is not set
CONFIG_SND_VMASTER=y
CONFIG_SND_DMA_SGBUF=y
CONFIG_SND_CTL_LED=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_SEQUENCER_OSS=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_SEQ_MIDI_EVENT=m
CONFIG_SND_SEQ_MIDI=m
CONFIG_SND_SEQ_MIDI_EMUL=m
CONFIG_SND_SEQ_VIRMIDI=m
所以看起来Alsa音序器被编译为一个模块,我可能只需要加载那个模块。
如果
/dev/snd/seq
特殊文件不存在,很可能是因为您的系统没有加载适当的驱动程序。适当的驱动程序是任何 linux 发行版的一部分,并且根据 CONFIG_SND_SEQUENCER 配置选项在内核生成时构建。
对Sequencer Support(位置:设备驱动程序/声卡支持/高级 Linux 声音架构)说是,以在内核中构建驱动程序。(Alsa曾经推荐过)。重建你的内核,就是这样,它将在引导时自动加载(并创建特殊文件)。
顺便说一句,我强烈建议也选择“使用 HR-timer 作为默认音序器计时器”。
我发现这个驱动程序可以构建为一个模块(比如 M)。如果这是您的选择,那么您不应该忘记在愿意使用 /dev/snd/seq 特殊文件之前显式地修改它。