Audio in Linux is awesome
I’ve got some poorly recorded MP3s of people speaking. I want to try to make them a little easier to hear. In Windows I’d reach for Sound Forge. How about in Linux?
- Search Google for “sound forge equivalent for Linux.”
- Find several references to “Wave Forge.”
- Find “Wave Forge” hasn’t been updated this century. Move on.
- Decide to try Audacity because it’s in the back of your head, and Ardour because you found a bunch of links to it somewhere.
-
yum install audacity ardour. That was easy. - Run Ardour. Tells you it needs JACK. WTF is a JACK? Move on.
- Run Audacity. Loads. GUI looks a little silly compared to Sound Forge, but it looks functional enough.
- Try to load the MP3 file. Get told this version doesn’t have MP3 support.
- Fish around for something to decode an MP3 to a WAV file. Feel
bad about considering installing xmms just because you remember
how to do this with WinAmp. Rejoice when you find
lame --decode. - Load the WAV in Audacity. Looks good.
- Hit the play button. Get told there’s an error in sound output.
- Check sound preferences. Note that there are no available playback devices.
- Read around for a while about JACK. See references to
jackd. Eventually realize that this is something you need to run yourself, as your own user. - Run
jackd. Get told that it can’t open the hardware device, presumably because other things (Amarok, Flash) are using it. - Find the correct invocation to run
jackdwhich is something likejackd -d alsa -d default(-dtwice, WTF). -
jackdseems to keep running. Cross fingers, run Ardour. It opens. - Look at the Ardour interface. Decide that (1) it’s not what I want, and (2) dear god that is ugly. Is that Tk? Motif? Holy hell. Run away.
- Open Audacity back up for the shit of it. Lo, there is some sort of JACK playback device now. Select it, hit OK.
- Click play button in Audacity. Error with sound card.
- Go into settings, change record device from OSS to JACK. (But I’m not recording?) Click play button in Audacity. Sound comes out! Rejoice.
- Select a section, figure out how to zoom in. Click play. Get an error telling you it can’t play.
- Try playing different selections, no selections. Keep getting the same error.
- Restart Audacity. Same error.
- Restart
jackd. Restart Audacity. Same error. - Read about
qjackctlbeing very helpful.yum install qjackctl. That was easy. - Run it. Not sure what I’m looking at. Says JACK is started. Try to turn on logging. Tells me I have to restart something. Whatever.
- Restart Audacity. Hit play. Same error.
-
strace jackd. Hit play in Audacity. No activity. - Stop
jackdand tellqjackctlto start it. Get a pretty incomprehensible error message in its “log.” - Realize that it’s bitching because it’s trying to start it with real-time priority, which it presumably doesn’t have permission to do.
- Read http://jackaudio.org/faq. “The simplest, and least-secure way to provide real-time privileges is running jackd as root. This has the disadvantage of also requiring all of JACK clients to run as root.” Yeah, no.
- Google around a bit, find out about
/etc/security/limits.conf. Find some lines in there referring to@jackuser. - Try to
usermod -a -G jackuser myuser. Fails, presumably because my user is in LDAP (but the group is in/etc/group). -
vigr, add myself to thejackusergroup by hand. - Don’t want to restart my X session to get new groups. Figure I
need to log in from scratch to get new limits. Fuck it,
ssh localhost. - Run
qjackctl. Tell it to startjackd. Works. Rejoice. - Run Audacity. Hit play. It works!
- Stop. Hit play again. It still works!
- Stop. Make a selection. Play the selection. Holy shit it played the selection!
Really not very much work at all. And Audacity only crashed, like,
three or four times while I was using it! (Mostly when hitting the
play button to play the section I was working on. I can’t remember if
jackd exited too.)
I can’t wait for PulseAudio. I’m sure that will make all of this even easier.
Oh, but in the end, I just ended up using sox and normalize in a
script to do my MP3s in a batch…