[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