Wow, how time flies. Well I apologise for being somewhat slow updating the site recently. Partly due to Christmas and New Year things and also (and more to the point) because
I've been working hard on the code. A huge amount of work has been done and I am pushing hard to get the initial release out this month! So, without further ado here is a quick rundown of the application
in screenshots...

Firstly, here is the main screen. Rather than constrain everything into a single window with lots of tabs, the Performance Editor is designed as a series of seperate windows
which can be opened, closed and positioned at will. This main window is always open and provides the starting point from which all the others are accessed. As you can see, there are some incomplete and
missing elements in this screenshot. Firstly, the voice names are not updated and secondly, only part 1 in the 'Part' area has got a button for ARPs. Of course these are just interim states of play and
the released version will have everything filled in and completed :)
Clicking on a button opens a window containing the related controls to that function. This permits you to lay the screen out to your preferences rather than having to toggle
between lots of tabs. Some controls are replicated across multiple windows as well. For example you will see the 'Tempo' displayed in several places. Where this happens, adjusting any instance of the
parameter will automatically update all the others, so everything stays in sync.

Here we have the 'Common EG' window. As with all 'Common' parameters, the values in here are applied to all 4 parts within a performance as offsets to the values configured
within the voice or part.

This is the Master Level, EQ and FX window. At the time of writing the FX sections are not implemented so there is just a placeholder space for them right now. The green bars in the
EQ section can be dragged up for positive values, or down for negative values. Negative values will be shown in red and positive values in green, with zero being vertically central. This is a colour scheme
I'm retro-applying to several positive/negative type slider controls. The 'Q' values on the Low and High frequencies are greyed out as the shape parameter is set to 'shelving'. If it is set to 'peak'
(by clicking on it) then the Q controls become active. This 'greying out' approach is used in a few places throughout the GUI to indicate controls that are not currently active due to the settings in
other paramneters.

The 'Common ARP' settings here are another example of controls that appear in more than one place. The Swing, Quantize Strength, Gate Time and Velocity knobs are replicated in
a tab on the main screen, but also belong here. This permits ready access to them even if they are not displayed on the main screen due to another tab being selected. The little icons around the
Sync Quantize Value knob took me hours to draw and align! It's little things like this that can really soak up the hours.

This window is where you can determine what the display format for voices in the USR banks will be. From here you can choose to use the factory default names, a generic set (which
just displayed '--USER--' as the name for all USR voice names) or the actual USR voice names on the XS. This latter option requires a bulk query which takes a little time to execute, depending on whether
you are using mLAN or USB for your MIDI connection. The application is smart enough to query the voice names as fast as the XS sends them so it will dynmically adjust to the speed of your MIDI connection.
Queried voice names are saved for future reference, so the 'forget custom voice names' option is provided to clear this cached data should you so wish.

This screen permits you to define the controller assignments permitted by the XS. Controllers can either be selected from pull-up menus (using the right hand controls) or input
directly by clicking and dragging on the number boxes to the left.

This window is where you define the parameters for individual parts. There are 4 identical windows, one for each part. ARPs and FX are not included in this window as they require
a goodly set of controls themselves. Clicking on the 'Edit Arpeggios' button brings up the following window:

This window is currently being worked on, so not all the labels and values may make sense in the screenshot! As with the part edit window, there are 4 instances of this window,
which correspond to the ARP settings for each of the 4 parts within the performance.
So, there you have a few glimpes of the application as it currently stands. There are some things I haven't shown here and some things that will be added to these existing
windows but progress is good, and it's working really well right now. The main things required to get it finished up ready for the intial release are as follows:
- Finish the part editors
- Finish the voice selection controls
- Implement the A/D related controls
- Finish the ARP editors (this will include the ability to add notes to arpeggios)
- The initial version of the FX editors. The first released version will permit selection of effects, but not editing of them. This will follow in a subsequent release.
- Complete the virtual keyboard (which permits playing of the XS via an on-screen keyboard for convenience)
I am still working out the fine details of ARP editing. There are some subtle dependencies which need to be addressed. For example if you have a drum voice selected then the
range of available ARPs is different than if you have a normal voice selected. There's a bunch of other gnarly things to work on too, but I've got a pretty good idea of the way I want the finished thing
to work so I'll be getting on with that in the meantime. At this point I'm aiming for a solid functional release initially, and will be adding extra features to it in subsequent updates. For example I'd
like to have a semi-intelligent performance generation capability which can create nice sounding pseudo-random performances based on some input data... think along the lines of "generate a split performance
with a bass on the lower half, a lead on the upper half and a funk-style ARP" for example. I'm sure I've missed out some other things in this post but it's all in the works!