JFugue Music Notepad Status

The biggest problem with the JFugue Music Notepad is that it has developed organically. Once you realize that the word "organically" is a polite synonym for "chaotically", you'll understand the previous sentence in the way that it was intended. I'm now rearchitechting it with the following aims in mind:

  1. A highly modular architecture where each distinct feature is found within a distinct module.
  2. A strictly defined "currency", i.e., a consistent communication layer between the modules.

Phase 1 above has been completed. Take a look below, where each feature is in a separate module and each module is clearly named so that you know what's going on in the structure immediately:

Everything compiles correctly, exactly as before.

However, phase 2 is not yet complete. The "currency" between the modules needs to be the Note object. When the user clicks the keyboard, a Note should be published, which should also be the case when the guitar neck is clicked. The currently shown music score should be listening for new Notes and publish new Notes within itself. Related to that, when a new Instrument is selected, that Instrument needs to be published so that other components, such as the Syntax window, can update themselves with information about the new Instrument. Finally, when multiple Scores are open, the Composition window needs to list those Scores so that they can be played and saved together as a unit.

Up until now, that's not how things have worked at all. The keyboard and guitar have, somehow, retrieved the Score window and updated the Score window with the current Note. That's simply the wrong way round, while it also creates a completely undesirable dependency on the Score window. It is an anti-pattern to access a GUI object across different modules (whether via the Lookup or otherwise). Instead, domain objects, i.e, business objects, should be the currency between the participating GUI components.

So that's the work I'm currently doing, rewriting the communication layer between the modules. Even though that part isn't done, a screenshot can already be shown of what the application currently looks like when the application first starts, since everything compiles and runs correctly:

Watch this space for further updates.


Dear evangelist and brother in Christ Geertjan Wielenga:

I rejoice together with you in the resurrection of the Lord Jesus.

And I am ready to enjoy your JFugue Music Notepad.


Posted by guest on April 08, 2012 at 03:55 AM PDT #

Plz goto d site noteflight.com. I haVe to create a website like that using jfugue. Is it possile. Plz help me

Posted by midi musician n software engineer on September 13, 2012 at 07:11 AM PDT #

Post a Comment:
  • HTML Syntax: NOT allowed

Geertjan Wielenga (@geertjanw) is a Principal Product Manager in the Oracle Developer Tools group living & working in Amsterdam. He is a Java technology enthusiast, evangelist, trainer, speaker, and writer. He blogs here daily.

The focus of this blog is mostly on NetBeans (a development tool primarily for Java programmers), with an occasional reference to NetBeans, and sometimes diverging to topics relating to NetBeans. And then there are days when NetBeans is mentioned, just for a change.


« July 2016