[email protected]>
From: Packe <[email protected]>
Content-Type: text/plain;
        charset=us-ascii
X-Mailer: iPhone Mail (11B554a)
In-Reply-To: <[email protected]>
Message-Id: <[email protected]>
Date: Fri, 31 Jan 2014 22:42:40 +0100
To: "[email protected]" 
<[email protected]>
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (1.0)

Hi,

I have now written quite some test cases for JSynthLib.

This is what I have done so far:

* Created an application that runs through all drivers for all devices and=20=

    - Installs the device
    - Creates a new patch in a library for each driver
    - Tries to store each driver with the Store... context menu
    - Tries to open the drivers' editor through the Edit... context menu
    - in case of a single driver it will also run through all sysexwidgets a=
nd check what sysex is being sent when the widget is changed on screen
    - in case of a bank driver it will check what sysex is being sent when u=
sing the Send context menu
    - it will also store any popup dialog
The output of this application is stored as XML which is then later on used b=
y a jUnit test case that runs the same procedure again but then checking the=
 output from JSynthLib against the values stored in the XML files

* Created test cases to test the following library features (copied from the=
 features list..):
    - Create / Load / Save heterogeneous collections of Patches in Libraries=
. Libraries can contain various types of patches and patches for multiple sy=
nths can be stored in a single library.
    - Attach comments and user defined attributes to patches. Can be used fo=
r Author, instrument, rating, etc.)
    - Sort Libraries by patch name or attributes
    - Automatically eliminate duplicates from libraries
    - Search function to find patches in large libraries
    - Cut / Copy / Paste patches between Libraries and also banks of Patches=

* Created test cases to test most preferences dialog tabs:
    - Play note
    - Synth Driver
    - MIDI
* Created test cases to test the Help menu
    - Help
    - About
    - License

When running these tests I have found some bugs. I have fixed some of them a=
nd merged to trunk.

Some are a little bit more tricky and now I would like to get some feedback o=
n how some features are actually meant to function.

Here are some of my findings:

1. The Faderbox functionality does not work because rows 503-508 in PatchEdi=
torFrame.java are not run in the EDT-thread. Has anybody got this to work?

2. Quite some drivers are not even able to install or there are some other m=
ajor issues with them preventing my XML creation app to run through them:

#ArrayIndexOutOfBounds
synthdrivers.NordLead.NL2PerfBankDriver
synthdrivers.NordLead.NL2PerfSingleDriver
synthdrivers.KorgWavestation.KorgWavestationSinglePatchDriver
synthdrivers.KorgWavestation.KorgWavestationSinglePerformanceDriver
synthdrivers.KorgWavestation.KorgWavestationBankPerformanceDriver
synthdrivers.KorgWavestation.KorgWavestationSystemSetupDriver
synthdrivers.KorgWavestation.KorgWavestationWaveSequenceDriver
synthdrivers.KorgWavestation.KorgWavestationMultiModeSetupDriver
synthdrivers.KorgWavestation.KorgWavestationMicroTuneScaleDriver
synthdrivers.KorgWavestation.KorgWavestationPerformanceMapDriver
synthdrivers.CasioCZ1000.CasioCZ1000SingleDriver
synthdrivers.YamahaUB99.YamahaUB99Driver

#NullPointer
synthdrivers.KorgX3.KorgX3SingleDriver
synthdrivers.KorgX3.KorgX3BankDriver
synthdrivers.MIDIboxSID.MIDIboxSIDBankDriver
synthdrivers.BossDR660.BossDR660DrumkitDriver
synthdrivers.YamahaFS1R.YamahaFS1RPerformanceDriver
synthdrivers.YamahaFS1R.YamahaFS1RSystemDriver
synthdrivers.YamahaFS1R.YamahaFS1RFseqDriver
synthdrivers.MIDIboxFM.MIDIboxFMDrumBankDriver
synthdrivers.MIDIboxFM.MIDIboxFMPatchBankDriver
synthdrivers.MIDIboxFM.MIDIboxFMEnsBankDriver
synthdrivers.KorgER1.KorgER1SingleDriver

# Failed to create envelope widgets
synthdrivers.SCIProphet600.P600ProgSingleDriver

3. Some drivers throw an exception when calling their store method, so I had=
 to exclude them as well:

#ArrayStoreException in patch store
synthdrivers.YamahaCS2x.YamahaCS2xBank2Driver
synthdrivers.YamahaSY77.YamahaSY77VoiceDriver
synthdrivers.YamahaSY77.YamahaSY77VoiceBankDriver

4. The K5000 bank driver has only completely empty patches. Thus it is not p=
ossible to edit or change any of its patch names. Is this really how a bank d=
river should work?

5. I had to do a couple of workarounds in my test code for devices behaving n=
ot as expected:
    - The Roland MT32 has duplicate editor names for two drivers. Perhaps no=
t a big issue but a bit misleading. For some reason some of the patch names c=
ontains in a bank editor contains weird characters.
    - Novation Xio pops up an error message when storing a bank patch
    - The Nova1 displays a popup when send a patch to ask for which part the=
 patch should be sent to. I think this should be handled differently.

----------

I have also made another test case called PatchLoadingTest. This is still wo=
rk in progress as only one synth (Yamaha DX7) is supported currently.=20
To be able to successfully test each driver using this test case I need a sy=
x file containing data from either a patch or a bank. You can generate an XM=
L file based on=20
a syx file (named like this: <full_driver_class_name>.syx) by running the ma=
in method of the PatchLoadingTest class.

Of course I will be grateful if anybody has the energy to review or test the=
 code and will happily receive any comments!

Br
Pascal=

------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Jsynthlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jsynthlib-devel

Reply via email to