A modern JavaFX application for accessing and playing any MIDI instrument available on your device, and a full-featured high performance composer to load, create, edit and save MIDI compositions.
This application demonstrates how to build JavaFX applications with a custom modern theme that can be compiled into a native executable using GraalVM and Gluon.
- Access All MIDI Instruments: Browse and play any of the standard MIDI instruments available on your system
- MIDI Composer: Create, edit, and save MIDI compositions with an intuitive interface
- MIDI Playback: Play MIDI files with accuracy and performance, even with large Black MIDIs
- Interactive Controls: Experiment with any MIDI instrument on the go
- Modern UI: Built with AtlantaFX's PrimerDark theme for a sleek, modern appearance
- Native Compilation: Can be compiled to native executables using GraalVM and Gluon for improved startup time and reduced memory footprint
- Java 21 or higher (corresponding to GraalVM version preferred)
- JavaFX 21 or higher (limited by Gluon supplied GraalVM+JavaFX versions)
- Maven 3
- GraalVM (optional, for native compilation)
git clone https://github.com/UnknownCoder56/musemix.git
cd musemix(Comment out "java.home" override first, in MusemixApplication.java, if you want to run on standard JDK instead of native image)
mvn clean javafx:runThis will compile the application and launch it using the JavaFX Maven plugin.
This application can be compiled into a native executable using GraalVM and Gluon's GluonFX plugin.
- Install GraalVM: Download and install a Gluon-supplied GraalVM
- Set GRAALVM_HOME: Update the
graalvmHomepath inpom.xmlto point to your GraalVM installation:
<graalvmHome>/path/to/your/graalvm-installation</graalvmHome>mvn clean gluonfx:runagentThen go through the application to cover all code paths that you want to include in the native image. This step generates the necessary configuration files for native compilation.
mvn clean gluonfx:buildWarning! Make sure to download jsound.dll and place it in the same directory as the generated native executable, otherwise MIDI device access will fail.
mvn gluonfx:nativerunOr simply run the generated executable file. The native executable will provide faster startup times and lower memory consumption compared to running on the JVM.
This project is licensed under the MIT License - see the LICENSE file for details.
Arpan Chatterjee
Contributions are welcome! Please feel free to submit a Pull Request.
