2022-02-12
Bug fix Vocoder module
Published as pre-release. 2022.2.12.1]
The Vocoder had a bug where changing the bin size could freeze the rest of the synth, fixed in this pre-release.
One more small change
Published as pre-release. 2022.2.12.0]
Changed the way the filter works in that when a filter is being defined it will only select lines that match the filter. In case of the chat log I use that means that it will now skip the joined and left lines and such.
It may still return error messages, as “file not found” or “directory not found”.
BTW the output is not shown in the modules, it show sthe file and filter instead, but the debug screen (F5) will show what was produced. For each module duplicates will be filtered out, so make sure that the last file line changes to see an effect there.
Things did become a bit slower of this, as the regular expression is tried now on every non empty file line, hope it is still fast enough fir rapid chat - so may have to revert, we’ll see,
Edit: Ok, had to change that a tad bit more, it was getting too slow. Now when the filter exists but does not match on the last line an empty line will be returned instead of the unfiltered last line. Maybe that is even nicer for my purpose, as it can introduce quiteness in the patch in that case.
When there is no filter still the last non empty line will be returned, maybe should make a fallback or default rule group for filters or something.
This has the same release number.
2022-02-11
Some more words
Published as pre-release. 2022.2.11.0]
Added more words to the solresol bit of the morse module, there were like 2000 or so and 8384 there are now - some tens of it are still French ;«)
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 help file issues fixed
Published as pre-release. 2022.2.10.1]
The generated help file (which is the same as the one on this site) had some markup issues messing up the file reading examples, making those wrong and with bold face text and such - fixed those issues.
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-09
Various changes to text based modules.
Published as pre-release. 2022.2.9.0]
I wanted Wren to be able to react to what goes on in the electro-music.com chat, and as I already run an IRC bot which can produce a log file I’ve decided on making some modules able to read the last line of that log. This involves the following modules:
- Morse
- eSpeakVoice
- TSS
- Song
- SapiVoice
These all have an input field for text to process, what I did was to allow for special text that will be interpreted and it may read from a file now.
When you use ‘file:filespecs’ the filespecs will be split in two parts, the first being the filename to use and the second (optional) part makes a filter. It will be the last non-empty line from that file whih is read and when the filter is present it will process that line and that will be the text to be used by the modules.
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.
Then, in addition I’ve made the TSS module work by default by setting it’s speed parameter to be 1.0 initially (it was zero, and with that the module will not actually run).
Also I’ve added simple SolReSol support to the Morse module, it has no knowledge of grammar and it has a limited set of words - the output is available as the blue output of the Morse module and is meant to be processed by a ScaleQuantizer (being set to a Major sccale for a strict implementation, but other scales with seven notes are usable too (less than seven notes would strip out some of the output values)).
A note about SapiVoice - it does not seem to work ok in the 64 bit Wren version.
2022-02-07
Changes to DataGraph and ClockGen2 modules
Published as pre-release. 2022.2.6.0]
A couple more changes on the DataGraph and ClockGen2 module, such that they work better for me.
I’ve relabeld a couple of signals; sync is now quantise as that is what it actually does; the rate is now labeled as bars / m (bars per minute) and the div rate is now accents.
here is a new bars control added for the ClockGen2 module - this is the number of divisions to be used in the DataGraph and this can be automated by pulling a wire from ClockGen2’s new bars out to the new horizontal divisions input of the DataGraph (left of the 16 in the image).
For the DataGraph moduele the way divisons work changed a bit - it is now possible to have uneven divisions (existing patches may want to double their division settings, this also applies to the AudoGraph module). No middle indication will be drawn whe nthe number of divisions is odd.
The image shows how to work with this, both time and pitch are quantised this way without the need for precicise dot placement in the DataGraph.
Made an example patch for this, it is to be seen seen, heard and downloaded from below (possibly after clicking ‘Read more…’).
2022-02-05
changed S&H etc. for NOT_CONNECTED and changed the ScaleQuantizer, oh! and the Reverb too!
Made the SampleAndHold (S&H), TrackAndHold (T&H) and MultiSAndH (multiple S&H) modules aware of the NOT_CONNECTED signal. When seeing that signal on the trig input or having that input unconnected the modules will be transparent now.
The Noop module is the only module that will directly output a NOT_CONNECTED signal, but it can be passed on trough switches for instance.
These sample modules can now be made to have the trig input disconnected under patch control, and they will be transparent then.
Published as pre-release. 2022.2.5.0]
That, and the ScaleQuantizer got a new transparent mode - an input to set it transparent with, and also transparancy trough scale modulation with a negative input (and unequal to NOT_CONNECTED). In these cases the out signal is calculated from the in, scale and range parameters but it is not quantized. The inverted outs both hold 1.0 - out then.
This is scaled transparency, the module can still be set into the old unscaled transparency mode by deselecting all notes. in that case all three ouputs will just see the input value passed on.
Then I changed the LFO module a bit to make new random values on recompile and reset (using F7 / F12) - which is handier when patching for trying stuff with repeated F7/F12 pressing to see where the patch will go (and it does not break anything :¬)).
I had also changed the reverb module, gave it the input level control it always was in need of. And that trivial change had a bug, so re-updated the pre-release .. and as no bot had yet seen this yet .. presumably … I have no logs .. did not update the pre-release number .. so you may have to reload :¬)
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-02-02
And another updte on the DataGraph
Published as pre-release. 2022.2.2.0]
It became 30 pixels higher to make some room for extra control.
Added random control, with a button and three inputs (one for changing all values, one for changing 25% of the values and one for changing one value - a bit like what the seq16 module has). The horizontal positions are not changed on randomization. (though with a right click on the grid from the popup menu there is anoter form of random selectable).
Also available now are rev for playing backwards and inv for playing inverted (upside down) (although both could be done as well from a controlling saw lfo). Oh, and maybe it is good to say that the module is meant to be driven from a saw LFO, for normal linear time operation.
Then added grid control for the number of division lines in the graph display. This may make it easier to set the dots properly.
I’ll need one final change, the sync input uses high logic now and should use normal logic, that is for a later pre-release.
2022-02-01
Changes to the DataGraph module
Published as pre-release. 2022.2.1.0]
Note: image shows the latest version of the module, click on read more below to see the old version.
Changed the graph colors a bit to make the new dots mode better visible. The dots mode basically is the same as the steps mode except there are no lines drawn between the dots. Then I made the lines (and dots) mode actually work - which they did not.
Also a chg (changed) output was added and a sync input.