Skip to content

jimomulloy/instrument

Repository files navigation

The Instrument - a Java project

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.)

License

MIT

Tech Stack

Server: Java17, Quarkus, AWS Lambda

Client: Java Swing, React (Provided by instrumentamper project)

Instrument project - Maven modules as implemented:

InstrumentModules drawio

  • 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.

Installation

Install instrument project locally with mvn

  cd instrument
  mvn clean install

Deployment

  • 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.

Documentation

Please see project Github WIKI

The Instrument Block Diagram

Demo/Usage/Examples

Input:

Screen shots

image

20230524_144242605

Acknowledgements

  • "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)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published