XMMS2 採用 server/client 架構,server 負責音樂的播放與管理,平常是一個 daemon,等有 clients 傳來命令時,再依命令行事。

啟動 XMMS2 Daemon

xmms2d (xmms2 daemon) 是 XMMS2 的核心,它的任務是接受來自各種 XMMS2 clients 的指令,負責處理音樂的播放與樂庫資料的儲存。當 client 告訴它要放音樂,它就會放音樂,當你離開 client 時,如果沒有告訴 xmms2d 要停止播放,它就會一直播音樂,直到你再由 client 傳命令給 xmms2d,要求它停止播放為止。所以說,播放音樂時,只有 xmms2d 在消耗資源,clients 可以關掉沒關係。

xmms2d 可分成三個部分:

  • transport plugin: 處理來自檔案系統或網路的音樂檔案資料

  • decoder plugin: 音樂檔案資料會被傳給 decoder 來解碼

  • output plugin: 解碼後的音樂資料傳送給 output plugin 來播放

啟動 xmms2 daemon 的方式有兩種,xmms2d 或 xmms2-launcher。

使用 xmms2-launcher 與直接執行 xmms2d 的差別在於:xmms2-launcher 會在背景啟動 xmms2d。xmms2-launcher 在 xmms2d 所需的 IPC 是 unavailable 時,不會馬上離開,會撐到指定的 IPC 可用時才會離開,離開後,xmms2d 就準備好可以接受命令了。

一般執行時,直接執行 xmms2-launcher 比較方便;若需要 debug,可用 xmms2d -v

XMMS2 的重要檔案與設定

XMMS2 的 clients 使用 IPC sockets 來與 xmms2d 溝通,指定的格式類似 url,有三種傳輸方式 (transport method) 可指定:tcp、tcp6 與 unix 。

一般如只想在本機控制音樂的播放,只要指定 unix socket 即可:

$ nyxmms2 server config core.ipcsocket = unix:///tmp/xmms-ipc-USERNAME

上面的 USERNAME 要改成你的帳號。

如果有遠端控制的需求,才需要設定 tcp://ip:port。也可指定多個 IPC,以分號 ; 隔開,例如:

$ nyxmms2 server config core.ipcsocket = unix://tmp/xmms-ipc-USERNAME;tcp://192.168.0.101:9667

如此,xmms2d 會監聽本機在 LAN 上的 IP 192.168.0.101 之 Port 9667,可由遠端連到本機來控制本機 xmms2 的播放。

遠端使用 client 時,要設定好 XMMS_PATH 才能控制 server,例如:

$ export XMMS_PATH=tcp://192.168.0.101
$ ./nyxmms2 list

還有一個重要的設定就是 output.plugin,如果是 alsa,就設定為 alsa;如用 pulseaudio,要設成 pulse

$ nyxmms2 server config (列出所有設定值)
$ nyxmms2 server config output.plugin = alsa
$ nyxmms2 server config output.plugin = pulse

xmms2 的命令列客戶端

xmms2 是 XMMS2 內附的命令列客戶端程式,xmms2 0.7Dr.No 以前的版本,預設都採用舊版的命令列介面:

  • xmms2 command (一般命令)

  • xmms2 mlib command (針對 media library 的命令)

  • xmms2 playlist command (針對 playlist 的命令)

  • xmms2 coll command (針對 collection 的命令)

xmms2 從 Dr.MattDestruction 開始,雖然預設仍採用舊版的命令 xmms2,但另外開發了一個新的命令列客戶端程式 nycli,改進了一些舊客戶端的不便,之後的 Dr.No 又作了一些改善,以下介紹將以 Dr.No 的 nyxmms2 為準(舊版 xmms2 命令列的說明,請參考之前的心得分享)。

  • nyxmms2 (進入互動模式)

  • nyxmms2 GENERAL_COMMAND (針對一般播放、搜尋、管理目前 playlist 內曲目的命令)

  • nyxmms2 playlist PLAYLIST_COMMAND (針對 playlist 的命令)

  • nyxmms2 collection COLLECTION_COMMAND (針對 collection 的命令)

  • nyxmms2 server SERVER_COMMAND (管理 server 媒體資料庫、server 設定的命令)

  • nyxmms2 ALIAS (如同 bash 一樣,可幫某個複雜的命令設定 alias,方便使用)

Dr.No 的下一個版本,將捨棄舊的 xmms2 命令列介面,nycli 會取而代之,如果想早點適應 nycli,在 Dr.No,我們也可以透過設定將預設的命令列介面由舊的 xmms2 改成新的 nycli:

如此一來,以後執行 xmms2 時,就變成使用 nycli 了。

xmms2 音樂資料庫

  1. 把音樂資料夾的路徑加入 media library (預設會包括所有子目錄)

    $ nyxmms2 server import 'PATH'
  2. 強制更新 media library 內的資料

    $ nyxmms2 server rehash
  3. 搜尋 media library 中的資料

    nyxmms2 search [field1:val1 [field2:val2 ...]]
    
    $ nyxmms2 search artist:"Nina Simone" (大小寫沒關係)
    $ nyxmms2 search artist:"To?" (問號代表一個任意字元)
    $ nyxmms2 search artist:* (星號代表零或多個任意字元)
    $ nyxmms2 search album:*by* (搜尋 album 名稱中包含 'by' 的樂曲)
    $ nyxmms2 search title:*love* (歌名包含 'love' 的樂曲)
    $ nyxmms2 search genre:electronic artist:a*
    $ nyxmms2 search tracknr:*2 (搜尋 tracknumber 結尾為 2 的曲目)
    $ nyxmms2 search tracknr \<= 3 (使用 > 或 < 要先用 \ 跳脫)
    $ nyxmms2 search 'tracknr<=3' (tracknr 與 <、= 與 3 之間不可有空白)
    $ nyxmms2 search bitrate:64000 (單位是 bit/s,即 bps)
    $ nyxmms2 search bitrate \> 320000
    $ nyxmms2 search bitrate \<= 80000
    $ nyxmms2 search size \>= 50000000 (單位是 bytes)
    $ nyxmms2 search size \<= 5000000 (單位是 bytes)
    $ nyxmms2 search artist:"ennio*" date:2001 (用 > < >= <= 無效)
    $ nyxmms2 search samplerate:22050
    $ nyxmms2 search samplerate \>= 48000
    $ nyxmms2 search timesplayed:*5 (被播過 5 次)
    $ nyxmms2 search timesplayed \>=5
    $ nyxmms2 search timesplayed \<2
    $ nyxmms2 search artist:"Nina Simone" OR artist:"Bj?rk" (可使用 "OR" 操作子,一定要用大寫)
    $ nyxmms2 search genre:jazz AND 'bitrate>=192000' (可使用 "AND" 操作子,一定要用大寫)
    $ nyxmms2 search artist~no (artist 含有 no 的曲目,~ 代表部分符合)
    $ nyxmms2 search artist:"bjork" +date (搜尋 date 這個 field 有任何字元的歌曲)
    $ nyxmms2 search '#18' (找 id 為 18 的曲子,不能用 ?*)
    $ nyxmms2 search \#18 (找 id 為 18 的曲子,不能用 ?*)
    $ nyxmms2 search id:*8 (找 id 個位數為 8 的曲子)
    $ nyxmms2 search in:bjork (在名稱為 bjork 的 collection 中搜尋)
    $ nyxmms2 search in:NinaSimone album:"a single woman" NOT title:"a single woman"
    (在名稱為 NinaSimone 的 collection 中搜尋 a single woman 這張專輯中,除了 a single woman 這首歌外,還有那些歌。NOT 操作子要大寫。)
    $ xmms2 search '(' artist:Bjork AND title~o ')' OR '(' artist:"nina simone" AND title:o* ')'
    (找 artist 為 Bjork 且 title 包含字母 o 的曲目,或者 artist 為 Nina Simone 且 title 是以字母 o 開頭的曲目)

    其他可用的 field 包含 id (id 指的是音樂檔案在資料庫中的 id 數字)、url (歌曲的路徑)、added (加入 media library 的時間,自 1970 年 1 月 1 日起算的秒數)、mime、lmod (上次修改時間,同樣是從 1970-01-01 起算的秒數)、laststarted(上次播放時間)、duration (歌曲長度,以 miniseconds 計算)、{album, artist, track}_id (歌曲的 MusicBrainz 的 ID number)。

    其實 media library 允許任何 field (有時稱 key 或 properties) 儲存在內,所以要提供完整的 field 清單是蠻困難的,以上所提到的,只是一些比較常見的 field,並不完整。

    url 的格式,在本機是 file:///media/e/Bjork/flac/audio_04.flac ,若用 daap,則為 daap://192.168.0.101:9999/2818.mp3 ,daap 的樂曲都被編號並放到虛擬的目錄了,所以遠端音樂檔案實際的路徑無法用於搜尋。

  4. 將搜尋結果加入播放清單

    搜尋到想要加入播放清單的歌曲後,將 search 改成 add,即可將搜尋結果加入播放清單。

    $ nyxmms2 add artist:"keith*"

xmms2 播放清單

管理播放清單內容

  • 列出目前使用中的播放清單:

    $ nyxmms2 list
  • 列出某份播放清單的內容:

    $ nyxmms2 list -p PLAYLIST_NAME
  • 自訂格式列出播放清單:

    1. nyxmms2 list 功能有點簡陋,還好,nyxmms2 search 功能很強,甚至可以補償 nyxmms2 list 功能的不足

      $ nyxmms2 search in:Playlists/Default -l artist,album,tracknr,title,bitrate,mime -o artist,album,tracknr,title
  • 瀏覽某個網址的內容 (以編碼過的型式顯示):

    $ nyxmms2 add URL
    $ nyxmms2 add /media/d/music
    $ nyxmms2 add daap:///192.168.0.101:9999/
  • 將 PATTERN|PATHS 加到指定或使用中的播放清單:

    nyxmms2 add [-p PLAYLIST] <'PATTERN'|'PATHS'>
    $ nyxmms2 add -p test artist~bjork
    $ nyxmms2 add -p test ${HOME}/music
    (Dr.No 的 nycli 似乎有 bug,只要不是目前所在的 playlist,用 -p 指定特定播放清單就無法成功)
  • PATTERN|PATHS 加到指定或使用中的播放清單,並由清單中 POS 這個位置加入:

    nyxmms2 add -a POS [-p PLAYLIST] <'PATTERN'|'PATHS'>
    $ nyxmms2 add -a 20 -p Default ${HOME}/music
  • 將 PATTERN|paths 加到目前播放歌曲的下一個位置:

    nyxmms2 add -n <'PATTERN'|'paths'>
    $ nyxmms2 add -n album~vespertine
  • 將樂曲 id 個位數是 3 的曲子加到使用中的播放清單(可用 ? 與 \)*:

    $ nyxmms2 add id:*3
  • 將樂曲的 MEDIALIB_ID 加到指定或使用中的播放清單 PLAYLIST',並由清單中 'POS 這個位置加入:

    nyxmms2 add [-p PLAYLIST] -a POS id:MEDIALIB_ID
  • 將 playlist 檔 PLAYLIST_FILE 加到指定或使用中的播放清單 PLAYLIST:

    nyxmms2 add -P PLAYLIST_FILE [-p PLAYLIST]
    nyxmms2 addpls PLAYLIST_FILE [-p PLAYLIST]
  • 將目錄 PATH 內所有樂曲都加入播放清單(也會自動加入 media library):

    nyxmms2 add [-p PLAYLIST] 'PATH'
  • 將音樂資料庫內所有樂曲都加入播放清單:

    $ nyxmms2 add url~*
  • 將 collection COLLNAME 中的曲目加入播放清單:

    $ nyxmms2 add in:Collections/COLLNAME
  • 在 collection COLLNAME 中將符合 PATTERN 的曲目加入播放清單:

    $ nyxmms2 add PATTERN in:Collections/COLLNAME
    $ nyxmms2 add url~DF in:Collections/test
  • *從目前 active 的播放清單切換到另一份清單 PLAYLIST_NAME *:

    $ nyxmms2 playlist switch 'PLAYLIST_NAME'
  • 清除目前使用中的播放清單的內容:

    $ nyxmms2 clear
  • 清除目前使用中的播放清單內的某些項目:

    $ nyxmms2 remove [-p PLAYLIST] <'PATTERN'|'PATHS'>

排序播放清單中的內容

  • 打亂播放清單順序: nyxmms2 playlist shuffle [PLAYLIST]

  • 依各種 PROPERTIES 來排序: nyxmms2 playlist sort PROPERTIES1 PROPERTIES2 …

    1. nyxmms2 sort id

    2. nyxmms2 sort title

    3. nyxmms2 sort artist

    4. nyxmms2 sort tracknr

    5. nyxmms2 sort album

    6. nyxmms2 sort date

  • 依各種 PROPERTIES 來排序指定的清單 PLAYLIST: nyxmms2 playlist sort -p PLAYLIST PROPERTIES1 PROPERTIES2 PROPERTIES3…

    1. nyxmms2 sort artist date album tracknr

  • 調整播放清單中樂曲的順序:

    nyxmms2 move [-p 'PLAYLIST'] -a 'POS_NEW' <'PATTERN'|'POSITION'>
    $ nyxmms2 list
    ->[1/17] Björk - 01 - Hidden Place (05:29)
      [2/18] Björk - 02 - Cocoon (04:27)
      [3/19] Björk - 03 - It's Not Up To You (05:09)
      [4/20] Björk - 04 - Undo (05:38)
      [5/21] Björk - 05 - Pagan Poetry (05:14)
      [6/22] Björk - 06 - Frosti (01:41)
    $ nyxmms2 move -a 5 2 (將位置 2 的曲子搬到位置 5 之前)
    $ nyxmms2 list
    ->[1/17] Björk - 01 - Hidden Place (05:29)
      [2/19] Björk - 03 - It's Not Up To You (05:09)
      [3/20] Björk - 04 - Undo (05:38)
      [4/18] Björk - 02 - Cocoon (04:27)
      [5/21] Björk - 05 - Pagan Poetry (05:14)
      [6/22] Björk - 06 - Frosti (01:41)
    $ nyxmms2 move -a 5 2,3 (將位置 2,3 的曲子搬到位置 5 之前)
    ->[1/17] Björk - 01 - Hidden Place (05:29)
      [2/18] Björk - 02 - Cocoon (04:27)
      [3/19] Björk - 03 - It's Not Up To You (05:09)
      [4/20] Björk - 04 - Undo (05:38)
      [5/21] Björk - 05 - Pagan Poetry (05:14)
      [6/22] Björk - 06 - Frosti (01:41)
    $ nyxmms2 move -n title~pagan (曲名含有 pagan 的搬到目前所在的下一個位置)
    ->[1/17] Björk - 01 - Hidden Place (05:29)
      [2/21] Björk - 05 - Pagan Poetry (05:14)
      [3/18] Björk - 02 - Cocoon (04:27)
      [4/19] Björk - 03 - It's Not Up To You (05:09)
      [5/20] Björk - 04 - Undo (05:38)
      [6/22] Björk - 06 - Frosti (01:41)

管理播放清單

  • 列出目前使用中播放清單的內容: nyxmms2 list

  • 列出所有可用的播放清單: nyxmms2 playlist list (前有星號者,代表目前所在的播放清單)

  • 建立一份播放清單: nyxmms2 playlist create PLAYLST

  • 移除某份播放清單: nyxmms2 playlist remove PLAYLST

  • 更改目前播放清單的名稱: nyxmms2 playlist rename NEWNAME

  • 更改指定的播放清單名稱: nyxmms2 playlist -p PLAYLIST NEWNAME

播放方式

$ nyxmms2 play (播放)
$ nyxmms2 stop (停止)
$ nyxmms2 seek +120 (前進 120 秒) (使用 daap 或 http streaming 時無效)
$ nyxmms2 seek -31 (倒帶 31 秒)
$ nyxmms2 seek 100 (跳到 100 秒處)
$ nyxmms2 seek +2m (前進 2 分鐘)
$ nyxmms2 seek 1m35s (跳到 1 分 35 秒處)

$ nyxmms2 next (下一首)
$ nyxmms2 prev (前一首)
$ nyxmms2 toggle (切換播放/停止)
$ nyxmms2 jump PLAYLIST_POSITION (跳到清單中的某個編號)
$ nyxmms2 server volume (列出音量)
$ nyxmms2 server volume [-c CHANNEL] VOLUME
(設定 CHANNEL 的音量為 VOLUME,值可為 0-100,若無指定 CHANNEL,就全部一起改)

顯示 Server 或曲目資訊

$ nyxmms2 server stats (列出 uptime 與 version)
$ nyxmms2 info [id] (列出指定 id、或目前播放樂曲在 mlib 中的相關資訊)
$ nyxmms2 status (進入顯示樂曲播放狀態的模式)
$ nyxmms2 current PATTERN (以自訂的格式來顯示目前播放曲目的資訊)
(PATTERN 可用 "\${album}\ -\ \${tracknr}" 的型式指定,請注意 shell 的 substitution 功能)
(實測發現,需將 $ 用倒斜線跳脫,才能正常顯示曲目資訊)
(舊版的 xmms2 current 不需要跳脫空白,新的 nyxmms2 current 才需要,而且即使用單引號,也要跳脫空白,否則資訊會在空白前截斷)
$ nyxmms2 current "\${artist}\ >\ \${album}:\ \${tracknr}\ -\ \${title}"
$ nyxmms2 current '${artist}\ >\ ${album}:\ ${tracknr}\ -\ ${title}'
(中文括弧在 nycli 仍有問題,目前下面這一行無法正常動作)
$ nyxmms2 current '【${artist}:\ ${album}】\ ${tracknr}\ -\ ${title}"
(其實新版的 nyxmms2 current 就是 nyxmms2 status -f 的 alias,經實測,如用 nyxmms2 status -f,就不需跳脫空白)
$ nyxmms2 status -f '${artist} > ${album}: ${tracknr} - ${title}'

播放清單的類型

  • 設定播放清單的類型: 目前 XMMS2 支援三種類型的 playlists,這三種類型的播放清單都有一些屬性,可用 xmms2 coll attr 命令來設定,這三種類型分別為:

    1. list: 最簡單,內含 medialib 的 ids。只有一種 attribute: jumplist。jumplist 是當目前清單播放完後要跳過去的 playlist 名稱。

    2. queue: 是一份靜態的清單,支援固定長度的播放清單,當樂曲播放後,就會被移除,queue 有兩種 attributes: jumplist 與 history。jumplist 同前,history 則是要保留的播放過樂曲的數量。

    3. pshuffle: 從 collection 中隨機抽出的一些樂曲,有三種 attributes:jumplist、history 與 upcoming。前兩種同前,upcoming 是指在播放清單中必需維持的尚未播過的曲目數量。

Collection

所謂 Collection,就是 Media Library 內某些曲目的集合,譬如:

  • 周杰倫的專輯

  • 1950 以前的 jazz 類的音樂

  • 我最愛的幾首歌

  • 上週才加入的音樂 (某人某首歌除外)

以 Collection 的性質來看,前兩項是動態的,可藉由向 media library 資料庫發出 query 來取得符合的曲目清單,例如:我剛剛將一張周杰倫的專輯加入資料庫,那麼現在再搜尋 artist 為周杰倫的專輯,找出來的結果就會比之前多出剛剛新加入的這張專輯的資料。

第三項 (我最愛的幾首歌) 是一份靜態的清單,也就是說我喜歡的歌是一首一首指定的,除非我自己增減,否則這份清單不會改變。

第四項則混合了動態與靜態的清單。

表面上看,這似乎類似於 Playlist,或者 Dynamic Playlist,但其實 XMMS2 對 playlist 與 collection 的處理是非常不同的。

XMMS2 的 collection,是沒有排順序的,不可用來播放,它只是用來將 media library 中的某些曲目分出來成為一個小組(subset),讓聆聽者容易取得這個小組內的曲目而已。如果想聽 collection 內的曲目,必需依 collection 的內容建立 playlist,才可播放。簡單講,collection 是 a set of media,又稱 mediaset,就技術上來講,是 unordered collection。也可將 collection 看成是用 filter 篩選過的 media library,也就是向資料庫 query 的結果。

XMMS2 的 playlist,是一份有順序的曲目清單,是可用來依序播放的。就技術上來講,是 a list of media,又稱 medialist,其實還是一種 collection,只不過它是 ordered collection。

Collection 存在的目的,是為了讓使用者可以更容易、更方便地從龐大的 media library 中取出某一部分 (collection),依據這個部分,或是這個部分的某一部分,來建立播放清單,讓 playlist 的建立更簡便。

XMMS2 可以有許多 collections,這些 collections 可放到不同的 namespace 中來分類,這些 namespace 彼此不會重疊,如果一個 collection 在某個 namespace,它就不會同時存在於另一個 namespace,但某個 namespace 內的 collection 仍可 reference 到另一個 namespace 內的 collection。

預設有兩個 namespace,一個是 Playlists,專門用來放播放清單,只有 idlist 才能放在 Playlists;一個是 Collections,用來放一般使用者自己定義的 collections。

舊版的 XMMS2 cli 在指定 collname 時,有時必需加上所屬的 namespace,只要在 collection name 前加上所屬的 namespace 即可,譬如:

Playlist/collname
Collections/collname

Collection 的用法

  • nyxmms2 collection list: 列出指定的 namespace 的所有 collections。

    $ nyxmms2 collection list (會列出目前所有的 collections)
  • nyxmms2 collection create COLLNAME [PATTERN]: 把建立名稱為 COLLNAME 的 collection,並指定 PATTERN。

    $ nyxmms2 collection create björk artist:bj*rk (將 artist 為 bj*rk 的曲目建立成一個名為 björk 的 collection)
  • nyxmms2 collection rename OLDNAME NEWNAME: 把原名為 oldname 的 collection 改為 'NEWNAME'。

    $ nyxmms2 collection rename björk bjork (將原名為 björk 的 collection 改為 bjork)
    (舊的 xmms2 coll 命令可修改指定的 Namespace 中 collection 的名稱,但 Dr.No 的 nycli 經測試失敗)
    (Dr.No 的 nyxmms2 collection 可以修改 Namespace Collections 底下的 collections,但不能改 Playlists 底下的 playlist name)
    (nyxmms2 playlist 也只能修改 Namespace Playlists 底下的 playlists)
    $ xmms2 coll rename Playlists/test Playlists/hello (OK)
    $ nyxmms2 collection rename Playlists/test Playlists/hello (無法完成動作)
    $ nyxmms2 playlist rename -p test hello (OK)
  • xmms2 coll query COLLNAME [order]: 舊的 xmms2 命令列中,此命令可列出 COLLNAME 這個 collection 內的曲目,並依 order 來排序 (order 是前面提過的 field,可使用多個 fields,以逗號隔開)。新的 nycli 已改用 nyxmms2 search 命令來達成。

    $ xmms2 coll query bjork (列出 bjork 這個 collection 內的曲目,預設會用 id 排序)
    $ xmms2 coll query bjork title (列出曲目,並依 title 來排序)
    $ xmms2 coll query bjork album,title (先用 album 排序,再用 title 排序)
    $ nyxmms2 search in:Collections/test
    (在 Collections 這個 Namespace 中搜尋 test 這個 collection 的所有曲目)
    $ nyxmms2 search in:bjork title~frosti (在名稱為 bjork 的 collection 中搜尋 frosti 這首歌)
    $ nyxmms2 search in:Playlists/Default date:2001 -l artist,album,title,date
    (在 Playlists 這個 Namespace 中搜尋 Default 這個 collection 中 date 為 2001 的曲目)
    $ nyxmms2 search in:Playlists/Default date:2001 -l artist,album,title,date -o artist,date,album,tracknr,url
    (搜尋條件與前例相同,但依 -o 後面所接的 fields 順序排列)
  • xmms2 coll queryadd [collname] [order]: 舊的 xmms2 命令列中,此命令可將 collection 的曲目加入目前使用中的 playlist,並依 order 來排序。新的 nycli 已改用 nyxmms2 add 命令,如果要指定排序,必需用 nyxmms2 playlist sort 命令。

    $ xmms2 coll queryadd bjork date,album,tracknr
    $ nyxmms2 add in:Collections/bjork album:vespertine
    $ nyxmms2 playlist sort tracknr,bitrate
  • xmms2 coll find [media_id] [namespace]: 舊的 xmms2 命令列中,此命令可在 namespace 或所有的 collections 中(假如沒有指定 namespace)找尋誰有指定的 media_id。新的 nycli 已改用 nyxmms2 search,且必需指定 COLLECTION 名稱。

    $ xmms2 coll find 01949 (在所有的 namespace 中尋找誰有 id 為 01949 的 collection)
    $ xmms2 coll find 01949 Collections (僅在 Collections 這個 namespace 尋找)
    $ nyxmms2 search in:Collections/bjork id:01949
  • xmms2 coll get collname: 舊的 xmms2 命令列中,此命令可列出名稱為 collname 的 collection 的結構。新的 nycli 已改用 xmms2 collection show COLLNAME,且無法列出 Namespace Playlists 下 playlists 的結構。

    $ xmms2 coll get bjork (列出名為 bjork 的 collection 的結構)
    Match ('artist', 'b??rk*') for:
      Reference: 'All Media'
    $ xmms2 coll get Playlist/new (列出名為 new 的播放清單結構)
    Idlist: (40, 2468, 2469, 2470, 2471, 2472, 2476)
    $ nyxmms2 collection show bjork
    Match ('artist', 'b??rk*') for:
      Reference: 'All Media'
    $ nyxmms2 collection show Collections/test
    Intersection:
      Union:
        Match ('url', '*charice*') for:
          Reference: 'All Media'
        Match ('url', '*bj*rk*') for:
          Reference: 'All Media'
      Has ('date') for:
        Reference: 'All Media'
  • xmms2 coll attr [collname] [attr] [val]: 舊的 xmms2 命令,可 get/set 一個 saved collection 的 attribute。新的 nycli 改成 nyxmms2 collection config 來設定。

    1. 對於 list 類型的 playlist,可設定 jumplist 這個 attribute。jumplist 就是播完目前播放清單後要跳過去的下一份播放清單的名稱。

    2. 對於 queue 類型的 playlist,可設定 jumplist 與 history 這兩個 attribute。jumplist 的意義與之前相同;history 屬性是一個數字,是用來指定對於已播放過曲目要保留多少筆的設定。

    3. 對於 pshuffle 類型的 playlist,可設定 jumplist、history 與 upcoming 這三種類型的屬性。jumplist 的意義與之前相同,但要注意一點,pshuffle 只有在其來源的 collection 中已無法再由 media library 找到符合條件的曲目時,才代表播完這份 playlist。history 的意義與之前相同。upcoming 屬性是一個數字,代表尚未播放過、要顯示在 playlist 中的曲目的數量。 .以下的實例可能有點亂,顯然 nycli 對 collection/playlist 的一些屬性支援尚未成熟,所以這邊仍保留舊版 xmms2 的說明,並新增一些 nyxmms2 的心得。

      $ xmms2 playlist test1 type pshuffle Collections/bjork
      $ nyxmms2 playlist config -t pshuffle test1 (bjork 不可寫成 Playlists/bjork)
      (設定 test1 這份播放清單的類型為 pshuffle,由 bjork 這個 collection 抓出曲目)
      $ xmms2 coll attr Playlists/test1 upcoming 2
      $ nyxmms2 playlist config -u 2 test1
      $ xmms2 coll attr Playlists/test1 history 3
      $ nyxmms2 playlist config -s 3 test1
      $ xmms2 coll attr Playlists/test1 jumplist test2
      (nyxmms2 playlist 目前 Dr.No 無法設定 playlist 的 jumplist,nyxmms2 collection 可以設定 collection 的 jumplist,不知道有什麼用?)
      (bjork 這個 collection 如果沒有曲目,才會跳到 test2 這份播放清單,注意,test2 這份播放清單不要寫成 Playlists/test2,會找不到)
      $ nyxmms2 collection config Playlists/test1 jumplist Playlists/test2 (原本以為這樣可以設定播放清單的 jumplist,但還是不行)
      $ xmms2 coll attr Playlists/test1 (顯示 test1 的 attr)
      $ xmms2 playlist config test1
      $ xmms2 playlist load test1
      $ xmms2 play
      $ xmms2 next
      $ xmms2 list
      …… (必需 xmms2 next 與 xmms2 list 幾次後才看得出差別)
  • nyxmms2 collection remove COLLNAME: 移除一個之前建立的 collection COLLNAME

    $ nyxmms2 collection remove bjork
    $ xmms2 coll remove bjork (舊版的命令)

如需更多資訊,可見 Collections Concept

XMMS2 的設定

  • 列出已安裝的 plugin

    $ xmms2 plugin_list
    $ nyxmms2 server plugins
  • 列出設定值

    $ xmms2 config_list
    $ nyxmms2 server config
  • 指定設定值

    $ xmms2 config config_key [=] value
    $ xmms2 server config config_key [=] value
  • 開啟某種 effect

    $ xmms2 config effect.order.0 some-effect-name
    $ xmms2 config some-effect-name.enabled 1
    $ nyxmms2 server config effect.order.0 some-effect-name
    $ nyxmms2 server config some-effect-name.enabled 1
  • 設定使用 replaygain

    $ xmms2 config effect.order.0 replaygain
    $ xmms2 config replaygain.enabled 1
    $ nyxmms2 server config effect.order.0 replaygain
    $ nyxmms2 server config replaygain.enabled 1
  • 設定使用 equalizer

    1. xmms2 支援 10/15/25/31 band Equalizer,其中,10 band 可以選擇 legacy 的版本(與 xmms/winamp2 相同)。

    2. 10 band: 31, 62, 125, 250, 500, 1K, 2K, 4K, 8K, 16K

    3. 10 band (legacy): 60, 170, 310, 600, 1K, 3K, 6K, 12K, 14K, 16k

    4. 15 band: 25, 40, 63, 100, 160, 250, 400, 630, 1k, 1.6k, 2.5k, 4k, 6.3k, 10k, 16k (xmms2 沒有詳細列出頻段,這是 google 查的一般規格)

    5. (25 band 較少看到,暫時不管它)

    6. 31 band: 20, 25, 31.5, 40, 50, 63, 80, 100, 125, 160, 200, 250, 315, 400, 500, 630, 800, 1k, 1.25k, 1.6k, 2k, 2.5k, 3.15k, 4k, 5k, 6.3k, 8k, 10k, 12.5k, 16k, 20k (xmms2 沒有詳細列出頻段,這是 google 查的一般規格)

      $ nyxmms2 server config effect.order.1 equalizer (設定 equalizer effects 在所有 effects 中的順序)
      $ nyxmms2 server config equalizer.enabled 1 (打開 equalizer)
      $ nyxmms2 server config equalizer.bands [=] <10|15|25|31> (指定 band 數)
      $ nyxmms2 server config equalizer.gain[00-30] [=] [-20.0~20.0]
      $ nyxmms2 server config equalizer.use_legacy [=] <0|1> (1 代表使用 legacy 版的 equalizer)
      $ nyxmms2 server config equalizer.legacy[0-9] [=] [-20.0~20.0]
      $ nyxmms2 server config equalizer.preamp [=] [-20.0~20.0]
      $ nyxmms2 server config equalizer.extra_filtering [=] [0|1]
    7. 每次改變 equalizer.bands','equalizer.gain[00-30] 就會歸零

    8. preamp、gain[00-30]、legacy[0-9] 都支援有小數點的數字

    9. extra_filtering 的值如果是 1,filtering 會多跑一次,結果較好,但較耗 CPU

    10. preamp 只會影響 xmms2 的音量,不會影響系統的音量

    11. 如果懶得打指令,可以用圖形介面 eq.py,它需要 python-xmmsclient

參考資料 ==