2022-12-04
It has been a while I see :) - a fresh release
Today made a couple of small changes and updated the version to 2022.12.4.0
First there was an issue with rate smart modules - they would not go slow on removing all fast wires, they needed some module changes on the patch as well to do that. This is fixed now.
Then made a new moving average filter (called MovingAvg .. it is still in the wrong place on the filter1 tab .. it will be moved to the left later on …) where the averaging time can be set instead of the number of samples. The module is rate smart so it will work in both control and audio mode.
There may have been some more changes as I had some inbetween version number, but this was not documented. Ah .. the FFTW issue it was, in 2022.9.22 … still not sure if that got fixed actually … but it is not happening here …
Published as 2022.12.4.0 for all installation types.
This can be installed from a recent Wren version - or alternatively download the installer (see the wiki for more info on updating or installing Wren).
2022-07-14
A fresh release : 2022.7.14.0
I think I got all the changes … but .. meanwhile I had been hospitalized for a day or two and quit smoking - so things are a tad hectic here lately :’) (but I seem to be able to concentrate a bit again)
The following changes I could find back in the paper trail (and made a source code release as well - but forgot to update the build numbers - oh well, too many version numbers) :
- Fixed cursor orientation for a couple of modules - it was a horizontal line where it was supposed to be a vertical one.
- Added better DLL presence checks.
- Upped the FFTW max threads from 1 to 4.
- Added envelope ranges to SimpleRange and RangeConverter modules - to make envelope time modulation easier.
- Patch version was upped from 13 to 14 for the above change the be handled correctly.
- The Convolver module works now, with not too much latency in the convolutions (using FFT based overlapped convolution). Reverb times of minutes are possible - or use it for special FX.
- The OSC Sync module will now pass one float parameter - it used to pass the syhnc only. The param could be used to transfer tuning or speed to another Wren instance.
- Changed the way the default folders work - for an existing file it will use the folder from the file name now instead of always using the preset / predefined folder.
- Made a patch player for which a set of patches to be played and a volume curve can be specified. Patches can not be played overlapped but sequenctioa only - when overlap is need two Wren’s can be executed in parallel.
- Fixed a bug in the spectrum module.
- Changed the way that FFT normalization is processed and fixed all FFT based modules for this.
- Made an Easing module - to be driven from some linear signal it can make several kinds of curves both control and audio rate.
- Made optional automatic sample rate conversion for wave files, this requires r8bsrc.dll to be present - it is in the latest release but not in the pre-release. When the dll is not present conversion will just not work. Also made optional sample level normalization.
This can be installed from a recent Wren version - or alternatively download the installer (see the wiki for more info on updating or installing Wren). For the sample rate conversion to work you’ll want to install the full version.
For the Easing module: With the pos input the the lookup position is being changed and the looked up value will be on the out ouput (possibly multiplied by a connected gain). The inv output holds 1.0 minus out and the rightmost sigin sigout link is being modulated by the out signal. Signal types are selected by the triangle buttons.
For the patch player: One can set a list of patches, and for each patch a volume curve is defined. Patch playing is sequential - there is no overlap. When overlap is wanted the idea is to start a second Wren instance for filling up the silent bits.
This was used with two Wrens for the ‘I read it al wrong’ performance mentioned a few posts ago.
2022-06-19
Some new stuff, pre-release 2022.6.19.0
Published as pre-release version 2022.6.19.0
This can be installed from a recent Wren version - or alternatively download the installer (see the wiki for more info on updating or installing Wren).
- New SimpleRange module - it may save some cycles to use simple modules.
- Made an analog-ish position output for the Divider module, it presents the internal count value..
- Font for popup editors was too small for one unit modules, made the font smaller for those low modules.
- Removed Sine and Cosine lookup tables, calculation was faster.
- More lines of code removed.
- Changed controls for polyphony and wire thickness to be knobs, those support keyboard control to change the value.
- Changed format for knob hints a bit - to make things a bit less confusing.
- Made main VU meter peak and valey indicators a lot slower, a factor of 20.
- Wire addition or removal no longer needs a patch recompile - it will just keep playing. This works for cable undo and redo operations too.
- Removed the F12 (patch manual recompile) action. F7 (reset) still works, and patch recompile can still be done programmatically
- Extra mode for the Pluck module, fixed tuning for KS, Pluck, PluckControl and TunedDelay modules. Lowest possible (internal) frequency now is about 1Hz (it was about 8Hz).
- Linear controls now additionally display a fraction of the total range in their popups.
2022-06-02
Some more changes, a new module and a redo of an old one
Published as pre-release and release version 2022.6.2.0
This can be installed from a recent Wren version - or alternatively download the installer (see the wiki for more info on updating or installing Wren).
- Redid the Pluck module, got out the inversion stuff but gave it an extra string with detuning and cross coupling - I think it to sound more interesting.
- Made a PluckControl module - I see that the help for it is nonsense still - but it is meant to create a pluck signal for the Pluck and KS modules..
- Fixed the tuned delay module - it’s delay times were wrong.
- Fixed the PhaseDetector module - it never worked since Wren got polyphonic.
- Another 2000 lines or so of code were removed.
- Totally redid signal propagation, the way how signals are transferred over wires. It made Wren faster by another five to ten percent.
- Fixed a bug in the compressor module - unfortunately old patches will have wrong compressor gain now and need to be reviewed (they'’l be pretty soft now).
- Sped up the handling of the lights a bit more, there was some unneeded searching still for screen elements.
There were a lot of changes made to the code and I tested a lot but not everything - there may be surprises .. and when I notice I’ll fix things.
A recording of the pluck stuff - and some more sounds.
It starts with some Karplus-Strong sounds only; a drum like sound and a more typical KS one. At about one minute percussive noise is added, at about two minutes some grain processing is turned on and at around three the PADSynth module is activated.
It is a three voice self playing patch running at 48kHz with a control decimation of 32 needing about 30% of ome core here.
Some details (including a short help for the pluck controller and also about the patch) are behind the read more link.
2022-05-15
Fresh pre-release
Published as pre-release version 2022.5.14.0
This can be installed from a recent Wren version - or alternatively download the installer (see the wiki for more info on updating or installing Wren).
- Made a Mambi module for ambiophonics output.
- The XYScope module got a correlation display, see it’s internal help for more info.
- Another fix on the ProbGraph module, the left- and right-most points were not always properly glued. .
- Made Wren startup a little bit faster.
- Made Wren shutdown a lot faster.
- Improved and streamlined some non-audio timing code.
The removal of the ambiophonics plugin from the electro-music.com store made me see the old ambiophonics thread again and decided to implement that one for Wren. The module blurb says:
Mosc’s ambiophonics module, or Mambi.
See https://electro-music.com/form/topic-27871.html for Mosc’s original idea.
The delay maxes at about 320 us, the default delay setting of 0.25 makes the delay ab out 80us which is what the original uses.
The width parameter can be modulated, the modulation input is 1.0 when unconnected and it will be multiplied with the knob set value once connected.
As the module is strictly monophonic, the width modulation only works on the first voice. The inputs are summed though over all voices and the ouputs are distributed over all voices.
Tried to make some center filling code for it - but I was not convinced and left it out in the end.
2022-03-05
New globals module
Published as pre-release. 2022.3.5.0]
Made a new Globals module, for now it will just output the globally set LFO relative rate (r.rate in the user interface) to make it available for modules that do not listen to that global setting (i.e. non-lfo type modules).
2022-02-10
New module
Published as pre-release. 2022.2.10.2]
Made a new simple module, it detects the last line of a file being changed. It will make a short output pulse when such a change was detected.
The syntax to be used is :
file:fillename
or
file:fillename regular-expression
The regular expression being the filter, and the file name can not have spaces in it.
The last non-empty line of the file will be read (or an error message will be returned) and that line will be filtered with the optional regular expression.
When the regular expression contains a group named ‘result’ that will be the matched bit from that last line.
Example:
file:X:\filedir\filename.log (?:msg\s\[)(?<result>.*?)(?:\]\shost) pointing to some file on drive X: with a specified filter which has a group named 'result' (and two other un-named groups of stuff we are not interested in). the last non empty line of the specified file could be (this is from a log of an IRC chat session, a private message from jan to IRC channel #electro): '2022-02-09 01:30:23.784 | priv : [jan -> #electro] msg [pwew .. filter is hard o_o] host [~jan@xxx-xx-xxx-xxx.yyy.zzz.nl]' The regular expression matches: 'msg [pwew .. filter is hard o_o] host'. The named group 'result' matches: 'pwew .. filter is hard o_o' and that in this case is the bit we want.
Some fixes and changes
Published as pre-release. 2022.2.10.0]
Made the SapiVoice module working again, it had a problem with speaking empty strings, had a memory leak, would not speak no more on text changes and it was way too fast - all addressed.
Changed the Morse moduel to speak an ‘F’ on non letters, non space or non ‘*’ it was a bit odd stopping to work on single interpunction characters .. like ‘.’ etc.
I’m ready for a chat driven performance. just a little more patching :)
2022-02-05
A new module, some changes on an old one and some and remarks
Published as pre-release. 2022.2.4.0]
The Noop module was changed to output a special value when it’s input is not connected. This is the NOT_CONNECTED special value, some modules do special things when seeing that as their input value (normally meaning that that input is unconnected). I’ve documented all current inputs dealing with that special value, it is in the new modue help.
This makes it possible to pass the NOT_CONNECTED value trough swithes to make non-connectivity programmable. The noop module is the only one able to source this value, but it will be passed on trough other modules when they do not alter the signal (like switches).
It is wise BTW to not use this as a general signal, as the actual value as seen by unaware inputs is very large and this may hurt eardrums :¬)
Then .. made a new module .. it is not finished yet, but am using it in patches already .. so .. better to mention it, as it will show up in new builds. It is a clock generator, and made it because the updated DataGraph module could use it. I’m still struggling with measures and beats and whatnots (music is hard!). It will change I guess, but the basic idea is simple.
2022-01-27
New envelope - of sorts
NOTE: as of version 2022.1.28.0 the module has inbuilt stretch on the trig input, and no extra module is needed for pulse lengthening.
Published as pre-release. 2022.1.26.0]
Made a new envelope module of sorts.
I had been experimenting before with a State Variable Filter (SVF) set to low frequencies as a method of getting some ressonance in the processed signal. Worked that out to use a time setting instead of a frequency setting for the filter and allowing for very long times (ultra low frequencies … like once per hour) and for pretty short times like 500µs (2kHz - in the audio range).
There are some details and an example patch (including a short mp3 recording from it) in the more section.
2022-01-10
New distortion module
Published as pre-release. 2022.1.10.0]
Made a new Distort module. It takes it’s input value and raises it to a settable power (alpha) which can be modulated.
2022-01-05
New poly status module and a change of the old one
Published as pre-release. 2022.1.5.0]
Changed the PolyStatus module a bit and added a PolyStatus2 module with a different distributen of the output values over the voices.
2021-11-13
And a third one …
Published as pre-release. 2021.11.13.0
Made yet another quantizer, it quantizes it’s input value to various levels each with it’s own output.
Another quantizer
Published as pre-release. 2021.11.12.0
Made another quantizer, it quantizes it’s input value to a value set between the lo and hi values.
2021-10-24
Fixed filter bank
Published as pre-release. 2021.10.24.1
Made a new fixed filter bank module with 38 bands, starting at 35Hz each next band has a 17% higher central frequency for it’s bandpass filter till the last sits at about 12kHz..
2021-10-16
A new module and some extra modulations
Added a couple of modulations to the percussion osc, for click, decay and fine (cents) control.
Also made a new module, a prototype for a Daphne Oram type of Oramics module. I plan to make some variations on this one.
2021-10-13
Two new modules
Made two new modules, a Copy/shuffle modle and a percussion oscillator.
The Copy module copies it’s inputs to it’s outputs - but the coupling can be randomized in some way.
The percussion oscillator is loosly modelled after the pch2csd interpretation of the Clavia G2 OscPerc modue (type 195 there) - it ended up a bit different than the original escpecially for the punch mode. Oh, and it got a bit of an odd name somehow … OscTrigCs, will fix that later on.
Published as pre-release. 2021.10.13.0
2021-09-22
New TunedDelay module
Made a new TunedDelay module.
Published as pre-release. 2021.9.21.0
2021-07-05
Upped the current pre-release
The current pre-release was upped to officially include the changes in the three posts before … the RandSigs quadratic mode, the bug fix in the PDosc module and the inclusion of the Log2 module.
The Log2 module is the inverse (with some restrictions for low input values) of the Power2 module.
Published as pre-release. 2021.7.5.0
2021-07-04
A new power2 module
Made a new power2 module, it calculates 0.5 * Power( 2.0, input). This is meant to make higher values less likely, more quietness …
Published as pre-release. 2021.7.4.0
Also made the inverse, a Log2 module, which will be in the current pre-release.
2021-07-03
New envelope module type
Made a new EnvARMod envelope module, it has better time and shape control than the existing EnvAR module. It also has outputs for the A, H and R phases (as well as as for End Of Cycle (EOC). It also has not the bug mentioned in the previous item.
Published as pre-release. 2021.7.3.0
2021-06-24
Some small changes
There still was an issue with the ScaleQuantizer. When first loaded from the module selector it would by default need an enforce operation, fixed that.
Changed the connector popups to additionally show the signal type .
Published as pre-release. 2021.6.24.1
2021-05-15
A new wave folder module
Made a WaveFolder module. This module implements a Serge / Ken Stone / Buchla like wave folder using a chain of 4 Lockhart wave folders. The module is anti-aliased using a first order antiderivative method.
2021-05-07
A new Spectrum analyzer module
Made a spectrum analyzer module. It is FFT based and it uses 8192 points with a Blackman Nuttal window applied over it.
2021-05-03
Two new Equalizer modules
This is why I needed filter plots, two new equalizer modules. One mono and the other stereo, but otherwise equal.
2021-04-28
A new NoiseGate module
Added a NoiseGate module. With the Attack and Release controls you set the attack and release times.
2021-04-13
A new data recorder module
Made a data recording module, along the lines of the Recorder module, but it takes it’s input from the selected voice only (so no voice mixing) and it writes out it’s data as a Comma Separated Values (CSV) file.
2021-04-12
A proper oscilloscope
Made an oscilloscope module, a somewhat more usual one than the XYScope module.
The module listens to the selected voice only.
The input signal is amplified or attenuated by the level control.
The time base can be set to various values, the values reflect the time for the full screen width (so not the usual time per division). For long time base values the update frequency is low. The shortest time span that can be set is one point per sample, in this position the relation between signal rate and size on screen depends on the sample rate.
2021-04-02
Added a tropical mixer
Added a Tropical Mixer module.
What it does is mathematically simple … it computes the minima and maxima of some values. The values are made from an input value summed with a constant value and a modulation input.