Skip to content

A minimalist offline music player for audiophiles on OSX :: Built responsively on Typescript, Electron, React, and Material UI :: Based on 2000s-era iTunes & Windows Media Player

License

Notifications You must be signed in to change notification settings

johnnyshankman/hihat

Repository files navigation


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

Screenshot 2024-05-05 at 10 14 04 PM

(back to top)

Core Features

hihat has the following core features:

  • 100% offline
  • always dark mode
  • responsive design
  • audiophile fidelity (supports all file types)
  • mix 'n match file types (mp3, m4a, flac, etc)
  • limitless library size
  • compact UX
  • song shuffle
  • song repeat
  • Media Keys support
  • Bluetooth headphone play/pause/skip support
  • OSX menu bar integration
  • downloadable album art
  • quick search
  • fast import
  • sort by song, artist, album, date added or playcount
  • iTunes-like sorting for artist [artist -> album -> track num]
  • nested folder/library support (ie. legacy iTunes structure)
  • Spotify and Apple Music share links for every song

(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

Setting Your Library

Hit the "Import Library" icon in the top right (or in the hihat menu).

Then select your library's directory and wait for the import process to finish. This process takes about 1min per 10,000 songs imported.

Screenshot 2023-12-17 at 10 56 38 PM

Adding More Songs

Hit the "Add Songs" icon in the top right (or in the hihat menu).

Screenshot 2024-05-05 at 1 18 04 AM

Refreshing Your Library

If you make manual changes to your library's directory in Finder, you will want to reimport your library. Simply hit import library under the hihat menu and reselec your existing library directory.

Screenshot 2024-05-05 at 1 17 42 AM

(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
  • Playlists (TBD if I'll ever do this, a ton of work is required)
  • Ability to "hide" songs you don't want to see, without deleting their file
  • Edit song file metadata
  • Show some fun stats about your library somewhere, like gb and # of songs
  • Hide and show columns in the viewer
  • iTunes like "browser" for going seeing scrollabe list of artists/albums

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)

About

A minimalist offline music player for audiophiles on OSX :: Built responsively on Typescript, Electron, React, and Material UI :: Based on 2000s-era iTunes & Windows Media Player

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks