Code Monkey home page Code Monkey logo

museeks's Introduction

Museeks

Build Status Github All Releases

A simple, clean and cross-platform music player. (museeks.io)

Note Museeks is on its way to a big rewrite with some major UI and Back-End changes, please help shape the future of the music player in the discussions section! :]

Screenshot

Features

Museeks aims to be a simple and easy to use music player with a clean UI.

You will not find tons of features, as it goal is not to compete with more complete and more famous music players. Here is a little preview though:

  • ๐Ÿ’ป Cross-platform music player (Linux, macOS and Windows)
  • ๐ŸŽง Supported formats: mp3, mp4, m4a/aac, flac, wav, ogg, 3gpp
  • โœจ Clean and polished
  • ๐ŸŒŸ Playlists
  • ๐ŸŽผ Queue management
  • โžฐ Shuffle, loop
  • ๐ŸŒ„ Covers
  • ๐Ÿค“ Dark theme
  • ๐Ÿšค Playback speed control
  • ๐Ÿ˜ด Sleep mode blocker
  • ๐Ÿ”„ .m3u import/export

Want more? Open a new issue or ๐Ÿ‘ an existing one so we can talk about it.

Releases notes

Over here!

Installation

Classic

Binaries can be found on this page.

Build (advanced)

Warning Those instructions, are for the still work-in-progress Tauri version of Museeks. If you wish to see how to build it for Electron (<=0.20), please see the previous version of the README.

Museeks is built upon:

Requirements:

Please consider that master is unstable.

Package binaries (advanced)

  • yarn
  • yarn tauri build

Tauri does not support x-platform binaries, so the command will only generate binaries for your current platform (macOS, Linux or Windows).

Troubleshooting

Museeks is currently in development. This implies some things can break after an update (database schemes changes, config...).

If you encounter freezes or crashes when using the app, you can reset Museeks by following these steps:

  • Go to Settings -> Open Storage Directory
  • Alternatively, go to the Museeks folder directory
    • Windows: %AppData%\Museeks
    • OSX: ~/Library/Application Support/Museeks
    • Linux: ~/.config/museeks/ or $XDG_CONFIG_HOME/Museeks
  • Delete everything, but mainly:
    • main.bonsaidb folder
    • config.toml file
  • Restart Museeks

If you still get problems after that, please open an issue :)

Bug report

If you want to report a bug, first, thanks a lot, that helps us a lot. Please open an issue and mention your OS, your Museeks version, and how to reproduce it. Adding a screen of the console (Menu -> View -> Toggle Developer Tools) is a big help too.

Contribute

  • Fork and clone
  • Master may be unstable, checkout to a tag to have a stable state of the app
  • yarn install --frozen-lockfile && yarn run dev then run in a separate terminal yarn run museeks:debug
  • yarn run dev will launch electron and compile the app. Hot reload will work out of the box.

Please respect a few rules:

  • Before making complex stuff, don't hesitate to open an issue first to discuss about it ;)
  • Understandable code > short code: comment if needed
  • Make sure your build pass

Then open a PR :)

museeks's People

Contributors

anthonychoi avatar briangzimmerman avatar cfollet avatar dipras avatar dkniffin avatar evandandrea avatar fkd13 avatar gilgameshxzero avatar haidang666 avatar igorer88 avatar jvegaf avatar khubo avatar martpie avatar qcasey avatar uklotzde avatar vprigent avatar yurysolovyov avatar zyrouge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

museeks's Issues

Create a Dev mode

When a first version will be released, dev tools should not be shown, we could do a toggle or something, to show the dev tools.when needed.

Split Sass in multiple files

  • Split styles in multiple files (see Webpack behavior with that)
  • Use variables for colors
  • ... bla

and all that stuff. Use SCSS just for nesting is ridiculous.

Make a website

Now we're close from a first pre-release, It's now time do discuss about distribution through a website.

Manage next tracks

In < Playlist / >, create a drag&drop management system to rearrange tracks.

Gapless playback

What

  • Reduce sound interuption between two songs

Currently, when a song is over, the src of the audio tag is changed, but the tag has to preload the file a bit. So there is a micro interruption of a few miliseconds.

  • Crossfading option between song ?

How

Instead of having a single Audio object, need to have an array of 3: [previous, current, next]. Then when playing next or previous, it should be faster, cause tracks will already be loaded + Pop/Shift audio when needed. not working :[

Better overflows

We can't click on overflows to scroll down the page cause it's too thin. Keep a cool design but be able to scroll clicking on the overflow.

Add install README

This project looks great. If you have a chance, do you mind adding installation instructions?

Fix library refresh

Library stop refresh signal is sent while entering in "the last folder" instead of "the last track of the last folder"

Fix positionning

When the window is resized, positioning is going wrong.

  • Queue
  • Random/Shuffle buttons (should be aligned on the left)
  • Track time elapsed (should be aligne on the right)

capture

Re-implement shortcuts

Migrating to es6, mixins could not be used, and shortcuts were ripped out.

  • Space -> play/pause
  • arrows in ArtistsList
  • enter in ArtistsList

Full refactoring

As the features are almost all there, and the code is getting terrible to read, we have to refactor the whole stuff.

Main work

  • Convert es5 to es6, then transpile with babel
  • Leave global Instance states behind and use Flux pattern
  • Upgrade to react 0.14
  • Switch from gulp to webpack
  • Switch from routie.js to react-router
  • Switch from nconf to localStorage
  • Update all packages

Code

  • Code Consistency
  • Comments
  • Clean components

Smaller stuff

  • change the way themes are implemented

Other interesting stuff to considered/discussed:

The branch used for that is full-refactoring.

probably more to come, it's gonna be a heavy work.

Fix shuffle rollback

Someting is getting wrong when we rollback a shuffle. There are duplicates, and other wrong stuff.

  • remove Action call from Store
  • wrong order & duplicates
  • what if search has changed ?

Async or async-like search

Currently, the track search feature is called with an onchange event on the search input. With 100 tracks it's ok, but when you have 3000 of them, the search being synchronous take a huge amount of time and resources.

Search should be async. Something like:

  • start to write in search input
  • if nothing was written for like 400ms, then trigger search
    (best solution imo)

or

  • start searching onchange, but do not display anything
  • if nothing was written for 400ms, then display results

just ideas.

.wav support

Chrome can read them, but I'm not sure that musicmetadata can parse them.

edit: Uncaught Error: Could not find metadata header

Fix the volume value

<input type={'range'} min={'0'} max={'100'} onChange={ this.setVolume } /> is ok.

But I'd like the volume at 100 at start. But when setting the value parameter:
<input type={'range'} min={'0'} max={'100'} value={'100'} onChange={ this.setVolume } />, then, even if the change event is triggered while changing volume, the selector stay at the same place.

I think it is related to Electron and not React, but I'm not sure.

Interesting

Hey man, I'm interested, what language are you going to use ? :)

What kind of player will it be, do you have any source of inspiration ?

๐Ÿ‘

Improve PlayingBar

  • Be able to click and drag to select an exact time of a song
  • Add a tooltip onHover to get the time at the cursor position
  • When player is paused, click on the playing bar does not update the blue bar

Create playlists

It implicates a new view, and contextmenus changes and a kinda heavy work to create reusable component.

  • Routing
  • Playlist view
  • Navigation
  • Create
  • Rename
  • Delete
  • Add tracks to playlist
  • Remove tracks from playlist
  • Dynamically update TracksList on playlist update
  • Rearrange tracks in playlist (to be discussed) later
  • Adapt TracksList to be usable elsewhere
  • Fix tracks load between Library and Playlist (tempfix)
  • Create playlist from TracksList
  • Adapt dark theme
  • Fix search in playlists

Improve library update

  • After adding some folders to the library and then come back to the tracks list view, the whole app is lagging as hell.
  • Resetting the library should AppActions.player.stop() then empty ArtistsList
  • Updating the library does not refresh ArtistsList

Set up a real Babel + Gulp stack

including Babel and scss compilation. (Use Babel only for the jsx compilation, do not rewrite everything in es6, not for the moment)

Symlinks in music directory

It may happen, e.g. using git-annex, that in the music directory are symlinks that point in or out of the music library. It would be nice to be able to ignore symlinks pointing inside|outside the music library. Another option would be to be able to ignore certain directories (the .git in the case of git-annex).

Use es6 + Flux

As the app is getting bigger, the app has to be rewritten with Flux in mind. Otherwise the code will be unreadable. es6 is a good option too.

After that we should be able to launch a first beta or someting.

Notification would not disappear

Only occurs when using ReactCSSTransitionGroup to animate notifications

After triggering some notifications, I get this warning for an unknown reason. When caught, a notification does not disappear.

There must be a problem in alert.js, they react keys seem correct.

Warning: transition(): tried to perform an animation without an animationend or transitionend event after timeout (5000ms). You should either disable this transition in JS or add a CSS animation/transition.

Render tracks as tiles

We're having problem wiith big libraries, TracksList render time is getting longer and longer, >3000 tracks make the render update noticeable with the eye.

We should implement what Atom has done with the editor view: render tracks in group (tiles), and only show the tiles needed when scrolling.

  • Tracks as tiles (absolute + translate3d transformation)
  • Show only needed tiles
  • Use onScroll on .tracks-list-body instead of onWheel
  • Move chunkArray to Store to improve performance even more ? (wontdo, not really needed, it takes 0.15ms)
  • Fix multi-select with maj.

helpers:
http://blog.atom.io/2015/06/24/rendering-improvements.html
http://blog.atom.io/2014/07/02/moving-atom-to-react.html

Remember options when reopening

The app should remember some things when reopening.

  • volume
  • window dimensions
  • window position

notice: localStorage does not work in main.js

0.1 release

App icon is missing.
That's so stupid I didn't even think about that.

Using flexbox

As from now you are using the Bootstrap 3 grid, how about using a pre existing or an own build flexbox based grid ?

Create builds for each platform

Ideally, at each release, 3 apps should be built:

  • .exe (installer xor not)
  • .app
  • .deb

Here are some tools:
https://github.com/maxogden/electron-packager
https://www.npmjs.com/package/electron-builder

And a related issue on Electron electron/electron#673

Here are how the build "should" be. All of this can be done in a script, preferably in JavaScript rather than in bash or something.

TODO

  • Start the script ?
  • Check if the ignore parameter works
  • Remove sources and add compiled files and assets

Create a dark theme

That's important. Many friends told me it would be great.

It shouldn't be done right now as some major changes are on the road.

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.