{"id":15018976,"url":"https://github.com/jooapa/jammer","last_synced_at":"2025-04-06T19:13:27.233Z","repository":{"id":205452076,"uuid":"713595157","full_name":"jooapa/jammer","owner":"jooapa","description":"light-weight TUI music player with Soundcloud \u0026 Youtube built-in. Effects, Themes, Midi Support for Win \u0026 Linux","archived":false,"fork":false,"pushed_at":"2024-10-25T10:40:41.000Z","size":92149,"stargazers_count":84,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-29T22:30:39.496Z","etag":null,"topics":["audio","audio-player","cli","dotnet","linux","midi-player","mp3","mp3-player","multilingual","music","music-player","player","soundcloud","soundcloud-api","soundcloud-downloader","tui","windows","youtube","youtube-dl","youtube-downloader"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jooapa.png","metadata":{"files":{"readme":"README.md","changelog":"change_version.py","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":"https://github.com/jooapa/jammer/releases/latest"}},"created_at":"2023-11-02T20:59:10.000Z","updated_at":"2024-10-25T10:40:44.000Z","dependencies_parsed_at":"2024-03-09T22:34:21.857Z","dependency_job_id":"067fc521-be45-4049-bb97-cd3a6208516a","html_url":"https://github.com/jooapa/jammer","commit_stats":{"total_commits":522,"total_committers":10,"mean_commits":52.2,"dds":0.3448275862068966,"last_synced_commit":"dd44c0ad41e9fffab2ed2a1bee8c6a48126fff2c"},"previous_names":["jooapa/signal-jammer","jooapa/jammer"],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2Fjammer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2Fjammer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2Fjammer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jooapa%2Fjammer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jooapa","download_url":"https://codeload.github.com/jooapa/jammer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247535520,"owners_count":20954576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-player","cli","dotnet","linux","midi-player","mp3","mp3-player","multilingual","music","music-player","player","soundcloud","soundcloud-api","soundcloud-downloader","tui","windows","youtube","youtube-dl","youtube-downloader"],"created_at":"2024-09-24T19:52:41.807Z","updated_at":"2025-04-06T19:13:27.212Z","avatar_url":"https://github.com/jooapa.png","language":"C#","funding_links":["https://github.com/jooapa/jammer/releases/latest"],"categories":["\u003ca name=\"music\"\u003e\u003c/a\u003eSound and music"],"sub_categories":[],"readme":"# \u003cimg src=\"https://raw.githubusercontent.com/jooapa/jammer/main/icons/trans_icon512x512.png\" width=\"35px\"\u003e Jammer — light-weight CLI music player\n\n![banner](.github/img/banner3.png)\n\n## Introduction\n\nTired of opening up a browser or app to play music, and even then you can't\nplay local files or songs from different sites?\n\nJammer is a simple CLI music player that supports playing songs from your **local files**, **Youtube** and **Soundcloud**.\n\nCompatible with *Windows*, *Linux*, *(most likely works on MacOS too, but i have no way to compile to mac)*\n\n***Jammer shines its best when using it as a playlist. That's why I created it,\nfor the playlist feature across different platforms***\n\n- The player doesn't stream the songs, but downloads them to local storage.\n- The Jammer folder is located in the user's home directory and contains the\n  downloaded songs, playlists, settings, keybinds, locales and effects modification.\n- Jammer uses [Bass](https://www.un4seen.com/bass.html) for playing the songs and [ManagedBass](https://github.com/ManagedBass/ManagedBass) for being able to use it in .NET, [SoundCloudExplode](https://github.com/jerry08/SoundCloudExplode), [YoutubeExplode](https://github.com/Tyrrrz/YoutubeExplode) for downloading the songs and [Spectre.Console](https://github.com/spectreconsole/spectre.console) for the UI.\n\n## Install/Update\n\n### Install\n\nGithub latest [Release](https://github.com/jooapa/signal-Jammer/releases/latest)\nLinux version of Jammer requires fuse2. Ubuntu 22.02 or newer install `apt install libfuse2 ffmpeg`\n\n### Update existing\n\n```bash\njammer --update\n```\n\n## Usage\n\n*when using **Soundcloud** or **Youtube** **links** do not forget to use **`https://`** at the start.*\n\n```bash\n# examples of how to use\njammer\njammer [song] ... [folder]\njammer https://soundcloud.com/username/track-name\njammer https://soundcloud.com/username/sets/playlist-name\njammer https://youtube.com/watch?v=video-id\njammer https://youtube.com/playlist?list=playlist-id\njammer https://raw.githubusercontent.com/jooapa/jammer/main/npc_music/616845.mp3\njammer https://raw.githubusercontent.com/jooapa/jammer/main/example/terraria.jammer\njammer \"path/to/song.mp3\"\n\njammer     --start        # opens jammer folder\njammer     --update       # checks for updates and installs\njammer -h, --help         # show help\njammer -D                 # debug mode\njammer -v, --version      # show version\n\n## these commands are for the playlists in the \u003cjammer/playlists\u003e folder\njammer -p, --play       \u003cname\u003e                # play playlist\njammer -c, --create     \u003cname\u003e                # create playlist\njammer -d, --delete     \u003cname\u003e                # delete playlist\njammer -a, --add        \u003cname\u003e \u003csong\u003e ...     # add song to playlist\njammer -r, --remove     \u003cname\u003e \u003csong\u003e ...     # remove song from playlist\njammer -s, --show       \u003cname\u003e                # show songs in playlist\njammer -l, --list                             # list all playlists\n\njammer -f, --flush                            # deletes all the songs in songs folder\njammer -sp, --set-path  \u003cpath\u003e, \u003cdefault\u003e     # set path for songs folder\njammer -gp, --get-path                        # get the path to the \u003cjammer/songs\u003e folder\njammer -hm, --home                            # play all songs from the \u003cjammer/songs\u003e folder\njammer -so, --songs                           # open \u003cjammer/songs\u003e folder\n```\n\n#### Example of making a playlist in cli\n\n```bash\njammer -c new_playlist\njammer -a new_playlist \"https://www.youtube.com/playlist?list=PLnaJlq-zKc0WUXhwhSowwJdpe1fZumJzd\"\njammer -p new_playlist\n```\n\n### Supported formats\n\nJammer **supports** the following audio formats: ***.mp3***, ***.ogg***, ***.wav***, ***.mp2***, ***.mp1***, ***.aiff***, ***.aif***, ***.mod***, ***.mo3***, ***.s3m***, ***.xm***, ***.it***, ***.aac***, ***.adts***, ***.mp4***, ***.m4a***, ***.m4b***, ***.mid***, ***.midi***, ***.rmi***, ***.kar***\n\n- **JAMMER** Jammer playlist\n- **FOLDER** Folder/Directory (support playing all audio files within a folder)\n- **YOUTUBE** Youtube video/playlist\n- **SOUNDCLOUD** Soundcloud song/playlist\n\n### MIDI support\n\nJammer supports playing ***.mid***, ***.midi***, ***.rmi***, ***.kar*** files. To play, you need to have a SoundFont file ***.sf2***, ***.sf3***, ***.sfz***, ***sf2pack***\n\nHere is one sf2 file you can use [ChoriumRevA.SF2](https://www.un4seen.com/download.php?x/ChoriumRevA), *This is BASS's recommended SoundFont file.*\n\nTo change the SoundFont file, press `Shift + G` (default keybind).\n\n`Link to a soundFont by path`: This will link the SoundFont file by path. **This will not copy the SoundFont file to the \u003cjammer/soundfonts\u003e.**\n\n`Import soundfont by path`: **This will copy the SoundFont file to the `\u003cjammer/soundfonts\u003e`.**\n\nWill show all the SoundFont files in the `\u003cjammer/soundfonts\u003e` folder.\n\n### Themes\n\nYou can create your own theme by pressing `Shift + T` (default keybind)\n\nSelect 'Create a New Theme' and write the theme's name. Go to `\u003cjammer/themes\u003e`, you should see `name.json`. It will contain all the information needed for creating a theme.\n\n### Visualizer\n\nYou can change the visualizer style in custom Themes.\nTo change the visualizer settings and looks, you can change the `Visualizer` section in the theme file.\n\n### Effects\n\n- Reverb\n- Echo\n- Flanger\n- Chorus\n- Distortion\n- Compressor\n- Gargle\n- Parametric Equalizer\n\nThese can be changed in the Effects.ini file in the jammer folder.\n\n### Jammer Folder Location\n\n- **Windows**: `C:\\Users\\username\\jammer`\n- **Linux**: `~/jammer`\n\nThis can be changed by an environment variable `JAMMER_CONFIG_PATH`\n\n### M3U and M3U8 Support\n\nJammer supports m3u and m3u8 playlists. You can play them but with pretty limited functionality.\n\nm3u files can be played just by opening them with Jammer. But cannot be opened with the `--play`, `-p` command from the `\u003cjammer/playlists\u003e` folder. You can `Save as` (default keybind `Shift + Alt + S`) the m3u file, Thus creating a JAMMER playlist to `\u003cjammer/playlists\u003e` folder.\n\nStarting the m3u or m3u8 file with `#EXTM3U` and example of the m3u of all the features that are supported.\n\n```m3u\n#EXTM3U\n#EXT-X-VERSION:3\n\n#EXTINF:0,Lady Gaga - Telephone ft. Beyoncé\nhttps://www.youtube.com/watch?v=Zwnvgz3ey78\n#EXTINF:0,Epic Music \n/home/user/epic music/epic_music.mp3\n\n/tmp/secret_klinoff.mp3\n```\n\n### Default Player Controls\n\n| Key | Action |\n|  --------  |  -------  |\n| `H` | Show/hide help |\n| `C` | Show/hide settings |\n| `F` | Show/hide playlist view |\n| `Shift + E` | Edit keybindings|\n| `Shift + L` | Change language|\n| `Space` | Play/pause |\n| `Q` | Quit |\n| `→` | Forward |\n| `←` | Backward |\n| `↑` | Volume up |\n| `↓` | Volume down |\n| `M` | Mute/unmute |\n| `L` | Toggle loop |\n| `S` | Toggle shuffle |\n| `R` | Play in random song |\n| `N` | Next song in playlist |\n| `P` | Previous song in playlist |\n| `Delete` | Delete current song from playlist |\n| `Shift + Delete` | Delete current song from playlist and PC |\n| `F3` | Search song in playlist |\n| `Tab` | Show CMD help screen|\n| `0` | Goto start of the song|\n| `9` | Goto end of the song|\n| `Shift + T` | Change Theme|\n| `Shift + G`| Change SoundFont |\n\n### Default Playlist Controls\n\n| Key | Action |\n| ------ | ----------- |\n| `Shift + A`| Add song to playlist |\n| `Shift + D`| Show songs in other playlist |\n| `Shift + F`| List all playlists |\n| `Shift + O`| Play other playlist |\n| `Shift + S`| Save playlist |\n| `Shift + Alt + S`| Save as |\n| `Alt + S`| Shuffle playlist |\n| `Shift + P`| Play song(s) |\n| `Shift + B`| Redownload current song |\n| `Shift + Y`| Search YouTube for songs |\n\n## Language support\n\nTranslations may not be up-to-date\n\nCurrently supported languages:\n\n- English\n\n- Finnish\n\n- Portuguese :: [Natanaelfelixx](https://github.com/jooapa/jammer/pull/93)\n\nCreate new translation by copying already existing .ini file from /locales and translating it.\n\n## Soundcloud Client ID\n\nsoundcloud every now and then changes the client id, which is not cool, so this allows change allows the user to change it :)\nYou can change the client id by going to the settings and changing the client id.\n\n### how to get the id\n\n- open up the [soundcloud.com](https://soundcloud.com/discover)\n- open the inspect element -\u003e Network tab\n- start playing some random song\n- you start to see some entries in the network tab. you should see some thing like `me?client_id=wDSKS1Bp8WmdlRPkZ7NQXGs67PMXl2Nd`\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#jooapa/jammer\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=jooapa/jammer\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=jooapa/jammer\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=jooapa/jammer\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n---\n\n# Developing\n\n## Build / Run yourself\n\nDownload the **BASS** and **BASS_AAC** libraries from the [un4seen](http://www.un4seen.com/bass.html) website or the libaries are included in the libs folder.\n\nOn **Linux**, you need to add the libraries to the $LD_LIBRARY_PATH.\n\n```bash\nexport LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH\n```\n\nOn **Windows**, you need to add the libraries to the executable folder.\n\n### Run\n\n```bash\ndotnet run --project Jammer.CLI -- [args]\n```\n\n### Build\n\n#### Windows\n\n```bash\ndotnet publish -r win10-x64 -c Release /p:PublishSingleFile=true -p:DefineConstants=\"CLI_UI\" --self-contained\n```\n\n##### Linux\n\nAdd **BASS** and **BASS_AAC** libraries to the executable folder and to $LD_LIBRARY_PATH.\n\n```bash\ndotnet publish -r linux-x64 -c Release /p:PublishSingleFile=true -p:UseForms=false -p:DefineConstants=\"CLI_UI\" --self-contained\n```\n\n##### Linux AppImage release\n\nAppImage requires fuse. To install fuse\n\n```bash\nsudo apt install libfuse2\n```\n\nTo install appimagetool\n\n```bash\nwget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage\nchmod 700 appimagetool-x86_64.AppImage\n```\n\nTo create AppImage run `build-appimage.sh`\n\nor if you want to build it from usb\n\n```bash\nsh -c \"$(wget -O- https://raw.githubusercontent.com/jooapa/jammer/main/usb-appimage.sh)\"\n```\n\n##### Build script for NSIS installer\n\n```shell\n.\\Jammer.CLI\\buildcli.bat\n```\n\nyou can use `update.py` to change the version of the app.\n\n```bash\n                 |-Major\n                 ||--Minor\n                 |||---Patch\npython update.py 101\n```\n\n## Known Issues\n\nPerfect app, no issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjooapa%2Fjammer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjooapa%2Fjammer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjooapa%2Fjammer/lists"}