JAX CONVOLUTOR PRO

Initial (pre) release version 1.8

IMPORTANT: All JAX Audio Units should be started with the main (distribution) app first (ones), because this is required to properly initialize the included resources.

This is the first public PRO version of the JAX Convolutor, enabling importing and loading own IR (impulse response) files.

The engine is identical with the PE version 1.8. There are so many things planned to be added with the next releases.
We are shipping this now, because many enthusiastic users are desperately waiting for the import feature.
So you have an option to actively support this development, which is extremely time consuming and difficult to achieve.

If you import own IR files, please ensure these are stereo, 44,1 kHz. The file format doesn't really matter.
JAX Convolutor PRO should import all supported audio formats, that are officially supported by iOS, also from iCloud and compressed formats.
Other sample rates may not be resampled on the fly. This will probably be changed with the next releases.
P.S: You may manually correct the sample rate with the stretch parameter which effectively alters the sample rate and thus, the tone of the reverberation (pitch link off).

Special IR sweeps are not supported (only impulse reverberation files, which are usual audio files that sound like a shot, just reverberated).

While importing, the files are converted and placed into a shared system group folder, which is not visible to the user.
A later update will provide a special extension, that is able to manage (and exchange) these files within the iOS 'Files' app.

All imported files will be placed into a sub folder "IR/08 USER". The IR selector tree view will reflect the changes afterwards.

Please note, that the length of files is currently unlimited. You may check out yourself, what lengths are supported with your device.
We recommend to use only files under 128 seconds. Or use downsampled versions. Please note that the file length matters. The longer the files, the higher the CPU hit will become. We did our best to support really large files for creating unheard spaces.

If importing from within the Audio Unit fails, always try to import with the main app, as there are certain memory limitation (and rumors regarding that) with AUv3 Audio Units.

You may get creative and build your own impulse response files from all kind of rich spectrum noisy samples (with external audio editors - preferably something that has spectral editing capabilities).
Shape them, modulate them import them, just run them!
Convolution is not just about aiming to re-create real spaces. It is at very first: EXCITING CREATIVITY.

Some last words to BUGS: Bugs are everywhere and in-avoidable. Please support your developers actively by switching on
sending automated anonymous crash reports to the apple servers. This is secure and no personal data is transmitted.
Such reports are essential for identifying device specific problems and errors inside the code.
And it will enable the developers to fix them in a short period of time, as you may expect.


Maintenance update version 1.9

- There was a fairly gritty sound caused by a wrong optimization. This has been fixed.

- A new global option can switch between different render modi, which affects performance. The UI has got new controls for this.
LQ is a low quality rendering mode, especially for performance reasons. But also the sound is slightly different (muddier) with that.
HQ is the better (not the best possible yet) rendering quality. It uses clearly more CPU cycles.
PASS will completely bypass the convolution engine for testing and temporary suspending purposes. It is useful to free the CPU from overload instantly.

- There is an inbuilt reverberation detection algorithm now, which auto-suspends the engine if very quiet (inaudible) levels occur.
It does not make any sense to continuously convolute milliards of samples that are inaudible. Most audio units actually have such issues.

- The preset loading and parameter recall with IR load should now work as expected.
Please note, that this is a quite difficult thing, because Audio Units are limited in doing allocations and file operations while operation.
It is also complicated because AU parameters do not support raw data or strings but merely floating point values.

- An offline rendering bug was corrected. PE users reported problems with rendering 'offline'.
It is highly problematic, if hosts do a separate processes for 'freezing' and exporting audio with (new instances of) audio units invoked.
Some hosts even do allow to select completely different (differing) global parameters (sample rates and block sizes) for this.
This is conceptually a quite bad idea, as this may lead to different rendering results and is also highly problematic for the audio units operation,
as there may be static resources and dependencies between multiple running instances and other stuff.
A host should actually do the down rendering of the audio stream exactly the same way as it does the realtime rendering to prevent theses potentially problems. If resampling and/or format conversion are required, this should be done afterwards by the host. Only this way consistent results can be expected by the users. 'What you hear is what you get' is a logical paradigm here. If it works realtime, it should work with freezing and exporting exactly the same way in 'offline' modi!

 

Maintenance update version 1.95

- We have changed the Dry/Wet scheme. The reverberated signal can now be completely isolated from the input signal.
Previous versions had a max. 50/50% percent "Mix" of the input and its convolution result. So if you want to recreate the 100% dry/wet of the previous versions,
please set the dry/wet parameter to 50% now.

Complete isolation (100% now) enables to cut out the input signal completely (this is thought for supporting send busses).

- We got advices that some (long) user loaded IR files will produce very quiet results of reverberation.
The problem here is most likely, that these files are not properly normalized. Convolutors expect normalized levels.
This effect of reduced loudness will accumulate, if very long IRs are not normalized, because the larger the convolution tail is,
the more pre-calculated internal loudness reduction must be applied for a correctly leveled convolution result.

You may correct loudness with the reverb gain parameter up to a certain amount manually.

- Better use quality produced IRs or preprocess such files prior importing. Such IRs will most probably be files, where the dynamic and the stereo field has been optimized.
IRs with low dynamics tend to become quiet and weak. You also may become creative, if you feed some sort of stereo noise with rich frequency content into JAX Convolutor PRO.

Some IRs, optimized for certain commercial convolution engines may not be automatically optimal for JAX Convolutor without editing or some preparation.

- Note: JAX Convolutor PRO will NOT normalize IRs on import, nor will they normalize cut parts of an IR when editing,
even if the display always displays normalized waveforms for better visual control.

- JAX Convolutor PRO expects IR files with the sample rate of the current processing sample rate.
These will not be stretched on import but you always have the possibility to stretch them with the IR stretch parameter manually.

 

JAX CONVOLUTOR PE

Initial release version 1.6 (PUBLIC BETA)

- First release was made to check user device capabilities.

Version 1.7 Maintenance Update

- There was a broken piece of code due to a forgotten debugging option, that prevented the processor to apply S.R.C. on both stereo channels.
Only the left stereo channel was processed with our 'Selective Range Convolution'. The right channel always was processing with full range convolution.
This has been fixed now.

- The S.R.C filter range parameters have been adjusted to a more logarithmic scale.

Selective Range Convolution is our special optimization technology for full convolution processing,
which implements a range filter directly into the kernel of the convolution processor.
This filter is able to perform additional filtering of the reverberation effect along with a significant reduction of the entire CPU load.

- We increased the loudness of the resulting reverberation.

Further Performance optimizations

- We reduced the CPU usage by another (quite drastic) performance optimization.
Also older devices should now be able to use JAX Convolutor PE.

We assume, that most of the released competitor products do not really perform a full convolution but use some dirty tricks,
merely doing a half convolution or another kind of reduced convolution processing...

However, we are able do that too. But this will reduce the quality of the convolution.
And we won't provide such software *silently hiding the facts* as being a high quality convolution processor.

Please understand, that JAX Convolutor is a true stereo processing convolution effect, supposed to deliver highest quality.

The JAX Convolutor Pro now includes the option to switch between performance mode and high quality mode.
JAX Convolutor PE uses this optimization per default.

Version 1.8 Performance & Maintenance Update

JAX Convolutor is due to its processing architecture an audio unit that requires larger rendering buffers in general.
Please read the articles on our website https://midi.digitster.com

- A factory preset loading problem was corrected. The default factory presets were all initialized to zeroes, which resulted in silence after selection.There are no useful presets yet either. This will be implemented with the PRO version.

Background: AUv3 does not allow to save IR files or file names with the presets, only floating point parameters are supported. This is a huge problem and it's unthought. We currently solved this by creating an internal database, where only an index to the IR file is saved with the presets. IR files are automatically registered upon import and a unique index number is assigned. But if the IR file is deleted manually i.e., this index may become invalid.

- We changed the Audio Unit to support 48000 Hz. Previous version were rendering at 44100 Hz.
This change was made for the reason, that all latest Apple (PRO) devices are fixed to 48000 Hz system sample rate per default.
Possibly this will lead to slightly higher CPU usage on older Apple devices, as these use 44100 Hz per default.

- We provided the included IR files for native support of 48000 Hz, 32 bit floating point data.
JAX Convolutor does still convert all IRs when importing to 32 bit data audio, which is the native processing format in iOS.
These files will load faster and prevent conversion upon loading. Please note, that old distributed files may be misinterpreted in length now.

- Latest 'black hat' optimizations were removed and replaced with some 'gray hat' optimizations, reducing current CPU impact (of latest version 1.7) again.
Technically we reduced the convolution range by disabling convolution processing for (nearly) inaudible frequencies.
This still reduces entire possible quality but may deliver significant better quality than the competitors by reducing the CPU hit significantly.
Rather than processing milliards of inaudible samples per second and wasting precious CPU.

Our JAX Convolutor is a special realtime stereo to stereo processing unit (was originally thought as a True Stereo convolution, using 4 different (or even just more) convolution channels). That means there are at least 2 completely independent *dynamic* convolution engines for the right and the left input channels, that should be processed thru a high quality stereo IR at least, making it suitable for using as a mastering reverb for instance. So our audio unit will use twice as much performance as some other, ... eeerrrm ... much more simple, static convolution effects.
It also very much depends on the used realtime parameters which and how many convolutions are involved and how these are mixed together, this is the main reason for higher CPU usage, because it's a highly dynamic convolution approach.

If you want to load 100 instances of convolution reverbs, please use something different for that. ^^

JAX Convolutor is therefore not optimized for usage with mono IRs, nor ist is thought for usage with short (cabinet) IRs and such. And it also will not in any future. Commonly the quality of available IR files is generally quite low and ppl also do not easily understand, what convolution is at all nor how it really works. Mono to Stereo convolutors i.e. cannot be used as a mastering reverb for obvious reasons and simulating static cabinet sounds surely can remain a domain of other providers. ^^

Users have the possibility to control CPU hit manually by using our advanced S.R.C. technology (Selective Range Convolution) with range filter 2. This filter has some noticeable latency. S.R.C. is in fact a FFT filter, implemented directly into the convolution kernel, reducing the convolution CPU hit this way (the selective frequency range being effectively convoluted). If that does not work for you, please use the other filter modi, which are build on analog models, better for realtime automation and more drastic results.

- Parameter smoothing for all realtime convolution parameters was implemented to prevent the automation zipper noise.
- Advanced direct MIDI automation will be implemented into JAX Convolutor PRO only.

- We will mainly concentrate on the PRO version and its features now, as the basic performance optimizations are finished.
- We highly recommend to try before buy. The JAX Convolutor engines are shared by both versions of the Audio Unit.

- We cannot guarantee that we will re-introduce True Stereo Convolution with JAX Convolutor PRO, as this is a big performance problem due to the iOSs architecture. It rather uses ! less performance ! to use multiple instances of our JAX Convolutor, then trying to achieve that with a single instance (yes, which is very strange..), because there is something quite suspicious with the threading/multicore processing in Apples AUv3 / AudioGraph architecture. The problem seems to trace down to energy and memory management, which prevents a single audio unit to aquire higher performance demands.

 

Maintenance Update Version 1.9

- We synchronized the engine with the current release of JAX Convolutor PRO
Please read JAX Convolutor PRO release notes.

 

Maintenance Update Version 1.95

- We synchronized the engine with the current release of JAX Convolutor PRO
Please read JAX Convolutor PRO release notes.

JAX UNISONIC
VERSION HISTORY

 


First Combi-Update 1.1 - 1.3

1.1

- Added 8 new AU parameters (panorama potentiometers 1 to 8).

The panorama positions can now be adjusted and automated for each individual voice.
The spread parameter remains active and adds to this. Due to the fact, that stereo spread is implemented directly inside the pitch shifter bank,
the final panning results may be an accumulation with some side effects.

- The activity state for the voices was not updated correctly when recalling parameters, this is fixed.
- The state of the goniometer button was inverted to correctly reflect the overlay activity.
- Preset format was changed.

1.2

- Added 8 new tempo delay units and corresponding AU parameters.

Each generated voice can now optionally use its own tempo synced stereo delay for generation of sequenced pitch shifting. The tempo is global for all voices.
This delay has no feedback parameter. The tempo is usually called up from the host application, which must support this. It also can be adjusted manually.
A beat based tempo division is used for each voice, where 1/1 means one beat (quarter note).

Please note, that Unisonic (as the name suggests) was initially made as a UNISON / ENSEMBLE effect generator.
The implementation of the delay units goes far beyond the initial concept and was added due to user requests.

- Tempo settings are currently not saved with the presets.
- Preset format was changed.

1.3 - 1.5

- Advanced MIDI implementation
The voices respond consequently on MIDI channels 1 to 8, corresponding to the voice numbers.
MIDI keys are mapped to the transpose parameters (zero point is MIDI note 60), which allows to switch transpositions in realtime.
Also the voice mute parameter is assigned to the MIDI Sustain controller.
Pan, Volume and Tempo division have got individual MIDI controllers per voice and channel too.

Please read the manual for details of MIDI implementation.

- We developed a complete new approach for direct MIDI automation, to support UI updates.
Please note, that direct MIDI automation occurs directly inside the Audio Unit kernel.
There is usually no possibility to update the UI from within the core DSP kernel process,
as the UI stuff of an Audio Unit is a completely different thread and the kernel does not have any synchronized access to this.
Some tricky programming is required to update the UI with direct MIDI automation.

- The manual was updated to reflect latest additions.

 

Maintenance Update 1.6

- There was a problem when rendering offline with specific hosts, reported by users, that has been fixed now.

Background:
(Many host developers continuously try to teach audio unit developers. Now we want to teach these host developers. ^^)

It is highly problematic, if hosts do a separate process for 'freezing' and exporting audio with (new instances of) audio units invoked.
Some hosts even do allow to select completely different global parameters (sample rates and block sizes) for such actions.

This is conceptually a bad idea, as this may lead to different rendering results and is also highly problematic for the invoked audio units,
because there may be static resources and dependencies between multiple running instances and other stuff happening at runtime.

A host should actually do the down rendering of the audio stream exactly the same way as it does the realtime rendering to prevent theses potentially problems.
If resampling and/or format conversion are required, this should be done afterwards by the host. Only this way consistent results can be expected by the users.
'What you hear is what you get' is a logical paradigm here. If it works realtime, it should work with freezing and exporting and : exactly the same way and result.

 

Maintenance Update 1.7 (specific host problems, again)

- The inbuilt MIDI Control of JAX Unisonic is now optional, an additional AU parameter and a control was added to the user interface.

Background:
JAX Unisonic is basically an *audio effect unit*. (We implemented direct MIDI control merely for more comfort when automating parameters.)

However, some host applications do implement MIDI control to audio effect plugins in a very questionable way.

The MIDI stream to insert audio effects, (which are audio effects, not MIDI effects!) should be *optionally* routed by host applications.
Otherwise these audio effects most likely will not work as expected, if inserted into MIDI instrument tracks for instance (which expect MIDI only).

The MIDI enabled effect audio units do not know anything about of where they are inserted.
So this is a potentially undefined behavior, if inserted into MIDI instrument tracks and the host then just forwards these MIDI messages for the instruments wrongly to the connected effects.

We therefore added the option to suspend our direct MIDI control to prevent these hosts forwarding WRONG MIDI data uncontrolled to the chained insert effects.
So MIDI control is now switched off by default.

If JAX Unisonic is inserted (as an audio effect) into an instrument track, for instance, the MIDI tor the instruments should NOT be forwarded (passed thru) to the effect(s),
as this results in a senseless and questionable, uncontrolled MIDI routing then and (out of) control this way...

The MIDI data on such connections are thought for the instruments, but surely not for the chained insert effects!
For doing that right, hosts must provide independent MIDI control channels for MIDI enabled audio effects, as some hosts already implement correctly!

Please note, that you now may ignore any direct MIDI capabilities of JAX Unisonic completely, by only using parameter automation.
Some hosts will let you assign MIDI controllers to AU parameters and let you do all automation this way.

We will, b.t.w continue teaching host developers for doing it right this way. ^^

 

User Request Update V. 1.8

Many thanks to Paul Levis, actively supporting us with the bug report!

- There was a nasty logical coding error, which prevented JAX Unisonic to behave correctly, that is fixed now.
The parameter state was wrongly reset while operation with certain actions. Rendering down or freezing resulted in dry sound.

- The sample rate was changed to 48000 Hz by default now. Because all latest Apples devices are fixed to this system sample rate.

 

 

JAX STEREO TOOL
VERSION HISTORY


2.0
(initial iOS release)

 

2.1
(first maintenance update)

this is our first update after the initial release and applies mainly 'cosmetic' corrections and usability fixes.

A. we improved several things with the touchscreen behavior.

- the internal view is now movable with one finger as long no control is touched.
- sizing is done with common 2-finger pinch2zoom.
- resetting the view to default size will be performed if a double touch with 2 fingers occurs.

note: our audio unit plugins are self-resizing to fit virtually any host-provided container size.
the views also can be freely resized and moved inside. multi touches for controls are not supported therefore.
the view positions are not saved to user defaults for certain operational reasons.

B. there was an internal compiler switch preventing to perform the "recover" and "test mono compatibility" modi.
we corrected this, it is now working as expected.

C. the contrast of the screen can now be adjusted.
we adoptet the feature from our JAF seies, to adjust display contrast of the audio unit's user interface .

D. the emphasized color was changed from rather cold standard yellow to a more friendly orange.

E. the manual and the website resources were updated to reflect the changes, web links were actualized, a support link is available.

F. we will now remove successively all dependencies to IAA technology from our distribution apps.
eventually announced IAA features are invalide hereby.
despite the fact that IAA never really was a real user experience than more a hack with loads of problems and distraction,
Apple has marked this 'technology' as deprecated now. the future are audio units and we will build entirely on this new technology.


2.2
(second maintenance update)

this update fixes mainly functional issues with the Audio Unit application programming interface.

A. exposing AU parameters

we implemented an extra function to (additionally) expose parameters to the hosts.

note: there were issues reported with some host applications, not exposing our audio unit parameters at all.
this is quite strange due to the fact, that any audio unit per default implements a so-called 'parameter tree', that can (and
actually also *must*) be iterated by a host app to receive all that parameters of a loaded audio unit.

our units did and * still do * implement this parameter tree. the distribution app even uses this internally,
because this app is basically a minimal Audio Unit host, nothing more and nothing less, working with that
... bespoken parameter tree.

So we do not understand, why some hosts are not able to just expose our published audio unit parameters (!?)
However, we now use an additional interface function to expose some main parameters to the host application with this release.

AUM for instance exposes this "main parameter" of the unit successfully, but on the other side FAILS to list our parameter tree !? that is absolutely un-logical and must be an issue in AUM.

B. AU parameter automation (which by the way, depends heavily on the parameter tree above)

our JAX and JAF series were initially planned to behave and be used like external hardware devices,
so we concentrated to classical hardware MIDI implementation but ...

parameter automation should now be possible. there was a missing link, that prevented our units to receive parameters
from the host inside the rendering block. this usually happens, if the hosts do so-called "parameter automation".

although, many different host applications do implement this feature obviously differently and as long this is the case,
we cannot guarantee the functionality of our plugins with these hosts right now.

the simple fact, that our units can receive externel MIDI messages and translate these to parameter changes in realtime proves, that the parameters actually can be automated out of the box.

by the way: we tested the new parameter automation with cubasis successfully! all parameters were recorded and also shown with their correct names from the parameter tree! play back with parameter automation actually was showing moving (remoting) the controls as expected.

C. continuing removing IAA

Apple has deprecated this technology and we will support this actively.
Our plugins may still be listed as IAA but we advice you to no longer build on that. Please use the included audio units.

D. removed the internal frame of the user interface

some users did not understand the pure sexiness of a gray frame around the center of our plugins. so we removed it.
you can be sure, that it won't come back ever. it feels offended now by you!

E. added 'reset' buttons
the parameters 'panorama' and 'stereo width' got a small reset button. if pressed, the parameter will be reset to defaults.

F: the integrated web browser (product page)

some users reported false issues with the integrated web browser of our distribution apps (the 'help' button).
please note, that any external links (as opening an email client) or any popup links inside the pages are not allowed to open within the app. this may give the the wrong impression, that these links are defect. no, it is an internal restriction that is required for other reasons. users always can go to our product pages with any external web browser.

2.3
(third maintenance update)

IMPORTANT: the type of the audio unit has been changed to provide MIDI support ('aumf'). existing projects possibly must be updated to access the new AU type.

A: ui improvements

- the user interface was completely reworked to provide much better contrast adjustment and readability and to fix some glitches with zooming and moving. the main controls now additionally give visual feedback, if tapped.

B: the contrast overlay controls can be hidden/revoked by a one finger long press gesture

- sometimes the ui moved around while adjusting the contrast with the slider. we fixed this.

C: AUM parameters

- the parameters are now specially exposed to the the AUM host app. the publishing of the main parameter (stereo width) disappeared therefore, because of the AUM MIDI type menu.

D: MIDI parameters

- the type of the audio unit was changed to support MIDI automation directly. the parameters stereo width, panorama and also volume can be automated with the standard continuous MIDI controllers 11, 10 and 7 now. The distribution app therefore got some new buttons to establish MIDI connectivity.

E: parameter interpolation

- users possibly want to dynamically automate volume, stereo width and panorama. so we implemented parameter smoothing for these realtime parameters to prevent zipper noise with automation. Especially MIDI automation requires parameter ramping, because MIDI values are usually quantized to merely 128 raw values per controller.

- note: some parameters (sample offset and all switches) are not thought for realtime automation and still may produce clicks or zipper noise when tweaked. this lies in nature of things and would require too much effort and advanced techniques to fade between states, which is not the purpose of this audio unit.

F: new bezier mode

- the correlograph can be toggled between points cloud and bezier mode. the bezier mode requires much more performance. so it is tagged as "experimental". while latest Apple devices should have enough power to run it, some older devices probably will make the UI stuck, while it is on. it was not even easy to get the points cloud to perform acceptably.

- if you do not use the graphs permanently, we recommend to switch it off, as this significantly improves entire graphics performance and reduces CPU usage.

G: the phase shift display was fixed to reflect the correct sample offset count and corresponding milliseconds value dependent of the current active samplerate.

H: the graph is now always proportionally resized with the plugins interface. the previous sizing was independent of the main ui, confusing some users.