ESD v3.0 R2 Fixed some problems with binaries (both Demo and Registered version) not working in some setups ESD v3.0 (FINAL) Licensing policy has changed. This software is now distributed in DEMO version only, where plugin export is disabled. The full version must be purchased directly from ELENA DESIGN. Please read the new EULA included. ESD3 is now also available for MacOS but only to registered users and on request. Fixed serious data corruption bug affecting Magnitude Smooth and other modules with MAG output Envelope Extractor: fixed serious bug which could cause generation of INFs/NANs Normalize Spectrum, rewritten and fixed conversion bug when using dB units Frame Level: RSS mode now called indeed RSS, added MIN(m) and RMS modes Added Magnitude / Min Max Hold module Added Modifiers / Level Response (frame-based equivalent of ED pack's Level Response) Compression Curve (misnomer) renamed to Limiter Curve, added Flat version Added Level Line module Added Freq2ScalePos modules (reversed) Added Math / Lin X Fade (like Modifiers / X Fade but with fixed linear response and fade value normalized to unity) Re-synthesizer: fixed Overlap pin missing default Some minor category re-sorting /re-naming Some example projects fixed / revised Minor Manual revisions ESD V3.0 PRE-RELEASE 2 Added warning requesters against abusive oversampling usage NOTE: some modules (Audio 2 Frames, Frames 2 Audio, all AUDIO/ modules) got a new hidden pin to detect abusive oversampling usage. This will NOT cause any rupture with existing projects, but will cause warning requesters about a different module version being used (harmless, just re-save your projects). Also, wires connected to those modules shall be re-layouted in case they were laid down ordinately (SE BUG). 'FMA' version no longer distributed since it proved problematic on too many machines (GCC bug) Spectrum Generator: (hopefully) fixed potential crash on startup PeakDecetor class: fixed accuracy error which could cause infinite loops (cpu hang), most notably with the Pitch Shift module All modules accepting mouse input also reacted to right or middle button, fixed Added Utility / Draw Spectrum Added Stereo version of the Audio Short Convolver Audio Short Convolver: added IR Fix option Added I/O / Frame DSP To GUI Frames To Audio: fixed output not being static if started without input Analyzer: the internal BLOB spectrum parameter was saved to presets, causing unnecessarily long preset files and space wastage. This is impeded now. Frame Saver can now locate files inside plugin folder using relative paths [Internal] All BLOB spectrum output pins are now transmitting an initial update (empty blob) as per SynthEdit standard if no data is present on startup (this was left disabled but then judged potentially risky) A couple of example projects added ESD V3.0 PRE-RELEASE 1 THIS IS A GIGANTIC UPDATE OVER ESD V2. THE CORE CONCEPT AND PHILOSOPHY OF ESD HAS NOT CHANGED AND WILL NEVER CHANGE, BUT SOME NECESSARY IMPROVEMENTS WILL CAUSE COMPLETE DISRUPTION WITH EXISTING PROJECTS. VERY SORRY BUT YOU WERE WARNED ABOUT THE "ALPHA" STATUS - ESD IS STILL AN EVOLVING PROJECT. THE UNPLANNED, ABRUPT AND POSSIBLY UNUSUAL SWITCH FROM 2.0 ALPHA to V3 WAS NECESSARY AND NOT EASY TO PREDICT IN TIME. TO RENDER THE TRANSITION LESS PAINFUL, THE NEW ESD .SEM LIBRARY HAS BEEN RENAMED TO "ED_SpectralDomain3.sem", THE NEW MODULE FOLDER HAS BEEN RENAMED TO "SPECTRAL DOMAIN 3" AND THE NEW MODULES HAVE NOW ALL THEIR IDs AND NAMES PREFIXED BY "ESD3" VS "ESD". THIS WILL ALLOW 2.0A2 (latest previous public release) and 3.x TO LIVE TOGETHER AND TO MIGRATE YOUR EXISTING PROJECTS GRADUALLY. *** HOWEVER, NEVER NEVER NEVER CONNECT 2.x AND 3.x MODULES TOGETHER !!! *** GENERAL: ------------------------------------------------------------------------------ Support for streaming or static (aka "free") frames is now completely transparent to the user. All spectral modules can now detect streaming or static frames and behave consistently in every possible situation, as for when updating the resulting output frame. Therefore, forcing constant frames to be streaming with the Frame To Stream module when combining them with streaming frames, which was really inefficient and stupid, is no longer necessary. Spectral frame transmission and reception is now internally performed by new custom BLOB pins specialised for spectral frame transmission, avoiding unnecessary copy operations for reduced CPU usage and memory wastage, yet using the same consolidated and simple raw spectral format of V2. HOWEVER, THE UNUSED IMAGINARY VALUES OF THE FIRST AND LAST BINS ARE NOW INTERNALLY USED TO PROVIDE ADDITIONAL INFORMATION FOR DATA TRANSMISSION, NAMELY TIMESTAMPS, WHICH IS MANAGED BY THE NEW FFT BLOB PINS. ALL STREAMING FRAMES HAVE NOW A CONSISTENT TIMESTAMP WHILE ALL STATIC FRAMES ARE TIMESTAMPED AS -1. THIS IS COMPLETELY TRANSPARENT TO THE USER, BUT FOR THIS REASON YOU MUST *NOT* CONNECT v2 AND v3 MODULES TOGETHER ! All modules generating frame streams use now a rigid time grid in order to never lose sync, even when resuming operations after being idle/off or when switching frame size or overlap factor on the fly No spectral processing module is limited to frame streams any longer. Those (like the Pitch Shifter or Frequency Shifter) who required streaming frames for phase adjustment can now process also static frames transparently, simply no phase adjustment is performed/required in this case FFT pins naming changed to a more robust convention. FFT In: a pin which accepts either static frames or frame streams, no matter which is the timing; FFT Out: a pin which may transmit either static frames or frame streams; FFT Stream In: a pin which accepts only frame streams (in V3 pretty none, see above) FFT Stream Out: a pin which transmits only frame streams Less memory wastage using now a shared transmission workspace, where required All modules whose static frame generation is controlled by INT input pin updates (like the Frame Recorder or the Sample To Spectrum, ...) were prone to cause flooding of frames upto (theorically) audio rate, causing CPU congestion and hiccups. Static frame generation is now always limited to a minimum interval of frame size / (max overlap = 8) samples in those cases (note: static flooding is still theorically possible with all modules but unlike to occur, unless in very abnormal situations) All Shape-based operations now based on the new centralized and efficient Shape system (introduced in ED Pack 1.23.9 Beta, see later). Shapes are now universally transmitted thru dedicated BLOB lines Improved centralized Scale conversion, for both Frequency and Level. A fixed level scale of "normalized" decibels with Roll-off at -60 is no longer imposed, despite still remaining the default and preferred one; every module relying on a level scale allows now choosing between the currently supported scales: linear, logarithmic or dB, where the Roll-off point for the dB scale can always be set freely Improved centralized peak detection and estimation The logic for feeding frame streams back has been changed, and relies on usage of the new Streaming To Static module (see Feedback example project included) Some spectral *processing* modules were provided at some point with Audio control pins. This was found to have drawbacks, so they have now been replaced by Float pins or are supplied in both versions, and a special Volts2Float module is now provided, for those cases when volts to float conversion must happen on the time grid of the streaming frames (modulation by LFO or MIDI controller, ...). ESD SDK at present is no longer distributed but can be obtained on agreement and NDA Everything recompiled with GCC 12.1.0 and newest SE SDK Manual: now in PDF format, entirely rewritten and completed with illustrations, includes now an advanced topics section All inline docs revised/updated/fixed Example projects: highly improved, more added MODULES: ------------------------------------------------------------------------------ ALL MODULES HAVE BEEN REWRITTEN FROM SCRATCH MORE EFFICIENTLY AND/OR UPDATED TO EXPLOIT THE NEW GENERAL FEATURES, SOME RE-ENGINEERED MORE LOGICALLY. ALL KNOWN BUGS HAVE BEEN FIXED AND OFTEN PINS HAVE BEEN ADDED/REMOVED/RENAMED OR REARRANGED. (NOTE: NOT ALL CHANGES MAY BE LISTED HERE) All shape-based spectral modules have been adapted to the new shape system, most of them have also been rewritten and improved Audio To Frames: rewritten; changed power pins to bools; added Rectangular windowing option (for special workflows only, thus avoiding expensive zero-padding operations downstream) Analyzer, rewritten and vastly improved: comes in version A (compact) and B (with all non-cosmetic pins exposed); added log float scale; level scale range can now be specified freely; optional convenient on-screen information box; frame limiting is now performed by a sub-process; level doubling and reverse fill options removed; supports an adjustable rainbow fill gradient for spectral plot; frequency marker position is now more conveniently bin-quantized; pins rearranged more rationally; scale labels and positioning revised; added convenient builtin frame loading; the Analyzer can now also display both magnitude and phase plots (phase overlaid); marker bin pin now placed correctly to the Left for easy patching and interconnection of more Analyzers; frames containing INFs or NANs are no longer plotted and a warning message is displayed; new Bar mode rendering Spectrogram, rewritten; max plot frequency can now be specified; lower dB threshold for luminance mapping can now be specified; right border removed; better frequency labels placement; more accurate tone mapping Non Modular Filter/Splitter: rewritten from scratch and renamed as just Filter; now several times more efficient; can now optionally report latency; inverse filter and latency compensated outputs removed, made redundant by the latency reporting option; latency however is now one frame size Non Modular Zero-Latency Spectral Filter: made about 30% faster and more tolerant to modulations (despite still discouraged) plus various fixes. It really can't be optimized any further Non Modular Zero-Latency Convolver: fixed faulty power management; now rejects static updates. It really can't be optimized any further New Pitch Detection module based on a brand new and robust algorithm (PD module was removed in ESD2 waiting for a better algorithm) - STILL EXPERIMENTAL Frame To Stream: removed since no longer needed Spectrum Resynth: removed since it had really no purpose Spectral Hold: removed since badly designed Frame re-synthesis with spectral freeze effect can now be performed much better by the new Spectrum Re-synthesizer with little additional circuitry All modules performing peak operations: fixed possible estimation errors and possible crashes caused by the old peak estimation kernel functions Some modules like the Amplifier are now provided in two versions, one standard and one with Volts input pin(s) working with Streaming frames only Random Spectrum Generator: renamed to White Noise Generator (name was misleading, see inline help); ID changed aswell, you shall Replace it manually; fixed peak level Spectrum Generator Peaks: renamed/re-id'ed to Spectral Synthesizer (Shall be Replaced) Spectrum Generator: no longer transmits frame streams but static frames; removed Power pin (no longer neeced); in peak mode, the first and last shape nodes are now no longer considered Spectrum Synthesizer: rewritten & fixed some potential bugs and inefficiency Sample To Spectrum, Frame Recorder: were not frame rate limited and could potentially cause CPU congestion and dropouts, fixed; IR Convolver: Accurate mode no longer used because it could not handle blocks of merging peaks well (eg. harmonic spectra of very low frequency) and was however unnecessarily expensive. Now it relies uniquely on a new advanced Fast scheme, offering the maximum filtering accuracy possible for the frame size used, the smallest possible artifacts and pretty no peak distortion, and can even handle frames containing side-errors, thanks to IIR IR band-limiting and partial window removal; can now work with either static frames or frame streams. Overlap/Save mode, if really required, can now be implemented much more efficiently with a special workflow (example included) Patch Memory Blob I/O: can now store the input BLOBs to the internal parameter even when the plugin panel is closed; renamed to Patch Memory Blob Pass-thru (no need to replace it) All frame generators: power pin changed to bool Harmonic Spectrum Generator: renamed to Harmonic Spectrum Synthesizer; now supports up to 200 peaks and their amount can be specified; K parameter is now provided as an Audio pin; Frames To Audio: added option to disable post-windowing (unexposed and very specialistic option, please leave it always enabled) Profile Subtract 2 FRC removed (considered worth nothing) Frequency Shift: now accepts shift amount also in Bin units; supports static frames; DC and Nyquist peaks now handled correctly Pitch Shift: revised yet still based on the original consolidated V 1.x algorithm, now with improved quality thanks to the new Kernel peak estimation and shifting functions; module now only operates with fractional accuracy (Precision pin removed); Shift pin made as a control pin; supports static frames Frame Resync module removed (no longer needed for feedback) All modules with a File Name pin: proper extension was never specified, fixed. Envelope Extractor: minor improvements; no longer generates an inverse envelope (now done by an external module) Envelope Modifier: rewritten, operation logic radically changed, now much more efficient and accurate Added warning requesters against polyphonic usage Added warning requesters against reception of differently sized frames on multiple inputs Added warning requesters against reception of frames with inconsistent timestamp All modules with Magnitude inputs: rethought again, now accepting only MAG frames again (using only the Real bin values, regular frames are no longer converted to Magnitude to save some CPU, please from now on ALWAYS use the Phase Remover to feed MAG inputs with audio frames) Window module: inverse 4x mode removed, replaced with new accurate IR quarter-frame windowing mode Phase Shift module: added support for different phase Units Magnitude/Max To Envelope: renamed/re-id'ed as Max Accumulator Added Non Modular Short Convolver (convolves audio with FFT frames, upto z=1024) Added Magnitude / Invert Envelope Added Math/Negate module Added Magnitude Adjust module Added Magnitude Negative module Added Switches folder and multi-input frame switches Added Math/Add module (with just two inputs) Added Technical/Merge To Double, Multiply Frame, Divide Frame, Set Sample, Filter Spectrum, Comb Spectrum, Flip Spectrum, Re/Im Manip, Flip Frame, Magn/Phase Split, Crop Spectrum 1/2, Double Spectrum 0-Pad, Test Frame Gen, Zero Pad Spectrum, Rotate Frame Half Added modular support for Complex spectral analysis (by Technical/ Re/Im -> Pos/Neg and Pos/Neg -> Re/Im) Math/Add is now split in two versions, Add (two inputs) and Add Many (autoduplicating inputs) Technical/DCN: now can just either halve, double, zero, zero Im or NO OP (manual scaling was unnecessary) Added Math/ CAdd_Rng and CMul_Rng which operate on a range of bins Added Constant Frame module Added Technical/ Set Bin module Added Diagnostics/ Frame Monitor module (replaces DSP & GUI Blob Tools, moved to ED Pack) Added Technical/ Streaming To Static Added special framerate-wise Volts 2 Float module Added Source / Random Spectrum Added Source / Peak Generator Added Utility / Capture Frame Highest Peak Info -> split into two separate modules, Highest Bin and Peak Info Peak Info: added choice for output units; fixed Magnitude value in Volts not multiplied by 10 Bin Info: added choice for output units Frame Energy: removed, replaced by new functions in Frame Level module Frame Level: added more level/energy options Level Compressor: momentarily removed (was inconsistent) Peak Decimator: now using absolute threshold (if relative threshold is required, it can be easily computed externally); threshold units can be chosen All technical modules performing frame doubling or halving did not check against overcoming the allowed frame sizes and could crash or generate invalid sized frames; fixed Frame Scope: improved rendering; fixed little alignment bug; added grid; avoided one redundant buffer and copy operation for efficiency; scaler pin changed to Range; added Wav dump feature; added frame size readout; added Dual version; moved to DIAGNOSTIC/ Shift Frame: (incorrect name) renamed to Rotate Frame; added option to specify rotation in relative vs. samples amount GUI Level Unit Converter, GUI Scale Pos 2 Freq: rewritten & pins changed supporting the new Scale systems Frame 2 Trigger: replaced volts pin with bool pin All modules (mostly generators) provided with Frame Size and/or Overlap list pins could crash when receiving unexpected zero values (as in case of pins connected but not receiving). Fixed "Processors" category renamed to "Modifiers" (for consistency with SE) "Non-Modular" category renamed to "Audio" (for better clarity) "Generators" category renamed to "Source" General re-sorting of modules in more appropriate categories