Skip to content

jooapa/jammer

Repository files navigation

Jammer — light-weight TUI music player

banner

Introduction

Tired of opening up a browser or app to play music, and even then you can't play local files or songs from different sites?

Jammer is a simple CLI music player that supports playing songs from your local files, Youtube and Soundcloud.

Compatible with Windows, Linux.

Jammer shines its best when using it as a playlist. That's why I created it, for the playlist feature across different platforms

  • The player doesn't stream the songs, but downloads them to local storage.
  • The Jammer folder is located in the user's home directory and contains the downloaded songs, playlists, settings, keybinds, locales and effects modification.
  • Jammer uses Bass for playing the songs and ManagedBass for being able to use it in .NET, SoundCloudExplode, YoutubeExplode for downloading the songs and Spectre.Console for the UI.

Install/Update

Install

Github latest Release Linux version of Jammer requires fuse2. Ubuntu 22.02 or newer install apt install libfuse2.

Update existing

jammer update

Usage

jammer
jammer [song] ... [folder]
jammer https://soundcloud.com/username/track-name
jammer https://soundcloud.com/username/sets/playlist-name
jammer https://youtube.com/watch?v=video-id
jammer https://youtube.com/playlist?list=playlist-id
jammer https://raw.githubusercontent.com/jooapa/jammer/main/npc_music/616845.mp3
jammer https://raw.githubusercontent.com/jooapa/jammer/main/example/terraria.jammer

jammer --start        opens jammer folder
jammer --update       checks for updates and installs
jammer --help -h      show help
jammer -d             debug mode
jammer --version      show version

when using Soundcloud or Youtube links dont forget to use https:// at the start.

jammer -p, --play <name>                  play playlist
jammer -c, --create <name>                create playlist
jammer -d, --delete <name>                delete playlist
jammer -a, --add <name> <song> ...        add song to playlist
jammer -r, --remove <name> <song> ...     remove song from playlist
jammer -s, --show <name> 
jammer -l, --list                         list all playlists
jammer -f, --flush                        flushes all the songs in songs folder
jammer -sp, --set-path <path>, <default>  set path for songs folder

Example usage

jammer "path/to/song.mp3" "path/to/folder" C:\Users\user\jammer\playlists\playlist.jammer
jammer https://soundcloud.com/angry-birds-2009-2014/haunted-hogs https://soundcloud.com/angrysausage/sets/undertale-toby-fox
jammer https://www.youtube.com/watch?v=4zjFDTIROhQ

Example of making a playlist in cli

jammer -c gd
jammer -a gd https://www.youtube.com/playlist?list=PLnaJlq-zKc0WUXhwhSowwJdpe1fZumJzd
jammer -p gd

you can do same opening the jammer and pressing saving as by default keybinds shift + alt + s and after that shift + a to add the playlist by input

You can also use -d flag that will add logs to current folder.


Supported formats

Jammer supports the following audio formats: .mp3, .ogg, .wav, .mp2, .mp1, .aiff, .m2a, .mpa, .m1a, .mpg, .mpeg, .aif, .mp3pro, .bwf, .mus, .mod, .mo3, .s3m, .xm, .it, .mtm, .umx, .mdz, .s3z, .itz, .xmz, .aac, .adts, .mp4, .m4a, .m4b.

  • JAMMER Jammer playlist
  • FOLDER Folder/Directory (support playing all audio files within a folder)
  • YOUTUBE Youtube video/playlist
  • SOUNDCLOUD Soundcloud song/playlist

Effects

  • Reverb
  • Echo
  • Flanger
  • Chorus
  • Distortion
  • Compressor
  • Gargle
  • Parametric Equalizer

Can be changed in the Effects.ini file in the Jammer folder.

Default Player Controls

Key Action
H Show/hide help
C Show/hide settings
F Show/hide playlist view
Shift + E Edit keybindings
Shift + L Change language
Space Play/pause
Q Quit
Forward
Backward
Volume up
Volume down
M Mute/unmute
L Toggle loop
S Toggle shuffle
R Play in random song
N Next song in playlist
P Previous song in playlist
Delete Delete current song from playlist
F2 Show playlist options
Tab Show CMD help screen
0 Goto start of the song
9 Goto end of the song

Default Playlist Controls

Key Action
Shift + A Add song to playlist
Shift + D Show songs in other playlist
Shift + F List all playlists
Shift + O Play other playlist
Shift + S Save playlist
Shift + Alt + S Save as
Alt + S Shuffle playlist
Shift + P Play song(s)
Shift + B Redownload current song

Language support

Currently supported languages:

  • English

  • Finnish

Create new translation by copying already existing .ini file from /locales and translating it.

Build / Run yourself

Download the BASS and BASS_AAC libraries from the un4seen website or the libaries are included in the libs folder.

On Linux, you need to add the libraries to the $LD_LIBRARY_PATH.

export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH

On Windows, you need to add the libraries to the executable folder.

Run

CLI

dotnet run --project Jammer.CLI -p:DefineConstants="CLI_UI" -- [args]

AVALONIA

dotnet run --project Jammer.Avalonia -p:DefineConstants="AVALONIA_UI" -- [args]

Build

Windows

_CLI
dotnet publish -r win10-x64 -c Release /p:PublishSingleFile=true -p:DefineConstants="CLI_UI" --self-contained
_AVALONIA
dotnet publish -r win10-x64 -c Release /p:PublishSingleFile=true -p:DefineConstants="AVALONIA_UI" --self-contained
Linux

Add BASS and BASS_AAC libraries to the executable folder and to $LD_LIBRARY_PATH.

dotnet publish -r linux-x64 -c Release /p:PublishSingleFile=true -p:UseForms=false -p:DefineConstants="CLI_UI" --self-contained
dotnet publish -r linux-x64 -c Release /p:PublishSingleFile=true -p:UseForms=true -p:DefineConstants="AVALONIA_UI"
Linux AppImage release

AppImage requires fuse. To install fuse

sudo apt install libfuse2

To install appimagetool

wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod 700 appimagetool-x86_64.AppImage

To create AppImage run build.sh

Build script for NSIS installer

you can also use change_version.py to change the version of the app.

python change_version.py [version]

Todo bug fixes

  • When playing song, and opening a new playlist, the song doesn't change
  • Pressing 0, doesn't do anything
  • Download bar
  • Fix playlist cmd
  • Fix time bar not going to new line when 0:-01

Incoming Features

  • Add more audio formats
  • Better f mode
  • pg up/down you can scroll the playlist and modify the selected song