A minimalist offline music player for audiophiles on OSX
Report Bug
·
Request Feature
·
Downloads
Table of Contents
hihat is the best way play your music library offline on OSX, similar to iTunes or Windows Media Player circa 2002.
hihat has no socials, no lag, and no ads.
a music player without the distractions.
hihat core features:
- 100% offline
- always dark mode
- audiophile fidelity (supports all file types)
- mix 'n match file types (mp3, m4a, flac, etc)
- limitless library size
- responsive design
- song shuffle
- song repeat
- media key support
- OSX menu bar integration
- downloadable album art
- quick search
- quick import
- intelligent sorting by song, artist, album
- nested folder support for libraries and new imports
- Spotify and Apple Music 1-click search
- Rockbox/Music-Device syncronization
Almost every format under the sun is supported, and they can all be mixed together into the same library seamlessly.
Just to name a few:
- MP3
- MP4
- Ogg
- WebM
- WAV
- FLAC
- Opus
- PCM
- Vorbis
- AAC
If you'd like to see more detailed information, check out:
- The Chromium Project for info on supported audio formats.
- Music Metadata library for supported metadata formats.
Don't know where to download files of your favorite albums and tracks? I suggest:
- tidal-media-downloader (Works with Tidal)
- spotify-downloader (Works with Spotify and Youtube Music)
Upon initial boot of the app you'll see a button that allows you to select your library folder. Click it.
After selecting a directory from you computer, hit confirm and wait for the import process to finish. This process takes about 1m / 10,000 songs.
Click the "import new songs" icon in the top right of hihat (or hihat -> import new songs
from the menu). You can select individual songs, or folders of songs to import. hihat will copy them for their existing directory into your hihat library's folder for safekeeping.
If you make manual changes to the files within your library's folder (using Finder for example) you will want to rescan your library.
Click hihat -> rescan library folder
from the menu. This operation will keep the Playcount and Date Added of every existing song in tact while importing any new songs found in your library's folder.
This project was built with the following technologies:
- Autoplay Next Song
- Virtualized Lists for opitmal rendering
- Cache imported songs from previous session
- Minimalist search/filter solution
- Recursive file finding for itunes-like libraries with nested folders
- Update/import skips pre-existing files
- On reboot, scroll to last played song, queue it up as well
- Shuffle songs
- Repeat song
- Resort by column
- Support keyboard previous/next
- Fix the player UX on thin windows (400px)
- OSX song info in the menu bar tray thing
- Copy album art for sharing
- Download album art for sharing
- Ability to "open in finder" so you can see the song file
- Redo player UX on small screens, it's function over fashion atm
- Ability to insert new songs or albums without updating the whole library
- Click on song info to scroll back to it
- Generative shareable Spotify search links
- Generative shareable Apple Music search links
- Sort by date added
- Playcount tracking and sort by playcount
- Ability to "hide" songs you don't want to see, with or without deleting their file
- Ability to deduplicate identical songs in library easily
- Edit song metadata
- Show some fun stats about your library somewhere, like gb and # of songs
- Hide and show columns in the song list
- iTunes-1.0-like "browser" for going seeing scrollable list of artists/albums
- Playlists (TBD if I'll ever do this, lots of work required)
- Queue songs (TBD if I'll ever do this, lots of work required)
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Follow the steps below to install the local development environment and serve the development application locally.
This is an example of how to list things you need to use the software and how to install them.
- npm
npm install npm@latest -g
- Clone the repo
git clone https://github.com/johnnyshankman/hihat.git
- Install NPM packages
npm install
- Run the app in development with hot reloading
npm run start
Distributed under the MIT License. See LICENSE.txt
for more information.
Johnny aka White Lights - @iamwhitelights
Project Link: https://github.com/johnnyshankman/hihat