arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Developping with JJazzLab

An open application for developers

circle-info

JJazzLab is written in Java. Why ?

This choice reflects the project’s origins (started over 10 years ago, when Java was a common option for cross-platform desktop apps) and the nature of the problem: unlike a low-latency audio DAW, JJazzLab does not require hard real-time deadline management in the music generation engine. As a side note, modern Java is quite different from early versions and can deliver excellent performance.

hashtag
Updating the application

hashtag
Apache NetBeans Platform

JJazzLab is based on the which provides a reliable and extensible architecture for cross-platform desktop applications.

The NetBeans Platform manages the application lifecycle, window system, extension points, options, actions, and more.

It uses NetBeans modules (different from java 9 JPMS modules) which group related Java classes into pluggable components, while managing visibility and dependencies between them.

hashtag
Adding new features

Suppose you have a reharmonization algorithm that proposes alternate chord progressions (e.g., replacing | A7 | Dmaj7 | with | Em7 A7 | Dmaj7 |).

You can easily implement an action that, when user selects chords, suggests these alternatives in the existing chord popup menu.

Then your code can be bundled in a module which is deployed like a plugin.

hashtag
Develop your own rhythm generation engine without hassle

Out of the box, JJazzLab provides the infrastructure (“plumbing”) that developers would otherwise need to build themselves: data management, user interface, MIDI management, playback control, music-generation control, etc.

In JJazzLab, the rhythm generation engine just receives a context (chords, song structure, tempo, etc.) and returns musical phrases (one per instrument) that form the backing track, ready for playback.

The engine doesn’t have to manage real-time deadline: JJazzLab handles scheduling and synchronization.

hashtag
JJazzLab Toolkit

The is a standalone jar file which contains the JJazzLab core features, the JJazzLab plugins and the required dependencies.

Use the toolkit to use JJazzLab features independently of the JJazzLab application.

Apache Netbeans Platformarrow-up-right
JJazzLab Toolkitarrow-up-right