Code Monkey home page Code Monkey logo

jjazzlab's Introduction

Welcome!

You'll find here the home of JJazzLab, a free musical application used by thousands of musicians all over the world to practice their instrument with a virtual band.

šŸ¤” I'm looking for help to add new backing track generation capabilities:

  • Generate slight variations of an existing drums & bass rhythm (e.g. make it more simple or more intense)
  • Generate a realistic and non-boring jazz walking bass from a chord lead sheet
  • Effectively "humanize" drums and bass midi tracks
  • and more...

Don't hesitate to send links to related research papers.

šŸ“« Feel free to get in touch via the contact page of www.jjazzlab.org (the main JJazzLab distribution).

jjazzlab's People

Contributors

deepsourcebot avatar dependabot[bot] avatar hajdam avatar jjazzboss avatar jypma avatar kant avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jjazzlab's Issues

Show an error message when some rhythm files could not be read

When the RhythmDatabase scans all the available RhythmProviders to get the rhythms based on files, if an error happens during reading a file, there is no error message for the end user, only log messages are produced.

As we possibly read hundreds of files, error notification per file is not OK, but a summary at the end of all rhythm files which could not be read should be shown to the user.

See AbstractRhythmProvider.java getFileRhythms()

Add a "Edit Song Memo" panel

The Song model object already embeds a Comments String field to put whatever information related to the song (e.g. the composer name, etc.). Same for a list for tags which could be used when searching or sorting songs.

But the UI does not provide any way for the user to view or edit these data. It should be possible.

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

Channel not disabled when drums rerouting enabled in multi-rhythm song

In the Mix Console with one rhythm. Output Synth is such that drums rerouting is enabled by default (user selected "Remember my choice during this session" in the Midi config fix dialog). If adding a new rhythm in the song, new drums/perc channels are rerouted but display is not correct: some buttons/knobs look enabled instead of disabled.

Song part editor disappeared

Hello, I have been able to create several backing tracks but now I am now unable to view and adjust the parameters for each section i.e mute intensity etc.
I have uninstalled and reinstalled the program several times
Can you help?

at org.jjazz.ui.spteditor.api.SptEditorTopComponent.getInstance(SptEditorTopComponent.java:95)
at org.jjazz.ui.spteditor.SptEditor.updateTabName(SptEditor.java:638)
at org.jjazz.ui.spteditor.SptEditor.updateUIComponents(SptEditor.java:494)
at org.jjazz.ui.spteditor.SptEditor.refresh(SptEditor.java:408)
at org.jjazz.ui.spteditor.SptEditor.songPresenceChanged(SptEditor.java:477)
at org.jjazz.ui.spteditor.SptEditor.(SptEditor.java:159)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.(SptEditorTopComponent.java:82)
at jdk.internal.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:75)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:203)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:74)
at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:292)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:547)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:657)
at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:453)
at org.netbeans.core.windows.WindowManagerImpl.getTopComponentForID(WindowManagerImpl.java:1002)
at org.netbeans.core.windows.WindowManagerImpl.findTopComponent(WindowManagerImpl.java:270)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.getInstance(SptEditorTopComponent.java:95)
at org.jjazz.ui.spteditor.SptEditor.updateTabName(SptEditor.java:638)
at org.jjazz.ui.spteditor.SptEditor.updateUIComponents(SptEditor.java:494)
at org.jjazz.ui.spteditor.SptEditor.refresh(SptEditor.java:408)
at org.jjazz.ui.spteditor.SptEditor.songPresenceChanged(SptEditor.java:477)
at org.jjazz.ui.spteditor.SptEditor.(SptEditor.java:159)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.(SptEditorTopComponent.java:82)
at jdk.internal.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:75)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:203)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:74)
at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:292)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:547)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:657)
at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:453)
at org.netbeans.core.windows.WindowManagerImpl.getTopComponentForID(WindowManagerImpl.java:1002)
at org.netbeans.core.windows.WindowManagerImpl.findTopComponent(WindowManagerImpl.java:270)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.getInstance(SptEditorTopComponent.java:95)
at org.jjazz.ui.spteditor.SptEditor.updateTabName(SptEditor.java:638)
at org.jjazz.ui.spteditor.SptEditor.updateUIComponents(SptEditor.java:494)
at org.jjazz.ui.spteditor.SptEditor.refresh(SptEditor.java:408)
at org.jjazz.ui.spteditor.SptEditor.songPresenceChanged(SptEditor.java:477)
at org.jjazz.ui.spteditor.SptEditor.(SptEditor.java:159)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.(SptEditorTopComponent.java:82)
at jdk.internal.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:75)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:203)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:74)
at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:292)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:547)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:657)
at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:453)
at org.netbeans.core.windows.WindowManagerImpl.getTopComponentForID(WindowManagerImpl.java:1002)
at org.netbeans.core.windows.WindowManagerImpl.findTopComponent(WindowManagerImpl.java:270)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.getInstance(SptEditorTopComponent.java:95)
at org.jjazz.ui.spteditor.SptEditor.updateTabName(SptEditor.java:638)
at org.jjazz.ui.spteditor.SptEditor.updateUIComponents(SptEditor.java:494)
at org.jjazz.ui.spteditor.SptEditor.refresh(SptEditor.java:408)
at org.jjazz.ui.spteditor.SptEditor.songPresenceChanged(SptEditor.java:477)
at org.jjazz.ui.spteditor.SptEditor.(SptEditor.java:159)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.(SptEditorTopComponent.java:82)
at jdk.internal.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:75)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:203)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:74)
at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:292)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:547)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:657)
at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:453)
at org.netbeans.core.windows.WindowManagerImpl.getTopComponentForID(WindowManagerImpl.java:1002)
at org.netbeans.core.windows.WindowManagerImpl.findTopComponent(WindowManagerImpl.java:270)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.getInstance(SptEditorTopComponent.java:95)
at org.jjazz.ui.spteditor.SptEditor.updateTabName(SptEditor.java:638)
at org.jjazz.ui.spteditor.SptEditor.updateUIComponents(SptEditor.java:494)
at org.jjazz.ui.spteditor.SptEditor.refresh(SptEditor.java:408)
at org.jjazz.ui.spteditor.SptEditor.songPresenceChanged(SptEditor.java:477)
at org.jjazz.ui.spteditor.SptEditor.(SptEditor.java:159)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.(SptEditorTopComponent.java:82)
at jdk.internal.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.netbeans.modules.settings.convertors.XMLSettingsSupport.newInstance(XMLSettingsSupport.java:75)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.defaultInstanceCreate(XMLPropertiesConvertor.java:203)
at org.netbeans.modules.settings.convertors.XMLPropertiesConvertor.read(XMLPropertiesConvertor.java:74)
at org.netbeans.modules.settings.InstanceProvider$InstanceCookieImpl.instanceCreate(InstanceProvider.java:292)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentPersistentForID(PersistenceManager.java:547)
at org.netbeans.core.windows.persistence.PersistenceManager.getTopComponentForID(PersistenceManager.java:657)
at org.netbeans.core.windows.PersistenceHandler.getTopComponentForID(PersistenceHandler.java:453)
at org.netbeans.core.windows.WindowManagerImpl.getTopComponentForID(WindowManagerImpl.java:1002)
at org.netbeans.core.windows.WindowManagerImpl.findTopComponent(WindowManagerImpl.java:270)
at org.jjazz.ui.spteditor.api.SptEditorTopComponent.getInstance(SptEditorTopComponent.java:95)
at org.jjazz.ui.spteditor.SptEditor.updateTabName(SptEditor.java:638)

Null pointer exception when reading .cfg file

Failed calling method
---- Debugging information ----
message : Failed calling method
cause-exception : java.lang.NullPointerException
cause-message : null
method : org.jjazz.midi.Instrument$SerializationProxy.readResolve()
class : org.jjazz.midi.Instrument$SerializationProxy
required-type : org.jjazz.midi.Instrument$SerializationProxy
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path : /OutputSynth/spUserInstrument
line number : 16
class[1] : org.jjazz.outputsynth.OutputSynth$SerializationProxy
version : 1.4.9

Complete internationalization

Because it is based on the Netbeans platform some degree of internationalization is already implemented, but it's not complete. Once done it should be possible to add new languages. I can help by providing translations for French if needed.

Replace the deprecated BooleanStateAction

Some JJazzLab-X UI actions still use BooleanStateAction, but this is deprecated now with Netbeans platform 11.

These actions should be refactored to use the (somewhat simpler) mechanism demonstrated in SectionAtNewLine.java in package org.jjazz.ui.cl_editor.actions (module CL_Editor). Or use newer org.jjazz.utilities.api.ToggleAction

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.

Add the possibility for the user to record a melody with a song

The melody should be saved in the song file.

The melody should use the User Midi Channel which is already defined in the MidiMix / MixConsole.

Midi input device selection is already programmed in the Tools/Options/Midi panel but needs to be enabled.

Use the same instruments if 2 or more rhythms in a song

If a song uses more than 1 rhythm, each rhythm uses its own set of instruments. When rendering it makes the rhythm transition not natural because all sounds change. A workaround is to manually copy the instrument settings to all instruments, which is not convenient. We need a better way of handling this.

Transpose instrument not taken into account on one channel

Create a song with rhythm chartBallad.S859.sty. Changing the instrument transposition has an effect on the generated music for all channels, EXCEPT on the Pad channel (voice=Choir Aahs). Choir notes remain always the same whatever the transposition set.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.