subsonic terminal music player

STMP (subsonic terminal music player)

A terminal client for *sonic music servers. Inspired by ncmpcpp.

Features

  • browse by folder
  • queue songs and albums
  • volume control

Dependencies

  • libmpv-dev (build)
  • mpv

Go build dependencies

Compiling

stmp should compile normally with go build. Cgo is needed for linking the libmpv header.

Configuration

stmp looks for a config file called stmp.toml in either $HOME/.config/stmp or the directory in which the executible is placed.

Example configuration

[auth]
username = 'admin'
password = 'password'

[server]
host = 'https://your-subsonic-host.tld'

Usage

  • 0 - folder view
  • 1 - queue view
  • enter - play song (clears current queue)
  • d/delete - remove currently selected song from the queue
  • D - remove all songs from queue
  • a - add album or song to queue
  • p - play/pause
  • -/= volume down/volume up
Comments
  • crash on startup: signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x76e22a]

    crash on startup: signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x76e22a]

    I compiled stmp with go version go1.16.2 linux/amd64 added a configuration under ~/.config/stmp/stmp.toml but stmp crashes on startup with

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x76e22a]
    
    goroutine 1 [running]:
    main.main()
            <path>/stmp/stmp.go:42 +0x16a
    

    Is there a way to find the reason for the crash?

  • Crashing when trying to change songs

    Crashing when trying to change songs

    Thanks for this project, yesterday I was searching for a terminal client for navidrome but couldn't find one and today I saw the post on r/selfhosted :)

    I can start a song but as I want to go change the song stmp crashes. It reports a runtime error: index out of range [0] with length main.handleMpvEvents(0xc0004e2180) created by main.InitGui

    Hope this helped happy to give more infos :+1:

  • Incorrect switching keys

    Incorrect switching keys

    I'm not sure if this is a documentation issue or an array-indexing issue, but the documentation states that 0 and 1, respectively switch between artist & queue screens, but at least for me, they are 1 and 2

    Installed stmp via AUR, version 0.0.2-1

    EDIT: I looked through the code, and it looks like 1 and 2 are intended. Making a simple PR to fix.

  • No songs show up in playlists

    No songs show up in playlists

    It seems like Entries in SubsonicPlaylist does not get populated with songs when calling GetPlaylists. I feel like I am missing something as to how playlist songs are fetched, considering no songs are fetched in this example on getPlaylists from the subsonic api docs.

    One solution would be using GetPlaylist to fetch the songs in each playlist and put them into respective playlist. This works, but I'm not sure how it even works to begin with due to reasons stated above.

    Anyhow, I'd be happy to help.

  •  fatal error: 'mpv/client.h' file not found

    fatal error: 'mpv/client.h' file not found

    xinmans@LincM1 stmp % go build .

    golang.org/x/sys/unix

    ../go/pkg/mod/golang.org/x/[email protected]/unix/syscall_darwin.1_13.go:29:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.1_13.go:27:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.1_13.go:40:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:28:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:43:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:59:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:75:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:90:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:105:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:121:3: //go:linkname must refer to declared function or variable ../go/pkg/mod/golang.org/x/[email protected]/unix/zsyscall_darwin_arm64.go:121:3: too many errors

    github.com/yourok/go-mpv/mpv

    ../go/pkg/mod/github.com/yourok/[email protected]/mpv/consts.go:3:10: fatal error: 'mpv/client.h' file not found #include <mpv/client.h> ^~~~~~~~~~~~~~ 1 error generated. xinmans@LincM1 stmp %

  • go-mpv not fount

    go-mpv not fount

    ../../go/pkg/mod/github.com/yourok/[email protected]/mpv/consts.go:3:10: fatal error: 'mpv/client.h' file not found #include <mpv/client.h> ^~~~~~~~~~~~~~ 1 error generated.

  • How to install/compile properly

    How to install/compile properly

    Not sure what to do with the stmp-linux-amd64 file in the releases, but I tried compiling and I keep getting a compilation error with the consts.go file in the mpv dependency from yourok.

    ~# github.com/yourok/go-mpv/mpv ../go/pkg/mod/github.com/yourok/[email protected]/mpv/consts.go:3:10: fatal error: mpv/client.h: No such file or directory 3 | //#include <mpv/client.h> | ^~~~~~~~~~~~~~ compilation terminated.

    Not sure if you can help or if I should contact yourok to see if he can fix the issue, but please let me know if anything can be done to fix this, I would really like to try stmp for my subsonic server.

  • Album titles are not sorted/played by title number

    Album titles are not sorted/played by title number

    If you select the artist and then an album you seem to get the files back sorted by file name and not by song index. This seems to come from using the getIndexes and getMusicDirectoryAPI instead of getArtists, getArtist and getAlbum API. Using this API would also allow showing artist and album names by tag and not by folder name.

    Please see File structure vs ID3 tags on http://www.subsonic.org/pages/api.jsp

    Thank you in advance for taking a change to this API into account.

Related tags
aerc is an email client for your terminal.

aerc aerc is an email client for your terminal. This is a fork of the original aerc by Drew DeVault. A short demonstration can be found on https://aer

Apr 16, 2022
Gomu is intuitive, powerful CLI music player.
Gomu is intuitive, powerful CLI music player.

Gomu (Go Music Player) Gomu is intuitive, powerful CLI music player. It has embedded scripting language and event hook to enable user to customize the

Dec 25, 2022
A tool to stream videos📺 directly into VLC media player just by its name from terminal.
A tool to stream videos📺 directly into VLC media player just by its name from terminal.

PeerWatch A tool to stream videos directly into the VLC media player. Download Download the tool from here: Windows Linux win-x64 linux-x64 Building Y

Feb 12, 2022
Download and listen music in the terminal!
Download and listen music  in the terminal!

?? this cli still has a lot of bugs ?? A simple tool to download and listen music in the terminal. You will need: golang deno v1.16+ youtube-dl Instal

Dec 2, 2022
CLI audio player written in go.
CLI audio player written in go.

A very minimal CLI audio player.

Dec 13, 2022
Go bindings for libVLC and high-level media player interface
Go bindings for libVLC and high-level media player interface

Go bindings for libVLC 2.X/3.X/4.X and high-level media player interface. The package can be useful for adding multimedia capabilities to applications

Dec 31, 2022
Go bindings for libVLC and high-level media player interface
Go bindings for libVLC and high-level media player interface

Go bindings for libVLC 2.X/3.X/4.X and high-level media player interface. The package can be useful for adding multimedia capabilities to applications

Dec 31, 2022
Podcast CLI player
Podcast CLI player

Top-like interface for listening to podcasts podcast-cli lets you play your favourite podcasts from the terminal: podcast-cli is entirely built with G

Oct 31, 2022
goloz is a multi-player reimplementation of the link to the past game.
goloz is a multi-player reimplementation of the link to the past game.

goloz is a free and open source online multiplayer game.

Aug 29, 2022
Official provider for VMware desktop products: Fusion, Player, and Workstation.

Vagrant VMware Desktop Providers This is the common codebase for the official providers for VMware desktop products: Fusion, Player, and Workstation.

Jan 7, 2023
Quick and dirty Minecraft player head to SVG converter

Head SVG Quick and dirty Minecraft player head to SVG converter. Can be used to generate player head icons. Usage usage: Head SVG [-h|--help] -n|--nam

May 29, 2022
This is an extremely basic 2 player online game.

myba This is an extremely basic 2 player online game. How to play Player one moves with WASD, player 2 moves with UHJK. Once both players are either h

Dec 7, 2021
66 is two player game played with playing cards and from now on you can play it from browser with your friends.

altmis-alti 66 is two player game played with playing cards and this project provides multiplayer game space from browser. How to run? Clone the proje

Feb 1, 2022
Watch your favourite anime using the video player of your choice directly from the command line

anime-cli Watch your favourite anime using the video player of your choice direc

Feb 10, 2022
Go-poolsuite - Poolsuite FM player as Go module

go-poolsuite Poolsuite FM (formerly Poolside FM) player as a Go module. Example

May 4, 2022
GoScanPlayers - Hypixel online player tracker. Runs as an executable and can notify a Discord Webhook
GoScanPlayers - Hypixel online player tracker. Runs as an executable and can notify a Discord Webhook

GoScanPlayers Hypixel online player tracker. Runs as an executable and can notif

Oct 16, 2022
Sequence-based Go-native audio mixer for music apps

Mix https://github.com/go-mix/mix Sequence-based Go-native audio mixer for music apps See demo/demo.go: package main import ( "fmt" "os" "time"

Dec 1, 2022
Maintain a lower-bitrate copy of a music library in sync with the main copy.

msync Maintain a lower-bitrate copy of your music library, in sync with the main copy.

Mar 6, 2022
Unlock Music Project - CLI Edition

Unlock Music Project - CLI Edition Original: Web Edition

Nov 2, 2022
🐈📦 nyaa.si client library for Go. Fetch Anime, Manga, Music and more torrents

?? ?? go-nyaa nyaa.si client library for Go Built on top of: gofeed - search using RSS colly - scrap torrent details page Original idea: ejnshtein/nya

Sep 23, 2022