The "Instrument" is a project to develop a Java based application system by building on a general purpose Signal Processing engine. In the first instance this platform provides a framework for the implementation of a Music Information Processing application. The aim is to deliver tools and capabilities that can be used to experiment creatively with musical sound by extracting, analysing and synthesising existing and new musical data features for a given input.
The purpose of my doing this "side" project was to:
- Strengthen and update my core Java skills as a calling card to employers, (hopefully you!)
- Be a fun and playful creative exercise to provide really useful tools to support my hobby as an experimental musician and film artist as this gives me joy. (Spotify and YouTube)
The work is based on ideas and techniques that I have taken from the many wonderful insights in the rich field of "MIR", (Music Information Retrieval,) research and practice. I have also derived and built on many examples of Java signal processing code from here on Github and beyond. (Please see Acknowledgements section below.)
Server: Java17, Quarkus, AWS Lambda
Client: Java Swing, React (Provided by instrumentamper project)
- instrument : Parent module
- instrument-core : Core signal processing framework and functionality (as per design above.)
- instrument-desktop : PC Java Desktop implementation of instrument API including Swing UI, MicroStream DB and local file store.
- instrument-cmd : Simple implementation of instrument API for command line operation.
- instrument-st : System tests for Core Instrument funtions.
- instrument-aws : AWS based Cloud Services parent module.
- instrument-s3handler : AWS Cloud Services implementation of instrument API including Lambda functions and S3 store.
- instrument-s3handler-cdk : AWS Cloud Services "CDK" infrastructure-as-code implementation of deployable AWS service components.
- instrument-s3handler-st : System tests for AWS Cloud Services implementation of instrument API.
Install instrument project locally with mvn
cd instrument
mvn clean install
- AWS Cloud deployment using "infrastructure as Code" with CDK (Cloud Dev Kit)
cd instrument
mvn clean install
cd instrument-aws/instrument-s3handler-cdk
cdk deploy
- Use JPackage tools to build a standalone desktop application installer for various PC platforms including a built in JDK.
Start from platform of choice with pre-requisite tools and libaries installed including version of JDK17.
E.g. for Windows10+:
cd instrument
mvn clean install
./jpackage --type exe --name InstrumentApp --input target --dest target\packed --main-jar instrument-desktop-0.0.1-SNAPSHOT.jar --main-class jomu.instrument.desktop.monitor.QuarkusInstrument --description "The Instrument Desktop App by Jim O'Mulloy" --app-version 0.0.1 --icon src/main/resources/instrument.ico --win-shortcut --win-menu --win-menu-group "jomu"
This should produce an standalone .exe installer with built in JDK (So can be run on a Windows10+ PC with no previous Java installed.
Please see project Github WIKI
Input:
- "Meinard Muller" for his great and unique text book, "Fundamentals of Music processing" (Amazon Books)
- The developers of the Java project, "Tarsos" which I have used as the core library for Java audio signal processing. (Tarsos on Github)