/hihat

A free & minimalist offline music player for OSX audiophiles :: Based on iTunes circa 2002

Primary LanguageTypeScriptMIT LicenseMIT


Logo

hihat

A minimalist offline music player for audiophiles on OSX

Report Bug · Request Feature · Downloads

Badge

Table of Contents
  1. About The Project
  2. Usage
  3. Feature Roadmap
  4. Contributing
  5. License
  6. Contact

About The Project

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 desktop preview

(back to top)

Core Features

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

(back to top)

Supported Audio and Metadata Formats

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:

Don't know where to download files of your favorite albums and tracks? I suggest:

(back to top)

Usage

Initializing Your Library

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.

Adding New 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.

Screenshot_2024-08-05_at_7_32_23 PM

Rescanning Your Library

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.

Screenshot 2024-08-05 at 8 51 45 PM

(back to top)

Built With

This project was built with the following technologies:

  • Electron
  • React
  • Electron React Boilerplate
  • Typescript
  • Google Material UI
  • zustand
  • Tailwind
  • Music Metadata

(back to top)

Feature Roadmap

  • 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).

(back to top)

Contributing

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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Getting Started As A Contributor

Follow the steps below to install the local development environment and serve the development application locally.

Prerequisites

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

Installation

  1. Clone the repo
    git clone https://github.com/johnnyshankman/hihat.git
  2. Install NPM packages
    npm install

Running Local App

  1. Run the app in development with hot reloading
    npm run start

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Johnny aka White Lights - @iamwhitelights

Project Link: https://github.com/johnnyshankman/hihat

(back to top)