JJazzLab-X is a Midi-based framework dedicated to backing tracks generation

Overview

JJazzLab-X

JJazzLab-X is a Midi-based framework dedicated to backing tracks generation -some people talk about "play-along songs" or “auto-accompaniment applications”. You type in chord symbols, select a rhythm (style), then the application generates a complete backing track with drums, bass, guitar, piano, strings, etc.

The objective is to develop a jam buddy able to quickly generate intelligent and interesting backing tracks: realistic and non-boring backing tracks which you can easily adjust to a specific song.

The JJazzLab-X UI (available in German, French, Chinese, Portuguese, Spanish, thanks to the JJazzLab community): JJazzLab-X screenshot

Example

To see the JJazzLab-X capabilities download and try the JJazzLab application at www.jjazzlab.com, it's a JJazzLab-X distribution which bundles the YamJJazz music generation engine based on Yamaha style files. You can also check out the demo videos: JJazzLab YouTube channel.

Architecture

JJazzLab-X architecture

Develop your own music generation engine without hassle

Thanks to JJazzLab-X developers can save a huge amount of work by only focusing on their music generation engine. Out of the box, the JJazzLab-X framework provides all the infrastructure, all the “plumbing” that, before, every developer had to write themselves.

JJazzLab-X is based on the Netbeans Platform (now hosted by the Apache foundation). It provides a reliable and extensible application architecture.

The Netbeans Platform turns JJazzLab-X into a pluggable application where plugins can be installed or deactivated at runtime. Plugins can easily add/alter features and insert UI elements such as menu items.

For more information visit the Developer's guide.

Installation

If you're looking for a binary distribution visit www.jjazzlab.com.

To build from source code see the Developer's guide below.

License

Lesser GPL v3 (LGPL v3), see LICENCE file.

User guide

https://jjazzlab.gitbook.io/user-guide/

Developer's guide

https://jjazzlab.gitbook.io/developer-guide/

Contact

For more information use the Contact page at www.jjazzlab.com

Comments
  • Hangs on startup and accessing tools menu on Linux

    Hangs on startup and accessing tools menu on Linux

    Once startup script begins and after (Loading cached objects ...Done) it hangs for about 2 minutes then loads.

    Accessing the Tools -> Options menu it hangs again for about a minute and a half to 2 minutes jjazzlab_error.pdf

    Brau

    Linux 
    opened by brau19 10
  • Double Click issue on mac osx

    Double Click issue on mac osx

    hi, i am having this issue since high sierra until mojave, i cannot double click the toolbar, and the menu folder, sometimes it can sometimes it cannot .. i hope this can be resolved

    bug Mac OSX 
    opened by odhot 8
  • Vizualisation/edition of user-recorded music

    Vizualisation/edition of user-recorded music

    Once user-recording features are enabled (see Issue #6 and Issue #7), how to visualize/edit the user-recorded music ?

    Objective is to enable simple visualization/edition capabilities of recorded music, plus quantization capabilities. For example with a piano-roll editor or, even simpler, automated export/import via an external Midi editor tool like MidiEditor.

    enhancement complex 
    opened by jjazzboss 7
  • NullPointerException when changing Midi input chord after Arranger is stopped

    NullPointerException when changing Midi input chord after Arranger is stopped

    JJazzLab 3.0.2a on Fedora Linux, Java 11 OpenJDK

    java.lang.NullPointerException
    	at org.jjazz.arranger.Arranger.updateChordSymbol(Arranger.java:211)
    	at org.jjazz.arranger.ArrangerPanel.processIncomingChord(ArrangerPanel.java:417)
    	at org.jjazz.arranger.ChordReceiver.lambda$fireChordChanged$0(ChordReceiver.java:188)
    	at java.base/java.util.ArrayList.forEach(Unknown Source)
    	at org.jjazz.arranger.ChordReceiver.fireChordChanged(ChordReceiver.java:188)
    	at org.jjazz.arranger.ChordReceiver.send(ChordReceiver.java:161)
    	at org.jjazz.midi.api.device.MidiFilter.passed(MidiFilter.java:118)
    	at org.jjazz.midi.api.device.MidiFilter$FilterReceiver.send(MidiFilter.java:162)
    	at java.desktop/com.sun.media.sound.AbstractMidiDevice$TransmitterList.sendMessage(Unknown Source)
    	at java.desktop/com.sun.media.sound.MidiInDevice.callbackShortMessage(Unknown Source)
    	at java.desktop/com.sun.media.sound.MidiInDevice.nGetMessages(Native Method)
    	at java.desktop/com.sun.media.sound.MidiInDevice.run(Unknown Source)
    [catch] at java.base/java.lang.Thread.run(Unknown Source)
    
    
    bug 
    opened by hajdam 5
  • Transpose chord symbols (not playback)

    Transpose chord symbols (not playback)

    Hi there,

    While playing instruments which are not in concert pitch (like saxophone), I find myself needing to be able to transpose the chord symbols more often than transposing the playback of the chords.

    Thanks

    opened by iwoithe 5
  • Follow XDG spec for user data files on Linux

    Follow XDG spec for user data files on Linux

    Currently, JJazzLab puts all its files in a non-configurable location "JJazzLab" in the user's home directory. This is contrary to the normal practice on Linux systems.

    The XDG spec of the FreeDesktop project provides guidelines where applications should put their files. XDG actually specifies 3 different kinds of data files: configuration, caches, and "everything else".

    As an initial effort, this commit has JJazzLab store its data under ~/local/share/JJazzLab instead of the user's home.

    Thoughts:

    • [x] Should we keep using a ~/JJazzLab directory if we happen to find one, to make upgrade smoother?
    enhancement 
    opened by jypma 4
  • Playing backing track in real time using MIDI input?

    Playing backing track in real time using MIDI input?

    I remember those Yamaha keyboards had such a function where you can hold down a chord in the left hand, and then the keyboard will immediately play auto accompaniment track to that chord. This is a very handy feature for live playing, however I have searched the Internet and hadn't found a decent free software to do the exact same thing.

    I wonder if this feature can be implemented within the framework of JJazzLab? It would be a great additional feature.

    Also I'm tempted to fork JJazzLab and see what I can do with the code...

    opened by WuTianming 3
  • Linux: Submitting JJazzLab-X to the Arch User Repository

    Linux: Submitting JJazzLab-X to the Arch User Repository

    For easier installation, and to keep track of files, I've created a little PKGBUILD that helps download and install JJazzLab-X on Arch Linux. It's fairly trivial to do, and makes installing it easier (plus, it creates a nice menu entry for starting the application).

    PKGBUILD:

    # Maintainer: Jan Ypma <jan at ypmania dot nl>
    pkgname=jjazzlab-x-bin
    pkgver=2.3.1
    pkgrel=1
    pkgdesc="A Midi-based framework dedicated to backing tracks generation"
    arch=('i686' 'x86_64')
    url="https://www.jjazzlab.com/"
    license=('LGPL')
    depends=('java-environment>=8')
    source=("https://www.jjazzlab.com/pkg/JJazzLab-${pkgver}-Linux.zip" "jjazzlab-x.desktop")
    sha256sums=('f78c2c4721dbf93b766fe78b4e170c27760401a8a89d8f110b4f853cbd1f65be'
                'ca15408fd0f11505def63f04359bc3c9745c0077a9f3b5953edc31391ee7a882')
    
    package() {
      cd "$srcdir/JJazzLab-${pkgver}-Linux"
    
      install -d "${pkgdir}/opt/jjazzlab-x"
      cp -rp * "${pkgdir}/opt/jjazzlab-x"
    
      install -d "${pkgdir}/usr/bin"
      ln -s ${pkgdir}/opt/jjazzlab-x/bin/jjazzlab ${pkgdir}/usr/bin/jjazzlab
    
      install -d "${pkgdir}/usr/share/applications"
      install ../jjazzlab-x.desktop "${pkgdir}/usr/share/applications"
    }
    

    jjazzlab-x.desktop:

    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=JJazzLab-X
    Comment=A Midi-based framework dedicated to backing tracks generation
    Exec=jjazzlab
    Terminal=false
    StartupNotify=true
    Categories=Audio;Sequencer;Midi;AudioVideoEditing;Music;AudioVideo;
    

    Would this be OK to submit to the Arch Linux User Repository ?

    opened by jypma 3
  • Insert bars action is a bit confusing

    Insert bars action is a bit confusing

    Insert bars action inserts on the position of the first currently selected bar, but it uses type of the bar before it for template. This is somewhat confusing as the dialog states "# bars from bar: x", but bar x - 1 is used for template.

    When first bar is selected, new bar is inserted at the beginning, but it creates new section with the new name.

    Maybe using first currently selected bar for template and providing also insert after or extend bar action could be more understandable...

    opened by hajdam 3
  • Live performance

    Live performance

    Hi!

    Thank you so much for this amazing project! What I am missing most from these applications is the ability to play a phyisical MIDI controller (e.g. a digital piano, or just an external MIDI keyboard) and playing the chords with the left hand and solo with the right hand.

    Is this possible with JJazzLab-X? I installed the app and played a little bit with it but can't find such a feature.

    Thanks! 🎹 🎶

    opened by IonicaBizau 2
  • Exception when importing MusicXML: superclass access check failed: class nu.xom.JDK15XML1_0Parser

    Exception when importing MusicXML: superclass access check failed: class nu.xom.JDK15XML1_0Parser

    On windows running JJazzLab 3.1 (March 11, 2022) File > Import Songs open .mxl log (log2-workaround1.txt) shows ...

    INFO [ImportSongAction]: importFiles() -- importerId=YamJJazz musicXML importer Importing file D:\My_Documents\paul_cucuron\bin\github\VeeHarmGen\pycharm-VeeHarmGen\output\Cairo-MadmanAcrossTheWater-Rock_Neutral-v1-100-ON_KEY_MOST-BAR1-2022_03_25-08_56_25.mxl SEVERE [org.openide.util.Exceptions] java.lang.IllegalAccessError: superclass access check failed: class nu.xom.JDK15XML1_0Parser (in unnamed module @0x16a75953) cannot access class com.sun.org.apache.xerces.internal.parsers.SAXParser (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.parsers to unnamed module @0x16a75953

    This is similar to https://bugs.openjdk.java.net/browse/JDK-8152901 xml.transform fails - superclass access check failed

    I attempted suggested workaround, but this did not fix the problem and mxl did not load:

    c:>"C:\Program Files\JJazzLab\bin\jjazzlab64.exe" -J-XaddExports:java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED -J-XaddExports:java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED

    log2-workaround1.txt Cairo-MadmanAcrossTheWater-Rock_Neutral-v1-100-ON_KEY_MOST-BAR1-2022_03_25-08_56_25.zip

    bug 
    opened by RedFerret61 2
  • Add a way to show alternative chord progressions at the bar level

    Add a way to show alternative chord progressions at the bar level

    The "substitute chord symbol" mechanism should appear in the UI at the bar level, using a specific bar renderer, instead of at the chord symbol level. Though we probably can keep the "substitute" info at the chord level, with the constraint that all subsitute chord symbols of a given bar must have the same "marker" rule.

    enhancement 
    opened by jjazzboss 0
  • In Notes visualizer/played notes mode, by default show the bass track

    In Notes visualizer/played notes mode, by default show the bass track

    Otherwise it's usually the subrhythm track which is selected by default, and many rhythms do not use subrythm (in variation A), so user sees nothing on the keyboard when it presses play.

    enhancement 
    opened by jjazzboss 0
  • MacOS app can't access user folders

    MacOS app can't access user folders

    (thanks for this app!)

    I just downloaded v3.2.1 and it sounds great, but macOS recently introduced a thing where when an app tries to access e.g. ~/Downloads, a pop up notification requests approval from user. This doesn't seem to happen with this app, and the folder is empty. So I downloaded the sound fonts and then moved to my user home folder, and similarly I can't svae song files to my documents folder.

    I can take a look at why it happens, but wanted to note it here.

    bug Mac OSX 
    opened by maedoc 5
Releases(3.2.1)