Giter Site home page Giter Site logo

millenium-player's Introduction

Millenium Player build

A free and open, lean, highly cross-platform, music player.

Screenshot of Millenium Player

Millenium Player is very new, unstable, alpha software. It currently works on Linux, Windows, and MacOS. iOS and Android support are desired, but not yet in progress.

Guiding Principles

Millenium Player strives to:

  • Run on as many platforms as practical: Use the same music playing software everywhere.
  • Be lean and mean: The software must be small and portable (installers optional). It should also be as efficient as possible to reduce power use.
  • Support common audio formats: Obscure formats might be supported, but this player does not strive to play everything.
  • Be easy to build and contribute to: The player should have easy to follow code and an easy to setup and use build system to encourage contributions. As much as possible, it should strive to use a single programming language throughout.

In the future, Millenium Player will have music library management features. When this is the case, Millenium Player will not modify any of the files in the music library without requesting permission from the user.

Building

Prerequisites

You will need to install the following:

  • The Rust compiler
  • Trunk: You can use cargo install trunk once Rust is installed. Alternatively, on MacOS, it is available in Homebrew as trunk.
  • Just: You can use cargo install just to install it, or follow their install instructions.

Linux Prerequisites

A number of development libraries are required to compile on Linux:

  • GCC
  • The ALSA library
  • GTK 3
  • WebKit2GTK 4.1

On Debian or Ubuntu systems, these can be installed with:

sudo apt-get install build-essential libasound2-dev libgtk-3-dev libwebkit2gtk-4.1-dev

On Fedora, these can be installed with:

sudo dnf install gcc gtk3-devel webkit2gtk4.1-devel alsa-lib-devel

Know how to install these on other distributions? Please open a pull request to update this README!

Windows Prerequisites

The Rust compiler will require either Microsoft Visual Studio or MinGW. The setup process should have instructions on how to acquire these.

MacOS Prerequisites

Xcode, or the Xcode command-line tools, are required in order to provide necessary system libraries.

Building

Once all the prerequisites are installed, building is as simple as running:

just build

To get a release build, run:

just release

The resulting binary will be in target/debug for just build, and in target/release for just release.

If you want to quickly see the player in action, you can run:

just run-hydrate

This will start up the player playing test-data/hydrate/hydrate.mp3.

Have a look at the justfile for more build targets.

Discussion

There is a Discord server for discussing Millenium Player. Ask questions, report issues, and talk about development and contributions there.

Contributing

Contributions are welcome, and thank you for your interest in contributing! See the contributing guide for information on how to contribute.

License

The Millenium Player source code is licensed under the GPL-3.0, and a copy of the license is availabe in the COPYING file.

Several assets in the repository are under different licenses, and when this is the case, there is a LICENCE, COPYING, or ATTRIBUTION file present in the directory of the asset, and potentially a README explaining where the asset originated from. Assets that do not have an accompanying LICENSE, COPYING, or ATTRIBUTION file alongside them are licensed as GPL-3.0.

millenium-player's People

Contributors

jdisanti avatar

Stargazers

 avatar

Watchers

 avatar

millenium-player's Issues

Simple mode

Implement the simple mode player:
Simple Mode

  • Set up CI
  • Establish core and desktop crates
  • Arg parsing
  • UI / Functionality
    • Display file information
    • Display current time / total time
    • Display waveform
    • Seek slider
    • Play/pause
    • Prev/next
    • Volume slider
    • Menu to open different files/playlists
    • Playlist viewer
    • Save/load playlist
    • Drag file from OS into player

Evaluate resamplers

The current implementation is using Rubato's SincFixedIn asynchronous resampler with linear interpolation. There are a few other options, such as FftFixedIn, and FastFixedIn. The differences between them seem to be the algorithm, and whether or not you can change the frequency ratio after creating the resampler (which is a feature that isn't needed here).

I'm not sure if SincFixedIn is the best choice for this use case or not. Criteria to scrutinize are efficiency and output quality.

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.