Alphas

work-in-progress

What is alpha?

Alpha is a letter in the Greek/Latin alpha-bet-a that comes first before all others. These versions are built from the newest source code for testing purposes and may contain bugs or malfunction unexpectedly.

If you are interested in free software for general use please use the latest stable release versions from the synth and effects pages.

If you are interested in assisting with the project by identifying and verifying bugs, requesting new features and tracking changes the alpha versions are for you. For communication related to alphas please contact me via e-mail.

Rules

IMPORTANT, MUST READ!

You may use the alpha so long as you're aware of and accept the potential risk.

Alpha versions are released for testing and not guaranteed to be bug-free for regular use.
You may need to continue to use a specific alpha version to get identical results.
You should expect that alpha versions may not work perfectly.
New features and changes can lead to new bugs or issues.

I almost solely use alpha versions and it does not bother me if it crashes and I lose my work. I am aware of the risk and when something goes wrong I am able to fix the issue.

If you have read the rules (please do) the download section is at the bottom of the page.

Work in progress

What makes the alpha special?

The alpha is unstable meaning that features of the alpha version are expected to change. A bug discovered in a release version may be fixed with no other changes.

For a bug in the alpha version, an in-place fix will never be provided. A replacement version may be made available including a fix along with other changes. In order to maintain a stable version it is necessary that a lot of additional overhead work is invested to ensure any changes are fully compatible with the previous version. For that reason unnecessary changes and additions are not made to stable versions.

How to help

At times testing may be focused on specific issues. The general idea is to try to come up with new ideas to improve Xhip further before the next release as well as to keep an eye out for any bugs that might show up during use.

Please report any bugs or issues you have with the alpha version[s].
After checking the bug & todo lists below, if your issue isn't on the list yet let me know so I can add it.
In normal use the plug-in should never crash.
If the plug-in it does crash please report it immediately! If you can reliably reproduce a crash, providing instructions on how to do so will be extremely useful to me in fixing the problem. Reporting "it crashed" will not help me, I will have nearly nothing to work from with such a report without any information about what may have triggered or caused the crash.

Until the final testing stage before release small bugs (if on the known list) are not too concerning as the code may continue to change. That said, I'd be interested to hear about any bugs that are discovered in any version.

To do

5 April 2022

Xhip Synthesizer 8.1

Complete all effect changes.

Some prototype effect features need to be polished and finalized before release.

Update effect preset imports.

Some changes to a few effects were made which require mostly testing to ensure older projects load correctly. This will be relatively easy to accomplish by creating a project using all the old effects and loading it while debugging to identify any issues.

Minor GUI tweaks, alignment. Partially completed.

Improved kerning in general and specifically in larger font sizes.

New version/date/author chunks in preset banks.

This will allow the plug-in to automatically apply any updated versions of "factory" banks or warn/ask the user to backup or replace when they've modified any of the "factory" content in the "library" folder.

Linux xlib file dialog improvements.
"Show hidden files" option.
Fix issue with file overwrite confirmation dialog (doesn't show in all cases).
Include manual in distribution package.

The manual PDF and plug-in are now so small they can both be included together along with "factory" preset banks. The last alphas already implemented (since r1100) default banks included directly in the plug-in itself.

Improvements for Windows installer (NSIS.)

The installer needs a "getting started" chapter and a nice Xhip logo.

Other modifications are possible too; I'll investigate more later.

Xhip Effects 7

Complete all effect changes.

Some prototype effect features need to be polished and finalized before release.

Update effect preset imports.

Some changes to a few effects were made which require mostly testing to ensure older projects load correctly. This will be relatively easy to accomplish by creating a project using all the old effects and loading it while debugging to identify any issues.

New effects.
I'd like to include:
EQ
Mid-side
Distortions (one or two.)
Some of these are already working such as a crossfeed (mono bass or headphone filter) effect.
Extended to do

Xhip Synthesizer 9, 10 & Effects 8, 9, 10

Basic skinning.

While the core features of basic configuration and GUI scaling are already working, this system will likely only be partially completed for the next release of the effects. For the synthesizer some progress has been made toward a working implementation but it is not yet capable of handling user configuration.

Full skinning.
The GUI engine used in Xhip Synthesizer and Effects includes basic configuration that was not previously exposed to the user. Work is already underway to implement a skinning and configuration system that will eventually evolve to provide all the features currently used by the plug-in GUIs.
Complete configuration of all aspects of the GUI.
Adjustment of widget positions.
In-GUI menu system or configuration dialogs: skins, fonts, options.
More advanced "skin files" including skin resources, configuration and layouts.
Unification of all systems used in Xhip Synthesizer and Xhip Effects.

Xhip Synthesizer 9

Map-CC presets in human-readable format.
Basic skinning.
This likely will not include widget positions or advanced features.
Sample configuration page.
Store samples in presets/banks.
Store remaining control data in presets (polyphony, unison, etc)

Add "lock" to each to select between global/preset source.

Preset and bank 'attachments'.
Already working due to the RIFF-like data format.
Text files, images, audio (example: preset comments.)
Monophonic mode switch to sync modulators in polyphonic mode.

If mono and tempo modes are both enabled, attempt to read phase from song position (sync to host.)

Preset transpose/tune parameters.

Both a global tuning affecting all KBT destinations as well as oscillators 'range'.

Sync phase parameters.

Both for oscillators, modulators and possibly the filter.

MacOS version.

A functional version has been built without a GUI. Porting of the GUI library is currently pending (= low priority.)

Xhip Synthesizer 10

Complete skinning support.
More effects;
Effects routing configuration, feedback?
Additional audio inputs?
Sends, preset send levels?
Sample editor (names, loop points, ...)
Additional back-panel features (mutant's envelope asymptote, ...)
OSX VST and AU plugins.

Already exists. Components of the GUI need to be ported.

Hazy idea field

User manual
This is 'complete' and available on the synth page.
I'd appreciate any help with formatting, proofing and requests for further information or new sections that should be added.
Advanced back-panel configuration page (more wild options?)
Additional GUIs, specifically a mini-GUI for preset browsing.
Drag & drop file support.
Extended waveshaper pre-filter (low/high?)

Planned for "Xhip 2" (different, new synthesizer)

New skin-based GUI system.

Most of the required implementation already exists to support the existing GUI. Putting it together into a highly adaptable system is another issue.

New waveforms, filter modes
Already exists. Can be tested in alpha version accepting some difficulty with preset compatibility. (In other words, works now without presets.)
Full "mod-matrix"
Already exists. Used in current version of Xhip. A GUI is simple.
I would prefer to call this functionality "modular signal routing" instead. "Mod-matrix" is a misnomer.
Key mapping, splits, layering
Mostly requires complex GUI functionality to support the features.
Advanced effects system
Quite simple and could be said to already exist, requires mostly GUI functionality.
Graph-based "drawable" oscillator waveforms, envelopes and modulators
Already exists.
Sequencer, arpeggiator, ...

Components already exist depending upon how you define these features. A working tracker/sequencer exists which includes features supporting arpeggios and sequenced parameter changes. Mostly requires a lot of GUI to support the features.

Fixed or new features

Improved reaper monitor bass-boost chain.

20 June 2022 (r????)
I've tweaked my bass-boost monitor chain to trade initial clipping on fast attacks for far reduced average distortion levels.


Basically, the attack time is longer ~20ms and this means 100% look-ahead would introduce far more latency. Instead, look-ahead is limited to 25%, which leads to ~1.166ms rather than ~4.625ms by allowing for some clipping if attacks are far more strong than average. This should in a majority of cases yield below 1/10th a Decibel over the limiter threshold and any clipping should be minimal and difficult to hear except in specially-designed corner cases.

I've uploaded a new version of cubanc.7z (includes improved chain) along with a separate bassboost_monitor_soft_attack.7z. Both these require the latest (alpha) versions of the effects and may not be compatible with the old release versions.


Lazy updates

15 May 2022 (r1326)
I haven't written a complete, detailed list of changes as many changes aren't yet finished. I'll write a list once I've completed a few more to-do tasks.


Changes:

Route & effects
Global/preset menu.
Bypass switches.
Modulation rate division.
Preset effects.
GUI back-end improvements.
New and modified effects.
Various fixes in both Windows and Linux.
Improved oscillator anti-aliasing kernel.

Previous releases
Updated Windows version

1 May 2018 (r1112)
This version is an updated compile of the Windows version of the plug-in matching the current features in the Linux version.


Changes:

Threaded dialogs.
Other changes from r1100 and previous versions.

Preset library and embedded banks

14 Mar 2018 (r1100)
This is a minor tweak to r1099 which fully implements the initial "factory init state" functionality using the embedded bank content.


I would like to get this functionality released officially for all versions (Windows, Linux, MacOS) in v8.1 as soon as possible. Before that there are some features that still need to be implemented and some additional tweaks associated with file browser dialog functionality (On Windows/MacOS the native dialog should be used.) It seems unlikely that I'll be able to release a full MacOS version as the GUI still needs to be ported, but the alpha can be updated.

Changes:

Preset library works fully.
Init state automatic generation.
When run without an existing init state, for example upon first run of the plug-in on a user account, the plug-in will automatically load the "Xhip factory bank" from the embedded content and generate the initialization state file.
This means new users will have the bank available immediately without being presented with an empty bank filled with "init" presets.
Updated "Xhip factory bank" with some improved presets and other minor tweaks.

Beginning of preset library implementation

12 Mar 2018 (r1099)
This feature includes embedded "factory" banks and presets and allows additional banks to be installed to a known location. These banks can then be loaded from directly within the menu system in Xhip's GUI without using a file browsing dialog.


Still to come are improvements to this system where the standard "factory bank" will be installed along with a standard init state when the plug-in is launched for the first time. This will allow new users to have content immediately available rather than a bank filled with init presets.

Changes:

Basic preset library.
A custom file browser and message box dialog.
GUI improvements.
The side-chain input switches in embedded effects are now disabled.

Native MacOS Xhip Synthesizer and Effects

25 Oct 2017 (r1037)
With both Xhip Synthesizer and Effects available on MacOS I can finally sigh and say "yes, sort of" when people ask about a Mac version of the plug-ins.

Native Linux Xhip Synthesizer and Effects

24 Oct 2017 (r1030)


Changes:

Implemented very simple double-buffering.
This eliminates GUI flicker almost completely.
Implemented native Xhip Effects.
The effects are now working completely as native Linux plug-ins. This version includes the recent alpha skinning and configuration features and has a fully resizable GUI. The GUI now defaults to 2x size and no longer includes any bitmap strips for widgets. Widgets are by default rendered directly and the self-rendered widgets have been improved significantly.

Some minor issues remain but these Linux versions are now near complete ports. The one exception is the lack of a file dialog for the synthesizer but the plug-in is still very useful without it.


Xhip Synthesizer v8 Linux (embedded resources)

01 Oct 2017 (r1012)


Changes:

Added embedded GUI skin resources.
This simplifies installation greatly. You can now simply copy the plug-in to your native vst folder and it should work.
Added in-window custom dialogs.
Due to xlib's lack of core support for modality (depends upon the window manager) I've been forced to create my own in-window dialog implementation.
The current implementation provides a "message box" dialog which should make the plug-in GUI much easier to use.
With the dialog system working it shouldn't be much trouble to implement a simplified file browser.
Various changes and fixes (revision number +38) that I won't bother to list.

There are some important issues remaining but the GUI is very nearly complete at this point and entirely usable with some work-arounds for missing file browser dialogs. (It is possible to use .fxb or .fxp files via your host's interface for states and presets.)


Xhip Effects resize/skinning

25 Sep 2017 (r1004)


Changes:

Implemented basic resizing functionality.
Added a GUI configuration file.
Added feature to parse in shared skin resources.

This requires a lot more work before it is reasonably functional for the purpose of skinning or advanced configuration. For now some very basic configuration is possible along with nearly complete static GUI scaling functionality.


Xhip 8 Linux /w GUI

2 Jul 2017 (r974)


Changes:

Implemented xlib SHM buffer.
In the end it turned out that the SHM implementation was less important than I thought. It was reasonably easy to accomplish though and is massively more efficient than the naive XPutImage method. The current implementation uses XPutImage as a fallback in case SHM isn't available but doesn't include checks associated with SHM support. Instead error-codes are checked and upon failure to allocate the SHM buffer the standard methods will be used.
Fixed issue with GUI redraw.
The function get_client_rect() was calling XGetWindowAttributes() as part of set_clip_rect() associated with every GUI item redrawn. Since this uses xlib's high latency communication protocol and xlib does not buffer the response the function call overhead was absolutely, unbelievably huge.
The data is now read from cached values rather than calling into the sysdep/xlib functions.
Improved xlib messageloop and associated code (timers, etc).

Xhip 8 Linux

30 Jun 2017 (r970)


Changes:

It's ALIVE!!!
Seems I need to implement a slightly different bitmap blit using an xlib shared-memory extension (SHM) as the current implementation is ridiculously slow.
Launch the plug-in first without installing the skin. It should work fine (no warning messages implemented yet but it obviously won't have the skin resource data.)
If it works extract the skin data into ~./xhip/synth/8/ and delete the ~./xhip/synth/8/bitmap cache/ directory and content.
Close your host and re-open the plug-in GUI and you should have bitmaps and fonts!
TODO includes embedded resources, SHM support and beta testing before an announcement and release can be made.
Various parts are missing: Dialogs like messageboxes and open/save file and a few other bits still need to be implemented. I'll likely use wxwidgets for this if possible. Beware the horrible messagebox stub implementation: hit a key to close it; it doesn't actually work at all.

Xhip XP

2 Jun 2017 (r880)


Changes:

Windows XP compatiblity
Some small changes were made to fix issues on Windows XP.

Download

You've read the rules, right?

I've switched to 7z format for the alpha. It can be extracted with 7-zip, a free archiver.

Requirements

Windows Vista (recommended Windows 7 SP1 or greater)

Known bugs or issues

26 June 2018

If unlisted issues are discovered please let me know and I'll update this list as well as my TODO.

Linux Issues:

The file browser dialog remains incomplete.
There are issues with the dialog such as no "show hidden files" option, the "sure to overwrite?" confirmation does not always work.
The dialogs lock keyboard/mouse focus.
This is complex to solve. A work-around is to close these dialogs before switching focus from the plug-in GUI.

MacOS Issues:

No GUI on MacOS.
Porting the GUI to MacOS will require a lot of time/effort. Not planned until after v8.1 has been released. Planned for v9.

Xhip Synthesizer Issues:

There are remaining minor imperfections in import of v7 presets.
If this is an issue please let me know. Currently it is not important enough to warrant further effort. The issues are KBT zero-point related and corrected by adjusting times, rates or frequencies by a unit stepYou can move by one unit step with mouse-wheel.
This only gives approximate results in some cases,
but the result is generally satisfactory.
?
.
Some core features are nonintuitive.
This requires an updated installer with a short "getting started" page. Additional menu-trigger buttons are not ideal; sub-menus may improve ease of use.
The manual should be included with the plug-in.
Ideally including the manual with the plug-in (archive or installer) directly should improve readership and education.