CLI audio player written in go.

Overview

grump

Great but
Really
Ugly
Media
Player

A very minimal CLI audio player.

Features

  • cross-platform
  • ID3 tag scanning
  • Supports
    • FLAC
    • MP3
    • OGG/Vorbis
    • WAV
  • Tag Editor
  • Quick Ratings
  • Playback Effects (speed up/down)

Install

Linux

sudo apt install libasound2-dev build-essential
go get github.com/dhulihan/grump

Mac OSX

brew tap dhulihan/grump
brew install grump

Alternatively, you can install the latest (possibly unreleased) version:

go get github.com/dhulihan/grump
  • You can also download pre-build binaries on the releases page.

Usage

grump path/to/some/audio/files

Keyboard Shortcuts

┌───────┬───────────────────────────────────────────────────┐
│space  │pause/unpause                                      │
├───────┼───────────────────────────────────────────────────┤
│escape │stop track                                         │
├───────┼───────────────────────────────────────────────────┤
│d      │describe currently playing track                   │
├───────┼───────────────────────────────────────────────────┤
│e      │edit currently playing track                       │
├───────┼───────────────────────────────────────────────────┤
│delete │delete currently playing track (with prompt)       │
├───────┼───────────────────────────────────────────────────┤
│l      │view logs page                                     │
├───────┼───────────────────────────────────────────────────┤
│left   │seek forward (does not work on flac)               │
├───────┼───────────────────────────────────────────────────┤
│right  │seek backward  (does not work on flac)             │
├───────┼───────────────────────────────────────────────────┤
│]      │play next track                                    │
├───────┼───────────────────────────────────────────────────┤
│[      │play previous track                                │
├───────┼───────────────────────────────────────────────────┤
│=      │volume up                                          │
├───────┼───────────────────────────────────────────────────┤
│-      │volume down                                        │
├───────┼───────────────────────────────────────────────────┤
│+      │speed up                                           │
├───────┼───────────────────────────────────────────────────┤
│_      │speed down                                         │
├───────┼───────────────────────────────────────────────────┤
│q      │quit                                               │
├───────┼───────────────────────────────────────────────────┤
│0      │set rating of currently playing track to 🌑        │
├───────┼───────────────────────────────────────────────────┤
│1      │set rating of currently playing track to 🌕        │
├───────┼───────────────────────────────────────────────────┤
│2      │set rating of currently playing track to 🌕🌕      │
├───────┼───────────────────────────────────────────────────┤
│3      │set rating of currently playing track to 🌕🌕🌕    │
├───────┼───────────────────────────────────────────────────┤
│4      │set rating of currently playing track to 🌕🌕🌕🌕  │
├───────┼───────────────────────────────────────────────────┤
│5      │set rating of currently playing track to 🌕🌕🌕🌕🌕│
├───────┼───────────────────────────────────────────────────┤

Configuration

grump will load a ~/.grump.yaml file if present.

# log level. options: trace, debug, info, warn, error
log_level: info

# if true, write application logs to a file
log_to_file: false

# write logs to this file, if enabled
log_file: grump.log

Development

Building

# build for linux (linux host)
./scripts/build-linux.sh

# build for linux (non-linux host)
docker-compose run build-linux

# build for darwin (darwin host)
./scripts/build-darwin.sh

Releasing

VERSION=0.0.0
git tag $VERSION
git push origin $VERSION
goreleaser release --rm-dist
Issues
  • go install error

    go install error "OpenAL is deprecated"

    Hello, @dhulihan

    Thank you for your awesome work.

    I come across problem when trying to go get it.

    OS: Mac OS X 10.15.5

    go version go1.14.3 darwin/amd64

    command: $ go get github.com/dhulihan/grump

    output:

    go: downloading github.com/dhulihan/grump v0.0.0-20200522233023-30f56ab8718c
    go: github.com/dhulihan/grump upgrade => v0.0.0-20200522233023-30f56ab8718c
    go: downloading github.com/sirupsen/logrus v1.5.0
    go: downloading github.com/gdamore/tcell v1.3.0
    go: downloading github.com/rivo/tview v0.0.0-20200404204604-ca37f83cb2e7
    go: downloading github.com/dhowden/tag v0.0.0-20191122115059-7e5c04feccd8
    go: downloading github.com/faiface/beep v1.0.2
    go: downloading github.com/konsorten/go-windows-terminal-sequences v1.0.1
    go: downloading github.com/lucasb-eyer/go-colorful v1.0.3
    go: downloading github.com/gdamore/encoding v1.0.0
    go: downloading golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4
    go: downloading github.com/rivo/uniseg v0.1.0
    go: downloading github.com/mattn/go-runewidth v0.0.8
    go: downloading github.com/hajimehoshi/go-mp3 v0.1.1
    go: downloading github.com/mewkiz/flac v1.0.5
    go: downloading github.com/hajimehoshi/oto v0.3.1
    go: downloading github.com/jfreymuth/oggvorbis v1.0.0
    go: downloading github.com/gopherjs/gopherwasm v1.0.0
    go: downloading golang.org/x/mobile v0.0.0-20180806140643-507816974b79
    go: downloading github.com/jfreymuth/vorbis v1.0.0
    go: downloading github.com/gopherjs/gopherjs v0.0.0-20180825215210-0210a2f0f73c
    go: downloading golang.org/x/exp v0.0.0-20180710024300-14dda7b62fcd
    go: downloading golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81
    # github.com/hajimehoshi/oto
    ../go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:35:22: warning: 'alcOpenDevice' is deprecated: first deprecated in macOS 10.15 - OpenAL is de
    precated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:209:38: note: 'alcOpenDevice' has been explicitly
     marked deprecated here
    ../go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:39:11: warning: 'alcCloseDevice' is deprecated: first deprecated in macOS 10.15 - OpenAL is d
    eprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:211:38: note: 'alcCloseDevice' has been explicitl
    y marked deprecated here
    ../go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:43:22: warning: 'alcCreateContext' is deprecated: first deprecated in macOS 10.15 - OpenAL is
     deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:191:38: note: 'alcCreateContext' has been explici
    tly marked deprecated here
    ../go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:47:11: warning: 'alcGetError' is deprecated: first deprecated in macOS 10.15 - OpenAL is depr
    ecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:218:38: note: 'alcGetError' has been explicitly m
    arked deprecated here
    ../go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:51:4: warning: 'alcMakeContextCurrent' is deprecated: first deprecated in macOS 10.15 - OpenA
    L is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:193:38: note: 'alcMakeContextCurrent' has been ex
    plicitly marked deprecated here
    ../go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:55:4: warning: 'alcDestroyContext' is deprecated: first deprecated in macOS 10.15 - OpenAL is
     deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:199:38: note: 'alcDestroyContext' has been explic
    itly marked deprecated here
    cgo-gcc-prolog:152:2: warning: 'alBufferData' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-de
    clarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:601:25: note: 'alBufferData' has been explicitly m
    arked deprecated here
    cgo-gcc-prolog:166:2: warning: 'alDeleteBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated
    -declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:595:25: note: 'alDeleteBuffers' has been explicitl
    y marked deprecated here
    cgo-gcc-prolog:180:2: warning: 'alDeleteSources' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated
    -declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:501:25: note: 'alDeleteSources' has been explicitl
    y marked deprecated here
    cgo-gcc-prolog:194:2: warning: 'alGenBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-de
    clarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:592:25: note: 'alGenBuffers' has been explicitly m
    arked deprecated here
    cgo-gcc-prolog:208:2: warning: 'alGenSources' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-de
    clarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:498:25: note: 'alGenSources' has been explicitly m
    arked deprecated here
    cgo-gcc-prolog:222:2: warning: 'alGetSourcei' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:530:25: note: 'alGetSourcei' has been explicitly marked deprecated here
    cgo-gcc-prolog:238:35: warning: 'alGetString' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:382:34: note: 'alGetString' has been explicitly marked deprecated here
    cgo-gcc-prolog:254:2: warning: 'alSourcePlay' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:558:25: note: 'alSourcePlay' has been explicitly marked deprecated here
    cgo-gcc-prolog:268:2: warning: 'alSourceQueueBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:572:25: note: 'alSourceQueueBuffers' has been explicitly marked deprecated here
    cgo-gcc-prolog:281:2: warning: 'alSourceRewind' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:564:25: note: 'alSourceRewind' has been explicitly marked deprecated here
    cgo-gcc-prolog:294:2: warning: 'alSourceStop' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:561:25: note: 'alSourceStop' has been explicitly marked deprecated here
    cgo-gcc-prolog:308:2: warning: 'alSourceUnqueueBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:574:25: note: 'alSourceUnqueueBuffers' has been explicitly marked deprecated here
    
    opened by jasonzhouu 5
  • go get failure

    go get failure

    Hi,

    I just tried to Go get grump, but ran into the following error. Just to let you know.

    $ go get -v github.com/dhulihan/grump
    go: downloading github.com/dhulihan/grump v0.0.0-20201015025354-2413accc6e5c
    get "golang.org/x/sys": found meta tag vcs.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at //golang.org/x/sys?go-get=1
    go get: github.com/dhulihan/[email protected] updating to
    	github.com/dhulihan/[email protected] requires
    	github.com/dhulihan/id3v[email protected]: invalid version: unknown revision 58c0f4d7150f
    

    Cheers, Robin

    Edit: oh, and just as a note, seek support for FLAC is soon to be added in Beep. https://github.com/faiface/beep/pull/111

    opened by mewmew 2
  • fatal error when playing free bitrate format mp3

    fatal error when playing free bitrate format mp3

    Currently grump crashes when attempting to play a free bitrate mp3

    time="2022-03-26T00:43:15-06:00" level=fatal msg="could not play file" error="mp3: mp3: free bitrate format is not supported. Header word is 0xfffe003b at position 8084177"
    
    opened by dhulihan 0
Releases(0.0.5)
Owner
Dave Hulihan
🍔 🍟 🍦
Dave Hulihan
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

Goulin 237 Apr 20, 2022
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

Raziman Mahathir 70 May 5, 2022
Package flac provides access to FLAC (Free Lossless Audio Codec) streams.

flac This package provides access to FLAC (Free Lossless Audio Codec) streams. Documentation Documentation provided by GoDoc. flac: provides access to

null 208 May 14, 2022
GAAD (Go Advanced Audio Decoder)

GAAD (Go Advanced Audio Decoder) Package currently provides AAC parsing capabilities. This package performs a full parse of AAC-LC and HE-AACv1 bitstr

null 98 May 7, 2022
Go tools for audio processing & creation ?

GoAudio ? GoAudio is an audio processing library, currently supporting WAVE files, although some tools such as the synth and breakpoints are encoding

Dylan Meeus 221 May 7, 2022
Mini audio library

malgo Go bindings for miniaudio library. Requires cgo but does not require linking to anything on the Windows/macOS and it links only -ldl on Linux/BS

Milan Nikolic 171 May 7, 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"

null 154 Apr 11, 2022
Go bindings for the PortAudio audio I/O library

portaudio This package provides an interface to the PortAudio audio I/O library. See the package documentation for details. To build this package you

Gordon Klaus 503 May 6, 2022
Go package capable of generating waveform images from audio streams. MIT Licensed.

waveform Go package capable of generating waveform images from audio streams. MIT Licensed. This library supports any audio streams which the azul3d/e

Matt Layher 349 Apr 18, 2022
alto is a program built for audio management.

alto, a music organizer alto is a program built for audio management. It's purpose is to provide the user the means to create a path construct to move

null 20 Apr 5, 2022
Terrible Audio Downloader

Terrible Audio Downloader This is just a small go project I did for myself, to manage my audio library to get away from spotify. All it does is downlo

null 0 Oct 30, 2021
Audio visualizer in Go

demo_audio_visualizer Simple audio visualizer in Go Used libraries: raylib-go go-mp3 oto go-dsp To disable the additional console window on Windows OS

Miretz 1 Mar 8, 2022
Unlock Music Project - CLI Edition

Unlock Music Project - CLI Edition Original: Web Edition

Unlock Music 539 May 15, 2022
Simple cli utility to show bitrate/samples of flac files in a directory

flac-specs Simple cli utility to show bitrate/samples of flac files in a directory I needed a quick little utility that would look at the flac files i

Kevin Foss 0 Dec 14, 2021
Local-audio - Web walking audio tour platform proof-of-concept

Goal: Proof of concept for a Web Audio walk platform Data retention dynamdo db "time to live" expires in 1 day from creation of record set in add.go s

Kai Hendry 3 Jan 9, 2022
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

Goulin 237 Apr 20, 2022
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

Raziman Mahathir 70 May 5, 2022
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

Adrian-George Bostan 301 May 17, 2022
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

Adrian-George Bostan 299 May 12, 2022
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 album

Zoe 40 May 10, 2022
goloz is a multi-player reimplementation of the link to the past game.

goloz is a free and open source online multiplayer game.

Travis Cline 15 Feb 14, 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.

HashiCorp 157 May 9, 2022
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

PotatoMaster101 0 Dec 3, 2021
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

Laz 1 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

Cem Asma 1 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

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

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

◤◢◤◢◤◢◤◢ 5 May 4, 2022
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

Ab 0 Feb 12, 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 notif

null 0 Feb 17, 2022