1 @title CMUS 1 05/11/2006 cmus
5 cmus - C\* Music Player
15 cmus is a small ncurses based music player. It supports various output
16 methods by output-plugins. It has got completely configurable keybindings and
17 it can be controlled from the outside via *cmus-remote*(1).
22 Listen to ADDR (UNIX socket) instead of `/tmp/cmus-$USER`.
23 ADDR is either a UNIX socket or host[:port].
25 *WARNING*: Using host[:port] is insecure even with password!
26 It might be useful though in LAN if you want multiple local users to
27 able to control cmus. Never make cmus listen to the internet.
29 NOTE: Don't use this option to run multiple instances as same user.
30 That would corrupt the track metadata cache.
33 List available plugins and exit.
36 Keep cursor always visible. This is useful for screen readers.
39 Display usage information and exit.
42 Display version information and exit.
47 There are 7 views in cmus. Press keys 1-7 to change active view.
50 Display all tracks in so-called *library*. Tracks are sorted
51 artist/album tree. Artist sorting is done alphabetically. Albums are
54 Sorted library view (2)
55 Displays same content as view 1, but as a simple list which is
56 automatically sorted by user criteria.
59 Displays editable playlist with optional sorting.
62 Displays queue of tracks which are played next. These tracks are
63 played before anything else (i.e. the playlist or library).
66 Directory browser. In this view, music can be added to either the
67 library, playlist or queue from the filesystem.
70 Lists user defined filters.
73 Lists keybindings, unbound commands and options. Remove bindings with
74 *D* or *del*, change bindings and variables with *enter* and toggle
75 variables with *space*.
79 Everything in cmus is implemented as commands which can be typed at command
80 line or bound to a key. To enter command mode type *:*. To execute a command
81 press *ENTER* or to cancel press *ESC*. Use up/down arrows to browse command
82 history. Use *TAB* to complete commands and parameters, you can tab complete
83 almost anything. You don't need to type full command names if the command is
84 unambiguous (no other commands starting with the same characters).
89 # add files, short for ':add ~/music'
92 # change output plugin
93 :set output_plugin=oss
96 # you could just press 'x' which is the default
97 # binding for this command
100 # clear current view (library, playlist or play queue)
107 Search mode works like the command mode, to enter search mode press */* and
108 then type the search words and press *ENTER*. Press *n* to search next or *N*
109 to search previous match using the same search words. Type *?* to search
112 In views 1-4 words are compared to artist, album and title tags. Type
113 *//WORDS* or *??WORDS* to search only artists/albums in view 1 or titles in
114 views 2-4. If the file doesn't have tags words are compared to filename
117 Searching works in views 5-7 too and its logic should be pretty obvious.
119 @h1 LIBRARY VIEW SORTING
121 The library view (the tree-like one; not the sorted library view, for which
122 the sorting is controlled by the user by setting lib_sort - see `CONFIGURATION
123 OPTIONS`), is sorted automatically by cmus using the information found in the
124 tagging information provided by the audio files.
126 Generally, in the library view cmus uses three levels of sorting: the first
127 level would be the artist name, the second one the album and finally the
130 At first, cmus checks if the "filename" looks like an URL, if it does, the
131 item is given the special artist and album name *<Stream>*.
133 If it is a file, it is checked if the artist and album tags are set. If not,
134 cmus assigns the special name *<No Name>* for the unset tag.
136 As the first level, cmus sorts alphanumerically by the value of the artist
137 tag. (<Stream> and <No Name> will be used as if they where normal names.)
139 For album names, alphanumerical sorting is not the primary method, though.
140 To decide, how the second level should be sorted, cmus looks at the date of
141 the first track of each album. Sorting is done from young to old. Of course,
142 if one artist happens to have more then one album from one year,
143 alphanumerical sorting will be used after sorting by date.
145 If the date header is not set, the album will be placed on top of the list (in
146 fact, the internal integer value for unset album tags is -1).
148 The method for third sorting level (the track) is very similar to album
149 sorting. First two numerical values are checked (discnumber and tracknumber).
150 If sorting is still ambiguous, sorting will be done alphanumerically by the
151 value of the track's `filename` (not track name!).
153 For simple albums, that is it. There is a special case, though. Albums, that
154 feature various artists, also known as samplers or compilations.
156 If a track belongs to a compilation is again decided by the existence and
157 value of special tagging information. First, it is checked if cmus should use
158 a special artist name (e.g.: `'Various Artists'`). If so, that one will be used
159 instead of the real artist name.
161 If that special name tag is not set, cmus checks if another tag is set.
162 If that is the case, the album will be given the special artist name
165 That way, you do not end up with compilation tracks scattered around your
168 The problem with compilation tagging is, that there is no generic tag or
169 method, that can be regarded as a standard across all different formats,
172 For mp3, the special-name tag would be the id3v2 *TPE2* frame. The
173 mark-as-compilation tag is the *TCMP* frame (which is a user defined id3v2.3
174 frame, used at least by amarok and apple's iTunes[tm]).
176 For vorbis style tags (for example in ogg vorbis and flac files), the
177 special-name tag is *ALBUMARTIST* and the mark-as-compilation tag is
178 *COMPILATION*. Vorbis tags names are case insensitive.
184 Editing commands affect the currently marked tracks or if there are no marked
185 tracks the currently selected track (or selected artist/album in view 1).
187 Mark selected track by pressing *SPACE*. Marked tracks appear with a gray
188 background. You can only mark tracks in the list views (2-4).
190 @h2 Copying Tracks Between Views
192 You can copy marked or selected tracks from views 1-5.
195 copy tracks to the library (1-2)
198 copy tracks to the playlist (3)
201 append tracks to the play queue (4)
204 prepend tracks to the play queue (4)
208 In views 2-4 you can move tracks withing the list. Note that moving is
209 disabled if the view is auto-sorted (see *lib_sort* and *pl_sort* options).
211 Pressing *p* moves marked tracks to the position immediately after the
212 selected track. *P* moves them to the position immediately before the
213 selected track. If there are no marked tracks then the selected track is
214 moved down (*p*) or up (*P*).
216 NOTE: Changing active filters reloads view 2 so it isn't a good idea to
217 manually order tracks in the view.
221 Press *D* or *delete* to remove marked or selected tracks in the current view
222 (1-4). The tracks will be removed immediately from the view without asking
223 for confirmation. In the browser and filters views the same keys are used to
224 remove a file or filter (will ask for confirmation).
229 Right hand side of the status line (second row from the bottom, black text on
230 a grey background) consists of the following fields:
233 aaa_mode & play_sorted & play_library | continue repeat shuffle
236 NOTE: *aaa_mode* and *play_sorted* will be displayed only if *play_library* is
237 *true* because these are meaningless when playing the playlist (view 3).
239 Pressing *m*, *o*, *M*, *C*, *r* and *s* keys should make it easier to
240 understand what all those fields mean.
242 See CONFIGURATION OPTIONS section for more information about these options.
247 Here's list of default keybindings. See *unbind* and *bind* commands in the
253 ^C echo Type :quit<enter> to exit cmus.
269 M toggle play_library
272 ^R toggle repeat_current
273 t toggle show_remaining_time
299 ^F, page_down win-page-down
300 ^B, page_up win-page-up
317 This section describes cmus' commands. You can bind a key to any of these
318 commands, put these commands to configuration files and execute them in
319 command mode. Also cmus-remote uses these commands in its protocol.
321 Optional parameters are in brackets, obligatory parameters in angle brackets
322 and default key bindings in parenthesis.
324 add [-l] [-p] [-q] [-Q] <file|dir|url|playlist>
325 Add file/dir/url/playlist to the specified view or the current view.
337 prepend to play queue
339 URL is a Shoutcast stream (http://...).
341 Supported playlist: plain, .m3u, .pls.
343 bind [-f] <context> <key> <command>
347 overwrite existing binding
349 Use tab to expand contexts, keys and commands. Command is any command
350 listed in this section.
353 common, library (1-2), playlist (3), queue (4), browser (5),
356 There's one context for each view. Common is a special context on
357 which bound keys work in every view.
359 You can override specific keys in common context for a view. For
360 example *i* selects the current track in views 1-3 but in browser it
361 is overridden to toggle showing of hidden files.
363 browser-up (*backspace*)
364 Change to parent directory in browser view (5). This command only
365 makes sense to be bound to the *browser* key context although it's
366 possible to use this even if browser view is not active.
369 Changes the current working directory. Changes the directory
370 displayed in browser view too.
373 Remove all tracks from the specified view or the current view.
385 Change color scheme. Color schemes are found in `/usr/share/cmus/` or
386 `~/.cmus/` and have .theme filename extension.
389 Display arguments on the command line.
391 If the arguments contain *{}* it is replaced with file name of the
392 first selected track.
394 NOTE: unlike with *run* the *{}* is replaced with only the first
401 common ^C echo Type :quit<enter> to exit cmus.
404 factivate <user-defined-filter>...
405 Select and activate the given user defined filters (displayed in the
406 filters view). Filter names are separated by spaces. This command is
407 mostly useful when bound to a key, to change active filters very
408 quickly. If no arguments given then all filters are unactivated.
410 If you prefix a filter name with "!" then the filter value is negated
413 filter <filter-expression>
414 Use this command when you want to temporarily filter contents of the
415 library views without having separately define (fset) and activate the
416 filter. The filter is not saved.
418 fset <name>=<filter-expression>
419 Define (or replace existing) filter and add it to filters view (6).
422 Invert the marking of tracks in playlist and queue views. See *mark*
425 load [-l] [-p] <playlist>
426 Load a playlist to the specified view or to the current view.
429 load to library views
432 load to playlist view
435 Queue NUM (default 1) random albums from the library. See also
438 mark <filter-expression>
439 Mark tracks in playlist and queue view by using a filter expression.
442 Skip to the next track.
448 If stopped, start playing the current song; if already playing seek to
449 beginning of the current song.
452 Skip to the previous track.
458 Go to previously used view.
464 Redraw the terminal window.
467 Run command for the marked tracks OR the selected one if none marked.
469 By default file names are appended to the command. If the command
470 contains *{}* it is replaced with list of filenames.
472 NOTE: In view 1 you can run a command for all files in the selected
475 save [-l] [-p] [file]
476 Save the specified view's or the current view's contents to a playlist
485 If no filename given the old filename is used.
488 If a search pattern has been entered before, search forward for the
489 next match in the current view. See *SEARCHING* above.
492 If a search pattern has been entered before, search backwards for the
493 previous match in the current view. See *SEARCHING* above.
495 seek [+-](<num>[mh] | [HH:]MM:SS)
496 Seek to absolute or relative position. Position can be given in
497 seconds, minutes (m), hours (h) or HH:MM:SS format where HH: is
500 Seek 1 minute backward
503 Seek 5 seconds forward
506 Seek to absolute position 1h
509 Seek 90 seconds forward
519 common right :seek +5
524 Set value of an option. See *OPTIONS*.
527 Display option value. Vim compatible *set <option>?* is also
530 showbind <context> <key>
534 Reshuffle the shuffle lists for both library and playlist views.
537 Read and execute commands from <filename>.
540 Toggle value of a toggle-able option (all booleans and tristate
544 Queue NUM (default 1) random tracks from the library. See also
547 unbind [-f] <context> <key>
548 Remove a key binding. Use tab to cycle through bound keys.
551 Don't throw an error if the binding is not known
554 Unmark all tracks (see *mark*).
557 Update track metadata cache (~/.cmus/cache).
560 Switches active view.
562 vol [+-]NUM[%] [[+-]NUM[%]]
563 Set, increase or decrease volume.
565 If you give *vol* just one argument it changes both channels. Two
566 values make it possible to change the left and right channel
569 To increase or decrease volume prefix the value with *-* or *+*,
570 otherwise value is treated as absolute volume.
572 Both absolute and relative values can be given as percentage units
573 (suffixed with *%*) or as internal values (hardware may have volume in
574 range 0-31 for example).
588 win-activate (*enter*)
589 In views 1-3 start playing the selected track. In view 5 start
590 playing the selected track or change to the selected directory. In
591 view 6 activate the selected filters. In settings view (7) change
595 Add the currently marked or selected track(s) (views 3-4), or the
596 currently selected file or directory (view 5) to the library.
598 Analogous to *:add -l*
601 Add the currently marked or selected track(s) (views 1-2, 4), or the
602 currently selected file or directory (view 5) to the playlist.
604 Analogous to *:add -p*
607 Prepend the currently marked or selected track(s) (views 1-3), or the
608 currently selected file or directory (view 5) to the play queue.
610 Analogous to *:add -Q*
613 Add the currently marked or selected track(s) (views 1-3), or the
614 currently selected file or directory (view 5) to the play queue.
616 Analogous to *:add -q*
618 win-bottom (*G*, *end*)
619 Goto bottom of the current window.
621 win-down (*j*, *down*)
622 Goto down one row in the current window.
625 If no tracks are marked, move the selected track down one row. If any
626 tracks are marked, move the marked tracks after the currently selected
627 track. This command works in unsorted playlist and play queue view.
630 If no tracks are marked, move the selected track up one row. If any
631 tracks are marked, move the marked tracks before the currently
632 selected track. This command works in unsorted playlist and play
636 Activate next window. Only relevant in view 1.
638 win-page-down (*^F*, *page_down*)
639 Goto down one page in the current window.
641 win-page-up (*^B*, *page_up*)
642 Goto up one page in the current window.
644 win-remove (*D*, *delete*)
645 Remove the selected entry. For tracks no confirmations are made. For
646 files (view 5), filters (view 6) and bindings (view 7) user has to
650 Select the current track (position in library or playlist, not
651 necessarily same as the currently playing track). Works only in views
652 1-3, does nothing in other views.
655 Expand albums in library view (1), mark tracks in views 2-4, toggle
656 selection of a filter in view 6, toggle variable value in view 7.
658 win-top (*g*, *home*)
659 Goto top of the current window.
662 Goto up one row in the current window.
665 Checks the modification time of the files in the library, and updates
666 metadata for changed files. Removes non-existent files from the
669 Reloads contents of directory in the browser view.
671 Only works in views 1-2 and 5, does nothing in other views.
674 @h1 CONFIGURATION OPTIONS
676 This section describes cmus' options that can be altered with the *set* and
677 *toggle* commands. Default values are in parenthesis, possible values in
680 auto_reshuffle (false)
681 Reshuffle playlist when end of shuffle list is reached.
683 aaa_mode (all) [all, artist, album]
684 Defines what tracks should be played in the library view. Not used in
685 the other views. For example if set to *artist* the player behaves
686 like there were only the files of the currently playing artist in the
689 altformat_current [`Format String`]
690 Alternative format string for the line displaying currently playing
693 altformat_playlist [`Format String`]
694 Alternative format string for the list views (2-4).
696 altformat_title [`Format String`]
697 Alternative format string for terminal title. NOTE: not all
698 terminals support changing window title.
700 altformat_trackwin [`Format String`]
701 Alternative format string for the tree view's (1) track window.
703 buffer_seconds (10) [1-20]
704 Size of player buffer in seconds.
706 color_cmdline_bg (default) [`Color`]
707 Command line background color.
709 color_cmdline_fg (default) [`Color`]
710 Command line foreground color.
712 color_error (lightred) [`Color`]
713 Color of error messages displayed on the command line.
715 color_info (lightyellow) [`Color`]
716 Color of informational messages displayed on the command line.
718 color_separator (blue) [`Color`]
719 Color of the separator line between windows in view (1).
721 color_statusline_bg (gray) [`Color`]
722 Status line background color.
724 color_statusline_fg (black) [`Color`]
725 Status line foreground color.
727 color_titleline_bg (blue) [`Color`]
728 Background color of the line displaying currently playing track.
730 color_titleline_fg (white) [`Color`]
731 Foreground color of the line displaying currently playing track.
733 color_win_bg (default) [`Color`]
734 Window background color.
736 color_win_cur (lightyellow) [`Color`]
737 Color of currently playing track.
739 color_win_cur_sel_bg (blue) [`Color`]
740 Background color of the selected row which is also the currently
741 playing track in active window.
743 color_win_cur_sel_fg (lightyellow) [`Color`]
744 Foreground color of the selected row which is also the currently
745 playing track in active window.
747 color_win_dir (lightblue) [`Color`]
748 Color of directories in browser.
750 color_win_fg (default) [`Color`]
751 Window foreground color.
753 color_win_inactive_cur_sel_bg (gray) [`Color`]
754 Background color of the selected row which is also the currently
755 playing track in inactive window.
757 color_win_inactive_cur_sel_fg (lightyellow) [`Color`]
758 Foreground color of the selected row which is also the currently
759 playing track in inactive window.
761 color_win_inactive_sel_bg (gray) [`Color`]
762 Background color of selected row in inactive window.
764 color_win_inactive_sel_fg (black) [`Color`]
765 Foreground color of selected row in inactive window.
767 color_win_sel_bg (blue) [`Color`]
768 Background color of selected row in active window.
770 color_win_sel_fg (white) [`Color`]
771 Foreground color of selected row in active window.
773 color_win_title_bg (blue) [`Color`]
774 Background color of window titles (topmost line of the screen).
776 color_win_title_fg (white) [`Color`]
777 Foreground color of window titles (topmost line of the screen).
780 Ask for confirmation before executing *:run*
783 Continue playing after current track finishes.
785 format_current [`Format String`]
786 Format string for the line displaying currently playing track.
788 format_playlist [`Format String`]
789 Format string for the list views (2-4).
791 format_title [`Format String`]
792 Format string for terminal title.
794 NOTE: not all terminals support changing window title.
796 format_trackwin [`Format String`]
797 Format string for the tree view's (1) track window.
799 id3_default_charset (ISO-8859-1)
800 Default character set to use for ID3v1 and broken ID3v2 tags.
802 NOTE: This is used only if the tag is not valid UTF-8.
804 lib_sort (artist album discnumber tracknumber title filename) [`Sort Keys`]
805 Sort keys for the sorted library view (2).
807 output_plugin [alsa, arts, oss, sun]
808 Name of output plugin.
810 pl_sort () [`Sort Keys`]
811 Sort keys for the playlist view (3). Empty value disables sorting and
812 enables manually moving tracks.
815 Play tracks from the library instead of playlist.
818 Play tracks from the library in the sorted view (2) order instead of
819 tree view (1) order. Used only when play_library is true.
822 Repeat after all tracks played.
824 repeat_current (false)
825 Repeat current track forever.
830 replaygain_limit (true)
831 Use replay gain limiting when clipping.
833 replaygain_preamp (6.0)
834 Replay gain preamplification in decibels.
837 Display hidden files in browser.
839 show_remaining_time (false)
840 Display remaining time instead of elapsed time.
843 Play in shuffled order. Shuffle works in the library views (1-2) and
847 Use software volume control.
849 NOTE: You should probably set this to false when using *ao* as
850 *output_plugin* to output to wav files.
852 softvol_state (100 100)
853 Used to save left and right channel values for software volume
854 control. Two integers in range 0..100 separated by a space. This
855 option is not usually changed directly since *vol* command does same
856 thing if *softvol* is true.
858 status_display_program () [command]
859 This command, if not empty, is run every time cmus' status changes.
860 It can be used to display currently playing track on desktop
861 background or panel for example. See
862 `/usr/share/doc/cmus/examples/cmus-status-display`.
866 Color is integer in range -1..255.
868 The following color names are recognized:
870 Terminal's default color, -1
874 black, red, green, yellow, blue, magenta, cyan, gray
877 darkgray, lightred, lightgreen, lightyellow, lightblue, lightmagenta,
882 Format strings control display of tracks in library, playlist and play queue
885 NOTE: *altformat_\** options are used when there are no tags available.
912 start align right (use at most once)
916 You can use printf style formatting (width, alignment, padding). To see
917 current value of an option type *:set option=<TAB>*.
922 :set format_trackwin= %02n. %t (%y)%= %d
923 :set format_current= %n. %-30t %40F (%y)%= %d
928 Sort option (lib_sort, pl_sort) value is space separated list of the following
931 artist, album, title, tracknumber, discnumber, date, genre, comment, filename
937 PCM device for ALSA plugin, usually "default".
940 Mixer channel for ALSA Plugin, usually "pcm", "master" or "headphone".
941 To see all possible values run "alsamixer" or "amixer".
944 Mixer device for ALSA plugin, usually "default".
947 Buffer size, default is 8192 but you may want to try bigger values if
948 you experience buffer under-runs.
951 Output driver for libao plugin. Example values: "alsa09", "esd",
952 "irix", "oss", "sun", "aixs", "wav".
954 NOTE: of the file output drivers only "wav" is supported.
957 Counter used for making filename. Used only if *dsp.ao.driver* is
958 "wav". For example if this is 1 and *dsp.ao.wav_dir* is "/home/user"
959 then PCM data is outputted to "/home/user/01.wav". This counter is
960 incremented every time playback is stopped.
962 NOTE: you probably want to set *continue* to *false* (press *C*),
963 otherwise playback is not stopped between tracks and all PCM data is
964 outputted to one wav file (useful if you want to join files). Also
965 unsetting shuffle and repeat might be good idea.
968 Output directory for libao plugin, default is your home directory.
969 Used only if *dsp.ao.driver* is "wav".
972 PCM device for OSS plugin, usually /dev/dsp.
975 Mixer channel for OSS Plugin, "pcm" or "master".
978 Mixer device for OSS plugin, usually /dev/mixer.
981 PCM device for Sun plugin, usually /dev/audio.
984 Mixer channel for Sun Plugin, usually "master".
987 Mixer device for Sun plugin, usually /dev/mixer.
992 Filters are used mostly for filtering contents of library views (1 & 2).
993 Filters do not change the actual library content, i.e. *:save* command will
994 still save all tracks to playlist file whether they are visible or not.
998 Filter expression is list of built-in filters or user defined filters
999 separated with *&* (and) or *|* (or). Parenthesis can be used group
1000 subexpressions and *!* negates result of the expression following it.
1004 *filename*, *artist*, *album*, *title*, *genre*, *comment*
1006 Comparators: *=* and *!=* (not equal)
1010 *discnumber*, *tracknumber*, *date* (year), *duration* (seconds)
1012 Comparators: *<*, *<=*, *=*, *>=*, *>*, *!=*
1016 *tag* (true if track has tags), *stream* (true if track is a stream)
1018 @h2 Defining Filters
1020 Filters can be defined with *fset* command. User defined filters appear in
1021 the filters view (6).
1023 Create a new filter which name is *ogg* and value *filename="\*.ogg"*
1024 :fset ogg=filename="\*.ogg"
1026 Filter ogg and mp3 files from the 90s. Note the use of user defined filter
1028 :fset 90s-ogg-mp3=date>=1990&date<2000&(ogg|filename="\*.mp3")
1030 @h2 Activating Filters
1032 *factivate* changes visible contents of the library (views 1-2).
1034 Activate user defined filters *ogg* and *missing-tags*
1035 :factivate ogg missing-tags
1037 Like above but negate value of *ogg* filter.
1038 :factivate !ogg missing-tags
1040 Alternatively you can select the filters by pressing *space* in view 6 and
1041 then activate the selected filters by pressing *enter*.
1043 @h2 Throw-away Filters
1045 *filter* command is useful when you want to use a filter only once and not
1046 save it. It changes visible contents of the library (views 1-2) and
1047 unactivates all filters in the filters view.
1049 Filter all rock (anything with *rock* in genre tag) music from 80s-
1050 :filter date>=1980&genre="\*rock\*"
1052 @h2 Selecting Tracks Matching a Filter
1054 Mark (select) all tracks with duration less than 2 minutes
1057 This command works in views 2-4.
1062 cmus reads its configuration from 3 different places.
1065 This is the first file cmus loads. cmus saves its state on exit to
1066 this file so you shouldn't edit it.
1068 `/usr/share/cmus/rc`
1069 If the autosave file didn't exist, this file is read instead.
1072 Static config file. This file is read immediately after the autosave
1073 file, and is never modified by cmus. You can override auto-saved
1074 settings in this file. This file is not limited to options, it can
1075 contain other commands too.
1079 There are some color schemes (\*.theme) in `/usr/share/cmus`. You can switch
1080 them using the *:colorscheme* command. You can put your own color schemes to
1085 Example status display script (See *status_display_program* option) can be
1086 found in `/usr/share/doc/cmus/examples`.
1091 After a crash last lines of `/tmp/cmus-debug` (or $TMPDIR/cmus-debug) might
1092 contain useful information. The file exists only if you configured cmus with
1093 maximum debug level (*./configure DEBUG=2*).
1095 Feature requests and bug reports should go to the cmus-devel mailing list:
1096 http://lists.sourceforge.net/lists/listinfo/cmus-devel
1106 cmus was mainly written by Timo Hirvonen <tihirvon\@gmail.com>. Other
1107 contributers are listed in the `AUTHORS` file.
1109 This man page was written by Frank Terbeck <ft\@bewatermyfriend.org>,
1110 Timo Hirvonen <tihirvon\@gmail.com>, and Clay Barnes <clay.barnes\@gmail.com>.