# You can use quotes and escape ('\') in parameters.
#
# You can have variable values substituted by enclosing the variable name
# as "${...}".  (This only applies to the portion of the option following
# the '='.)  Variables are substituted first from the environment then,
# if not found, from the configuration options.  (Note that the value of
# a configuration option substituted is that which it has at the time the
# substitution variable is encountered.)  If there is a naming conflict
# between an environment and configuration variable, you may be able to
# resolve it by using lowercase as the environment variable matches are
# case-sensitive whereas the configuration variables are not.
#
# You can also use the form "${...:-...}" where the value in the second
# position will be substituted if the variable name given in the first
# position is unset or null.
#
# So, for example:
#
#     MusicDir = /music/${USER:-public}
#     Fastdir1 = ${MusicDir}/mp3/rock
#     Fastdir2 = ${MusicDir}/mp3/electronic
#     Fastdir3 = ${MusicDir}/mp3/rap
#     Fastdir4 = ${MusicDir}/mp3/etc
#
# Variable names are limited to those accepted by the BASH shell; that
# is, those comprising the upper- and lowercase ASCII characters, digits
# and the underscore.
#
# If you need to use the "${" sequence for any other purpose, write "$${"
# and it will be replaced by "${" and not treated as a substitution.
#
# Some options take lists of strings as their values.  The strings are
# separated by colons.  Additional strings can be appended to the list
# using "+=" in place of a plain "=" to assign the value.  For an example,
# see the XTerms option.
#
# You can override any configuration option when you run MOC using the
# '-O' command line option:
#
#     mocp -O AutoNext=no -O messagelingertime=1 -O XTerms+=xxt:xwt
#
# This command line option can be repeated as many times as needed and
# the configuration option name is not case sensitive.  (Note that MOC
# does not perform variable substitution on the value of such overridden
# configuration options.)  Most option values are set before the
# configuration file is processed (which allows the new values to be
# picked up by substitutions), however list-valued options are overridden
# afterwards (which gives the choice of whether the configured values are
# replaced or added to).


# Show file titles (title, author, album) instead of file names.
ReadTags		= yes

# Directory in which you store music files. If you specify it you will be able
# to quickly go to this directory with the '-m' parameter or the 'm' command.
# This can also point to a playlist.
MusicDir		= "/home/raylu/music"

# How to sort? FileName is the only option for now.
Sort			= FileName

# Show errors in the streams, for example CRC errors or broken frames in mp3
# files.
ShowStreamErrors	= yes

# Ignore CRC errors in MP3 files. Most players do that, so the default value is
# set to yes.
Mp3IgnoreCRCErrors	= yes

# Turn on repeat.
Repeat			= no

# Turn on shuffle.
Shuffle			= yes

# Turn on AutoNext.
AutoNext		= yes

# Default FormatString:
# %n - Track number
# %a - Artist
# %A - Album
# %t - Title
# %(X:TRUE:FALSE) - ternary expression - if X exists, do TRUE, otherwise
#                   FALSE. '\' - escape character (must be double, because of
#                   config interpreter). man zshmisc for more info.
FormatString		= "%(a:%a - :)%(t:%t:)%(A: \(%A\):)"

# Output buffer size in kilobytes. Minimum value is 128KB. */
OutputBuffer		= 2048

# Input buffer size in kilobytes. Minimum value is 32KB. */
InputBuffer		= 512

# How much to fill the input buffer before playing (in kilobytes)?
# This can't be more than InputBuffer value.
# Remember that for network streams beside the positive effect this also causes
# delay between what you can hear and what is broadcasted.
Prebuffering		= 64

# Use this HTTP proxy server for internet streams. If not set, the
# environment variables http_proxy and ALL_PROXY will be used if present.
#HTTPProxy		= my_proxy:port

# Sound driver - OSS, ALSA, JACK, SNDIO (on OpenBSD) or null (only for
# debugging).
# You can enter more than one driver as a colon-separated list.  The first
# working driver will be used.
SoundDriver		= JACK:ALSA:OSS

# Jack output settings.
JackOutLeft		= "alsa_pcm:playback_1"
JackOutRight		= "alsa_pcm:playback_2"

# OSS output device.
OSSDevice		= /dev/dsp

# OSS Mixer device.
OSSMixerDevice		= /dev/mixer

# OSS Mixer channel: pcm or master.
OSSMixerChannel1	= pcm

# Second OSS Mixer channel: pcm or master.
OSSMixerChannel2	= master

# ALSA mixer device.
AlsaMixer1		= PCM

# Second ALSA mixer device.
AlsaMixer2		= Master

# ALSA output device.
AlsaDevice		= default

# Save software mixer state?
# If enabled, a file 'softmixer' will
# be created in '~/.moc/' storing the
# mixersetting set when the server is shut-down.
# Note that there is a 'hidden' 'Amplification'
# setting in that file.
# Amplification (0-200) is used to scale
# the mixer setting (0-100). This results
# in a higher signal amplitude but may also
# produce clipping.
#Softmixer_SaveState = yes

# Save equalizer state?
# If enabled, a file 'equalizer' will
# be created in '~/.moc/' storing the
# equalizer settings when the server is shut-down.
# There is a 'hidden' 'Mixin' setting in that file.
# Mixin (0.0-1.0) is used to determine how much of
# the original signal is used after equalizing.
# 0 means to only use the equalized sound, 1
# effectively disabled the mixer.
# Default is 0.25
#Equalizer_SaveState = yes

# Show files with dot at the beginning?
ShowHiddenFiles		= no

# Start in the music directory if no arguments are given. If set to no, start
# in the current directory.
StartInMusicDir		= yes

# Hide file name extensions.
HideFileExtension	= no

# Show file format in menu.
ShowFormat		= yes

# Show file time in menu. Possible options: yes, no, IfAvailable - show the
# time only when it was read before (often works faster).
ShowTime		= IfAvailable

# Show time played as a percentage in the time progress bar.
#ShowTimePercent	= no

# Values of the TERM environment variable which are deemed to be xterms.
XTerms = xterm
XTerms += xterm-colour:xterm-color
XTerms += xterm-256colour:xterm-256color
XTerms += rxvt:rxvt-unicode
XTerms += rxvt-unicode-256colour:rxvt-unicode-256color
XTerms += eterm

# Theme file. This can be absolute path or relative to
# /usr/share/moc/themes/ (depends on installation prefix) or ~/.moc/themes/
Theme			= transparent-background

# The theme used when running on an xterm.
# XTermTheme		= transparent-background

# Should MOC try to autoload the default lyrics file for an audio?  (The
# default lyrics file is a text file with the same file name as the audio
# file name with any trailing "extension" removed.)
# AutoLoadLyrics	= yes

# MOC directory - where pid file, socket, and state files are stored.
# You can use ~ at the beginning.
# MOCDir		= ~/.moc

# Use mmap() to read files. mmap() is much slower on NFS.
UseMmap			= yes

# Use MIME to identify audio files.  This can make for slower loading
# of playlists but is more accurate than using "extensions".
#UseMimeMagic	= no

# Assume this encoding for ID3 version 1/1.1 tags (mp3 files). Unlike ID3v2
# UTF-8 is not used here and MOC can't guess how tags are encoded. Another
# solution is using librcc (see the next option). This option is ignored
# if UseRCC is set to yes.
#ID3v1TagsEncoding		= WINDOWS-1250

# Use librcc to fix ID3 version 1/1.1 tags encoding.
#UseRCC				= yes

# Use librcc to filenames and directory names encoding.
#UseRCCForFilesystem			= yes

# When this option is set the player assumes that if the encoding of ID3v2
# is set to ISO-8859-1 then the ID3v1TagsEncoding is actually that and
# applies appropriate conversion.
#EnforceTagsEncoding	= no

# Enable the conversion of filenames from the local encoding to UTF8.
#FileNamesIconv		= no

# Enable the conversion of the xterm title from UTF8 to the local encoding.
#NonUTFXterm		= no

# Remember the playlist after exit?
SavePlaylist		= yes

# When using more than one client (interface) at a time, do they share the
# playlist?
SyncPlaylist		= yes

# Choose a keymap file (relative to ~/.moc/ or absolute path).
# Example keymap with description is included (keymap.example).
Keymap			= keymap

# Use ASCII characters instead of graphic for drawing lines. This helps on
# some terminals.
ASCIILines		= no

# FastDirs, these allow you to jump directly to a directory, the key bindings
# are in the keymap file.
#Fastdir1 = /mp3/rock
#Fastdir2 = /mp3/electronic
#Fastdir3 = /mp3/rap
#Fastdir4 = /mp3/etc
#Fastdir5 =
#Fastdir6 =
#Fastdir7 =
#Fastdir8 =
#Fastdir9 =
#Fastdir10 =

# How fast to seek? Number of seconds per key stroke.
#SeekTime		= 1

# How fast to seek (when using silent seeking)? Number of seconds per key
# stroke.
#SilentSeekTime		= 5

# PreferredDecoders allows you to specify which decoder should be used
# for any given audio format.  It is a colon-separated list in which
# each entry is of the general form 'code(decoders)', where 'code'
# identifies the audio format and 'decoders' is a comma-separated list
# of decoders in order of preference.
#
# The audio format identifier may be either a filename extension or a
# MIME media type.  If the latter, the format is 'type/subtype' (e.g.,
# 'audio/flac').  Because different systems may give different MIME
# media types, any 'x-' prefix of the subtype is ignored both here and
# in the actual file MIME type (so all combinations of 'audio/flac' and
# 'audio/x-flac' match each other).
#
# For Internet streams the matching is done on MIME media type and on
# actual content.  For files the matches are made on MIME media type
# (if the 'UseMimeMagic' option is set) and on filename extension.  The
# MIME media type of a file is not determined until the first entry for
# MIME is encountered in the list.
#
# The matching is done in the order of appearance in the list with any
# entries added from the command line being matched before those listed
# here.  Therefore, if you place all filename extension entries before
# all MIME entries you will speed up MOC's processing of directories
# (which could be significant for remote file systems).
#
# The decoder list may be empty, in which case no decoders will be used
# for files (and files with that audio format ignored) while Internet
# streams will be assessed on the actual content.  Any decoder position
# may contain an asterisk, in which case any decoder not otherwise listed
# which can handle the audio format will be used.  It is not an error to
# list the same decoder twice, but neither does it make sense to do so.
#
# If you have a mix of audio and non-audio files in your directories, you
# may wish to include entries at top of the list which ignore non-audio
# files by extension.
#
# In summary, the PreferredDecoders option provides fine control over the
# type of matching which is performed (filename extension, MIME media
# type and streamed media content) and which decoder(s) (if any) are used
# based on the option's list entries and their ordering.
#
# Examples: aac(aac,ffmpeg)             first try FAAD2 for AACs then FFmpeg
#           mp3()                       ignore MP3 files
#           wav(*,sndfile)              use sndfile for WAV as a last resort
#           ogg(vorbis,*):flac(flac,*)  try Xiph decoders first
#           ogg():audio/ogg()           ignore OGG files, and
#                                       force Internet selection by content
#           gz():html()                 ignore some non-audio files
#
# Any unspecified audio formats default to trying all decoders.
# Any unknown (or misspelt) drivers are ignored.
# All names are case insensitive.
# The default setting reflects the historical situation modified by
# the experience of users.
#
#PreferredDecoders	= aac(aac,*,ffmpeg):m4a(ffmpeg)
#PreferredDecoders	+= mpc(musepack,*,ffmpeg):mpc8(musepack,*,ffmpeg)
#PreferredDecoders	+= wav(sndfile,*,modplug,ffmpeg)
#PreferredDecoders	+= wv(wavpack,*,ffmpeg)
#PreferredDecoders	+= audio/aac(aac,*):audio/aacp(aac,*):audio/m4a(ffmpeg)
#PreferredDecoders	+= audio/wav(sndfile,*,modplug)

# The following PreferredDecoders attempt to handle the ambiguity surrounding
# container types such as OGG for files.  The first two entries will force
# a local file to the correct decoder (assuming the .ogg file contains Vorbis
# audio), while the MIME media types will cause Internet audio streams to
# be assessed on content (which may be either Vorbis or Speex).
#
#PreferredDecoders	+= ogg(vorbis,ffmpeg):oga(vorbis,ffmpeg):spx(speex)
#PreferredDecoders	+= application/ogg(vorbis):audio/ogg(vorbis)

# Resample method to use. There are a few methods of resampling sound supported
# by libresamplerate. The default is the fastest (linear). Better description
# is here: http://www.mega-nerd.com/libsamplerate/api_misc.html#Converters
#
# High quality (based on bandlimited interpolation), but slow methods:
#
# SincBestQuality - really slow (I know you probably have an xx GHz processor,
#			but it's not enough to not see this in the top output :)
#			The worst case Signal-to-Noise Ratio is 97dB.
# SincMediumQuality - much faster.
# SincFastest - the fastest bandlimited interpolation.
#
# Poor quality, but much faster methods:
#
# ZeroOrderHold - really poor quality, but it's really fast.
# Linear - a bit better and a bit slower.
#
ResampleMethod		= SincBestQuality

# Always use this sample rate when opening the audio device (and resample the
# sound if necessary). When set to 0 the device is opened with the file's rate.
#ForceSampleRate	= 48000

# By default even if the sound card reports that it can output 24bit samples
# MOC converts 24bit PCM to 16bit. This option set to yes allows MOC to use
# 24bit output (for example MP3 decoder uses this format). This is disabled
# in the default configuration because there were reports that it prevents
# MP3 files from playing on some soundcards.
Allow24bitOutput	= yes

# Use realtime priority for output buffer thread. This will prevent gaps while
# playing even with heavy load. The user which runs MOC must have permissions
# to set such a priority. This could be dangerous, because it is possible that
# a bug in MOC will freeze your computer.
#UseRealtimePriority	= no

# The number of audio files for which MOC will cache tags.  When this limit
# is reached, file tags are discarded on a least recently used basis.
TagsCacheSize		= 256

# Number items in the playlist.
#PlaylistNumbering	= yes

# Main window layouts can be configured.  You can change the position and
# size of the menus (directory and playlist).  You have three layouts and
# can switch between then using the 'l' key (standard mapping).  By default,
# only two layouts are configured.
#
# The format is as follows:
# Each layout is described as a list of menu entries.
# Each menu entry is of the form:
#
#         menu(position_x, position_y, width, height)
#
# 'menu' is either "directory" or "playlist".
# The parameters define position and size of the menu.  They can be absolute
# numbers (like 10) or a percentage of the screen size (like 45%).
# 'width' and 'height' can have also value of FILL which means fill the
# screen from the menu's position to the border.
# Menus may overlap.
# You must describe at least one menu (default is to fill the whole window).
# There must be at least one layout (Layout1) defined; others can be empty.
#
# Example:    Layout1 = playlist(50%,50%,50%,50%)
#             Layout2 = ""
#             Layout3 = ""
#
#             Just one layout, the directory will occupy the whole
#             screen, the playlist will have 1/4 of the screen size
#             and be positioned at lower right corner.  (Note that
#             because the playlist will be hidden by the directory
#             you will have to use the TAB key to make the playlist
#             visible.)
#
# Example:    Layout1 = playlist(0,0,100%,10):directory(0,10,100%,FILL)
#
#             The screen is split into two parts: playlist at the top
#             and the directory menu at the bottom.  Playlist will
#             occupy 10 lines and the directory menu the rest.
#
#Layout1		= directory(0,0,50%,100%):playlist(50%,0,FILL,100%)
#Layout2		= directory(0,0,100%,100%):playlist(0,0,100%,100%)
#Layout3		= ""

# When the song changes, should the menu be scrolled so that the currently
# played file is visible?
FollowPlayedFile	= yes

# What to do if the interface was started and something from the playlist is
# playing? If CanStartInPlaylist is set to "yes", the interface will switch to
# the playlist. When set to "no" it will start from the last directory.
CanStartInPlaylist	= yes

# Executing external commands (1 - 10) invoked with key commands (F1 - F10 by
# default).
# Some arguments are substituted before executing:
# %f - file path
# %i - title made from tags
# %S - start block mark (in seconds)
# %E - end block mark (in seconds)
#
# Data from tags:
# %t - title
# %a - album
# %r - artist
# %n - track
# %m - time of the file (in seconds)
#
# Parameters above apply to the currently selected file. If you change them to
# capital letters, they are taken from the file currently playing.
#
# Programs are run using execv(), not a shell, so you can't do things like
# redirecting the output to a file. The command string is split using blank
# characters as separators, the first element is the command to be executed
# and the rest are parameters, so if you use "echo Playing: %I" we run program
# echo (from $PATH) with 2 parameters: 'Playing:' string and the title. Even
# if the title contains spaces it's still one parameter and it's safe if it
# contains `rm -rf /`.
#
# Examples:
# ExecCommand1		= "cp %f /mnt/usb_drive"
# ExecCommand2		= "/home/joe/now_playing %I"

# Display the cursor in the line with the selected file. This can be useful with
# a braille display.
UseCursorSelection	= no

# Set the terminal title when running under xterm.
#SetXtermTitle		= yes

# Set the terminal title when running under screen.
#SetScreenTitle		= yes

# Display full paths instead of just file names in the playlist.
#PlaylistFullPaths	= yes

# The following setting describes to how block markers are displayed
# in the play time progress bar.  Its value is a string of exactly three
# characters.  The first character is displayed in a position which
# corresponds to the time marked as the start of a block and the last
# character to the time marked as the end of the block.  The middle
# character is displayed instead if both the start and the end of the block
# would fall in the same position (within the resolution of the interface).
# You can turn off the displaying of these block marker positions by using
# three space characters.
#BlockDecorators	= "`\"'"

# How long (in seconds) to leave a message displayed on the screen.
# Setting this to a high value allows you to scroll through the messages
# using the 'hide_message' key.  Setting it to zero means you'll have to
# be quick to see any message at all.  Any new messages will queued up
# and displayed after the current message's linger time expires.
#MessageLingerTime	= 3

# Does MOC display a prefix on delayed messages indicating
# the number of queued messages still to be displayed?
#PrefixQueuedMessages	= yes

# String to append to the queued message count if any
# error messages are still waiting to be displayed.
#ErrorMessagesQueued	= "!"

# Enable oversampling (yes/no).
#ModPlug_Oversampling = yes
# Enable noise reduction (yes/no).
#ModPlug_NoiseReduction = yes
# Enable reverb (yes/no).
#ModPlug_Reverb = no
# Enable mega-bass (yes/no).
#ModPlug_MegaBass = no
# Enable surround (yes/no).
#ModPlug_Surround = no
# Resampling mode. One of FIR/SPLINE/LINEAR/NEAREST:
# FIR :      8 tap fir filter (extremely high quality).
# SPLINE :   Cubic spline interpolation (high quality).
# LINEAR :   Linear interpolation (fast, good quality).
# NEAREST :  No interpolation (very fast, extremely bad sound quality).
#ModPlug_ResamplingMode = FIR
# Number of channles (1 or 2).
#ModPlug_Channels = 2
# Bits per sample (8,16,32). 32 Bits seems to be buggy...
#ModPlug_Bits = 16
# Sampling rate (11025, 22050, 44100, 48000).
#ModPlug_Frequency = 44100
# Reverb level 0(quiet)-100(loud).
#ModPlug_ReverbDepth = 0
# Reverb delay in ms, usually 40-200ms.
#ModPlug_ReverbDelay = 0
# Bass level 0(quiet)-100(loud).
#ModPlug_BassAmount = 0
# Bass cutoff in Hz (10-100).
#ModPlug_BassRange = 10
# Surround level 0(quiet)-100(heavy).
#ModPlug_SurroundDepth = 0
# Surround delay in ms, usually 5-40ms.
#ModPlug_SurroundDelay = 0
# Number of times to loop. Zero prevents looping. -1 loops forever.
#ModPlug_LoopCount = 0

#TiMidity-Options.
# Rate must be in between 8000 and 48000.
#TiMidity_Rate = 44100
# Bitrate is 8 or 16.
#TiMidity_Bits = 16
# Channels is 1 or 2.
#TiMidity_Channels = 2
# Volume-Range is 0-800.
#TiMidity_Volume = 100
# You can setup a TiMidity-Config-File here.
# Leave it unset to use library defaults (/etc/timidity.cfg mostly).
# Setting it to 'yes' also uses the library defaults.
# Set it to 'no' if you don't have any configuration file.
# Otherwise set it to the name of a specific file.
#TiMidity_Config =

# SidPlay2-Options.
# Default length of a song if not in database (seconds).
#SidPlay2_DefaultSongLength = 180
# Play at least a specific time if song is shorter (seconds).
#SidPlay2_MinimumSongLength = 0
# Set path to a HVSC-compatible database (if not set, database is disabled).
#SidPlay2_Database
# Sampling Frequency (4000-48000Hz).
#SidPlay2_Frequency = 44100
# Sampling Resolution (8/16).
#SidPlay2_Bits = 16
# Playback Mode:
# "M": Mono (best for many SIDs).
# "S": Stereo.
# "L"/"R": Left / Right.
#SidPlay2_PlayMode = "M"
# Optimisation-level (0-2), 0 is best quality.
#SidPlay2_Optimisation = 0
# Use start-song information from SID (1) or start at first song (0).
# Songs before the start-song won't be played.
#SidPlay2_StartAtStart = 1
# Play sub-tunes.
#SidPlay2_PlaySubTunes = 1

# OnSongChange.
# Specify the full path (i.e. no ~) of an executable to run.
# Arguments will be passed, and you can use the following escapes:
#  %a artist
#  %r album
#  %f filename
#  %t title
#  %n track
#  %d file duration in XX:YY form
#  %D file duration, number of seconds
#
# No pipes/redirects can be used directly, but writing a shell
# script can do the job.
#
# Example:
#
#OnSongChange = "/home/jack/.moc/myscript %a %r"

# RepeatSongChange.
# If 'yes' then MOC will execute the 'OnSongChange' command every time a
# song starts playing regardless of whether or not it is just repeating.
# Otherwise the command will only be executed when a different song is
# started.
#RepeatSongChange = no

# OnStop.
# Run the following command (full path, no arguments) when MOC changes state
# to stopped (when user stopped playing or changes a song).
#
#OnStop = "/home/jack/.moc/myscript_on_stop"

# This options determines what song to play after finishing all the songs in
# queue. Setting this to 'yes' causes MOC to play the song which follows the
# song played before playing the queue. If set to 'no', MOC will play the song
# after the last song in the queue if it was in the playlist. The default is
# 'yes' because this is the way other players usually behave. (Note that this
# option previously took the values 1 and 0; these are now deprecated in
# favour of 'yes' and 'no'.)
#QueueNextSongReturn = yes
