Linux audio
Audio Conversion using Virtual FS
Example:
mp3fs -b 224 ~/Music /mnt/mp3 -o allow_other,ro
GUI Audio Conversion
Nautilus Audio Converter
- Install with
sudo apt-get install wavpack mppenc libmpcdec3 faac flac vorbis-tools faad lame libid3-3.8.3-dev nautilus-script-audio-convert
- libid3-3.8.3-dev needed for id3tag.
- See Ubuntu Geek - Simplest way to convert audio file(s) on Ubuntu Linux
Gnome Sound Converter
Very nice utility.
- Can convert to flac, ogg, mp3.
- Output to given directory, in {artis - album} format
- mp3, support lame vbr (but apparently --vbr-old only) — done via GStreamer pipeline.
CLI Audio Conversion
flac - FLAC encoder / decoder
flac -d source.flac
flac -d source.flac -o output.wav
flac -d source.flac -c # Write output to stdout
lame - MP3 encoder / decoder
See also Technical information on encoding settings.
lame -m auto --preset standard input.wav output.mp3 # Equiv to fast standard
lame -m auto --preset fast standard input.wav output.mp3 # Equiv to -V2 (~192kbps)
lame -m auto --preset extreme input.wav output.mp3 # Equiv to fast extreme
lame -m auto --preset fast extreme input.wav output.mp3 # Equiv to -V0 (~256kbps)
lame -m auto --preset insane input.wav output.mp3 # Equiv to -b 320
twolame - MP2 encoder / decoder
twolame -b 256 input.wav -o "output.mp3"
pacpl - Multi-format encoder / decoder in Perl
# From FLAC to MP3 - Using LAME (extreme quality) - recurse & keep directory structure
pacpl --to mp3 -r -p flac/ --outdir /media/USB --encoder lame --defopts 0 --eopts="-m auto --preset fast extreme"
# To decrease encoding priority:
nice -n 19 pacpl ...
To change the directory structure from "Artist - Album" to "Artist/Album":
for i in *; do eval $(echo $i | sed -r '/ - /!s/(.*)/ARTIST=Various;ALBUM="\1"/; / - /s/(.*) - (.*)/ARTIST="\1"; ALBUM="\2"/'); mkdir "$ARTIST"; mv "$i" "$ARTIST/$ALBUM"; done
yaflac2mp3 - Yet Another FLAC to MP3 script
An handy script to transcode from FLAC to MP3. Could be used as a basis for customized script. See also [1] for more ideas.
yaflac2mp3.sh -s . -d mp3
Conversion in integrated players
Banshee
- Plug external mp3 player device
- Right click on device in Banshee
- Select the media type (ogg, mp3), then click on edit button.
- For mp3, quality goes from 0 (worst) to 9 (best). 7 seems equivalent to
lame -V 2
, i.e. fast standard preset, and 9 seems equivalent tolame -V 0
, ie. fast extreme preset
- For mp3, quality goes from 0 (worst) to 9 (best). 7 seems equivalent to
- BUG? — apparently can't save to .ogg although ogg is selected as encoder... — SOLVED see below.
- BUG? — export all files in device root directory — SOLVED see below.
- Create a file named ..is_audio_player in device root directory. For instance, to have audio files added in OGG format to the device, using a 1-folder deep structure (ie. Artist - Album/Track. Title), use the following:
name=SAMSUNG\ YP-U1\ (1GB)
folder_depth=1
output_formats=application/ogg,audio/mpeg,audio/mp3
To have files stored elsewhere than in root folder:
name=SAMSUNG\ CARD\ (8GB)
audio_folders=musics/,other/subfolder
folder_depth=2
output_formats=application/ogg,audio/mpeg,audio/mp3
RhythmBox
- Can also export to external mp3 player
- BUG? — Apparently only in mp3 (although there are some settings about preferred format in preferences)
- Quality seems to be
lame --preset fast standard
- Export in /Artist/Album/Track - Title.mp3
Cover Art and ID3 Tags
Conventions and standards
- Cover art filename
- Usual names are folder.jpg (apparently the standard on Windows) and cover.jpg. Other options are front.jpg, %filename%.jpg or%album%.jpg.
- Banshee supports at least folder.jpg and cover.jpg.
- On Android, the standard is albumart.jpg.
Editors (GUI-based)
mp3 tag editor, idv3 tags...
- MusicBrainZ Picard
- Probably the most complete and powerful editor out there. Front-end to Picard database. Including cover art download.
- Banshee
- Banshee first takes the cover art locally from file (folder.jpg, cover.jpg...). Otherwise it will download automatically cover arts for music in the library. These cover arts are stored in ~/.cache/media-art. Cover art filename is a hash of artist and album name (See this link for a more powerful script [6]):
f="Ennio Morricone" al="My Name Is Nobody" echo "~/.cache/media-art/album-$(echo -ne "$f\t$al" | md5sum | cut -b1-32).jpg"
- You can edit metadata (ID3 tags) in Banshee, but click Write metadata to files to save back to library.
- Easytags aac
- Edit ID3 tag, including cover arts (with automatically download)
- Puddletag
- A bit buggy sometimes
- folder.jpg
- Used under Windows.
Editors (CLI-based)
- Beets with fetchart plugins
- Has auto-tagging facility (MusicBrainZ support) and can fetch and embed album arts automatically from itunes, amazon, google...
- eyeD3
- A simple tag editor, very complete (including cover art edition).
eyeD3 myfile.mp3
eyeD3 --list-image-types # View available image type (APIC frame)
eyeD3 --add-image=folder.jpg:FRONT_COVER:folder.jpg myfile.mp3
- id3v2
- Does not report cover arts.
- CoverLovin — obsolete
- To download cover art automatically. Broken.
- Album Cover Art Downloader — obsolete
- Can save into a folder.jpg file, .folder.png and an
Icon
entry in .directory for Konqueror, into an ID3v3 APIC frame... - Broken.
Music players, library managers and organizers
My current favorites: banshee, beets, cmus and picard.
Amarok
TBC
Banshee
TBC
Beets
beets is a very powerful and extensible music library manager. It can auto-tag music files, find cover arts, browse and search for title very rapidly...
References:
To install:
sudo pip install beets
sudo pip install requests # For album art download plugin fetchart
sudo easy_install python-itunes # To allow downloading art from iTunes
First configure beet. Issue command beet config -e
, and enter the following config:
directory: ~/music library: ~/.cache/musiclibrary.blb import: copy: no plugins: fetchart fetchart: maxwidth: 1000
This will configure beets to store music in directory ~/music, and build its database into ~/.cache/musiclibrary.blb. The copy: no
option tells beets not to move/copy the imported music to local music folder. Then a few plugins are loaded and configured.
Import music files into your library:
beet import ~/music
Some commands:
beet config -p
- get location of the config file.
beet list [query]
beet ls [query]
- Show the full library, or search it with given
query
.
Some tips:
- Beets can fetch art for album already in the library [9]:
beet fetchart [-f] [query]
- Beets can embed art using plugin embedart.
- Beets can look for track duplicates
cmus
cmus is a small, fast and powerful console music player for Unix-like operating systems. TBC
gmusicbrowser
TBC
Guayadeque
TBC
MPD
MPD stands for Music Player Daemon. TBC.
Nightingale
TBC
MusicBrainZ Picard
Picard is a front-end to the MusicBrainZ library.
- Tag files - easiest method
- Easiest method is to use the CD lookup feature.
- Insert the CD
- Click on CD lookup.
- This will find the release in MB database.
- Then drag and drop your locally extracted album onto that release.
- Tag files - easy method
- First Add Folder, or (with file browser visible) drag and drop a folder to Unmatched Files.
- Click Cluster
- Click an album in the cluster, or click Clusters to lookup all albums, and click Lookup
- Right click album in right pane, and select Save.
- Tag files - scanning
- When Picard does not find a release corresponding to the cluster, use the scanning tool to find the release.
- Click an album in the cluster (or Clusters' to select all clusters), and click Scan.
- Tag files - manual lookup
- Click an album cluster, and click Lookup in browser.
- Browse the MB database. When the matching release is found, click the TAGGER link (the tag with green background)
- The release opens in Picard (it was send via port 8000 that Picard is listening to). Now either drag & drop the album on that release, or drag&drap each track individually. On error, just right click on the track and click remove.
My options:
Cover Art | File Naming |
|
|
Rhythmbox
TBC
Web Radio
Several ways to play internet radios in Linux (sources [10]).
Let's consider the following radios:
- Chromanova.fm Chillout (homepage) - playlist (.pls) content:
[playlist] numberofentries=5 File1=http://85.25.86.69:8100 Title1=(#1 - 25/160) Chromanova.fm presents: Ambient & Chillout Deejay Sets Length1=-1 File2=http://212.112.241.88:8100 Title2=(#2 - 25/120) Chromanova.fm presents: Ambient & Chillout Deejay Sets Length1=-1 File3=http://85.25.86.69:9000 Title3=(#3 - 159/160) Chromanova.fm presents: Ambient & Chillout Deejay Sets Length1=-1
Here we list the various way to play the radios listed above.
- Mplayer
- Mplayer can play most streams. Give it the *stream* URL, not the playlist. Use -cache 1000 to cache audio stream. Works also fine with proxies.
mplayer -cache 1000 http://85.25.86.69:8100
- mpg123
- mpg123 can also play most radio stream. Works also fine with proxies.
mpg123 -cache 1000 http://85.25.86.69:8100
- audacious
- TBC
- streamtuner2
- TBC
streamtuner2 -r # Then tell audacious to open http://localhost:8000
- streamripper
- Use streamripper to rip an audio stream into a file. It can also relay the stripped stream to a local port to be played and ripped simultaneously
streamripper server:port -D "%S/%q -- %A - %T" # Rip to file (w/ naming convention)
streamripper server:port -D "%S/%q -- %A - %T" -r # Rip and relay to port 8000
mpg123 http://localhost:8000 # ... and play it
- banshee
- NOT WORKING — can't make it work, at least behind a proxy. Giving either .pls, or stream URL, nothing works (w/o error msg)
- rhythmbox
- NOT WORKING — can't make it work, at least behind a proxy. Giving either .pls, or stream URL, nothing works (w/o error msg)
- amarok
- STATE UNKNOWN — Used to work in the past, but need some weird configuration for the proxy.