以前在 kubuntu 13.10 中,我可以打开 vmpk 或插入 midi 键盘,并且只要 TiMidity 在服务器模式下运行,我就可以运行
aconnect [keyboard port (129:0 for vmpk)] 14:0
aconnect 14:0 128:0
我可以弹奏键盘并听到声音。但现在,在升级到 trusty 一段时间后,我尝试这样做,但没有听到任何声音。TiMidity 本身 ( timidity ~/path/to/midi.mid
) 仍然可以正常播放文件,但如果我尝试使用 aplaymidi 播放它们,我仍然只会听到静音。奇怪的是,midi 文件显然正在被读取。当我运行(其中 130:0 是 vmpk 的输入端口)时
aplaymidi -p 130:0 ~/path/to/midi.mid
vmpk 会突出显示钢琴上的音符,就像在演奏 midi 一样。有一次我尝试这样做,TiMidity (?) 非常短暂地播放了我歌曲的第一个和弦的几分之一秒,然后一切就都安静了下来,vmpk 会像往常一样突出显示键盘上的第一个声音。
现在最奇怪的是,大概有 40% 的时间,当我用 aplaymidi 或 vmpk 弹奏至少一个音符时,当我运行
aconnect -x
我的扬声器突然发出一个音符或和弦(也就是说,如果我弹奏一个音符,我得到的是一个音符;如果我弹奏多个连续的音符,它们会变成一个和弦),就好像这些音符被排队但没有被播放,而这不知何故释放了它们。我不知道那里发生了什么。
不久前,我记得 Audacity 播放 wav 文件时出现了一个问题,如果我尝试暂停它,它会加速并锁定,当我将音频设备设置为实际音频设备而不是脉冲时,它就会停止播放。但现在当我再次检查时,它却在做相反的事情:它根本不会播放音频和/或如果我尝试暂停它,它会表现得很奇怪不将音频设备设置为脉冲,无论哪种方式都会偶尔随机地执行加速操作。
奇怪的是,在一个看起来很乱的音响系统中,VLC 和 Firefox 中的声音一直运行良好,如果我用
aplay ~/path/to/sound.wav
这也很好用。
我知道该怎么做才能找出 ALSA 的问题并/或修复它?
编辑:我试过 aseqdump。我从 vmpk 和 aplaymidi 得到的都是一堆看起来像这样的行;当我连接到 aseqdump 时,只有“note on”、“note off”、“port subscribed”,如果我在另一个选项卡中运行 aconnect -x 或歌曲完成,则只有“port unsubscribed”。
Source Event Ch Data
0:1 Port subscribed 132:0 -> 131:0
132:0 Program change 0, program 34
132:0 Note on 9, note 35, velocity 40
132:0 Program change 1, program 40
132:0 Program change 2, program 44
...
132:0 Note on 9, note 35, velocity 40
132:0 Note off 9, note 35, velocity 0
132:0 Note on 0, note 48, velocity 95
132:0 Note on 9, note 35, velocity 40
132:0 Note on 1, note 72, velocity 65
132:0 Note off 0, note 48, velocity 0
132:0 Note off 1, note 72, velocity 0
132:0 Note off 9, note 35, velocity 0
132:0 Note on 0, note 46, velocity 80
132:0 Note on 9, note 35, velocity 40
132:0 Note on 1, note 70, velocity 65
132:0 Note off 0, note 46, velocity 0
132:0 Note off 1, note 70, velocity 0
132:0 Note off 9, note 35, velocity 0
132:0 Note on 0, note 48, velocity 105
132:0 Note on 9, note 35, velocity 40
132:0 Note on 1, note 72, velocity 75
132:0 Note off 0, note 48, velocity 0
132:0 Note off 1, note 72, velocity 0
132:0 Note off 9, note 35, velocity 0
132:0 Note on 9, note 35, velocity 40
132:0 Note on 0, note 43, velocity 80
132:0 Note on 1, note 67, velocity 50
0:1 Port unsubscribed 132:0 -> 131:0
似乎只有当我将 vmpk 或 aplaymidi 连接到 TiMidity,然后使用 Ctrl+C 关闭 aplaymidi 或使用 aconnect -x 断开 vmpk 时,才会发生声音爆发。
另外,当我尝试使用 fluidsynth 时,fluidsynth 和 jackd 都会失败,因为 jackd 无法访问名为 alsa_pcm 的设备。
$ jackd -d alsa -r
jackdmp 1.9.10
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2013 Grame.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
no message buffer overruns
no message buffer overruns
no message buffer overruns
JACK server starting in realtime mode with priority 10
Cannot lock down 82274202 byte memory area (Cannot allocate memory)
audio_reservation_init
Acquire audio card Audio0
creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
ALSA: Cannot open PCM device alsa_pcm for playback. Falling back to capture-only mode
Cannot initialize driver
JackServer::Open failed with -1
Failed to open server