If you want to help, see the ToDo list.

This application was built using the NetBeans platform which can be downloaded from http://netbeans.org/

It uses the JavaAdvancedImaging library for most of the image manipulations. Follow the link for setup/installation details.

If you would like to contribute to this software, please contact the author (GabrielBurca), or fork the project on GitHub and send a pull request.

The Git repository can be accessed at:

Development Dependencies

Other git repos

After running git clone, in the cloned directory run:

  • git submodule init
  • git submodule update

Other tools

  • For Mac
    • brew install node for appdmg
    • npm install -g appdmg for building DMG's on Mac OS X
    • Install Inkscape and add it to your path. This is used to convert SVG -> PNG for the DMG background.


In NetBeans (Tools -> Plugins), make sure the JUnit plugin is installed. You'll probably need to restart NetBeans after installing JUnit. This is needed to run the unit tests.


After opening the VirtMus project in NetBeans:

  • Run -> Set Main Project -> Virtual Music
  • Right click on the "Virtual Music" project then Open Required Projects -> Open All Projects
  • Some of the modules come in pairs:
    • ICEpdf / ICEpdf-Wrapper
    • MavenJARs / MavenJARs-Wrapper


VirtMus uses ICEpdf to render some of the PDF files. See the VirtMus/ICEpdf/README.txt file for more details.

The VirtMus/ICEpdf-Wrapper module builds (and wraps) the VirtMus/ICEpdf code but otherwise VirtMus/ICEpdf is an independent project. When making any change to VirtMus (ex: new JDK platform) make sure the same change is also done to VirtMus/ICEpdf.

Maven Dependencies

Maven dependencies are downloaded by building the VirtMus/MavenJARs module. The MavenJARs-Wrapper pulls those dependencies into VirtMus.


If you want to make changes to this documentation, see DocMaintenance, or send your changes/corrections to GabrielBurca.


On Windows the exe installer is build by NSIS, which is assumed to be installed in the default directory.

On Unix/Linux and Mac OS X, the exe installer is built by makensis. On OS X, makensis can be installed with brew install makensis. Make sure makensis is in your path.

Release New Version

Update the version string

  • Set the version in the following places:
    • nbproject/project.properties
    • VirtMus/src/com/ebixio/virtmus/MainApp.java
    • Docs: Home.md and ChangeLog.md pages
    • Installer/VirtMusPortable/App/AppInfo/appinfo.ini
  • The update-version-string build target takes care of propagating the change to the other locations.
  • Development versions should have an odd minor version number. Version 4.01 and earlier did not follow this convention.

Other updates

  • Update the documentation ChangeLog

  • If needed, change the copyright year range:

    • On the splash screen: branding/core/core.jar/org/netbeans/core/startup/...
    • In Docs/wiki/home.html and template.html
  • If needed, update the MacOSX icons. See: Installer/GenerateMacIcons.sh

Build the installers

Execute the following build targets:

  • clean
  • create-installers

The installers will be located in the Installer directory. Typically, a total of 3 files will be generated:

  • VirtMus-?.??.exe - Windows installer
  • VirtMus-?.??.dmg - Mac OS X installer
  • VirtMus-?.??.zip - A stand-alone distribution (no installer) that can be used on any OS (typically used for Unix/Linux).

Modify the DMG finder icon:

  • Right-click on the DMG file
  • Select "Get Info"
  • Drag the Installer/VirtMus.icns file to the small top-left icon of the Info window.
  • Make sure the Preview section shows the new file image.

PortableApps release

To create the PortableApps version for the USB drive:

  • Unzip the Installer/VirtMus-v.vv.zip into Installer/VirtMusPortable/App/VirtMus
    • The executable should be in .../App/VirtMus/bin/virtmus.exe
  • Run "PortableApps.com Launcher" from PortableApps on USB drive
    • Point it to .../Installer/VirtMusPortable
    • This will create Installer/VirtMusPortable/VirtMusPortable.exe
  • Run "PortableApps.com Installer" from PortableApps on USB drive
    • Point it to .../Installer/VirtMusPortable
    • This will create Installer/VirtMusPortable_v.vv.paf.exe
  • Distribute
    • Installer/VirtMusPortable_v.vv.paf.exe

Upgrade NetBeans Platform

  • After upgrading, compare the new NetBeans/harness/etc/app.conf file with Installer/VirtMus.conf to make sure we're picking up any new features or settings.
  • As of NetBeans 8.0.2, there's a bug in the shell script used to launch an application on the Mac / OSX which causes the app to show the default Java icon in the dock and task list. The NetBeans/harness/launchers/app.sh file that gets copied by the build.launchers ant task contains the following code towards the bottom:
eval exec sh  "$nbexec"  \
--jdkhome   "$jdkhome"   \
-J-Dcom.apple.mrj.application.apple.menu.about.name=  "$APPNAME"   \
-J-Xdock:name=  "$APPNAME"   \
"-J-Xdock:icon=$progdir/../../$APPNAME.icns"   \
--clusters  "$clusters"  \
--userdir   "${userdir}"   \
{default_options} \

To fix it, replace the following line:

              "-J-Xdock:icon=$progdir/../../$APPNAME.icns"   \


              "-J-Xdock:icon=$progdir/../$APPNAME.icns"  \