// Sources & Thanks
Built on the shoulders of giants.
MelodyMatrix stands on a mountain of open-source work by the Java, Kotlin and JavaFX communities. Huge thanks to everyone whose libraries and tools made this possible.
Website
Apache Commons Validator
Apache Commons Validator provides building blocks for server-side data validation in the MelodyMatrix backend.
Flyway by Redgate
Flyway manages the database schema migrations for the MelodyMatrix backend.
Hugo, the static site generator
Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
Line Awesome by Parttio
Line Awesome brings the Line Awesome icon set to Vaadin. It provides the icons used throughout my.melodymatrix.rocks.
MailerSend Java SDK
The MailerSend Java SDK sends transactional emails from the MelodyMatrix backend.
Spring Boot
Spring Boot is the Java framework behind the MelodyMatrix backend and its REST API at api.melodymatrix.rocks.
springdoc-openapi
springdoc-openapi generates the OpenAPI documentation and Swagger UI for the MelodyMatrix REST API.
Vaadin, the Java web framework used for my.melodymatrix.rocks
Business apps shouldn't suck. With Vaadin you can craft stunning full-stack web apps at lightning speed. Scaling from hobby projects to enterprise.
Logging & utilities
UI & styling
AtlantaFX by mkpaz
Modern JavaFX CSS theme collection with additional controls.
BentoFX by Matt Coley
A docking system for JavaFX.
Charts by Gerrit Grunwald
A library for scientific charts in JavaFX.
FXGL by Almas Baim
JavaFX Game Development Framework. Almas created the first version of the piano view with FXGL.
Ikonli by Kordamp
Ikonli provides icon packs that can be used in Java applications. Currently Swing and JavaFX UI toolkits are supported.
Lottie4J
Lottie4J is a library for parsing Lottie animations as Java objects and playing them as JavaFX animations.
OpenJFX, the Java client application platform
JavaFX is a software platform for creating and delivering user interface applications that can run across a wide variety of devices. It is part of the OpenJDK project and is intended for use by Java developers to design graphical user interfaces (GUI).
PDFViewFX by Dirk Lemmermann
A custom control that allows an application to display PDF files. The control utilizes Apache's PDFBox project.
Media & content
commonmark-java
Java library for parsing and rendering Markdown text according to the CommonMark specification (and some extensions).
javacv for FFmpeg integration
JavaCV uses wrappers from the JavaCPP Presets of commonly used libraries by researchers in the field of computer vision (OpenCV, FFmpeg,...) and provides utility classes to make their functionality easier to use on the Java platform.
Music & MIDI
Free Piano Soundfonts on Zanderjaz
SoundFonts are files that contain collections of audio samples used to play MIDI files, allowing for different instrument sounds in music production. They enable users to change the sound of MIDI compositions by swapping out the SoundFont being used, similar to changing fonts in a text document. A few free sound fonts from Zanderjaz are included in MelodyMatrix. You can get more from that or other websites who provide such .sf2 files.
Guitar Chord Fingers Dataset
Position of the fingers for 2633 guitar chords in standard tuning.
ktmidi by Atsushi Eno
ktmidi is a Kotlin Multiplatform library for MIDI Access API and MIDI data processing that covers MIDI 1.0 and MIDI 2.0.
Sheetmusic4J
Sheetmusic4J is a Java(FX) library for rendering and interacting with sheet music, including MusicXML and MIDI import/export. MelodyMatrix uses it for the sheet music view.
Build & distribution
Languages & runtimes
Kotlin
Kotlin is a cross-platform, statically typed, general-purpose high-level programming language with type inference. Kotlin is designed to interoperate fully with Java.
OpenJDK, the Java programming language and runtime
Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let application developers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation.
And a special thank-you to a certain 14-year-old pianist for the original idea, the endless testing, and the demand to become “extremely rich.” Still working on that part.