GithubHelp home page GithubHelp logo

johnnyshankman / hihat Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 24.27 MB

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: MIT License

TypeScript 91.25% JavaScript 6.51% EJS 0.20% SCSS 2.04%
electron material-ui music-player react typescript zustand tailwindcss

hihat's Introduction


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
  • Ability to "hide" songs you don't want to see, without deleting their file
  • Edit song metadta
  • Show some fun stats about your library somewhere, like gb and # of songs
  • Hide and show columns in the viewer
  • iTunes-1.0-like "browser" for going seeing scrollable list of artists/albums
  • True gapless playback ie preloading queued-file before it plays
  • 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)

hihat's People

Contributors

johnnyshankman avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

hihat's Issues

Better Deduplication

If i add a song and it has identical song, artist, and album to another song, don't add it to the library. I should never see two of the same song in my library even if the original library folder has two of the identical mp3 files, or two that are slightly different but have identical metadata.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.