Giter Club home page Giter Club logo

musicott's Introduction

Build Status codecov maintainability-rating reliability-rating security-rating

loc-metric lines-metric comments-metric new-code-smells bugs vulnerabilities-rating license

Musicott title logo

Musicott is an application that manages and plays music files. Coded in Java 8 with JavaFX. Uses JAudioTagger to read and write the metadata, Json-io for persistence, TestFx for testing, Guice for dependency injection and some components from ControlsFx.

Musicott-video

Features

  • Play mp3, wav and m4a (with ALAC encoding) files
  • Import mp3, wav and flac files
  • Shows waveform of mp3, wav and m4a files
  • Import from Itunes Library xml
  • Scrobble on LastFM

Not yet

  • Advanced search feature
  • Music library statistics
  • Smart playlists

Download

I had some trouble creating the native packages and even the jar file, since now the project is structured in several modules. I will work on it and I will upload the release packages when I'll achieve this. Running as described as described in the following section is the recommended way.

How to build and run

To build you need at least Java 8 update 40 and Maven

  1. Clone Musicott at any directory git clone https://github.com/octaviospain/Musicott.git
  2. Build with maven at Musicott's root folder (where pom.xml is located) with mvn install -Dmaven.test.skip=true
  3. Install this two required jar libraries into the local maven repository executing
mvn install:install-file -Dfile=lib/TarsosTranscoder-1.2.jar -DgroupId=be.tarsos -DartifactId=transcoder -Dversion=1.2 -Dpackaging=jar
mvn install:install-file -Dfile=lib/iTunesUtilities.jar -DgroupId=com.worldsworstsoftware -DartifactId=itunesutilities -Dversion=1.2 -Dpackaging=jar
mvn install:install-file -Dfile=lib/jaudiotagger-2.2.6-SNAPSHOT.jar -DgroupId=net.jthink -DartifactId=jaudiotagger -Dversion=2.2.6-SNAPSHOT -Dpackaging=jar
  1. Run with mvn exec:java -Dexec.mainClass=com.transgressoft.musicott.MusicottApplication

How to contribute

If you want to add a feature or fix a bug in Musicott, you can submit a pull request as follows:

  1. Fork the project
  2. Write the code of the feature with some javadoc and the necessary comments
  3. Please don't auto-format the code already written as it would make more difficult to see what was changed
  4. Add some tests! Doing it in the tests branch is preferable
  5. Commit
  6. Submit a pull request on the develop branch

Manual

Check out the Wiki pages for help about using Musicott.

Changes history

Version 0.10.1

  • Improved Itunes import. Now the application shows a window to let the user selects which playlists to import.
  • Refactored with guice's dependency injection framework.
  • Refactored to use maven multi modules.

Version 0.10

  • Added Artists navigation mode. A list of artists is shown, and clicking one artist shows their albums, with useful information of them.
  • Typing on the search field while on the artists mode filters the artists list by the query.
  • Added cover thumbnail on the bottom right corner of the table that changes when hovering the rows
  • Also when a playlist is shown, the cover of the playlist changes when hovering
  • Drag & drop tracks to tracksLibrary is now possible
  • Drag & drop tracksLibrary into folders is now possible
  • Ability to reorder the playlist queue by drag & drop
  • Improved audio files & iTunes importing
  • Several bug fixes and performance improvements

Version 0.9

  • New dark theme
  • Added a navigation area with playlist and the showing mode
  • Added a information pane at the top of the table when a playlist is shown, with a cover image, the number of tracks and the size of the playlist
  • You can hide/show the navigation pane with CMD + SHIFT + R and the table info pane with CMD + SHIFT + H
  • You can add tracks to a playlist by drag and drop them
  • You can set a new image when editing tracks by drag and drop the file to the image view on the window

Version 0.8

  • Ability to import from Itunes, selecting the "iTunes Music Library.xml" file
  • LastFM API. The user can log in and Musicott will scrobble listened tracks
  • Fixed a bug and now the waveform image is shown for all tracks

Version 0.7

  • Added waveform image for mostly all mp3 files and all wav files
  • Better design
  • Big refactor implementing better concurrent model

Copyright

Copyright (c) 2015-2017 Octavio Calleya.

Musicott is free software under GNU GPL version 3 license. The license of Musicott and the licenses of the included libraries in this software are in the LICENSE folder

musicott's People

Contributors

craigjperry avatar octaviospain 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

musicott's Issues

Fail to build and run

I followed procedure in How To Build and Run but when i do the last instruction 3. Run with mvn exec:java -Dexec.mainClass=com.transgressoft.musicott.MusicottApplication i get

Failed to execute goal on project preloader: Could not resolve dependencies for project com.transgressoft.musicott:preloader:jar:0.10.1-b: Failure to find com.transgressoft.musicott:common:jar:0.10.1-b in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]

Error while building the project

I get the below stacktrace
--- [ERROR] Failed to execute goal on project musicott: Could not resolve dependencies for project com.transgressoft.musicott:musicott:pom:0.10.1-b: Could not find artifact org.fxmisc.easybind:easybind:jar:1.0.4-SNAPSHOT -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

My environment specifications
Apache Maven 3.5.2 Maven home: /usr/share/maven Java version: 1.8.0_171, vendor: Oracle Corporation Java home: /usr/lib/jvm/jdk1.8.0_171/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.15.0-36-generic", arch: "amd64", family: "unix"

Bug: Unable to import files in Linux

So I've recently got this application to work by forking and building it via GitHub. However, when I attempt to import an audio file either by file or folders, I'm unable to see any files (currently, mp3, flac, and wav), like @octaviospain has reported in #3. My "Musicott-tracks.json" and "Musicott-main-log.txt
files return very similar contents when I open them:

Musicott-tracks.json:

  {
  "@type":"com.sun.javafx.collections.ObservableMapWrapper"
}
java.util.prefs run 29/10/16 08:26:09 :831000000
0   INFO:Created user preferences directory.

com.transgressoft.musicott.MusicottApplication loadConfigProperties 29/10/16 08:26:24 :327000000
1   WARNING:Error loading configuration properties

java.io.FileNotFoundException: resources/config/config.properties (No such file or directory)
java.io.FileInputStream.open0(Native Method)
java.io.FileInputStream.open(FileInputStream.java:195)
java.io.FileInputStream.<init>(FileInputStream.java:138)
java.io.FileInputStream.<init>(FileInputStream.java:93)
com.transgressoft.musicott.MusicottApplication.loadConfigProperties(MusicottApplication.java:177)
com.transgressoft.musicott.MusicottApplication.init(MusicottApplication.java:154)
com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:841)
com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
java.lang.Thread.run(Thread.java:745)
javafx.css calculateValue 29/10/16 08:26:25 :782000000
2   WARNING:Caught 'java.lang.ClassCastException: java.lang.String cannot be cast to javafx.scene.paint.Color' while converting value for '-fx-background-color' from rule '*.progress-bar>*.track' in stylesheet jar:file:/usr/lib/jvm/java-8-oracle/jre/lib/ext/jfxrt.jar!/com/sun/javafx/scene/control/skin/modena/modena.bss

I started importing just a music album with .mp3 files in them which caused this bug. Then I checked to make sure that all of the file types are selected at "File->Preferences". After trying to re-import everything again, I was still unable to see anything in the player.

Update:

As another test, I've tried to import the test files located in Musicott/test-resources/testfiles and I still get the same problem.

Playlists Drag&Drop feature request. Importing big folders make the progress bar stop working

Hello Octavio , i couldn't find an email so i can contact you , i like your project very much and i am studying it's code.
I am also developing and advanced media player in JavaFX 2 years now , you can check it here -> https://github.com/goxr3plus/XR3Player
I think that we can build something very good together , by sharing ideas and code :) , though both our applications are for the same reason and opensource.


As a modern application Musicott should have drag and drop features , i mean on the playlists the user should be able to drop one or more folders or songs and the application to import them automatically.

The procedure of going on Menu->Import Folder or Files is very annoying.... really . I tried all the features today , except from the LastFM which i think is awesome :).

On the below image you can see all of 3 problems at once :

untitled

Also found another issues like

  1. waveform is not drawn for many songs
  2. skip doesn't work for big files 150 megabytes etc

Some more user interface problems also , like when you click the plus button the Menu appears on the other side of the screen :

untitled2

I wish someone came to me and said reported all these errors , cause actually it provides a way to improve the application by errors you may have never spotted :).

It doesn't import mp3 files.

I installed recent version and build with maven on OS X El Capitan.

For the first time, I imported a directory that contains mp3 files.

But it doesn't appear on playlist(all songs).

And But it does work on Eclipse.

Issue Launching Application

Hello @octaviospain,

I want to launch this application so I can test it and, perhaps, add some unit tests to it. However, after I followed the instructions you outlined in your README file, and entered the, java -cp target/Musicott-x.y.z.jar com.transgressoft.musicott.MusicottApplication command I got this message:

Error: Could not find or load main class com.transgressoft.musicott.MusicottApplication.

I'm assuming that the supposed "x.y.z" jar file is referring to the "musicott-0.9.1-b.jar" file included in the target folder, so I tried to enter "0.9.1-b" where the "x.y.z" is in the above command but still got the same error message.

Waveform fails to be generated for big in duration files

Just found this bug in WaveFormTask.java exactly on line 155 , byte[] buffer = new byte[available]; , tried to run the application but failed to create waveform for audio > 50 minutes .

Further investigation needed . It takes forever to create a buffer array . For example i checked the variable available when it had the value 760163516 which is bigger than Byte.MAX_VALUE it lags forever on creating the byte array , no errors shown too.

Trying to find a solution to pull request .

I want to know why you used Sun's FX module?

I'm reading your source code. I found there is Sun's FX module in MusicottApplication.java

public static void main(String[] args) {
    initializeLogger();
    LauncherImpl.launchApplication(MusicottApplication.class, MainPreloader.class, args);
}

and

@Override
public void init() throws Exception {
    if (preferences.getMusicottUserFolder() == null || ! new File(preferences.getMusicottUserFolder()).exists()) {
            LauncherImpl.notifyPreloader(this, new CustomProgressNotification(0, FIRST_USE_EVENT));
    }

Did you find other solutions without Sun's FX modules?

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.