MCPcopy Index your code
hub / github.com/dhulihan/grump

github.com/dhulihan/grump @0.0.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.0.8 ↗ · + Follow
160 symbols 352 edges 22 files 84 documented · 52%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

Extension points exported contracts — how you extend this code

TrackHandler (Interface)
TrackHandler is responsible for performing track type-specific operations (eg: saving an MP3, loading a FLAC file, etc.) [3 …
library/audio_shelf.go
AudioPlayer (Interface)
AudioPlayer is an interface for playing audio tracks. [2 implementers]
player/audio.go
AudioShelf (Interface)
AudioShelf is an abstract collection of audio. A shelf has one source type (local, internet, spotify account, etc.). For [2 …
library/audio_shelf.go
AudioController (Interface)
AudioController will control playing audio [2 implementers]
player/audio.go

Core symbols most depended-on inside this repo

SetScore
called by 11
ui/tracks.go
Paused
called by 5
player/audio.go
track
called by 5
ui/tracks.go
pauseToggle
called by 5
ui/tracks.go
setTrackRowStyle
called by 5
ui/tracks.go
Score
called by 4
ui/score.go
inputField
called by 4
ui/input.go
Stop
called by 3
player/audio.go

Shape

Method 99
Function 34
Struct 22
Interface 4
TypeAlias 1

Languages

Go100%

Modules by API surface

ui/tracks.go30 symbols
library/local_audio.go20 symbols
player/beep.go17 symbols
player/mock.go14 symbols
player/audio.go14 symbols
library/audio_shelf.go9 symbols
ui/ui.go7 symbols
ui/input.go7 symbols
library/mock.go7 symbols
ui/tracks_test.go6 symbols
ui/help.go6 symbols
internal/config/config.go6 symbols

For agents

$ claude mcp add grump \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page